@things-factory/worksheet-base 3.7.5 → 3.7.6

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 (37) hide show
  1. package/dist-server/controllers/outbound/loading-worksheet-controller.js +4 -0
  2. package/dist-server/controllers/outbound/loading-worksheet-controller.js.map +1 -1
  3. package/dist-server/controllers/outbound/picking-worksheet-controller.js +121 -67
  4. package/dist-server/controllers/outbound/picking-worksheet-controller.js.map +1 -1
  5. package/dist-server/controllers/worksheet-controller.js +25 -0
  6. package/dist-server/controllers/worksheet-controller.js.map +1 -1
  7. package/dist-server/graphql/resolvers/worksheet/loading-worksheet.js +27 -2
  8. package/dist-server/graphql/resolvers/worksheet/loading-worksheet.js.map +1 -1
  9. package/dist-server/graphql/resolvers/worksheet/packing-worksheet.js +26 -0
  10. package/dist-server/graphql/resolvers/worksheet/packing-worksheet.js.map +1 -1
  11. package/dist-server/graphql/resolvers/worksheet/picking/complete-picking.js +27 -5
  12. package/dist-server/graphql/resolvers/worksheet/picking/complete-picking.js.map +1 -1
  13. package/dist-server/graphql/resolvers/worksheet/picking/fetch-and-assign-picking-task.js +72 -0
  14. package/dist-server/graphql/resolvers/worksheet/picking/fetch-and-assign-picking-task.js.map +1 -0
  15. package/dist-server/graphql/resolvers/worksheet/picking/index.js +2 -1
  16. package/dist-server/graphql/resolvers/worksheet/picking/index.js.map +1 -1
  17. package/dist-server/graphql/resolvers/worksheet/picking/picking.js +4 -4
  18. package/dist-server/graphql/resolvers/worksheet/picking/picking.js.map +1 -1
  19. package/dist-server/graphql/resolvers/worksheet/picking-worksheet.js +86 -57
  20. package/dist-server/graphql/resolvers/worksheet/picking-worksheet.js.map +1 -1
  21. package/dist-server/graphql/types/worksheet/index.js +5 -1
  22. package/dist-server/graphql/types/worksheet/index.js.map +1 -1
  23. package/dist-server/utils/inventory-util.js +25 -0
  24. package/dist-server/utils/inventory-util.js.map +1 -1
  25. package/package.json +7 -7
  26. package/server/controllers/outbound/loading-worksheet-controller.ts +20 -0
  27. package/server/controllers/outbound/picking-worksheet-controller.ts +148 -83
  28. package/server/controllers/worksheet-controller.ts +38 -0
  29. package/server/graphql/resolvers/worksheet/loading-worksheet.ts +33 -4
  30. package/server/graphql/resolvers/worksheet/packing-worksheet.ts +31 -3
  31. package/server/graphql/resolvers/worksheet/picking/complete-picking.ts +37 -5
  32. package/server/graphql/resolvers/worksheet/picking/fetch-and-assign-picking-task.ts +78 -0
  33. package/server/graphql/resolvers/worksheet/picking/index.ts +3 -1
  34. package/server/graphql/resolvers/worksheet/picking/picking.ts +5 -4
  35. package/server/graphql/resolvers/worksheet/picking-worksheet.ts +102 -62
  36. package/server/graphql/types/worksheet/index.ts +5 -1
  37. package/server/utils/inventory-util.ts +26 -0
