Canary Service: receiving

What this is

Owns purchase-order lifecycle and receiving events including direct-store-delivery (DSD) without prior PO, plus vendor master data. Cross-references canary-commercial for vendor-invoice reconciliation; cross-references canary-inventory for receipt-driven position increments.

Tier mix and axis

Property Value
Port :8092
Axis B — Resource APIs
Tier mix Reference (PO/receipt/vendor lookups) · Change-feed (filtered lists) · Stream (lifecycle mutations) · Bulk window (EDI 810, PO bulk imports)
Owned tables app.purchase_orders, app.po_lines, app.receipts, app.receipt_lines, app.receipt_variances, app.vendors
PO state machine DRAFT → SUBMITTED → IN_TRANSIT → RECEIVED → RECONCILED → CLOSED (with CANCELED branches)
Receipt idempotency (vendor_id, vendor_invoice_number, location_id) natural key

Purpose

Receipt-side authoritative. Invoice-side reconciliation explicitly delegated to canary-commercial — RECONCILED transition is set by canary-commercial when invoice match completes. EDI 810 bulk import supports vendor-systems-of-record sync.

Dependencies

Consumers

See also