màj wiki avec retour MES lot-5 AD
This commit is contained in:
@@ -0,0 +1,466 @@
|
||||
---
|
||||
title: "Entities Relationship Map"
|
||||
type: architecture
|
||||
sources:
|
||||
- Synthesized from all Batch 1-5 compiled wiki pages
|
||||
- areas/TransactionTypes.md
|
||||
- areas/ERP.md
|
||||
- All ERP message files
|
||||
- All concept and module pages
|
||||
related:
|
||||
- architecture/application-dictionary.md
|
||||
- architecture/overview.md
|
||||
- concepts/container.md
|
||||
- concepts/location.md
|
||||
- concepts/stock.md
|
||||
- concepts/product-item.md
|
||||
- concepts/task.md
|
||||
- concepts/order-inbound.md
|
||||
- concepts/order-outbound.md
|
||||
- concepts/erp-interface.md
|
||||
last_compiled: "2026-04-10"
|
||||
---
|
||||
|
||||
# Entities Relationship Map
|
||||
|
||||
## Overview
|
||||
|
||||
This page provides the complete entity relationship model of Easy WMS, synthesized from all documented behavior across Batches 1–5. It shows the core entities, their key attributes, and how they relate to one another — forming the mental model needed to interpret WMS data.
|
||||
|
||||
## Core Entity Hierarchy
|
||||
|
||||
```
|
||||
Organization
|
||||
└── Site (Warehouse)
|
||||
├── Zones (Storage / Working)
|
||||
│ └── Aisles
|
||||
│ └── Racks / Shelves
|
||||
│ └── Locations ──────────────── contains ──→ Containers
|
||||
│ └── Stock lines
|
||||
├── SubWarehouses
|
||||
│ └── Locations (scoped)
|
||||
├── Stations (Dock / PIE / PK / PS / MU / ME / etc.)
|
||||
│ └── Routes (Simple / Composed)
|
||||
│ └── Route Managers (Galileo / RF / Voice / PTL / External)
|
||||
├── Equipment (Forklifts / AGVs / Conveyors)
|
||||
└── Users
|
||||
└── Roles → Station Roles
|
||||
```
|
||||
|
||||
## Primary Entity Relationships
|
||||
|
||||
### Location → Container → Stock
|
||||
|
||||
The fundamental storage chain:
|
||||
|
||||
```
|
||||
Location (1) ←── stored_at ──── (N) Container
|
||||
Container (1) ←── held_in ──── (N) Stock
|
||||
Stock (N) ──── is_of_type ────→ (1) Item
|
||||
Stock (N) ──── owned_by ───────→ (1) Owner
|
||||
```
|
||||
|
||||
| Relationship | Cardinality | Notes |
|
||||
|-------------|-------------|-------|
|
||||
| Location → Container | 1:N | One location can hold multiple containers (stacking) |
|
||||
| Container → Stock | 1:N | One container can hold multiple stock lines |
|
||||
| Container → Container | 1:N | Stacked containers; outer container holds inner |
|
||||
| Stock → Item | N:1 | Multiple stock lines for same item (different lot/location) |
|
||||
| Stock → UoM | N:1 | Each stock line has one UoM |
|
||||
| Stock → Owner | N:1 | Stock belongs to one owner |
|
||||
|
||||
### Orders → Stock → Task
|
||||
|
||||
The fulfillment chain:
|
||||
|
||||
```
|
||||
ReceiptOrder (1) ←── fulfilled_via ──── (N) Receipt
|
||||
Receipt (1) ─────── creates ──────────→ (N) Container (received containers)
|
||||
Receipt (1) ─────── creates ──────────→ (N) Stock (loose stock)
|
||||
ReceiptOrder (1) ←── associated ──── (N) Container (ASN pre-notified)
|
||||
|
||||
ShippingOrder (1) ←── assigned_from ── (N) Stock (reservations)
|
||||
ShippingOrder (1) ─── generates ──────→ (N) Task (picking tasks)
|
||||
Task (1) ────────────── moves ─────────→ (N) Container
|
||||
Task (1) ────────────── moves ─────────→ (N) Stock
|
||||
Task (N) ─────────────── assigned_to ──→ (1) User / Equipment
|
||||
```
|
||||
|
||||
### Container Lifecycle Relationships
|
||||
|
||||
```
|
||||
Container ──── received_at ─────→ Location (Dock/PIE/PK/ASN)
|
||||
Container ──── moved_to ─────────→ Location (via putaway Task)
|
||||
Container ──── picked_from ──────→ Location (via picking Task)
|
||||
Container ──── shipped_to ───────→ Location (Dock/Stage)
|
||||
Container ──── loaded_on ────────→ Load (truck loading)
|
||||
Container ──── consolidated_into → Container (client container)
|
||||
Container ──── stacked_on ───────→ Container (stacking)
|
||||
Container ──── locked_by ────────→ ContainerLock (N lock types)
|
||||
```
|
||||
|
||||
## Detailed Entity Attribute Map
|
||||
|
||||
### Container
|
||||
|
||||
```
|
||||
Container {
|
||||
Code* → unique LPN identifier
|
||||
TypeCode → ContainerType (dimension, weight capacity)
|
||||
Weight → actual weight
|
||||
Status → Received / In Transit / Located / Shipped / Deleted
|
||||
LocationCode → current Location (nullable if in transit)
|
||||
OwnerCode → Owner (nullable)
|
||||
ReceiptCode → source Receipt (if received via reception)
|
||||
ASNCode → advance shipping notice code (if pre-notified)
|
||||
Locks[] → active ContainerLock list
|
||||
StackedOn → parent Container (if stacked)
|
||||
Divisions[] → cutting stock divisions (if applicable)
|
||||
}
|
||||
```
|
||||
|
||||
### Location
|
||||
|
||||
```
|
||||
Location {
|
||||
Code* → ASXY format (Aisle+Section+X+Y) or virtual code
|
||||
Type → Conventional/Compact/APS/APSFIFO/Dynamic/Pushback/
|
||||
Cantilever/Buffer/Dock/Equipment/Conveyor/Virtual
|
||||
ZoneCode → storage Zone
|
||||
SubWarehouseCode→ SubWarehouse (optional scoping)
|
||||
StorageMode → Single container / Multi-container / Loose stock
|
||||
StorageLogic → 12 flags (fifo/lifo/fefo/stack/mix items/mix lots/etc.)
|
||||
Locks[] → active LocationLock list (8 operation types)
|
||||
Capacity → weight/height/container count limits
|
||||
Features[] → compatibility flags for putaway restrictions
|
||||
IsPickingDedicated → boolean (PDL flag)
|
||||
VirtualType → ASN / LostFound / Mov (if virtual)
|
||||
}
|
||||
```
|
||||
|
||||
### Stock
|
||||
|
||||
```
|
||||
Stock {
|
||||
ItemCode* → Item
|
||||
UoMCode* → Unit of Measure
|
||||
Quantity* → current quantity
|
||||
ContainerCode → Container (nullable for loose stock)
|
||||
LocationCode → Location
|
||||
OwnerCode → Owner
|
||||
ReceivingStatus → quality status set at reception (clear/locked)
|
||||
UserStatus → quality status set by user/ERP (0..N statuses)
|
||||
LogisticAttributes {
|
||||
Lot, SerialNumber, ExpiryDate, BestBefore, ProductionDate,
|
||||
DaysOfLife, Color, Size, Version, Weight, ... (item-specific)
|
||||
}
|
||||
ReservedQty → quantity reserved for ShippingOrder lines
|
||||
AssignedQty → quantity assigned to Tasks
|
||||
}
|
||||
```
|
||||
|
||||
### Task
|
||||
|
||||
```
|
||||
Task {
|
||||
Number* → unique task ID
|
||||
ProcessType → Putaway/Picking/Shipping/Replenishment/Count/
|
||||
Movement/Consolidation/etc.
|
||||
Status → Pending/Generated/InProcess/Finished/Canceled
|
||||
ContainerCode → Container being moved (nullable)
|
||||
LocationFrom → source Location
|
||||
LocationTo → destination Location
|
||||
ShippingOrderCode → linked ShippingOrder (if picking/shipping task)
|
||||
CountCode → linked Count (if count task)
|
||||
AssignedUser → User assigned to execute
|
||||
AssignedEquipment → Equipment (AGV, forklift)
|
||||
Priority → Urgent/High/Normal/Low/VeryLow
|
||||
Route → Route/Station path for automatic warehouse
|
||||
Movements[] → decomposed Movement steps (compound routes)
|
||||
}
|
||||
```
|
||||
|
||||
### Receipt Order (Inbound Order)
|
||||
|
||||
```
|
||||
ReceiptOrder {
|
||||
Code* → unique order code
|
||||
Type → Supplier/Return/Transfer
|
||||
Status → Created/Waiting/Pending/Receiving/PartiallyReceived/
|
||||
Received/Closed/Canceled
|
||||
SupplierCode → Supplier (if type=Supplier)
|
||||
Lines[] {
|
||||
Number, ItemCode, ExpectedQty, ReceivedQty, FreeQty, UoMCode
|
||||
}
|
||||
Receipts[] → linked Receipts (physical receiving events)
|
||||
Containers[] → ASN pre-notified Containers
|
||||
ERP_Source → ROR message code (if from ERP)
|
||||
}
|
||||
```
|
||||
|
||||
### Shipping Order (Outbound Order)
|
||||
|
||||
```
|
||||
ShippingOrder {
|
||||
Code* → unique order code
|
||||
Type → Customer/Return/Transfer/DirectTransfer/
|
||||
Replenishment/Kit/Desk/Work
|
||||
Status → Created/Released/InPreparation/StockFailure/
|
||||
Paused/Prepared/Closed/Canceled
|
||||
Priority → Urgent/High/Normal/Low/VeryLow
|
||||
AccountCode → Account (delivery destination)
|
||||
DockCode → assigned dock (optional)
|
||||
RouteCode → Route assignment (optional)
|
||||
GroupCode → wave/group (optional)
|
||||
Lines[] {
|
||||
Number, ItemCode, ContainerCode, OrderedQty, PreparedQty,
|
||||
ShippedQty, UoMCode, LogisticAttributes, MaxLots,
|
||||
Flags: Critical/Required/Excess/Substitutes
|
||||
}
|
||||
Prepackaging → prepackaging config (SOR02 only)
|
||||
VASCode → VAS template reference (optional)
|
||||
ERP_Source → SOR message code
|
||||
}
|
||||
```
|
||||
|
||||
### Count
|
||||
|
||||
```
|
||||
Count {
|
||||
Code* → unique count code
|
||||
Type → Location/Item/Container
|
||||
Status → Disabled/Releasing/InProcess/Closed/Canceled
|
||||
Priority → count priority
|
||||
Lines[] {
|
||||
Number, Scope: {ItemCode/ContainerCode/LocationFrom-To/Aisle},
|
||||
IsInformed, IsBlind
|
||||
}
|
||||
Tasks[] → count Tasks generated
|
||||
ERP_Source → COR message code (if ERP-initiated)
|
||||
}
|
||||
```
|
||||
|
||||
## Master Data Entities
|
||||
|
||||
```
|
||||
Item {
|
||||
Code*, OwnerCode, Description, ShortDescription
|
||||
TypeCode → ItemType
|
||||
FamilyCode → ItemFamily
|
||||
ABCClass → A/B/C classification
|
||||
Profiles: LogisticProfile, ReceptionProfile, PutawayProfile,
|
||||
ShippingProfile, CuttingProfile
|
||||
UoMBase, Conversions[], Aliases[]
|
||||
LogisticAttributes: {lot, serial, expiry, bestBefore, days_of_life,
|
||||
production, color, size, version, quality, weight}
|
||||
MinQty, MaxQty (per SubWarehouse via ItemClassification)
|
||||
IsKit, IsSubstitute, IsCuttingStock
|
||||
}
|
||||
|
||||
Owner {
|
||||
Code*, Description
|
||||
(with Owner Extensions: isolated master data scope)
|
||||
}
|
||||
|
||||
Supplier {
|
||||
Code*, Description, OwnerCode
|
||||
}
|
||||
|
||||
Account {
|
||||
Code*, Description, OwnerCode, AccountType
|
||||
MixingRules → item/lot mixing restrictions
|
||||
}
|
||||
|
||||
Carrier {
|
||||
Code*, Description
|
||||
Services[] → carrier service levels
|
||||
(with Multi-Carrier: extended delivery configuration)
|
||||
}
|
||||
```
|
||||
|
||||
## Operational Entities
|
||||
|
||||
### Routes and Loads
|
||||
|
||||
```
|
||||
Route {
|
||||
Code*, Description, CarrierCode
|
||||
DockCode → departure dock
|
||||
DepartureTime
|
||||
Status → Open/Closed/Canceled
|
||||
Loads[] → truck Loads
|
||||
ShippingOrders[] → assigned orders
|
||||
}
|
||||
|
||||
Load {
|
||||
Code*, RouteCode
|
||||
Status → Open/InLoading/Closed
|
||||
Seal → seal number
|
||||
Containers[] → loaded containers
|
||||
Stocks[] → loaded loose stock
|
||||
}
|
||||
```
|
||||
|
||||
### Putaway and Replenishment
|
||||
|
||||
```
|
||||
PutawayStrategy {
|
||||
Criteria[] → filter rules (item type, family, ABC, weight, etc.)
|
||||
LocationRules[] → destination preference rules
|
||||
AisleBalancing → boolean
|
||||
ChannelFilling → boolean (prefer filling partial channels)
|
||||
}
|
||||
|
||||
PDL (PickingDedicatedLocation) {
|
||||
LocationCode, ItemCode, UoMCode
|
||||
MinQty, MaxQty, ReplenishQty
|
||||
PartitionType → fixed/flexible
|
||||
EfficiencyMode → efficient/complete/none
|
||||
}
|
||||
```
|
||||
|
||||
### Consolidation and Defragmentation
|
||||
|
||||
```
|
||||
ConsolidationProcess {
|
||||
Code*, Definition, Criteria
|
||||
AllowMixing → boolean
|
||||
DestinationStation
|
||||
Status → Standby/Released/Paused/Canceled
|
||||
Orders[] → consolidation orders
|
||||
}
|
||||
|
||||
DefragmentationPlanner {
|
||||
Type → Rotation/Shipping
|
||||
Schedule, Duration, Frequency
|
||||
Status → Active/Inactive
|
||||
}
|
||||
```
|
||||
|
||||
## Module-Specific Entity Extensions
|
||||
|
||||
### AGV
|
||||
|
||||
```
|
||||
AGVOrder {
|
||||
ContainerCode, LoadType (0=Container/1=PalletShuttle)
|
||||
PhaseCode → communication phase (00/03/04/06/08/10/255)
|
||||
OriginLocation, DestinationLocation
|
||||
ErrorCode, ErrorDescription
|
||||
}
|
||||
```
|
||||
|
||||
### Multi-Carrier
|
||||
|
||||
```
|
||||
Delivery {
|
||||
CarrierCode, ConsigneeCode
|
||||
Status → Pending/Confirmed/Shipped/Delivered
|
||||
TrackingNumber
|
||||
Packages[]
|
||||
ShippingOrderCode
|
||||
}
|
||||
```
|
||||
|
||||
### 3PL Billing
|
||||
|
||||
```
|
||||
BillingContract {
|
||||
OwnerCode, Description
|
||||
Rules[] → BillingRule
|
||||
Planners[] → BillingPlanner
|
||||
}
|
||||
|
||||
BillingRule {
|
||||
Type → Standard/Custom
|
||||
ValuationFields[], TieredPricing[]
|
||||
}
|
||||
```
|
||||
|
||||
### DOM
|
||||
|
||||
```
|
||||
DOMNode {
|
||||
Code*, Type → POI/POF/Store
|
||||
RegionCode
|
||||
StockLevels → Organization/Node/Line
|
||||
}
|
||||
|
||||
DOMOrder {
|
||||
Code*, Type → Purchase/Sales/Replenishment
|
||||
SourceNode, DestinationNode
|
||||
OrchestrationStage → Region/Carrier/Stock/Capacity/Strategy
|
||||
}
|
||||
```
|
||||
|
||||
## Key Referential Constraints
|
||||
|
||||
| Constraint | Description |
|
||||
|-----------|-------------|
|
||||
| Item cannot be deleted with active stock | Item delete requires zero stock across all locations |
|
||||
| Location cannot be deleted if occupied | Must empty location first |
|
||||
| ReceiptOrder cannot be deleted if has receipts | Must cancel or close first |
|
||||
| ShippingOrder cannot be modified if closed/canceled | Immutable after close |
|
||||
| Task cannot be canceled if InProcess | Must be released by operator first |
|
||||
| Container lock blocks most operations | Check active locks before operations |
|
||||
| Stock with active UserStatus blocks shipping | Unless order specifically requests that status |
|
||||
|
||||
## Transaction-Entity Mapping
|
||||
|
||||
Every entity state change generates a Transaction. Key mappings:
|
||||
|
||||
| Transaction | Entity Changed |
|
||||
|------------|---------------|
|
||||
| `CON.LOCATE` | Container → Location (putaway) |
|
||||
| `CON.MOVE` | Container → Location (manual move) |
|
||||
| `CON.SHIPPED` | Container → Status=Shipped |
|
||||
| `CON.RECEP` | Container → Created at receipt |
|
||||
| `STK.RECEP` | Stock → Created at receipt |
|
||||
| `STK.LOCATE` | Stock → Location (via putaway) |
|
||||
| `STK.MOVE` | Stock → Location (manual) |
|
||||
| `STK.PICKING` | Stock → Quantity decreased (picking) |
|
||||
| `STK.ADJ` | Stock → Quantity adjusted |
|
||||
| `STK.SHIPPED` | Stock → Status=Shipped |
|
||||
| `INO.CST` | ReceiptOrder → Status changed |
|
||||
| `INO.CLS` | ReceiptOrder → Status=Closed |
|
||||
| `OUT.CST` | ShippingOrder → Status changed |
|
||||
| `OUT.CLS` | ShippingOrder → Status=Closed |
|
||||
| `COU.CST` | Count → Status changed |
|
||||
| `COU.END` | Count → Status=Closed/Canceled |
|
||||
| `TSK.LOC.001` | Task → Status=Finished (putaway) |
|
||||
| `TSK.SHIP` | Task → Status=Finished (shipping) |
|
||||
|
||||
## ERP Integration Touch Points
|
||||
|
||||
Each entity has ERP messages that create, update, or receive data:
|
||||
|
||||
| Entity | ERP In (ERP→WMS) | ERP Out (WMS→ERP) |
|
||||
|--------|-----------------|------------------|
|
||||
| Item | ITM | — |
|
||||
| Owner | OWN | — |
|
||||
| Supplier | SUP | — |
|
||||
| Account | ACC | — |
|
||||
| Carrier | CAR | — |
|
||||
| Kit | KIT | KST (assemble), UNK (disassemble) |
|
||||
| ItemClassification | ITC | — |
|
||||
| ReceiptOrder | ROR | ROC (status), ROF (close) |
|
||||
| Container (ASN) | ASN | ASO (received), ASK (rejected) |
|
||||
| Receipt | — | REF (closed) |
|
||||
| ShippingOrder | SOR, RUT, WOR | SOC (status), SOF (close), LOF (load close), WOF (work order close) |
|
||||
| Count | COR | COF (finalized) |
|
||||
| Stock | STR (lock), SCR (contrast) | STV (variation), STC (status change), WSC (contrast response) |
|
||||
| AutoWarehouse replenishment | SRN | SRO (done), SRK (canceled) |
|
||||
| Container on conveyor | CMC | COS (shipped to PS), COC (closed in MP) |
|
||||
|
||||
## Related
|
||||
|
||||
- [Application Dictionary](application-dictionary.md) — AD element types: Commands, Queries, Entities
|
||||
- [Container](../concepts/container.md) — Container entity deep-dive
|
||||
- [Location](../concepts/location.md) — Location entity deep-dive
|
||||
- [Stock](../concepts/stock.md) — Stock entity deep-dive
|
||||
- [Product / Item](../concepts/product-item.md) — Item entity deep-dive
|
||||
- [Task](../concepts/task.md) — Task entity lifecycle
|
||||
- [Inbound Order](../concepts/order-inbound.md) — Receipt order entity
|
||||
- [Outbound Order](../concepts/order-outbound.md) — Shipping order entity
|
||||
- [Transactions](../concepts/transactions.md) — Full transaction audit trail
|
||||
- [ERP Interface](../concepts/erp-interface.md) — ERP message catalog
|
||||
Reference in New Issue
Block a user