@things-factory/worksheet-base 5.0.0-alpha.3 → 5.0.0-alpha.30

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 (131) hide show
  1. package/dist-server/controllers/inbound/unloading-worksheet-controller.js +301 -2
  2. package/dist-server/controllers/inbound/unloading-worksheet-controller.js.map +1 -1
  3. package/dist-server/controllers/outbound/loading-worksheet-controller.js +10 -0
  4. package/dist-server/controllers/outbound/loading-worksheet-controller.js.map +1 -1
  5. package/dist-server/controllers/outbound/packing-worksheet-controller.js +172 -7
  6. package/dist-server/controllers/outbound/packing-worksheet-controller.js.map +1 -1
  7. package/dist-server/controllers/outbound/picking-worksheet-controller.js +352 -11
  8. package/dist-server/controllers/outbound/picking-worksheet-controller.js.map +1 -1
  9. package/dist-server/controllers/outbound/returning-worksheet-controller.js +11 -1
  10. package/dist-server/controllers/outbound/returning-worksheet-controller.js.map +1 -1
  11. package/dist-server/controllers/outbound/sorting-worksheet-controller.js +110 -3
  12. package/dist-server/controllers/outbound/sorting-worksheet-controller.js.map +1 -1
  13. package/dist-server/controllers/render-grn.js +27 -3
  14. package/dist-server/controllers/render-grn.js.map +1 -1
  15. package/dist-server/controllers/render-invoices.js +103 -65
  16. package/dist-server/controllers/render-invoices.js.map +1 -1
  17. package/dist-server/controllers/render-orientage-do.js.map +1 -1
  18. package/dist-server/controllers/render-orientage-grn.js +1 -0
  19. package/dist-server/controllers/render-orientage-grn.js.map +1 -1
  20. package/dist-server/controllers/render-ro-do.js +65 -1
  21. package/dist-server/controllers/render-ro-do.js.map +1 -1
  22. package/dist-server/controllers/worksheet-controller.js +15 -0
  23. package/dist-server/controllers/worksheet-controller.js.map +1 -1
  24. package/dist-server/graphql/resolvers/worksheet/find-release-orders-by-task-no.js +30 -1
  25. package/dist-server/graphql/resolvers/worksheet/find-release-orders-by-task-no.js.map +1 -1
  26. package/dist-server/graphql/resolvers/worksheet/generate-worksheet/generate-arrival-notice-worksheet.js +27 -23
  27. package/dist-server/graphql/resolvers/worksheet/generate-worksheet/generate-arrival-notice-worksheet.js.map +1 -1
  28. package/dist-server/graphql/resolvers/worksheet/inventories-by-pallet.js +3 -0
  29. package/dist-server/graphql/resolvers/worksheet/inventories-by-pallet.js.map +1 -1
  30. package/dist-server/graphql/resolvers/worksheet/loading/complete-loading.js +16 -2
  31. package/dist-server/graphql/resolvers/worksheet/loading/complete-loading.js.map +1 -1
  32. package/dist-server/graphql/resolvers/worksheet/packing/index.js +2 -1
  33. package/dist-server/graphql/resolvers/worksheet/packing/index.js.map +1 -1
  34. package/dist-server/graphql/resolvers/worksheet/packing/packing.js +4 -4
  35. package/dist-server/graphql/resolvers/worksheet/packing/packing.js.map +1 -1
  36. package/dist-server/graphql/resolvers/worksheet/packing/scan-product-packing.js +4 -4
  37. package/dist-server/graphql/resolvers/worksheet/packing/scan-product-packing.js.map +1 -1
  38. package/dist-server/graphql/resolvers/worksheet/packing/undo-serial-number-packing.js +15 -0
  39. package/dist-server/graphql/resolvers/worksheet/packing/undo-serial-number-packing.js.map +1 -0
  40. package/dist-server/graphql/resolvers/worksheet/packing-worksheet.js +152 -132
  41. package/dist-server/graphql/resolvers/worksheet/packing-worksheet.js.map +1 -1
  42. package/dist-server/graphql/resolvers/worksheet/picking/assign-picking-worker.js +13 -10
  43. package/dist-server/graphql/resolvers/worksheet/picking/assign-picking-worker.js.map +1 -1
  44. package/dist-server/graphql/resolvers/worksheet/picking/complete-picking.js +0 -17
  45. package/dist-server/graphql/resolvers/worksheet/picking/complete-picking.js.map +1 -1
  46. package/dist-server/graphql/resolvers/worksheet/picking/index.js +2 -1
  47. package/dist-server/graphql/resolvers/worksheet/picking/index.js.map +1 -1
  48. package/dist-server/graphql/resolvers/worksheet/picking/picking-assignment-status-by-user.js +4 -7
  49. package/dist-server/graphql/resolvers/worksheet/picking/picking-assignment-status-by-user.js.map +1 -1
  50. package/dist-server/graphql/resolvers/worksheet/picking/undo-serial-number-picking.js +15 -0
  51. package/dist-server/graphql/resolvers/worksheet/picking/undo-serial-number-picking.js.map +1 -0
  52. package/dist-server/graphql/resolvers/worksheet/sorting/scan-product-sorting.js +4 -4
  53. package/dist-server/graphql/resolvers/worksheet/sorting/scan-product-sorting.js.map +1 -1
  54. package/dist-server/graphql/resolvers/worksheet/sorting/sorting-product.js +4 -4
  55. package/dist-server/graphql/resolvers/worksheet/sorting/sorting-product.js.map +1 -1
  56. package/dist-server/graphql/resolvers/worksheet/sorting-worksheet.js +6 -0
  57. package/dist-server/graphql/resolvers/worksheet/sorting-worksheet.js.map +1 -1
  58. package/dist-server/graphql/resolvers/worksheet/unloaded-inventories.js +3 -2
  59. package/dist-server/graphql/resolvers/worksheet/unloaded-inventories.js.map +1 -1
  60. package/dist-server/graphql/resolvers/worksheet/unloading/index.js +3 -1
  61. package/dist-server/graphql/resolvers/worksheet/unloading/index.js.map +1 -1
  62. package/dist-server/graphql/resolvers/worksheet/unloading/scan-serial-number-unload.js +15 -0
  63. package/dist-server/graphql/resolvers/worksheet/unloading/scan-serial-number-unload.js.map +1 -0
  64. package/dist-server/graphql/resolvers/worksheet/unloading/undo-serial-number-unload.js +15 -0
  65. package/dist-server/graphql/resolvers/worksheet/unloading/undo-serial-number-unload.js.map +1 -0
  66. package/dist-server/graphql/resolvers/worksheet/unloading/unload.js.map +1 -1
  67. package/dist-server/graphql/resolvers/worksheet/unloading-worksheet.js +3 -1
  68. package/dist-server/graphql/resolvers/worksheet/unloading-worksheet.js.map +1 -1
  69. package/dist-server/graphql/resolvers/worksheet-detail/generate-batch-picking-worksheet-details-by-bulk.js +4 -5
  70. package/dist-server/graphql/resolvers/worksheet-detail/generate-batch-picking-worksheet-details-by-bulk.js.map +1 -1
  71. package/dist-server/graphql/resolvers/worksheet-detail/generate-picking-worksheet-details.js +4 -2
  72. package/dist-server/graphql/resolvers/worksheet-detail/generate-picking-worksheet-details.js.map +1 -1
  73. package/dist-server/graphql/types/worksheet/find-release-orders-by-task-no.js +11 -0
  74. package/dist-server/graphql/types/worksheet/find-release-orders-by-task-no.js.map +1 -0
  75. package/dist-server/graphql/types/worksheet/index.js +30 -4
  76. package/dist-server/graphql/types/worksheet/index.js.map +1 -1
  77. package/dist-server/graphql/types/worksheet/worksheet-detail-info.js +3 -0
  78. package/dist-server/graphql/types/worksheet/worksheet-detail-info.js.map +1 -1
  79. package/dist-server/graphql/types/worksheet/worksheet-info.js +1 -0
  80. package/dist-server/graphql/types/worksheet/worksheet-info.js.map +1 -1
  81. package/dist-server/graphql/types/worksheet-detail/index.js +0 -2
  82. package/dist-server/graphql/types/worksheet-detail/index.js.map +1 -1
  83. package/dist-server/index.js +4 -0
  84. package/dist-server/index.js.map +1 -1
  85. package/dist-server/utils/inventory-util.js +14 -25
  86. package/dist-server/utils/inventory-util.js.map +1 -1
  87. package/package.json +17 -17
  88. package/server/controllers/inbound/unloading-worksheet-controller.ts +363 -6
  89. package/server/controllers/outbound/loading-worksheet-controller.ts +13 -0
  90. package/server/controllers/outbound/packing-worksheet-controller.ts +224 -9
  91. package/server/controllers/outbound/picking-worksheet-controller.ts +465 -16
  92. package/server/controllers/outbound/returning-worksheet-controller.ts +12 -1
  93. package/server/controllers/outbound/sorting-worksheet-controller.ts +149 -4
  94. package/server/controllers/render-grn.ts +39 -5
  95. package/server/controllers/render-invoices.ts +119 -72
  96. package/server/controllers/render-orientage-do.ts +11 -11
  97. package/server/controllers/render-orientage-grn.ts +12 -11
  98. package/server/controllers/render-ro-do.ts +93 -8
  99. package/server/controllers/worksheet-controller.ts +18 -2
  100. package/server/graphql/resolvers/worksheet/find-release-orders-by-task-no.ts +35 -2
  101. package/server/graphql/resolvers/worksheet/generate-worksheet/generate-arrival-notice-worksheet.ts +35 -25
  102. package/server/graphql/resolvers/worksheet/inventories-by-pallet.ts +2 -0
  103. package/server/graphql/resolvers/worksheet/loading/complete-loading.ts +25 -6
  104. package/server/graphql/resolvers/worksheet/packing/index.ts +3 -1
  105. package/server/graphql/resolvers/worksheet/packing/packing.ts +5 -4
  106. package/server/graphql/resolvers/worksheet/packing/scan-product-packing.ts +9 -4
  107. package/server/graphql/resolvers/worksheet/packing/undo-serial-number-packing.ts +24 -0
  108. package/server/graphql/resolvers/worksheet/packing-worksheet.ts +167 -145
  109. package/server/graphql/resolvers/worksheet/picking/assign-picking-worker.ts +15 -11
  110. package/server/graphql/resolvers/worksheet/picking/complete-picking.ts +0 -18
  111. package/server/graphql/resolvers/worksheet/picking/index.ts +3 -1
  112. package/server/graphql/resolvers/worksheet/picking/picking-assignment-status-by-user.ts +5 -7
  113. package/server/graphql/resolvers/worksheet/picking/undo-serial-number-picking.ts +24 -0
  114. package/server/graphql/resolvers/worksheet/sorting/scan-product-sorting.ts +5 -4
  115. package/server/graphql/resolvers/worksheet/sorting/sorting-product.ts +5 -4
  116. package/server/graphql/resolvers/worksheet/sorting-worksheet.ts +6 -0
  117. package/server/graphql/resolvers/worksheet/unloaded-inventories.ts +6 -2
  118. package/server/graphql/resolvers/worksheet/unloading/index.ts +4 -0
  119. package/server/graphql/resolvers/worksheet/unloading/scan-serial-number-unload.ts +26 -0
  120. package/server/graphql/resolvers/worksheet/unloading/undo-serial-number-unload.ts +24 -0
  121. package/server/graphql/resolvers/worksheet/unloading/unload.ts +3 -1
  122. package/server/graphql/resolvers/worksheet/unloading-worksheet.ts +3 -1
  123. package/server/graphql/resolvers/worksheet-detail/generate-batch-picking-worksheet-details-by-bulk.ts +10 -12
  124. package/server/graphql/resolvers/worksheet-detail/generate-picking-worksheet-details.ts +4 -2
  125. package/server/graphql/types/worksheet/find-release-orders-by-task-no.ts +8 -0
  126. package/server/graphql/types/worksheet/index.ts +30 -4
  127. package/server/graphql/types/worksheet/worksheet-detail-info.ts +3 -0
  128. package/server/graphql/types/worksheet/worksheet-info.ts +1 -0
  129. package/server/graphql/types/worksheet-detail/index.ts +0 -2
  130. package/server/index.ts +4 -0
  131. package/server/utils/inventory-util.ts +15 -23
