màj wiki avec retour MES lot-5 AD
This commit is contained in:
@@ -0,0 +1,93 @@
|
||||
---
|
||||
title: "Account / Owner"
|
||||
type: concept
|
||||
sources:
|
||||
- areas/inventory_management/masters/accounts.md
|
||||
- areas/inventory_management/owners.md
|
||||
- areas/inventory_management/mixing_owners.md
|
||||
- areas/inventory_management/views/view_accounts.md
|
||||
- areas/inventory_management/views/view_owners.md
|
||||
related:
|
||||
- concepts/stock.md
|
||||
- concepts/order-outbound.md
|
||||
- concepts/order-inbound.md
|
||||
- modules/billing-3pl.md
|
||||
- modules/3pl-portal.md
|
||||
- modules/owner-extensions.md
|
||||
- concepts/erp-interface.md
|
||||
last_compiled: "2026-04-10"
|
||||
---
|
||||
|
||||
# Account / Owner
|
||||
|
||||
## Overview
|
||||
|
||||
EasyWMS uses two related but distinct entities for commercial master data: **Owner** and **Account**.
|
||||
|
||||
- An **Owner** is the entity that owns the stock in the warehouse (a sales company, the organization itself, or — in 3PL contexts — an external client). Every stock record has an owner. Owners can mix stock with each other only when mixing is explicitly enabled.
|
||||
|
||||
- An **Account** is a delivery point / customer of the warehouse — the entity to which a shipping order's stock is destined. Accounts represent end-customers or delivery addresses; they are referenced on outbound orders to control carrier preferences, label formats, and FEFO rules.
|
||||
|
||||
The two are distinct: an owner holds inventory rights; an account receives shipments. A single owner can have many accounts (multiple delivery points). In 3PL deployments with Owner Extensions enabled, every receipt order, shipping order, and master data entity must be assigned to an owner.
|
||||
|
||||
---
|
||||
|
||||
## Owner Attributes
|
||||
|
||||
| Property | Description |
|
||||
|----------|-------------|
|
||||
| Code | Unique identifier (prefixes all owned master data when Owner Extensions active) |
|
||||
| Description | Descriptive text |
|
||||
| Allow mixing | Whether this owner's stock can be mixed with other owners' stock in the same location |
|
||||
| User group | User group with permission to work with this owner (required for 3PL Portal) |
|
||||
| Address / Contact | Owner address and contact data |
|
||||
|
||||
### Owner mixing rules
|
||||
By default, new owners are created with mixing **disabled**. Mixing can be enabled per owner. Additionally, specific owner exclusions can be added (preventing mixing with specific other owners). Mixing checks apply to: items, item types, item families, logistic attributes, and owners simultaneously.
|
||||
|
||||
In **automatic warehouses**, mixing restrictions are hard-enforced — the system will not allow a container to be stored if mixing rules are violated. In **manual warehouses**, operators can override mixing warnings.
|
||||
|
||||
---
|
||||
|
||||
## Account Attributes
|
||||
|
||||
| Property | Description |
|
||||
|----------|-------------|
|
||||
| Name | Unique name |
|
||||
| Type | Account type (configurable) |
|
||||
| Owner | Mandatory when Owner Extensions module is active |
|
||||
| Company | Company the account belongs to |
|
||||
| Preferred carrier | Informational only |
|
||||
| Client label report | Custom label format printed on dock unload for this account's client containers |
|
||||
| Client delivery note report | Custom delivery note printed on dock unload |
|
||||
| Use strict FEFO | Forces strict FEFO (first-expired-first-out) stock assignment for this account's orders; orders using this flag cannot be grouped/batched with other orders |
|
||||
|
||||
---
|
||||
|
||||
## ERP Integration
|
||||
|
||||
| Message | Direction | Description |
|
||||
|---------|-----------|-------------|
|
||||
| OWN | ERP→WMS | Create/update owner master data |
|
||||
| ACC | ERP→WMS | Create/update account master data |
|
||||
|
||||
---
|
||||
|
||||
## Interface
|
||||
|
||||
| Path | Equipment | Description |
|
||||
|------|-----------|-------------|
|
||||
| `Masters > Third party > Owners` | PC | View and manage owners |
|
||||
| `Masters > Third party > Accounts` | PC | View and manage accounts |
|
||||
|
||||
---
|
||||
|
||||
## Related
|
||||
|
||||
- [[stock]] — every stock record has an owner; owner mixing rules determine co-location eligibility
|
||||
- [[order-outbound]] — shipping orders reference accounts (delivery destination) and can reference owner
|
||||
- [[order-inbound]] — receipt orders reference owners when Owner Extensions is active
|
||||
- [[owner-extensions]] — prerequisite module for mandatory owner assignment; enables per-owner data isolation
|
||||
- [[billing-3pl]] — 3PL billing contracts are created per owner
|
||||
- [[3pl-portal]] — 3PL portal access is filtered per owner; user group assignment controls visibility
|
||||
- [[erp-interface]] — OWN and ACC messages manage owner/account master data from ERP
|
||||
@@ -0,0 +1,100 @@
|
||||
---
|
||||
title: "Carrier"
|
||||
type: concept
|
||||
sources:
|
||||
- areas/multi_carrier_shipping/multicarrier_admin/views/view_extended_carriers.md
|
||||
- areas/multi_carrier_shipping/multicarrier_admin/views/view_deliveries.md
|
||||
- areas/multi_carrier_shipping/multicarrier_admin/packing_supported_services.md
|
||||
- areas/multi_carrier_shipping/multicarrier_admin/packing_printing.md
|
||||
related:
|
||||
- concepts/shipping.md
|
||||
- concepts/order-outbound.md
|
||||
- concepts/labels.md
|
||||
- modules/multi-carrier.md
|
||||
- concepts/erp-interface.md
|
||||
- modules/yard-management.md
|
||||
last_compiled: "2026-04-10"
|
||||
---
|
||||
|
||||
# Carrier
|
||||
|
||||
## Overview
|
||||
|
||||
A **carrier** in EasyWMS is the transport company that delivers outbound shipments to accounts. At the basic level, the carrier is a master data entity with a code and preferred assignment on shipping orders. When the **Multi-Carrier Shipping module** is active, carriers become **extended carriers** with a full set of integration attributes (label formats, tracking code generation, packaging workflows, staging docks, etc.).
|
||||
|
||||
---
|
||||
|
||||
## Base Carrier Attributes
|
||||
|
||||
| Property | Description |
|
||||
|----------|-------------|
|
||||
| Code | Unique identifier |
|
||||
| Name | Descriptive name |
|
||||
| Account (preferred) | Optional preferred carrier for an account (informational) |
|
||||
|
||||
---
|
||||
|
||||
## Extended Carrier Attributes (Multi-Carrier module)
|
||||
|
||||
| Property | Description |
|
||||
|----------|-------------|
|
||||
| Client code | Account code assigned by the carrier to the organization (provided by carrier) |
|
||||
| Stage | Mandatory stage station for loading this carrier's packages |
|
||||
| Carrier type | Carrier implementation type (standard known carrier or custom/personalized) |
|
||||
| Print label | Whether carrier label (tracking barcode) is printed during packaging |
|
||||
| Label report | Report implementing the carrier's label format (auto-filled for standard carriers) |
|
||||
| Print delivery note | Whether delivery note is printed per package |
|
||||
| Cargo manifest report | Report for cargo manifests (auto-filled for standard carriers) |
|
||||
| Weight capture | Whether package weight must be captured during packaging |
|
||||
| Ship containers | Whether containers can be shipped directly (vs. individual packages only) |
|
||||
| Packaging mode | Preferred packaging mode: ONE_PACKAGE / CHOOSE_NUM_PACKAGES / CAPTURE_STOCK |
|
||||
| Files directory | Server directory for tracking code calculation files (custom carriers only) |
|
||||
| Additional data | Carrier-specific configuration (provided by carrier) |
|
||||
| Sequence code | Sequence for tracking code generation (when required by carrier) |
|
||||
| Work process (tracking code) | Workflow for tracking code calculation (custom carriers only) |
|
||||
| Waiting time to cancel delivery | Minimum minutes before a delivery can be canceled (carrier-specific) |
|
||||
|
||||
---
|
||||
|
||||
## Carrier Selection
|
||||
|
||||
Carriers are assigned to shipping orders:
|
||||
- **Manual assignment**: via SOR ERP message (carrier field on order).
|
||||
- **Automatic selection**: Multi-Carrier auto-selection rules match order attributes (destination, weight, dimensions) to eligible carriers.
|
||||
- **Account preferred carrier**: informational default, not enforced automatically.
|
||||
|
||||
---
|
||||
|
||||
## Delivery Entity
|
||||
|
||||
When the Multi-Carrier module is active, a **Delivery** combines carrier + consignee (account address) for a specific shipment. Deliveries hold the tracking number, delivery note, package list, and carrier label. One shipping order can produce multiple deliveries (e.g., when `DlvShareDeliveries` is set on the SOR). See [Multi-Carrier](../modules/multi-carrier.md).
|
||||
|
||||
---
|
||||
|
||||
## ERP Integration
|
||||
|
||||
| Message | Direction | Description |
|
||||
|---------|-----------|-------------|
|
||||
| CAR | ERP→WMS | Create/update carrier master data |
|
||||
| RUT | ERP→WMS | Create/update route definitions (used with carriers for truck loading) |
|
||||
|
||||
---
|
||||
|
||||
## Interface
|
||||
|
||||
| Path | Equipment | Description |
|
||||
|------|-----------|-------------|
|
||||
| `Masters > Carriers` | PC | View and manage base carriers |
|
||||
| `Multi-Carrier > Extended carriers` | PC | Extended carrier attributes (Multi-Carrier module) |
|
||||
| `Multi-Carrier > Deliveries` | PC | View deliveries per carrier |
|
||||
|
||||
---
|
||||
|
||||
## Related
|
||||
|
||||
- [[shipping]] — shipping orders reference carriers; routes and loads assign containers to carriers
|
||||
- [[order-outbound]] — SOR message can include carrier assignment; carrier determines delivery structure
|
||||
- [[labels]] — carrier labels (tracking barcodes) printed during Multi-Carrier packaging
|
||||
- [[multi-carrier]] — full carrier integration: packaging stations, tracking, delivery lifecycle
|
||||
- [[yard-management]] — carrier appointments at yard checkpoints and docks
|
||||
- [[erp-interface]] — CAR message syncs carrier master; RUT message sends route data
|
||||
@@ -0,0 +1,199 @@
|
||||
---
|
||||
title: "Consolidation"
|
||||
type: concept
|
||||
sources:
|
||||
- areas/consolidation/index.md
|
||||
- areas/consolidation/consolidation_admin/consolidation_process_creation.md
|
||||
- areas/consolidation/consolidation_automatic/index.md
|
||||
- areas/consolidation/consolidation_automatic/2loc_PK_consolidation.md
|
||||
- areas/consolidation/consolidation_automatic/ManualMP_PK_consolidation.md
|
||||
- areas/consolidation/consolidation_automatic/Buffer_consolidation.md
|
||||
related:
|
||||
- concepts/container.md
|
||||
- concepts/location.md
|
||||
- concepts/stock.md
|
||||
- concepts/task.md
|
||||
- concepts/shipping.md
|
||||
last_compiled: "2026-04-10"
|
||||
---
|
||||
|
||||
# Consolidation
|
||||
|
||||
## Overview
|
||||
|
||||
**Consolidation** in EasyWMS is the process of moving stock from multiple partially-full containers into a single destination container, eliminating peaks and optimizing space usage in the warehouse. It is designed to run during **periods of inactivity**, interfering minimally with active warehouse operations.
|
||||
|
||||
Two types of consolidation exist:
|
||||
1. **Stock consolidation (warehouse)** — covered here. Compacts incomplete containers in storage to reduce the number of occupied locations.
|
||||
2. **Shipping consolidation** — reorganizes prepared stock for outbound orders (see [shipping](../concepts/shipping.md)). Not covered here.
|
||||
|
||||
Stock consolidation applies to both **manual** and **automatic** warehouses.
|
||||
|
||||
---
|
||||
|
||||
## Supported Use Cases
|
||||
|
||||
| Use case | Warehouse type | Container type |
|
||||
|---|---|---|
|
||||
| Single-reference container (one item), manual warehouse | Manual | Container with "full quantity" configured per item/container type |
|
||||
| Single-reference container (one item), automatic warehouse | Automatic | Container with "full quantity" configured per item/container type |
|
||||
| Multi-reference container with business areas, automatic warehouse | Automatic | "Full quantity" configured per business area type/container type |
|
||||
|
||||
> Stock of different item presentations is **never mixed** in a single consolidation order.
|
||||
|
||||
---
|
||||
|
||||
## Architecture: Process → Orders → Tasks
|
||||
|
||||
```
|
||||
Consolidation Process (criteria, priority, destination station)
|
||||
│
|
||||
▼ [Release]
|
||||
Consolidation Orders (N orders = N destination containers)
|
||||
│
|
||||
├── Destination consolidation task (1 per destination container)
|
||||
└── Source consolidation tasks (1 per source container)
|
||||
```
|
||||
|
||||
**Consolidation process:** A filter definition created by a user specifying which containers are candidates and where consolidation should happen.
|
||||
|
||||
**Consolidation order:** Groups source containers (to be emptied) → destination container (to receive all stock). One order = one destination.
|
||||
|
||||
**Consolidation order lines:** Each line represents one source container.
|
||||
|
||||
---
|
||||
|
||||
## Process Configuration
|
||||
|
||||
When creating a consolidation process, the user specifies:
|
||||
|
||||
### Process Definition
|
||||
| Field | Description |
|
||||
|---|---|
|
||||
| Code | Unique process identifier |
|
||||
| Priority | Determines task priority for this process's orders |
|
||||
| Maximum duration | When exceeded, no new consolidation orders are generated |
|
||||
| Maximum number of orders | Stops generating new orders when this total is reached |
|
||||
| Maximum simultaneous orders | Controls how many active orders exist at once; new ones created as old ones finish |
|
||||
|
||||
### Filtering Criteria
|
||||
| Filter | Description |
|
||||
|---|---|
|
||||
| Item | Restrict to a specific item |
|
||||
| Item type | Restrict by item type |
|
||||
| Hazard | Filter by hazard classification |
|
||||
| ABC classification | Filter by ABC rotation class |
|
||||
| Owner | Filter by stock owner |
|
||||
| Supplier | Filter by supplier |
|
||||
| Max occupation % | Skip containers whose fill % exceeds this threshold |
|
||||
|
||||
> Regardless of item filter, each consolidation order is always for the same item **and** conversion (UoM). Different item presentations are never consolidated together.
|
||||
|
||||
### Allow Mixing
|
||||
Logistic attributes that can be mixed within the same item (e.g., different lots in the same container).
|
||||
|
||||
### Destination Station
|
||||
The picking conveyor or buffer where consolidation will physically occur.
|
||||
|
||||
---
|
||||
|
||||
## Process Lifecycle
|
||||
|
||||
```
|
||||
Standby (created)
|
||||
│
|
||||
▼ [Release]
|
||||
Released ← EasyWMS evaluates and generates orders
|
||||
│
|
||||
│ [Pause]
|
||||
▼
|
||||
Paused ← can be re-released
|
||||
│
|
||||
▼ [Cancel]
|
||||
Canceled ← all associated orders, lines, and tasks canceled
|
||||
```
|
||||
|
||||
A process can only be released from **Standby** or **Paused** status.
|
||||
|
||||
---
|
||||
|
||||
## Consolidation in Automatic Warehouses
|
||||
|
||||
For automatic warehouses, consolidation is a guided, task-driven process. Containers must be extracted to a picking station.
|
||||
|
||||
### Consolidation at Picking Conveyor (2 Locations)
|
||||
|
||||
Containers arrive sequenced at the PK:
|
||||
1. **Destination container** arrives first and occupies one PK location
|
||||
2. **Source containers** arrive one by one at the second PK location
|
||||
3. Operator confirms source → destination transfer at the workstation
|
||||
|
||||
**Issues the operator can report:**
|
||||
| Issue | Result |
|
||||
|---|---|
|
||||
| Incorrect quantity in origin | Stock adjustment on source container; if less than expected, consolidation line also adjusted |
|
||||
| Item not found in origin | Consolidation order line canceled |
|
||||
| Item not found at destination | Entire consolidation order canceled |
|
||||
| Capacity exceeded at destination | Line adjusted; source remains non-empty |
|
||||
|
||||
**Transactions:**
|
||||
- `CON.MOVE` — container location changes (warehouse → PK → warehouse)
|
||||
- `STK.MOVE` — stock moved from source to destination container
|
||||
- `CON.SEND.L&F` — if empty source container is sent to Lost & Found
|
||||
|
||||
### Consolidation at Picking Conveyor with Manual Preparation Zones (MP)
|
||||
|
||||
1. All source containers arrive first at the PK and stock is extracted to MP tables
|
||||
2. Destination container arrives last; all MP stock dumped onto it
|
||||
3. Mixing of different items within the same MP table is **not allowed**
|
||||
|
||||
### Consolidation at Buffer
|
||||
|
||||
1. All source containers arrive at the buffer station first
|
||||
2. Destination container arrives last
|
||||
3. Stock movement between containers is **not guided** (no task confirmation) once containers are out of the warehouse
|
||||
|
||||
Hardware: PC + RFT (buffer consolidation supports both)
|
||||
|
||||
---
|
||||
|
||||
## Configuration Requirements
|
||||
|
||||
For consolidation to work correctly:
|
||||
1. **Full quantity must be configured** per container type, item, and unit of measure
|
||||
2. If the warehouse uses divisions: full quantity per **business area type**, container type, item, and UoM
|
||||
3. If consolidating at a picking station with preparation zones: allocation mode must be set to **Automatic**
|
||||
4. Picking station working mode must be **All Modes** or **Consolidation Only**
|
||||
|
||||
---
|
||||
|
||||
## Interface
|
||||
|
||||
| Path | Equipment |
|
||||
|---|---|
|
||||
| `Consolidation > Consolidation processes` | PC |
|
||||
| `Consolidation > Consolidation orders` | PC |
|
||||
| `Consolidation > Consolidation order lines` | PC |
|
||||
| `Warehouse > Tasks` (task monitoring) | PC |
|
||||
| `Workstations > Picking` (execution at PK) | PC |
|
||||
|
||||
---
|
||||
|
||||
## Common Errors
|
||||
|
||||
| Symptom | Cause | Solution |
|
||||
|---|---|---|
|
||||
| No consolidation orders generated after release | Full quantity not configured for item/container type | Configure "full quantity" in item/container type master |
|
||||
| Consolidation orders generated but no tasks | PK station not in "All Modes" or "Consolidation Only" | Update picking station working mode config |
|
||||
| Process stuck at maximum simultaneous orders | All slots occupied; waiting for existing orders to finish | Wait for current orders to complete or cancel stale ones |
|
||||
| Source container not empty after consolidation | Stock in another division or incident reported | Create return-to-warehouse task manually if needed |
|
||||
|
||||
---
|
||||
|
||||
## Related
|
||||
|
||||
- [[container]] — Consolidation moves stock between containers; source containers are emptied, destination receives all stock
|
||||
- [[location]] — Consolidation frees up locations by eliminating partial containers
|
||||
- [[stock]] — STK.MOVE transactions update stock records during consolidation
|
||||
- [[task]] — Consolidation generates source/destination task pairs; priority set by process priority
|
||||
- [[shipping]] — Shipping consolidation (distinct concept) reorganizes prepared stock for outbound orders
|
||||
@@ -0,0 +1,490 @@
|
||||
---
|
||||
title: "Container (LPN)"
|
||||
type: concept
|
||||
sources:
|
||||
- areas/inventory_management/containers.md
|
||||
- areas/inventory_management/containers/container_types.md
|
||||
- areas/inventory_management/containers/container_lock_types.md
|
||||
- areas/inventory_management/containers/division_types.md
|
||||
- areas/inventory_management/containers/my_containers.md
|
||||
- areas/inventory_management/containers/stacked_containers.md
|
||||
- areas/inventory_management/containers/stack_match_containers.md
|
||||
- areas/inventory_management/containers/unstack_unmatch_containers.md
|
||||
- areas/inventory_management/containers/reports/Putaway_search_location_trace.md
|
||||
- areas/inventory_management/asncontainers.md
|
||||
- areas/receptions/reception_dock/supplier_container.md
|
||||
- areas/receptions/reception_dock/blind_container.md
|
||||
- areas/TransactionTypes.md
|
||||
- sources/archives/27_Modification_sequence_SSCC.md
|
||||
- sources/archives/33_Les_poids.md
|
||||
related:
|
||||
- concepts/location.md
|
||||
- concepts/stock.md
|
||||
- concepts/reception.md
|
||||
- concepts/putaway.md
|
||||
- concepts/shipping.md
|
||||
- concepts/task.md
|
||||
- concepts/order-inbound.md
|
||||
- concepts/order-outbound.md
|
||||
- concepts/labels.md
|
||||
- concepts/transactions.md
|
||||
- concepts/erp-interface.md
|
||||
last_compiled: "2026-04-17"
|
||||
---
|
||||
|
||||
# Container (LPN)
|
||||
|
||||
## Overview
|
||||
|
||||
A **LPN** (License Plate Number) is the fundamental unit of physical storage in EasyWMS — a box, pallet, or any other container that holds stock. Every unit of stock in the warehouse lives inside a LPN; the LPN is what moves, what gets located, locked, picked, and shipped. In identification contexts, the LPN is always labeled (Code 128 or GS1-128) and its code uniquely identifies it system-wide.
|
||||
|
||||
The LPN is the bridge between the physical world (a pallet on a rack) and the logical world (stock records, tasks, orders). EasyWMS tracks every LPN's location, weight, status, contents, and relationships (stacked, matched, client-linked) in real time. All WMS movements — reception, putaway, picking, replenishment, shipping — are expressed as operations on LPNs.
|
||||
|
||||
The term "container" in EasyWMS source documentation is synonymous with LPN. The entity name in the Application Dictionary is **Container**; the UI and documentation use both terms interchangeably.
|
||||
|
||||
---
|
||||
|
||||
## Main Attributes
|
||||
|
||||
| Property | Description |
|
||||
|---|---|
|
||||
| **Code** | Unique identifier. Usually an **SSCC** (18 numeric digits per GS1 standard). Characters `&`, `<`, `>`, `` ` `` are not allowed. Validated against GS1 format if `LPN_CHECK_CODE_GS1LABEL` is active. Can be checked for uniqueness vs. station codes, locations, and item aliases via `CONTAINER_CHECK_CODE_REPEATED_FOR_LABELS`. |
|
||||
| **Type** | Physical LPN type (e.g. EuroPallet, American pallet, box). Defines dimensional and weight constraints. Configured in EasyS. |
|
||||
| **Location** | Current warehouse location where the LPN is stored. |
|
||||
| **Height** | Measured in mm. Set by: PLC/SCA gauge at PIE station, user input during reception, ASN pre-notification, or manual screen edit. Includes the max height of any LPN stacked on top. |
|
||||
| **Occupation percentage** | % of LPN capacity used by its stock. Not calculated automatically by EasyWMS — editable from the LPN view or set by the user. |
|
||||
| **Is client LPN** | Boolean. `true` if the LPN's stock is assigned to a shipping order (outbound). Drives picking, shipping, and consolidation logic. |
|
||||
| **Division type** | Internal partition configuration (see [Division Types](#division-types)). Only supported in automatic warehouses. LPNs with divisions only accept entry and picking tasks — shipping tasks are invalid. Content must be fully picked out before division LPN is used for shipping. |
|
||||
| **Status** | Current lifecycle state (see [Lifecycle & Statuses](#lifecycle--statuses)). |
|
||||
|
||||
### Weight Properties
|
||||
|
||||
EasyWMS maintains five weight values per LPN. Only **Calculated weight** is applied to capacity restrictions (location max weight, equipment max weight).
|
||||
|
||||
| Weight Property | Description |
|
||||
|---|---|
|
||||
| **Theoretical weight** | Computed: sum of stock line theoretical weights + LPN type empty weight. |
|
||||
| **Real weight** | Theoretical weight of this LPN + sum of theoretical weights of all stacked LPNs on top. |
|
||||
| **Scale weight** | Reported by WMS after LPN passes a scale (SCA), or entered manually by a user. |
|
||||
| **Theoretical scale weight** | Scale weight corrected each time stock quantity changes (recalculated from stock theoretical weight). |
|
||||
| **Calculated weight** | `max(Real weight, Theoretical scale weight)`. This is the value used for all weight-based restrictions. |
|
||||
|
||||
> 📖 For variable-weight items, PIE passage behaviour, and the complete formula walk-through see [Weights](weights.md). Note: the internal "Real weight" field in the Container entity is `max(Calculated, Theoretical Scale)` whereas the definition above (used for stacking capacity checks) aggregates stacked containers. Both are documented side-by-side in [Weights](weights.md).
|
||||
|
||||
---
|
||||
|
||||
## Types
|
||||
|
||||
### LPN Types
|
||||
|
||||
LPN types define the physical characteristics of an empty LPN. Configured in the **EasyS** tool, not in the WMS UI.
|
||||
|
||||
| Attribute | Unit | Description |
|
||||
|---|---|---|
|
||||
| Length | mm | Bottom length of the LPN |
|
||||
| Width | mm | Width of the empty LPN |
|
||||
| Height (empty) | mm | Height when the LPN is out of stock |
|
||||
| Maximum height | mm | Max height the LPN can reach when loaded with stock |
|
||||
| Weight (empty) | kg | Weight of the empty LPN |
|
||||
| Maximum weight | kg | Max safe weight when loaded |
|
||||
| Collapse | mm | Max width deviation due to load collapse. Effective width = Width + 2 × Collapse. |
|
||||
|
||||
The collapse parameter matters for automatic warehouse location sizing — the system checks effective width when searching for a putaway location.
|
||||
|
||||
**UI path:** EasyS tool (not EasyWMS web UI).
|
||||
|
||||
### Division Types
|
||||
|
||||
Storage LPNs can have **internal partitions** (divisions). Used to optimize space and organize stock by item within a single physical LPN. Only supported in **automatic warehouses**.
|
||||
|
||||
| Attribute | Description |
|
||||
|---|---|
|
||||
| Name | Unique identifier for the division type |
|
||||
| Description | Free text |
|
||||
| Columns | Number of column partitions |
|
||||
| Rows | Number of row partitions |
|
||||
| Section | Section assignment within the division |
|
||||
|
||||
Rules:
|
||||
- LPNs with divisions only allow entry and picking tasks. Shipping tasks are not valid.
|
||||
- Contents must be picked out before the LPN can be considered empty.
|
||||
- Division type can only be modified or removed from an **empty** LPN.
|
||||
|
||||
**UI path (web):** `Masters > Division LPN types`
|
||||
|
||||
### Client vs. Non-Client LPN
|
||||
|
||||
A critical distinction throughout EasyWMS:
|
||||
- **Non-client LPN**: Holds stock available for general warehouse use (putaway, replenishment, picking source).
|
||||
- **Client LPN**: Stock has been assigned to a shipping order. The LPN is "committed" to a specific outbound flow. Stacking/matching rules differ between client and non-client LPNs.
|
||||
|
||||
---
|
||||
|
||||
## Lifecycle & Statuses
|
||||
|
||||
LPN status tracks the full journey from pre-notification through shipment:
|
||||
|
||||
```
|
||||
[ERP pre-notifies ASN]
|
||||
↓
|
||||
PENDING RECEIPT ← LPN in virtual ASN location, not yet physically received
|
||||
↓
|
||||
[Reception process]
|
||||
↓
|
||||
AVAILABLE ← LPN in warehouse, free to use for any process
|
||||
↓
|
||||
[Picking/consolidation starts]
|
||||
↓
|
||||
IN PREPARATION ← LPN being received, client LPN being prepared, or in consolidation
|
||||
↓
|
||||
[Picking complete]
|
||||
↓
|
||||
PREPARED ← Client LPN picked but not yet ready for loading
|
||||
↓
|
||||
[Moved to shipping stage]
|
||||
↓
|
||||
READY FOR SHIPPING ← Client LPN in shipping stage awaiting truck load
|
||||
↓
|
||||
[Truck loading]
|
||||
↓
|
||||
LOADED ← Included in a load but not yet departed
|
||||
↓
|
||||
[Truck departs]
|
||||
↓
|
||||
SHIPPED ← LPN has left the warehouse
|
||||
```
|
||||
|
||||
**Note**: The "In preparation" status also covers LPNs currently on equipment during any movement task.
|
||||
|
||||
---
|
||||
|
||||
## Stacking and Matching
|
||||
|
||||
EasyWMS supports two forms of LPN grouping to reduce storage and transport costs:
|
||||
|
||||
| Relationship | Axis | Description |
|
||||
|---|---|---|
|
||||
| **Stacking** | Vertical | LPNs stacked on top of each other. A hierarchy is established: base LPN → stacked LPN(s). |
|
||||
| **Matching** | Horizontal | LPNs aligned side by side. Uses a **slave/dummy LPN** as the logical container. |
|
||||
|
||||
### Stacking Rules
|
||||
|
||||
- LPNs must all be client type OR all non-client type.
|
||||
- If client LPNs, they must all be for the same shipping order or for different orders on the same route stop.
|
||||
- If a shipping order specifies a required LPN type, only client LPNs of that type can be stacked.
|
||||
- Stacking relationships between LPN types must be configured in **EasyS** (how many LPNs of type X can stack on type Y).
|
||||
- Supported location types for stack/match: Shelves (conventional/rack), Buffer, Stage, Dock, Lost & Found.
|
||||
|
||||
### End Location for Stacking
|
||||
|
||||
| LPN type | Location type | Behavior |
|
||||
|---|---|---|
|
||||
| Client LPN | Floor (buffer/stage/dock) | End location not requested; stays at base LPN location |
|
||||
| Non-client LPN | Floor (buffer/stage/dock) | Controlled by `ASK_FINAL_STACK_LOCATION` parameter |
|
||||
| Any | Shelves / virtual | Operator must always specify end location |
|
||||
|
||||
### Matching (Slave LPN)
|
||||
|
||||
Slave/dummy LPN configuration at equipment level:
|
||||
- **With slave**: always uses a slave LPN
|
||||
- **No slave**: never uses a slave LPN
|
||||
- **Ask slave** (default): asks the operator each time
|
||||
|
||||
### Unstacking
|
||||
|
||||
- Cannot unstack base LPN from locations with FIFO configuration or rack type (when different LPN types are above).
|
||||
- `UNSTACK_ON_STAGE` parameter: if `true`, forces unstacking to happen at a stage (both unstacked and remaining set land at the stage).
|
||||
- **Undo all**: breaks all stacking/matching relationships in a set at once; all LPNs are placed loose in a buffer location.
|
||||
|
||||
---
|
||||
|
||||
## Lock Types
|
||||
|
||||
Locks restrict what operations can be performed on a LPN. Multiple locks can be applied simultaneously unless a lock is marked **Exclusive** (in which case it cannot coexist with other locks).
|
||||
|
||||
### Lock Properties
|
||||
|
||||
| Property | Description |
|
||||
|---|---|
|
||||
| Description | Text describing the physical reason (e.g., "broken wood", "stock misplaced") |
|
||||
| Exclusive | If enabled, no other lock type can be active at the same time |
|
||||
| Allow picking | If active, picking is allowed |
|
||||
| Allow shipping | If active, shipping is allowed |
|
||||
| Allow putaway | If active, putaway is allowed |
|
||||
| Allow counting | If active, counting is allowed |
|
||||
| Allow moving | If active, physical movement is allowed |
|
||||
| Allow replenishment | If active, replenishment is allowed |
|
||||
| Allow reserving | If active, stock reservation is allowed |
|
||||
| Allow internal consumption | If active, LPN can be consumed in manufacturing |
|
||||
|
||||
### Cascade Effects When Locking
|
||||
|
||||
When a lock is applied that restricts a specific operation, EasyWMS automatically cascades the impact to in-progress tasks:
|
||||
|
||||
**Lock does not allow replenishment:**
|
||||
- All replenishment source assignments for this LPN's stock are canceled.
|
||||
- Picking tasks that used this stock as their assigned source are decremented (if they had other stock) or canceled (if this was the only stock).
|
||||
- Released lines are re-released for new assignment.
|
||||
|
||||
**Lock does not allow picking:**
|
||||
- All replenishment source assignments are canceled (stock unavailable for picking).
|
||||
- Picking tasks using this LPN's stock are decremented or canceled.
|
||||
- Affected lines are re-released.
|
||||
|
||||
**Lock does not allow moving:**
|
||||
- If LPN is in a dynamic or pushback location, locks automatically propagate to LPNs behind it.
|
||||
- Auto-unassignment of affected client LPNs.
|
||||
- Affected tasks canceled; lines re-released.
|
||||
|
||||
**UI path (web):** `Masters > Lock types` → View "LPN lock types"
|
||||
|
||||
---
|
||||
|
||||
## Reception of Containers
|
||||
|
||||
### ASN Pre-notified Containers
|
||||
|
||||
LPNs pre-notified by the ERP via ASN message arrive in **Pending receipt** status and appear in the virtual **ASN location**. They are listed in the "ASN LPN" view until physically received.
|
||||
|
||||
**UI path (web):** `Warehouse > ASN LPN`
|
||||
**UI path (RFT):** `Receipts > Notices`
|
||||
|
||||
### Supplier Multi-reference Container Receipt
|
||||
|
||||
Non-pre-notified stock arriving from a supplier in containers with multiple items. Two modes:
|
||||
|
||||
| Mode | Description |
|
||||
|---|---|
|
||||
| **Receipt and putaway** | Stock received on equipment; location search runs immediately for putaway. |
|
||||
| **Receipt on stage** | Stock registered in a stage; putaway done later by another operator or batch. |
|
||||
|
||||
A third variant: **exclusive reserve** — stock can be reserved for a specific shipping order at receipt time (configured via ROR message from ERP, see [erp-interface.md](../concepts/erp-interface.md)). The `CONFIRM_EXCLUSIVE_RESERVE_ASSIGNMENT` parameter controls whether the user must manually select the shipping order when multiple compatible orders exist.
|
||||
|
||||
**ERP message sent at end of receipt:** `REF`
|
||||
**Transactions:** `CON.RECEP` (per container), `STK.RECEP` (per stock line)
|
||||
**UI path (RFT):** `Receipts > Supplier > Loose stock/multi-reference`
|
||||
|
||||
### Blind Container Receipt
|
||||
|
||||
Unplanned, non-pre-notified stock with no entry order. A receipt is auto-created at the start and closed at end. The receipt cannot be manually created or edited in the WMS UI.
|
||||
|
||||
**ERP message sent:** `REF`
|
||||
**Transactions:** `CON.RECEP` (per container), `STK.RECEP` (per stock line)
|
||||
**UI path (RFT):** `Receipts > Blind > Loose stock/multi-reference`
|
||||
|
||||
### Partitioned Container Receipt
|
||||
|
||||
Both supplier and blind modes support receiving containers with internal partitions. Destination must always be an **automatic warehouse** — containers must be transported to a PIE or picking station after reception.
|
||||
|
||||
---
|
||||
|
||||
## Operations
|
||||
|
||||
Available actions on LPNs (full list from web UI):
|
||||
|
||||
| Operation | Description | Equipment |
|
||||
|---|---|---|
|
||||
| LPN register | Register a LPN found at a location not known to the system. Specify code, location, type, height, weight, divisions. Some locations require position (rack) or depth (dynamic/compact/APS). | PC |
|
||||
| Stock register in LPN | Add stock to a newly registered or unknown LPN. Requires item, owner, quantity, UoM. Treated as stock adjustment (reason required). | PC |
|
||||
| Delete LPN | Remove LPN. If not empty, deletes all stock (stock adjustment, reason required). ASN LPN can only be deleted if not linked to a receipt order. | PC |
|
||||
| Lock / Unlock | Apply or remove a lock type. Requires lock type selection; end date and comment optional. | PC |
|
||||
| LPN type modification | Change the LPN type. Only for **empty** LPNs. | PC |
|
||||
| Division type modification | Change division type. Only for **empty** LPNs. | PC |
|
||||
| Delete division | Remove division from LPN. Only for **empty** LPNs. | PC |
|
||||
| Location change | Change LPN's recorded location. Does NOT create a movement task — only updates the data record. Treated as [manual movement](../concepts/manual-movements.md). In open APS FIFO channels, only accessible locations shown. | PC / RFT |
|
||||
| Send to Lost & Found | Send LPN to virtual L&F location when physical location unknown. In APS FIFO, only accessible or last LPN in channel. Stacked LPN: entire partial block (selected LPN + children) goes to L&F. | PC |
|
||||
| Relocation (automatic warehouses) | Change physical location via system-directed move: Automatic (putaway strategies), To an aisle (putaway strategies in selected aisle), To a location (no strategies, physical compatibility only), To a level (putaway strategies in selected level). | PC |
|
||||
| Mark as full / not full | Flag LPN as full so replenishment at PK conveyor skips it. Manual additions still possible. | PC |
|
||||
| Mark division as full / not full | Same as above for a specific division within a LPN. | PC |
|
||||
| Shipping order unassignment | Unlink LPN from its shipping order. Works for mapped, prepared, or loaded LPN. No movement task created — operator is responsible for physical move. | PC |
|
||||
| Extraction request to PK conveyor | Request extraction from a station to a Picking conveyor for an action outside the system. | PC |
|
||||
| Request empty LPN to PK | Request empty LPN(s) of specific type/divisions to be sent to a Picking conveyor. | PC |
|
||||
| Extraction request to PS conveyor | Request extraction to an Outbound conveyor (PS). | PC |
|
||||
| Request empty LPN to PS | Extract empty LPN to Outbound conveyor (often to fill outside PK, e.g., for reception). | PC |
|
||||
| Set depth coordinate | APS3D only — manually set depth coordinate for a LPN in an APS location. Superadmin only. | PC |
|
||||
| Manual compacting | APS/APSFIFO: compact LPN when free positions exist in front. | PC |
|
||||
| Exchange LPN | APS3D only — swap a LPN in channel for one outside; must be same type. Superadmin only. | PC |
|
||||
| Consulting equipment LPNs (My LPNs) | View all LPNs on own equipment: code, type, status, stock lines (item, qty, UoM, logistic attributes). Can unload or reject LPNs from this view. | RFT |
|
||||
| Putaway search location trace | Report of last location search for this LPN. Shows strategies applied, excluded aisles, routes with issues, reserve percentages, stock line details. Superadmin sees full technical trace. | PC |
|
||||
| Stack / Match LPNs | Group LPNs vertically (stack) or horizontally (match). | RFT |
|
||||
| Unstack / Unmatch LPNs | Dissolve a stacking or matching relationship. | RFT |
|
||||
| Label printing | Print/reprint LPN label (Code 128 or GS1-128). | PC / RFT + Labeller |
|
||||
| Pre-printed label generation | Print blank LPN code labels for use in reception/creation processes. Follows UCC config and LPN sequence. | PC / RFT + Labeller |
|
||||
| Client LPN label printing | Print client label for prepared client LPNs. Shows: LPN code, account, shipping order, current date. | PC / RFT + Labeller |
|
||||
| Delivery note printing | Print packing slip for prepared or shipped client LPN. Shows: LPN code, shipping order, recipient name/address, carrier, stock detail (item, qty, UoM, weight, logistic attributes). | PC / RFT + Printer |
|
||||
| View rejects | Consult reject reasons for LPNs at a station. | RFT |
|
||||
|
||||
---
|
||||
|
||||
## Labeling & Identification
|
||||
|
||||
EasyWMS interprets the following **GS1 Application Identifiers (AI)** on existing LPN labels:
|
||||
|
||||
| AI | Meaning |
|
||||
|---|---|
|
||||
| (00) | SSCC — Serial Shipping Container Code |
|
||||
| (01) | GTIN grouping code / DUN14 |
|
||||
| (02) | EAN |
|
||||
| (10) | Lot number |
|
||||
| (11) | Manufacturing date |
|
||||
| (15) | Preferred consumption date |
|
||||
| (17) | Expiry date |
|
||||
| (21) | Serial number |
|
||||
| (37) | Quantity |
|
||||
|
||||
**AI 02 special behavior:** When receiving items with an item-to-container-type conversion (complete quantity rule) labeled with GS1-128, using AI 02 forces the user to manually enter the received quantity rather than auto-completing the container.
|
||||
|
||||
### Changing the SSCC prefix
|
||||
|
||||
The SSCC prefix used for containers generated by the WMS (picking, and reception if the toolkit is enabled) is set **in EasyS**, not in SmartUI. Typically required when a customer mandates GS1-compliant codes.
|
||||
|
||||
Procedure:
|
||||
1. In EasyS, **double-click** the warehouse name
|
||||
2. Fill in the desired **prefix**
|
||||
3. **Save**
|
||||
|
||||
Existing LPN codes are not rewritten — only containers generated after the change use the new prefix.
|
||||
|
||||
---
|
||||
|
||||
## Parameters
|
||||
|
||||
| Parameter | Effect |
|
||||
|---|---|
|
||||
| `ASK_FINAL_STACK_LOCATION` | If `true`, asks for the end stacking location when stacking non-client LPNs in floor locations (buffer/stage/dock). |
|
||||
| `UNSTACK_ON_STAGE` | If `true`, requires moving the entire LPN set to a stage before unstacking. |
|
||||
| `ALLOW_CREATE_RECEPTION` | If active, operators can create a receipt from the RFT if none found. |
|
||||
| `CREATE_ALIAS_ON_RECEPTION` | If active, operators can declare a scanned code as an alias for an expected item at receipt time. |
|
||||
| `RECEPTION_DEFAULT_CONTAINER_TYPE` | Default LPN type suggested during reception. If not set, operator must select each time. |
|
||||
| `RECEPTION_DEFAULT_HEIGHT_TYPE` | Default height type suggested during reception. If not set, operator must select each time. |
|
||||
| `RECEPTION_NUM_DAYS_PRODUCTION_DATE_MARGIN` | Days of margin added to today's date for future production date validation at receipt. |
|
||||
| `CONFIRM_EXCLUSIVE_RESERVE_ASSIGNMENT` | If active, operator must manually select the shipping order/route when multiple exclusive reserves are compatible at receipt. |
|
||||
| `CONTAINER_LABEL_DEFAULT_FORMAT` | Default label format (content, not size) for LPN labels printed by EasyWMS. |
|
||||
| `CONTAINER_CHECK_CODE_REPEATED_FOR_LABELS` | If active, validates that LPN codes are not duplicated across stations, locations, and item aliases. |
|
||||
| `LPN_CHECK_CODE_GS1LABEL` | If active, enforces GS1 standard (18 digits + check digit) for LPN codes. |
|
||||
|
||||
---
|
||||
|
||||
## Transactions (CON.*)
|
||||
|
||||
All container events generate transactions recorded in EasyWMS audit trail:
|
||||
|
||||
| Transaction | Process | ERP Message |
|
||||
|---|---|---|
|
||||
| `CON.ASN.001` | Container received for an ASN advance notice order | → `ASO` |
|
||||
| `CON.CNL.ASN` | Pre-notified container deleted or rejected | → `ASK` |
|
||||
| `CON.COC` | Client container closed at Preparation Zone (MP) | — |
|
||||
| `CON.COS.001` | Container extracted to Outbound Conveyor (PS) | — |
|
||||
| `CON.CREATE` | Container created manually, from view, for picking, or during count | — |
|
||||
| `CON.DELETE` | Container deleted (from L&F or after count) | — |
|
||||
| `CON.LOAD` | Container loaded during truck loading | — |
|
||||
| `CON.LOCATE` | Container moved to storage location via putaway task | — |
|
||||
| `CON.MOVE` | Container moved without putaway task (or to destination with task) | — |
|
||||
| `CON.PIE` | Container entered via PIE station | → `ASO` |
|
||||
| `CON.PRINT` | Packing list printed with client container label | — |
|
||||
| `CON.RECEP` | Container received (supplier, return, or blind reception) | — |
|
||||
| `CON.SEND.L&F` | Container sent to Lost & Found | — |
|
||||
| `CON.SHIPPED` | Container shipped (shipping order closed) | — |
|
||||
| `CON.SHIPPING` | Shipping task confirmed (container assigned to destination) | — |
|
||||
| `CON.VASDONE` | VAS (Value Added Service) executed on container | — |
|
||||
|
||||
For detailed transaction data fields (Site, User, ContainerCode, LocationCode, etc.), see [concepts/transactions.md](../concepts/transactions.md).
|
||||
|
||||
---
|
||||
|
||||
## ERP Integration
|
||||
|
||||
LPN-related ERP messages (all documented in [concepts/erp-interface.md](../concepts/erp-interface.md)):
|
||||
|
||||
| Message | Direction | Trigger |
|
||||
|---|---|---|
|
||||
| **ASN** | ERP → WMS | Pre-notification of LPNs arriving (creates ASN LPNs in Pending status) |
|
||||
| **ROR** | ERP → WMS | Receipt order with exclusive stock reserve request |
|
||||
| **REF** | WMS → ERP | Stock receipt confirmation (sent at end of supplier or blind container receipt) |
|
||||
| **ASO** | WMS → ERP | Confirmation that an ASN or PIE container has been received |
|
||||
| **ASK** | WMS → ERP | Deletion or rejection of a pre-notified ASN container |
|
||||
|
||||
---
|
||||
|
||||
## Interface Paths
|
||||
|
||||
### Web (PC)
|
||||
|
||||
| Path | Description |
|
||||
|---|---|
|
||||
| `Warehouse > LPN` | Main LPN management view — all operations |
|
||||
| `Workstations > Picking` | LPN view from picking workstation perspective |
|
||||
| `Masters > Lock types` → "LPN lock types" | Manage lock type definitions |
|
||||
| `Masters > Division LPN types` | Manage division type definitions |
|
||||
| `Warehouse > ASN LPN` | View pre-notified (pending) LPNs |
|
||||
|
||||
### RFT (Radio Frequency Terminal)
|
||||
|
||||
| Path | Description |
|
||||
|---|---|
|
||||
| `Receipts > Supplier > Loose stock/multi-reference` | Supplier multi-reference container receipt |
|
||||
| `Receipts > Blind > Loose stock/multi-reference` | Blind container receipt |
|
||||
| `Receipts > Notices` | View ASN pre-notified LPNs |
|
||||
| `Utilities > My LPNs` | View LPNs loaded on own equipment |
|
||||
| `Utilities > Manual movement` | Manual LPN location change |
|
||||
| `Utilities > Labels printing` | Print LPN labels |
|
||||
| `Utilities > Stack/Unstack` | Stack and unstack operations |
|
||||
| `Utilities > View rejects` | View reject reasons at current station |
|
||||
| `Control > Manual equipments` | Match LPN from equipment management |
|
||||
|
||||
---
|
||||
|
||||
## Common Errors
|
||||
|
||||
**LPN not found at expected location:**
|
||||
- Symptom: Physical LPN present but system shows different location.
|
||||
- Cause: Manual move not recorded, or system error during task.
|
||||
- Solution: Use "Location change" (PC) to correct the record. Treat as manual movement (no task required). If location unknown, send to Lost & Found.
|
||||
|
||||
**Cannot unstack base LPN:**
|
||||
- Symptom: Unstack operation rejected.
|
||||
- Cause: Location has FIFO configuration, or different LPN types are stacked above the base.
|
||||
- Solution: Move the set to a stage first (enable `UNSTACK_ON_STAGE`), or use "Undo all" to break the entire hierarchy at once.
|
||||
|
||||
**Lock prevents task execution:**
|
||||
- Symptom: Task canceled unexpectedly after LPN lock applied.
|
||||
- Cause: Lock type disallows picking, replenishment, or moving. Cascade effect automatically cancels in-flight tasks.
|
||||
- Solution: Check lock type configuration. Unlock the LPN if the reason is resolved, or process via alternative stock.
|
||||
|
||||
**Cannot modify LPN type or division:**
|
||||
- Symptom: Type/division change rejected.
|
||||
- Cause: LPN is not empty — contains stock.
|
||||
- Solution: Move or pick out all stock first, then change the type.
|
||||
|
||||
**Putaway location not found for stacked LPN:**
|
||||
- Symptom: Location search returns no result for stacked set.
|
||||
- Cause: Effective width (width + 2 × collapse) exceeds available location dimensions, or no valid strategy applies to the stack configuration.
|
||||
- Solution: Check the "Putaway search location trace" report for the LPN (requires PC). Review excluded aisles and strategy details.
|
||||
|
||||
**ASN LPN cannot be deleted:**
|
||||
- Symptom: Delete operation rejected for an ASN LPN.
|
||||
- Cause: The ASN LPN is linked to a receipt order (ROR).
|
||||
- Solution: Cancel or disassociate the receipt order first, or use the rejection flow (`CON.CNL.ASN` → `ASK` message to ERP).
|
||||
|
||||
---
|
||||
|
||||
## Related
|
||||
|
||||
- [concepts/location.md](../concepts/location.md) — Locations where LPNs are stored; capacity, FIFO, dynamic, APS types
|
||||
- [concepts/stock.md](../concepts/stock.md) — Stock lines that reside inside LPNs; adjustments, reserves
|
||||
- [concepts/reception.md](../concepts/reception.md) — All reception modes; how LPNs are created and registered
|
||||
- [concepts/putaway.md](../concepts/putaway.md) — Strategies that assign LPNs to storage locations
|
||||
- [concepts/task.md](../concepts/task.md) — Tasks drive LPN movements (putaway, picking, replenishment, shipping)
|
||||
- [concepts/shipping.md](../concepts/shipping.md) — Client LPN lifecycle through picking, consolidation, loading, shipping
|
||||
- [concepts/order-inbound.md](../concepts/order-inbound.md) — Inbound orders (ASN, receipt orders) that pre-notify LPNs
|
||||
- [concepts/order-outbound.md](../concepts/order-outbound.md) — Shipping orders that client LPNs are assigned to
|
||||
- [concepts/labels.md](../concepts/labels.md) — LPN label formats, GS1-128, printing configuration
|
||||
- [concepts/manual-movements.md](../concepts/manual-movements.md) — Manual location changes for LPNs
|
||||
- [concepts/consolidation.md](../concepts/consolidation.md) — Container consolidation: stock from multiple partial LPNs merged into one destination container
|
||||
- [concepts/quality-control.md](../concepts/quality-control.md) — Quality locks applied to stock inside LPNs; lock-by-container scope
|
||||
- [concepts/transactions.md](../concepts/transactions.md) — Full CON.* and STK.* transaction reference
|
||||
- [concepts/erp-interface.md](../concepts/erp-interface.md) — ASN, ROR, REF, ASO, ASK message definitions
|
||||
- [modules/agv.md](../modules/agv.md) — AGV equipment that transports LPNs in automated warehouses
|
||||
- [modules/pallet-shuttle.md](../modules/pallet-shuttle.md) — Pallet shuttle system managing compact LPN storage
|
||||
- [modules/vas.md](../modules/vas.md) — Value Added Services applied to LPNs (`CON.VASDONE`)
|
||||
- [modules/aps3d.md](../modules/aps3d.md) — 3D APS storage: depth coordinates, compacting, LPN exchange
|
||||
@@ -0,0 +1,346 @@
|
||||
---
|
||||
title: "Count / Inventory"
|
||||
type: concept
|
||||
sources:
|
||||
- areas/counts/index.md
|
||||
- areas/counts/counts_admin/count.md
|
||||
- areas/counts/counts_admin/count_type.md
|
||||
- areas/counts/counts_admin/count_create.md
|
||||
- areas/counts/counts_admin/count_release.md
|
||||
- areas/counts/counts_admin/count_close.md
|
||||
- areas/counts/counts_admin/count_cancel.md
|
||||
- areas/counts/counts_admin/count_orders_monitorize.md
|
||||
- areas/counts/counts_admin/count_assign_pk.md
|
||||
- areas/counts/counts_admin/location_count_type.md
|
||||
- areas/counts/counts_physical/count_physical.md
|
||||
- areas/counts/counts_physical/count_location.md
|
||||
- areas/counts/counts_physical/count_lpn.md
|
||||
- areas/counts/counts_physical/count_item.md
|
||||
- areas/counts/counts_physical/Partitions_Count.md
|
||||
- areas/counts/counts_physical/informed_count.md
|
||||
- areas/counts/counts_physical/count_cutting_stock.md
|
||||
- areas/counts/counts_workstation/index.md
|
||||
- areas/counts/counts_workstation/count_pk_location.md
|
||||
- areas/counts/counts_workstation/count_pk_lpn.md
|
||||
- areas/counts/counts_workstation/count_pk_item.md
|
||||
- areas/counts/cycle_count/index.md
|
||||
- areas/counts/cycle_count/cycle_count_schedule.md
|
||||
- areas/counts/cycle_count/cycle_count_generation.md
|
||||
- areas/counts/counts_erp/index.md
|
||||
- areas/counts/views/view_count.md
|
||||
- areas/counts/views/view_count_line.md
|
||||
- areas/counts/views/view_cycle_count_schedule.md
|
||||
- sources/archives/14_Processus_inventaire.md
|
||||
- sources/archives/21_Validation_ajustements_stock.md
|
||||
related:
|
||||
- concepts/location.md
|
||||
- concepts/stock.md
|
||||
- concepts/container.md
|
||||
- concepts/product-item.md
|
||||
- concepts/stock-adjustment.md
|
||||
- concepts/task.md
|
||||
last_compiled: "2026-04-17"
|
||||
---
|
||||
|
||||
# Count / Inventory
|
||||
|
||||
## Overview
|
||||
|
||||
A **count** (also called inventory or stock take) in EasyWMS is a formal process for verifying that the physical stock in the warehouse matches the quantities recorded in the system. When discrepancies are found, the system adjusts its records accordingly and notifies the ERP.
|
||||
|
||||
EasyWMS supports three fundamental counting approaches:
|
||||
- **Guided counts** — a count order is created (from the WMS interface or by ERP messaging), tasks are generated, and operators follow those tasks with their RFT.
|
||||
- **Physical count** — an unguided, operator-initiated blind count of a specific location directly from the RFT, without a prior order.
|
||||
- **Cycle count** — automated rolling inventory that divides counting across many days, integrating inventory into daily warehouse operations without shutting down the warehouse.
|
||||
|
||||
Counts can be performed in manual warehouses (operators walk to locations) and automatic warehouses (containers are extracted to a picking conveyor / workstation).
|
||||
|
||||
---
|
||||
|
||||
## Types of Count
|
||||
|
||||
### Count Types (per line)
|
||||
|
||||
| Count type | Scope | Use when |
|
||||
|---|---|---|
|
||||
| **Item count** | All stock of a specific item across the warehouse | Targeted SKU audit; can filter by logistic attribute |
|
||||
| **Container count (LPN)** | One specific container and all its stock | Spot check of a known LPN |
|
||||
| **Location count** | All stock and containers in a range of locations | Large-scale area inventory |
|
||||
|
||||
A single count order can mix lines of different types.
|
||||
|
||||
### Creation Methods
|
||||
|
||||
| Method | Who initiates | Order required | Auto-adjusts |
|
||||
|---|---|---|---|
|
||||
| **Guided count — from WMS interface** | Warehouse manager (PC) | Yes | No (ERP notified via STV per diff) |
|
||||
| **Guided count — from ERP (COR message)** | ERP | Yes | No (ERP notified via COF at close) |
|
||||
| **Physical count (RF)** | Operator from RFT | No | Yes (immediate) |
|
||||
| **Cycle count** | Scheduler job | Auto-generated | No (ERP notified via STV) |
|
||||
| **Automatic warehouse count** | Manager assigns PK | Yes | No |
|
||||
|
||||
---
|
||||
|
||||
## Lifecycle
|
||||
|
||||
### Guided Count Order Lifecycle
|
||||
|
||||
```
|
||||
Disabled (Inactive)
|
||||
│
|
||||
▼ [Release]
|
||||
Releasing ← tasks being generated
|
||||
│
|
||||
▼ (tasks ready)
|
||||
In Process ← operators executing tasks
|
||||
│ │
|
||||
│ [all tasks done] │ [Cancel]
|
||||
▼ ▼
|
||||
Closed Cancelling → Canceled
|
||||
(or Force Close)
|
||||
```
|
||||
|
||||
**Status transitions:**
|
||||
| Status | Description |
|
||||
|---|---|
|
||||
| **Disabled** | Order created, not yet released |
|
||||
| **Releasing** | Release triggered; tasks being generated |
|
||||
| **In Process** | All tasks generated; operators executing |
|
||||
| **Closed** | All tasks complete (or Force Close used) |
|
||||
| **Canceled** | Pending tasks canceled; completed counts kept |
|
||||
|
||||
Closing can be **automatic** (`AUTOCLOSE_COUNT_ORDERS` parameter) or manual. Orders with conflicting lines (item with no stock, location that doesn't allow inventory) can only be closed with **Force Close**.
|
||||
|
||||
### Transactions
|
||||
|
||||
| Transaction | Trigger |
|
||||
|---|---|
|
||||
| `COU.CST` | Count order released |
|
||||
| `TSK.COU` | Count task completed |
|
||||
| `STK.ADJ` | Stock adjusted as result of count |
|
||||
| `CON.CREATE` | Container created during count |
|
||||
| `CON.DELETE` | Container removed during count |
|
||||
| `COU.END.` | Count order closed (ERP-originated via COR) |
|
||||
| `COU.CLS.` | Count order closed (WMS-originated) |
|
||||
| `COU.CNL` | Count order canceled |
|
||||
| `TSK.CANCEL` | Count task canceled |
|
||||
| `ADJ.STK` | Physical count adjustment |
|
||||
|
||||
---
|
||||
|
||||
## Guided Count — Execution
|
||||
|
||||
### Task Generation at Release
|
||||
|
||||
When a count order is released, EasyWMS generates count tasks based on line type and warehouse type:
|
||||
|
||||
- **Manual warehouse, location line** → location count tasks (one per location in range)
|
||||
- **Manual warehouse, container line** → container count tasks (regardless of aisle type)
|
||||
- **Manual warehouse, item line** → item count tasks (one per location where item has stock)
|
||||
- **Automatic warehouse, any line** → container count tasks (containers extracted to PK)
|
||||
- **Picking location with partitions + dedicated PDL** → item count tasks (one per assigned partition)
|
||||
|
||||
Locations configured as "does not allow inventory" in EasyS are skipped. Locks on locations, containers, or stock that prevent counting are also respected.
|
||||
|
||||
### Blind vs. Informed Mode
|
||||
|
||||
For **location count** lines, the **Is Informed** flag (FR : `Est renseigné`) determines the counting mode:
|
||||
- **Blind count** — operator enters quantities without seeing current system values (default). Operator must enter item, quantity, logistic attributes from scratch.
|
||||
- **Informed count** — system shows current recorded stock; operator adjusts as needed.
|
||||
|
||||
Item counts and container counts are always blind.
|
||||
|
||||
**Per-line setting.** `Est renseigné` is a **per-line** toggle, not a per-order toggle — within the same count order, some lines (e.g. the picking aisles) can be `Informed` while others (e.g. the reserve) stay blind.
|
||||
|
||||
> If the `Est renseigné` column is missing from the count-line grid : select a line and click **"Visibilité"**. If it is still hidden, the grid's visibility condition must be relaxed — edit the `CountOrderLineVList` view and comment out (`/* … */`) the visibility condition, forcing it to `true`.
|
||||
|
||||
### Counting items with serial numbers
|
||||
|
||||
When an item is counted on an attribute unique per piece (a serial number) :
|
||||
|
||||
1. The WMS asks for a serial number → enter the first one (e.g. `A`).
|
||||
2. The screen **loops on itself** once per piece of the item → enter a different serial for each piece (e.g. `B`, `C`…).
|
||||
3. Click **"Terminé"** when every piece has a serial.
|
||||
4. Enter the next item of the location, or click **"Fin"** if the location is done.
|
||||
|
||||
The WMS then reports that the original (no-serial) item line was not found — click **"Introuvable"** : this removes the no-serial stock line and creates the new serialized stock lines in its place.
|
||||
|
||||
### Count in Automatic Warehouse (Workstation)
|
||||
|
||||
For automatic warehouses, a **picking conveyor (PK) must be assigned** to the count before release. EasyWMS then extracts all containers to be counted to that PK. Operators count at the PC workstation.
|
||||
|
||||
Supported use cases at workstation:
|
||||
- Counting containers from a location range
|
||||
- Counting specific containers
|
||||
- Counting stock of a specific item
|
||||
- Counting owner stock (effectively item count for all items of one owner)
|
||||
|
||||
If the PK is equipped with a laser (HPKS pick-term tray), it illuminates the division/location being counted. Cutting stock counts are **not** supported in automatic warehouses.
|
||||
|
||||
### Partition Counts
|
||||
|
||||
For picking locations with labeled partitions assigned per item (dedicated picking locations), a special partition count mode is available from the RFT. The operator can:
|
||||
- Count an entire location with partitions (all partitions sequentially)
|
||||
- Count a single partition
|
||||
- Count in blind or informed mode
|
||||
- Reassign partitions to items during the count
|
||||
|
||||
Parameters:
|
||||
- `UNLOAD_CREATE_PRODUCT_LOCATION` — when active, auto-creates PDL assignment for a newly counted item
|
||||
- `ALLOW_DYNAMIC_UNASSIGNED_PARTITION` — allows dynamically unassigning empty partitions during count
|
||||
|
||||
---
|
||||
|
||||
## Physical Count (RF — No Order Required)
|
||||
|
||||
The **Physical Count** is a fast, location-by-location blind count initiated directly from the RFT. No count order is needed.
|
||||
|
||||
**Process:** Operator navigates to `Counts > Physical Count` on the RFT, scans a location or container, and enters all stock data from scratch. Any differences are applied immediately.
|
||||
|
||||
**What can be done:**
|
||||
- Create new stock lines
|
||||
- Modify existing stock lines (quantity, UoM, status, logistic attributes)
|
||||
- Delete stock lines
|
||||
- Create or delete containers
|
||||
|
||||
**Restrictions:** Only locations that allow inventory (per EasyS config) can be physically counted.
|
||||
|
||||
**Communications:** Any adjustment generates STV (stock variation) and STC (status change) messages to ERP.
|
||||
|
||||
---
|
||||
|
||||
## Cycle Count (Rolling Inventory)
|
||||
|
||||
Cycle counting avoids full warehouse shutdowns by spreading counting tasks across many days.
|
||||
|
||||
### Architecture
|
||||
|
||||
```
|
||||
Count Schedule (config: scope + timing)
|
||||
│
|
||||
▼ generates
|
||||
Count Iteration (active period of N days)
|
||||
│
|
||||
▼ daily job generates
|
||||
Count Orders + Tasks (distributed evenly across iteration days)
|
||||
```
|
||||
|
||||
### Schedule Configuration
|
||||
|
||||
A **Count Schedule** defines:
|
||||
- **Location filtering**: area, aisle, location range
|
||||
- **Item filtering**: owner, ABC class, family, type, count profile
|
||||
- **Count mode**: blind or informed (location-type schedules only)
|
||||
- **Iteration duration**: how many days each iteration lasts
|
||||
- **Iteration period**: how many days between iterations (≥ duration)
|
||||
- **Next iteration start date**: allows staggering multiple schedules
|
||||
- **Days of week**: which days tasks are generated
|
||||
|
||||
> If item filtering is set → item count tasks generated. If no item filter → location count tasks generated.
|
||||
|
||||
### Generation Logic
|
||||
|
||||
The job `CycleCount_GenerateIterationsForEnabledSchedulesJob_PR` runs daily and:
|
||||
1. Calculates total tasks still needed for the iteration
|
||||
2. Divides by remaining days to distribute evenly
|
||||
3. Sorts locations by aisle/side/X/Y coordinates
|
||||
4. Creates a count order with the day's lines and immediately releases it
|
||||
|
||||
Count orders generated by cycle count **cannot be re-released after cancellation**.
|
||||
|
||||
### Iteration States
|
||||
|
||||
- **On progress** — active iteration running
|
||||
- **Finished** — iteration end date passed (transitions next day)
|
||||
- **Canceled** — manually terminated early
|
||||
|
||||
Schedules can be **enabled/disabled**. A schedule with an active iteration cannot be disabled.
|
||||
|
||||
---
|
||||
|
||||
## ERP Integration
|
||||
|
||||
### ERP-Requested Count (COR → COF)
|
||||
|
||||
The ERP can request a warehouse count via the **COR** (Count Order Request) message. EasyWMS creates a count order in Disabled status. After release and execution, the **COF** (Count Order Finished) message is sent at close, reporting all stock per location counted.
|
||||
|
||||
> If double validation (pending adjustments) is active, the COF is delayed until all pending adjustments are validated or canceled.
|
||||
|
||||
### Stock Contrast (SCR → WSC)
|
||||
|
||||
Separate from counts, the ERP can request a full stock snapshot without generating counting tasks. This uses the **SCR** (Stock Contrast Request) message; EasyWMS responds immediately with **WSC** (Warehouse Stock Contrast), listing all current stock matching the filters.
|
||||
|
||||
Available as:
|
||||
- Punctual request from SmartUI (immediate response)
|
||||
- Scheduled automatic request (configurable periodicity ≥ 1 hour; job `StockCountRequest_GetScheduledCount_Job` at 10-minute polling)
|
||||
|
||||
**Transactions:** `SCR.REQ.` + `SCR.DET.`
|
||||
|
||||
### Stock Variation Notification (STV)
|
||||
|
||||
For counts **not** created by the ERP (manual WMS counts, physical counts, cycle counts), stock adjustments during counting are reported line by line via **STV** messages rather than COF.
|
||||
|
||||
---
|
||||
|
||||
## Business Rules
|
||||
|
||||
- Locations with the "does not allow inventory" flag (EasyS config) are never counted.
|
||||
- Locks (at location, container, or stock level) that prevent counting block task generation for the locked element.
|
||||
- In automatic warehouses, **no moving containers** should exist when a count order is released (containers in transit won't receive tasks).
|
||||
- Item count lines where the item has no stock in the warehouse generate **no tasks** and appear as conflicting lines (shown with a conflict icon).
|
||||
- Canceling a count cancels pending tasks; already-counted stock **is not reverted**.
|
||||
- Double validation (per item's count profile) can hold count adjustments in **Pending** status until a manager validates or cancels them.
|
||||
|
||||
---
|
||||
|
||||
## Configuration
|
||||
|
||||
| Parameter | Description |
|
||||
|---|---|
|
||||
| `AUTOCLOSE_COUNT_ORDERS` | Auto-close count orders when all tasks complete |
|
||||
| `MAX_NUM_LABELS_TO_READ` | Enable multi-label GS1-128 reading at start of count flow |
|
||||
| `ALLOW_ZONE_SELECTION_FOR_TASKS` | Show zone filter button on RFT (aisle/sub-warehouse/work zone) |
|
||||
| `UNLOAD_CREATE_PRODUCT_LOCATION` | Auto-create PDL assignment for counted item in partitioned location |
|
||||
| `REPLENISH_LEVEL_PERCENT_PRODUCT_LOCATION` | Replenishment level % used when auto-creating PDL from count |
|
||||
| `ALLOW_DYNAMIC_UNASSIGNED_PARTITION` | Allow dynamic unassignment of empty partitions during count |
|
||||
|
||||
---
|
||||
|
||||
## Interface
|
||||
|
||||
| Path | Equipment |
|
||||
|---|---|
|
||||
| `Counts > Counts` (order list) | PC |
|
||||
| `Counts > Count lines` | PC |
|
||||
| `Counts > Cycle count iterations` | PC |
|
||||
| `Warehouse > Stock` → "Punctual stock contrast request" | PC |
|
||||
| `Warehouse > Stock` → "Create/Edit stock contrast schedule" | PC |
|
||||
| `Configuration > Parameters` → `AUTOCLOSE_COUNT_ORDERS` | PC |
|
||||
| `Configuration > Jobs` → `Delete_StockStatusJob_PR` | PC |
|
||||
| RFT: `Counts > Physical Count` | RFT |
|
||||
| RFT: `Tasks > Automatic tasks` or `Count tasks` | RFT |
|
||||
| RFT: `Counts > Select count` (manual count selection) | RFT |
|
||||
|
||||
---
|
||||
|
||||
## Common Errors
|
||||
|
||||
| Symptom | Cause | Solution |
|
||||
|---|---|---|
|
||||
| Count order stuck in "Releasing" | Automatic warehouse: moving containers exist at release time | Wait for all containers to reach a location, then release |
|
||||
| Count line shows conflict icon (no stock) | Item count line requested for item with zero stock in warehouse | Use Force Close to finalize order; review item master |
|
||||
| Count line shows conflict icon (no inventory allowed) | Location not flagged for inventory in EasyS | Fix location config in EasyS or delete the line |
|
||||
| COF message not sent after close | Count originated from COR and has pending adjustments (double validation) | Validate or cancel all pending adjustments |
|
||||
| Cycle count generates uneven task distribution | Volatile stock levels change mid-iteration (especially item schedules) | Expected behavior; adjust schedule parameters if needed |
|
||||
| Cannot re-release a cycle count after cancel | By design — cycle count orders are non-re-releasable | Create a new manual count for the affected locations |
|
||||
|
||||
---
|
||||
|
||||
## Related
|
||||
|
||||
- [[stock-adjustment]] — Count discrepancies trigger STK.ADJ adjustments; double validation applies to both
|
||||
- [[stock]] — Count validates and corrects stock records; see STV/STK.ADJ transactions
|
||||
- [[location]] — Location "allows inventory" flag governs whether counting tasks are generated
|
||||
- [[container]] — Container count type counts an LPN and all its stock
|
||||
- [[product-item]] — Item count type; count profile on item controls double validation
|
||||
- [[task]] — Count tasks (TSK.COU) follow the standard task lifecycle
|
||||
@@ -0,0 +1,249 @@
|
||||
---
|
||||
title: "Crossdocking"
|
||||
type: concept
|
||||
sources:
|
||||
- areas/crossdocking/crossdocking_manual/index.md
|
||||
- areas/crossdocking/crossdocking_manual/crossdocking_warehouse.md
|
||||
- areas/crossdocking/crossdocking_manual/crossdocking_opportunity.md (404 — sourced from index.md description)
|
||||
- areas/putaway/putaway_admin/index.md (Group by SO/Route strategy type)
|
||||
- sources/archives/06_Gestion_cross_docking.md
|
||||
related:
|
||||
- concepts/reception.md
|
||||
- concepts/putaway.md
|
||||
- concepts/shipping.md
|
||||
- concepts/container.md
|
||||
- concepts/stock.md
|
||||
last_compiled: "2026-04-17"
|
||||
---
|
||||
|
||||
# Crossdocking
|
||||
|
||||
## Overview
|
||||
|
||||
Crossdocking is a warehouse flow optimization technique where received stock bypasses or minimizes time in bulk storage by being moved directly or nearly directly to the shipping area. Instead of the standard flow (receive → putaway → pick → ship), crossdocking shortens or eliminates the storage step.
|
||||
|
||||
EasyWMS supports two distinct crossdocking types in manual warehouses:
|
||||
|
||||
| Type | Description | Stock assignment timing |
|
||||
|---|---|---|
|
||||
| **Opportunity crossdocking** | Stock goes directly to a shipping dock/stage/staging area after reception | Assigned immediately upon receipt |
|
||||
| **Crossdocking to warehouse** | Stock goes to dedicated crossdocking locations near shipping area | Assigned when the shipping order is later released |
|
||||
|
||||
Both types apply to containers, stacked containers, carts, and loose stock received at equipment. Automatic warehouses follow the same logic for location search but the TMS executes the physical movement.
|
||||
|
||||
## Opportunity Crossdocking
|
||||
|
||||
### Concept
|
||||
|
||||
When an operator is about to putaway received stock/containers, EasyWMS checks if any unreleased or in-preparation shipping order needs that stock. If yes, instead of going to bulk storage, the stock is directed straight to the dock, stage, or buffer associated with the shipping order.
|
||||
|
||||
The process triggers at two moments:
|
||||
1. **After receipt into equipment** — operator is ready to putaway what was received
|
||||
2. **When preparing to putaway from a reception stage** — stock received in a staging area is evaluated for direct transfer
|
||||
|
||||
### Conditions and Eligibility
|
||||
|
||||
For opportunity crossdocking to apply to a shipping order line:
|
||||
- The line orders **only per container** OR **only per item** (not mixed requirements)
|
||||
- The line is **not marked as critical** or **required to ship**
|
||||
- If the shipping order is **sequenced** (by line or by route with stops): crossdocking only applies if the container is for the line or stop currently being shipped or a prior one
|
||||
|
||||
For stock reserved in a reserve:
|
||||
- If the stock has an active exclusive reserve → it is assigned to the order with that reserve (not freely routed)
|
||||
|
||||
For **cutting stock items** in non-consolidating conversions:
|
||||
- Crossdocking is supported, but the decision process applies stock restrictions specific to cutting items (must handle total-quantity stretches)
|
||||
|
||||
### Process Flow
|
||||
|
||||
1. Operator receives stock/container at equipment
|
||||
2. Operator initiates putaway
|
||||
3. EasyWMS evaluates: is there a shipping order that needs this stock?
|
||||
4. If **yes** → task destination is set to the dock/stage/buffer of the shipping order → crossdocking task generated
|
||||
5. If **no** → standard putaway process continues (channel filling strategies, then location strategies)
|
||||
6. Operator follows RFT instructions to the assigned destination (same UX as standard putaway)
|
||||
|
||||
### Output
|
||||
|
||||
- A putaway task with destination = dock/stage/buffer of the matched shipping order
|
||||
- Stock is assigned to the shipping order at the time of crossdocking
|
||||
- No storage location is used
|
||||
|
||||
## Crossdocking to Warehouse
|
||||
|
||||
### Concept (Warehouse)
|
||||
|
||||
If opportunity crossdocking is not possible (no shipping order needing immediate routing, or the stock quantity exceeds a single order's need), EasyWMS evaluates **crossdocking to warehouse**: the stock is placed in dedicated **crossdocking locations** near the shipping area. When the shipping order is eventually released, these crossdocking locations are consulted first during stock assignment — ensuring minimum travel distance for shipping.
|
||||
|
||||
The stock is not yet assigned to any shipping order during the crossdocking-to-warehouse placement. The link to the order happens at release time.
|
||||
|
||||
### Conditions and Eligibility (Warehouse)
|
||||
|
||||
For crossdocking to warehouse to execute:
|
||||
|
||||
1. **Item must allow crossdocking**: item attribute "Allow crossdocking" must be enabled
|
||||
2. **Crossdocking locations must exist**: locations must be configured with storage logic "Allows Crossdocking" AND must be reachable from the equipment by route, height, and work zone
|
||||
3. **Crossdocking putaway strategies must exist**: at least one enabled putaway strategy flagged as "Is crossdocking"
|
||||
4. **Valid shipping orders must be candidates**: a shipping order/line is a candidate for crossdocking if:
|
||||
- Order and lines are not closed, canceled, or in creation state
|
||||
- If the line orders a specific container: all items in that container have "Allow crossdocking" enabled
|
||||
- The line has pending quantity to assign (shipped + prepared + assigned < ordered quantity)
|
||||
- The strategy filters are satisfied: order status, priority, minimum days until release date or planned loading date (if configured)
|
||||
5. **Insufficient stock in existing crossdocking locations**: if there is already sufficient stock in crossdocking locations to cover the pending need, no additional crossdocking is performed
|
||||
|
||||
### Process Flow (Warehouse)
|
||||
|
||||
1. Operator is about to putaway received container/stock
|
||||
2. EasyWMS first tries opportunity crossdocking (direct to dock) — if not possible:
|
||||
3. EasyWMS evaluates crossdocking to warehouse:
|
||||
a. Identifies candidate shipping orders meeting criteria
|
||||
b. Checks if existing crossdocking locations already have sufficient stock
|
||||
c. If insufficient stock and candidates exist → runs crossdocking putaway strategy
|
||||
d. Strategy finds a valid crossdocking location
|
||||
4. If a crossdocking location is found:
|
||||
- Task is generated with process type = **Crossdocking**, task type = **Putaway**
|
||||
- Task destination = crossdocking location
|
||||
5. If no crossdocking location is found → search the rest of the warehouse using standard putaway strategies
|
||||
6. If only part of the stock qualifies for crossdocking → remainder is located via standard putaway
|
||||
7. Operator follows RFT instructions (same UX as standard putaway)
|
||||
|
||||
In automated warehouses: same logic applies; TMS executes the physical movement.
|
||||
|
||||
### Crossdocking Locations
|
||||
|
||||
A crossdocking location is configured with storage logic property **"Allows Crossdocking"** = true. These locations are typically positioned near shipping docks and staging areas to minimize the travel distance from storage to loading.
|
||||
|
||||
When a shipping order is released, the stock assignment engine consults crossdocking locations **preferentially** before other storage locations. This prioritization ensures that pre-positioned crossdocking stock is consumed first.
|
||||
|
||||
### Crossdocking Putaway Strategies
|
||||
|
||||
Crossdocking to warehouse requires at least one putaway strategy enabled with the **"Is crossdocking"** flag. These strategies define:
|
||||
- Source station criteria (where the crossdocking flow originates)
|
||||
- Destination rules (which crossdocking locations are valid)
|
||||
- Filters on shipping order properties (status, priority, days until release/load date)
|
||||
- Sorting preferences for selecting the optimal crossdocking location
|
||||
|
||||
The strategy can filter by:
|
||||
- Shipping order priority
|
||||
- Shipping order status
|
||||
- Days until shipping order release
|
||||
- Days until shipping order planned loading date
|
||||
|
||||
### Stock Coverage Check
|
||||
|
||||
EasyWMS only routes stock to crossdocking locations if the pending demand is not yet covered. The check compares:
|
||||
- Pending quantity for shipping order lines (ordered − shipped − prepared − assigned)
|
||||
- Existing stock at crossdocking locations for the same item
|
||||
|
||||
If crossdocking locations already hold enough stock for all pending orders → no crossdocking task is generated → standard putaway proceeds.
|
||||
|
||||
## Crossdocking Decision Tree
|
||||
|
||||
```
|
||||
Putaway triggered (after reception)
|
||||
│
|
||||
▼
|
||||
Opportunity crossdocking eligible?
|
||||
(SO needs stock, not critical, not sequenced out of order)
|
||||
│
|
||||
┌──────┴──────┐
|
||||
YES NO
|
||||
│ │
|
||||
▼ ▼
|
||||
Move to dock Crossdocking to warehouse possible?
|
||||
/stage/buffer (item allows XD, XD locations exist, XD strategy enabled,
|
||||
Task: XD SO candidates exist, insufficient stock in XD locations)
|
||||
│
|
||||
┌──────┴──────┐
|
||||
YES NO
|
||||
│ │
|
||||
▼ ▼
|
||||
Move to XD Standard putaway
|
||||
location (channel filling → location strategies)
|
||||
Task: XD
|
||||
Putaway
|
||||
```
|
||||
|
||||
## Comparison: Opportunity vs. To-Warehouse
|
||||
|
||||
| Dimension | Opportunity Crossdocking | Crossdocking to Warehouse |
|
||||
|---|---|---|
|
||||
| Stock assignment | Immediate (at reception) | At shipping order release |
|
||||
| Destination | Dock / Stage / Buffer | Crossdocking location (near dock) |
|
||||
| Shipping order state required | In-preparation or partially released | Any non-closed/canceled state |
|
||||
| Requires XD strategy | No | Yes ("Is crossdocking" flag) |
|
||||
| Requires XD locations | No | Yes ("Allows Crossdocking" logic) |
|
||||
| Requires item "Allow XD" | No | Yes |
|
||||
| Operator flow change | None (same UX as putaway) | None (same UX as putaway) |
|
||||
|
||||
## Configuration Requirements
|
||||
|
||||
### For Opportunity Crossdocking
|
||||
|
||||
No special location or strategy configuration required. The system automatically evaluates all received stock against pending shipping orders during the putaway initiation phase.
|
||||
|
||||
### For Crossdocking to Warehouse
|
||||
|
||||
1. **Items**: set "Allow crossdocking" = true on each eligible item
|
||||
2. **Locations**: configure storage logic "Allows Crossdocking" = true on designated crossdocking locations (near docks/stages)
|
||||
3. **Putaway strategies**: create and enable at least one strategy with "Is crossdocking" = true, including destination rules targeting the crossdocking locations
|
||||
4. **Stock assignment**: ensure the stock assignment strategy consults crossdocking locations first when the shipping order is released (these locations are consulted preferentially automatically)
|
||||
|
||||
### Mecalux France — EasyS / SmartUI Setup Notes
|
||||
|
||||
Additional setup steps consolidated from Mecalux France practice (in addition to the items above) :
|
||||
|
||||
**EasyS :**
|
||||
1. Create a dedicated rack for the crossdocking locations.
|
||||
2. Check **Is Crossdocking location = true** on the rack.
|
||||
3. Attach the locations to a **Warehouse zone of type `Cross docking`**.
|
||||
4. Configure the workingZones to include the crossdocking and/or unload processes.
|
||||
|
||||
**SmartUI :**
|
||||
1. On eligible items, enable **Cross-docking** in the advanced data tab.
|
||||
2. Create the crossdocking putaway strategy **in sequence position 1** so it runs before the other putaway strategies.
|
||||
|
||||
**Criteria tab** : enable crossdocking. ⚠️ Without any additional criterion, **all items** will be treated as crossdocking at reception — always add conditions on the state of the pending outbound orders (e.g. status "En attente") to avoid this.
|
||||
|
||||
**Rules tab** : set `Zone` to the crossdocking zone created in EasyS.
|
||||
|
||||
### Mecalux France — Known Behavior Notes
|
||||
|
||||
- **Reception must be done on the RFT** : the reception buffer does not trigger crossdocking evaluation. If reception is performed on the buffer, crossdocking is bypassed silently.
|
||||
- **Buffer over dock for direct XD** : when the outbound order has an assigned buffer, direct (opportunity) crossdocking routes stock to the *buffer* rather than the dock — useful for a subsequent packing step.
|
||||
- **Crossdocking overrides reserve** : if a crossdocking location exists, the WMS redirects to it even if reserve stock is already available.
|
||||
- **No label is printed** in standard direct (opportunity) crossdocking, even for a full pallet — plan for a custom label flow if the customer requires one.
|
||||
|
||||
## Common Errors
|
||||
|
||||
**Opportunity crossdocking not triggering despite matching order:** The shipping order line is marked as critical or required-to-ship, or the line type mixes container and item requirements (both are required). Remove the critical/required flags or create separate lines.
|
||||
|
||||
**Crossdocking to warehouse not executing:** Item does not have "Allow crossdocking" enabled, or no crossdocking putaway strategy exists/is enabled, or crossdocking locations exist but are not reachable from the reception equipment by route. Check all three configuration elements.
|
||||
|
||||
**Stock placed in crossdocking location but not prioritized at release:** Stock assignment strategy doesn't prioritize crossdocking locations over normal storage. Check the stock assignment strategy configuration to ensure crossdocking location preferences are applied.
|
||||
|
||||
**Crossdocking location fills up, remainder goes to standard storage:** This is normal behavior — the crossdocking process places only what fits. The remainder follows standard putaway. No error; just an expected split.
|
||||
|
||||
**Shipping order candidate filtered out unexpectedly:** The crossdocking strategy has filters on order status, priority, or days until release/load that exclude the order. Review the "Is crossdocking" strategy's filter settings.
|
||||
|
||||
**Cutting stock crossdocking creates wrong stretch quantities:** Cutting stock requires total-quantity handling; partial stretches cannot be crossdocked. Ensure the full stretch length matches the shipping order's demand exactly, or split orders to match available stretches.
|
||||
|
||||
## Interface Paths
|
||||
|
||||
| Interface | Path |
|
||||
|---|---|
|
||||
| Web — crossdocking putaway strategies | "Configuration" → "Putaway strategies" (filter by "Is crossdocking") |
|
||||
| Web — item "Allow crossdocking" | "Inventory" → "Items" → item → settings |
|
||||
| Web — location storage logic | "Warehouse" → "Locations" → location → "Change storage location logic" |
|
||||
| RFT — putaway flow (opportunity XD) | Normal putaway flow; system routes to dock/stage automatically |
|
||||
| RFT — putaway flow (XD to warehouse) | Normal putaway flow; system routes to XD location automatically |
|
||||
|
||||
## Related
|
||||
|
||||
- [Reception](reception.md) — crossdocking is triggered during the putaway phase following reception
|
||||
- [Putaway](putaway.md) — crossdocking uses the putaway strategy engine; "Is crossdocking" strategies are a subtype of putaway strategies
|
||||
- [Shipping](shipping.md) — crossdocking locations feed stock assignment at order release; opportunity crossdocking routes directly to shipping docks
|
||||
- [Container (LPN)](container.md) — containers are the primary unit being crossdocked; stacked containers and multi-reference containers have specific rules
|
||||
- [Stock](stock.md) — stock status and logistic attributes affect crossdocking eligibility
|
||||
- [Inbound Order](order-inbound.md) — ASN containers can carry exclusive reserves for specific outbound orders, enabling crossdocking on receipt
|
||||
- [Outbound Order](order-outbound.md) — SOR lines with crossdocking-eligible items become crossdocking candidates; order priority drives XD selection
|
||||
@@ -0,0 +1,340 @@
|
||||
---
|
||||
title: "Cutting Stock"
|
||||
type: concept
|
||||
sources:
|
||||
- areas/inventory_management/items/cutting_item.md
|
||||
- areas/inventory_management/items/cutting_profile.md
|
||||
- areas/inventory_management/items/cutting_stock_label.md
|
||||
- areas/inventory_management/items/cutting_stock_assignation.md
|
||||
- areas/shipping/shipping_picking_manual/cutting_station.md
|
||||
- areas/shipping/shipping_picking_manual/cutting_stock_integrated.md
|
||||
- areas/shipping/shipping_picking_manual/cutting_stock_delegate.md
|
||||
- areas/shipping/shipping_picking_manual/cutting_excess.md
|
||||
- areas/receptions/reception_dock/blind_cutting_stock.md
|
||||
- areas/receptions/reception_dock/supplier_cutting_stock.md
|
||||
- areas/counts/counts_physical/count_cutting_stock.md
|
||||
related:
|
||||
- concepts/product-item.md
|
||||
- concepts/reception.md
|
||||
- concepts/picking.md
|
||||
- concepts/shipping.md
|
||||
- concepts/stock-adjustment.md
|
||||
- concepts/count.md
|
||||
- concepts/quality-control.md
|
||||
- concepts/manual-movements.md
|
||||
- concepts/stations.md
|
||||
- concepts/labels.md
|
||||
- concepts/parameters.md
|
||||
last_compiled: "2026-04-10"
|
||||
---
|
||||
|
||||
# Cutting Stock
|
||||
|
||||
## Overview
|
||||
|
||||
Cutting stock is a specialization of item management for items that are **measured and cut to order** rather than picked in discrete unit quantities. Examples: rope, electric cable, chain, flexible pipe (hose), fabric rolls, wire. These items exist as continuous rolls or coils and can only be shipped in specific lengths.
|
||||
|
||||
Cutting stock is an **exclusively manual warehouse feature** — not supported in automated or semi-automated warehouses.
|
||||
|
||||
By definition: **a cutting item is any item with an assigned cutting profile.** The profile defines how the item behaves: whether it requires a cutting station, how it's labeled, and how its stock consolidation works.
|
||||
|
||||
## Core Concepts
|
||||
|
||||
### The Non-Consolidation Rule
|
||||
|
||||
The defining characteristic of cutting stock is that its **base UoM conversion does NOT consolidate**. This means:
|
||||
|
||||
- Multiple stock lines of identical qualities (same item, lot, status, logistic attributes) can coexist in the same location/container as **separate records** — they are never merged.
|
||||
- Each stretch is an individual record with its own quantity (length).
|
||||
- This enables precise tracking of available stretch lengths.
|
||||
|
||||
**Practical implication:** If you have three 30m rolls of the same cable in the same location, you have three separate stock records (30m, 30m, 30m) — not one 90m record.
|
||||
|
||||
### Base UoM Rule
|
||||
|
||||
**The base UoM of a cutting item must be the smallest unit in which the item is allowed to be cut (no decimals supported).** For example: if the minimum cut is 1 meter, the base UoM is meters with integer precision.
|
||||
|
||||
### Non-Consolidating Conversions
|
||||
|
||||
A UoM conversion (presentation) on a cutting item can be marked as **"Do not consolidate"** independently. When active:
|
||||
- Multiple stock lines of the same conversion coexist without merging
|
||||
- The item follows all cutting-stock rules for that conversion
|
||||
- All conversions except the base must be of type *presentation* with the **"Allow splitting"** flag active (to enable partial-length cutting)
|
||||
|
||||
## Cutting Profile
|
||||
|
||||
The cutting profile is what transforms a regular item into a cutting item. It defines behavior for the entire lifecycle.
|
||||
|
||||
**Cutting profile attributes:**
|
||||
|
||||
| Field | Description |
|
||||
|-------|-------------|
|
||||
| Code | Unique profile identifier |
|
||||
| Description | Free text |
|
||||
| Default | If flagged, automatically assigned to new items |
|
||||
| Labeling source stock | Generate label for the roll from which stock was cut |
|
||||
| Labeling cut stock | Generate label for the cut portion |
|
||||
| Cutting in station | False = cut on the shelf; True = cut at a designated cutting station |
|
||||
| Mode of picking process | When "Cutting in station": `Integrated` (same operator does supply + cut + pick) or `Delegated` (separate operators for each step) |
|
||||
| Associated cutting stations | Which cutting station(s) this profile can be processed at |
|
||||
|
||||
**Multiple cutting profiles can share a cutting station.** However, sharing stages between stations is only advised when both stations cut the same cutting profiles.
|
||||
|
||||
**ERP creation:** Cutting profiles can be created (not modified or deleted) from ERP via the ITM message.
|
||||
|
||||
**Interface:** View "Cutting profiles" in menu "Masters > Item details".
|
||||
|
||||
## Configuration Steps (First-Time Setup)
|
||||
|
||||
1. Create a **cutting profile** (define labeling, station/shelf mode, associated stations)
|
||||
2. Assign cutting profile to the **item** (makes it a cutting item)
|
||||
3. Configure item as **non-consolidating conversion** (flag "Do not consolidate" on relevant UoM conversions)
|
||||
4. Set **stock assignment strategies** (minimum and maximum shipping quantity fields on item master)
|
||||
5. Configure **shipping profile** for the item (excess percentage + enter quantity mode = "Manually")
|
||||
6. If cutting in station: configure **cutting stations** in EasyS (stages, routes, station type 61)
|
||||
|
||||
## Stock Assignment Strategies
|
||||
|
||||
Two parameters on the item master control how stock is assigned to shipping order lines. Only applies to non-consolidating conversions.
|
||||
|
||||
### Continuous Stretches (Maximum Quantity set)
|
||||
|
||||
Set **"Maximum shipping quantity per line"** = length of the longest roll presentation (in base UoM).
|
||||
|
||||
- Requested length ≤ maximum → assigned in one single stretch (guaranteed)
|
||||
- Requested length > maximum → assigned as X complete rolls (= maximum) + one continuous stretch for remainder
|
||||
|
||||
*Example: Max = 100m, required = 125m → assign 1 full roll + 25m stretch*
|
||||
|
||||
### Segmented Stretches (Maximum Quantity empty)
|
||||
|
||||
No maximum set. System tries to supply with as few stretches as possible, but **no guarantee of a single continuous stretch**.
|
||||
|
||||
*Example: Stock = 30m+30m+30m, required = 70m → assign 30m + 30m + 10m cut from third roll*
|
||||
|
||||
### Minimum Cutting Quantity
|
||||
|
||||
The **"Minimum shipping quantity"** field sets the minimum length to cut. Any requirement below this minimum is automatically rounded up.
|
||||
|
||||
*Example: Min = 10m, required = 5m → assign 10m stretch*
|
||||
|
||||
**Exception 1 (with maximum):** If maximum is set and surplus < minimum, also rounds up.
|
||||
*Max = 100m, Min = 10m, required = 105m → assign 100m roll + 10m stretch*
|
||||
|
||||
**Exception 2 (no minimum stock available):** If minimum is set but no stock line has length ≥ minimum → assign the group of stretches closest to minimum, **without cutting**.
|
||||
*Min = 10m, required = 9m, stock = 3m+4m+8m → assign 8m+3m=11m, no cut*
|
||||
|
||||
For exception 2: the shipping profile's "Excess Pick Percentage" must be empty.
|
||||
|
||||
**Note:** For cutting in station, stock in cutting station stages is prioritized over warehouse stock.
|
||||
|
||||
## Cutting Stations (Type 61)
|
||||
|
||||
Cutting stations are where cutting-in-station processes are executed. A cutting station consists of:
|
||||
- **Receiving stage:** Holds rolls assigned for cutting
|
||||
- **Shipping stage:** Holds cut portions ready for shipping or return to warehouse
|
||||
|
||||
**Configuration options:**
|
||||
|
||||
| Configuration | Use Case |
|
||||
|--------------|----------|
|
||||
| Single stage (receive + ship) | Item cut multiple times per day, rarely returned to warehouse |
|
||||
| Two dedicated stages per station | Item cut a few times per month, returned to warehouse after each cut |
|
||||
| Two shared stages across multiple stations | Multiple nearby stations cut the same profiles |
|
||||
|
||||
Cutting station can be locked via "Stations" view to prevent new stock assignments.
|
||||
|
||||
**Required EasyS configuration:**
|
||||
- Station type 61 (Cutting)
|
||||
- Single buffer location per station, storage mode = stock, allow picking
|
||||
- Routes: station ↔ stages, station ↔ equipment, station ↔ warehouse, stages ↔ docks/stages/consolidation
|
||||
- Associated stages: routes to cutting station, other stages of same station, stages of stations cutting same profile, equipment, warehouse, docks/stages/consolidation
|
||||
|
||||
**Label recommendations at cutting stations:** Print labels for cutting station code, station location code, receiving stage location code, shipping stage location code — operators confirm these codes continuously during cutting.
|
||||
|
||||
## Reception of Cutting Stock
|
||||
|
||||
### Blind Reception (Loose Stock)
|
||||
|
||||
Process for receiving multiple rolls of different or identical lengths in non-consolidating conversions.
|
||||
|
||||
**Use cases:**
|
||||
- **Variable-length rolls:** Receive one roll at a time, each with its own length record. Repeat as needed.
|
||||
- **Multiple identical rolls (Multi):** "Multi" action creates multiple records of the same length simultaneously.
|
||||
- **Edit or delete rolls:** View and modify all lines created for an item + conversion in the receipt; edit quantity or delete lines.
|
||||
- **Receipt and putaway:** When receiving loose cutting stock in equipment, can immediately putaway. Must confirm exact length of each roll for unloading confirmation.
|
||||
|
||||
**Transactions:** STK.RECEP (per stock line), CON.RECEP (per container if applicable)
|
||||
|
||||
**ERP Communication:** REF message sent at receipt close
|
||||
|
||||
### Supplier Receipt in Stage
|
||||
|
||||
Receive cutting stock rolls at a receiving stage. Stocks in non-consolidating conversions are recorded individually (not summed). Supports individual roll reading and "Multi" for same-length batches.
|
||||
|
||||
**Interface:** RF menu "Receipts > Supplier" → "Loose stock/Multi-reference"
|
||||
|
||||
### Receipt-and-Putaway Specifics
|
||||
|
||||
Due to non-consolidation, when selecting a stretch to unload and confirming unloading, the **exact length of each roll must be confirmed**. This is stricter than regular container unloading.
|
||||
|
||||
## Picking and Cutting Processes
|
||||
|
||||
### Shelf-Based Cutting (cutting_in_station = False)
|
||||
|
||||
The operator cuts directly at the shelf location. The picking process is the same as standard picking with the difference that:
|
||||
- The exact length to cut is confirmed manually
|
||||
- "Enter quantity mode" must be set to "Manually" in the item's shipping profile
|
||||
- System never allows picking less than ordered; overpicking is controlled by "Picking excess percentage" in shipping profile (0 = no excess; blank/100 = excess allowed)
|
||||
|
||||
### Integrated Cutting in Station
|
||||
|
||||
**Same operator** does supply, cut, and pick as a single workflow within the normal picking process.
|
||||
|
||||
**Three-phase process:**
|
||||
1. **Supply:** If stock is not at the cutting station's stages → system guides operator to pick the roll from warehouse and bring it to the receiving stage. Operator can also pre-supply manually via Manual Movement.
|
||||
2. **Cutting:** At the cutting station, operator cuts the required length. System guides confirmation.
|
||||
3. **Labeling:** If cutting profile has labeling flags → labels are printed for cut stock and/or source roll.
|
||||
|
||||
Station (integrated) items can be included in shipping orders, order groups, and waves.
|
||||
|
||||
**Monitoring:** Supervisors can monitor line and order status from web interface.
|
||||
|
||||
**Return to warehouse:** Operator can return stock without pending assignments from station to warehouse at any time.
|
||||
|
||||
**Note:** Once a cutting stock line has tasks in "In Process" or "Finished" status, quantity cannot be changed — but line can always be canceled.
|
||||
|
||||
### Delegated Cutting in Station
|
||||
|
||||
**Separate operators** handle supply, cutting, and shipping as independent process steps.
|
||||
|
||||
**Multi-phase workflow:**
|
||||
1. **Supply:** Operator brings assigned rolls from warehouse to cutting station receiving stage (via picking order RFT or automatic tasks). Manual supply also supported via Manual Movement.
|
||||
2. **Cutting:** Dedicated cutting operator executes cut at station, adds labels, identifies which stretch to cut first (can view cutting tasks accumulated per item with priority list).
|
||||
3. **Shipping/Palletization:** Operator takes cut stock to destination (dock/stage/consolidation). If the roll itself is a shipping container, it can be palletized.
|
||||
|
||||
**Not supported in groupings or waves** (unlike integrated mode).
|
||||
|
||||
**Return to warehouse:** Unassigned stock can be returned to warehouse at any time.
|
||||
|
||||
## Cutting Excess and Shipping Profile
|
||||
|
||||
Two critical shipping profile settings for cutting items:
|
||||
|
||||
### Overpicking Configuration
|
||||
|
||||
| Setting | Shipping Profile Config | Effect |
|
||||
|---------|------------------------|--------|
|
||||
| Allow overpicking | "Picking excess %" = null or 100 | Over-picked stock not flagged as excess at shipping |
|
||||
| Disallow overpicking | "Picking excess %" = 0 | Exact quantity required; any excess raises error |
|
||||
|
||||
Because cutting requires tools and cannot be performed everywhere, it is **not possible to undo preparation or remove excess** except by cancellation.
|
||||
|
||||
### Enter Quantity Mode
|
||||
|
||||
Cutting stock is indivisible — you cannot pick one unit at a time to confirm total. Therefore:
|
||||
- **"Enter quantity mode" must be set to "Manually"** in the item's shipping profile
|
||||
- The total length is confirmed in one step at the moment of cutting
|
||||
|
||||
This is mandatory for correct cutting stock behavior.
|
||||
|
||||
## Counting Cutting Stock
|
||||
|
||||
Counting cutting stock (in non-consolidating conversions) differs from standard counting. Only supported in **manual warehouses**.
|
||||
|
||||
"Stretch" = any non-consolidating cut-off stock record in UoM.
|
||||
|
||||
**Three counting use cases:**
|
||||
|
||||
1. **Count multiple stretches continuously:** After entering item + UoM, operator reads stretches continuously without re-entering item code. "Done" saves all records. "Stretches" action shows running count list.
|
||||
|
||||
2. **Assign user status during counting:** Set status before entering a stretch; status persists for subsequent stretches until changed or removed. Can be assigned/unassigned to any stretch in the list.
|
||||
|
||||
3. **Modify counted lines:** Delete any stretch (not edit quantity — deletion only). "Stretches" action lists all counted stretches. "Empty List" action clears all. Lines with user status are shown in list.
|
||||
|
||||
**Informed count mode:** For locations where exact roll lengths are unknown. Verifies bulk presence only. Allows comparison and adjustment by operator.
|
||||
|
||||
**Transactions:** ADJ.STK (stock adjustment), CON.CREATE, CON.DELETE
|
||||
|
||||
**ERP:** STV (stock variation), STC (status change). If count created from ERP COR → response via COF.
|
||||
|
||||
## Quality Control Lock
|
||||
|
||||
See [[quality-control]] for full details. Cutting stock has specific lock behaviors:
|
||||
|
||||
- **Partial lock:** Lock a specific stretch (individual stock record)
|
||||
- **Total lock:** Lock entire coil/roll
|
||||
- When locked stock is split by a cut: lock propagates to cut portion
|
||||
- Lock from RF terminal or ERP
|
||||
- ERP messages: STR (status lock/unlock), STC (status change notification)
|
||||
|
||||
## Manual Movements
|
||||
|
||||
See [[manual-movements]] for full details. Specific cutting stock rules:
|
||||
|
||||
- Cutting stock moves require **exact stretch length confirmation**
|
||||
- Moving cutting stock is only allowed as a whole stretch — partial moves of a stretch are not supported (the indivisibility rule)
|
||||
- If move requires cutting to reduce length, that is not permitted via manual movement — must go through the picking/cutting process
|
||||
|
||||
## Crossdocking Interaction
|
||||
|
||||
Cutting outside storage locations is not permitted. However, **opportunity crossdocking is possible** for cutting items in non-consolidated conversions, depending on the cutting item configuration. The crossdocking process must be explicitly enabled and configured per item.
|
||||
|
||||
## Stock Adjustment for Cutting Stock
|
||||
|
||||
See [[stock-adjustment]] for full details. Cutting-specific behavior:
|
||||
|
||||
- Adjustments apply to individual stretch records
|
||||
- Labels can be printed for cutting stock from the "Location adjustment" RFT process — only if the cutting profile has "Label source stock" active
|
||||
- Transactions: STK.ADJ
|
||||
|
||||
## Parameters
|
||||
|
||||
| Parameter | Default | Description |
|
||||
|-----------|---------|-------------|
|
||||
| CUTTING_PRINTER | (blank) | Default printer for cutting stock labels during picking. See [[parameters]]. |
|
||||
|
||||
## Interface
|
||||
|
||||
| Process | Interface | Equipment |
|
||||
|---------|-----------|-----------|
|
||||
| Configure cutting profiles | Masters > Item details > "Cutting profiles" | PC |
|
||||
| Configure cutting items | Masters > Items | PC |
|
||||
| Configure conversions (non-consolidating) | Masters > Conversions | PC |
|
||||
| Configure cutting assignments | Masters > Items | PC |
|
||||
| Configure shipping profile | Masters > Item details > Shipping profile | PC |
|
||||
| Blind cutting stock receipt | Receipts > Blind > Loose stock/Multi-reference | RFT |
|
||||
| Supplier cutting stock receipt | Receipts > Supplier > Loose stock/Multi-reference | RFT |
|
||||
| Cutting stock picking (shelf) | Picking orders | RFT |
|
||||
| Integrated cutting in station | Picking orders (same as standard picking) | RFT / Label printer |
|
||||
| Delegated cutting supply | Shipping orders > Picking order OR Tasks > Automatic mode | RFT |
|
||||
| Delegated cutting execution | Cutting menu > Cutting | RFT |
|
||||
| Cutting stock count | Counts > Physical count / Guided count | RFT |
|
||||
| Print cutting label from stock view | Warehouse > Stock > "Print cutting label" action | PC |
|
||||
| Print label from location adjustment | Utilities > Location adjustment | RFT |
|
||||
| Monitor station orders | Shipping orders view | PC |
|
||||
|
||||
## Common Errors
|
||||
|
||||
| Error | Cause | Solution |
|
||||
|-------|-------|----------|
|
||||
| Cannot change quantity on cutting line | Task is In Process or Finished | Cancel the line instead; excess cannot be undone |
|
||||
| "Minimum cutting quantity" not respected | Shipping profile "Excess Pick %" has a value | Clear the Excess Pick % field when using minimum cutting quantity |
|
||||
| Stock not assigned as single stretch | Maximum quantity not set in item master | Set "Maximum shipping quantity per line" to longest roll length |
|
||||
| Delegated cutting line not included in wave | Delegated items not supported in waves/groups | Use only integrated mode for order groups and waves |
|
||||
| Labels not printing during cutting | Cutting profile lacks labeling flags | Check "Labeling cut stock" and "Labeling source stock" flags in cutting profile |
|
||||
| Count treats cutting stock like regular stock | Item UoM not flagged "Do not consolidate" | Ensure non-consolidating flag is active on relevant UoM conversion |
|
||||
|
||||
## Related
|
||||
|
||||
- [[product-item]] — Cutting profile is configured on the item master; base UoM rules apply
|
||||
- [[reception]] — Cutting stock has specialized receipt processes (blind, supplier)
|
||||
- [[picking]] — Integrated and delegated cutting processes are extensions of picking
|
||||
- [[shipping]] — Shipping profile configuration is mandatory for correct excess handling
|
||||
- [[stock-adjustment]] — Label printing from location adjustment; STK.ADJ transactions
|
||||
- [[count]] — Counting stretches has unique UI and process rules
|
||||
- [[quality-control]] — Cutting stock locks (partial/total); STC/STR messages
|
||||
- [[manual-movements]] — Moving whole stretches; indivisibility enforced
|
||||
- [[stations]] — Cutting station (type 61) configuration and associated stages
|
||||
- [[labels]] — Cutting stock label format (A6), print triggers, printer priority
|
||||
- [[parameters]] — CUTTING_PRINTER parameter
|
||||
@@ -0,0 +1,201 @@
|
||||
---
|
||||
title: "Defragmentation"
|
||||
type: concept
|
||||
sources:
|
||||
- areas/defragmentation/index.md
|
||||
- areas/defragmentation/defrag_admin/index.md
|
||||
- areas/defragmentation/defrag_admin/defrag_rotation.md
|
||||
- areas/defragmentation/defrag_admin/defrag_shipping.md
|
||||
related:
|
||||
- concepts/location.md
|
||||
- concepts/container.md
|
||||
- concepts/stock.md
|
||||
- concepts/task.md
|
||||
- concepts/order-outbound.md
|
||||
- concepts/putaway.md
|
||||
last_compiled: "2026-04-10"
|
||||
---
|
||||
|
||||
# Defragmentation
|
||||
|
||||
## Overview
|
||||
|
||||
**Defragmentation** in EasyWMS reorganizes containers in automatic warehouses to optimize the placement of stock, either based on ABC rotation classification or based on upcoming shipping. It is an **automatic warehouse-only** feature that generates movement tasks to be executed during **periods of inactivity**, minimizing interference with active operations.
|
||||
|
||||
Two types of defragmentation exist:
|
||||
|
||||
| Type | Purpose | Criteria |
|
||||
|---|---|---|
|
||||
| **Rotation defragmentation** | Move containers to their optimal ABC storage zone | Item's ABC classification vs. current storage zone |
|
||||
| **Shipping defragmentation** | Move containers close to exit in preparation for dispatch | Assignment to a shipping order or route |
|
||||
|
||||
Both types are configured via **strategies** and can be run manually or automatically via **planners**.
|
||||
|
||||
---
|
||||
|
||||
## Rotation Optimization Strategies
|
||||
|
||||
Rotation strategies reposition containers to storage zones that match their ABC classification. For example, moving all A-class containers currently stored in zone B to zone A.
|
||||
|
||||
### Strategy Criteria (Source Selection)
|
||||
|
||||
A rotation strategy defines which containers are candidates to be moved:
|
||||
|
||||
| Criterion | Description |
|
||||
|---|---|
|
||||
| ABC classification | Required. Containers with this ABC class are candidates |
|
||||
| Storage zone | Required. The source zone from which to extract candidates |
|
||||
| Number of containers | Cap on total containers processed by the strategy |
|
||||
| Number of references in container | Mono-reference only, multi-reference only, or both; for mono-reference: complete/peak/both |
|
||||
| Container type | Optional filter; if not set, all container types are valid |
|
||||
| Location date | Only containers placed after a specific date |
|
||||
| Assigned containers | Whether containers assigned to picking or shipping are candidates |
|
||||
| Source aisle | Specific automatic aisle to draw from (optional) |
|
||||
| Location range | X/Y coordinate range within the source aisle |
|
||||
| Location sorting | Order in which source locations are evaluated (free positions ASC/DESC, X/Y ASC/DESC) |
|
||||
|
||||
### Strategy Rules (Destination Selection)
|
||||
|
||||
For each rotation strategy, destination rules specify where to move candidate containers:
|
||||
|
||||
| Rule | Description |
|
||||
|---|---|
|
||||
| Same aisle | Move within the same aisle; skip if no valid location in aisle |
|
||||
| Specific aisle | Move to a designated automatic aisle; skip if no valid location |
|
||||
| Storage zones | One or more target zones (mandatory — at least one required) |
|
||||
| Priority | Task priority for defragmentation tasks of this ABC+zone combination |
|
||||
|
||||
**Location search uses putaway strategies** in configured sequence order.
|
||||
|
||||
### Execution
|
||||
|
||||
- **Manual:** Select strategy in `Defragmentation > Rotation optimization strategies` → "Apply strategy now"
|
||||
- **Automatic:** Via a defragmentation planner that fires on schedule
|
||||
|
||||
---
|
||||
|
||||
## Shipping Optimization Strategies
|
||||
|
||||
Shipping strategies pre-position containers assigned to upcoming orders near the warehouse exit, speeding up the shipping preparation process.
|
||||
|
||||
### Strategy Criteria — Shipping (Order / Container Selection)
|
||||
|
||||
| Criterion | Description |
|
||||
|---|---|
|
||||
| Number of orders | Cap on orders processed |
|
||||
| Assignment type | Picking Only / Shipping Only / Picking & Shipping |
|
||||
| Order type | Routes or Shipping orders |
|
||||
| Shipping order type | Customer (specific account), Return (specific supplier), Transfer |
|
||||
| Order status | Creating / Waiting / Released (optionally include Paused) |
|
||||
| Destination | Orders must have **no destination** assigned (no packing, stage, or dock) |
|
||||
| Sequence number | Use container sequence to fill channels in reverse shipping order |
|
||||
| Candidate sort | Priority: auto-release date ASC, priority ASC, creation date ASC, lines ASC/DESC |
|
||||
|
||||
> If orders don't have all stock assigned yet, the stock assignment process runs first.
|
||||
|
||||
### Strategy Rules — Shipping (Destination Selection)
|
||||
|
||||
| Rule | Description |
|
||||
|---|---|
|
||||
| Same aisle | Move within the same aisle (minimum distance configurable) |
|
||||
| Specific aisle | Move to a designated automatic aisle |
|
||||
| Storage zone | One optional target zone (strictly enforced if set) |
|
||||
| Location range | X/Y coordinate range within the aisle |
|
||||
| Location sorting | X/Y coordinates ASC/DESC with sequence priority |
|
||||
|
||||
**APS warehouses:** EasyWMS finds the optimal channel by capacity and height to guarantee maximum channel occupancy and correct shipping sequence.
|
||||
|
||||
### Execution (Shipping)
|
||||
|
||||
- **Manual:** Select strategy in `Defragmentation > Shipping optimization strategies` → "Apply now"
|
||||
- **Automatic:** Via a defragmentation planner
|
||||
|
||||
---
|
||||
|
||||
## Defragmentation Planners
|
||||
|
||||
Planners enable **unattended, scheduled** defragmentation. Both rotation and shipping strategies can be scheduled.
|
||||
|
||||
### Planner Configuration
|
||||
|
||||
| Field | Description |
|
||||
|---|---|
|
||||
| Type | Shippings / Rotation / All |
|
||||
| Number of executions | Run strategies once in the window, or loop until time ends |
|
||||
| Active date range | Start date (mandatory) + optional end date |
|
||||
| Execution time | Start time and end time of the defragmentation window |
|
||||
| Execution duration | How long (hours + minutes) the planner runs |
|
||||
| Execution frequency | Days of the week (for non-daily planners) |
|
||||
|
||||
### Planner Actions
|
||||
|
||||
- **Manual trigger:** "Defragment now" button in `Defragmentation > Defragmentation planners`
|
||||
- **Automatic:** Job runs at scheduled time and applies enabled strategies in sequence
|
||||
- **Stop:** "Stop defragmentation" cancels all pending defragmentation tasks
|
||||
|
||||
---
|
||||
|
||||
## Operative Details
|
||||
|
||||
### Rotation Defragmentation Process
|
||||
|
||||
1. EasyWMS identifies containers meeting strategy criteria (not already defragmentation candidates, in locations with automatic unloading aisles)
|
||||
2. For APS locations: skips containers with deposit/extraction errors, location locks, or container locks in lower depths
|
||||
3. For rack locations: skips on matching-mask errors and locks at any depth
|
||||
4. Applies putaway strategies to find valid destination location
|
||||
5. Creates movement tasks with configured defragmentation priority
|
||||
6. Tasks execute during inactivity periods
|
||||
|
||||
### Shipping Defragmentation Process
|
||||
|
||||
1. EasyWMS identifies shipping orders/routes meeting criteria (status: Creating/Waiting/Released, no destination assigned)
|
||||
2. Applies sort criteria; ties broken by ascending creation date and code
|
||||
3. Runs stock assignment for orders without full assignments
|
||||
4. Identifies all assigned containers and linked customer containers
|
||||
5. Sorts containers in reverse shipping sequence (for sequenced orders) to fill channels optimally
|
||||
6. Applies destination rules to find valid locations
|
||||
7. Creates movement tasks
|
||||
|
||||
---
|
||||
|
||||
## Configuration Parameters
|
||||
|
||||
| Parameter | Description | Applies to |
|
||||
|---|---|---|
|
||||
| `MAX_DEFRAG_TASKS` | Max simultaneous defragmentation tasks per automatic aisle | Both |
|
||||
| `MAX_OPTIMIZATION_DEFRAG_CHANNEL` | Max channels being defragmented simultaneously per aisle; 0 = no limit (only MAX_DEFRAG_TASKS applies) | Both |
|
||||
| `MAX_DEFRAG_ATTEMPT` | Max attempts to find a valid location for shipping defragmentation; after this, container is no longer a candidate | Shipping |
|
||||
|
||||
---
|
||||
|
||||
## Interface
|
||||
|
||||
| Path | Equipment |
|
||||
|---|---|
|
||||
| `Defragmentation > Rotation optimization strategies` | PC |
|
||||
| `Defragmentation > Shipping optimization strategies` | PC |
|
||||
| `Defragmentation > Defragmentation planners` | PC |
|
||||
| `Warehouse > Tasks` (monitoring defrag tasks) | PC |
|
||||
|
||||
---
|
||||
|
||||
## Common Errors
|
||||
|
||||
| Symptom | Cause | Solution |
|
||||
|---|---|---|
|
||||
| No defragmentation tasks generated | No valid destination location found | Check zone configuration in strategies; verify putaway strategies are defined |
|
||||
| Container skipped by rotation strategy | Container has lock preventing movement, or is in an error state (APS deposit/extraction error) | Resolve location/container locks first |
|
||||
| Shipping defragmentation container never moved | `MAX_DEFRAG_ATTEMPT` reached without finding valid location | Review shipping strategy destination rules; check zone availability |
|
||||
| Defragmentation runs during active operations | Planner window overlaps with peak activity | Adjust planner execution time to off-peak hours |
|
||||
| Tasks not generated for APS location | Lower-depth containers block movement | Resolve APS channel issues first |
|
||||
|
||||
---
|
||||
|
||||
## Related
|
||||
|
||||
- [[location]] — Defragmentation moves containers between locations; rotation strategies use storage zones; only automatic aisles are valid
|
||||
- [[container]] — Containers are the unit of movement; ABC classification, type, and references-per-container govern candidate selection
|
||||
- [[stock]] — Stock records follow container movements; STK.MOVE and CON.MOVE transactions generated
|
||||
- [[task]] — Defragmentation generates movement tasks executed during inactivity; `MAX_DEFRAG_TASKS` limits concurrency
|
||||
- [[order-outbound]] — Shipping defragmentation is triggered by outbound orders; status must be Creating/Waiting/Released
|
||||
- [[putaway]] — Rotation defragmentation uses putaway strategies to find destination locations
|
||||
@@ -0,0 +1,796 @@
|
||||
---
|
||||
title: "ERP Interface"
|
||||
type: concept
|
||||
sources:
|
||||
- areas/ERP.md
|
||||
- areas/ERP/masters/itm.md
|
||||
- areas/ERP/masters/itc.md
|
||||
- areas/ERP/masters/kit.md
|
||||
- areas/ERP/masters/sup.md
|
||||
- areas/ERP/masters/acc.md
|
||||
- areas/ERP/masters/own.md
|
||||
- areas/ERP/masters/car.md
|
||||
- areas/ERP/masters/lck.md
|
||||
- areas/ERP/receipts/ror.md
|
||||
- areas/ERP/receipts/asn.md
|
||||
- areas/ERP/receipts/aso.md
|
||||
- areas/ERP/receipts/ask.md
|
||||
- areas/ERP/receipts/roc.md
|
||||
- areas/ERP/receipts/rof.md
|
||||
- areas/ERP/receipts/ref.md
|
||||
- areas/ERP/requests/str.md
|
||||
- areas/ERP/requests/scr.md
|
||||
- areas/ERP/requests/cmc.md
|
||||
- areas/ERP/shipping/sor.md
|
||||
- areas/ERP/shipping/soc.md
|
||||
- areas/ERP/shipping/sof.md
|
||||
- areas/ERP/shipping/lof.md
|
||||
- areas/ERP/shipping/wor.md
|
||||
- areas/ERP/shipping/wof.md
|
||||
- areas/ERP/shipping/rut.md
|
||||
- areas/ERP/counts/cor.md
|
||||
- areas/ERP/counts/cof.md
|
||||
- areas/ERP/replenishment/srn.md
|
||||
- areas/ERP/replenishment/sro.md
|
||||
- areas/ERP/replenishment/srk.md
|
||||
- areas/ERP/notifications/stv.md
|
||||
- areas/ERP/notifications/stc.md
|
||||
- areas/ERP/notifications/wsc.md
|
||||
- areas/ERP/notifications/kst.md
|
||||
- areas/ERP/notifications/unk.md
|
||||
- areas/ERP/notifications/cos.md
|
||||
- areas/ERP/notifications/coc.md
|
||||
- sources/archives/08_Ajouter_image_fiche_article_ITM01.md
|
||||
- sources/archives/18_ASN_DirectTransfer.md
|
||||
- sources/archives/19_ASN_Transfer.md
|
||||
- sources/archives/32_Fusion_commandes_Merge.md
|
||||
related:
|
||||
- concepts/order-inbound.md
|
||||
- concepts/order-outbound.md
|
||||
- concepts/stock.md
|
||||
- concepts/product-item.md
|
||||
- concepts/count.md
|
||||
- concepts/quality-control.md
|
||||
- concepts/transactions.md
|
||||
- architecture/entities-map.md
|
||||
last_compiled: "2026-04-17"
|
||||
---
|
||||
|
||||
# ERP Interface
|
||||
|
||||
## Overview
|
||||
|
||||
The ERP Interface is the integration layer between Easy WMS and the customer's ERP system (SAP, Oracle, Microsoft Dynamics, or any custom ERP). Communication is asynchronous, message-based, using a structured 3-letter code naming convention. Messages flow in both directions:
|
||||
|
||||
- **ERP → WMS**: Master data synchronization, order creation, requests
|
||||
- **WMS → ERP**: Status notifications, order finalizations, stock events
|
||||
|
||||
All messages have a **version** suffix when multiple variants exist (e.g., ROR01, SOR01, SOR02). The **Operation** field in each message specifies the action: `C` (Create), `U` (Update), `S` (Upsert), `D` (Delete).
|
||||
|
||||
## Complete Message Catalog
|
||||
|
||||
### Master Data Messages (ERP → WMS)
|
||||
|
||||
| Code | Name | Direction | Description |
|
||||
|------|------|-----------|-------------|
|
||||
| ITM | Item | ERP → WMS | Create/update/delete items (SKU master) |
|
||||
| ITC | Item Classification | ERP → WMS | Min/max stock levels per sub-warehouse |
|
||||
| OWN | Owner | ERP → WMS | Create/update owners (3PL tenants) |
|
||||
| CAR | Carrier | ERP → WMS | Create/update carriers |
|
||||
| ACC | Account | ERP → WMS | Create/update customer accounts |
|
||||
| SUP | Supplier | ERP → WMS | Create/update suppliers |
|
||||
| KIT | Kit | ERP → WMS | Create/update kit definitions |
|
||||
| LCK | Lock Type | ERP → WMS | Lock type master data |
|
||||
|
||||
#### ITM — Image fields
|
||||
|
||||
The `ITM01` message can optionally convey the article's picture. Two modes:
|
||||
|
||||
| Mode | Field | Behaviour |
|
||||
|---|---|---|
|
||||
| **Local file** | `<ItmPicture>nom-fichier.jpg</ItmPicture>` | File resolved against the folder pointed to by `UserImagesURI` in the WMS `appsettings.json`. Typical value : `C:/MLX/Data/Pictures/`. |
|
||||
| **URL** | `<ItmPictureUrl>https://…/photo.jpg</ItmPictureUrl>` | Fetched by the WMS when the client uses the display; `ItmPicture` takes precedence if both are present. |
|
||||
|
||||
> Requires read access on the `UserImagesURI` share from the WMS service account. The image is not uploaded via the ITM file — only the filename / URL is stamped on the item record.
|
||||
|
||||
---
|
||||
|
||||
### Inbound / Receipt Messages
|
||||
|
||||
#### ROR — Receipt Order (ERP → WMS)
|
||||
|
||||
The primary message for creating inbound orders.
|
||||
|
||||
**Versions:**
|
||||
- `ROR01` (default): Supplier receipt orders, return orders, transfer orders
|
||||
|
||||
**Key fields:**
|
||||
| Field | Description |
|
||||
|-------|-------------|
|
||||
| Operation | C/S/U/D |
|
||||
| Site | Warehouse code |
|
||||
| RorCode | Receipt order code (unique) |
|
||||
| RorType | Supplier / Return / Transfer |
|
||||
| SupplierCode | Supplier (Supplier type only) |
|
||||
| Document | Delivery note number (optional) |
|
||||
| Lines[].LneNumber | Line number |
|
||||
| Lines[].LneItemCode | Item to receive |
|
||||
| Lines[].LneQtyExpected | Expected quantity |
|
||||
| Lines[].LneQtyFree | Free-of-charge quantity |
|
||||
| Lines[].LneQtyUoMCode | Unit of measure |
|
||||
| Lines[].transactional | If true: fail entire order if one line fails |
|
||||
|
||||
**Notes:**
|
||||
- Order code must be unique for new orders
|
||||
- Lines support optional `transactional` group to control failure behavior
|
||||
- Can create/modify/cancel lines individually after creation
|
||||
- Triggers [ROC](#roc--receipt-order-status-change-wms--erp) status change notifications
|
||||
|
||||
---
|
||||
|
||||
#### ASN — Advanced Shipping Notice (ERP → WMS)
|
||||
|
||||
Pre-notifies WMS of containers en route to the warehouse.
|
||||
|
||||
**Versions:**
|
||||
- `ASN01`: Basic container pre-notification
|
||||
- `ASN02–ASN08`: Extended variants for cutting stock, quality status, loose stock, etc.
|
||||
|
||||
**Key fields:**
|
||||
| Field | Description |
|
||||
|-------|-------------|
|
||||
| Operation | C/D |
|
||||
| Site | Warehouse code |
|
||||
| ContainerCode | Container LPN |
|
||||
| ContainerTypeCode | Container type |
|
||||
| ReceiptOrderCode | Associated receipt order (optional) |
|
||||
| Lines[].ItemCode | Item in container |
|
||||
| Lines[].Quantity | Quantity |
|
||||
| Lines[].UoMCode | Unit of measure |
|
||||
| Lines[].LogisticAttributes | Lot, expiry, serial, etc. |
|
||||
|
||||
**Notes:**
|
||||
- Creates pending stock at ASN virtual location
|
||||
- If container is received: triggers [ASO](#aso--advanced-shipping-notice-ok-wms--erp) response
|
||||
- If container is rejected or deleted: triggers [ASK](#ask--advanced-shipping-notice-ko-wms--erp) response
|
||||
|
||||
---
|
||||
|
||||
#### SRN — Stock Replenish Notice (ERP → WMS)
|
||||
|
||||
Pre-notifies WMS of loose stock for automatic warehouse replenishment.
|
||||
|
||||
**Key fields:**
|
||||
| Field | Description |
|
||||
|-------|-------------|
|
||||
| Site | Warehouse code |
|
||||
| Operation | Operation code |
|
||||
| ItemCode | Item to replenish |
|
||||
| OwnerCode | Owner |
|
||||
| Quantity | Quantity |
|
||||
| UoMCode | Unit of measure |
|
||||
| Status | Stock status group |
|
||||
| Attributes | Logistic attributes |
|
||||
| RepQuePickingStationCode | Target picking conveyor (optional, triggers auto replenishment order) |
|
||||
| RepQuePriority | Priority (Urgent/High/Normal/Low/VeryLow) |
|
||||
| RepQueReplenishMode | Replenishment mode |
|
||||
| RepQueEfficiencyMode | Efficiency mode |
|
||||
|
||||
---
|
||||
|
||||
#### ROC — Receipt Order Status Change (WMS → ERP)
|
||||
|
||||
Notifies ERP of receipt order status transitions.
|
||||
|
||||
**Statuses reported:** Waiting, Pending, Receiving, PartiallyReceived, Received, Closed, Canceled
|
||||
|
||||
**Key fields:**
|
||||
| Field | Description |
|
||||
|-------|-------------|
|
||||
| Site | Warehouse code |
|
||||
| RorCode | Receipt order code |
|
||||
| Status | New status |
|
||||
|
||||
**Triggered by:** `INO.CST` transaction
|
||||
|
||||
---
|
||||
|
||||
#### ROF — Receipt Order Finalization (WMS → ERP)
|
||||
|
||||
Notifies ERP that a receipt order has been closed or canceled, with received quantities.
|
||||
|
||||
**Versions:**
|
||||
- `ROF01`: Standard finalization
|
||||
- `ROF02`: Extended with detailed line-level quantities — **the version generated when closing an inbound order sourced from a `Transfer` shipping order** (two-warehouse flow). For standard supplier receipts, ROF01 is emitted.
|
||||
|
||||
**Key fields:**
|
||||
| Field | Description |
|
||||
|-------|-------------|
|
||||
| Site | Warehouse code |
|
||||
| RorCode | Receipt order code |
|
||||
| Status | Closed / Canceled |
|
||||
| Lines[].LneNumber | Line number |
|
||||
| Lines[].LneItemCode | Item |
|
||||
| Lines[].LneQtyExpected | Expected quantity |
|
||||
| Lines[].LneQtyReceived | Received quantity |
|
||||
| Lines[].LneQtyUoMCode | Unit of measure |
|
||||
|
||||
**Triggered by:** `INO.CLS` / `INO.CNL` transactions
|
||||
|
||||
---
|
||||
|
||||
#### REF — Receipt Finalization (WMS → ERP)
|
||||
|
||||
Notifies ERP that a **receipt** (physical receiving event) has been closed.
|
||||
|
||||
**Notes:**
|
||||
- Sent only when a receipt with actual received stock is closed
|
||||
- Sent for blind receipts (no associated receipt order)
|
||||
- Includes detailed line-level stock received data
|
||||
|
||||
**Key fields:**
|
||||
| Field | Description |
|
||||
|-------|-------------|
|
||||
| Site | Warehouse code |
|
||||
| ReceiptCode | Receipt code |
|
||||
| Status | Closed |
|
||||
| RecDatContainers | Number of containers received |
|
||||
| RecDatDate | Arrival/closure date |
|
||||
| Lines[].LneItemCode | Item received |
|
||||
| Lines[].LneQtyReceived | Received quantity |
|
||||
| Lines[].LneStockItemCode | Actual received item (may differ from ordered) |
|
||||
| Lines[].LneStockQty | Stock quantity |
|
||||
| Lines[].LneStockWeight | Weight |
|
||||
| Lines[].LneStockRecDate | Receipt timestamp |
|
||||
|
||||
**Triggered by:** `REC.CLS` transaction
|
||||
|
||||
---
|
||||
|
||||
#### ASO — Advanced Shipping Notice OK (WMS → ERP)
|
||||
|
||||
Confirms that a pre-notified container has been successfully received.
|
||||
|
||||
**Triggered by:** `CON.ASN.001` transaction (ASN container received) or `CON.PIE` (container entered via PIE)
|
||||
|
||||
**Key fields:**
|
||||
| Field | Description |
|
||||
|-------|-------------|
|
||||
| Site | Warehouse code |
|
||||
| ContainerCode | Received container |
|
||||
| ReceiptOrderCode | Associated receipt order |
|
||||
| ReceiptCode | Receipt document |
|
||||
| ReceivedDate | Reception timestamp |
|
||||
|
||||
> **DirectTransfer trigger** — when the expedition of a `<DirectTransfer>` shipping order is closed at the origin warehouse, EasyWMS automatically generates an `ASO01` message targeting the destination warehouse, creating the incoming ASN container(s). The ASO carries the container and its stock but **no reference to the originating `SorCode` / DirectTransfer header**. See [concepts/order-outbound.md](order-outbound.md#asn--directtransfer-flow).
|
||||
|
||||
---
|
||||
|
||||
#### ASK — Advanced Shipping Notice KO (WMS → ERP)
|
||||
|
||||
Notifies ERP that a pre-notified container has been rejected or deleted.
|
||||
|
||||
**Key fields:**
|
||||
| Field | Description |
|
||||
|-------|-------------|
|
||||
| Site | Warehouse code |
|
||||
| ContainerCode | Rejected container |
|
||||
| ReceiptOrderCode | Receipt order (optional) |
|
||||
| CancelDate | Rejection timestamp |
|
||||
|
||||
**Triggered by:** `CON.CNL.ASN` transaction
|
||||
|
||||
> **DirectTransfer trigger** — deleting an ASN container of a DirectTransfer flow from SmartUI (`Entrepôt → Conteneurs ASN → Supprimer`) generates an `ASK01` to the ERP. As with the ASO, the message contains no reference to the upstream shipping order.
|
||||
|
||||
---
|
||||
|
||||
#### SRO — Stock Replenish OK (WMS → ERP)
|
||||
|
||||
Confirms that pre-notified loose stock has been used for automatic warehouse replenishment.
|
||||
|
||||
**Triggered by:** `STK.REP.001` transaction
|
||||
|
||||
---
|
||||
|
||||
#### SRK — Stock Replenish KO (WMS → ERP)
|
||||
|
||||
Notifies that pre-notified loose stock has been canceled (not used for replenishment).
|
||||
|
||||
**Triggered by:** `STK.REP.CNL` transaction
|
||||
|
||||
---
|
||||
|
||||
### Outbound / Shipping Messages
|
||||
|
||||
#### SOR — Shipping Order (ERP → WMS)
|
||||
|
||||
The primary message for creating outbound orders.
|
||||
|
||||
**Versions:**
|
||||
- `SOR01`: Standard shipping order (items/containers)
|
||||
- `SOR02`: Prepackaging (specifies package count/type per line; VAS integration)
|
||||
|
||||
**Key fields:**
|
||||
| Field | Description |
|
||||
|-------|-------------|
|
||||
| Operation | S (new/upsert) / U (update) / D (cancel) |
|
||||
| Site | Warehouse code |
|
||||
| SorCode | Shipping order code (unique) |
|
||||
| SorType | Customer / Return / Transfer / DirectTransfer |
|
||||
| Priority | Urgent/High/Normal/Low/VeryLow |
|
||||
| EnableReplenishment | Enable auto replenishment for this order |
|
||||
| PrpPackingLocation | Consolidation location code |
|
||||
| PlnAssignedDock | Pre-assigned dock |
|
||||
| Lines[].LneNumber | Line number |
|
||||
| Lines[].LneItemCode | Item (or alias) |
|
||||
| Lines[].LneContCode | Container (optional) |
|
||||
| Lines[].LneQtyOrder | Ordered quantity |
|
||||
| Lines[].LneQtyUoMCode | Presentation |
|
||||
| Lines[].LneAttributes | Logistic attribute filters (lot, expiry, etc.) |
|
||||
| Lines[].LneTrmCritical | Critical line flag (all or nothing) |
|
||||
| Lines[].LneTrmRequired | Required line flag (conditional preparation) |
|
||||
| Lines[].LneMaxLots | Maximum number of lots |
|
||||
| Lines[].LneQtyAllowExcess | Allow over-allocation |
|
||||
| Lines[].LneTrmAlternative | Use configured substitutes |
|
||||
| Lines[].LneAltItmCode | Explicit substitute item |
|
||||
| Lines[].LneTrmStaReq | Required stock status |
|
||||
| Lines[].LneTrmStaRejC | Rejected stock status |
|
||||
| Lines[].LneTrmStaPref | Preferred stock status |
|
||||
| Lines[].LneQtyReserve | Stock reserve quantity |
|
||||
| Lines[].ShipExpiredStock | Ship only expired stock |
|
||||
| SOR02: PrpContTypeRequired | Required client container type |
|
||||
| SOR02: VASCode | VAS template |
|
||||
|
||||
**`SorType = DirectTransfer`** — inter-warehouse transfer; closing the expedition at origin emits an automatic `ASO01` on destination, pre-creating the ASN container (see [ASO](#aso--advanced-shipping-notice-ok-wms--erp) and [concepts/order-outbound.md](order-outbound.md#asn--directtransfer-flow)).
|
||||
|
||||
**`SorType = Transfer`** — inter-warehouse transfer variant where destination generates **a full inbound order** on expedition close (as opposed to DirectTransfer which only pre-notifies via ASN). The destination ROR carries the source SOR reference ; on close, destination emits a `ROF02` carrying the line-level quantities, which the origin warehouse uses to reconcile. See [concepts/order-outbound.md](order-outbound.md#transfer-two-warehouse-flow).
|
||||
|
||||
---
|
||||
|
||||
#### SOC — Shipping Order Status Change (WMS → ERP)
|
||||
|
||||
Notifies ERP of shipping order status transitions.
|
||||
|
||||
**Statuses reported:** Release, StockFailure, InPreparation, Paused, Stopped, Prepared, Completed, Canceled
|
||||
|
||||
**Triggered by:** `OUT.CST` transaction
|
||||
|
||||
---
|
||||
|
||||
#### SOF — Shipping Order Finalization (WMS → ERP)
|
||||
|
||||
Notifies ERP that a shipping order has been closed or canceled with shipped quantities.
|
||||
|
||||
**Versions:**
|
||||
- `SOF01`: Full close
|
||||
- `SOF02`: Partial close (with remaining quantities)
|
||||
|
||||
**Key fields:**
|
||||
| Field | Description |
|
||||
|-------|-------------|
|
||||
| SorCode | Shipping order code |
|
||||
| Status | Closed / Canceled |
|
||||
| ClosingNumber | Closing sequence number |
|
||||
| Lines[].LneNumber | Line number |
|
||||
| Lines[].LneQtyShipped | Shipped quantity |
|
||||
| Lines[].LneQtyUoMCode | Unit of measure |
|
||||
|
||||
**Triggered by:** `OUT.CLS` / `OUT.CNL` transactions
|
||||
|
||||
---
|
||||
|
||||
#### DlvShareDeliveries — Merge outbound orders (ERP → WMS)
|
||||
|
||||
XML message used by the **Multi-Carrier / Deliveries module** to request that two or more outbound orders be prepared together (merged). A merged group shares client containers, carrier call, and closure.
|
||||
|
||||
**Eligibility** — all orders in the request must match on:
|
||||
|
||||
- Same account
|
||||
- Same site (warehouse)
|
||||
- Same route or delivery address
|
||||
- Same carrier
|
||||
|
||||
When `ALLOW_MERGE_DIFFERENT_ACCOUNT = true` is set, the "same account" rule is relaxed (cross-account merges become possible).
|
||||
|
||||
**Effect on orders:**
|
||||
|
||||
- Stock assignment is executed across the merged scope (not per-order)
|
||||
- Client containers can carry lines from any order in the group
|
||||
- Order closure is triggered when the last line of the last order in the group is picked / when the carrier call returns
|
||||
- SOF is still emitted per source SOR — only preparation is shared
|
||||
|
||||
See [concepts/order-outbound.md](order-outbound.md#merge-order-fusion) for operator flows and limitations.
|
||||
|
||||
---
|
||||
|
||||
#### LOF — Load Finalization (WMS → ERP)
|
||||
|
||||
Notifies ERP that a truck load has been closed (truck loaded and sealed).
|
||||
|
||||
**Key fields:**
|
||||
| Field | Description |
|
||||
|-------|-------------|
|
||||
| Site | Warehouse code |
|
||||
| LoadCode | Load code |
|
||||
| RouteCode | Route code |
|
||||
| Seal | Seal number |
|
||||
| ClosureDate | Closure timestamp |
|
||||
| ShippingOrders[] | Orders included in load |
|
||||
|
||||
**Triggered by:** `LOAD.CLS` transaction
|
||||
|
||||
---
|
||||
|
||||
#### WOR — Work Order (ERP → WMS)
|
||||
|
||||
Creates kit assembly or other work orders.
|
||||
|
||||
**Used for:** Kit assembly, quartering (cutting), or other manufactured outputs
|
||||
|
||||
---
|
||||
|
||||
#### WOF — Work Order Finalization (WMS → ERP)
|
||||
|
||||
Notifies ERP that a work order (kit assembly, etc.) has been closed or canceled.
|
||||
|
||||
**Triggered by:** `WOR.CLS.001` / `WOR.CNL.001` transactions
|
||||
|
||||
---
|
||||
|
||||
#### RUT — Route (ERP → WMS)
|
||||
|
||||
Creates or updates carrier routes.
|
||||
|
||||
**Key fields:**
|
||||
| Field | Description |
|
||||
|-------|-------------|
|
||||
| RouteCode | Route code |
|
||||
| CarrierCode | Carrier |
|
||||
| DockCode | Departure dock |
|
||||
| DepartureTime | Scheduled departure |
|
||||
|
||||
---
|
||||
|
||||
### Count Messages
|
||||
|
||||
#### COR — Count Order Request (ERP → WMS)
|
||||
|
||||
Requests WMS to create a physical count.
|
||||
|
||||
**Supported scope types:**
|
||||
- Item count (by item + owner)
|
||||
- Location count (by location range or aisle)
|
||||
- Container count (by LPN)
|
||||
|
||||
**Key fields:**
|
||||
| Field | Description |
|
||||
|-------|-------------|
|
||||
| Site | Warehouse code |
|
||||
| CountCode | Count code |
|
||||
| Priority | Count priority |
|
||||
| Lines[].ItemCode | Item (item count) |
|
||||
| Lines[].Aisle | Aisle (aisle count) |
|
||||
| Lines[].CntCode | Container LPN (container count) |
|
||||
| Lines[].LocationFrom/To | Location range (location count) |
|
||||
| Lines[].IsInformed | Blind (false) or informed (true) count |
|
||||
|
||||
---
|
||||
|
||||
#### COF — Count Order Finalization (WMS → ERP)
|
||||
|
||||
Reports count results when a WMS-received count (from COR) is closed or canceled.
|
||||
|
||||
**Note:** Only sent for ERP-initiated counts, not WMS-initiated counts.
|
||||
|
||||
**Key fields:**
|
||||
| Field | Description |
|
||||
|-------|-------------|
|
||||
| Status | Closed / Canceled |
|
||||
| Site | Warehouse code |
|
||||
| CountCode | Count code |
|
||||
| Lines[].ItemCode | Counted item |
|
||||
| Lines[].Quantity | Counted quantity |
|
||||
| Lines[].UomCode | Unit of measure |
|
||||
| Lines[].LogisticAttributes | Lot, serial, etc. |
|
||||
| Lines[].StockStatus | Receiving and user statuses |
|
||||
| (empty location) LocationEmpty=1 | Indicates empty location |
|
||||
|
||||
**Triggered by:** `COU.END` transaction
|
||||
|
||||
---
|
||||
|
||||
### Request Messages
|
||||
|
||||
#### STR — Stock Status Change Request (ERP → WMS)
|
||||
|
||||
Requests WMS to apply or remove a quality lock on stock.
|
||||
|
||||
**Operations:**
|
||||
- `S` (Add): Lock stock with a user status
|
||||
- `D` (Remove): Remove user or receiving status
|
||||
|
||||
**Filter options:** Item, Owner, Container, Lot (logistic attributes)
|
||||
|
||||
**Lock types:**
|
||||
- Time-limited lock: `StaUsrEnd` field with UTC expiry datetime
|
||||
- Permanent lock: No end date, must be manually released
|
||||
|
||||
**Key fields:**
|
||||
| Field | Description |
|
||||
|-------|-------------|
|
||||
| Operation | S (lock) / D (unlock) |
|
||||
| ItemCode | Item to lock |
|
||||
| OwnerCode | Owner |
|
||||
| FltAttLot | Lot filter |
|
||||
| StaCode | Status code to apply |
|
||||
| StaUsrEnd | Lock expiry (UTC) — optional |
|
||||
| StaUsrEmpty | Status to remove (for unlock) |
|
||||
| StaRecEmpty | Reception status to remove |
|
||||
|
||||
**Response:** [STC](#stc--stock-status-change-wms--erp) message per affected stock line
|
||||
|
||||
---
|
||||
|
||||
#### SCR — Stock Count Request (ERP → WMS)
|
||||
|
||||
Requests WMS to report current stock for an item or lot.
|
||||
|
||||
**Key fields:**
|
||||
| Field | Description |
|
||||
|-------|-------------|
|
||||
| Site | Warehouse code |
|
||||
| MassiveCount | true=grouped by item / false=per container |
|
||||
| ItemCode | Item |
|
||||
| OwnerCode | Owner |
|
||||
| LotCode | Lot (optional) |
|
||||
|
||||
**Response:** [WSC](#wsc--warehouse-stock-count-wms--erp) message
|
||||
|
||||
---
|
||||
|
||||
#### CMC — Container Movement Confirmation (ERP → WMS)
|
||||
|
||||
Notifies WMS of a container's destination after removal from outbound conveyor, when movements are managed by an external system.
|
||||
|
||||
**Key fields:**
|
||||
| Field | Description |
|
||||
|-------|-------------|
|
||||
| Site | Warehouse code |
|
||||
| ContainerCode | Container |
|
||||
| Destination | Destination location code |
|
||||
|
||||
---
|
||||
|
||||
### Notification Messages (WMS → ERP)
|
||||
|
||||
#### STV — Stock Variation (WMS → ERP)
|
||||
|
||||
Reports any stock quantity change (increase, decrease, creation, deletion, UoM change, logistic attribute change).
|
||||
|
||||
**Operations:** C (creation/increase), D (deletion/decrease)
|
||||
|
||||
**Key fields:**
|
||||
| Field | Description |
|
||||
|-------|-------------|
|
||||
| Operation | C or D |
|
||||
| Site | Warehouse code |
|
||||
| ItemCode | Item |
|
||||
| OwnerCode | Owner |
|
||||
| QuantityVar | Changed quantity (in base UoM) |
|
||||
| UoMCode | Unit of measure (if UoM change) |
|
||||
| FilterAttributes | Old logistic attributes (for attribute changes) |
|
||||
| Attributes | New logistic attributes (for attribute changes) |
|
||||
| ReasonCode | Adjustment reason (if configured) |
|
||||
|
||||
**Also sent for:** Presentation breakage (UoM split during picking), replenishment splits
|
||||
|
||||
**Triggered by:** `STK.ADJ` transaction
|
||||
|
||||
---
|
||||
|
||||
#### STC — Stock Status Change (WMS → ERP)
|
||||
|
||||
Reports every stock quality status change (lock or unlock).
|
||||
|
||||
**Can be triggered by:** STR request from ERP, manual user action (RF or SmartUI), automatic time-based unlock
|
||||
|
||||
**Key fields:**
|
||||
| Field | Description |
|
||||
|-------|-------------|
|
||||
| ItemCode | Item |
|
||||
| OwnerCode | Owner |
|
||||
| Quantity | Stock quantity |
|
||||
| UomCode | Unit of measure |
|
||||
| FltAttLot | Lot |
|
||||
| ContainerCode | Container (if applicable) |
|
||||
| StaUsrCode | New user status (lock case) |
|
||||
| StaUsrEnd | Expiry date (for time-limited locks) |
|
||||
| StaUsrEmpty | true (unlock case) |
|
||||
|
||||
**Triggered by:** `CST.STK` transaction
|
||||
|
||||
---
|
||||
|
||||
#### WSC — Warehouse Stock Count (WMS → ERP)
|
||||
|
||||
Response to SCR stock contrast request. Reports current stock quantities.
|
||||
|
||||
**Key fields:**
|
||||
| Field | Description |
|
||||
|-------|-------------|
|
||||
| Site | Warehouse code |
|
||||
| WSCDate | Date of stock check |
|
||||
| ItemCode | Item |
|
||||
| OwnerCode | Owner |
|
||||
| Quantity | Current stock quantity |
|
||||
| UomCode | Unit of measure |
|
||||
| LotCode | Lot (if lot-level contrast requested) |
|
||||
|
||||
**Triggered by:** `SCR.REQ` transaction
|
||||
|
||||
---
|
||||
|
||||
#### KST — Kit Assembled (WMS → ERP)
|
||||
|
||||
Notifies ERP that kit stock has been assembled.
|
||||
|
||||
**Key fields:**
|
||||
| Field | Description |
|
||||
|-------|-------------|
|
||||
| Site | Warehouse code |
|
||||
| WorkOrderCode | Work order code (if applicable) |
|
||||
| KitItemCode | Assembled kit item |
|
||||
| KitQuantity | Kit quantity |
|
||||
| KitVersion | Kit version |
|
||||
| CompItemCode | Component item |
|
||||
| CompQty | Component quantity used |
|
||||
|
||||
**Triggered by:** `STK.KIT.MOUNT` transaction
|
||||
|
||||
---
|
||||
|
||||
#### UNK — Kit Disassembled (WMS → ERP)
|
||||
|
||||
Notifies ERP that kit stock has been disassembled.
|
||||
|
||||
**Triggered by:** `STK.KIT.UMOUNT` transaction
|
||||
|
||||
---
|
||||
|
||||
#### COS — Container Shipped to PS (WMS → ERP)
|
||||
|
||||
Notifies ERP that a client container has been sent to the outbound conveyor (PS/Sortation).
|
||||
|
||||
**Key fields:**
|
||||
| Field | Description |
|
||||
|-------|-------------|
|
||||
| Site | Warehouse code |
|
||||
| StationCode | Station where container ended |
|
||||
| LocationCode | Location |
|
||||
| ContainerCode | Container |
|
||||
| StationToCode | Destination station (if task-based move) |
|
||||
| ClosedDate | Closing timestamp (UTC) |
|
||||
|
||||
**Triggered by:** `CON.COS.001` transaction
|
||||
|
||||
---
|
||||
|
||||
#### COC — Container Closed in MP (WMS → ERP)
|
||||
|
||||
Notifies ERP that a client container has been closed in a Preparation Zone (MP).
|
||||
|
||||
**Key fields:** Same structure as COS
|
||||
|
||||
**Triggered by:** `CON.COC` transaction
|
||||
|
||||
---
|
||||
|
||||
#### ERR — Error (WMS → ERP)
|
||||
|
||||
Sent when WMS cannot process an incoming ERP message. Contains the original message reference and error description.
|
||||
|
||||
---
|
||||
|
||||
## Message Operation Codes
|
||||
|
||||
| Code | Meaning |
|
||||
|------|---------|
|
||||
| `C` | Create (new record) |
|
||||
| `S` | Upsert (create or update) |
|
||||
| `U` | Update (existing record only) |
|
||||
| `D` | Delete or cancel |
|
||||
|
||||
## Integration Architecture
|
||||
|
||||
### Message Flow
|
||||
|
||||
```
|
||||
ERP ──[async message]──→ WMS Integration Queue
|
||||
WMS Integration Queue ──→ WMS Core (processes message)
|
||||
WMS Core ──[transaction]──→ Post-processor
|
||||
Post-processor ──[async message]──→ ERP Response Queue
|
||||
ERP Response Queue ──→ ERP
|
||||
```
|
||||
|
||||
### Transaction Post-processing
|
||||
|
||||
Many WMS transactions are marked **"Post-processed: yes"** — meaning after the internal transaction is written, a background post-processor generates the corresponding ERP message:
|
||||
|
||||
| Transaction | Generated Message |
|
||||
|------------|-----------------|
|
||||
| `CON.ASN.001` | ASO |
|
||||
| `CON.CNL.ASN` | ASK |
|
||||
| `CON.PIE` | ASO |
|
||||
| `INO.CST` | ROC |
|
||||
| `INO.CLS` | ROF |
|
||||
| `INO.CNL` | ROF |
|
||||
| `REC.CLS` | REF |
|
||||
| `OUT.CST` | SOC |
|
||||
| `OUT.CLS` | SOF |
|
||||
| `OUT.CNL` | SOF |
|
||||
| `LOAD.CLS` | LOF |
|
||||
| `WOR.CLS.001` | WOF |
|
||||
| `WOR.CNL.001` | WOF |
|
||||
| `COU.END` | COF |
|
||||
| `STK.ADJ` | STV |
|
||||
| `CST.STK` | STC |
|
||||
| `STK.REP.001` | SRO |
|
||||
| `STK.REP.CNL` | SRK |
|
||||
| `SCR.REQ` | WSC |
|
||||
| `STK.KIT.MOUNT` | KST |
|
||||
| `STK.KIT.UMOUNT` | UNK |
|
||||
|
||||
### Module-Specific ERP Messages
|
||||
|
||||
Beyond the core catalog, optional modules add their own ERP messages:
|
||||
|
||||
| Module | Message | Direction | Description |
|
||||
|--------|---------|-----------|-------------|
|
||||
| Manufacturing | RCP01/RCP02 | ERP → WMS | Recipe (BOM) create/update/delete |
|
||||
| Manufacturing | MOR01 | ERP → WMS | Manufacturing production order create/update/delete |
|
||||
| Manufacturing | MOF | WMS → ERP | Manufacturing order finalization (closed or cancelled) |
|
||||
| Manufacturing | FGP | WMS → MES | Finished goods produced notification (MES integration) |
|
||||
| Kits | WOR | ERP → WMS | Work order for kit assembly or disassembly |
|
||||
| Kits | WOF | WMS → ERP | Work order finalized (ERP-originated orders only) |
|
||||
| Kits | KST | WMS → ERP | Kit manually assembled (manual work orders) |
|
||||
| Kits | UNK | WMS → ERP | Kit manually disassembled (manual work orders) |
|
||||
| Store Fulfillment | TOR01 | ERP → WMS | Transfer order between stores/sub-warehouses |
|
||||
| Store Fulfillment | TOF01 | WMS → ERP | Transfer order finalized |
|
||||
| Store Fulfillment | TPV01 | ERP → WMS | POS sale notification — decrements store stock |
|
||||
| VAS | VAS01 | ERP → WMS | Create/update VAS templates, activities, and instructions |
|
||||
| VAS | SOR02 VASCode | ERP → WMS | VAS template reference per line in shipping order |
|
||||
| VAS | SOF (VAS field) | WMS → ERP | VAS model used + quantity returned per shipped line |
|
||||
| Slotting | SAC01 | WMS → ERP | ABC rotation classification suggestion (sent after manual recalculation) |
|
||||
| DOM | POR/ROC/SOR/SOC/SOF/DOF/ACK/NCR | Both | Multi-node orchestration |
|
||||
| Yard Management | Appointment sync | Both | ERP/TMS appointment exchange |
|
||||
| Counting | SCR/WSC | Both | Stock contrast |
|
||||
|
||||
**SAC01 detail**: sent manually from SmartUI after running the ABC rotation analysis in the WMS. Contains item code + suggested ABC class. The ERP uses this to update item classification. Only sent when the WMS operator explicitly triggers it (not automatic).
|
||||
|
||||
**TPV01 detail**: sent by POS (point of sale) system when a store sale occurs. EasyWMS decrements the corresponding store sub-warehouse stock in real time, providing a live stock view per store. Requires Store Fulfillment module.
|
||||
|
||||
**TOR01/TOF01**: used by the Store Fulfillment module to manage inter-store replenishment. TOR01 creates the transfer order from ERP; TOF01 is returned when the transfer is complete.
|
||||
|
||||
## Common Errors
|
||||
|
||||
| Symptom | Cause | Solution |
|
||||
|---------|-------|---------|
|
||||
| ROR creates order but lines fail | `transactional` group not set, line validation error | Check item/UoM existence; review partial creation log |
|
||||
| ASN container arrives but no ASO sent | Post-processor not running | Check integration pool and post-processor service |
|
||||
| SOR rejected: item not found | Item not yet synced via ITM | Send ITM first, then SOR |
|
||||
| STR applies lock but no STC received | Stock matching filters returned zero results | Verify item/owner/lot combination exists |
|
||||
| SOF never received | Shipping order not yet closed in WMS | Check order status; may be in Prepared status awaiting manual close |
|
||||
| COR count created but COF never sent | Count was created from UI (not ERP-initiated) | COF only sent for ERP-initiated counts |
|
||||
|
||||
## Related
|
||||
|
||||
- [Inbound Order](order-inbound.md) — Receipt order lifecycle and ROR/ROC/ROF details
|
||||
- [Outbound Order](order-outbound.md) — Shipping order lifecycle and SOR/SOC/SOF details
|
||||
- [Quality Control](quality-control.md) — Stock lock/unlock and STR/STC messages
|
||||
- [Count](count.md) — Physical counts and COR/COF messages
|
||||
- [Stock](stock.md) — Stock adjustments and STV messages
|
||||
- [Transactions](transactions.md) — Internal transactions that trigger ERP messages
|
||||
- [Entities Map](../architecture/entities-map.md) — ERP integration touch points per entity
|
||||
- [Replenishment](replenishment.md) — Automatic warehouse replenishment and SRN/SRO/SRK
|
||||
- [Manufacturing](../modules/manufacturing.md) — MOF/FGP production messages
|
||||
- [DOM](../modules/dom.md) — Distributed order management messages
|
||||
@@ -0,0 +1,229 @@
|
||||
---
|
||||
title: "Kits"
|
||||
type: concept
|
||||
sources:
|
||||
- areas/ERP/masters/kit.md
|
||||
- areas/ERP/shipping/wor.md
|
||||
- areas/ERP/shipping/wof.md
|
||||
- areas/ERP/notifications/kst.md
|
||||
- areas/ERP/notifications/unk.md
|
||||
- custom/analyse_fonctionnelle.md
|
||||
- sources/archives/13_Gestion_KIT.md
|
||||
related:
|
||||
- concepts/product-item.md
|
||||
- concepts/stock.md
|
||||
- concepts/order-outbound.md
|
||||
- concepts/erp-interface.md
|
||||
- modules/manufacturing.md
|
||||
last_compiled: "2026-04-17"
|
||||
---
|
||||
|
||||
# Kits
|
||||
|
||||
## Overview
|
||||
|
||||
A **kit** is an article resulting from the assembly of several component articles. In Easy WMS, kits represent pre-assembled or on-demand assembled products that allow fulfilling a single order line by collecting multiple component items. The kit concept is distinct from the [[manufacturing]] module (which handles raw material → finished goods); kits operate at the finished goods + components level.
|
||||
|
||||
ERP integration sends kit definitions via the **KIT** message. Individual components must already exist as items in the WMS.
|
||||
|
||||
A kit record consists of:
|
||||
- **Kit code** — the item code of the assembled article
|
||||
- **Component 1..N** — each component's item code + required quantity
|
||||
|
||||
Kits can be configured with or without physical assembly.
|
||||
|
||||
> ⚠️ **Profile requirement** — an article can only be configured as a kit if its logistic profile carries the **`Version`** logistic attribute. Otherwise the activation fails with a profile-mismatch error and the item must be reassigned to a profile that has `Version` and a reception control method.
|
||||
|
||||
## Creating a kit article (SmartUI)
|
||||
|
||||
From `Données Principales → Kit` :
|
||||
|
||||
1. Kit article + owner.
|
||||
2. Kit **version** (must be a value permitted by the logistic profile).
|
||||
3. Base unit of measure.
|
||||
4. Assembled or not.
|
||||
5. If assembled : on-demand assembly allowed ?
|
||||
|
||||
Add components with **"Ajouter composant"** : item, quantity, main component.
|
||||
|
||||
---
|
||||
|
||||
## Types
|
||||
|
||||
### 1. Kit without assembly (no mounting)
|
||||
|
||||
The kit article has **assembled = NO**. When a shipping order requests a kit, the WMS splits picking into separate tasks — one per component — without any physical assembly step. The kit is "assembled" implicitly by delivering all components.
|
||||
|
||||
**Example**: A "Garden Set" kit containing 1 table + 4 chairs: picking generates two tasks (table pick, chairs pick). The final delivery is the two components together.
|
||||
|
||||
### 2. Kit with assembly (mounting required)
|
||||
|
||||
The kit article has **assembled = YES**. A physical work order is required: components are picked and brought to an assembly zone, the kit is built, and the resulting kit item is added to stock.
|
||||
|
||||
**Sub-type — on-demand assembly** (`assembled = YES`, `assembly_on_demand = YES`): the assembly can be triggered by a shipping order when kit stock is zero, without a pre-existing work order. Used when the ERP can create work orders autonomously.
|
||||
|
||||
**Sub-type — ERP-driven assembly** (`assembled = YES`, `assembly_on_demand = NO`): the assembly is only triggered by a Work Order (WOR) from the ERP or a manually created order. No automatic kit fabrication request is generated when stock is insufficient.
|
||||
|
||||
### SAGE 100C Connector — Nomenclature types
|
||||
|
||||
When integrated with SAGE 100C, EasyWMS maps SAGE nomenclature types to kit configurations:
|
||||
|
||||
| SAGE type | EasyWMS config | Notes |
|
||||
|-----------|---------------|-------|
|
||||
| **Fabrication** | assembled=YES, on_demand=NO | Can be inventoried; can appear in PO; requires MO from SAGE |
|
||||
| **Commercial/Composed** | assembled=NO, on_demand=NO | Cannot be inventoried; cannot appear in PO; **no kit stock in WMS** |
|
||||
| **Linked article** | Imported as simple item | Handled as two independent items in WMS |
|
||||
|
||||
> **Warning**: For Commercial/Composed kits, no WMS stock of the kit article should exist. SAGE tracks only components.
|
||||
|
||||
---
|
||||
|
||||
## Lifecycle
|
||||
|
||||
### Kit Assembly (Kitting)
|
||||
|
||||
```
|
||||
ERP sends WOR → WMS creates work order
|
||||
→ WMS generates picking tasks for each component
|
||||
→ Operator picks components to assembly zone
|
||||
→ Assembly confirmed (components consumed, kit created in stock)
|
||||
→ WMS sends WOF to ERP (only if WOR came from ERP)
|
||||
→ If manual/manual WO: WMS sends KST to ERP
|
||||
```
|
||||
|
||||
**Detailed process (TRF)**:
|
||||
1. ERP sends `WOR` (or manager creates order manually in WMS)
|
||||
2. WMS generates picking tasks for each component to the assembly zone
|
||||
3. All components arrive at the assembly zone
|
||||
4. Operator scans and confirms assembly on TRF
|
||||
5. Component stock automatically decremented; kit stock created
|
||||
6. Kit returned to storage — available for shipping orders
|
||||
7. `WOF` sent to ERP at work order close or cancellation (only if originated from ERP)
|
||||
8. If work order was created manually: `KST` sent to ERP to notify consumed and created stock
|
||||
|
||||
> **Warning**: If component stock is insufficient, EasyWMS does NOT automatically request kit fabrication.
|
||||
|
||||
### Kit Disassembly (De-kitting)
|
||||
|
||||
```
|
||||
ERP sends WOR (disassembly) → WMS creates work order
|
||||
→ WMS generates picking tasks to bring kits to assembly zone
|
||||
→ Operator disassembles kits
|
||||
→ Kit stock decremented, component stocks incremented
|
||||
→ WMS sends WOF to ERP (if WOR from ERP)
|
||||
→ If manual: WMS sends UNK to ERP
|
||||
```
|
||||
|
||||
**Detailed process**:
|
||||
1. ERP sends `WOR` (disassembly type) or manager creates manually
|
||||
2. WMS generates picking tasks for kit items to assembly zone
|
||||
3. Operator disassembles kits at the zone
|
||||
4. Kit stock decremented; each component's stock incremented
|
||||
5. Components returned to storage — available for picking
|
||||
6. `WOF` sent to ERP at close/cancellation (only if ERP-originated)
|
||||
7. If manual: `UNK` sent to ERP to notify consumed (kits) and created (components) stock
|
||||
|
||||
---
|
||||
|
||||
## Work Order Lifecycle — Creation, Modification, Cancellation
|
||||
|
||||
### Creation modes
|
||||
|
||||
| Mode | Description |
|
||||
|---|---|
|
||||
| **From ERP** | `WOR` file — Work Order created with status **En attente** ; `WOF` sent at close/cancel |
|
||||
| **Manual (SmartUI)** | Menu `Ordres de travail → Ordres de travail` — `KST` sent at close |
|
||||
| **Manual (RFT)** | Menu `Kits → Demande de composants` — WO created **and released automatically**. ⚠️ **No ERP feedback** — neither `KST` nor `WOF` is generated |
|
||||
| **Automatic** | Requires `Montage sur demande = OUI` — triggered at integration of an outbound order containing a kit shortage |
|
||||
|
||||
### Modifications allowed, by status
|
||||
|
||||
| Status | Allowed modifications |
|
||||
|---|---|
|
||||
| En attente | Every field |
|
||||
| Libéré | Quantity + priority only |
|
||||
| En cours (≥ 1 kit assembled) | Quantity (must remain ≥ already assembled) + priority |
|
||||
| Annulation | Only if **no** kit has been assembled yet |
|
||||
|
||||
## Supply & Assembly/Disassembly
|
||||
|
||||
When a WO is released, the WMS checks available stock in the kit zone. If insufficient, a **supply (replenishment) order is automatically created and released** to feed the zone.
|
||||
|
||||
## Closing a Work Order
|
||||
|
||||
- **Automatic** — once every requested kit has been assembled / disassembled.
|
||||
- **Manual** — allowed at any time as long as **at least one** kit has been processed.
|
||||
- On close : `WOF` is sent to the ERP (for ERP-originated and SmartUI-manual WOs ; not for RFT-manual).
|
||||
|
||||
## Kit Shortage Handling
|
||||
|
||||
| | **On-demand assembly = YES** | **On-demand assembly = NO** |
|
||||
|---|---|---|
|
||||
| WO creation | Automatic | Manual |
|
||||
| Shortage detection | Automatic + WO created | Manual lookup via the Outbound Orders view |
|
||||
| Reaction time | Immediate on order integration | Depends on how often the view is reviewed |
|
||||
|
||||
> ⚠️ Without `Montage sur demande`, EasyWMS emits **no automatic alert** (no notification, no email). It is the client's responsibility to regularly review the Outbound Orders view to detect kit shortages.
|
||||
|
||||
## Business rules
|
||||
|
||||
- A kit article cannot have stock in WMS if it is a "Commercial/Composed" type (no stock tracking in ERP → sync impossible)
|
||||
- Multiple components per kit; each component has item code + required quantity
|
||||
- Stock consumed at assembly is tracked per lot/batch for traceability purposes
|
||||
- Kit articles can have their own logistic profiles (reception, shipping, putaway) like any item
|
||||
- **No automatic re-order**: WMS never requests fabrication when kit stock is insufficient — this is always a manual or ERP-driven action
|
||||
- Component stock shortage at kit assembly time does not block the work order — operator must resolve
|
||||
- For kits with `assembled = YES`, a work order (WOR) is mandatory before assembly can begin in the WMS
|
||||
|
||||
---
|
||||
|
||||
## ERP Integration
|
||||
|
||||
| Message | Direction | Trigger | Content |
|
||||
|---------|-----------|---------|---------|
|
||||
| `KIT` | ERP → WMS | Kit master data create/update/delete | Kit code + component list |
|
||||
| `WOR` | ERP → WMS | Create/update work order (assembly or disassembly) | Recipe/kit, quantity, production zone, priority |
|
||||
| `WOF` | WMS → ERP | Work order closed or cancelled (ERP-originated only) | Stocks consumed and created |
|
||||
| `KST` | WMS → ERP | Manual kit assembly (work order created in WMS, not ERP) | Notifies consumed components + created kit stock |
|
||||
| `UNK` | WMS → ERP | Manual kit disassembly (work order created in WMS) | Notifies consumed kits + created component stock |
|
||||
|
||||
### Key distinctions
|
||||
|
||||
- `WOF` is sent **only** when the work order originated from the ERP (not manual orders)
|
||||
- `KST` is sent for **manual assemblies** or manually created work orders
|
||||
- `UNK` is sent for **manual disassemblies** or manually created disassembly work orders
|
||||
- For ERP-originated orders: WOF covers the close/cancel notification regardless of quantities
|
||||
|
||||
---
|
||||
|
||||
## Configuration
|
||||
|
||||
| Field | Description |
|
||||
|-------|-------------|
|
||||
| **assembled** | YES = physical assembly required; NO = pick components only |
|
||||
| **assembly_on_demand** | YES = auto-create assembly when kit ordered without stock; NO = WOR required |
|
||||
| **Component items** | Must exist in WMS item master before kit creation |
|
||||
| **Kit item** | Must have its own item record with full logistic profiles |
|
||||
|
||||
**Interface**: Kit management is under `Masters > Kits` in SmartUI.
|
||||
|
||||
---
|
||||
|
||||
## Common errors
|
||||
|
||||
| Error | Cause | Resolution |
|
||||
|-------|-------|-----------|
|
||||
| Kit stock out of sync with ERP | Kit is Commercial/Composed type but WMS has kit stock | Delete WMS kit stock; this type must not be tracked in WMS |
|
||||
| WOF not sent to ERP | Work order was created manually in WMS | WOF only sent for ERP-originated WOR; for manual orders use KST/UNK |
|
||||
| Component picking tasks not generated | Component items don't exist in WMS / insufficient component stock | Verify component item masters; receive component stock first |
|
||||
| Kit not available for shipping orders | Kit requires assembly (assembled=YES) but no WOR created | Create work order manually or wait for ERP WOR |
|
||||
|
||||
---
|
||||
|
||||
## Related
|
||||
|
||||
- [[product-item]] — Kit articles and components are both standard items with logistic profiles
|
||||
- [[stock]] — Component stock is consumed; kit stock is created at assembly
|
||||
- [[order-outbound]] — Outbound orders trigger component picks (no assembly) or reference assembled kit stock
|
||||
- [[erp-interface]] — KIT, WOR, WOF, KST, UNK are the ERP messages for kit management
|
||||
- [[manufacturing]] — Similar concept but for raw material → finished goods transformation; manufacturing module handles additives, production stations, and automated consumption
|
||||
@@ -0,0 +1,387 @@
|
||||
---
|
||||
title: "Labels & Printing"
|
||||
type: concept
|
||||
sources:
|
||||
- areas/receptions/reception_admin/labels_containers.md
|
||||
- areas/receptions/reception_admin/labels_items.md
|
||||
- areas/inventory_management/items/cutting_stock_label.md
|
||||
- areas/inventory_management/stock/print_stock_label.md
|
||||
- areas/receptions/reception_dock/multilabel_recep.md
|
||||
- sources/archives/23_Declencheurs_impressions.md
|
||||
related:
|
||||
- concepts/container.md
|
||||
- concepts/product-item.md
|
||||
- concepts/reception.md
|
||||
- concepts/cutting-stock.md
|
||||
- concepts/stations.md
|
||||
- concepts/parameters.md
|
||||
last_compiled: "2026-04-17"
|
||||
---
|
||||
|
||||
# Labels & Printing
|
||||
|
||||
## Overview
|
||||
|
||||
Easy WMS provides label printing capabilities for multiple warehouse objects: containers (LPN), items/stock, cutting stock, locations, equipment, docks/stages, aisles, and carriers. Labels use either the **Code 128** standard or the **GS1-128** standard (structured barcodes with Application Identifiers).
|
||||
|
||||
Printing occurs at multiple touchpoints in the workflow: during reception, during picking, from the stock view, from the RF terminal, and automatically when containers arrive at configured stages or docks.
|
||||
|
||||
## Label Types
|
||||
|
||||
### Container Labels (LPN Labels)
|
||||
|
||||
Labels for containers/pallets identified by an SSCC (Serial Shipping Container Code). Generated before or during reception to pre-label containers for receiving.
|
||||
|
||||
**Standard formats:**
|
||||
|
||||
| Format | Dimensions | Labels/Sheet | Paper |
|
||||
|--------|-----------|--------------|-------|
|
||||
| 1x-A6 | 105 × 148 mm | 1 | A6 labeler |
|
||||
| 20x(105x29) | 105 × 29 mm | 20 | A4 |
|
||||
| 2x(175x135) | 175 × 135 mm | 2 | A4 |
|
||||
| 33x(75x25) | 75 × 25 mm | 33 | A4 |
|
||||
| 4x(105x148) | 105 × 148 mm | 4 | A4 |
|
||||
| 1xA5 (GS1-128) | 148 × 210 mm | 1 | A5 labeler |
|
||||
|
||||
**GS1-128 Container Label Variants:**
|
||||
|
||||
Three GS1-128 container label types:
|
||||
|
||||
1. **SSCC label** (standard container label): Contains container code and is used for generic container identification. Barcode encodes the SSCC.
|
||||
|
||||
2. **GS1-128 mono-reference label** (for single-item containers): Dual barcode — upper for item, lower for container. Used when container has stock of only one item.
|
||||
|
||||
3. **GS1-128 multi-reference label** (for multi-item containers or serialized items): For containers with multiple item stock lines or serial-number-controlled items.
|
||||
|
||||
**GS1-128 Mono-Reference Application Identifiers (AI):**
|
||||
|
||||
| AI | Content | Structure |
|
||||
|----|---------|-----------|
|
||||
| **00** | SSCC (container serial code) | n18 — always present |
|
||||
| **02** | Item alias (GTIN) | n14 — always present |
|
||||
| 10 | Lot number | an..20 |
|
||||
| 11 | Manufacturing date | n6 |
|
||||
| 15 | Best-before date | n6 |
|
||||
| 17 | Expiration date | n6 |
|
||||
| 37 | Quantity | n..8 |
|
||||
|
||||
Lot (AI 10), if present, always appears in the lower barcode next to the SSCC.
|
||||
|
||||
**Container label generation use cases:**
|
||||
|
||||
| Method | Who | When |
|
||||
|--------|-----|------|
|
||||
| Generate from Easy WMS UI | Planner/admin | Pre-reception (select number of containers + copies per container) |
|
||||
| Generate from RF terminal | Operator | Pre-reception (select format, count, printer) |
|
||||
| Print GS1-128 in supplier receipt | Operator (RF) | During supplier receiving — for non-existing containers |
|
||||
| Print GS1-128 in blind receipt | Operator (RF) | During blind receiving — must be enabled by parameter |
|
||||
|
||||
**Special case for supplier receipt:** If the receipt was created from a receipt order that specified the container code (ROR message), the label prints with that ROR-specified code. The container GTIN in the ROR must follow GS1-128 spec (14 digits).
|
||||
|
||||
**Parameters (container labels):**
|
||||
|
||||
| Parameter | Default | Description |
|
||||
|-----------|---------|-------------|
|
||||
| NUM_COPIES_RECEPTION_LABEL | 1 | Copies per container during reception |
|
||||
| RECEPTION_MAX_NUM_CONTAINER_LABELS_TO_PRINT | 1000 | Security limit: max copies per generation |
|
||||
| DEFAULT_RECEPTION_LABEL_CONTAINER_REPORT_NAME | STD_RPT_CONTAINER_LABEL_GS1_128 | Default report for mono and multi-reference container labels in reception |
|
||||
| CONTAINER_LABEL_DEFAULT_FORMAT | (blank) | Default format: `1x-A6`, `1x-GS1-128`, `20x(105x29)-A4`, `2x(175x135)-A4`, `33x(75x25)-A4`, `4x(105x148)-A4` |
|
||||
| ALLOW_PRINT_LABEL_CONTAINER_QUESTION_BLIND_RECEPTION | False | In blind reception: ask user if they want to print GS1 container labels |
|
||||
|
||||
### Item / Stock Labels
|
||||
|
||||
Labels for individual stock items. Two formats: Code 128 and GS1-128.
|
||||
|
||||
**Code 128 item labels:**
|
||||
- Printed for receipt lines that are *pending to receive* or *partially received*
|
||||
- Labels per line = remaining quantity to receive
|
||||
- Content: item code + short description
|
||||
|
||||
**Code 128 formats:**
|
||||
|
||||
| Format | Dimensions | Labels/Sheet | Paper |
|
||||
|--------|-----------|--------------|-------|
|
||||
| 1x-A6 | 105 × 148 mm | 1 | A6 labeler |
|
||||
| 20x(105x29) | 105 × 29 mm | 20 | A4 |
|
||||
| 2x(175x135) | 175 × 135 mm | 2 | A4 |
|
||||
| 33x(75x25) | 75 × 25 mm | 33 | A4 |
|
||||
| 4x(148x105) | 148 × 105 mm | 4 | A4 |
|
||||
|
||||
**GS1-128 item labels:**
|
||||
- Can be printed from receipt lines (pending/partially received) or from the Stock view (post-reception)
|
||||
- Number of labels entered by user
|
||||
- Format: A6 horizontal (148 × 105 mm) — label printer
|
||||
|
||||
**GS1-128 Item Application Identifiers (AI):**
|
||||
|
||||
| AI | Content | Structure |
|
||||
|----|---------|-----------|
|
||||
| **01** | GTIN (item code) | n14 — always present |
|
||||
| 10 | Lot number | an..20 |
|
||||
| 11 | Manufacturing date | n6 |
|
||||
| 15 | Best-before date | n6 |
|
||||
| 17 | Expiration date | n6 |
|
||||
| 21 | Serial number | an..20 |
|
||||
|
||||
Upper barcode = item + lot/serial. Lower barcode = dates (production, best-before, expiration in that order).
|
||||
|
||||
**Requirements for GS1-128 item labels:** Item must have a GTIN code (alias) following GS1-128 specification (14 digits).
|
||||
|
||||
To print item labels during reception (RF or workstation), it must be **enabled at receipt level** (from the receipts view, or via the ROR message field for all receipts from a given receipt order).
|
||||
|
||||
**Item label generation use cases:**
|
||||
|
||||
| Method | Who | When |
|
||||
|--------|-----|------|
|
||||
| Print from receipt lines (PC) | Admin | From "Receipt lines" view for pending items |
|
||||
| Print from Stock view (PC) | Admin | "Print labels" action in Stock view |
|
||||
| Print GS1-128 in supplier receipt (RF) | Operator | During supplier receiving |
|
||||
| Print GS1-128 in blind receipt (RF) | Operator | During blind receiving |
|
||||
| Print GS1-128 at workstation receipt | Operator | During workstation receiving |
|
||||
|
||||
**Parameters (item labels):**
|
||||
|
||||
| Parameter | Default | Description |
|
||||
|-----------|---------|-------------|
|
||||
| PRODUCT_LABEL_DEFAULT_FORMAT | (blank) | Default format: `A6`, `105x29`, `175x135`, `105x148`, `75x25` |
|
||||
| DEFAULT_RECEPTION_LABEL_ITEM_REPORT_NAME | STD_RPT_STOCK_LABEL_GS1_128 | Default report for item labels in reception |
|
||||
| ALLOW_PRINT_LABEL_ITEM_QUESTION_BLIND_RECEPTION | False | In blind receipt: ask user if they want to print GS1 item labels |
|
||||
|
||||
### Cutting Stock Labels
|
||||
|
||||
Specialized label for cutting stock in non-consolidating UoM conversions. Used to track individual stretches through the warehouse.
|
||||
|
||||
**Label content:** Item code, quantity/length, UoM, logistic attributes (lot, caliber, quality, production method, origin, post-production treatment, date of manufacture, version, color).
|
||||
|
||||
**Physical design:** Label can be attached to the side of a roll (flat application) or wrap around a stretch (embrace application). Supported format: **A6 only**.
|
||||
|
||||
**When labels are generated:** A cutting stock label is only printed for stock in non-consolidating UoM. Three triggers:
|
||||
|
||||
1. **During picking/cutting process** — if cutting profile has "Label cutting stock" or "Label source stock" flag active
|
||||
2. **From Stock view (PC)** — "Print cutting label" action on a stock record (non-consolidating UoM)
|
||||
3. **From RF Location adjustment (Utilities menu)** — only if cutting profile has "Label source stock" active
|
||||
|
||||
**Printer priority order (highest to lowest):**
|
||||
1. Printer associated with the cutting station (for cutting station stock)
|
||||
2. Printer associated with the equipment
|
||||
3. Printer defined in CUTTING_PRINTER parameter
|
||||
4. Free choice of label printer in warehouse
|
||||
|
||||
**Parameters (cutting stock labels):**
|
||||
|
||||
| Parameter | Default | Description |
|
||||
|-----------|---------|-------------|
|
||||
| CUTTING_PRINTER | (blank) | Default printer for cutting stock labels during picking |
|
||||
|
||||
**Cutting profile flags that control label generation:**
|
||||
- "Labeling source stock" → generate label for the roll from which stock was cut
|
||||
- "Labeling cut stock" → generate label for the cut portion
|
||||
|
||||
### Client Container Labels
|
||||
|
||||
Automatically printed when a picking container is unloaded into a stage that has a printer configured.
|
||||
|
||||
**Content:** Stock list (items, quantities, UoM, logistic attributes), shipping order code, recipient name/address, carrier code, container code.
|
||||
|
||||
**Parameter:** CLIENT_CONTAINER_LABEL_REPORT (default: STD_RPT_CLIENT_CONTAINER_LABEL_15)
|
||||
|
||||
**Packing list:** CLIENT_CONTAINER_PACKING_REPORT (auto-print packing list when container downloaded to configured stage)
|
||||
|
||||
## Multi-Reading of Labels at Reception
|
||||
|
||||
An alternative to standard receiving processes that allows reading all barcode data from GS1-128 labeled stock/containers in bulk.
|
||||
|
||||
**Applicable to:** Any reception type (supplier, blind, return) when GS1-128 labeled stock arrives.
|
||||
|
||||
**Four modes:**
|
||||
|
||||
| Mode | Use Case |
|
||||
|------|----------|
|
||||
| Loose stock | Receive unexpected loose stock (receipt/return/blind) |
|
||||
| Multi-reference containers | Multi-item containers or return containers |
|
||||
| Mono-reference containers | Single-item containers |
|
||||
| Identical mono-reference containers | Batch of identical single-item containers |
|
||||
|
||||
**Process:** System reads all labels on the item/container until user presses "Done" or max reads is reached. If any data is unreadable, system asks for manual entry (except container code in mono-reference flows — requested at end if not read). Operator can press "Skip" at start to fall back to manual reception.
|
||||
|
||||
During multi-reading: type and height of container can be selected; stock statuses can be entered.
|
||||
|
||||
**Parameters:**
|
||||
|
||||
| Parameter | Default | Description |
|
||||
|-----------|---------|-------------|
|
||||
| MAX_NUM_LABELS_TO_READ | 1 | Max barcode readings per item/container. 1 = multi-reading disabled. Min: 1, Max: 30 |
|
||||
| ALLOW_CREATE_RECEPTION | False | If no receipt found, allow creation of a new receipt from RF (starts without lines; adds stock as received) |
|
||||
|
||||
**Transactions:** CON.RECEP (per container), STK.RECEP (per stock line)
|
||||
|
||||
**ERP:** REF message at receipt close
|
||||
|
||||
## RF Terminal Label Printing
|
||||
|
||||
From the RF terminal, operators can print labels on-demand via "Label printing" in the "Utilities" menu. Used for replacement of lost or damaged labels.
|
||||
|
||||
**Printable objects from RF:**
|
||||
|
||||
| Object | Details |
|
||||
|--------|---------|
|
||||
| Location label | Print for a specific location; format adapted to props, beams, or individual locations |
|
||||
| Container label | Existing container; Code 128 or GS1-128 |
|
||||
| Delivery note | For prepared or dispatched client containers; includes: shipping order code, recipient name/address, carrier, container code, stock detail (item/quantity/UoM/weight/logistic attributes per line) |
|
||||
| Equipment label | Equipment code |
|
||||
| Item label | From item master (no stock required at equipment) |
|
||||
| Dock/stage label | One or multiple labels for docks/stages; select all or specific ones |
|
||||
| Aisle label | Aisle code |
|
||||
| Carrier label | Carrier code from carriers master |
|
||||
|
||||
**Configuration:** For each print operation, must specify: labeling machine or printer, print format, number of copies.
|
||||
|
||||
## Automatic Label Printing
|
||||
|
||||
Some printing happens automatically without explicit operator action:
|
||||
|
||||
| Trigger | Label | Configuration |
|
||||
|---------|-------|---------------|
|
||||
| Container arrives at dock/stage with configured printer | Client container label | CLIENT_CONTAINER_LABEL_REPORT parameter + printer assigned to dock/stage |
|
||||
| Shipping order closed | Delivery note | OUTBOUND_ORDER_PACKINGLIST_AUTOPRINT = True + printer + report name parameters |
|
||||
| ETQ (Labeller) station | Labels applied by labeling machine | Station type 58 in EasyS; no WMS action required |
|
||||
|
||||
## Document & Label Printing Triggers (Full Reference)
|
||||
|
||||
This section consolidates **every known trigger** for each document/label, including the manual menu path, the XML tag (if any) that auto-triggers it from the ERP, and the parameter that selects the report name. A trigger is either **manual** (menu click), **automatic on XML flag** (ERP → WMS), or **automatic on warehouse event** (drop to buffer/dock/stage, order close, etc.).
|
||||
|
||||
### Receipt report ("Bon de réception")
|
||||
|
||||
| Trigger | Notes |
|
||||
|---|---|
|
||||
| Menu **Réceptions → Réception** → select → *Imprimer rapport → Stock reçu* | Manual only |
|
||||
|
||||
### Container label (pre / during reception)
|
||||
|
||||
| Trigger | Notes |
|
||||
|---|---|
|
||||
| Menu **Entrepôt → Support** → select → *Imprimer étiquette* | Manual |
|
||||
| Menu **Entrepôt → Stock** → select line → *Imprimer étiquettes de support* | Manual |
|
||||
| ROR01 tag `<EnableLabelPrinting>` (boolean) | Auto — mono-reference container uses `DEFAUT_RECEPTION_LABEL_CONTAINER_REPORT_NAME` with `NUM_COPIES_RECEPTION_LABEL` copies; multi-reference uses `DEFAULT_RECEPTION_LABEL_MULTIREFERENCE_CONTAINER_REPORT_NAME` |
|
||||
|
||||
### Client container label (shipping)
|
||||
|
||||
| Trigger | Notes |
|
||||
|---|---|
|
||||
| SOR01 tag `<PrpContLabels>` | Auto-print at buffer/dock drop |
|
||||
| SmartUI **"Document printings"** on the buffer/POUMON → *Impression automatique de l'étiquette du support du client* | Auto (requires printer assigned) |
|
||||
| Menu **Entrepôt → Supports** → select a client container → *Imprimer étiquettes clients* | Manual |
|
||||
| Report selected by parameter `CLIENT_CONTAINER_LABEL_REPORT` | — |
|
||||
|
||||
### Packing list — per container ("Liste de conditionnement par support")
|
||||
|
||||
| Trigger | Notes |
|
||||
|---|---|
|
||||
| SmartUI **"Document printings"** on POUMON → *Impression automatique de la liste de colisage* | Auto |
|
||||
| Menu **Sorties → Ordres de sortie** → select order → *Imprimer rapport → Liste de conditionnement (par support)* | Manual |
|
||||
| Menu **Entrepôt → Supports** → select → *Imprimer la liste de colisage* | Manual |
|
||||
| SOR02 tag `<DlvPrintDocumentation>` (boolean, Multi-Carrier module only) | Auto |
|
||||
| Report selected by parameter `CLIENT_CONTAINER_PACKING_REPORT` | — |
|
||||
|
||||
### Packing list — per item ("Liste de conditionnement par article")
|
||||
|
||||
| Trigger | Notes |
|
||||
|---|---|
|
||||
| Parameter `OUTBOUND_ORDER_PACKINGLIST_AUTOPRINT = true` → prints on outbound order close | Auto. Uses `OUTBOUND_ORDER_PACKINGLIST_DEFAULT_PRINTER`, `OUTBOUND_ORDER_PACKINGLIST_NUM_COPIES`, `OUTBOUND_ORDER_PACKINGLIST_REPORT_NAME` |
|
||||
| Menu **Sorties → Ordres de sortie** → select → *Imprimer rapport → Liste de conditionnement (par article)* | Manual |
|
||||
|
||||
### Item label
|
||||
|
||||
| Trigger | Notes |
|
||||
|---|---|
|
||||
| ROR01 tag `<EnablePrintingItemLabel>` (boolean) | Auto — report name from `DEFAULT_RECEPTION_LABEL_ITEM_REPORT_NAME` |
|
||||
| Menu **Données principales → Articles** → select → *Imprimer étiquette* | Manual |
|
||||
|
||||
### Delivery note ("BL")
|
||||
|
||||
| Trigger | Notes |
|
||||
|---|---|
|
||||
| Menu **Sorties → Ordres de sortie** → select → *Imprimer rapport → Note de livraison* | Manual |
|
||||
| Multi-Carrier module : **Livraisons → Transporteurs/Agences** → *Imprimer bon de livraison* | Auto at parcel close, after carrier API call |
|
||||
|
||||
> ⚠️ **No standard auto-print of BL without the Multi-Carrier module.** Common workaround : set the BL report name into `OUTBOUND_ORDER_PACKINGLIST_REPORT_NAME` (normally used for item-level packing list) so that the order-close auto-print triggers the BL.
|
||||
|
||||
### Carrier label *(Multi-Carrier module only)*
|
||||
|
||||
| Trigger | Notes |
|
||||
|---|---|
|
||||
| SOR02 tag `<DlvPrintLabel>` (boolean) | Auto |
|
||||
| Menu **Livraisons → Transporteurs/Agences** → *Imprimer étiquette* | Auto at parcel close |
|
||||
| Menu **Livraisons → Colis** → *Imprimer étiquette du colis* | Manual |
|
||||
|
||||
### Transport sheet / waybill ("Feuille de route")
|
||||
|
||||
| Trigger | Notes |
|
||||
|---|---|
|
||||
| Menu **Configuration → Chargement** → fields *Nombre d'exemplaires* + *Document de transport* (report name) | Configuration only |
|
||||
| Menu **Sorties → Chargements camion** → select → *Feuille de transport* | Manual |
|
||||
|
||||
### Packing list diff report
|
||||
|
||||
| Trigger | Notes |
|
||||
|---|---|
|
||||
| Menu **Sorties → Ordres de sortie** → select → *Imprimer rapport → Différence de liste de conditionnement* | Manual |
|
||||
|
||||
### Location label
|
||||
|
||||
| Trigger | Notes |
|
||||
|---|---|
|
||||
| Menu **Entrepôt → Emplacements** → select one → *Imprimer étiquette* | Manual, single location |
|
||||
| Menu **Entrepôt → Emplacements** → no selection → *Imprimer intervalle d'emplacements* | Manual, range |
|
||||
|
||||
## Interface Summary
|
||||
|
||||
| Label Type | PC Interface | RF Interface |
|
||||
|------------|-------------|--------------|
|
||||
| Container labels (pre-reception) | Warehouse > Containers > "Generate labels" | Receipts > "Generate labels" menu option |
|
||||
| Item labels (during reception) | Receiving > Receipt lines | Receipts > Supplier or Blind |
|
||||
| Container labels (during reception) | Receiving > Receipts > "Enable label printing" | Receipts > Supplier or Blind |
|
||||
| GS1-128 item or container labels | Receiving > Receipt lines | Receipts > Supplier or Blind |
|
||||
| Cutting stock labels | Warehouse > Stock > "Print cutting label" | Utilities > Location adjustment (source label only) |
|
||||
| Any label (replacement) | N/A | Utilities > Label printing |
|
||||
| Location labels | Warehouse Map (2D view) > Print labels | Utilities > Label printing |
|
||||
| Dock/stage labels | Control > Docks and stages > "Print labels" action | Utilities > Label printing |
|
||||
|
||||
## Parameters Reference
|
||||
|
||||
All label-related parameters consolidated:
|
||||
|
||||
| Parameter | Default | Topic |
|
||||
|-----------|---------|-------|
|
||||
| CONTAINER_LABEL_DEFAULT_FORMAT | (blank) | Container label format |
|
||||
| DEFAULT_RECEPTION_LABEL_CONTAINER_REPORT_NAME | STD_RPT_CONTAINER_LABEL_GS1_128 | Container label report |
|
||||
| NUM_COPIES_RECEPTION_LABEL | 1 | Copies per container |
|
||||
| RECEPTION_MAX_NUM_CONTAINER_LABELS_TO_PRINT | 1000 | Max container labels per generation |
|
||||
| ALLOW_PRINT_LABEL_CONTAINER_QUESTION_BLIND_RECEPTION | False | Ask to print container labels in blind reception |
|
||||
| PRODUCT_LABEL_DEFAULT_FORMAT | (blank) | Item label format |
|
||||
| DEFAULT_RECEPTION_LABEL_ITEM_REPORT_NAME | STD_RPT_STOCK_LABEL_GS1_128 | Item label report |
|
||||
| ALLOW_PRINT_LABEL_ITEM_QUESTION_BLIND_RECEPTION | False | Ask to print item labels in blind reception |
|
||||
| MAX_NUM_LABELS_TO_READ | 1 | Multi-reading max reads per item/container |
|
||||
| CUTTING_PRINTER | (blank) | Default printer for cutting labels |
|
||||
| CLIENT_CONTAINER_LABEL_REPORT | STD_RPT_CLIENT_CONTAINER_LABEL_15 | Client container auto-label report |
|
||||
| CLIENT_CONTAINER_PACKING_REPORT | (blank) | Packing list auto-print report |
|
||||
|
||||
## Common Errors
|
||||
|
||||
| Error | Cause | Solution |
|
||||
|-------|-------|----------|
|
||||
| GS1-128 container label cannot be printed | Container code is not a 14-digit GTIN | Ensure container uses a GTIN-compliant alias |
|
||||
| Item GS1-128 label not printing | Item has no GS1 alias | Add a GTIN-format alias to the item master |
|
||||
| Too many label copies blocked | RECEPTION_MAX_NUM_CONTAINER_LABELS_TO_PRINT reached | Raise security limit parameter if legitimate need |
|
||||
| Cutting label not printing during picking | Cutting profile labeling flags not active | Enable "Labeling cut stock" / "Labeling source stock" in cutting profile |
|
||||
| Label printed at wrong printer | Printer not configured on stage/dock or equipment | Assign printer via "Assign Printers" wizard on dock/stage, or check equipment printer config |
|
||||
| Multi-reading fails for specific items | Data unreadable + item has mandatory fields without defaults | Pre-configure default container type, height type; item must have GTIN alias |
|
||||
|
||||
## Related
|
||||
|
||||
- [[container]] — Container types, LPN management, SSCC codes
|
||||
- [[product-item]] — Item master, GTIN aliases, logistic attributes shown on labels
|
||||
- [[reception]] — All label printing at reception time; ROR message enables item labels
|
||||
- [[cutting-stock]] — Cutting stock label specifics: A6 format, source/cut flags, printer priority
|
||||
- [[stations]] — ETQ (type 58) labeller station, dock/stage printer configuration
|
||||
- [[parameters]] — All label parameters listed above
|
||||
@@ -0,0 +1,263 @@
|
||||
---
|
||||
title: "Location"
|
||||
type: concept
|
||||
sources:
|
||||
- areas/layout/index.md
|
||||
- areas/layout/organization.md
|
||||
- areas/layout/site.md
|
||||
- areas/layout/location_types/location_types.md
|
||||
- areas/inventory_management/locations/locations.md
|
||||
- areas/inventory_management/locations/location_lock_types.md
|
||||
- areas/inventory_management/locations/locations_features.md
|
||||
- areas/inventory_management/locations/reports/Locations_errors_traceability.md
|
||||
- sources/archives/30_Reapprovisionnement_2_sous_entrepots_zone_intermediaire.md
|
||||
related:
|
||||
- concepts/container.md
|
||||
- concepts/stock.md
|
||||
- concepts/putaway.md
|
||||
- concepts/replenishment.md
|
||||
- concepts/count.md
|
||||
- concepts/defragmentation.md
|
||||
- concepts/task.md
|
||||
- concepts/crossdocking.md
|
||||
- concepts/stations.md
|
||||
last_compiled: "2026-04-17"
|
||||
---
|
||||
|
||||
# Location
|
||||
|
||||
## Overview
|
||||
|
||||
A location is any physical or virtual space capable of storing loose stock and/or containers within the warehouse. Locations are the fundamental spatial unit of Easy WMS: every piece of stock must have a location, every container must be placed in a location, and every movement task has a source and destination location.
|
||||
|
||||
Locations sit within a hierarchical spatial model: Organization → Warehouse (Site) → Zone → Aisle → Side → Column/Row. This hierarchy determines how putaway strategies are applied, how routes are calculated, and how work zones restrict equipment access. The configuration of each location — its type, storage mode, capacity, and logics — determines which processes can use it and how the system manages stock within it.
|
||||
|
||||
Locations are created and configured by implementers using the EasyS or Easy Assistant configuration tools. End users cannot create or delete physical locations; they can only manage stock within them and perform administrative operations such as locking, relabeling, or changing work zones.
|
||||
|
||||
## Types
|
||||
|
||||
### Virtual locations
|
||||
|
||||
Virtual locations are automatically created by the WMS configurators and cannot be modified or deleted. They have infinite capacity and no physical constraints. Virtual locations are exclusively used with containers (never loose stock in standard processes).
|
||||
|
||||
| Virtual location | Purpose |
|
||||
|---|---|
|
||||
| **ASN** | Pre-notified containers awaiting physical receipt. When ERP sends an ASN message, the container is placed here until it arrives at the dock. |
|
||||
| **Lost_Found** | Containers that are physically lost or whose system location mismatches the physical reality. Operators or the system can send containers here manually. |
|
||||
| **Mov** | Containers currently in transit through an automatic warehouse (moving on conveyors or AS/RS). |
|
||||
|
||||
### Physical location types
|
||||
|
||||
Physical locations have concrete capacity, dimension, and storage logic constraints. The type determines the storage strategy and what the system controls.
|
||||
|
||||
| Location type | Stores | System controls | Behavior |
|
||||
|---|---|---|---|
|
||||
| **Conventional rack (uncontrolled)** | Containers + loose stock | Height, weight, capacity | Direct unit access; no position tracking within location |
|
||||
| **Conventional rack** | Containers | Height, weight, capacity, position (X/Y) | Direct unit access; full position tracking; supports depth management (automatic warehouses) |
|
||||
| **Compact mono (Drive-In)** | Containers | Height, weight, capacity, depth | LIFO; one item type per channel; high-density storage |
|
||||
| **Compact multi (Drive-In)** | Containers | Height, weight, capacity, depth | LIFO; different items per height; used with Pallet Shuttle systems |
|
||||
| **APS (Automatic Pallet Shuttle)** | Containers | Height, weight, capacity, depth | LIFO only; exclusive to automatic warehouses; satellite cart on AS/RS |
|
||||
| **APSFIFO** | Containers | Height, weight, capacity, depth | FIFO by default (load one side, unload other); can be closed to LIFO; exclusive to automatic warehouses |
|
||||
| **Dynamic (gravity)** | Containers | Height, weight, capacity, depth | FIFO; rollers on inclined rails; one item per height; separate load/unload aisles |
|
||||
| **Pushback** | Containers | Height, weight, capacity, depth | LIFO; containers push back when loaded, fall forward on extract |
|
||||
| **Cantilever** | Containers + loose stock | Weight, capacity | For long/irregular loads (pipes, profiles, sheets) |
|
||||
| **Buffer** | Containers + loose stock | Capacity | Intermediate staging; not for final storage; floor-level |
|
||||
| **Dock** | Containers + loose stock | Capacity | Receipt/shipping docks (3 subtypes: receipt, shipping, or both) |
|
||||
| **Equipment** | Containers + loose stock | Capacity | On-board or handheld locations (forklifts, carts); includes picking slots for multi-order preparation |
|
||||
| **Conveyor** | Containers + loose stock | Capacity | E-Commerce module only; transports stock from receive point to carrier dock |
|
||||
|
||||
#### Compact sub-types: Pallet Shuttle and APS
|
||||
|
||||
The **Pallet Shuttle** is a semi-autonomous cart introduced into a compact channel. It moves containers to the first free position using LIFO or FIFO (configurable when empty). Controlled via WiFi.
|
||||
|
||||
The **APS** is a satellite cart integral to the AS/RS stacker crane. It is fully automated, managed by Easy WMS, and exclusively LIFO (or FIFO for APSFIFO).
|
||||
|
||||
#### Conventional rack: putaway and extraction errors
|
||||
|
||||
In conventional rack and APS locations, if a container physically cannot be deposited or extracted, the system marks a **putaway error** or **extraction error** at the specific position. Affected positions are excluded from future location searches. Errors are cleared manually from the Locations view.
|
||||
|
||||
#### Transit buffer between sub-warehouses
|
||||
|
||||
When two sub-warehouses cannot share equipment (e.g., only high-reach forklift accesses a mezzanine, but it is barred from the ground-floor picking area), an **intermediate Buffer location** lets two different equipment types hand stock off to each other.
|
||||
|
||||
**Pattern** — `Sub-warehouse B reserve → Transit buffer → Sub-warehouse A picking`:
|
||||
|
||||
- EasyS element of type **"Transport"** with aisles configured.
|
||||
- Its sub-location (double-click the transport element) is the actual buffer location. **EasyS creates it as type `Automatic` — it must be changed manually to type `Buffer`**, otherwise the RFT rejects the container scan with "le support n'existe pas".
|
||||
- The transport sub-warehouse must be reachable by both equipment groups.
|
||||
|
||||
**Routing**:
|
||||
|
||||
| Route from | Route to |
|
||||
|---|---|
|
||||
| Transport element | Sub-warehouse A (picking) |
|
||||
| Both equipment groups | Transport element |
|
||||
| Equipment group PICKING | Both sub-warehouses |
|
||||
| Equipment group RESERVE | Sub-warehouse B only |
|
||||
|
||||
Routes default to transport type `Galileo` — manually flip them to `RF` for a manual warehouse.
|
||||
|
||||
**Flow at runtime**:
|
||||
1. Replenishment task created from reserve (B) to picking location (A).
|
||||
2. RESERVE equipment (e.g., `CACES06`) takes the task → drops container on the transit Buffer.
|
||||
3. PICKING equipment (e.g., `PIK01`) picks the task in **Tâches → Tâches de réapprovisionnement** → drops stock at the picking destination.
|
||||
|
||||
See [concepts/replenishment.md](replenishment.md#inter-sub-warehouse-replenishment-via-intermediate-buffer) for the matching replenishment flow.
|
||||
|
||||
## Location coding
|
||||
|
||||
Physical locations are coded as: **A** (Aisle) **S** (Side) **X** (Column) **Y** (Row).
|
||||
|
||||
Example: `3izq0205` = Aisle 3, left side, column 02, row 05.
|
||||
|
||||
Labeling formats depend on rack type:
|
||||
- **Upright labels**: for compact, cantilever, dynamic, pushback; placed on uprights showing all heights for a column
|
||||
- **Beam labels**: for conventional, dynamic, pushback; placed on beam at level 1 showing all heights
|
||||
- **Location labels**: for rack and picking locations; one label per cell
|
||||
|
||||
Labels are printed in A4 format from the "Locations" screen or the RF terminal Utilities menu.
|
||||
|
||||
## Storage modes
|
||||
|
||||
Each physical location has a **storage mode** defining what it can hold:
|
||||
|
||||
| Mode | Containers | Loose stock |
|
||||
|---|---|---|
|
||||
| Container | Yes | No |
|
||||
| Stock | No | Yes |
|
||||
| Container and stock | Yes | Yes (simultaneously) |
|
||||
| Container or stock | Yes | Yes (but not simultaneously) |
|
||||
|
||||
Mode changes are restricted by location type: Rack, APS, and Drive-In locations have fixed modes.
|
||||
|
||||
## Storage logics (per location)
|
||||
|
||||
Location behavior is governed by logics configured on each location. These control which processes can use the location:
|
||||
|
||||
| Logic | Effect |
|
||||
|---|---|
|
||||
| Allow putaway | Location is valid for putaway location search |
|
||||
| Allow replenishment (target) | Valid as destination for replenishment |
|
||||
| Allow replenishment source | Valid as source stock for automatic replenishment |
|
||||
| Allow replenishment origin (tense flow) | Valid as replenishment source for tense flow buffer |
|
||||
| Allow shipping | Stock here is eligible for stock assignment for outbound orders |
|
||||
| Allow count | Stock here is valid for automatic count processes |
|
||||
| Allow assignment of item to location | Can be configured as a picking dedicated location (PDL) |
|
||||
| Allow mixing of container types | Multiple container types can coexist in this location |
|
||||
| Allow empty containers | Empty containers can be stored here |
|
||||
| Is crossdocking location | Used to store stock expected to ship soon; included in XD location search |
|
||||
| Delete empty containers | On/Off/Ask: controls whether empty containers are auto-deleted after extraction |
|
||||
|
||||
## Location attributes
|
||||
|
||||
Key attributes visible in the "Locations" view:
|
||||
|
||||
| Attribute | Description |
|
||||
|---|---|
|
||||
| Storage mode | Container / Stock / Container and stock / Container or stock |
|
||||
| Type | Location type (conventional, compact, buffer, dock, etc.) |
|
||||
| Rack type | Rack configuration for rack-type locations |
|
||||
| Work zone | Restricts which equipment can access this location |
|
||||
| Storage zone | Groups locations for putaway strategy targeting |
|
||||
| Control digit | Short code for location confirmation (voice/RF terminals) |
|
||||
| Station | Station this location belongs to (if any) |
|
||||
| Sub-warehouse | Sub-warehouse this location belongs to |
|
||||
| Coordinates | Aisle, side, X, Y, depth, stackability |
|
||||
| Maximum weight | kg capacity |
|
||||
| Height | m — used for container height compatibility checks |
|
||||
| Last count date | When this location was last physically counted |
|
||||
| Full (manually marked) | Location excluded from putaway search; cleared when stock is added manually |
|
||||
| Crossdocking location | Flag for crossdocking eligibility |
|
||||
| Picking dedicated location | Flag indicating item assignment (PDL) |
|
||||
| Compact location data | Behavior (LIFO/FIFO), loading sequence, initial FIFO flag |
|
||||
| Allowed containers quantity | Per-container-type limits (APS locations only) |
|
||||
| Errors traceability | Link to putaway/extraction error history (rack + APS only) |
|
||||
|
||||
## Business rules
|
||||
|
||||
- The system will not propose a location that is marked as **full** for automatic putaway.
|
||||
- **Putaway errors** and **extraction errors** on rack/APS locations exclude those positions from the location search until manually cleared.
|
||||
- Locking a location propagates immediately to active reserves, assignments, and tasks, potentially canceling or re-releasing them depending on lock type.
|
||||
- In **compact mono** locations, all containers in the channel must have the same item and logistic attributes.
|
||||
- In **APS** locations, capacity changes require the location and all sibling locations to be empty.
|
||||
- **FIFO/LIFO** behavior of pallet shuttle locations can only be changed when the location is empty.
|
||||
- Container **compaction** on FIFO shuttle locations moves containers toward the unload aisle, freeing space on the load side.
|
||||
- Stock in a location with an extraction error may not be assignable for shipping; the system will search for alternative stock if a picking task fails.
|
||||
|
||||
## Configuration
|
||||
|
||||
### Location locks
|
||||
|
||||
Lock types are created in `Masters > Lock types`. Each lock type defines which operations remain allowed:
|
||||
|
||||
| Lock operation | Effect when disallowed |
|
||||
|---|---|
|
||||
| Allow picking | Picking tasks cannot be created for stock here |
|
||||
| Allow shipping | Stock is excluded from assignment for outbound orders |
|
||||
| Allow putaway | Location excluded from putaway search |
|
||||
| Allow counting | Location excluded from count processes |
|
||||
| Allow moving | No movement tasks for this location |
|
||||
| Allow replenishment | Replenishment assignments cancelled; picking tasks adjusted |
|
||||
| Allow reserving | Existing reserves recalculated (priority to highest-priority orders) |
|
||||
| Allow internal consumption | Manufacturing consumption blocked |
|
||||
|
||||
Lock types can be **exclusive** (only one lock at a time) or cumulative (multiple locks allowed). A lock end date is optional; locks can be cleared manually via the Unlock action.
|
||||
|
||||
### Storage logic changes
|
||||
|
||||
From the "Locations" view, users can modify (PC only):
|
||||
- Change shipping logic (allow shipping, allow count, allow putaway, picking dedicated, crossdocking flags)
|
||||
- Change container behavior (allow empty, allow mix types, delete empty)
|
||||
- Change storage mode (with constraints based on type and current stock)
|
||||
- Change work zone / storage zone
|
||||
- Change rack type (requires empty location)
|
||||
- Change allowed containers quantity (APS only, when empty)
|
||||
|
||||
## Interface
|
||||
|
||||
**UI path:** "Locations" view in the **"Warehouse"** menu (PC)
|
||||
|
||||
**RF terminal:** Label printing via **"Utilities"** menu
|
||||
|
||||
### Operations available in the Locations view
|
||||
|
||||
| Operation | Hardware | Notes |
|
||||
|---|---|---|
|
||||
| Label printing | PC + printer | Range selection; format by label position (beam/upright/location) |
|
||||
| Container creation | PC | Manually register a physically present container not in WMS |
|
||||
| Loose stock creation | PC | Creates stock line; treated as stock adjustment |
|
||||
| Lock / Unlock | PC | Select lock type, optional end date and comment |
|
||||
| Work zone / Storage zone change | PC | Expands/restricts equipment access |
|
||||
| Send to Lost & Found | PC | System shows containers in location; physical is empty |
|
||||
| Extract to PK conveyor | PC | Move containers to picking conveyor |
|
||||
| Extract to PS (outbound conveyor) | PC | Move containers to outbound conveyor |
|
||||
| Relocation | PC | Automatic / to aisle / to specific location |
|
||||
| Mark full / Unmark full | PC | Manual full flag (non-rack locations only) |
|
||||
| Correct deposit/extraction error | PC | Rack/APS locations only |
|
||||
| Change FIFO/LIFO behavior | PC or RFT | Empty compact locations with FIFO config only |
|
||||
| Compacting | PC or RFT | FIFO compact locations with containers stored |
|
||||
| Item-to-location assignment | PC | Set PDL for a specific item (manual warehouse) |
|
||||
| Location errors trace | PC | Report of putaway/extraction errors by date range |
|
||||
|
||||
## Common errors
|
||||
|
||||
| Symptom | Cause | Solution |
|
||||
|---|---|---|
|
||||
| Location not offered in putaway | Location is full, locked for putaway, wrong storage zone, or type/capacity mismatch | Check full flag, lock types, storage zone configuration, and container type compatibility |
|
||||
| Extraction error persists | Container could not be extracted (obstruction); system stops offering this position | Physically resolve obstruction, then use "Correct extraction error" in Locations view |
|
||||
| Stock shows in WMS but location is physically empty | Container was moved without system update | Use "Send to Lost & Found" to reconcile; investigate transaction history |
|
||||
| Cannot change FIFO/LIFO | Location is not empty | Empty the location completely first |
|
||||
| Lock not recalculating reserves | Lock type has "Allow reserving" enabled | Only locks with "Allow reserving" disabled trigger reserve recalculation |
|
||||
| Cannot change storage mode to Stock | Location has container tasks pending | Cancel or complete tasks first |
|
||||
|
||||
## Related
|
||||
|
||||
- [[container]] — stored in locations; location type determines container compatibility and position tracking
|
||||
- [[stock]] — stock records are always linked to a location; location logics determine stock eligibility for picking/shipping/replenishment
|
||||
- [[putaway]] — putaway strategies target specific locations via zone/type/logic filters
|
||||
- [[replenishment]] — PDLs are locations with item assignment; replenishment source/target logics control eligibility
|
||||
- [[count]] — count processes filter on "Allow count" logic; count partition assignments link items to location positions
|
||||
- [[defragmentation]] — defragmentation moves stock between locations to consolidate and optimize space
|
||||
- [[task]] — all movement tasks have source/destination locations; location type determines coordinate reporting
|
||||
- [[crossdocking]] — crossdocking locations flagged with "Is crossdocking" are reserved for near-term outbound stock
|
||||
- [[stations]] — stations group locations into functional zones for routing and process assignment
|
||||
@@ -0,0 +1,231 @@
|
||||
---
|
||||
title: "Manual Movements"
|
||||
type: concept
|
||||
sources:
|
||||
- areas/inventory_management/manual_movements/manual_movements.md
|
||||
related:
|
||||
- concepts/location.md
|
||||
- concepts/container.md
|
||||
- concepts/task.md
|
||||
- concepts/stock.md
|
||||
- concepts/stock-adjustment.md
|
||||
last_compiled: "2026-04-10"
|
||||
---
|
||||
|
||||
# Manual Movements
|
||||
|
||||
## Overview
|
||||
|
||||
**Manual Movements** allow an operator to inform EasyWMS of the **correct location of a container or stock** when:
|
||||
- Stock or a container was physically moved without informing EasyWMS first, or
|
||||
- Stock or a container appeared in a location different from the one recorded in the system
|
||||
|
||||
This is a corrective, out-of-band mechanism — it does not create picking or replenishment tasks, but directly updates the stock/container records in the system to match physical reality.
|
||||
|
||||
Manual movements are available from **both manual and automatic warehouses** (at a picking conveyor for automatic).
|
||||
|
||||
All manual movements generate `STK.MOVE` transactions (and `CON.MOVE` for container moves).
|
||||
|
||||
> **Important:** Manual movements do **not** create guided tasks — they directly apply the relocation. For planned container movements, use task-based processes (putaway, replenishment, etc.).
|
||||
|
||||
---
|
||||
|
||||
## Types of Manual Movements
|
||||
|
||||
### 1. Moving Stock from One Location to Another
|
||||
|
||||
**When:** Loose stock (not in a container) was found in a different location than recorded.
|
||||
|
||||
**Restrictions:**
|
||||
- Cannot move to a location in a different warehouse
|
||||
- If the stock has locks blocking movement, the operator is prompted to confirm
|
||||
- Cutting stock (non-consolidating UoM): all stretches at the location must be moved individually and in full; partial moves not allowed if multiple cutting records exist
|
||||
|
||||
**Transaction:** `STK.MOVE`
|
||||
|
||||
**Interface:**
|
||||
- RFT: `Utilities > Manual Movement`
|
||||
|
||||
---
|
||||
|
||||
### 2. Moving Stock from a Location into a Container
|
||||
|
||||
**When:** Loose stock recorded at a location was actually placed on a container.
|
||||
|
||||
**Restrictions:**
|
||||
- Cannot move to a container in a different warehouse
|
||||
- Locks blocking movement prompt confirmation
|
||||
- Cannot move to/from an ASN container (pre-notified, not yet received)
|
||||
- Cannot move client stock to a non-client container (or vice versa)
|
||||
- Cutting stock: same indivisibility restrictions as above
|
||||
|
||||
**Transaction:** `STK.MOVE`
|
||||
|
||||
**Interface:**
|
||||
- RFT: `Utilities > Manual Movement`
|
||||
|
||||
---
|
||||
|
||||
### 3. Moving Stock Between Containers
|
||||
|
||||
**When:** Stock was found in a different container than recorded.
|
||||
|
||||
**Valid in both manual and automatic warehouses.** At a picking conveyor, valid as long as neither source nor destination container/stock has active replenishment, picking, or counting tasks.
|
||||
|
||||
**Special case — virtual Movement location:** Stock can be moved between containers even when one container is at a PK station and in the "Movement" virtual location (i.e., in transit).
|
||||
|
||||
**Movement of client stock** is allowed when there is a matching shipping order.
|
||||
|
||||
**Restrictions:**
|
||||
- Cannot move to a container in a different warehouse
|
||||
- Cannot move to/from ASN containers
|
||||
- Cannot move client stock to non-client container (or vice versa)
|
||||
- Cutting stock: same indivisibility restrictions
|
||||
|
||||
**Transaction:** `STK.MOVE`
|
||||
|
||||
**Interface:**
|
||||
- RFT: `Utilities > Manual Movement`
|
||||
- Workstation: `Workstations > Picking > Others > Move Stock`
|
||||
|
||||
---
|
||||
|
||||
### 4. Moving Stock Between Containers with Divisions
|
||||
|
||||
**When:** Stock was in a division of one container at a PK station and was moved to a division of another container.
|
||||
|
||||
**Automatic warehouse only** (picking conveyor). Valid if source/destination stock/container has no active replenishment, picking, or counting tasks.
|
||||
|
||||
Client stock movement allowed when matching shipping order exists.
|
||||
|
||||
Cutting stock indivisibility restrictions apply.
|
||||
|
||||
**Transaction:** `STK.MOVE`
|
||||
|
||||
**Interface:**
|
||||
- Workstation: `Workstations > Picking > Others > Move Stock`
|
||||
|
||||
---
|
||||
|
||||
### 5. Moving Stock Between Divisions (Same Container)
|
||||
|
||||
**When:** Stock within a container with divisions at a PK station was moved from one division to another within the same container.
|
||||
|
||||
**Automatic warehouse only** (picking conveyor).
|
||||
|
||||
Cutting stock indivisibility restrictions apply.
|
||||
|
||||
**Transaction:** `STK.MOVE`
|
||||
|
||||
**Interface:**
|
||||
- Workstation: `Workstations > Picking > Others > Move Stock`
|
||||
|
||||
---
|
||||
|
||||
### 6. Moving a Container
|
||||
|
||||
**When:** A container was found at a different location than recorded in EasyWMS.
|
||||
|
||||
EasyWMS updates the container's location record.
|
||||
|
||||
**If the container has replenishment assignments:**
|
||||
- Replenishment source assignments are **canceled**
|
||||
- Picking tasks that depended on that stock are decremented or canceled (if all assigned stock was in the moved container)
|
||||
- Affected order lines are re-released for stock re-assignment
|
||||
|
||||
**Restrictions:**
|
||||
- Cannot move an ASN container (pre-notified, not yet received)
|
||||
- Cannot move to a location in a different warehouse
|
||||
- If container has movement-blocking locks, operator is prompted to confirm
|
||||
|
||||
**Transactions:** `STK.MOVE` + `CON.MOVE`
|
||||
|
||||
**Interface:**
|
||||
- RFT: `Utilities > Manual Movement`
|
||||
|
||||
---
|
||||
|
||||
### 7. Moving Cutting Stock
|
||||
|
||||
Cutting stock (non-consolidating UoM) has special behavior due to its indivisible nature.
|
||||
|
||||
**Process:**
|
||||
1. Operator scans source container/location and item
|
||||
2. Must enter the **exact length** to move (must match an existing stretch exactly)
|
||||
3. If the entered length doesn't match any stretch, an error is shown
|
||||
4. The label "Maximum quantity" shows the longest stretch at the location
|
||||
5. Operator can use "List Stock" action to see and select all stretches; "All" action loads all stretches
|
||||
|
||||
**Key rule:** Cutting stock can only be moved **entire stretch by entire stretch** — no partial moves.
|
||||
|
||||
**Interface:**
|
||||
- RFT: `Utilities > Manual Move`
|
||||
|
||||
---
|
||||
|
||||
### 8. Moving Stock from Partitions
|
||||
|
||||
**When:** Loose stock in one or more partitions of a picking location was recorded in a different partition.
|
||||
|
||||
**Restrictions:**
|
||||
- Cannot know the total quantity in a partition — if a partition becomes empty, the operator must explicitly mark it
|
||||
- Cannot move a partition itself, only the stock within it
|
||||
- Cannot change to a partition in another warehouse
|
||||
|
||||
**Transaction:** `STK.MOVE`
|
||||
|
||||
**Interface:**
|
||||
- RFT: `Utilities > Manual Move`
|
||||
|
||||
---
|
||||
|
||||
## Transactions Summary
|
||||
|
||||
| Transaction | Trigger |
|
||||
|---|---|
|
||||
| `STK.MOVE` | Any stock location change (all move types) |
|
||||
| `CON.MOVE` | Container location change (move container type) |
|
||||
|
||||
---
|
||||
|
||||
## Business Rules
|
||||
|
||||
- Manual movements do **not** generate guided tasks — they directly update records.
|
||||
- All moves are **within the same warehouse**. Cross-warehouse moves are not supported.
|
||||
- ASN containers (pre-notified, not yet received) **cannot be moved** by manual movement.
|
||||
- Client stock (assigned to a shipping order) can only move to another client container with a matching shipping order.
|
||||
- Locks blocking movement prompt operator confirmation — the move **can still proceed** at the operator's discretion.
|
||||
- For cutting stock with multiple stretches of non-consolidating UoM, **only one stretch can be moved at a time**.
|
||||
- Moving a container with replenishment assignments cancels those assignments and triggers task decrement/cancellation on affected picking tasks.
|
||||
|
||||
---
|
||||
|
||||
## Interface
|
||||
|
||||
| Path | Equipment |
|
||||
|---|---|
|
||||
| `RFT > Utilities > Manual Movement` | RFT |
|
||||
| `Workstations > Picking > Others > Move Stock` | PC (automatic warehouse) |
|
||||
| `RFT > Utilities > Manual Move` (cutting stock, partitions) | RFT |
|
||||
|
||||
---
|
||||
|
||||
## Common Errors
|
||||
|
||||
| Symptom | Cause | Solution |
|
||||
|---|---|---|
|
||||
| "Different warehouse" error | Attempting to move to a container/location in another warehouse | Keep moves within the same warehouse |
|
||||
| Cannot move ASN container | Container is pre-notified but not yet received | Complete or cancel the reception first |
|
||||
| Cutting stock length not found | Entered quantity does not match any stretch exactly | Use "List Stock" to see all stretches and select the exact one |
|
||||
| Picking tasks unexpectedly canceled after container move | Container had replenishment source assignments | Expected behavior; affected lines are re-released for reassignment |
|
||||
| Cannot move client stock | Target container is not a client container for the same order | Move to a matching client container or complete the shipping process |
|
||||
|
||||
---
|
||||
|
||||
## Related
|
||||
|
||||
- [[container]] — Container moves update CON.MOVE; moving a container with replenishment assignments cascades to task cancellation
|
||||
- [[location]] — All moves are within a single warehouse; virtual locations (Movement) are valid endpoints for container moves in transit
|
||||
- [[stock]] — STK.MOVE transactions update all stock records; manual movements are the corrective path when physical and system records diverge
|
||||
- [[task]] — Manual movements can cancel/decrement picking/replenishment tasks; they do not create guided tasks themselves
|
||||
- [[stock-adjustment]] — Complement to manual movements: adjustments correct quantity/UoM/attributes; manual movements correct location
|
||||
@@ -0,0 +1,144 @@
|
||||
---
|
||||
title: "Mechanical Elements — Acronyms, Conveyors, Station Codes"
|
||||
type: concept
|
||||
sources:
|
||||
- sources/archives/Acronymes_elements_mecaniques.md
|
||||
- sources/archives/Convoyeur_terminologie.md
|
||||
- sources/archives/Catalogue_TK.md
|
||||
- sources/archives/Codes_de_station.md
|
||||
related:
|
||||
- concepts/stations.md
|
||||
- architecture/galileo-integration.md
|
||||
- operations/galileo-simulation.md
|
||||
- operations/galileo-troubleshooting.md
|
||||
- modules/pallet-shuttle.md
|
||||
- modules/aps3d.md
|
||||
- modules/movirack.md
|
||||
- modules/agv.md
|
||||
last_compiled: "2026-04-17"
|
||||
---
|
||||
|
||||
# Mechanical Elements — Acronyms, Conveyors, Station Codes
|
||||
|
||||
## Overview
|
||||
|
||||
Reference page for the physical hardware vocabulary used in automated Mecalux installations: machine acronyms (ES / EN), conveyor types and their WMS tracking behaviour, miniload (TK) nomenclature, and the station-code matrix across French, Spanish and English. This page is the cross-walk between shop-floor labels and the station types registered in EasyWMS.
|
||||
|
||||
## 1. Machine & equipment acronyms (ES → EN)
|
||||
|
||||
All Mecalux mechanical acronyms are in Spanish; the translation matters because GALILEO logs, vendor drawings and EasyS labels mix languages.
|
||||
|
||||
| Acronym | Español | English |
|
||||
|---------|---------|---------|
|
||||
| **AP** | Apilador de Paletas Vacías | Empty Pallet Stacker |
|
||||
| **APC** | Apilador de Paletas de Cadenas | Chain Pallet Stacker |
|
||||
| **APR** | Apilador de Paletas de Rodillos | Roller Pallet Stacker |
|
||||
| **APS** | Carro Satélite Automático / Pallet Shuttle Automático | Automatic Pallet Shuttle |
|
||||
| **APS200** | Pallet Shuttle Automático (supercondensadores) | Automatic Pallet Shuttle (SUPERCAP) |
|
||||
| **ATC** | Abatible Transportador de Cadenas | Lift-up gate Chain Conveyor |
|
||||
| **CT** | Carro Transferidor | Transfer Car |
|
||||
| **2ECDF** | — | Double Telescopic Fork with Combined Belts |
|
||||
| **ECDF** | — | Telescopic Fork (belt, double) |
|
||||
| **EMS** | Sistema electrovía aérea | Overhead Electric Monorail |
|
||||
| **EP** | Elevador Paletas | Pallet Lift |
|
||||
| **EPDF** | — | Telescopic Fork (double fond) |
|
||||
| **EPSF** | — | Telescopic Fork (simple fond) |
|
||||
| **IMS** | Sistema electrovía invertida | Inverted Electric Monorail |
|
||||
| **LBC** | Transportador de Banda recto Continuo | Continuous Belt Conveyor |
|
||||
| **LRA** | Transportador de Rodillos de Acúmulo | Buffering Roller Conveyor |
|
||||
| **LRAB** | Transportador de Rodillos de Acúmulo con Báscula | Scale Roller Conveyor (with weigh-bridge) |
|
||||
| **LRC** | Transportador de Rodillos recto Continuo | Continuous Roller Conveyor |
|
||||
| **LRD** | Transportador de Rodillos Oblicuo de salida | Diverting (outlet) Roller Conveyor |
|
||||
| **LRI** | Transportador de Rodillos Oblicuo de inducción | Angle Induction Roller Conveyor |
|
||||
| **LRL** | Transportador de Rodillos Libres | Free Roller Conveyor (gravity) |
|
||||
| **LTM** | Transportador Mixto | Box Transfer / Cross transfer (90°) |
|
||||
| **LZ** | Lanzadera | Shuttle car |
|
||||
| **ML-50** | Transelevador Monocolumna (1 caja ≤ 50 kg) | Single-Mast Boxes Stacker Crane |
|
||||
| **ML-100** | Transelevador Monocolumna (1 caja ≤ 100 kg) | Single-Mast Boxes Stacker Crane |
|
||||
| **MLB-100Q** | Transelevador Bicolumna (4 cajas ≤ 50 kg) | Double-Mast Boxes Stacker Crane |
|
||||
| **MT** | Transelevador Monocolumna (paletas) | Single-Mast Pallet Stacker Crane |
|
||||
| **MTB** | Transelevador Bicolumna (paletas) | Double-Mast Pallet Stacker Crane |
|
||||
| **PSS** | Pallet Shuttle Semiautomático | Semi-Automatic Pallet Shuttle |
|
||||
| **PTL** | Pick to Light / Put to Light | Pick-to-Light / Put-to-Light |
|
||||
| **SGA** | Sistema Gestión Almacenes | WMS |
|
||||
| **STL** | Sistema de Transporte Ligero | Miniload (light transport system) |
|
||||
| **STP** | Sistema de Transporte Pesado | Automated Warehouse / Pallet stacker cranes |
|
||||
| **TC** | Transportador de Cadenas | Chain Conveyor |
|
||||
| **TG** | Transportador Giratorio | Turntable Conveyor |
|
||||
| **TM** | Transportador Mixto | Cross Transfer (rollers + chains) |
|
||||
| **TR-15** | Transportador de Rodillos (europaleta) | Roller Conveyor (Euro pallet) |
|
||||
|
||||
> The complete list (~100 acronyms including station codes CME/PIE/PK/PS…) lives on [Confluence](https://easywmsfrance.atlassian.net/wiki/spaces/EF/pages/3000652529673). Cross-reference with section 3 (Station codes) below.
|
||||
|
||||
## 2. Conveyor terminology & WMS tracking behaviour
|
||||
|
||||
Conveyor type drives whether EasyWMS can reliably track a container on the conveyor, and therefore how it should be modelled in EasyS.
|
||||
|
||||
| Type | Capacity | WMS tracking |
|
||||
|------|----------|--------------|
|
||||
| **LRA** (Buffering roller) | 1 container | Tracking moves LRA → LRA on each hop; container can be **stopped** on an LRA |
|
||||
| **LRC** (Continuous roller) | multiple containers | Containers advance until the end sensor trips — **tracking is generally lost** on LRC |
|
||||
| **LRAB** (Scale roller) | 1 container | Acts like LRA, with an integrated scale (weight verification) |
|
||||
| **LTM** (Cross transfer) | 1 container | 90° change of direction; on multidirectional tables set `routing options = 1` for each feeder conveyor |
|
||||
| **LRD** (Diverting outlet) | — | Oblique outlet — splits flow off a main line |
|
||||
| **LRI** (Angle induction) | — | Oblique inlet — merges flow onto a main line |
|
||||
| **LBC** (Belt conveyor) | multiple containers | **Tracking lost** when a container passes a belt conveyor |
|
||||
| **LRL** (Free roller / gravity) | — | **No tracking** on LRL; WMS treats the position as a **buffer** (typically with an outbound station upstream) |
|
||||
| Pedestrian passage | — | Elevated walkway — not a conveyor; no container flow |
|
||||
|
||||
**Practical consequence:** LBC and LRL segments behave as "blind" zones. If a PS (shipping conveyor) outputs onto an LRL, WMS closes the tracking at the PS and considers the container parked in a buffer.
|
||||
|
||||
## 3. Station codes — FR / ES / EN matrix
|
||||
|
||||
Station codes are shared by EasyWMS and GALILEO. Each station is uniquely identified by the couple **(Type, Number)**. Keep this table as the source of truth when cross-referencing documentation between regions.
|
||||
|
||||
| Type | Code FR | Description FR | Code ES | Code EN | Description EN |
|
||||
|------|---------|----------------|---------|---------|----------------|
|
||||
| 0 | MAG | Magasin | ALM | AIS | Aisle |
|
||||
| 1 | ML / TK | Miniload / Transstockeur | TRASLO | STC | Stacker crane |
|
||||
| 2 | PK | Poste de picking | PK | PK | Picking station |
|
||||
| 3 | PIE | Poste d'identification d'entrées | PIE | EIP | Entry Identification Post |
|
||||
| 4 | PS | Poste de sortie | PS | SC | Shipping Conveyor |
|
||||
| 5 | REAC | Poste de reconditionnement | REAC | REAC | Reconditioning station |
|
||||
| 7 | REJ | Poste de rejet | RECH | REJ | Rejection post |
|
||||
| 9 | TE / ME | Table d'entrée au magasin | ME | IC | Input Conveyor |
|
||||
| 10 | TS / MS | Table de sortie du magasin | MS | OC | Output Conveyor |
|
||||
| 11 | MU | Table de recherche d'emplacement | MU | MU | Location Conveyor |
|
||||
| 13 | EMP / APL | Empileur | APL | STK | Stacker |
|
||||
| 14 | NAV / LANZ | Navette | LANZ | SHU | Shuttle |
|
||||
| 16 | TP / MP | Table de préparation | MP | MP | Picking Preparation Station |
|
||||
| 18 | PKE | Poste d'entrée au PK | PKE | PKE | Picking Entry Post |
|
||||
| 20 | ET | Station de transit | ET | TS | Transit Station |
|
||||
| 21 | CME | Poste de contrôle de table d'entrée | CME | ICS | Input Control Station |
|
||||
| 42 | RET | Poste de rétention de conteneurs | RET | RET | Container Retention Post |
|
||||
| 53 | PCS | Poste de contrôle de séquençage | PCS | SCP | Sequencing Control Point |
|
||||
| 54 | PB | Buffer de proximité | PB | PB | Proximity Buffer |
|
||||
| 55 | ECB | Buffer de conteneurs vides | ECB | ECB | Empty Container Buffer |
|
||||
| 58 | ETQ | Étiqueteuse | ETQ | ETQ | Labeller |
|
||||
| 62 | LIFT | Élévateur | LIFT | LIFT | Lift |
|
||||
|
||||
> The full station catalogue (all 37+ types including Dock/Stage/Kit/Cutting/AGV/Workzone/Decision…) lives in [Stations & Routes](stations.md).
|
||||
|
||||
## 4. Miniload nomenclature (TK / ML)
|
||||
|
||||
Machine code reading rules for miniloads:
|
||||
|
||||
- **ML** = Miniload
|
||||
- **B** (after ML) = **Bicolumn** (absence of B = single column) → e.g. `ML-100` (single), `MLB-100Q` (bi)
|
||||
- **EPSF** = Extracteur Pelle Simple Fond — **1 charge** per extraction cycle (pelle = shovel, single depth)
|
||||
- **EPDF** = Extracteur Pelle Double Fond — **1 charge**, double-depth rack
|
||||
- **ECDF** = Extracteur Courroie Double Fond — **2 charges** per extraction cycle (courroie = belt, double depth)
|
||||
|
||||
**Rule of thumb:**
|
||||
- "Pelle" (shovel) extractors handle **one charge** at a time
|
||||
- "Courroie" (belt) extractors can handle **two charges** at a time — they drive the logic for channel filling and double-depth putaway
|
||||
|
||||
The miniload model (from the installation layout) dictates the entry/outbound table configuration in EasyS (see [Galileo Simulation](../operations/galileo-simulation.md)).
|
||||
|
||||
## Related
|
||||
|
||||
- [Stations & Routes](stations.md) — full WMS station catalogue
|
||||
- [GALILEO Integration](../architecture/galileo-integration.md) — how station codes feed the protocol
|
||||
- [Galileo Simulation & Test Setup](../operations/galileo-simulation.md) — PLC Types, rack configuration, routes
|
||||
- [Galileo Troubleshooting](../operations/galileo-troubleshooting.md) — cross-check station codes when debugging `EndErrorCode=4`
|
||||
- [Pallet Shuttle](../modules/pallet-shuttle.md) · [APS3D](../modules/aps3d.md) · [Movirack](../modules/movirack.md) · [AGV](../modules/agv.md)
|
||||
@@ -0,0 +1,251 @@
|
||||
---
|
||||
title: "Inbound Order (Receipt Order)"
|
||||
type: concept
|
||||
sources:
|
||||
- areas/receptions/reception_admin/receipt_orders.md
|
||||
- areas/receptions/reception_admin/receipt_order_type.md
|
||||
- areas/receptions/reception_admin/receipt_order_class.md
|
||||
- areas/receptions/reception_admin/receipt_order_supervise.md
|
||||
- areas/receptions/reception_admin/receipt_order_supervise.md
|
||||
- areas/receptions/reception_admin/views/view_receipt_order.md
|
||||
- areas/receptions/reception_admin/views/view_receipt_order_lines.md
|
||||
- areas/receptions/reception_admin/unload_receipt.md
|
||||
- areas/ERP/receipts/ror.md
|
||||
- areas/ERP/receipts/roc.md
|
||||
- areas/ERP/receipts/rof.md
|
||||
- areas/ERP/receipts/asn.md
|
||||
- areas/ERP/receipts/aso.md
|
||||
- areas/ERP/receipts/ref.md
|
||||
- areas/ERP/requests/str.md
|
||||
- areas/inbounds/index.md
|
||||
related:
|
||||
- concepts/reception.md
|
||||
- concepts/container.md
|
||||
- concepts/product-item.md
|
||||
- concepts/stock.md
|
||||
- concepts/putaway.md
|
||||
- concepts/order-outbound.md
|
||||
- concepts/crossdocking.md
|
||||
- concepts/erp-interface.md
|
||||
last_compiled: "2026-04-10"
|
||||
---
|
||||
|
||||
# Inbound Order (Receipt Order)
|
||||
|
||||
## Overview
|
||||
|
||||
A **receipt order** (also called inbound order) is the WMS document that tracks expected incoming stock. It represents a list of items or containers expected to arrive at the warehouse, serving as the basis for the reception process. Receipt orders allow the warehouse to plan dock resources, validate quantities, and close the loop with the ERP upon receipt.
|
||||
|
||||
Most receipt orders originate in the ERP (purchase orders to suppliers, customer return orders, transfer orders from other warehouses) and arrive via messaging. Easy WMS also allows manual creation of receipt orders directly in the UI. Receipt orders are optional — stock can be received without one (blind reception) — but they enable quantity control, automatic label printing, and ERP reconciliation.
|
||||
|
||||
The receipt order is distinct from the **receipt** (the actual WMS event of receiving stock physically). One receipt order can be fulfilled by one or more receipts; one receipt can be associated with one or more receipt orders.
|
||||
|
||||
## Types
|
||||
|
||||
Receipt orders (and their associated receipts) are categorized by type, which conditions how they are processed:
|
||||
|
||||
| Type | Description | Typical origin |
|
||||
|---|---|---|
|
||||
| **Supplier** | Stock arriving from a vendor. Lines specify items, expected quantities, and UoM. Stock may arrive in any presentation (pack, box, etc.) regardless of the line's UoM. Logistic attributes and quality status can optionally be pre-set by the ERP. | ERP purchase order (PO) |
|
||||
| **Return** | Customer returns — damaged or surplus stock. Similar line structure to Supplier type. | ERP return authorization |
|
||||
| **Transfer** | Stock transferred from another warehouse in the same organization. Stock always arrives in containers, which are pre-notified as ASN containers at the destination. Lines specify containers, items, and quantities. | ERP transfer order; automatic when source shipping order closes (Transfer type) |
|
||||
|
||||
Receipt orders also have a **class** for additional personalization of the reception process (custom flow variants, label types, etc.). Classes do not change the type logic but allow further differentiation.
|
||||
|
||||
## Structure
|
||||
|
||||
### Order header
|
||||
|
||||
| Field | Description |
|
||||
|---|---|
|
||||
| **Code** | Unique inbound order code |
|
||||
| **Status** | Current lifecycle status (see Lifecycle section) |
|
||||
| **Type** | Supplier / Return / Transfer |
|
||||
| **Class** | Optional sub-classification of the order |
|
||||
| **Owner** | Owner of the stock (mandatory when Owner Extension / Billing / 3PL Portal module installed) |
|
||||
| **Document** | Delivery note or reference document from supplier/carrier |
|
||||
| **Supplier** | Supplier code (Supplier type only) |
|
||||
| **Account** | Customer account code (Return type only) |
|
||||
| **Source** | Source warehouse code (Transfer type only) |
|
||||
| **Allow lines auto-creation** | If enabled, unexpected items received against this order are accepted and added as new lines |
|
||||
| **Enable container label printing** | All receipts from this order will automatically print GS1-128 container labels during receipt |
|
||||
| **Enable stock label printing** | All receipts from this order will automatically print GS1-128 item labels during receipt |
|
||||
| **Single receipt** | Only one receipt is auto-created for this order (use when all stock arrives in one delivery). Requires `AutoCreateReceptionFromRecOrder` parameter active. |
|
||||
|
||||
### Order lines
|
||||
|
||||
Each line identifies the expected item/container and quantity:
|
||||
|
||||
| Field | Description |
|
||||
|---|---|
|
||||
| **Line number** | Unique line identifier within the order |
|
||||
| **Status** | Line status (mirrors order status progression) |
|
||||
| **Container** | Expected or received container code (Transfer type or ASN) |
|
||||
| **Item** | Item code expected; alternatively, a presentation alias (GTIN/EAN) can be used — in this case, only stock of that EAN presentation is received against this line |
|
||||
| **Owner** | Owner of the expected stock |
|
||||
| **Quantity** | Expected quantity |
|
||||
| **UoM** | Unit of measure (usually base UoM; can be a presentation if packaging is known) |
|
||||
| **Logistic attributes** | Pre-set lot, expiration date, etc. (unusual; typically captured at physical reception) |
|
||||
| **Stock status** | Quality status that will be automatically applied to received stock (receiving status) |
|
||||
| **Number of ERP parcels** | Informational parcel code from ERP; used to reconcile which packages were received |
|
||||
| **Excess percentage** (`LneTrmExceedPerc`) | Maximum percentage above expected quantity that can be received on this line |
|
||||
|
||||
## Lifecycle
|
||||
|
||||
```
|
||||
[ERP sends ROR or manual creation]
|
||||
↓
|
||||
WAITING
|
||||
(order created; no receipt started)
|
||||
↓
|
||||
[First receipt created] → RECEPTION PENDING
|
||||
↓
|
||||
[First stock physically received] → RECEIVING
|
||||
↓
|
||||
[Some lines complete, others not] → PARTIALLY RECEIVED
|
||||
↓
|
||||
[All lines fully received] → COMPLETE
|
||||
↓
|
||||
[Manually or automatically closed] → CLOSED
|
||||
↓
|
||||
[No activity within validity period] → EXPIRED
|
||||
[Canceled before any receipt] → CANCELED
|
||||
```
|
||||
|
||||
**ERP is notified** of every status transition via **ROC** message.
|
||||
|
||||
**Closing** can happen:
|
||||
- Automatically when all lines are fully received and the `AutoCloseInboundOrder` parameter is active
|
||||
- Manually from the Receipt orders view
|
||||
- Forced close even with partial receipt
|
||||
|
||||
**Cancellation** is only allowed when no stock has been received (status: Waiting or Reception Pending).
|
||||
|
||||
**Modifications** allowed while in Waiting or Reception Pending:
|
||||
- Add new lines
|
||||
- Edit expected quantity (up or down; down to received qty completes the line)
|
||||
- Edit UoM (only if no stock received on that line)
|
||||
|
||||
## ERP integration
|
||||
|
||||
### Messages: ERP → WMS
|
||||
|
||||
#### ROR — Receipt Order Request
|
||||
|
||||
Creates, modifies, or cancels receipt orders.
|
||||
|
||||
| Operation | Description |
|
||||
|---|---|
|
||||
| `C` / `S` | Create new receipt order (header + lines) |
|
||||
| `U` | Update existing order (add/modify lines, edit quantities) |
|
||||
| `D` (standard) | Cancel receipt order (only if nothing received) |
|
||||
| `D` + `CloseReceiptOrder=True` | Close completed/partially received order |
|
||||
|
||||
Key ROR fields:
|
||||
- `RorCode`: unique order code
|
||||
- `RorType`: Supplier / Return / Transfer
|
||||
- `SupplierCode` / `AccountCode`: for Supplier or Return types
|
||||
- `Document`: delivery note reference
|
||||
- `RecDatDate`, `RecDatDockR`, `RecDatContainers`: estimated arrival date, dock, and container count (informational)
|
||||
- `EnableLabelPrinting`: auto-print container labels during receipt
|
||||
- `EnablePrintingItemLabel`: auto-print item labels during receipt
|
||||
- `AllowAutoCreateLines`: accept unexpected stock
|
||||
- `SingleReceipt`: one receipt per order
|
||||
- Line `LneTrmExceedPerc`: over-receive tolerance percentage
|
||||
- Line `LneStockStatus`: forced receiving status for stock on this line
|
||||
- Line reserves (`LneStkRsvSORCode` / `LneStkRsvAccCode`): pre-allocate received stock to a specific outbound order or account
|
||||
|
||||
#### ASN — Advanced Shipping Notice
|
||||
|
||||
Pre-notifies containers expected at the warehouse. Containers are created in the virtual ASN location.
|
||||
|
||||
| Variant | Description |
|
||||
|---|---|
|
||||
| With receipt order | Pre-notified container linked to a ROR |
|
||||
| Without receipt order | Pre-notified container only (blind ASN) |
|
||||
| Stacked (lifted) containers | Hierarchy of stacked containers pre-notified together |
|
||||
| Matched containers on dummy | Matched group based on virtual slave container (dummy, no weight) |
|
||||
| Matched on labeled slave | Slave container is labeled (has code) |
|
||||
| Matched on non-labeled slave | Slave container has no code; stock linked to inner containers |
|
||||
| With divisions | Container with division type and per-division stock lines |
|
||||
| With exclusive reserve for outbound order | Pre-notified container's stock reserved for specific SOR on receipt |
|
||||
| With exclusive reserve for route | Pre-notified container's stock reserved for a route stop |
|
||||
| With reserve and expiry deadline | Reserve creation deadline if order/route doesn't exist at receipt time |
|
||||
|
||||
ASN key fields: `ContainerCode`, `ContainerType`, `ReceiptOrderCode`, `NumExpectedContainers`, `ExpectedOutboundOrderCode` / `ExpectedRouteCode`
|
||||
|
||||
### Messages: WMS → ERP
|
||||
|
||||
#### ROC — Receipt Order status Change
|
||||
|
||||
Sent by WMS when an order changes status. Fields: `RorCode`, `Status` (Waiting / ReceptionPending / Receiving / PartiallyReceived / Complete / Expired / Canceled), `UpdateDate` (UTC timestamp).
|
||||
|
||||
#### ROF — Receipt Order Finalization
|
||||
|
||||
Sent when an order is closed or canceled. Two versions:
|
||||
- **ROF01**: includes receipt data + order data + stock received. Sent on order close/cancel AND on receipt close (even if receipt has no order).
|
||||
- **ROF02**: order data and stock only. Receipt closings sent separately via REF message. Use ROF02 in installations with frequent grouped receipts (one receipt associated with multiple orders).
|
||||
|
||||
ROF01/ROF02 key fields per line: `LneItemCode`, `LneOwnerCode`, `LneQtyExpected`, `LneQtyReceived`, `LneQtyFree`, `LneQtyUoMCode`.
|
||||
|
||||
#### ASO — ASN receipt confirmation (WMS → ERP)
|
||||
|
||||
Sent when an ASN pre-notified container is physically received. Confirms item, owner, quantity, and optionally the receiving status (`LneStaStatus`). Variants mirror ASN variants (stacked, matched on dummy, with divisions).
|
||||
|
||||
#### STR — Stock lock/unlock request (ERP → WMS)
|
||||
|
||||
Although STR is a request (not a receipt order message), it is closely related to inbound quality control. The ERP requests Easy WMS to apply or remove a user status on stock (e.g., lock a lot for quality reasons):
|
||||
- `Operation S`: add user status (lock) with optional quarantine end date
|
||||
- `Operation D`: remove user status (unlock by lot or by receiving status)
|
||||
|
||||
WMS responds with one or more **STC** messages confirming the modified stock.
|
||||
|
||||
## Parameters
|
||||
|
||||
| Parameter | Effect |
|
||||
|---|---|
|
||||
| `AutoCreateReceptionFromRecOrder` | If active, a receipt is automatically created when a ROR is received. Combined with `SingleReceipt`, creates exactly one receipt per order. |
|
||||
| `AutoCloseInboundOrder` | If active, the order automatically closes when all lines are fully received |
|
||||
|
||||
## Interface
|
||||
|
||||
| Function | Hardware | Menu path |
|
||||
|---|---|---|
|
||||
| Receipt orders view | PC | Receiving → Receipt orders |
|
||||
| Receipt order lines view | PC | Receiving → Receipt order lines |
|
||||
| Manual creation | PC | Receiving → Receipt orders → New |
|
||||
| Supervision | PC | Receiving → Receipt orders → Supervise |
|
||||
|
||||
### Available operations
|
||||
|
||||
| Operation | Conditions |
|
||||
|---|---|
|
||||
| Create manual receipt order | Any time; complete creation before receipts can start |
|
||||
| Add lines to existing order | Order must not be Completed, Closed, or Archived |
|
||||
| Edit expected quantity | Order in Waiting or Reception Pending; if stock received, quantity ≥ received qty |
|
||||
| Edit UoM on line | Order in Waiting or Reception Pending; no stock received on line |
|
||||
| Close receipt order | Stock already received; status Complete/Partially received/Reception pending with no active receipt |
|
||||
| Cancel receipt order | No stock received; status Waiting or Reception Pending |
|
||||
|
||||
## Common errors
|
||||
|
||||
| Symptom | Cause | Solution |
|
||||
|---|---|---|
|
||||
| Receipt order cannot be canceled | Stock already received against it | Close the order instead; cancel remaining unreceived quantities |
|
||||
| Unexpected stock received but not accepted | `Allow lines auto-creation` not enabled on order | Enable the flag on the order header, or create the missing line manually before reception |
|
||||
| Over-receive blocked | `LneTrmExceedPerc` = 0 or not set | Request ERP to update the line with a tolerance percentage; or adjust quantity manually |
|
||||
| ROC not sent | WMS-ERP integration configuration issue | Check ERP communication settings and ROC message configuration |
|
||||
| Transfer receipt order has no ASN | Source warehouse did not close shipping order (Transfer type) | Verify source warehouse has closed the transfer shipping order; ASN is created automatically |
|
||||
| ASN reserve not created at receipt | Expected outbound order did not exist and deadline passed | Check `ExpectedReserveValidDate`; re-create reserve manually on the outbound order |
|
||||
| Order stuck in Receiving | Receipts associated to the order are still open | Close or finalize all associated receipts first |
|
||||
|
||||
## Related
|
||||
|
||||
- [[reception]] — the physical reception process that fulfills receipt orders; dock/PIE/ASN reception modes all reference receipt orders
|
||||
- [[container]] — ASN pre-notifies containers; Transfer-type receipt orders always involve containers
|
||||
- [[product-item]] — receipt order lines reference items by code or alias; reception profile governs behavior
|
||||
- [[stock]] — receipt creates stock; receiving status from ROR line is applied to created stock
|
||||
- [[putaway]] — after reception, putaway tasks move stock from dock to storage; receipt order type affects putaway strategy eligibility
|
||||
- [[order-outbound]] — receipt orders can include reserves for outbound orders (cross-dock scenario); transfer orders create an outbound order at source
|
||||
- [[crossdocking]] — ASN containers with exclusive reserves enable direct crossdocking on receipt
|
||||
- [[erp-interface]] — ROR (in), ASN (in), ROC (out), ROF (out), ASO (out), STR (in), STC (out) messages
|
||||
@@ -0,0 +1,426 @@
|
||||
---
|
||||
title: "Outbound Order (Shipping Order)"
|
||||
type: concept
|
||||
sources:
|
||||
- areas/shipping/shipping_admin/shipping_order.md
|
||||
- areas/shipping/shipping_admin/shipping_order_type.md
|
||||
- areas/shipping/shipping_admin/shipping_order_class.md
|
||||
- areas/shipping/shipping_admin/index.md
|
||||
- areas/shipping/shipping_admin/shipping_orders_monitorize.md
|
||||
- areas/shipping/shipping_admin/shipping_order_creation.md
|
||||
- areas/shipping/shipping_admin/shipping_order_cancel.md
|
||||
- areas/shipping/shipping_admin/shipping_orders_close.md
|
||||
- areas/shipping/shipping_admin/stock_assign.md
|
||||
- areas/shipping/shipping_admin/stock_reserve.md
|
||||
- areas/shipping/shipping_admin/order_release.md
|
||||
- areas/shipping/shipping_admin/sequencing.md
|
||||
- areas/ERP/shipping/sor.md
|
||||
- areas/ERP/shipping/soc.md
|
||||
- areas/ERP/shipping/sof.md
|
||||
- areas/ERP/shipping/soc.md
|
||||
- areas/ERP/shipping/lof.md
|
||||
- areas/ERP/shipping/wof.md
|
||||
- areas/ERP/shipping/sor.md
|
||||
- sources/archives/12_Articles_alternatifs.md
|
||||
- sources/archives/18_ASN_DirectTransfer.md
|
||||
- sources/archives/19_ASN_Transfer.md
|
||||
- sources/archives/32_Fusion_commandes_Merge.md
|
||||
related:
|
||||
- concepts/shipping.md
|
||||
- concepts/picking.md
|
||||
- concepts/stock.md
|
||||
- concepts/container.md
|
||||
- concepts/task.md
|
||||
- concepts/replenishment.md
|
||||
- concepts/order-inbound.md
|
||||
- concepts/crossdocking.md
|
||||
- concepts/erp-interface.md
|
||||
last_compiled: "2026-04-17"
|
||||
---
|
||||
|
||||
# Outbound Order (Shipping Order)
|
||||
|
||||
## Overview
|
||||
|
||||
A **shipping order** (outbound order) is the WMS document that drives the outbound fulfillment process. It is a list of items or containers that need to be shipped from the warehouse. Shipping orders represent customer sales orders, returns to suppliers, inter-warehouse transfers, and internal sub-warehouse replenishments.
|
||||
|
||||
Shipping orders are the primary driver of picking, consolidation, and truck loading operations. They arrive from the ERP via SOR messages in the vast majority of cases. Manual creation is possible for special cases (ERP unavailable, one-off requests). Every outbound activity in the WMS — from stock assignment to task generation to carrier document printing — traces back to a shipping order.
|
||||
|
||||
A shipping order consists of a **header** (common attributes) and **lines** (specific items/containers with quantities). The lifecycle spans from creation through preparation, consolidation, and final closure with ERP notification.
|
||||
|
||||
## Types
|
||||
|
||||
The type determines the destination, the process, and how Easy WMS handles the stock:
|
||||
|
||||
| Type | Description | Stock destination |
|
||||
|---|---|---|
|
||||
| **Client** | Ship stock to a customer (sales order) | External; carrier delivery |
|
||||
| **Return** | Return stock to a supplier | External; supplier |
|
||||
| **Transfer** | Transfer to another warehouse in the organization. When closed, creates an inbound order at destination + ASN containers (same stacked structure as loaded). See [Transfer flow](#transfer--two-warehouse-flow-inbound-order-created). | Another warehouse |
|
||||
| **Direct transfer** | Same as Transfer but destination doesn't need to receive — see [ASN — DirectTransfer flow](#asn--directtransfer-flow) below. ASN containers created at destination. Can transfer to the same warehouse. | Another warehouse (no receipt) |
|
||||
| **Manual** | Created and prepared directly at RF terminal | Manual picking process |
|
||||
| **Kits assembly/unassembly** | Supply kit components for assembly or collect kits for disassembly when work order released | Assembly/disassembly station |
|
||||
| **Desk** | Created from a desk operation | Desk output |
|
||||
| **Transfer between sub-warehouses** | Maintain configured stock levels in a sub-warehouse | Internal sub-warehouse |
|
||||
|
||||
Shipping orders also have a **class** for additional process customization (different consolidation behaviors, label types, document formats).
|
||||
|
||||
## Structure
|
||||
|
||||
### Order header
|
||||
|
||||
| Field | Description |
|
||||
|---|---|
|
||||
| **Priority** | Preparation priority: Urgent / High / Normal / Low / Very Low. Lower number = higher priority. Determines task sequence and equipment assignment order. |
|
||||
| **Type** | Client / Return / Transfer / Direct Transfer / Manual / Kits / Desk / Transfer between sub-warehouses |
|
||||
| **Class** | Optional sub-classification for process customization |
|
||||
| **Owner** | Owner of the stock (mandatory with Owner Extension / Billing / 3PL Portal modules) |
|
||||
| **Account / Supplier / Destination warehouse** | Attribute varies by type: account for Client, supplier for Return, warehouse for Transfer |
|
||||
| **Document** | Delivery note or reference number |
|
||||
| **Staging location** | Consolidation location where picked stock is assembled before shipment; for grouped orders, this is where ungrouping and distribution occurs |
|
||||
| **Ship expired stock** | If true, only expired stock is eligible for this order; lines with undated items will never complete |
|
||||
| **Follow sequence** | Enforces line-number order during shipping for ordered delivery note verification |
|
||||
| **Preparation state** | Visual indicator of progress (reserved, stock failures, assigned, tasks pending/running, ready to load, loaded, shipped) |
|
||||
| **% completed** | Percentage of ordered quantity prepared and loaded |
|
||||
| **Transport** | Carrier + transport type (informational) |
|
||||
| **Route** | Route code and stop number |
|
||||
| **Delivery address** | Customer delivery address (printed on delivery note and transport document) |
|
||||
| **Planning** | Release/shipping/loading dates; planned dock; number of packages |
|
||||
| **Preparation** | Consolidation station; container types for packages; label/packing-list print settings |
|
||||
|
||||
### Order lines
|
||||
|
||||
| Field | Description |
|
||||
|---|---|
|
||||
| **Line number** | Unique within the order; used for sequenced shipping |
|
||||
| **Item + Owner** | Identifies the SKU to ship |
|
||||
| **Container** | Request specific container; if combined with item, forces stock from that container |
|
||||
| **Required quantity + UoM** | Quantity in specified presentation. If `LneQtyUoMRequired = 1`, only that presentation is accepted. |
|
||||
| **Preferred presentation** (`LneTrmPrefUoMCode`) | As much as possible shipped in this presentation; fall back to others if insufficient |
|
||||
| **Stock status preferences** | Preferred/required/rejected status; preferred container type |
|
||||
| **Critical line** (`LneTrmCritical`) | All-or-nothing: this line must be completely prepared or nothing on this line is prepared |
|
||||
| **Required line to ship** (`LneTrmRequired`) | If this line cannot be fully shipped, nothing in the entire order is prepared |
|
||||
| **Allow excess** (`LneQtyAllowExcess`) | Allow shipping more than requested if exact quantity cannot be allocated |
|
||||
| **Alternative items** | Substitute items when stock fails (mode from shipping profile, or explicit via `LneAltItmCode`) |
|
||||
| **Logistic attributes** | Request stock with specific lot, serial, expiry date, quality, color, caliber, etc. |
|
||||
| **Max lots** (`LneMaxLots`) | Maximum number of distinct lots across all stock assigned to this line |
|
||||
| **Days of life** | Minimum days of life required on stock assigned to this line |
|
||||
| **Expire date after** (`LneAttExpDate`) | Only stock expiring after this date is eligible |
|
||||
| **Client codes** | Customer item code and line code (informational; for delivery documents) |
|
||||
| **Costs** | Line cost and currency (informational) |
|
||||
|
||||
## Lifecycle
|
||||
|
||||
```
|
||||
[ERP sends SOR or manual creation]
|
||||
↓
|
||||
CREATING
|
||||
(manual creation in progress)
|
||||
↓
|
||||
WAITING
|
||||
(ready; no preparation started)
|
||||
↓
|
||||
[Optional: stock reserved] → RESERVED
|
||||
↓
|
||||
[Order released] → RELEASED
|
||||
(stock assigned; tasks generated)
|
||||
↓
|
||||
[First task executed] → WORKING / IN PREPARATION
|
||||
↓
|
||||
[Paused by user] → PAUSED (assigned stock held)
|
||||
[Stopped by user] → STOPPED / WAITING (assigned stock released)
|
||||
↓
|
||||
[All stock prepared + loaded] → AUTO-CLOSE → CLOSED
|
||||
[Partial close triggered] → partial SOF sent → remains active
|
||||
[Force close with stock failures] → CLOSED (partial)
|
||||
↓
|
||||
ARCHIVED
|
||||
|
||||
[Any time before CLOSED]
|
||||
→ CANCELED (no stock shipped)
|
||||
```
|
||||
|
||||
**SOC messages** are sent by WMS to ERP on every status transition.
|
||||
|
||||
### Status details
|
||||
|
||||
| Status | Available operations |
|
||||
|---|---|
|
||||
| **Creating** | End creation, Close, Change priority, Group, Fuse, Route association |
|
||||
| **Waiting** | Reserve, Assign, Release, Cancel, Close (partial), Force close, Change priority, Group, Fuse, Paper pick, Assign to equipment/dock |
|
||||
| **Reserved** | Reserve, Assign, Release, Cancel, Close, Force close, Cancel reserve |
|
||||
| **Released** | Re-release, Pause, Stop, Cancel, Close, Force close, Change priority |
|
||||
| **Working** | Pause, Stop, Cancel, Close, Force close, Change priority |
|
||||
| **Paused** | Release (restart), Stop, Cancel, Close |
|
||||
| **Stopped/Waiting** | Release (restart), Cancel |
|
||||
| **Closed** | Archive |
|
||||
|
||||
## Business rules
|
||||
|
||||
- Orders **cannot mix lines** from different owners when the Owner Extension module is installed.
|
||||
- **Priority** affects task sequencing across all active orders: urgent orders get their picking tasks executed first, at the cost of more picking rounds.
|
||||
- **Critical lines** (`LneTrmCritical`): if the line cannot be fully assigned, no stock is prepared for that line (the rest of the order is unaffected).
|
||||
- **Required lines to ship** (`LneTrmRequired`): if the required line cannot be fully shipped, the entire order blocks — nothing is prepared.
|
||||
- **Stock assignment** respects the configured stock assignment strategy (logic to minimize movements, maximize container use, minimize lots, etc.).
|
||||
- **Excess shipping** (`LneQtyAllowExcess`): if exact quantity is impossible due to containerized stock, the system may over-allocate and then returns surplus.
|
||||
- **Substitute items**: used when the ordered item is short. The substitution mode (partial/all-or-nothing) is defined in the item's shipping profile; explicit alternatives in the SOR override the profile.
|
||||
- **Expired stock**: orders normally exclude expired stock. If `ShipExpiredStock = True`, only expired stock is used. Lines on items without expiry dates cannot be prepared in this mode.
|
||||
- **Reserve recalculation** on stock lock: if locked stock had reserves, the system re-prioritizes reserves for the highest-priority orders that reserved earliest.
|
||||
- Orders stopped via Pause retain their assigned stock; orders stopped via Stop release their assigned stock.
|
||||
- **Partial closes**: a SOF message is sent for each partial close. Each SOF includes only the lines closed in that partial. The order remains active after a partial close.
|
||||
|
||||
## ERP integration
|
||||
|
||||
### Messages: ERP → WMS
|
||||
|
||||
#### SOR — Shipping Order Request
|
||||
|
||||
Creates, modifies, or cancels shipping orders. Two versions:
|
||||
- **SOR01**: standard shipping orders
|
||||
- **SOR02**: prepackaging — ERP specifies number/type of packages, stock per package, working mode (strict/non-strict). Also used with VAS (Value Added Services) module.
|
||||
|
||||
| Operation | Fields |
|
||||
|---|---|
|
||||
| `S` (create) | `SorCode`, `Priority`, `SorType`, `Site`, `EnableReplenishment`, `PrpPackingLocation`, `PlnAssignedDock` |
|
||||
| `U` (update) | Modify header (priority, etc.) or individual lines |
|
||||
| `D` (cancel) | Cancel the entire order |
|
||||
| Line `C` | Create new line with `LneItemCode`, `LneContCode`, `LneQtyOrder`, `LneQtyUoMCode`, `LneAttributes` |
|
||||
| Line `U` | Modify line (qty, UoM, attributes — restrictions apply if stock already prepared/shipped) |
|
||||
| Line `D` | Cancel specific line |
|
||||
|
||||
Key SOR fields:
|
||||
- `SorType`: Customer / Return / Transfer / DirectTransfer
|
||||
- `Priority`: Urgent / High / Normal / Low / VeryLow
|
||||
- `EnableReplenishment`: triggers automatic replenishment of PDLs for items in the order
|
||||
- `LneTrmRequired`: required-to-ship line flag
|
||||
- `LneTrmCritical`: critical line flag
|
||||
- `LneQtyAllowExcess`: allow over-allocation
|
||||
- `LneQtyUoMRequired`: presentation is required (not just preferred)
|
||||
- `LneTrmPrefUoMCode`: preferred presentation
|
||||
- `LneMaxLots`: maximum lot count for this line
|
||||
- `LneTrmAlternative`: activate substitute items from master
|
||||
- `LneAltItmCode` + `LneAltItmQttyFrom` + `LneAltItmQttyTo`: explicit alternative item and ratio
|
||||
- `LneQtyReserve`: quantity to pre-reserve for this line
|
||||
- `ShipExpiredStock`: ship only expired stock
|
||||
- `LneTrmStaReq` / `LneTrmStaRejC` / `LneTrmStaPref`: required/rejected/preferred stock status
|
||||
- `LneAttExpDate`: minimum expiration date for assigned stock
|
||||
- `PrpContTypeRequired`: required client container type (SOR02)
|
||||
|
||||
### Messages: WMS → ERP
|
||||
|
||||
#### SOC — Shipping Order status Change
|
||||
|
||||
Sent on every status transition of a shipping order.
|
||||
|
||||
| Status reported | Trigger |
|
||||
|---|---|
|
||||
| `Release` | Order released for preparation |
|
||||
| `StockFailure` | Stock cannot be fully assigned to one or more lines |
|
||||
| `Working` | First task executed; preparation has begun |
|
||||
| `Waiting` / `Secured` | Order stopped (stock may or may not be released) |
|
||||
| `Paused` | Order paused |
|
||||
| `Closed` | Order closed (fully or partially) |
|
||||
| `Canceled` | Order canceled |
|
||||
|
||||
Note: Grouped/fused orders do not report status changes for the grouped order or its components during grouped preparation.
|
||||
|
||||
#### SOF — Shipping Order Finalization
|
||||
|
||||
Sent when an order is closed or canceled.
|
||||
|
||||
Two versions:
|
||||
- **SOF01**: full data — includes MultiCarrier delivery info, VAS details, all lines. Sent at every partial close (with close number) and at final close/cancel.
|
||||
- **SOF02**: modular — excludes MultiCarrier and VAS data. Created when communications became modular so each application manages its own messages.
|
||||
|
||||
Key fields:
|
||||
- `SorCode`, `Status` (Closed / Canceled)
|
||||
- `ClosingNum`: closing sequence number (for partial closes)
|
||||
- `PrpContainers`: containers shipped in this closing
|
||||
- Per line: `LneDItemCode`, `LneDQtyShipped`, `LneDQtyUoMCode`, `LneDClientContCode`, `LneDAttributesLine`
|
||||
- VAS fields (SOF01 only): `LneVASsTemplate`, `LneVASsPreparedQuantity`, `LneVASsComment`
|
||||
|
||||
If order is forced to close without shipping any stock, no line data is sent. If canceled, no line data is sent.
|
||||
|
||||
#### LOF — Load Finalization
|
||||
|
||||
Sent when a load is finalized (truck loading complete). References shipping orders in the load.
|
||||
|
||||
## Parameters
|
||||
|
||||
| Parameter | Effect |
|
||||
|---|---|
|
||||
| `AutoCloseOutboundOrder` | Automatically closes a shipping order when all ordered quantities are prepared and loaded |
|
||||
| `EnableReplenishment` (per SOR or order) | Triggers automatic replenishment of PDLs for items in the order when released |
|
||||
|
||||
## Interface
|
||||
|
||||
| Function | Hardware | Menu path |
|
||||
|---|---|---|
|
||||
| Shipping orders view | PC | Shipping → Shipping orders |
|
||||
| Shipping order lines view | PC | Shipping → Shipping order lines |
|
||||
| Manual creation | PC | Shipping → Shipping orders → New |
|
||||
| Monitoring | PC | Shipping → Shipping orders (status column + preparation state) |
|
||||
| Waves / Groups / Fusions management | PC | Shipping → Waves / Groups |
|
||||
| Routes management | PC | Shipping → Routes |
|
||||
| Loads management | PC | Shipping → Loads |
|
||||
| Paper pick | PC + Printer; RFT or CB reader to confirm | Shipping → Shipping orders → Paper pick |
|
||||
|
||||
### Available operations from Shipping orders view
|
||||
|
||||
| Operation | Notes |
|
||||
|---|---|
|
||||
| Create shipping order | Manual; complete creation before any actions |
|
||||
| Reserve stock | Pre-reserve specific stock or as much as possible |
|
||||
| Assign stock | Run stock assignment (selects specific stock; unassigns previous if re-run) |
|
||||
| Release | Triggers assignment + task generation; ERP notified via SOC |
|
||||
| Release by sub-warehouse | Partial release per sub-warehouse |
|
||||
| Pause | Retains assigned stock; pauses task generation |
|
||||
| Stop | Releases assigned stock; ERP notified |
|
||||
| Cancel | Remove order entirely; all prepared stock unassigned |
|
||||
| Close | Confirm shipped quantities; send SOF to ERP |
|
||||
| Force close | Close with stock failures (partial shipment) |
|
||||
| Change priority | Update at any active status |
|
||||
| Assign to equipment | Restrict picking preparation to specific equipment |
|
||||
| Assign dock/stage | Set shipping dock or staging area |
|
||||
| Increase/decrease line quantity | With restrictions if stock already prepared/shipped |
|
||||
| Cancel line | All statuses while order active |
|
||||
| Stop lines | Release stock from individual lines |
|
||||
| Print documentation | Delivery note, packing list, differences report |
|
||||
| Archive | After closure |
|
||||
|
||||
## ASN — DirectTransfer flow
|
||||
|
||||
A `<DirectTransfer>` order (`<SorType>` in `SOR02`) requires **at least two warehouses** in the WMS. It ships stock from a source warehouse to a destination warehouse **without generating any inbound order or receipt at destination** — only ASN containers.
|
||||
|
||||
**Preparation** — identical to a standard client order. After the outbound order closes on the source warehouse, the shipped containers automatically appear on the destination warehouse's **`Asn`** location (visible in SmartUI via `Entrepôt → Conteneurs ASN`).
|
||||
|
||||
**Receiving an ASN container (destination warehouse)** — RFT menu `Réception → Préavis` of the destination warehouse :
|
||||
|
||||
1. Receive onto the buffer or the equipment.
|
||||
2. Scan the container (no other validation required).
|
||||
3. An **ASO01** file is generated automatically.
|
||||
|
||||
> By design, the direct transfer **skips re-inspection** of the merchandise at the destination.
|
||||
|
||||
**Deleting / rejecting an ASN container** (container not arrived or not conforming) — SmartUI `Entrepôt → Conteneurs ASN` → select the container → **Supprimer**. This generates an **ASK01** file.
|
||||
|
||||
> ⚠️ Both `ASO01` and `ASK01` files **carry no reference to the origin transfer order**. The ERP itself must reconcile every ASO/ASK container against the originating `DirectTransfer` shipping order to confirm or invalidate the completeness of the transfer.
|
||||
|
||||
## Transfer — two-warehouse flow (inbound order created)
|
||||
|
||||
A `<Transfer>`-type order (`<SorType>` in `SOR02`) also requires **at least two warehouses** in the WMS. Unlike `<DirectTransfer>`, closing the outbound at source **automatically creates an inbound order at destination** with the same code as the source order. Containers arrive on the `Asn` location of the destination warehouse.
|
||||
|
||||
**Key differences vs `<DirectTransfer>`:**
|
||||
|
||||
| Aspect | `<Transfer>` | `<DirectTransfer>` |
|
||||
|---|---|---|
|
||||
| Inbound order at destination | **Yes** (auto-created) | No |
|
||||
| Receipt mandatory at destination | Yes | No |
|
||||
| Authoritative ERP message | **`ROF02`** (at inbound close) | `ASO01` per container |
|
||||
| Deletion feedback | `ASK01` on partial-close of inbound order | `ASK01` on container deletion |
|
||||
| Re-inspection of goods | Possible at destination | Skipped by design |
|
||||
|
||||
Destination-warehouse settings:
|
||||
- `AutoCreateReceptionFromRecorder = true` → reception auto-created on first container scan.
|
||||
- `AutoCloseInboundOrder = true` → closing the reception auto-closes the inbound order and emits `ROF02`.
|
||||
|
||||
> ⚠️ `ASO01` and `ASK01` still carry **no transfer-header info**. For `<Transfer>` flows the ERP **must** consume `ROF02` — which contains the full list of received containers.
|
||||
|
||||
See [Reception](reception.md#transfer--two-warehouse-asn-flow-with-receipt) for the receiving procedure.
|
||||
|
||||
## Merge (order fusion)
|
||||
|
||||
Merging consolidates multiple **outbound orders** into one preparation, so picking/packing/loading happens in a single pass. Merge applies to outbound orders — **not** to deliveries (a delivery is the *result* of a merge, not an input).
|
||||
|
||||
### Eligibility
|
||||
|
||||
**Required** — every candidate order must match on:
|
||||
- Complete `<ShippingAddress>` (every sub-tag)
|
||||
- Complete `<DeliveryAddress>` + `<DeliveryContact>`
|
||||
- Same order type (Client, Transfer, …)
|
||||
- Status `Waiting`
|
||||
- Identical `ExtraData`
|
||||
|
||||
**Disqualifying** — an order cannot be merged if it is already:
|
||||
- In another merge
|
||||
- In a group
|
||||
- In a wave
|
||||
- Assigned to a route
|
||||
|
||||
### Process
|
||||
|
||||
| Step | Action | Initiator |
|
||||
|---|---|---|
|
||||
| 1 | Create orders targeting the same address | ERP/client |
|
||||
| 2 | Trigger the **"Fusion"** action | Operator (or auto if customised) |
|
||||
| 3 | Prepare stock (picking, packing, loading) | Operator |
|
||||
| 4 | Close the merged order → packages produced | Operator |
|
||||
| 5 | Delivery generated | System |
|
||||
|
||||
The merged order owns its own code, status and shipping date and is treated as any standard order. **ERP traceability stays individualised per source order** (each original SOR produces its own SOC/SOF lineage).
|
||||
|
||||
### Configuration
|
||||
|
||||
```xml
|
||||
<Delivery>
|
||||
<DlvShareDeliveries>true</DlvShareDeliveries>
|
||||
</Delivery>
|
||||
```
|
||||
|
||||
Parameter: **`ALLOW_MERGE_DIFFERENT_ACCOUNT`** — if set, allows merging orders from different customer accounts.
|
||||
|
||||
> ⚠️ **No automatic merge is shipped in standard.** Default is manual. Any automation is a custom scope.
|
||||
|
||||
### Limitations & anomalies
|
||||
|
||||
- Merge is possible only from `Waiting`.
|
||||
- Once picking has started, merge cannot be undone.
|
||||
- Returns and SAV are treated individually.
|
||||
|
||||
| Anomaly | Standard behaviour |
|
||||
|---|---|
|
||||
| Partial stock-out | Merge flips to **`Postponed`** until full availability |
|
||||
| Cancel before picking | Order can be removed from the merge |
|
||||
| Cancel during picking | Manual intervention required |
|
||||
| Cancel after packaging | Un-pack, then re-process |
|
||||
| Address change | Order must be excluded from the merge |
|
||||
| Carrier error | Stock blocked in the packing zone; status fixed manually |
|
||||
|
||||
Client responsibilities: consistency of SOR addresses / ExtraData, `DlvShareDeliveries` config, business rules for which orders to merge, anomaly handling.
|
||||
|
||||
## Alternative Items (SOR flag + SOF feedback)
|
||||
|
||||
At order line level, the SOR(01|02) can enable the substitute-item feature :
|
||||
|
||||
```xml
|
||||
<LneTerms>
|
||||
<LneTrmAlternative>true</LneTrmAlternative>
|
||||
</LneTerms>
|
||||
```
|
||||
|
||||
The WMS uses the shipping-profile **substitution mode** (Partiel / Substitution / Tout ou rien) + the article-level "Ajouter Alternatif" table to decide what gets picked. The SOF then reports the outcome via the `<LneDIsAlternative>` flag on each `<LneDetail>` (see [Product / Item](product-item.md#alternative--substitute-items) for the full matrix).
|
||||
|
||||
## Common errors
|
||||
|
||||
| Symptom | Cause | Solution |
|
||||
|---|---|---|
|
||||
| Order stuck in Released (no tasks created) | All required items missing from PDLs; no stock assignable | Check stock assignment results; trigger replenishment or manual stock movement |
|
||||
| Stock failure on line | Insufficient stock for the requested item/attributes | Check stock levels; review lot/status restrictions in SOR line; consider substitute items |
|
||||
| Cannot modify line (UoM or attributes) | Stock already prepared or shipped for this line | Only quantity can be reduced; attributes locked once prepared |
|
||||
| SOF not sent | WMS-ERP integration issue or order closed without ERP connection | Check communication configuration; retry closing via forced resend if available |
|
||||
| Order cannot be canceled | Stock already prepared (tasks completed) | Undo preparation (un-prepare from consolidation or truck loading view), then cancel |
|
||||
| Required-to-ship line prevents all preparation | Required line has stock failure | Resolve stock failure on required line; or remove the required-to-ship flag (if ERP allows) |
|
||||
| Excess stock prepared on line | Over-allocation due to containerized/indivisible stock | Use the "Return excess" operation before closing, or configure `LneQtyAllowExcess = 0` |
|
||||
| Route not found | Route code in SOR does not exist in WMS | Create or sync route in Easy WMS; check RUT message from ERP |
|
||||
|
||||
## Related
|
||||
|
||||
- [[shipping]] — the physical shipping process (consolidation, truck loading, PS groups, auto shipping) that fulfills outbound orders
|
||||
- [[picking]] — picking processes execute tasks generated when outbound orders are released; waves/groups/fusions batch multiple orders
|
||||
- [[stock]] — stock assignment links specific stock lines to order lines; reserves block stock for specific orders
|
||||
- [[container]] — client containers hold prepared stock; container type requirements configurable per order/line
|
||||
- [[task]] — release generates Picking and Shipping tasks; task priority driven by order priority
|
||||
- [[replenishment]] — `EnableReplenishment` flag on SOR triggers automatic PDL replenishment when released
|
||||
- [[order-inbound]] — Transfer-type outbound orders create receipt orders at destination + ASN pre-notifications
|
||||
- [[crossdocking]] — ASN containers with exclusive reserves for outbound orders enable direct crossdocking on receipt
|
||||
- [[erp-interface]] — SOR (in), SOC (out), SOF (out), LOF (out), WOF (out), RUT (in for routes), SCR/WSC (stock contrast)
|
||||
@@ -0,0 +1,311 @@
|
||||
---
|
||||
title: "System Parameters"
|
||||
type: concept
|
||||
sources:
|
||||
- areas/parameters.md
|
||||
- areas/inventory_management/parameters.md
|
||||
- areas/slotting/parameters.md
|
||||
- areas/ecommerce/parameters.md
|
||||
- areas/pallet_shuttle/agv_ps/parameters.md
|
||||
- areas/aps3d/parameters.md
|
||||
- areas/multi_carrier_shipping/parameters.md
|
||||
- areas/store_fulfillment/parameters.md
|
||||
related:
|
||||
- concepts/container.md
|
||||
- concepts/reception.md
|
||||
- concepts/picking.md
|
||||
- concepts/shipping.md
|
||||
- concepts/count.md
|
||||
- concepts/stock-adjustment.md
|
||||
- concepts/defragmentation.md
|
||||
- concepts/replenishment.md
|
||||
- concepts/cutting-stock.md
|
||||
- concepts/labels.md
|
||||
last_compiled: "2026-04-10"
|
||||
---
|
||||
|
||||
# System Parameters
|
||||
|
||||
## Overview
|
||||
|
||||
Parameters control system behavior at the warehouse level. They allow the same Easy WMS software to behave differently across warehouses of the same organization without code changes. Every process — reception, picking, counting, replenishment — has parameters that tune its behavior.
|
||||
|
||||
Parameters are defined at the **organization level** but can be **customized per warehouse**. A warehouse-level value overrides the organization default.
|
||||
|
||||
Two categories:
|
||||
- **System parameters**: Created automatically by the system. Cannot be deleted. User sets warehouse-level value.
|
||||
- **Custom parameters**: Created by implementers from the web interface. Can be created, modified, and deleted. Used for custom behaviors.
|
||||
|
||||
## Parameter Attributes
|
||||
|
||||
| Field | Description |
|
||||
|-------|-------------|
|
||||
| Code | Unique parameter identifier |
|
||||
| Of the system | True = system-created; False = custom |
|
||||
| Default value | Developer-assigned baseline (all warehouses start with this) |
|
||||
| Has custom value | Whether any warehouse has overridden the default |
|
||||
| Class | Process category (where it's used) |
|
||||
| Scope | Web or RF |
|
||||
| Type | Data type (Boolean, Text, Integer, Decimal, Enum) |
|
||||
| Minimum / Maximum value | Bounds for numeric parameters |
|
||||
| Possible values | Enum list of allowed values (restricts user input) |
|
||||
| Custom values by warehouse | Per-warehouse override values |
|
||||
|
||||
**Interface:** View "Parameters" in the menu "Configuration" (PC).
|
||||
|
||||
---
|
||||
|
||||
## Core Easy WMS Parameters
|
||||
|
||||
All parameters below are from the main Easy WMS parameter set (areas/parameters.md) unless otherwise noted.
|
||||
|
||||
### Reception Parameters
|
||||
|
||||
| Parameter | Default | Description |
|
||||
|-----------|---------|-------------|
|
||||
| ALLOW_CREATE_RECEPTION | False | During reception, allow creation of receipts on-the-fly if operator can't find an existing one. Creates a receipt without lines; stock is added as received. |
|
||||
| ALLOW_DIFFERENT_QTTY_RECEPTION_COMPLETE_CONTAINER | False | For containers with same item but variable quantity (e.g., UoM = kg), allows user to select whether received quantity is variable or fixed. |
|
||||
| AutoCreateReceptionFromRecOrder | False | Automatically create a receipt when a receipt order arrives from ERP. |
|
||||
| AutoCloseReception | False | Auto-close a receipt when all expected stock has been received. |
|
||||
| AutoArchiveClosedReception | False | Auto-archive a receipt when it is closed. |
|
||||
| MAX_RECEPTIONS_TO_CLOSE_JOB | 5 | Maximum number of receptions to close per job execution in the auto-close process. |
|
||||
| RECEPTION_DEFAULT_CONTAINER_TYPE | Manual | Default container type in receptions (except single-reference, which uses receipt profile). |
|
||||
| RECEPTION_DEFAULT_HEIGHT_TYPE | Manual | Default container height type. If empty, user must always select. |
|
||||
| RECEPTION_FORBID_MOVE_FROM_ASN | False | Whether rejecting a pre-notified container from RFT should move it from ASN virtual location. If False, ASK message not sent to ERP. |
|
||||
| RECEPTION_ALLOW_RECEIVE_NOT_PRODUCED_STOCK | 0 | Number of days to add to receipt date to accept a production date as valid. |
|
||||
| RECEPTION_NUM_DAYS_PRODUCTION_DATE_MARGIN | 0 | Days to add to receipt date to accept a production date as valid. |
|
||||
| RECEPTION_ASN_CONFIRM_ALL_STACK_CONTAINERS | False | On ASN receptions of stacked containers: ask confirmation from all containers in hierarchy (except dummies and slaves). |
|
||||
| RECEPTION_ASN_SHOW_CONFIRMATION_DIALOG | False | In pre-notified container reception: offer possibility to modify stock of a container. |
|
||||
| RECEPTION_MAX_NUM_CONTAINER_LABELS_TO_PRINT | 1000 | Maximum container labels printable per receipt (security limit). See also [[labels]]. |
|
||||
| NUM_COPIES_RECEPTION_LABEL | 1 | Number of label copies per container during receipt. |
|
||||
| CREATE_ALIAS_ON_RECEPTION | False | Allow creation of item aliases during reception. Operator can indicate a read code is an alias of an expected item. |
|
||||
| USE_EXCLUSIVE_RESERVE_STRICT_MODE | False | True: reject pre-notified containers whose exclusive reservation targets don't exist in system. False: receive anyway. |
|
||||
| CONFIRM_EXCLUSIVE_RESERVE_ASSIGNMENT | (blank) | True: reception operator chooses exclusive reserve target when multiple possible. False: system auto-assigns. |
|
||||
| SET_COMPLETE_QUANTITY | False | Allow user to set complete container quantity during reception (for variable-quantity UoM containers). |
|
||||
| RECEPTION_ASN_CONFIRM_ALL_STACK_CONTAINERS | False | In ASN reception of stacked containers: ask confirmation from all hierarchy except dummies/slaves. |
|
||||
| MAX_NUMBER_DAYS_ADJUSTMENT_RECEIVED_STOCK | 3 | Max days after receipt date during which received stock can be modified. (Min: 0, Max: 7) |
|
||||
|
||||
### Label / Printing Parameters
|
||||
|
||||
| Parameter | Default | Description |
|
||||
|-----------|---------|-------------|
|
||||
| DEFAULT_RECEPTION_LABEL_CONTAINER_REPORT_NAME | STD_RPT_CONTAINER_LABEL_GS1_128 | Report name printed for mono and multi-reference containers in reception. See [[labels]]. |
|
||||
| DEFAULT_RECEPTION_LABEL_ITEM_REPORT_NAME | STD_RPT_STOCK_LABEL_GS1_128 | Report name printed for items in reception. See [[labels]]. |
|
||||
| CONTAINER_LABEL_DEFAULT_FORMAT | (blank) | Default container label format: `1x-A6`, `1x-GS1-128`, `20x(105x29)-A4`, `2x(175x135)-A4`, `33x(75x25)-A4`, `4x(105x148)-A4`. |
|
||||
| PRODUCT_LABEL_DEFAULT_FORMAT | (blank) | Default item label format: `A6`, `105x29`, `175x135`, `105x148`, `75x25`. |
|
||||
| CLIENT_CONTAINER_LABEL_REPORT | STD_RPT_CLIENT_CONTAINER_LABEL_15 | Container label format auto-printed when picking container is unloaded into a stage with configured printer. |
|
||||
| CLIENT_CONTAINER_PACKING_REPORT | (blank) | Report for auto-printing client container packing list when downloaded to a configured stage. |
|
||||
| CUTTING_PRINTER | (blank) | Default printer for cutting stock labels during picking. See [[cutting-stock]]. |
|
||||
| ALLOW_PRINT_LABEL_CONTAINER_QUESTION_BLIND_RECEPTION | False | In blind reception: ask user if they want to print GS1 labels for received containers. |
|
||||
| ALLOW_PRINT_LABEL_ITEM_QUESTION_BLIND_RECEPTION | False | In blind receipt: ask user if they want to print GS1 labels for received items. |
|
||||
| MAX_NUM_LABELS_TO_READ | 1 | Max barcode readings per loose stock or container (multi-reading). Value 1 = disabled. Min: 1, Max: 30. |
|
||||
|
||||
### Container / LPN Parameters
|
||||
|
||||
| Parameter | Default | Description |
|
||||
|-----------|---------|-------------|
|
||||
| CONTAINER_CHECK_CODE_GS1LABEL | False | Validate SSCC code conforms to GS1 standard (18 digits with check digit) on container create/edit. |
|
||||
| CONTAINER_CHECK_CODE_REPEATED_FOR_LABELS | True | Validate container code is unique across stations, locations, and item aliases on create/edit. |
|
||||
| ASK_FINAL_STACK_LOCATION | True | In container stacking: ask user for final location of new container block. If not confirmed, block stays at base container's location. Only for non-client containers in ground locations. |
|
||||
| UNSTACK_ON_STAGE | False | In unstacking: always unstack in a stage (True), or unstack at initial stacked container location if allowed (False). |
|
||||
|
||||
### Picking Parameters
|
||||
|
||||
| Parameter | Default | Description |
|
||||
|-----------|---------|-------------|
|
||||
| CONFIRM_PICKING_EXCESS | False | Ask operator to confirm when picking more than ordered quantity. |
|
||||
| RF_PICKING_CONFIRM_LOCATION | True | RF picking: require operator to scan location label to confirm they're at the correct picking location. |
|
||||
| ALLOW_CONFIRMATION_ON_PLACEMENT | False | Ask picking operator to confirm the location/container of their equipment where they deposit collected items. |
|
||||
| EMPTY_PICKING_LOCATION_QUESTION | False | Ask operator at last picking task if the location/container is empty (assists inventory). |
|
||||
| EMPTY_PICKING_LOCATION_STOCK_ADJUST | False | If EMPTY_PICKING_LOCATION_QUESTION is active: allow stock adjustment when location/container is empty. If False: mark for review only. |
|
||||
| FILTER_BEFORE_PICKING_IN_ORDER_PICKING | False | In Order Picking: show shipping order code filter before listing tasks. Partial code match supported; multiple nested filters. |
|
||||
| WORKWAVES_ALLOW_SELECTION | False | True: display available waves for operator to select (ordered by user/equipment assignment, urgency, release date). False: system proposes most-priority wave automatically. |
|
||||
| PICKING_ALLOW_STARTING_DECISION_ON_WAIT_FOR_REPLENISHMENT | False | Allow RF operator to start picking preparation even if they may need to wait for replenishment. |
|
||||
| PICKING_ALLOW_UNLOADING_ON_LOCATION_ON_WAIT_FOR_REPLENISHMENT | False | Allow RF operator to place unloading container in stage/dock if they only have tasks waiting for replenishment. |
|
||||
| PICKING_ALLOW_WAITING_ON_LOCATION_ON_WAIT_FOR_REPLENISHMENT | False | RF pickers instructed to wait at picking location when out of stock (vs skip and continue). |
|
||||
| PICKANDPASS_ALLOW_READ_DIFFERENT_CONTAINER | False | Pick-and-Pass: allow operator to scan a container other than the one proposed by the system. |
|
||||
| PTL_AUTOMATIC_CONTAINER_UNLOAD | False | PTL warehouses: auto-unload container when confirming order destination in PTL. |
|
||||
| PTL_WORKING_MODE | PickToLight | PTL mode: `PickToLight` (racks only have PTLs) or `PutToLight` (racks and equipment both have PTLs). |
|
||||
| ALLOW_ZONE_SELECTION_FOR_TASKS | False | Allow RF filtering of tasks by zone (aisle, sub-warehouse, or work zone) before starting. |
|
||||
| EQUIPMENT_PICKING_LOCATIONS_MODE | Manual | Picking location assignment mode: `Manual` (user decides), `Prompt` (auto with confirmation), `Auto` (auto without confirmation). |
|
||||
| PAPERPICK_AUTO_PRINTER | (blank) | Printer for automatic paper picking sheet printing. |
|
||||
| PAPERPICK_REPORT | STD_RPT_OUTBOUNDORDER_PAPER_TASK | Report name for paper picking sheet. |
|
||||
| PREPARE_PAPER_PICK_BY_DEFAULT | False | Mark new shipping orders as "prepare on paper" by default. |
|
||||
| BATCH_PREFIXCODE | Batch | Batch code prefix for paper-based preparation. |
|
||||
| Sorder_Num_Equipments | 1 | Number of equipment teams that can work simultaneously on the same shipping order per work zone. (Min: 1) |
|
||||
| OUTBOUND_ORDER_SPLITTING_IF_NOT_FULLY_COBOT | False | With Cobot module: allow same order lines to be split between manual and Cobot picking stations. |
|
||||
|
||||
### Shipping / Order Management Parameters
|
||||
|
||||
| Parameter | Default | Description |
|
||||
|-----------|---------|-------------|
|
||||
| ALLOW_CHANGE_LOCATION_ON_UNGROUP | False | Ungrouping process: allow user to change location assigned to stock of the shipping order being ungrouped. |
|
||||
| ALLOW_CHANGE_LOCATION_ON_UNLOAD | False | Allow unloading loose stock to a different location than the one designated. |
|
||||
| ALLOW_CHANGE_ROUTE_STOPS | False | Allow modifying the stop of a shipping order in a route without removing it from the route. |
|
||||
| ALLOW_MERGE_DIFFERENT_ACCOUNT | False | Allow fusing orders with different accounts. Note: orders with Strict FEFO accounts cannot be grouped. |
|
||||
| ALLOW_MULTI_UNIT_UNGRUOUP | False | Allow multi-unit ungrouping. |
|
||||
| AUTO_MERGE_ORDERS | False | Auto-merge orders sharing the same delivery address. |
|
||||
| AutoCloseLoadedOutboundOrders | False | Auto-close orders when the full prepared quantity is at the assigned dock or shipped. |
|
||||
| AUTOCLOSE_LOADED_ROUTES | False | Auto-close routes when the full quantity of all composing orders is at the assigned dock. |
|
||||
| AutoArchiveClosedOutboundOrders | False | Auto-archive shipping orders once closed. |
|
||||
| AUTOARCHIVE_CLOSED_ROUTES | False | Auto-archive closed routes. |
|
||||
| ArchiveClosedInboundOrder | False | Auto-archive receipt orders when closed. |
|
||||
| AutoCloseInboundOrder | False | Auto-close receipt order when all associated receipts are closed. |
|
||||
| MAX_AUTORELEASED_OUTBOUNDORDERS | 0 | Max orders in Released or In Preparation status; if exceeded, auto-release stops. |
|
||||
| MAX_AUTORELEASED_ROUTES | 0 | Max routes releasable simultaneously. |
|
||||
| MaxTimeForMaximizingShipping | 20 | Max time in milliseconds to search container combinations for maximizing shipping. |
|
||||
| OUTBOUND_ORDER_BLIND_VERIFICATION | False | Hide stock information from user during shipping order stock check (packaging process). |
|
||||
| OUTBOUND_ORDER_PACKINGLIST_AUTOPRINT | False | Auto-print delivery note when a shipping order is closed. |
|
||||
| OUTBOUND_ORDER_PACKINGLIST_DEFAULT_PRINTER | (blank) | Printer name for auto delivery note printing. |
|
||||
| OUTBOUND_ORDER_PACKINGLIST_NUM_COPIES | 1 | Number of copies for auto delivery note printing. |
|
||||
| OUTBOUND_ORDER_PACKINGLIST_REPORT_NAME | STD_RPT_OUTBOUNDORDER_BYITEM | Report type for auto delivery note. |
|
||||
| MANUAL_OUTBOUND_ORDER_PREFIX | MAN | Prefix for manual order code (combined with counter). |
|
||||
| AUTOPRINT_DESK_ORDER_DELIVERY_NOTE | False | Auto-print desk order delivery note. |
|
||||
| RF_ASSIGN_PACKORBUFFERORDOCK | False | Auto-assign stage or dock to shipping orders with no destination when containers are unloaded there. |
|
||||
| RF_SHIP_CHECK_DOCK | False | Require user to scan dock location during truck load/unload per container/package/loose stock line. |
|
||||
| UNGROUPED_OUTBOUND_ORDERS_SAME_USER_EXTRACTION | False | After ungrouping at an ungrouping station, same user automatically performs extraction without re-selecting in UI. |
|
||||
| UNLOAD_CREATE_PRODUCT_LOCATION | True | When placing in a picking-dedicated location: create a dedicated picking location. Container → max=1, min=0; Stock → min=0, max=quantity. |
|
||||
|
||||
### Stock / Inventory Parameters
|
||||
|
||||
| Parameter | Default | Description |
|
||||
|-----------|---------|-------------|
|
||||
| BALANCE_AISLE | False | Enable aisle balancing in the putaway location search process. |
|
||||
| NUM_EVENTS_PER_PARTIAL_COMMIT | 20 | Events confirmed per block in the event confirmation process. Affects performance with large volumes. (Min: 1) |
|
||||
| REASSIGN_STOCK_VIA_SUBSCRIPTIONS | True | True: stock reassignment via event subscriptions. False: via periodic job. |
|
||||
| MAX_ORDERS_STOCK_FAILURE_JOB | 10 | Maximum outbound orders reassigned per execution of the periodic stock reassignment job. |
|
||||
|
||||
### Replenishment Parameters
|
||||
|
||||
| Parameter | Default | Description |
|
||||
|-----------|---------|-------------|
|
||||
| MAX_GROUPS_PROCESSED_DYNAMIC_REPLENISH_JOB | 100 | Max item groups for which dynamic picking locations and replenishment tasks are generated per job run. See [[replenishment]]. |
|
||||
| MAX_REPLENISHED_PL_ROUTINE_JOB | 100 | Max product locations for which replenishment tasks are created per job run. (Min: 0) |
|
||||
| REPLENISH_LEVEL_PERCENT_PRODUCT_LOCATION | 20 | When counting, if previous parameter active: creates picking dedicated location with quantity = counted stock × this percentage. (Min: 0, Max: 100) |
|
||||
| OPTIMIZE_DYNAMIC_PL_USE | False | During dynamic picking, once empty locations exhausted: allow creating item assignments in locations already having other picking dedicated items. |
|
||||
| CONFIRM_REPLENISH_EXCESS | False | Ask operator confirmation when replenishing more than expected quantity. |
|
||||
|
||||
### Defragmentation Parameters
|
||||
|
||||
| Parameter | Default | Description |
|
||||
|-----------|---------|-------------|
|
||||
| MAX_DEFRAG_TASKS | 10 | Maximum defragmentation tasks in execution per aisle simultaneously. See [[defragmentation]]. |
|
||||
| MAX_OPTIMIZATION_DEFRAG_CHANNEL | 3 | Maximum channels to defrag simultaneously per aisle. 0 = only MAX_DEFRAG_TASKS is used. |
|
||||
| MAX_DEFRAG_ATTEMPT | 5 | Maximum attempts to defragment a container for shipping. |
|
||||
|
||||
### Voice Parameters
|
||||
|
||||
| Parameter | Default | Description |
|
||||
|-----------|---------|-------------|
|
||||
| VP_MultipleValuesSegregatedLocationCodeConfirmation | 1 | Location identification in voice processes: 1=system requests location code, 2=single sentence with aisle/side/column/row, 3=confirmation at each stage of the route. |
|
||||
| VP_PartialReadingContainerCode | 0 | Voice: identify containers by last n digits (right to left). 0=full code. If multiple containers share last n digits, full code is requested. |
|
||||
| VP_PartialReadingOrderCode | 0 | Voice: identify shipping orders by first n (negative) or last n (positive) digits. 0=full code. Range: -10 to 10. |
|
||||
|
||||
### Return Reception Parameter
|
||||
|
||||
| Parameter | Default | Description |
|
||||
|-----------|---------|-------------|
|
||||
| RETURN_RECEPTION_PREFIX | RET | Prefix for return type receipt codes. |
|
||||
|
||||
---
|
||||
|
||||
## Module Parameters
|
||||
|
||||
### Slotting Module Parameters
|
||||
|
||||
| Parameter | Default | Description |
|
||||
|-----------|---------|-------------|
|
||||
| SLOTTING_ANALYSYS_DEMAND | 50% | Minimum % of days in analyzed period item must have been sold to recommend repositioning. Options: 25%/50%/75%. |
|
||||
| SLOTTING_AUTO_AREA_TYPE | False | Continuous slotting execution level: full warehouse, sub-warehouse, or zone. |
|
||||
| SLOTTING_AUTO_AREA_CODE | False | False: single recommendation for whole warehouse. True: separate recommendation per zone/sub-warehouse. |
|
||||
| SLOTTING_AUTO_DAYS | 30 | Days of demand history used for continuous slotting recommendation. (Min: 1) |
|
||||
| SLOTTING_AUTO_COVERAGE_DAYS | 7 | Coverage days to cover demand through continuous slotting. |
|
||||
| SLOTTING_AUTO_DOCK | (blank) | Shipping dock for continuous slotting measurements. |
|
||||
| SLOTTING_AUTO_LOCATIONS | DedicatedPicking | Scope of continuous slotting: `Picking` (all picking locations) or `DedicatedPicking` (dedicated only). |
|
||||
| SLOTTING_AUTO_MIN_PROFIT | (blank) | Minimum estimated benefit for continuous slotting to trigger notification. (Min: 0) |
|
||||
| SLOTTING_BUFFER_LOCATION | (blank) | Buffer location used for slotting process. Set by "Select buffer" action in Slotting view. |
|
||||
| SLOTTING_CONTAINER_REPLENISH | False | Replenish with containers whenever possible (vs. stock). |
|
||||
| SLOTTING_COST_HOUR | 20 | Operator cost per hour for slotting process cost calculations. (Min: 0) |
|
||||
| SLOTTING_GOLDEN_ZONE | 1.5 | Maximum height (m) for golden zone priority picking locations. (Min: 0) |
|
||||
| SLOTTING_MAX_PL_PER_ITEM | 1 | Maximum picking dedicated locations per item. (Min: 1) |
|
||||
| SLOTTING_REPLENISH_LEVEL | 0 | Replenishment capacity % of picking dedicated locations. (Min: 0, Max: 100) |
|
||||
| SLOTTING_VELOCITY | 5 | Average equipment speed in m/s (or ft/s) for slotting calculations. (Min: 0) |
|
||||
| SLOTTING_AUTO_COMMIT_DELETE | 1000 | Lines in memory during file analysis. Recommendations: small org (≤15K lines) = 1000; medium (≤100K) = 15000; large = 100000. |
|
||||
|
||||
### eCommerce Module Parameters
|
||||
|
||||
| Parameter | Default | Description |
|
||||
|-----------|---------|-------------|
|
||||
| ECOMMERCE_RECEPTION_ALLOW_AUTOSELECTION | False | Auto-select the best receipt for each item received (vs. manual selection). |
|
||||
| ECOMMERCE_RECEPTION_ALLOW_MULTIQUANTITY | False | Allow receiving more than one unit of an item at a time. |
|
||||
| ECOMMERCE_RETURN_ALLOW_AUTOSELECTION | False | Auto-select best return for each item received. |
|
||||
| ECOMMERCE_RECEPTION_MAX_SECONDS_TO_CONFIRM | 30 | Max seconds after entering an item before operator must confirm cart/container/conveyor destination. Prevents multi-operator conflicts. (Min: 1, Max: 3600) |
|
||||
|
||||
### AGV / Pallet Shuttle Module Parameters
|
||||
|
||||
| Parameter | Default | Description |
|
||||
|-----------|---------|-------------|
|
||||
| PS_MAX_MINUTES_BATTERY_FULL_LOAD | 300 | Minutes since PS charging started for system to consider battery at 100%. (Min: 0) |
|
||||
| PS_MIN_MINUTES_BATTERY_LOAD | 90 | Minimum minutes charging before system considers PS has sufficient charge to operate. (Min: 0) |
|
||||
|
||||
### APS3D Module Parameters
|
||||
|
||||
| Parameter | Default | Description |
|
||||
|-----------|---------|-------------|
|
||||
| APS3D_LOCATION_SHARE | False | Allow more than one APS3D to access the same channel simultaneously. |
|
||||
| APS3D_AISLE_OFFSET | 0 | Aisle limit offset for container coordinate calculations (decimal). |
|
||||
| APS3D_CONTAINERS_GAP | 0 | Distance between containers in the same APS channel (same for all container types). |
|
||||
| APS3D_SHUTTLE_WIDTH | 0 | Width of an APS3D shuttle (decimal). |
|
||||
| APS3D_WALL_OFFSET | 0 | Wall (closure) limit offset for container coordinate calculations (decimal). |
|
||||
| APS3D_CHARGE_STATION_OFFSET | 0 | Charge station limit offset for container elevation calculation when charge station is at location. |
|
||||
| APS3D_MAX_COMPAQ_CHANNELS | 3 | Maximum channels with simultaneous compaction tasks. |
|
||||
| APS3D_MAX_DEFRAG_CHANNELS | 3 | Maximum channels with simultaneous defragmentation tasks. |
|
||||
|
||||
### Multi-Carrier Shipping Module Parameters
|
||||
|
||||
| Parameter | Default | Description |
|
||||
|-----------|---------|-------------|
|
||||
| ALLOW_REJECT_AND_UNDO_PACKAGES | False | Allow package preparation rejection or undo in truck load process. |
|
||||
| AUTO_MERGE_ORDERS | False | Auto-merge shipping orders sharing the same delivery address. |
|
||||
| OUTBOUND_ORDER_BLIND_VERIFICATION | INFORMED VERIFICATION | Packaging verification mode: `BLIND VERIFICATION` (operator reads items until done, then comparison) or `INFORMED VERIFICATION` (each item compared as read, list always available). Single-unit orders always confirm the item. |
|
||||
| PACKAGING_ALLOW_MIX_CARRIER | (blank) | Allow mixing packages from different carriers in the same container during manual package movement. |
|
||||
| PACKAGING_AUTO_CLOSE_DELIVERY | True | Auto-close deliveries vs. manual closure. |
|
||||
| PACKAGING_AUTO_MOVE_PACKAGES | True | During package unloading: auto-move directly to carrier container if open one exists (no destination confirmation). |
|
||||
| PACKAGING_CARRIER_MODE | MANUAL | Carrier dock confirmation: `AUTO` (auto-move to carrier dock), `MANUAL` (user confirms carrier code), `UNLOAD` (user indicates location, then Carrier Verification process confirms destination). |
|
||||
| PACKAGING_CONFIRM_LABEL | True | Confirm tracking code on carrier labels of packages. |
|
||||
| PACKAGING_MAX_NUM_PACKAGES_ERR | (blank) | Max packages in packaging process before error generated. |
|
||||
| PACKAGING_MAX_NUM_PACKAGES_WARN | (blank) | Max packages before confirmation requested. (Min: 1) |
|
||||
| PACKAGING_MODE | CHOOSE_NUM_PACKAGES | Packaging confirmation mode: `ONE_PACKAGE` (all delivery stock in 1 package), `CHOOSE_NUM_PACKAGES` (user specifies number), `CAPTURE_STOCK` (user identifies stock per package). |
|
||||
| PACKAGING_PRINT_LABEL_CLOSED_PACKAGE | True | For incomplete delivery packaging: ask operator to close package and print label, or keep open and postpone printing. |
|
||||
|
||||
---
|
||||
|
||||
## Cross-Reference: Parameters by Wiki Page
|
||||
|
||||
Parameters mentioned in other wiki pages:
|
||||
|
||||
| Parameter | Referenced In |
|
||||
|-----------|--------------|
|
||||
| MAX_DEFRAG_TASKS, MAX_OPTIMIZATION_DEFRAG_CHANNEL, MAX_DEFRAG_ATTEMPT | [[defragmentation]] |
|
||||
| MAX_GROUPS_PROCESSED_DYNAMIC_REPLENISH_JOB, MAX_REPLENISHED_PL_ROUTINE_JOB, REPLENISH_LEVEL_PERCENT_PRODUCT_LOCATION | [[replenishment]] |
|
||||
| CUTTING_PRINTER | [[cutting-stock]], [[labels]] |
|
||||
| DEFAULT_RECEPTION_LABEL_CONTAINER_REPORT_NAME, DEFAULT_RECEPTION_LABEL_ITEM_REPORT_NAME, PRODUCT_LABEL_DEFAULT_FORMAT, CONTAINER_LABEL_DEFAULT_FORMAT, NUM_COPIES_RECEPTION_LABEL, RECEPTION_MAX_NUM_CONTAINER_LABELS_TO_PRINT, ALLOW_PRINT_LABEL_* | [[labels]], [[reception]] |
|
||||
| AutoCloseReception, AutoCreateReceptionFromRecOrder, RECEPTION_* | [[reception]], [[order-inbound]] |
|
||||
| WORKWAVES_ALLOW_SELECTION, PTL_WORKING_MODE, PAPERPICK_REPORT, Sorder_Num_Equipments | [[picking]] |
|
||||
| OUTBOUND_ORDER_PACKINGLIST_*, AUTO_MERGE_ORDERS, AUTOCLOSE_LOADED_ROUTES | [[shipping]], [[order-outbound]] |
|
||||
| PS_MAX_MINUTES_BATTERY_FULL_LOAD, PS_MIN_MINUTES_BATTERY_LOAD | modules/pallet-shuttle |
|
||||
| APS3D_* | modules/aps3d |
|
||||
| SLOTTING_* | modules/slotting |
|
||||
| ECOMMERCE_* | modules/ecommerce |
|
||||
| PACKAGING_*, ALLOW_REJECT_AND_UNDO_PACKAGES | modules/multi-carrier |
|
||||
|
||||
## Related
|
||||
|
||||
- [[reception]] — ALLOW_CREATE_RECEPTION, RECEPTION_ASN_*, AutoCloseReception, label printing params
|
||||
- [[picking]] — WORKWAVES_ALLOW_SELECTION, PTL_WORKING_MODE, FILTER_BEFORE_PICKING, RF_PICKING_CONFIRM_LOCATION
|
||||
- [[shipping]] — OUTBOUND_ORDER_PACKINGLIST_*, AUTO_MERGE_ORDERS, AutoCloseLoadedOutboundOrders
|
||||
- [[replenishment]] — MAX_GROUPS_PROCESSED_DYNAMIC_REPLENISH_JOB, REPLENISH_LEVEL_PERCENT
|
||||
- [[defragmentation]] — MAX_DEFRAG_TASKS, MAX_OPTIMIZATION_DEFRAG_CHANNEL
|
||||
- [[cutting-stock]] — CUTTING_PRINTER
|
||||
- [[labels]] — All label format and printer parameters
|
||||
- [[count]] — REPLENISH_LEVEL_PERCENT_PRODUCT_LOCATION, NUM_EVENTS_PER_PARTIAL_COMMIT
|
||||
@@ -0,0 +1,480 @@
|
||||
---
|
||||
title: "Picking"
|
||||
type: concept
|
||||
sources:
|
||||
- areas/shipping/shipping_manual/index.md
|
||||
- areas/shipping/shipping_auto/index.md
|
||||
- areas/shipping/shipping_auto/direct_picking.md
|
||||
- areas/shipping/shipping_auto/grouped_picking.md
|
||||
- areas/shipping/shipping_auto/negative_picking.md
|
||||
- areas/shipping/shipping_manual/picking_tasks.md
|
||||
- areas/shipping/shipping_manual/picking_order.md
|
||||
- areas/shipping/shipping_manual/wave_picking.md
|
||||
- areas/shipping/shipping_manual/picking_ptls.md
|
||||
- areas/shipping/shipping_manual/index_cutting_stock.md
|
||||
- areas/shipping/shipping_manual/paper_pick.md
|
||||
- areas/shipping/pick_and_pass/index.md
|
||||
- areas/shipping/pick_and_pack/index.md
|
||||
- areas/shipping/shipping_admin/stock_assign.md
|
||||
- areas/shipping/shipping_admin/stock_assign_strategies.md
|
||||
- areas/shipping/shipping_admin/waves_creation.md
|
||||
- areas/shipping/shipping_picking_manual/picking_cutting_stock.md
|
||||
- areas/shipping/shipping_picking_manual/cutting_stock_delegate.md
|
||||
- areas/shipping/shipping_picking_manual/cutting_stock_integrated.md
|
||||
- custom/analyse_fonctionnelle.md
|
||||
- sources/archives/02_Strategie_assignation_vidage_bacs.md
|
||||
- sources/archives/03_Reapprovisionnement_lors_picking.md
|
||||
- sources/archives/11_Preparation_papier.md
|
||||
- sources/archives/26_Utilisation_chariots_emplacement.md
|
||||
- sources/archives/31_Picking_Manuel.md
|
||||
- sources/archives/Bases_fonctionnement_robotique_EasyWMS.md
|
||||
- sources/archives/Configuration_EasyS.md
|
||||
- sources/archives/Configuration_SmartUI.md
|
||||
- sources/archives/Tests_Miniload_Gateway.md
|
||||
related:
|
||||
- concepts/shipping.md
|
||||
- concepts/replenishment.md
|
||||
- concepts/container.md
|
||||
- concepts/stock.md
|
||||
- concepts/reception.md
|
||||
- architecture/galileo-integration.md
|
||||
- operations/galileo-simulation.md
|
||||
last_compiled: "2026-04-17"
|
||||
---
|
||||
|
||||
# Picking
|
||||
|
||||
## Overview
|
||||
|
||||
Picking is the process of extracting stock from warehouse locations to fulfill shipping orders. In EasyWMS, picking encompasses: finding assignable stock (stock assignment), planning task execution (waves/groups), executing physical extraction (RFT, voice, PTL, paper, or automatic conveyor), and delivering picked stock to the shipping dock or staging area.
|
||||
|
||||
Picking occurs in two warehouse types:
|
||||
- **Manual warehouse**: operators with RFT/voice/PTL/paper follow a picking path through aisle locations
|
||||
- **Automatic warehouse**: containers are extracted by the TMS and brought to a picking conveyor (PK station) where operators pick stock from them into client containers on preparation zones (MP)
|
||||
|
||||
Both environments share the same underlying stock assignment logic. The execution layer is different: manual warehouse operators go to the stock; automatic warehouse stock comes to the operator (goods-to-person).
|
||||
|
||||
## Stock Assignment
|
||||
|
||||
Before any picking task can be generated, EasyWMS must assign specific stock to shipping order lines through the **stock assignment** process.
|
||||
|
||||
### Stock Eligibility Conditions
|
||||
|
||||
Stock is only assignable if:
|
||||
- Item, status, UoM, and logistic attributes match the order line requirements
|
||||
- Stock is in the same warehouse as the shipping order
|
||||
- Stock state allows moving + picking/shipping (or replenishment origin if it has a picking dedicated location)
|
||||
- No active count task on the location or container
|
||||
- Not already part of an in-process replenishment task (unless certain conditions apply)
|
||||
- Location/station allows picking/shipping; aisle not locked; no extraction errors at current or previous depths
|
||||
- Not already assigned to another line or prepared for another order
|
||||
- Exclusive reserves are respected (reserved stock is shipped first; additional stock assigned for any shortage)
|
||||
|
||||
### Assignment Strategies
|
||||
|
||||
Stock assignment strategies are sequenced and filter/sort eligible stock according to criteria:
|
||||
|
||||
| Strategy | Description |
|
||||
|---|---|
|
||||
| Efficiency: minimize movements before logic | Prioritize stock that can be fulfilled in fewest movements (prefer single-location assignments over multi-location) |
|
||||
| Efficiency: empty locations before logic | Prioritize stock that would leave locations empty (maximize space recovery) |
|
||||
| Logic before efficiency (empty) | Respect item shipping logic (FEFO, FIFO, LIFO) first; use empty-location efficiency as tiebreaker |
|
||||
| Logic before efficiency (min movements) | Respect shipping logic first; use minimize-movements efficiency as tiebreaker |
|
||||
| Ship only complete containers | Only assign full containers (matching container type + conversion); use picking for remainder |
|
||||
| Maximize shipping | Find combination of containers that covers ordered quantity as closely as possible; pick remainder |
|
||||
| Assign containers in movement | (Automatic warehouses) Assign stock from containers currently moving toward a PK station |
|
||||
| By sub-warehouse + presentation | Multiple strategies per sub-warehouse/UoM combination (e.g., boxes from sub-WH A, loose units from sub-WH B) |
|
||||
| By threshold | Switch sub-warehouse based on ordered quantity exceeding a threshold |
|
||||
| Strict FEFO | Do not ship stock with an earlier expiration than already-shipped stock for the same item+account |
|
||||
|
||||
**Priorities** (applied before the main criterion):
|
||||
- Prioritize shipping tasks over picking (minimize picking at cost of logistics order)
|
||||
- Prioritize containers in movement (maximize automatic warehouse cycles)
|
||||
- Prioritize complete containers for picking (empty "peaks" before starting new containers)
|
||||
- Prioritize picking dedicated locations (always pick from PDL first)
|
||||
- Prioritize general storage locations (prefer storage locations over PDL to avoid triggering replenishment)
|
||||
|
||||
Strategies can be configured globally for the warehouse or per item (via the item's **shipping profile**), which overrides the global strategy for that item.
|
||||
|
||||
### "Vidage de bacs" Efficiency Mode
|
||||
|
||||
Mecalux France has documented an efficiency mode dedicated to **emptying bins / locations** (FR : *vidage de bacs*), configured via `Configuration → Stratégies d'Assignation de Stock` :
|
||||
|
||||
- **Mode d'efficacité** : `Vidage de bacs`
|
||||
- **Logique d'efficacité** : `Après l'efficacité`
|
||||
|
||||
Runtime workflows involved :
|
||||
|
||||
| Workflow | Role |
|
||||
|---|---|
|
||||
| `StockAssignProcess_CalculateOutboundLogicAndEfficiency_PR` | Chooses between logic-first and efficiency-first branches |
|
||||
| `StockAssignProcess_CalculateEfficiencyMode_PR` | Executes the workflow matching the selected efficiency mode |
|
||||
| `StockAssignProcess_CalculateEfficiencyModeToEmpty_PR` | Orders available stock by priority-to-empty according to the configured parameters ; stock is then consumed one record at a time until the requested quantity is reached |
|
||||
|
||||
The ordering logic lives in the code activity **"Order stock when none location is emptied"**.
|
||||
|
||||
### Assignment by Excess
|
||||
|
||||
When a line allows excess shipping, EasyWMS first tries to assign the exact quantity. If all strategies are exhausted without fulfilling the line completely, the first stock discarded by the last strategy is assigned as excess. Excess is minimized by unassigning the last-assigned stock. The "strict shipping logic on excess" flag prevents excess assignment from using better-logic stock over what was already being shipped.
|
||||
|
||||
## Picking Modes — Manual Warehouse
|
||||
|
||||
Manual warehouse picking is RFT-driven, following the **picking path** (optimal route minimizing operator travel). The path starts at the picking start point and ends at the shipping area.
|
||||
|
||||
| Mode | Description | Hardware |
|
||||
|---|---|---|
|
||||
| **Automatic tasks** | System instructs operator to pick highest-priority order tasks following picking route; loads equipment to capacity | RFT |
|
||||
| **Picking tasks** | Operator executes only picking tasks, ordered by priority then release date | RFT |
|
||||
| **Shipping tasks** | Operator executes only shipping tasks (full container moves) | RFT |
|
||||
| **Order picking** | Operator selects specific orders to prepare; executes shipping tasks for selected orders in priority order along picking path | RFT |
|
||||
| **Manual preparation** | Operator manually selects the order and the containers to ship | RFT |
|
||||
| **Manual picking** | Operator creates an ad hoc picking order at the terminal (item + quantity); system releases it and operator executes it immediately | RFT |
|
||||
| **Wave picking** | Operator prepares orders released in waves; at each return to warehouse, new orders are assigned up to equipment capacity | RFT |
|
||||
| **Paper picking** | Operator receives printed picking lists, annotates issues; results entered later via PC or RFT (see "Paper Picking Workflow" below) | PC/RFT + printer |
|
||||
| **Pick-to-light (PTL)** | Operator enters preparation area; PTL devices illuminate to indicate quantity per location | PC/RFT/PTL |
|
||||
| **Voice picking** | Operator receives spoken instructions, confirms by voice; both hands free for handling | RFT + headset |
|
||||
| **Advanced picking** | Picks client containers before dock/stage assigned; containers placed on shelf until assignment | RFT |
|
||||
|
||||
**Cutting stock picking** (rope, cable, chain — indivisible lengths):
|
||||
- Requires a physical cut before picking
|
||||
- Two models: **integrated cut** (cut performed at the location) or **delegated cut** (cut performed at a dedicated cutting station)
|
||||
- Cutting stations can have dedicated equipment and procedures for item-specific cutting complexity
|
||||
|
||||
**Pick and Pass** (warehouses with automatic conveyors): goods-to-person model for loose stock. Sub-warehouses receive LPNs via automated transport; operators at workzone stations perform picking then release LPN back to transport. Decision stations route LPNs to correct sub-warehouse by reading pending tasks.
|
||||
|
||||
**Pick and Pack**: picking and packaging happen simultaneously; operators pick directly into final shipping cartons. Prepackaging modes available (see [Shipping](shipping.md) for details).
|
||||
|
||||
**Desk orders**: stock order from an in-warehouse retail desk; operators pick and deliver directly to desk for on-site customer sale.
|
||||
|
||||
**Zone filtering**: operators can filter tasks to a specific aisle, sub-warehouse, or work zone.
|
||||
|
||||
### Manual Picking (create order at RFT)
|
||||
|
||||
"Picking Manuel" lets the operator create an outbound order directly from the RFT when there is no upstream ERP push. Useful for desk sales, emergency replenishments, or one-off internal moves.
|
||||
|
||||
**Flow (RFT):**
|
||||
1. Enter the **outbound code** (a default is proposed)
|
||||
2. Choose the **shipping dock**
|
||||
3. Add lines — **item + quantity** — repeat per line
|
||||
4. **Release** the order — creates the outbound, its lines, and the picking tasks in SmartUI (can take time for large orders)
|
||||
5. The RFT is redirected into the **standard picking loop**
|
||||
|
||||
**Module interactions:**
|
||||
- **3PL module** — SOC and SOF use different document codes (the owner is appended to the SOF only). Example: SOC `MAN0000000000000000010`, SOF `MAN0000000000000000010-CECOA`.
|
||||
- **Carrier module** — manual picking does **not** expose a carrier field, which can block downstream carrier processing. If the module is enforced, expect a post-release manual intervention.
|
||||
|
||||
Entry workflow: `EasyWMS.ManualPicking_ByItem_UI` (cf. [RF Menu reference](../architecture/rf-menu.md#4-ordres-dexpédition-sharedmenu_shippingorders)).
|
||||
|
||||
### Location Carts (chariots à emplacement) for Multi-Order Picking
|
||||
|
||||
Location carts let one operator prepare **several orders at once without creating one client container per order**. The WMS maps cart divisions (column × row) to orders automatically.
|
||||
|
||||
- **Usable only in multi-order picking modes** — groups of orders and waves
|
||||
- Removes the need for a secondary *"TRF à emplacement"* configuration in many layouts
|
||||
- After picking, the cart is dropped directly onto the packing station
|
||||
|
||||
**Setup — SmartUI:**
|
||||
|
||||
1. **Create division types** — define the number and codes of cart slots (tested up to 20×20). The WMS temporarily labels slots `Section{sequence}`; the name entered guides the operator during picking.
|
||||
2. **Create the cart** (tab **"Carts"**):
|
||||
|
||||
| Field | Description |
|
||||
|---|---|
|
||||
| Code | Scanned during picking and packing |
|
||||
| Storage location | **Mandatory** |
|
||||
| Division type | If empty → the cart behaves as one slot |
|
||||
|
||||
Cart statuses : **Open** (available), **Closed** (stock in progress — not yet packed).
|
||||
|
||||
**Picking with a cart (RFT):**
|
||||
- At wave/group start, the RFT proposes to use a cart — scan its code.
|
||||
- On the first drop, the WMS asks which slot (division) to use; subsequent tasks for the same order are auto-routed to the same slot.
|
||||
- Column **"Division"** shows `CartCode_SectionCode`.
|
||||
|
||||
**Edge case — closed cart with no free slot:** the RFT reports no task available and flips the cart back to **Open**. To unload: **"Fermer"** on the task list → RFT menu **Rangement → Stock de chariots** → either "Ranger le chariot entièrement" (no redirection to packing) or "Décharger en mode stock libre".
|
||||
|
||||
**Packing:** scan the cart code → WMS indicates divisions → scan the division to pack (or list divisions with stock). Standard packing runs with `CartCode_SectionCode` as origin.
|
||||
|
||||
### Paper Picking Workflow
|
||||
|
||||
Paper picking is used when RF coverage is missing, when a customer wants a printed bon de préparation, or as a fallback mode.
|
||||
|
||||
**Prerequisites.** Grant the users three rights via `Permissions des groupes d'utilisateurs → Web → Sorties/Ordres de Sortie` : **Préparer avec FR**, **Générer lot**, **Imprimer préparation de commande papier**.
|
||||
|
||||
**Standard flow.**
|
||||
|
||||
1. **Release the outbound order** (normal release).
|
||||
2. Click **"Préparer Préparation de commande papier"**.
|
||||
3. Check that a **staging buffer or dock is assigned** to the order, then click **Generate batch** (*Générer un lot de préparation*).
|
||||
4. Print the bon de préparation via **"Imprimer préparation de commande papier"**.
|
||||
5. The picker performs picking on paper, annotating differences.
|
||||
6. Back at the station, click **Confirmer le lot** and **scan the batch number** on the printed sheet :
|
||||
- If the order is complete → scan the batch number a second time to close the preparation.
|
||||
- Otherwise → scan the incomplete tasks one by one and enter the actual picked quantity.
|
||||
7. Scan the batch number one last time to mark the preparation done — the order transitions to **"Prepared"** and stock is transferred to the staging buffer / dock.
|
||||
|
||||
### Picking Incidences (Manual Warehouse)
|
||||
|
||||
During picking, issues are recorded when containers are not where expected or extraction is blocked:
|
||||
- **Mark to review**: creates a lock and count on the container/location; does not interrupt the current process; lock removed when count completes
|
||||
- **Stock adjustment**: ERP is notified of any inventory corrections via messenger service
|
||||
|
||||
**Wait for replenishment**: configurable behavior — system can auto-trigger replenishment tasks when a picking location is empty to complete the pick.
|
||||
|
||||
By default, when an outbound order is released and no picking location has stock (but stock exists in replenishment sources), picking tasks are created on empty PDLs — these are **silently skipped at execution time** if the PDL is still empty when the operator reaches it. Three global parameters relax this default :
|
||||
|
||||
| Parameter | Effect | Key workflow(s) |
|
||||
|---|---|---|
|
||||
| `PICKING_ALLOW_WAITING_ON_LOCATION_ON_WAIT_FOR_REPLENISHMENT` | Operator is warned "Possible wait for replenish" and can choose to replenish themselves, adjust stock, or skip | `ExecutePicking_WaitForReplenishment_UI` |
|
||||
| `PICKING_ALLOW_STARTING_DECISION_ON_WAIT_FOR_REPLENISHMENT` | Operator can **refuse** an outbound order that contains tasks waiting for replenishment (from the picking-tasks menu) | `Outbound_ObtainPickingTask_ExecuteTask_UI_v1` → `ExecutePicking_IncreaseReplenishPriorityAndGetIfCanDoTask_PR` → `Helper_ParameterAsBoolean_PR` → `Outbound_ObtainPickingTask_ConfirmWaitForReplenish_UI` |
|
||||
| `PICKING_ALLOW_UNLOADING_ON_LOCATION_ON_WAIT_FOR_REPLENISHMENT` | Operator can **store** the client container instead of depositing it at the destination when tasks remain blocked on replenishment | `Expedition_FinishExpedition_GetShowStoreButton_PR` (checks parameter + container full + remaining picking tasks) |
|
||||
|
||||
Operator flow for the third parameter :
|
||||
|
||||
1. After doing all pickable tasks, press **Finir** (`ExecutePicking_SelectOriginLocation_UI`)
|
||||
2. The deposit screen appears (`Expedition_FinishExpedition_ShowLocationToUnload_UI`)
|
||||
3. Press **Stocker** (`Equipment_Unload_ContainerUnloadOnUnknownLocation_UI_V2`)
|
||||
4. When the order is resumed later, the stored client container can be reused (`Outbound_SelectContainerToCreate_UI`)
|
||||
|
||||
**Undo preparation**: unassigns a specific stock line from the order it was prepared for (returns stock to assignable pool).
|
||||
|
||||
**Undo excesses**: guided removal of over-picked stock from shipping orders (due to quantity changes or line cancellations after preparation).
|
||||
|
||||
**Excess reduction**: if multiple tasks exist for the same item and one is over-picked, the remaining tasks are reduced by the excess amount (or canceled if already satisfied).
|
||||
|
||||
## Picking — Automatic Warehouse (Picking Conveyor / PK)
|
||||
|
||||
In automatic warehouses, picking is goods-to-person. The TMS extracts containers from storage and brings them to a **picking conveyor (PK)** station. One PK can serve multiple **preparation zones (MP)**; each MP is a physical table where the operator deposits picked stock into client containers.
|
||||
|
||||
The PK station must be assigned to the shipping order along with at least one preparation zone. Multiple MPs per PK allow parallel order preparation.
|
||||
|
||||
### PK / MP setup and assignment mode
|
||||
|
||||
Configuration of picking + preparation pairs (robotics-specific, from EasyS + SmartUI):
|
||||
|
||||
- **Picking station** (EasyS): add a conveyor with role **Picking**, create a **Workstation** to drive it from SmartUI, define routes (where stock can arrive from, where it leaves to)
|
||||
- **Preparation tables** (EasyS routes):
|
||||
- **Manual** route from picking table → preparation tables
|
||||
- **Galileo** route from preparation tables → output table
|
||||
- **Virtual** route → consolidation zone
|
||||
- **Max concurrent orders** (SmartUI): **Menu → Control → Workstations** → select PK → set the value. Must **equal the number of preparation tables** linked to the PK
|
||||
- **MP assignment mode** (SmartUI): **Menu → Control → Workstations** → select MP(s) → **Modify assignment mode**
|
||||
- **Automatic** — WMS assigns the next order to a table
|
||||
- **Manual** — operator assigns via **Menu → Control → Picking-station assignment**. ⚠️ In manual mode, **tasks do not generate until the order is assigned**
|
||||
- **Route requirement**: the MP must have a route to the shipping dock of the order — otherwise tasks won't generate
|
||||
|
||||
**Three ways to trigger container extraction from the miniload:**
|
||||
1. Demand the container from the picking workstation (specific support, empty supports, or specific item)
|
||||
2. Request empty containers
|
||||
3. Launch an order — assigns PK + generates `pickingContainer` tasks
|
||||
|
||||
For detailed bring-up in simulation and the "Store container" + "Liberate" test flow, see [Galileo Simulation](../operations/galileo-simulation.md).
|
||||
|
||||
### Direct Picking (Phase by Phase)
|
||||
|
||||
1. **Confirm container on conveyor**: operator scans SSCC of arriving container (or auto-confirmed if configured). Tasks are sorted: in-process → round number → negative picking → consolidation at origin → creation date → task number.
|
||||
2. **Confirm preparation zone + destination container**: system assigns MP to the order. If no container exists on the MP, operator creates one (scan or auto-generate SSCC). If no MP is accessible, system selects dock/stage/consolidation station as destination.
|
||||
3. **Confirm item + logistic attributes**: operator scans item (or auto-confirmed). System checks family restrictions and filters logistic attributes as required.
|
||||
4. **Enter picked quantity**: operator enters quantity (or confirms with barcode scan, one-scan-one-unit, or one-scan-N-units). PTL illuminates at the MP with required quantity. Decimal quantities handled in two-pass confirmation on PTL.
|
||||
5. **Enter picking weight** (if item has weight control): mandatory step; checks min/max weight per presentation.
|
||||
6. **Confirm destination**: operator confirms the MP (only if MP is the destination; auto-confirmed if one container on zone and auto-confirm enabled).
|
||||
7. **Close client container**: system checks if container should be closed (no more tasks for the order at this PK). Closure is mandatory when remaining tasks have lower stackability or MP is automatic. PTL function button can trigger closure. On closure: container label + packing list printed if configured.
|
||||
|
||||
**Alternative actions at any phase:**
|
||||
- Remove from conveyor → container to Lost & Found, tasks canceled
|
||||
- Return → postpone, move container to nearest PIE or MU (reject station if none)
|
||||
- Skip task (if multiple tasks on container)
|
||||
- Select another destination MP
|
||||
- Close client container early
|
||||
- Stock not found → delete from container (adjustment), decide next action
|
||||
- Insufficient stock → adjust actual quantity
|
||||
- Check to review → set review lock, continue
|
||||
|
||||
### Grouped Picking (Automatic Warehouse)
|
||||
|
||||
Grouped picking replaces individual picking when multiple shipping orders share stock from the same source container. Instead of making N individual passes, the operator picks the total needed quantity once and distributes it across N preparation zones, each illuminated by a PTL.
|
||||
|
||||
**Conditions for grouped picking:**
|
||||
- PK configured to allow grouped picking
|
||||
- Original task has a single-location preparation zone
|
||||
- PK has exactly one PTL-equipped location (PTL + controller both enabled)
|
||||
- Item has no logistic attribute capture or weight capture requirements
|
||||
- Compatible tasks: same stock requirements, PK assigned, single-location MP with PTL, no existing stock from a different order on the MP
|
||||
|
||||
Grouped picking is incompatible with: automatic quantity confirmation, barcode scanning mode, automatic destination confirmation.
|
||||
|
||||
**Grouped picking phases:**
|
||||
1. Confirm container on conveyor (same as direct)
|
||||
2. Create picking containers on each compatible MP
|
||||
3. Confirm item + logistic attributes; system deselects tasks for which there is insufficient stock
|
||||
4. PTLs illuminate simultaneously on all compatible MPs → operator picks total, distributes to each zone by pressing PTL
|
||||
5. Close containers as each is completed
|
||||
|
||||
### Negative Picking
|
||||
|
||||
When a container is over-stocked relative to what is needed for the current task (e.g., container holds 50 units but task only needs 10), negative picking extracts the **excess** and places it in a new container that is returned to the warehouse. This corrects the container's stock to match what the task required.
|
||||
|
||||
### Container Closure and Return
|
||||
|
||||
After all picking tasks for a shipping order are completed at the PK:
|
||||
- PK is unassigned from the order
|
||||
- Operator confirms container disposition (return to warehouse or remove)
|
||||
- Physical PK pushbutton is pressed to signal completion
|
||||
- TMS generates movement tasks to return the source container to its storage location or to a rejection station
|
||||
|
||||
## Picking — Pick and Pack Mode
|
||||
|
||||
In Pick and Pack warehouses, operators pick stock directly into the final shipping carton (client container). Two integration levels:
|
||||
|
||||
| Mode | Description |
|
||||
|---|---|
|
||||
| **Without prepackaging** | Operator picks item by item into shipping carton at location |
|
||||
| **With prepackaging (individual orders)** | System calculates optimal carton allocation before picking; operator receives pre-defined container labels |
|
||||
| **With prepackaging (grouped orders)** | Same, but for multiple orders picked simultaneously |
|
||||
| **Single parcel** | One-item, one-carton picking; minimal steps |
|
||||
| **Different presentations** | System handles mixed UoM in the same carton |
|
||||
| **Mixed scenario (SP + consolidation)** | Single-parcel orders consolidated into shared shipping containers |
|
||||
|
||||
Prepackaging calculation:
|
||||
- Uses item dimensions + carton types to determine optimal packing
|
||||
- Can come from ERP (prepackaged by supplier) or calculated by EasyWMS
|
||||
- User-driven prepackaging: operator selects container type interactively
|
||||
|
||||
## Stock Assignment Transactions and Events
|
||||
|
||||
| Event | Transaction |
|
||||
|---|---|
|
||||
| Picking task executed | `STK.PICKING` |
|
||||
| New client container created at MP | `CON.CREATE` |
|
||||
| Client container closed | `CON.COC` |
|
||||
| Container movement to dock/stage (virtual route) | `CON.MOVE`, `STK.MOVE`, `CON.LOAD`, `STK.LOAD` |
|
||||
|
||||
## Picking Path Design
|
||||
|
||||
The picking path is the optimal traversal order of locations for picking tasks. Path efficiency depends on:
|
||||
- **Warehouse design**: single bi-directional aisle vs. zigzag (in-out separate aisles)
|
||||
- **Narrow aisles**: one direction, pick both sides crossing the aisle
|
||||
- **Wide aisles**: two-way with each side directed differently; each shelf projects to nearest aisle
|
||||
- **Sub-warehouse local paths**: Pick and Pass allows per-sub-warehouse picking paths
|
||||
|
||||
The picking path starts at the **picking start point** (configured per sub-warehouse or warehouse) and ends at the shipping area. The path selects the next closest task, but overall path optimality depends on warehouse layout.
|
||||
|
||||
## Order Planning — Waves, Groups, and Shipment Templates
|
||||
|
||||
### Order priorities
|
||||
|
||||
Each shipping order carries a priority that determines task sequence:
|
||||
|
||||
| Priority | Relative urgency |
|
||||
|----------|-----------------|
|
||||
| **Urgent** | Highest — processed first in all queues |
|
||||
| **High** | Above normal |
|
||||
| **Normal** | Default |
|
||||
| **Low** | Below normal |
|
||||
| **Very Low** | Lowest — processed last |
|
||||
|
||||
Priorities are set per order (from the ERP or manually) and apply across all picking and shipping task generation.
|
||||
|
||||
### Order quantity states
|
||||
|
||||
Each shipping order line tracks quantities at four execution stages:
|
||||
|
||||
| Quantity type | Meaning |
|
||||
|---------------|---------|
|
||||
| **Assigned** | Stock selected and reserved from inventory (assignment done, not yet picked) |
|
||||
| **Prepared** | Stock physically picked and placed in client container (pick task complete) |
|
||||
| **Loaded** | Stock loaded onto truck or placed at dock (load task complete) |
|
||||
| **Shipped** | Order confirmed dispatched; stock decremented from WMS |
|
||||
|
||||
These stages allow visibility into order execution progress and enable exception detection (e.g., prepared > loaded means dock delay).
|
||||
|
||||
### Shipment templates (modèles d'expédition)
|
||||
|
||||
Shipment templates automate wave and group creation by applying a set of selection criteria on a schedule. Instead of manually creating a wave each time, a template runs automatically (or is triggered manually) and selects matching orders into a wave or group.
|
||||
|
||||
**Selection criteria (15+ configurable per template):**
|
||||
|
||||
| Category | Criteria |
|
||||
|----------|---------|
|
||||
| Carrier | Carrier code |
|
||||
| Client | Client/account code |
|
||||
| Owner | Owner code (3PL multi-owner) |
|
||||
| Destination | Delivery address or region |
|
||||
| Order type | Order type code |
|
||||
| Order class | Order class (commercial category) |
|
||||
| Order typology | Order typology (operational subtype) |
|
||||
| Stock check | Include/exclude orders with unresolved stock shortages |
|
||||
| Item type | Orders containing items of a specific type |
|
||||
| Item family | Orders containing items of a specific family |
|
||||
| Danger flag | Orders with/without hazardous items |
|
||||
| Crossdocking | Orders eligible for crossdocking |
|
||||
| Ungrouping zone | Target ungrouping zone |
|
||||
| Packing zone | Target packing zone |
|
||||
| Custom fields | Free-text fields on the order |
|
||||
|
||||
**Scheduling**: templates can be configured to run on a time-based schedule (e.g., daily at 14:00) or executed manually on demand. Each execution creates one wave or group from all matching orders at that moment.
|
||||
|
||||
**Priority within template**: orders selected by the template are ordered by their individual priority field.
|
||||
|
||||
### Order fusion
|
||||
|
||||
**Fusion** merges multiple shipping orders from the same client/destination into a single preparation batch. This is a **manual-only** operation — EasyWMS does not auto-fuse orders.
|
||||
|
||||
Conditions for fusion:
|
||||
- Same client (account)
|
||||
- Same delivery destination
|
||||
|
||||
After fusion, the combined order is prepared as a single batch, reducing travel distance. The fusion can be reversed (split) if needed before picking starts.
|
||||
|
||||
## Parameters
|
||||
|
||||
| Parameter | Description | Default |
|
||||
|---|---|---|
|
||||
| `ALLOW_CONFIRMATION_ON_PLACEMENT` | At picking destination, operator confirms the container/dock is correct | Disabled |
|
||||
| `EMPTY_PICKING_LOCATION_QUESTION` | At last picking task from a location/container, system asks if it is empty (supports inventory) | Disabled |
|
||||
| `EMPTY_PICKING_LOCATION_STOCK_ADJUST` | If EMPTY_PICKING_LOCATION_QUESTION active: if yes, perform stock adjustment; if no, mark for review | true |
|
||||
| `PICKANDPASS_ALLOW_READ_DIFFERENT_CONTAINER` | Pick and Pass: allow operator to read an LPN different from the one proposed | Disabled |
|
||||
| `PICKING_ALLOW_WAITING_ON_LOCATION_ON_WAIT_FOR_REPLENISHMENT` | Operator can decide between self-replenishing, stock-adjusting, or skipping when the PDL is empty (see "Picking Incidences") | Disabled |
|
||||
| `PICKING_ALLOW_STARTING_DECISION_ON_WAIT_FOR_REPLENISHMENT` | Operator can refuse an outbound order that contains tasks waiting for replenishment | Disabled |
|
||||
| `PICKING_ALLOW_UNLOADING_ON_LOCATION_ON_WAIT_FOR_REPLENISHMENT` | Operator can store the client container instead of going to the destination when picks are still blocked on replenishment | Disabled |
|
||||
|
||||
## Common Errors
|
||||
|
||||
**No stock assigned (order line stays incomplete):** All assignment strategies exhausted without finding eligible stock. Check: stock states allow picking, no counting tasks on locations, picking dedicated location configured for item if replenishment-origin stock, no extraction errors at locations.
|
||||
|
||||
**Picking task not proposed by system:** Stock was assigned but the picking location has a lock preventing picking, or the aisle is blocked. Resolve the lock/block or trigger a location reassignment.
|
||||
|
||||
**PTL not illuminating:** PK not configured for PTL, PTL device or controller disabled, or MP has more than one container when auto-destination is expected. Check workstation configuration and PTL device status.
|
||||
|
||||
**Grouped picking reverts to individual:** One of the compatibility conditions failed (e.g., logistic attribute capture required, MP has stock from a different order). Check PK configuration and MP state.
|
||||
|
||||
**Excess over-picking:** An operator picked more than requested. System reduces remaining tasks for same item by the excess amount. If the order doesn't allow excess, an error is thrown; operator must undo excess.
|
||||
|
||||
**Cutting stock cut is wrong length:** Cutting stock requires exact-quantity handling. If the cut produces a wrong length, the operator must register an incidence and recut; the old stretch must be re-entered into inventory with correct quantity.
|
||||
|
||||
**Container full before order complete:** Client container runs out of capacity mid-picking. Operator uses "close container" action → a new client container is created for the remaining tasks. Both containers go to the dock for the same order.
|
||||
|
||||
## Interface Paths
|
||||
|
||||
| Interface | Path |
|
||||
|---|---|
|
||||
| RFT — picking (manual warehouse) | Menu "Picking" → task mode selection |
|
||||
| RFT — picking conveyor (automatic warehouse) | Workstation "Picking" view |
|
||||
| Web — stock assignment strategies | "Configuration" → "Stock assignment strategies" |
|
||||
| Web — shipping order + stock assign | "Shipping" → "Shipping orders" → order → "Stock assign" |
|
||||
| Web — workstations (PK config) | "Control" → "Workstations" |
|
||||
| Web — docks and stages | "Control" → "Docks and stages" |
|
||||
|
||||
## Related
|
||||
|
||||
- [Shipping](shipping.md) — picking is part of the shipping process; picking leads to truck loading
|
||||
- [Replenishment](replenishment.md) — picking from dedicated locations triggers replenishment when stock runs out
|
||||
- [Container (LPN)](container.md) — client containers are created during picking; source containers are extracted from storage
|
||||
- [Stock](stock.md) — stock assignment determines which specific stock unit is picked
|
||||
- [Reception](reception.md) — received goods enter inventory and become eligible for stock assignment
|
||||
- [Task](task.md) — picking generates Picking tasks; negative picking and cut picking are specific task types
|
||||
- [Outbound Order](order-outbound.md) — shipping orders are the source of picking demand; order priority drives task sequence
|
||||
- [Location](location.md) — picking dedicated locations (PDLs) are the primary source for picking; location logics control eligibility
|
||||
- [[cutting-stock]] — cutting stock picking (shelf, integrated station, delegated station) are specialized picking modes
|
||||
- [[stations]] — PK (type 2), MP (type 16), Workzone (type 64), Decision (type 63), Cutting Station (type 61) all support picking
|
||||
- [Tense Flow](tense-flow.md) — tense-flow picking bypasses storage : pick directly from a source support into a client container via the `PREPARATION` buffer
|
||||
@@ -0,0 +1,115 @@
|
||||
---
|
||||
title: "Prepackaging (Pré-emballage / Précolisage)"
|
||||
type: concept
|
||||
sources:
|
||||
- areas/shipping/shipping_admin/prepackaging_config.md
|
||||
- areas/shipping/shipping_admin/prepackaging_erp.md
|
||||
- sources/archives/04_Gestion_preemballage_precolisage.md
|
||||
related:
|
||||
- concepts/shipping.md
|
||||
- concepts/order-outbound.md
|
||||
- concepts/container.md
|
||||
- concepts/erp-interface.md
|
||||
last_compiled: "2026-04-17"
|
||||
---
|
||||
|
||||
# Prepackaging (Pré-emballage / Précolisage)
|
||||
|
||||
## Overview
|
||||
|
||||
Prepackaging (FR : *pré-emballage* ou *précolisage*) calculates the number and type of client containers required to fulfill a shipping order **before preparation starts**, with the goal of optimizing container usage (minimize parcels, or maximize filling) and guiding operators/packers on the target packing layout.
|
||||
|
||||
Two views drive prepackaging:
|
||||
- **Configuration → Stratégie de préemballage** : strategy definition
|
||||
- **Ordre de sortie → Lignes de pré emballage** : per-order view of the containers the strategy produced
|
||||
|
||||
## Strategy Configuration
|
||||
|
||||
A prepackaging strategy has the following fields:
|
||||
|
||||
| Field | Values | Description |
|
||||
|---|---|---|
|
||||
| **Code** | free text | Strategy name |
|
||||
| **Type de commande** | Fusion / Ordre de départ sans envoi / Vague | Which outbound grouping this strategy applies to |
|
||||
| **Processus** | Emballage / Préparation | When it is applied — at packing station or during picking |
|
||||
| **Type de précolisage** | Calculé par EasyWMS / Calculé par l'opérateur / Calculé par l'ERP | Who computes the container split |
|
||||
| **Mode de travail** | Strict / Pas strict | Strict = operator cannot deviate from the plan ; non-strict = operator can override |
|
||||
| **Logique de pré emballage** | Nombre minimum de colis / Volume minimum | "Fewest parcels" picks the largest container possible ; "Minimum volume" picks the smallest container possible |
|
||||
|
||||
> ⚠️ The strategy must be **activated** after configuration, otherwise it is ignored.
|
||||
|
||||
**Container types** are associated from EasyS (either reusing existing container types or creating new ones dedicated to prepackaging).
|
||||
|
||||
## Prerequisites (when EasyWMS computes the plan)
|
||||
|
||||
For `Calculé par EasyWMS` to work:
|
||||
|
||||
1. **Container types** must be configured in EasyS and associated to equipments.
|
||||
2. **Item dimensions and weight** must be populated (in conversions).
|
||||
3. **Mixing restrictions** between items must be defined — by item, by family, or by type.
|
||||
|
||||
## Calculation by ERP (SOR02)
|
||||
|
||||
When `Calculé par l'ERP`, the outbound order message carries a `<PrepackagingConfiguration>` block inside `SOR02`, including the pre-computed container(s) and the per-line quantities to pack in each.
|
||||
|
||||
```xml
|
||||
<PrepackagingConfiguration>
|
||||
<Operation>S</Operation>
|
||||
<PrepackagingProcess>Picking</PrepackagingProcess>
|
||||
<PrepackagingWorkingMode>Strict</PrepackagingWorkingMode>
|
||||
<PrepackagingContainers transactional="true" complete="false">
|
||||
<PrepackagingContainer>
|
||||
<Operation>S</Operation>
|
||||
<PrepOrderContainer>0203214687</PrepOrderContainer>
|
||||
<PrepContainerType>CartonS</PrepContainerType>
|
||||
<PrepackagingLines>
|
||||
<PrepackagingLine>
|
||||
<Operation>S</Operation>
|
||||
<OrderLineNumber>1</OrderLineNumber>
|
||||
<Quantity>2</Quantity>
|
||||
</PrepackagingLine>
|
||||
</PrepackagingLines>
|
||||
</PrepackagingContainer>
|
||||
</PrepackagingContainers>
|
||||
</PrepackagingConfiguration>
|
||||
```
|
||||
|
||||
Keys in this block:
|
||||
- `PrepackagingProcess` — `Picking` or `Packing`
|
||||
- `PrepackagingWorkingMode` — `Strict` / `NotStrict`
|
||||
- `PrepOrderContainer` — client container SSCC that must be used
|
||||
- `PrepContainerType` — container-type code (must exist in EasyWMS)
|
||||
- `PrepackagingLines.PrepackagingLine` — quantity per outbound line that belongs in this container
|
||||
|
||||
## Tested Behavior (Mecalux France, 2022)
|
||||
|
||||
Confirmed working vs. known-broken combinations:
|
||||
|
||||
| Combination | Behavior |
|
||||
|---|---|
|
||||
| Ordre de départ / Strict / Nombre minimum / poids normal | 1 carton L |
|
||||
| Ordre de départ / Strict / Nombre minimum / poids > seuil | Carton L (poids reste < 20 kg) |
|
||||
| Ordre de départ / Strict / Nombre minimum / famille non mélangeable | Articles répartis dans colis différents ✅ |
|
||||
| Ordre de départ / Strict / Nombre minimum / **type** non mélangeable | ❌ **non fonctionnel** — articles mélangés malgré la restriction |
|
||||
| Ordre de départ / Strict / Volume minimum | 3 conteneurs différents |
|
||||
| Vague / Strict / Volume minimum | Calcul réalisé par commande |
|
||||
| **Calcul par l'opérateur** | ❌ **non fonctionnel** |
|
||||
|
||||
> Keep in mind these limitations when scoping a project : for "type non mélangeable" or "Calcul par l'opérateur", a Jira / support escalation is needed before promising the behavior to a customer.
|
||||
|
||||
## Common Errors
|
||||
|
||||
**The strategy has no effect even though it is saved** : it was not activated. Re-open the strategy and toggle activation.
|
||||
|
||||
**`Calcul par EasyWMS` produces no containers** : item dimensions/weight missing, or no container type is associated to the equipment — both are prerequisites.
|
||||
|
||||
**`Type de commande = Ordre de départ sans envoi`** : applies to the simple single-order case ; for waves or fusions, pick the corresponding `Type de commande`, otherwise the strategy is ignored for those grouping types.
|
||||
|
||||
**ERP-computed prepackaging ignored** : check that `PrepackagingProcess` and `PrepackagingWorkingMode` are both valid values and that `PrepContainerType` exists as a container type in the WMS ; otherwise the whole `PrepackagingConfiguration` block is rejected silently on SOR02 integration.
|
||||
|
||||
## Related
|
||||
|
||||
- [Shipping](shipping.md) — the surrounding outbound process ; prepackaging is one step of it
|
||||
- [Outbound Order](order-outbound.md) — SOR02 carries `PrepackagingConfiguration` ; SOF carries the actually used containers
|
||||
- [Container (LPN)](container.md) — container types and SSCCs referenced by prepackaging
|
||||
- [ERP Interface](erp-interface.md) — full field tables for SOR02
|
||||
@@ -0,0 +1,435 @@
|
||||
---
|
||||
title: "Product / Item"
|
||||
type: concept
|
||||
sources:
|
||||
- areas/inventory_management/items/index.md
|
||||
- areas/inventory_management/items/types.md
|
||||
- areas/inventory_management/items/uom.md
|
||||
- areas/inventory_management/items/uom_base.md
|
||||
- areas/inventory_management/items/logistic_attributes.md
|
||||
- areas/inventory_management/items/profiles.md
|
||||
- areas/inventory_management/items/families.md
|
||||
- areas/inventory_management/items/alias.md
|
||||
- areas/inventory_management/items/conversions_presentations.md
|
||||
- areas/inventory_management/items/logistic_profile.md
|
||||
- areas/inventory_management/items/reception_profile.md
|
||||
- areas/inventory_management/items/putaway_profile.md
|
||||
- areas/inventory_management/items/shipping_profile.md
|
||||
- areas/inventory_management/items/abc_classification.md
|
||||
- areas/inventory_management/items/substitutes.md
|
||||
- areas/inventory_management/items/weight.md
|
||||
- areas/inventory_management/items/mix_items.md
|
||||
- areas/inventory_management/items/min_and_max.md
|
||||
- areas/inventory_management/items/subwarehouse_classification.md
|
||||
- areas/inventory_management/items/views/view_items.md
|
||||
- sources/archives/07_Gestion_gerbabilite.md
|
||||
- sources/archives/08_Ajouter_image_fiche_article_ITM01.md
|
||||
- sources/archives/12_Articles_alternatifs.md
|
||||
- sources/archives/15_Configuration_ABC.md
|
||||
- sources/archives/28_Creation_attribut_logistique_sans_capture.md
|
||||
- sources/archives/33_Les_poids.md
|
||||
related:
|
||||
- concepts/stock.md
|
||||
- concepts/container.md
|
||||
- concepts/reception.md
|
||||
- concepts/putaway.md
|
||||
- concepts/picking.md
|
||||
- concepts/shipping.md
|
||||
- concepts/count.md
|
||||
- concepts/order-inbound.md
|
||||
- concepts/order-outbound.md
|
||||
- concepts/cutting-stock.md
|
||||
- concepts/labels.md
|
||||
- concepts/erp-interface.md
|
||||
last_compiled: "2026-04-17"
|
||||
---
|
||||
|
||||
# Product / Item
|
||||
|
||||
## Overview
|
||||
|
||||
An **item** is the primary static master data element in Easy WMS. It represents each distinct product that an organization manages in its warehouse. Almost every WMS behavior — reception, putaway, picking, shipping, counting, replenishment — is governed by item configuration.
|
||||
|
||||
A critical distinction: the **item** is the master definition (SKU, attributes, rules), while **stock** is the physical instance of that item (a quantity of that item in a specific location/container with specific logistic attributes). The same item code can have stock across many locations simultaneously. Multiple owners can also hold stock of the same item code.
|
||||
|
||||
Items are managed primarily through the ERP (via ITM messages) or directly in the "Masters" section of the WMS interface. Every item must have at minimum a base unit of measure, a reception profile, and a shipping profile.
|
||||
|
||||
## Types
|
||||
|
||||
### Item types (storage mixing control)
|
||||
|
||||
Item types define mixing restrictions at the **storage** level (locations, containers, container divisions). When item types are configured, each type specifies whether it can mix with other types and which types are explicitly excluded.
|
||||
|
||||
- Item types **do not** affect reception or shipping
|
||||
- With location partitions, the partition limit applies to the individual item, not to its type
|
||||
|
||||
Use case: prevent storing hazardous chemicals in the same location as food items.
|
||||
|
||||
### Item families (client container mixing control)
|
||||
|
||||
Item families define mixing restrictions for **client containers** (containers being prepared for outbound shipping orders). Unlike types, families have no effect on storage locations.
|
||||
|
||||
Use case: prevent mixing refrigerated and ambient items in the same outbound parcel.
|
||||
|
||||
When the **Multi-Carrier module** is active, item families also carry a **packaging method** that controls how the carrier call is generated:
|
||||
- `Scan all items` — operator scans each item into a parcel
|
||||
- `Choose parcel count` — operator declares how many parcels; system moves all stock into parcel 1 (no automatic weight)
|
||||
- `1 parcel always` — no operator input; system assumes single-parcel shipment (for high-volume B2C)
|
||||
|
||||
The most restrictive method in an order takes precedence (Scan > Choose > 1 parcel).
|
||||
|
||||
### ABC Classification
|
||||
|
||||
The ABC classification indicates the rotation/activity level of an item relative to others:
|
||||
- **A**: High rotation (fast-movers)
|
||||
- **B**: Medium rotation
|
||||
- **C**: Low rotation (slow-movers)
|
||||
|
||||
Used in slotting optimization and putaway strategy rules to position items strategically.
|
||||
|
||||
**Operating principles.** The higher the class's movement threshold, the more important it is (A > B > C). Articles with the most movements are classified in the highest class. **Thresholds represent cumulative movement share** — an A article = top 50%, a B = top 80% (50+30), etc.
|
||||
|
||||
When an article straddles two classes, the `Type de calcul` chosen at evaluation decides :
|
||||
|
||||
| Mode | Behavior on overlap |
|
||||
|---|---|
|
||||
| **Inclusive** | Keeps the **higher** class |
|
||||
| **Exclusive** | Keeps the **lower** class |
|
||||
|
||||
**ABC class setup.** `Données Principales → Détails d'articles → Classement ABC` :
|
||||
- The higher the **minimum movement %**, the stronger the rotation represented.
|
||||
- No duplicate percentages.
|
||||
- The sum of all class percentages **must not exceed 100**.
|
||||
|
||||
**First assignment.** On first setup, every article is set to the **lowest rotation class**. This should be done in the article-base import ; when a new article is later created, this field must be populated manually.
|
||||
|
||||
**ABC evaluation (runtime)** — `Tableaux de Bord → Evaluation ABC` (recent versions). Parameters :
|
||||
- **Date** — `Start-end date` or `By number of day`
|
||||
- **Mouvements** — task types to include (at least one required)
|
||||
- **Type de calcul** — `Inclusive` or `Exclusive`
|
||||
|
||||
Execute then **refresh the grid** to see the results. Results persist until the next evaluation.
|
||||
|
||||
**Reading the result grid :**
|
||||
- **Red lines** — article is **over-rated** vs. the evaluation (its stored class is more important than measured activity).
|
||||
- **Green lines** — article is **under-rated** (measured activity higher than stored class).
|
||||
- Conforming articles are not listed.
|
||||
|
||||
The classification can be edited inline from the evaluation grid.
|
||||
|
||||
**ERP notification.** A dedicated button ships the list of misclassified articles to the ERP via the `SAC` file. To activate : `Configuration → Types de transaction` → search `SAC.SEND.001` → enable notification on insertion + post-processing.
|
||||
|
||||
## Units of Measure (UoM)
|
||||
|
||||
Every item must have a **base UoM** — the reference unit for all conversions. All stock quantities are stored and reported in the base UoM.
|
||||
|
||||
Additional **conversions and presentations** (EAN/GTIN presentations) define the commercial packaging:
|
||||
- Each conversion specifies the quantity of base UoM it contains (e.g., BOX12 = 12 units)
|
||||
- Each presentation has an EAN code (barcode for scanning at reception/picking)
|
||||
- A conversion can be **virtual** (reference only; no actual stock in that UoM)
|
||||
- Quantities can be decimal or less than 1 (e.g., fabrics measured by the meter)
|
||||
|
||||
The optional system toggle `ProductConversionQuantityMustBeGreatherThanOne` controls whether conversions can be smaller than the base UoM.
|
||||
|
||||
UoMs have an optional 2-character **abbreviation** used on PTL (pick-to-light) displays.
|
||||
|
||||
ERP integration: UoM creation (but not change or deletion) via ITM message.
|
||||
|
||||
**Alias** is an additional item code (e.g., EAN, customer code) for identification. An alias on a presentation represents the GTIN/barcode for that packaging. Easy WMS supports GS1 and HIBC label standards.
|
||||
|
||||
## Logistic attributes
|
||||
|
||||
Logistic attributes are characteristics that condition the logistic behavior of stock. They are defined in the **logistic profile** and associated with an item. The **Allow mixing** property per attribute controls whether stock with different values of the same attribute can be stored together.
|
||||
|
||||
| Logistic attribute | Description | Typical configuration |
|
||||
|---|---|---|
|
||||
| **Lot** | Groups of units produced under identical conditions (batch) | Mandatory on receipt; optional mixing allowed or not; max lots per line configurable in SOR |
|
||||
| **Expiration date** | Date after which stock is unusable | Mandatory on receipt; drives FEFO shipping logic |
|
||||
| **Best-before date** | Date after which stock loses some quality | Similar to expiration date |
|
||||
| **Production date** | Date stock was manufactured | Optional; used with days-of-life calculations |
|
||||
| **Days of life** | Number of days stock is usable; system generates shelf life expiration date | Configured as mandatory on receipt; shipping calculates eligibility: current date + required days ≤ end-of-life date |
|
||||
| **Serial number** | Unique alphanumeric ID per unit | Captured at picking, ungrouping, or packaging; optionally at putaway |
|
||||
| **Quality** | Qualitative characteristic (e.g., Grade A/B) | Mandatory or optional on receipt; mixing restrictions configurable |
|
||||
| **Size/Caliber** | Dimensional size of stock units | Mandatory or optional; value list configurable (e.g., small/medium/large) |
|
||||
| **Color** | Stock color | Value list configurable |
|
||||
| **Version** | Version/revision number; mandatory for kit items | |
|
||||
| **Production method** | Manufacturing process used | |
|
||||
| **Post-production treatment** | Processing after manufacturing | |
|
||||
|
||||
**Mixing days** refinement: for date-controlled items, specifies the maximum difference in days between mixed stock dates (expiry, shelf-life, or production depending on shipping logic).
|
||||
|
||||
### Creating a logistic attribute without a capture mode
|
||||
|
||||
By default, every logistic attribute requires a capture mode (manual, scan, etc.). In some custom flows the attribute must be **auto-generated by code** (e.g., serial number generated server-side) and therefore must exist **without** any capture mode — otherwise SmartUI / RFT will always prompt the operator.
|
||||
|
||||
> ⚠️ Once configured this way, the attribute value can no longer be edited from SmartUI or RFT without a custom — the only writer is the custom code that creates the stock.
|
||||
|
||||
**Procedure** (requires Admin role + Run Command access):
|
||||
|
||||
1. **Create the logistic profile** and add the attribute of the desired type. The capture mode is mandatory at creation — set it to `Manual` (it will be deleted in step 4).
|
||||
2. **Collect the identifiers** with a Run Query on the reading context:
|
||||
```csharp
|
||||
Context.LogisticAttributes.Select(la => new {
|
||||
la.Name,
|
||||
la.Id,
|
||||
la.LogisticProfileId,
|
||||
la.LogisticProfileCode,
|
||||
})
|
||||
```
|
||||
Note the `LogisticAttributeId` and `LogisticProfileId` of the attribute just created.
|
||||
3. **Generate a new GUID** via a scalar Run Query on the writing context (check **"Is scalar"**):
|
||||
```csharp
|
||||
Guid.NewGuid()
|
||||
```
|
||||
4. **Run Command** `LogisticAttributeCreateLogisticCaptureCommand` with:
|
||||
|
||||
| Field | Value |
|
||||
|---|---|
|
||||
| `CaptureMode` | `2` |
|
||||
| `CaptureProcess` | `2` |
|
||||
| `LogisticAttributeId` | ID from step 2 |
|
||||
| `LogisticCaptureId` | GUID from step 3 |
|
||||
| `ProfileId` | Profile ID from step 2 |
|
||||
|
||||
5. **Delete the initial `Manual` capture mode** from the logistic profile. The attribute now has only the empty (auto) capture mode.
|
||||
|
||||
**Validation.** In the logistic profile edit view, the attribute line appears with an **empty capture mode**. Confirms configuration is correct.
|
||||
|
||||
## Profiles
|
||||
|
||||
Profiles define item behavior in each WMS process. They allow bulk configuration — many items can share the same profile.
|
||||
|
||||
| Profile | Required | Purpose |
|
||||
|---|---|---|
|
||||
| **Logistic profile** | Optional | Defines which logistic attributes the item has and their mixing rules |
|
||||
| **Reception profile** | **Mandatory** | Controls behavior during inbound: label printing, weight capture, logistic attribute prompts, etc. |
|
||||
| **Putaway profile** | Optional | Links to putaway strategies and location rules for this item |
|
||||
| **Shipping profile** | **Mandatory** | Controls behavior during outbound: weight capture, substitute item mode, consolidation rules, etc. |
|
||||
| **Manufacturing profile** | Optional | Governs automatic logistic attribute generation for finished goods in manufacturing |
|
||||
| **Count profile** | Optional | Defines behavior during physical counts |
|
||||
| **Cutting profile** | Optional | Marks item as a cutting stock item; defines consolidation behavior and label requirements during cut picking |
|
||||
|
||||
### Profile configuration examples
|
||||
|
||||
**Logistic profile examples**:
|
||||
| Profile name | Logistic attributes tracked |
|
||||
|---|---|
|
||||
| `PROFIL_SIMPLE` | No special attributes (no lot, no expiry) |
|
||||
| `PROFIL_DLC` | DLC (use-by date) + optional lot; shipping uses FEFO |
|
||||
| `PROFIL_LOT` | Lot number only |
|
||||
| `PROFIL_SN` | Serial number (unit-level traceability) |
|
||||
|
||||
**Reception profile examples**:
|
||||
| Profile name | Key settings |
|
||||
|---|---|
|
||||
| `PROFIL_SIMPLE` | No quality block; quantity entry mode = scan + manual; 0% tolerance; expired stock: configurable |
|
||||
| `PROFIL_QUALITE` | Block with QUALITE status until manual release; standard scan + quantity |
|
||||
|
||||
**Shipping profile examples**:
|
||||
| Profile name | Key settings |
|
||||
|---|---|
|
||||
| `PROFIL_FIFO_MANU` | FIFO shipping logic; 0% picking excess; manual quantity validation |
|
||||
| `PROFIL_FIFO_SCAN` | FIFO logic; 0% picking excess; 1 scan validates quantity |
|
||||
| `PROFIL_FEFO` | FEFO logic (First Expired First Out); used for perishables |
|
||||
|
||||
## Item attributes (full reference)
|
||||
|
||||
| Attribute | Description |
|
||||
|---|---|
|
||||
| **Owner** | Company owning this item's stock; multiple owners can hold same item code |
|
||||
| **Description** | Full description (displayed in web UI) |
|
||||
| **Short description** | Abbreviated description (≤ defined length; used on RFT and workstation) |
|
||||
| **Handling description** | Instructions shown to operator at reception |
|
||||
| **Base UoM** | Reference unit for all conversions |
|
||||
| **Alias** | Additional codes (EAN, customer codes, GTINs per presentation) |
|
||||
| **Conversions & presentations** | UoM equivalences with EAN per packaging |
|
||||
| **Profiles** | Logistic / Reception / Putaway / Shipping / Manufacturing / Count / Cutting |
|
||||
| **Logistic attributes** | Characteristics controlling stock traceability (see above) |
|
||||
| **Stackability (Gerbabilité)** | Numeric value **0–10** controlling picking order and pallet-layer order in client containers. Low value = solid → picked **first**, placed at the **bottom** of the pallet. High value = fragile → picked **last**, placed **on top**. Populated via the `<Stack>` tag in `ITM01`. When all picked items share the same stackability, the default picking path is used instead. |
|
||||
| **Allow mix** | Whether different items can coexist in same location/container/division |
|
||||
| **ABC Classification** | Rotation level (A/B/C); used in putaway strategies |
|
||||
| **Sub-warehouse classification** | Min/max stock quantity per sub-warehouse |
|
||||
| **Image** | Product image (displayed during eCommerce reception at workstation). Set via the `<ImageName>` tag in `ITM01`. See "Item Image (ITM01)" below for local vs. URL-hosted options. |
|
||||
| **Hazard** | Marks item as hazardous material; used in putaway strategy restrictions |
|
||||
| **Stock labeled** | Whether item has a barcode label; if yes, auto-fills alias during picking |
|
||||
| **Substitute items** | Alternative items used when stock of this item is insufficient; each substitute has an equivalence ratio |
|
||||
| **Weight** | Fixed weight or min/max range (for variable-weight items like cutting stock); used for weight tolerance at reception and weight-capture enforcement in logistic profile |
|
||||
| **Item types** | Storage mixing groups |
|
||||
| **Item families** | Client container mixing groups |
|
||||
| **Is bulky** | eCommerce: bulky items go directly to storage area, not to standard reception processing |
|
||||
| **Min quantity for shipping** | Minimum shippable length/quantity (cutting items only) |
|
||||
| **Max quantity for shipping by line** | Maximum length/quantity per line (cutting items only) |
|
||||
| **Warning in picking message** | Free-text message shown to operator during picking of this item |
|
||||
| **Min temperature** | Minimum storage temperature; used in putaway to filter compatible locations |
|
||||
| **Max temperature** | Maximum storage temperature; used in putaway to filter compatible locations |
|
||||
| **Is packaging** | Marks item as a packaging material (informational only) |
|
||||
| **Allow crossdocking** | Whether stock of this item can be used for crossdocking |
|
||||
| **Conversion for picking** | Default UoM suggested during picking (when no alias scanned and no SOR preference) |
|
||||
| **Max partitions per item** | Maximum number of partitions assignable to this item in a picking location |
|
||||
| **Free fields (1–20)** | Up to 20 configurable free-text fields for custom data (e.g., brand, color code, fiscal code). Field labels are defined at the warehouse level. Useful for information that doesn't map to standard fields. |
|
||||
| **Minimum stock** | Minimum stock level threshold; when available (unprepared) stock falls below this, managers can receive alerts. Does not automatically trigger replenishment. |
|
||||
| **Picking alert message** | Free-text message displayed to operator when a picking task starts for this item (e.g., "Also take the battery"). Used for handling instructions. |
|
||||
|
||||
## Item Image (ITM01)
|
||||
|
||||
Two delivery paths for item pictures populated through `<ImageName>` :
|
||||
|
||||
**Local file.** By default, the WMS looks for images in :
|
||||
|
||||
```
|
||||
C:\inetpub\wwwroot\SmartUIServices\Imagenes\EasyWMS
|
||||
```
|
||||
|
||||
`<ImageName>` must contain **only the filename** (with `.jpg` / `.png` extension) :
|
||||
|
||||
```xml
|
||||
<ImageName>GINI.png</ImageName>
|
||||
```
|
||||
|
||||
**Remote URL.** Edit `C:\inetpub\wwwroot\SmartUIServices\appsettings.json` and set the **fixed URL prefix** in `"UserImagesURI"`. In `ITM01`, `<ImageName>` still contains only the filename :
|
||||
|
||||
- `UserImagesURI` = `https://pim.example.com/media/`
|
||||
- `<ImageName>` = `879507f2_R26_0203_BLK_1.jpg`
|
||||
- Effective URL resolved by the WMS : `https://pim.example.com/media/879507f2_R26_0203_BLK_1.jpg`
|
||||
|
||||
## Alternative / Substitute Items
|
||||
|
||||
When an item is out of stock, the WMS can pick a replacement item depending on its configuration. Setup requires three elements and an optional ERP flag :
|
||||
|
||||
### 1. SOR flag (ERP allows substitution)
|
||||
|
||||
In `SOR01` / `SOR02`, on the relevant `<Line>` elements :
|
||||
|
||||
```xml
|
||||
<LneTerms>
|
||||
<LneTrmAlternative>true</LneTrmAlternative>
|
||||
</LneTerms>
|
||||
```
|
||||
|
||||
### 2. Shipping profile — substitution mode
|
||||
|
||||
Every item involved in the substitution must carry a shipping profile (`Données principales → Détails d'articles → Profils d'expédition`). The mode (X = requested item, Y = substitute) is :
|
||||
|
||||
| Mode | Behavior |
|
||||
|---|---|
|
||||
| **Partiel** | Sums X + Y to reach the requested quantity. X is prioritized. |
|
||||
| **Substitution** | Picks X **or** Y exclusively — whichever quantity is closest to the requested one. |
|
||||
| **Tout ou rien** | If X + Y cannot reach the requested quantity, picks **only X** regardless of its quantity. |
|
||||
|
||||
> ⚠️ For components of **non-assembled kits**, the mode **must be `Partiel`**.
|
||||
|
||||
### 3. Substitute item table
|
||||
|
||||
In `Données principales → Articles`, select the **item to be replaced**, click **"Ajouter Alternatif"** and fill :
|
||||
|
||||
1. Base item.
|
||||
2. Trigger quantity (from what quantity onwards the replacement applies / by how many at a time).
|
||||
3. Substitute item.
|
||||
4. Quantity of the substitute used to replace the trigger quantity defined in (2).
|
||||
5. Activation period (leave blank = ad vitam).
|
||||
|
||||
### 4. SOF feedback
|
||||
|
||||
| Case | SOF payload |
|
||||
|---|---|
|
||||
| Only X picked | `<LneDIsAlternative>false</LneDIsAlternative>` |
|
||||
| X + Y picked | Two `<LneDetail>` blocks : one with `LneDIsAlternative=false` (X), one with `LneDIsAlternative=true` (Y) |
|
||||
| Only Y picked | Single `<LneDetail>` with `LneDIsAlternative=true` — `<LneItemCode>` still contains **X** (the requested item) |
|
||||
|
||||
## Labeling
|
||||
|
||||
Easy WMS generates item labels in CODE128B format. The label includes at minimum the item code; optionally the short description (up to 36 characters in standard format).
|
||||
|
||||
Supported label sizes:
|
||||
| Format | Labels per A4 sheet |
|
||||
|---|---|
|
||||
| A6 | Printed by labeller |
|
||||
| 175×135 mm | 2 per A4 |
|
||||
| 148×105 mm | 6 per A4 |
|
||||
| 105×29 mm | 20 per A4 |
|
||||
| 75×25 mm | 33 per A4 |
|
||||
|
||||
**Cutting item labels** have a special design: item code + length/quantity + UoM + logistic attributes. Format: A6 for labeller only.
|
||||
|
||||
Labels are printed from the web UI ("Items" view) or from the RFT ("Utilities → Label printing").
|
||||
|
||||
## Item base management (lifecycle)
|
||||
|
||||
The WMS item base grows over time as ERP sends new items (seasonal articles, per-reception creation, etc.). Without active cleanup, the item base can become very large and slow WMS search performance.
|
||||
|
||||
**Key principle**: the WMS should mirror the ERP's active article status.
|
||||
- When the ERP **deactivates** an article, it should send a deletion signal to the WMS (via ITM with deletion flag).
|
||||
- Most ERPs do not physically delete articles, only deactivate them. The WMS deletion should be triggered at that point.
|
||||
- If the ERP **reactivates** an article, it must resend the ITM creation file.
|
||||
- **WMS can only delete an item if no active stock or tasks reference it.**
|
||||
|
||||
> **Warning**: If the ERP cannot manage item lifecycle signaling and item volume is high, a custom cleanup strategy must be designed to prevent WMS performance degradation.
|
||||
|
||||
## ERP integration
|
||||
|
||||
| Message | Direction | Purpose |
|
||||
|---|---|---|
|
||||
| **ITM** | ERP → WMS | Create or update item master data (code, description, UoMs, profiles, logistic attributes) |
|
||||
| **SAC01** | WMS → ERP | ABC rotation classification suggestion. Sent manually after rotation recalculation in WMS; ERP can update item classification with this data. |
|
||||
|
||||
Note: ITM creates UoMs but cannot change or delete them. Item changes via ITM require careful management to avoid disrupting active stock or tasks.
|
||||
|
||||
**ABC rotation recalculation** can be done:
|
||||
- For the whole warehouse or a specific storage zone
|
||||
- Over a configurable period (days or date range)
|
||||
- As many times as desired; thresholds for A/B/C classes are user-configurable
|
||||
- Result is indicative when ERP is the master; operator can manually apply the suggested class to the item, then trigger SAC01 to sync the ERP
|
||||
|
||||
## Configuration
|
||||
|
||||
Key parameters:
|
||||
- `ProductConversionQuantityMustBeGreatherThanOne` (toggle): controls whether conversions < base UoM are allowed
|
||||
- `MAX_NUM_LABELS_TO_READ` (parameter): enables multi-reference label reading during reception, counting, and stock adjustment
|
||||
- Putaway strategies in **putaway profile** can filter by ABC classification, hazard, temperature, logistic attributes
|
||||
- **Substitutes** mode is configured in the shipping profile (partial substitution, all-or-nothing, etc.)
|
||||
|
||||
## Interface
|
||||
|
||||
| Function | Hardware | Menu path |
|
||||
|---|---|---|
|
||||
| Item master management | PC | Masters → Items |
|
||||
| Logistic profiles | PC | Masters → Item details → Logistic profiles |
|
||||
| Reception profiles | PC | Masters → Item details → Reception profiles |
|
||||
| Putaway profiles | PC | Masters → Item details → Putaway profiles |
|
||||
| Shipping profiles | PC | Masters → Item details → Shipping profiles |
|
||||
| Manufacturing profiles | PC | Masters → Item details |
|
||||
| Count profiles | PC | Masters → Item details → Count profiles |
|
||||
| Cutting profiles | PC | Masters → Item details → Cutting profiles |
|
||||
| Units of Measure | PC | Masters → Item details → Units of measure |
|
||||
| Item types | PC | Masters → Item details → Item types |
|
||||
| Item families | PC | Masters → Item details → (families view) |
|
||||
| ABC Classification | PC | Masters → Item details |
|
||||
| Label printing | RFT | Utilities → Label printing |
|
||||
|
||||
## Common errors
|
||||
|
||||
| Symptom | Cause | Solution |
|
||||
|---|---|---|
|
||||
| Item cannot be received | No reception profile assigned | Assign a reception profile before creating receipts |
|
||||
| Item not appearing in stock assignment | No shipping profile, or shipping profile excludes this stock status | Verify shipping profile; check required/rejected status flags on SOR line |
|
||||
| Mixing error at reception | Logistic profile "Allow mixing" set to No for a logistic attribute, and two values are present in the container | Receive items in separate containers or enable mixing in logistic profile |
|
||||
| Putaway profile not applied | Item has no putaway profile; system uses default warehouse strategy | Assign a putaway profile with appropriate strategies |
|
||||
| Substitute not used in assignment | Substitutes not configured in shipping profile, or not enabled in SOR line (`LneTrmAlternative`) | Check shipping profile substitution mode and enable in order if needed |
|
||||
| Days of life validation fails | Stock end-of-life date < current date + required days in SOR line | Ship with other stock, or ship expired stock explicitly if allowed |
|
||||
| Picking message not shown | Warning message not populated on item master | Set the "Warning in picking message" field on the item |
|
||||
|
||||
## Related
|
||||
|
||||
- [[stock]] — stock is the physical instance of an item; stock lines carry item code, owner, logistic attributes
|
||||
- [[container]] — containers hold item stock; item stackability controls order of picking into client containers
|
||||
- [[reception]] — reception profile drives behavior at inbound; logistic attributes captured during receipt
|
||||
- [[putaway]] — putaway profile defines strategies for this item; temperature/hazard/ABC attributes feed strategy filters
|
||||
- [[picking]] — shipping profile and logistic attributes drive picking behavior; substitutes used on stock failure
|
||||
- [[shipping]] — shipping profile mandatory; families control client container mixing; substitutes activated on shortage
|
||||
- [[count]] — count profile defines item counting behavior (ABC-driven cycle counts)
|
||||
- [[order-inbound]] — ROR lines reference items by code or presentation alias
|
||||
- [[order-outbound]] — SOR lines reference items; logistic attribute filtering drives stock assignment
|
||||
- [[cutting-stock]] — cutting profile marks item as cut item; enables min/max quantities and cut label printing
|
||||
- [[labels]] — item labels printed at reception, from stock view, and from RFT utilities
|
||||
- [[erp-interface]] — ITM message manages item master from ERP; SAC01 sends ABC classification back to ERP
|
||||
- [[kits]] — kit articles and component articles are both standard items; kit assembly consumes component stock
|
||||
@@ -0,0 +1,427 @@
|
||||
---
|
||||
title: "Putaway"
|
||||
type: concept
|
||||
sources:
|
||||
- areas/putaway/putaway_admin/putaway_process.md
|
||||
- areas/putaway/putaway_admin/putaway_apply_strategies.md
|
||||
- areas/putaway/putaway_admin/index.md
|
||||
- areas/putaway/putaway_admin/location_putaway_restrictions_example.md
|
||||
- areas/putaway/configurations/putaway_configuration01.md
|
||||
- areas/putaway/configurations/putaway_configuration02.md
|
||||
- areas/putaway/configurations/pdl_partition.md
|
||||
- areas/putaway/configurations/can_rack.md
|
||||
- areas/putaway/putaway_manual_wrh/optimization_location_channels.md
|
||||
- sources/archives/01_Strategies_rangement_fonctionnement.md
|
||||
- sources/archives/25_Strategie_remplissage_canaux.md
|
||||
- sources/archives/Bases_fonctionnement_robotique_EasyWMS.md
|
||||
- sources/archives/Configuration_EasyS.md
|
||||
related:
|
||||
- concepts/container.md
|
||||
- concepts/reception.md
|
||||
- concepts/replenishment.md
|
||||
- concepts/location.md
|
||||
- concepts/stock.md
|
||||
- architecture/galileo-integration.md
|
||||
- operations/galileo-simulation.md
|
||||
last_compiled: "2026-04-17"
|
||||
---
|
||||
|
||||
# Putaway
|
||||
|
||||
## Overview
|
||||
|
||||
Putaway is the process of finding an optimal storage location for containers, loose stock, or cutting stock after reception or internal movement. EasyWMS drives putaway through a strategy engine that evaluates criteria, restrictions, and sorting preferences to propose the best destination location.
|
||||
|
||||
Putaway applies to two warehouse environments: **manual warehouses** where RFT operators physically move goods with equipment (forklifts, hand trucks), and **automatic warehouses** where the Transport Management System (TMS) physically executes location tasks in response to EasyWMS instructions. In both cases, the strategy engine is the same; only the execution layer differs.
|
||||
|
||||
Valid objects for putaway:
|
||||
- Containers without movement/location blocks
|
||||
- Stock not in a state that prevents moving or locating
|
||||
- Stock not assigned to a shipping order (client stock cannot be putaway)
|
||||
|
||||
## Strategy Architecture
|
||||
|
||||
The putaway strategy engine is the core of location search. Two complementary strategy types exist:
|
||||
|
||||
| Strategy type | Scope | Priority |
|
||||
|---|---|---|
|
||||
| **Channel filling strategies** | APS, compact, PalletShuttle, dynamic, pushback locations with depth control | Applied first |
|
||||
| **Location strategies** | All location types | Applied if no channel strategy found or yields no result |
|
||||
|
||||
### Strategy Components
|
||||
|
||||
Each strategy (both types) is composed of four elements:
|
||||
|
||||
1. **Criterion** — Conditions that the container or stock must satisfy for the strategy to be a candidate (source, container type, stock properties, item classification, etc.)
|
||||
2. **Rule** — Conditions that the destination location must satisfy (location type, zone, aisle, height, mixing restrictions, etc.)
|
||||
3. **Restrictions** — Mixing constraints that determine which combinations of items/attributes/owners are allowed in the same location or channel
|
||||
4. **Sorting** — Preference ordering of valid locations (by distance, coordinates, fill level, item affinity, etc.)
|
||||
|
||||
Strategies are sequenced: if criteria for strategy N are not met, strategy N+1 is evaluated. The sequence continues until a location is found or all strategies are exhausted.
|
||||
|
||||
### SmartUI Configuration Workflow (Configuration → Stratégies de stockage)
|
||||
|
||||
The web UI exposes the strategy engine through two tabs : **Critères** and **Règles**.
|
||||
|
||||
**Sequence management.** Strategies are ordered by **sequence number** — lower = higher priority. The list view exposes **"Augmenter séquence"** / **"Diminuer séquence"** buttons to adjust priorities. The **last-sequence strategy must be a catch-all** (any item, any available location), otherwise the engine may exhaust the list and return no proposal to the operator.
|
||||
|
||||
**Onglet Critères** — "Rechercher un emplacement pour" offers :
|
||||
|
||||
| Option | Description |
|
||||
|---|---|
|
||||
| Conteneur client | Client (outbound) containers only |
|
||||
| Conteneur vide | Empty containers |
|
||||
| Profil de stockage | Only items with the specified putaway profile — ⚠️ *if an item has a profile, only profile-matching strategies apply to it* |
|
||||
| Conteneur ou stock | Loose stock or any container |
|
||||
|
||||
The **"Stock libre"** checkbox restricts the strategy to loose stock (containers excluded). Below, a **Stock** section filters on : stock status, supplier, ABC rotation, item type, owner, hazard codes. The **Station d'origine** block is used for robotic installations.
|
||||
|
||||
**Onglet Règles — "Rechercher un emplacement"** exposes two UI-specific controls not named in the pipeline above :
|
||||
|
||||
| Parameter | Values |
|
||||
|---|---|
|
||||
| **Mode de stockage** | N'importe quel / Conteneur uniquement / Stock Libre uniquement |
|
||||
| **Valable si** | Emplacement vide ou avec stock / Avec stock uniquement / Canal vide uniquement / Canal avec stock uniquement |
|
||||
|
||||
Remaining rule fields match *Stage 6* above (rack type, specific location, X/Y coordinates, side 0=gauche/1=droite, height min/max, max weight, **Article assigné** — PDL-like assigned-location search, type/aisle, zone, min/max temperature, entrepôt annexe).
|
||||
|
||||
> Crossdocking locations live in the crossdocking sub-warehouse : if the strategy leaves `entrepôt annexe` empty, the engine considers both the main and the crossdocking sub-warehouses.
|
||||
|
||||
**Onglet Règles — "Appliquer restrictions"** checkboxes : `Appliquer restrictions`, `Articles combinés`, `Mélanger des conversions`, `Combiner attributs logistiques`, `Utiliser jours de mélange`, `Mélanger types de conteneurs`, `Rangement partiel de stock`.
|
||||
|
||||
**Onglet Règles — "Order locations"** mirrors *Stage 7* sorting. Recommended default for manual warehouses : `Coord X ASC` (seq 1), `Coord Y ASC` (seq 2).
|
||||
|
||||
### Activation, Deactivation, and Editing
|
||||
|
||||
A strategy takes effect only after explicit **activation**. To modify an existing strategy :
|
||||
|
||||
1. `Configuration → Stratégies de stockage`
|
||||
2. **Deactivate** the target strategy
|
||||
3. Select it → **Éditer**
|
||||
4. Apply changes → **Save** → **Reactivate**
|
||||
|
||||
> Editing an active strategy is blocked by the UI ; attempting to save without the deactivate step is the most common cause of "ma modification n'a pas pris en compte".
|
||||
|
||||
## Location Search Pipeline (Putaway Strategies)
|
||||
|
||||
### Stage 1 — Filter valid strategies by criteria
|
||||
|
||||
EasyWMS filters all enabled strategies for the warehouse against five criterion groups:
|
||||
|
||||
**Strategy criteria (type):**
|
||||
- Container (non-client / client / empty)
|
||||
- Stock (loose)
|
||||
- Group by SO/Route (ASN pre-notified containers with expected shipping order or route+stop)
|
||||
|
||||
**Source station criteria:** strategy applies only if the container/stock is currently at a location associated with the configured station type or station.
|
||||
|
||||
**Container criteria:** container type, lock type, PLC height type, container weight range.
|
||||
|
||||
**Item criteria:** hazardous, owner, item type, ABC classification, temperature. For multi-reference containers, the dominant item (highest quantity in base UoM) determines these attributes.
|
||||
|
||||
**Stock criteria:** supplier, status (inbound/outbound), expired stock flag.
|
||||
|
||||
### Stage 2 — Obtain valid aisles
|
||||
|
||||
EasyWMS selects accessible aisles reachable by route from the container/stock's current location (direct or indirect routes). For **automatic aisles**, aisles that have exceeded the configured percentage of free locations for relocation are excluded to prevent blocking outbound movements.
|
||||
|
||||
Occupancy calculation differs by location structure:
|
||||
- **APS (depth control):** counts valid depths per container type vs. occupied depths
|
||||
- **Rack (position control):** counts valid positions per container type vs. occupied positions (considering mask blocking even for unoccupied positions that have tasks)
|
||||
|
||||
### Stage 3 — Aisle balancing (automatic warehouses, containers only)
|
||||
|
||||
When enabled via parameter `BALANCE_AISLE`, EasyWMS balances load across valid aisles using the formula:
|
||||
|
||||
```
|
||||
Load = (containers in aisle with same item × 5) + (total containers in aisle × 1) + (tasks destined to aisle × 7)
|
||||
```
|
||||
|
||||
Default weights: X=5, Y=1, Z=7 (configurable with expiry date). The aisle with the lowest load score is selected. If multiple aisles tie, the lowest aisle number wins. Once an aisle is chosen, only its locations proceed to the next stage. If no valid location is found in that aisle, the next strategy in sequence is evaluated.
|
||||
|
||||
For multi-reference containers, the item with the largest quantity (base UoM) is used for balancing.
|
||||
|
||||
### Stage 4 — Apply restrictions
|
||||
|
||||
Location restrictions (configured globally, independent of strategies) discard candidate locations where two incompatible items/item-types would be co-located. Restrictions are applied only when the strategy rule has "Use restrictions" checked.
|
||||
|
||||
| Restriction type | Scope |
|
||||
|---|---|
|
||||
| Do not locate in same zone | Items/item-types cannot share a zone |
|
||||
| Do not locate in same aisle | Items/item-types cannot share an aisle |
|
||||
| Do not locate in same sub-warehouse | Items/item-types cannot share a sub-warehouse location |
|
||||
| Do not fit on higher heights | Item A cannot be placed above item B in same column |
|
||||
| Do not putaway adjacent | Items/item-types cannot be in adjacent locations |
|
||||
| Minimum distance | Minimum meters required between items/item-types |
|
||||
|
||||
Restrictions can be scoped to a specific sub-warehouse. They must be enabled and referenced in the strategy to take effect.
|
||||
|
||||
### Stage 5 — Filter valid locations (physical/logical checks)
|
||||
|
||||
From remaining candidates, EasyWMS applies a hard validity checklist:
|
||||
|
||||
- Location logic allows putaway
|
||||
- Location not marked full
|
||||
- No lock preventing putaway
|
||||
- Station in READY state, not locked, allows inbounds, not over relocation % limit
|
||||
- For **containers**: storage type allows containers; container type/capacity fits; container height fits; volume available; weight within limit; assigned item matches (if any); valid unloading aisle
|
||||
- For **loose stock**: storage type allows stock; volume available; weight within limit; assigned item matches (if any); no owner mixing, no item mixing, no item-type mixing, no logistic-attribute mixing if configured
|
||||
|
||||
Route validity is also checked: there must be a station route from the container/stock's current station to the candidate location's station. For equipment-based searches, maximum reachable height and work area access are additionally validated.
|
||||
|
||||
### Stage 6 — Apply strategy rule filters
|
||||
|
||||
The strategy rule further filters candidate locations by:
|
||||
|
||||
| Rule scope | Configurable conditions |
|
||||
|---|---|
|
||||
| Destination location | Storage mode, Valid-if situation (empty/with stock/empty channel…), rack type, location type, X/Y coordinates, side, specific location, height range, column weight, assigned item |
|
||||
| Destination aisle | Aisle ID, automatic/manual, aisle with assigned item |
|
||||
| Destination zone | Zone ID |
|
||||
| Temperature | Min/max temperature, or use item's temperature range |
|
||||
| Destination sub-warehouse | Sub-warehouse, max containers, stock quantity, max inventory % |
|
||||
| Mixing restrictions | Mix items, mix conversions, mix logistic attributes, use mixing days, mix container types, partial stock location, apply restrictions |
|
||||
|
||||
**Mixing rules summary:**
|
||||
|
||||
| Mix item | Mix logistic attr | Logistic profile mix | Valid locations |
|
||||
|---|---|---|---|
|
||||
| NO | NO | any | Empty + same item + same logistic attrs |
|
||||
| NO | YES | mix:NO | Empty + same item + same logistic attrs |
|
||||
| NO | YES | mix:YES | Empty + same item + any logistic attrs |
|
||||
| YES | N/A | mix:NO | Empty + any item/attrs (unless item-pair has specific restriction) |
|
||||
| YES | N/A | mix:YES | Empty + any item/attrs |
|
||||
|
||||
Empty locations are always valid regardless of mixing configuration.
|
||||
|
||||
### Stage 7 — Sort locations by preferences
|
||||
|
||||
Valid locations are sorted according to the strategy's configured preferences (in priority order):
|
||||
|
||||
| Preference | Description |
|
||||
|---|---|
|
||||
| Distance to header ↑↓ | Distance from aisle header (automatic warehouses) |
|
||||
| Volume ↑↓ | Unoccupied volume (loose stock with volume-configured items) |
|
||||
| Aisle side ↑↓ | Left or right side of aisle |
|
||||
| Free positions ↑↓ | Occupancy level (mainly for drive-in) |
|
||||
| X coordinate ↑↓ | Physical X coordinate |
|
||||
| Y coordinate ↑↓ | Physical Y coordinate |
|
||||
| Depth ↑↓ | Depth position within rack channel |
|
||||
| Height ↑↓ | Physical height |
|
||||
| Same container type | Prioritize locations already holding same container type |
|
||||
| Same item stock | Prioritize locations already holding same item (loose stock only) |
|
||||
| Distance to assigned location | Fill picking dedicated location column first, then adjacent |
|
||||
| Proximity relocation | Move to closest location (same-aisle relocations only) |
|
||||
| APS3D level ↑↓ | APS3D aisle level (if APS3D module installed) |
|
||||
|
||||
### Stage 8 — Select optimal location and create task
|
||||
|
||||
EasyWMS selects the top-ranked location and creates a **Location task** to move the container/stock there. For traced containers, the task targets the base container of the trace hierarchy.
|
||||
|
||||
**If no valid location is found:**
|
||||
- Manual warehouse: operator is prompted to manually specify a destination
|
||||
- Automatic warehouse: a **Rejection task** is generated to move the container to the configured rejection station (if none configured, container stays at current location)
|
||||
|
||||
## Channel Filling Strategies
|
||||
|
||||
Channel filling strategies are exclusive to container putaway in depth-controlled locations (APS, compact, PalletShuttle, dynamic, pushback). They are evaluated **before** standard location strategies.
|
||||
|
||||
**Channel definition:**
|
||||
- Rack locations: same logical X coordinate (based on container type)
|
||||
- APS/compact/PalletShuttle/dynamic/pushback: the location itself is the channel
|
||||
|
||||
Channel strategies group equivalent containers (same type + height + stock reference, or same ASN shipping order/route+stop) and try to fill existing channels before opening new ones. The sequencing logic:
|
||||
1. Filter all enabled strategies meeting criteria
|
||||
2. For the first strategy in sequence, try to find channels for all sets of equivalent containers
|
||||
3. If all sets are placed → apply strategy, create reservations
|
||||
4. If any set fails → no reservations created, try next strategy
|
||||
5. If all strategies exhausted → fall through to location strategies
|
||||
|
||||
**Channel reservation:** each reservation has a configurable maximum time. After that time, unreserved containers lose their channel reservation.
|
||||
|
||||
**APS FIFO channel closure options:**
|
||||
- Do not close
|
||||
- Close at reservation creation
|
||||
- Close at reservation end
|
||||
- Close at reservation end only if channel is full (optionally auto-open when main location empties)
|
||||
|
||||
### Channel strategy configuration (SmartUI)
|
||||
|
||||
Channel filling strategies are set up under `Configuration → Stratégies de remplissage de canaux`. Unlike standard putaway strategies, **channel strategies are not sequenced** — the WMS picks the first eligible strategy in the list. Because of this, criteria must be narrow enough to distinguish between strategies.
|
||||
|
||||
**EasyS prerequisite.** Racks must be typed as `APS`, `Push Back`, `Dynamic Push Back`, or `Multi-Compact`. Without one of these rack types, the `EmptyChannels_ForContainer` query returns nothing and channel search returns empty. Each location must also declare a **number of authorized containers** — the WMS uses this to compute channel capacity.
|
||||
|
||||
**Two mandatory criteria fields:**
|
||||
|
||||
| Field | Purpose |
|
||||
|---|---|
|
||||
| **Postes sources à considérer** | Source stations from which a container becomes eligible. If the equipment's current station is not in this list, the strategy does not apply — even if the container otherwise matches. |
|
||||
| **Stations à considérer pour les supports candidats** | Buffer stations used to count containers to be placed. Example: if only `RECEPTION` is listed, the WMS searches other eligible containers at `RECEPTION` and looks for a channel with enough capacity to hold them all. |
|
||||
|
||||
**Rule fields** filter destination candidates: storage zones (prioritised), putaway preferences, min/max location height, total weight of candidate containers, **Utiliser l'équilibrage des allées** (boolean — reuses the aisle balance configured on standard putaway strategies).
|
||||
|
||||
**Reservation timeout.** The **Paramétrage du temps de réservation** field sets the maximum reservation lifetime; expired reservations are dropped automatically.
|
||||
|
||||
**Reservation view.** `Entrepôt → Réservations` shows, per reservation: originating strategy, destination location, item, owner, **remaining containers** on the reservation, PLC height type.
|
||||
|
||||
> ⚠️ Reservations are created **at putaway time only** — there is no background job reserving channels based on existing stock. A candidate container triggers the search and reserves a channel for itself + all buffer peers at that moment.
|
||||
|
||||
## Putaway Flow by Object Type
|
||||
|
||||
### Container Putaway (RFT)
|
||||
|
||||
1. Operator scans container location or container ID on the RFT
|
||||
2. System validates: container is in the scanned location, no conflicting tasks, no ASN pending receipt
|
||||
3. Equipment check: container type can be loaded, capacity not exceeded, weight within limit
|
||||
4. Container is computer-loaded onto equipment; source location released, equipment occupied
|
||||
5. Operator selects container to locate → strategy engine searches for location
|
||||
6. System proposes destination; operator confirms or enters alternative (valid if: warehouse match, storage allowed, not locked, allows containers, weight OK)
|
||||
7. For Conventional Rack with multiple positions: logical position is requested
|
||||
8. Optional: create picking dedicated location at destination (if `UNLOAD_CREATE_PRODUCT_LOCATION` enabled, location allows assigned location + picking, location is empty, container is not empty/multi-reference)
|
||||
9. Container unloaded: equipment and final location weights/capacities updated; masks and depths updated per location type
|
||||
|
||||
Multiple containers on equipment: operator can locate all in one search (following picking route) or one at a time. Unlocated containers remain on equipment.
|
||||
|
||||
### Stock Putaway (RFT)
|
||||
|
||||
Similar flow to container putaway, but:
|
||||
- Stock can be inside a container or loose on a location
|
||||
- Equipment check: weight only (no container type check)
|
||||
- Destination validation: location allows stock and/or containers, weight OK
|
||||
- Pre-generated label for picking dedicated locations: valid if label has no PDL assigned, or PDL is for correct stock type / empty with no replenishment tasks
|
||||
- If location only allows containers and has a single container: stock is stored inside that container
|
||||
|
||||
### Cutting Stock Putaway (RFT)
|
||||
|
||||
Cutting stock (items sold/stored by length/stretch) requires total-quantity handling — stretches cannot be split. Three modes:
|
||||
1. **Select then locate**: choose the stretch, confirm/enter destination
|
||||
2. **Guided unload**: system proposes destination for each stretch in sequence
|
||||
3. **Manual unload**: enter destination to unload all equipment stock at once
|
||||
|
||||
### Automatic Station Putaway
|
||||
|
||||
Location search is triggered automatically when a container arrives at these station types:
|
||||
|
||||
| Station | Trigger | Special behavior |
|
||||
|---|---|---|
|
||||
| **PIE** (pallet identification entry) | TMS event: container arrived at PIE | Channel filling first, then location strategies |
|
||||
| **Putaway conveyor (MU)** | TMS end-of-order received | Only if container has no existing putaway task |
|
||||
| **Other automatic stations** (excluding warehouse, shuttles, picking, stackers, empty buffers) | TMS end-of-order received | Only if container has no associated task |
|
||||
| **AS/RS (TRL)** | TMS deposit error | Search for new location in same aisle; also handles multi-load special cases |
|
||||
| **Warehouse station (ALM)** | Container at lower depth blocks extraction | Search for alternate location in same aisle; or operator manual relocation request |
|
||||
|
||||
TMS physically executes the movement after EasyWMS creates the location task.
|
||||
|
||||
## Putaway Profiles
|
||||
|
||||
Items can have a **putaway profile** assigned. Strategies can be linked to specific profiles, allowing different location logic for different product categories. Strategies without a profile assignment apply to items without a profile (excluding gap-fill and cross-reference strategies).
|
||||
|
||||
## Picking Dedicated Location Integration
|
||||
|
||||
When a warehouse uses picking dedicated locations (PDLs), the recommended putaway strategy sequence is:
|
||||
|
||||
| Sequence | Goal | Key rule setting |
|
||||
|---|---|---|
|
||||
| 1 | Replenish PDL directly | "Assigned location" enabled |
|
||||
| 2 | Store near PDL (in same aisle) | "Aisle with assigned location" enabled; sort by "Distance to assigned location" |
|
||||
| 3 (optional, containers only) | Store in PDL priority locations | "Assigned location" enabled for priority location type |
|
||||
|
||||
For loose stock replenishment into PDL containers, the **minimum percentage received to create new container** rule determines whether to fill an existing container (if received quantity ≤ threshold) or open a new container (if received quantity > threshold).
|
||||
|
||||
Capacity calculation at PDL:
|
||||
- **Container PDL**: containers + tasks destined to PDL; only matching item/logistic-attr containers counted if multi-reference
|
||||
- **Stock PDL**: stock quantity + tasks quantity; only matching item/logistic-attr stock counted if mixed
|
||||
|
||||
## Putaway in an automatic warehouse (end-to-end)
|
||||
|
||||
The strategy engine is shared with manual warehouses, but the execution path differs. Container arrival at an automatic entry station triggers:
|
||||
|
||||
1. TMS (GALILEO) sends an event to EasyWMS announcing the container arrival
|
||||
2. EasyWMS checks the container doesn't already have a putaway task
|
||||
3. Engine gathers valid putaway strategies for this context
|
||||
4. Strategies are applied in sequence to find a candidate location
|
||||
5. On hit → task created + sent to TMS; on miss → channel reservation / reject / wait for manual action
|
||||
6. TMS executes the physical move
|
||||
7. On deposit error (`EndErrorCode=1`) → new search in the same aisle, then in others
|
||||
8. On successful deposit → WMS state updated + temporary reservations released
|
||||
|
||||
For the protocol layer (Search, End, codes), see [GALILEO Integration](../architecture/galileo-integration.md).
|
||||
|
||||
## Putaway logic by rack depth
|
||||
|
||||
Strategy coverage expected per rack type (Mecalux France defaults):
|
||||
|
||||
**Single-depth racks:**
|
||||
- Ascending height (smallest possible location)
|
||||
- Rotation (zone matching the item's rotation class)
|
||||
- Stock balancing (by container count, same-product supports, in-transit supports)
|
||||
|
||||
**Double-depth racks:**
|
||||
- Ascending height + Rotation + Stock balancing
|
||||
- Avoid product mixing — causes relocations during picking
|
||||
- Avoid logistic-attribute / quantity mixing — depends on shipping logic
|
||||
|
||||
**>2-depth (APS) channels:**
|
||||
- Ascending height + Rotation + Balancing
|
||||
- **Forbid** product mixing (causes massive relocation)
|
||||
- Avoid attribute mixing when possible (use "mix days" parameter for close-by dates)
|
||||
- **Channel reservation**: EasyWMS analyses pending ASNs to pick the right tube length (e.g. 6 vs 10 deep)
|
||||
|
||||
### Empty-location headroom
|
||||
|
||||
**Standard value: 5%** empty locations — required for relocation work and flow variation absorption. Lower values starve the relocation and defragmentation jobs.
|
||||
|
||||
### Double-depth layout patterns (EasyS)
|
||||
|
||||
Two rack configurations for double-depth (TK / miniload):
|
||||
|
||||
- **Case #1** (most common at Mecalux France) — best for **mono-product supports**: rotation zones split by front / rear face (several supports with the same article live in the TK)
|
||||
- **Case #2** — best for **multi-product supports**: reduces picking-time relocations without pre-emptive defragmentation (an item never lives in two supports at once)
|
||||
|
||||
Choose the pattern **before** running rotation class setup — switching costs a full re-slotting.
|
||||
|
||||
## Parameters
|
||||
|
||||
| Parameter | Description | Default |
|
||||
|---|---|---|
|
||||
| `BALANCE_AISLE` | Enable aisle load balancing formula in automatic warehouse location search | Disabled |
|
||||
| `UNLOAD_CREATE_PRODUCT_LOCATION` | Automatically create picking dedicated location when placing container at valid location | Disabled |
|
||||
|
||||
## Common Errors
|
||||
|
||||
**No valid location found (manual warehouse):** All strategies exhausted; no location meets criteria + restrictions + rules. Operator must manually assign a destination. Check: strategy sequence coverage, restrictions not too restrictive, locations not marked full or locked.
|
||||
|
||||
**No valid location found (automatic warehouse):** Rejection task generated. Container goes to rejection station. Common causes: all aisles at relocation % limit, no route between current station and any candidate location, weight exceeded everywhere.
|
||||
|
||||
**Aisle balancing blocks putaway:** Aisle is chosen by balance formula but has no valid location (e.g., full or incompatible). System does not fall back to other aisles for that strategy — next strategy in sequence is tried instead. Ensure next strategy has adequate coverage.
|
||||
|
||||
**Container stuck in equipment:** Container loaded on equipment but operator ended session without locating. Container remains in equipment indefinitely. Resolve via manual relocation from the equipment management view.
|
||||
|
||||
**Picking dedicated location not proposed:** Item has no PDL created yet, or PDL is for different logistic attributes. Either create a PDL for the correct attributes, or ensure strategy sequence 1 (assigned location) handles this item.
|
||||
|
||||
**Cutting stock putaway fails validation:** Operator entered partial quantity instead of full stretch quantity. Cutting stock requires total-quantity entry — reject partial entries at the RFT.
|
||||
|
||||
## Interface Paths
|
||||
|
||||
| Interface | Path |
|
||||
|---|---|
|
||||
| RFT — container/loose stock putaway | Menu "Putaway" → "Containers/Loose stock" or "Containers" |
|
||||
| RFT — stock putaway | Menu "Location" → "Containers/Loose stock" or "Stocks" |
|
||||
| Web — putaway strategies | "Configuration" → "Putaway strategies" |
|
||||
| Web — aisle balancing | "Putaway strategies" → "Configuration" → "Aisle Balance" |
|
||||
| Web — restrictions | "Configuration" → "Restrictions" |
|
||||
| Web — channel filling strategies | "Configuration" → "Stratégies de remplissage de canaux" |
|
||||
| Web — channel reservations | "Entrepôt" → "Réservations" |
|
||||
|
||||
## Related
|
||||
|
||||
- [Container (LPN)](container.md) — the primary object being putaway; types, lock types, and weights are key strategy criteria
|
||||
- [Reception](reception.md) — putaway typically follows reception; containers can be placed directly from reception
|
||||
- [Replenishment](replenishment.md) — replenishment reuses the putaway strategy engine to move stock to picking dedicated locations
|
||||
- [Location](location.md) — location types (rack, APS, compact, dynamic, pushback) determine which strategy type applies
|
||||
- [Stock](stock.md) — stock status and logistic attributes are criteria and restrictions in putaway strategies
|
||||
- [GALILEO Integration](../architecture/galileo-integration.md) — how TMS drives physical execution of putaway tasks
|
||||
- [Galileo Simulation](../operations/galileo-simulation.md) — EasyS setup for double-depth racks, PLC Types, reject routes
|
||||
- [Task](task.md) — putaway generates Putaway tasks; automatic warehouse also uses Approach tasks for Pick & Pass
|
||||
- [Product / Item](product-item.md) — putaway profile on the item links strategies; hazard, temperature, and ABC classification feed strategy criteria
|
||||
- [Defragmentation](defragmentation.md) — rotation defragmentation reuses putaway strategies to relocate containers to their optimal ABC zone
|
||||
@@ -0,0 +1,262 @@
|
||||
---
|
||||
title: "Quality Control"
|
||||
type: concept
|
||||
sources:
|
||||
- areas/inventory_management/quality_control/index.md
|
||||
- areas/inventory_management/quality_control/quality_lock_web.md
|
||||
- areas/inventory_management/quality_control/quality_lock_trf.md
|
||||
- areas/inventory_management/quality_control/quality_lock_erp.md
|
||||
- areas/inventory_management/quality_control/quality_unlock.md
|
||||
- areas/inventory_management/quality_control/quality_automatic_unlock.md
|
||||
- areas/inventory_management/quality_control/cut_stock_lock.md
|
||||
related:
|
||||
- concepts/stock.md
|
||||
- concepts/container.md
|
||||
- concepts/reception.md
|
||||
- concepts/order-outbound.md
|
||||
- concepts/product-item.md
|
||||
- concepts/stock-adjustment.md
|
||||
last_compiled: "2026-04-10"
|
||||
---
|
||||
|
||||
# Quality Control
|
||||
|
||||
## Overview
|
||||
|
||||
**Quality Control** in EasyWMS manages the usability of stock throughout its lifecycle in the warehouse. It operates via a **stock status** (also called a **stock lock**) system: each status can block specific warehouse operations on the affected stock, preventing it from being picked, moved, replenished, or shipped until the quality issue is resolved.
|
||||
|
||||
EasyWMS controls stock quality from reception through shipping. Statuses can be applied:
|
||||
- At **reception** (via reception profile, inbound order line, or operator action)
|
||||
- **In the warehouse** (web interface, RFT, or ERP message)
|
||||
- At **shipping** (to require or prefer stock in a specific status for a shipping order line)
|
||||
|
||||
> **Important:** The _Expired_ state is **not** a stock status — stock expires automatically when logistic attribute dates (expiry date, best before date, end of life) are reached.
|
||||
|
||||
---
|
||||
|
||||
## Stock Status (Quality Lock) Concept
|
||||
|
||||
Each stock status is configured to block or allow specific operations:
|
||||
|
||||
| Operation | Can be blocked |
|
||||
|---|---|
|
||||
| Putaway | Yes |
|
||||
| Move | Yes |
|
||||
| Picking | Yes |
|
||||
| Replenishment | Yes |
|
||||
| Shipping | Yes |
|
||||
| Internal use (manufacturing) | Yes |
|
||||
|
||||
A single stock record can have two simultaneous statuses:
|
||||
- **Receiving status** — set at reception time (from profile, order line, or operator)
|
||||
- **User status** — applied manually by an operator, manager, or via ERP message
|
||||
|
||||
---
|
||||
|
||||
## Types of Stock Status Application
|
||||
|
||||
### Reception Status (Inbound Lock)
|
||||
|
||||
Three mechanisms can apply a status at reception time:
|
||||
|
||||
| Mechanism | Who | Priority |
|
||||
|---|---|---|
|
||||
| Item receiving profile | System (automatic) | Base |
|
||||
| Inbound order line / receiving order line | ERP/planner | Overrides profile if different |
|
||||
| Operator at reception (RFT) | Operator | Applied as user status (in addition to receiving status) |
|
||||
|
||||
Both a receiving status and a user status can coexist on the same stock. The operator-set status is the user status.
|
||||
|
||||
At reception close, the ERP is notified of stock status via the STC message (stock status change).
|
||||
|
||||
---
|
||||
|
||||
## Locking Stock in the Warehouse
|
||||
|
||||
### Lock from Web Interface (SmartUI)
|
||||
|
||||
From `Warehouse > Stock` or `Warehouse > Received stock`:
|
||||
- Lock can apply to stock from open receptions or stock without reception origin
|
||||
- Optional: end date/time for the lock
|
||||
- Optional: comment
|
||||
|
||||
If no end date is set, the lock remains until manually removed by a user or ERP.
|
||||
|
||||
**Effects of lock on active operations:**
|
||||
- If lock **blocks replenishment**: replenishment source assignments canceled → picking tasks decremented or canceled → affected lines re-released
|
||||
- If lock **blocks picking**: replenishment source assignments canceled → picking tasks decremented or canceled → lines re-released
|
||||
|
||||
### Lock from RF Terminal (RFT)
|
||||
|
||||
Via `RFT > Quality > Lock by location / Lock by container / Lock by item`:
|
||||
|
||||
| Lock scope | Granularity |
|
||||
|---|---|
|
||||
| By location | All stock in location, or stock of specific item/logistic attribute/quantity |
|
||||
| By container | All stock in container, or specific item/attribute/quantity |
|
||||
| By item | All stock of the item in warehouse, or filtered to specific locations/attributes |
|
||||
|
||||
Optional: end date/time and comment (same as web).
|
||||
|
||||
Same side effects on tasks and assignments as web interface lock.
|
||||
|
||||
### Lock from ERP (STR Message)
|
||||
|
||||
The ERP sends an **STR** (stock status request) message to request a lock. The lock can:
|
||||
- Specify any combination of location, item, logistic attribute, container
|
||||
- Include an optional end date/time and comment
|
||||
|
||||
EasyWMS responds with **STC** messages for each locked stock line (provided reception is closed).
|
||||
|
||||
In the SmartUI, ERP-applied locks appear as a user status.
|
||||
|
||||
---
|
||||
|
||||
## Unlocking Stock
|
||||
|
||||
### Manual Unlock (Web)
|
||||
|
||||
From `Warehouse > Stock` view: select stock lines and remove status. STV-style notification via STC to ERP.
|
||||
|
||||
### Manual Unlock (RFT)
|
||||
|
||||
Via `RFT > Quality > Unlock by location / Unlock by container / Unlock by item`:
|
||||
|
||||
- Unlock all stock at a scope, or partial (specific item, attribute, quantity)
|
||||
- **Receiving status** can be unlocked (not just user status)
|
||||
- Communications: STC sent to ERP when reception is closed
|
||||
|
||||
### Unlock from ERP (STR Message)
|
||||
|
||||
The ERP sends an **STR** message to unlock specific stock. EasyWMS:
|
||||
1. Removes the user status (or receiving status) from the matching stock
|
||||
2. Sends **STC** confirmation messages to ERP (provided reception is closed)
|
||||
|
||||
The ERP can unlock both user-set locks and receiving-status locks.
|
||||
|
||||
### Automatic Unlock (Time-Based)
|
||||
|
||||
When a lock has an **end date/time**, EasyWMS automatically removes the status when the date expires.
|
||||
|
||||
The job `Delete_StockStatusJob_PR` runs every **15 minutes** and checks for expired locks.
|
||||
|
||||
> **Warning:** Locks with durations shorter than 15 minutes cannot be reliably enforced. If sub-15-minute locking is needed, the job periodicity must be changed.
|
||||
|
||||
After automatic removal, EasyWMS sends STC to ERP (provided reception is closed).
|
||||
|
||||
---
|
||||
|
||||
## Quality at Shipping
|
||||
|
||||
Shipping order lines can specify a **required** or **preferred** stock status for the assigned stock:
|
||||
|
||||
| Mode | Behavior |
|
||||
|---|---|
|
||||
| Required status | EasyWMS assigns only stock in the specified status (even if that status blocks picking/shipping) |
|
||||
| Preferred status | EasyWMS preferably assigns stock with that status; uses other status stock if insufficient |
|
||||
|
||||
---
|
||||
|
||||
## Cutting Stock Locks
|
||||
|
||||
Cutting stock (items with non-consolidating UoM conversions) has special lock behavior due to the **indivisible** nature of coil/roll stretches.
|
||||
|
||||
### Partial Lock (Problem at Beginning of Coil)
|
||||
|
||||
When only part of a coil has a quality problem:
|
||||
1. Operator identifies the problematic length and locks it
|
||||
2. System **splits the stock line into two** (locked portion + clean portion)
|
||||
3. Operator physically cuts the locked length
|
||||
4. Optionally, operator relocates the locked/cut stock to another location
|
||||
5. Picking continues from the unaffected stretch
|
||||
|
||||
### Total Lock (Entire Coil)
|
||||
|
||||
When the entire coil is defective:
|
||||
1. Operator selects the entire length and locks it
|
||||
2. Stock line remains unified (no split)
|
||||
3. When lock is removed, stock line remains unified
|
||||
|
||||
Both partial and total locks can be performed from **RFT** or **ERP** (STR message).
|
||||
|
||||
---
|
||||
|
||||
## Transactions
|
||||
|
||||
| Transaction | Trigger |
|
||||
|---|---|
|
||||
| `CST.STK` | Stock status applied or removed (when reception is closed) |
|
||||
|
||||
Note: `CST.STK` is **not** generated if the reception is still open — changes are visible in the interface but not audited until reception closes.
|
||||
|
||||
---
|
||||
|
||||
## ERP Integration
|
||||
|
||||
| Message | Direction | Purpose |
|
||||
|---|---|---|
|
||||
| STR | ERP → WMS | Request stock lock or unlock |
|
||||
| STC | WMS → ERP | Notify stock status change (per locked/unlocked stock line) |
|
||||
|
||||
STC is only sent when the **reception is closed**. For stock from open receptions, changes are visible in the WMS but no ERP notification is generated until close.
|
||||
|
||||
---
|
||||
|
||||
## Business Rules
|
||||
|
||||
- A stock can have both a **receiving status** (set at reception) and a **user status** (set manually) simultaneously.
|
||||
- When a lock is applied, EasyWMS immediately checks all active tasks and assignments using that stock and adapts them (cancels or decrements) based on the operations the lock blocks.
|
||||
- Expired stock (`_Expired_` state) is handled by the logistic attributes expiry system — not the quality lock system.
|
||||
- Only locations that allow inventory can have their stock counted. Quality locks do not change this — but locks that prevent counting block task generation.
|
||||
- The 15-minute job for automatic unlock means that very short-duration locks (< 15 min) are not reliably supported.
|
||||
|
||||
---
|
||||
|
||||
## Configuration
|
||||
|
||||
| Setting | Location | Description |
|
||||
|---|---|---|
|
||||
| Stock statuses master | System master data | Define each status name and which operations it blocks |
|
||||
| Item receiving profile | Item master → Receiving profile | Auto-set receiving status + duration at reception |
|
||||
| `Delete_StockStatusJob_PR` | `Configuration > Jobs` | Controls automatic unlock job (default: 15 min) |
|
||||
|
||||
---
|
||||
|
||||
## Interface
|
||||
|
||||
| Path | Equipment |
|
||||
|---|---|
|
||||
| `Warehouse > Stock` → lock/unlock actions | PC |
|
||||
| `Warehouse > Received stock` → lock actions | PC |
|
||||
| `RFT > Quality > Lock by location` | RFT |
|
||||
| `RFT > Quality > Lock by container` | RFT |
|
||||
| `RFT > Quality > Lock by item` | RFT |
|
||||
| `RFT > Quality > Unlock by location` | RFT |
|
||||
| `RFT > Quality > Unlock by container` | RFT |
|
||||
| `RFT > Quality > Unlock by item` | RFT |
|
||||
| `Configuration > Jobs` | PC |
|
||||
|
||||
---
|
||||
|
||||
## Common Errors
|
||||
|
||||
| Symptom | Cause | Solution |
|
||||
|---|---|---|
|
||||
| STC message not sent to ERP after lock | Reception still open | Close the reception; STC will be sent at that point |
|
||||
| Automatic unlock not happening | Job `Delete_StockStatusJob_PR` disabled or slow | Check job status in `Configuration > Jobs`; verify it runs every 15 min |
|
||||
| Picking tasks not canceled after lock | Lock does not have "blocks picking" configured | Check stock status master configuration for the applied status |
|
||||
| Cannot unlock stock from RFT | Operator lacks "Quality" menu access | Check role permissions |
|
||||
| Cutting stock split not happening after partial lock | Non-consolidating UoM not configured for the item | Verify cutting item configuration; check UoM consolidation flag |
|
||||
| STC generated without lock set | Reception was already closed at the time of the lock request | Expected behavior; open receptions suppress STC |
|
||||
|
||||
---
|
||||
|
||||
## Related
|
||||
|
||||
- [[stock]] — Quality locks are stored as stock status fields; stock must have no movement-blocking lock to be picked, replenished, or shipped
|
||||
- [[container]] — Locks can be applied at container granularity; all stock in a container can be locked in one operation
|
||||
- [[reception]] — Receiving status is applied at reception time via profile, order line, or operator; STC sent at close
|
||||
- [[order-outbound]] — Shipping order lines can specify required/preferred stock status for assignment
|
||||
- [[product-item]] — Item receiving profile defines automatic lock status and duration at inbound
|
||||
- [[stock-adjustment]] — Both quality control and stock adjustment use STC/STK.ADJ transactions; quality locks affect task/assignment eligibility
|
||||
- [[cutting-stock]] — Cutting stock has partial/total lock behavior; lock can propagate to cut portions
|
||||
@@ -0,0 +1,446 @@
|
||||
---
|
||||
title: "Reception"
|
||||
type: concept
|
||||
sources:
|
||||
- areas/receptions/index.md
|
||||
- areas/receptions/reception_dock/index.md
|
||||
- areas/receptions/reception_dock/supplier_container.md
|
||||
- areas/receptions/reception_dock/blind_container.md
|
||||
- areas/receptions/reception_dock/return.md
|
||||
- areas/receptions/reception_asn/asn.md
|
||||
- areas/receptions/reception_pie/pie_recep_point.md
|
||||
- areas/receptions/reception_pk/pk_recep_point.md
|
||||
- areas/receptions/reception_admin/receipt_orders.md
|
||||
- areas/receptions/reception_admin/receipt_close.md
|
||||
- sources/archives/18_ASN_DirectTransfer.md
|
||||
- sources/archives/19_ASN_Transfer.md
|
||||
- sources/archives/29_Split_marchandise_reception.md
|
||||
related:
|
||||
- concepts/container.md
|
||||
- concepts/order-inbound.md
|
||||
- concepts/putaway.md
|
||||
- concepts/stock.md
|
||||
- concepts/product-item.md
|
||||
- concepts/quality-control.md
|
||||
- concepts/erp-interface.md
|
||||
- concepts/transactions.md
|
||||
- concepts/labels.md
|
||||
last_compiled: "2026-04-17"
|
||||
---
|
||||
|
||||
# Reception
|
||||
|
||||
## Overview
|
||||
|
||||
Reception is the process by which stock physically arrives at the warehouse and is formally registered in EasyWMS. Until a receipt is completed and closed, the arrived stock does not exist for any other WMS process (picking, replenishment, shipping). Reception is therefore the entry gate between the physical world and the logical warehouse state.
|
||||
|
||||
EasyWMS supports five distinct reception entry points — each suited to a different physical configuration and information context: **Dock** (manual, RFT-driven), **ASN** (pre-notified containers), **PIE** (automated sensor gate), **PK** (picking conveyor), and **Returns** (customer returns). All share the same fundamental structure: a **Receipt** groups received stock lines, and optionally links to a **Receipt Order** (planned) or generates one ad hoc (blind).
|
||||
|
||||
The reception output is always a REF message to the ERP confirming what was received, and an ASO message (for pre-notified containers) or similar notification per entry point.
|
||||
|
||||
---
|
||||
|
||||
## Receipt Document Structure
|
||||
|
||||
### Receipt
|
||||
|
||||
A receipt is a document that groups all the stock received in a physical delivery. It can be linked to one or more receipt orders, or created standalone (blind/return).
|
||||
|
||||
| Property | Description |
|
||||
|---|---|
|
||||
| Code | Auto-generated or user-defined |
|
||||
| Status | Created → In progress → Closing → Closed |
|
||||
| Receipt order(s) | One or more inbound orders this receipt covers |
|
||||
| Lines | One line per unique (item, UoM, logistic attributes, status) combination received |
|
||||
|
||||
A receipt is created:
|
||||
- Automatically when the first container of a receipt order is received (if `AutoCreateReceptionFromRecOrder` active)
|
||||
- Manually by the user from the web interface or RFT (if `ALLOW_CREATE_RECEPTION` active)
|
||||
- Automatically and transparently by PIE for blind entries
|
||||
|
||||
### Receipt Order
|
||||
|
||||
A receipt order represents planned incoming stock from the ERP. Received via `ROR` message.
|
||||
|
||||
**Header attributes:**
|
||||
|
||||
| Property | Description |
|
||||
|---|---|
|
||||
| Code | Inbound order code |
|
||||
| Status | Created → Partially received → Completed → Closed |
|
||||
| Type | Supplier / Return / Transfer |
|
||||
| Class | Functional classification (affects logistics treatment) |
|
||||
| Owner | Mandatory if Owner Extension module installed |
|
||||
| Supplier | For supplier-type orders |
|
||||
| Account | For return-type orders |
|
||||
| Source | Source warehouse for transfer-type |
|
||||
| Allow lines auto-creation | Whether unexpected items can be received against this order |
|
||||
| Enable container label printing | Print GS1-128 container labels during receipt |
|
||||
| Enable stock label printing | Print GS1-128 item labels during receipt |
|
||||
| Single receipt | Only one receipt auto-created for this order |
|
||||
|
||||
**Line attributes:** Item code, UoM, quantity, logistic attributes, stock status, container (optional), number of ERP parcels.
|
||||
|
||||
At close of receipt: `REF` sent to ERP. At close of receipt order: `ROF` sent to ERP.
|
||||
|
||||
---
|
||||
|
||||
## Reception Modes
|
||||
|
||||
### 1. Dock Reception (Manual / RFT)
|
||||
|
||||
Used for stock arriving physically at a warehouse dock. Operators use an RFT to receive stock.
|
||||
|
||||
#### Supply Reception (Supplier)
|
||||
|
||||
Stock arriving from a supplier against a receipt or receipt order.
|
||||
|
||||
| Sub-mode | Description |
|
||||
|---|---|
|
||||
| Multi-SKU LPN (multi-reference) | LPN contains multiple different items. Putaway on equipment or in a stage. |
|
||||
| Single-SKU LPN (non-identical) | LPN with one item, labeled or not. Supports logistic attribute capture and status. |
|
||||
| Single-SKU LPN (identical) | All LPNs contain same item and logistic attributes; can receive variable qty. |
|
||||
| Loose stock | Stock received without a container, placed directly in a stage. |
|
||||
| Cutting stock | Special flow for indivisible/measured stock (rope, cable, etc.). |
|
||||
|
||||
Two putaway modes for all sub-modes:
|
||||
- **Receipt and putaway**: Stock received on equipment → immediate location search.
|
||||
- **Receipt on stage**: Stock registered in a stage → putaway done later.
|
||||
|
||||
Supports **exclusive reserve** at receipt time: stock received can be pre-reserved for a specific shipping order or route (via `ROR` with reserve). The `CONFIRM_EXCLUSIVE_RESERVE_ASSIGNMENT` parameter controls whether the user must manually select the order when multiple compatible orders exist.
|
||||
|
||||
**ERP messages:**
|
||||
- Receives: `ROR` (receipt order), optional `ASN`
|
||||
- Sends: `REF` at close
|
||||
|
||||
**Transactions:** `CON.RECEP` per container, `STK.RECEP` per stock line.
|
||||
|
||||
**RFT path:** `Receipts > Supplier > Loose stock/multi-reference`
|
||||
|
||||
#### Blind Reception
|
||||
|
||||
Unplanned stock with no prior notification or entry order.
|
||||
|
||||
- A receipt is automatically created (and closed at end) — transparent to the user.
|
||||
- The receipt cannot be created or edited from the WMS UI.
|
||||
- Supports: multi-reference LPN, single-SKU LPN (labeled/unlabeled/identical), loose stock, cutting stock.
|
||||
- Communicates to ERP via `REF` after blind receipt close.
|
||||
|
||||
**RFT path:** `Receipts > Blind`
|
||||
|
||||
#### Returns Reception
|
||||
|
||||
Customer-returned stock coming back to the warehouse.
|
||||
|
||||
- Can be linked to a receipt order (if created from the web) or not (if created from RFT).
|
||||
- If created from RFT: no lines initially — lines are added as stock is received.
|
||||
- Date logistic attributes (expiry, shelf life) are captured but **not validated** — expired stock may be returned and must be managed after receipt.
|
||||
- Supports: containers, loose stock, cutting stock, exclusive reserves.
|
||||
- Custom code prefix configurable: `RETURN_RECEPTION_PREFIX`
|
||||
|
||||
**ERP messages:** `REF` at close.
|
||||
**RFT path:** `Receipts > Return`
|
||||
|
||||
---
|
||||
|
||||
### 2. ASN Reception (Pre-notified Containers)
|
||||
|
||||
Used when the ERP has pre-notified containers via `ASN` message before they physically arrive. The containers exist in the virtual **ASN location** with status _Pending receipt_ until physically received.
|
||||
|
||||
**Variants:**
|
||||
| Variant | Description |
|
||||
|---|---|
|
||||
| With receipt order | Container explicitly linked to an existing receipt order |
|
||||
| Without receipt order | Pre-notified but no receipt order; received without receipt association |
|
||||
| Stacked containers | Hierarchy of stacked/matched containers; `RECEPTION_ASN_CONFIRM_ALL_STACK_CONTAINERS` controls whether all must be confirmed |
|
||||
| Direct warehouse transfer (same org, near) | Containers transferred without truck; receipt order not created |
|
||||
| Indirect warehouse transfer (same org, distant) | Transfer needs truck; receipt order created at destination |
|
||||
| Two simultaneous receipts (same order) | Stock arrives in two trucks; operator creates separate receipts |
|
||||
| Multiple identical lines | Order lines with same stock merged; quantities split at receipt close |
|
||||
| Sequential channel storage | Containers for same shipping order/route stored together via channel-fill strategy |
|
||||
| Dummy containers | ERP notifies quantity without SSCC; dummies created, updated at PIE |
|
||||
| Exclusive reserve (ASN) | Entire container reserved for one shipping order |
|
||||
| Exclusive reserve (ROR) | Partial stock reserved for one or more orders |
|
||||
| Without stock information | Container pre-notified without stock content; exclusive reserve mandatory |
|
||||
|
||||
**Stock review at receipt (ASN):**
|
||||
- `RECEPTION_ASN_SHOW_CONFIRMATION_DIALOG`: if active, user can review/adjust/reject container stock before confirming receipt.
|
||||
- On rejection: `RECEPTION_FORBID_MOVE_FROM_ASN` controls whether container stays in ASN (true) or moves to Lost&Found and sends `ASK` (false).
|
||||
|
||||
**Strict mode for exclusive reserves:**
|
||||
- `USE_EXCLUSIVE_RESERVE_STRICT_MODE`: if active, receipt blocked when shipping order/route referenced in reserve doesn't exist.
|
||||
|
||||
**ERP messages:**
|
||||
- Receives: `ASN` (pre-notification)
|
||||
- Sends: `ASO` on receipt, `ASK` on rejection, `REF` on receipt close, `ROF` on order close
|
||||
|
||||
**Transactions:** `CON.CREATE` + `STK.CREATE` when ASN received, `CON.ASN.001` + `STK.ASN` at receipt, `CON.MOVE` + `STK.MOVE` for location change, `CON.DELETE` + `CON.CNL.ASN` on rejection.
|
||||
|
||||
**UI paths:**
|
||||
- Web: `Warehouse > ASN LPN`, `Receiving > Receipt orders`
|
||||
- RFT: `Receipts > Notices`
|
||||
|
||||
#### DirectTransfer — inter-warehouse ASN flow
|
||||
|
||||
When the source order is a `<DirectTransfer>` shipment (cf. [concepts/order-outbound.md](../concepts/order-outbound.md#asn--directtransfer-flow)), closing the expedition at origin triggers an automatic `ASO01` message on the destination warehouse, pre-creating the incoming ASN container(s). The operator then receives them via RFT menu **Réception → Préavis** just like any other ASN container.
|
||||
|
||||
- Container deletion from SmartUI (`Entrepôt → Conteneurs ASN → Supprimer`) triggers an `ASK01` back to the ERP.
|
||||
- ⚠️ The ASO/ASK messages carry **no reference to the originating shipping order or DirectTransfer header** — only the container and its stock.
|
||||
|
||||
#### Transfer — two-warehouse ASN flow (with receipt)
|
||||
|
||||
Unlike `<DirectTransfer>` (which bypasses reception at destination), a `<Transfer>`-type shipping order (`SorType = Transfer` in SOR02) **automatically creates an inbound order at destination** when expedition is confirmed at source. The destination ASN containers live on an `Asn` location in the destination warehouse.
|
||||
|
||||
| Setting (destination warehouse) | Effect |
|
||||
|---|---|
|
||||
| `AutoCreateReceptionFromRecorder = true` | A reception is created automatically when the first container is read. Otherwise the operator creates it manually. |
|
||||
| `AutoCloseInboundOrder = true` | Closing the reception auto-closes the inbound order and generates `ROF02`. |
|
||||
|
||||
Operator flow: RFT menu **Réception → Préavis** (of the destination warehouse) → scan each container → close.
|
||||
|
||||
**ERP messages generated:**
|
||||
- `ASO01` at each container reception
|
||||
- `ROF02` at inbound order closure (contains **all** received containers — the authoritative record for Transfer receptions)
|
||||
- `ASK01` when closing a partially-received inbound order (to drop non-arrived containers)
|
||||
|
||||
> ⚠️ Neither `ASO01` nor `ASK01` carries the transfer header info. For `<Transfer>` flows the ERP **must** consume `ROF02`.
|
||||
|
||||
Used in production at RAUD: transfers from hub LRM to spoke sites (MOR, LAM, …).
|
||||
|
||||
---
|
||||
|
||||
### 3. PIE Reception (Automated Entry Station)
|
||||
|
||||
The **PIE** (Pallet Identification Entry) is an automated gate station for automatic warehouses. It reads LPN labels automatically via scanner, validates dimensions/weight/condition, and routes containers into the warehouse or to a rejection/reconditioning station.
|
||||
|
||||
**Modes:**
|
||||
- **Automatic PIE**: reads labels automatically; on error, diverts to rejection.
|
||||
- **Semi-automatic PIE**: operator scans label manually when auto-read fails; container waits at station.
|
||||
|
||||
**PIE reception variants:**
|
||||
| Variant | Description |
|
||||
|---|---|
|
||||
| Blind (unknown) container | Container not pre-notified; PIE auto-creates blind receipt transparently; closed at end. |
|
||||
| Pre-notified, without receipt order | `ASN`-notified container, no linked receipt order; `ASO` sent at receipt. |
|
||||
| Pre-notified, with receipt order | Container linked to receipt/order; ALLOW_CREATE_RECEPTION controls auto-creation; `REF`+`ROF` sent at close. |
|
||||
| Exclusive reserve | Container with reserved stock; `USE_EXCLUSIVE_RESERVE_STRICT_MODE` controls behavior when order doesn't exist. |
|
||||
| Without stock info | No stock in `ASN`; exclusive reserve required; routed via inbound conveyors. |
|
||||
| Half pallets | Two half-pallets on a base pallet; slave/dummy container created; `Use slave container` setting in PIE config. |
|
||||
|
||||
**Rejection/Reconditioning routing:**
|
||||
- If container has issues (dimensional, labeling): diverted to rejection or reconditioning station.
|
||||
- At reconditioning, operator resolves issue and retries.
|
||||
- Container considered **received** (ASO sent) if issue is dimensional/physical.
|
||||
- Container **rejected** (receipt not possible) if receipt order data is missing or incompatible.
|
||||
|
||||
**Configuration:**
|
||||
- PIE working mode: Automatic / Semi-automatic
|
||||
- Auto container creation: enabled in EasyS or via `Stations` view action "Allow create container"
|
||||
- Number of labels: max barcodes per GS1 label
|
||||
- Avoid moving from ASN: per-station toggle
|
||||
|
||||
**ERP messages:** `REF` (blind close), `ASO` (pre-notified receipt), `ASK` (rejection)
|
||||
|
||||
**Transactions:** `CON.CREATE` + `STK.CREATE` (blind), `CON.ASN.001` + `STK.ASN` (pre-notified receipt), `CON.MOVE` + `STK.MOVE` (location change)
|
||||
|
||||
**UI path:** `Control > Stations` (web)
|
||||
|
||||
---
|
||||
|
||||
### 4. PK Reception (Picking Conveyor)
|
||||
|
||||
Pre-notified containers received via a **Picking Conveyor (PK)** workstation in automated warehouses.
|
||||
|
||||
- Container code scanned from workstation → container introduced into warehouse via inbound conveyors.
|
||||
- Variants: with or without receipt order, stacked/matched, with/without divisions.
|
||||
- If receipt order linked but doesn't exist: operator offered choice to continue (as no-order receipt) or leave container in ASN.
|
||||
- `ALLOW_CREATE_RECEPTION`: controls auto-receipt creation from PK.
|
||||
- `AutoCloseReception` / `AutoCloseInboundOrder`: control auto-closing.
|
||||
|
||||
**ERP messages:** `ASO` at receipt, `ASK` on rejection, `REF`+`ROF` at close.
|
||||
|
||||
**UI path:** `Picking` workstation → `Enter containers`
|
||||
|
||||
---
|
||||
|
||||
## Receipt Closing
|
||||
|
||||
Receipts can be closed **manually** or **automatically**.
|
||||
|
||||
### Manual Closing
|
||||
|
||||
- Done from web interface or RFT at any time — full quantity not required.
|
||||
- If linked to receipt orders and all ordered stock received → receipt order = _Completed_; else = _Partially received_.
|
||||
- Stock allocation across identical order lines follows: least expected qty first → oldest creation date → excess to first line allowing it.
|
||||
- Process: `Reception_Close_PR_V2`
|
||||
|
||||
### Automatic Closing
|
||||
|
||||
- Triggered when all expected stock has been received and no excess allowed.
|
||||
- Parameter: `AutoCloseReception`
|
||||
- Same allocation logic as manual.
|
||||
|
||||
**Communications at close:** `REF` to ERP.
|
||||
**Transactions:** `REC.CLS` (receipt close), `INO.CST` (receipt order close, if linked).
|
||||
|
||||
---
|
||||
|
||||
## Parameters
|
||||
|
||||
| Parameter | Effect |
|
||||
|---|---|
|
||||
| `ALLOW_CREATE_RECEPTION` | Allows creating a receipt from RFT/PIE/PK if none found |
|
||||
| `AutoCreateReceptionFromRecOrder` | Auto-creates receipt when receipt order stock still pending |
|
||||
| `AutoCloseReception` | Auto-closes receipt when all expected stock received |
|
||||
| `AutoCloseInboundOrder` | Auto-closes receipt order when receipt closed (valid status required) |
|
||||
| `RECEPTION_ASN_SHOW_CONFIRMATION_DIALOG` | Show stock review/adjust/reject dialog after reading ASN container |
|
||||
| `RECEPTION_FORBID_MOVE_FROM_ASN` | If true, rejected ASN container stays in ASN; if false, moves to L&F |
|
||||
| `RECEPTION_ASN_CONFIRM_ALL_STACK_CONTAINERS` | All containers in a stacked hierarchy must be confirmed |
|
||||
| `USE_EXCLUSIVE_RESERVE_STRICT_MODE` | Blocks receipt if reserve's shipping order doesn't exist |
|
||||
| `CONFIRM_EXCLUSIVE_RESERVE_ASSIGNMENT` | User must manually select shipping order for exclusive reserve when multiple compatible |
|
||||
| `CREATE_ALIAS_ON_RECEPTION` | Allows declaring a scanned code as an item alias at receipt |
|
||||
| `RECEPTION_DEFAULT_CONTAINER_TYPE` | Default LPN type suggested at receipt |
|
||||
| `RECEPTION_DEFAULT_HEIGHT_TYPE` | Default height type suggested at receipt |
|
||||
| `RECEPTION_NUM_DAYS_PRODUCTION_DATE_MARGIN` | Future production date margin allowed at receipt |
|
||||
| `RETURN_RECEPTION_PREFIX` | Custom prefix for return receipt codes |
|
||||
| `SKIP_RF_CONFIRMATION_MESSAGES` | Hides receipt/order close confirmation messages on RF |
|
||||
| `MAX_RECEPTIONS_TO_CLOSE_JOB` | Max receipts in _closing_ status selected per job run |
|
||||
| `NUM_EVENTS_PER_PARTIAL_COMMIT` | Events confirmed per block in closing process |
|
||||
|
||||
---
|
||||
|
||||
## ERP Integration
|
||||
|
||||
| Message | Direction | Trigger |
|
||||
|---|---|---|
|
||||
| `ROR` | ERP → WMS | Creates/updates receipt orders (Receipt Order Request) |
|
||||
| `ASN` | ERP → WMS | Pre-notifies containers and their stock |
|
||||
| `ASO` | WMS → ERP | Confirms receipt of a pre-notified container |
|
||||
| `ASK` | WMS → ERP | Confirms rejection of a pre-notified container |
|
||||
| `REF` | WMS → ERP | Receipt close confirmation — lists all received stock |
|
||||
| `ROF` | WMS → ERP | Receipt order close confirmation |
|
||||
| `STV` | WMS → ERP | Stock adjustment in pre-notified container during review |
|
||||
|
||||
For full message definitions see [concepts/erp-interface.md](../concepts/erp-interface.md).
|
||||
|
||||
---
|
||||
|
||||
## Labels at Reception
|
||||
|
||||
- **LPN labels**: GS1-128 labels can be printed for containers at receipt; label format controlled by `CONTAINER_LABEL_DEFAULT_FORMAT`.
|
||||
- **Item labels**: Printed for items not labeled at origin; enabled via receipt order `Enable stock label printing`.
|
||||
- **Multi-label reading**: When containers always arrive labeled in GS1-128, multi-reading mode allows scanning labels in any order.
|
||||
- **Label reprint**: Available from RFT if a label is damaged or content changes.
|
||||
|
||||
See [concepts/labels.md](../concepts/labels.md) for complete label reference.
|
||||
|
||||
---
|
||||
|
||||
## Common Errors
|
||||
|
||||
**Receipt order not found from RFT:**
|
||||
- Cause: Order code unknown or not yet created.
|
||||
- Solution: Enable `ALLOW_CREATE_RECEPTION` to create a new receipt; or have the ERP send the `ROR` message first.
|
||||
|
||||
**ASN container rejected at PIE — order doesn't exist:**
|
||||
- Cause: Receipt order referenced in ASN message not yet in WMS.
|
||||
- Solution: If `USE_EXCLUSIVE_RESERVE_STRICT_MODE` is inactive, container can still be received; reserve is formalized later. If active, resolve order absence first.
|
||||
|
||||
**Receipt auto-close does not trigger:**
|
||||
- Cause: Receipt still has uncommitted lines or allows excess reception.
|
||||
- Solution: Close manually, or verify `AutoCloseReception` is active and no line allows over-receipt.
|
||||
|
||||
**Quantity discrepancy at PIE — container sent to reconditioning:**
|
||||
- Cause: ASN pre-notified stock quantity doesn't match received stock and receipt order doesn't allow excess.
|
||||
- Solution: Correct the discrepancy at the reconditioning station and retry.
|
||||
|
||||
**Multiple lines created for same item at receipt close:**
|
||||
- Cause: Exclusive reserve splits stock lines into reserved and unreserved portions.
|
||||
- Expected behavior; each line has distinct reserve linkage.
|
||||
|
||||
**Return receipt rejected for expired stock:**
|
||||
- Cause: `RECEPTION_NUM_DAYS_PRODUCTION_DATE_MARGIN` check triggered.
|
||||
- Note: Date logistic attributes are captured but expiry is **not blocked** during returns — check parameter configuration.
|
||||
|
||||
---
|
||||
|
||||
## Reception Split Strategy (Mecalux France pattern)
|
||||
|
||||
Deployed at **ROUJE** and **NEUT** — documented from NEUT (blind reception, supplier + customer return, loose stock on equipment). When the item has a picking dedicated location (PDL), incoming stock is split at reception between two buffers so PDLs are filled to capacity directly and the overflow lands in reserve.
|
||||
|
||||
**Flow:**
|
||||
|
||||
1. Stock received on equipment in loose mode
|
||||
2. WMS computes the quantity needed to reach PDL capacity
|
||||
3. That quantity is dropped onto the **PICKING buffer**
|
||||
4. The remainder is dropped onto the **RESERVE buffer**
|
||||
5. Downstream, a second operator puts away: PICKING buffer → PDLs ; RESERVE buffer → rack locations
|
||||
|
||||
**Buffer configuration:**
|
||||
|
||||
| Buffer | Storage mode | Storage zone | Work zone | Sub-warehouse |
|
||||
|---|---|---|---|---|
|
||||
| PICKING | Loose stock | RECEPTION | RECEPTION | PICKING |
|
||||
| RESERVE | **Container + stock** (⚠️ *not* "Container only", else never proposed) | RECEPTION | RECEPTION | RESERVE |
|
||||
|
||||
> ⚠️ For projects with group-preparation flows, ungrouping stations and wall locations must **not** belong to the PICKING sub-warehouse.
|
||||
> Equipment of type RECEPTION must only have access to the RECEPTION work zone, and vice versa.
|
||||
> Routes must be explicitly created for both buffers (equipment group + station).
|
||||
|
||||
**Putaway strategies required (4):**
|
||||
|
||||
| # | From | To | Key criteria/rules |
|
||||
|---|---|---|---|
|
||||
| 1 | Reception equipment (code `REC_*`) | PICKING buffer | Destination zone = PICKING, location with assigned item (not full), partial putaway allowed |
|
||||
| 2 | Reception equipment (type RECEPTION) | RESERVE buffer | Destination zone = RESERVE |
|
||||
| 3 | PICKING buffer | Dedicated picking locations | Item assigned, destination zone = PICKING |
|
||||
| 4 | RESERVE buffer | Pallet rack locations | Destination zone = PALETTE |
|
||||
|
||||
**Split logic (custom workflow) — rules applied after stock reception:**
|
||||
|
||||
| Situation | Action |
|
||||
|---|---|
|
||||
| No PDL for the item | Drop on RESERVE |
|
||||
| PDL exists and is not full | Drop on PICKING the exact quantity to reach capacity; drop the rest on RESERVE |
|
||||
| PDL exists and is full | Drop on RESERVE |
|
||||
| Replenishment task already in progress toward that PDL | Drop on RESERVE |
|
||||
|
||||
> ⚠️ Stock dropped on the RESERVE buffer **must** be on a container (existing LPN or a newly generated code).
|
||||
|
||||
**Customs required:**
|
||||
- `Equipment_Unload_ProductUnloadOnContainer_UI` — hide the free-drop button when `location.code == "RESERVE"`
|
||||
- `Equipment_Unload_ProductUnloadAllStockOnContainer_UI` — idem
|
||||
- Custom workflow after reception that computes the split and generates two drop tasks
|
||||
|
||||
Reference implementation: [NEUT-58](https://easywmsfrance.atlassian.net/browse/NEUT-58).
|
||||
|
||||
---
|
||||
|
||||
## Interface Paths
|
||||
|
||||
| Path | Equipment | Description |
|
||||
|---|---|---|
|
||||
| `Receiving > Receipt orders` | PC | Manage receipt orders |
|
||||
| `Receiving > Receipt order lines` | PC | Manage receipt order lines |
|
||||
| `Receiving > Receipts` | PC | View and close receipts |
|
||||
| `Warehouse > ASN LPN` | PC | View pre-notified (pending) containers |
|
||||
| `Control > Stations` | PC | PIE station management |
|
||||
| `Receipts > Supplier` | RFT | Supplier reception (dock) |
|
||||
| `Receipts > Blind` | RFT | Blind reception (dock) |
|
||||
| `Receipts > Return` | RFT | Return reception |
|
||||
| `Receipts > Notices` | RFT | ASN pre-notified containers |
|
||||
| `Picking workstation > Enter containers` | Workstation | PK reception |
|
||||
|
||||
---
|
||||
|
||||
## Related
|
||||
|
||||
- [concepts/container.md](../concepts/container.md) — LPN structure, statuses, ASN pre-notification
|
||||
- [concepts/order-inbound.md](../concepts/order-inbound.md) — Receipt orders (ROR message), inbound lifecycle
|
||||
- [concepts/putaway.md](../concepts/putaway.md) — What happens after stock is received
|
||||
- [concepts/stock.md](../concepts/stock.md) — Stock records created during reception
|
||||
- [concepts/product-item.md](../concepts/product-item.md) — Item reception profiles, logistic attributes captured at receipt
|
||||
- [concepts/quality-control.md](../concepts/quality-control.md) — Incoming stock quality locks
|
||||
- [concepts/labels.md](../concepts/labels.md) — LPN and item labels at reception
|
||||
- [concepts/erp-interface.md](../concepts/erp-interface.md) — ROR, ASN, ASO, ASK, REF, ROF message definitions
|
||||
- [concepts/transactions.md](../concepts/transactions.md) — CON.RECEP, STK.RECEP, CON.ASN.001, REC.CLS
|
||||
@@ -0,0 +1,402 @@
|
||||
---
|
||||
title: "Replenishment"
|
||||
type: concept
|
||||
sources:
|
||||
- areas/replenishments/replenishment_admin/replenishment_strategies.md
|
||||
- areas/replenishments/replenishment_admin/picking_locations.md
|
||||
- areas/replenishments/replenishment_admin/efficiency_mode.md
|
||||
- areas/replenishments/replenishment_admin/dynamic.md
|
||||
- areas/replenishments/replenishment_admin/automatic_replenish.md
|
||||
- areas/replenishments/replenishment_admin/conditions.md
|
||||
- areas/replenishments/replenishment_pk/index.md
|
||||
- areas/putaway/configurations/putaway_configuration01.md
|
||||
- custom/analyse_fonctionnelle.md
|
||||
- sources/archives/05_Gestion_picking_dedie.md
|
||||
- sources/archives/20_Strategies_reapprovisionnement.md
|
||||
- sources/archives/30_Reapprovisionnement_2_sous_entrepots_zone_intermediaire.md
|
||||
related:
|
||||
- concepts/picking.md
|
||||
- concepts/putaway.md
|
||||
- concepts/stock.md
|
||||
- concepts/container.md
|
||||
last_compiled: "2026-04-17"
|
||||
---
|
||||
|
||||
# Replenishment
|
||||
|
||||
## Overview
|
||||
|
||||
Replenishment is the process of moving stock from bulk storage locations to **picking dedicated locations (PDL)** to ensure that operators always have stock available to fulfill shipping orders without going to the main rack. It is a supporting process that feeds the picking operation — without replenishment, picking dedicated locations would run dry and order preparation would stall.
|
||||
|
||||
A **picking dedicated location (PDL)** is a location permanently or dynamically assigned to one item (sometimes one item per partition). PDLs are configured with a minimum (replenishment threshold) and maximum (capacity). When stock in the PDL drops below the minimum, the replenishment system detects the shortage and generates a replenishment task to refill from a source location.
|
||||
|
||||
Replenishment in EasyWMS operates at two levels:
|
||||
1. **PDL replenishment** — refilling picking dedicated locations from bulk storage
|
||||
2. **Sub-warehouse replenishment** — moving stock from one sub-warehouse to another to balance inventory
|
||||
|
||||
## Picking Dedicated Locations (PDL)
|
||||
|
||||
### PDL Concept
|
||||
|
||||
A PDL is a location with an item assignment that designates it as the primary picking source for that item. Key properties:
|
||||
|
||||
| Property | Description |
|
||||
|---|---|
|
||||
| **Location** | Must have: allow item assignment, allow picking, allow replenish, allow putaway |
|
||||
| **Item** | One item recommended per PDL (multiple items allowed but not typical) |
|
||||
| **Owner** | Owner of the item |
|
||||
| **Replenishment mode** | Container (move whole container) or Stock (move loose stock) — cannot mix both |
|
||||
| **Conversion** | Unit of measure in which replenishment level and capacity are expressed |
|
||||
| **Logistic attributes** | Specific batch, color, quality, etc. — PDL will be replenished with matching stock only |
|
||||
| **Maximum lots** | Limit how many different lots can be present in the PDL simultaneously |
|
||||
| **Expired stock flag** | PDL can be configured to receive only expired stock |
|
||||
| **Days of life** | Replenish with stock whose shelf life ≥ (detection date + days of life) |
|
||||
| **Stock status** | Restrict to stock in a specific status |
|
||||
|
||||
**For stock-mode PDLs — threshold types:**
|
||||
|
||||
| Threshold type | Description | Notes |
|
||||
|---------------|-------------|-------|
|
||||
| **Pieces (quantity)** | Replenish when stock drops below N units (in conversion UoM or base UoM) | Simplest mode; no container-count knowledge required |
|
||||
| **Container count** | Replenish when number of containers in the PDL drops below N | Requires the PDL to track container presence |
|
||||
| **% of full container** | Replenish when stock falls below X% of a full container's standard quantity | Requires conversion definition (UoM × container conversion = full quantity); allows absorbing incoming container excess |
|
||||
|
||||
- **Capacity**: maximum stock quantity allowed at the PDL
|
||||
|
||||
**For container-mode PDLs:**
|
||||
- **Minimum containers**: replenish when container count drops below this
|
||||
- **Maximum containers**: capacity ceiling
|
||||
- **Replenishment level %** (if max = 1): percentage of full-container quantity below which replenishment is triggered; allows exceeding the full quantity to absorb the incoming container's excess stock
|
||||
|
||||
### PDL — EasyS / SmartUI Configuration
|
||||
|
||||
**EasyS — Location setup**, check :
|
||||
|
||||
- `Allow product location`
|
||||
- `Allow replenish at source`
|
||||
- `Allow picking`
|
||||
|
||||
**SmartUI — `Entrepôt → Emplacements consacrés au picking`** :
|
||||
|
||||
- Enter the **replenishment level** (minimum threshold)
|
||||
- Enter the **maximum capacity**
|
||||
- Check **Étiquetté** (mandatory)
|
||||
- Enter a **Texte personnalisé** (custom label)
|
||||
- Print the PDL barcodes
|
||||
|
||||
> 💡 Labels display as `Code emplacement [Label]` (e.g. `B-1-4 [Clavier M]`). With many PDLs this is hard to scan through — Mecalux France standard is to **prefix labels with an ordered code** (e.g. `B-1-4 [01 Clavier M]`, `B-1-4 [02 Clavier L]`...) so the operator can sort them visually.
|
||||
|
||||
> ⚠️ **Known limitations** documented by Mecalux France (2022 tests) :
|
||||
> - The **destination is not displayed** when the WMS generates putaway tasks towards a PDL.
|
||||
> - **Maximum capacity is not strictly enforced** at putaway — cases of 26 units put away in a capacity-15 PDL have been observed. Rely on replenishment threshold + periodic count rather than `max capacity` as a hard limit.
|
||||
>
|
||||
> Positive : **minimum-threshold replenishment works correctly** — a task is generated to top the PDL back up to its maximum once the minimum is crossed.
|
||||
|
||||
### PDL Creation Methods
|
||||
|
||||
| Method | Trigger |
|
||||
|---|---|
|
||||
| Web interface | Warehouse manager manually creates PDL assignments |
|
||||
| RFT during putaway | Operator assigns item to location while unloading (if `UNLOAD_CREATE_PRODUCT_LOCATION` enabled) |
|
||||
| RFT during counting | Item assigned during stock count (if `UNLOAD_CREATE_PRODUCT_LOCATION` and `REPLENISH_LEVEL_PERCENT_PRODUCT_LOCATION` enabled) |
|
||||
| RFT — "Assign item to loc." | Dedicated menu option in Utilities |
|
||||
| Automatically (dynamic replenishment) | System creates PDL on-the-fly for items in active shipping orders |
|
||||
|
||||
### PDL Partitions
|
||||
|
||||
A single physical location can be subdivided into **partitions** — labeled divisions each assigned to a different item. This enables high-density picking areas (drawers, shelves divided by bins).
|
||||
|
||||
Key partition rules:
|
||||
- Each partition is identified by a unique QR label (code unique within the location)
|
||||
- A partition is NOT a separate location — stock belongs to the location; the partition identifies which item occupies which physical space
|
||||
- One partition can be shared across multiple items; one item can use multiple partitions
|
||||
- A partition can be marked **full** to prevent further putaway to that partition
|
||||
- **Maximum partitions per item**: configurable limit to prevent one item from monopolizing a location's partitions
|
||||
|
||||
Partition labels can be printed for a range of locations with optional text (item code, UoM, logistic attributes, or custom text).
|
||||
|
||||
### PDL Release on Empty
|
||||
|
||||
When enabled, a PDL is released (item assignment removed) when the location becomes empty:
|
||||
- **Automatic replenishment mode**: PDL is only released if no valid replenishment stock remains in the entire warehouse
|
||||
- **Manual replenishment mode**: PDL is released immediately when empty (no automatic tasks to prevent it)
|
||||
|
||||
Use case: seasonal warehouses where item rotation is planned.
|
||||
|
||||
## Replenishment Strategies
|
||||
|
||||
Replenishment tasks are generated based on enabled **replenishment strategies**. Four strategy types exist.
|
||||
|
||||
### SmartUI / French terminology mapping
|
||||
|
||||
Mecalux France uses three shortcut names that map to the strategy types below:
|
||||
|
||||
| FR label | Type below | Trigger | Typical usage |
|
||||
|---|---|---|---|
|
||||
| **"Routine"** | Stockout (automatic) | `TryToReplenishProductLocations` job every 1–2 min | Default — refill PDL when stock drops under the minimum |
|
||||
| **"Conclure"** | Particular demand (top-off) | RFT menu **Réapprovisionnement** or SmartUI "Réapprovisionner maintenant" on the PDL view | Operator-triggered, high-priority replenishment |
|
||||
| **"Exiger"** | Shipping demand (dynamic) | Order released with dynamic replenishment, or static flag `<EnableReplenishment>` on ROR | Create PDLs on the fly for items in released orders; also tops up when stock ≥ min but < order need |
|
||||
|
||||
**EasyS location setup (common to all three):**
|
||||
- Picking locations to replenish: `Allow picking` + `Allow product location` + `Allow replenish`
|
||||
- Reserve (source) locations: `Allow replenish at source`
|
||||
|
||||
**SmartUI configuration checklist (routine, conclure, exiger):**
|
||||
1. `Entrepôt → Gestion des emplacements picking` — create PDL assignments, set **min threshold** (per container: tick "Réapprovisionnement de conteneur", or in base UoM) and **max capacity**
|
||||
2. Activate automatic replenishment on the PDL (for routine)
|
||||
3. `Configuration → Stratégie de réapprovisionnement` — create the strategy; pick filters (item, owner, item type, sub-warehouse, destination zone) and a **Mode efficacité** (see table below)
|
||||
4. **Activate** the strategy (to edit it later, deactivate first)
|
||||
5. `Configuration → Processus` — ensure `TryToReplenishProductLocations` is enabled and runs on a 1–2 min cycle
|
||||
6. Confirm source stock is eligible (no blocking status, no location lock, not already assigned to shipping)
|
||||
|
||||
### Efficiency mode — SmartUI values
|
||||
|
||||
| FR field | Behaviour |
|
||||
|---|---|
|
||||
| **Efficacité** | Minimise the number of tasks needed to reach capacity |
|
||||
| **Emplacement le plus proche** | Pick the available source closest to the PDL |
|
||||
| **À vider** | Pick the source that will empty the reserve location (limited value when replenishing by container) |
|
||||
|
||||
### 1. Top-off (Particular Demand)
|
||||
|
||||
**Trigger:** Manual request from RFT or web interface for specific location(s) or aisles.
|
||||
|
||||
Used when an operator notices a PDL is running low and requests immediate replenishment before the stockout strategy would have fired, or for ad-hoc needs.
|
||||
|
||||
| Configuration | Description |
|
||||
|---|---|
|
||||
| Efficiency mode | Efficiency / To empty / Nearest location |
|
||||
| Logic | Before efficiency / After efficiency |
|
||||
| Particularized for | Filter by item, owner, item type, destination sub-warehouse, destination zone |
|
||||
| Stock selection | Restrict origin to specific sub-warehouse or zone |
|
||||
|
||||
### 2. Shipping Demand (Dynamic)
|
||||
|
||||
**Trigger:** Shipping order that has "dynamic replenishment" enabled, or manual/ERP request for specific orders. Also triggerable from RFT filtered by release date or load date.
|
||||
|
||||
System checks pending shipping orders to determine what items and quantities are needed. It then:
|
||||
1. Finds existing PDLs for the requested items and checks if they have enough stock
|
||||
2. If insufficient → creates replenishment tasks to fill existing PDLs
|
||||
3. If no PDL exists → searches for empty candidate locations with automatic item assignment mode + allow picking + allow replenish → creates **dynamic PDLs** with capacity = quantity needed for pending orders
|
||||
|
||||
Dynamic PDLs are adjusted in subsequent runs (capacity updated as orders are created or canceled). Fixed PDLs are never modified by dynamic replenishment.
|
||||
|
||||
**Item configuration required:** item shipping profile must have "dynamic replenishment" active.
|
||||
|
||||
**ERP trigger:** `SOR` message requests replenishment for specific shipping orders.
|
||||
|
||||
| Configuration | Description |
|
||||
|---|---|
|
||||
| Efficiency mode | Efficiency / To empty / Nearest location |
|
||||
| Logic | Before efficiency / After efficiency |
|
||||
| Particularized for | Item, owner, item type, putaway profile, destination sub-warehouse/zone, use item temperature |
|
||||
| Stock selection | Restrict origin to specific sub-warehouse or zone |
|
||||
|
||||
### 3. Stockout (Automatic)
|
||||
|
||||
**Trigger:** Automatic background job `TryToReplenishProductLocations` runs every minute.
|
||||
|
||||
When stock at a PDL drops below its replenishment level, the job generates replenishment tasks automatically without any manual intervention.
|
||||
|
||||
| Configuration | Description |
|
||||
|---|---|
|
||||
| Efficiency mode | Efficiency / To empty / Nearest location |
|
||||
| Logic | Before efficiency / After efficiency |
|
||||
| Particularized for | Item, owner, item type, destination sub-warehouse/zone |
|
||||
| Stock selection | Restrict origin to specific sub-warehouse or zone |
|
||||
|
||||
**PDL must have "Enable replenishment" activated** in the Picking Dedicated Locations view.
|
||||
|
||||
**Parameter `MAX_REPLENISHED_PL_ROUTINE_JOB`:** Maximum PDLs processed per job run (0 = unlimited). Controls processing complexity; default frequency of every minute ensures adequate throughput.
|
||||
|
||||
### 4. Sub-warehouse Replenishment
|
||||
|
||||
**Trigger:** Manual request (all items in need, or selected items).
|
||||
|
||||
Used when the warehouse has multiple sub-warehouses and stock must be moved between them to maintain minimum levels in each.
|
||||
|
||||
Strategies are sequenced to determine which sub-warehouses are replenished first.
|
||||
|
||||
| Configuration | Description |
|
||||
|---|---|
|
||||
| Destination sub-warehouse | Target sub-warehouse for the stock |
|
||||
| Destination station | Destination station in target sub-warehouse |
|
||||
| Efficiency mode | To empty / Least movements (different modes than PDL replenishment) |
|
||||
| Logic | Before efficiency / After efficiency |
|
||||
|
||||
**Limitation:** does not support cutting stock in non-consolidating UoM conversions.
|
||||
|
||||
### 4b. Priority Location Replenishment
|
||||
|
||||
A fifth strategy type refills **priority locations** — locations associated with a PDL from which the PDL is replenished. This allows a two-tier system: primary storage → priority location → PDL.
|
||||
|
||||
## Efficiency Modes
|
||||
|
||||
Efficiency mode determines which source stock is selected for the replenishment task.
|
||||
|
||||
**For PDL replenishment:**
|
||||
|
||||
| Mode | Logic |
|
||||
|---|---|
|
||||
| **Efficiency** | Select sources that have at least the quantity needed; among ties, apply outbound logic; tiebreak by quantity (highest to lowest) |
|
||||
| **To empty** | Select sources that will be completely emptied by the replenishment task; among ties, apply outbound logic; tiebreak by quantity (lowest to highest) |
|
||||
| **Nearest location** | Select sources closest to the PDL by physical distance; from those with enough stock |
|
||||
|
||||
**For sub-warehouse replenishment:**
|
||||
|
||||
| Mode | Logic |
|
||||
|---|---|
|
||||
| **To empty** | Same as above |
|
||||
| **Least movements** | Minimize number of picking tasks; select sources with the requested quantity or largest available; among ties, apply outbound logic; tiebreak by quantity (highest to lowest) |
|
||||
|
||||
**Logic position:** "Before efficiency" applies outbound logic (FEFO, FIFO, LIFO) as the primary sort criterion; "After efficiency" applies it only to break ties after the efficiency criterion.
|
||||
|
||||
## Stock Eligibility for Replenishment
|
||||
|
||||
Stock is valid for replenishment if:
|
||||
- Belongs to the same item (and optional owner, item type) as the PDL
|
||||
- Has a status that allows moving and replenishing
|
||||
- Not in a location with an active counting task
|
||||
- Not part of an in-process replenishment or picking task (unless certain conditions allow it)
|
||||
- Location and aisle allow replenishment at source; no extraction errors; no movement locks
|
||||
- Logistic attributes match PDL configuration (batch, dates, status)
|
||||
- If PDL is configured for a specific stock status, only stock in that status is eligible
|
||||
|
||||
## Dynamic Replenishment Process Detail
|
||||
|
||||
Dynamic replenishment runs periodically (or on manual trigger) and follows this flow:
|
||||
|
||||
1. **Get shipping orders** with dynamic replenishment enabled
|
||||
2. **Identify items and quantities** required across all such orders
|
||||
3. **Check fixed PDLs** for each item: is there enough stock?
|
||||
4. **For items with insufficient PDL stock:**
|
||||
- Check if there is valid replenishment source stock
|
||||
- If yes: generate replenishment tasks to fill fixed PDLs to capacity
|
||||
5. **For items with no PDL at all (or fixed PDL at capacity):**
|
||||
- Find empty candidate locations (allow item assignment, automatic assignment mode, allow picking, allow replenish)
|
||||
- Create a **dynamic PDL** with capacity = quantity needed for pending orders
|
||||
- Generate replenishment tasks for the dynamic PDL
|
||||
6. On next run: adjust dynamic PDL capacity if demand has changed
|
||||
|
||||
## Dynamic Picking Emptying Tasks (Vidage)
|
||||
|
||||
Dynamic PDLs created by the shipping demand strategy are temporary — they exist only for the duration of the order they were created for. Once the order is shipped, the dynamic PDL may still contain leftover stock that should be returned to bulk storage.
|
||||
|
||||
**Emptying tasks (vidage)** are generated automatically on a schedule to clear unused dynamic picking locations:
|
||||
- The system identifies dynamic PDLs whose associated shipping orders are complete (shipped or cancelled)
|
||||
- A **container relocation task** (or stock relocation) is generated to move the remaining stock from the dynamic PDL back to a valid bulk storage location
|
||||
- The putaway engine determines the destination using the item's putaway strategy
|
||||
- Once emptied, the dynamic PDL assignment is removed and the location becomes available for reassignment
|
||||
|
||||
**Configuration**: the emptying job frequency is configurable per warehouse. It can be run at off-peak times (e.g., at night or between shifts) to avoid contention with active picking.
|
||||
|
||||
This mechanism prevents dynamic PDLs from accumulating as "orphan" locations with stranded stock.
|
||||
|
||||
## Automatic Replenishment (Stockout) Process Detail
|
||||
|
||||
Background job `TryToReplenishProductLocations` (every minute):
|
||||
|
||||
1. For each PDL with automatic replenishment enabled
|
||||
2. Check current stock quantity against replenishment level
|
||||
3. If below threshold:
|
||||
- Find valid source stock (applying efficiency mode and logic)
|
||||
- Generate replenishment task: move stock from source to PDL up to PDL capacity
|
||||
4. Respect `MAX_REPLENISHED_PL_ROUTINE_JOB` limit per run
|
||||
|
||||
## Cutting Stock Replenishment
|
||||
|
||||
Cutting stock (rope, cable, chain) requires special handling:
|
||||
- Can only be picked from coil shelf locations (picking dedicated location for cutting loose stock)
|
||||
- For **shipping demand strategy**: replenishment tasks are only generated when: no pending tasks exist for the reel in the PDL AND there is still unassigned stock to fulfill orders
|
||||
- Exception: if a stockout strategy is also active AND stock is at/below replenishment level → generate replenishment regardless of task state
|
||||
- Not supported for sub-warehouse replenishment in non-consolidating UoM conversions
|
||||
|
||||
## Replenishment from Putaway
|
||||
|
||||
When placing a container or stock into a location, the putaway engine checks if the destination location is a PDL for the item being placed:
|
||||
- Strategy 1 (sequence 1): place directly into the PDL if capacity allows
|
||||
- Strategy 2 (sequence 2): place in storage near the PDL (sort by "Distance to assigned location")
|
||||
- The system can automatically create a PDL at the putaway destination (parameter `UNLOAD_CREATE_PRODUCT_LOCATION`)
|
||||
|
||||
See [Putaway](putaway.md) for the full strategy pipeline.
|
||||
|
||||
## Inter-sub-warehouse Replenishment via an Intermediate Buffer
|
||||
|
||||
When a single equipment cannot traverse from the reserve sub-warehouse to the picking sub-warehouse (safety rules, certification, aisle geometry), a **Transit transport element** acts as an intermediate drop point: one equipment drops the pallet on the buffer, another picks it up and finishes the replenishment.
|
||||
|
||||
### Typical setup
|
||||
|
||||
- **Sub-warehouse A** (`WHST_ANCIEN_BAT`) — PDLs to replenish
|
||||
- **Sub-warehouse B** (`WHST_TOUR`) — high reserves
|
||||
- Equipment `CACES06` (only one certified for height) is **forbidden** in sub-warehouse A
|
||||
|
||||
### Key configuration points
|
||||
|
||||
| Element | Requirement |
|
||||
|---|---|
|
||||
| Automation element | Type **"Transport"** — mandatory even in 100% manual warehouses |
|
||||
| Transport sub-location | Type **"Buffer"** (⚠️ defaults to "Automatic" when created — change manually); sub-warehouse accessible from both equipment types |
|
||||
| Equipment types | `PICKING` (access work zones of picking + both sub-warehouses) and `RESERVE` (access reserve work zone + sub-WH B only) |
|
||||
| Equipment groups | Two groups, one per equipment type |
|
||||
| Routes | Transport → sub-WH A ; each group → Transport ; `EqGroup PICKING` → both sub-warehouses ; `EqGroup RESERVE` → sub-WH B only |
|
||||
|
||||
> ⚠️ Routes are created by default with the **"Galileo"** transport — switch them to **"RF"** manually.
|
||||
|
||||
### Flow
|
||||
|
||||
1. Replenishment is triggered → a task is generated from the reserve to the PDL
|
||||
2. The reserve equipment (e.g. `CACES06`) picks up the support and drops it on the **intermediate Buffer location**
|
||||
3. The picking equipment (e.g. `PIK01`) picks up the task from **Tâches → Tâches de réapprovisionnement** and drops the stock on the destination PDL
|
||||
|
||||
> Troubleshooting — "support n'existe pas" when scanning the buffer location: verify that the transit sub-location is of type **"Buffer"** (not "Automatic").
|
||||
|
||||
Upstream MSSCC documentation: `replenishments/intermediate_stations.md` and `EasyS/configurations/IntermediateET/index.md`.
|
||||
|
||||
## Replenishment in Automatic Warehouses (PK)
|
||||
|
||||
In automatic warehouses, the picking conveyor (PK) generates demand that drives replenishment. When a container at the PK runs out of stock for a task:
|
||||
1. Operator signals "wait for replenishment" or the system detects PDL is empty
|
||||
2. EasyWMS checks if another container with the same item can be extracted from the automatic warehouse
|
||||
3. If yes: a task is generated to bring the replenishment container to the PK
|
||||
4. PK operations pause until replenishment arrives (configurable)
|
||||
|
||||
## Common Errors
|
||||
|
||||
**Replenishment task not generated for empty PDL:** PDL has "automatic replenishment" not enabled, or no stockout strategy is enabled, or no valid source stock found. Enable replenishment on the PDL; check source location availability and status.
|
||||
|
||||
**Dynamic PDL created with wrong capacity:** Shipping order was created/canceled between job runs. Capacity is recalculated on next run and adjusted. No manual intervention needed if system is running correctly.
|
||||
|
||||
**Replenishment task generated but not executed:** Replenishment source has a lock, or the aisle is blocked, or no route exists between source and PDL. Resolve the lock/block; check route configuration.
|
||||
|
||||
**PDL not proposed for picking despite having stock:** Stock assignment strategy doesn't have "Prioritize picking dedicated locations" enabled, or the PDL's logistic attributes don't match the shipping order line. Check strategy priorities and PDL configuration.
|
||||
|
||||
**Stock mixing conflict at PDL:** During replenishment unload, system warns of logistic attribute conflict (e.g., different batches). System does NOT block the task (to avoid deadlock situations), but operator must decide whether to proceed. If mixing is not desired, configure PDL with specific logistic attributes.
|
||||
|
||||
**PDL released unexpectedly:** "Delete when empty" is enabled but warehouse still needs the item. Disable "Delete when empty" for year-round items; use it only for seasonal items.
|
||||
|
||||
**Cutting stock replenishment not triggered:** Pending tasks exist for the reel in the PDL location, which blocks demand-strategy replenishment. Wait for tasks to complete, or use a stockout strategy as well to override the task-pending check.
|
||||
|
||||
## Interface Paths
|
||||
|
||||
| Interface | Path |
|
||||
|---|---|
|
||||
| Web — replenishment strategies | "Configuration" → "Replenishment strategies" |
|
||||
| Web — sub-WH replenishment strategies | "Configuration" → "Replenishment strategies between sub-warehouses" |
|
||||
| Web — picking dedicated locations | "Warehouse" → "Picking dedicated locations" |
|
||||
| Web — enable/disable automatic replenishment | "Warehouse" → "Picking dedicated locations" → "Enable replenishments" |
|
||||
| Web — delete when empty | "Warehouse" → "Picking dedicated locations" → "Delete when empty" |
|
||||
| Web — label printing | "Warehouse" → "Picking dedicated locations" → label action |
|
||||
| Web — shipping demand replenishment | "Shipping" → "Shipping orders" → "Enable replenishment" |
|
||||
| RFT — particular demand replenishment | Menu "Replenishment" → specific location/aisle |
|
||||
| RFT — shipping order demand | Menu "Replenishment" → "For shipping orders" |
|
||||
| RFT — assign item to location | Menu "Utilities" → "Assign item to loc." |
|
||||
| Web — automatic job | "Control" → "Jobs" → TryToReplenishProductLocations |
|
||||
|
||||
## Related
|
||||
|
||||
- [Picking](picking.md) — replenishment feeds PDLs that picking tasks consume; PDL stock assignment depends on replenishment being current
|
||||
- [Putaway](putaway.md) — putaway engine checks PDLs first and can auto-create PDL assignments during container placement
|
||||
- [Stock](stock.md) — stock status and logistic attributes are key criteria for replenishment eligibility
|
||||
- [Container (LPN)](container.md) — container-mode PDLs replenish by moving whole containers; source containers must allow replenishment
|
||||
- [Task](task.md) — replenishment generates Container replenishment or Stock replenishment tasks; also Picking tasks for inter-sub-warehouse replenishment
|
||||
- [Location](location.md) — PDLs are locations with item assignment; "Allow replenishment source/target" logics control eligibility
|
||||
@@ -0,0 +1,475 @@
|
||||
---
|
||||
title: "Shipping"
|
||||
type: concept
|
||||
sources:
|
||||
- areas/shipping/shipping_admin/index.md
|
||||
- areas/shipping/shipping_admin/order_release.md
|
||||
- areas/shipping/shipping_admin/shipping_order.md
|
||||
- areas/shipping/shipping_admin/shipping_order_creation.md
|
||||
- areas/shipping/shipping_admin/stock_assign.md
|
||||
- areas/shipping/shipping_admin/stock_assign_strategies.md
|
||||
- areas/shipping/shipping_admin/waves_creation.md
|
||||
- areas/shipping/shipping_admin/groups_creation.md
|
||||
- areas/shipping/shipping_admin/load.md
|
||||
- areas/shipping/shipping_admin/loads_manualcreation.md
|
||||
- areas/shipping/shipping_admin/loads_close.md
|
||||
- areas/shipping/shipping_admin/route.md
|
||||
- areas/shipping/shipping_admin/prepackaging_config.md
|
||||
- areas/shipping/shipping_admin/prepackaging_erp.md
|
||||
- areas/shipping/shipping_admin/buffer_dock_assignment.md
|
||||
- areas/shipping/shipping_admin/pk_mp_assignment.md
|
||||
- areas/shipping/shipping_admin/ps_groups_config.md
|
||||
- areas/shipping/shipping_admin/shipping_order_mixing.md
|
||||
- areas/shipping/shipping_admin/sequencing.md
|
||||
- areas/shipping/shipping_truck_load/index.md
|
||||
- areas/shipping/shipping_truck_load/truckload_containers.md
|
||||
- areas/shipping/shipping_truck_load/truckload_stock.md
|
||||
- areas/shipping/shipping_truck_load/truckload_packages.md
|
||||
- areas/shipping/shipping_truck_load/virtual_dock.md
|
||||
- areas/shipping/shipping_consolidation/shipping_consolidation_onstation.md
|
||||
- areas/shipping/shipping_auto/container_closure.md
|
||||
- areas/shipping/shipping_admin/inventory_after_picking.md
|
||||
- areas/shipping/parameters.md
|
||||
- sources/archives/09_Modeles_expedition.md
|
||||
- sources/archives/17_Fonctionnement_routes_tournees.md
|
||||
- sources/archives/22_Chargement_camion.md
|
||||
- sources/archives/32_Fusion_commandes_Merge.md
|
||||
related:
|
||||
- concepts/picking.md
|
||||
- concepts/replenishment.md
|
||||
- concepts/container.md
|
||||
- concepts/crossdocking.md
|
||||
- concepts/reception.md
|
||||
last_compiled: "2026-04-17"
|
||||
---
|
||||
|
||||
# Shipping
|
||||
|
||||
## Overview
|
||||
|
||||
Shipping is the end-to-end process of fulfilling customer orders: from order receipt through stock assignment, preparation (picking or container shipping), consolidation, truck loading, and closure. EasyWMS represents outbound work through **shipping orders** — the central document linking customer demand to warehouse operations.
|
||||
|
||||
Shipping orders typically arrive from the ERP via `SOR` messages but can be created manually from the web interface. For the canonical shipping order lifecycle and all statuses (Waiting, Reserved, Released, In Preparation, Paused, Closed/Archived, etc.) see [Outbound Order](order-outbound.md).
|
||||
|
||||
## Shipping Order
|
||||
|
||||
A shipping order (SO) represents a customer's purchase order, a supplier return, or an inter-warehouse transfer. It contains:
|
||||
- Header: customer, carrier, dock, stage, consolidation location, load, route, wave/group, priority, dates
|
||||
- Lines: item, UoM, requested quantity, logistic attributes (batch, expiration, etc.), required/rejected statuses, required container type
|
||||
|
||||
### Shipping Order Types
|
||||
|
||||
| Type | Description |
|
||||
|---|---|
|
||||
| Standard | Normal outbound order for a customer |
|
||||
| Return to supplier | Stock returned outbound to a supplier |
|
||||
| Transfer | Inter-warehouse stock transfer |
|
||||
| Desk order | Stock requested from a retail desk inside the warehouse |
|
||||
|
||||
### Shipping Order Lifecycle
|
||||
|
||||
| Status | Meaning |
|
||||
|---|---|
|
||||
| **Created** | Order received/created; no stock assigned yet |
|
||||
| **Released** | Stock assigned; tasks generated for preparation |
|
||||
| **In preparation** | Active picking/shipping tasks being executed |
|
||||
| **Prepared** | All lines prepared; stock at dock/stage waiting for loading |
|
||||
| **Loaded** | Stock loaded onto transport |
|
||||
| **Closed** | ERP notified of shipped quantities; documentation issued |
|
||||
| **Archived** | Historical record; no further modifications allowed |
|
||||
|
||||
### Order Management Operations
|
||||
|
||||
| Operation | Description |
|
||||
|---|---|
|
||||
| Create (manual) | Manually create from web interface (rare; for ERP downtime or special requests) |
|
||||
| Edit lines | Increase/decrease/cancel lines during preparation (ERP changes if received from ERP) |
|
||||
| Assign stock | Manually trigger stock assignment before release |
|
||||
| Reserve stock | Pre-reserve specific stock or maximum available for an order or account |
|
||||
| Assign dock/stage | Manually assign shipping dock or staging area |
|
||||
| Assign PK/MP (automatic WH) | Assign picking conveyor + preparation zone for automatic warehouse picking |
|
||||
| Assign PS group | Assign outbound conveyor group for automatic warehouse shipping |
|
||||
| Stop | Freeze order at a configurable point; prevents further modifications |
|
||||
| Pause | Temporarily halt preparation; assigned stock retained |
|
||||
| Restart | Resume paused order; tasks generated to continue with held stock |
|
||||
| Cancel | Cancel order (if not fully prepared); stock released; ERP notified |
|
||||
| Close | Finalize partially-prepared order; confirm shipped quantities to ERP |
|
||||
| Archive | Move to historical records |
|
||||
| Mix orders | Configure strategies to mix different orders in same client container |
|
||||
|
||||
## Order Release
|
||||
|
||||
Releasing an order is the trigger that moves it from "Created" to "In Preparation":
|
||||
|
||||
1. **Assign stock**: system selects specific stock for each line (see [Picking](picking.md) for assignment strategy details)
|
||||
2. **Assign PK/MP** (automatic warehouses): if auto-assignment configured, picking conveyors and preparation zones are allocated
|
||||
3. **Generate tasks**:
|
||||
- Picking tasks for all lines with stock in picking locations
|
||||
- Shipping tasks (full container moves) for stock in locations that allow shipping
|
||||
- If dock/stage assigned: loading tasks to move prepared stock to dock/stage
|
||||
|
||||
Tasks are created in parallel as stock is assigned, following line number order, except when:
|
||||
- Some lines are marked **critical** or **required for shipping** (inter-line dependencies)
|
||||
- **Negative picking** conditions are met (excess must be extracted before picking)
|
||||
- **Sequencing** rules require specific task ordering
|
||||
|
||||
Release can be:
|
||||
- **Manual**: warehouse manager selects orders in web UI
|
||||
- **Automatic**: order has auto-release date/time set, or is triggered by a **shipping template**
|
||||
|
||||
**ERP message sent:** `SOC` (order status change)
|
||||
**Transaction recorded:** `OUT.CST`
|
||||
**Parameter:** `MAX_AUTORELEASED_OUTBOUNDORDERS` — maximum orders auto-released simultaneously
|
||||
|
||||
### Release by Sub-warehouse
|
||||
|
||||
For warehouses with multiple sub-warehouses, orders can be released sub-warehouse by sub-warehouse. Each sub-warehouse release generates tasks only for its stock. ERP is notified of each sub-warehouse release.
|
||||
|
||||
## Grouping Strategies (Waves, Groups, Fusions)
|
||||
|
||||
Grouping shipping orders reduces operator travel by combining multiple orders into a single picking round.
|
||||
|
||||
### Groups
|
||||
|
||||
Multiple shipping orders are picked together (same picking path). After picking, stock is **ungrouped** at an ungrouping station (UAP) to separate each order's stock into its own containers.
|
||||
|
||||
- Manual or automatic creation (via shipping templates)
|
||||
- Include/exclude orders after creation
|
||||
- Close and archive when last order is ungrouped
|
||||
- Cancel: prepared stock released; orders must be re-prepared separately
|
||||
|
||||
### Fusions
|
||||
|
||||
Multiple shipping orders are shipped together without ungrouping — typically for orders going to the same customer. Picked stock can be placed in shared containers without redistribution.
|
||||
|
||||
### Waves
|
||||
|
||||
Each wave fills operators' equipment to maximum capacity. Orders in a wave can be included fully or partially (by lines). Waves can be:
|
||||
- **Grouped** (stock ungrouped at UAP after picking)
|
||||
- **Ungrouped** (stock distributed directly on equipment during picking)
|
||||
|
||||
Special case: if all wave orders are "Single Units" with the same destination, ungrouping station is bypassed.
|
||||
|
||||
Operators select which wave to execute (from released waves). Wave closes automatically when all included orders are archived.
|
||||
|
||||
### Shipping Templates
|
||||
|
||||
Automation mechanism that selects orders matching configured criteria and:
|
||||
- Creates groups, fusions, or waves automatically
|
||||
- Assigns ungrouping station
|
||||
- Releases the grouping
|
||||
|
||||
Templates are defined from `Configuration → Modèle d'expédition` and follow a **sequence-number priority** (lower = higher priority, identical to putaway strategies).
|
||||
|
||||
**Common base fields (every template type)** :
|
||||
|
||||
| Field | Description |
|
||||
|---|---|
|
||||
| Code | Template code |
|
||||
| Prefix | Group/wave name prefix |
|
||||
| Priorité | Priority of the created wave/group |
|
||||
| Mode d'assignement | Auto release / manual release |
|
||||
| Nb max de groupes créés | Cap on active groups/waves |
|
||||
| Nb max de groupes libérés | Cap on groups/waves in preparation |
|
||||
| Trié par | Order in which orders are consumed (recommended : creation date ASC) |
|
||||
|
||||
A stock-assignment strategy and/or a prepackaging strategy can be attached to the template.
|
||||
|
||||
**Per-type tabs** :
|
||||
- **Picking d'ordres groupés** : grouping criteria (carrier, mono-ligne, mono-unité, critère personnalisé), group size (max orders / lines / volume), filters (stock rangé, crossdocking, UdM, critère perso), ungrouping (UAP + packing buffer), minimum conditions (min qty, min orders).
|
||||
- **Vague de picking** : carrier + critère perso ; max orders, volume, UdM, min orders. Checkbox **"Generate tasks on release"** — if set, tasks are created when the wave is released ; otherwise at operator pickup time.
|
||||
- **Picking d'ordre** : for single-order templates. Filters on UdM + critère perso only.
|
||||
|
||||
**Scheduler.** Templates can run between two hours on selected weekdays, with a configurable interval in minutes. Two daily windows (e.g. 9–10h and 15–16h) require **duplicating** the template.
|
||||
|
||||
**Criteria** are mandatory (at least one per template). Each criterion rejects orders that don't match — two tabs are available :
|
||||
|
||||
- **Ordre d'expédition** : Code, Description, Type (`Customer`, `Transfer`, `DirectTransfer`, `Fabrication`, `Manuel`, `Retour`…), Class, Owner, Mono-ligne, Mono-unité, Follow sequence, Auto-release, Carrier, Transport type, N hours before release/loading, N hours late, Country/City/Postal code.
|
||||
- **Ligne d'ordre d'expédition** : item type, item family, danger, stackability, voluminous, single parcel.
|
||||
|
||||
**Critère personnalisé — LINQ syntax** :
|
||||
|
||||
```csharp
|
||||
// Criterion on the outbound order itself (ex: orders imported with source = "WEB")
|
||||
o.Source == "WEB"
|
||||
|
||||
// Criterion on an outbound order line
|
||||
l.Item.ItemType.Code == "FROID"
|
||||
```
|
||||
|
||||
## Prepackaging
|
||||
|
||||
Prepackaging calculates the number and type of client containers (cartons, pallets) needed to ship an order before picking begins, maximizing container utilization.
|
||||
|
||||
| Prepackaging source | Description |
|
||||
|---|---|
|
||||
| **Calculated by EasyWMS** | System uses item dimensions + available container formats to compute optimal packing |
|
||||
| **Calculated by ERP** | ERP sends container count/type via messaging before release |
|
||||
| **Calculated by operator** | Operator manually enters container count (for small warehouses) |
|
||||
|
||||
**When prepackaging is applied:**
|
||||
- **During picking**: system guides operator on which container to use for each item as picking progresses
|
||||
- **During consolidation**: at a packaging stage/consolidation station, system guides stock redistribution into computed containers
|
||||
|
||||
## Consolidation
|
||||
|
||||
Consolidation redistributes prepared stock from multiple source containers (or loose stock) into final shipping packages, optimizing the number of outbound containers.
|
||||
|
||||
Typical need: order prepared from multiple origins (manual + automatic aisles, different work areas), resulting in many partial containers. Consolidation combines them.
|
||||
|
||||
**Setup:** consolidation station (buffer-type location) must be assigned to the shipping order **before release**. After release, any picked/shipped containers are sent to the consolidation station automatically.
|
||||
|
||||
> Detailed prepackaging mechanics, tested behaviors, and the SOR02 `<PrepackagingConfiguration>` structure are covered in [Prepackaging](prepackaging.md).
|
||||
|
||||
**Process (at conveyor):**
|
||||
1. Operator at consolidation station scans source container SSCC
|
||||
2. System guides transfer of stock into destination container(s)
|
||||
3. Empty source containers are deleted if configured; task cancellation follows
|
||||
|
||||
**Transactions:**
|
||||
- `CON.CREATE` — new consolidation container created
|
||||
- `STK.MOVE` — stock moved from source to destination
|
||||
- `CON.DELETE` — empty source container deleted
|
||||
- `TSK.CANCEL` — tasks for deleted container canceled
|
||||
|
||||
HPKS (laser pick-term tray) illuminates the destination division for easy identification.
|
||||
|
||||
## Routes
|
||||
|
||||
Routes group shipping orders when containers must be **loaded in stop sequence** so they can be unloaded at each delivery stop without rearranging.
|
||||
|
||||
Route structure: Route → Stops → Shipping orders per stop
|
||||
|
||||
Route management operations:
|
||||
| Operation | Description |
|
||||
|---|---|
|
||||
| Create | Manual or from ERP messaging |
|
||||
| Assign dock/stage | Set staging area and loading dock |
|
||||
| Release | Begin preparation of all included orders; ERP notified |
|
||||
| Monitor | Track progress; pause/stop/change priority |
|
||||
| Include/exclude orders | Add or remove orders during preparation |
|
||||
| Modify stops | Change stop numbers / order sequence |
|
||||
| Pause/Resume | Pause route; ERP notified of paused orders |
|
||||
| Stop/Restart | Stop route; ERP notified; restart resumes with held stock |
|
||||
| Close/Archive | Close after last stop loaded; print transport documents |
|
||||
| Cancel | Cancel route; decide if included orders continue as separate SOs |
|
||||
|
||||
**Important:** route loading must respect stop order. RFT warns operator if container is loaded in wrong sequence.
|
||||
|
||||
### RUT File (TMS-driven Routes)
|
||||
|
||||
When route sequencing is planned by a TMS, the ERP sends a **`RUT` file** instead of individual `SOR` messages. The RUT carries a route header plus all the constituent orders, each tagged with its **stop number**. The loading discipline is **inverse to stop number** : the container destined for the *last* customer is loaded *first*, so unloading proceeds naturally stop after stop.
|
||||
|
||||
Operational flow :
|
||||
|
||||
1. **Integrate the RUT file.** Orders appear in the orders view but must be handled from the **routes view** — releasing them individually is not the nominal path.
|
||||
2. **Launch the route** → each order is auto-released with its stock assignment.
|
||||
3. **Prepare the orders** in any convenient internal order.
|
||||
4. **Create a truck load** and attach it to the route. A template can create the load automatically at route release.
|
||||
- ⚠️ The load must have a **dock** before truck loading can start.
|
||||
5. **RFT truck loading.** Scan containers in the expected sequence (`n_max` → `n_max-1` → … → `1`). Scanning a container with the wrong stop number prompts a warning asking whether to proceed anyway.
|
||||
|
||||
> 💡 Custom idea repeatedly requested by customers : display the next expected container on the RFT so the operator can target it directly on the staging area.
|
||||
|
||||
## Loads
|
||||
|
||||
Loads represent a physical transport vehicle (truck, van) that will carry one or more shipping orders or one route.
|
||||
|
||||
| Load type | Description |
|
||||
|---|---|
|
||||
| **Planned** | Created in advance; specific orders assigned; only assigned containers/stock can be loaded |
|
||||
| **Unplanned** | Created "on the fly" at loading time from RFT; orders must allow unplanned loading |
|
||||
| **Route loads** | One route per load; containers must be loaded in stop sequence |
|
||||
|
||||
### Load Lifecycle
|
||||
|
||||
1. Create load (manual or auto on order release)
|
||||
2. Assign dock
|
||||
3. Assign orders/routes
|
||||
4. Load containers/stock/packages (via RFT)
|
||||
5. Close load → ERP notified, transport documents printed
|
||||
|
||||
**Load operations:**
|
||||
- Monitor (detect incidents, check progress)
|
||||
- Pause / Resume loading
|
||||
- Unload container/stock (if loading error)
|
||||
- Undo preparation (release stock back to warehouse)
|
||||
- Remove excesses (if order quantities changed after preparation)
|
||||
- Partial close (close without all containers loaded, if configured)
|
||||
- Auto-close (triggered automatically when last container/package is loaded)
|
||||
|
||||
### Multi-zone Loading (Virtual Dock)
|
||||
|
||||
Warehouses with multiple storage/preparation areas can use a **virtual dock** — a common dock reference for all zones. Carriers collect stock from different physical zones, but all are referenced to the same virtual dock for tracking purposes.
|
||||
|
||||
### Truck Loading — SmartUI configuration reference (Mecalux France)
|
||||
|
||||
Standard EasyWMS exposes two truck-loading modes at dock level :
|
||||
|
||||
- **No buffer** — order auto-ships as soon as it lands on the dock
|
||||
- **Buffer + dock** — an intermediate control step validates pallets against the load before shipment
|
||||
|
||||
**Load creation modes (per order type: unitary, route, group, merged, wave, by carrier):**
|
||||
|
||||
| Mode | Description |
|
||||
|---|---|
|
||||
| **Automatic (planned)** | Load created at order release; strict container control (scanning a container from another order raises an error) |
|
||||
| **Non planifié** | Load created at release; **no container control** |
|
||||
| **Manuel (planned)** | Load created manually; strict container control |
|
||||
| RFT — manual, no control | Created from RFT; no container control (indicative only) |
|
||||
| RFT — from a route | Load tied to an existing route |
|
||||
|
||||
EasyS minimum: **one buffer + one dock** per dock used. The buffer can be carried in `<PrpPackingLocation>` on SOR02, or assigned manually via SmartUI **Ordres de sortie → "Assigner quai/poumon"**.
|
||||
|
||||
**SmartUI — Configuration → Chargements:**
|
||||
|
||||
| Option | Effect |
|
||||
|---|---|
|
||||
| Truck plate number | Mandatory / Not required / Optional |
|
||||
| Seal number | Mandatory / Not required / Optional |
|
||||
| **Auto-close** | Close on last container loaded → stock exit + order close |
|
||||
| **Partial close** | Allow closing with uncharged containers; a **remainder load** is auto-created (codes suffixed `_2`, `_3`, …) |
|
||||
| Quantity validation | Same semantics as picking |
|
||||
| **Allow load of all stock** | Adds a RFT button to load all free stock in one action |
|
||||
|
||||
**RFT — create a load from the floor:** `Ordres de sortie → Chargement camion → Charger les conteneurs → Nouveau`. To **disable** this path, set every order-type mode to something other than "Non planifiée". As soon as one type is "Non planifiée", operators can create loads from RFT.
|
||||
|
||||
**RFT — execute a load (`EasyWMS.TruckLoad_GetLoads_UI`):**
|
||||
|
||||
1. `Ordres de sortie → Chargement camion → Charger les conteneurs`
|
||||
2. Filter by dock/buffer or by load
|
||||
3. Select the load (status `Ready to load` if the whole order is prepared)
|
||||
4. Scan pallets — button **"Conteneur"** lists remaining containers ; **"Effectuer"** closes the load even if pallets are missing
|
||||
|
||||
> ℹ️ During loading the load status reads **"Loading"** (red on RFT).
|
||||
|
||||
**Delivery-note printing at load close:** when the BL is configured to print on order close, **closing the truck load triggers the print** — including for a partial close. On a two-step load (remainder), the BL is printed at each close and always covers **all shipped lines of the order**.
|
||||
|
||||
**Truck unloading (RFT):** menu `Décharger les conteneurs` → scan the container → scan the drop-off location (default: the end-of-preparation buffer).
|
||||
|
||||
### Order Merge vs Load
|
||||
|
||||
Truck loading handles **loads** — merging happens **before** load creation on the shipping orders themselves. A merged order behaves as a single order when assigning a load, but ERP traceability remains per-original-order (see [Outbound Order → Merge](order-outbound.md#merge-order-fusion)).
|
||||
|
||||
## Truck Loading (RFT Process)
|
||||
|
||||
Operators at the dock register each item loaded using the RFT:
|
||||
|
||||
### Containers
|
||||
- **Planned**: load only containers from assigned orders
|
||||
- **Unplanned**: create load on the fly; scan any container
|
||||
- **Route**: enforce stop-order loading; system alerts if wrong sequence
|
||||
- **Stacked containers**: load stacked units to maximize truck height utilization
|
||||
- **Direct to dock**: containers automatically considered loaded when they arrive at dock (no explicit RFT scan)
|
||||
|
||||
### Stock (loose stock)
|
||||
- Similar to containers but for non-containerized stock
|
||||
- Cannot be used for routes (routes require container-level tracking)
|
||||
- Direct to dock variant supported
|
||||
|
||||
### Packages (Multi-Carrier)
|
||||
- Packages (parcels with carrier labels) are scanned for loading
|
||||
- Carrier must match load's carrier assignment
|
||||
- Packages can be in containers; containers with packages are loadable as a unit
|
||||
- If carrier allows: undo preparation, reject package
|
||||
|
||||
**Common loading events:**
|
||||
- Excess detection: if order was reduced after preparation, operator is guided to remove surplus before/during loading
|
||||
- Auto-close: last item loaded triggers close process (seal registration, report collection)
|
||||
- Partial close: configured to allow closing without all units loaded
|
||||
|
||||
## PS Groups (Automatic Warehouse — Outbound Conveyors)
|
||||
|
||||
PS (Pallet Shuttle or outbound conveyor) groups are logical groupings of outbound conveyors in automatic warehouses. Each group configures which PS stations belong to it and how they are filled (criteria for which PS station gets the next container).
|
||||
|
||||
- One PS group can be assigned per shipping order/route
|
||||
- Manual or auto assignment
|
||||
- Containers arriving at PS conveyors are shipped (manually or automatically)
|
||||
- PS group shipping flow: containers arrive at configured PS stations → shipped in configured order
|
||||
|
||||
## Inventory After Picking
|
||||
|
||||
At the end of picking (last task from a location/container), EasyWMS can ask operators to verify if the location/container is now empty, enabling continuous inventory. Configurable behavior:
|
||||
- If operator says empty: stock adjustment (reduces inventory to zero)
|
||||
- If operator says not empty: location/container marked for review (count triggered)
|
||||
|
||||
## Shipping Order Mixing
|
||||
|
||||
Multiple shipping orders can be merged into the same client container if they meet configured mixing strategy conditions (e.g., same customer, same carrier, same delivery date range). Mixing strategies define the compatibility criteria.
|
||||
|
||||
## ERP Integration
|
||||
|
||||
| Message | Direction | Trigger |
|
||||
|---|---|---|
|
||||
| `SOR` (inbound) | ERP → WMS | Shipping order creation/update from ERP |
|
||||
| `SOC` (outbound) | WMS → ERP | Order release; status change (stock assignment) |
|
||||
| `SOF` / `SOF02` (outbound) | WMS → ERP | Order fulfilled / partial fulfillment with differences |
|
||||
| `LOF` (outbound) | WMS → ERP | Load closed; transport details sent to ERP |
|
||||
|
||||
> See [ERP Interface](erp-interface.md) for full field tables and variants (SOR01/SOR02, SOF01/SOF02).
|
||||
|
||||
## Transactions
|
||||
|
||||
| Transaction | Trigger |
|
||||
|---|---|
|
||||
| `OUT.CST` | Shipping order release |
|
||||
| `STK.PICKING` | Picking task executed |
|
||||
| `STK.SHIP` | Shipping task (full container extracted) |
|
||||
| `CON.LOAD` | Container loaded onto transport |
|
||||
| `STK.LOAD` | Loose stock loaded onto transport |
|
||||
| `CON.CREATE` | New client/consolidation container created |
|
||||
| `CON.COC` | Client container closed |
|
||||
| `STK.MOVE` | Stock moved (consolidation) |
|
||||
| `CON.DELETE` | Empty container deleted |
|
||||
|
||||
## Parameters
|
||||
|
||||
| Parameter | Description |
|
||||
|---|---|
|
||||
| `MAX_AUTORELEASED_OUTBOUNDORDERS` | Maximum shipping orders auto-released at the same time |
|
||||
| `ALLOW_CONFIRMATION_ON_PLACEMENT` | Operator confirms destination container at picking deposit |
|
||||
| `EMPTY_PICKING_LOCATION_QUESTION` | Ask if location/container is empty after last pick |
|
||||
| `EMPTY_PICKING_LOCATION_STOCK_ADJUST` | If empty confirmed: adjust stock (true) or mark for review (false) |
|
||||
|
||||
## Common Errors
|
||||
|
||||
**Order stays in "Created" after release attempt:** Stock assignment failed for all lines (no eligible stock). Check: stock statuses allow picking, locations not locked, no active count tasks, picking dedicated locations configured if needed.
|
||||
|
||||
**Tasks generated but no operator picks up:** Tasks assigned to specific equipment that isn't active, or operator logged into wrong zone/sub-warehouse. Check equipment assignment on the order; clear if not needed.
|
||||
|
||||
**Route containers loaded in wrong order:** Operator ignored system warnings or system route stop not correctly configured. Route stop numbers must be in reverse delivery sequence (last stop loaded first) for efficient unloading.
|
||||
|
||||
**Consolidation station not receiving containers:** Consolidation station assigned after order release. Must be assigned before release for existing prepared containers to be re-routed. Only new container movements will go to the station post-assignment.
|
||||
|
||||
**Load closed without all containers:** Partial close was triggered or configured. ERP receives load-close notification; missing containers must be tracked manually or re-assigned to a new load.
|
||||
|
||||
**Order mixing containers rejected:** Two orders cannot mix due to mixing strategy conditions (different customer, incompatible logistic attributes). Check mixing strategy criteria and adjust or create a different strategy for these order types.
|
||||
|
||||
**PS group not releasing containers to outbound:** PS group not assigned to the order, or all PS stations in the group are locked. Assign PS group or unlock stations.
|
||||
|
||||
## Interface Paths
|
||||
|
||||
| Interface | Path |
|
||||
|---|---|
|
||||
| Web — shipping orders | Menu "Shippings" → "Shipping orders" |
|
||||
| Web — routes | Menu "Shippings" → "Routes" |
|
||||
| Web — loads | Menu "Shippings" → "Loads" |
|
||||
| Web — waves | Menu "Shippings" → "Waves" |
|
||||
| Web — groups/fusions | Menu "Shippings" → "Groups" |
|
||||
| Web — shipping templates | Menu "Configuration" → "Shipping templates" |
|
||||
| Web — PS groups | Menu "Control" → "PS groups" |
|
||||
| RFT — truck loading | Menu "Shipping" → "Load truck" |
|
||||
| RFT — consolidation | Menu "Shipping orders" → "Packaging" |
|
||||
|
||||
## Related
|
||||
|
||||
- [Picking](picking.md) — picking is the core preparation activity within the shipping process
|
||||
- [Replenishment](replenishment.md) — picking dedicated locations are replenished when stock runs out during order preparation
|
||||
- [Container (LPN)](container.md) — containers are the main unit tracked through shipping, loading, and delivery
|
||||
- [Crossdocking](crossdocking.md) — some shipping orders can bypass storage through crossdocking
|
||||
- [Reception](reception.md) — inbound stock feeds the inventory that shipping orders consume
|
||||
- [Outbound Order](order-outbound.md) — shipping orders (SOR/SOF/SOC) drive the entire shipping process; order type determines destination and process
|
||||
- [Task](task.md) — shipping generates Shipping and Loading tasks; task priority inherits from order priority
|
||||
- [[cutting-stock]] — cutting stock has special shipping profile requirements (excess %, enter quantity mode = Manually)
|
||||
- [[stations]] — Dock (type 34), Stage (type 33), PS (type 4), Consolidation (type 17) stations are central to shipping
|
||||
- [Prepackaging](prepackaging.md) — dedicated page for prepackaging strategy configuration, ERP (SOR02) payload, and tested behaviors
|
||||
@@ -0,0 +1,287 @@
|
||||
---
|
||||
title: "Stations & Routes"
|
||||
type: concept
|
||||
sources:
|
||||
- areas/layout/stations/index.md
|
||||
- areas/layout/stations/alm.md
|
||||
- areas/layout/stations/pie.md
|
||||
- areas/layout/stations/pk.md
|
||||
- areas/layout/stations/et.md
|
||||
- areas/layout/stations/dock.md
|
||||
- areas/layout/stations/stage.md
|
||||
- areas/layout/stations/mu.md
|
||||
- areas/layout/stations/me.md
|
||||
- areas/layout/stations/ms.md
|
||||
- areas/layout/stations/workzone.md
|
||||
- areas/layout/stations/decision.md
|
||||
- areas/layout/stations/ps.md
|
||||
- areas/layout/stations/reac.md
|
||||
- areas/layout/stations/rech.md
|
||||
- areas/layout/stations/consolidation.md
|
||||
- areas/layout/stations/etq.md
|
||||
- areas/layout/stations/conveyor.md
|
||||
- areas/layout/stations/vas.md
|
||||
- areas/layout/stations/tenseFlow.md
|
||||
- areas/layout/stations/lift.md
|
||||
- areas/layout/stations/packaging_station.md
|
||||
- areas/layout/stations/pscharge.md
|
||||
- areas/layout/stations/fleet_manager.md
|
||||
- areas/layout/stations/notask.md
|
||||
- areas/layout/stations/disabledroute.md
|
||||
- areas/layout/stations/stationloaded.md
|
||||
- areas/layout/stations/stationfault.md
|
||||
- areas/inventory_management/stations/roles.md
|
||||
- areas/inventory_management/stations/views/view_dock_stage.md
|
||||
- sources/archives/Codes_de_station.md
|
||||
- sources/archives/Acronymes_elements_mecaniques.md
|
||||
- sources/archives/Presentation_GALILEO.md
|
||||
- sources/archives/Communication_Easy_Galileo.md
|
||||
- sources/archives/Configuration_EasyS.md
|
||||
related:
|
||||
- concepts/location.md
|
||||
- concepts/task.md
|
||||
- concepts/picking.md
|
||||
- concepts/reception.md
|
||||
- concepts/shipping.md
|
||||
- concepts/putaway.md
|
||||
- concepts/warehouse-designer.md
|
||||
- concepts/mechanical-elements.md
|
||||
- architecture/galileo-integration.md
|
||||
- operations/galileo-simulation.md
|
||||
last_compiled: "2026-04-17"
|
||||
---
|
||||
|
||||
# Stations & Routes
|
||||
|
||||
## Overview
|
||||
|
||||
Stations are the structural **start and end points of all container movement** in the warehouse. In automatic warehouses, they form the basic interconnection layer between Easy WMS and the Transport Management System (TMS). Every task generated by the system is a movement from a source station to a destination station along a defined route.
|
||||
|
||||
A critical design principle: **minimize the number of stations**. More stations means more communication nodes, more possible delays, and higher risk of bottlenecks. Create only what is strictly necessary for optimal container flow.
|
||||
|
||||
Each station has:
|
||||
- A **type** (determines behavior and process)
|
||||
- A **capacity** (max containers simultaneously heading to that station)
|
||||
- An optional **process type** (restricts which task types pass through it)
|
||||
|
||||
## Station Types Reference
|
||||
|
||||
Easy WMS defines 37+ standard station types. Types are identified by a numeric code.
|
||||
|
||||
### Storage Stations
|
||||
|
||||
| Code | Type | Name | Description |
|
||||
|------|------|------|-------------|
|
||||
| 0 | ALM | Warehouse | Set of storage locations (shelves, ground locations, any storage element). Not connected to TMS — no machine communication. Involved in: location (destination), extraction (source), transfer (source+destination). Can be configured to allow/deny inbounds or outbounds independently. |
|
||||
|
||||
### Inbound / Conveyor Stations (AS/RS)
|
||||
|
||||
| Code | Type | Name | Description |
|
||||
|------|------|------|-------------|
|
||||
| 3 | PIE | Pallet Check Unit | Dimensional + identification control of containers. TMS sends height, weight, status, and label data to Easy WMS. Easy WMS validates and routes: correct → warehouse; wrong → REAC/RECH. All stations with a gauge arch or scale must be configured as PIE. PIE events evaluate flags: 65536=correct, 256=barcode error, 512=recovered container, 1024/66560=correct+empty, 3=holes+studs, 4=overheight, 8–64=overhangs, 128=weight excess. |
|
||||
| 9 | ME | Aisle Inbound Conveyor | Interchange point with AS/RS (TRASLO). Final optimization before container enters the machine. Checks stacker crane characteristics (number of extractors, conveyors). If container arrives at ME with both putaway and picking tasks, putaway is cancelled and container goes to picking. Final location decision point — refines but doesn't replace initial search. Required in all automatic warehouses with stacker cranes. |
|
||||
| 10 | MS | Outbound Conveyor | AS/RS unload point — where the machine unloads an extracted container onto the conveyor. Not mandatory (in Galileo IV the location is freed at AS/RS loading), but recommended for additional control, ring saturation prevention, and movement statistics. Taskless containers (order cancelled) return to vault. |
|
||||
| 11 | MU | Putaway Conveyor | Searches for a putaway location by applying configured strategies. Only acts on containers without tasks or containers whose destination task points to this station. Useful when PIE is far from the warehouse — PIE skips location search, MU refines it just before warehouse entry. If problem generating movement: movement generated with origin=destination, flagged "With conflict"; cleared when possible. |
|
||||
| 13 | APL | Stacker / Unstacker | Handles stacking and unstacking operations for empty containers. |
|
||||
| 14 | LANZ | Shuttle | Shuttle station for Pallet Shuttle operations. |
|
||||
| 18 | PKE | PK Inbound Conveyor | Entry to the picking inbound conveyor. |
|
||||
| 62 | Lift | Lift | Lift station for multi-level operations (APS3D carts change level through this). |
|
||||
|
||||
### AS/RS Machine
|
||||
|
||||
| Code | Type | Name | Description |
|
||||
|------|------|------|-------------|
|
||||
| 1 | TRASLO | AS/RS | Automated Storage/Retrieval System — the crane or machine. Bidirectional: loads from ME (inbound), unloads into MS (outbound). Communication via protocol (Galileo IV supports loading event + location release simultaneously). |
|
||||
|
||||
### Picking Stations
|
||||
|
||||
| Code | Type | Name | Description |
|
||||
|------|------|------|-------------|
|
||||
| 2 | PK | Picking Conveyor | Managed from the "Picking" view. Operator is guided: what to pick, how much, where to put it. Supports multiple locations per station (multiple containers simultaneously). Operations: direct picking, container/item count, replenishments. Can have associated RECH reject station. Empty container removal requires location configured for empty container handling. |
|
||||
| 4 | PS | Outbound Conveyor | Final point of automatic transport — container leaves the warehouse. Management cycle of Easy WMS ends here (no more tasks). May have a display panel showing operator where to carry the container. Location types: Dynamic (Easy WMS tracks container depth) or Automatic (Easy WMS knows only which container is on PS, not which follows). |
|
||||
| 16 | MP | Preparation Zone | Zone for order preparation — used in semi-automatic picking operations. |
|
||||
| 17 | Consolidation | Consolidation Station | Consolidation station for grouping picked stock by shipping order. |
|
||||
| 53 | PCS | Sequencing Control Point | Point where order sequencing is controlled in the transport flow. |
|
||||
| 54 | PB | Proximity Buffer | Buffer near a picking station to temporarily hold containers. |
|
||||
| 60 | TenseFlow | Tense Flow | Station for tense-flow operations (continuous uninterrupted picking flow). |
|
||||
| 63 | Decision (DS) | Decision Station (Pick and Pass) | PopUp element at intersection of main transport and sub-warehouse routes. Analyzes: is container a client container? Is it full? Does it have pending tasks in this sub-warehouse? Does it have putaway tasks here? On failed read: reject task to error entity station. Location containers without approach task access first station of transport route. Client containers without approach task: flow generates approach task to destination sub-warehouse. |
|
||||
| 64 | Workzone (WS) | Workzone Station (Pick and Pass) | Automatic buffer element at entry of each sub-warehouse. Worker picks up/drops off containers. Required for picking start points per sub-warehouse. Has "Sequence" parameter for logical ordering along transport flow. Locking prevents approach tasks from being created (blocks sub-warehouse access). |
|
||||
|
||||
### Control / Maintenance Stations
|
||||
|
||||
| Code | Type | Name | Description |
|
||||
|------|------|------|-------------|
|
||||
| 5 | REAC | Reconditioning | Destination for containers that fail PIE validation but can be corrected and re-injected into the flow. |
|
||||
| 7 | RECH | Rejects | Destination for definitively rejected containers — not reintegrable. |
|
||||
| 20 | ET | Transit Station | Intermediate station inserted in routes to break task flow. Does not perform any WMS management — designed for flexibility and external system integration (robotic arm, labeling machine, vertical warehouse, etc.). For automatic locations: only one container at a time (new arrival sends previous to Lost & Found). For non-automatic (buffer) locations: multiple containers allowed. TMS must always report aisle=1 in station update. |
|
||||
| 21 | CME | Inbound Control Station | Control point for inbound conveyors. |
|
||||
| 42 | RETENTION | Retention | Retention station — holds containers that require manual review or authorization before continuing their route. |
|
||||
| 43 | DESK | Desk | Desk station for administrative or manual operations. |
|
||||
| 55 | ECB | Empty Containers Buffer | Buffer specifically for empty containers waiting to be stacked or reused. |
|
||||
| 58 | ETQ | Labeller | Labeling machine station — container passes through and is automatically labeled. |
|
||||
|
||||
### Dock & Stage Stations
|
||||
|
||||
| Code | Type | Name | Description |
|
||||
|------|------|------|-------------|
|
||||
| 33 | Stage | Stage (Shipping/Receiving) | Floor area for temporary stock storage, typically near docks. Receiving stages: for stock pending putaway. Shipping stages: for client containers awaiting truck load. One of each can be set as default. Locations are DockStage type — Easy WMS does not control exact container position. Capacity = 0 means unlimited. Cannot be used for putaway; cannot generate tasks from stage (only from warehouse-type locations). |
|
||||
| 33 | PKS | Packing Station | Packing station for packaging operations (shares type code 33 with Stage). |
|
||||
| 34 | Dock | Dock | Point of receipt or shipping. Types: inbound dock, outbound dock, or combined. At least one must be configured. Locations are DockStage type. No exact position tracking. Route must exist (even indirect) from container location to dock for task generation. Multiple locations per dock supported. |
|
||||
|
||||
### Special / Module Stations
|
||||
|
||||
| Code | Type | Name | Description |
|
||||
|------|------|------|-------------|
|
||||
| 38 | Kit | Kits Assembly | Station for assembling kit items. |
|
||||
| 57 | CONVEYOR | Conveyor (eCommerce) | Conveyor station for eCommerce operations — container-based order consolidation. |
|
||||
| 59 | VAS | VAS Conveyor | Conveyor station for executing Value Added Services. |
|
||||
| 61 | Cutting | Cutting Station | Station where cutting stock is cut in integrated or delegated picking processes. Composed of a receiving stage and a shipping stage (configurable: 1 shared stage, 2 dedicated stages, or shared stages across multiple cutting stations). Can be locked via "Stations" view to prevent stock assignment. |
|
||||
| 65 | AGV | AGV Station | AGV robot station. |
|
||||
| 66 | PS Charge | PS Charge | Pallet Shuttle charging station. |
|
||||
| 0 | Fleet Manager | APS3D Fleet Manager | Manages carts (APS3D) across all aisles and levels. Periodically requests tasks from Easy WMS, assigns to carts, informs of completion. Configuration: code, station number (unique per type+warehouse), sub-warehouse, work mode (Input/Output/Combined/Disabled), sequence level (Stricted). Behavior similar to AS/RS type. |
|
||||
|
||||
## Multi-Role Stations
|
||||
|
||||
A single physical station can have more than one role, enabling context-sensitive behavior:
|
||||
|
||||
**PIE with multiple roles:** A PIE station configured as a rejection or reconditioning station simultaneously. The workstation view updates to show the appropriate interface (PIE vs RECH/REAC) based on the container's task. Configuration: arrange both stations in EasyS, create PIE→RECH/REAC route, add RECH/REAC as Error Entity for PIE. Then assign role in SmartUI "Stations" view via "Assign new role".
|
||||
|
||||
**PK with multiple roles:** PK station acting also as a reject station. When a container is rejected at PIE, the target reject station is the PK that originally handled the container — enabling workload balance and operator accountability. No SmartUI role assignment needed. Configuration: arrange PK+RECH in EasyS, create route, add RECH as Error Entity for PK. Special case: if no dedicated reject station exists, PK itself can be the PIE's error entity.
|
||||
|
||||
## Station Code Translation (FR / ES / EN)
|
||||
|
||||
Mecalux teams work across three languages; the same station can appear in logs and documentation under different codes. Canonical cross-reference (see [Mechanical Elements](mechanical-elements.md) for the full table including acronyms):
|
||||
|
||||
| Type | Code FR | Code ES | Code EN | Description (FR) |
|
||||
|------|---------|---------|---------|------------------|
|
||||
| 0 | MAG | ALM | AIS | Magasin |
|
||||
| 1 | ML / TK | TRASLO | STC | Miniload / Transstockeur |
|
||||
| 2 | PK | PK | PK | Poste de picking |
|
||||
| 3 | PIE | PIE | EIP | Poste d'identification d'entrées |
|
||||
| 4 | PS | PS | SC | Poste de sortie |
|
||||
| 9 | TE | ME | IC | Table d'entrée |
|
||||
| 10 | TS | MS | OC | Table de sortie |
|
||||
| 11 | MU | MU | MU | Table de recherche d'emplacement |
|
||||
| 16 | TP | MP | MP | Table de préparation |
|
||||
| 18 | PKE | PKE | PKE | Poste d'entrée au PK |
|
||||
| 20 | ET | ET | TS | Station de transit |
|
||||
| 21 | CME | CME | ICS | Contrôle d'entrée au magasin |
|
||||
|
||||
## Station Capacity Semantics (GALILEO view)
|
||||
|
||||
Station capacity has a **different meaning** on PK and PS than on other stations — this trips up Gateway log analysis.
|
||||
|
||||
| Layer | Generic station (conveyor/TK) | PK and PS |
|
||||
|-------|-------------------------------|-----------|
|
||||
| Physical capacity | Containers that fit on the physical station | Containers that fit on the physical station |
|
||||
| Route capacity | Containers in transit on upstream conveyors | Containers in transit on upstream conveyors |
|
||||
| WMS capacity | Same as physical | **Physical + transit + every task whose destination is this station** |
|
||||
|
||||
Worked example (PK): 1 physical slot + 4 in transit on intermediate conveyors + all pending tasks targeting PK = 15 is the value that appears in the WMS capacity.
|
||||
|
||||
## Route configuration in EasyS (robotics)
|
||||
|
||||
In robotics installations, **every** movement between automated stations requires a route in EasyS. A single task (e.g. `PIE → Miniload`) can generate **N movements** (4 is typical) — the WMS creates one task, the routing table allows each hop.
|
||||
|
||||
> If no path exists, EasyWMS creates a **reject task** toward the configured reject station.
|
||||
|
||||
Route inventory: **Menu → Control → Itineraries between stations**.
|
||||
|
||||
EasyS route types (cross-reference with Manager table below):
|
||||
|
||||
| EasyS type | Use case |
|
||||
|------------|----------|
|
||||
| **Galileo** | Requires Gateway calls (physical hop) |
|
||||
| **Manual** | Operator action triggered by a WMS task |
|
||||
| **Virtual** | Instantaneous automatic movement (e.g. output → consolidation) |
|
||||
|
||||
**Reject routes** (in red) are special: they give the **task destination** (not the movement destination). Different `IdentError` reasons can target different reject destinations — see [IdentErrorType](https://msscc.mecalux.com/documentation/Development/master/ES/apis/easywms/Domain/IdentErrorType.md).
|
||||
|
||||
For the protocol layer and message exchange (Search / End / Event / station updates), see [GALILEO Integration](../architecture/galileo-integration.md). For bring-up and simulation, see [Galileo Simulation](../operations/galileo-simulation.md).
|
||||
|
||||
## Routes
|
||||
|
||||
A **route** defines the path between two stations. Route types:
|
||||
|
||||
- **Simple route**: Direct A → B with no intermediate stations. Known by both Easy WMS and TMS.
|
||||
- **Composed route**: A → B → C → ... → N, built from multiple simple routes. Known only by Easy WMS (TMS handles individual simple routes). Result: task = composed movement; movement = simple route.
|
||||
|
||||
Easy WMS generates tasks based on configured routes. Before generating a task, it checks:
|
||||
1. That a route exists between source and destination.
|
||||
2. That the route is **active** (all stations in route are not locked).
|
||||
|
||||
Exception: shipping full containers via dock — only checks that a route exists, not whether it's active.
|
||||
|
||||
If the shortest active route is blocked, Easy WMS immediately tries an alternative route.
|
||||
|
||||
**Route distance:** Can be configured in EasyS. Easy WMS prefers shortest path.
|
||||
|
||||
### Route Managers (Executors)
|
||||
|
||||
Each simple route requires a declared manager — the type of element that will execute tasks on that route:
|
||||
|
||||
| Manager | Executor |
|
||||
|---------|----------|
|
||||
| Galileo | Automatic element (conveyor, machine) |
|
||||
| Monorail | Monorail system |
|
||||
| RF | Operator with RFT (radio frequency terminal) |
|
||||
| Voice | Operator with voice terminal |
|
||||
| Virtual | Automatic — task auto-completes when container arrives at source station, no physical action |
|
||||
| PTL | Pick-to-Light system |
|
||||
| External | External system (AGV, vertical warehouse, ERP, etc.) |
|
||||
| APS3D Fleet Manager | APS3D cart system |
|
||||
|
||||
## Route Incidences
|
||||
|
||||
| Incidence | Description | Resolution |
|
||||
|-----------|-------------|------------|
|
||||
| Container without task at station | Container arrives at a station in an automatic warehouse when its task was cancelled | Manual intervention: reassign or send to staging |
|
||||
| Disabled route | A route has been disabled | Enable route or create alternative route |
|
||||
| Destination station loaded | Destination station has containers on it exceeding capacity | Wait or redirect |
|
||||
| Destination station in default | Destination station is down/faulted | Repair station, activate alternative route |
|
||||
| Destination/intermediate station locked | A station on the route is locked | Unlock station or activate alternative route |
|
||||
|
||||
## Dock & Stage Configuration (SmartUI)
|
||||
|
||||
Docks and stages are created in **EasyS** (or **Warehouse Designer**), not in SmartUI. SmartUI provides read/edit/action access.
|
||||
|
||||
**Dock/Stage attributes:** Code, abbreviation (used for PTL picking destination display), description, station type, warehouse, by-default for receipts/shipping, capacity, work mode (receipts/shipping/both), lock status.
|
||||
|
||||
**Actions available:**
|
||||
- Lock / Unlock
|
||||
- Set as default for receipts or shipping (removes previous default if set)
|
||||
- Set capacity (wizard)
|
||||
- Set work mode
|
||||
- Set abbreviation (for PTL display)
|
||||
- Print labels (format + copies)
|
||||
- Assign printer (report printer and/or label printer, or "Do not print")
|
||||
- Audit
|
||||
|
||||
**Work mode** values: Receipts, Shipping, Both.
|
||||
|
||||
## Interface
|
||||
|
||||
- **Stations configuration:** "Stations" view in the "Control" menu (PC)
|
||||
- **Routes between stations:** "Routes between stations" in the "Control" menu (PC)
|
||||
- **Docks and stages master:** "Docks and stages master" in the "Control" menu (PC)
|
||||
- **Station status (3D map):** Warehouse Map → click station → view capacity, occupation, work mode
|
||||
|
||||
## Common Errors
|
||||
|
||||
| Error | Cause | Solution |
|
||||
|-------|-------|----------|
|
||||
| No task generated for container | No active route from source to destination | Check route exists and all intermediate stations are unlocked |
|
||||
| Container stuck at MS with "With conflict" flag | Downstream route blocked (MS can't generate movement) | Identify and resolve the blocked station/route; system auto-recovers |
|
||||
| PIE rejecting all containers | Incorrect flag configuration or gauge mismatch | Verify PIE event flags, check container dimensions vs gauge arch tolerance |
|
||||
| Container sent to Lost & Found at ET | Two containers at same automatic ET location simultaneously | Check TMS event ordering, ensure only one container per automatic ET location |
|
||||
| MU not finding location | No putaway strategy active for container/item | Verify putaway strategy configuration; ensure route from MU to warehouse exists |
|
||||
|
||||
## Related
|
||||
|
||||
- [[location]] — Location types associated with each station (DockStage, buffer, conventional)
|
||||
- [[task]] — Every movement is a task; tasks decompose into simple route movements
|
||||
- [[warehouse-designer]] — Stations are created in EasyS/Warehouse Designer, transferred to SmartUI
|
||||
- [[picking]] — PK, MP, Workzone, Decision, PKE, TenseFlow, Consolidation all support picking
|
||||
- [[reception]] — Dock, Stage, PIE stations are central to receiving workflows
|
||||
- [[shipping]] — Dock, Stage, PS, Consolidation stations support outbound flow
|
||||
- [[putaway]] — PIE triggers location search; MU refines it closer to warehouse
|
||||
@@ -0,0 +1,326 @@
|
||||
---
|
||||
title: "Stock Adjustment"
|
||||
type: concept
|
||||
sources:
|
||||
- areas/inventory_management/stock_adjustment/stock_adjustment.md
|
||||
- areas/inventory_management/stock_adjustment/quantity_adjust.md
|
||||
- areas/inventory_management/stock_adjustment/udm_adjust.md
|
||||
- areas/inventory_management/stock_adjustment/al_adjust.md
|
||||
- areas/inventory_management/stock_adjustment/reasons.md
|
||||
- areas/inventory_management/stock_adjustment/stock_adjustment_RF.md
|
||||
- areas/inventory_management/stock_adjustment/stock_adjustment_SmartUI.md
|
||||
- areas/inventory_management/stock_adjustment/stock_adjustment_Workstation.md
|
||||
- areas/inventory_management/stock_adjustment/stock_adjustment_entity.md
|
||||
- areas/inventory_management/stock_adjustment/stock_adjustment_in_RFCount.md
|
||||
- areas/inventory_management/stock_adjustment/stock_adjustment_in_WorkStationCount.md
|
||||
- areas/inventory_management/stock_adjustment.md
|
||||
- areas/inventory_management/double_validation/activate.md
|
||||
- areas/inventory_management/double_validation/adjust_register.md
|
||||
- areas/inventory_management/double_validation/pending_adjust_actions.md
|
||||
- areas/inventory_management/double_validation.md
|
||||
- sources/archives/21_Validation_ajustements_stock.md
|
||||
related:
|
||||
- concepts/stock.md
|
||||
- concepts/count.md
|
||||
- concepts/location.md
|
||||
- concepts/container.md
|
||||
- concepts/product-item.md
|
||||
- concepts/quality-control.md
|
||||
last_compiled: "2026-04-17"
|
||||
---
|
||||
|
||||
# Stock Adjustment
|
||||
|
||||
## Overview
|
||||
|
||||
A **stock adjustment** is any manual modification to a stock record's quantity, unit of measure (UoM), or logistic attributes that corrects a discrepancy between the physical reality and the WMS records. Every adjustment requires a **reason** for traceability.
|
||||
|
||||
Adjustments can be made from three interfaces:
|
||||
- **RF terminal (RFT)** — field operators correcting detected errors
|
||||
- **SmartUI (PC web)** — manager-level adjustments from the web interface
|
||||
- **Workstation / picking conveyor** — adjustments at an automatic warehouse PK station
|
||||
|
||||
EasyWMS always notifies the ERP of stock changes via **STV** (stock variation) messages, unless the stock originates from a still-open reception (in which case the change is reflected in the interface but no STV is sent until reception closes).
|
||||
|
||||
A **Double Validation** option can hold adjustments in a **Pending** state, requiring a supervisor to approve or cancel them before any transaction or ERP message is generated.
|
||||
|
||||
---
|
||||
|
||||
## Types of Adjustment
|
||||
|
||||
### 1. Quantity Increase (`+`)
|
||||
Increases the quantity of a stock line in a container or location.
|
||||
|
||||
**Restrictions:**
|
||||
- Not allowed on ASN (pre-notified, not yet received) containers
|
||||
- Not allowed on client stock containers
|
||||
- Cannot exceed the "complete quantity" defined for the presentation
|
||||
|
||||
**Side effects on tasks:**
|
||||
- Putaway tasks for the stock → canceled (location search re-runs with new weight)
|
||||
- Picking/shipping tasks not in execution → canceled, stock unassigned, line re-released
|
||||
- Shipping tasks in execution → quantities adjusted in-flight
|
||||
- Replenishment assignments → checked and adjusted
|
||||
|
||||
### 2. Quantity Decrease (`−`)
|
||||
Decreases the quantity of a stock line in a container or location.
|
||||
|
||||
**Restrictions:**
|
||||
- Not allowed on ASN containers
|
||||
- Not allowed on client containers
|
||||
- When decreasing to 0: container removed or left empty depending on location config
|
||||
|
||||
**Side effects on tasks and assignments:**
|
||||
- Picking assignments (not in execution): canceled newest-first, lines re-released
|
||||
- Shipping assignments: canceled, line re-released
|
||||
- Replenishment source assignments: adjusted, tasks decremented/canceled
|
||||
- Stock reserves: priority given to highest-priority orders placed earliest
|
||||
|
||||
**Multi-reception stock:** When adjusted stock originates from multiple receptions, the operator must select which reception the adjustment applies to.
|
||||
|
||||
### 3. Location / Full Adjustment (Quantity + UoM + Logistic Attributes + Status)
|
||||
The most comprehensive adjustment type. Allows changing any field on a stock line:
|
||||
- Quantity (up or down)
|
||||
- Unit of measure
|
||||
- User status (assign, change, remove)
|
||||
- Logistic attributes (lot, expiry, serial, etc.)
|
||||
|
||||
Can also:
|
||||
- **Create** new stock lines
|
||||
- **Delete** existing stock lines
|
||||
|
||||
When deleting all stock from a container, the container is removed or left empty depending on location configuration.
|
||||
|
||||
Available from: RFT (`Utilities > Location adjustment`), SmartUI, Workstation.
|
||||
|
||||
### 4. Unit of Measure Adjustment (UoM)
|
||||
Changes the unit of measure of a stock line. EasyWMS treats this as a delete + recreate.
|
||||
|
||||
**Side effects:**
|
||||
- Shipping assignments requiring the old UoM → EasyWMS searches for substitute stock
|
||||
- Client stock with new UoM incompatible with order line → stock unassigned
|
||||
- Replenishment assignments requiring the old UoM → substitute stock searched
|
||||
|
||||
**Communications:** STV sent to ERP.
|
||||
|
||||
### 5. Logistic Attributes Adjustment (AL)
|
||||
Changes one or more logistic attributes of a stock line (lot, expiry date, serial number, etc.).
|
||||
|
||||
EasyWMS deletes the old stock record and recreates it with new attributes.
|
||||
|
||||
**Side effects:**
|
||||
- Shipping assignments requiring old attributes → substitute stock searched
|
||||
- Replenishment assignments requiring old attributes → substitute stock searched
|
||||
- Client stock with new attributes incompatible with order line → stock unassigned
|
||||
|
||||
**Communications:** STV sent to ERP.
|
||||
|
||||
---
|
||||
|
||||
## Adjustment Reasons
|
||||
|
||||
Every adjustment requires a **reason code** selected from the master. Reasons are configured in `Masters > Adjustment reasons`.
|
||||
|
||||
| Field | Description |
|
||||
|---|---|
|
||||
| Description | Human-readable label |
|
||||
| Sequence | Priority; some processes (PTL picking) auto-select the lowest-sequence reason |
|
||||
| Requires comment | Whether a free-text comment is mandatory |
|
||||
| ERP code | Code used by ERP-initiated adjustments |
|
||||
| Capture process | Which processes may use this reason |
|
||||
|
||||
**Capture processes** (only one reason allowed per order for Count and Presentation Breakage):
|
||||
|
||||
| Process | Description |
|
||||
|---|---|
|
||||
| Adjustment | Manual adjustments from any interface |
|
||||
| Count | Adjustments generated by counting processes |
|
||||
| Picking | Adjustments made during picking |
|
||||
| Scrap | Adjustments during scrap process |
|
||||
| Presentation breakage | When opening a presentation to pick a smaller UoM |
|
||||
|
||||
---
|
||||
|
||||
## Interface-Specific Details
|
||||
|
||||
### RF Terminal Adjustments
|
||||
|
||||
Available options from `RFT > Utilities`:
|
||||
- **Increase item** — quantity increase
|
||||
- **Decrease item** — quantity decrease
|
||||
- **Location adjustment** — full adjustment (qty + UoM + AL + status)
|
||||
- **Manual Movement** — move stock/container (see [manual-movements](../concepts/manual-movements.md))
|
||||
|
||||
RFT also supports:
|
||||
- **Adjust in picking location with partitions** — reading a partition label sets both location and item
|
||||
- **Adjustment during count** (in-count adjustments reported separately)
|
||||
|
||||
### SmartUI (Web) Adjustments
|
||||
|
||||
From `Warehouse > Stock` view, managers can:
|
||||
- Apply logistic attribute adjustments to multiple stock lines
|
||||
- Apply status changes (also covered under quality control)
|
||||
- View the adjustment history
|
||||
|
||||
### Workstation (Picking Conveyor) Adjustments
|
||||
|
||||
At the PK station (`Workstations > Picking > Others > Stock Adjustment`), operators can adjust containers currently at the conveyor. Supports full adjustment (qty + UoM + status + AL) and line create/delete.
|
||||
|
||||
Useful for correcting discrepancies discovered during picking or consolidation.
|
||||
|
||||
---
|
||||
|
||||
## Double Validation (Pending Adjustments)
|
||||
|
||||
When **double validation** is enabled for an item (via item's count profile), adjustments on that item's stock are placed in **Pending** status instead of being applied immediately.
|
||||
|
||||
In Pending status:
|
||||
- The stock change **is applied** to the warehouse inventory
|
||||
- The `STK.ADJ` transaction is **not** generated
|
||||
- The STV message to ERP is **not** sent
|
||||
|
||||
A manager must then approve or cancel via `Warehouse > Stock adjustments`:
|
||||
|
||||
### Validating a Pending Adjustment
|
||||
- Marks the change as confirmed
|
||||
- Generates `STK.ADJ` transaction
|
||||
- Sends STV to ERP
|
||||
- Status → **Confirmed**
|
||||
|
||||
### Canceling a Pending Adjustment
|
||||
- **Reverses** the stock change (re-generates deleted stock or removes created stock)
|
||||
- No transaction generated, no STV sent
|
||||
- Status → **Canceled**
|
||||
- If reversal requires moving stock to a different location → `STK.MOVE` transaction generated
|
||||
|
||||
> **Important:** Canceling an adjustment reverses the delta, not the exact original state. If other processes moved the stock between adjustment and cancellation, a wizard prompts for compatible stock selection.
|
||||
|
||||
---
|
||||
|
||||
## Transactions
|
||||
|
||||
| Transaction | Trigger |
|
||||
|---|---|
|
||||
| `STK.ADJ` | Stock quantity, UoM, or AL adjustment confirmed |
|
||||
| `STK.MOVE` | Generated when canceling a pending adjustment that restores stock to a different location |
|
||||
|
||||
---
|
||||
|
||||
## ERP Integration
|
||||
|
||||
**On adjustment (immediate):**
|
||||
- EasyWMS sends **STV** (stock variation) to ERP for each affected stock line
|
||||
|
||||
**Exception — open reception:**
|
||||
- If adjusted stock belongs to a still-open reception, changes are reflected in the WMS interface but **no STV is sent** until reception closes
|
||||
|
||||
**Double validation:**
|
||||
- STV is only sent when the pending adjustment is **validated** by a manager
|
||||
|
||||
---
|
||||
|
||||
## Business Rules
|
||||
|
||||
- Every adjustment (except physical count auto-adjustments) **requires a reason**.
|
||||
- Adjusting stock with active tasks triggers automatic task cancellation or decrement, then re-release of affected order lines.
|
||||
- Adjustment at quantity = 0 in a container: the container is **removed** or **left empty** depending on the location's "remove empty container" configuration.
|
||||
- ASN containers (pre-notified, not yet received) cannot be adjusted.
|
||||
- Client stock (already prepared/loaded for a shipping order) has special handling — it can be adjusted but incompatibility with the order line triggers unassignment.
|
||||
- For multi-reception stock, the operator selects which specific reception's stock is being adjusted.
|
||||
- Cutting stock (non-consolidating UoM) can only be adjusted in whole stretch quantities; partial cutting requires the cutting process.
|
||||
|
||||
---
|
||||
|
||||
## Configuration
|
||||
|
||||
| Parameter | Description |
|
||||
|---|---|
|
||||
| `MAX_NUM_LABELS_TO_READ` | Enable multi-GS1-128 label reading in adjustment flow (also governs receipts, counts) |
|
||||
| `UNLOAD_CREATE_PRODUCT_LOCATION` | Auto-create/update PDL when adjusting in partitioned picking location |
|
||||
| `REPLENISH_LEVEL_PERCENT_PRODUCT_LOCATION` | Replenishment level % for auto-created PDL |
|
||||
|
||||
Double validation is activated per item via its **count profile** (field: double validation flag in `inventory_management/double_validation/items/count_profile.md`).
|
||||
|
||||
### Count Profile — validation modes (WMS ≥ 2023-02-22)
|
||||
|
||||
A **Count Profile** (`Configuration → Count Profiles`) decides whether stock adjustments for an item go straight through or wait for supervisor approval.
|
||||
|
||||
| Mode | Effect |
|
||||
|---|---|
|
||||
| **Never** | No validation required — STV is sent immediately |
|
||||
| **Always** | Every adjustment is held as `Pending` |
|
||||
| **According to tolerance** | Held as `Pending` **only if** the adjustment exceeds the configured tolerance |
|
||||
|
||||
**Tolerance parameters:**
|
||||
|
||||
| Parameter | Description |
|
||||
|---|---|
|
||||
| Maximum positive percentage variance | % increase allowed without validation |
|
||||
| Maximum negative percentage variance | % decrease allowed without validation |
|
||||
| Maximum positive adjust | Absolute increase allowed without validation (base UoM) |
|
||||
| Maximum negative adjust | Absolute decrease allowed without validation (base UoM) |
|
||||
|
||||
> ℹ️ Count Profiles cannot yet be created via ITM — master data only in SmartUI.
|
||||
|
||||
Attach the profile to an item by editing the item and selecting its Count Profile.
|
||||
|
||||
### Validation in the stock-adjustments view
|
||||
|
||||
`Warehouse → Stock adjustments` → select a `Pending` line → **Validate** or **Cancel**.
|
||||
|
||||
- **Rights:** group `SuperAdmin` or `Administrateur` (Manager/Operator not allowed by default).
|
||||
- **Group rights do not disable validation.** Even a SuperAdmin creating the adjustment from RFT still triggers the SmartUI validation step if the item has a Count Profile requiring it.
|
||||
- Default view shows only `Pending` — enable the history filter to see validated/rejected past adjustments.
|
||||
- Row colours : **green** = validated / no profile / profile "Never" / below tolerance; **red** = rejected.
|
||||
|
||||
**Cancel behaviour:**
|
||||
- Negative variance → WMS proposes to restore the removed stock to its origin (or a chosen location)
|
||||
- Positive variance → WMS asks from which location to remove the surplus
|
||||
|
||||
### French UI labels reminder
|
||||
|
||||
- **Pending** — no transaction, no ERP communication (stock change *is already applied* in the WMS, only ERP sync is held)
|
||||
- **Validé** — STV sent to ERP
|
||||
- **Annulé** — stock delta reverted in WMS; no transaction, no ERP message
|
||||
|
||||
> ⚠️ Validation only gates the **ERP communication**. The physical stock delta is already reflected in the warehouse whatever the validation outcome.
|
||||
|
||||
---
|
||||
|
||||
## Interface
|
||||
|
||||
| Path | Equipment |
|
||||
|---|---|
|
||||
| `RFT > Utilities > Increase item` | RFT |
|
||||
| `RFT > Utilities > Decrease item` | RFT |
|
||||
| `RFT > Utilities > Location adjustment` | RFT |
|
||||
| `Workstations > Picking > Others > Stock Adjustment` | PC |
|
||||
| `Warehouse > Stock` (SmartUI — logistic attributes) | PC |
|
||||
| `Warehouse > Stock adjustments` (double validation review) | PC |
|
||||
| `Masters > Adjustment reasons` | PC |
|
||||
|
||||
---
|
||||
|
||||
## Common Errors
|
||||
|
||||
| Symptom | Cause | Solution |
|
||||
|---|---|---|
|
||||
| No adjustment reasons visible on RFT | No adjustment reasons configured for the "Adjustment" capture process | Add reasons in `Masters > Adjustment reasons` |
|
||||
| STV not sent to ERP after adjustment | Stock belongs to an open reception | Close the reception; STV will be sent at that point |
|
||||
| Adjustment applies but no `STK.ADJ` transaction | Double validation active for item; adjustment is Pending | Manager must validate in `Warehouse > Stock adjustments` |
|
||||
| Cannot adjust ASN container | Container is pre-notified, not yet received | Complete or cancel the reception first |
|
||||
| Cannot decrease below zero | System prevents negative stock | Verify if stock is in the expected location; run a count |
|
||||
| Pending adjustment cancel wizard shows no compatible stock | Stock has already been shipped or moved elsewhere | Manually create a compensating stock entry in a suitable location |
|
||||
|
||||
---
|
||||
|
||||
## Related
|
||||
|
||||
- [[stock]] — Adjustment modifies stock records; STV and STK.ADJ are core stock transactions
|
||||
- [[count]] — Counts generate adjustments; double validation applies to count-triggered adjustments too
|
||||
- [[quality-control]] — Quality locks affect picking/replenishment eligibility; separate from adjustments but share CST.STK vs STK.ADJ transactions
|
||||
- [[location]] — Adjustment behavior (empty container removed vs. kept) depends on location config
|
||||
- [[product-item]] — Count profile on item controls double validation activation
|
||||
- [[container]] — Adjustments to container stock trigger task/assignment re-evaluation
|
||||
- [[cutting-stock]] — Cutting stock adjustments follow indivisibility rules; label printing from location adjustment (source label only)
|
||||
- [[labels]] — Labels can be printed for cutting stock during location adjustment process
|
||||
@@ -0,0 +1,117 @@
|
||||
---
|
||||
title: "Stock Assignment"
|
||||
type: concept
|
||||
sources:
|
||||
- sources/archives/24_Process_assignation_stock.md
|
||||
related:
|
||||
- concepts/stock.md
|
||||
- concepts/order-outbound.md
|
||||
- concepts/picking.md
|
||||
- concepts/replenishment.md
|
||||
- concepts/kits.md
|
||||
- concepts/crossdocking.md
|
||||
- concepts/cutting-stock.md
|
||||
- concepts/task.md
|
||||
- modules/tenseflow.md
|
||||
last_compiled: "2026-04-17"
|
||||
---
|
||||
|
||||
# Stock Assignment
|
||||
|
||||
## Overview
|
||||
|
||||
**Stock assignment** is the engine that binds concrete stock to outbound work. Given an outbound order line (and its `OutboundOrderLineDetails`), it decides **which stock lines** will fulfil the demand and **what type of task** will be created to physically move them (picking, container shipping, replenishment, virtual picking).
|
||||
|
||||
Every line detail is assigned independently — a line can have several details either because the requested item is a **non-assembled kit** (one detail per component) or because **alternative items** have been configured (if the main item is short, the WMS adds an extra detail with the substitute item and zeroes the main item's quantity).
|
||||
|
||||
The assignment engine is a chain of workflows all prefixed `StockAssignProcess_*`. The main entry point is `StockAssignProcess_AssignOutboundLine_PR`, which loops over the line's details through `StockAssignProcess_AssignOutboundOrderLineDetails_PR`.
|
||||
|
||||
## Engine pipeline
|
||||
|
||||
### 1. Fetch and lock the detail
|
||||
|
||||
Workflow: `StockAssignProcess_GetLockAndUpdateDetail_PR`
|
||||
|
||||
Loads the outbound line detail, locks it for the assignment run, and reads the minimum data needed for stock search. To expose additional detail fields to downstream steps, extend the `Select` of the query in this workflow.
|
||||
|
||||
### 2. Search candidate stock
|
||||
|
||||
Workflow: `StockAssignProcess_GetAvailableStockForOutboundOrderLineDetails_PR`
|
||||
|
||||
Calls the query **`Stocks_AssignableForProductOutboundOrderLineDetailsAndStockAssignStrategy`**. Additional filters on assignable stock (e.g., custom-attribute filtering, reservations, supplier constraints) are added as extra `where` clauses on this query — once they are in place, SmartUI surfaces them under the **"Trace d'assignations de stock"** button for auditability.
|
||||
|
||||
### 3. Apply assignment strategy
|
||||
|
||||
Two branches:
|
||||
|
||||
- **Kits, manufacturing orders, TenseFlow** — the WMS prioritises stock already sitting in the dedicated consumption zone (assembly zone, production supply zone, TenseFlow supply zone) through `StockAssignProcess_CalculateByAssignmentManufacturingAndKits_PR`. This avoids pulling stock across zones when an in-zone alternative exists.
|
||||
- **Standard details** — applies the outbound priorities (preferred status, preferred UoM…) and then:
|
||||
- `Stocks_ApplyOutboundLogic_PR` — applies the shipping logic of the item (FIFO, FEFO, LIFO, custom).
|
||||
- `StockAssignProcess_CalculateEfficiencyMode_PR` — applies the efficiency mode (see [concepts/replenishment.md](replenishment.md#efficiency-modes) and the outbound efficiency settings on the shipping profile).
|
||||
|
||||
The candidate list is narrowed and finally validated by `StockAssignProcess_ValidateStockList_PR`.
|
||||
|
||||
### 4. Persist assignments and build tasks
|
||||
|
||||
Two sibling workflows:
|
||||
|
||||
- `StockAssignProcess_CreateAssignments_PR` — writes the assignment rows (visible in SmartUI under **Allocations de stock**).
|
||||
- `Outbound_StockAssignCreateOrderLineDetailsTasks_PR` — translates each assignment into a task of the appropriate type (see below).
|
||||
|
||||
## Assignment types
|
||||
|
||||
| Type | Description |
|
||||
|---|---|
|
||||
| **PickingLocations** | Classical picking task on a location flagged as picking. The stock is already at a pickable place. |
|
||||
| **ReplenishmentAssignment** | The candidate location permits replenishment but the on-hand quantity is insufficient. The engine creates a **picking task and a parallel replenishment task** — covers both static (PDL-driven) and dynamic replenishment scenarios. |
|
||||
| **ShippingContainer** | The full container (mono-reference) is needed and the location allows container shipping. A container-shipping task is created instead of a picking task. |
|
||||
| **PickingContainer** | Specific to **TenseFlow**. A `BufferReplenishment` task is created first, moving the container to the supply zone ; during virtual picking, virtual picking tasks are generated against the buffered stock. |
|
||||
|
||||
## Interactions with other features
|
||||
|
||||
### Kits
|
||||
|
||||
If **any component** of a non-assembled kit cannot be assigned, **no component is assigned** — the engine rolls back and leaves the line short so the operator does not start half-kits. The matching behaviour for assembled kits (ready-made component) is standard.
|
||||
|
||||
### Crossdocking
|
||||
|
||||
When the item allows crossdocking, an inbound expected to arrive shortly will block the engine from re-assigning the outbound line to existing stock — it will wait for the crossdocking candidate. Customers who do not want this behaviour comment out the crossdocking branch in the stock search query.
|
||||
|
||||
### Alternatives
|
||||
|
||||
When the main item cannot cover the line quantity, the engine inserts a new detail with the alternative item and sets the main item's remaining quantity to zero. The alternative detail goes through the same pipeline — it may itself fall back to another alternative if further shortage occurs.
|
||||
|
||||
## Customisation points
|
||||
|
||||
| Need | Workflow / query to touch |
|
||||
|---|---|
|
||||
| Expose more line-detail fields to the engine | Extend `Select` in `StockAssignProcess_GetLockAndUpdateDetail_PR` |
|
||||
| Filter candidate stock on a new criterion | Add `where` clauses in `Stocks_AssignableForProductOutboundOrderLineDetailsAndStockAssignStrategy` (visible in SmartUI "Trace d'assignations de stock") |
|
||||
| Generate **only picking tasks** (e.g., for waves — wave mode only consumes picking tasks) | Modify `StockAssignProcess_GetStockToAssignForStrategy_PR` ; if the WMS version has the assignment-merge feature, also modify `Outbound_CreatePickingLocationsTasks_PR` |
|
||||
| Disable crossdocking blocking | Comment out the crossdocking predicate in the stock search query |
|
||||
|
||||
## Observability
|
||||
|
||||
- **SmartUI → Allocations de stock** — shows which stock line is reserved for which outbound line detail, with the assignment type.
|
||||
- **"Trace d'assignations de stock"** button — exposes the extra filters added to `Stocks_AssignableForProductOutboundOrderLineDetailsAndStockAssignStrategy` so support can see why a candidate was rejected.
|
||||
|
||||
## Common issues
|
||||
|
||||
| Symptom | Likely cause |
|
||||
|---|---|
|
||||
| Outbound line stays in `StockFailure` despite visible stock | Filter on the assignment query (custom clause), preferred status rejecting everything, or logistic attribute mismatch |
|
||||
| Kit line assigned with some components but not all | Should not happen — rollback rule is absolute. Check if components were split across two details by an alternative cascade |
|
||||
| Expected replenishment-plus-picking not generated | Picking location does not actually permit replenishment, or all candidate reserves are locked |
|
||||
| Container shipping task created when picking was expected | Line quantity equals full container quantity **and** location allows container shipping — disable the container-shipping branch on the location if not desired |
|
||||
|
||||
## Related
|
||||
|
||||
- [[stock]] — the data model assignment writes against
|
||||
- [[order-outbound]] — outbound lines and their `OutboundOrderLineDetails` are the inputs of the engine
|
||||
- [[picking]] — most assignment outputs are consumed as picking tasks
|
||||
- [[replenishment]] — `ReplenishmentAssignment` type materialises the replenishment-plus-picking pairing
|
||||
- [[kits]] — kit handling special case (all-or-nothing rollback, dedicated assembly-zone preference)
|
||||
- [[crossdocking]] — assignment waits for inbound crossdocking candidates unless disabled
|
||||
- [[cutting-stock]] — cutting items use the same pipeline with cut-specific post-processing
|
||||
- [[task]] — tasks are the tangible output of each assignment
|
||||
- [[tenseflow]] — the PickingContainer assignment type is the TenseFlow-specific path
|
||||
@@ -0,0 +1,293 @@
|
||||
---
|
||||
title: "Stock"
|
||||
type: concept
|
||||
sources:
|
||||
- areas/inventory_management/views/view_stocks.md
|
||||
- areas/inventory_management/stock_adjustment/stock_adjustment.md
|
||||
- areas/inventory_management/stock_adjustment/reasons.md
|
||||
- areas/inventory_management/stock_adjustment/quantity_adjust.md
|
||||
- areas/inventory_management/stock_adjustment/udm_adjust.md
|
||||
- areas/inventory_management/stock_adjustment/al_adjust.md
|
||||
- areas/inventory_management/stock_adjustment/stock_adjustment_RF.md
|
||||
- areas/inventory_management/stock_adjustment/stock_adjustment_SmartUI.md
|
||||
- areas/inventory_management/stock_adjustment/stock_adjustment_Workstation.md
|
||||
- areas/inventory_management/stock_adjustment/stock_adjustment_entity.md
|
||||
- areas/inventory_management/stock/print_stock_label.md
|
||||
- areas/reports/grouped_stock/grouped_stock.md
|
||||
- areas/reports/grouped_stock/grouped_stock_item.md
|
||||
- areas/reports/grouped_stock/grouped_stock_date_lot.md
|
||||
- areas/reports/grouped_stock/grouped_stock_subwarehouse.md
|
||||
- sources/archives/24_Process_assignation_stock.md
|
||||
related:
|
||||
- concepts/container.md
|
||||
- concepts/location.md
|
||||
- concepts/product-item.md
|
||||
- concepts/reception.md
|
||||
- concepts/putaway.md
|
||||
- concepts/picking.md
|
||||
- concepts/shipping.md
|
||||
- concepts/count.md
|
||||
- concepts/stock-adjustment.md
|
||||
- concepts/stock-assignment.md
|
||||
- concepts/order-outbound.md
|
||||
- concepts/task.md
|
||||
- concepts/erp-interface.md
|
||||
last_compiled: "2026-04-17"
|
||||
---
|
||||
|
||||
# Stock
|
||||
|
||||
## Overview
|
||||
|
||||
A **stock record** (stock line) is the physical instance of an item in the warehouse at a specific moment — a quantity of a particular item, owned by a specific owner, in a specific location or container, with specific logistic attributes and status. It is distinct from the item master: the item defines what the product is; the stock defines how much of it exists, where, and in what state.
|
||||
|
||||
Stock is created when goods are received, consumed when goods are shipped, and transformed (split, merged, adjusted) throughout warehouse operations. The WMS maintains an exact, real-time view of all stock across every location and container in the warehouse. All WMS processes (putaway strategies, stock assignment for outbound orders, replenishment, counting) operate against stock records.
|
||||
|
||||
A single item in the warehouse can have many stock lines — one per unique combination of container, logistic attributes, and status. For example, the same SKU in three different lot numbers stored in two locations will produce at least 6 separate stock lines.
|
||||
|
||||
## Types
|
||||
|
||||
Stock is classified by its storage context and status:
|
||||
|
||||
### By storage context
|
||||
|
||||
- **Containerized stock**: stock inside a container (LPN). The container holds the stock and can be moved as a unit. The stock line references both the container and the location of the container.
|
||||
- **Loose stock**: stock directly in a location, not in a container. Common in conventional manual locations with picking dedicated partitions.
|
||||
- **Client stock**: stock that has been prepared (picked) for a specific outbound order, now in a client (outbound) container. Special rules apply — quantity, UoM, and logistic attributes cannot be adjusted like regular stock.
|
||||
- **ASN stock**: stock pre-notified by the ERP but not yet physically received. Located in the virtual ASN location. Cannot be adjusted.
|
||||
|
||||
### By status
|
||||
|
||||
Stock carries up to three parallel status dimensions:
|
||||
|
||||
| Status type | Description | Set by |
|
||||
|---|---|---|
|
||||
| **System status** | Internal WMS status (e.g., normal, reserved, assigned) | Automatic — driven by stock assignment and task creation |
|
||||
| **User status** | Quality or business-driven lock (e.g., "Quarantine", "Hold") | Manually by user, or via ERP STR message. Has optional end date. |
|
||||
| **Receiving status** | Quality control status set during reception | At reception, automatically based on receipt order configuration |
|
||||
|
||||
User status and receiving status are independent; both can exist simultaneously on the same stock line.
|
||||
|
||||
**User status** is modifiable at any time from SmartUI or via the RFT QUALITY menu, without limit. It is useful for marking defective or quarantined goods.
|
||||
|
||||
**Receiving status** is set only during reception (from the reception profile). It can only be removed (not re-applied) from PC or RFT. Removed status cannot be reinstated except through a new reception.
|
||||
|
||||
For each user or receiving status, the following actions can be **allowed or forbidden** on affected stock:
|
||||
- Picking (order preparation)
|
||||
- Replenishment
|
||||
- Inventory / counting
|
||||
- Reception
|
||||
- Internal consumption
|
||||
- Shipping (dispatch)
|
||||
- Collection
|
||||
- Movement (relocation)
|
||||
- Reservation
|
||||
|
||||
When a user status is added/changed/removed on a stock line, the **STC01** message is automatically generated and sent to the ERP.
|
||||
|
||||
**Next to expire** and **Expired** flags are computed fields. "Next to expire" marks stock approaching expiry even before the actual expiry date. "Expired" marks stock past its expiration date. Expired stock can still be shipped if the SOR line explicitly requests it.
|
||||
|
||||
## Stock record structure
|
||||
|
||||
Each stock line is identified by a unique combination of: **Item + Owner + Location (+ Container if containerized) + Logistic attributes + Status + UoM**.
|
||||
|
||||
> If any of these elements differs between two physical goods, a separate stock line is created. For example, the same article in two different lot numbers at the same location generates two stock lines. Two goods with different UoMs (e.g., 1 bottle vs 1 pack of 6 bottles) at the same location are also separate lines.
|
||||
|
||||
| Field | Description |
|
||||
|---|---|
|
||||
| **Item** | Item code |
|
||||
| **Owner** | Owner of this stock (for 3PL or multi-owner warehouses) |
|
||||
| **Warehouse** | Warehouse site (visible if 3PL module installed) |
|
||||
| **Quantity** | Amount in base UoM |
|
||||
| **UoM** | Base unit of measure |
|
||||
| **Short description** | Item short description |
|
||||
| **Location** | Physical or virtual location holding this stock |
|
||||
| **Container** | Container code (if containerized) |
|
||||
| **Container type** | Type of the container |
|
||||
| **Complete container** | Whether the container is marked as "complete" |
|
||||
| **Container locks** | Number of active locks on the container |
|
||||
| **Load** | Load code associated to this stock (for truck loading) |
|
||||
| **Delivery code** | Delivery associated to this stock (Multi-Carrier module) |
|
||||
| **Supplier** | Supplier code from the receipt |
|
||||
| **Theoretical weight** | Calculated weight based on item weight configuration |
|
||||
| **Status** | System status |
|
||||
| **User status** | User-set status (with end date and comment) |
|
||||
| **Receiving status** | Status from reception quality process (with end date) |
|
||||
| **Lot** | Lot number |
|
||||
| **Expiration date** | Date after which stock is unusable |
|
||||
| **Best-before date** | Date after which stock is suboptimal |
|
||||
| **Production date** | Date of manufacture |
|
||||
| **Days of life** | Remaining usable days |
|
||||
| **Quality** | Quality attribute value |
|
||||
| **Color** | Color attribute |
|
||||
| **Caliber** | Size/caliber attribute |
|
||||
| **Origin** | Origin attribute |
|
||||
| **Version** | Version attribute |
|
||||
| **Production method** | Production method attribute |
|
||||
| **Post-production treatment** | Post-production treatment attribute |
|
||||
|
||||
## Lifecycle
|
||||
|
||||
```
|
||||
[Reception] → Stock CREATED (in container or loose in location)
|
||||
↓
|
||||
[Putaway] → Stock LOCATED (moved to storage location)
|
||||
↓
|
||||
[Stock assignment] → Stock RESERVED or ASSIGNED (for outbound order)
|
||||
↓
|
||||
[Picking] → Stock PREPARED (in client container, staging area)
|
||||
↓
|
||||
[Consolidation/Loading] → Stock LOADED (on truck/dock)
|
||||
↓
|
||||
[Order close] → Stock CONSUMED (quantity decremented to 0; record removed)
|
||||
```
|
||||
|
||||
Stock can also be **adjusted** at any point (quantity, UoM, logistic attributes, status), **counted** (verified against physical reality), **consolidated** (merged), **defragmented** (moved to optimize space), and **locked** (user/receiving status changed).
|
||||
|
||||
Stock adjustments generate **STK.ADJ** transactions and trigger **STV** messages to the ERP.
|
||||
|
||||
## Business rules
|
||||
|
||||
- Stock is **never modified directly** by a user action other than through a defined process (reception, adjustment, shipping, etc.). The stock view allows adjustments, but each has constraints and requires a reason.
|
||||
- Stock in a **quality lock** (user status or receiving status that disallows shipping) is excluded from stock assignment for outbound orders, unless the SOR line explicitly requests that specific status.
|
||||
- **Reserve recalculation** occurs when stock is locked or adjusted: if a reserve is broken, priority is given to the highest-priority orders that reserved earliest.
|
||||
- Stock in **ASN** state (pre-notified) cannot be adjusted or decreased.
|
||||
- Adjustments to **client stock** (prepared for an order) are more restricted: only certain changes allowed; others require that the container is not in prepared state.
|
||||
- When stock is decreased to 0 in a container, the container is either deleted or left empty depending on the location's "Delete empty containers" configuration.
|
||||
- A stock line with tasks cannot be freely modified: existing tasks are adjusted or canceled, and lines are re-released for re-assignment.
|
||||
- **Multiple receptions**: when stock originates from multiple receipts consolidated at the same location/container, a decrease or adjustment must identify which receipt it applies to.
|
||||
|
||||
## Stock adjustment
|
||||
|
||||
Stock adjustments allow operators to correct discrepancies between the WMS record and physical reality.
|
||||
|
||||
### Types of adjustments
|
||||
|
||||
| Adjustment type | What changes | Interface |
|
||||
|---|---|---|
|
||||
| **Quantity increase** | Adds to existing stock quantity | PC / RFT ("Utilities → Increase item") |
|
||||
| **Quantity decrease** | Subtracts from existing stock quantity | PC / RFT ("Utilities → Decrease item") |
|
||||
| **Location adjustment** | Full edit: quantity + UoM + user status + logistic attributes; can create/delete lines | PC / RFT ("Utilities → Location adjustment") |
|
||||
| **Picking location adjustment** | In PDL with labeled partitions: quick adjustment by reading partition label; can create/change partition assignments | RFT |
|
||||
| **Picking conveyor adjustment** | Same as location adjustment but for containers at PK conveyors in auto warehouse | Workstation ("Workstation → Picking → Others → Stock Adjustment") |
|
||||
|
||||
### Rules for adjustments
|
||||
|
||||
- All adjustments require an **adjustment reason** (from the reasons master). One reason can cover multiple adjustments in a session.
|
||||
- When quantity is adjusted and stock has:
|
||||
- **Putaway tasks**: task is canceled so location search is recalculated with new weight/characteristics
|
||||
- **Picking/shipping tasks (not in execution)**: assignment canceled; line re-released
|
||||
- **Picking/shipping tasks (in execution)**: task quantities adjusted; line re-released for deficit
|
||||
- **Replenishment source assignments**: assignments adjusted; picking tasks at PDL adjusted or canceled
|
||||
- **Reserve priority**: on decrease, the most recently assigned reserves are preferentially canceled; oldest are preserved
|
||||
- Cutting stock adjustments can optionally trigger cutting stock label printing (if cutting profile has "Label source stock" active)
|
||||
|
||||
### Communications
|
||||
|
||||
- Adjustment generates: **STV** message (ERP notification of stock value change)
|
||||
- Transaction recorded: **STK.ADJ**
|
||||
|
||||
> **STV important note**: The quantity in the STV message is the **delta** (quantity that changed), not the remaining quantity in the warehouse. For example, if 10 units were deleted, STV sends -10, not the new total. The ERP must accumulate deltas or use SCR/WSC for a full stock image.
|
||||
|
||||
> **WSC / SCR**: To get the complete stock image, the ERP sends an **SCR** request and EasyWMS responds with a **WSC** file. This can be:
|
||||
> - Grouped by item (one line per item/owner/status)
|
||||
> - Detailed (with location and container)
|
||||
> - The WSC does NOT discriminate "available to sell" — use stock status filtering for that.
|
||||
> - Stock at 0 can optionally be included (configurable).
|
||||
> - Can be sent on-demand or on a scheduled basis (once/day or at intervals).
|
||||
|
||||
### Adjustment reasons
|
||||
|
||||
Reasons are configured in `Masters > Adjustment reasons`. Each reason can optionally require a comment. Reasons are referenced in audit trails and ERP communications.
|
||||
|
||||
### Double validation
|
||||
|
||||
EasyWMS supports a **double validation** mechanism for stock adjustments. When active, an adjustment stays in "Pending" status until a manager validates or cancels it.
|
||||
|
||||
- **Pending**: adjustment entered but not yet applied. No STK.ADJ transaction; no STV sent to ERP.
|
||||
- **Validated**: manager approves → adjustment is applied, transaction and STV generated.
|
||||
- **Cancelled**: manager rejects → stock is restored, no transaction or ERP notification.
|
||||
|
||||
Configuration (per item, in **inventory profile**):
|
||||
| Setting | Behavior |
|
||||
|---------|---------|
|
||||
| **Never** | No double validation — adjustments applied immediately |
|
||||
| **Always** | All adjustments require manager validation |
|
||||
| **By tolerance** | Requires validation only if delta exceeds a configured threshold (absolute value or %) |
|
||||
|
||||
Pending adjustments are visible in the Adjustments view with status "Pending". They do not affect stock available for picking.
|
||||
|
||||
## Stock status operations (from the Stocks view)
|
||||
|
||||
| Operation | Description | Visibility |
|
||||
|---|---|---|
|
||||
| **Audit** | View stock audit trail (all movements and changes) | Single record |
|
||||
| **Adjust** | Open adjustment dialog for this stock line | Single record |
|
||||
| **Status** | Change user status of this stock | Single record |
|
||||
| **Container** | Mark container as complete / lock / change location | Single record (containerized stock) |
|
||||
| **Relocate container** | Automatic relocation / to location / to aisle or level | Single or multiple records |
|
||||
| **Print container label** | Print LPN label for this stock's container | Single record |
|
||||
| **Delete** | Delete stock line (with adjustment reason) | Single record |
|
||||
| **New** | Create new stock line in a container/location | No records selected |
|
||||
| **Forward traceability lock** | Lock all downstream stock derived from this lot/reception | No records selected |
|
||||
| **Stock contrast** | Request WMS to send current stock snapshot to ERP (triggers WSC) | No records selected |
|
||||
| **Print list / Export list** | Print or export filtered stock lines | No records selected |
|
||||
|
||||
## Grouped stock reports
|
||||
|
||||
The grouped stock reports provide aggregate views of stock without the per-line detail of the Stock view:
|
||||
|
||||
| Report | Grouped by | Use case |
|
||||
|---|---|---|
|
||||
| **By item** | Item code | Total stock per SKU across warehouse |
|
||||
| **By date and lot** | Item + date + lot | Traceability and FEFO management |
|
||||
| **By presentation** | Item + presentation (UoM) | Commercial stock view |
|
||||
| **By presentation, date and lot** | Item + presentation + date + lot | Detailed expiry tracking |
|
||||
| **By sub-warehouse and zone** | Sub-warehouse + zone | Area-level stock overview |
|
||||
|
||||
## Parameters
|
||||
|
||||
| Parameter | Effect |
|
||||
|---|---|
|
||||
| `MAX_NUM_LABELS_TO_READ` | Enables multi-reference label reading during stock adjustment (also applies to reception and counts) |
|
||||
| `UNLOAD_CREATE_PRODUCT_LOCATION` | Auto-creates/updates picking dedicated location assignments during PDL adjustment |
|
||||
| `REPLENISH_LEVEL_PERCENT_PRODUCT_LOCATION` | Level threshold calculation for PDL replenishment triggered by adjustment |
|
||||
|
||||
## Interface
|
||||
|
||||
| Function | Hardware | Menu path |
|
||||
|---|---|---|
|
||||
| Stock lines view | PC | Inventory (or Warehouse) → Stock |
|
||||
| Quantity increase | RFT | Utilities → Increase item |
|
||||
| Quantity decrease | RFT | Utilities → Decrease item |
|
||||
| Location adjustment | RFT | Utilities → Location adjustment |
|
||||
| Picking conveyor adjustment | Workstation | Workstation → Picking → Others → Stock Adjustment |
|
||||
| Grouped stock reports | PC | Reports → Grouped stock |
|
||||
| Stock contrast (send WSC) | PC | From Stock view → Stock contrast button |
|
||||
|
||||
## Common errors
|
||||
|
||||
| Symptom | Cause | Solution |
|
||||
|---|---|---|
|
||||
| Cannot adjust ASN stock | Stock is in pre-notified container not yet received | Receive the container first via the reception process |
|
||||
| Cannot adjust client stock | Stock is prepared for a shipping order in a client container | Un-prepare the stock via shipping management, then adjust |
|
||||
| Adjustment fails — reason required | No adjustment reason selected | Create reasons in Masters; select one before adjusting |
|
||||
| Stock not visible in view | Stock in virtual location (ASN, Lost_Found) or filtered out | Remove filters; check virtual locations explicitly |
|
||||
| Stock in lock not assignable | User or receiving status prevents shipping | Release the lock (manually or via STR from ERP); or add required status to SOR line |
|
||||
| Quantity jumps after decrease | Other stock from the same item was consolidated | Separate stock lines if needed; use "From multiple receptions" selection |
|
||||
| STV not sent to ERP | Integration configuration issue | Check ERP integration settings; verify STV message is enabled |
|
||||
|
||||
## Related
|
||||
|
||||
- [[container]] — stock is either containerized (in an LPN) or loose; container locks and type affect stock eligibility
|
||||
- [[location]] — every stock record has a location; location logics (allow shipping, allow replenishment) determine eligibility
|
||||
- [[product-item]] — item defines the static attributes; stock is the physical quantity with runtime attributes
|
||||
- [[reception]] — stock is created during the reception process; receiving status can be set at receipt
|
||||
- [[picking]] — stock is assigned and picked for outbound orders; picking consumes stock quantity
|
||||
- [[shipping]] — shipping closes orders and removes stock from the warehouse
|
||||
- [[count]] — counts verify the accuracy of stock records; discrepancies trigger adjustments
|
||||
- [[stock-adjustment]] — detailed adjustment procedures (quantity, UoM, logistic attributes)
|
||||
- [[stock-assignment]] — the allocation engine that binds stock lines to outbound order line details (`StockAssignProcess_*` workflows, assignment types, customisation points)
|
||||
- [[order-outbound]] — stock assignment links specific stock lines to SOR lines; reserves and assignments
|
||||
- [[task]] — tasks move stock between locations; running tasks block certain stock adjustments
|
||||
- [[erp-interface]] — STV message reports stock changes; SCR/WSC for stock contrasts; STR for status locks
|
||||
@@ -0,0 +1,75 @@
|
||||
---
|
||||
title: "Supplier"
|
||||
type: concept
|
||||
sources:
|
||||
- areas/inventory_management/masters/suppliers.md
|
||||
- areas/inventory_management/masters/supplier_types.md
|
||||
- areas/receptions/reception_dock/supplier_container.md
|
||||
- areas/receptions/reception_dock/supplier_loose.md
|
||||
related:
|
||||
- concepts/reception.md
|
||||
- concepts/order-inbound.md
|
||||
- concepts/product-item.md
|
||||
- modules/owner-extensions.md
|
||||
- concepts/erp-interface.md
|
||||
last_compiled: "2026-04-10"
|
||||
---
|
||||
|
||||
# Supplier
|
||||
|
||||
## Overview
|
||||
|
||||
A **supplier** is a company or entity that supplies stock to the warehouse. Suppliers are referenced on receipt orders (inbound) and return orders (outbound). Every inbound flow — whether a standard delivery, ASN-based reception, or stock return — traces back to a supplier.
|
||||
|
||||
Suppliers are master data entities managed in WMS (or synced from ERP via SUP message). When the Owner Extensions module is active, each supplier must be assigned to an owner.
|
||||
|
||||
---
|
||||
|
||||
## Main Attributes
|
||||
|
||||
| Property | Description |
|
||||
|----------|-------------|
|
||||
| Name | Unique identifier |
|
||||
| Owner | Mandatory when Owner Extensions module is active; supplier is isolated to that owner's data scope |
|
||||
| Type | Supplier type (configurable category) |
|
||||
| Preferred carrier | Informational only; used for logistics reference |
|
||||
| Delivery terms | Standard delivery terms for this supplier's inbound shipments |
|
||||
| Verify items | If active, items from this supplier must be verified on first reception (eCommerce module) |
|
||||
| Source address / contact | Origin address and contact for inbound shipments |
|
||||
| Address for returns / contact | Return address and contact for supplier return orders |
|
||||
|
||||
---
|
||||
|
||||
## Use Cases
|
||||
|
||||
| Use Case | Description |
|
||||
|----------|-------------|
|
||||
| Inbound orders | Receipt orders must reference a supplier (the entity supplying the incoming stock) |
|
||||
| Receipts | Receipts optionally indicate the supplier of the received stock |
|
||||
| Returns | Return orders (supplier returns) reference the supplier receiving the returned stock |
|
||||
|
||||
---
|
||||
|
||||
## ERP Integration
|
||||
|
||||
| Message | Direction | Description |
|
||||
|---------|-----------|-------------|
|
||||
| SUP | ERP→WMS | Create/update supplier master data |
|
||||
|
||||
---
|
||||
|
||||
## Interface
|
||||
|
||||
| Path | Equipment | Description |
|
||||
|------|-----------|-------------|
|
||||
| `Masters > Suppliers` | PC | View and manage suppliers |
|
||||
|
||||
---
|
||||
|
||||
## Related
|
||||
|
||||
- [[reception]] — dock reception references the supplier; supplier container and loose stock reception modes exist
|
||||
- [[order-inbound]] — receipt orders (ROR) reference the supplying entity; returns indicate the supplier destination
|
||||
- [[product-item]] — items can be received only from suppliers linked via receipt orders
|
||||
- [[owner-extensions]] — when active, suppliers must be assigned to an owner; supplier code is prefixed with owner code
|
||||
- [[erp-interface]] — SUP message syncs supplier master from ERP
|
||||
@@ -0,0 +1,216 @@
|
||||
---
|
||||
title: "Task"
|
||||
type: concept
|
||||
sources:
|
||||
- areas/tasks/index.md
|
||||
- areas/tasks/tasks.md
|
||||
- areas/tasks/automatic_tasks.md
|
||||
- areas/tasks/movements.md
|
||||
- areas/tasks/semiautomatic_tasks.md
|
||||
- areas/tasks/automatic_tasks_manual_warehouse.md
|
||||
- areas/tasks/picking_tasks_manual_warehouse.md
|
||||
- areas/tasks/ERP/counts/cor.md
|
||||
related:
|
||||
- concepts/location.md
|
||||
- concepts/container.md
|
||||
- concepts/stock.md
|
||||
- concepts/putaway.md
|
||||
- concepts/picking.md
|
||||
- concepts/shipping.md
|
||||
- concepts/replenishment.md
|
||||
- concepts/count.md
|
||||
last_compiled: "2026-04-10"
|
||||
---
|
||||
|
||||
# Task
|
||||
|
||||
## Overview
|
||||
|
||||
A task is the fundamental unit of guided work in Easy WMS. It represents a physical movement to be performed within the warehouse: moving a container or loose stock from a source location/station to a destination location/station. Tasks are how the WMS communicates to operators (or automated systems) exactly what physical action to perform and in what order.
|
||||
|
||||
Tasks abstract the complexity of warehouse routing: the system handles compound routes, work zone restrictions, and equipment capabilities automatically. An operator on an RFT simply receives a task and executes it; they don't need to know which intermediate stations are involved. The same model applies to automatic warehouses, where tasks drive the AS/RS, AGVs, and conveyors.
|
||||
|
||||
Every significant warehouse process generates tasks: putaway, picking, shipping, replenishment, counts, crossdocking, kitting, defragmentation, and more. A task is always associated with a process type and a task type, which together define the exact operation required and which operators/equipment can execute it.
|
||||
|
||||
## Types
|
||||
|
||||
### Classification: Process type × Task type
|
||||
|
||||
Easy WMS distinguishes **process type** (the business process this task belongs to) from **task type** (the physical operation the operator/machine performs). The same task type (e.g., "Picking") can appear under different process types (e.g., Picking, Kitting, Replenishment, Dekitting).
|
||||
|
||||
| Process type | Task type | Description |
|
||||
|---|---|---|
|
||||
| **Putaway** | Putaway | Manual warehouse: deposit container or loose stock at storage location |
|
||||
| **Putaway** | Approach | Automatic warehouse (Pick & Pass): move containers with putaway tasks in P&P sub-warehouses |
|
||||
| **Putaway** | Movement | Extract empty containers to PS; extract non-empty containers to PS |
|
||||
| **Picking** | Picking | Direct picking: RF/voice terminal (manual) or at picking conveyor (automatic) |
|
||||
| **Picking** | Negative picking | Automatic warehouses only: negative pick at PK conveyor |
|
||||
| **Picking** | Approach | Automatic warehouse (Pick & Pass): move containers with picking tasks |
|
||||
| **Picking** | Cut | Cut-to-location: cut specified length from roll/coil; leave remainder at location |
|
||||
| **Picking** | CutSupply | Move roll/coil to cutting station for controlled cutting |
|
||||
| **Crossdocking** | Shipping | Move crossdocked stock to buffer location |
|
||||
| **Crossdocking** | Loading | Move crossdocked stock directly to dock |
|
||||
| **Crossdocking** | Putaway | Move crossdocked stock to warehouse storage location |
|
||||
| **Crossdocking** | Replenishment to buffer | Replenish tense flow buffer from crossdocked stock |
|
||||
| **Count** | Location count | Physical count of all stock in a location (manual warehouses) |
|
||||
| **Count** | Container count | Physical count of a container's contents (manual and automatic) |
|
||||
| **Count** | Item count | Physical count of a specific item across locations (manual and automatic) |
|
||||
| **Replenishment** | Container replenishment | Move container to picking dedicated location (PDL); also for empty container stacking |
|
||||
| **Replenishment** | Stock replenishment | Move loose stock to PDL |
|
||||
| **Replenishment** | Picking | Replenishment between sub-warehouses (picking task variant) |
|
||||
| **Replenishment** | Shipping | Replenishment between sub-warehouses (shipping task variant) |
|
||||
| **Shipping** | Shipping | Move container to buffer, consolidation station, or packaging location |
|
||||
| **Shipping** | Loading | Move container to dock for truck loading |
|
||||
| **Kitting** | Picking | Pick kit component stock for assembly |
|
||||
| **Kitting** | Shipping | Move container to kit assembly conveyor/station |
|
||||
| **Dekitting** | Picking | Pick a kit for disassembly |
|
||||
| **Dekitting** | Shipping | Move container to assembly station for disassembly |
|
||||
| **Movement** | Movement | Generic moves: container/stock relocation, stacker management, PK picking, cart distribution, container reallocation |
|
||||
| **Reject** | Reject | Container rejection to designated location |
|
||||
| **Defragmentation** | Movement | Move stock/containers to consolidate and optimize space |
|
||||
| **Defragmentation** | Shipping | Move defragmented stock toward shipping |
|
||||
| **Picking locations emptying** | Movement | Empty dynamic picking locations |
|
||||
| **Production** | Production | Manufacturing module: supply tasks for production lines |
|
||||
|
||||
### Automatic warehouse vs. manual warehouse tasks
|
||||
|
||||
In **manual warehouses**, tasks are executed by operators using RFTs, voice terminals, or workstations. The physical movement is performed by a human using forklifts or on foot.
|
||||
|
||||
In **automatic warehouses**, tasks are executed by automated systems (AS/RS, AGVs, conveyors). The object must always be a container (never loose stock directly, as stock needs a container to move through the automated system). Container tasks include precise X/Y coordinates within rack locations.
|
||||
|
||||
## Lifecycle
|
||||
|
||||
```
|
||||
[Process event occurs]
|
||||
↓
|
||||
Task CREATED (pending movement generation)
|
||||
↓
|
||||
PENDING — waiting for movement to be generated
|
||||
↓
|
||||
GENERATED — movement created, no operator/machine assigned yet
|
||||
↓
|
||||
IN PROCESS — currently being executed
|
||||
↓
|
||||
FINISHED — task completed successfully
|
||||
|
||||
(at any point from Generated or In Process)
|
||||
↓
|
||||
CANCELED — task stopped by user action
|
||||
```
|
||||
|
||||
### Status transitions
|
||||
|
||||
| Status | Description |
|
||||
|---|---|
|
||||
| **Pending** | Task created but movement not yet generated. System is calculating route or waiting for conditions. |
|
||||
| **Generated** | Movement(s) created and ready for execution. Appears in operator queues. |
|
||||
| **In Process** | Operator/equipment has started the task. Stock or container is being moved. |
|
||||
| **Finished** | Task completed. Stock/container is at destination location. |
|
||||
| **Canceled** | Task stopped. Container/stock remains where the operator reports leaving it. |
|
||||
|
||||
## Tasks and movements
|
||||
|
||||
The task defines **from where to where** (source station → destination station). The actual path may pass through multiple intermediate stations. Easy WMS decomposes the task into **movements** — each movement covers one segment (one station to the next).
|
||||
|
||||
Each segment has a configured **manager** (who/what executes it):
|
||||
- **RF**: human operator with radio frequency terminal
|
||||
- **Galileo** (or equivalent): automated system (AS/RS, conveyor controller)
|
||||
- **Voice**: voice-directed operator
|
||||
- **Workstation**: pick-to-light / workstation operator
|
||||
|
||||
**Example**: A task moves a container from Station A to Station B via C, D, and E:
|
||||
- A→C: Galileo (AS/RS)
|
||||
- C→D: RF (operator)
|
||||
- D→E: Galileo
|
||||
- E→B: RF (operator)
|
||||
|
||||
This creates 4 movements. Each completes before the next begins. The task is complete when the container reaches B.
|
||||
|
||||
**Movement statuses**: Pending → In Execution
|
||||
|
||||
Movement release (reset In Execution → Pending) is available for resolving incidents, especially in automatic warehouses.
|
||||
|
||||
## Business rules
|
||||
|
||||
- **Cannot manually complete** picking, counting, replenishment (stock replenishment type), kit assembly, or consolidation tasks. These must be completed through their respective processes.
|
||||
- **Task assignment** to user or equipment respects work zone restrictions — if the equipment cannot access the required work zone or aisle, the task will not be executable.
|
||||
- **Equipment incompatibility**: equipment that cannot transport the container type specified in the task is ineligible.
|
||||
- **Priority** drives task sequencing within a process queue (lower number = higher priority; values: Very Low, Low, Normal, High, Urgent).
|
||||
- **Task cancellation**: container stays where the operator reports it (user must indicate the location, including position for rack locations or depth for channel locations).
|
||||
- **Equipment release**: allowed only when task is in Generated state (processed quantity = 0, no containers moved).
|
||||
- **Count tasks** cannot have their equipment released.
|
||||
|
||||
## Configuration
|
||||
|
||||
### Task execution order
|
||||
|
||||
For manual warehouse RF execution, the priority ordering is:
|
||||
|
||||
**Automatic tasks (general):** Round number → Priority → Empty channel → Stackability → Distance (picking route) → Aisle side (right first) → Height (low to high) → Creation date
|
||||
|
||||
**Picking tasks:** Round number → Priority → Empty channel → Stackability → Picking route → Aisle side → Height → Creation date
|
||||
|
||||
**Shipping tasks:** Round number → Priority → Empty channel → Stackability → Distance → Creation date
|
||||
|
||||
**Wave picking:** Priority (of the wave/orders assigned) → Route path (right and left sides, low to high — no second rounds)
|
||||
|
||||
**Order picking (RF):** For task selection: assigned to user/equipment first → Priority → Release date. For task execution: same as automatic tasks.
|
||||
|
||||
### Semi-automatic mode
|
||||
|
||||
Allows tasks to be initiated by reading a container or location with stock, rather than receiving an explicit task assignment. Available task types: shipping, replenishment, putaway, movement, rejection.
|
||||
|
||||
**Flow:**
|
||||
1. Operator reads container or location with loose stock
|
||||
2. WMS shows summary of the best pending task (location, item if stock task, task type, destination, container to load)
|
||||
3. Operator clicks Start → task assigned → enters standard task flow
|
||||
4. WMS may propose additional tasks en route to optimize movements
|
||||
|
||||
Transactions are generated by the underlying process (not by semi-automatic mode itself).
|
||||
|
||||
**UI:** "Semi-automatic mode" from the "Tasks" menu (RFT).
|
||||
|
||||
## Interface
|
||||
|
||||
| Function | Hardware | Menu path |
|
||||
|---|---|---|
|
||||
| Tasks management and monitoring | PC | Warehouse → Tasks |
|
||||
| Movement management | PC | Control → Movements |
|
||||
| Automatic task distribution | PC | Warehouse → Tasks |
|
||||
| Semi-automatic mode | RFT | Tasks → Semi-automatic mode |
|
||||
| Manual task execution | RFT | Tasks → (process-specific options) |
|
||||
|
||||
### Available operations from Tasks view (PC)
|
||||
|
||||
| Operation | Restrictions |
|
||||
|---|---|
|
||||
| Manual task end | Not allowed for: picking, counting, stock replenishment, kit assembly, consolidation |
|
||||
| Task cancellation | Container stays at location reported by user |
|
||||
| Assign task to user | Respects work zone restrictions |
|
||||
| Assign task to equipment | Respects type/zone/aisle restrictions |
|
||||
| Unassign user | Only if task not yet in execution |
|
||||
| Unassign equipment | Only if task not yet in execution |
|
||||
| Priority change | Very Low / Low / Normal / High / Urgent |
|
||||
| Equipment release | Only if In Process with zero processed quantity and no moved containers; not for count tasks |
|
||||
|
||||
## Common errors
|
||||
|
||||
| Symptom | Cause | Solution |
|
||||
|---|---|---|
|
||||
| Task stuck in Generated | Assigned equipment offline or cannot access work zone | Release equipment; reassign to available equipment or leave unassigned |
|
||||
| Task created but not assignable | Equipment type incompatible with container type in task | Assign different equipment; check equipment container type configuration |
|
||||
| Task cannot be manually completed | Task type is picking, counting, stock replenishment, kit assembly, or consolidation | Complete via the appropriate process screen (picking station, count screen, etc.) |
|
||||
| Movement stuck In Execution | Automatic system malfunction or communication failure | Use Movement Release to reset to Pending; investigate automation incident |
|
||||
| Canceled task — container not found | Operator reported wrong location at cancellation | Run a count or check Last Known Location; resolve via Lost & Found if needed |
|
||||
| Task not generated after process trigger | Work zone restriction prevents any available equipment from executing | Check work zone configuration and available equipment |
|
||||
|
||||
## Related
|
||||
|
||||
- [[location]] — tasks always have a source and destination location; location type (rack, compact, etc.) determines coordinate precision in tasks
|
||||
- [[container]] — most automatic warehouse tasks move containers; task references container code and type
|
||||
- [[stock]] — stock tasks (picking, replenishment) specify item, quantity, and logistic attributes
|
||||
- [[putaway]] — putaway process generates Putaway tasks; PIE/MU/TRL/ALM stations trigger automatic task creation
|
||||
- [[picking]] — picking process generates Picking tasks; wave/group picking generates batches of tasks
|
||||
- [[shipping]] — shipping process generates Shipping and Loading tasks for consolidation and dock delivery
|
||||
- [[replenishment]] — replenishment generates Container replenishment or Stock replenishment tasks to PDLs
|
||||
- [[count]] — count processes generate Location count, Container count, or Item count tasks
|
||||
@@ -0,0 +1,75 @@
|
||||
---
|
||||
title: "Tense Flow (Flux tendu)"
|
||||
type: concept
|
||||
sources:
|
||||
- sources/archives/16_Tense_Flow.md
|
||||
related:
|
||||
- concepts/picking.md
|
||||
- concepts/replenishment.md
|
||||
- concepts/reception.md
|
||||
- concepts/order-outbound.md
|
||||
- concepts/stations.md
|
||||
last_compiled: "2026-04-17"
|
||||
---
|
||||
|
||||
# Tense Flow (Flux tendu)
|
||||
|
||||
## Overview
|
||||
|
||||
Tense Flow (FR : *flux tendu*) enables picking directly from one or more source supports — typically to prepare an outbound order **straight from reception** without first putting the stock away. The stock never hits a "normal" storage location : it is replenished to a dedicated buffer (FR : *poumon PREPARATION*) and consumed from there virtually.
|
||||
|
||||
The flow combines:
|
||||
1. A **tense-flow element** + an associated **buffer stage** (typically named `PREPARATION`).
|
||||
2. A **replenishment task** from the source location(s) to the buffer, triggered at order release.
|
||||
3. **Virtual picking** on the RF terminal — the operator scans the source support + the newly created client container and declares the picked quantity.
|
||||
4. A closing step that transfers the client containers to the shipping buffer.
|
||||
|
||||
## EasyS Configuration
|
||||
|
||||
1. Add a **Tense Flow** element + an associated **buffer** (e.g. `PREPARATION`).
|
||||
2. Associate the tense-flow element to an aisle (`Count`, `Load`, `Pick`, `Put`, `Unload`).
|
||||
3. Associate the tense-flow element to the buffer as a `Delivery Stage`.
|
||||
4. Configure the source locations (buffers and racks) with the option **"Allow origin of replenishement of tense flow"** set to true, otherwise the replenishment task generated at "Lancer en flux tendu" will find no candidate origins.
|
||||
|
||||
> ⚠️ Tense Flow always creates a replenishment task *towards the buffer first* — the source locations must be eligible as tense-flow origins, not only as normal-flow origins.
|
||||
|
||||
## Functional Flow
|
||||
|
||||
### 1. Launch in tense flow (SmartUI)
|
||||
|
||||
On a released outbound order, click **"Lancer en flux tendu"**. The order transitions to **"Assigned"** and a replenishment task to the `PREPARATION` buffer is created automatically.
|
||||
|
||||
### 2. Execute the replenishment (RFT)
|
||||
|
||||
RFT menu : **Tâches → Tâches à flux tendu**. Execute the task to move stock from the source location to the buffer.
|
||||
|
||||
### 3. Virtual picking (RFT)
|
||||
|
||||
RFT menu : **Ordres de sortie → Picking virtuel**.
|
||||
|
||||
1. Scan the **source support** (the pallet / container now at the buffer).
|
||||
2. Create a **new client container** — use the **"Générer SSCC"** button to assign a fresh SSCC.
|
||||
3. Scan the new container or the destination location.
|
||||
4. Enter the item + picked quantity (and any logistic attributes).
|
||||
|
||||
The system then offers to put the remaining stock away using the standard putaway strategies.
|
||||
|
||||
### 4. End of tense flow
|
||||
|
||||
Once all the client containers are filled, transfer them to the `EXPEDITION` buffer (the task is created automatically), then continue the order normally (truck loading, prepackaging, or transfer to the shipping dock).
|
||||
|
||||
## Common Errors
|
||||
|
||||
**"Lancer en flux tendu" creates no replenishment task** : either the outbound order is not released yet, or the source locations are not marked as `Allow origin of replenishement of tense flow`. Tense Flow replenishment uses a separate eligibility flag from the standard replenishment — enable it on the candidate origins.
|
||||
|
||||
**Virtual picking screen rejects the source scan** : the stock is not on the `PREPARATION` buffer yet — the replenishment task must be executed first.
|
||||
|
||||
**Remaining stock is not proposed for putaway** : the tense-flow element is not associated to the buffer as a `Delivery Stage` — re-check EasyS step 3.
|
||||
|
||||
## Related
|
||||
|
||||
- [Picking](picking.md) — tense flow is a special picking mode that bypasses storage
|
||||
- [Replenishment](replenishment.md) — tense flow generates an upstream replenishment task with its own eligibility flag
|
||||
- [Reception](reception.md) — tense flow is commonly used to ship freshly received stock without storing it first
|
||||
- [Outbound Order](order-outbound.md) — tense flow is triggered on a released outbound order
|
||||
- [Stations & Routes](stations.md) — tense-flow buffer and element are configured alongside standard stations
|
||||
@@ -0,0 +1,357 @@
|
||||
---
|
||||
title: "Transactions & Notification Events"
|
||||
type: concept
|
||||
sources:
|
||||
- areas/TransactionTypes.md
|
||||
- areas/notificationevents.md
|
||||
- areas/ERP.md
|
||||
- Cross-source knowledge from all batches
|
||||
- sources/archives/10_Transactions.md
|
||||
related:
|
||||
- concepts/erp-interface.md
|
||||
- concepts/stock.md
|
||||
- concepts/container.md
|
||||
- concepts/order-inbound.md
|
||||
- concepts/order-outbound.md
|
||||
- concepts/count.md
|
||||
- architecture/application-dictionary.md
|
||||
- architecture/security.md
|
||||
last_compiled: "2026-04-17"
|
||||
---
|
||||
|
||||
# Transactions & Notification Events
|
||||
|
||||
## Overview
|
||||
|
||||
Easy WMS records every significant state change as a **Transaction** — an immutable audit log entry. Transactions serve two purposes:
|
||||
1. **Audit trail**: Who did what, when, and on which objects
|
||||
2. **ERP integration trigger**: "Post-processed" transactions generate ERP messages (see [ERP Interface](erp-interface.md))
|
||||
|
||||
Separately, **Notification Events** are operational alerts that fire when conditions of interest occur (stock low, order failed, etc.). These drive the SCEM subscription system.
|
||||
|
||||
## Transaction Structure
|
||||
|
||||
Every transaction record contains:
|
||||
|
||||
| Field | Description |
|
||||
|-------|-------------|
|
||||
| TransactionCode | Type code (e.g., `CON.MOVE`, `STK.ADJ`) |
|
||||
| Version | Transaction version (e.g., `001`) |
|
||||
| Site | Warehouse where it occurred |
|
||||
| User | User who triggered it |
|
||||
| Timestamp | When it occurred |
|
||||
| Equipment | RF terminal or workstation IP (if applicable) |
|
||||
| ContainerCode | Container involved (if applicable) |
|
||||
| LocationCode | Source location |
|
||||
| LocationTo | Destination location (if applicable) |
|
||||
| TaskNumber | Task that caused it (if applicable) |
|
||||
| Document1/2 | Related document codes (order, container type, etc.) |
|
||||
| DocumentLine1 | Related line number |
|
||||
| Item, Quantity, UoM | Stock details (if applicable) |
|
||||
| LogAtt | Logistic attributes (if applicable) |
|
||||
|
||||
The **Post-processed** flag indicates whether the transaction triggers an ERP message.
|
||||
|
||||
### Regeneration from SmartUI
|
||||
|
||||
The Transactions view gives an end-to-end snapshot of every action done by the WMS. When a transaction is in status **`Envoyé`** (sent) or **`Génération d'erreur`** (generation error), SmartUI allows **regenerating the ERP file** directly — any modification made to the associated BOO code since the original send will be applied to the regenerated message. This is the standard lever used to recover from a post-processing hiccup or a fixed BOO without having to provoke the functional trigger a second time.
|
||||
|
||||
## Transaction Catalog
|
||||
|
||||
### Container Transactions (CON.*)
|
||||
|
||||
| Code | Post-processed | Description | ERP Message |
|
||||
|------|---------------|-------------|-------------|
|
||||
| `CON.ASN.001` | Yes | Container received for ASN order | ASO |
|
||||
| `CON.CNL.ASN` | Yes | Pre-notified container rejected/deleted | ASK |
|
||||
| `CON.COC` | No | Client container closed in Preparation Zone (MP) | — |
|
||||
| `CON.COS.001` | No | Container entered outbound conveyor (PS) | — |
|
||||
| `CON.CREATE` | No | Container created (manual, picking, or count) | — |
|
||||
| `CON.DELETE` | No | Container deleted (L&F or after count) | — |
|
||||
| `CON.LOAD` | No | Container loaded during truck loading | — |
|
||||
| `CON.LOCATE` | No | Container moved to storage via putaway task | — |
|
||||
| `CON.MOVE` | No | Container moved without putaway task (or from L&F) | — |
|
||||
| `CON.PIE` | Yes | Container entered via PIE station | ASO |
|
||||
| `CON.PRINT` | No | Packing list + client container label print trigger | — |
|
||||
| `CON.RECEP` | No | Container received in any reception process | — |
|
||||
| `CON.SEND.L&F` | No | Container sent to Lost & Found | — |
|
||||
| `CON.SHIPPED` | No | Container status changed to Shipped (order close) | — |
|
||||
| `CON.SHIPPING` | No | Shipping task confirmed for container | — |
|
||||
| `CON.VASDONE` | No | VAS template applied to container | — |
|
||||
|
||||
**Key data fields by transaction:**
|
||||
- `CON.ASN.001`: ContainerCode, LocationCode, Document1=ReceiptCode, Document2=ContainerTypeCode
|
||||
- `CON.MOVE`: ContainerCode, LocationCode (from), LocationTo, Equipment, TaskNumber, Document1=ShippingOrder
|
||||
- `CON.LOAD`: ContainerCode, LocationCode, LocationTo, Equipment, TaskNumber, Document1=ShippingOrder
|
||||
|
||||
---
|
||||
|
||||
### Count Transactions (COU.*)
|
||||
|
||||
| Code | Post-processed | Description | ERP Message |
|
||||
|------|---------------|-------------|-------------|
|
||||
| `COU.CLS` | No | Count closed | — |
|
||||
| `COU.CNL` | No | Count canceled | — |
|
||||
| `COU.CST` | No | Count status changed | — |
|
||||
| `COU.END` | Yes | Count closed/canceled (ERP-initiated count) | COF |
|
||||
|
||||
**Notes:**
|
||||
- `COU.END` only fires for counts created by ERP via COR message
|
||||
- `COU.CST` tracks all intermediate status changes (Disabled → Releasing → In Process)
|
||||
|
||||
---
|
||||
|
||||
### Stock Transactions (STK.*)
|
||||
|
||||
| Code | Post-processed | Description | ERP Message |
|
||||
|------|---------------|-------------|-------------|
|
||||
| `STK.ADJ` | Yes | Stock quantity adjusted (SmartUI/RF/workstation) | STV |
|
||||
| `STK.ASN` | No | Stock created in ASN container (pre-notified) | — |
|
||||
| `STK.CREATE` | No | Stock created manually or from ASN loose stock | — |
|
||||
| `STK.DELETE` | No | Stock line deleted (fused stock split) | — |
|
||||
| `STK.KIT.COMP` | No | Stock consumed for kit assembly | — |
|
||||
| `STK.KIT.UCOMP` | No | Stock obtained from kit disassembly | — |
|
||||
| `STK.KIT.MOUNT` | Yes | Kit assembled | KST |
|
||||
| `STK.KIT.UMOUNT` | Yes | Kit disassembled | UNK |
|
||||
| `STK.LOAD` | No | Stock moved during truck loading | — |
|
||||
| `STK.LOCATE` | No | Stock moved to storage via putaway task | — |
|
||||
| `STK.MOVE` | No | Stock moved manually (or inside container after CON.MOVE) | — |
|
||||
| `STK.PICKING` | No | Picking confirmed (stock moved from source to picking container) | — |
|
||||
| `STK.RECEP` | No | Stock created during reception (supplier/return/blind) | — |
|
||||
| `STK.REP.001` | Yes | Pre-notified loose stock replenished (auto warehouse) | SRO |
|
||||
| `STK.REP.CNL` | Yes | Pre-notified loose stock canceled (auto warehouse) | SRK |
|
||||
| `STK.SCR` | No | Stock scrapped from RF terminal | — |
|
||||
| `STK.SEND.L&F` | No | Stock sent to Lost & Found | — |
|
||||
| `STK.SHIPPED` | No | Stock shipped (container status = Shipped) | — |
|
||||
| `STK.SPLIT` | Yes | Stock UoM broken down (picking or workstation split) | STV (split) |
|
||||
| `STK.UMERGE` | No | Fused stock line split/un-merged | — |
|
||||
| `STK.VASDONE` | No | VAS template applied to stock | — |
|
||||
|
||||
**Key data fields by transaction:**
|
||||
- `STK.ADJ`: LocationCode, ContainerCode, Quantity, TaskNumber
|
||||
- `STK.PICKING`: ProductCode, UoMCode, Quantity, LogAtt, ContainerCode (source), ContainerTo (destination), LocationCode, LocationTo, TaskNumber, Document1=ShippingOrder
|
||||
- `STK.MOVE`: ContainerCode, LocationCode, LocationTo, Equipment, TaskNumber, Item, Quantity, UoM, StockStatus, LogAtt
|
||||
|
||||
---
|
||||
|
||||
### Stock Status Change Transaction
|
||||
|
||||
| Code | Post-processed | Description | ERP Message |
|
||||
|------|---------------|-------------|-------------|
|
||||
| `CST.STK` | Yes | Stock status changed (quality lock/unlock) | STC |
|
||||
|
||||
**Key data fields:**
|
||||
- LocationCode, ContainerCode, Quantity, StockLogisticAttributes
|
||||
- PreviousUserDefinedStatusCode, PreviousReceptionDefaultStatusCode
|
||||
|
||||
---
|
||||
|
||||
### Receipt Order Transactions (INO.*)
|
||||
|
||||
| Code | Post-processed | Description | ERP Message |
|
||||
|------|---------------|-------------|-------------|
|
||||
| `INO.CLS` | Yes | Receipt order manually or auto-closed | ROF |
|
||||
| `INO.CNL` | Yes | Receipt order canceled | ROF |
|
||||
| `INO.CST` | Yes | Receipt order status changed | ROC |
|
||||
|
||||
---
|
||||
|
||||
### Receipt Transactions (REC.*)
|
||||
|
||||
| Code | Post-processed | Description | ERP Message |
|
||||
|------|---------------|-------------|-------------|
|
||||
| `REC.CLS` | Yes | Receipt manually or auto-closed (with stock) | REF |
|
||||
| `REC.CNL` | No | Receipt manually canceled | — |
|
||||
| `REC.CST` | No | Receipt status changed (Pending → Receiving) | — |
|
||||
|
||||
---
|
||||
|
||||
### Shipping Order Transactions (OUT.*)
|
||||
|
||||
| Code | Post-processed | Description | ERP Message |
|
||||
|------|---------------|-------------|-------------|
|
||||
| `OUT.CLS` | Yes | Shipping order closed/force-closed | SOF |
|
||||
| `OUT.CNL` | Yes | Shipping order canceled | SOF |
|
||||
| `OUT.CST` | Yes | Shipping order status changed | SOC |
|
||||
| `OUT.GRP` | No | Shipping order added to group/fusion | — |
|
||||
| `OUT.UNG` | No | Shipping order removed from group/fusion | — |
|
||||
|
||||
---
|
||||
|
||||
### Route, Load Transactions (ROU.*, LOAD.*)
|
||||
|
||||
| Code | Post-processed | Description | ERP Message |
|
||||
|------|---------------|-------------|-------------|
|
||||
| `ROU.CLS` | No | Route closed | — |
|
||||
| `ROU.CNL` | No | Route canceled | — |
|
||||
| `ROU.CST` | No | Route status changed | — |
|
||||
| `LOAD.CLS` | Yes | Load closed (manual or auto on route close) | LOF |
|
||||
| `LOAD.CST` | No | Load paused or reactivated | — |
|
||||
|
||||
---
|
||||
|
||||
### Task Transactions (TSK.*)
|
||||
|
||||
| Code | Post-processed | Description |
|
||||
|------|---------------|-------------|
|
||||
| `TSK.CANCEL` | No | Task canceled from Tasks view |
|
||||
| `TSK.COU` | No | Count task finished |
|
||||
| `TSK.ERR.EXTRACT` | No | Shipping task execution error (auto warehouse) |
|
||||
| `TSK.ERR.PUTAWAY` | No | Putaway task execution error (auto warehouse) |
|
||||
| `TSK.LOC.001` | No | Putaway task confirmed |
|
||||
| `TSK.REP.001` | No | Replenishment task confirmed |
|
||||
| `TSK.SHIP` | No | Shipping task confirmed |
|
||||
|
||||
**Key data fields (automatic warehouse tasks):**
|
||||
- ContainerCode, LocationCode, Depth (channel depth), X, Y (position), TaskNumber
|
||||
|
||||
---
|
||||
|
||||
### Work Order Transactions (WOR.*)
|
||||
|
||||
| Code | Post-processed | Description | ERP Message |
|
||||
|------|---------------|-------------|-------------|
|
||||
| `WOR.CLS.001` | Yes | Work order (kits/manufacturing) closed | WOF |
|
||||
| `WOR.CNL.001` | Yes | Work order canceled | WOF |
|
||||
| `WOR.CST.001` | No | Work order status changed | — |
|
||||
|
||||
---
|
||||
|
||||
### Kit Order Transaction (KOU.*)
|
||||
|
||||
| Code | Post-processed | Description |
|
||||
|------|---------------|-------------|
|
||||
| `KOU.CLS.001` | No | Kit assembly shipping order closed |
|
||||
|
||||
---
|
||||
|
||||
### Container Lock Transactions (LCK.*, ULK.*)
|
||||
|
||||
| Code | Post-processed | Description |
|
||||
|------|---------------|-------------|
|
||||
| `LCK.CON.001` | No | Container lock applied |
|
||||
| `ULK.CON.001` | No | Container lock removed |
|
||||
|
||||
**Key data fields:**
|
||||
- ContainerCode, LocationCode, Document1=LockTypeCode, Document2=LockEndDate
|
||||
|
||||
---
|
||||
|
||||
### Packaging Transaction (DEL.*)
|
||||
|
||||
| Code | Post-processed | Description |
|
||||
|------|---------------|-------------|
|
||||
| `DEL.PACKAGE` | Yes | Shipping and deleting of Multi-Carrier package |
|
||||
|
||||
---
|
||||
|
||||
### Desk Order Transactions (DESK.*)
|
||||
|
||||
| Code | Post-processed | Description |
|
||||
|------|---------------|-------------|
|
||||
| `DESK.CLS` | No | Desk order closed |
|
||||
| `DESK.CNL` | No | Desk order canceled |
|
||||
| `DESK.CST` | No | Desk order status changed |
|
||||
|
||||
---
|
||||
|
||||
### Stock Contrast Transactions (SCR.*, STOCKSYNC.*)
|
||||
|
||||
| Code | Post-processed | Description | ERP Message |
|
||||
|------|---------------|-------------|-------------|
|
||||
| `SCR.DET` | No | Stock contrast detail (intermediate) | — |
|
||||
| `SCR.REQ` | Yes | Stock contrast requested | WSC |
|
||||
| `STOCKSYNC.ASKED` | Yes | Full warehouse stock sync to ERP requested | WSC |
|
||||
|
||||
---
|
||||
|
||||
### ABC Analysis Transaction (SAC.*)
|
||||
|
||||
| Code | Post-processed | Description |
|
||||
|------|---------------|-------------|
|
||||
| `SAC.SEND` | No | ABC analysis communicated to ERP |
|
||||
|
||||
---
|
||||
|
||||
## Notification Events
|
||||
|
||||
Notification Events are operational alerts that fire when specific conditions arise. They are distinct from transactions — they do not generate ERP messages, but they can trigger SCEM subscriptions (email, SMS, web alerts).
|
||||
|
||||
See [Supply Chain Event Management](../modules/supply-chain-event.md) for subscription management.
|
||||
|
||||
### Core WMS Notification Events
|
||||
|
||||
| Code | Severity | Notification Group | Description |
|
||||
|------|----------|--------------------|-------------|
|
||||
| `EasyWMS_AisleBlockInputs` | Information | Aisles control | An aisle has been disabled for inbounds |
|
||||
| `EasyWMS_AisleBlockOutputs` | Information | Aisles control | An aisle has been disabled for shipping |
|
||||
| `EasyWMS_AisleLock` | Information | Aisles control | An aisle has been locked |
|
||||
| `EasyWMS_ExtractionError` | Information | Aisles control, Locations management | Control system reports container extraction error |
|
||||
| `EasyWMS_ContainerRejected` | Information | Containers | Container has been rejected at a station |
|
||||
| `EasyWMS_EmptyPickingLocation` | Information | Replenishments | Dynamic picking locations must be emptied for order demand |
|
||||
| `EasyWMS_IncompleteAccountReserveInboundOrder` | Information | Receipt, Shipping orders | Inbound account reserve incomplete (stock failure at receipt) |
|
||||
| `EasyWMS_IncompleteAssignmentOutboundOrder` | Information | Shipping orders | Shipping order has a stock failure (cannot fully assign) |
|
||||
| `EasyWMS_IncompleteOutboundOrderReserveInboundOrder` | Information | Receipt, Shipping orders | Inbound reserve for shipping order incomplete |
|
||||
| `EasyWMS_OutboundLineModifiedWithInvalidPreparedStock` | Warning | Shipping orders | Prepared stock exceeds modified line quantity; must remove excess |
|
||||
| `EasyWMS_OutboundOrderClosedWithoutAllInboundReserves` | Information | Shipping orders | Order closed with unshipped inbound reserves |
|
||||
| `EasyWMS_OutboundOrderIssue` | Warning | Shipping orders | Issue created on shipping order |
|
||||
| `EasyWMS_OutboundOrderWithExcess` | Information | Shipping orders | Order shipped with excess stock on a line |
|
||||
| `EasyWMS_PutawayError` | Information | Locations management, Aisles control | Control system error on container deposit |
|
||||
| `EasyWMS_RelocateError` | Information | Relocation error | Cannot relocate container to extract deeper one |
|
||||
| `EasyWMS_StockExpired` | Warning | Stock | New expired stock detected in warehouse |
|
||||
| `EasyWMS_StockForwardTraceabilityLockCompleted` | Information | Stock | Traceability lock process completed for item |
|
||||
| `EasyWMS_StockForwardTraceabilityLockStarted` | Information | Stock | Traceability lock process started for item |
|
||||
| `EasyWMS_StockNextToExpire` | Warning | Stock | Stock approaching expiry (below days-of-life threshold) |
|
||||
| `EasyWMS_StockOfProductBelowMinimum` | Warning | Stock | Item stock quantity below configured minimum |
|
||||
| `EasyWMS_StockOfProductConversionBelowMinimum` | Warning | Stock | Item presentation (UoM) stock below minimum |
|
||||
| `EasyWMS_StockReserveNotAssignable` | Information | Locations management, Shipping orders | Reserved stock in non-assignable location |
|
||||
| `EasyWMS_PieScalesToleranceExeededForContainer` | Information | Containers | Container weight exceeds PIE scale tolerance |
|
||||
| `EasyWMS_InboundOrderReceived` | Information | Receipt | Receipt order fully received |
|
||||
| `EasyWMS_OutboundOrderShipped` | Information | Shipping orders | Shipping order fully shipped |
|
||||
| `EasyWMS_OutboundOrderPrepackagingCalculationFailed` | Warning | Shipping orders | Cannot calculate prepackaging for order |
|
||||
| `EasyWMS_MixingOfItemsNotAllowed` | Warning | Locations management, Stock | Items with mix restrictions have been mixed |
|
||||
|
||||
### Module Notification Events
|
||||
|
||||
Additional notification events are defined by optional modules:
|
||||
|
||||
| Module | Event Code | Description |
|
||||
|--------|-----------|-------------|
|
||||
| AGV | (module-specific) | AGV communication errors, task failures |
|
||||
| Pallet Shuttle | (module-specific) | Battery warnings, PS faults |
|
||||
| SCEM | `Notification_GNAImportError` | SCEM notification import failure |
|
||||
| Slotting | (module-specific) | New slotting recommendations available |
|
||||
| Billing | (module-specific) | Billing validation events |
|
||||
| DOM | (module-specific) | Orchestration failures, stock shortfalls |
|
||||
|
||||
### Subscription Scope
|
||||
|
||||
| Who Can Subscribe | Events Available |
|
||||
|------------------|-----------------|
|
||||
| SuperAdmin | All events in all warehouses |
|
||||
| Administrator | All events in assigned warehouses |
|
||||
| Manager | All events in assigned warehouses |
|
||||
| 3PL Client | Events scoped to their owner only |
|
||||
|
||||
## Common Errors
|
||||
|
||||
| Symptom | Cause | Solution |
|
||||
|---------|-------|---------|
|
||||
| ERP not receiving SOF after order close | Post-processor not running or stuck | Restart integration pool; check post-processing queue |
|
||||
| Duplicate STV messages | STK.ADJ fired multiple times | Check for duplicate adjustment operations; review concurrent requests |
|
||||
| Notification event not firing | SCEM subscription not configured | Set up subscription via Supply Chain Event Management admin |
|
||||
| Transaction not found in audit log | Query limited to wrong site/date | Expand search filters; transactions are per-site |
|
||||
| `EasyWMS_StockNextToExpire` not triggering | Days-of-life threshold not configured on item logistic profile | Set `DaysToAlert` on item's logistic profile |
|
||||
|
||||
## Related
|
||||
|
||||
- [ERP Interface](erp-interface.md) — ERP messages triggered by post-processed transactions
|
||||
- [Stock](stock.md) — STK.ADJ, STK.MOVE, STK.PICKING
|
||||
- [Container](container.md) — CON.* transactions
|
||||
- [Inbound Order](order-inbound.md) — INO.CST, INO.CLS → ROC, ROF
|
||||
- [Outbound Order](order-outbound.md) — OUT.CST, OUT.CLS → SOC, SOF
|
||||
- [Count](count.md) — COU.END → COF
|
||||
- [Quality Control](quality-control.md) — CST.STK → STC
|
||||
- [Application Dictionary](../architecture/application-dictionary.md) — Commands and Events that generate transactions
|
||||
- [Security](../architecture/security.md) — Transactions as audit trail
|
||||
- [Supply Chain Event Management](../modules/supply-chain-event.md) — Notification event subscriptions
|
||||
@@ -0,0 +1,307 @@
|
||||
---
|
||||
title: "Warehouse Designer (Web Configurator)"
|
||||
type: concept
|
||||
sources:
|
||||
- areas/layout/warehouse_designer/index.md
|
||||
- areas/layout/warehouse_designer/masters/container_type.md
|
||||
- areas/layout/warehouse_designer/masters/rack_type.md
|
||||
- areas/layout/warehouse_designer/masters/workstation.md
|
||||
- areas/layout/warehouse_designer/zones/storage_zones.md
|
||||
- areas/layout/warehouse_designer/zones/working_zones.md
|
||||
- areas/layout/warehouse_designer/zones/subwarehouses.md
|
||||
- areas/layout/warehouse_designer/equipments/equipment_type.md
|
||||
- areas/layout/warehouse_designer/equipments/equipment.md
|
||||
- areas/layout/warehouse_designer/equipments/equipment_restriction.md
|
||||
- areas/layout/warehouse_designer/equipments/equipment_restriction_by_quantity.md
|
||||
- areas/layout/warehouse_designer/equipments/equipment_restriction_by_incompatibility.md
|
||||
- areas/layout/warehouse_designer/layout/layout_shelves.md
|
||||
- areas/layout/warehouse_designer/layout/layout_docks.md
|
||||
- areas/layout/warehouse_designer/layout/layout_stages.md
|
||||
- areas/layout/warehouse_designer/general/wd_delete_action.md
|
||||
- areas/layout/warehouse_designer/activity/change_log.md
|
||||
- areas/layout/warehouse_designer/activity/transfer_list.md
|
||||
- areas/layout/warehouse_designer/activity/transfer_comparison.md
|
||||
- areas/inventory_management/warehouse_map/index.md
|
||||
related:
|
||||
- concepts/location.md
|
||||
- concepts/stations.md
|
||||
- concepts/container.md
|
||||
- concepts/putaway.md
|
||||
- concepts/replenishment.md
|
||||
last_compiled: "2026-04-10"
|
||||
---
|
||||
|
||||
# Warehouse Designer (Web Configurator)
|
||||
|
||||
## Overview
|
||||
|
||||
The **Web Warehouse Configurator** is a MAP (Mecalux Application Platform) application included in Easy WMS that allows warehouse configuration changes to be made **autonomously from the web browser**, without requiring access to the EasyS desktop configuration tool for all operations. It is the primary tool for managing the logical structure of the warehouse: zones, equipment, and physical layout elements.
|
||||
|
||||
This tool is complemented by the **Warehouse Map**, a separate view providing 3D and 2D visual representations of the warehouse with real-time status and stock location capabilities.
|
||||
|
||||
The key distinction: **EasyS** (a separate application) creates the physical station layout and routes; the **Web Configurator** manages masters, zones, equipment, and fine-tunes the layout from the browser. Changes made in EasyS are transferred to Easy WMS via **data transfer** (synchronization step).
|
||||
|
||||
## Masters
|
||||
|
||||
### Container Types
|
||||
|
||||
Defines the physical dimensions of containers used in the warehouse. The container type conditions shelf configuration, location compatibility, and equipment restrictions.
|
||||
|
||||
**Attributes:**
|
||||
|
||||
| Field | Description |
|
||||
|-------|-------------|
|
||||
| Code | Unique identifier |
|
||||
| Description | Free text |
|
||||
| Width (L) | Distance perpendicular to shelf entrance (mm) |
|
||||
| Height (H) | Maximum container height when empty (mm) |
|
||||
| Depth (D) | Distance parallel to shelf entrance (mm) |
|
||||
| Weight | Empty container weight |
|
||||
| Maximum weight | Weight limit for stock inside the container |
|
||||
| Gauge | Maximum deviation in width due to cargo slump (mm). Effective width = empty width + 2× gauge |
|
||||
| Shippable as package | Can be shipped directly in eCommerce process |
|
||||
|
||||
**Container relationships:** Each container type can declare interior container types — a maximum number of smaller containers that fit inside (nesting/palletizing rules). Relationships are added, deleted, or edited independently.
|
||||
|
||||
**Deletion:** Cannot delete a container type in use by any location. System shows total locations affected + breakdown by warehouse before allowing deletion.
|
||||
|
||||
### Rack Types
|
||||
|
||||
Defines how container types fit into locations (alveoli). Rack types set the **volumetric constraints** of a location: dimensions and maximum weight. They determine how many containers of each type fit at a location.
|
||||
|
||||
Note: In conventional manual locations, the maximum containers per type is configured directly per location, not via rack types.
|
||||
|
||||
**Attributes:**
|
||||
|
||||
| Field | Description |
|
||||
|-------|-------------|
|
||||
| Code | Unique identifier |
|
||||
| Width | Perpendicular to shelf entrance (mm) |
|
||||
| Height | Maximum height supported (includes container + stock) |
|
||||
| Depth | Parallel to shelf entrance (mm) |
|
||||
| Maximum weight | Maximum load weight the location can support |
|
||||
|
||||
Editing a rack type can generate incompatibility with existing locations already assigned to that rack type.
|
||||
|
||||
### Workstations
|
||||
|
||||
Automatic stations with picking role or PTL controller require an associated workstation.
|
||||
|
||||
**Attributes:** Code, description, serial number, computer type (RF / PC / Server).
|
||||
|
||||
## Zones
|
||||
|
||||
### Storage Zones
|
||||
|
||||
Logical groupings of locations, typically matching item rotation zones (e.g., ABC classification zones, temperature zones).
|
||||
|
||||
**Attributes:** Code, description, Temperature. Temperature-controlled stock is directed to matching temperature zones.
|
||||
|
||||
**Operations from Warehouse Map (2D view):** Change storage zone of selected locations by shelf and depth.
|
||||
|
||||
### Work Zones
|
||||
|
||||
Define which equipment types are allowed to work in a zone, which processes and task types they can execute, and relative process priorities within the zone.
|
||||
|
||||
**Attributes:** Code, description. Equipment type relationships define: which equipment types are allowed, which processes/tasks they can perform, and priority ordering.
|
||||
|
||||
Work zones enable fine-grained control of operator/equipment allocation: restricting forklifts to certain aisles, prioritizing replenishment over shipping in a zone, etc.
|
||||
|
||||
### Subwarehouses
|
||||
|
||||
Logical areas that group locations within the warehouse. Used for:
|
||||
- Putaway strategy configuration (alongside storage zones)
|
||||
- Pick-and-pass sub-warehouse routing (each sub-warehouse has a Workzone station)
|
||||
- Equipment zone assignment
|
||||
- ABC/sub-warehouse item classification
|
||||
|
||||
**Default subwarehouse:** Every configuration includes a default subwarehouse. It cannot be deleted or modified. All stations added without explicit sub-warehouse assignment use the default.
|
||||
|
||||
**Attributes:** Code, description, Temperature (same temperature-control logic as storage zones).
|
||||
|
||||
## Equipments
|
||||
|
||||
### Equipment Types
|
||||
|
||||
Define the physical characteristics and capabilities of a type of equipment. Easy WMS uses these to control where equipment can work and determine speed calculations.
|
||||
|
||||
**Attributes:**
|
||||
|
||||
| Field | Description |
|
||||
|-------|-------------|
|
||||
| Code | Unique identifier |
|
||||
| Maximum height | Maximum reachable height (mm) |
|
||||
| Maximum weight | Maximum load weight |
|
||||
| Maximum containers | Simultaneous container capacity |
|
||||
| Can move | Restrict to transportation only (vs tasks that require stock handling) |
|
||||
|
||||
Editing an equipment type can cause incompatibilities in location searches or order preparation due to changed constraints.
|
||||
|
||||
### Equipment
|
||||
|
||||
A physical means of transporting containers through the warehouse — operators with carts, forklifts, manual handling devices, etc. Equipment is associated with tasks: putaway, replenishment, picking, shipping.
|
||||
|
||||
**Attributes:**
|
||||
|
||||
| Field | Description |
|
||||
|-------|-------------|
|
||||
| Code | Unique identifier |
|
||||
| Equipment type | Parent type defining characteristics |
|
||||
| Equipment group | Group of related equipment (e.g., same aisle team) |
|
||||
| Empty containers | How the equipment handles empty containers (return to ECB, stack, etc.) |
|
||||
| Extra locations | One or more locations associated with the equipment, used for picking tasks |
|
||||
|
||||
**Station management from Equipment view:**
|
||||
- Assign aisles and processes to the equipment's stations
|
||||
- Set default reception/shipping station for this equipment
|
||||
|
||||
**Extra locations:** Default and non-editable storage mode = Stock. Used for picking tasks in manual warehouse where the operator collects stock into a cart location.
|
||||
|
||||
### Equipment Restrictions
|
||||
|
||||
Rules that limit equipment access to aisles or work areas. Two types:
|
||||
|
||||
**Quantity restrictions:** Define the maximum number of simultaneous equipment (of a type or total) allowed in a given zone or aisle. Prevents congestion.
|
||||
|
||||
**Incompatibility restrictions:** Define which equipment types cannot operate in the same zone simultaneously. Prevents conflicts (e.g., a wide forklift cannot operate in the same aisle as a narrow stock picker at the same time).
|
||||
|
||||
## Layout Management
|
||||
|
||||
### Shelves
|
||||
|
||||
Shelves (storage racks) can be modified from the Web Configurator by row or column as the minimum unit:
|
||||
|
||||
- **Clone rows/columns:** Add capacity without full EasyS round-trip
|
||||
- **Delete rows/columns:** Remove capacity
|
||||
- **Edit location properties:** Modify characteristics of all locations in a row or column simultaneously (rack type, storage mode, allowed container types, etc.)
|
||||
|
||||
Shelf stations themselves are created in EasyS; the Web Configurator allows post-creation adjustments.
|
||||
|
||||
### Docks
|
||||
|
||||
Dock configuration from the Web Configurator:
|
||||
|
||||
- **Default dock assignment:** Set a dock as the default for shipping orders (auto-assigned on order creation)
|
||||
- **Default dock for receipts:** Set a dock as the default for receipt orders
|
||||
- **Aisle/process assignment:** Assign which process (loading, unloading, counting, picking, location) is designated to each aisle of the dock
|
||||
- **Modification of aisle/process assignment:** Delete existing assignment first, then create a new one (direct modification not supported)
|
||||
|
||||
### Stages
|
||||
|
||||
Stage configuration from the Web Configurator:
|
||||
|
||||
- **Default stage for shipping/receipt orders:** Auto-assigned on order creation
|
||||
- **Aisle/process assignment:** Same as docks (loading, unloading, counting, picking, location)
|
||||
- **Extra locations:** Add or delete locations within the stage
|
||||
|
||||
## Change Log & Transfer Management
|
||||
|
||||
### Change Log
|
||||
|
||||
The Web Configurator tracks all configuration modifications with full audit trail. The change log enables:
|
||||
- Comparison between any two configuration transfers
|
||||
- Element-by-element difference display (created, modified, deleted)
|
||||
- PDF export of change comparison report
|
||||
|
||||
**Change log fields:** Export date, time, description, number of changes, user, origin (EasyS / Web Configurator / EasyAssistant).
|
||||
|
||||
### Transfer List (History)
|
||||
|
||||
Complete chronological history of all configuration transfers. Each transfer records: date/time, description, number of modifications, user, origin system.
|
||||
|
||||
**Operations:**
|
||||
- **Revert changes:** Restore a previous warehouse configuration state
|
||||
- **Filter/search:** By export date and description (up to 3 criteria)
|
||||
|
||||
### Transfer Comparison
|
||||
|
||||
Side-by-side comparison of two configuration transfers. Shows which elements were created, modified, or deleted between the two states. Direction matters: comparing left (newer) to right (older) shows "new" = exists in left but not in right.
|
||||
|
||||
**Export:** PDF report with all differences.
|
||||
|
||||
## Deletion Rules
|
||||
|
||||
The Web Configurator enforces safe deletion:
|
||||
|
||||
1. If the element to be deleted has relationships that can be disassociated without error → warning displayed, but deletion allowed
|
||||
2. If the element is in active use that cannot be cleanly unlinked (e.g., rack type assigned to active locations) → deletion blocked
|
||||
|
||||
Error message shows: total locations affected (broken down by warehouse) + configuration codes affected grouped by station.
|
||||
|
||||
Deletions take effect across all warehouses sharing the element if the element is shared organization-wide.
|
||||
|
||||
## Warehouse Map
|
||||
|
||||
A separate visualization tool in Easy WMS (distinct from the Web Configurator) providing real-time warehouse status and stock search.
|
||||
|
||||
### 3D View
|
||||
|
||||
Full three-dimensional representation of the warehouse:
|
||||
|
||||
| Feature | Description |
|
||||
|---------|-------------|
|
||||
| General status | Locked aisles (inbound/outbound/both), AS/RS PK work modes, PIE and route status, MP preparation zones |
|
||||
| Station status | Click any station: capacity, occupation %, work mode, etc. — varies by station type |
|
||||
| Shelf status | Click any shelf: free/occupied/blocked locations summary |
|
||||
| Container search | Find a specific container (LPN) by code |
|
||||
| Item search | Locate all stock of a specific item across the warehouse |
|
||||
| Location search | Find a specific location by code |
|
||||
| Storage zones visualization | Color-coded display of defined storage zones |
|
||||
| Working zones visualization | Color-coded display of working zones |
|
||||
| Saved viewpoints | Save and retrieve camera focus positions for frequently needed views |
|
||||
|
||||
### 2D View
|
||||
|
||||
Depth-by-depth rack view for detailed location inspection and bulk operations:
|
||||
|
||||
| Feature | Description |
|
||||
|---------|-------------|
|
||||
| Location status | Blocks, container count, picking dedicated locations, reservation indicators per alveolus |
|
||||
| Location label printing | Select range of locations → print labels (format + quantity) |
|
||||
| Work zone change | Change work zone for selected locations (shelf + depth) in bulk |
|
||||
| Storage zone change | Change storage zone for selected locations (shelf + depth) in bulk |
|
||||
| Container/stock creation | Register containers or loose stock at a selected location |
|
||||
| Container movement | Request extraction to PK, PS, or relocation |
|
||||
| Stock adjustment | Adjust loose stock at selected location and depth |
|
||||
| Search | Container / item / location search within the selected shelf and depth |
|
||||
|
||||
**Location status legend:**
|
||||
- Putaway error indicator
|
||||
- Extraction error indicator
|
||||
- Inbound reserve indicator
|
||||
- Outbound reserve indicator
|
||||
|
||||
### 2D Heat Map (Slotting module required)
|
||||
|
||||
Visual activity intensity map overlaid on 2D view:
|
||||
|
||||
- Filter by: areas displayed (locations/docks/stages), task types (all or specific), time range
|
||||
- Click location: see number and type of tasks for that period
|
||||
- Configurable color ranges: define custom thresholds and colors
|
||||
- Use case: identify hotspots, detect inefficiencies, plan product relocation, compare periods
|
||||
|
||||
## Interface
|
||||
|
||||
| View | Menu Path | Equipment |
|
||||
|------|-----------|-----------|
|
||||
| Web Warehouse Configurator | "Configuration" menu or direct MAP app URL | PC |
|
||||
| Warehouse Map (3D/2D) | "Warehouse" menu → Warehouse Map | PC |
|
||||
| Change Log | Within Web Configurator | PC |
|
||||
|
||||
## Common Errors
|
||||
|
||||
| Error | Cause | Solution |
|
||||
|-------|-------|----------|
|
||||
| Cannot delete container type | Container type in use by active locations | Identify and reassign affected locations first |
|
||||
| Cannot delete rack type | Rack type assigned to active locations | Remove rack type from all locations or delete locations first |
|
||||
| Equipment type edit causes search errors | Changed height/weight constraints conflict with existing putaway strategies | Review and update putaway strategies and work zones |
|
||||
| Transfer comparison shows unexpected deletions | Configuration reverted to older state | Verify transfer direction (left=newer vs right=older) before interpreting results |
|
||||
| Stage configuration changes not reflected in WMS | Changes made in EasyS not transferred | Run data transfer from EasyS to Easy WMS |
|
||||
|
||||
## Related
|
||||
|
||||
- [[location]] — Rack types and storage zones directly configure location properties
|
||||
- [[stations]] — Stations created in EasyS; Warehouse Designer edits docks/stages/shelves post-transfer
|
||||
- [[container]] — Container types define dimensions used in warehouse design
|
||||
- [[putaway]] — Storage zones and subwarehouses configure putaway strategy targeting
|
||||
- [[replenishment]] — Work zones define equipment eligibility for replenishment tasks
|
||||
@@ -0,0 +1,141 @@
|
||||
---
|
||||
title: "Weights"
|
||||
type: concept
|
||||
sources:
|
||||
- sources/archives/33_Les_poids.md
|
||||
related:
|
||||
- concepts/container.md
|
||||
- concepts/stock.md
|
||||
- concepts/product-item.md
|
||||
- concepts/reception.md
|
||||
- concepts/stations.md
|
||||
- modules/pie.md
|
||||
last_compiled: "2026-04-17"
|
||||
---
|
||||
|
||||
# Weights
|
||||
|
||||
## Overview
|
||||
|
||||
EasyWMS tracks **five distinct weight fields** on every container and **two weight fields** on every stock line. These fields support reception sanity checks, detection of shrinkage or miscounts at the PIE (weighing station), and variable-weight items (e.g., meat, fish, fruit sold by the kilo). Understanding which field is updated by which event — and which one the shipping / reporting logic reads — is critical: the French UI term *"poids théorique"* is ambiguous (it can mean either of two different fields).
|
||||
|
||||
## Container-level weight fields
|
||||
|
||||
Five fields, each with a distinct trigger and formula.
|
||||
|
||||
| WMS field | French label | Definition | Updated when |
|
||||
|---|---|---|---|
|
||||
| **Calculated Weight** | Poids calculé | Theoretical (item) weight − adjustments | On every stock movement (picking, transfer, adjustment) |
|
||||
| **Scale Weight** | Poids balance | Raw gross weight measured at the PIE | **PIE pass only** |
|
||||
| **Theoretical Weight** | Poids théorique (article) | (unit weight × quantity) + container tare weight | At creation and on every adjustment |
|
||||
| **Real Weight** | Poids réel | `max(Calculated Weight, Theoretical Scale Weight)` | Recomputed automatically when its inputs change |
|
||||
| **Theoretical Scale Weight** | Poids théorique (balance) | Scale Weight − adjustments | Set after PIE pass, then updated by adjustments |
|
||||
|
||||
> ⚠️ **Translation trap** — *"Poids théorique"* in French maps to **two different fields** in English:
|
||||
> - **Poids théorique (article)** = `Theoretical Weight` (from the item master)
|
||||
> - **Poids théorique (balance)** = `Theoretical Scale Weight` (from the scale, minus adjustments)
|
||||
>
|
||||
> Reports and customs must specify which one they are reading.
|
||||
|
||||
### Formulas
|
||||
|
||||
- **Theoretical Weight** = *unit weight on item master × quantity + container tare (from EasyS)*
|
||||
- **Scale Weight** = *gross weighed value at the PIE*
|
||||
- **Calculated Weight** = *Theoretical Weight − cumulative adjustments (picking, transfers…)*
|
||||
- **Theoretical Scale Weight** = *Scale Weight − cumulative adjustments*
|
||||
- **Real Weight** = `max(Calculated Weight, Theoretical Scale Weight)`
|
||||
|
||||
## Stock-line weight fields
|
||||
|
||||
On each stock line (`Stock` record):
|
||||
|
||||
| Field | Description |
|
||||
|---|---|
|
||||
| **Poids (kg)** | Real weight of the line |
|
||||
| **Poids théorique (kg)** | Theoretical weight of the line, from the item master |
|
||||
|
||||
Stock-line weights are updated on stock adjustments, weighings, and custom processes **only when the item is configured as variable-weight**. The PIE does **not** update stock-line weights directly — it updates container-level fields only.
|
||||
|
||||
## Behavior at stock creation
|
||||
|
||||
- **Real weight of the stock (line)** starts at `0` — it is only populated by a PIE pass, a `StockAdjust` on a variable-weight item, or a custom.
|
||||
- **Theoretical weight of the stock (line)** is computed immediately from the item master.
|
||||
- **Container tare weight** (pallet type weight in EasyS) is **frozen at container creation** — changing the tare in EasyS later **does not propagate** to existing containers. Only newly created containers pick up the new tare.
|
||||
|
||||
## PIE pass
|
||||
|
||||
When a container passes the PIE:
|
||||
|
||||
1. The scale measures the gross weight (goods + pallet).
|
||||
2. **Scale Weight** ← measured value.
|
||||
3. **Theoretical Scale Weight** ← Scale Weight − existing adjustments.
|
||||
4. **Real Weight** ← `max(Calculated Weight, Theoretical Scale Weight)`.
|
||||
|
||||
> The PIE writes only the container-level fields. Line-level weights are not updated by the PIE directly ; if needed, they are recomputed by the custom that drives the PIE reaction (e.g., proportional distribution).
|
||||
|
||||
## Variable-weight items
|
||||
|
||||
### Enabling variable weight
|
||||
|
||||
The **"Poids variable"** (Variable weight) option lives on the **logistic profile** of the item. When it is on, indicating the stock's weight at creation becomes **mandatory**.
|
||||
|
||||
### "Poids moyen" option (average weight from receipt)
|
||||
|
||||
When both of the following are true, the WMS pre-fills the stock weight at reception from the receipt line:
|
||||
|
||||
- **Poids moyen** is enabled on the logistic profile.
|
||||
- The expected stock-line weight is carried in the ROR's logistic attributes (e.g., `"Weight": 20`).
|
||||
|
||||
### StockAdjust limitation
|
||||
|
||||
`StockAdjust` **cannot modify the weight of a stock line** if the item is not configured as variable-weight on its logistic profile. Use a weighing flow or a custom if non-variable items need weight corrections.
|
||||
|
||||
## Weight check on stock entry
|
||||
|
||||
The workflow **`Stock_CheckWeightToCreateStockInContainer_UI`** runs at stock creation:
|
||||
|
||||
- Compares the entered weight against the item master.
|
||||
- If the item is variable-weight and the tolerance is exceeded, it **raises an RFT alert** (does not reject).
|
||||
|
||||
> Reject-rather-than-alert behaviour at the PIE requires a custom workflow — see *Open questions* below.
|
||||
|
||||
## Worked examples
|
||||
|
||||
### Fixed-weight item — 25 kg pallet, item weighs 250 kg
|
||||
|
||||
| Step | Calculated | Scale | Theoretical (item) | Real | Theoretical Scale |
|
||||
|---|---|---|---|---|---|
|
||||
| Creation | 275 | 0 | 275 | 275 | 0 |
|
||||
| PIE pass (280 kg) | 280 | 280 | 275 | 275 | 280 |
|
||||
|
||||
### Same item, new pallet created after EasyS tare change (25 → 24 kg)
|
||||
|
||||
| Step | Calculated | Scale | Theoretical (item) | Real | Theoretical Scale |
|
||||
|---|---|---|---|---|---|
|
||||
| New pallet | 280 | 280 | 274 | 274 | 280 |
|
||||
|
||||
> Theoretical (item) = 250 (goods) + 24 (new pallet tare). The older pallet keeps 275 — confirming that the container tare is frozen at creation.
|
||||
|
||||
### Variable-weight item — 10 bags, 100 kg declared
|
||||
|
||||
| Step | Calculated | Scale | Theoretical (item) | Real | Theoretical Scale |
|
||||
|---|---|---|---|---|---|
|
||||
| Creation | 124 | 0 | 124 | 124 | 0 |
|
||||
| PIE pass (107 kg) | 107 | 107 | 124 | 124 | 107 |
|
||||
|
||||
> The PIE updates Scale Weight and Calculated Weight at the container level. The stock lines inside the container are **not** auto-recalculated unless a custom redistributes the measured value.
|
||||
|
||||
## Open questions
|
||||
|
||||
| # | Subject | Status |
|
||||
|---|---|---|
|
||||
| 1 | A rejection workflow at PIE (same check as `Stock_CheckWeightToCreateStockInContainer_UI` but blocking rather than alerting) | To confirm |
|
||||
| 2 | The "pesé − tare théorique support (MCH)" formula produces an *estimated net weight* that is not persisted as a field | To investigate |
|
||||
|
||||
## Related
|
||||
|
||||
- [[container]] — all five weight fields are attributes of the container ; see "SSCC and weights" on the container page
|
||||
- [[stock]] — the two stock-line fields, updated for variable-weight items
|
||||
- [[product-item]] — logistic profile carries the variable-weight and "Poids moyen" flags, item master holds unit weight
|
||||
- [[reception]] — receipt line can carry the expected weight used by "Poids moyen" at stock creation
|
||||
- [[stations]] — PIE station type drives scale-weight capture
|
||||
Reference in New Issue
Block a user