@things-factory/worksheet-base 4.3.77 → 4.3.79-alpha.1

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 (101) hide show
  1. package/dist-server/controllers/inbound/unloading-worksheet-controller.js +3 -3
  2. package/dist-server/controllers/inbound/unloading-worksheet-controller.js.map +1 -1
  3. package/dist-server/controllers/inspect/cycle-count-worksheet-controller.js +2 -4
  4. package/dist-server/controllers/inspect/cycle-count-worksheet-controller.js.map +1 -1
  5. package/dist-server/controllers/outbound/loading-worksheet-controller.js +10 -4
  6. package/dist-server/controllers/outbound/loading-worksheet-controller.js.map +1 -1
  7. package/dist-server/controllers/outbound/packing-worksheet-controller.js +28 -14
  8. package/dist-server/controllers/outbound/packing-worksheet-controller.js.map +1 -1
  9. package/dist-server/controllers/outbound/picking-worksheet-controller.js +40 -48
  10. package/dist-server/controllers/outbound/picking-worksheet-controller.js.map +1 -1
  11. package/dist-server/controllers/outbound/sorting-worksheet-controller.js +12 -14
  12. package/dist-server/controllers/outbound/sorting-worksheet-controller.js.map +1 -1
  13. package/dist-server/controllers/vas/vas-worksheet-controller.js +1 -2
  14. package/dist-server/controllers/vas/vas-worksheet-controller.js.map +1 -1
  15. package/dist-server/controllers/worksheet-controller.js +16 -4
  16. package/dist-server/controllers/worksheet-controller.js.map +1 -1
  17. package/dist-server/graphql/resolvers/worksheet/batch-picking-worksheet.js +6 -0
  18. package/dist-server/graphql/resolvers/worksheet/batch-picking-worksheet.js.map +1 -1
  19. package/dist-server/graphql/resolvers/worksheet/confirm-cancellation-release-order.js +1 -2
  20. package/dist-server/graphql/resolvers/worksheet/confirm-cancellation-release-order.js.map +1 -1
  21. package/dist-server/graphql/resolvers/worksheet/cycle-count-adjustment.js +6 -6
  22. package/dist-server/graphql/resolvers/worksheet/cycle-count-adjustment.js.map +1 -1
  23. package/dist-server/graphql/resolvers/worksheet/generate-worksheet/generate-multiple-release-good-worksheet.js +3 -3
  24. package/dist-server/graphql/resolvers/worksheet/generate-worksheet/generate-multiple-release-good-worksheet.js.map +1 -1
  25. package/dist-server/graphql/resolvers/worksheet/generate-worksheet/generate-release-good-worksheet.js +4 -4
  26. package/dist-server/graphql/resolvers/worksheet/generate-worksheet/generate-release-good-worksheet.js.map +1 -1
  27. package/dist-server/graphql/resolvers/worksheet/inventories-by-pallet.js +2 -1
  28. package/dist-server/graphql/resolvers/worksheet/inventories-by-pallet.js.map +1 -1
  29. package/dist-server/graphql/resolvers/worksheet/loading/complete-loading.js +67 -28
  30. package/dist-server/graphql/resolvers/worksheet/loading/complete-loading.js.map +1 -1
  31. package/dist-server/graphql/resolvers/worksheet/packing/activate-packing.js +23 -8
  32. package/dist-server/graphql/resolvers/worksheet/packing/activate-packing.js.map +1 -1
  33. package/dist-server/graphql/resolvers/worksheet/packing/complete-packing.js +30 -7
  34. package/dist-server/graphql/resolvers/worksheet/packing/complete-packing.js.map +1 -1
  35. package/dist-server/graphql/resolvers/worksheet/packing/packing.js +23 -8
  36. package/dist-server/graphql/resolvers/worksheet/packing/packing.js.map +1 -1
  37. package/dist-server/graphql/resolvers/worksheet/packing/scan-product-packing.js +25 -8
  38. package/dist-server/graphql/resolvers/worksheet/packing/scan-product-packing.js.map +1 -1
  39. package/dist-server/graphql/resolvers/worksheet/packing-worksheet.js +112 -22
  40. package/dist-server/graphql/resolvers/worksheet/packing-worksheet.js.map +1 -1
  41. package/dist-server/graphql/resolvers/worksheet/pending-cancellation-release-order.js.map +1 -1
  42. package/dist-server/graphql/resolvers/worksheet/picking/activate-picking.js +51 -25
  43. package/dist-server/graphql/resolvers/worksheet/picking/activate-picking.js.map +1 -1
  44. package/dist-server/graphql/resolvers/worksheet/picking/complete-batch-picking.js +2 -2
  45. package/dist-server/graphql/resolvers/worksheet/picking/complete-batch-picking.js.map +1 -1
  46. package/dist-server/graphql/resolvers/worksheet/picking/complete-picking.js +266 -140
  47. package/dist-server/graphql/resolvers/worksheet/picking/complete-picking.js.map +1 -1
  48. package/dist-server/graphql/resolvers/worksheet/picking-worksheet.js +3 -2
  49. package/dist-server/graphql/resolvers/worksheet/picking-worksheet.js.map +1 -1
  50. package/dist-server/graphql/resolvers/worksheet/putaway/complete-putaway.js +39 -14
  51. package/dist-server/graphql/resolvers/worksheet/putaway/complete-putaway.js.map +1 -1
  52. package/dist-server/graphql/resolvers/worksheet/reject-cancellation-release-order.js.map +1 -1
  53. package/dist-server/graphql/resolvers/worksheet/vas-transactions/common-utils.js +17 -17
  54. package/dist-server/graphql/resolvers/worksheet/vas-transactions/common-utils.js.map +1 -1
  55. package/dist-server/graphql/resolvers/worksheet-detail/regenerate-release-good-worksheet-details.js +4 -4
  56. package/dist-server/graphql/resolvers/worksheet-detail/regenerate-release-good-worksheet-details.js.map +1 -1
  57. package/dist-server/graphql/types/worksheet/index.js +5 -2
  58. package/dist-server/graphql/types/worksheet/index.js.map +1 -1
  59. package/dist-server/graphql/types/worksheet/multiple-release-good-worksheet.js +11 -0
  60. package/dist-server/graphql/types/worksheet/multiple-release-good-worksheet.js.map +1 -0
  61. package/dist-server/graphql/types/worksheet-detail/index.js +1 -0
  62. package/dist-server/graphql/types/worksheet-detail/index.js.map +1 -1
  63. package/dist-server/utils/inventory-util.js +1 -98
  64. package/dist-server/utils/inventory-util.js.map +1 -1
  65. package/dist-server/utils/worksheet-util.js +3 -1
  66. package/dist-server/utils/worksheet-util.js.map +1 -1
  67. package/package.json +17 -17
  68. package/server/controllers/inbound/unloading-worksheet-controller.ts +5 -4
  69. package/server/controllers/inspect/cycle-count-worksheet-controller.ts +2 -4
  70. package/server/controllers/outbound/loading-worksheet-controller.ts +9 -3
  71. package/server/controllers/outbound/packing-worksheet-controller.ts +30 -19
  72. package/server/controllers/outbound/picking-worksheet-controller.ts +39 -60
  73. package/server/controllers/outbound/sorting-worksheet-controller.ts +12 -12
  74. package/server/controllers/vas/vas-worksheet-controller.ts +2 -2
  75. package/server/controllers/worksheet-controller.ts +29 -8
  76. package/server/graphql/resolvers/worksheet/batch-picking-worksheet.ts +6 -0
  77. package/server/graphql/resolvers/worksheet/confirm-cancellation-release-order.ts +1 -2
  78. package/server/graphql/resolvers/worksheet/cycle-count-adjustment.ts +2 -2
  79. package/server/graphql/resolvers/worksheet/generate-worksheet/generate-multiple-release-good-worksheet.ts +3 -7
  80. package/server/graphql/resolvers/worksheet/generate-worksheet/generate-release-good-worksheet.ts +5 -4
  81. package/server/graphql/resolvers/worksheet/inventories-by-pallet.ts +3 -1
  82. package/server/graphql/resolvers/worksheet/loading/complete-loading.ts +77 -33
  83. package/server/graphql/resolvers/worksheet/packing/activate-packing.ts +26 -9
  84. package/server/graphql/resolvers/worksheet/packing/complete-packing.ts +34 -9
  85. package/server/graphql/resolvers/worksheet/packing/packing.ts +26 -9
  86. package/server/graphql/resolvers/worksheet/packing/scan-product-packing.ts +28 -9
  87. package/server/graphql/resolvers/worksheet/packing-worksheet.ts +128 -23
  88. package/server/graphql/resolvers/worksheet/pending-cancellation-release-order.ts +1 -1
  89. package/server/graphql/resolvers/worksheet/picking/activate-picking.ts +60 -30
  90. package/server/graphql/resolvers/worksheet/picking/complete-batch-picking.ts +2 -2
  91. package/server/graphql/resolvers/worksheet/picking/complete-picking.ts +288 -149
  92. package/server/graphql/resolvers/worksheet/picking-worksheet.ts +3 -2
  93. package/server/graphql/resolvers/worksheet/putaway/complete-putaway.ts +45 -15
  94. package/server/graphql/resolvers/worksheet/reject-cancellation-release-order.ts +1 -0
  95. package/server/graphql/resolvers/worksheet/vas-transactions/common-utils.ts +3 -2
  96. package/server/graphql/resolvers/worksheet-detail/regenerate-release-good-worksheet-details.ts +4 -1
  97. package/server/graphql/types/worksheet/index.ts +5 -2
  98. package/server/graphql/types/worksheet/multiple-release-good-worksheet.ts +8 -0
  99. package/server/graphql/types/worksheet-detail/index.ts +1 -0
  100. package/server/utils/inventory-util.ts +1 -126
  101. package/server/utils/worksheet-util.ts +3 -1
