@things-factory/sales-base 4.3.523 → 4.3.524

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.
@@ -1,5 +1,5 @@
1
1
  import { EntityManager, getConnection, getRepository } from 'typeorm'
2
-
2
+ import { v4 as uuidv4 } from 'uuid'
3
3
  import { Bizplace } from '@things-factory/biz-base'
4
4
  import { logger } from '@things-factory/env'
5
5
  import { Platform, Powrup, PowrupAPI } from '@things-factory/integration-powrup'
@@ -14,6 +14,7 @@ import { OrderProduct } from '../../service/order-product/order-product'
14
14
  import { ReleaseGood } from '../../service/release-good/release-good'
15
15
  import { OrderNoGenerator } from '../../utils'
16
16
  import { DateTimeDifference } from '../../utils/datetime-util'
17
+ import { OrderConsignment } from '../../service/order-consignment/order-consignment'
17
18
 
18
19
  const { PerformanceObserver, performance } = require('node:perf_hooks')
19
20
 
@@ -35,9 +36,7 @@ export class PowrupController {
35
36
 
36
37
  try {
37
38
  const orderProducts: OrderProduct[] = releaseGood.orderProducts
38
- const orderInformation: any = {
39
- refOrderId: releaseGood.refOrderId
40
- }
39
+ const orderInformation: any = { refOrderId: releaseGood.refOrderId }
41
40
 
42
41
  if (
43
42
  releaseGood?.lastMarketPackCall &&
@@ -56,47 +55,57 @@ export class PowrupController {
56
55
  context: { state: { domain: domain || null, user: user || null } }
57
56
  })
58
57
  performance.mark(`end:${releaseGood.refOrderId}`)
58
+
59
59
  if (orderPack?.packages) {
60
60
  const packages: any[] = orderPack.packages
61
-
62
61
  await Promise.all(
63
62
  packages.map(async pkg => {
64
63
  const items = pkg.items
65
- const orderPackage: any = {
66
- name: OrderNoGenerator.orderPackage(),
67
- packageId: pkg.packageId,
68
- status: ORDER_STATUS.PROCESSING,
69
- releaseGood,
70
- domain: releaseGood.domain,
71
- bizplace: releaseGood.bizplace,
72
- creator: releaseGood.creator,
73
- updater: releaseGood.updater
74
- }
75
-
76
- let savedOrderPackage: OrderPackage = await trxMgr.getRepository(OrderPackage).save(orderPackage)
77
64
 
78
- const orderPackageItems: OrderPackageItem[] = items.map(itm => {
79
- const { refCode, qty } = itm
80
- if (!refCode) {
81
- throw new Error(`universalIdentifier missing`)
82
- }
83
- const matchedOrderProduct: OrderProduct = orderProducts.find(op => op.productDetail.refCode == refCode)
65
+ const isMps = releaseGood?.lastMileDelivery?.mps
84
66
 
85
- return {
86
- name: OrderNoGenerator.orderPackageItem(),
87
- orderProduct: matchedOrderProduct,
67
+ if (isMps) {
68
+ let newReleaseGood = await splitOrderConsignment(trxMgr, releaseGood, items, user)
69
+ await updatePackageId(packages, releaseGood, trxMgr)
70
+ } else {
71
+ let orderConsignment = await createOrderConsignment(trxMgr, releaseGood, user)
72
+ const orderPackage: any = {
73
+ name: OrderNoGenerator.orderPackage(),
74
+ packageId: pkg.packageId,
88
75
  status: ORDER_STATUS.PROCESSING,
89
- releaseQty: qty,
90
- orderPackage: savedOrderPackage,
76
+ releaseGood,
77
+ orderConsignment,
91
78
  domain: releaseGood.domain,
92
79
  bizplace: releaseGood.bizplace,
93
80
  creator: releaseGood.creator,
94
- updater: releaseGood.updater,
95
- productDetail: matchedOrderProduct?.productDetail
81
+ updater: releaseGood.updater
96
82
  }
97
- })
98
83
 
99
- await trxMgr.getRepository(OrderPackageItem).save(orderPackageItems)
84
+ let savedOrderPackage: OrderPackage = await trxMgr.getRepository(OrderPackage).save(orderPackage)
85
+
86
+ const orderPackageItems: OrderPackageItem[] = items.map(itm => {
87
+ const { refCode, qty } = itm
88
+ if (!refCode) {
89
+ throw new Error(`universalIdentifier missing`)
90
+ }
91
+ const matchedOrderProduct: OrderProduct = orderProducts.find(op => op.productDetail.refCode == refCode)
92
+
93
+ return {
94
+ name: OrderNoGenerator.orderPackageItem(),
95
+ orderProduct: matchedOrderProduct,
96
+ status: ORDER_STATUS.PROCESSING,
97
+ releaseQty: qty,
98
+ orderPackage: savedOrderPackage,
99
+ domain: releaseGood.domain,
100
+ bizplace: releaseGood.bizplace,
101
+ creator: releaseGood.creator,
102
+ updater: releaseGood.updater,
103
+ productDetail: matchedOrderProduct?.productDetail
104
+ }
105
+ })
106
+
107
+ await trxMgr.getRepository(OrderPackageItem).save(orderPackageItems)
108
+ }
100
109
  })
101
110
  )
102
111
 
@@ -230,8 +239,9 @@ export class PowrupController {
230
239
  }
231
240
 
232
241
  try {
233
- let orderPackages: OrderPackage[] = await (trxMgr?.getRepository(OrderPackage) || getRepository(OrderPackage))
234
- .find({ where: { releaseGood } })
242
+ let orderPackages: OrderPackage[] = await (
243
+ trxMgr?.getRepository(OrderPackage) || getRepository(OrderPackage)
244
+ ).find({ where: { releaseGood } })
235
245
 
236
246
  if (orderPackages?.length) {
237
247
  await Promise.all(
@@ -270,7 +280,10 @@ export class PowrupController {
270
280
  updater: user
271
281
  }
272
282
 
273
- await (trxMgr?.getRepository(OrderPackage) || getRepository(OrderPackage)).update({ id: op.id }, { ...updateInfo })
283
+ await (trxMgr?.getRepository(OrderPackage) || getRepository(OrderPackage)).update(
284
+ { id: op.id },
285
+ { ...updateInfo }
286
+ )
274
287
  }
275
288
  } catch (error) {
276
289
  performance.mark(`end:${releaseGood.refOrderId} - ${op.packageId}`)
@@ -285,7 +298,9 @@ export class PowrupController {
285
298
  })
286
299
  )
287
300
 
288
- releaseGood = await (trxMgr?.getRepository(ReleaseGood) || getRepository(ReleaseGood)).findOne({ id: releaseGood.id })
301
+ releaseGood = await (trxMgr?.getRepository(ReleaseGood) || getRepository(ReleaseGood)).findOne({
302
+ id: releaseGood.id
303
+ })
289
304
  }
290
305
 
291
306
  return releaseGood
@@ -369,3 +384,359 @@ export class PowrupController {
369
384
  }
370
385
  }
371
386
  }
387
+
388
+ export async function createOrderConsignment(
389
+ tx: EntityManager,
390
+ releaseGood: ReleaseGood,
391
+ user?: User,
392
+ orderCons?: OrderConsignment
393
+ ): Promise<OrderConsignment> {
394
+ try {
395
+ const orderConsignment: OrderConsignment = {
396
+ id: uuidv4(),
397
+ name: OrderNoGenerator.orderConsignment(),
398
+ noOfPackages: orderCons?.orderPackages?.length ? orderCons.orderPackages.length : 1,
399
+ domain: releaseGood.domain,
400
+ bizplace: releaseGood.bizplace,
401
+ releaseGood: releaseGood,
402
+ orderPackages: [],
403
+ creator: user,
404
+ updater: user
405
+ }
406
+
407
+ return tx.getRepository(OrderConsignment).save(orderConsignment)
408
+ } catch (e) {
409
+ logger.error(`[lmd-create-order-consignment]: ${e} `)
410
+ }
411
+ }
412
+
413
+ export async function sortingProduct(items, releaseGood): Promise<any> {
414
+ try {
415
+ let orderProducts: OrderProduct[] = releaseGood.orderProducts
416
+
417
+ const sortedMatchedOrderProducts = items
418
+ .map(itm => {
419
+ const { refCode, qty } = itm
420
+ if (!refCode) {
421
+ throw new Error(`universalIdentifier missing`)
422
+ }
423
+ // Find matched order product for each item
424
+ return orderProducts.find(op => op.productDetail.refCode === refCode) || null
425
+ })
426
+ .filter(item => item) // Filter out any null values
427
+ .sort((a, b) => {
428
+ if (a.product.packingType !== b.product.packingType) {
429
+ return a.product.packingType < b.product.packingType ? -1 : 1
430
+ }
431
+ if (a.product.sku !== b.product.sku) {
432
+ return a.product.sku < b.product.sku ? -1 : 1
433
+ }
434
+ return 0
435
+ })
436
+
437
+ return sortedMatchedOrderProducts
438
+ } catch (e) {
439
+ logger.error(`[lmd-sort-product]: ${e} `)
440
+ }
441
+ }
442
+
443
+ export async function splitOrderConsignment(
444
+ tx: EntityManager,
445
+ releaseGood: ReleaseGood,
446
+ items: any,
447
+ user: User
448
+ ): Promise<any> {
449
+ try {
450
+ let currentConsignment = { id: uuidv4(), totalWeight: 0, orderPackages: [] }
451
+ let totalConsignments = []
452
+ let currOrderProducts = []
453
+ let totalConsignmentWeight = 0
454
+
455
+ let orderProducts = releaseGood.orderProducts
456
+ let maxConsignmentWeight = releaseGood.lastMileDelivery.consignmentWeight
457
+
458
+ //sort items from packOrder API
459
+ let sortItems = await sortingProduct(items, releaseGood)
460
+
461
+ //initialise new orderConsignment created
462
+ const createdNewConsignment = () => ({
463
+ id: uuidv4(),
464
+ totalWeight: 0,
465
+ orderPackages: []
466
+ })
467
+
468
+ //push orderPackage & packageItems into consigment
469
+ const createPackageConsignment = (consignment, packageWeight, releaseGood, orderProduct, releaseQty, user) => {
470
+ consignment.totalWeight += packageWeight
471
+
472
+ currentConsignment.orderPackages.push({
473
+ id: uuidv4(),
474
+ name: OrderNoGenerator.orderPackage(),
475
+ packageId: null,
476
+ trackingNo: null,
477
+ transporter: null,
478
+ airwayBill: releaseGood?.airwayBill,
479
+ invoice: releaseGood?.invoice,
480
+ status: ORDER_STATUS.PROCESSING,
481
+ releaseGood,
482
+ domain: releaseGood.domain,
483
+ bizplace: releaseGood.bizplace,
484
+ creator: user,
485
+ updater: user,
486
+ orderPackageItems: [
487
+ {
488
+ id: uuidv4(),
489
+ name: OrderNoGenerator.orderPackageItem(),
490
+ releaseQty: releaseQty,
491
+ orderProduct: orderProduct,
492
+ domain: releaseGood.domain,
493
+ bizplace: releaseGood.bizplace,
494
+ creator: releaseGood.creator,
495
+ updater: releaseGood.updater,
496
+ productDetail: orderProduct.productDetail
497
+ }
498
+ ]
499
+ })
500
+ }
501
+
502
+ const createPackage = op => {
503
+ let releaseQty = op.productDetail.packingType.toLowerCase() === 'carton' ? 1 : op.releaseQty
504
+ let packageWeight =
505
+ op.productDetail.packingType.toLowerCase() === 'carton'
506
+ ? op.productDetail.grossWeight
507
+ : op.productDetail.grossWeight * releaseQty
508
+
509
+ const isCarton = op.productDetail.packingType.toLowerCase() === 'carton'
510
+ totalConsignmentWeight += packageWeight
511
+ const requiresNewConsignment = totalConsignmentWeight + packageWeight >= maxConsignmentWeight
512
+
513
+ if (isCarton || op.releaseQty > 1) {
514
+ if (requiresNewConsignment) {
515
+ //push the current consignment to create new consignment
516
+ totalConsignments.push(currentConsignment)
517
+
518
+ //Initialise the totalConsignment weight to the new data
519
+ totalConsignmentWeight = packageWeight + 0
520
+ currentConsignment = createdNewConsignment()
521
+ }
522
+ createPackageConsignment(currentConsignment, packageWeight, releaseGood, op, releaseQty, user)
523
+ } else {
524
+ currOrderProducts.push(op)
525
+ }
526
+ }
527
+
528
+ sortItems.forEach(item => {
529
+ let productDetail: ProductDetail = item.productDetail
530
+ if (productDetail.packingType.toLowerCase() === 'carton') {
531
+ for (let i = 0; i < item.releaseQty; i++) {
532
+ createPackage(item)
533
+ }
534
+ } else {
535
+ createPackage(item)
536
+ }
537
+ })
538
+
539
+ // Add any remaining items to the last orderPackage
540
+ if (currOrderProducts.length > 0) {
541
+ let availableConsignment
542
+
543
+ for (let i = 0; i < currOrderProducts.length; i++) {
544
+ let op = currOrderProducts[i]
545
+ let releaseQty = op.releaseQty
546
+ let currProductWeight = op.productDetail.grossWeight * op.releaseQty
547
+ let lastOrderPackage = currentConsignment.orderPackages[currentConsignment.orderPackages.length - 1]
548
+
549
+ //push the product into last current consignment orderPackage
550
+ if (currentConsignment.totalWeight + currProductWeight < maxConsignmentWeight) {
551
+ if (lastOrderPackage) {
552
+ lastOrderPackage.orderPackageItems.push({
553
+ id: uuidv4(),
554
+ name: OrderNoGenerator.orderPackageItem(),
555
+ releaseQty: op.releaseQty,
556
+ orderProducts: op,
557
+ domain: releaseGood.domain,
558
+ bizplace: releaseGood.bizplace,
559
+ creator: releaseGood.creator,
560
+ updater: releaseGood.updater,
561
+ productDetail: op.productDetail
562
+ })
563
+ } else {
564
+ await createPackageConsignment(currentConsignment, currProductWeight, releaseGood, op, releaseQty, user)
565
+ }
566
+ } else {
567
+ //push the currentConsignment into list of all the consignments
568
+ if (!totalConsignments.some(tc => tc.id === currentConsignment.id)) {
569
+ totalConsignments.push(currentConsignment)
570
+ }
571
+
572
+ //find one order consignment to include the product
573
+ availableConsignment = totalConsignments.find(tc => {
574
+ tc.totalWeight += currProductWeight < maxConsignmentWeight
575
+ })
576
+
577
+ if (availableConsignment) {
578
+ let lastOrderPackage = availableConsignment.orderPackages[currentConsignment.orderPackages.length - 1]
579
+ lastOrderPackage.orderPackageItems.push({
580
+ id: uuidv4(),
581
+ name: OrderNoGenerator.orderPackageItem(),
582
+ releaseQty: op.releaseQty,
583
+ orderProduct: op,
584
+ domain: releaseGood.domain,
585
+ bizplace: releaseGood.bizplace,
586
+ creator: releaseGood.creator,
587
+ updater: releaseGood.updater,
588
+ productDetail: op.productDetail
589
+ })
590
+
591
+ //update the totalConsignment data
592
+ totalConsignments = totalConsignments.map(tc => {
593
+ tc.id === availableConsignment.id ? availableConsignment : tc
594
+ })
595
+ } else {
596
+ //create new consignment if no consignment available
597
+ currentConsignment = createdNewConsignment()
598
+ createPackageConsignment(currentConsignment, currProductWeight, releaseGood, op, releaseQty, user)
599
+
600
+ totalConsignments.push(currentConsignment)
601
+ }
602
+ }
603
+ }
604
+ }
605
+
606
+ const existingConsignment = totalConsignments.find(tc => tc.id === currentConsignment.id)
607
+
608
+ if (!existingConsignment) {
609
+ totalConsignments.push(currentConsignment)
610
+ }
611
+
612
+ let orderConsignment = totalConsignments
613
+ let newReleaseGood = await createConsignmentWithMultipackage(tx, orderConsignment, releaseGood, user)
614
+
615
+ return newReleaseGood
616
+ } catch (e) {
617
+ logger.error(e)
618
+ }
619
+ }
620
+
621
+ export async function createConsignmentWithMultipackage(
622
+ tx: EntityManager,
623
+ orderConsList: OrderConsignment[],
624
+ releaseGood: ReleaseGood,
625
+ user: User
626
+ ): Promise<any> {
627
+ try {
628
+ let newOrderPackages = []
629
+ let newOrderConsignments: OrderConsignment[] = []
630
+
631
+ for (const orderCons of orderConsList) {
632
+ const savedOrderConsignment = await createOrderConsignment(tx, releaseGood, user, orderCons)
633
+
634
+ for (const currentPackage of orderCons.orderPackages) {
635
+ const savedOrderPackage = await createConsignmentPackage(
636
+ tx,
637
+ currentPackage,
638
+ releaseGood,
639
+ user,
640
+ savedOrderConsignment
641
+ )
642
+ const orderPackageItems = await createConsignmentPackageItem(
643
+ tx,
644
+ currentPackage.orderPackageItems,
645
+ savedOrderPackage,
646
+ releaseGood
647
+ )
648
+
649
+ savedOrderPackage.orderPackageItems = orderPackageItems
650
+ savedOrderConsignment.orderPackages.push(savedOrderPackage)
651
+ newOrderPackages.push(savedOrderPackage)
652
+ }
653
+ newOrderConsignments.push(savedOrderConsignment)
654
+ }
655
+
656
+ releaseGood.orderConsignments = newOrderConsignments
657
+ releaseGood.orderPackages = newOrderPackages
658
+
659
+ return releaseGood
660
+ } catch (error) {
661
+ console.error('Error creating consignment with multiple packages:', error)
662
+ throw error
663
+ }
664
+ }
665
+
666
+ export async function createConsignmentPackage(
667
+ tx: EntityManager,
668
+ orderPackageData: any,
669
+ releaseGood: ReleaseGood,
670
+ user: User,
671
+ orderConsignment: OrderConsignment
672
+ ): Promise<OrderPackage> {
673
+ try {
674
+ const orderPackage: any = {
675
+ id: uuidv4(),
676
+ name: OrderNoGenerator.orderPackage(),
677
+ packageId: null,
678
+ trackingNo: null,
679
+ transporter: null,
680
+ airwayBill: releaseGood?.airwayBill,
681
+ invoice: releaseGood?.invoice,
682
+ status: ORDER_STATUS.PROCESSING,
683
+ releaseGood,
684
+ domain: releaseGood.domain,
685
+ bizplace: releaseGood.bizplace,
686
+ creator: user,
687
+ updater: user,
688
+ orderConsignment
689
+ }
690
+ return tx.getRepository(OrderPackage).save(orderPackage)
691
+ } catch (e) {
692
+ logger.error(`[lmd-create-order-package]: ${e} `)
693
+ }
694
+ }
695
+
696
+ export async function createConsignmentPackageItem(
697
+ tx: EntityManager,
698
+ orderPackageItemsData: any[],
699
+ savedOrderPackage: OrderPackage,
700
+ releaseGood: ReleaseGood
701
+ ): Promise<OrderPackageItem[]> {
702
+ try {
703
+ const orderPackageItems = orderPackageItemsData.map(opi => ({
704
+ id: opi.id,
705
+ name: opi.name,
706
+ orderProduct: opi.orderProduct,
707
+ status: ORDER_STATUS.PROCESSING,
708
+ releaseQty: opi.releaseQty,
709
+ orderPackage: savedOrderPackage,
710
+ domain: releaseGood.domain,
711
+ bizplace: releaseGood.bizplace,
712
+ creator: releaseGood.creator,
713
+ updater: releaseGood.updater,
714
+ productDetail: opi.productDetail
715
+ }))
716
+
717
+ let savedOrderPackageItems: OrderPackageItem[] = await tx.getRepository(OrderPackageItem).save(orderPackageItems)
718
+
719
+ return savedOrderPackageItems
720
+ } catch (e) {
721
+ logger.error(`[lmd-create-order-package]: ${e} `)
722
+ }
723
+ }
724
+
725
+ export async function updatePackageId(packages, releaseGood, trxMgr) {
726
+ try {
727
+ const orderPackage = await trxMgr.getRepository(OrderPackage).findOne({
728
+ where: { releaseGood: { id: releaseGood.id } },
729
+ relations: ['releaseGood']
730
+ })
731
+ if (orderPackage) {
732
+ await trxMgr.getRepository(OrderPackage).update(
733
+ { name: orderPackage.name },
734
+ {
735
+ packageId: packages[0].packageId
736
+ }
737
+ )
738
+ }
739
+ } catch (e) {
740
+ logger.error('unable-to-update-package-id-powrup')
741
+ }
742
+ }
@@ -2,22 +2,29 @@ import { EntityManager, getConnection, getRepository } from 'typeorm'
2
2
 
3
3
  import { logger } from '@things-factory/env'
4
4
  import { Domain, User } from '@things-factory/shell'
5
- import { sleep } from '@things-factory/utils'
5
+ import { config } from '@things-factory/env'
6
+
6
7
  import { WebspertController as BaseWebspertController } from '@things-factory/warehouse-base'
7
8
 
8
9
  import { ORDER_STATUS } from '../../constants'
9
- import { OrderPackage, OrderPackageItem, OrderProduct, ReleaseGood } from '../../service'
10
+ import { ReleaseGood, OrderProduct, OrderPackageItem, OrderPackage } from '../../service'
11
+
12
+ import { sleep } from '@things-factory/utils'
10
13
  import { OrderNoGenerator } from '../../utils'
11
14
 
12
15
  export class WebspertController {
13
- public static async packOrder(releaseGood: ReleaseGood, domain: Domain, user: User) {
16
+ public static async packOrder(
17
+ releaseGood: ReleaseGood,
18
+ domain: Domain,
19
+ user: User
20
+ ) {
14
21
  await getConnection().transaction(async trx => {
15
22
  releaseGood = await trx.getRepository(ReleaseGood).findOne({ where: { id: releaseGood.id, domain } })
16
23
 
17
24
  // let releaseOrder = await trx.getRepository(ReleaseGood).findOne({ refNo: releaseGood.refNo, refNo2: releaseGood.refNo2, refNo3: releaseGood.refNo3, domain })
18
25
 
19
26
  // // only recall if releaseGood exists and pack Order fail
20
- if (!releaseGood && !releaseGood?.marketPackCallSuccess) return false
27
+ if (!releaseGood && (releaseGood.packOrderFail == false)) return false
21
28
 
22
29
  try {
23
30
  let results = await BaseWebspertController.sendRequestToAPI(
@@ -44,22 +51,20 @@ export class WebspertController {
44
51
  })
45
52
  }
46
53
 
47
- public static async fetchPackageAndDocument(releaseGood: ReleaseGood, domain: Domain, user: User) {
54
+ public static async fetchPackageAndDocument(
55
+ releaseGood: ReleaseGood,
56
+ domain: Domain,
57
+ user: User
58
+ ) {
48
59
  await getConnection().transaction(async trx => {
49
60
  let roUpdateFields: Partial<ReleaseGood> = null
50
61
 
51
62
  let releaseOrder = await trx.getRepository(ReleaseGood).findOne({
52
63
  where: { id: releaseGood.id, domain },
53
- relations: [
54
- 'bizplace',
55
- 'domain',
56
- 'orderProducts',
57
- 'orderProducts.productDetail',
58
- 'orderProducts.productDetail.product'
59
- ]
64
+ relations: ['bizplace', 'domain', 'orderProducts', 'orderProducts.productDetail', 'orderProducts.productDetail.product']
60
65
  })
61
66
 
62
- if (releaseOrder && releaseOrder.marketPackCallSuccess) {
67
+ if (releaseOrder) {
63
68
  try {
64
69
  // capture update fields
65
70
  roUpdateFields = {
@@ -98,12 +103,13 @@ export class WebspertController {
98
103
  releaseGood: ReleaseGood,
99
104
  orderPackages: OrderPackage[],
100
105
  domain: Domain,
101
- user: User
106
+ user: User,
102
107
  ) {
103
108
  if (orderPackages == null || orderPackages.length == 0) {
104
109
  if (releaseGood) {
105
110
  orderPackages = await getRepository(OrderPackage).find({ where: { releaseGood } })
106
- } else {
111
+ }
112
+ else {
107
113
  console.error('webspert-controller[initiateShipment]: releaseGood is not found')
108
114
  return false
109
115
  }
@@ -137,13 +143,18 @@ export class WebspertController {
137
143
  })
138
144
  }
139
145
 
140
- public static async triggerOrderProcesses(releaseGood: ReleaseGood, domain: Domain, user: User, triggerRTS: false) {
146
+ public static async triggerOrderProcesses(
147
+ releaseGood: ReleaseGood,
148
+ domain: Domain,
149
+ user: User,
150
+ triggerRTS: false
151
+ ) {
141
152
  try {
142
153
  const waitTime = 200
143
154
 
144
155
  releaseGood = await getRepository(ReleaseGood).findOne({ where: { id: releaseGood.id, domain } })
145
156
  // // only recall if fail
146
- if (!releaseGood?.marketPackCallSuccess) {
157
+ if (releaseGood.packOrderFail == false || releaseGood.packOrderFail === null) {
147
158
  await this.packOrder(releaseGood, domain, user)
148
159
  await sleep(waitTime)
149
160
  }
@@ -156,6 +167,7 @@ export class WebspertController {
156
167
  }
157
168
 
158
169
  return true
170
+
159
171
  } catch (error) {
160
172
  logger.error(error)
161
173
  }
@@ -168,17 +180,16 @@ async function updateRO(releaseGoodId, roUpdateFields, trxMgr) {
168
180
  }
169
181
  }
170
182
 
171
- async function generatePackage(releaseGood: ReleaseGood, packages: any[], user: User, trxMgr: EntityManager) {
183
+ async function generatePackage(
184
+ releaseGood: ReleaseGood,
185
+ packages: any[],
186
+ user: User,
187
+ trxMgr: EntityManager
188
+ ) {
172
189
  if (packages.length > 0) {
173
190
  packages = await Promise.all(
174
191
  packages.map(async pkg => {
175
- const [items, awbUrl, packageId, trackingNo, transporter] = [
176
- pkg.products,
177
- pkg.awb_link,
178
- pkg.package_id,
179
- pkg.tracking_number,
180
- pkg.transporter
181
- ]
192
+ const [items, awbUrl, packageId, trackingNo, transporter] = [pkg.products, pkg.awb_link, pkg.package_id, pkg.tracking_number, pkg.transporter]
182
193
 
183
194
  if (items.length < 1) {
184
195
  throw new Error('No items found in package')
@@ -224,16 +235,12 @@ async function generatePackage(releaseGood: ReleaseGood, packages: any[], user:
224
235
  if (!sku) {
225
236
  throw new Error(`universalIdentifier missing`)
226
237
  }
227
- const matchedOrderPackageItem: OrderPackageItem = orderPackageItems.find(
228
- op => op.productDetail.product.sku == sku && op.releaseQty == qty
229
- )
238
+ const matchedOrderPackageItem: OrderPackageItem = orderPackageItems.find(op => op.productDetail.product.sku == sku && op.releaseQty == qty)
230
239
 
231
240
  if (matchedOrderPackageItem) {
232
241
  return matchedOrderPackageItem
233
242
  } else {
234
- const matchedOrderProduct: OrderProduct = releaseGood.orderProducts.find(
235
- op => op.productDetail.product.sku == sku
236
- )
243
+ const matchedOrderProduct: OrderProduct = releaseGood.orderProducts.find(op => op.productDetail.product.sku == sku)
237
244
  return {
238
245
  name: OrderNoGenerator.orderPackageItem(),
239
246
  orderProduct: matchedOrderProduct,
@@ -275,8 +282,6 @@ async function generatePackage(releaseGood: ReleaseGood, packages: any[], user:
275
282
  }
276
283
 
277
284
  async function updatePackOrderStatus(trx, releaseOrder, status: Boolean = false) {
278
- await trx
279
- .getRepository(ReleaseGood)
280
- .update({ id: releaseOrder.id }, { lastMarketPackCall: new Date(), packOrderFail: status })
285
+ await trx.getRepository(ReleaseGood).update({ id: releaseOrder.id }, { lastMarketPackCall: new Date(), packOrderFail: status })
281
286
  return true
282
- }
287
+ }