@things-factory/worksheet-base 4.3.2 → 4.4.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (131) hide show
  1. package/dist-server/constants/index.js +5 -1
  2. package/dist-server/constants/index.js.map +1 -1
  3. package/dist-server/controllers/ecommerce/index.js +5 -1
  4. package/dist-server/controllers/ecommerce/index.js.map +1 -1
  5. package/dist-server/controllers/inbound/index.js +5 -1
  6. package/dist-server/controllers/inbound/index.js.map +1 -1
  7. package/dist-server/controllers/inbound/unloading-worksheet-controller.js +3 -9
  8. package/dist-server/controllers/inbound/unloading-worksheet-controller.js.map +1 -1
  9. package/dist-server/controllers/index.js +5 -2
  10. package/dist-server/controllers/index.js.map +1 -1
  11. package/dist-server/controllers/inspect/index.js +5 -1
  12. package/dist-server/controllers/inspect/index.js.map +1 -1
  13. package/dist-server/controllers/outbound/index.js +5 -1
  14. package/dist-server/controllers/outbound/index.js.map +1 -1
  15. package/dist-server/controllers/outbound/loading-worksheet-controller.js +10 -47
  16. package/dist-server/controllers/outbound/loading-worksheet-controller.js.map +1 -1
  17. package/dist-server/controllers/outbound/picking-worksheet-controller.js +5 -142
  18. package/dist-server/controllers/outbound/picking-worksheet-controller.js.map +1 -1
  19. package/dist-server/controllers/outbound/sorting-worksheet-controller.js +20 -116
  20. package/dist-server/controllers/outbound/sorting-worksheet-controller.js.map +1 -1
  21. package/dist-server/controllers/render-grn.js +18 -18
  22. package/dist-server/controllers/vas/index.js +5 -1
  23. package/dist-server/controllers/vas/index.js.map +1 -1
  24. package/dist-server/graphql/index.js +5 -1
  25. package/dist-server/graphql/index.js.map +1 -1
  26. package/dist-server/graphql/resolvers/index.js +5 -1
  27. package/dist-server/graphql/resolvers/index.js.map +1 -1
  28. package/dist-server/graphql/resolvers/worksheet/batch-picking-worksheet.js +1 -14
  29. package/dist-server/graphql/resolvers/worksheet/batch-picking-worksheet.js.map +1 -1
  30. package/dist-server/graphql/resolvers/worksheet/loading/loading.js +10 -3
  31. package/dist-server/graphql/resolvers/worksheet/loading/loading.js.map +1 -1
  32. package/dist-server/graphql/resolvers/worksheet/loading-worksheet.js +21 -55
  33. package/dist-server/graphql/resolvers/worksheet/loading-worksheet.js.map +1 -1
  34. package/dist-server/graphql/resolvers/worksheet/packing-worksheet.js +0 -1
  35. package/dist-server/graphql/resolvers/worksheet/packing-worksheet.js.map +1 -1
  36. package/dist-server/graphql/resolvers/worksheet/picking/complete-batch-picking.js +1 -1
  37. package/dist-server/graphql/resolvers/worksheet/picking/complete-batch-picking.js.map +1 -1
  38. package/dist-server/graphql/resolvers/worksheet/picking/complete-picking.js +6 -8
  39. package/dist-server/graphql/resolvers/worksheet/picking/complete-picking.js.map +1 -1
  40. package/dist-server/graphql/resolvers/worksheet/picking/index.js +1 -2
  41. package/dist-server/graphql/resolvers/worksheet/picking/index.js.map +1 -1
  42. package/dist-server/graphql/resolvers/worksheet/picking/picking.js +4 -4
  43. package/dist-server/graphql/resolvers/worksheet/picking/picking.js.map +1 -1
  44. package/dist-server/graphql/resolvers/worksheet/picking/scan-product-picking.js +4 -4
  45. package/dist-server/graphql/resolvers/worksheet/picking/scan-product-picking.js.map +1 -1
  46. package/dist-server/graphql/resolvers/worksheet/picking-worksheet.js +1 -10
  47. package/dist-server/graphql/resolvers/worksheet/picking-worksheet.js.map +1 -1
  48. package/dist-server/graphql/resolvers/worksheet/sorting/complete-order-sorting.js +6 -11
  49. package/dist-server/graphql/resolvers/worksheet/sorting/complete-order-sorting.js.map +1 -1
  50. package/dist-server/graphql/resolvers/worksheet/sorting/scan-product-sorting.js +4 -4
  51. package/dist-server/graphql/resolvers/worksheet/sorting/scan-product-sorting.js.map +1 -1
  52. package/dist-server/graphql/resolvers/worksheet/sorting/sorting-product.js +4 -4
  53. package/dist-server/graphql/resolvers/worksheet/sorting/sorting-product.js.map +1 -1
  54. package/dist-server/graphql/resolvers/worksheet/vas-transactions/index.js +5 -1
  55. package/dist-server/graphql/resolvers/worksheet/vas-transactions/index.js.map +1 -1
  56. package/dist-server/graphql/resolvers/worksheet/vas-transactions/interfaces/index.js +5 -1
  57. package/dist-server/graphql/resolvers/worksheet/vas-transactions/interfaces/index.js.map +1 -1
  58. package/dist-server/graphql/resolvers/worksheet/vas-transactions/relabeling/index.js +5 -1
  59. package/dist-server/graphql/resolvers/worksheet/vas-transactions/relabeling/index.js.map +1 -1
  60. package/dist-server/graphql/resolvers/worksheet/vas-transactions/repackaging/index.js +5 -1
  61. package/dist-server/graphql/resolvers/worksheet/vas-transactions/repackaging/index.js.map +1 -1
  62. package/dist-server/graphql/resolvers/worksheet/vas-transactions/repalletizing/index.js +5 -1
  63. package/dist-server/graphql/resolvers/worksheet/vas-transactions/repalletizing/index.js.map +1 -1
  64. package/dist-server/graphql/resolvers/worksheet/vas-transactions/unpacking/index.js +5 -1
  65. package/dist-server/graphql/resolvers/worksheet/vas-transactions/unpacking/index.js.map +1 -1
  66. package/dist-server/graphql/resolvers/worksheet/worksheet.js +0 -2
  67. package/dist-server/graphql/resolvers/worksheet/worksheet.js.map +1 -1
  68. package/dist-server/graphql/resolvers/worksheet/worksheets.js +2 -17
  69. package/dist-server/graphql/resolvers/worksheet/worksheets.js.map +1 -1
  70. package/dist-server/graphql/resolvers/worksheet-detail/generate-batch-picking-worksheet-details-by-bulk.js +3 -5
  71. package/dist-server/graphql/resolvers/worksheet-detail/generate-batch-picking-worksheet-details-by-bulk.js.map +1 -1
  72. package/dist-server/graphql/resolvers/worksheet-detail/generate-batch-picking-worksheet-details.js +4 -15
  73. package/dist-server/graphql/resolvers/worksheet-detail/generate-batch-picking-worksheet-details.js.map +1 -1
  74. package/dist-server/graphql/resolvers/worksheet-detail/generate-picking-worksheet-details.js +1 -4
  75. package/dist-server/graphql/resolvers/worksheet-detail/generate-picking-worksheet-details.js.map +1 -1
  76. package/dist-server/graphql/resolvers/worksheet-detail/generate-release-good-worksheet-details.js +2 -6
  77. package/dist-server/graphql/resolvers/worksheet-detail/generate-release-good-worksheet-details.js.map +1 -1
  78. package/dist-server/graphql/types/index.js +5 -1
  79. package/dist-server/graphql/types/index.js.map +1 -1
  80. package/dist-server/graphql/types/worksheet/index.js +0 -10
  81. package/dist-server/graphql/types/worksheet/index.js.map +1 -1
  82. package/dist-server/graphql/types/worksheet/loaded-worksheet-detail.js +0 -1
  83. package/dist-server/graphql/types/worksheet/loaded-worksheet-detail.js.map +1 -1
  84. package/dist-server/graphql/types/worksheet/worksheet-detail-info.js +0 -2
  85. package/dist-server/graphql/types/worksheet/worksheet-detail-info.js.map +1 -1
  86. package/dist-server/graphql/types/worksheet/worksheet-info.js +0 -2
  87. package/dist-server/graphql/types/worksheet/worksheet-info.js.map +1 -1
  88. package/dist-server/graphql/types/worksheet/worksheet.js +0 -1
  89. package/dist-server/graphql/types/worksheet/worksheet.js.map +1 -1
  90. package/dist-server/index.js +5 -1
  91. package/dist-server/index.js.map +1 -1
  92. package/dist-server/routes.js +0 -4
  93. package/dist-server/routes.js.map +1 -1
  94. package/dist-server/utils/index.js +5 -1
  95. package/dist-server/utils/index.js.map +1 -1
  96. package/package.json +17 -17
  97. package/server/controllers/inbound/unloading-worksheet-controller.ts +3 -14
  98. package/server/controllers/index.ts +0 -1
  99. package/server/controllers/outbound/loading-worksheet-controller.ts +17 -83
  100. package/server/controllers/outbound/picking-worksheet-controller.ts +7 -178
  101. package/server/controllers/outbound/sorting-worksheet-controller.ts +27 -167
  102. package/server/controllers/render-grn.ts +18 -18
  103. package/server/graphql/resolvers/worksheet/batch-picking-worksheet.ts +0 -14
  104. package/server/graphql/resolvers/worksheet/loading/loading.ts +12 -5
  105. package/server/graphql/resolvers/worksheet/loading-worksheet.ts +13 -66
  106. package/server/graphql/resolvers/worksheet/packing-worksheet.ts +1 -1
  107. package/server/graphql/resolvers/worksheet/picking/complete-batch-picking.ts +1 -1
  108. package/server/graphql/resolvers/worksheet/picking/complete-picking.ts +11 -13
  109. package/server/graphql/resolvers/worksheet/picking/index.ts +1 -3
  110. package/server/graphql/resolvers/worksheet/picking/picking.ts +4 -30
  111. package/server/graphql/resolvers/worksheet/picking/scan-product-picking.ts +4 -7
  112. package/server/graphql/resolvers/worksheet/picking-worksheet.ts +2 -13
  113. package/server/graphql/resolvers/worksheet/sorting/complete-order-sorting.ts +9 -13
  114. package/server/graphql/resolvers/worksheet/sorting/scan-product-sorting.ts +4 -5
  115. package/server/graphql/resolvers/worksheet/sorting/sorting-product.ts +4 -5
  116. package/server/graphql/resolvers/worksheet/worksheet.ts +0 -2
  117. package/server/graphql/resolvers/worksheet/worksheets.ts +2 -26
  118. package/server/graphql/resolvers/worksheet-detail/generate-batch-picking-worksheet-details-by-bulk.ts +3 -12
  119. package/server/graphql/resolvers/worksheet-detail/generate-batch-picking-worksheet-details.ts +7 -22
  120. package/server/graphql/resolvers/worksheet-detail/generate-picking-worksheet-details.ts +2 -6
  121. package/server/graphql/resolvers/worksheet-detail/generate-release-good-worksheet-details.ts +1 -7
  122. package/server/graphql/types/worksheet/index.ts +0 -10
  123. package/server/graphql/types/worksheet/loaded-worksheet-detail.ts +0 -1
  124. package/server/graphql/types/worksheet/worksheet-detail-info.ts +0 -2
  125. package/server/graphql/types/worksheet/worksheet-info.ts +0 -2
  126. package/server/graphql/types/worksheet/worksheet.ts +0 -1
  127. package/server/routes.ts +0 -5
  128. package/dist-server/graphql/resolvers/worksheet/picking/seal-tote.js +0 -15
  129. package/dist-server/graphql/resolvers/worksheet/picking/seal-tote.js.map +0 -1
  130. package/server/controllers/render-fm-grn.ts +0 -266
  131. package/server/graphql/resolvers/worksheet/picking/seal-tote.ts +0 -25