@@ -40,6 +40,31 @@ async function generateInventoryHistory(inventory, refOrder, transactionType, qt
40
40
  openingQty = lastInvHistory.openingQty + lastInvHistory.qty;
41
41
  openingUomValue = lastInvHistory.openingUomValue + lastInvHistory.uomValue;
42
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
+ else if (transactionType == 'UNDO_UNLOADING' || transactionType == 'RETURN') {
61
+ qty = qty;
62
+ uomValue = uomValue;
63
+ }
64
+ else {
65
+ qty = 0;
66
+ uomValue = 0;
67
+ }
43
68
  let inventoryHistory = new warehouse_base_1.InventoryHistory();
44
69
  inventoryHistory.name = warehouse_base_1.InventoryNoGenerator.inventoryHistoryName();
45
70
  inventoryHistory.description = inventory.description;
@@ -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": "3.7.5",
3
+ "version": "3.7.6",
4
4
  "main": "dist-server/index.js",
5
5
  "browser": "client/index.js",
6
6
  "things-factory": true,
@@ -27,17 +27,17 @@
27
27
  "@things-factory/auth-base": "^3.7.5",
28
28
  "@things-factory/biz-base": "^3.7.5",
29
29
  "@things-factory/document-template-base": "^3.7.5",
30
- "@things-factory/id-rule-base": "^3.7.5",
30
+ "@things-factory/id-rule-base": "^3.7.6",
31
31
  "@things-factory/integration-lmd": "^3.7.5",
32
- "@things-factory/integration-marketplace": "^3.7.5",
32
+ "@things-factory/integration-marketplace": "^3.7.6",
33
33
  "@things-factory/integration-sellercraft": "^3.7.5",
34
- "@things-factory/marketplace-base": "^3.7.5",
34
+ "@things-factory/marketplace-base": "^3.7.6",
35
35
  "@things-factory/notification": "^3.7.5",
36
- "@things-factory/sales-base": "^3.7.5",
36
+ "@things-factory/sales-base": "^3.7.6",
37
37
  "@things-factory/setting-base": "^3.7.5",
38
38
  "@things-factory/shell": "^3.7.5",
39
39
  "@things-factory/transport-base": "^3.7.5",
40
- "@things-factory/warehouse-base": "^3.7.5"
40
+ "@things-factory/warehouse-base": "^3.7.6"
41
41
  },
42
- "gitHead": "43e77ed980b3e999d9d17aa75cf50a547f87f4e7"
42
+ "gitHead": "d9d72c07fc3b01af2ede46808ec0aced3241ed51"
43
43
  }
@@ -34,6 +34,26 @@ export class LoadingWorksheetController extends VasWorksheetController {
34
34
  )
35
35
  }
36
36
 
