Skip to content

The delivery lifecycle

A sales order stores only open or done. The UI derives delivery state from shipped quantity versus ordered quantity.

stored status: open or donederived delivery stateshipped is terminal

Select a state to see what it allows and where the order can move next.

StateHow it is derivedWhat it means
Not shippedNo ordered quantity has shipped.The order is open and editable.
Partially shippedSome, but not all, quantity has shipped.Stock has been consumed and shipped rows are protected.
ShippedStatus is done or all ordered quantity has shipped.The order is closed and read-only.

Partially shipped is not stored as a database status. It is recalculated from line quantities.

Delivery runs through the inventory kernel and updates the order:

StepResult
Consume stockDelivered quantities pull lot-backed stock from the selected ship-from location.
Record shipped quantitiesEach delivered line increments shippedQuantity.
Protect shipped historyQuantity cannot be reduced below shipped plus cancelled quantity, and shipped lines cannot be removed.
Advance delivery statePartial delivery shows Partially shipped; final delivery sets the order to done.
Preserve the recordOnce shipped, the card becomes read-only for shipped history.

If delivery would oversell, the app blocks first and requires explicit confirmation before allowing negative stock.

ActionFromToNotes
Deliver someNot shippedPartially shippedConsumes stock and records shipped quantity.
Deliver allNot shippedShippedCloses the order and sets shippedAt.
Deliver restPartially shippedShippedCompletes remaining quantity.
Reduce shipped quantityAny shipped stateBlockedQuantity cannot drop below shipped plus cancelled.
Reopen shipped orderShippedBlockedShipped is terminal in the order UI.
Delete after shippingAny shipped stateBlockedInventory and invoice history must be preserved.

An order can be deleted only while it has no shipped, inventory-consumed, or accounting-pushed history. The list deletion guard says shipped, inventory-consumed, or accounting-pushed orders cannot be deleted.

Deleting an eligible order also updates demand coverage and the manufacturing orders created for it — not-yet-started ones are removed, while any that have already begun are kept and unlinked from the order.