@things-factory/worksheet-base 4.3.137 → 4.3.139

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 (70) hide show
  1. package/dist-server/controllers/inbound/unloading-worksheet-controller.js +59 -73
  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 +5 -4
  6. package/dist-server/controllers/outbound/loading-worksheet-controller.js.map +1 -1
  7. package/dist-server/controllers/outbound/packing-worksheet-controller.js +23 -23
  8. package/dist-server/controllers/outbound/packing-worksheet-controller.js.map +1 -1
  9. package/dist-server/controllers/outbound/picking-worksheet-controller.js +157 -120
  10. package/dist-server/controllers/outbound/picking-worksheet-controller.js.map +1 -1
  11. package/dist-server/controllers/outbound/sorting-worksheet-controller.js +14 -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 +7 -7
  16. package/dist-server/controllers/worksheet-controller.js.map +1 -1
  17. package/dist-server/entities/index.js +3 -2
  18. package/dist-server/entities/index.js.map +1 -1
  19. package/dist-server/entities/warehouse-bizplace-onhand-inventory.js +29 -62
  20. package/dist-server/entities/warehouse-bizplace-onhand-inventory.js.map +1 -1
  21. package/dist-server/graphql/resolvers/worksheet/batch-picking-worksheet.js +6 -0
  22. package/dist-server/graphql/resolvers/worksheet/batch-picking-worksheet.js.map +1 -1
  23. package/dist-server/graphql/resolvers/worksheet/confirm-cancellation-release-order.js +1 -2
  24. package/dist-server/graphql/resolvers/worksheet/confirm-cancellation-release-order.js.map +1 -1
  25. package/dist-server/graphql/resolvers/worksheet/cycle-count-adjustment.js +6 -6
  26. package/dist-server/graphql/resolvers/worksheet/cycle-count-adjustment.js.map +1 -1
  27. package/dist-server/graphql/resolvers/worksheet/find-sorting-release-orders-by-task-no.js +2 -2
  28. package/dist-server/graphql/resolvers/worksheet/find-sorting-release-orders-by-task-no.js.map +1 -1
  29. package/dist-server/graphql/resolvers/worksheet/inventories-by-pallet.js +2 -1
  30. package/dist-server/graphql/resolvers/worksheet/inventories-by-pallet.js.map +1 -1
  31. package/dist-server/graphql/resolvers/worksheet/packing-worksheet.js +4 -1
  32. package/dist-server/graphql/resolvers/worksheet/packing-worksheet.js.map +1 -1
  33. package/dist-server/graphql/resolvers/worksheet/picking-worksheet.js +3 -2
  34. package/dist-server/graphql/resolvers/worksheet/picking-worksheet.js.map +1 -1
  35. package/dist-server/graphql/resolvers/worksheet/transfer.js +9 -9
  36. package/dist-server/graphql/resolvers/worksheet/transfer.js.map +1 -1
  37. package/dist-server/graphql/resolvers/worksheet/unloaded-inventories.js +1 -1
  38. package/dist-server/graphql/resolvers/worksheet/unloaded-inventories.js.map +1 -1
  39. package/dist-server/graphql/resolvers/worksheet/vas-transactions/common-utils.js +17 -17
  40. package/dist-server/graphql/resolvers/worksheet/vas-transactions/common-utils.js.map +1 -1
  41. package/dist-server/graphql/resolvers/worksheet-detail/regenerate-release-good-worksheet-details.js +4 -4
  42. package/dist-server/graphql/resolvers/worksheet-detail/regenerate-release-good-worksheet-details.js.map +1 -1
  43. package/dist-server/graphql/types/worksheet-detail/index.js +1 -0
  44. package/dist-server/graphql/types/worksheet-detail/index.js.map +1 -1
  45. package/dist-server/utils/inventory-util.js +1 -98
  46. package/dist-server/utils/inventory-util.js.map +1 -1
  47. package/package.json +16 -16
  48. package/server/controllers/inbound/unloading-worksheet-controller.ts +74 -86
  49. package/server/controllers/inspect/cycle-count-worksheet-controller.ts +2 -4
  50. package/server/controllers/outbound/loading-worksheet-controller.ts +13 -3
  51. package/server/controllers/outbound/packing-worksheet-controller.ts +32 -37
  52. package/server/controllers/outbound/picking-worksheet-controller.ts +186 -150
  53. package/server/controllers/outbound/sorting-worksheet-controller.ts +14 -21
  54. package/server/controllers/vas/vas-worksheet-controller.ts +2 -2
  55. package/server/controllers/worksheet-controller.ts +15 -10
  56. package/server/entities/index.ts +2 -2
  57. package/server/entities/warehouse-bizplace-onhand-inventory.ts +29 -63
  58. package/server/graphql/resolvers/worksheet/batch-picking-worksheet.ts +6 -0
  59. package/server/graphql/resolvers/worksheet/confirm-cancellation-release-order.ts +1 -2
  60. package/server/graphql/resolvers/worksheet/cycle-count-adjustment.ts +2 -2
  61. package/server/graphql/resolvers/worksheet/find-sorting-release-orders-by-task-no.ts +2 -2
  62. package/server/graphql/resolvers/worksheet/inventories-by-pallet.ts +3 -1
  63. package/server/graphql/resolvers/worksheet/packing-worksheet.ts +4 -2
  64. package/server/graphql/resolvers/worksheet/picking-worksheet.ts +3 -2
  65. package/server/graphql/resolvers/worksheet/transfer.ts +18 -16
  66. package/server/graphql/resolvers/worksheet/unloaded-inventories.ts +1 -1
  67. package/server/graphql/resolvers/worksheet/vas-transactions/common-utils.ts +3 -2
  68. package/server/graphql/resolvers/worksheet-detail/regenerate-release-good-worksheet-details.ts +4 -1
  69. package/server/graphql/types/worksheet-detail/index.ts +1 -0
  70. package/server/utils/inventory-util.ts +1 -126
