Purchase Order Lifecycle¶
Models the lifecycle of a Purchase Order (PO) raised by the retailer to a supplier, from initial draft through approval, fulfilment, and three-way match closure (PO + Goods Receipt + Invoice). Covers partial deliveries, amendments, and cancellations.
Object: purchase-order ·
States: 8 ·
Transitions: 10
State Diagram¶
flowchart LR
%% ── classDef palette ─────────────────────────────────────
classDef stInit fill:#0d9488,stroke:#0f766e,color:#fff,font-weight:bold
classDef stNorm fill:#3b82f6,stroke:#2563eb,color:#fff
classDef stOk fill:#16a34a,stroke:#15803d,color:#fff,font-weight:bold
classDef stFail fill:#dc2626,stroke:#b91c1c,color:#fff,font-weight:bold
classDef stHold fill:#d97706,stroke:#b45309,color:#fff
%% ── nodes ───────────────────────────────────────────────
draft(["Draft"])
submitted["Submitted"]
acknowledged["Acknowledged"]
partially_delivered["Partially Delivered"]
delivered["Delivered"]
invoiced["Invoiced"]
closed[["Closed"]]
cancelled[["Cancelled"]]
%% ── transitions ─────────────────────────────────
draft -->|"order-created"| submitted
submitted -->|"order-confirmed"| acknowledged
acknowledged -->|"inventory-adjusted"| partially_delivered
partially_delivered -->|"inventory-adjusted"| delivered
acknowledged -->|"inventory-adjusted"| delivered
delivered -->|"payment-captured"| invoiced
partially_delivered -->|"payment-captured"| invoiced
invoiced -->|"payment-settled"| closed
draft -->|"order-cancelled"| cancelled
submitted -->|"order-cancelled"| cancelled
%% ── class assignments ───────────────────────────
class draft stInit
class submitted,acknowledged,partially_delivered,delivered,invoiced stNorm
class closed stOk
class cancelled stFail
States¶
| State | Label | Description | Initial | Terminal |
|---|---|---|---|---|
draft |
Draft | PO created but not yet submitted to supplier. Can be modified freely. | ✓ | |
submitted |
Submitted | PO sent to supplier. Awaiting supplier acknowledgement. | ||
acknowledged |
Acknowledged | Supplier confirmed receipt and intent to fulfil. Delivery date agreed. | ||
partially-delivered |
Partially Delivered | Some PO lines received. Remaining items expected. | ||
delivered |
Delivered | All PO lines physically received and goods receipt created. | ||
invoiced |
Invoiced | Supplier invoice received and matched to PO and goods receipt. | ||
closed |
Closed | Three-way match complete. Payment authorised. PO archived. | ✓ | |
cancelled |
Cancelled | PO cancelled before full delivery (stock no longer needed, supplier unable to fulfil). | ✓ |
Transitions¶
| From | To | Trigger | Guards |
|---|---|---|---|
draft |
submitted |
order-created |
All mandatory lines and supplier details complete; Buyer approval obtained (if required by spend threshold) |
submitted |
acknowledged |
order-confirmed |
Supplier sends acknowledgement with confirmed quantities and delivery date |
acknowledged |
partially-delivered |
inventory-adjusted |
Goods receipt created for partial quantities |
partially-delivered |
delivered |
inventory-adjusted |
Final outstanding lines received |
acknowledged |
delivered |
inventory-adjusted |
All PO lines received in a single delivery |
delivered |
invoiced |
payment-captured |
Supplier invoice matches PO and goods receipt (three-way match) |
partially-delivered |
invoiced |
payment-captured |
Invoice covers delivered quantities only; Partial invoice agreed with supplier |
invoiced |
closed |
payment-settled |
Invoice paid; No open discrepancies |
draft |
cancelled |
order-cancelled |
No goods received yet |
submitted |
cancelled |
order-cancelled |
Supplier agrees to cancellation before dispatch |