WMS Warehouse Management System
Core Positioning
WMS is an independent general warehouse management system (16 tables), distinct from the manufacturing-deeply-integrated warehouse module in MES. WMS is positioned as “general warehouse management,” suitable for pure warehousing scenarios. If you need deep manufacturing integration (such as line-side inventory, production picking), use the warehouse module in MES.
In one sentence: Manage the warehouse’s “in, out, transfer, count” — always know where every item is.
Problems Solved
| Pain Point | How WMS Solves It |
|---|---|
| Don’t know how much inventory is in the warehouse | Real-time inventory query, inventory flow tracing |
| Inbound/outbound records rely on paper documents | Electronic documents, traceable status flow |
| Unclear item locations | Multi-warehouse, location management |
| Stocktaking is time-consuming and labor-intensive | Systematic stocktaking process |
| Inventory data is inaccurate | Every operation auto-updates inventory |
User Roles
graph LR
subgraph Roles
WH_ADMIN["Warehouse Admin
Manage warehouses/locations
Configure product info
Handle inbound/outbound/transfer/stocktaking
View inventory"] end
Manage warehouses/locations
Configure product info
Handle inbound/outbound/transfer/stocktaking
View inventory"] end
Core Business Processes
graph TB
subgraph InboundProcess
IN1["Create Inbound Order"] --> IN2["Draft Status"]
IN2 --> IN3["Confirm Complete"]
IN3 --> IN4["Inventory Increased"]
IN2 --> IN5["Voided"]
end
subgraph OutboundProcess
OUT1["Create Outbound Order"] --> OUT2["Draft Status"]
OUT2 --> OUT3["Confirm Complete"]
OUT3 --> OUT4["Inventory Decreased"]
OUT2 --> OUT5["Voided"]
end
subgraph TransferProcess
MV1["Create Transfer Order"] --> MV2["Confirm Complete"]
MV2 --> MV3["Source Warehouse Inventory Decreased
Target Warehouse Inventory Increased"] end subgraph StocktakingProcess CK1["Create Stocktaking Order"] --> CK2["Enter Actual Count"] CK2 --> CK3["Confirm Complete"] CK3 --> CK4["Surplus: Inventory Increased
Shortage: Inventory Decreased"] end
Target Warehouse Inventory Increased"] end subgraph StocktakingProcess CK1["Create Stocktaking Order"] --> CK2["Enter Actual Count"] CK2 --> CK3["Confirm Complete"] CK3 --> CK4["Surplus: Inventory Increased
Shortage: Inventory Decreased"] end
Core Table Structure
erDiagram
WMS_WAREHOUSE ||--o{ WMS_STOCK : "Inventory"
WMS_PRODUCT ||--o{ WMS_STOCK : "Inventory"
WMS_WAREHOUSE {
bigint id PK
varchar name "Warehouse Name"
varchar code "Warehouse Code"
tinyint status "Status"
}
WMS_PRODUCT {
bigint id PK
varchar name "Product Name"
varchar no "Product Code"
varchar unit "Unit"
}
WMS_STOCK {
bigint id PK
bigint warehouse_id FK "Warehouse"
bigint product_id FK "Product"
int stock "Inventory Qty"
}
WMS_STOCK_RECORD {
bigint id PK
bigint warehouse_id FK
bigint product_id FK
int count "Change Qty"
tinyint type "In/Out Type"
varchar business_no "Related Document No."
}
Document Number Rules
Format: {prefix}{MMdd}{4-digit random}
Example: RK06250001 (Inbound Order)
CK06250001 (Outbound Order)
YK06250001 (Transfer Order)
PK06250001 (Stocktaking Order)
Two-Phase Status Flow
All documents follow a Draft → Completed/Voided two-phase pattern:
| Status | Description |
|---|---|
| Draft | Editable, does not trigger inventory changes |
| Completed | Confirmed complete, triggers inventory transaction |
| Voided | Document voided, does not trigger inventory changes |
Key Rule: Only “Completed” status actually affects inventory quantities.
Difference from MES Warehouse
| Dimension | WMS | MES Warehouse Module |
|---|---|---|
| Positioning | General warehouse management | Manufacturing deep integration |
| Table Count | 16 tables | 62 tables |
| Use Case | Standalone warehousing, logistics centers | Manufacturing plants, production workshops |
| Special Features | Basic inbound/outbound/stocktaking | Line-side inventory, production picking, outsourcing management |
| Requires MES | ❌ Standalone | ✅ Part of MES |