Pick Lists — SanadiqCloud

Product version: 1.0.0+1
Last updated: 2026-08-13
Audience: Tenant Owners, Tenant Employees, Regular Users


A. What are Pick Lists?

A Pick List is an inventory issue document. An authorized user takes one or more items from a source bin in a tenant stock pool for an internal or operational purpose — not a sale, and not a bin-to-bin transfer.

The document answers: who took what, from where, when, and why?

There is no destination bin. Issued items leave on-hand inventory; they may later be used for production, quality, maintenance, material usage, samples, damaged-item handling, or other internal work. The system does not track a packing/destination location.

Operation Purpose
Sale Inventory leaves because a customer bought it (sales workflow; customer required)
Transfer Move stock between inventories (source bin → destination bin)
Bin transfer Move quantity between bins inside one pool (on-hand unchanged)
Adjustment Correct on-hand quantity (approve updates stock)
Pick List Issue stock from a source bin for internal/operational use (on-hand decreases on Issue)

Product-facing name remains Pick list. Internally it is an inventory issue (transaction_type=issue, reference_type=pick_list).

Optional reference_type / reference_id can link a pick list to another document without turning it into a sale or transfer.


B. Status lifecycle

Happy path:

Draft → Completed (issued)
      ↘ Processing → Completed (optional reserve, then issue)
      ↘ Cancelled (any step before Completed)

The same user who created the pick list can Issue it. There is no second-person approval. Processing is optional when you want to reserve stock before issuing.

Legacy handover statuses (collected, ready, received) remain completable on the API. The app does not show collect / ready / received buttons.

Status Meaning
Draft Editable header and lines. On-hand is not reduced. Issue is allowed from here.
Processing Optional: picker started; requested qty is reserved on each active line
Completed Quantity issued from the source bin; ledger rows written (reservations released if any)
Cancelled Reservations released if any; no issue

Inventory quantity is reduced only on Issue (complete), not when the pick list is opened or started.


C. Viewing the list

Browse / manage: Warehouse hub → Explore inventoryPick lists (/inventory/pick-lists).

Create from an item: open an inventory item → OperationsCreate pick list. Inventory and the stock line are locked (same pattern as transfer). You choose source bin and quantity. There is no destination bin.

If the item’s quantity lives in bins, you must pick a source bin. Drawing without a bin uses the unassigned pool only (on-hand minus allocated).

Filter by status and search; permission inventory:pick_list:read required.


D. Creating a Pick List

Requires inventory:pick_list:create.

From the list FAB (multi-line) or item Operations (one locked line):

  1. Inventory (stock pool) — locked when opened from item detail.
  2. Issued by — the signed-in user (read-only).
  3. Optional reason (purpose: production, quality, maintenance, … — free text), reference, and notes.
  4. Each line: stock item, source bin (bins that hold this item), quantity.
  5. Save → status Draft.

Source bin lists bins where the item has an allocation. Leave source as “Assign later” only when drawing unassigned stock.


E. Workflow actions

Requires inventory:pick_list:update.

Action From Effect
Issue Draft, Processing, or legacy collected/ready/received Reduce on-hand from the source bin; write issue ledger rows. Creator may issue.
Start processing Draft (optional) Reserve stock on active lines
Update pick qty Processing (optional) Set quantity_picked per line
Cancel Any except Completed/Cancelled Release reservation if needed

Insufficient stock is rejected; inventory is unchanged.


F. Permissions

Permission Ability
inventory:pick_list:read List / detail / statistics
inventory:pick_list:create Create pick list
inventory:pick_list:update Edit draft, lines, start processing, issue, cancel
inventory:pick_list:delete Remove draft lines (where exposed)

Owner and Manager roles include full pick-list permissions; Employee typically has read only (via built-in role seed). The API enforces these permissions; hiding a button is not enough.


G. Print

Detail → print produces a pick list / inventory issue PDF: id, date, issued by, reason, source inventory/warehouse, lines with quantity and source bin. No destination bin.


H. API (gateway)

Prefix: /api/inventory/v1/pick-lists

  • POST / — create (optionally with items; optional reason; lines take physical_location_id only)
  • GET /, GET /statistics, GET /{id}
  • PUT /{id} — draft update (including reason)
  • POST /{id}/start-processing | complete | cancel (legacy mark-collected / mark-ready / mark-received still exist)
  • Line routes under /{id}/items

OpenAPI: inventory service /docs.