Create Purchase Receipt | Skills Pool
Create Purchase Receipt Create goods receipt (GR) record when receiving goods from supplier
carrickcheah 0 stars Oct 31, 2025 Occupation Categories E-commerce Development Create Purchase Receipt Skill
Purpose
Creates a Goods Receipt (GR) record in NexERP when goods are physically received from a supplier. This is triggered by a Delivery Order from the supplier.
When to Use
Supplier truck arrives with goods
Driver provides Delivery Order (DO)
Warehouse receives and inspects goods
Need to update inventory levels
Database Tables
tbl_preceipt_txn - Goods receipt header
tbl_preceipt_item - Line items received
tbl_preceipt_movement - Inventory movement records
Usage
Quick Install
Create Purchase Receipt npx skillvault add carrickcheah/carrickcheah-agentic-document-extraction-backend-ai-doc-processing-skills-purchasing-create-purchase-receipt-skill-md
stars 0
Updated Oct 31, 2025
Occupation python create-purchase-receipt/main.py \
--supplier-name "NINGBO METALWIRE" \
--receipt-date "2025-10-27" \
--items '[
{
"product_name": "WIRE D1.2-L105.8",
"quantity": 200,
"unit_price": 8.50,
"po_reference": "PO25100055"
}
]' \
--delivery-order "DO-2024000" \
--json
Required Fields Field Type Description supplier_name string Supplier name (fuzzy match) receipt_date string Receipt date (YYYY-MM-DD) items JSON array Line items received
Optional Fields Field Type Description delivery_order string Supplier's DO number po_reference string Related PO number remark string Any notes
Item Fields Field Required Description product_name Yes Product name or SKU quantity Yes Quantity received unit_price Yes Price per unit discount No Discount percentage (0-100) remark No Item-specific notes
Output (JSON)
Success {
"success": true,
"gr_number": "GR25100048",
"txn_id": 2210,
"supplier": "NINGBO METALWIRE PRODUCTS CO.,LTD",
"receipt_date": "2025-10-27",
"items_count": 1,
"subtotal": 1700.00,
"grand_total": 1700.00,
"delivery_order": "DO-2024000"
}
Error {
"success": false,
"error": "Supplier 'XYZ' not found"
}
Format : GR{YY}{MM}{NNNN}
Example : GR25100048 = October 2025, receipt #48
Business Rules
Supplier Validation : Must exist in tbl_supplier
Product Validation : Must exist in tbl_product_code
Inventory Update : Automatically updates stock levels
PO Linking : Can link to existing PO for tracking
No Tax Calculation : GR records quantities only (tax on invoice)
Example Scenarios
Scenario 1: Full Delivery # All items from PO received
python create-purchase-receipt/main.py \
--supplier-name "ACTION BOLT" \
--receipt-date "2025-10-27" \
--items '[
{"product_name": "WIRE D1.2", "quantity": 200, "unit_price": 8.50}
]' \
--po-reference "PO25100055" \
--json
Scenario 2: Partial Delivery # Only 150 out of 200 units received
python create-purchase-receipt/main.py \
--supplier-name "ACTION BOLT" \
--receipt-date "2025-10-27" \
--items '[
{"product_name": "WIRE D1.2", "quantity": 150, "unit_price": 8.50}
]' \
--po-reference "PO25100055" \
--remark "Partial delivery - 50 units backordered" \
--json
Scenario 3: Multi-Item Delivery python create-purchase-receipt/main.py \
--supplier-name "NINGBO" \
--receipt-date "2025-10-27" \
--delivery-order "DO-2024000" \
--items '[
{"product_name": "WIRE D1.2-L105.8", "quantity": 100, "unit_price": 8.50},
{"product_name": "WIRE D0.8-L133.5", "quantity": 200, "unit_price": 7.30}
]' \
--json
Integration with Database Agent # After Document Agent extracts Delivery Order
extracted_data = {
"document_type": "delivery_order",
"issuer": "NINGBO METALWIRE PRODUCTS CO.,LTD",
"do_number": "DO-2024000",
"po_reference": "PO25100054",
"delivery_date": "2025-10-27",
"line_items": [
{"description": "WIRE D1.2-L105.8", "qty_delivered": 100, "unit_price": 8.50}
]
}
# Call skill via Bash
result = bash_tool.execute(
f"python skills/purchasing/create-purchase-receipt/main.py "
f"--supplier-name '{extracted_data['issuer']}' "
f"--receipt-date '{extracted_data['delivery_date']}' "
f"--delivery-order '{extracted_data['do_number']}' "
f"--items '{json.dumps(items)}' "
"--json"
)
Error Handling Error Cause Solution Supplier not found Invalid supplier name Check tbl_supplier Product not found Invalid SKU/name Check tbl_product_code Invalid date Wrong date format Use YYYY-MM-DD Negative quantity Invalid input Quantity must be > 0
Testing # Test with sample delivery order
python create-purchase-receipt/main.py \
--supplier-name "NINGBO" \
--receipt-date "2025-10-27" \
--items '[{"product_name": "WIRE D1.2", "quantity": 50, "unit_price": 8.50}]' \
--verbose --json
Notes
GR updates inventory immediately
Can create GR without PO (direct receipt)
Multiple GRs can reference same PO (partial deliveries)
GR is the SOURCE for Purchase Return (if defects found)
Database : carrickc (MariaDB)
Tables : tbl_preceipt_txn, tbl_preceipt_item, tbl_preceipt_movement
Document Format : GR25100048
Inventory Impact : Yes (increases stock)