Skip to main content

By Location tab

The By Location tab is the first tab of the Balances screen. It shows one row for each balance: one SKU and lot, in one location, in one container (or loose), for one owner. The form is inventory_balance_list. The data object is inventory_balance, over the view inventory_balance_atp. The list is read by the API method list_inventory_balance.

Click a row to open the Move stock document for that balance. The click is a SelfSwap to the form balance_move_doc.

Columns​

Every column is read only. Quick filter means the column has a quick filter box in the filter bar.

LabelColumnTypeFilterQuick filterShown at firstWhat it shows
IDidWhole numberNumberNoNoThe id of the balance row.
SKU Descriptionsku_descrTextNoneNoNoThe description of the SKU (sku.descr). It feeds the SKU cell, which shows the description under the code.
LocationlocationText, up to 20 charactersTextYesYesThe location code.
ContainerlpnTextTextNoYesThe code of the container (LPN). Empty for loose stock. Drawn with a glyph for the container type.
SKUsku_codeText, up to 50 charactersTextYesYesThe SKU code.
LotlotText, up to 10 charactersTextNoYesThe lot.
QtyqtyDecimalNumberNoYesThe quantity in the row.
Allocqty_allocatedDecimalNumberNoYesThe part promised to orders and not yet picked. Never more than Qty.
ATPatpDecimalNumberNoYesAvailable to promise. See ATP.
Ownerowner_idWhole numberNumberYesYesShown as the owner code.
Last movemod_whenDate and timeDateNoYesWhen the row was last changed.
Statushold_statusTextTextNoYesOn hold when any hold that is on applies to the row. Empty when no hold applies.
Hold reasonhold_detailTextTextNoYesThe code of the hold and what it is fixed to, for example QcQuarantine · Container. Empty when no hold applies.

Sources: the form list in crates/libs/wms-lib-sql/sql/wms-meta-ui/migrations/001_baseline.sql (form inventory_balance_list); the view in crates/libs/wms-lib-sql/sql/wms-app/migrations/011_a_hold_says_what_it_forbids.sql:77-155; the table inventory_balances in 001_baseline.sql of the same folder.

Widths of the columns in the table: inventory_balances.lot is varchar(10) and location is varchar(20) (widened by wms-app migration 089); sku_code is varchar(50). qty, qty_allocated and qty_picked are double precision. A balance row must have 0 <= qty_allocated <= qty (database check chk_inv_bal_qty_allocated).

What each column affects​

Qty, Alloc, ATP​

  • Alloc is raised by allocation of orders and lowered by picking. This screen does not change it.
  • ATP is computed, not stored. It is 0 for a row under a hold that blocks taking stock out.

Status and Hold reason​

  • Both come from the table inventory_hold. A hold applies to a row when it names the row's lot, its location, or the code of its container. See Placing a hold.
  • If several holds apply, Hold reason shows one. The order is: a hold on the container first, then on the lot, then on the location (011_a_hold_says_what_it_forbids.sql:123-141).
  • Status is On hold even for a hold whose code does not block anything. ATP is not lowered for such a hold.

Last move​

  • It is the column mod_when of the balance row. Any change of the row (quantity, allocation) updates it.

Row click​

A click on a row opens Move stock. The document needs the row's location, SKU, lot, owner and container, and the quantities shown above. They are read from the row when you click and kept in the session (crates/services/web-ui-server/src/extensions/customization/balance/move_action.rs:55-63).

Not confirmed by code: what the Move stock document does for a balance whose container is InTransit, Empty or in another unusual status. The list does not filter by container status. To verify: click a row whose container is InTransit and press Move; read the message.

  • Balances screen
  • Move stock
  • On Hold tab
  • API: list_inventory_balance, count_inventory_balance
  • RF terminal: Inventory > Stock inquiry (INVINQ01 to INVINQ03), Inventory > Move stock (INVMOV01 to INVMOV04)