@things-factory/worksheet-base 4.3.524 → 4.3.525

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 (24) hide show
  1. package/dist-server/controllers/outbound/index.js +1 -7
  2. package/dist-server/controllers/outbound/index.js.map +1 -1
  3. package/dist-server/controllers/outbound/packing-worksheet-controller.js +2 -2
  4. package/dist-server/controllers/outbound/packing-worksheet-controller.js.map +1 -1
  5. package/dist-server/controllers/outbound/picking-worksheet-controller.js +96 -441
  6. package/dist-server/controllers/outbound/picking-worksheet-controller.js.map +1 -1
  7. package/dist-server/graphql/resolvers/worksheet/packing/complete-packing.js +4 -4
  8. package/dist-server/graphql/resolvers/worksheet/packing/complete-packing.js.map +1 -1
  9. package/dist-server/graphql/resolvers/worksheet/picking/activate-picking.js.map +1 -1
  10. package/dist-server/graphql/types/worksheet/index.js +2 -0
  11. package/dist-server/graphql/types/worksheet/index.js.map +1 -1
  12. package/dist-server/graphql/types/worksheet/worksheet-detail-info.js +1 -0
  13. package/dist-server/graphql/types/worksheet/worksheet-detail-info.js.map +1 -1
  14. package/dist-server/utils/lmd-util.js +123 -214
  15. package/dist-server/utils/lmd-util.js.map +1 -1
  16. package/package.json +18 -18
  17. package/server/controllers/outbound/index.ts +1 -9
  18. package/server/controllers/outbound/packing-worksheet-controller.ts +2 -2
  19. package/server/controllers/outbound/picking-worksheet-controller.ts +89 -507
  20. package/server/graphql/resolvers/worksheet/packing/complete-packing.ts +5 -4
  21. package/server/graphql/resolvers/worksheet/picking/activate-picking.ts +1 -1
  22. package/server/graphql/types/worksheet/index.ts +2 -0
  23. package/server/graphql/types/worksheet/worksheet-detail-info.ts +1 -0
  24. package/server/utils/lmd-util.ts +139 -272
@@ -1,7 +1,6 @@
1
1
  import { EntityManager, Equal, getConnection, getManager, In, IsNull, Not } from 'typeorm'
2
- import { v4 as uuidv4 } from 'uuid'
3
2
 
4
- import { ApplicationType, User } from '@things-factory/auth-base'
3
+ import { ApplicationType } from '@things-factory/auth-base'
5
4
  import { Bizplace } from '@things-factory/biz-base'
6
5
  import { logger } from '@things-factory/env'
7
6
  import { generateId } from '@things-factory/id-rule-base'
