@things-factory/operato-wms 4.3.758 → 4.3.760

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.
Files changed (27) hide show
  1. package/client/pages/outbound/loading-v2/delivery-order-info.js +38 -3
  2. package/client/pages/outbound/loading-v2/loading-execution-base.js +122 -19
  3. package/dist-server/graphql/resolvers/outbound/complete-load.js +8 -18
  4. package/dist-server/graphql/resolvers/outbound/complete-load.js.map +1 -1
  5. package/dist-server/graphql/resolvers/outbound/find-loadable-release-good-by-bin.js +15 -0
  6. package/dist-server/graphql/resolvers/outbound/find-loadable-release-good-by-bin.js.map +1 -1
  7. package/dist-server/graphql/resolvers/outbound/find-loadable-release-good.js +9 -8
  8. package/dist-server/graphql/resolvers/outbound/find-loadable-release-good.js.map +1 -1
  9. package/dist-server/graphql/resolvers/outbound/load-by-qty.js +115 -45
  10. package/dist-server/graphql/resolvers/outbound/load-by-qty.js.map +1 -1
  11. package/dist-server/graphql/resolvers/outbound/loading-worksheet-v2.js +4 -0
  12. package/dist-server/graphql/resolvers/outbound/loading-worksheet-v2.js.map +1 -1
  13. package/dist-server/graphql/resolvers/outbound/undo-load.js +94 -42
  14. package/dist-server/graphql/resolvers/outbound/undo-load.js.map +1 -1
  15. package/dist-server/graphql/resolvers/route-label/route-label.js +8 -12
  16. package/dist-server/graphql/resolvers/route-label/route-label.js.map +1 -1
  17. package/dist-server/graphql/resolvers/zone-worksheet/zone-picking.js +31 -2
  18. package/dist-server/graphql/resolvers/zone-worksheet/zone-picking.js.map +1 -1
  19. package/package.json +4 -4
  20. package/server/graphql/resolvers/outbound/complete-load.ts +8 -18
  21. package/server/graphql/resolvers/outbound/find-loadable-release-good-by-bin.ts +15 -0
  22. package/server/graphql/resolvers/outbound/find-loadable-release-good.ts +9 -7
  23. package/server/graphql/resolvers/outbound/load-by-qty.ts +198 -81
  24. package/server/graphql/resolvers/outbound/loading-worksheet-v2.ts +4 -0
  25. package/server/graphql/resolvers/outbound/undo-load.ts +116 -44
  26. package/server/graphql/resolvers/route-label/route-label.ts +9 -12
  27. package/server/graphql/resolvers/zone-worksheet/zone-picking.ts +41 -2