@@ -101,10 +101,6 @@ export class UnloadingWorksheetController extends VasWorksheetController {
101
101
  ]
102
102
  })
103
103
  if (!worksheetDetail) throw new Error(this.ERROR_MSG.FIND.NO_RESULT(worksheetDetailName))
104
- const targetProduct: OrderProduct = worksheetDetail.targetProduct
105
-
106
- if (targetProduct.status == ORDER_PRODUCT_STATUS.EDITED)
107
- throw new Error('this product is pending for changes approval')
108
104
 
109
105
  const bizplace: Bizplace = worksheetDetail.bizplace
110
106
  const companyDomain: Domain = bizplace?.company?.domain
@@ -112,6 +108,7 @@ export class UnloadingWorksheetController extends VasWorksheetController {
112
108
  const arrivalNotice: ArrivalNotice = worksheet.arrivalNotice
113
109
  const returnOrder: ReturnOrder = worksheet.returnOrder
114
110
  const orderId: string = Boolean(arrivalNotice?.id) ? arrivalNotice.id : returnOrder.id
111
+ const targetProduct: OrderProduct = worksheetDetail.targetProduct
115
112
  const targetInventory: OrderInventory = worksheetDetail?.targetInventory
116
113
  const originInventory: OrderInventory = targetInventory ? targetInventory.inventory : null
117
114
  const batchId: string = Boolean(arrivalNotice) ? targetProduct.batchId : targetInventory.batchId
@@ -283,15 +280,11 @@ export class UnloadingWorksheetController extends VasWorksheetController {
283
280
  seed: { date: DateGenerator.generateDate() }
284
281
  })
