Warehouse Management System Applet
Run the physical side of a warehouse: receiving, putaway, what sits on which shelf, and picking and packing for sales orders. Nothing here moves stock or posts. The balance changes only when the stock transfer a packing list creates is finalised in the Stock Transfer applet; a delivery order it creates moves no stock even when finalised — the goods leave on the sales invoice or other stock-out document — and building a picking list reserves nothing.
Your job, and the screen for it
| The job | Screen or tab | Read |
|---|---|---|
| Record goods arriving and queue them for containers | Inbound Process › Receiving Doc, then FINAL from the listing with auto-allocation to containers off — FINAL inside the editor drops lines typed in by hand | Inbound |
| Put received goods into containers, then onto shelves | Processing Queue, Putaway List, Putaway Processing — or Scan Session, which does nothing until a Scheduler clock runs its job; without one, link on Container Allocation › Listing | Inbound; Scan Session |
| See or record what sits where | Container Allocation › Listing | Space Container Allocation |
| Pick and pack a sales order | Send to Warehouse Picking Queue in Sales Order (Internal), then Picking Queue › Create Picking List, Picking List, Packing List | Outbound |
| Turn a packing list into a delivery order or a stock transfer — both arrive as drafts, and only the stock transfer moves stock, once finalised | Packing List listing (Create DO, Batch Process DO); the Doc Conversion tab | Outbound, step 6; Where the numbers on the generated Delivery Order come from |
| Set up warehouses, shelves, containers and pickers | Warehouses (Details, Node Setting, Layout tabs), Containers, Pickers | Before you can use it |
Overview
The Warehouse Management System applet is the physical-fulfilment layer that sits between a customer order and the document that actually moves stock. It records goods arriving at a warehouse (Receiving Doc), works out which container and which shelf they go to (Processing Queue and Putaway), keeps the map of what is stored where (Space Container Allocation), and drives picking and packing for orders that have been pushed to the warehouse from the Sales Order (Internal) applet.
It is opened by warehouse staff, supervisors and the administrator who sets up the warehouse structure. Nothing in this applet posts a journal or writes an inventory transaction line. The last step of the outbound flow converts a Packing List into a generic document — an Delivery Order (Internal) or an outbound Stock Transfer — and that document is finalised in its own applet. Stock only moves there.
The applet keeps its own records, its own warehouse/layout/node hierarchy and its own WMS item register. These are separate from the company/branch/location tree owned by the Organisation applet and from the stock balances owned by Stock Balance.
This is the heavier of two ways to run fulfilment in BigLedger. The lighter one needs none of this: a generic document can carry its own delivery and packing state in its own columns, and many businesses never model a warehouse at all. Read Which queue am I looking at? before you conclude that a screen or a column somebody has described to you is one of these.
Where it fits
| Direction | Applet / document | Relationship |
|---|---|---|
| Upstream (outbound flow) | Sales Order (Internal) | Its Pick Pack Queue screen pushes order lines into this applet’s Picking Queue. Nothing else fills that queue. |
| Upstream (inbound flow) | Purchase GRN (Internal), purchase orders, sales returns | Receiving lines can be linked to a generic document line for traceability, on the External Generic Document tab. |
| Upstream (master data) | Inventory Item Maintenance | Financial/inventory items that receiving lines, picking lines and containers point at. |
| Upstream (master data) | Organisation | Company, branch and location used by the Packing List → Stock Transfer conversion. |
| Upstream (master data) | Employee | Entities registered as Pickers and as the Receiving Doc person-in-charge. |
| Upstream (master data) | Pricebook | The pricing scheme used when a Packing List is batch-converted into a Delivery Order. |
| Downstream | Delivery Order (Internal) | Created in DRAFT from a Packing List. |
| Downstream | Stock Transfer | Created in DRAFT from a Packing List’s Doc Conversion tab. |
| Sibling | Stock Availability, Stock Balance | The Picking Queue shows the location and company ledger quantity alongside each queued line. |
The warehouse floor: the applet plans, the documents post
The Warehouse Management System applet runs the physical work and keeps its own records of it: what arrived, which container went to which shelf, what was picked and packed. It writes no stock line and no journal. That is the design: the warehouse works at the speed of the floor, and the stock ledger changes only when a document someone can review is finalised.
| Step | What the warehouse records | What moves the stock |
|---|---|---|
| Receiving | A receiving doc, linked to the purchase order or GRN it belongs to, and a putaway queue | The purchase document itself — a GRN Stock In or the purchase invoice. Receiving creates no ledger document |
| Picking | One picking list per sales order, from orders the sales team sends to the warehouse queue | Nothing yet |
| Packing | A packing list per picking list, or one consolidated list for one customer and warehouse | Nothing yet |
| Conversion | The packing list becomes a draft Delivery Order or a draft outbound Stock Transfer | Finalising the Stock Transfer moves stock. A Delivery Order moves none: the goods leave the ledger on the sales invoice or another stock-out document |
What the floor team should know before go-live:
| It does not | What to do instead |
|---|---|
| Check availability or reserve when a picking list is built | A supervisor checks Stock Availability before sending orders to the warehouse queue; hold stock for a customer with Stock Reservation |
| Pick in waves | Each order is picked on its own list. Several picking lists for one customer and warehouse can be merged at packing |
| Compare weight against a shelf’s maximum | The maximum weight is recorded on the node and container; the person slotting checks the loaded pallet’s weight against it before placing it |
| Run as a native handheld app | It runs in the browser of a phone, tablet or PC. Scan Session uses the device camera, and a Scheduler clock you add slots its scans; the serial, cart, packing and allocation scan fields also accept a handheld barcode scanner that types and presses Enter |
Screens and menus
The applet’s sidebar is:
| Menu | Route | What it lists |
|---|---|---|
| Warehouses | warehouse-listing | Warehouse register; opening one gives Details, Node Setting and Layout tabs. |
| Inbound Process › Receiving Doc | receiving-doc | Receiving document headers, with a FINAL button on the listing. |
| Inbound Process › Receiving Line | line-items | Flat list of every receiving line across all headers. Editing a line gives Item Details plus one Serial Number, Batch Number or Bin Number tab, by the item’s sub-item type. |
| Inbound Process › Processing Queue | processing-queue | Queue rows created when a Receiving Doc is finalised; where containers are allocated. |
| Inbound Process › Putaway List | putaway-list | Putaway instructions with a process status. |
| Inbound Process › Putaway Processing | putaway-processing-queue | Open putaway tasks; a row disappears when its container is slotted. |
| Inbound Process › Scan Session | scan-session | Barcode scan session over containers and spaces (uses the device camera in the browser; this screen takes no typed or handheld-scanner input). A scan is only queued here; a background job does the slotting later — see Scan Session. |
| Container Allocation › Listing | space-container-allocation | Container ↔ layout-node links; create by scanning a container code and a space code. |
| Outbound Process › Picking Queue | picking-queue | Order lines pushed in from the Sales Order applet. |
| Outbound Process › Picking List | picking-list | Per-picker task lists. Tabs: Main Details, Lines, Picking Sequence, Add to Cart, Add to Cart Scan, Discarded Carts, Outstanding Product. |
| Outbound Process › Packing List | packing-list | Packing headers. Tabs: Main Details, Account, Lines, Packed Product, Discarded Product, Doc Conversion, Doc Link. |
| Containers | warehouse-container | Physical container register (pallets, totes, cages). |
| Pickers | warehouse-picker | Entities registered as pickers for a warehouse. |
| Settings | settings | See Configuration below. |
| Personalization | personalization | Personal Default Selection and the shared sidebar-appearance screen. |
Two routes exist with no menu entry: space-container-allocation-report (the Report item under
Container Allocation is not shown in the menu) and everything under settings that the
shared settings sidebar does not link (below).

