@things-factory/worksheet-base 4.3.80-alpha.5 → 4.3.83

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 (94) hide show
  1. package/dist-server/controllers/inbound/unloading-worksheet-controller.js +49 -49
  2. package/dist-server/controllers/inbound/unloading-worksheet-controller.js.map +1 -1
  3. package/dist-server/controllers/inspect/cycle-count-worksheet-controller.js +4 -2
  4. package/dist-server/controllers/inspect/cycle-count-worksheet-controller.js.map +1 -1
  5. package/dist-server/controllers/outbound/loading-worksheet-controller.js +4 -10
  6. package/dist-server/controllers/outbound/loading-worksheet-controller.js.map +1 -1
  7. package/dist-server/controllers/outbound/packing-worksheet-controller.js +20 -22
  8. package/dist-server/controllers/outbound/packing-worksheet-controller.js.map +1 -1
  9. package/dist-server/controllers/outbound/picking-worksheet-controller.js +151 -71
  10. package/dist-server/controllers/outbound/picking-worksheet-controller.js.map +1 -1
  11. package/dist-server/controllers/outbound/sorting-worksheet-controller.js +14 -12
  12. package/dist-server/controllers/outbound/sorting-worksheet-controller.js.map +1 -1
  13. package/dist-server/controllers/vas/vas-worksheet-controller.js +2 -1
  14. package/dist-server/controllers/vas/vas-worksheet-controller.js.map +1 -1
  15. package/dist-server/controllers/worksheet-controller.js +37 -2
  16. package/dist-server/controllers/worksheet-controller.js.map +1 -1
  17. package/dist-server/entities/worksheet-detail.js +2 -1
  18. package/dist-server/entities/worksheet-detail.js.map +1 -1
  19. package/dist-server/graphql/resolvers/worksheet/batch-picking-worksheet.js +0 -6
  20. package/dist-server/graphql/resolvers/worksheet/batch-picking-worksheet.js.map +1 -1
  21. package/dist-server/graphql/resolvers/worksheet/confirm-cancellation-release-order.js +2 -1
  22. package/dist-server/graphql/resolvers/worksheet/confirm-cancellation-release-order.js.map +1 -1
  23. package/dist-server/graphql/resolvers/worksheet/cycle-count-adjustment.js +6 -6
  24. package/dist-server/graphql/resolvers/worksheet/cycle-count-adjustment.js.map +1 -1
  25. package/dist-server/graphql/resolvers/worksheet/inventories-by-pallet.js +1 -2
  26. package/dist-server/graphql/resolvers/worksheet/inventories-by-pallet.js.map +1 -1
  27. package/dist-server/graphql/resolvers/worksheet/loading/complete-loading.js +28 -67
  28. package/dist-server/graphql/resolvers/worksheet/loading/complete-loading.js.map +1 -1
  29. package/dist-server/graphql/resolvers/worksheet/packing/activate-packing.js +8 -23
  30. package/dist-server/graphql/resolvers/worksheet/packing/activate-packing.js.map +1 -1
  31. package/dist-server/graphql/resolvers/worksheet/packing/complete-packing.js +7 -30
  32. package/dist-server/graphql/resolvers/worksheet/packing/complete-packing.js.map +1 -1
  33. package/dist-server/graphql/resolvers/worksheet/packing/packing.js +8 -23
  34. package/dist-server/graphql/resolvers/worksheet/packing/packing.js.map +1 -1
  35. package/dist-server/graphql/resolvers/worksheet/packing/scan-product-packing.js +8 -25
  36. package/dist-server/graphql/resolvers/worksheet/packing/scan-product-packing.js.map +1 -1
  37. package/dist-server/graphql/resolvers/worksheet/packing-worksheet.js +12 -59
  38. package/dist-server/graphql/resolvers/worksheet/packing-worksheet.js.map +1 -1
  39. package/dist-server/graphql/resolvers/worksheet/picking/activate-picking.js +25 -51
  40. package/dist-server/graphql/resolvers/worksheet/picking/activate-picking.js.map +1 -1
  41. package/dist-server/graphql/resolvers/worksheet/picking/complete-batch-picking.js +2 -2
  42. package/dist-server/graphql/resolvers/worksheet/picking/complete-batch-picking.js.map +1 -1
  43. package/dist-server/graphql/resolvers/worksheet/picking/complete-picking.js +118 -262
  44. package/dist-server/graphql/resolvers/worksheet/picking/complete-picking.js.map +1 -1
  45. package/dist-server/graphql/resolvers/worksheet/picking/scan-product-picking.js +4 -7
  46. package/dist-server/graphql/resolvers/worksheet/picking/scan-product-picking.js.map +1 -1
  47. package/dist-server/graphql/resolvers/worksheet/picking-worksheet.js +2 -3
  48. package/dist-server/graphql/resolvers/worksheet/picking-worksheet.js.map +1 -1
  49. package/dist-server/graphql/resolvers/worksheet/proceed-extra-products.js +4 -6
  50. package/dist-server/graphql/resolvers/worksheet/proceed-extra-products.js.map +1 -1
  51. package/dist-server/graphql/resolvers/worksheet/putaway/complete-putaway.js +14 -39
  52. package/dist-server/graphql/resolvers/worksheet/putaway/complete-putaway.js.map +1 -1
  53. package/dist-server/graphql/resolvers/worksheet/transfer.js +9 -9
  54. package/dist-server/graphql/resolvers/worksheet/transfer.js.map +1 -1
  55. package/dist-server/graphql/resolvers/worksheet/vas-transactions/common-utils.js +17 -17
  56. package/dist-server/graphql/resolvers/worksheet/vas-transactions/common-utils.js.map +1 -1
  57. package/dist-server/graphql/resolvers/worksheet-detail/regenerate-release-good-worksheet-details.js +4 -4
  58. package/dist-server/graphql/resolvers/worksheet-detail/regenerate-release-good-worksheet-details.js.map +1 -1
  59. package/dist-server/graphql/types/worksheet-detail/index.js +0 -1
  60. package/dist-server/graphql/types/worksheet-detail/index.js.map +1 -1
  61. package/dist-server/utils/inventory-util.js +98 -1
  62. package/dist-server/utils/inventory-util.js.map +1 -1
  63. package/package.json +17 -17
  64. package/server/controllers/inbound/unloading-worksheet-controller.ts +70 -49
  65. package/server/controllers/inspect/cycle-count-worksheet-controller.ts +4 -2
  66. package/server/controllers/outbound/loading-worksheet-controller.ts +3 -9
  67. package/server/controllers/outbound/packing-worksheet-controller.ts +31 -23
  68. package/server/controllers/outbound/picking-worksheet-controller.ts +212 -85
  69. package/server/controllers/outbound/sorting-worksheet-controller.ts +12 -12
  70. package/server/controllers/vas/vas-worksheet-controller.ts +2 -2
  71. package/server/controllers/worksheet-controller.ts +49 -5
  72. package/server/entities/worksheet-detail.ts +5 -0
  73. package/server/graphql/resolvers/worksheet/batch-picking-worksheet.ts +0 -6
  74. package/server/graphql/resolvers/worksheet/confirm-cancellation-release-order.ts +2 -1
  75. package/server/graphql/resolvers/worksheet/cycle-count-adjustment.ts +2 -2
  76. package/server/graphql/resolvers/worksheet/inventories-by-pallet.ts +1 -3
  77. package/server/graphql/resolvers/worksheet/loading/complete-loading.ts +33 -77
  78. package/server/graphql/resolvers/worksheet/packing/activate-packing.ts +9 -26
  79. package/server/graphql/resolvers/worksheet/packing/complete-packing.ts +9 -34
  80. package/server/graphql/resolvers/worksheet/packing/packing.ts +9 -26
  81. package/server/graphql/resolvers/worksheet/packing/scan-product-packing.ts +9 -28
  82. package/server/graphql/resolvers/worksheet/packing-worksheet.ts +13 -68
  83. package/server/graphql/resolvers/worksheet/picking/activate-picking.ts +30 -60
  84. package/server/graphql/resolvers/worksheet/picking/complete-batch-picking.ts +2 -2
  85. package/server/graphql/resolvers/worksheet/picking/complete-picking.ts +130 -288
  86. package/server/graphql/resolvers/worksheet/picking/scan-product-picking.ts +10 -30
  87. package/server/graphql/resolvers/worksheet/picking-worksheet.ts +2 -3
  88. package/server/graphql/resolvers/worksheet/proceed-extra-products.ts +4 -5
  89. package/server/graphql/resolvers/worksheet/putaway/complete-putaway.ts +15 -45
  90. package/server/graphql/resolvers/worksheet/transfer.ts +16 -18
  91. package/server/graphql/resolvers/worksheet/vas-transactions/common-utils.ts +2 -3
  92. package/server/graphql/resolvers/worksheet-detail/regenerate-release-good-worksheet-details.ts +1 -4
  93. package/server/graphql/types/worksheet-detail/index.ts +0 -1
  94. package/server/utils/inventory-util.ts +126 -1
