@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.
- package/dist-server/controllers/outbound/index.js +1 -7
- package/dist-server/controllers/outbound/index.js.map +1 -1
- package/dist-server/controllers/outbound/packing-worksheet-controller.js +2 -2
- package/dist-server/controllers/outbound/packing-worksheet-controller.js.map +1 -1
- package/dist-server/controllers/outbound/picking-worksheet-controller.js +96 -441
- package/dist-server/controllers/outbound/picking-worksheet-controller.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/packing/complete-packing.js +4 -4
- package/dist-server/graphql/resolvers/worksheet/packing/complete-packing.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/picking/activate-picking.js.map +1 -1
- package/dist-server/graphql/types/worksheet/index.js +2 -0
- package/dist-server/graphql/types/worksheet/index.js.map +1 -1
- package/dist-server/graphql/types/worksheet/worksheet-detail-info.js +1 -0
- package/dist-server/graphql/types/worksheet/worksheet-detail-info.js.map +1 -1
- package/dist-server/utils/lmd-util.js +123 -214
- package/dist-server/utils/lmd-util.js.map +1 -1
- package/package.json +18 -18
- package/server/controllers/outbound/index.ts +1 -9
- package/server/controllers/outbound/packing-worksheet-controller.ts +2 -2
- package/server/controllers/outbound/picking-worksheet-controller.ts +89 -507
- package/server/graphql/resolvers/worksheet/packing/complete-packing.ts +5 -4
- package/server/graphql/resolvers/worksheet/picking/activate-picking.ts +1 -1
- package/server/graphql/types/worksheet/index.ts +2 -0
- package/server/graphql/types/worksheet/worksheet-detail-info.ts +1 -0
- 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
|
|
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
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
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', '
|
|
451
|
-
.leftJoinAndSelect('
|
|
452
|
-
.leftJoinAndSelect('
|
|
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.
|
|
456
|
-
.leftJoinAndSelect('
|
|
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 =
|
|
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
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
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.
|
|
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
|
|
2746
|
-
|
|
2747
|
-
|
|
2748
|
-
|
|
2749
|
-
|
|
2750
|
-
|
|
2751
|
-
|
|
2752
|
-
|
|
2753
|
-
|
|
2754
|
-
|
|
2755
|
-
|
|
2756
|
-
|
|
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
|
-
|
|
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
|
-
|
|
2931
|
-
|
|
2932
|
-
|
|
2933
|
-
|
|
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
|
-
|
|
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
|
-
|
|
2941
|
-
|
|
2942
|
-
|
|
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
|
-
|
|
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
|
}
|