Skip to main content

Handling unit types

A handling unit is a reusable carrier: a tote, a pallet, a cart. A handling unit type describes a kind of carrier: its size, whether it holds goods or other carriers, and whether it comes back. The list of types is common to all warehouses. Individual carriers of a type (the units, with their own codes) are registered later in the warehouse sidebar.

How to open it​

  1. Switch to Enterprise. See Enterprise sidebar.
  2. Open Configuration > Handling Unit Types.

The menu item is handling_unit_type_menu. It opens the list handling_unit_type_list_form. The card is handling_unit_type_normal_form. The data object is handling_unit_type (table enterprise.handling_unit_type). The screens come from the migration 080_handling_unit_screens.sql.

The list​

LabelColumnTypeVisibleWhat it shows
IDidWhole numberNoThe type id.
CodecodeTextYesThe code of the type.
NamenameTextYesThe name.
ActiveactiveYes/NoYesWhether new units may be registered and used.
Inventoryholds_inventoryYes/NoYesWhether the carrier holds goods.
Containersholds_containersYes/NoYesWhether the carrier holds other carriers.
ReturnablereturnableYes/NoYesWhether the carrier comes back.
Usage Policydefault_usage_policyTextYesOwnOnly, WarehouseShared, or empty.
Prefixcode_prefixTextYesThe prefix of unit codes.

All columns are read only.

ButtonWhat it doesTask page
NewOpens an empty card in place of the list (generic_new).Creating a handling unit type
RefreshReads the list again (generic_refresh).

Click a row to open its card in place of the list.

The card​

The card has one button, Save. It saves and goes back to the list (generic_save). There is no delete: the API has no delete method for types. To retire a type, switch Active off.

LabelColumnTypeRequiredAllowed values and defaultWhat it does
CodecodeText, up to 30 characters. Unique.YesAny text.The stable key of the type. It cannot be changed after the first save.
NamenameText, up to 200 charactersYesAny text.The name.
ActiveactiveCheck boxNoOn by default.An inactive type is refused when registering units and when a unit is bound as a carrier or a box (crates/libs/wms-inventory/src/domain/handling_unit/aggregate.rs:40, crates/libs/wms-outbound/src/picking/carrier/select.rs:47, crates/libs/wms-outbound/src/picking/target/bind.rs:160).
Holds Inventoryholds_inventoryCheck boxNoOn by default.A unit of a type that holds no inventory, or that holds containers, cannot take goods directly when binding a box (crates/libs/wms-outbound/src/picking/target/bind.rs:163).
Holds Containersholds_containersCheck boxNoOff by default.Makes the type a carrier of other units, such as a cart. Needed for Positions.
PositionspositionsWhole numberNoEmpty, or 1 or more. Allowed only when Holds Containers is on.The number of places on the carrier. A carrier is accepted for an assignment only when its type holds containers and has positions (select.rs:50).
ShippableshippableCheck boxNoOff by default.Stored only. It has no effect today.
ReturnablereturnableCheck boxNoOn by default.A unit registered from a returnable type is marked reusable; otherwise it is marked disposable (aggregate.rs:55).
Inspect on Returnreturn_inspectionCheck boxNoOff by default.Stored only. It has no effect today.
Default Usage Policydefault_usage_policyDrop-downNoOwnOnly, WarehouseShared, or empty.Who may use a unit by default. Empty means: decided by the owner of the unit. A unit owned by the warehouse is shared; a unit owned by a client is for that client only (aggregate.rs:65). A single unit can override it.
Inner Lengthinner_lengthDecimalNo0 or more. 0 by default.Inner size. Used to check that a planned box fits the carrier. 0 means "unknown" and skips the check (crates/libs/wms-lib-core/src/model/handling_unit/fit.rs:35).
Inner Widthinner_widthDecimalNo0 or more. 0 by default.As above.
Inner Heightinner_heightDecimalNo0 or more. 0 by default.As above.
Max Gross Weightmax_gross_weightDecimalNo0 or more. 0 by default.The heaviest allowed load. Used in the same fit check. 0 means unknown.
Tare Weighttare_weightDecimalNo0 or more. 0 by default.Stored only. It has no effect today.
Code Prefixcode_prefixText, up to 10 charactersNoCapital letters A to Z and digits only, 1 to 10 of them.The start of the code of each unit registered from this type. Empty gives the prefix HU.

The column tracking has no field. It is set to ByInstance, the only value: each unit is told apart by its own code, not counted as a quantity.

Rules the database enforces​

RuleMessage when broken
Positions needs Holds Containers on, and must be at least 1A check-constraint error naming ck_hut_positions.
The type must hold goods, containers, or bothck_hut_holds_something.
Sizes and weights cannot be negativeck_hut_physics_not_negative.
Code Prefix is 1 to 10 capital letters and digitsck_hut_code_prefix.
Code is uniqueDuplicate entry on handling_unit_type (constraint ...).

Source: crates/libs/wms-lib-sql/sql/wms-enterprise/migrations/012_handling_unit_type.sql.

Not confirmed by code: the units of Inner Length, Inner Width, Inner Height, Max Gross Weight and Tare Weight. The screen does not name them. The fit check compares them with the sizes of cartonization boxes. To verify: read the units of the cartonization policy boxes you use, and enter the type sizes in the same units.

Not confirmed by code: the exact text shown when a check constraint is broken on Save. To verify: save a type with Positions 6 and Holds Containers off.

What it affects​

  • Registering units. A unit is made from an active type, 1 to 500 at a time, with codes made from the prefix (aggregate.rs:7).
  • Picking. A carrier or box must be of an active type that fits what the cartonization plan asks for.

Who can use it​

The API methods create_handling_unit_type and update_handling_unit_type are open to the default roles ADMIN and MANAGER. list_handling_unit_type, get_handling_unit_type and count_handling_unit_type are open to ADMIN, MANAGER, SUPERVISOR, OPERATOR and VIEWER (crates/services/app-server/src/web/rpcs/handling_unit_type_rpc.rs:7). In Enterprise only ADMIN reaches the screen.