Skip to main content

Policy Reference - Index

This folder lists every setting that changes what the warehouse system does. For each setting it says where to find it on the screen, what it is called in the database, what it does, which code reads it, and what happens to documents and stock when you change it.

Use it in two ways:

  • "What does this setting do?" Go to the file of the policy family (table 1).
  • "Why did the system do this?" Follow the flow in section 2. It names the policy that decides at each stage, from receiving to packing.

All statements come from the code and the database migrations of this repository. Paths such as wms-inbound/src/... are under crates/libs/.

1. The policy families​

FamilyOne lineFile
Receipt policyHow strict receiving is: LPN needed, SKU not on the ASN, over and short receipts, pack multiples, dates.40-receipt-policy-settings.md
Receiving rules around the policySupervisor rights and grants, closing with a discrepancy, damage, returns, blind receipts, auto holds.40-receipt-policy-settings.md sections 5 to 8
Owner configurationPer-owner defaults: policies, locations, units, damage actions, LPN rules, label printing.41-owner-settings-and-policy-resolution.md
Policy resolutionFor every policy: SKU, then owner, then what is left. One table.41-owner-settings-and-policy-resolution.md Part A
SKU-level settingsThe columns on the SKU that pick a policy or override a rule.34-sku-level-settings.md
System settingsWarehouse-wide keys: close with discrepancy, audit, move rules, time-outs, tasks, label renderer.42-system-settings.md
Dashboard settingsThe Control Center rail, thresholds, demo figures, expiry horizon.42-system-settings.md section 5
Printing and labelsPrinter assignment order, renderer address, auto-print.42-system-settings.md section 6
Hold codesWhat a hold forbids: putting, taking, or both; strict or confirmable.43-reason-codes-and-holds.md section 2
Reason listsAdjustment, shortage, quantity-adjust, damage reasons.43-reason-codes-and-holds.md sections 3 to 6
ReturnsReturn conditions and where each goes.43-reason-codes-and-holds.md section 7 and file 40 section 8.2
Handling unit typesBoxes, totes, carts: what each flag changes.43-reason-codes-and-holds.md section 8
PutawayPolicy, steps, conditions, zones, locations.00-putaway-overview.md, 01-putaway-policy-steps-and-criteria.md, 02-putaway-zone-settings.md, 03-location-settings.md
AllocationWhich stock an order line reserves, in which order.10-allocation-overview.md, 11-allocation-policy-steps-and-criteria.md
WavesWhich orders go together and when they are released.12-wave-overview.md, 13-wave-policy-settings.md
PickingPicking policy, work areas, equipment, operator rights, pick-short reasons, counts.20-picking-overview.md, 21-picking-policy-settings.md, 22-work-areas-equipment-and-permissions.md, 23-pick-short-reasons.md, 24-inventory-count-policy.md
CartonizationWhich boxes to use and how to pack the picks into them.30-cartonization-overview.md, 31-cartonization-policy-settings.md
Lot policyLot dates, attributes, when a new lot is made.32-lot-policy-and-attributes.md
Serial rulesSerial tracking per SKU.33-serial-configuration.md
ReplenishmentPlaceholder only. No engine exists.35-replenishment-status.md

2. What decides what: from receipt to shipment​

Each row is a stage. "Decided by" is the setting or policy that changes the result. "Looked up from" says where the server finds it.

#StageWhat happensDecided byLooked up fromFiles
1ReceiveThe operator receives goods against an ASN, blind, or as a return. The server accepts, asks a question, or refuses.Receipt policy; owner flags; SKU hold, shelf-life and temperature fields; lot policy; serial rules; hold codes on the destinationSKU receipt_policy_id (the owner default is never reached today)40, 32, 33, 34, 43
2Close the receiptThe receipt closes, or a discrepancy needs a supervisor.system setting ALLOW_CLOSE_WITH_DISCREPANCY; supervisor right receipt.override_close_discrepancysystem setting40 section 7, 42
3PutawayThe system suggests a location for the LPN.Putaway policy (steps, conditions); zone and location settings; owner reservation timeSKU putaway_policy_id, then owner default00 to 03, 41
4Stock becomes availableHolds, lot dates and location status decide if stock can be reserved.Hold codes (taking direction); location statushold code table43
5AllocationAn order line reserves stock.Allocation policySKU allocation_policy_id, then owner default, when the order line is created; then frozen on the line10, 11, 41
6WaveOrders are grouped and released.Wave policychosen by the user or the schedule12, 13
7PickingTasks are given to operators; the picker confirms or shorts.Picking policy; work area; equipment profile; pick-short reasons; task system settingswork area and equipment, then work area default, then DISCRETE20 to 24, 42
8CartonizationPicks are planned into boxes.Cartonization policy; pack hierarchy flags; handling unit typesSKU cartonization_policy_id, then owner default; none means no plan30, 31, 43 section 8
9Packing and shipping labelThe packer closes a carton; the shipping label prints.the carton plan; the work area's pack station; printer assignment; label rendererpack station of the work area; printer: zone, user, owner, warehouse22, 42 section 6