285
282
 
286
- const targetProduct: OrderProduct = worksheetDetail.targetProduct
287
-
288
- if (targetProduct.status == ORDER_PRODUCT_STATUS.EDITED)
289
- throw new Error('this product is pending for changes approval')
290
-
291
283
  const bizplace: Bizplace = worksheetDetail.bizplace
292
284
  const worksheet: Worksheet = worksheetDetail.worksheet
293
285
  const arrivalNotice: ArrivalNotice = worksheet.arrivalNotice
294
286
  const returnOrder: ReturnOrder = worksheet.returnOrder
287
+ const targetProduct: OrderProduct = worksheetDetail.targetProduct
295
288
  const targetInventory: OrderInventory = worksheetDetail.targetInventory
296
289
  const product: Product = Boolean(arrivalNotice) ? targetProduct.product : targetInventory.product
297
290
  const packingType: string = Boolean(arrivalNotice) ? targetProduct.packingType : targetInventory.packingType
@@ -470,15 +463,11 @@ export class UnloadingWorksheetController extends VasWorksheetController {
470
463
  seed: { date: DateGenerator.generateDate() }
471
464
  })
472
465
 
473
- const targetProduct: OrderProduct = worksheetDetail.targetProduct
474
-
475
- if (targetProduct.status == ORDER_PRODUCT_STATUS.EDITED)
476
- throw new Error('this product is pending for changes approval')
477
-
478
466
  const bizplace: Bizplace = worksheetDetail.bizplace
