Files
mcp-wms-wiki/wiki/concepts/quality-control.md
T
2026-05-20 09:41:27 +02:00

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