@@ -1,10 +1,107 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isInventoryExpiring = exports.inventoriesByStrategy = exports.checkPalletIdenticallity = exports.checkPalletDuplication = exports.switchLocationStatus = void 0;
3
+ exports.isInventoryExpiring = exports.inventoriesByStrategy = exports.checkPalletIdenticallity = exports.checkPalletDuplication = exports.switchLocationStatus = exports.generateInventoryHistory = void 0;
4
4
  const typeorm_1 = require("typeorm");
5
5
  const product_base_1 = require("@things-factory/product-base");
6
6
  const warehouse_base_1 = require("@things-factory/warehouse-base");
7
7
  /**
8
+ * @description It will insert new record into inventory histories table.
9
+ * seq will be calculated based on number of records for one specific pallet id (provided by inventory object)
10
+ */
11
+ async function generateInventoryHistory(inventory, refOrder, transactionType, qty = 0, uomValue = 0, user, trxMgr, targetInventory = {}) {
12
+ var _a, _b, _c;
13
+ const invHistoryRepo = (trxMgr === null || trxMgr === void 0 ? void 0 : trxMgr.getRepository(warehouse_base_1.InventoryHistory)) || (0, typeorm_1.getRepository)(warehouse_base_1.InventoryHistory);
14
+ const invRepo = (trxMgr === null || trxMgr === void 0 ? void 0 : trxMgr.getRepository(warehouse_base_1.Inventory)) || (0, typeorm_1.getRepository)(warehouse_base_1.Inventory);
15
+ if (!(inventory === null || inventory === void 0 ? void 0 : inventory.id))
16
+ throw new Error(`Can't find out ID of inventory.`);
17
+ if (!(refOrder === null || refOrder === void 0 ? void 0 : refOrder.id) || !refOrder.name)
18
+ throw new Error(`Can't find out ID or Name of Reference Order`);
19
+ if (!(inventory === null || inventory === void 0 ? void 0 : inventory.domain) ||
20
+ !(inventory === null || inventory === void 0 ? void 0 : inventory.bizplace) ||
21
+ !((_a = inventory === null || inventory === void 0 ? void 0 : inventory.product) === null || _a === void 0 ? void 0 : _a.id) ||
22
+ !((_b = inventory === null || inventory === void 0 ? void 0 : inventory.warehouse) === null || _b === void 0 ? void 0 : _b.id) ||
23
+ !((_c = inventory === null || inventory === void 0 ? void 0 : inventory.location) === null || _c === void 0 ? void 0 : _c.id)) {
24
+ inventory = await invRepo.findOne({
25
+ where: { id: inventory.id },
26
+ relations: ['domain', 'bizplace', 'product', 'warehouse', 'location']
27
+ });
28
+ }
29
+ const domain = inventory.domain;
30
+ const location = inventory.location;
31
+ const seq = await invHistoryRepo.count({ domain: inventory.domain, palletId: inventory.palletId });
32
+ let openingQty = 0;
33
+ let openingUomValue = 0;
34
+ if (seq) {
35
+ const lastInvHistory = await invHistoryRepo.findOne({
36
+ domain: inventory.domain,
37
+ palletId: inventory.palletId,
38
+ seq: seq - 1
39
+ });
40
+ openingQty = lastInvHistory.openingQty + lastInvHistory.qty;
41
+ openingUomValue = lastInvHistory.openingUomValue + lastInvHistory.uomValue;
42
+ }
43
+ if (transactionType == 'PICKING' || transactionType == 'UNLOADING') {
44
+ const [findSameOrderHistory, total] = await invHistoryRepo.findAndCount({
45
+ domain: inventory.domain,
46
+ palletId: inventory.palletId,
47
+ refOrderId: refOrder.id
48
+ });
49
+ if (findSameOrderHistory) {
50
+ let prevTotalQty = 0;
51
+ let prevTotalUomValue = 0;
52
+ for (let oh of findSameOrderHistory) {
53
+ prevTotalQty += oh.qty;
54
+ prevTotalUomValue += oh.uomValue;
55
+ }
56
+ qty -= prevTotalQty;
57
+ uomValue -= prevTotalUomValue;
58
+ }
59
+ }
60
+ let inventoryHistory = new warehouse_base_1.InventoryHistory();
61
+ inventoryHistory.name = warehouse_base_1.InventoryNoGenerator.inventoryHistoryName();
62
+ inventoryHistory.description = inventory.description;
63
+ inventoryHistory.seq = seq;
64
+ inventoryHistory.palletId = inventory.palletId;
65
+ inventoryHistory.cartonId = inventory.cartonId;
66
+ inventoryHistory.batchId = inventory.batchId;
67
+ inventoryHistory.batchIdRef = inventory.batchIdRef;
68
+ inventoryHistory.status = inventory.status;
69
+ inventoryHistory.transactionType = transactionType;
70
+ inventoryHistory.refOrderId = (refOrder === null || refOrder === void 0 ? void 0 : refOrder.id) || null;
71
+ inventoryHistory.orderNo = (refOrder === null || refOrder === void 0 ? void 0 : refOrder.name) || null;
72
+ inventoryHistory.orderRefNo = (refOrder === null || refOrder === void 0 ? void 0 : refOrder.refNo) || null;
73
+ inventoryHistory.inventory = inventory;
74
+ inventoryHistory.targetInventory = targetInventory;
75
+ inventoryHistory.product = inventory.product;
76
+ inventoryHistory.reusablePallet = inventory.reusablePallet;
77
+ inventoryHistory.zone = inventory.zone;
78
+ inventoryHistory.warehouse = inventory.warehouse;
79
+ inventoryHistory.location = inventory.location;
80
+ inventoryHistory.expirationDate = inventory.expirationDate;
81
+ inventoryHistory.packingType = inventory.packingType;
82
+ inventoryHistory.packingSize = inventory.packingSize;
83
+ inventoryHistory.uom = inventory.uom;
84
+ inventoryHistory.qty = qty;
85
+ inventoryHistory.openingQty = openingQty;
86
+ inventoryHistory.uomValue = uomValue;
87
+ inventoryHistory.openingUomValue = openingUomValue;
88
+ inventoryHistory.unitCost = inventory.unitCost;
89
+ inventoryHistory.domain = inventory.domain;
90
+ inventoryHistory.bizplace = inventory.bizplace;
91
+ inventoryHistory.creator = user;
92
+ inventoryHistory.updater = user;
93
+ inventoryHistory = await invHistoryRepo.save(inventoryHistory);
94
+ if (inventory.lastSeq !== seq) {
95
+ await invRepo.save({
96
+ id: inventory.id,
97
+ lastSeq: inventoryHistory.seq,
98
+ updater: user
99
+ });
100
+ }
101
+ await switchLocationStatus(domain, location, user, trxMgr);
102
+ return inventoryHistory;
103
+ }
104
+ exports.generateInventoryHistory = generateInventoryHistory;
8
105
  /**
9
106
  * @description: Check location emptiness and update status of location
10
107
  * @param domain
@@ -1 +1 @@
1
- {"version":3,"file":"inventory-util.js","sourceRoot":"","sources":["../../server/utils/inventory-util.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"inventory-util.js","sourceRoot":"","sources":["../../server/utils/inventory-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.80-alpha.5",
3
+ "version": "4.3.83",
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.80-alpha.5",
28
- "@things-factory/biz-base": "^4.3.80-alpha.5",
29
- "@things-factory/document-template-base": "^4.3.80-alpha.5",
30
- "@things-factory/id-rule-base": "^4.3.80-alpha.5",
31
- "@things-factory/integration-lmd": "^4.3.80-alpha.5",
32
- "@things-factory/integration-marketplace": "^4.3.80-alpha.5",
33
- "@things-factory/integration-sellercraft": "^4.3.80-alpha.5",
34
- "@things-factory/integration-sftp": "^4.3.80-alpha.5",
35
- "@things-factory/marketplace-base": "^4.3.80-alpha.5",
36
- "@things-factory/notification": "^4.3.80-alpha.5",
37
- "@things-factory/sales-base": "^4.3.80-alpha.5",
38
- "@things-factory/setting-base": "^4.3.80-alpha.5",
39
- "@things-factory/shell": "^4.3.80-alpha.5",
40
- "@things-factory/transport-base": "^4.3.80-alpha.5",
41
- "@things-factory/warehouse-base": "^4.3.80-alpha.5"
27
+ "@things-factory/auth-base": "^4.3.78",
28
+ "@things-factory/biz-base": "^4.3.78",
29
+ "@things-factory/document-template-base": "^4.3.78",
30
+ "@things-factory/id-rule-base": "^4.3.78",
31
+ "@things-factory/integration-lmd": "^4.3.78",
32
+ "@things-factory/integration-marketplace": "^4.3.78",
33
+ "@things-factory/integration-sellercraft": "^4.3.79",
34
+ "@things-factory/integration-sftp": "^4.3.78",
35
+ "@things-factory/marketplace-base": "^4.3.81",
36
+ "@things-factory/notification": "^4.3.78",
37
+ "@things-factory/sales-base": "^4.3.83",
38
+ "@things-factory/setting-base": "^4.3.78",
39
+ "@things-factory/shell": "^4.3.78",
40
+ "@things-factory/transport-base": "^4.3.78",
41
+ "@things-factory/warehouse-base": "^4.3.83"
42
42
  },
43
- "gitHead": "62777e60c67b5a4628391261badd6b6f2ee0a7af"
43
+ "gitHead": "afffa43403f362b29b2040a7fefa8dea531bfb9a"
44
44
  }
@@ -19,8 +19,8 @@ import {
19
19
  VAS_TARGET_TYPES,
20
20
  VAS_TYPES
21
21
  } from '@things-factory/sales-base'
22
- import { PartnerSetting, Setting } from '@things-factory/setting-base'
23
22
  import { Domain } from '@things-factory/shell'
23
+ import { PartnerSetting, Setting } from '@things-factory/setting-base'
24
24
  import {
25
25
  Inventory,
26
26
  INVENTORY_ITEM_SOURCE,
@@ -31,13 +31,12 @@ import {
31
31
  InventoryNoGenerator,
32
32
  Location,
33
33
  Pallet,
34
- Warehouse,
35
- generateInventoryHistory
34
+ Warehouse
36
35
  } from '@things-factory/warehouse-base'
37
36
 
38
37
  import { RULE_TYPE, WORKSHEET_STATUS, WORKSHEET_TYPE } from '../../constants'
39
38
  import { Worksheet, WorksheetDetail } from '../../entities'
40
- import { DateGenerator } from '../../utils'
39
+ import { DateGenerator, generateInventoryHistory } from '../../utils'
41
40
  import { VasWorksheetController } from '../vas/vas-worksheet-controller'
42
41
 
43
42
  export type UnloadingWorksheetDetail = Partial<WorksheetDetail> & {
@@ -96,13 +95,11 @@ export class UnloadingWorksheetController extends VasWorksheetController {
96
95
  'worksheet.bufferLocation.warehouse',
97
96
  'targetProduct',
98
97
  'targetProduct.product',
99
- 'targetProduct.productDetail',
100
98
  'targetProduct.product.productDetails',
101
99
  'targetProduct.product.productDetails.childProductDetail',
102
100
  'targetInventory',
103
101
  'targetInventory.inventory',
104
102
  'targetInventory.product',
105
- 'targetInventory.productDetail',
106
103
  'targetInventory.product.productDetails',
107
104
  'targetInventory.product.productDetails.childProductDetail'
108
105
  ]
@@ -124,9 +121,6 @@ export class UnloadingWorksheetController extends VasWorksheetController {
124
121
  const batchId: string = Boolean(arrivalNotice) ? targetProduct.batchId : targetInventory.batchId
125
122
  const batchIdRef: string = Boolean(arrivalNotice) ? targetProduct.batchIdRef : null
126
123
  const product: Product = Boolean(arrivalNotice) ? targetProduct.product : targetInventory.product
127
- const productDetail: ProductDetail = Boolean(arrivalNotice)
128
- ? targetProduct.productDetail
129
- : targetInventory.productDetail
130
124
  const packingType: string = Boolean(arrivalNotice) ? targetProduct.packingType : targetInventory.packingType
131
125
  const packingSize: number = Boolean(arrivalNotice) ? targetProduct.packingSize : targetInventory.packingSize
132
126
  const remark: string = Boolean(arrivalNotice) ? targetProduct.remark : targetInventory.remark
@@ -160,19 +154,32 @@ export class UnloadingWorksheetController extends VasWorksheetController {
160
154
 
161
155
  if (productBarcode) {
162
156
  const productDetails: ProductDetail[] = product?.productDetails.filter(detail => !detail.deletedAt)
163
- const scannedProductDetail: ProductDetail = productDetails.find(detail => detail.gtin == productBarcode)
164
- if (!scannedProductDetail) throw new Error(this.ERROR_MSG.FIND.NO_RESULT(productBarcode))
157
+ const isMatchingBarcode: boolean = productDetails.map(detail => detail.gtin).includes(productBarcode)
158
+ if (!isMatchingBarcode) throw new Error(this.ERROR_MSG.FIND.NO_RESULT(productBarcode))
159
+
160
+ const foundProductDetail: ProductDetail = productDetails.find(
161
+ (detail: ProductDetail) =>
162
+ detail.gtin === productBarcode && detail.packingType === packingType && detail.packingSize == packingSize
163
+ )
164
+
165
+ if (!foundProductDetail) {
166
+ const orderProductDetail: ProductDetail = productDetails.find(
167
+ (parentDetail: ProductDetail) =>
168
+ parentDetail.packingType === packingType && parentDetail.packingSize == packingSize
169
+ )
170
+ if (!orderProductDetail)
171
+ throw new Error(
172
+ this.ERROR_MSG.FIND.NO_RESULT(`Packing Type ( ${packingType}) or Packing Size (${packingSize})`)
173
+ )
165
174
 
166
- if (scannedProductDetail.id !== productDetail.id) {
167
- let childQty = await this.getChildQty(productDetails, productBarcode, productDetail, scannedProductDetail)
168
175
  if (arrivalNotice) {
169
176
  uom = targetProduct.uom
170
177
  } else {
171
- uom = productDetail.uom
178
+ uom = orderProductDetail.uom
172
179
  }
173
- qty *= childQty
180
+ qty = (await this.getChildQty(productDetails, productBarcode, orderProductDetail)) * qty
174
181
  } else {
175
- uom = scannedProductDetail.uom
182
+ uom = foundProductDetail.uom
176
183
  qty
177
184
  }
178
185
  }
@@ -193,7 +200,6 @@ export class UnloadingWorksheetController extends VasWorksheetController {
193
200
  newInventory.cartonId = inventory.cartonId
194
201
  newInventory.batchId = batchId
195
202
  newInventory.product = product
196
- newInventory.productDetail = productDetail
197
203
  newInventory.packingType = packingType
198
204
  newInventory.packingSize = packingSize
199
205
  newInventory.uom = uom
@@ -264,7 +270,6 @@ export class UnloadingWorksheetController extends VasWorksheetController {
264
270
  'worksheet.bufferLocation.warehouse',
265
271
  'targetProduct',
266
272
  'targetProduct.product',
267
- 'targetProduct.productDetail',
268
273
  'targetProduct.product.productDetails',
269
274
  'targetProduct.product.productDetails.childProductDetail',
270
275
  'targetInventory',
@@ -293,9 +298,6 @@ export class UnloadingWorksheetController extends VasWorksheetController {
293
298
  const returnOrder: ReturnOrder = worksheet.returnOrder
294
299
  const targetInventory: OrderInventory = worksheetDetail.targetInventory
295
300
  const product: Product = Boolean(arrivalNotice) ? targetProduct.product : targetInventory.product
296
- const productDetail: ProductDetail = Boolean(arrivalNotice)
297
- ? targetProduct.productDetail
298
- : targetInventory.productDetail
299
301
  const packingType: string = Boolean(arrivalNotice) ? targetProduct.packingType : targetInventory.packingType
300
302
  const packingSize: number = Boolean(arrivalNotice) ? targetProduct.packingSize : targetInventory.packingSize
301
303
  const batchId: string = Boolean(arrivalNotice) ? targetProduct.batchId : targetInventory.batchId
@@ -307,13 +309,15 @@ export class UnloadingWorksheetController extends VasWorksheetController {
307
309
 
308
310
  qty++
309
311
 
310
- const invQb: SelectQueryBuilder<Inventory> = this.trxMgr
312
+ const invQb: SelectQueryBuilder<Inventory> = await this.trxMgr
311
313
  .getRepository(Inventory)
312
314
  .createQueryBuilder('INV')
313
315
  .where('INV.domain_id = :domainId', { domainId: this.domain.id })
314
316
  .andWhere('INV.bizplace_id = :bizplaceId', { bizplaceId: bizplace.id })
315
- .andWhere('INV.product_detail_id = :productDetailId', { productDetailId: productDetail.id })
317
+ .andWhere('INV.product_id = :productId', { productId: product.id })
316
318
  .andWhere('INV.batch_id = :batchId', { batchId: batchId })
319
+ .andWhere('INV.packing_type = :packingType', { packingType: packingType })
320
+ .andWhere('INV.packing_size = :packingSize', { packingSize: packingSize })
317
321
 
318
322
  if (arrivalNotice) invQb.andWhere('INV.ref_order_id = :arrivalNoticeId', { arrivalNoticeId: arrivalNotice.id })
319
323
  else if (returnOrder) invQb.andWhere('INV.ref_order_id = :returnOrderId', { returnOrderId: returnOrder.id })
@@ -353,7 +357,6 @@ export class UnloadingWorksheetController extends VasWorksheetController {
353
357
  newInventory.batchId = batchId
354
358
  newInventory.batchIdRef = batchIdRef
355
359
  newInventory.product = product
356
- newInventory.productDetail = productDetail
357
360
  newInventory.packingType = packingType
358
361
  newInventory.packingSize = packingSize
359
362
  newInventory.uom = uom
@@ -418,7 +421,6 @@ export class UnloadingWorksheetController extends VasWorksheetController {
418
421
  inventoryItem.status = foundInventory.status
419
422
  inventoryItem.inboundOrderId = foundInventory.refOrderId
420
423
  inventoryItem.product = product
421
- inventoryItem.productDetail = productDetail
422
424
  inventoryItem.inventory = foundInventory
423
425
  inventoryItem.source = INVENTORY_ITEM_SOURCE.INBOUND
424
426
  inventoryItem.domain = this.domain
@@ -455,12 +457,10 @@ export class UnloadingWorksheetController extends VasWorksheetController {
455
457
  'worksheet.bufferLocation.warehouse',
456
458
  'targetProduct',
457
459
  'targetProduct.product',
458
- 'targetProduct.productDetail',
459
460
  'targetProduct.product.productDetails',
460
461
  'targetProduct.product.productDetails.childProductDetail',
461
462
  'targetInventory',
462
463
  'targetInventory.product',
463
- 'targetInventory.productDetail',
464
464
  'targetInventory.product.productDetails',
465
465
  'targetInventory.product.productDetails.childProductDetail'
466
466
  ]
@@ -485,9 +485,6 @@ export class UnloadingWorksheetController extends VasWorksheetController {
485
485
  const returnOrder: ReturnOrder = worksheet.returnOrder
486
486
  const targetInventory: OrderInventory = worksheetDetail.targetInventory
487
487
  const product: Product = Boolean(arrivalNotice) ? targetProduct.product : targetInventory.product
488
- const productDetail: ProductDetail = Boolean(arrivalNotice)
489
- ? targetProduct.productDetail
490
- : targetInventory.productDetail
491
488
  const packingType: string = Boolean(arrivalNotice) ? targetProduct.packingType : targetInventory.packingType
492
489
  const packingSize: number = Boolean(arrivalNotice) ? targetProduct.packingSize : targetInventory.packingSize
493
490
  const batchId: string = Boolean(arrivalNotice) ? targetProduct.batchId : targetInventory.batchId
@@ -499,29 +496,45 @@ export class UnloadingWorksheetController extends VasWorksheetController {
499
496
 
500
497
  // search for matching product barcode
501
498
  const productDetails: ProductDetail[] = product?.productDetails.filter(detail => !detail.deletedAt)
502
- const scannedProductDetail: ProductDetail = productDetails.find(detail => detail.gtin == productBarcode)
503
- if (!scannedProductDetail) throw new Error(this.ERROR_MSG.FIND.NO_RESULT(productBarcode))
499
+ const isMatchingBarcode: boolean = productDetails.map(detail => detail.gtin).includes(productBarcode)
500
+ if (!isMatchingBarcode) throw new Error(this.ERROR_MSG.FIND.NO_RESULT(productBarcode))
501
+
502
+ // case for scanning parent packing type, packing size
503
+ const foundProductDetail: ProductDetail = productDetails.find(
504
+ (detail: ProductDetail) =>
505
+ detail.gtin === productBarcode && detail.packingType === packingType && detail.packingSize == packingSize
506
+ )
507
+
508
+ if (!foundProductDetail) {
509
+ const orderProductDetail: ProductDetail = productDetails.find(
510
+ (parentDetail: ProductDetail) =>
511
+ parentDetail.packingType === packingType && parentDetail.packingSize == packingSize
512
+ )
513
+ if (!orderProductDetail)
514
+ throw new Error(
515
+ this.ERROR_MSG.FIND.NO_RESULT(`Packing Type ( ${packingType}) or Packing Size (${packingSize})`)
516
+ )
504
517
 
505
- if (scannedProductDetail.id !== productDetail.id && arrivalNotice) {
506
- let childQty = await this.getChildQty(productDetails, productBarcode, productDetail, scannedProductDetail)
507
518
  if (arrivalNotice) {
508
519
  uom = targetProduct.uom
509
520
  } else {
510
- uom = productDetail.uom
521
+ uom = orderProductDetail.uom
511
522
  }
512
- qty = childQty
523
+ qty = await this.getChildQty(productDetails, productBarcode, orderProductDetail)
513
524
  } else {
514
- uom = scannedProductDetail.uom
525
+ uom = foundProductDetail.uom
515
526
  qty++
516
527
  }
517
528
 
518
- const invQb: SelectQueryBuilder<Inventory> = this.trxMgr
529
+ const invQb: SelectQueryBuilder<Inventory> = await this.trxMgr
519
530
  .getRepository(Inventory)
520
531
  .createQueryBuilder('INV')
521
532
  .where('INV.domain_id = :domainId', { domainId: this.domain.id })
522
533
  .andWhere('INV.bizplace_id = :bizplaceId', { bizplaceId: bizplace.id })
523
- .andWhere('INV.product_detail_id = :productDetailId', { productDetailId: productDetail.id })
534
+ .andWhere('INV.product_id = :productId', { productId: product.id })
524
535
  .andWhere('INV.batch_id = :batchId', { batchId: batchId })
536
+ .andWhere('INV.packing_type = :packingType', { packingType: packingType })
537
+ .andWhere('INV.packing_size = :packingSize', { packingSize: packingSize })
525
538
 
526
539
  if (arrivalNotice) invQb.andWhere('INV.ref_order_id = :arrivalNoticeId', { arrivalNoticeId: arrivalNotice.id })
527
540
  else if (returnOrder) invQb.andWhere('INV.ref_order_id = :returnOrderId', { returnOrderId: returnOrder.id })
@@ -561,7 +574,6 @@ export class UnloadingWorksheetController extends VasWorksheetController {
561
574
  newInventory.batchId = batchId
562
575
  newInventory.batchIdRef = batchIdRef
563
576
  newInventory.product = product
564
- newInventory.productDetail = productDetail
565
577
  newInventory.packingType = packingType
566
578
  newInventory.packingSize = packingSize
567
579
  newInventory.uom = uom
@@ -644,10 +656,8 @@ export class UnloadingWorksheetController extends VasWorksheetController {
644
656
  'worksheet.bufferLocation.warehouse',
645
657
  'targetProduct',
646
658
  'targetProduct.product',
647
- 'targetProduct.productDetail',
648
659
  'targetInventory',
649
- 'targetInventory.product',
650
- 'targetInventory.productDetail'
660
+ 'targetInventory.product'
651
661
  ]
652
662
  })
653
663
  if (!worksheetDetail) throw new Error(this.ERROR_MSG.FIND.NO_RESULT(worksheetDetailName))
@@ -658,7 +668,9 @@ export class UnloadingWorksheetController extends VasWorksheetController {
658
668
  const returnOrder: ReturnOrder = worksheet.returnOrder
659
669
  const targetProduct: OrderProduct = worksheetDetail.targetProduct
660
670
  const targetInventory: OrderInventory = worksheetDetail.targetInventory
661
- const productDetail: Product = Boolean(arrivalNotice) ? targetProduct.productDetail : targetInventory.productDetail
671
+ const product: Product = Boolean(arrivalNotice) ? targetProduct.product : targetInventory.product
672
+ const packingType: string = Boolean(arrivalNotice) ? targetProduct.packingType : targetInventory.packingType
673
+ const packingSize: number = Boolean(arrivalNotice) ? targetProduct.packingSize : targetInventory.packingSize
662
674
  const batchId: string = Boolean(arrivalNotice) ? targetProduct.batchId : targetInventory.batchId
663
675
 
664
676
  const invQb: SelectQueryBuilder<Inventory> = await this.trxMgr
@@ -666,8 +678,10 @@ export class UnloadingWorksheetController extends VasWorksheetController {
666
678
  .createQueryBuilder('INV')
667
679
  .where('INV.domain_id = :domainId', { domainId: this.domain.id })
668
680
  .andWhere('INV.bizplace_id = :bizplaceId', { bizplaceId: bizplace.id })
669
- .andWhere('INV.product_detail_id = :productDetailId', { productDetailId: productDetail.id })
681
+ .andWhere('INV.product_id = :productId', { productId: product.id })
670
682
  .andWhere('INV.batch_id = :batchId', { batchId: batchId })
683
+ .andWhere('INV.packing_type = :packingType', { packingType: packingType })
684
+ .andWhere('INV.packing_size = :packingSize', { packingSize: packingSize })
671
685
 
672
686
  if (arrivalNotice) invQb.andWhere('INV.ref_order_id = :arrivalNoticeId', { arrivalNoticeId: arrivalNotice.id })
673
687
  else if (returnOrder) invQb.andWhere('INV.ref_order_id = :returnOrderId', { returnOrderId: returnOrder.id })
@@ -700,7 +714,7 @@ export class UnloadingWorksheetController extends VasWorksheetController {
700
714
  const inventoryId: string = inventoryIds[i]
701
715
  let inventory: Inventory = await this.trxMgr.getRepository(Inventory).findOne({
702
716
  where: { domain: this.domain, id: inventoryId },
703
- relations: ['location', 'product', 'productDetail']
717
+ relations: ['location', 'product']
704
718
  })
705
719
 
706
720
  this.checkRecordValidity(inventory, {
@@ -730,11 +744,14 @@ export class UnloadingWorksheetController extends VasWorksheetController {
730
744
  if (orderType === ORDER_TYPES.ARRIVAL_NOTICE) {
731
745
  arrivalNotice = await this.trxMgr.getRepository(ArrivalNotice).findOne({
732
746
  where: { domain: this.domain, name: orderNo },
733
- relations: ['orderProducts', 'orderProducts.product', 'orderProducts.productDetail']
747
+ relations: ['orderProducts', 'orderProducts.product']
734
748
  })
735
749
 
736
750
  targetProduct = arrivalNotice.orderProducts.find(
737
- op => op.batchId == inventory.batchId && op.productDetail.id == inventory.productDetail.id
751
+ op =>
752
+ op.batchId == inventory.batchId &&
753
+ op.packingType == inventory.packingType &&
754
+ op.product.id === inventory.product.id
738
755
  )
739
756
 
740
757
  if (inventory.status == INVENTORY_STATUS.UNLOADED) {
@@ -760,7 +777,11 @@ export class UnloadingWorksheetController extends VasWorksheetController {
760
777
  })
761
778
 
762
779
  targetInventory = returnOrder.orderInventories.find(
763
- oi => oi.batchId == inventory.batchId && oi.productDetail.id == inventory.productDetail.id
780
+ oi =>
781
+ oi.batchId == inventory.batchId &&
782
+ oi.packingType == inventory.packingType &&
783
+ oi.product.id == inventory.product.id &&
784
+ oi.packingSize === inventory.packingSize
764
785
  )
765
786
  if (inventory.status == INVENTORY_STATUS.UNLOADED) {
766
787
  targetInventory.actualPackQty -= qty
@@ -103,14 +103,16 @@ export class CycleCountWorksheetController extends WorksheetController {
103
103
  let keyval = {
104
104
  batchId: 'batch_id',
105
105
  batchIdRef: 'batch_id_ref',
106
- productDetailId: 'product_detail_id'
106
+ packingType: 'packing_type',
107
+ packingSize: 'packing_size',
108
+ productId: 'product_id'
107
109
  }
108
110
 
109
111
  qb.andWhere(
110
112
  new Brackets(qb => {
111
113
  orderInventory.forEach((itm, idx) => {
112
114
  // sample itm value
113
- // batchId: 'WO00019730', batchIdRef: null, productDetailId: '1d679587-c713-42d6-bd0a-74e587e39cc7'
115
+ // batchId: 'WO00019730', batchIdRef: null, packingType: 'CARBOY', packingSize: 1, productId: '1d679587-c713-42d6-bd0a-74e587e39cc7'
114
116
  qb.orWhere(
115
117
  new Brackets(qb2 => {
116
118
  let first = true
@@ -12,10 +12,11 @@ import {
12
12
  OrderToteItem,
13
13
  OrderTote
14
14
  } from '@things-factory/sales-base'
15
- import { Inventory, INVENTORY_TRANSACTION_TYPE, Tote, TOTE_STATUS, generateInventoryHistory } from '@things-factory/warehouse-base'
15
+ import { Inventory, INVENTORY_TRANSACTION_TYPE, Tote, TOTE_STATUS } 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'
19
20
  import { VasWorksheetController } from '../vas/vas-worksheet-controller'
20
21
 
21
22
  export class LoadingWorksheetController extends VasWorksheetController {
@@ -111,13 +112,7 @@ export class LoadingWorksheetController extends VasWorksheetController {
111
112
  let worksheetDetail = await this.findExecutableWorksheetDetailByName(
112
113
  worksheetDetails[i].name,
113
114
  WORKSHEET_TYPE.LOADING,
114
- [
115
- 'worksheet',
116
- 'targetInventory',
117
- 'targetInventory.inventory',
118
- 'targetInventory.product',
119
- 'targetInventory.productDetail'
120
- ]
115
+ ['worksheet', 'targetInventory', 'targetInventory.inventory', 'targetInventory.product']
121
116
  )
122
117
 
123
118
  const worksheet: Worksheet = worksheetDetail.worksheet
@@ -175,7 +170,6 @@ export class LoadingWorksheetController extends VasWorksheetController {
175
170
  newTargetInventory.releaseQty = remainQty
176
171
  newTargetInventory.releaseUomValue = remainUomValue
177
172
  newTargetInventory.product = targetInventory.product
178
- newTargetInventory.productDetail = targetInventory.productDetail
179
173
  newTargetInventory.packingType = targetInventory.packingType
180
174
  newTargetInventory.batchId = targetInventory.batchId
181
175
  newTargetInventory.creator = this.user