The Settings area shows the applet’s own System Configuration group plus fixed Server Side Permissions and Developer Tools groups:
| Group | Items shown |
|---|---|
| System Configuration | Application Settings · Default Selection · WMS Item Maintenance · WMS Item Category · WMS Item Category Group |
| Server Side Permissions | Permission Wizard · Permission Set · User Permission · Role Permission |
| Developer Tools | Release Notes |

Configuration
Before you can use it
| Prerequisite | Where you set it | Why |
|---|---|---|
| At least one warehouse | Warehouses in this applet | Every receiving, putaway, picking and packing record is keyed to a warehouse. Warehouse Code, Title, Status and Type are all required. |
| A layout and layout nodes per warehouse | Warehouses › Layout / Node Setting | Putaway rows can only be planned against a layout node. Without one, every putaway row is created as PENDING_ALLOCATION. |
| Containers with a scan code | Containers | Container allocation, the picking cart and the packed-list scan all look the container up by its scan code, so give every container a scan code before you rely on scanning it. |
| Registered pickers and packers | Pickers in this applet, over entities from Employee | Picker is required on a Picking List and Packer on a Packing List. |
| Company, branch and locations | Organisation | The Packing List → Stock Transfer form requires company, branch, from-location, to-location and transaction date. |
| A pricing scheme | Pricebook | Only for the Batch Process DO path, which sends DEFAULT_PRICING_SCHEME to the conversion. |
| Orders pushed from the sales side | Sales Order (Internal) → Pick Pack Queue → Send to Warehouse Picking Queue | The Picking Queue is fed only by that button. See Troubleshooting. |
| A decision about how receiving lines are created | This applet, Receiving Doc | Only a line built from a source document line carries a Split Qty, and only lines with a Split Qty survive auto-allocation. Decide before you turn ENABLE_AUTO_ITEM_ALLOCATION_TO_CONTAINER on, not after. |
Applet settings
Settings are applet-local — this applet has a settings screen of its own rather than the shared one — and the screen is labelled Application Settings in the sidebar.
All eighteen controls are written together by one SAVE button and stored as one applet-settings record. Every control starts empty, so the default for every row below is off / unset until the tenant saves the screen once. The rows are grouped below by tab, in the order you would set them up.
Anyone who can open Settings can change them; they are tenant-wide, not per branch and not per user.
Inbound Process tab: receiving and containers
| Setting | What it controls | Default | Effect when changed |
|---|---|---|---|
ENABLE_AUTO_ITEM_ALLOCATION_TO_CONTAINER | Which path the FINAL button on the Receiving Doc listing takes | Off | On: FINAL auto-allocates, creating containers for the received lines as well as the processing-queue rows. Off: FINAL creates the processing-queue rows only, and containers are allocated by hand in the Processing Queue. |
SET_ITEM_CODE_AS_CONTAINER_UPON_ALLOCATION | How auto-created containers are named | Off | On: auto-created containers are named after the item code instead of a generated code. Both FINAL buttons send it, so it applies wherever auto-allocation runs. One of only two settings in this applet that change what the server writes (the other is DEFAULT_PRICING_SCHEME) — and worth turning on if you pack by container scan, because a packed line takes its item-code column from the container’s name (see Troubleshooting), so with this on that column reads correctly. |
ENABLE_PUTAWAY_ALLOCATION | The putaway-allocation control on the Processing Queue container listing | Off | On: the control appears, letting the operator push the container into the putaway list from that screen. |
ENABLE_BULK_CONTAINER_UPDATE | The bulk container-update block on the same screen | Off | On: the bulk update panel is rendered, so several queue rows can be allocated to one container in a single action. |
Inbound Process tab: switches with no effect
| Setting | What it controls | Default | Effect when changed |
|---|---|---|---|
| Enable bundle config upon final | Nothing in this applet | Off | No effect. The setting is saved, but nothing in the applet or the backend reads it. A bundle-aware receiving path does exist on the server — it containerises only lines whose item is a bundle, and finalises the document — but no button in this applet calls it; only an integration can, with the WMS item create permission. |
| Enable camera scanner | Nothing | Off | No effect. Not read anywhere in the applet or the backend. The Scan Session screen initialises the camera unconditionally. Turning it on only forces Enable scan code search off in the form. |
| Enable scan code search | Nothing | Off | No effect, same as above. Turning it on forces Enable camera scanner off in the form. |
Outbound Settings tab: from picking list to packing list
| Setting | What it controls | Default | Effect when changed |
|---|---|---|---|
ENABLE_CONSOLIDATED_PACKING_LIST | The Consolidated Packing List button on the Picking List listing | Off | On: the button appears. Note the toggle’s label in the template reads ENABLE_CONSOLIDATED_PACKING_LIST_CONVERSION, but the control it is bound to is ENABLE_CONSOLIDATED_PACKING_LIST; the longer name is not a setting. |
ENABLE_MULTI_PACKING_LIST_CONVERSION | The Send to Packing List button on the Picking List listing — the ordinary route from a picking list to a packing list | Off, except on a tenant that has never saved this screen | On: the button appears. Off: it does not, and the only way out of a picking list is Consolidated Packing List. The exception is the trap: while both outbound toggles are unset, the listing forces this one on, so a fresh tenant sees Send to Packing List and loses it the first time somebody saves Application Settings with only the consolidated toggle ticked. The symptom is a button that disappeared and no setting that obviously governs it. |
Outbound Settings tab: scan modes
| Setting | What it controls | Default | Effect when changed |
|---|---|---|---|
ENABLE_MANUAL_CART_SCAN | Whether the Add to Cart tab is rendered on the Picking List editor | Off | On: the Add to Cart tab is hidden, leaving only Add to Cart Scan. Off: both tabs are shown. |
ENABLE_CART_SCAN_BY_CONTAINER | Cart scan mode: container only | Off | On: scanning a container code creates the picking-cart rows for everything in that container. Mutually exclusive with the next row — the settings form clears one when you set the other. With neither of the two on — the state of a tenant that has never chosen — the Scan action on Add to Cart Scan does nothing and shows no message. Pick one mode before anyone scans. |
ENABLE_CART_SCAN_BY_CONTAINER_AND_ITEM_CODE | Cart scan mode: container and item code | Off | On: the item scan-code field takes focus and a cart row is created only when every field on the form is filled. A scan with a field still empty creates nothing and says nothing. |
ENABLE_PACKED_LIST_SCAN_BY_CONTAINER | Packed-product scan mode: container only | Off | On: scanning a container packs everything in it; the per-item block on the create form is hidden. Mutually exclusive with the next row. With neither of the two on, the Scan action on Packed Product does nothing and shows no message. |
ENABLE_PACKED_LIST_SCAN_BY_CONTAINER_AND_ITEM_CODE | Packed-product scan mode: container and item code | Off | On: a packed line is created per scanned item, only when every field is filled; a scan with a field still empty creates nothing and says nothing. |
ENABLE_PACKED_LIST_LINE_DELETE_BUTTON | The delete column on the packed-list scan grid | Off | On: the delete column is made visible so a mis-scanned packed line can be removed. |
Outbound Settings tab: defaults for delivery orders and stock transfers
| Setting | What it controls | Default | Effect when changed |
|---|---|---|---|
DEFAULT_PRICING_SCHEME | Pricing scheme sent to Batch Process DO on the Packing List listing | Unset | Set: each generated Delivery Order line is tagged with that scheme, but its prices and amounts are still copied from the source order, not looked up — and an item with no price in the scheme is added to it at zero. Unset: the source document’s prices are copied and no scheme is touched. |
DEFAULT_COMPANY | Company pre-filled on the Packing List → Stock Transfer form | Unset | Set: the company is pre-filled. Unset: the operator must pick a company; the field is required. |
DEFAULT_BRANCH | Branch pre-filled on the same form — the only place it is used. The Receiving Doc create screen and the Space Container Allocation create/edit screens load it, but nothing on them reads it | Unset | Set: the branch is pre-filled on the Packing List → Stock Transfer form. Unset: the required branch field stays empty. |
Keys read without a control on this screen
Two keys are read at runtime without a control on this screen:
DEFAULT_LOCATION— loaded by the Receiving Doc create screen and by Space Container Allocation create/edit, which merge the personal value over the applet value, and then read by nothing: no field on those screens or anywhere else in the applet is pre-filled from it. The only screens that write it are the two Default Selection screens described below, and neither works.ENABLE_BRANCH_FILTER— not on this screen, and no screen in this applet saves it, but it is read. If the applet’s settings record carries it switched on (written through the API, for example), picking a supplier on a Receiving Doc’s Account tab is refused with Supplier not linked to branch unless that supplier is linked to a branch, and picking a customer on a Packing List’s Account tab is refused with Customer not linked to branch in the same way. The check is “linked to any branch”, not to the document’s branch. If you see either message, that key is the cause.
Default Selection (applet and personal)
Settings › Default Selection and Personalization › Default Selection render Default Branch and
Default Location drop-downs.
DEFAULT_BRANCH from
Application Settings instead; DEFAULT_LOCATION currently has no working control anywhere in
the applet.Settings in other applets that control this applet
| Setting | Where it is set | Effect here |
|---|---|---|
| Pick/pack queue push | Sales Order (Internal) — Pick Pack Queue listing, Send to Warehouse Picking Queue | Moves the queued rows from the sales-side queue into this applet’s Picking Queue and removes them from the sales side. Until this is done, the Picking Queue here is empty. |
| Pricing scheme definition | Pricebook | Supplies the scheme referenced by DEFAULT_PRICING_SCHEME. |
| Company / branch / location records | Organisation | Supply the values DEFAULT_COMPANY and DEFAULT_BRANCH point at, and the from/to locations on the stock-transfer conversion. |
| Delivery Order and Stock Transfer document settings | Delivery Order (Internal), Stock Transfer | Govern what happens when the document this applet created in DRAFT is finalised. |
Who can change what
- Feature Visibility is a stub. The screen shows one Teams panel with three placeholder options
(
Team 1,Team 2,Team 3), an add button and a SAVE button, none of which does anything. Nothing it shows is saved, and nothing in this applet reads a feature-visibility value. - No client-side permission codes exist for this applet. Menu items and buttons are therefore not gated per role from inside the applet, and Applet Access has nothing to grant.
- Server-side permissions are the standard shared screens (Permission Wizard, Permission Set, User Permission, Role Permission). This applet additionally offers the Warehouse target view, so a permission can be scoped to specific warehouses, listed by Warehouse Code and Warehouse Title.
Fields
Nearly every form in this applet asks for a code, a name, a description, a status and a date, and does with them what you would expect. This section names what each screen captures — so you can tell at a glance whether it holds the thing you need — and tables only the fields that behave in a way the screen does not show.
Warehouse, layout and node
A Warehouse captures code, title, description, status and type; all but description are required. A Layout belongs to one warehouse and captures name, code, floor, description and status. A Layout Node — your zone, rack, shelf or bin — captures node name, node type, status, a scan code, a parent node, and a position, a size and a maximum weight.
The node type comes from the warehouse’s Node Setting tab: there you define, once for each warehouse, the kinds of space it has — a name, a type, a height, width and length, and a maximum weight — and each layout node you create picks one of them from that list.
| Field | What the screen does not tell you |
|---|---|
| Layout › Floor | Required on the create form and not on the edit form. A layout can therefore be edited into a state the create form would have refused. |
| Node › Scan code | Container allocation and the scan session look a node up by an exact match on the scan code and take the first row returned. A node saved without one can never be scanned; two nodes sharing one code are indistinguishable, and the first always wins. |
| Node › Parent node | Nodes form a tree of any depth through the parent node. Nothing enforces a zone → rack → shelf → bin shape, or any depth limit — that convention is yours to keep, and nothing will tell you when somebody breaks it. |
| Node › Max weight | Recorded, and searchable on the node-type register. No putaway or slotting step compares a container against it, so stating a maximum weight does not stop you slotting a pallet into a shelf that cannot hold it. |
Receiving Doc and its lines
The Receiving Doc header captures Doc No (disabled — the tenant numbering fills it), Warehouse, Transaction Date, PIC, Reference, Description, Tracking ID and a record Status. A Receiving Line captures the item, quantity, UOM and a tracking ID. Opened from Receiving Line or from a line-link form, it adds one Serial Number, Batch Number or Bin Number tab, whichever matches the item’s sub-item type; the line form inside the Receiving Doc editor has Item Details only. Editing an existing header adds Account, Lines, Generic Document, External Generic Document and Attachments. The create screen has only Main Details (its Lines and GenDoc tabs are commented out), so lines are added after the first save: CREATE saves the header and opens it in the editor, where the Lines tab is.
| Field | What the screen does not tell you |
|---|---|
| Header › Warehouse | Nothing on this header is validated — including this. A Receiving Doc saves with no warehouse, and every processing-queue row it later creates copies the header’s warehouse, so those rows arrive with none. They are then invisible to any warehouse filter. |
| Header › Status | This is the record status (ACTIVE / INACTIVE), not the posting status. Posting status is DRAFT or FINAL and is changed only by the FINAL button. |
| Line › Item | One line points at one of a financial item, an inventory item or a WMS item. Which one it is decides what the rest of the flow can do with it — see What it will not do. |
| Line › Qty | Required, minimum 1, and truncated to a whole number the moment auto-allocation reads it. Receive 10.5 and ten are containerised; the half is not carried, and nothing reports it. |
| Line › Split Qty | Exists only on the line-link form — the path that creates a receiving line from a source document line, where it is required and defaults to 1. The plain Receiving Line form has no Split Qty control at all, so a line typed in by hand has none. That single fact decides whether auto-allocation sees the line; see Inbound below. |
| Bin Number tab | The form validates and then dispatches nothing. Nothing is stored, and it does not write the bin tables used by Stock Reservation. |
Serial numbers may be typed, scanned, or imported with a delimiter (required on the import dialog). Batch Number wants Batch No, Qty, Issue Date and Expiry Date, all required.
Container, picker, picking list and packing list
A Container captures a code, a name, a split quantity, a type, four dimensions, a scan code and a description — and validates none of them. A Picker links a warehouse to an entity from Employee, with the contact details shown for convenience. A Picking List wants a picking date, a picker and a warehouse; a Packing List wants a packing date, a packer and a warehouse, plus free-text reference, tracking, description and remarks, and its Account tab will not save without a customer entity.
| Field | What the screen does not tell you |
|---|---|
| Container › Scan Code | Matched exactly by every scan-based flow — container allocation, the picking cart, the packed-list scan. A container with no scan code is unreachable from all three, and the form will happily save one. |
| Picking List › Picker and Warehouse | Required on this form — and a picking list created from the Picking Queue sets neither. Those lists arrive blank in both columns and no warehouse filter finds them. See Outbound below. |
| Packing List › Packer | The drop-down is the Picker register. There is no separate packer register; a person must be registered as a picker for the warehouse before they can be named as its packer. |
Packing List → Stock Transfer (Doc Conversion tab)
Company, Branch, From Location, To Location and Transaction Date are all required; Tracking ID and Description are copied onto the document as its tracking ID and remarks.
| Field | What the screen does not tell you |
|---|---|
| Company, Branch | Pre-filled from DEFAULT_COMPANY and DEFAULT_BRANCH in Application Settings. Unset, the operator picks them by hand every time. The from and to locations are never pre-filled — nothing on this form reads DEFAULT_LOCATION. |
| From Location / To Location | Become the from and to locations on the generated Stock Transfer. This is the only conversion in the applet that moves stock when finalised, and these two fields are where it moves it — a transposed pair is a stock movement in the wrong direction, posted from a different applet by somebody else. |
Space Container Allocation and the WMS item register
Space Container Allocation has a scratch Scan Code box that searches containers and spaces by their scan codes and fills the rest of the form; the container and space fields it fills are required. The WMS item register captures warehouse, item code, name, type, UOM, description and status, none of them validated, with read-only audit fields. WMS Item Category and WMS Item Category Group both require a category code and name, and the group form additionally requires a parameter code and parameter name.
A WMS item is a separate record from an inventory item and from a financial item. Receiving lines can point at any of the three, which is the flexibility the register exists for — a pallet of shop fittings that no one sells has a place to live — and also the reason the outbound scan behaves differently depending on which one a line used.
Lifecycle and effects
Which queue am I looking at?
BigLedger has several queues that all describe “work waiting to be done to a document”, and they are different tables with different writers and different logic — not one queue seen from different screens. Getting this wrong is the commonest way to read a warehouse question and answer a manufacturing one. The whole set, so the index is complete:
| Queue | Written by | Where you see it |
|---|---|---|
| Receiving / processing queue | The FINAL button on a Receiving Doc | Inbound Process › Processing Queue, this applet |
| Putaway queue | Pushing a container into the putaway list | Inbound Process › Putaway Processing, this applet |
| Pick/pack queue, finance side | The sales side, and the Delivery & Installation job service | Pick Pack Queue in Sales Order (Internal) |
| Pick/pack queue, warehouse side | Send to Warehouse Picking Queue, which moves rows off the finance side | Outbound Process › Picking Queue, this applet |
| Pick/pack queue, manufacturing side | The MRP flow | The manufacturing applets |
| Delivery & Installation jobs | The job service, which also adjusts the finance-side queue as jobs are created and cancelled | The Delivery and Installation applet |
| Simplified delivery — the delivery and packing state held on the document itself | The document applets | The document’s own delivery details screen |
Three consequences of that table are worth stating plainly, because none of them is visible from any screen.
The finance-side queue and this applet are not the same product decision. Queueing work for picking on the document — its own pick/pack flag, packing status and delivery-tracking fields — is the lighter of the two paths, and it needs none of the warehouses, layouts, nodes and containers below. This applet is the heavier option you move to when you want the physical warehouse modelled. If you are comparing notes with another BigLedger user about “the pick pack queue”, check which of the two you are each looking at before you conclude anything.
A warehouse-side queue row is a pointer, not a copy. A Picking Queue row holds a reference to the document and the line, a document type, a base quantity, a balance, a priority, a running number and a customer branch — and no item, no company, no branch, no location and no warehouse. Everything else on the Picking Queue is joined back from the generic document at display time. That is why the listing can only show one document type, why nothing filters the queue by warehouse, and why a picking list built from it has no warehouse on it. It also means the push moves work by document: every queued line of a selected document goes across, not only the lines that were ticked.
The balance is held as text on the warehouse side. Nothing in the applet is harmed by that, but a
report that sorts or compares this column sorts it as text, where "10" comes before "9".
The sales-side queue carries a queue type whose two values are MRP and WMS — apparently the
discriminator that says which downstream queue a row is destined for. Nothing in the backend decides
anything from it, nothing sets it and no query filters on it, so it is not populated. Your own
integration can read it, but do not filter or report on it.
The figure behind each queue screen
Every count and quantity in this applet is a stored row that one action wrote, read back when the screen loads — except the two stock columns on the Picking Queue, which are the stock ledger’s stored balance rows. None of them is recalculated from anything else, so each is exactly as current as the last action that wrote it.
| Screen and figure | Written by | As of |
|---|---|---|
| Processing Queue — one row per receiving line still to allocate, and its balance | FINAL on a Receiving Doc writes the rows; each allocation stores the balance the screen worked out and deletes the row at zero | The last allocation; a row that has gone was fully allocated (or created at zero by auto-allocation) |
| Putaway List and Putaway Processing | Pushing a container to putaway; slotting deletes the processing row and completes the list row | The last push or slot |
| Scan Session rows | The scan, as UNPROCESSED; the background job marks them PROCESSED | The last time a Scheduler clock ran the job |
| Pick Pack Queue in Sales Order (Internal) — Qty Pending per line | Send To Queue on the order, with that line’s quantity to deliver | The send; the rows leave when they are pushed to the warehouse |
| Picking Queue — Qty Pending | Copied from the sales-side row at the push, and not rewritten by any warehouse screen afterwards | The push |
| Picking Queue — customer, item, Base Quantity, delivery status | Not stored on the queue row: read from the order each time the grid loads | Now |
| Picking Queue — Location Balance, Company Balance | The stock ledger’s stored balance rows for the order line’s company, location and item — the same row as Bal on Stock Balance — shown as 0 where no row exists | The last stock-moving FINAL at that location, once its balance job has run |
| Picking List Lines — Qty to Pick, Qty Picked | Create Picking List: the order line’s full base quantity as a whole number, and 0 | The day the list was built; neither is rewritten |
| Add to Cart — SO Qty, Qty Picked | SO Qty is copied from the line’s quantity to pick; Qty Picked is what the picker typed, or a scanned container’s whole content | The picker’s last update |
| Outstanding Product — Required Qty, Qty Picked, Discrepancy | Generate Discrepency Report on the Add to Cart tab, which replaces the previous rows with quantity to pick against active carts’ quantity picked, per financial item | The last press of that button; inventory and WMS items are not in it, and while any item on the list is in no cart at all the button fails with an error (read from the code, not tried) |
Packing List lines — quantity and UNPACKED / PACKED | Send to Packing List, one line per active cart at its quantity picked; the packed-product scan marks them PACKED | The last scan |
The warehouse and the stock ledger answer different questions, and disagree on purpose. No record in this applet writes a stock ledger line; the ledger’s balance at a location changes only when a stock-moving document — a sales invoice, a stock transfer, a stock adjustment — is finalised, and its balance row follows a few seconds later when the balance job has run. So between packing and invoicing, Stock Balance still counts goods that are sealed in a carton by the door, and a unit found missing on the shelf stays in Stock Balance until somebody posts an adjustment. Use the warehouse screens for where it physically is and what has been picked; use Stock Balance for what the books say you hold at that location; and use the Stock Movement Report in Stock Report when you need to know which document changed it, and when.
Posting proof
| Aspect | Value |
|---|---|
| Server document type | None. Receiving docs, picking lists and packing lists are not generic documents and carry no document validation. |
| Amount signum | Not applicable — no amount is posted by any WMS record. |
| Quantity signum | Not applicable — no inventory transaction line is written by any WMS record. |
| Dr/Cr equation | None. No journal posting is defined for any warehouse record. |
| GL precedence | Not applicable. |
| Stock processor | None inside the applet. Stock moves only through the generic document the Packing List is converted into. |
| What VOID reverses | The applet has no VOID. Voiding the source Sales Order runs a queue clean-up job (below). |
Both documents this applet creates are written with an amount signum and a quantity signum of 0
on every line. What happens to stock is decided later, when the document is finalised in its own
applet:
| Created document | Signums as written here | Created with |
|---|---|---|
| Delivery Order (Internal) | 0 / 0 | Created as DRAFT — moves no stock even when finalised. |
| Stock Transfer (outbound) | 0 / 0 | Created as DRAFT. Finalising it in the Stock Transfer applet is what applies the outbound transfer’s direction and removes stock from the from location; nothing written here does. |
Inbound
Receiving Doc is created as
DRAFT(the only two posting statuses areDRAFTandFINAL). The FINAL button on the editor is disabled while the header has no lines.FINAL sets the header’s posting status to
FINALand creates the processing-queue rows — but which rows depends on where you pressed it and on one setting. See the callout below; this is the single most consequential thing on the page.FINAL is not one-way. Nothing on the server checks whether the document is already
FINAL, so pressing it a second time creates the processing-queue rows a second time — and on the auto-allocation path, a second set of containers. The listing offers a tick box only onDRAFTrows, but the FINAL button inside the editor stays enabled on a document that is alreadyFINAL(it is disabled only while there are no lines). Look at the posting status before you press it; if the Processing Queue shows every line of a receiving document twice, that is what happened, and the extra rows and containers have to be cleared by hand.Processing Queue. Allocating a container updates the queue row and the container. The remaining balance is calculated by the screen and sent to the server, which stores whatever it is given; when it arrives at zero or below, the queue row is permanently deleted — not soft-deleted, not archived — and only the container is updated. Once it has gone there is no record in this applet of what was allocated against that receiving line.
Putaway. Pushing a container into the putaway list creates a putaway row plus a putaway processing-queue row. Process status is
PLANNED_ALLOCATIONwhen the container already has a layout node, andPENDING_ALLOCATIONwhen it does not.Slotting a container creates the container ↔ node link, sets the putaway row to
COMPLETED_ALLOCATION, and deletes the putaway processing-queue row. If you slot by Scan Session, this step happens later, in a background job — see below.
Space Container Allocation writes the same link row directly, without going through putaway.
Scan Session: slotting happens later, in a background job
The Scan Session screen does not slot anything. Each scan is stored as a queued row with status
UNPROCESSED, and that is all the screen does. The rows are worked by a background job,
the warehouse container–space scan-session processor, which runs only when a clock for it is set up in the
Scheduler applet. No such clock is installed by default,
so until you add one, a scan session is a list of scans that nothing ever acts on. Each time the clock
fires, the job takes up to ten open sessions and, for each:
- decides whether a scanned code is a space or a container by looking for the text
Node_orContainer_inside it — your node and container scan codes must carry those prefixes for this screen to work at all; - finds the matching putaway task, or failing that the node or container itself, creates the container ↔ node link and deletes the matched putaway task;
- marks every row of the session
PROCESSED.
A code with a prefix that matches nothing is marked PROCESSED with the reason in Remarks. A code
with neither prefix is marked PROCESSED with an empty Remarks and nothing else happens — it
looks exactly like success. (Read from the code, not tried.)
How to check: open the session’s scan list. Rows still UNPROCESSED after a few minutes mean no
clock is running the job. Rows PROCESSED with no remark but no new link in Container Allocation
mean the scanned codes lacked the prefixes. If your labels are printed without them, use Container
Allocation › Listing to link containers to spaces instead — it looks codes up exactly, with no
prefix rule.
FINAL takes two different paths, and one of them silently drops lines.
On the listing, FINAL honours ENABLE_AUTO_ITEM_ALLOCATION_TO_CONTAINER. Off, it calls the
plain insert, which creates one queue row per receiving line, carrying the received quantity as
the balance to allocate. On, it calls auto-allocation instead.
Inside the Receiving Doc editor, FINAL ignores the setting and always calls auto-allocation.
Auto-allocation processes only the lines that carry a Split Qty, and Split Qty exists only on the
line-link form. A Receiving Doc whose lines were typed in by hand has no Split Qty on any of them,
so auto-allocation creates nothing — no containers, no queue rows — sets the header to FINAL
anyway, and reports “Processing Queue Posting Successful”. The goods are received, the document
looks posted, and the Processing Queue is empty.
The symptom is “we finalised the receiving doc and nothing arrived in the Processing Queue”, and the fix is to finalise from the listing with the setting off, which takes every line regardless.
Auto-allocation also creates its queue rows with a zero balance by construction. That is correct — the containers already exist, so there is nothing left to allocate — but it means a Processing Queue row created this way is a record, not a task, and the next update of it deletes it.
Outbound
Order lines arrive in the Picking Queue only when someone presses Send to Warehouse Picking Queue in the Sales Order (Internal) applet. That call copies each queued row for the selected documents and removes the sales-side row, so the same work is never in both queues and the sales side stops showing it. The deletion is conditional on the copy having succeeded, which is worth knowing because the next step is not.
Picking Queue lists those rows joined to their generic document, with the ledger quantity from the location and company stock balances beside each line. It only ever asks for sales orders, so only sales orders are shown regardless of what else was pushed in — and the group heading over them reads Sales Invoice No although the numbers under it are sales order numbers. The orange Qty To Deliver column accepts a number up to Qty Pending and is never sent anywhere: the next step reads only which rows you ticked.
Nothing in the flow checks availability, so that check is the supervisor’s, before the next step: compare Qty Pending with Location Balance, remembering that the balance still counts goods packed but not yet invoiced.
Create Picking List groups the selected queue rows by source document header and creates one picking list per header. Three things it does that the screen does not say, and one reason to use it:
- It walks every line of that document, not only the lines you selected, and sets the quantity to pick from the line’s full ordered quantity — the queue’s remaining balance is never consulted. A partly shipped order is re-picked in full.
- Quantity to pick and quantity picked are whole numbers, so a fractional quantity is truncated.
- It sets neither the picker nor the warehouse on the new header, though the Create form requires both. Lists made this way arrive blank in both columns, and a warehouse filter will not find them.
- Build picking lists here, not with the Picking List screen’s own Create. A list created by hand can link sales-order lines on its Lines tab, but its Generate Picking Sequence button does nothing, so nothing on these screens gives the list the picking lines that Add all to picking cart copies into a cart. BigLedger is tracking this.
Picking is recorded on the carts, not on the list’s lines. Add all to picking cart (or Add selected to picking cart) on the Lines tab copies each line into a cart row with its quantity to pick and nothing picked; the picker then types Qty Picked on the Add to Cart tab (it refuses more than the quantity to pick; the tab is hidden while
ENABLE_MANUAL_CART_SCANis on), or a container scan puts the container’s whole content in the cart and empties the container. The Lines tab’s own Qty Picked is written as 0 when the list is built and nothing changes it later.A cart row also claims its item: adding the same item to another list’s cart opens a conflict dialog naming the list that holds it, and confirming moves that list’s cart row to its Discarded Carts. Nothing releases the claim when a list goes to packing, so the dialog appears for the next list with that item; when the list it names is already
IN_PACKING_STATION, confirming is safe, because its packing lines already exist (read from the code, not tried).Send to packing creates the Packing List and sets the picking list’s packing status to
IN_PACKING_STATION. The packing list’s lines are built from the picking list’s active carts, each carrying the cart’s quantity picked, so a short pick arrives at packing already short. The guard that should refuse a list with no carts at all never fires: such a list goes to packing as an empty packing list (read from the code, not tried).Consolidated Packing List is a separate action that merges several picking lists into one packing list; it refuses lists for different customers (“Mismatching entities found in picking lists.”) or different warehouses (“Mismatching warehouses found in picking list.”). Packing list lines start
UNPACKEDand becomePACKEDas they are scanned or converted in bulk.Conversion. From the Packing List listing, Create DO consolidates the selected
DRAFTpacking lists into one Delivery Order and requires every selected header to name the same customer; Batch Process DO creates one per packing list usingDEFAULT_PRICING_SCHEME. Create DO carries over only lines whose packing status isPACKED; Batch Process DO and the Stock Transfer conversion copy every line,UNPACKEDones included, and nothing stops the same packing list being converted twice — check the draft before you finalise it. BigLedger is tracking this.From the Doc Conversion tab, a Packing List becomes an outbound Stock Transfer. Both are written with posting status
DRAFTand linked back to the packing list — while the packing list’s own posting status becomesFINALand every one of its lines is marked converted.The new document is written directly rather than through the document screens, so three things you might look for are not there: it is not checked the way a document saved on its own screen is, it does not appear as a created event in a webhook feed, and it has no entry on its own Doc Link tab. The link back is recorded on the warehouse side only — open the packing list’s Doc Link tab to find it.
Create Picking List deletes the queue rows whether or not it created anything.
The four writes it makes — the picking list, the picking sequence, the document links, and the deletion of the selected queue rows — run in one transaction, but a failure in any of the first three is written to the server log and swallowed. Nothing is rethrown, so the transaction commits and the deletion stands. The endpoint then returns “Successfully created picking list from queue.” either way.
There is no undo and no re-drive: the queue rows are hard-deleted, the finance-side rows they came from were deleted when they were pushed across, and nothing sweeps for orders that have left both queues without a picking list. If a document disappears from the Picking Queue and no picking list appears, it has to be pushed again from the sales side.
Where the numbers on the generated Delivery Order come from
This is the question the finance team asks first, and the answer is that the quantity and the money come from different documents.
- The base quantity is the packed quantity, from the packing-list line.
- The UOM quantity, the standard, net and discount amounts, the tax amounts and the transaction amount are copied unchanged from the source order line.
So a short shipment produces a Delivery Order whose base quantity says eight and whose UOM quantity
and every amount column still say the ten that were ordered. It does not misstate your accounts —
the document is created in DRAFT with quantity signum zero and posts nothing until somebody
finalises it in the Delivery Order applet —
but it does mean the draft is not a short-shipment document until somebody edits it, and the
person who edits it is not the person who packed it. The source order’s prices ride along whether or not DEFAULT_PRICING_SCHEME is set: the setting only tags each line with that scheme, and where the item has no price in it, the conversion adds the item to the scheme with every price at zero. Check the scheme after the first batch: a zero price sitting in a price list is easy to miss, and whether a sale priced from that scheme then fills zero has not been tested.
A packing-list line made by a container scan carries no order line of its own. The conversion then copies from a line of the linked order with the same item, whichever the database returns first — so where an order holds the item on two lines at two prices, both packed lines take the same one of them. Only when the packing list has no linked order, or the item is not on it, is the line created with the packed quantity and no amounts.
A worked day: GSO’s fulfilment centre picks one online order short
GadgetSphere Online Sdn Bhd (GSO) packs its web orders at its fulfilment centre. This morning’s first
finalised sales order has three lines: 2 flagship smartphones, 1 ultraportable laptop and 10 wireless
earbuds. Stock Balance says the fulfilment centre holds 9 earbuds; the shelf holds 8, because one damaged
unit was binned yesterday and nobody posted the adjustment. The scenario is the ordinary one on a
fulfilment floor: the books say one thing and the shelf another, and the picker finds out first.
| Step | What you see | What has posted to stock |
|---|---|---|
| 1. Send To Queue on the order | Sales-side Pick Pack Queue: three rows, Qty Pending 2, 1 and 10. Picking Queue: empty | Nothing |
| 2. Send to Warehouse Picking Queue | Sales-side queue: empty for this order. Picking Queue: the three rows, Qty Pending 2 / 1 / 10, earbuds Location Balance 9 | Nothing |
| 3. Create Picking List | Picking Queue: the rows are gone. New list, no picker and no warehouse until you set them; Lines: Qty to Pick 2 / 1 / 10, Qty Picked 0 | Nothing |
| 4. Add all to picking cart; the picker finds 8 earbuds and types 2 / 1 / 8 on Add to Cart | Lines still say Qty Picked 0. After Generate Discrepency Report, Outstanding Product: earbuds required 10, picked 8, discrepancy 2 | Nothing |
| 5. Send to Packing List, then scan the packed products | Picking list IN_PACKING_STATION; packing list lines 2 / 1 / 8, UNPACKED, then PACKED | Nothing |
| 6. Create DO | A DRAFT delivery order: base quantity 8 on the earbuds line, but its UOM quantity and amounts still for 10. Packing list FINAL | Nothing — Stock Balance still says 9 earbuds |
| 7. The office corrects the delivery order to 8 and finalises it; the sales invoice for 8 is finalised | Stock Movement Report: one line of −8 earbuds at the fulfilment centre, dated the invoice | The invoice’s stock line; Stock Balance shows 1 a few seconds later, against an empty shelf |
What the short pick leaves open. Two earbuds, and the warehouse no longer holds any record of them as work: the queue rows were deleted at step 3, the picking list has gone to packing, and the Outstanding Product row on that list is the only trace. The delivery order the warehouse wrote carries no knock-off link to the order, so the order’s balances move only by what the invoice knocks off — see Delivery Order (Internal). Deciding what happens to the two is customer service’s job, the same morning:
Ship them later. The warehouse has nothing to pick them from: the line has to come back through the order’s Send To Queue and be pushed across again. Whether the order offers a line it has already sent once has not been established for this page — try it on one order before you promise a customer a date.
When it does arrive, Create Picking List again builds every line of the order at its full quantity, so on the new list use Add selected to picking cart on the earbuds line only and pick 2 — the packing list is built from the carts, so the phones and the laptop do not go out twice. The conflict dialog will name this morning’s list; it is in packing, so confirm.
Cancel them. Close the remaining quantity on the order, as the partial delivery workflow describes.
The ninth earbud is the inventory controller’s: a stock adjustment at the fulfilment centre brings Stock Balance back to the shelf. Until it is posted, the Picking Queue will offer a Location Balance of 1 that nobody can pick.
The thirty-second check: one order, five numbers
Take one shipped order line and read these in order. Each pair should agree; the first that does not tells you where the order went wrong, and whose job it is to put it right.
- Order line quantity = picking list Qty to Pick. A smaller Qty to Pick means a fractional quantity was truncated; a list holding lines you did not tick means the whole order was built. The warehouse supervisor edits the carts, not the list.
- Outstanding Product = the list and the carts. Its Required Qty should equal Qty to Pick and its Qty Picked the carts’ total for the item. If not, the report predates the last cart change: press Generate Discrepency Report again.
- Active carts’ Qty Picked = packing list line quantity. A gap means a cart was discarded or added after Send to Packing List. The packer reconciles the carton against the cart before sealing it.
- Packing list
PACKEDquantity = delivery order base quantity = its UOM quantity and amount. Base right and UOM or amount wrong is a short shipment nobody has corrected yet — the billing office fixes the draft before FINAL. - Invoice quantity = the Stock Movement Report line at the fulfilment centre, and Stock Balance fell by
it. No ledger line means the invoice is not
FINALor its stock job failed; a ledger line and an unchanged Stock Balance for more than a few minutes means the balance job has not run. Both belong to accounts, through the stock report and the troubleshooting on Stock Balance.
When all five agree, the order is shipped and booked. When they agree and the shelf is still short, the difference is physical, and it is a count and a stock adjustment, not a warehouse record, that closes it.
What the source order’s packing status does — and does not — do
A sales order and each of its lines carry a packing status
(IN_QUEUE, PLANNED, IN_PROGRESS, ON_HOLD, COMPLETED, PENDING_APPROVAL, APPROVED,
REJECTED, INCOMPLETE, PENDING_STOCK). Nothing in the warehouse flow writes it.
The only path that would is one that no screen in any applet uses. If it were used, it would still
not do what it appears to: the “is everything packed yet” check it relies on reads the
manufacturing queue rather than the warehouse one, so on a
tenant that does not use MRP the check tests an empty set, which counts as all packed, and the
order would flip to COMPLETED on the first line rather than the last.
Take the packing status on a sales order as not maintained by this applet. Use the picking list’s
own packing status (PENDING_PICKING → IN_PACKING_STATION) and the packing-list lines'
UNPACKED / PACKED for where the work has actually reached.
VOID of the source order
Voiding an Internal Sales Order queues a clean-up job. It deletes the order’s remaining sales-side
queue rows and its picking list — but only while the picking
list is still PENDING_PICKING. Once the list has reached IN_PACKING_STATION the job does nothing,
and the picking list, the packing list and any converted document survive the void. The job also
never touches the warehouse Picking Queue, so rows already pulled into it are left behind.
The window this job can act in is narrower than it looks: if your operation sends lists to packing promptly, the clean-up removes almost nothing, and cancelling an order is a manual job in the warehouse.
What it will not do
- It does not move stock and it does not post. No WMS record writes an inventory transaction line or a journal. Receiving ten pallets and slotting them changes no stock balance anywhere; the balance you see beside a Picking Queue line is the stock ledger’s stored balance row, maintained by the documents, and it will not agree with what is physically in your racks unless a document has been finalised for every movement.
- It does not reserve, and it does not check availability. Building a picking list places no reservation and consults no stock balance: two orders for the last unit produce two picking lists, and neither screen objects. Stock Reservation is a separate mechanism and this applet writes none of its records.
- It does not work non-sales documents. The Picking Queue shows only sales orders.
- It does not handle fractional quantities. Picking quantities are integers; auto-allocation truncates the received quantity. Put items that are genuinely fractional through a base UOM whose quantities are whole numbers before they reach this applet.
- It has no VOID, no reopen and no history of its queues. Processing-queue rows and warehouse queue rows are hard-deleted on completion. The shared Audit Trail screen in the main sidebar is the place to look for changes; this page has not checked which warehouse records reach it.
- It does not protect a finalised Receiving Doc from Delete. The editor offers DELETE whatever
the posting status, and deleting removes the header, its lines and their links to source documents —
but not the processing-queue rows or the containers that its FINAL created. Those are left pointing
at a document that no longer appears. Treat DELETE as a
DRAFT-only action by your own rule. - It does not maintain the source order’s packing status — see above.
Related applets
- Sales Order (Internal) — the only source of Picking Queue rows. Its own packing status is not maintained by this applet (see What the source order’s packing status does).
- Delivery Order (Internal) — receives the draft document that Create DO / Batch Process DO produces.
- Stock Transfer — receives the draft outbound transfer produced by the Doc Conversion tab; that is the only path in this flow that moves stock.
- Stock Balance and Stock Availability — the same stored balance rows as the Picking Queue’s location and company columns; Stock Report’s Stock Movement Report names the document that moved them.
- Stock Reservation — separate mechanism; the bin tables it reserves against are not written by this applet.
- Inventory Item Maintenance — the items that receiving lines, containers and picking lines point at.
- Organisation — companies, branches and stock locations used by the conversions. Warehouses here are a separate hierarchy, not stock locations.
- Employee — the entities registered as pickers.
- Pricebook — the scheme referenced by
DEFAULT_PRICING_SCHEME.
Troubleshooting
| Symptom | Cause | Fix |
|---|---|---|
A Receiving Doc is FINAL and the Processing Queue is empty for it | Auto-allocation processes only the lines that carry a Split Qty, and Split Qty exists only on the line-link form — a hand-typed line has none. FINAL inside the editor always auto-allocates, whatever the setting says, and still reports “Processing Queue Posting Successful”. | Finalise from the Receiving Doc listing with ENABLE_AUTO_ITEM_ALLOCATION_TO_CONTAINER off — the plain path takes every line. Or build receiving lines from a source document line, which gives each one a Split Qty. |
| A document vanished from the Picking Queue and no picking list appeared | Create Picking List deletes the selected queue rows in the same transaction that writes the list, and a failure in the write is logged on the server and swallowed. The endpoint reports “Successfully created picking list from queue.” either way. | Push the order again from the Sales Order applet’s Pick Pack Queue. Nothing re-drives it, and the finance-side rows were deleted when it was first pushed. |
| A picking list created from the queue has no picker and no warehouse | Create Picking List from the queue sets neither, although the Create form requires both. | Open the list and set them. Until you do, warehouse filters and picker filters will not find it. |
| Scanning a container into Packed Product reports success and packs nothing | The scan matches the container’s lines against the container header’s item. A container created on the Containers screen is saved with an empty line list, so nothing matches — and the endpoint still returns “Packing List Line Scan Successful”. | Pack from containers that allocation built from a receiving line; those carry a line. A hand-made container is for holding a physical thing, not for packing against. |
| A packed line shows the container’s name in the item code column | When a scan creates a packed line from scratch, the item code columns are filled from the container’s name, not the item’s code. | Cosmetic on the packing list, but do not report from that column. The item GUID beside it is correct. |
| A shipped order still shows a blank or stale packing status | Nothing in the warehouse flow writes the packing status on the sales order. | Read the picking list’s own packing status and the packing-list lines’ UNPACKED / PACKED instead. |
| The Send to Packing List button disappeared after settings were saved | While both outbound toggles are unset the listing forces the button on. Saving Application Settings with only ENABLE_CONSOLIDATED_PACKING_LIST ticked leaves ENABLE_MULTI_PACKING_LIST_CONVERSION off, and the button goes. | Tick ENABLE_MULTI_PACKING_LIST_CONVERSION in Application Settings. |
| The Picking Queue is empty even though sales orders are finalised | Nothing in this applet fills the queue. Rows only appear after Send to Warehouse Picking Queue is pressed on the Sales Order (Internal) applet’s Pick Pack Queue screen. | Push the orders from the sales side. |
| A picking list contains lines nobody selected, or a partly shipped order at its full quantity | Create Picking List groups by source document and copies every line of it, using the full ordered quantity rather than the queue balance. | Put only the lines you mean to ship in the cart (Add selected to picking cart), and set Qty Picked there; the packing list is built from the carts. |
| Picking reports already claimed by another active picking list | A cart row keeps its claim on the item after its list has gone to packing. | If the list it names is IN_PACKING_STATION, confirm; otherwise ask whoever holds that list. |
Every putaway row sits at PENDING_ALLOCATION | The container has no layout node, so none could be planned. | Allocate the container to a layout node first (Space Container Allocation), or create the layout nodes the warehouse is missing. |
| Scanning a container or a space finds nothing | The lookups match the container’s and the node’s scan code exactly and take the first result. A container or node saved without a scan code can never be found. | Populate the scan code on the container and on the node. |
| Duplicate container/space links | The create screen checks for an existing link and an existing allocation before saving. | Review the existing link rather than creating a second one. |
| “Customers are not the same for consolidated DO” | Create DO consolidates several packing lists into one Delivery Order and requires every selected header to have the same customer entity. | Select packing lists for one customer, or use Batch Process DO. |
| A consolidated Delivery Order is missing lines | Only packing list lines whose packing status is PACKED are carried into the conversion. | Scan the remaining lines into the packed list first. |
| “Financial Item not found.” / “WMS Item not found.” on a cart scan | The scanned container line points at an item that no longer resolves. | Check the container’s contents; re-create the container allocation for the correct item. |
| A cart scan of a container holding inventory items fails with an error, though the items exist | For a container line that points at an inventory item rather than a financial item, the lookup is made with the financial-item reference, which that line does not carry — so it fails whatever the item (read from the code, not tried). | Receive goods that will be picked against financial items, so their containers carry a financial-item reference. |
Scans on a Scan Session stay UNPROCESSED, or turn PROCESSED and nothing is slotted | The screen only queues scans. A background job does the slotting, only when the Scheduler applet runs it, and it recognises codes only by the Node_ / Container_ text in them. | See Scan Session. |
| The Processing Queue shows every line of a receiving document twice, with two sets of containers | FINAL was pressed again on a document that was already FINAL; each press creates the rows again. | Check the posting status before pressing FINAL in the editor. Clear the duplicate rows and containers by hand. |
| Pressing Scan on Add to Cart Scan or Packed Product does nothing | Neither scan-mode setting of that pair is on, or (in container-and-item mode) a field is still empty. | Turn on one scan mode in Application Settings › Outbound Settings; fill every field before scanning. |
| Supplier not linked to branch or Customer not linked to branch when picking an account | ENABLE_BRANCH_FILTER is on in the applet’s settings record. | Link the supplier or customer to a branch, or clear the key. |
| Voiding a sales order leaves an orphan picking list | The void processor only cleans up while the picking list is PENDING_PICKING; after it is sent to packing nothing is removed, and it never touches the warehouse Picking Queue. | Delete the picking or packing list manually, and clear the stale warehouse queue row. |
Related documentation
- Inventory module — where this applet sits.
- Stock Transfer and Delivery Order (Internal) — the applets that finalise what this one drafts.
- Sales Order (Internal) — the upstream applet that feeds the Picking Queue.