@@ -1,107 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isInventoryExpiring = exports.inventoriesByStrategy = exports.checkPalletIdenticallity = exports.checkPalletDuplication = exports.switchLocationStatus = exports.generateInventoryHistory = void 0;
3
+ exports.isInventoryExpiring = exports.inventoriesByStrategy = exports.checkPalletIdenticallity = exports.checkPalletDuplication = exports.switchLocationStatus = 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;
105
8
  /**
106
9
  * @description: Check location emptiness and update status of location
107
10
  * @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.137",
3
+ "version": "4.3.139",
4
4
  "main": "dist-server/index.js",
5
5
  "browser": "client/index.js",
6
6
  "things-factory": true,
@@ -23,22 +23,22 @@
23
23
  "migration:create": "node ../../node_modules/typeorm/cli.js migration:create -d ./server/migrations"
24
24
  },
25
25
  "dependencies": {
26
- "@things-factory/auth-base": "^4.3.131",
27
- "@things-factory/biz-base": "^4.3.131",
26
+ "@things-factory/auth-base": "^4.3.138",
27
+ "@things-factory/biz-base": "^4.3.138",
28
28
  "@things-factory/document-template-base": "^4.3.131",
29
- "@things-factory/id-rule-base": "^4.3.131",
30
- "@things-factory/integration-accounting": "^4.3.135",
31
- "@things-factory/integration-lmd": "^4.3.131",
32
- "@things-factory/integration-marketplace": "^4.3.131",
33
- "@things-factory/integration-sellercraft": "^4.3.131",
34
- "@things-factory/integration-sftp": "^4.3.131",
35
- "@things-factory/marketplace-base": "^4.3.132",
36
- "@things-factory/notification": "^4.3.131",
37
- "@things-factory/sales-base": "^4.3.137",
38
- "@things-factory/setting-base": "^4.3.131",
29
+ "@things-factory/id-rule-base": "^4.3.138",
30
+ "@things-factory/integration-accounting": "^4.3.138",
31
+ "@things-factory/integration-lmd": "^4.3.138",
32
+ "@things-factory/integration-marketplace": "^4.3.138",
33
+ "@things-factory/integration-sellercraft": "^4.3.138",
34
+ "@things-factory/integration-sftp": "^4.3.138",
35
+ "@things-factory/marketplace-base": "^4.3.138",
36
+ "@things-factory/notification": "^4.3.138",
37
+ "@things-factory/sales-base": "^4.3.139",
38
+ "@things-factory/setting-base": "^4.3.138",
39
39
  "@things-factory/shell": "^4.3.131",
40
- "@things-factory/transport-base": "^4.3.131",
41
- "@things-factory/warehouse-base": "^4.3.135"
40
+ "@things-factory/transport-base": "^4.3.138",
41
+ "@things-factory/warehouse-base": "^4.3.138"
42
42
  },
43
- "gitHead": "902cdc7448e9f72dd126199b5797d67eb552117f"
43
+ "gitHead": "82a27c0caaf2f2c98cd094b92fc603bf768d2513"
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 { Domain } from '@things-factory/shell'
23
22
  import { PartnerSetting, Setting } from '@things-factory/setting-base'
23
+ import { Domain } from '@things-factory/shell'
24
24
  import {
25
25
  Inventory,
26
26
  INVENTORY_ITEM_SOURCE,
@@ -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> & {
@@ -95,11 +96,13 @@ export class UnloadingWorksheetController extends VasWorksheetController {
95
96
  'worksheet.bufferLocation.warehouse',
96
97
  'targetProduct',
97
98
  'targetProduct.product',
99
+ 'targetProduct.productDetail',
98
100
  'targetProduct.product.productDetails',
99
101
  'targetProduct.product.productDetails.childProductDetail',
100
102
  'targetInventory',
101
103
  'targetInventory.inventory',
102
104
  'targetInventory.product',
105
+ 'targetInventory.productDetail',
103
106
  'targetInventory.product.productDetails',
104
107
  'targetInventory.product.productDetails.childProductDetail'
105
108
  ]
@@ -121,6 +124,9 @@ export class UnloadingWorksheetController extends VasWorksheetController {
121
124
  const batchId: string = Boolean(arrivalNotice) ? targetProduct.batchId : targetInventory.batchId
122
125
  const batchIdRef: string = Boolean(arrivalNotice) ? targetProduct.batchIdRef : null
123
126
  const product: Product = Boolean(arrivalNotice) ? targetProduct.product : targetInventory.product
127
+ let productDetail: ProductDetail = Boolean(arrivalNotice)
128
+ ? targetProduct.productDetail
129
+ : targetInventory.productDetail
124
130
  const packingType: string = Boolean(arrivalNotice) ? targetProduct.packingType : targetInventory.packingType
125
131
  const packingSize: number = Boolean(arrivalNotice) ? targetProduct.packingSize : targetInventory.packingSize
126
132
  const remark: string = Boolean(arrivalNotice) ? targetProduct.remark : targetInventory.remark
@@ -140,6 +146,7 @@ export class UnloadingWorksheetController extends VasWorksheetController {
140
146
 
141
147
  const palletId: string = inventory?.palletId
142
148
  const cartonId: string = inventory?.cartonId
149
+ let matchingProduct
143
150
 
144
151
  if (!inventory?.palletId) {
145
152
  inventory.palletId = await generateId({
@@ -153,35 +160,24 @@ export class UnloadingWorksheetController extends VasWorksheetController {
153
160
  }
154
161
 
155
162
  if (productBarcode) {
156
- const productDetails: ProductDetail[] = product?.productDetails.filter(detail => !detail.deletedAt)
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
+ matchingProduct = await this.getDirectQty(
164
+ {
165
+ ...productDetail,
166
+ product: targetInventory?.product
167
+ },
168
+ productBarcode,
169
+ qty
163
170
  )
164
171
 
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
- )
172
+ //validate matching product details based on scanned barcode
173
+ if (!matchingProduct) throw new Error(this.ERROR_MSG.FIND.NO_RESULT(productBarcode))
174
174
 
175
- if (arrivalNotice) {
176
- uom = targetProduct.uom
177
- } else {
178
- uom = orderProductDetail.uom
179
- }
180
- qty = (await this.getChildQty(productDetails, productBarcode, orderProductDetail)) * qty
181
- } else {
182
- uom = foundProductDetail.uom
183
- qty
184
- }
175
+ qty = matchingProduct.qty
176
+ uom = arrivalNotice ? targetProduct.uom : matchingProduct.uom
177
+ }
178
+
179
+ if (!uom) {
180
+ uom = productDetail.uom
185
181
  }
186
182
 
187
183
  const uomValue: number =
@@ -200,6 +196,7 @@ export class UnloadingWorksheetController extends VasWorksheetController {
200
196
  newInventory.cartonId = inventory.cartonId
201
197
  newInventory.batchId = batchId
202
198
  newInventory.product = product
199
+ newInventory.productDetail = productDetail
203
200
  newInventory.packingType = packingType
204
201
  newInventory.packingSize = packingSize
205
202
  newInventory.uom = uom
@@ -241,6 +238,7 @@ export class UnloadingWorksheetController extends VasWorksheetController {
241
238
  targetProduct.actualPackQty += qty
242
239
  targetProduct.status = ORDER_PRODUCT_STATUS.UNLOADED
243
240
  targetProduct.updater = this.user
241
+ targetProduct.productDetail = productDetail
244
242
  this.updateOrderTargets([targetProduct])
245
243
  } else if (returnOrder) {
246
244
  targetInventory.actualPalletQty++
@@ -270,9 +268,11 @@ export class UnloadingWorksheetController extends VasWorksheetController {
270
268
  'worksheet.bufferLocation.warehouse',
271
269
  'targetProduct',
272
270
  'targetProduct.product',
271
+ 'targetProduct.productDetail',
273
272
  'targetProduct.product.productDetails',
274
273
  'targetProduct.product.productDetails.childProductDetail',
275
274
  'targetInventory',
275
+ 'targetInventory.productDetail',
276
276
  'targetInventory.product',
277
277
  'targetInventory.product.productDetails',
278
278
  'targetInventory.product.productDetails.childProductDetail'
@@ -289,7 +289,7 @@ export class UnloadingWorksheetController extends VasWorksheetController {
289
289
 
290
290
  const targetProduct: OrderProduct = worksheetDetail.targetProduct
291
291
 
292
- if (targetProduct.status == ORDER_PRODUCT_STATUS.EDITED)
292
+ if (targetProduct?.status == ORDER_PRODUCT_STATUS.EDITED)
293
293
  throw new Error('this product is pending for changes approval')
294
294
 
295
295
  const bizplace: Bizplace = worksheetDetail.bizplace
@@ -298,6 +298,9 @@ export class UnloadingWorksheetController extends VasWorksheetController {
298
298
  const returnOrder: ReturnOrder = worksheet.returnOrder
299
299
  const targetInventory: OrderInventory = worksheetDetail.targetInventory
300
300
  const product: Product = Boolean(arrivalNotice) ? targetProduct.product : targetInventory.product
301
+ const productDetail: ProductDetail = Boolean(arrivalNotice)
302
+ ? targetProduct.productDetail
303
+ : targetInventory.productDetail
301
304
  const packingType: string = Boolean(arrivalNotice) ? targetProduct.packingType : targetInventory.packingType
302
305
  const packingSize: number = Boolean(arrivalNotice) ? targetProduct.packingSize : targetInventory.packingSize
303
306
  const batchId: string = Boolean(arrivalNotice) ? targetProduct.batchId : targetInventory.batchId
@@ -309,15 +312,13 @@ export class UnloadingWorksheetController extends VasWorksheetController {
309
312
 
310
313
  qty++
311
314
 
312
- const invQb: SelectQueryBuilder<Inventory> = await this.trxMgr
315
+ const invQb: SelectQueryBuilder<Inventory> = this.trxMgr
313
316
  .getRepository(Inventory)
314
317
  .createQueryBuilder('INV')
315
318
  .where('INV.domain_id = :domainId', { domainId: this.domain.id })
316
319
  .andWhere('INV.bizplace_id = :bizplaceId', { bizplaceId: bizplace.id })
317
- .andWhere('INV.product_id = :productId', { productId: product.id })
320
+ .andWhere('INV.product_detail_id = :productDetailId', { productDetailId: productDetail.id })
318
321
  .andWhere('INV.batch_id = :batchId', { batchId: batchId })
319
- .andWhere('INV.packing_type = :packingType', { packingType: packingType })
320
- .andWhere('INV.packing_size = :packingSize', { packingSize: packingSize })
321
322
 
322
323
  if (arrivalNotice) invQb.andWhere('INV.ref_order_id = :arrivalNoticeId', { arrivalNoticeId: arrivalNotice.id })
323
324
  else if (returnOrder) invQb.andWhere('INV.ref_order_id = :returnOrderId', { returnOrderId: returnOrder.id })
@@ -357,6 +358,7 @@ export class UnloadingWorksheetController extends VasWorksheetController {
357
358
  newInventory.batchId = batchId
358
359
  newInventory.batchIdRef = batchIdRef
359
360
  newInventory.product = product
361
+ newInventory.productDetail = productDetail
360
362
  newInventory.packingType = packingType
361
363
  newInventory.packingSize = packingSize
362
364
  newInventory.uom = uom
@@ -421,6 +423,7 @@ export class UnloadingWorksheetController extends VasWorksheetController {
421
423
  inventoryItem.status = foundInventory.status
422
424
  inventoryItem.inboundOrderId = foundInventory.refOrderId
423
425
  inventoryItem.product = product
426
+ inventoryItem.productDetail = productDetail
424
427
  inventoryItem.inventory = foundInventory
425
428
  inventoryItem.source = INVENTORY_ITEM_SOURCE.INBOUND
426
429
  inventoryItem.domain = this.domain
@@ -457,10 +460,12 @@ export class UnloadingWorksheetController extends VasWorksheetController {
457
460
  'worksheet.bufferLocation.warehouse',
458
461
  'targetProduct',
459
462
  'targetProduct.product',
463
+ 'targetProduct.productDetail',
460
464
  'targetProduct.product.productDetails',
461
465
  'targetProduct.product.productDetails.childProductDetail',
462
466
  'targetInventory',
463
467
  'targetInventory.product',
468
+ 'targetInventory.productDetail',
464
469
  'targetInventory.product.productDetails',
465
470
  'targetInventory.product.productDetails.childProductDetail'
466
471
  ]
@@ -485,56 +490,41 @@ export class UnloadingWorksheetController extends VasWorksheetController {
485
490
  const returnOrder: ReturnOrder = worksheet.returnOrder
486
491
  const targetInventory: OrderInventory = worksheetDetail.targetInventory
487
492
  const product: Product = Boolean(arrivalNotice) ? targetProduct.product : targetInventory.product
493
+ let productDetail: ProductDetail = Boolean(arrivalNotice)
494
+ ? targetProduct.productDetail
495
+ : targetInventory.productDetail
488
496
  const packingType: string = Boolean(arrivalNotice) ? targetProduct.packingType : targetInventory.packingType
489
497
  const packingSize: number = Boolean(arrivalNotice) ? targetProduct.packingSize : targetInventory.packingSize
490
498
  const batchId: string = Boolean(arrivalNotice) ? targetProduct.batchId : targetInventory.batchId
491
- let qty: number = 0
499
+ let qty: number = 1
492
500
  let uom: string = Boolean(arrivalNotice) ? targetProduct.uom : targetInventory.uom
493
501
  const cartonId: string = inventory.cartonId
494
502
  const orderId: string = Boolean(arrivalNotice) ? arrivalNotice.id : returnOrder.id
495
503
  await this.checkCartonDuplication(cartonId, orderId)
504
+ let matchingProduct
496
505
 
497
- // search for matching product barcode
498
- const productDetails: ProductDetail[] = product?.productDetails.filter(detail => !detail.deletedAt)
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
+ matchingProduct = await this.getDirectQty(
507
+ {
508
+ ...productDetail,
509
+ product: targetInventory?.product
510
+ },
511
+ productBarcode,
512
+ qty
506
513
  )
507
514
 
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
- )
515
+ //validate matching product details based on scanned barcode
516
+ if (!matchingProduct) throw new Error(this.ERROR_MSG.FIND.NO_RESULT(productBarcode))
517
517
 
518
- if (arrivalNotice) {
519
- uom = targetProduct.uom
520
- } else {
521
- uom = orderProductDetail.uom
522
- }
523
- qty = await this.getChildQty(productDetails, productBarcode, orderProductDetail)
524
- } else {
525
- uom = foundProductDetail.uom
526
- qty++
527
- }
518
+ qty = matchingProduct.qty
519
+ uom = arrivalNotice ? targetProduct.uom : matchingProduct.uom
528
520
 
529
- const invQb: SelectQueryBuilder<Inventory> = await this.trxMgr
521
+ const invQb: SelectQueryBuilder<Inventory> = this.trxMgr
530
522
  .getRepository(Inventory)
531
523
  .createQueryBuilder('INV')
532
524
  .where('INV.domain_id = :domainId', { domainId: this.domain.id })
533
525
  .andWhere('INV.bizplace_id = :bizplaceId', { bizplaceId: bizplace.id })
534
- .andWhere('INV.product_id = :productId', { productId: product.id })
526
+ .andWhere('INV.product_detail_id = :productDetailId', { productDetailId: productDetail.id })
535
527
  .andWhere('INV.batch_id = :batchId', { batchId: batchId })
536
- .andWhere('INV.packing_type = :packingType', { packingType: packingType })
537
- .andWhere('INV.packing_size = :packingSize', { packingSize: packingSize })
538
528
 
539
529
  if (arrivalNotice) invQb.andWhere('INV.ref_order_id = :arrivalNoticeId', { arrivalNoticeId: arrivalNotice.id })
540
530
  else if (returnOrder) invQb.andWhere('INV.ref_order_id = :returnOrderId', { returnOrderId: returnOrder.id })
@@ -574,6 +564,7 @@ export class UnloadingWorksheetController extends VasWorksheetController {
574
564
  newInventory.batchId = batchId
575
565
  newInventory.batchIdRef = batchIdRef
576
566
  newInventory.product = product
567
+ newInventory.productDetail = productDetail
577
568
  newInventory.packingType = packingType
578
569
  newInventory.packingSize = packingSize
579
570
  newInventory.uom = uom
@@ -627,13 +618,16 @@ export class UnloadingWorksheetController extends VasWorksheetController {
627
618
  : targetInventory.returnUomValue / targetInventory.returnQty) *
628
619
  100
629
620
  ) / 100
621
+ foundInventory.productDetail = productDetail
630
622
  if (arrivalNotice) targetProduct.actualPackQty = targetProduct.actualPackQty + qty
631
623
  else if (returnOrder) targetInventory.actualPackQty = targetInventory.actualPackQty + qty
624
+
632
625
  await this.trxMgr.getRepository(Inventory).save(foundInventory)
633
626
  }
634
627
 
635
628
  if (arrivalNotice) {
636
629
  targetProduct.updater = this.user
630
+ targetProduct.productDetail = productDetail
637
631
  this.updateOrderTargets([targetProduct])
638
632
  } else if (returnOrder) {
639
633
  targetInventory.updater = this.user
@@ -656,8 +650,10 @@ export class UnloadingWorksheetController extends VasWorksheetController {
656
650
  'worksheet.bufferLocation.warehouse',
657
651
  'targetProduct',
658
652
  'targetProduct.product',
653
+ 'targetProduct.productDetail',
659
654
  'targetInventory',
660
- 'targetInventory.product'
655
+ 'targetInventory.product',
656
+ 'targetInventory.productDetail'
661
657
  ]
662
658
  })
663
659
  if (!worksheetDetail) throw new Error(this.ERROR_MSG.FIND.NO_RESULT(worksheetDetailName))
@@ -668,9 +664,7 @@ export class UnloadingWorksheetController extends VasWorksheetController {
668
664
  const returnOrder: ReturnOrder = worksheet.returnOrder
669
665
  const targetProduct: OrderProduct = worksheetDetail.targetProduct
670
666
  const targetInventory: OrderInventory = worksheetDetail.targetInventory
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
667
+ const productDetail: Product = Boolean(arrivalNotice) ? targetProduct.productDetail : targetInventory.productDetail
674
668
  const batchId: string = Boolean(arrivalNotice) ? targetProduct.batchId : targetInventory.batchId
675
669
 
676
670
  const invQb: SelectQueryBuilder<Inventory> = await this.trxMgr
@@ -678,10 +672,8 @@ export class UnloadingWorksheetController extends VasWorksheetController {
678
672
  .createQueryBuilder('INV')
679
673
  .where('INV.domain_id = :domainId', { domainId: this.domain.id })
680
674
  .andWhere('INV.bizplace_id = :bizplaceId', { bizplaceId: bizplace.id })
681
- .andWhere('INV.product_id = :productId', { productId: product.id })
675
+ .andWhere('INV.product_detail_id = :productDetailId', { productDetailId: productDetail.id })
682
676
  .andWhere('INV.batch_id = :batchId', { batchId: batchId })
683
- .andWhere('INV.packing_type = :packingType', { packingType: packingType })
684
- .andWhere('INV.packing_size = :packingSize', { packingSize: packingSize })
685
677
 
686
678
  if (arrivalNotice) invQb.andWhere('INV.ref_order_id = :arrivalNoticeId', { arrivalNoticeId: arrivalNotice.id })
687
679
  else if (returnOrder) invQb.andWhere('INV.ref_order_id = :returnOrderId', { returnOrderId: returnOrder.id })
@@ -714,7 +706,7 @@ export class UnloadingWorksheetController extends VasWorksheetController {
714
706
  const inventoryId: string = inventoryIds[i]
715
707
  let inventory: Inventory = await this.trxMgr.getRepository(Inventory).findOne({
716
708
  where: { domain: this.domain, id: inventoryId },
717
- relations: ['location', 'product']
709
+ relations: ['location', 'product', 'productDetail']
718
710
  })
719
711
 
720
712
  this.checkRecordValidity(inventory, {
@@ -744,14 +736,11 @@ export class UnloadingWorksheetController extends VasWorksheetController {
744
736
  if (orderType === ORDER_TYPES.ARRIVAL_NOTICE) {
745
737
  arrivalNotice = await this.trxMgr.getRepository(ArrivalNotice).findOne({
746
738
  where: { domain: this.domain, name: orderNo },
747
- relations: ['orderProducts', 'orderProducts.product']
739
+ relations: ['orderProducts', 'orderProducts.product', 'orderProducts.productDetail']
748
740
  })
749
741
 
750
742
  targetProduct = arrivalNotice.orderProducts.find(
751
- op =>
752
- op.batchId == inventory.batchId &&
753
- op.packingType == inventory.packingType &&
754
- op.product.id === inventory.product.id
743
+ op => op.batchId == inventory.batchId && op.productDetail.id == inventory.productDetail.id
755
744
  )
756
745
 
757
746
  if (inventory.status == INVENTORY_STATUS.UNLOADED) {
@@ -770,18 +759,17 @@ export class UnloadingWorksheetController extends VasWorksheetController {
770
759
  worksheetDetail = await this.trxMgr
771
760
  .getRepository(WorksheetDetail)
772
761
  .findOne({ where: { domain: this.domain, targetProduct } })
762
+
763
+ //remove all related serial numbers
764
+ await this.trxMgr.getRepository(InventoryItem).delete({ inventory: inventoryId })
773
765
  } else {
774
766
  returnOrder = await this.trxMgr.getRepository(ReturnOrder).findOne({
775
767
  where: { domain: this.domain, name: orderNo },
776
- relations: ['orderInventories', 'orderInventories.inventory', 'orderInventories.product']
768
+ relations: ['orderInventories', 'orderInventories.inventory', 'orderInventories.productDetail']
777
769
  })
778
770
 
779
771
  targetInventory = returnOrder.orderInventories.find(
780
- oi =>
781
- oi.batchId == inventory.batchId &&
782
- oi.packingType == inventory.packingType &&
783
- oi.product.id == inventory.product.id &&
784
- oi.packingSize === inventory.packingSize
772
+ oi => oi.batchId == inventory.batchId && oi.productDetail.id == inventory.productDetail.id
785
773
  )
786
774
  if (inventory.status == INVENTORY_STATUS.UNLOADED) {
787
775
  targetInventory.actualPackQty -= 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,16 @@ import {
12
12
  OrderToteItem,
13
13
  ReleaseGood
14
14
  } from '@things-factory/sales-base'
15
- import { Inventory, INVENTORY_TRANSACTION_TYPE, Tote, TOTE_STATUS } from '@things-factory/warehouse-base'
15
+ import {
16
+ generateInventoryHistory,
17
+ Inventory,
18
+ INVENTORY_TRANSACTION_TYPE,
19
+ Tote,
20
+ TOTE_STATUS
21
+ } from '@things-factory/warehouse-base'
16
22
 
17
23
  import { WORKSHEET_STATUS, WORKSHEET_TYPE } from '../../constants'
18
24
  import { Worksheet, WorksheetDetail } from '../../entities'
19
- import { generateInventoryHistory } from '../../utils'
20
25
  import { VasWorksheetController } from '../vas/vas-worksheet-controller'
21
26
 
22
27
  export class LoadingWorksheetController extends VasWorksheetController {
@@ -48,7 +53,7 @@ export class LoadingWorksheetController extends VasWorksheetController {
48
53
  { domain: this.domain, name: releaseGoodNo },
49
54
  ['bizplace']
50
55
  )
51
- return await this.updateWorksheet(
56
+ return await this.updateLoadWorksheet(
52
57
  WORKSHEET_TYPE.LOADING,
53
58
  releaseGood,
54
59
  worksheet,
@@ -114,9 +119,13 @@ export class LoadingWorksheetController extends VasWorksheetController {
114
119
  WORKSHEET_TYPE.LOADING,
115
120
  [
116
121
  'worksheet',
122
+
117
123
  'targetInventory',
124
+
118
125
  'targetInventory.inventory',
126
+
119
127
  'targetInventory.product',
128
+ 'targetInventory.productDetail',
120
129
  'targetInventory.orderProduct'
121
130
  ]
122
131
  )
@@ -176,6 +185,7 @@ export class LoadingWorksheetController extends VasWorksheetController {
176
185
  newTargetInventory.releaseQty = remainQty
177
186
  newTargetInventory.releaseUomValue = remainUomValue
178
187
  newTargetInventory.product = targetInventory.product
188
+ newTargetInventory.productDetail = targetInventory.productDetail
179
189
  newTargetInventory.packingType = targetInventory.packingType
180
190
  newTargetInventory.batchId = targetInventory.batchId
181
191
  newTargetInventory.orderProduct = targetInventory.orderProduct