@rytass/wms-module-core 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +80 -0
- package/index.cjs.js +6479 -0
- package/index.d.ts +5 -0
- package/index.js +74 -0
- package/lib/constants/index.d.ts +1 -0
- package/lib/constants/stock-status.d.ts +30 -0
- package/lib/constants/stock-status.js +51 -0
- package/lib/core.module.d.ts +7 -0
- package/lib/core.module.js +102 -0
- package/lib/models/extensions/allocate-inventory-order/allocate-inventory-order-change.entity.d.ts +10 -0
- package/lib/models/extensions/allocate-inventory-order/allocate-inventory-order-change.entity.js +40 -0
- package/lib/models/extensions/allocate-inventory-order/allocate-inventory-order-item.entity.d.ts +20 -0
- package/lib/models/extensions/allocate-inventory-order/allocate-inventory-order-item.entity.js +103 -0
- package/lib/models/extensions/allocate-inventory-order/allocate-inventory-order.entity.d.ts +8 -0
- package/lib/models/extensions/allocate-inventory-order/allocate-inventory-order.entity.js +33 -0
- package/lib/models/extensions/hold-inventory-order/hold-inventory-order-change.entity.d.ts +10 -0
- package/lib/models/extensions/hold-inventory-order/hold-inventory-order-change.entity.js +40 -0
- package/lib/models/extensions/hold-inventory-order/hold-inventory-order-item.entity.d.ts +19 -0
- package/lib/models/extensions/hold-inventory-order/hold-inventory-order-item.entity.js +97 -0
- package/lib/models/extensions/hold-inventory-order/hold-inventory-order.entity.d.ts +10 -0
- package/lib/models/extensions/hold-inventory-order/hold-inventory-order.entity.js +43 -0
- package/lib/models/extensions/index.d.ts +37 -0
- package/lib/models/extensions/merge-batch-order/merge-batch-order-change.entity.d.ts +10 -0
- package/lib/models/extensions/merge-batch-order/merge-batch-order-change.entity.js +40 -0
- package/lib/models/extensions/merge-batch-order/merge-batch-order-item.entity.d.ts +15 -0
- package/lib/models/extensions/merge-batch-order/merge-batch-order-item.entity.js +74 -0
- package/lib/models/extensions/merge-batch-order/merge-batch-order.entity.d.ts +8 -0
- package/lib/models/extensions/merge-batch-order/merge-batch-order.entity.js +33 -0
- package/lib/models/extensions/quality-inspection-order/quality-inspection-order-change.entity.d.ts +11 -0
- package/lib/models/extensions/quality-inspection-order/quality-inspection-order-change.entity.js +45 -0
- package/lib/models/extensions/quality-inspection-order/quality-inspection-order-item.entity.d.ts +18 -0
- package/lib/models/extensions/quality-inspection-order/quality-inspection-order-item.entity.js +93 -0
- package/lib/models/extensions/quality-inspection-order/quality-inspection-order.entity.d.ts +9 -0
- package/lib/models/extensions/quality-inspection-order/quality-inspection-order.entity.js +38 -0
- package/lib/models/extensions/receive-inventory-order/receive-inventory-order-change.entity.d.ts +12 -0
- package/lib/models/extensions/receive-inventory-order/receive-inventory-order-change.entity.js +46 -0
- package/lib/models/extensions/receive-inventory-order/receive-inventory-order-item.entity.d.ts +19 -0
- package/lib/models/extensions/receive-inventory-order/receive-inventory-order-item.entity.js +89 -0
- package/lib/models/extensions/receive-inventory-order/receive-inventory-order.entity.d.ts +13 -0
- package/lib/models/extensions/receive-inventory-order/receive-inventory-order.entity.js +57 -0
- package/lib/models/extensions/reclassify-inventory-order/reclassify-inventory-order-change.entity.d.ts +10 -0
- package/lib/models/extensions/reclassify-inventory-order/reclassify-inventory-order-change.entity.js +40 -0
- package/lib/models/extensions/reclassify-inventory-order/reclassify-inventory-order-item.entity.d.ts +15 -0
- package/lib/models/extensions/reclassify-inventory-order/reclassify-inventory-order-item.entity.js +74 -0
- package/lib/models/extensions/reclassify-inventory-order/reclassify-inventory-order.entity.d.ts +8 -0
- package/lib/models/extensions/reclassify-inventory-order/reclassify-inventory-order.entity.js +33 -0
- package/lib/models/extensions/scrape-order/scrape-order-change.entity.d.ts +10 -0
- package/lib/models/extensions/scrape-order/scrape-order-change.entity.js +40 -0
- package/lib/models/extensions/scrape-order/scrape-order-item.entity.d.ts +18 -0
- package/lib/models/extensions/scrape-order/scrape-order-item.entity.js +93 -0
- package/lib/models/extensions/scrape-order/scrape-order.entity.d.ts +8 -0
- package/lib/models/extensions/scrape-order/scrape-order.entity.js +33 -0
- package/lib/models/extensions/ship-inventory-order/ship-inventory-order-change.entity.d.ts +12 -0
- package/lib/models/extensions/ship-inventory-order/ship-inventory-order-change.entity.js +46 -0
- package/lib/models/extensions/ship-inventory-order/ship-inventory-order-item.entity.d.ts +19 -0
- package/lib/models/extensions/ship-inventory-order/ship-inventory-order-item.entity.js +90 -0
- package/lib/models/extensions/ship-inventory-order/ship-inventory-order-reference.entity.d.ts +13 -0
- package/lib/models/extensions/ship-inventory-order/ship-inventory-order-reference.entity.js +65 -0
- package/lib/models/extensions/ship-inventory-order/ship-inventory-order.entity.d.ts +13 -0
- package/lib/models/extensions/ship-inventory-order/ship-inventory-order.entity.js +56 -0
- package/lib/models/extensions/split-batch-order/split-batch-order-change.entity.d.ts +10 -0
- package/lib/models/extensions/split-batch-order/split-batch-order-change.entity.js +40 -0
- package/lib/models/extensions/split-batch-order/split-batch-order-item.entity.d.ts +15 -0
- package/lib/models/extensions/split-batch-order/split-batch-order-item.entity.js +74 -0
- package/lib/models/extensions/split-batch-order/split-batch-order.entity.d.ts +8 -0
- package/lib/models/extensions/split-batch-order/split-batch-order.entity.js +33 -0
- package/lib/models/extensions/transfer-customer-order/transfer-customer-order-change.entity.d.ts +10 -0
- package/lib/models/extensions/transfer-customer-order/transfer-customer-order-change.entity.js +40 -0
- package/lib/models/extensions/transfer-customer-order/transfer-customer-order-item.entity.d.ts +19 -0
- package/lib/models/extensions/transfer-customer-order/transfer-customer-order-item.entity.js +98 -0
- package/lib/models/extensions/transfer-customer-order/transfer-customer-order.entity.d.ts +8 -0
- package/lib/models/extensions/transfer-customer-order/transfer-customer-order.entity.js +33 -0
- package/lib/models/extensions/transfer-order/transfer-order-change.entity.d.ts +10 -0
- package/lib/models/extensions/transfer-order/transfer-order-change.entity.js +40 -0
- package/lib/models/extensions/transfer-order/transfer-order-item.entity.d.ts +21 -0
- package/lib/models/extensions/transfer-order/transfer-order-item.entity.js +108 -0
- package/lib/models/extensions/transfer-order/transfer-order.entity.d.ts +12 -0
- package/lib/models/extensions/transfer-order/transfer-order.entity.js +53 -0
- package/lib/models/extensions/transfer-vendor-order/transfer-vendor-order-change.entity.d.ts +10 -0
- package/lib/models/extensions/transfer-vendor-order/transfer-vendor-order-change.entity.js +40 -0
- package/lib/models/extensions/transfer-vendor-order/transfer-vendor-order-item.entity.d.ts +19 -0
- package/lib/models/extensions/transfer-vendor-order/transfer-vendor-order-item.entity.js +98 -0
- package/lib/models/extensions/transfer-vendor-order/transfer-vendor-order.entity.d.ts +8 -0
- package/lib/models/extensions/transfer-vendor-order/transfer-vendor-order.entity.js +33 -0
- package/lib/models/index.d.ts +2 -0
- package/lib/models/metadata/batch-group.entity.d.ts +8 -0
- package/lib/models/metadata/batch-group.entity.js +31 -0
- package/lib/models/metadata/batch.entity.d.ts +15 -0
- package/lib/models/metadata/batch.entity.js +73 -0
- package/lib/models/metadata/index.d.ts +11 -0
- package/lib/models/metadata/loader-type.entity.d.ts +9 -0
- package/lib/models/metadata/loader-type.entity.js +43 -0
- package/lib/models/metadata/loader-unit.entity.d.ts +5 -0
- package/lib/models/metadata/loader-unit.entity.js +21 -0
- package/lib/models/metadata/loader.entity.d.ts +21 -0
- package/lib/models/metadata/loader.entity.js +98 -0
- package/lib/models/metadata/location.entity.d.ts +8 -0
- package/lib/models/metadata/location.entity.js +28 -0
- package/lib/models/metadata/material-unit.entity.d.ts +11 -0
- package/lib/models/metadata/material-unit.entity.js +51 -0
- package/lib/models/metadata/material.entity.d.ts +7 -0
- package/lib/models/metadata/material.entity.js +28 -0
- package/lib/models/metadata/sale-order.entity.d.ts +5 -0
- package/lib/models/metadata/sale-order.entity.js +21 -0
- package/lib/models/metadata/stock.entity.d.ts +8 -0
- package/lib/models/metadata/stock.entity.js +29 -0
- package/lib/models/metadata/unit.entity.d.ts +5 -0
- package/lib/models/metadata/unit.entity.js +21 -0
- package/lib/models/models.module.d.ts +6 -0
- package/lib/models/models.module.js +122 -0
- package/lib/services/allocate-inventory-order.service.d.ts +29 -0
- package/lib/services/allocate-inventory-order.service.js +299 -0
- package/lib/services/base-order.service.d.ts +41 -0
- package/lib/services/batch.service.d.ts +30 -0
- package/lib/services/batch.service.js +218 -0
- package/lib/services/helper.service.d.ts +6 -0
- package/lib/services/helper.service.js +28 -0
- package/lib/services/hold-inventory-order.service.d.ts +29 -0
- package/lib/services/hold-inventory-order.service.js +285 -0
- package/lib/services/index.d.ts +22 -0
- package/lib/services/loader.service.d.ts +43 -0
- package/lib/services/loader.service.js +282 -0
- package/lib/services/location.service.d.ts +13 -0
- package/lib/services/location.service.js +130 -0
- package/lib/services/material.service.d.ts +27 -0
- package/lib/services/material.service.js +172 -0
- package/lib/services/merge-batch-order.service.d.ts +19 -0
- package/lib/services/merge-batch-order.service.js +195 -0
- package/lib/services/quality-inspection-order.service.d.ts +19 -0
- package/lib/services/quality-inspection-order.service.js +135 -0
- package/lib/services/receive-inventory-order.service.d.ts +41 -0
- package/lib/services/receive-inventory-order.service.js +407 -0
- package/lib/services/reclassify-inventory-order.service.d.ts +19 -0
- package/lib/services/reclassify-inventory-order.service.js +181 -0
- package/lib/services/sale-order.service.d.ts +7 -0
- package/lib/services/sale-order.service.js +20 -0
- package/lib/services/scrape.service.d.ts +18 -0
- package/lib/services/scrape.service.js +139 -0
- package/lib/services/ship-inventory-order.service.d.ts +60 -0
- package/lib/services/ship-inventory-order.service.js +599 -0
- package/lib/services/split-batch-order.service.d.ts +19 -0
- package/lib/services/split-batch-order.service.js +161 -0
- package/lib/services/stock.service.d.ts +38 -0
- package/lib/services/stock.service.js +477 -0
- package/lib/services/transfer-customer-order.service.d.ts +35 -0
- package/lib/services/transfer-customer-order.service.js +279 -0
- package/lib/services/transfer-order.service.d.ts +44 -0
- package/lib/services/transfer-order.service.js +632 -0
- package/lib/services/transfer-vendor-order.service.d.ts +35 -0
- package/lib/services/transfer-vendor-order.service.js +279 -0
- package/lib/services/unit.service.d.ts +7 -0
- package/lib/services/unit.service.js +67 -0
- package/lib/services/warehouse-map.service.d.ts +10 -0
- package/lib/services/warehouse-map.service.js +38 -0
- package/lib/typings/aggregated-stock.d.ts +22 -0
- package/lib/typings/cancel-ship-inventory-order.input.d.ts +4 -0
- package/lib/typings/cancel-transfer-order.input.d.ts +4 -0
- package/lib/typings/core-module-options.d.ts +8 -0
- package/lib/typings/core-module-options.js +3 -0
- package/lib/typings/create-allocate-inventory-order.input.d.ts +25 -0
- package/lib/typings/create-hold-inventory-order.input.d.ts +21 -0
- package/lib/typings/create-inspection-order.input.d.ts +14 -0
- package/lib/typings/create-loader-type.input.d.ts +9 -0
- package/lib/typings/create-loader.input.d.ts +15 -0
- package/lib/typings/create-location.input.d.ts +12 -0
- package/lib/typings/create-material-unit.input.d.ts +5 -0
- package/lib/typings/create-material.input.d.ts +11 -0
- package/lib/typings/create-receive-inventory-order.input.d.ts +26 -0
- package/lib/typings/create-ship-inventory-order.input.d.ts +46 -0
- package/lib/typings/create-transfer-customer-order.input.d.ts +25 -0
- package/lib/typings/create-transfer-order.input.d.ts +25 -0
- package/lib/typings/create-transfer-vendor-order.input.d.ts +25 -0
- package/lib/typings/deallocate-inventory-order.d.ts +8 -0
- package/lib/typings/find-allocate-inventory-order.input.d.ts +13 -0
- package/lib/typings/find-batch.input.d.ts +8 -0
- package/lib/typings/find-hold-inventory-order.input.d.ts +13 -0
- package/lib/typings/find-loader.input.d.ts +33 -0
- package/lib/typings/find-location.input.d.ts +10 -0
- package/lib/typings/find-material.input.d.ts +10 -0
- package/lib/typings/find-receive-inventory-order.input.d.ts +26 -0
- package/lib/typings/find-receive-inventory-order.input.js +9 -0
- package/lib/typings/find-ship-inventory-order.input.d.ts +26 -0
- package/lib/typings/find-ship-inventory-order.input.js +9 -0
- package/lib/typings/find-stock.input.d.ts +21 -0
- package/lib/typings/find-transfer-order.input.d.ts +21 -0
- package/lib/typings/get-batch.input.d.ts +14 -0
- package/lib/typings/index.d.ts +18 -0
- package/lib/typings/merge-batch.input.d.ts +11 -0
- package/lib/typings/paginations.d.ts +4 -0
- package/lib/typings/receive-inventory-order.input.d.ts +8 -0
- package/lib/typings/reclassify-inventory-order.input.d.ts +11 -0
- package/lib/typings/release-inventory-order.input.d.ts +8 -0
- package/lib/typings/scrape.input.d.ts +8 -0
- package/lib/typings/ship-inventory-order.input.d.ts +4 -0
- package/lib/typings/split-batch.input.d.ts +10 -0
- package/lib/typings/transfer-order.input.d.ts +4 -0
- package/package.json +52 -0
- package/src/lib/models/extensions/README.md +219 -0
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
# Order Management Entities
|
|
2
|
+
|
|
3
|
+
This directory contains all order-related entities for the WMS system. Each order type follows a consistent three-entity pattern to manage inventory operations.
|
|
4
|
+
|
|
5
|
+
## Entity Pattern
|
|
6
|
+
|
|
7
|
+
Each order group consists of three interconnected entities:
|
|
8
|
+
|
|
9
|
+
### 1. `*.order.entity.ts` - Order Master
|
|
10
|
+
|
|
11
|
+
**Purpose**: Groups order items together, representing a single user-initiated order operation.
|
|
12
|
+
|
|
13
|
+
**Characteristics**:
|
|
14
|
+
|
|
15
|
+
- Represents a creation event from the user
|
|
16
|
+
- Contains metadata like `key`, `description`, `createdAt`
|
|
17
|
+
- Has a one-to-many relationship with items
|
|
18
|
+
- May include specific fields depending on order type (e.g., `vendor`, `customer`, `reason`, `inspector`)
|
|
19
|
+
|
|
20
|
+
**Example**: `HoldInventoryOrderEntityClass`
|
|
21
|
+
|
|
22
|
+
- Groups multiple items that need to be held together
|
|
23
|
+
- Single order can affect multiple locations/batches
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
### 2. `*.order-item.entity.ts` - Order Item (Line Item)
|
|
28
|
+
|
|
29
|
+
**Purpose**: Defines which material will be manipulated, by which batch, at which location, with which loader, and what quantity.
|
|
30
|
+
|
|
31
|
+
**Characteristics**:
|
|
32
|
+
|
|
33
|
+
- Many-to-one relationship with the order
|
|
34
|
+
- References metadata: `Location`, `Loader`, `Material` (implied through usage)
|
|
35
|
+
- Specifies the target quantity for the action (e.g., `targetHeldQuantity`, `targetTransferredQuantity`)
|
|
36
|
+
- May be partially or fully executed
|
|
37
|
+
|
|
38
|
+
**Structure**:
|
|
39
|
+
|
|
40
|
+
```
|
|
41
|
+
- material (via external reference)
|
|
42
|
+
- batch (via external reference)
|
|
43
|
+
- location (uuid reference)
|
|
44
|
+
- loader (uuid reference)
|
|
45
|
+
- targetQuantity (numeric)
|
|
46
|
+
- order (reference to parent order)
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
**Example**: `HoldInventoryOrderItemEntityClass`
|
|
50
|
+
|
|
51
|
+
- Specifies that 100 units of Material X in Batch Y at Location Z should be held
|
|
52
|
+
- May use Loader A for the operation
|
|
53
|
+
|
|
54
|
+
---
|
|
55
|
+
|
|
56
|
+
### 3. `*.order-change.entity.ts` - Order Change (Execution Record)
|
|
57
|
+
|
|
58
|
+
**Purpose**: Records the actual execution of an item, which may be partial or complete.
|
|
59
|
+
|
|
60
|
+
**Characteristics**:
|
|
61
|
+
|
|
62
|
+
- Many-to-one relationship with order items
|
|
63
|
+
- One-to-one relationship with system `Order` (from base module)
|
|
64
|
+
- Records `quantityChanged` - the actual quantity executed
|
|
65
|
+
- Triggers the creation of corresponding stock records
|
|
66
|
+
|
|
67
|
+
**Key Logic**:
|
|
68
|
+
When an `order-change` is created, it automatically creates one or more `Stock` records based on the order type.
|
|
69
|
+
|
|
70
|
+
---
|
|
71
|
+
|
|
72
|
+
## Stock Records Created by Order Changes
|
|
73
|
+
|
|
74
|
+
Different order types create different stock records:
|
|
75
|
+
|
|
76
|
+
### Single Stock Record
|
|
77
|
+
|
|
78
|
+
- **receive-inventory-order**: Creates **+n** quantity record
|
|
79
|
+
- **ship-inventory-order**: Creates **-n** quantity record
|
|
80
|
+
- **transfer-order**: Creates **-n** (from source) and **+n** (at destination)
|
|
81
|
+
|
|
82
|
+
### Multiple Stock Records (Inventory Status Change)
|
|
83
|
+
|
|
84
|
+
- **hold-inventory-order**: Creates **2** records
|
|
85
|
+
1. **+n** quantity with status: `HELD`
|
|
86
|
+
2. **-n** quantity from status: `FREE`
|
|
87
|
+
|
|
88
|
+
- **release-inventory-order**: Creates **2** records
|
|
89
|
+
1. **-n** quantity from status: `HELD`
|
|
90
|
+
2. **+n** quantity with status: `FREE`
|
|
91
|
+
|
|
92
|
+
- **allocate-inventory-order**: Creates **2** records
|
|
93
|
+
1. **+n** quantity with status: `ALLOCATED`
|
|
94
|
+
2. **-n** quantity from status: `FREE`
|
|
95
|
+
|
|
96
|
+
- **deallocate-inventory-order**: Creates **2** records
|
|
97
|
+
1. **-n** quantity from status: `ALLOCATED`
|
|
98
|
+
2. **+n** quantity with status: `FREE`
|
|
99
|
+
|
|
100
|
+
- **quality-inspection-order**: Creates **1-2** records
|
|
101
|
+
- Full pass: **-n** from `FREE` or current status
|
|
102
|
+
- Partial fail: **-n** failed, **+n** defective
|
|
103
|
+
|
|
104
|
+
- **Other order types**: Follow similar patterns based on inventory flow
|
|
105
|
+
|
|
106
|
+
---
|
|
107
|
+
|
|
108
|
+
## Actual Inventory Calculation
|
|
109
|
+
|
|
110
|
+
The actual inventory is determined by aggregating and summing all stock records:
|
|
111
|
+
|
|
112
|
+
```
|
|
113
|
+
SELECT
|
|
114
|
+
material_id,
|
|
115
|
+
batch_id,
|
|
116
|
+
location_id,
|
|
117
|
+
loader_id,
|
|
118
|
+
status,
|
|
119
|
+
SUM(quantity) as total_quantity
|
|
120
|
+
FROM stocks
|
|
121
|
+
GROUP BY material_id, batch_id, location_id, loader_id, status
|
|
122
|
+
HAVING SUM(quantity) > 0
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
**Dimensions**:
|
|
126
|
+
|
|
127
|
+
- `material`: Which product
|
|
128
|
+
- `batch`: Which batch/lot
|
|
129
|
+
- `location`: Where it is stored
|
|
130
|
+
- `loader`: Which loader/container holds it
|
|
131
|
+
- `status`: Inventory classification (FREE, HELD, ALLOCATED, DEFECTIVE, etc.)
|
|
132
|
+
|
|
133
|
+
---
|
|
134
|
+
|
|
135
|
+
## Order Type Examples
|
|
136
|
+
|
|
137
|
+
### Hold Inventory Order
|
|
138
|
+
|
|
139
|
+
```
|
|
140
|
+
Order → Items → Changes → 2 Stock Records
|
|
141
|
+
Item: 100 units at Location A
|
|
142
|
+
↓
|
|
143
|
+
Change: Execute 100 units
|
|
144
|
+
↓
|
|
145
|
+
Stocks:
|
|
146
|
+
1. +100 (HELD) at Location A
|
|
147
|
+
2. -100 (FREE) at Location A
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
### Transfer Inventory Order
|
|
151
|
+
|
|
152
|
+
```
|
|
153
|
+
Order → Items → Changes → Multiple Stock Records
|
|
154
|
+
Item: 50 units from Location A to Location B
|
|
155
|
+
↓
|
|
156
|
+
Change: Execute 50 units
|
|
157
|
+
↓
|
|
158
|
+
Stocks:
|
|
159
|
+
1. -50 at Location A
|
|
160
|
+
2. +50 at Location B
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
---
|
|
164
|
+
|
|
165
|
+
## Data Flow Summary
|
|
166
|
+
|
|
167
|
+
```
|
|
168
|
+
User Action
|
|
169
|
+
↓
|
|
170
|
+
Order Created (*.order.entity)
|
|
171
|
+
↓
|
|
172
|
+
Order Items Added (*.order-item.entity)
|
|
173
|
+
↓
|
|
174
|
+
Order Execution (*.order-change.entity)
|
|
175
|
+
↓
|
|
176
|
+
Stock Records Created
|
|
177
|
+
↓
|
|
178
|
+
Inventory Available for Query
|
|
179
|
+
(Grouped by: material + batch + location + loader + status)
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
---
|
|
183
|
+
|
|
184
|
+
## File Organization
|
|
185
|
+
|
|
186
|
+
```
|
|
187
|
+
extensions/
|
|
188
|
+
├── README.md (this file)
|
|
189
|
+
├── receive-inventory-order/
|
|
190
|
+
│ ├── receive-inventory-order.entity.ts
|
|
191
|
+
│ ├── receive-inventory-order-item.entity.ts
|
|
192
|
+
│ └── receive-inventory-order-change.entity.ts
|
|
193
|
+
├── ship-inventory-order/
|
|
194
|
+
├── transfer-order/
|
|
195
|
+
├── hold-inventory-order/
|
|
196
|
+
├── release-inventory-order/
|
|
197
|
+
├── allocate-inventory-order/
|
|
198
|
+
├── deallocate-inventory-order/
|
|
199
|
+
├── split-batch-order/
|
|
200
|
+
├── merge-batch-order/
|
|
201
|
+
├── reclassify-inventory-order/
|
|
202
|
+
├── transfer-vendor-order/
|
|
203
|
+
├── return-vendor-order/
|
|
204
|
+
├── quality-inspection-order/
|
|
205
|
+
├── transfer-customer-order/
|
|
206
|
+
├── return-customer-order/
|
|
207
|
+
└── index.ts (exports all entities)
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
---
|
|
211
|
+
|
|
212
|
+
## Key Design Principles
|
|
213
|
+
|
|
214
|
+
1. **Three-Layer Model**: Order → Items → Changes ensures traceability
|
|
215
|
+
2. **Immutable History**: All changes are recorded as new records, never modified
|
|
216
|
+
3. **Stock-Based Inventory**: No direct quantity fields; inventory is calculated from stocks
|
|
217
|
+
4. **Status Tracking**: Stock records track material status through its lifecycle
|
|
218
|
+
5. **Flexibility**: Partial execution supported through quantity-based changes
|
|
219
|
+
6. **Auditability**: Every stock movement is traceable to an order and change record
|