@@ -1,6 +1,15 @@
1
+ import { Equal, Not } from 'typeorm'
2
+
1
3
  import { Product, ProductDetail } from '@things-factory/product-base'
2
4
  import { ORDER_INVENTORY_STATUS, ORDER_STATUS, OrderInventory, ReleaseGood } from '@things-factory/sales-base'
3
- import { Inventory, INVENTORY_TRANSACTION_TYPE } from '@things-factory/warehouse-base'
5
+ import {
6
+ Inventory,
7
+ INVENTORY_ITEM_SOURCE,
8
+ INVENTORY_STATUS,
9
+ INVENTORY_TRANSACTION_TYPE,
10
+ InventoryItem,
11
+ InventoryNoGenerator
12
+ } from '@things-factory/warehouse-base'
4
13
 
5
14
  import { WORKSHEET_STATUS, WORKSHEET_TYPE } from '../../constants'
6
15
  import { Worksheet, WorksheetDetail } from '../../entities'
@@ -70,7 +79,7 @@ export class PackingWorksheetController extends VasWorksheetController {
70
79
  return worksheet
71
80
  }
72
81
 
73
- async packing(worksheetDetailName: string, packedQty: number): Promise<WorksheetDetail> {
82
+ async packing(worksheetDetailName: string, packedQty: number, serialNumber: string): Promise<WorksheetDetail> {
74
83
  let worksheetDetail: WorksheetDetail = await this.findExecutableWorksheetDetailByName(
75
84
  worksheetDetailName,
76
85
  WORKSHEET_TYPE.PACKING,
@@ -81,11 +90,13 @@ export class PackingWorksheetController extends VasWorksheetController {
81
90
  'targetInventory',
82
91
  'targetInventory.releaseGood',
83
92
  'targetInventory.inventory',
84
- 'targetInventory.inventory.location'
93
+ 'targetInventory.inventory.location',
94
+ 'targetInventory.product'
85
95
  ]
86
96
  )
87
97
  const releaseGood: ReleaseGood = worksheetDetail.targetInventory.releaseGood
88
98
  let targetInventory: OrderInventory = worksheetDetail.targetInventory
99
+ const product: Product = targetInventory.product
89
100
  let inventory: Inventory = targetInventory.inventory
90
101
  const pickedQty: number = targetInventory.releaseQty
91
102
 
@@ -93,19 +104,81 @@ export class PackingWorksheetController extends VasWorksheetController {
93
104
  throw new Error(this.ERROR_MSG.VALIDITY.CANT_PROCEED_STEP_BY('pack', `packed quantity can't exceed release qty`))
94
105
  }
95
106
 
96
- targetInventory.packedQty = packedQty
97
- targetInventory.status = ORDER_INVENTORY_STATUS.PACKED
98
- await this.updateOrderTargets([targetInventory])
107
+ // Serial Number scanning for batch picking
108
+ if (targetInventory?.refWorksheetId) {
109
+ if (product?.isRequireSerialNumberScanningOutbound) {
110
+ if (!serialNumber || serialNumber == '') {
111
+ throw new Error(this.ERROR_MSG.VALIDITY.CANT_PROCEED_STEP_BY('packing', `require serial number`))
112
+ }
113
+
114
+ let foundSerialNumber: InventoryItem = await this.trxMgr.getRepository(InventoryItem).findOne({
115
+ where: { domain: this.domain, serialNumber: serialNumber, product },
116
+ relations: ['product', 'inventory']
117
+ })
118
+
119
+ if (foundSerialNumber) {
120
+ if (foundSerialNumber.outboundOrderId) {
121
+ let releaseGood: ReleaseGood = await this.trxMgr
122
+ .getRepository(ReleaseGood)
123
+ .findOne({ where: { id: foundSerialNumber.outboundOrderId } })
124
+ throw new Error(`Inventory Item is already picked/packed in ${releaseGood.name}`)
125
+ }
126
+
127
+ foundSerialNumber.status = INVENTORY_STATUS.PACKING
128
+ foundSerialNumber.updater = this.user
129
+ foundSerialNumber.outboundOrderId = releaseGood.id
130
+
131
+ await this.trxMgr.getRepository(InventoryItem).save(foundSerialNumber)
132
+ } else {
133
+ let inventoryItem: InventoryItem = new InventoryItem()
134
+ inventoryItem.name = InventoryNoGenerator.inventoryItemName()
135
+ inventoryItem.serialNumber = serialNumber
136
+ inventoryItem.status = INVENTORY_STATUS.PACKING
137
+ inventoryItem.source = INVENTORY_ITEM_SOURCE.OUTBOUND
138
+ inventoryItem.outboundOrderId = releaseGood.id
139
+ inventoryItem.product = product
140
+ inventoryItem.inventory = inventory
141
+ inventoryItem.domain = this.domain
142
+
143
+ foundSerialNumber = await this.trxMgr.getRepository(InventoryItem).save(inventoryItem)
144
+ }
145
+ }
146
+ }
147
+
148
+ targetInventory.packedQty = Boolean(targetInventory.packedQty) ? targetInventory.packedQty + packedQty : packedQty
149
+ if (targetInventory.packedQty == targetInventory.releaseQty) {
150
+ targetInventory.status = ORDER_INVENTORY_STATUS.PACKED
151
+
152
+ let inventoryItems: InventoryItem = await this.trxMgr
153
+ .getRepository(InventoryItem)
154
+ .find({ where: { outboundOrderId: releaseGood.id } })
155
+
156
+ if (inventoryItems.length > 0) {
157
+ inventoryItems.forEach((itm: InventoryItem) => {
158
+ itm.status = INVENTORY_STATUS.PACKED
159
+ itm.updater = this.user
160
+ })
161
+
162
+ await this.trxMgr.getRepository(InventoryItem).save(inventoryItems)
163
+ }
164
+
165
+ await this.transactionInventory(inventory, releaseGood, 0, 0, INVENTORY_TRANSACTION_TYPE.PACKING)
166
+
167
+ worksheetDetail.status = WORKSHEET_STATUS.DONE
168
+ }
99
169
 
100
- await this.transactionInventory(inventory, releaseGood, 0, 0, INVENTORY_TRANSACTION_TYPE.PACKING)
170
+ await this.updateOrderTargets([targetInventory])
101
171
 
102
- worksheetDetail.status = WORKSHEET_STATUS.DONE
103
172
  worksheetDetail.updater = this.user
104
173
  worksheetDetail = await this.trxMgr.getRepository(WorksheetDetail).save(worksheetDetail)
105
174
  return worksheetDetail
106
175
  }
107
176
 
108
- async scanProductPacking(worksheetDetailName: string, productBarcode: string): Promise<WorksheetDetail> {
177
+ async scanProductPacking(
178
+ worksheetDetailName: string,
179
+ productBarcode: string,
180
+ serialNumber?: string
181
+ ): Promise<WorksheetDetail> {
109
182
  let worksheetDetail: WorksheetDetail = await this.findExecutableWorksheetDetailByName(
110
183
  worksheetDetailName,
111
184
  WORKSHEET_TYPE.PACKING,
@@ -139,11 +212,64 @@ export class PackingWorksheetController extends VasWorksheetController {
139
212
  )
140
213
  if (!productDetail) throw new Error(this.ERROR_MSG.FIND.NO_RESULT(productBarcode))
141
214
 
215
+ // Serial Number scanning for batch picking
216
+ if (targetInventory?.refWorksheetId) {
217
+ if (product?.isRequireSerialNumberScanningOutbound) {
218
+ if (!serialNumber || serialNumber == '') {
219
+ throw new Error(this.ERROR_MSG.VALIDITY.CANT_PROCEED_STEP_BY('packing', `require serial number`))
220
+ }
221
+
222
+ let foundSerialNumber: InventoryItem = await this.trxMgr
223
+ .getRepository(InventoryItem)
224
+ .findOne({ where: { domain: this.domain, serialNumber: serialNumber, product } })
225
+
226
+ if (foundSerialNumber) {
227
+ if (foundSerialNumber.inventoryId !== inventory.id) {
228
+ throw new Error('Serial Number scanned is in another inventory')
229
+ }
230
+
231
+ if (foundSerialNumber.outboundOrderId) {
232
+ let releaseGood: ReleaseGood = await this.trxMgr
233
+ .getRepository(ReleaseGood)
234
+ .findOne({ where: { id: foundSerialNumber.outboundOrderId } })
235
+ throw new Error(`Inventory Item is already picked/packed in ${releaseGood.name}`)
236
+ }
237
+
238
+ foundSerialNumber.status = INVENTORY_STATUS.PACKING
239
+ foundSerialNumber.updater = this.user
240
+ foundSerialNumber.outboundOrderId = releaseGood.id
241
+
242
+ await this.trxMgr.getRepository(InventoryItem).save(foundSerialNumber)
243
+ } else {
244
+ let inventoryItem: InventoryItem = new InventoryItem()
245
+ inventoryItem.name = InventoryNoGenerator.inventoryItemName()
246
+ inventoryItem.serialNumber = serialNumber
247
+ inventoryItem.status = INVENTORY_STATUS.PACKING
248
+ inventoryItem.outboundOrderId = releaseGood.id
249
+ inventoryItem.source = INVENTORY_ITEM_SOURCE.OUTBOUND
250
+ inventoryItem.product = product
251
+ inventoryItem.inventory = inventory
252
+ inventoryItem.domain = this.domain
253
+
254
+ await this.trxMgr.getRepository(InventoryItem).save(inventoryItem)
255
+ }
256
+ }
257
+ }
258
+
142
259
  targetInventory.packedQty = Boolean(targetInventory?.packedQty) ? targetInventory.packedQty + packedQty : packedQty
143
260
  if (targetInventory.packedQty > pickedQty) {
144
261
  throw new Error(this.ERROR_MSG.VALIDITY.CANT_PROCEED_STEP_BY('pack', `packed quantity can't exceed release qty`))
145
262
  }
146
263
 
264
+ targetInventory.packedAt = new Date()
265
+ targetInventory.packedByUser = this.user
266
+
267
+ let packedBy: string[] = targetInventory.packedBy ? targetInventory.packedBy.split(',') : []
268
+ if (!packedBy.find(x => x == this.user.name)) {
269
+ packedBy.push(this.user.name)
270
+ targetInventory.packedBy = packedBy.join(',')
271
+ }
272
+
147
273
  if (targetInventory.packedQty == pickedQty) {
148
274
  targetInventory.status = ORDER_INVENTORY_STATUS.PACKED
149
275
  await this.updateOrderTargets([targetInventory])
@@ -152,6 +278,19 @@ export class PackingWorksheetController extends VasWorksheetController {
152
278
  worksheetDetail.status = WORKSHEET_STATUS.DONE
153
279
  worksheetDetail.updater = this.user
154
280
  await this.trxMgr.getRepository(WorksheetDetail).save(worksheetDetail)
281
+
282
+ let inventoryItems: InventoryItem = await this.trxMgr
283
+ .getRepository(InventoryItem)
284
+ .find({ where: { outboundOrderId: releaseGood.id } })
285
+
286
+ if (inventoryItems.length > 0) {
287
+ inventoryItems.forEach((itm: InventoryItem) => {
288
+ itm.status = INVENTORY_STATUS.PACKED
289
+ itm.updater = this.user
290
+ })
291
+
292
+ await this.trxMgr.getRepository(InventoryItem).save(inventoryItems)
293
+ }
155
294
  } else {
156
295
  await this.trxMgr.getRepository(OrderInventory).save(targetInventory)
157
296
  }
@@ -172,10 +311,86 @@ export class PackingWorksheetController extends VasWorksheetController {
172
311
  ])
173
312
  this.checkRecordValidity(worksheet, { status: WORKSHEET_STATUS.EXECUTING })
174
313
 
314
+ let inventoryItems: InventoryItem = await this.trxMgr
315
+ .getRepository(InventoryItem)
316
+ .find({ where: { outboundOrderId: releaseGood.id } })
317
+
318
+ if (inventoryItems.length > 0) {
319
+ inventoryItems.forEach((itm: InventoryItem) => {
320
+ itm.status = INVENTORY_STATUS.TERMINATED
321
+ itm.updater = this.user
322
+ })
323
+
324
+ await this.trxMgr.getRepository(InventoryItem).save(inventoryItems)
325
+ }
326
+
175
327
  let orderStatus: string
176
328
  if (releaseGood?.courierOption) orderStatus = ORDER_STATUS.DONE
177
329
  else orderStatus = ORDER_STATUS.LOADING
178
330
 
179
331
  return await this.completeWorksheet(worksheet, orderStatus)
180
332
  }
333
+
334
+ async undoSerialNumberPacking(worksheetDetailName: string, inventoryItemId: string): Promise<void> {
335
+ const worksheetDetail: WorksheetDetail = await this.trxMgr.getRepository(WorksheetDetail).findOne({
336
+ where: { name: worksheetDetailName, domain: this.domain, status: Not(Equal(WORKSHEET_STATUS.DEACTIVATED)) },
337
+ relations: [
338
+ 'worksheet',
339
+ 'worksheet.releaseGood',
340
+ 'targetInventory',
341
+ 'targetInventory.product',
342
+ 'targetInventory.inventory'
343
+ ]
344
+ })
345
+
346
+ let targetInventory: OrderInventory = worksheetDetail.targetInventory
347
+ let releaseGood: ReleaseGood = worksheetDetail.worksheet.releaseGood
348
+
349
+ if (
350
+ targetInventory.releaseQty == targetInventory.packedQty &&
351
+ targetInventory.status == ORDER_INVENTORY_STATUS.PACKED
352
+ ) {
353
+ targetInventory.status = INVENTORY_STATUS.PACKING
354
+
355
+ await this.trxMgr
356
+ .getRepository(WorksheetDetail)
357
+ .update({ id: worksheetDetail.id }, { status: WORKSHEET_STATUS.EXECUTING })
358
+ }
359
+
360
+ let inventoryItems: InventoryItem = await this.trxMgr
361
+ .getRepository(InventoryItem)
362
+ .find({ where: { outboundOrderId: releaseGood.id } })
363
+
364
+ let removeInventoryItem: InventoryItem = await this.trxMgr
365
+ .getRepository(InventoryItem)
366
+ .findOne({ where: { id: inventoryItemId } })
367
+
368
+ if (inventoryItems.length > 0) {
369
+ inventoryItems.forEach((itm: InventoryItem) => {
370
+ itm.status = INVENTORY_STATUS.PACKING
371
+ itm.updater = this.user
372
+ })
373
+
374
+ await this.trxMgr.getRepository(InventoryItem).save(inventoryItems)
375
+ }
376
+
377
+ if (removeInventoryItem.source == INVENTORY_ITEM_SOURCE.OUTBOUND) {
378
+ await this.trxMgr.getRepository(InventoryItem).delete(removeInventoryItem.id)
379
+ } else {
380
+ await this.trxMgr.getRepository(InventoryItem).update(
381
+ {
382
+ id: inventoryItemId
383
+ },
384
+ {
385
+ status: INVENTORY_STATUS.STORED,
386
+ outboundOrderId: null,
387
+ updater: this.user
388
+ }
389
+ )
390
+ }
391
+
392
+ targetInventory.packedQty--
393
+ targetInventory.updater = this.user
394
+ await this.updateOrderTargets([targetInventory])
395
+ }
181
396
  }