Packing and shipping have no policy of their own. They follow the carton plan, the pack station of the work area and the printing rules.

Two things run across all stages:

  • Holds (file 43) are checked at receive, putaway, move, allocation and picking.
  • Supervisor rights (file 40 section 5) are needed for quantity overrides and for closing a receipt with a discrepancy.

3. How to read a setting entry​

Every setting, field, key or code value is described with the same items. An item that does not apply is left out. If a setting is stored but nothing reads it, the entry says Stored only. It has no effect today.

ItemWhat it tells you
UI labelThe exact English label on the screen and the menu path, for example Sidebar > Policy > Receipt Policy, tab General, field Receipt Without LPN. For settings without a screen: API only and the method name (for example update_owner_config).
Column / keyThe database table and column, or the system_settings key.
Type and rangeThe data type, the allowed values, minimum and maximum, and whether it can be empty.
DefaultThe default in the database schema, and the value in the seed data (the rows a new database is created with).
MeaningWhat the setting is for, in plain words.
AffectsThe process, screen or message the setting changes, and the source file and line where the code reads it (path:line).
MessageThe exact text the user sees when the setting makes the system refuse or ask. <x> is a value filled in at run time.
ExampleA number or a short scenario.
InteractionsWhich other setting or level wins when two disagree.
When emptyWhat happens when the value is empty or the row does not exist.
When you change itWhat happens to documents and stock that already exist. In most cases: nothing is rewritten, and the next command uses the new value.

Terms:

  • Stored only means: the value is saved and shown, but a search over the whole code base finds no code that uses it to decide anything.
  • Confirmable (or overridable) means the operator can answer "yes, go on". A confirmable refusal is a question. A final refusal cannot be answered.
  • Capability means a permission of type api in the role table, for example receipt.override_qty_shortage.
  • Cascade of policies means: the first level that has a value wins. The levels are written left to right.

4. Counts​

FileSettings documentedOf them stored only
4026 receipt policy columns, plus the receiving rules around them15
4142 owner settings, plus 23 lookup chains (10 policy chains, 13 other chains)20
4220 system settings keys, 4 dashboard board settings (rail, demo, plan, horizon), 4 threshold fields, 6 printing items, 7 constants4 zone printer fields; 5 printer configuration fields
4316 hold codes with 8 fields each, 11 adjustment reasons, 5 shortage reasons, 5 quantity-adjust reasons, 18 damage reasons, 4 severities, 3 damage actions of the screen (7 in the database), 3 dispositions, 4 return conditions, 17 handling unit type fieldsrank, shippable, return_inspection, tare_weight, tracking, lot_hold_code, target_disposition, return_reason_code

5. Known problems found while writing this reference​

The full list with file and line is at the end of each file. The most important ones:

  1. The owner default receipt policy is never used. sku.receipt_policy_id cannot be empty (file 40 section 1.1, file 41 A.2).
  2. Availability ignores Enforce and Overridable of a hold code (file 43 note A).
  3. 15 of 26 receipt policy columns and 20 of 42 owner settings do nothing.
  4. Four owner damage actions are accepted but do nothing (file 40 section 8.1).
  5. return_reason_code is required by the return commands and thrown away (file 43 section 7.2).
  6. Time-out keys accepted 0, which means "wait for ever". Fixed (P-13, commit 420b6746a): a lock time-out of 0 or less is read as 5000 ms (file 42 section 1.1).

See also the shorter guides one level up: ../05-inbound-setup.md, ../06-outbound-setup.md, ../07-printing-and-labels.md, ../04-owners-sku-uom-pack-hierarchy.md.