Inbound receipt state machine
Last updated 2026-10-19
Inbound receipt states and events: from draft to closed, covering receive tasks, exceptions, and cancellation rules.

Event table#
| Event | From | To | Trigger | Actor | Side effects |
|---|---|---|---|---|---|
| [create receive task] | draft | planned | Create a mobile receiving task | Warehouse | — |
| [cancel task] | planned | draft | Receiving task cancelled | Warehouse | — |
| [start-receiving] | planned | receiving | Start receiving | Receiver | — |
| [start-receiving] | draft | receiving | Receive directly without a task | Receiver | Task is auto-created |
| All lines received | receiving | received | Every receipt line fully received | System (auto) | — |
| [un-receive] | received | receiving | Undo the receiving | Warehouse | — |
| [rollback] | receiving | draft | Roll back to not started | Warehouse | — |
| [complete-receive] | received | closed | Confirm receiving complete | Warehouse | Terminal state |
| [complete-receive] | receiving | closed | Confirm receiving complete | Warehouse | Terminal state |
| [cancel] | draft | cancelled | Cancel the receipt | Warehouse | Receipts linked to a PO cannot be cancelled standalone |
| [flag exception] | receiving | exception | Short / damaged / wrong goods | Receiver | On hold, waiting for handling |
| [resolve] | exception | receiving | Exception resolved | Supervisor | Resume receiving |
| [cancel] | exception | cancelled | Cannot be resolved | Supervisor | — |
Appointments and check-ins do not occupy receipt states. YMS manages appointments independently (scheduled → checked_in → at_dock → departed).