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 PointHow WMS Solves It
Don’t know how much inventory is in the warehouseReal-time inventory query, inventory flow tracing
Inbound/outbound records rely on paper documentsElectronic documents, traceable status flow
Unclear item locationsMulti-warehouse, location management
Stocktaking is time-consuming and labor-intensiveSystematic stocktaking process
Inventory data is inaccurateEvery 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

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

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:

StatusDescription
DraftEditable, does not trigger inventory changes
CompletedConfirmed complete, triggers inventory transaction
VoidedDocument voided, does not trigger inventory changes

Key Rule: Only “Completed” status actually affects inventory quantities.


Difference from MES Warehouse

DimensionWMSMES Warehouse Module
PositioningGeneral warehouse managementManufacturing deep integration
Table Count16 tables62 tables
Use CaseStandalone warehousing, logistics centersManufacturing plants, production workshops
Special FeaturesBasic inbound/outbound/stocktakingLine-side inventory, production picking, outsourcing management
Requires MES❌ Standalone✅ Part of MES
docs