37
+ async updateLoadingWorksheet(
38
+ releaseGoodNo: string,
39
+ targetInventories: Partial<OrderInventory>[],
40
+ worksheet: Worksheet
41
+ ): Promise<Worksheet> {
42
+ const releaseGood: ReleaseGood = await this.findRefOrder(
43
+ ReleaseGood,
44
+ { domain: this.domain, name: releaseGoodNo },
45
+ ['bizplace']
46
+ )
47
+ return await this.updateWorksheet(
48
+ WORKSHEET_TYPE.LOADING,
49
+ releaseGood,
50
+ worksheet,
51
+ targetInventories,
52
+ ORDER_STATUS.LOADING,
53
+ ORDER_INVENTORY_STATUS.LOADING
54
+ )
55
+ }
56
+
37
57
  async activateLoading(worksheetNo: string, loadingWorksheetDetails: Partial<WorksheetDetail>[]): Promise<Worksheet> {
38
58
  const worksheet: Worksheet = await this.findActivatableWorksheet(worksheetNo, WORKSHEET_TYPE.LOADING, [
39
59
  'releaseGood',
@@ -17,7 +17,8 @@ import {
17
17
  INVENTORY_STATUS,
18
18
  INVENTORY_TRANSACTION_TYPE,
19
19
  Location,
20
- LOCATION_TYPE
20
+ LOCATION_TYPE,
21
+ LOCATION_STATUS
21
22
  } from '@things-factory/warehouse-base'
22
23
 
23
24
  import { TASK_NUMBER_RULE_TYPE, TASK_NUMBER_SETTING_KEY, WORKSHEET_STATUS, WORKSHEET_TYPE } from '../../constants'
@@ -190,7 +191,7 @@ export class PickingWorksheetController extends VasWorksheetController {
190
191
  if (vasWorksheet) {
191
192
  await this.activateVAS(vasWorksheet.name, vasWorksheet.worksheetDetails)
192
193
  }
193
- } catch (e) {}
194
+ } catch (e) { }
194
195
 
195
196
  const pendingSplitOIs: OrderInventory[] = await this.trxMgr.getRepository(OrderInventory).find({
196
197
  where: { domain: this.domain, releaseGood, status: ORDER_INVENTORY_STATUS.PENDING_SPLIT }
@@ -388,104 +389,138 @@ export class PickingWorksheetController extends VasWorksheetController {
388
389
  cartonId: string,
389
390
  binLocation?: string
390
391
  ): Promise<void> {
391
- let worksheetDetail: WorksheetDetail = await this.findExecutableWorksheetDetailByName(
392
- worksheetDetailName,
393
- worksheetType,
394
- [
395
- 'worksheet',
396
- 'worksheet.bizplace',
397
- 'targetInventory',
398
- 'targetInventory.releaseGood',
399
- 'targetInventory.inventory',
400
- 'targetInventory.product',
401
- 'targetInventory.product.productDetails',
402
- 'targetInventory.product.productDetails.product',
403
- 'targetInventory.product.productDetails.childProductDetail'
404
- ]
405
- )
392
+ try {
393
+ let worksheetDetail: WorksheetDetail = await this.findExecutableWorksheetDetailByName(
394
+ worksheetDetailName,
395
+ worksheetType,
396
+ [
397
+ 'worksheet',
398
+ 'worksheet.bizplace',
399
+ 'targetInventory',
400
+ 'targetInventory.releaseGood',
401
+ 'targetInventory.inventory',
402
+ 'targetInventory.product',
403
+ 'targetInventory.product.productDetails',
404
+ 'targetInventory.product.productDetails.product',
405
+ 'targetInventory.product.productDetails.childProductDetail'
406
+ ]
407
+ )
406
408
 
407
- const releaseGood: ReleaseGood = worksheetDetail.targetInventory.releaseGood
408
- let targetInventory: OrderInventory = worksheetDetail.targetInventory
409
- const product: Product = targetInventory.product
410
- let inventory: Inventory = targetInventory.inventory
411
- const packingType: string = inventory.packingType
412
- const packingSize: number = inventory.packingSize
409
+ const releaseGood: ReleaseGood = worksheetDetail.targetInventory.releaseGood
410
+ let targetInventory: OrderInventory = worksheetDetail.targetInventory
411
+ const product: Product = targetInventory.product
412
+ let inventory: Inventory = targetInventory.inventory
413
413
 
414
- let pickedQty: number = 1
415
- const releaseQty: number = targetInventory.releaseQty
414
+ //validation to prevent over release
415
+ if (inventory.qty <= 0)
416
+ throw new Error(this.ERROR_MSG.VALIDITY.CANT_PROCEED_STEP_BY('picking', `over release`))
416
417
 
417
- if (inventory.cartonId !== cartonId)
418
- throw new Error(this.ERROR_MSG.VALIDITY.UNEXPECTED_FIELD_VALUE('Carton ID', cartonId, inventory.cartonId))
418
+ const packingType: string = inventory.packingType
419
+ const packingSize: number = inventory.packingSize
419
420
 
420
- // search for matching product barcode
421
- const productDetails: ProductDetail[] = product?.productDetails.filter(detail => !detail.deletedAt)
422
- const isMatchingBarcode: boolean = productDetails.map(detail => detail.gtin).includes(productBarcode)
423
- if (!isMatchingBarcode) throw new Error(this.ERROR_MSG.FIND.NO_RESULT(productBarcode))
421
+ let pickedQty: number = 1
422
+ const releaseQty: number = targetInventory.releaseQty
424
423
 
425
- // case for scanning parent packing type, packing size
426
- const foundProductDetail: ProductDetail = productDetails.find(
427
- (detail: ProductDetail) =>
428
- detail.gtin === productBarcode &&
429
- detail.packingType === packingType &&
430
- detail.packingSize == packingSize &&
431
- detail.product?.id === product.id
432
- )
424
+ // bin picking validation
425
+ const binPickingSetting: Setting = await this.trxMgr.getRepository(Setting).findOne({
426
+ where: {
427
+ domain: this.domain,
428
+ name: 'enable-bin-picking'
429
+ }
430
+ })
431
+ if (binPickingSetting != undefined && (binPickingSetting.value).toLowerCase() == 'true') {
432
+ if (binLocation) {
433
+ const foundBinLocation: Location = await this.trxMgr.getRepository(Location).findOne({
434
+ where: { domain: this.domain, name: binLocation, type: LOCATION_TYPE.BIN }
435
+ })
433
436
 
434
- if (!foundProductDetail) {
435
- const roProductDetail: ProductDetail = productDetails.find(
436
- (parentDetail: ProductDetail) =>
437
- parentDetail.packingType === packingType && parentDetail.packingSize == packingSize
438
- )
437
+ if (!foundBinLocation)
438
+ throw new Error(this.ERROR_MSG.VALIDITY.CANT_PROCEED_STEP_BY('picking', `invalid bin location id`))
439
439
 
440
- pickedQty = await this.getChildQty(productDetails, productBarcode, roProductDetail)
441
- if (pickedQty > releaseQty) {
442
- throw new Error(this.ERROR_MSG.VALIDITY.CANT_PROCEED_STEP_BY('picking', `over release`))
443
- }
444
- }
440
+ targetInventory.binLocation = foundBinLocation
445
441
 
446
- targetInventory.pickedQty = Boolean(targetInventory?.pickedQty) ? targetInventory.pickedQty + pickedQty : pickedQty
447
- if (targetInventory.pickedQty == releaseQty) {
448
- const leftQty: number = inventory.qty - releaseQty
449
- if (leftQty < 0) {
450
- throw new Error(this.ERROR_MSG.VALIDITY.CANT_PROCEED_STEP_BY('picking', `quantity can't exceed limitation`))
442
+ //// Temporarily disable Bin Usage Tracking
443
+ // await this.trxMgr.getRepository(Location).update(
444
+ // { domain: this.domain, name: binLocation, type: LOCATION_TYPE.BIN },
445
+ // { status: LOCATION_STATUS.OCCUPIED }
446
+ // )
447
+ } else {
448
+ throw new Error(this.ERROR_MSG.VALIDITY.CANT_PROCEED_STEP_BY('picking', `invalid bin location id`))
449
+ }
451
450
  }
452
451
 
453
- targetInventory.status = ORDER_INVENTORY_STATUS.PICKED
454
-
455
- if (binLocation) {
456
- const foundBinLocation: Location = await this.trxMgr.getRepository(Location).findOne({
457
- where: { domain: this.domain, name: binLocation, type: LOCATION_TYPE.BIN }
458
- })
452
+ if (inventory.cartonId !== cartonId)
453
+ throw new Error(this.ERROR_MSG.VALIDITY.UNEXPECTED_FIELD_VALUE('Carton ID', cartonId, inventory.cartonId))
454
+
455
+ // search for matching product barcode
456
+ const productDetails: ProductDetail[] = product?.productDetails.filter(detail => !detail.deletedAt)
457
+ const isMatchingBarcode: boolean = productDetails.map(detail => detail.gtin).includes(productBarcode)
458
+ if (!isMatchingBarcode) throw new Error(this.ERROR_MSG.FIND.NO_RESULT(productBarcode))
459
+
460
+ // case for scanning parent packing type, packing size
461
+ const foundProductDetail: ProductDetail = productDetails.find(
462
+ (detail: ProductDetail) =>
463
+ detail.gtin === productBarcode &&
464
+ detail.packingType === packingType &&
465
+ detail.packingSize == packingSize &&
466
+ detail.product?.id === product.id
467
+ )
459
468
 
460
- if (!foundBinLocation)
461
- throw new Error(this.ERROR_MSG.VALIDITY.CANT_PROCEED_STEP_BY('picking', `invalid bin location id`))
469
+ if (!foundProductDetail) {
470
+ const roProductDetail: ProductDetail = productDetails.find(
471
+ (parentDetail: ProductDetail) =>
472
+ parentDetail.packingType === packingType && parentDetail.packingSize == packingSize
473
+ )
462
474
 
463
- targetInventory.binLocation = foundBinLocation
475
+ pickedQty = await this.getChildQty(productDetails, productBarcode, roProductDetail)
476
+ if (pickedQty > releaseQty) {
477
+ throw new Error(this.ERROR_MSG.VALIDITY.CANT_PROCEED_STEP_BY('picking', `over release`))
478
+ }
464
479
  }
465
- await this.updateOrderTargets([targetInventory])
480
+ console.log('')
466
481
 
467
- inventory.qty -= targetInventory.releaseQty
468
- inventory.uomValue = Math.round((inventory.uomValue - targetInventory.releaseUomValue) * 100) / 100
469
- inventory.lockedQty = inventory.lockedQty - targetInventory.releaseQty
470
- inventory.lockedUomValue = Math.round((inventory.lockedUomValue - targetInventory.releaseUomValue) * 100) / 100
471
- inventory = await this.transactionInventory(
472
- inventory,
473
- releaseGood,
474
- -targetInventory.releaseQty,
475
- -targetInventory.releaseUomValue,
476
- INVENTORY_TRANSACTION_TYPE.PICKING
477
- )
482
+ targetInventory.pickedQty = Boolean(targetInventory?.pickedQty) ? targetInventory.pickedQty + pickedQty : pickedQty
483
+ if (targetInventory.pickedQty == releaseQty) {
484
+ const leftQty: number = inventory.qty - releaseQty
485
+ if (leftQty < 0) {
486
+ throw new Error(this.ERROR_MSG.VALIDITY.CANT_PROCEED_STEP_BY('picking', `quantity can't exceed limitation`))
487
+ }
478
488
 
479
- worksheetDetail.status = WORKSHEET_STATUS.DONE
480
- worksheetDetail.updater = this.user
481
- await this.trxMgr.getRepository(WorksheetDetail).save(worksheetDetail)
489
+ targetInventory.status = ORDER_INVENTORY_STATUS.PICKED
490
+
491
+ inventory.qty -= targetInventory.releaseQty
492
+ inventory.uomValue = Math.round((inventory.uomValue - targetInventory.releaseUomValue) * 100) / 100
493
+ inventory.lockedQty = inventory.lockedQty - targetInventory.releaseQty
494
+ inventory.lockedUomValue = Math.round((inventory.lockedUomValue - targetInventory.releaseUomValue) * 100) / 100
495
+ inventory = await this.transactionInventory(
496
+ inventory,
497
+ releaseGood,
498
+ -targetInventory.releaseQty,
499
+ -targetInventory.releaseUomValue,
500
+ INVENTORY_TRANSACTION_TYPE.PICKING
501
+ )
482
502
 
483
- if (leftQty === 0) {
484
- inventory.status = INVENTORY_STATUS.TERMINATED
485
- await this.transactionInventory(inventory, releaseGood, 0, 0, INVENTORY_TRANSACTION_TYPE.TERMINATED)
503
+ worksheetDetail.status = WORKSHEET_STATUS.DONE
504
+ worksheetDetail.updater = this.user
505
+ await this.trxMgr.getRepository(WorksheetDetail).save(worksheetDetail)
506
+
507
+ if (leftQty === 0) {
508
+ inventory.status = INVENTORY_STATUS.TERMINATED
509
+ await this.transactionInventory(inventory, releaseGood, 0, 0, INVENTORY_TRANSACTION_TYPE.TERMINATED)
510
+ }
486
511
  }
487
- } else {
512
+
513
+ //validation to prevent duplicated picking
514
+ let oiValidate: OrderInventory = await this.trxMgr.getRepository(OrderInventory).findOne({
515
+ where: { domain: this.domain, id: targetInventory.id, status: ORDER_INVENTORY_STATUS.PICKING }
516
+ })
517
+ if (!oiValidate)
518
+ throw new Error(this.ERROR_MSG.VALIDITY.CANT_PROCEED_STEP_BY('picking', `is done`))
519
+
488
520
  await this.updateOrderTargets([targetInventory])
521
+
522
+ } catch (error) {
523
+ throw error
489
524
  }
490
525
  }
491
526
 
@@ -494,7 +529,8 @@ export class PickingWorksheetController extends VasWorksheetController {
494
529
  worksheetType: string,
495
530
  palletId: string,
496
531
  locationName: string,
497
- releaseQty: number
532
+ releaseQty: number,
533
+ binLocation?: string
498
534
  ): Promise<void> {
499
535
  let worksheetDetail: WorksheetDetail = await this.findExecutableWorksheetDetailByName(
500
536
  worksheetDetailName,
@@ -518,6 +554,35 @@ export class PickingWorksheetController extends VasWorksheetController {
518
554
  throw new Error(this.ERROR_MSG.VALIDITY.CANT_PROCEED_STEP_BY('picking', `quantity can't exceed limitation`))
519
555
  }
520
556
 
557
+
558
+ // bin picking validation
559
+ const binPickingSetting: Setting = await this.trxMgr.getRepository(Setting).findOne({
560
+ where: {
561
+ domain: this.domain,
562
+ name: 'enable-bin-picking'
563
+ }
564
+ })
565
+ if (binPickingSetting != undefined && (binPickingSetting.value).toLowerCase() == 'true') {
566
+ if (binLocation) {
567
+ const foundBinLocation: Location = await this.trxMgr.getRepository(Location).findOne({
568
+ where: { domain: this.domain, name: binLocation, type: LOCATION_TYPE.BIN }
569
+ })
570
+
571
+ if (!foundBinLocation)
572
+ throw new Error(this.ERROR_MSG.VALIDITY.CANT_PROCEED_STEP_BY('picking', `invalid bin location id`))
573
+
574
+ targetInventory.binLocation = foundBinLocation
575
+
576
+ //// Temporarily disable Bin Usage Tracking
577
+ // await this.trxMgr.getRepository(Location).update(
578
+ // { domain: this.domain, name: binLocation, type: LOCATION_TYPE.BIN },
579
+ // { status: LOCATION_STATUS.OCCUPIED }
580
+ // )
581
+ } else {
582
+ throw new Error(this.ERROR_MSG.VALIDITY.CANT_PROCEED_STEP_BY('picking', `invalid bin location id`))
583
+ }
584
+ }
585
+
521
586
  targetInventory.pickedQty = releaseQty
522
587
  targetInventory.status = ORDER_INVENTORY_STATUS.PICKED
523
588
  await this.updateOrderTargets([targetInventory])
@@ -555,6 +555,44 @@ export class WorksheetController {
555
555
  return worksheet
556
556
  }
557
557
 
558
+ // @chernhaoee I think the naming of this function is not proper. Seems like it should be something like "updateLoadingWorksheet" since the logic targets only Loading Order Target
559
+ async updateWorksheet(
560
+ worksheetType: string,
561
+ refOrder: ReferenceOrderType,
562
+ worksheet: Worksheet,
563
+ orderTargets: OrderTargetTypes[],
564
+ refOrderStatus: string,
565
+ orderTargetStatus: string,
566
+ ): Promise<Worksheet> {
567
+ let newOrderTarget = []
568
+
569
+ orderTargets.forEach((orderTarget: OrderTargetTypes) => {
570
+ orderTarget.status = orderTargetStatus
571
+ })
572
+ orderTargets = await this.updateOrderTargets(orderTargets)
573
+
574
+ for (let orderTarget of orderTargets) {
575
+ try {
576
+ await this.findWorksheetDetail({
577
+ targetInventory: orderTarget.id,
578
+ type: WORKSHEET_TYPE.LOADING
579
+ })
580
+ } catch (e) {
581
+ newOrderTarget.push(orderTarget)
582
+ }
583
+ }
584
+
585
+ worksheet.worksheetDetails = await this.createWorksheetDetails(worksheet, worksheetType, newOrderTarget)
586
+
587
+ // find worksheet details that doesnt exist based on order inventory
588
+ //worksheet.worksheetDetails = await this.findWorksheetDetail(worksheet.id)
589
+
590
+ refOrder.status = refOrderStatus
591
+ await this.updateRefOrder(refOrder)
592
+
593
+ return worksheet
594
+ }
595
+
558
596
  async generateBatchWorksheet(
559
597
  worksheetType: string,
560
598
  batchPickingWorksheet: Worksheet,
@@ -1,7 +1,9 @@
1
- import { OrderInventory, ReleaseGood } from '@things-factory/sales-base'
1
+ import { Equal, getRepository, In, Not } from 'typeorm'
2
+
3
+ import { ORDER_INVENTORY_STATUS, OrderInventory, ReleaseGood } from '@things-factory/sales-base'
2
4
  import { Domain } from '@things-factory/shell'
3
- import { Inventory } from '@things-factory/warehouse-base'
4
- import { Equal, getRepository, Not } from 'typeorm'
5
+ import { Inventory, Location } from '@things-factory/warehouse-base'
6
+
5
7
  import { WORKSHEET_STATUS, WORKSHEET_TYPE } from '../../../constants'
6
8
  import { Worksheet, WorksheetDetail } from '../../../entities'
7
9
  import { fetchExecutingWorksheet } from '../../../utils'
@@ -9,11 +11,37 @@ import { fetchExecutingWorksheet } from '../../../utils'
9
11
  export const loadingWorksheetResolver = {
10
12
  async loadingWorksheet(_: any, { releaseGoodNo }, context: any) {
11
13
  const { domain }: { domain: Domain } = context.state
12
- const releaseGood: ReleaseGood = await getRepository(ReleaseGood).findOne({
14
+ let releaseGood: ReleaseGood = await getRepository(ReleaseGood).findOne({
13
15
  where: { domain, name: releaseGoodNo /*status: ORDER_STATUS.LOADING*/ },
14
16
  relations: ['bizplace']
15
17
  })
16
18
 
19
+ // Find Release Order based on Bin
20
+ if (!releaseGood) {
21
+ const binLocation: Location = await getRepository(Location).findOne({
22
+ where: { domain, name: releaseGoodNo }
23
+ })
24
+
25
+ const orderInventoryByBin: OrderInventory = await getRepository(OrderInventory).findOne({
26
+ where: {
27
+ domain, binLocation, status: In([ORDER_INVENTORY_STATUS.LOADING, ORDER_INVENTORY_STATUS.LOADED])
28
+ },
29
+ order: {
30
+ createdAt: 'ASC'
31
+ },
32
+ relations: [
33
+ 'releaseGood',
34
+ 'releaseGood.bizplace',
35
+ 'releaseGood.bizplace.domain'
36
+ ]
37
+ })
38
+
39
+ if (orderInventoryByBin?.releaseGood) {
40
+ releaseGoodNo = orderInventoryByBin.releaseGood.name
41
+ releaseGood = orderInventoryByBin.releaseGood
42
+ }
43
+ }
44
+
17
45
  if (!releaseGood) throw new Error(`Release good doesn't exists.`)
18
46
 
19
47
  const foundWorksheet: Worksheet = await fetchExecutingWorksheet(
@@ -40,6 +68,7 @@ export const loadingWorksheetResolver = {
40
68
 
41
69
  return {
42
70
  worksheetInfo: {
71
+ releaseGood,
43
72
  bizplaceName: releaseGood.bizplace.name,
44
73
  startedAt: foundWorksheet.startedAt,
45
74
  refNo: releaseGood.refNo,
@@ -1,11 +1,11 @@
1
- import { EntityManager } from 'typeorm'
1
+ import { EntityManager, In } from 'typeorm'
2
2
 
3
3
  import { User } from '@things-factory/auth-base'
4
4
  import { Sellercraft, SellercraftStatus } from '@things-factory/integration-sellercraft'
5
5
  import { MarketplaceOrder, MarketplaceOrderItem, MarketplaceOrderShipping } from '@things-factory/marketplace-base'
6
- import { OrderInventory, ReleaseGood } from '@things-factory/sales-base'
6
+ import { ORDER_INVENTORY_STATUS, OrderInventory, ReleaseGood } from '@things-factory/sales-base'
7
7
  import { Domain } from '@things-factory/shell'
8
- import { Inventory } from '@things-factory/warehouse-base'
8
+ import { Inventory, Location } from '@things-factory/warehouse-base'
9
9
 
10
10
  import { WORKSHEET_TYPE } from '../../../constants'
11
11
  import { SellercraftController } from '../../../controllers'
@@ -23,7 +23,34 @@ export const packingWorksheetResolver = {
23
23
  relations: ['bizplace', 'bizplace.domain']
24
24
  })
25
25
 
26
+ // Find Release Order based on Bin
27
+ if (!releaseGood) {
28
+ const binLocation: Location = await tx.getRepository(Location).findOne({
29
+ where: { domain, name: releaseGoodNo }
30
+ })
31
+
32
+ const orderInventoryByBin: OrderInventory = await tx.getRepository(OrderInventory).findOne({
33
+ where: {
34
+ domain, binLocation, status: In([ORDER_INVENTORY_STATUS.PACKING, ORDER_INVENTORY_STATUS.PACKED])
35
+ },
36
+ order: {
37
+ createdAt: 'ASC'
38
+ },
39
+ relations: [
40
+ 'releaseGood',
41
+ 'releaseGood.bizplace',
42
+ 'releaseGood.bizplace.domain'
43
+ ]
44
+ })
45
+
46
+ if (orderInventoryByBin?.releaseGood) {
47
+ releaseGoodNo = orderInventoryByBin.releaseGood.name
48
+ releaseGood = orderInventoryByBin.releaseGood
49
+ }
50
+ }
51
+
26
52
  if (!releaseGood) throw new Error(`Release good dosen't exist.`)
53
+
27
54
  const worksheet: Worksheet = await fetchExecutingWorksheet(
28
55
  domain,
29
56
  releaseGood.bizplace,
@@ -110,6 +137,7 @@ export const packingWorksheetResolver = {
110
137
 
111
138
  return {
112
139
  worksheetInfo: {
140
+ releaseGood,
113
141
  bizplaceName: releaseGood.bizplace.name,
114
142
  refNo: releaseGood.refNo,
115
143
  refNo2: releaseGood.refNo2,