@@ -27,7 +26,6 @@ import {
27
26
  OrderToteItem,
28
27
  OrderToteSeal,
29
28
  OrderVas,
30
- OrderConsignment,
31
29
  PowrupController,
32
30
  ReleaseGood,
33
31
  WebspertController
@@ -54,7 +52,6 @@ import { SellercraftController } from '../../controllers'
54
52
  import { ActiveWorksheetPickingView, Worksheet, WorksheetDetail } from '../../entities'
55
53
  import { inventoriesByStrategy, isInventoryObsolete, WorksheetNoGenerator } from '../../utils'
56
54
  import { VasWorksheetController } from '../vas/vas-worksheet-controller'
57
- import { sortingProductResolver } from 'server/graphql/resolvers/worksheet/sorting/sorting-product'
58
55
 
59
56
  export class PickingWorksheetController extends VasWorksheetController {
60
57
  async generatePickingWorksheet(releaseGoodNo: string, currentStatus: string = null): Promise<Worksheet> {
@@ -230,24 +227,6 @@ export class PickingWorksheetController extends VasWorksheetController {
230
227
  'releaseGood.domain',
231
228
  'releaseGood.lastMileDelivery',
232
229
  'releaseGood.bizplace.domain',
233
- 'releaseGood.orderProducts',
234
- 'releaseGood.orderProducts.productDetail',
235
- 'releaseGood.orderProducts.product',
236
- 'releaseGood.orderProducts.productDetail.product',
237
- 'releaseGood.orderProducts.productBundle',
238
- 'releaseGood.orderProducts.productBundle.productBundleSettings',
239
- 'releaseGood.orderProducts.productBundle.productBundleSettings.productDetail',
240
- 'releaseGood.orderPackages',
241
- 'releaseGood.orderPackages.orderPackageItems',
242
- 'releaseGood.orderPackages.orderPackageItems.orderProduct',
243
- 'releaseGood.orderPackages.orderPackageItems.orderProduct.product',
244
- 'releaseGood.orderPackages.orderPackageItems.orderProduct.productDetail',
245
- 'releaseGood.orderConsignments',
246
- 'releaseGood.orderConsignments.orderPackages',
247
- 'releaseGood.orderConsignments.orderPackages.orderPackageItems',
248
- 'releaseGood.orderConsignments.orderPackages.orderPackageItems.orderProduct',
249
- 'releaseGood.orderConsignments.orderPackages.orderPackageItems.orderProduct.product',
250
- 'releaseGood.orderConsignments.orderPackages.orderPackageItems.orderProduct.productDetail',
251
230
  'domain',
252
231
  'bizplace',
253
232
  'bizplace.domain',
@@ -284,7 +263,6 @@ export class PickingWorksheetController extends VasWorksheetController {
284
263
  worksheet.releaseGood = { ...worksheet.releaseGood, orderProducts, orderPackages }
285
264
 
286
265
  let releaseGood: ReleaseGood = Object.assign(new ReleaseGood(), worksheet.releaseGood)
287
- let newReleaseGood: ReleaseGood
288
266
 
289
267
  // assign inventory if unassigned
290
268
  if (!releaseGood.assignedInventory) {
@@ -390,37 +368,22 @@ export class PickingWorksheetController extends VasWorksheetController {
390
368
 
391
369
  default:
392
370
  if (!releaseGood?.orderPackages?.length) {
393
- let mps = releaseGood?.lastMileDelivery?.mps
394
- switch (mps) {
395
- case true:
396
- newReleaseGood = await splitOrderConsignment(this.trxMgr, releaseGood, this.user, this.domain)
397
- break
398
- case false:
399
- case undefined:
400
- let orderConsignment: OrderConsignment = await createOrderConsignment(
401
- this.trxMgr,
402
- {},
403
- releaseGood,
404
- this.user
405
- )
406
- let orderPackage: OrderPackage = {
407
- name: OrderNoGenerator.orderPackage(),
408
- packageId: null,
409
- trackingNo: null,
410
- transporter: null,
411
- airwayBill: releaseGood?.airwayBill,
412
- invoice: releaseGood?.invoice,
413
- status: ORDER_STATUS.PROCESSING,
414
- releaseGood,
415
- domain: releaseGood.domain,
416
- bizplace: releaseGood.bizplace,
417
- creator: this.user,
418
- updater: this.user,
419
- orderConsignment: orderConsignment
420
- }
421
- newReleaseGood = await createOrderPackageAndItems(this.trxMgr, releaseGood, orderPackage)
422
- break
371
+ let orderPackage: OrderPackage = {
372
+ name: OrderNoGenerator.orderPackage(),
373
+ packageId: null,
374
+ trackingNo: null,
375
+ transporter: null,
376
+ airwayBill: releaseGood?.airwayBill,
377
+ invoice: releaseGood?.invoice,
378
+ status: ORDER_STATUS.PROCESSING,
379
+ releaseGood,
380
+ domain: releaseGood.domain,
381
+ bizplace: releaseGood.bizplace,
382
+ creator: this.user,
383
+ updater: this.user
423
384
  }
385
+ worksheet.releaseGood = await createOrderPackageAndItems(this.trxMgr, releaseGood, orderPackage)
386
+ //worksheet.releaseGood = releaseGood
424
387
  }
425
388
  break
426
389
  }
@@ -428,10 +391,6 @@ export class PickingWorksheetController extends VasWorksheetController {
428
391
  logger.error(`picking-worksheet-controller[activatePicking]: ${error}`)
429
392
  }
430
393
 
431
- if (newReleaseGood) {
432
- worksheet.releaseGood = newReleaseGood
433
- }
434
-
435
394
  return worksheet
436
395
  }
437
396
 
@@ -447,19 +406,13 @@ export class PickingWorksheetController extends VasWorksheetController {
447
406
  .leftJoinAndSelect('w.releaseGood', 'rg')
448
407
  .leftJoinAndSelect('rg.domain', 'rgd')
449
408
  .leftJoinAndSelect('rg.lastMileDelivery', 'lmd')
450
- .leftJoinAndSelect('rg.orderPackages', 'op')
451
- .leftJoinAndSelect('op.orderPackageItems', 'opi')
452
- .leftJoinAndSelect('opi.orderProduct', 'op2')
409
+ .leftJoinAndSelect('rg.orderPackages', 'rgop')
410
+ .leftJoinAndSelect('rgop.orderPackageItems', 'rgopi')
411
+ .leftJoinAndSelect('rgopi.orderProduct', 'op2')
453
412
  .leftJoinAndSelect('op2.product', 'p')
454
413
  .leftJoinAndSelect('op2.productDetail', 'pd')
455
- .leftJoinAndSelect('rg.orderConsignments', 'oc')
456
- .leftJoinAndSelect('oc.orderPackages', 'ocop')
457
- .leftJoinAndSelect('ocop.orderPackageItems', 'ocpi')
458
- .leftJoinAndSelect('ocpi.orderProduct', 'ocp2')
459
- .leftJoinAndSelect('ocp2.product', 'ocp')
460
- .leftJoinAndSelect('ocp2.productDetail', 'ocpd')
461
- .leftJoinAndSelect('rg.bizplace', 'rgb')
462
- .leftJoinAndSelect('rgb.domain', 'rgbd')
414
+ .leftJoinAndSelect('rg.bizplace', 'rgbz')
415
+ .leftJoinAndSelect('rgbz.domain', 'bzd')
463
416
  .leftJoinAndSelect('b.domain', 'bd')
464
417
  .leftJoinAndSelect('b.company', 'c')
465
418
  .leftJoinAndSelect('c.domain', 'cd')
@@ -530,7 +483,8 @@ export class PickingWorksheetController extends VasWorksheetController {
530
483
  } else {
531
484
  const targetInventories: OrderInventory[] = worksheetDetails.map((wsd: WorksheetDetail) => {
532
485
  let targetInventory: OrderInventory = wsd.targetInventory
533
- targetInventory.status = ORDER_INVENTORY_STATUS.PICKING
486
+ targetInventory.status =
487
+ targetInventory.status != 'PENDING_CANCEL' ? ORDER_INVENTORY_STATUS.PICKING : targetInventory.status
534
488
  targetInventory.updater = this.user
535
489
 
536
490
  return targetInventory
@@ -555,13 +509,7 @@ export class PickingWorksheetController extends VasWorksheetController {
555
509
  'releaseGood.orderPackages.orderPackageItems.orderProduct.productDetail',
556
510
  'releaseGood.orderProducts',
557
511
  'releaseGood.orderProducts.productDetail',
558
- 'releaseGood.orderProducts.product',
559
- 'releaseGood.orderConsignments',
560
- 'releaseGood.orderConsignments.orderPackages',
561
- 'releaseGood.orderConsignments.orderPackages.orderPackageItems',
562
- 'releaseGood.orderConsignments.orderPackages.orderPackageItems.orderProduct',
563
- 'releaseGood.orderConsignments.orderPackages.orderPackageItems.orderProduct.product',
564
- 'releaseGood.orderConsignments.orderPackages.orderPackageItems.orderProduct.productDetail'
512
+ 'releaseGood.orderProducts.product'
565
513
  ]
566
514
  })
567
515
 
@@ -638,37 +586,21 @@ export class PickingWorksheetController extends VasWorksheetController {
638
586
 
639
587
  default:
640
588
  if (!releaseGood?.orderPackages?.length) {
641
- let mps = releaseGood?.lastMileDelivery?.mps
642
- switch (mps) {
643
- case true:
644
- await splitOrderConsignment(this.trxMgr, releaseGood, this.user, this.domain)
645
- break
646
- case false:
647
- case undefined:
648
- let orderConsignment: OrderConsignment = await createOrderConsignment(
649
- this.trxMgr,
650
- {},
651
- releaseGood,
652
- this.user
653
- )
654
- let orderPackage: OrderPackage = {
655
- name: OrderNoGenerator.orderPackage(),
656
- packageId: null,
657
- trackingNo: null,
658
- transporter: null,
659
- airwayBill: releaseGood?.airwayBill,
660
- invoice: releaseGood?.invoice,
661
- status: ORDER_STATUS.PROCESSING,
662
- releaseGood,
663
- domain: releaseGood.domain,
664
- bizplace: releaseGood.bizplace,
665
- creator: this.user,
666
- updater: this.user,
667
- orderConsignment: orderConsignment
668
- }
669
- await createOrderPackageAndItems(this.trxMgr, releaseGood, orderPackage)
670
- break
589
+ let orderPackage: OrderPackage = {
590
+ name: OrderNoGenerator.orderPackage(),
591
+ packageId: null,
592
+ trackingNo: null,
593
+ transporter: null,
594
+ airwayBill: releaseGood?.airwayBill,
595
+ invoice: releaseGood?.invoice,
596
+ status: ORDER_STATUS.PROCESSING,
597
+ releaseGood,
598
+ domain: releaseGood.domain,
599
+ bizplace: releaseGood.bizplace,
600
+ creator: this.user,
601
+ updater: this.user
671
602
  }
603
+ releaseGood = await createOrderPackageAndItems(this.trxMgr, releaseGood, orderPackage)
672
604
  }
673
605
  break
674
606
  }
@@ -678,7 +610,7 @@ export class PickingWorksheetController extends VasWorksheetController {
678
610
 
679
611
  return {
680
612
  ...releaseGood,
681
- status: ORDER_STATUS.PICKING,
613
+ status: releaseGood.status != 'PENDING_CANCEL' ? ORDER_STATUS.PICKING : releaseGood.status,
682
614
  updater: this.user,
683
615
  assignedInventory: true
684
616
  }
@@ -2622,12 +2554,6 @@ export class PickingWorksheetController extends VasWorksheetController {
2622
2554
  .leftJoinAndSelect('opc_opi.orderProduct', 'opi_op')
2623
2555
  .leftJoinAndSelect('opi_op.product', 'op_p2')
2624
2556
  .leftJoinAndSelect('opi_op.productDetail', 'op_pd2')
2625
- .leftJoinAndSelect('rg.orderConsignments', 'rg_oc')
2626
- .leftJoinAndSelect('rg_oc.orderPackages', 'oc_op')
2627
- .leftJoinAndSelect('oc_op.orderPackageItems', 'oc_opi')
2628
- .leftJoinAndSelect('oc_opi.orderProduct', 'opi_op2')
2629
- .leftJoinAndSelect('opi_op2.product', 'op_p3')
2630
- .leftJoinAndSelect('opi_op2.productDetail', 'op_pd3')
2631
2557
  .leftJoinAndSelect('w.domain', 'd')
2632
2558
  .leftJoinAndSelect('w.bizplace', 'b')
2633
2559
  .leftJoinAndSelect('b.company', 'c')
@@ -2737,42 +2663,28 @@ export class PickingWorksheetController extends VasWorksheetController {
2737
2663
  })
2738
2664
  break
2739
2665
 
2740
- case ApplicationType.MMS:
2666
+ case ApplicationType.WEBSPERT:
2667
+ // Trigger Whole Order Process
2668
+ WebspertController.triggerOrderProcesses(releaseGood, this.domain, this.user)
2741
2669
  break
2742
2670
 
2743
2671
  default:
2744
2672
  if (!releaseGood?.orderPackages?.length) {
2745
- let mps = releaseGood?.lastMileDelivery?.mps
2746
- switch (mps) {
2747
- case true:
2748
- await splitOrderConsignment(this.trxMgr, releaseGood, this.user, this.domain)
2749
- break
2750
- case false:
2751
- case undefined:
2752
- let orderConsignment: OrderConsignment = await createOrderConsignment(
2753
- this.trxMgr,
2754
- {},
2755
- releaseGood,
2756
- this.user
2757
- )
2758
- let orderPackage: OrderPackage = {
2759
- name: OrderNoGenerator.orderPackage(),
2760
- packageId: null,
2761
- trackingNo: null,
2762
- transporter: null,
2763
- airwayBill: releaseGood?.airwayBill,
2764
- invoice: releaseGood?.invoice,
2765
- status: ORDER_STATUS.PROCESSING,
2766
- releaseGood,
2767
- domain: releaseGood.domain,
2768
- bizplace: releaseGood.bizplace,
2769
- creator: this.user,
2770
- updater: this.user,
2771
- orderConsignment: orderConsignment
2772
- }
2773
- await createOrderPackageAndItems(this.trxMgr, releaseGood, orderPackage)
2774
- break
2673
+ let orderPackage: OrderPackage = {
2674
+ name: OrderNoGenerator.orderPackage(),
2675
+ packageId: null,
2676
+ trackingNo: null,
2677
+ transporter: null,
2678
+ airwayBill: releaseGood?.airwayBill,
2679
+ invoice: releaseGood?.invoice,
2680
+ status: ORDER_STATUS.PROCESSING,
2681
+ releaseGood,
2682
+ domain: releaseGood.domain,
2683
+ bizplace: releaseGood.bizplace,
2684
+ creator: this.user,
2685
+ updater: this.user
2775
2686
  }
2687
+ await createOrderPackageAndItems(this.trxMgr, releaseGood, orderPackage)
2776
2688
  }
2777
2689
  break
2778
2690
  }
@@ -2795,374 +2707,44 @@ export async function createOrderPackageAndItems(
2795
2707
  releaseGood: ReleaseGood,
2796
2708
  orderPackage: OrderPackage
2797
2709
  ): Promise<ReleaseGood> {
2798
- try {
2799
- let savedOrderPackage: OrderPackage = await tx.getRepository(OrderPackage).save(orderPackage)
2800
-
2801
- const orderPackageItems: OrderPackageItem[] = releaseGood.orderProducts
2802
- .map(op => {
2803
- if (op.product) {
2804
- return {
2805
- id: uuidv4(),
2806
- name: OrderNoGenerator.orderPackageItem(),
2807
- orderProduct: op,
2808
- status: ORDER_STATUS.PROCESSING,
2809
- releaseQty: op.releaseQty,
2810
- orderPackage: savedOrderPackage,
2811
- domain: releaseGood.domain,
2812
- bizplace: releaseGood.bizplace,
2813
- creator: releaseGood.creator,
2814
- updater: releaseGood.updater,
2815
- productDetail: op.productDetail
2816
- }
2817
- } else {
2818
- let productBundle = op.productBundle
2819
- return productBundle.productBundleSettings.map(pbs => ({
2820
- name: OrderNoGenerator.orderPackageItem(),
2821
- orderProduct: op,
2822
- status: ORDER_STATUS.PROCESSING,
2823
- releaseQty: op.releaseQty * pbs.bundleQty,
2824
- orderPackage: savedOrderPackage,
2825
- domain: releaseGood.domain,
2826
- bizplace: releaseGood.bizplace,
2827
- creator: releaseGood.creator,
2828
- updater: releaseGood.updater,
2829
- productDetail: pbs.productDetail
2830
- }))
2831
- }
2832
- })
2833
- .flat()
2834
-
2835
- await tx.getRepository(OrderPackageItem).save(orderPackageItems)
2836
- orderPackage.orderPackageItems = orderPackageItems
2837
- releaseGood.orderPackages = [orderPackage]
2838
-
2839
- return releaseGood
2840
- } catch (e) {
2841
- logger.error(`error:${e}`)
2842
- }
2843
- }
2844
-
2845
- export async function splitOrderConsignment(
2846
- tx: EntityManager,
2847
- releaseGood: ReleaseGood,
2848
- user: User,
2849
- domain: Domain
2850
- ): Promise<any> {
2851
- try {
2852
- let currentConsignment = { id: uuidv4(), totalWeight: 0, orderPackages: [] }
2853
- let totalConsignments = []
2854
- let currOrderProducts = []
2855
- let totalConsignmentWeight = 0
2856
-
2857
- let orderProducts: OrderProduct = releaseGood.orderProducts
2858
- let maxConsignmentWeight = releaseGood.lastMileDelivery.consignmentWeight
2859
-
2860
- //sort product according to packingType
2861
- let sortOrderProducts = await sortingProduct(orderProducts)
2862
-
2863
- //initialise new orderConsignment created
2864
- const createdNewConsignment = () => ({
2865
- id: uuidv4(),
2866
- totalWeight: 0,
2867
- orderPackages: []
2868
- })
2869
-
2870
- //push orderPackage & packageItems into consigment
2871
- const createPackageConsignment = (consignment, packageWeight, releaseGood, orderProduct, releaseQty, user) => {
2872
- consignment.totalWeight += packageWeight
2873
-
2874
- currentConsignment.orderPackages.push({
2875
- id: uuidv4(),
2876
- name: OrderNoGenerator.orderPackage(),
2877
- packageId: null,
2878
- trackingNo: null,
2879
- transporter: null,
2880
- airwayBill: releaseGood?.airwayBill,
2881
- invoice: releaseGood?.invoice,
2882
- status: ORDER_STATUS.PROCESSING,
2883
- releaseGood,
2884
- domain: releaseGood.domain,
2885
- bizplace: releaseGood.bizplace,
2886
- creator: user,
2887
- updater: user,
2888
- orderPackageItems: [
2889
- {
2890
- id: uuidv4(),
2891
- name: OrderNoGenerator.orderPackageItem(),
2892
- releaseQty: releaseQty,
2893
- orderProduct: orderProduct,
2894
- domain: releaseGood.domain,
2895
- bizplace: releaseGood.bizplace,
2896
- creator: releaseGood.creator,
2897
- updater: releaseGood.updater,
2898
- productDetail: orderProduct.productDetail
2899
- }
2900
- ]
2901
- })
2902
- }
2903
-
2904
- const createPackage = op => {
2905
- let releaseQty = op.productDetail.packingType.toLowerCase() === 'carton' ? 1 : op.releaseQty
2906
- let packageWeight =
2907
- op.productDetail.packingType.toLowerCase() === 'carton'
2908
- ? op.productDetail.grossWeight
2909
- : op.productDetail.grossWeight * releaseQty
2910
-
2911
- const isCarton = op.productDetail.packingType.toLowerCase() === 'carton'
2912
- totalConsignmentWeight += packageWeight
2913
- const requiresNewConsignment = totalConsignmentWeight >= maxConsignmentWeight
2914
-
2915
- if (isCarton || op.releaseQty > 1) {
2916
- if (requiresNewConsignment) {
2917
- //push the current consignment to create new consignment
2918
- totalConsignments.push(currentConsignment)
2919
-
2920
- //Initialise the totalConsignment weight to the new data
2921
- totalConsignmentWeight = packageWeight + 0
2922
- currentConsignment = createdNewConsignment()
2923
- }
2924
- createPackageConsignment(currentConsignment, packageWeight, releaseGood, op, releaseQty, user)
2925
- } else {
2926
- currOrderProducts.push(op)
2927
- }
2928
- }
2710
+ let savedOrderPackage: OrderPackage = await tx.getRepository(OrderPackage).save(orderPackage)
2929
2711
 
2930
- sortOrderProducts.forEach(item => {
2931
- if (item.packingType.toLowerCase() === 'carton') {
2932
- for (let i = 0; i < item.releaseQty; i++) {
2933
- createPackage(item)
2712
+ const orderPackageItems: OrderPackageItem[] = releaseGood.orderProducts
2713
+ .map(op => {
2714
+ if (op.product) {
2715
+ return {
2716
+ name: OrderNoGenerator.orderPackageItem(),
2717
+ orderProduct: op,
2718
+ status: ORDER_STATUS.PROCESSING,
2719
+ releaseQty: op.releaseQty,
2720
+ orderPackage: savedOrderPackage,
2721
+ domain: releaseGood.domain,
2722
+ bizplace: releaseGood.bizplace,
2723
+ creator: releaseGood.creator,
2724
+ updater: releaseGood.updater,
2725
+ productDetail: op.productDetail
2934
2726
  }
2935
2727
  } else {
2936
- createPackage(item)
2728
+ let productBundle = op.productBundle
2729
+ return productBundle.productBundleSettings.map(pbs => ({
2730
+ name: OrderNoGenerator.orderPackageItem(),
2731
+ orderProduct: op,
2732
+ status: ORDER_STATUS.PROCESSING,
2733
+ releaseQty: op.releaseQty * pbs.bundleQty,
2734
+ orderPackage: savedOrderPackage,
2735
+ domain: releaseGood.domain,
2736
+ bizplace: releaseGood.bizplace,
2737
+ creator: releaseGood.creator,
2738
+ updater: releaseGood.updater,
2739
+ productDetail: pbs.productDetail
2740
+ }))
2937
2741
  }
2938
2742
  })
2743
+ .flat()
2939
2744
 
2940
- // Add any remaining items to the last orderPackage
2941
- if (currOrderProducts.length > 0) {
2942
- let availableConsignment
2943
-
2944
- for (let i = 0; i < currOrderProducts.length; i++) {
2945
- let op = currOrderProducts[i]
2946
- let releaseQty = op.releaseQty
2947
- let currProductWeight = op.productDetail.grossWeight * op.releaseQty
2948
- let lastOrderPackage = currentConsignment.orderPackages[currentConsignment.orderPackages.length - 1]
2949
-
2950
- //push the product into last current consignment orderPackage
2951
- if (currentConsignment.totalWeight + currProductWeight < maxConsignmentWeight) {
2952
- if (lastOrderPackage) {
2953
- lastOrderPackage.orderPackageItems.push({
2954
- id: uuidv4(),
2955
- name: OrderNoGenerator.orderPackageItem(),
2956
- releaseQty: op.releaseQty,
2957
- orderProduct: op,
2958
- domain: releaseGood.domain,
2959
- bizplace: releaseGood.bizplace,
2960
- creator: releaseGood.creator,
2961
- updater: releaseGood.updater,
2962
- productDetail: op.productDetail
2963
- })
2964
- } else {
2965
- await createPackageConsignment(currentConsignment, currProductWeight, releaseGood, op, releaseQty, user)
2966
- }
2967
- } else {
2968
- //push the currentConsignment into list of all the consignments
2969
- if (!totalConsignments.some(tc => tc.id === currentConsignment.id)) {
2970
- totalConsignments.push(currentConsignment)
2971
- }
2972
-
2973
- //find one order consignment to include the product
2974
- availableConsignment = totalConsignments.find(tc => {
2975
- tc.totalWeight += currProductWeight < maxConsignmentWeight
2976
- })
2977
-
2978
- if (availableConsignment) {
2979
- let lastOrderPackage = availableConsignment.orderPackages[currentConsignment.orderPackages.length - 1]
2980
- lastOrderPackage.orderPackageItems.push({
2981
- id: uuidv4(),
2982
- name: OrderNoGenerator.orderPackageItem(),
2983
- releaseQty: op.releaseQty,
2984
- orderProducts: op,
2985
- domain: releaseGood.domain,
2986
- bizplace: releaseGood.bizplace,
2987
- creator: releaseGood.creator,
2988
- updater: releaseGood.updater,
2989
- productDetail: op.productDetail
2990
- })
2991
-
2992
- //update the totalConsignment data
2993
- totalConsignments = totalConsignments.map(tc => {
2994
- tc.id === availableConsignment.id ? availableConsignment : tc
2995
- })
2996
- } else {
2997
- //create new consignment if no consignment available
2998
- currentConsignment = createdNewConsignment()
2999
- createPackageConsignment(currentConsignment, currProductWeight, releaseGood, op, releaseQty, user)
3000
-
3001
- totalConsignments.push(currentConsignment)
3002
- }
3003
- }
3004
- }
3005
- }
3006
-
3007
- //totalConsignments.length < 1 ? totalConsignments.push(currentConsignment) : totalConsignments
3008
-
3009
- const existingConsignment = totalConsignments.find(tc => tc.id === currentConsignment.id)
3010
-
3011
- if (!existingConsignment) {
3012
- totalConsignments.push(currentConsignment)
3013
- }
3014
-
3015
- let orderConsignment = totalConsignments
3016
- let newReleaseGood = await createConsignmentWithMultipackage(tx, orderConsignment, releaseGood, user, domain)
3017
-
3018
- return newReleaseGood
3019
- } catch (e) {
3020
- logger.error(`[lmd-create-consignment-notes]: ${e} `)
3021
- }
3022
- }
3023
-
3024
- export async function createOrderConsignment(
3025
- tx: EntityManager,
3026
- orderCons: OrderConsignment,
3027
- releaseGood: ReleaseGood,
3028
- user: User
3029
- ): Promise<OrderConsignment> {
3030
- try {
3031
- const orderConsignment: OrderConsignment = {
3032
- id: uuidv4(),
3033
- name: OrderNoGenerator.orderConsignment(),
3034
- noOfPackages: orderCons?.orderPackages?.length ? orderCons.orderPackages.length : 1,
3035
- domain: releaseGood.domain,
3036
- bizplace: releaseGood.bizplace,
3037
- releaseGood: releaseGood,
3038
- orderPackages: [],
3039
- creator: user,
3040
- updater: user
3041
- }
2745
+ await tx.getRepository(OrderPackageItem).save(orderPackageItems)
2746
+ orderPackage.orderPackageItems = orderPackageItems
2747
+ releaseGood.orderPackages = [orderPackage]
3042
2748
 
3043
- return tx.getRepository(OrderConsignment).save(orderConsignment)
3044
- } catch (e) {
3045
- logger.error(`[lmd-create-order-consignment]: ${e} `)
3046
- }
3047
- }
3048
-
3049
- export async function createConsignmentPackage(
3050
- tx: EntityManager,
3051
- orderPackageData: any,
3052
- releaseGood: ReleaseGood,
3053
- user: User,
3054
- orderConsignment: OrderConsignment
3055
- ): Promise<OrderPackage> {
3056
- try {
3057
- const orderPackage: OrderPackage = {
3058
- id: uuidv4(),
3059
- name: OrderNoGenerator.orderPackage(),
3060
- packageId: null,
3061
- trackingNo: null,
3062
- transporter: null,
3063
- airwayBill: releaseGood?.airwayBill,
3064
- invoice: releaseGood?.invoice,
3065
- status: ORDER_STATUS.PROCESSING,
3066
- releaseGood,
3067
- domain: releaseGood.domain,
3068
- bizplace: releaseGood.bizplace,
3069
- creator: user,
3070
- updater: user,
3071
- orderConsignment
3072
- }
3073
- return tx.getRepository(OrderPackage).save(orderPackage)
3074
- } catch (e) {
3075
- logger.error(`[lmd-create-order-package]: ${e} `)
3076
- }
3077
- }
3078
-
3079
- export async function createConsignmentPackageItem(
3080
- tx: EntityManager,
3081
- orderPackageItemsData: any[],
3082
- savedOrderPackage: OrderPackage,
3083
- releaseGood: ReleaseGood
3084
- ): Promise<OrderPackageItem[]> {
3085
- try {
3086
- const orderPackageItems: OrderPackageItem[] = orderPackageItemsData.map(opi => ({
3087
- id: opi.id,
3088
- name: opi.name,
3089
- orderProduct: opi.orderProduct,
3090
- status: ORDER_STATUS.PROCESSING,
3091
- releaseQty: opi.releaseQty,
3092
- orderPackage: savedOrderPackage,
3093
- domain: releaseGood.domain,
3094
- bizplace: releaseGood.bizplace,
3095
- creator: releaseGood.creator,
3096
- updater: releaseGood.updater,
3097
- productDetail: opi.productDetail
3098
- }))
3099
-
3100
- await tx.getRepository(OrderPackageItem).save(orderPackageItems)
3101
- return orderPackageItems
3102
- } catch (e) {
3103
- logger.error(`[lmd-create-order-package]: ${e} `)
3104
- }
3105
- }
3106
-
3107
- export async function createConsignmentWithMultipackage(
3108
- tx: EntityManager,
3109
- orderConsList: OrderConsignment[],
3110
- releaseGood: ReleaseGood,
3111
- user: User,
3112
- domain: Domain
3113
- ): Promise<any> {
3114
- try {
3115
- let newOrderPackages = []
3116
- let newOrderConsignments: OrderConsignment = []
3117
-
3118
- for (const orderCons of orderConsList) {
3119
- const savedOrderConsignment = await createOrderConsignment(tx, orderCons, releaseGood, user)
3120
-
3121
- for (const currentPackage of orderCons.orderPackages) {
3122
- const savedOrderPackage = await createConsignmentPackage(
3123
- tx,
3124
- currentPackage,
3125
- releaseGood,
3126
- user,
3127
- savedOrderConsignment
3128
- )
3129
- const orderPackageItems = await createConsignmentPackageItem(
3130
- tx,
3131
- currentPackage.orderPackageItems,
3132
- savedOrderPackage,
3133
- releaseGood
3134
- )
3135
-
3136
- savedOrderPackage.orderPackageItems = orderPackageItems
3137
- savedOrderConsignment.orderPackages.push(savedOrderPackage)
3138
- newOrderPackages.push(savedOrderPackage)
3139
- }
3140
- newOrderConsignments.push(savedOrderConsignment)
3141
- }
3142
-
3143
- releaseGood.orderConsignments = newOrderConsignments
3144
- releaseGood.orderPackages = newOrderPackages
3145
-
3146
- return releaseGood
3147
- } catch (error) {
3148
- console.error('Error creating consignment with multiple packages:', error)
3149
- throw error
3150
- }
3151
- }
3152
-
3153
- export async function sortingProduct(orderProducts): Promise<any> {
3154
- try {
3155
- orderProducts.sort((a, b) => {
3156
- if (a.product.packingType !== b.product.packingType) {
3157
- return a.product.packingType < b.product.packingType ? -1 : 1
3158
- }
3159
- if (a.product.sku !== b.product.sku) {
3160
- return a.product.sku < b.product.sku ? -1 : 1
3161
- }
3162
- return 0
3163
- })
3164
- return orderProducts
3165
- } catch (e) {
3166
- logger.error(`[lmd-sort-product]: ${e} `)
3167
- }
2749
+ return releaseGood
3168
2750
  }