Three transaction lifecycles run the business. Sales Order is the customer side — starts with the customer order and ends with fulfillment + invoice + payment + close. Purchase Order is the vendor side — used when we buy product, ingredients, packaging, components, finished goods, or drop-ship items; ends with Item Receipt + vendor bill + vendor payment + PO closure. Work Order is the production side — used when we assemble or build finished goods; ends when the Assembly Build is completed and finished goods land back in inventory. Two cross-lane bridges keep records linked: SO Path 2 creates a WO from the SO (WO.createdfrom = SO.id), and SO Path 3 creates a PO from the SO (PO.createdfrom = SO.id). All three converge at the ★ Finance handoff post-fulfillment / post-receipt. This is the canonical "system of three" view; the per-lane masters and path-detail docs hold the field-level depth.
orders@ / danielle@events.order.closed firesevents.po.closed firesPO.createdfrom = SO.id on Path 1events.wo.closed firesWO.createdfrom = SO.id on Path 1 (customer PO# field TBD)events.so.finance_alert_firedevents.po.finance_alert_firedevents.wo.closed + events.assembly.built (with variance)| Cross-record linkage | Field | Carries |
|---|---|---|
| SO → WO (Path 2) | WO.createdfrom = SO.id | preserves the SO ↔ WO link |
| SO → PO (Path 3) | PO.createdfrom = SO.id | preserves the SO ↔ PO link |
| SO → Item Fulfillment | IF.createdfrom = SO.id | inherits otherrefnum (customer PO#) |
| PO → Item Receipt | IR.createdfrom = PO.id | inherits memo (customer PO# threads on Path 1) |
| PO → Vendor Bill | Bill.createdfrom = PO.id | inherits memo, tranid, initialtranid |
| Customer PO# thread (universal) | otherrefnum (SO, Inv) ↔ memo (PO, Bill) ↔ memo (WO — TBD) | universal trace thread "72622" |
bodyFields.memo, but Mike's review is pending.