@@ -1 +1 @@
1
- {"version":3,"file":"worksheet-util.js","sourceRoot":"","sources":["../../server/utils/worksheet-util.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"worksheet-util.js","sourceRoot":"","sources":["../../server/utils/worksheet-util.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@things-factory/worksheet-base",
3
- "version": "4.3.77",
3
+ "version": "4.3.79-alpha.1",
4
4
  "main": "dist-server/index.js",
5
5
  "browser": "client/index.js",
6
6
  "things-factory": true,
@@ -24,21 +24,21 @@
24
24
  "migration:create": "node ../../node_modules/typeorm/cli.js migration:create -d ./server/migrations"
25
25
  },
26
26
  "dependencies": {
27
- "@things-factory/auth-base": "^4.3.76",
28
- "@things-factory/biz-base": "^4.3.76",
29
- "@things-factory/document-template-base": "^4.3.76",
30
- "@things-factory/id-rule-base": "^4.3.76",
31
- "@things-factory/integration-lmd": "^4.3.76",
32
- "@things-factory/integration-marketplace": "^4.3.76",
33
- "@things-factory/integration-sellercraft": "^4.3.76",
34
- "@things-factory/integration-sftp": "^4.3.76",
35
- "@things-factory/marketplace-base": "^4.3.76",
36
- "@things-factory/notification": "^4.3.76",
37
- "@things-factory/sales-base": "^4.3.76",
38
- "@things-factory/setting-base": "^4.3.76",
39
- "@things-factory/shell": "^4.3.76",
40
- "@things-factory/transport-base": "^4.3.76",
41
- "@things-factory/warehouse-base": "^4.3.76"
27
+ "@things-factory/auth-base": "^4.3.79-alpha.0",
28
+ "@things-factory/biz-base": "^4.3.79-alpha.0",
29
+ "@things-factory/document-template-base": "^4.3.79-alpha.0",
30
+ "@things-factory/id-rule-base": "^4.3.79-alpha.0",
31
+ "@things-factory/integration-lmd": "^4.3.79-alpha.0",
32
+ "@things-factory/integration-marketplace": "^4.3.79-alpha.0",
33
+ "@things-factory/integration-sellercraft": "^4.3.79-alpha.0",
34
+ "@things-factory/integration-sftp": "^4.3.79-alpha.0",
35
+ "@things-factory/marketplace-base": "^4.3.79-alpha.1",
36
+ "@things-factory/notification": "^4.3.79-alpha.0",
37
+ "@things-factory/sales-base": "^4.3.79-alpha.1",
38
+ "@things-factory/setting-base": "^4.3.79-alpha.0",
39
+ "@things-factory/shell": "^4.3.79-alpha.0",
40
+ "@things-factory/transport-base": "^4.3.79-alpha.0",
41
+ "@things-factory/warehouse-base": "^4.3.79-alpha.1"
42
42
  },
43
- "gitHead": "365b598107863f454289eda70828ae7ac171f0c9"
43
+ "gitHead": "781aa433ce81cb1cd08d6a3c4abb2934f0a192c1"
44
44
  }
