-
-
Notifications
You must be signed in to change notification settings - Fork 0
Outbound Flow
How an outbound order becomes picked, cubed cartons with dispatch labels. Design: ADR 0002.
create order ─► release ─► allocation: reserve at PICK locations + cube into shippers ─► (pick) ─► ship
(order-management) (allocation) (order-management)
POST /api/orders creates an order with an orderType (INBOUND/OUTBOUND/COUNT/ADJUSTMENT).
An outbound order may also carry serviceCode, routeCode, a shipTo address, and an optional
labelTemplateCode (validated against the master-data catalogs). Orders carry priority and
dispatch time; release management surfaces a most-urgent-first queue
(/release-queue, /release-due).
On release, order-management delegates to allocation, which:
-
Allocates each line against PICK-purpose locations (inventory location-scoped ATP) until
met, with a pick-type UoM breakdown (cases/eaches, per the warehouse's allowed pick
types). If every line is reserved →
ALLOCATED/FULFILLABLE; otherwise all reservations are released →NOT_FULFILLABLE. -
Cubes the order into shippers:
- APP — greedy volume+weight across the warehouse's active shipper sizes: packs the largest carton that fits while a lot remains, then downsizes the final carton to the remainder. A single order line can be split across cartons.
- ONE_TO_ONE — the host already cubed; the request's cube instructions map 1:1 to cartons.
- Each carton (
ShipperAssignment) has a stableshipperUnitId, and its contents carry the orderlineNo— so a line split across cartons (and a carton holding several lines) is fully traceable.
-
Dispatch label per carton: the resolved label template (order override → service →
warehouse default) + fields (ship-to, service, route,
carton seq/total) + a barcode requested from the host per shipper (the barcode is only knowable once cubing produced the cartons). See Host Integration.
If a SKU is larger than the biggest available carton, the order can't be cubed: no shippers
are produced, any held stock is released, and the order is parked in CUBING_FAILED with a
reason (the offending line/SKU) for an operator to resolve. It can be re-released after the
carton/SKU master data is fixed.
POST /api/allocation/batches groups eligible small orders (FULFILLABLE, pieces ≤
batchMaxPieces) into pick totes (≤ batchMaxOrders), merges their picks into one combined
list, and records the per-order separation plan.
Related: Inbound and Inventory · Equipment Integration · Services.
openWCS — open-source Warehouse Control System · summarized from build.md & docs/AS-BUILT.md (the repo docs are authoritative).