Skip to main content

Holds list

The Holds screen lists the holds that are on now. A hold blocks or marks stock without changing its quantity. A hold is fixed to one lot, one location or one container. The form is inventory_hold_list. The data object is inventory_hold, over the view inventory_hold_detail. The list is read by list_inventory_hold_detail.

How to open it​

  1. Sign in and select a warehouse.
  2. In the left sidebar open Inventory Balances.
  3. Click Holds.

The sidebar item is inventory_hold_list_menu (tab tab_inventory_hold_list).

What the screen has​

PartWhat it is
ToolbarNew Hold and Release. Release is enabled for one selected active hold when the role may run the command.
GridOne row for each hold that is on.
Row clickOpens the hold form for that hold (SelfSwap to hold_form).

A hold is released by the list's Release action, by the hold cascade of a stock move, by the write-off of damaged goods in receiving (crates/libs/wms-inbound/src/service/receipt/damage/write_off_damage.rs:142), or by the auto-release sweeper. See Placing a hold.

Columns​

All columns are read only. The list only has holds with is_hold_on true; a released hold disappears.

LabelColumnTypeFilterQuick filterWhat it shows
Hold #idWhole numberNumberNoThe id of the hold.
CodecodeTextTextYesThe reason code, for example QcQuarantine.
ScopescopeTextTextNoLot, Container or Location: what the hold is fixed to.
TargettargetTextTextYesThe code of the lot, container or location.
QtyqtyDecimalNumberNoThe sum of qty of the balance rows the hold covers. See below.
Starteddate_onDate and timeDateNoWhen the hold was placed.
Auto-releaseauto_release_dateDate and timeDateNoWhen the hold ends by itself. Empty means there is no schedule.
Bywho_onWhole number, shown as a user nameNumberNoWho placed the hold.
ReasoncommentsTextTextNoThe free text typed when the hold was placed.

Sources: view inventory_hold_detail in crates/libs/wms-lib-sql/sql/wms-app/migrations/001_baseline.sql:2673-2698; optional schedule migration 20261026110000_inventory_hold_has_an_optional_release_schedule.sql; placement in crates/libs/wms-inventory/src/service/hold.rs.

What each column affects​

Scope and Target​

  • The view tests lot first, then lpn, then loc. A hold row has exactly one of them (Placing a hold enforces it for holds made by hand).

Qty​

  • It adds up inventory_balances.qty for every balance row that matches the hold: the same lot code, or the same location, or the container with that code.
  • A hold on a lot counts every SKU and every owner that uses the same lot code, because a hold names the lot code only.

Auto-release​

  • Set or clear the schedule on the hold form. An empty schedule is stored as NULL and the list leaves the cell empty.
  • The date-time picker interprets the entry in the warehouse user's timezone and sends the absolute UTC instant.
  • A loop in the application server checks every 5 minutes. Once the instant is due, it uses the same idempotent domain release as the list action, records date_off and who_off, preserves audit/event hooks, and adds release: auto-release (expired) to the comments.

Who can use it​

Reading the list: ADMIN, MANAGER, SUPERVISOR, OPERATOR, VIEWER. New Hold: ADMIN and MANAGER only. See Who can do what.