@@ -31,12 +31,13 @@ import {
31
31
  InventoryNoGenerator,
32
32
  Location,
33
33
  Pallet,
34
- Warehouse
34
+ Warehouse,
35
+ generateInventoryHistory
35
36
  } from '@things-factory/warehouse-base'
36
37
 
37
38
  import { RULE_TYPE, WORKSHEET_STATUS, WORKSHEET_TYPE } from '../../constants'
38
39
  import { Worksheet, WorksheetDetail } from '../../entities'
39
- import { DateGenerator, generateInventoryHistory } from '../../utils'
40
+ import { DateGenerator } from '../../utils'
40
41
  import { VasWorksheetController } from '../vas/vas-worksheet-controller'
41
42
 
42
43
  export type UnloadingWorksheetDetail = Partial<WorksheetDetail> & {
@@ -177,7 +178,7 @@ export class UnloadingWorksheetController extends VasWorksheetController {
177
178
  } else {
178
179
  uom = orderProductDetail.uom
179
180
  }
180
- qty = (await this.getChildQty(productDetails, productBarcode, orderProductDetail)) * qty
181
+ qty = (await this.getChildQty(productDetails, productBarcode, orderProductDetail, orderProductDetail)) * qty
181
182
  } else {
182
183
  uom = foundProductDetail.uom
183
184
  qty
@@ -520,7 +521,7 @@ export class UnloadingWorksheetController extends VasWorksheetController {
520
521
  } else {
521
522
  uom = orderProductDetail.uom
522
523
  }
523
- qty = await this.getChildQty(productDetails, productBarcode, orderProductDetail)
524
+ qty = await this.getChildQty(productDetails, productBarcode, orderProductDetail, orderProductDetail)
524
525
  } else {
525
526
  uom = foundProductDetail.uom
526
527
  qty++
@@ -103,16 +103,14 @@ export class CycleCountWorksheetController extends WorksheetController {
103
103
  let keyval = {
104
104
  batchId: 'batch_id',
105
105
  batchIdRef: 'batch_id_ref',
106
- packingType: 'packing_type',
107
- packingSize: 'packing_size',
108
- productId: 'product_id'
106
+ productDetailId: 'product_detail_id'
109
107
  }
110
108
 
111
109
  qb.andWhere(
112
110
  new Brackets(qb => {
113
111
  orderInventory.forEach((itm, idx) => {
114
112
  // sample itm value
115
- // batchId: 'WO00019730', batchIdRef: null, packingType: 'CARBOY', packingSize: 1, productId: '1d679587-c713-42d6-bd0a-74e587e39cc7'
113
+ // batchId: 'WO00019730', batchIdRef: null, productDetailId: '1d679587-c713-42d6-bd0a-74e587e39cc7'
116
114
  qb.orWhere(
117
115
  new Brackets(qb2 => {
118
116
  let first = true
@@ -12,11 +12,10 @@ import {
12
12
  OrderToteItem,
13
13
  OrderTote
14
14
  } from '@things-factory/sales-base'
15
- import { Inventory, INVENTORY_TRANSACTION_TYPE, Tote, TOTE_STATUS } from '@things-factory/warehouse-base'
15
+ import { Inventory, INVENTORY_TRANSACTION_TYPE, Tote, TOTE_STATUS, generateInventoryHistory } from '@things-factory/warehouse-base'
16
16
 
17
17
  import { WORKSHEET_STATUS, WORKSHEET_TYPE } from '../../constants'
18
18
  import { Worksheet, WorksheetDetail } from '../../entities'
19
- import { generateInventoryHistory } from '../../utils'
20
19
  import { VasWorksheetController } from '../vas/vas-worksheet-controller'
21
20
 
22
21
  export class LoadingWorksheetController extends VasWorksheetController {
@@ -112,7 +111,13 @@ export class LoadingWorksheetController extends VasWorksheetController {
112
111
  let worksheetDetail = await this.findExecutableWorksheetDetailByName(
113
112
  worksheetDetails[i].name,
114
113
  WORKSHEET_TYPE.LOADING,
115
- ['worksheet', 'targetInventory', 'targetInventory.inventory', 'targetInventory.product']
114
+ [
115
+ 'worksheet',
116
+ 'targetInventory',
117
+ 'targetInventory.inventory',
118
+ 'targetInventory.product',
119
+ 'targetInventory.productDetail'
120
+ ]
116
121
  )
117
122
 
118
123
  const worksheet: Worksheet = worksheetDetail.worksheet
@@ -170,6 +175,7 @@ export class LoadingWorksheetController extends VasWorksheetController {
170
175
  newTargetInventory.releaseQty = remainQty
171
176
  newTargetInventory.releaseUomValue = remainUomValue
172
177
  newTargetInventory.product = targetInventory.product
178
+ newTargetInventory.productDetail = targetInventory.productDetail
173
179
  newTargetInventory.packingType = targetInventory.packingType
174
180
  newTargetInventory.batchId = targetInventory.batchId
175
181
  newTargetInventory.creator = this.user
@@ -93,13 +93,15 @@ export class PackingWorksheetController extends VasWorksheetController {
93
93
  'targetInventory.releaseGood',
94
94
  'targetInventory.inventory',
95
95
  'targetInventory.inventory.location',
96
- 'targetInventory.product'
96
+ 'targetInventory.product',
97
+ 'targetInventory.productDetail'
97
98
  ]
98
99
  )
99
- const releaseGood: ReleaseGood = worksheetDetail.targetInventory.releaseGood
100
100
  let targetInventory: OrderInventory = worksheetDetail.targetInventory
101
- const product: Product = targetInventory.product
102
101
  let inventory: Inventory = targetInventory.inventory
102
+ const releaseGood: ReleaseGood = worksheetDetail.targetInventory.releaseGood
103
+ const product: Product = targetInventory.product
104
+ const productDetail: ProductDetail = targetInventory.productDetail
103
105
  const pickedQty: number = targetInventory.releaseQty
104
106
 
105
107
  if (packedQty > pickedQty) {
@@ -114,8 +116,7 @@ export class PackingWorksheetController extends VasWorksheetController {
114
116
  }
115
117
 
116
118
  let foundSerialNumber: InventoryItem = await this.trxMgr.getRepository(InventoryItem).findOne({
117
- where: { domain: this.domain, serialNumber: serialNumber, product },
118
- relations: ['product', 'inventory']
119
+ where: { domain: this.domain, serialNumber: serialNumber, productDetail }
119
120
  })
120
121
 
121
122
  if (foundSerialNumber) {
@@ -139,6 +140,7 @@ export class PackingWorksheetController extends VasWorksheetController {
139
140
  inventoryItem.source = INVENTORY_ITEM_SOURCE.OUTBOUND
140
141
  inventoryItem.outboundOrderId = releaseGood.id
141
142
  inventoryItem.product = product
143
+ inventoryItem.productDetail = productDetail
142
144
  inventoryItem.inventory = inventory
143
145
  inventoryItem.domain = this.domain
144
146
 
@@ -193,26 +195,34 @@ export class PackingWorksheetController extends VasWorksheetController {
193
195
  'targetInventory.inventory',
194
196
  'targetInventory.inventory.product',
195
197
  'targetInventory.inventory.product.productDetails',
196
- 'targetInventory.inventory.location'
198
+ 'targetInventory.inventory.product.productDetails.childProductDetail',
199
+ 'targetInventory.inventory.location',
200
+ 'targetInventory.productDetail'
197
201
  ]
198
202
  )
199
- const releaseGood: ReleaseGood = worksheetDetail.targetInventory.releaseGood
200
- const product: Product = worksheetDetail.targetInventory.inventory.product
201
203
  let targetInventory: OrderInventory = worksheetDetail.targetInventory
202
204
  let inventory: Inventory = targetInventory.inventory
203
205
  let packedQty: number = 1
204
- const pickedQty: number = targetInventory.releaseQty
206
+ let pickedQty: number = targetInventory.releaseQty
207
+ const releaseGood: ReleaseGood = targetInventory.releaseGood
208
+ const product: Product = targetInventory.inventory.product
209
+ const productDetail: ProductDetail = targetInventory.productDetail
205
210
 
206
211
  // search for matching product barcode
207
- const productDetail: ProductDetail = product?.productDetails
208
- .filter(detail => !detail.deletedAt)
209
- .find(
210
- detail =>
211
- detail.gtin === productBarcode &&
212
- detail.packingType === inventory.packingType &&
213
- detail.packingSize === inventory.packingSize
214
- )
215
- if (!productDetail) throw new Error(this.ERROR_MSG.FIND.NO_RESULT(productBarcode))
212
+ const filterProductDetails: ProductDetail[] = product?.productDetails.filter(detail => !detail.deletedAt)
213
+ const scannedProductDetail: ProductDetail = filterProductDetails.find(detail => detail.gtin == productBarcode)
214
+ if (!scannedProductDetail) throw new Error(this.ERROR_MSG.FIND.NO_RESULT(productBarcode))
215
+
216
+ // case for scanning parent packing type, packing size
217
+ // when scannedProductDetail id is not the same as productDetail id, then it's not child gtin, proceed to get child qty
218
+ if (scannedProductDetail.id !== productDetail.id && !product?.isRequireSerialNumberScanningOutbound) {
219
+ let childQty = await this.getChildQty(filterProductDetails, productBarcode, productDetail, scannedProductDetail)
220
+ pickedQty *= childQty
221
+ }
222
+
223
+ if (packedQty + targetInventory.packedQty > pickedQty) {
224
+ throw new Error(this.ERROR_MSG.VALIDITY.CANT_PROCEED_STEP_BY('picking', `over release`))
225
+ }
216
226
 
217
227
  // Serial Number scanning for batch picking
218
228
  if (targetInventory?.refWorksheetId) {
@@ -223,7 +233,7 @@ export class PackingWorksheetController extends VasWorksheetController {
223
233
 
224
234
  let foundSerialNumber: InventoryItem = await this.trxMgr
225
235
  .getRepository(InventoryItem)
226
- .findOne({ where: { domain: this.domain, serialNumber: serialNumber, product } })
236
+ .findOne({ where: { domain: this.domain, serialNumber: serialNumber, productDetail } })
227
237
 
228
238
  if (foundSerialNumber) {
229
239
  if (foundSerialNumber.inventoryId !== inventory.id) {
@@ -250,6 +260,7 @@ export class PackingWorksheetController extends VasWorksheetController {
250
260
  inventoryItem.outboundOrderId = releaseGood.id
251
261
  inventoryItem.source = INVENTORY_ITEM_SOURCE.OUTBOUND
252
262
  inventoryItem.product = product
263
+ inventoryItem.productDetail = productDetail
253
264
  inventoryItem.inventory = inventory
254
265
  inventoryItem.domain = this.domain
255
266
 
@@ -40,7 +40,7 @@ import { VasWorksheetController } from '../vas/vas-worksheet-controller'
40
40
  import { SellercraftController } from '../../controllers'
41
41
 
42
42
  export class PickingWorksheetController extends VasWorksheetController {
43
- async generatePickingWorksheet(releaseGoodNo: string): Promise<Worksheet> {
43
+ async generatePickingWorksheet(releaseGoodNo: string, currentStatus: string = null): Promise<Worksheet> {
44
44
  let releaseGood: ReleaseGood = await this.findRefOrder(
45
45
  ReleaseGood,
46
46
  {
@@ -78,7 +78,7 @@ export class PickingWorksheetController extends VasWorksheetController {
78
78
 
79
79
  releaseGood.status = ORDER_STATUS.READY_TO_PICK
80
80
  releaseGood.updater = this.user
81
- await this.updateRefOrder(releaseGood)
81
+ await this.updateRefOrder(releaseGood, null, currentStatus)
82
82
 
83
83
  return worksheet
84
84
  }
@@ -254,12 +254,13 @@ export class PickingWorksheetController extends VasWorksheetController {
254
254
 
255
255
  worksheet = await this.activateWorksheet(worksheet, worksheetDetails, [])
256
256
 
257
- const completeSplitOIs: OrderInventory[] = await this.trxMgr.getRepository(OrderInventory).find({
258
- where: { domain: this.domain, refWorksheetId: worksheet.id, status: ORDER_INVENTORY_STATUS.COMPLETE_SPLIT },
257
+ // retrieve order inventory
258
+ const pickingOrderInventory: OrderInventory[] = await this.trxMgr.getRepository(OrderInventory).find({
259
+ where: { domain: this.domain, refWorksheetId: worksheet.id, status: ORDER_STATUS.PICKING },
259
260
  relations: ['releaseGood']
260
261
  })
261
262
 
262
- let releaseGoods: ReleaseGood[] = completeSplitOIs.map((oi: OrderInventory) => oi.releaseGood)
263
+ let releaseGoods: ReleaseGood[] = pickingOrderInventory.map((oi: OrderInventory) => oi.releaseGood)
263
264
 
264
265
  if (releaseGoods?.length) {
265
266
  releaseGoods = releaseGoods.map((rg: ReleaseGood) => {
@@ -272,11 +273,6 @@ export class PickingWorksheetController extends VasWorksheetController {
272
273
  await this.trxMgr.getRepository(ReleaseGood).save(releaseGoods)
273
274
  }
274
275
 
275
- if (completeSplitOIs?.length) {
276
- const ids: string[] = completeSplitOIs.map((oi: OrderInventory) => oi.id)
277
- await this.trxMgr.getRepository(OrderInventory).delete(ids)
278
- }
279
-
280
276
  return worksheet
281
277
  }
282
278
 
@@ -439,7 +435,8 @@ export class PickingWorksheetController extends VasWorksheetController {
439
435
  'targetInventory.orderProduct',
440
436
  'targetInventory.product.productDetails',
441
437
  'targetInventory.product.productDetails.product',
442
- 'targetInventory.product.productDetails.childProductDetail'
438
+ 'targetInventory.product.productDetails.childProductDetail',
439
+ 'targetInventory.productDetail'
443
440
  ]
444
441
  )
445
442
 
@@ -447,6 +444,7 @@ export class PickingWorksheetController extends VasWorksheetController {
447
444
  let targetInventory: OrderInventory = worksheetDetail.targetInventory
448
445
  let targetProduct: OrderProduct = targetInventory.orderProduct
449
446
  const product: Product = targetInventory.product
447
+ const productDetail: ProductDetail = targetInventory.productDetail
450
448
  let inventory: Inventory = targetInventory.inventory
451
449
  let bizplace: Bizplace = worksheetDetail.worksheet.bizplace
452
450
 
@@ -462,9 +460,6 @@ export class PickingWorksheetController extends VasWorksheetController {
462
460
  if (inventory.cartonId !== cartonId)
463
461
  throw new Error(this.ERROR_MSG.VALIDITY.UNEXPECTED_FIELD_VALUE('Carton ID', cartonId, inventory.cartonId))
464
462
 
465
- const packingType: string = inventory.packingType
466
- const packingSize: number = inventory.packingSize
467
-
468
463
  let pickedQty: number = pickingQty ? pickingQty : 1
469
464
  const releaseQty: number = targetInventory.releaseQty
470
465
 
@@ -472,28 +467,15 @@ export class PickingWorksheetController extends VasWorksheetController {
472
467
 
473
468
  // search for matching product barcode
474
469
  const productDetails: ProductDetail[] = product?.productDetails.filter(detail => !detail.deletedAt)
475
- const isMatchingBarcode: boolean = productDetails.map(detail => detail.gtin).includes(productBarcode)
476
- if (!isMatchingBarcode) throw new Error(this.ERROR_MSG.FIND.NO_RESULT(productBarcode))
470
+ // scannedProductDetail can be child or gtin
471
+ const scannedProductDetail: ProductDetail = productDetails.find(detail => detail.gtin == productBarcode)
472
+ if (!scannedProductDetail) throw new Error(this.ERROR_MSG.FIND.NO_RESULT(productBarcode))
477
473
 
478
474
  // case for scanning parent packing type, packing size
479
- const foundProductDetail: ProductDetail = productDetails.find(
480
- (detail: ProductDetail) =>
481
- detail.gtin === productBarcode &&
482
- detail.packingType === packingType &&
483
- detail.packingSize == packingSize &&
484
- detail.product?.id === product.id
485
- )
486
-
487
- if (!foundProductDetail && !product?.isRequireSerialNumberScanningOutbound) {
488
- const roProductDetail: ProductDetail = productDetails.find(
489
- (parentDetail: ProductDetail) =>
490
- parentDetail.packingType === packingType && parentDetail.packingSize == packingSize
491
- )
492
-
493
- let childQty = await this.getChildQty(productDetails, productBarcode, roProductDetail)
475
+ // when scannedProductDetail id is not the same as productDetail id, then it's not child gtin, proceed to get child qty
476
+ if (scannedProductDetail.id !== productDetail.id && !product?.isRequireSerialNumberScanningOutbound) {
477
+ let childQty = await this.getChildQty(productDetails, productBarcode, productDetail, scannedProductDetail)
494
478
  pickedQty *= childQty
495
- } else if (!foundProductDetail) {
496
- throw new Error(this.ERROR_MSG.FIND.NO_RESULT(productBarcode))
497
479
  }
498
480
 
499
481
  if (pickedQty + targetInventory.pickedQty > releaseQty) {
@@ -545,6 +527,7 @@ export class PickingWorksheetController extends VasWorksheetController {
545
527
  inventoryItem.outboundOrderId = releaseGood.id
546
528
  inventoryItem.source = INVENTORY_ITEM_SOURCE.OUTBOUND
547
529
  inventoryItem.product = product
530
+ inventoryItem.productDetail = productDetail
548
531
  inventoryItem.inventory = inventory
549
532
  inventoryItem.domain = this.domain
550
533
 
@@ -584,13 +567,15 @@ export class PickingWorksheetController extends VasWorksheetController {
584
567
  'targetInventory.orderProduct',
585
568
  'targetInventory.inventory',
586
569
  'targetInventory.inventory.location',
587
- 'targetInventory.product'
570
+ 'targetInventory.product',
571
+ 'targetInventory.productDetail'
588
572
  ]
589
573
  )
590
574
 
591
575
  const releaseGood: ReleaseGood = worksheetDetail.targetInventory.releaseGood
592
576
  let targetInventory: OrderInventory = worksheetDetail.targetInventory
593
577
  const product: Product = targetInventory.product
578
+ const productDetail: ProductDetail = targetInventory.productDetail
594
579
  let inventory: Inventory = targetInventory.inventory
595
580
  let targetProduct: OrderProduct = targetInventory.orderProduct
596
581
  let bizplace: Bizplace = worksheetDetail.worksheet.bizplace
@@ -620,13 +605,13 @@ export class PickingWorksheetController extends VasWorksheetController {
620
605
  })
621
606
 
622
607
  let foundSerialNumber: InventoryItem = await this.trxMgr.getRepository(InventoryItem).findOne({
623
- where: { domain: this.domain, serialNumber: serialNumber, product },
624
- relations: ['product', 'inventory']
608
+ where: { domain: this.domain, serialNumber: serialNumber, productDetail },
609
+ relations: ['product', 'productDetail', 'inventory']
625
610
  })
626
611
 
627
612
  let scannedPalletIdInventory: Inventory = await this.trxMgr
628
613
  .getRepository(Inventory)
629
- .findOne({ where: { domain: this.domain, palletId }, relations: ['product'] })
614
+ .findOne({ where: { domain: this.domain, palletId }, relations: ['productDetail'] })
630
615
 
631
616
  if (foundSerialNumber) {
632
617
  if (foundSerialNumber.outboundOrderId) {
@@ -653,6 +638,7 @@ export class PickingWorksheetController extends VasWorksheetController {
653
638
  inventoryItem.source = INVENTORY_ITEM_SOURCE.OUTBOUND
654
639
  inventoryItem.outboundOrderId = releaseGood.id
655
640
  inventoryItem.product = product
641
+ inventoryItem.productDetail = productDetail
656
642
  inventoryItem.inventory = scannedPalletIdInventory
657
643
  inventoryItem.domain = this.domain
658
644
 
@@ -678,8 +664,7 @@ export class PickingWorksheetController extends VasWorksheetController {
678
664
  )
679
665
  } else if (
680
666
  scannedPalletIdInventory.batchId == inventory.batchId &&
681
- scannedPalletIdInventory.product.id == product.id &&
682
- scannedPalletIdInventory.product.packingType == product.packingType
667
+ scannedPalletIdInventory.productDetail.id == productDetail.id
683
668
  ) {
684
669
  //if replacement order inventory does not exist
685
670
  await this.serialNumberReplacement(
@@ -687,6 +672,7 @@ export class PickingWorksheetController extends VasWorksheetController {
687
672
  scannedPalletIdInventory,
688
673
  releaseGood,
689
674
  product,
675
+ productDetail,
690
676
  worksheetDetail,
691
677
  foundSerialNumber
692
678
  )
@@ -862,16 +848,19 @@ export class PickingWorksheetController extends VasWorksheetController {
862
848
  'worksheetDetails.targetInventory.releaseGood',
863
849
  'worksheetDetails.targetInventory.inventory',
864
850
  'worksheetDetails.targetInventory.inventory.location',
865
- 'worksheetDetails.targetInventory.product',
851
+ 'worksheetDetails.targetInventory.productDetail',
852
+ 'worksheetDetails.targetInventory.productDetail.product',
866
853
  'worksheetDetails.targetInventory.product.productDetails',
867
854
  'worksheetDetails.targetInventory.product.productDetails.childProductDetail'
868
855
  ]
869
856
  })
870
857
 
871
858
  const worksheetDetails: WorksheetDetail[] = worksheet.worksheetDetails
872
- const product: Product = worksheetDetails
859
+ const productDetail: ProductDetail = worksheetDetails
873
860
  .map((wsd: WorksheetDetail) => wsd.targetInventory.product)
874
- .find((product: Product) => product.id === inventory.product.id)
861
+ .find((productDetail: ProductDetail) => productDetail.id === inventory.productDetail.id)
862
+
863
+ const product: Product = productDetail.product
875
864
 
876
865
  const batchId: string = inventory.batchId
877
866
  const packingType: string = inventory.packingType
@@ -890,26 +879,14 @@ export class PickingWorksheetController extends VasWorksheetController {
890
879
 
891
880
  // search for matching product barcode
892
881
  const productDetails: ProductDetail[] = product?.productDetails.filter(detail => !detail.deletedAt)
893
- const isMatchingBarcode: boolean = productDetails.map(detail => detail.gtin).includes(productBarcode)
894
- if (!isMatchingBarcode) throw new Error(this.ERROR_MSG.FIND.NO_RESULT(`GTIN (${productBarcode})`))
882
+ // scannedProductDetail can be child or gtin
883
+ const scannedProductDetail: ProductDetail = productDetails.find(detail => detail.gtin == productBarcode)
884
+ if (!scannedProductDetail) throw new Error(this.ERROR_MSG.FIND.NO_RESULT(productBarcode))
895
885
 
896
886
  // case for scanning parent packing type, packing size
897
- const foundProductDetail: ProductDetail = productDetails.find(
898
- (detail: ProductDetail) =>
899
- detail.gtin === productBarcode && detail.packingType === packingType && detail.packingSize == packingSize
900
- )
901
-
902
- if (!foundProductDetail) {
903
- const roProductDetail: ProductDetail = productDetails.find(
904
- (parentDetail: ProductDetail) =>
905
- parentDetail.packingType === packingType && parentDetail.packingSize == packingSize
906
- )
907
- if (!roProductDetail)
908
- throw new Error(
909
- this.ERROR_MSG.FIND.NO_RESULT(`Packing Type ( ${packingType}) or Packing Size (${packingSize})`)
910
- )
911
-
912
- let childQty = await this.getChildQty(productDetails, productBarcode, roProductDetail)
887
+ // when scannedProductDetail id is not the same as productDetail id, then it's not child gtin, proceed to get child qty
888
+ if (scannedProductDetail.id !== productDetail.id) {
889
+ let childQty = await this.getChildQty(productDetails, productBarcode, productDetail, scannedProductDetail)
913
890
  pickedQty *= childQty
914
891
  }
915
892
 
@@ -1304,6 +1281,7 @@ export class PickingWorksheetController extends VasWorksheetController {
1304
1281
  scannedPalletIdInventory,
1305
1282
  releaseGood,
1306
1283
  product,
1284
+ productDetail,
1307
1285
  worksheetDetail,
1308
1286
  foundSerialNumber
1309
1287
  ) {
@@ -1368,6 +1346,7 @@ export class PickingWorksheetController extends VasWorksheetController {
1368
1346
  releaseUomValue: newOrderInventoryReleaseUomValue,
1369
1347
  pickedQty: 1,
1370
1348
  product,
1349
+ productDetail,
1371
1350
  inventory: scannedPalletIdInventory,
1372
1351
  creator: this.user,
1373
1352
  updater: this.user
@@ -95,7 +95,8 @@ export class SortingWorksheetController extends VasWorksheetController {
95
95
  'worksheetDetails.targetInventory.inventory.product',
96
96
  'worksheetDetails.targetInventory.inventory.product.productDetails',
97
97
  'worksheetDetails.targetInventory.inventory.product.productDetails.product',
98
- 'worksheetDetails.targetInventory.releaseGood'
98
+ 'worksheetDetails.targetInventory.releaseGood',
99
+ 'worksheetDetails.targetInventory.productDetail'
99
100
  ]
100
101
  })
101
102
 
@@ -118,17 +119,12 @@ export class SortingWorksheetController extends VasWorksheetController {
118
119
  const matchingProductDetail: ProductDetail = productDetails.find(
119
120
  (productDetail: ProductDetail) => productDetail.gtin === productBarcode
120
121
  )
121
- if (!matchingProductDetail) throw new Error('Unable to find product barcode.')
122
+ if (!matchingProductDetail) throw new Error(this.ERROR_MSG.FIND.NO_RESULT(productBarcode))
122
123
  const packingType: string = matchingProductDetail.packingType
123
124
  const packingSize: number = matchingProductDetail.packingSize
124
- if (!matchingProductDetail)
125
- throw new Error(this.ERROR_MSG.PRODUCT.BARCODE_NOT_EXIST(productBarcode, packingType, packingSize))
126
125
 
127
126
  let matchingOIs: OrderInventory[] = orderInventories.filter(
128
- (oi: OrderInventory) =>
129
- oi.packingType === packingType &&
130
- oi.packingSize === packingSize &&
131
- oi.product?.id === matchingProductDetail.product?.id
127
+ (oi: OrderInventory) => oi.productDetail.id === matchingProductDetail.id
132
128
  )
133
129
 
134
130
  let sortedQty: number = 1
@@ -142,6 +138,7 @@ export class SortingWorksheetController extends VasWorksheetController {
142
138
  const inventory: Inventory = matchingOI.inventory
143
139
  const releaseGood: ReleaseGood = matchingOI.releaseGood
144
140
  const product: Product = inventory.product
141
+ const productDetail: ProductDetail = matchingOI.productDetail
145
142
 
146
143
  if (releaseQty != matchingOI?.sortedQty && sortedQty == 1) {
147
144
  // Serial Number scanning for batch picking
@@ -153,7 +150,7 @@ export class SortingWorksheetController extends VasWorksheetController {
153
150
 
154
151
  let foundSerialNumber: InventoryItem = await this.trxMgr
155
152
  .getRepository(InventoryItem)
156
- .findOne({ where: { domain: this.domain, serialNumber: serialNumber, product } })
153
+ .findOne({ where: { domain: this.domain, serialNumber: serialNumber, productDetail } })
157
154
 
158
155
  if (foundSerialNumber) {
159
156
  if (foundSerialNumber.inventoryId !== inventory.id) {
@@ -180,6 +177,7 @@ export class SortingWorksheetController extends VasWorksheetController {
180
177
  inventoryItem.outboundOrderId = releaseGood.id
181
178
  inventoryItem.source = INVENTORY_ITEM_SOURCE.OUTBOUND
182
179
  inventoryItem.product = product
180
+ inventoryItem.productDetail = productDetail
183
181
  inventoryItem.inventory = inventory
184
182
  inventoryItem.domain = this.domain
185
183
 
@@ -263,7 +261,8 @@ export class SortingWorksheetController extends VasWorksheetController {
263
261
  'worksheetDetails.targetInventory.inventory.product',
264
262
  'worksheetDetails.targetInventory.inventory.product.productDetails',
265
263
  'worksheetDetails.targetInventory.inventory.product.productDetails.product',
266
- 'worksheetDetails.targetInventory.releaseGood'
264
+ 'worksheetDetails.targetInventory.releaseGood',
265
+ 'worksheetDetails.targetInventory.productDetail'
267
266
  ]
268
267
  })
269
268
 
@@ -283,6 +282,7 @@ export class SortingWorksheetController extends VasWorksheetController {
283
282
  const inventory: Inventory = matchingOI.inventory
284
283
  const releaseGood: ReleaseGood = matchingOI.releaseGood
285
284
  const product: Product = matchingOI.inventory.product
285
+ const productDetail: ProductDetail = matchingOI.productDetail
286
286
  const packingType: string = matchingOI.packingType
287
287
  const packingSize: number = matchingOI.packingSize
288
288
 
@@ -292,8 +292,7 @@ export class SortingWorksheetController extends VasWorksheetController {
292
292
  }
293
293
 
294
294
  let foundSerialNumber: InventoryItem = await this.trxMgr.getRepository(InventoryItem).findOne({
295
- where: { domain: this.domain, serialNumber: serialNumber, product },
296
- relations: ['product', 'inventory']
295
+ where: { domain: this.domain, serialNumber: serialNumber, productDetail }
297
296
  })
298
297
 
299
298
  if (foundSerialNumber) {
@@ -317,6 +316,7 @@ export class SortingWorksheetController extends VasWorksheetController {
317
316
  inventoryItem.source = INVENTORY_ITEM_SOURCE.OUTBOUND
318
317
  inventoryItem.outboundOrderId = releaseGood.id
319
318
  inventoryItem.product = product
319
+ inventoryItem.productDetail = productDetail
320
320
  inventoryItem.inventory = inventory
321
321
  inventoryItem.domain = this.domain
322
322
 
@@ -22,7 +22,8 @@ import {
22
22
  InventoryNoGenerator,
23
23
  Location,
24
24
  LOCATION_TYPE,
25
- Warehouse
25
+ Warehouse,
26
+ generateInventoryHistory
26
27
  } from '@things-factory/warehouse-base'
27
28
 
28
29
  import { WORKSHEET_STATUS, WORKSHEET_TYPE } from '../../constants'
@@ -36,7 +37,6 @@ import {
36
37
  RefOrderType
37
38
  } from '../../graphql/resolvers/worksheet/vas-transactions'
38
39
  import { PackingUnits } from '../../graphql/resolvers/worksheet/vas-transactions/interfaces/repackaging'
39
- import { generateInventoryHistory } from '../../utils'
40
40
  import { ReferenceOrderType, WorksheetController } from '../worksheet-controller'
41
41
 
42
42
  type CompleteTransactionType = (trxMgr: EntityManager, orderVas: OrderVas, user: User) => Promise<void>