479
467
  const worksheet: Worksheet = worksheetDetail.worksheet
480
468
  const arrivalNotice: ArrivalNotice = worksheet.arrivalNotice
481
469
  const returnOrder: ReturnOrder = worksheet.returnOrder
470
+ const targetProduct: OrderProduct = worksheetDetail.targetProduct
482
471
  const targetInventory: OrderInventory = worksheetDetail.targetInventory
483
472
  const product: Product = Boolean(arrivalNotice) ? targetProduct.product : targetInventory.product
484
473
  const packingType: string = Boolean(arrivalNotice) ? targetProduct.packingType : targetInventory.packingType
@@ -7,7 +7,6 @@ export * from './render-kimeda-grn'
7
7
  export * from './render-orientage-grn'
8
8
  export * from './render-orientage-do'
9
9
  export * from './render-seebuu-grn'
10
- export * from './render-fm-grn'
11
10
  export * from './render-manifest'
12
11
  export * from './render-po'
13
12
 
@@ -1,4 +1,4 @@
1
- import { Equal, Not, In } from 'typeorm'
1
+ import { Equal, Not } from 'typeorm'
2
2
 
3
3
  import { Bizplace } from '@things-factory/biz-base'
4
4
  import {
@@ -8,11 +8,9 @@ import {
8
8
  ORDER_TYPES,
9
9
  OrderInventory,
10
10
  OrderNoGenerator,
11
- ReleaseGood,
12
- OrderToteItem,
13
- OrderTote
11
+ ReleaseGood
14
12
  } from '@things-factory/sales-base'
15
- import { Inventory, INVENTORY_TRANSACTION_TYPE, Tote, TOTE_STATUS } from '@things-factory/warehouse-base'
13
+ import { Inventory, INVENTORY_TRANSACTION_TYPE } from '@things-factory/warehouse-base'
16
14
 
17
15
  import { WORKSHEET_STATUS, WORKSHEET_TYPE } from '../../constants'
18
16
  import { Worksheet, WorksheetDetail } from '../../entities'
@@ -97,8 +95,8 @@ export class LoadingWorksheetController extends VasWorksheetController {
97
95
 
98
96
  async loading(
99
97
  releaseGoodNo: string,
100
- worksheetDetails: Partial<WorksheetDetail & { loadedQty: number } & { toteName: string }>[]
101
- ): Promise<any> {
98
+ worksheetDetails: Partial<WorksheetDetail & { loadedQty: number }>[]
99
+ ): Promise<void> {
102
100
  const releaseGood: ReleaseGood = await this.findRefOrder(
103
101
  ReleaseGood,
104
102
  { domain: this.domain, name: releaseGoodNo },
@@ -106,14 +104,14 @@ export class LoadingWorksheetController extends VasWorksheetController {
106
104
  )
107
105
  const bizplace: Bizplace = releaseGood.bizplace
108
106
 
109
- for (let i = 0; i < worksheetDetails.length; i++) {
110
- const loadedQty: number = worksheetDetails[i].loadedQty
111
- const toteName: string = worksheetDetails[i].toteName
112
- let worksheetDetail = await this.findExecutableWorksheetDetailByName(
113
- worksheetDetails[i].name,
114
- WORKSHEET_TYPE.LOADING,
115
- ['worksheet', 'targetInventory', 'targetInventory.inventory', 'targetInventory.product']
116
- )
107
+ for (let worksheetDetail of worksheetDetails) {
108
+ const loadedQty: number = worksheetDetail.loadedQty
109
+ worksheetDetail = await this.findExecutableWorksheetDetailByName(worksheetDetail.name, WORKSHEET_TYPE.LOADING, [
110
+ 'worksheet',
111
+ 'targetInventory',
112
+ 'targetInventory.inventory',
113
+ 'targetInventory.product'
114
+ ])
117
115
 
118
116
  const worksheet: Worksheet = worksheetDetail.worksheet
119
117
  let targetInventory: OrderInventory = worksheetDetail.targetInventory
@@ -121,9 +119,9 @@ export class LoadingWorksheetController extends VasWorksheetController {
121
119
  let inventory: Inventory = targetInventory.inventory
122
120
 
123
121
  targetInventory.loadedAt = new Date()
124
- targetInventory.loadedByUser = this.user
122
+ targetInventory.loadedByUser = this.user;
125
123
 
126
- let loadedBy: string[] = targetInventory.loadedBy ? targetInventory.loadedBy.split(',') : []
124
+ let loadedBy: string[] = targetInventory.loadedBy ? (targetInventory.loadedBy).split(',') : []
127
125
  if (!loadedBy.find(x => x == this.user.name)) {
128
126
  loadedBy.push(this.user.name)
129
127
  targetInventory.loadedBy = loadedBy.join(',')
@@ -176,56 +174,11 @@ export class LoadingWorksheetController extends VasWorksheetController {
176
174
  newTargetInventory.updater = this.user
177
175
  newTargetInventory = await this.trxMgr.getRepository(OrderInventory).save(newTargetInventory)
178
176
 
179
- if (toteName) {
180
- let foundOrderTote = await this.trxMgr
181
- .getRepository(OrderTote)
182
- .findOne({ where: { name: toteName, releaseGood } })
183
-
184
- let foundOrderToteItems = await this.trxMgr
185
- .getRepository(OrderToteItem)
186
- .find({ where: { orderInventory: targetInventory.id } })
187
-
188
- let foundOrderToteItemIds = foundOrderToteItems.map((itm: OrderToteItem) => itm.id)
189
-
190
- await this.trxMgr
191
- .getRepository(OrderToteItem)
192
- .update({ id: In(foundOrderToteItemIds) }, { orderInventory: newTargetInventory })
193
-
194
- let foundOrderToteItem: OrderToteItem = await this.trxMgr
195
- .getRepository(OrderToteItem)
196
- .findOne({ where: { orderInventory: newTargetInventory.id, orderTote: foundOrderTote, qty: loadedQty } })
197
-
198
- await this.trxMgr
199
- .getRepository(OrderToteItem)
200
- .update({ id: foundOrderToteItem.id }, { orderInventory: targetInventory.id })
201
- }
202
-
203
- let newWorksheetDetail: any = await this.createWorksheetDetails(
204
- worksheet,
205
- WORKSHEET_TYPE.LOADING,
206
- [newTargetInventory],
207
- {
208
- status: WORKSHEET_STATUS.EXECUTING
209
- }
210
- )
211
-
212
- let worksheetDetailName = worksheetDetails[i].name
213
- worksheetDetails = worksheetDetails.map(record => {
214
- if (record.name == worksheetDetailName && !record?.targetInventory) {
215
- return {
216
- ...record,
217
- name: newWorksheetDetail[0].name
218
- }
219
- } else {
220
- return record
221
- }
177
+ await this.createWorksheetDetails(worksheet, WORKSHEET_TYPE.LOADING, [newTargetInventory], {
178
+ status: WORKSHEET_STATUS.EXECUTING
222
179
  })
223
-
224
- worksheetDetails[i].name = worksheetDetailName
225
180
  }
226
181
 
227
- worksheetDetails[i].targetInventory = targetInventory
228
-
229
182
  await generateInventoryHistory(
230
183
  inventory,
231
184
  releaseGood,
@@ -236,8 +189,6 @@ export class LoadingWorksheetController extends VasWorksheetController {
236
189
  this.trxMgr
237
190
  )
238
191
  }
239
-
240
- return worksheetDetails
241
192
  }
242
193
 
243
194
  async undoLoading(deliveryOrder: Partial<DeliveryOrder>, palletIds: string[]): Promise<void> {
@@ -277,10 +228,6 @@ export class LoadingWorksheetController extends VasWorksheetController {
277
228
  }
278
229
  })
279
230
 
280
- let undoOrderToteItem: OrderToteItem = await this.trxMgr
281
- .getRepository(OrderToteItem)
282
- .findOne({ where: { orderInventory: undoTargetOrderInventory } })
283
-
284
231
  if (prevTargetInventory) {
285
232
  // If there's prev target inventory
286
233
  // Merge qty and uomValue into prev target inventory
@@ -289,13 +236,6 @@ export class LoadingWorksheetController extends VasWorksheetController {
289
236
  prevTargetInventory.updater = this.user
290
237
  await this.updateOrderTargets([prevTargetInventory])
291
238
 
292
- //Update order tote item if any
293
- if (undoOrderToteItem) {
294
- undoOrderToteItem.orderInventoryId = prevTargetInventory.id
295
- undoOrderToteItem.orderInventory = prevTargetInventory
296
- await this.trxMgr.getRepository(OrderToteItem).save(undoOrderToteItem)
297
- }
298
-
299
239
  // Terminate undo target order inventory
300
240
  undoTargetOrderInventory.status = ORDER_INVENTORY_STATUS.TERMINATED
301
241
  await this.updateOrderTargets([undoTargetOrderInventory])
@@ -342,12 +282,6 @@ export class LoadingWorksheetController extends VasWorksheetController {
342
282
  status: ORDER_STATUS.LOADING
343
283
  })
344
284
 
345
- const orderToteIds = await (
346
- await this.trxMgr.getRepository(OrderTote).find({ where: { releaseGood }, relations: ['tote'] })
347
- ).map((record: OrderTote) => record?.toteId)
348
-
349
- await this.trxMgr.getRepository(Tote).update({ id: In(orderToteIds) }, { status: TOTE_STATUS.DISPATCHED })
350
-
351
285
  const worksheet: Worksheet = await this.findWorksheetByRefOrder(releaseGood, WORKSHEET_TYPE.LOADING, [
352
286
  'worksheetDetails',
353
287
  'worksheetDetails.targetInventory'
@@ -1,4 +1,4 @@
1
- import { Equal, In, IsNull, Not } from 'typeorm'
1
+ import { Equal, In, Not } from 'typeorm'
2
2
 
3
3
  import { Bizplace } from '@things-factory/biz-base'
4
4
  import { generateId } from '@things-factory/id-rule-base'
@@ -8,10 +8,6 @@ import {
8
8
  ORDER_STATUS,
9
9
  OrderInventory,
10
10
  OrderNoGenerator,
11
- OrderProduct,
12
- OrderTote,
13
- OrderToteItem,
14
- OrderToteSeal,
15
11
  OrderVas,
16
12
  ReleaseGood
17
13
  } from '@things-factory/sales-base'
@@ -24,9 +20,7 @@ import {
24
20
  InventoryItem,
25
21
  InventoryNoGenerator,
26
22
  Location,
27
- LOCATION_TYPE,
28
- Tote,
29
- TOTE_STATUS
23
+ LOCATION_TYPE
30
24
  } from '@things-factory/warehouse-base'
31
25
 
32
26
  import { TASK_NUMBER_RULE_TYPE, TASK_NUMBER_SETTING_KEY, WORKSHEET_STATUS, WORKSHEET_TYPE } from '../../constants'
@@ -394,8 +388,7 @@ export class PickingWorksheetController extends VasWorksheetController {
394
388
  productBarcode: string,
395
389
  cartonId: string,
396
390
  binLocation?: string,
397
- serialNumber?: string,
398
- toteNo?: string
391
+ serialNumber?: string
399
392
  ): Promise<OrderInventory> {
400
393
  try {
401
394
  let worksheetDetail: WorksheetDetail = await this.findExecutableWorksheetDetailByName(
@@ -408,7 +401,6 @@ export class PickingWorksheetController extends VasWorksheetController {
408
401
  'targetInventory.releaseGood',
409
402
  'targetInventory.inventory',
410
403
  'targetInventory.product',
411
- 'targetInventory.orderProduct',
412
404
  'targetInventory.product.productDetails',
413
405
  'targetInventory.product.productDetails.product',
414
406
  'targetInventory.product.productDetails.childProductDetail'
@@ -417,10 +409,8 @@ export class PickingWorksheetController extends VasWorksheetController {
417
409
 
418
410
  const releaseGood: ReleaseGood = worksheetDetail.targetInventory.releaseGood
419
411
  let targetInventory: OrderInventory = worksheetDetail.targetInventory
420
- let targetProduct: OrderProduct = targetInventory.orderProduct
421
412
  const product: Product = targetInventory.product
422
413
  let inventory: Inventory = targetInventory.inventory
423
- let bizplace: Bizplace = worksheetDetail.worksheet.bizplace
424
414
 
425
415
  //validation to prevent duplicated picking
426
416
  let oiValidate: OrderInventory = await this.trxMgr.getRepository(OrderInventory).findOne({
@@ -522,10 +512,6 @@ export class PickingWorksheetController extends VasWorksheetController {
522
512
  }
523
513
  }
524
514
 
525
- if (toteNo) {
526
- await this.toteScanning(toteNo, targetProduct, targetInventory, pickedQty, releaseGood, bizplace)
527
- }
528
-
529
515
  await this.updatePickingTransaction(releaseGood, targetInventory, worksheetDetail, inventory, pickedQty)
530
516
  } catch (error) {
531
517
  throw error
@@ -539,8 +525,7 @@ export class PickingWorksheetController extends VasWorksheetController {
539
525
  locationName: string,
540
526
  pickedQty: number,
541
527
  binLocation?: string,
542
- serialNumber?: string,
543
- toteNo?: string
528
+ serialNumber?: string
544
529
  ): Promise<void> {
545
530
  try {
546
531
  let worksheetDetail: WorksheetDetail = await this.findExecutableWorksheetDetailByName(
@@ -548,10 +533,8 @@ export class PickingWorksheetController extends VasWorksheetController {
548
533
  worksheetType,
549
534
  [
550
535
  'worksheet',
551
- 'worksheet.bizplace',
552
536
  'targetInventory',
553
537
  'targetInventory.releaseGood',
554
- 'targetInventory.orderProduct',
555
538
  'targetInventory.inventory',
556
539
  'targetInventory.inventory.location',
557
540
  'targetInventory.product'
@@ -562,8 +545,6 @@ export class PickingWorksheetController extends VasWorksheetController {
562
545
  let targetInventory: OrderInventory = worksheetDetail.targetInventory
563
546
  const product: Product = targetInventory.product
564
547
  let inventory: Inventory = targetInventory.inventory
565
- let targetProduct: OrderProduct = targetInventory.orderProduct
566
- let bizplace: Bizplace = worksheetDetail.worksheet.bizplace
567
548
 
568
549
  //validation to prevent duplicated picking
569
550
  let oiValidate: OrderInventory = await this.trxMgr.getRepository(OrderInventory).findOne({
@@ -668,10 +649,6 @@ export class PickingWorksheetController extends VasWorksheetController {
668
649
 
669
650
  targetInventory = await this.checkAndSetBinPicking(targetInventory, binLocation)
670
651
 
671
- if (toteNo) {
672
- await this.toteScanning(toteNo, targetProduct, targetInventory, pickedQty, releaseGood, bizplace)
673
- }
674
-
675
652
  await this.updatePickingTransaction(releaseGood, targetInventory, worksheetDetail, inventory, pickedQty)
676
653
 
677
654
  const fromLocation: Location = targetInventory.inventory.location
@@ -970,14 +947,6 @@ export class PickingWorksheetController extends VasWorksheetController {
970
947
  status: ORDER_STATUS.PICKING
971
948
  })
972
949
 
973
- const foundNotSealedOrderTote = await this.trxMgr
974
- .getRepository(OrderTote)
975
- .findOne({ where: { releaseGood, closedDate: IsNull() } })
976
-
977
- if (foundNotSealedOrderTote) {
978
- throw new Error('Please seal the tote(s) before completing')
979
- }
980
-
981
950
  let worksheet: Worksheet = await this.findWorksheetByRefOrder(releaseGood, WORKSHEET_TYPE.PICKING, [
982
951
  'worksheetDetails',
983
952
  'worksheetDetails.targetInventory'
@@ -1039,14 +1008,14 @@ export class PickingWorksheetController extends VasWorksheetController {
1039
1008
  worksheet.updater = this.user
1040
1009
  worksheet = await this.trxMgr.getRepository(Worksheet).save(worksheet)
1041
1010
 
1042
- const worksheetDetails: any = worksheet.worksheetDetails.filter(wsD => wsD.status != 'MISSING')
1011
+ const worksheetDetails: WorksheetDetail[] = worksheet.worksheetDetails
1043
1012
  worksheetDetails.forEach((wsd: WorksheetDetail) => {
1044
1013
  wsd.status = WORKSHEET_STATUS.DONE
1045
1014
  wsd.updater = this.user
1046
1015
  })
1047
1016
  await this.trxMgr.getRepository(WorksheetDetail).save(worksheetDetails)
1048
1017
 
1049
- const targetInventories: OrderInventory[] = worksheetDetails.map((wsd: WorksheetDetail) => {
1018
+ const targetInventories: OrderInventory[] = worksheet.worksheetDetails.map((wsd: WorksheetDetail) => {
1050
1019
  let targetInventory: OrderInventory = wsd.targetInventory
1051
1020
  targetInventory.status = ORDER_INVENTORY_STATUS.TERMINATED
1052
1021
  targetInventory.updater = this.user
@@ -1054,7 +1023,7 @@ export class PickingWorksheetController extends VasWorksheetController {
1054
1023
  })
1055
1024
  await this.updateOrderTargets(targetInventories)
1056
1025
 
1057
- const releaseGoods: ReleaseGood[] = worksheetDetails.map((wsd: WorksheetDetail) => {
1026
+ const releaseGoods: ReleaseGood[] = worksheet.worksheetDetails.map((wsd: WorksheetDetail) => {
1058
1027
  let releaseGood: ReleaseGood = wsd.targetInventory.releaseGood
1059
1028
 
1060
1029
  let orderStatus: string
@@ -1139,9 +1108,6 @@ export class PickingWorksheetController extends VasWorksheetController {
1139
1108
  }
1140
1109
 
1141
1110
  orderInventory.status = ORDER_INVENTORY_STATUS.PICKED
1142
- orderInventory.pickedBy = this.user?.name
1143
- orderInventory.pickedByUser = this.user
1144
- orderInventory.pickedAt = new Date()
1145
1111
 
1146
1112
  inventory.qty -= orderInventory.releaseQty
1147
1113
  inventory.uomValue = Math.round((inventory.uomValue - orderInventory.releaseUomValue) * 100) / 100
@@ -1401,75 +1367,6 @@ export class PickingWorksheetController extends VasWorksheetController {
1401
1367
  } catch (e) {}
1402
1368
  }
1403
1369
 
1404
- private async toteScanning(toteNo, targetProduct, targetInventory, pickedQty, releaseGood, bizplace) {
1405
- //1. find tote
1406
- let foundTote: Tote = await this.trxMgr
1407
- .getRepository(Tote)
1408
- .findOne({ where: { bizplace, name: toteNo, deletedAt: IsNull() } })
1409
-
1410
- if (foundTote?.status == TOTE_STATUS.DAMAGED || foundTote?.status == TOTE_STATUS.DISPATCHED) {
1411
- foundTote = null
1412
- }
1413
-
1414
- //2. find order tote
1415
- let foundOrderTote: OrderTote = await this.trxMgr
1416
- .getRepository(OrderTote)
1417
- .findOne({ where: { domain: this.domain, name: toteNo, releaseGood } })
1418
-
1419
- //if order tote not found the create one, if tote not found means it's tote box
1420
- //create order tote item
1421
- if (!foundOrderTote) {
1422
- const orderTote = await this.trxMgr.getRepository(OrderTote).save({
1423
- name: toteNo,
1424
- domain: this.domain,
1425
- releaseGood,
1426
- tote: foundTote ? foundTote : null,
1427
- updater: this.user
1428
- })
1429
-
1430
- const orderToteItem = await this.trxMgr.getRepository(OrderToteItem).save({
1431
- domain: this.domain,
1432
- name: OrderNoGenerator.orderToteItem(),
1433
- orderProduct: targetProduct,
1434
- orderInventory: targetInventory,
1435
- orderTote,
1436
- qty: pickedQty,
1437
- updater: this.user
1438
- })
1439
- } else {
1440
- if (foundOrderTote.closedDate) {
1441
- throw new Error('Tote has been sealed, please try another tote!')
1442
- }
1443
-
1444
- //if found order tote then check if order tote item exist
1445
- const foundOrderToteItem: OrderToteItem = await this.trxMgr.getRepository(OrderToteItem).findOne({
1446
- domain: this.domain,
1447
- orderProduct: targetProduct,
1448
- orderInventory: targetInventory,
1449
- orderTote: foundOrderTote
1450
- })
1451
-
1452
- //if not order tote item doesnt exist then create one
1453
- if (!foundOrderToteItem) {
1454
- const orderToteItem = await this.trxMgr.getRepository(OrderToteItem).save({
1455
- domain: this.domain,
1456
- name: OrderNoGenerator.orderToteItem(),
1457
- orderProduct: targetProduct,
1458
- orderInventory: targetInventory,
1459
- orderTote: foundOrderTote,
1460
- qty: pickedQty,
1461
- updater: this.user
1462
- })
1463
- } else {
1464
- //if found order tote item found then add the quantity
1465
- const orderToteItem = await this.trxMgr.getRepository(OrderToteItem).save({
1466
- ...foundOrderToteItem,
1467
- qty: foundOrderToteItem.qty + pickedQty
1468
- })
1469
- }
1470
- }
1471
- }
1472
-
1473
1370
  async undoSerialNumberPicking(worksheetDetailName: string, inventoryItemId: string): Promise<void> {
1474
1371
  const worksheetDetail: WorksheetDetail = await this.trxMgr.getRepository(WorksheetDetail).findOne({
1475
1372
  where: { name: worksheetDetailName, domain: this.domain, status: Not(Equal(WORKSHEET_STATUS.DEACTIVATED)) },
@@ -1541,72 +1438,4 @@ export class PickingWorksheetController extends VasWorksheetController {
1541
1438
  targetInventory.updater = this.user
1542
1439
  await this.updateOrderTargets([targetInventory])
1543
1440
  }
1544
-
1545
- async sealTote(sealNo: string, toteNo: string, orderNo: string): Promise<void> {
1546
- const checkDuplicateSeal = await this.trxMgr.getRepository(OrderToteSeal).findOne({
1547
- where: {
1548
- name: sealNo
1549
- }
1550
- })
1551
-
1552
- if (checkDuplicateSeal) {
1553
- throw new Error('Seal has been scanned before')
1554
- }
1555
-
1556
- const releaseGood: ReleaseGood = await this.trxMgr
1557
- .getRepository(ReleaseGood)
1558
- .findOne({ where: { domain: this.domain, name: orderNo }, relations: ['bizplace', 'bizplace.domain'] })
1559
-
1560
- let sealNoSetting: Setting = await this.trxMgr.getRepository(Setting).findOne({
1561
- where: {
1562
- domain: releaseGood.bizplace.domain,
1563
- name: 'minimum-seal-number'
1564
- }
1565
- })
1566
-
1567
- if (!sealNoSetting) {
1568
- sealNoSetting = await this.trxMgr.getRepository(Setting).findOne({
1569
- where: {
1570
- domain: this.domain,
1571
- name: 'minimum-seal-number'
1572
- }
1573
- })
1574
- }
1575
-
1576
- const foundOrderTote: OrderTote = await this.trxMgr
1577
- .getRepository(OrderTote)
1578
- .findOne({ where: { domain: this.domain, name: toteNo, releaseGood } })
1579
-
1580
- if (!foundOrderTote) {
1581
- throw new Error('Tote not scanned under this order')
1582
- }
1583
-
1584
- let totalOrderToteItems = await this.trxMgr.getRepository(OrderToteItem).count({
1585
- where: {
1586
- orderTote: foundOrderTote
1587
- }
1588
- })
1589
-
1590
- if (totalOrderToteItems < 1) {
1591
- throw new Error('Tote carton is empty')
1592
- }
1593
-
1594
- const newToteOrderSeal: OrderToteSeal = await this.trxMgr.getRepository(OrderToteSeal).save({
1595
- domain: this.domain,
1596
- name: sealNo,
1597
- orderTote: foundOrderTote,
1598
- updater: this.user
1599
- })
1600
-
1601
- const totalSeal = await this.trxMgr.getRepository(OrderToteSeal).count({
1602
- orderTote: foundOrderTote
1603
- })
1604
-
1605
- if (totalSeal >= parseInt(sealNoSetting?.value || 0)) {
1606
- await this.trxMgr.getRepository(OrderTote).save({
1607
- ...foundOrderTote,
1608
- closedDate: new Date()
1609
- })
1610
- }
1611
- }
1612
1441
  }