9ce6ae37be
- Em dashes: 1712 remplaces par tirets simples (86 fichiers + _index.md, en-tete section Limagrain conserve) - Checklists: 24 '- [ ]' -> '- ☐' (3 pages operations, plus de todos Obsidian) - Ancres: 33 reparees (slugs GitHub + ancres HTML <a id> reconnues), 1 reciblee (manuel de reten) - related: tenseflow -> tense-flow, pie -> mechanical-elements, group.md retire (doublon shipping) - Registre: compteur global 122 -> 131 pages - Rapport racine _lint_report.md mis a jour (scan v2 + re-scan final: 0 anomalie) - Aucun fichier limagrain/ modifie (cloisonnement)
263 lines
11 KiB
Markdown
263 lines
11 KiB
Markdown
---
|
|
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
|