Drop-off of a cart (deliver the carrier)
What this shows. What pick_assignment_complete does when the operator delivers a cart: the checks, the move to the delivery location (or not), the unload of the boxes and the end of the assignment.
Reading the diagram
- A live assignment can be delivered only by its holder, only when it is past
Building, only when no stop is left, and only when no position waits for carton recovery. The refusals arePICK_ASSIGNMENT_NOT_YOURS,PICK_ASSIGNMENT_NOT_ON_ROUTE,ROUTE_NOT_FINISHEDandCARTON_REPLAN_REQUIRED. Completionis read from the policy copy frozen when the cart started. WithConfirmAtLocationthe operator must scan exactly the delivery location of the assignment, or the answer isDELIVERY_LOCATION_REQUIREDorWRONG_DELIVERY_LOCATION. WithCompletethe scan is not read and the boxes come off where the cart stands.- The delivery location was frozen at start. A later edit of the owner field applies to the next start.
- The location must be able to take the cart: status
Ok, no flag, no hold against outbound flow, and the cart must stand somewhere. OtherwiseDELIVERY_LOCATION_UNUSABLE. - A cart that was dissolved but still carries goods can be delivered by anyone who scans its label, and also by its former holder without a scan. The assignment then stays
Dissolved. The nextpick_dispatch_nextof the former holder returns that cart first. - Boxes with goods keep their stock and stand as separate roots at the delivery location. Empty boxes come off. The cart becomes
Emptyand can be used again. - The router hand-off exists only when the cart was routed at start:
Completion=ConfirmAtLocationand the area has a pack station. A cart withCompleteis never routed. - A repeat of the call answers
PICK_ASSIGNMENT_ALREADY_DELIVERED.
Where it comes from
| What | Source |
|---|---|
| Steps and lock order | crates/libs/wms-outbound/src/picking/completion/confirm_at_location.rs:1-130 |
| The rules and refusal codes | crates/libs/wms-outbound/src/domain/pick_assignment/delivery.rs:40-250 |
| Move or hold the cart | crates/libs/wms-outbound/src/picking/carrier/relocate.rs |
| Unload at delivery | crates/libs/wms-outbound/src/picking/carrier/unload.rs |
| Router hand-off | crates/libs/wms-outbound/src/picking/completion/hand_off.rs:1-70 |
Completed and delivered_at | crates/libs/wms-lib-core/src/model/outbound/pick_assignment.rs:755-790 |
| Command | crates/libs/wms-outbound/src/picking/commands/complete.rs:1-90 |
| RF screens | crates/libs/wms-lib-sql/sql/rf-screens/096_uc_pick_route.sql |
| API method | docs-obsidian/user-guide/api/openrpc.json (pick_assignment_complete) |