@@ -30,9 +30,11 @@ exports.zonePicking = {
30
30
  throw new Error('No worksheet found');
31
31
  let worksheetDetails = worksheet.worksheetDetails;
32
32
  let oiIds = worksheetDetails.map(wsd => wsd.targetInventory.id);
33
+ // Use pessimistic lock to prevent race conditions with concurrent requests
33
34
  const targetInventories = await tx
34
35
  .getRepository(sales_base_1.OrderInventory)
35
36
  .createQueryBuilder('oi')
37
+ .setLock('pessimistic_write')
36
38
  .innerJoinAndSelect('oi.inventory', 'i', 'i.id = oi.inventory_id')
37
39
  .where('oi.id IN(:...oiIds)', { oiIds: oiIds })
38
40
  .andWhere('i.carton_id = :cartonId', { cartonId: cartonId })
@@ -82,6 +84,9 @@ exports.zonePicking = {
82
84
  if (totalPickedQty > sumOfReleaseQty)
83
85
  throw new Error(wsController.ERROR_MSG.VALIDITY.CANT_PROCEED_STEP_BY('picking', `quantity can't exceed limitation`));
84
86
  let productOrderInventory = targetInventories.filter(oi => oi.productId === product.id && oi.productDetailId === productDetail.id);
87
+ // Track processed OI and inventory IDs to prevent duplicate processing within this transaction
88
+ const processedOiIds = new Set();
89
+ const processedInventoryDeductions = new Map();
85
90
  //update all oi
86
91
  for (const oi of productOrderInventory) {
87
92
  let targetInventory = oi;
@@ -91,6 +96,11 @@ exports.zonePicking = {
91
96
  const releaseGood = targetInventory.releaseGood;
92
97
  if (pickedQty <= 0)
93
98
  break;
99
+ // Skip if this OI was already processed in this transaction
100
+ if (processedOiIds.has(targetInventory.id)) {
101
+ console.warn(`Skipping duplicate OI processing: ${targetInventory.id}`);
102
+ continue;
103
+ }
94
104
  // validation to prevent picking if the inventory is involved in cycle count
95
105
  let inventoryCheckItem = await tx.getRepository(sales_base_1.InventoryCheckItem).findOne({
96
106
  where: {
@@ -113,6 +123,17 @@ exports.zonePicking = {
113
123
  if (targetInventory.status === sales_base_1.ORDER_INVENTORY_STATUS.PROCESSING &&
114
124
  targetReleaseQty > targetPickedQty &&
115
125
  pickedQty > 0) {
126
+ // Re-verify OI status from database to prevent race condition
127
+ const freshOiStatus = await tx
128
+ .getRepository(sales_base_1.OrderInventory)
129
+ .createQueryBuilder('oi')
130
+ .select('oi.status')
131
+ .where('oi.id = :id', { id: targetInventory.id })
132
+ .getRawOne();
133
+ if ((freshOiStatus === null || freshOiStatus === void 0 ? void 0 : freshOiStatus.oi_status) !== sales_base_1.ORDER_INVENTORY_STATUS.PROCESSING) {
134
+ console.warn(`OI ${targetInventory.id} status changed to ${freshOiStatus === null || freshOiStatus === void 0 ? void 0 : freshOiStatus.oi_status}, skipping`);
135
+ continue;
136
+ }
116
137
  let remainingAssignedQty = pickedQty - (targetReleaseQty - targetPickedQty); // -1, 0, 1
117
138
  const gapQtyRemaining = targetReleaseQty - targetPickedQty; // > 0
118
139
  if (binNo && !(targetInventory === null || targetInventory === void 0 ? void 0 : targetInventory.binLocation)) {
@@ -127,7 +148,10 @@ exports.zonePicking = {
127
148
  remainingAssignedQty = remainingAssignedQty < 0 ? 0 : remainingAssignedQty;
128
149
  if (targetInventory.pickedQty == targetReleaseQty) {
129
150
  //update oi and wsd to done if pickedQty matches releaseQty
130
- const leftQty = inventory.qty - targetInventory.releaseQty;
151
+ // Account for any previous deductions to this inventory in this transaction
152
+ const previousDeduction = processedInventoryDeductions.get(inventory.id) || 0;
153
+ const adjustedInventoryQty = inventory.qty - previousDeduction;
154
+ const leftQty = adjustedInventoryQty - targetInventory.releaseQty;
131
155
  if (leftQty < 0) {
132
156
  throw new Error(wsController.ERROR_MSG.VALIDITY.CANT_PROCEED_STEP_BY('picking', `quantity can't exceed limitation`));
133
157
  }
@@ -137,6 +161,8 @@ exports.zonePicking = {
137
161
  //update oi
138
162
  targetInventory.status = sales_base_1.ORDER_INVENTORY_STATUS.PICKED;
139
163
  await updateOrderInventories(tx, targetInventory);
164
+ // Mark this OI as processed
165
+ processedOiIds.add(targetInventory.id);
140
166
  //update loading wsd if exist
141
167
  let loadingWorksheetDetail = await tx.getRepository(worksheet_base_1.WorksheetDetail).findOne({
142
168
  where: { type: worksheet_base_1.WORKSHEET_TYPE.LOADING, targetInventory: targetInventory }
@@ -163,8 +189,9 @@ exports.zonePicking = {
163
189
  .where('id = :id', { id: targetInventory.inventory.id })
164
190
  .returning(['qty'])
165
191
  .execute();
192
+ // Track the deduction for this inventory
193
+ processedInventoryDeductions.set(inventory.id, previousDeduction + targetInventory.releaseQty);
166
194
  console.time('inv history');
167
- //slow
168
195
  await (0, warehouse_base_1.generateInventoryHistory)(inventory, releaseGood, warehouse_base_1.INVENTORY_TRANSACTION_TYPE.PICKING, -targetInventory.releaseQty, -targetInventory.releaseUomValue, user, tx);
169
196
  console.timeEnd('inv history');
170
197
  if (leftQty === 0) {
@@ -182,6 +209,8 @@ exports.zonePicking = {
182
209
  else {
183
210
  //updates oi if pickedQty != releaseQty
184
211
  await updateOrderInventories(tx, targetInventory);
212
+ // Mark this OI as processed even for partial picks
213
+ processedOiIds.add(targetInventory.id);
185
214
  }
186
215
  //deduct pickedQty for the next oi
187
216
  pickedQty = pickedQty - (targetReleaseQty - targetPickedQty);
@@ -1 +1 @@
1
- {"version":3,"file":"zone-picking.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/zone-worksheet/zone-picking.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"zone-picking.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/zone-worksheet/zone-picking.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@things-factory/operato-wms",
3
- "version": "4.3.758",
3
+ "version": "4.3.760",
4
4
  "main": "dist-server/index.js",
5
5
  "browser": "client/index.js",
6
6
  "things-factory": true,
@@ -91,7 +91,7 @@
91
91
  "@things-factory/print-ui": "^4.3.755",
92
92
  "@things-factory/product-base": "^4.3.755",
93
93
  "@things-factory/resource-ui": "^4.3.755",
94
- "@things-factory/sales-ui": "^4.3.755",
94
+ "@things-factory/sales-ui": "^4.3.759",
95
95
  "@things-factory/scene-data-transform": "^4.3.755",
96
96
  "@things-factory/scene-excel": "^4.3.755",
97
97
  "@things-factory/scene-firebase": "^4.3.755",
@@ -108,7 +108,7 @@
108
108
  "@things-factory/transport-base": "^4.3.755",
109
109
  "@things-factory/tutorial-ui": "^4.3.755",
110
110
  "@things-factory/warehouse-base": "^4.3.755",
111
- "@things-factory/worksheet-base": "^4.3.758"
111
+ "@things-factory/worksheet-base": "^4.3.760"
112
112
  },
113
113
  "devDependencies": {
114
114
  "@things-factory/builder": "^4.3.755",
@@ -117,5 +117,5 @@
117
117
  "cypress-localstorage-commands": "^1.6.1",
118
118
  "eslint-plugin-cypress": "^2.12.1"
119
119
  },
120
- "gitHead": "366ebbdcb75d8028c023eba68e9f59bf27c6776e"
120
+ "gitHead": "c6b185ad92efc92e1ea5d80899f2a1f38cf37c4b"
121
121
  }
@@ -45,31 +45,21 @@ async function completeLoading(
45
45
  orderId: String,
46
46
  worksheetId: String
47
47
  ) {
48
- // Fetch release order
48
+ // Fetch release order - optimized to reduce DB locks (14 relations → 4 relations)
49
+ // - orderProducts re-fetched at line 200 with fresh relations
50
+ // - deliveryOrders re-fetched at line 109
51
+ // - Only load essential relations needed before those re-fetches
52
+ console.time('completeLoading - fetch releaseGood')
49
53
  const releaseGood: ReleaseGood = await tx.getRepository(ReleaseGood).findOne({
50
54
  where: {
51
- id: orderId,
55
+ name: orderId,
52
56
  domain: domain,
53
57
  status: In([ORDER_STATUS.LOADING, ORDER_STATUS.PROCESSING, ORDER_STATUS.PARTIAL_PROCESSING])
54
58
  },
55
- relations: [
56
- 'domain',
57
- 'bizplace',
58
- 'bizplace.domain',
59
- 'creator',
60
- 'updater',
61
- 'orderInventories',
62
- 'lastMileDelivery',
63
- 'orderProducts',
64
- 'orderProducts.product',
65
- 'orderProducts.productDetail',
66
- 'deliveryOrders',
67
- 'deliveryOrders.orderInventories',
68
- 'deliveryOrders.orderInventories.productDetail',
69
- 'deliveryOrders.orderInventories.product'
70
- ]
59
+ relations: ['bizplace', 'bizplace.domain', 'orderInventories', 'lastMileDelivery']
71
60
  })
72
61
 
62
+ console.timeEnd('completeLoading - fetch releaseGood')
73
63
  if (!releaseGood) {
74
64
  throw new Error('Release good not found or not in a valid status')
75
65
  }
@@ -124,6 +124,21 @@ const transformToWorksheetFormat = (orderInventories: OrderInventory[], releaseG
124
124
  binLocation: {
125
125
  name: oi.binLocation?.name
126
126
  },
127
+ // Include releaseGood for each item to support filtering by release order in bin scan mode
128
+ releaseGood: oi.releaseGood
129
+ ? {
130
+ id: oi.releaseGood.id,
131
+ name: oi.releaseGood.name,
132
+ attentionCompany: oi.releaseGood.attentionCompany,
133
+ attentionTo: oi.releaseGood.attentionTo,
134
+ deliveryAddress1: oi.releaseGood.deliveryAddress1,
135
+ deliveryAddress2: oi.releaseGood.deliveryAddress2,
136
+ status: oi.releaseGood.status,
137
+ refNo: oi.releaseGood.refNo,
138
+ refNo2: oi.releaseGood.refNo2,
139
+ refNo3: oi.releaseGood.refNo3
140
+ }
141
+ : null,
127
142
  productName: oi.inventory?.product?.name,
128
143
  productSku: oi.inventory?.product?.sku,
129
144
  relatedOrderInv: {
@@ -57,6 +57,11 @@ async function getInventoryCounts(
57
57
 
58
58
  /**
59
59
  * Assigns itemCounts and tabCounts to a release good based on inventory counts
60
+ *
61
+ * Business logic for "completed" items:
62
+ * - QC tab: completed = items that passed QC (LOADING + LOADED status)
63
+ * - LOADING tab: completed = items that were loaded (LOADED status)
64
+ * - LOADED tab: completed = items that are loaded (LOADED status)
60
65
  */
61
66
  function assignCountsToReleaseGood(
62
67
  releaseGood: ReleaseGood,
@@ -67,13 +72,10 @@ function assignCountsToReleaseGood(
67
72
  const { loadingTotal, loadingCompleted, loadedTotal, loadedCompleted, total } = counts
68
73
 
69
74
  // Calculate completed count for current tab (backward compatibility)
70
- let currentCompleted: number
71
- if (isBinScan) {
72
- currentCompleted = tabName === 'LOADING' ? loadingTotal : loadedTotal
73
- } else {
74
- // ORDER scan: QC tab considers LOADING+LOADED as completed
75
- currentCompleted = tabName === 'QC' ? loadingTotal + loadedTotal : loadedTotal
76
- }
75
+ // For QC tab: completed = items that passed QC (LOADING + LOADED)
76
+ // For LOADING/LOADED tabs: completed = items that are loaded (LOADED)
77
+ // This logic applies to both BIN scan and ORDER scan
78
+ const currentCompleted = tabName === 'QC' ? loadingTotal + loadedTotal : loadedTotal
77
79
 
78
80
  // Backward compatibility: itemCounts for current tab
79
81
  releaseGood['itemCounts'] = {
@@ -65,97 +65,214 @@ export const loadByQty = {
65
65
 
66
66
  const updatedOrderInventories: OrderInventory[] = []
67
67
  for (const wsd of updatedWorksheetDetails) {
68
- //find the respective wsd and oi to update
69
- const foundWorksheetDetail: WorksheetDetail = worksheet.worksheetDetails.find(
70
- foundWsd => foundWsd.name === wsd.name
71
- )
72
- let orderInventory = orderInventories.find(oi => oi.id === foundWorksheetDetail.targetInventory.id)
68
+ // Check if this is combined data with multiple order inventory references
69
+ // (from bin scan flow with combineSameProductsWithAllRefs)
70
+ if (wsd.allRelatedOrderInvs && wsd.allRelatedOrderInvs.length > 0) {
71
+ // Combined mode: distribute loadedQty across multiple order inventories (FIFO)
72
+ let remainingLoadQty = wsd.loadedQty
73
73
 
74
- //validate oi status and do is not yet generated
75
- if (orderInventory.status === ORDER_INVENTORY_STATUS.LOADED || orderInventory.deliveryOrderId !== null) {
76
- continue
77
- }
74
+ for (const ref of wsd.allRelatedOrderInvs) {
75
+ if (remainingLoadQty <= 0) break
76
+
77
+ let orderInventory = orderInventories.find(oi => oi.id === ref.id)
78
+ if (!orderInventory) continue
79
+
80
+ const foundWorksheetDetail = worksheet.worksheetDetails.find(
81
+ foundWsd => foundWsd.targetInventory.id === orderInventory.id
82
+ )
83
+ if (!foundWorksheetDetail) continue
84
+
85
+ // Skip if already loaded or DO generated
86
+ if (orderInventory.status === ORDER_INVENTORY_STATUS.LOADED || orderInventory.deliveryOrderId !== null) {
87
+ continue
88
+ }
89
+
90
+ // Calculate how much to load from this order inventory
91
+ const availableQty = orderInventory.pickedQty
92
+ const qtyToLoad = Math.min(remainingLoadQty, availableQty)
93
+ remainingLoadQty -= qtyToLoad
94
+
95
+ if (qtyToLoad === orderInventory.releaseQty) {
96
+ // Full load - mark as LOADED
97
+ orderInventory = {
98
+ ...orderInventory,
99
+ status: ORDER_INVENTORY_STATUS.LOADED,
100
+ updater: user,
101
+ updatedAt: new Date()
102
+ }
103
+
104
+ await tx.getRepository(WorksheetDetail).update(foundWorksheetDetail.id, {
105
+ status: WORKSHEET_STATUS.DONE,
106
+ updater: user,
107
+ updatedAt: new Date()
108
+ })
109
+ } else if (qtyToLoad < orderInventory.releaseQty && qtyToLoad > 0) {
110
+ // Partial load - split order inventory
111
+ const remainingOiQty = orderInventory.releaseQty - qtyToLoad
112
+ const newOrderInventory = tx.getRepository(OrderInventory).create({
113
+ ...orderInventory,
114
+ id: undefined,
115
+ name: OrderNoGenerator.orderInventory(),
116
+ releaseQty: remainingOiQty,
117
+ releaseUomValue: (orderInventory.releaseUomValue / orderInventory.releaseQty) * remainingOiQty,
118
+ pickedQty: orderInventory.pickedQty - qtyToLoad,
119
+ sortedQty: orderInventory.sortedQty === 0 ? 0 : orderInventory.sortedQty - qtyToLoad,
120
+ status: orderInventory.status,
121
+ updater: user,
122
+ updatedAt: new Date()
123
+ })
124
+
125
+ await tx.getRepository(OrderInventory).save(newOrderInventory)
78
126
 
79
- // compare with sort qty
80
- if (wsd.loadedQty > orderInventory.pickedQty) {
81
- throw new Error('Load qty is more than picked qty for sku ' + wsd.productSku)
82
- } else if (wsd.loadedQty == orderInventory.releaseQty) {
83
- //compare load qty to release, if order is partially picked, has to split oi
84
-
85
- //update oi
86
- orderInventory = {
87
- ...orderInventory,
88
- status: ORDER_INVENTORY_STATUS.LOADED,
89
- updater: user,
90
- updatedAt: new Date()
127
+ const newWorksheetDetail = tx.getRepository(WorksheetDetail).create({
128
+ ...foundWorksheetDetail,
129
+ id: undefined,
130
+ name: `LOAD-DETAIL-` + uuidv4(),
131
+ worksheet: worksheet,
132
+ targetInventory: newOrderInventory,
133
+ status: WORKSHEET_STATUS.EXECUTING,
134
+ updater: user,
135
+ updatedAt: new Date()
136
+ })
137
+
138
+ await tx.getRepository(WorksheetDetail).save(newWorksheetDetail)
139
+
140
+ orderInventory = {
141
+ ...orderInventory,
142
+ status: ORDER_INVENTORY_STATUS.LOADED,
143
+ releaseUomValue: (orderInventory.releaseUomValue / orderInventory.releaseQty) * qtyToLoad,
144
+ releaseQty: qtyToLoad,
145
+ pickedQty: qtyToLoad,
146
+ sortedQty: qtyToLoad,
147
+ updater: user,
148
+ updatedAt: new Date()
149
+ }
150
+
151
+ await tx.getRepository(WorksheetDetail).update(foundWorksheetDetail.id, {
152
+ status: WORKSHEET_STATUS.DONE,
153
+ updater: user,
154
+ updatedAt: new Date()
155
+ })
156
+ } else {
157
+ // qtyToLoad is 0, skip this order inventory
158
+ continue
159
+ }
160
+
161
+ const inventory = await tx.getRepository(Inventory).findOne({
162
+ where: { id: orderInventory.inventoryId }
163
+ })
164
+
165
+ await generateInventoryHistory(inventory, releaseGood, INVENTORY_TRANSACTION_TYPE.LOADING, 0, 0, user, tx)
166
+ updatedOrderInventories.push(orderInventory)
91
167
  }
92
168
 
93
- //update wsd
94
- await tx.getRepository(WorksheetDetail).update(foundWorksheetDetail.id, {
95
- status: WORKSHEET_STATUS.DONE,
96
- updater: user,
97
- updatedAt: new Date()
98
- })
99
- } else if (wsd.loadedQty < orderInventory.releaseQty) {
100
- //split oi
101
- //create new order inventory with remaining quantity
102
- const remainingQty = orderInventory.releaseQty - wsd.loadedQty
103
- const newOrderInventory = tx.getRepository(OrderInventory).create({
104
- ...orderInventory,
105
- id: undefined,
106
- name: OrderNoGenerator.orderInventory(),
107
- releaseQty: remainingQty,
108
- releaseUomValue: (orderInventory.releaseUomValue / orderInventory.releaseQty) * remainingQty,
109
- pickedQty: orderInventory.pickedQty - wsd.loadedQty,
110
- sortedQty: orderInventory.sortedQty === 0 ? 0 : orderInventory.sortedQty - wsd.loadedQty,
111
- status: orderInventory.status,
112
- updater: user,
113
- updatedAt: new Date()
114
- })
169
+ // Validate that all requested quantity was loaded
170
+ if (remainingLoadQty > 0) {
171
+ console.warn(`Could not fully distribute loadedQty for SKU ${wsd.productSku}. Remaining: ${remainingLoadQty}`)
172
+ }
173
+ } else {
174
+ // Standard mode: single order inventory reference
175
+ // Support both:
176
+ // 1. Match by worksheetDetail name (when using LOADING_WORKSHEET_V2 query)
177
+ // 2. Match by relatedOrderInv.id (when name is null)
178
+ let foundWorksheetDetail: WorksheetDetail
179
+ let orderInventory: OrderInventory
115
180
 
116
- await tx.getRepository(OrderInventory).save(newOrderInventory)
117
-
118
- //create new worksheet detail for the new order inventory
119
- const newWorksheetDetail = tx.getRepository(WorksheetDetail).create({
120
- ...foundWorksheetDetail,
121
- id: undefined,
122
- name: `LOAD-DETAIL-` + uuidv4(),
123
- worksheet: worksheet,
124
- targetInventory: newOrderInventory,
125
- status: WORKSHEET_STATUS.EXECUTING,
126
- updater: user,
127
- updatedAt: new Date()
128
- })
181
+ if (wsd.name) {
182
+ foundWorksheetDetail = worksheet.worksheetDetails.find(foundWsd => foundWsd.name === wsd.name)
183
+ if (foundWorksheetDetail) {
184
+ orderInventory = orderInventories.find(oi => oi.id === foundWorksheetDetail.targetInventory.id)
185
+ }
186
+ }
129
187
 
130
- await tx.getRepository(WorksheetDetail).save(newWorksheetDetail)
131
-
132
- //update current order inventory to loaded with loaded quantity
133
- orderInventory = {
134
- ...orderInventory,
135
- status: ORDER_INVENTORY_STATUS.LOADED,
136
- releaseUomValue: (orderInventory.releaseUomValue / orderInventory.releaseQty) * wsd.loadedQty,
137
- releaseQty: wsd.loadedQty,
138
- pickedQty: wsd.loadedQty,
139
- sortedQty: wsd.loadedQty,
140
- updater: user,
141
- updatedAt: new Date()
188
+ if (!foundWorksheetDetail && wsd.relatedOrderInv?.id) {
189
+ orderInventory = orderInventories.find(oi => oi.id === wsd.relatedOrderInv.id)
190
+ if (orderInventory) {
191
+ foundWorksheetDetail = worksheet.worksheetDetails.find(
192
+ foundWsd => foundWsd.targetInventory.id === orderInventory.id
193
+ )
194
+ }
142
195
  }
143
196
 
144
- //update current wsd
145
- await tx.getRepository(WorksheetDetail).update(foundWorksheetDetail.id, {
146
- status: WORKSHEET_STATUS.DONE,
147
- updater: user,
148
- updatedAt: new Date()
149
- })
150
- }
197
+ if (!foundWorksheetDetail || !orderInventory) {
198
+ console.warn(`Could not find worksheet detail or order inventory for item: ${JSON.stringify({ name: wsd.name, relatedOrderInvId: wsd.relatedOrderInv?.id, productSku: wsd.productSku })}`)
199
+ continue
200
+ }
201
+
202
+ if (orderInventory.status === ORDER_INVENTORY_STATUS.LOADED || orderInventory.deliveryOrderId !== null) {
203
+ continue
204
+ }
205
+
206
+ if (wsd.loadedQty > orderInventory.pickedQty) {
207
+ throw new Error('Load qty is more than picked qty for sku ' + wsd.productSku)
208
+ } else if (wsd.loadedQty == orderInventory.releaseQty) {
209
+ orderInventory = {
210
+ ...orderInventory,
211
+ status: ORDER_INVENTORY_STATUS.LOADED,
212
+ updater: user,
213
+ updatedAt: new Date()
214
+ }
215
+
216
+ await tx.getRepository(WorksheetDetail).update(foundWorksheetDetail.id, {
217
+ status: WORKSHEET_STATUS.DONE,
218
+ updater: user,
219
+ updatedAt: new Date()
220
+ })
221
+ } else if (wsd.loadedQty < orderInventory.releaseQty) {
222
+ const remainingQty = orderInventory.releaseQty - wsd.loadedQty
223
+ const newOrderInventory = tx.getRepository(OrderInventory).create({
224
+ ...orderInventory,
225
+ id: undefined,
226
+ name: OrderNoGenerator.orderInventory(),
227
+ releaseQty: remainingQty,
228
+ releaseUomValue: (orderInventory.releaseUomValue / orderInventory.releaseQty) * remainingQty,
229
+ pickedQty: orderInventory.pickedQty - wsd.loadedQty,
230
+ sortedQty: orderInventory.sortedQty === 0 ? 0 : orderInventory.sortedQty - wsd.loadedQty,
231
+ status: orderInventory.status,
232
+ updater: user,
233
+ updatedAt: new Date()
234
+ })
151
235
 
152
- const inventory = await tx.getRepository(Inventory).findOne({
153
- where: { id: orderInventory.inventoryId }
154
- })
236
+ await tx.getRepository(OrderInventory).save(newOrderInventory)
155
237
 
156
- // generate inventory history
157
- await generateInventoryHistory(inventory, releaseGood, INVENTORY_TRANSACTION_TYPE.LOADING, 0, 0, user, tx)
158
- updatedOrderInventories.push(orderInventory)
238
+ const newWorksheetDetail = tx.getRepository(WorksheetDetail).create({
239
+ ...foundWorksheetDetail,
240
+ id: undefined,
241
+ name: `LOAD-DETAIL-` + uuidv4(),
242
+ worksheet: worksheet,
243
+ targetInventory: newOrderInventory,
244
+ status: WORKSHEET_STATUS.EXECUTING,
245
+ updater: user,
246
+ updatedAt: new Date()
247
+ })
248
+
249
+ await tx.getRepository(WorksheetDetail).save(newWorksheetDetail)
250
+
251
+ orderInventory = {
252
+ ...orderInventory,
253
+ status: ORDER_INVENTORY_STATUS.LOADED,
254
+ releaseUomValue: (orderInventory.releaseUomValue / orderInventory.releaseQty) * wsd.loadedQty,
255
+ releaseQty: wsd.loadedQty,
256
+ pickedQty: wsd.loadedQty,
257
+ sortedQty: wsd.loadedQty,
258
+ updater: user,
259
+ updatedAt: new Date()
260
+ }
261
+
262
+ await tx.getRepository(WorksheetDetail).update(foundWorksheetDetail.id, {
263
+ status: WORKSHEET_STATUS.DONE,
264
+ updater: user,
265
+ updatedAt: new Date()
266
+ })
267
+ }
268
+
269
+ const inventory = await tx.getRepository(Inventory).findOne({
270
+ where: { id: orderInventory.inventoryId }
271
+ })
272
+
273
+ await generateInventoryHistory(inventory, releaseGood, INVENTORY_TRANSACTION_TYPE.LOADING, 0, 0, user, tx)
274
+ updatedOrderInventories.push(orderInventory)
275
+ }
159
276
  }
160
277
 
161
278
  if (updatedOrderInventories.length < 1) {
@@ -163,6 +163,10 @@ export const loadingWorksheetv2 = {
163
163
  if (filter === FILTER_TYPES.LOADING) {
164
164
  if (shouldFilterBySortedQty(releaseGood.status, disableQc)) {
165
165
  qb.andWhere('targetInventory.sortedQty > 0')
166
+ // Exclude LOADED items - they should only appear in LOADED tab
167
+ qb.andWhere('targetInventory.status <> :loadedStatus', {
168
+ loadedStatus: ORDER_INVENTORY_STATUS.LOADED
169
+ })
166
170
  } else {
167
171
  qb.andWhere('targetInventory.status IN (:...loadingStatus)', {
168
172
  loadingStatus: [ORDER_INVENTORY_STATUS.SORTING, ORDER_INVENTORY_STATUS.LOADING]