@things-factory/worksheet-base 4.3.394 → 4.3.395

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 (28) hide show
  1. package/dist-server/controllers/outbound/index.js +3 -0
  2. package/dist-server/controllers/outbound/index.js.map +1 -1
  3. package/dist-server/controllers/outbound/picking-worksheet-controller.js +119 -15
  4. package/dist-server/controllers/outbound/picking-worksheet-controller.js.map +1 -1
  5. package/dist-server/graphql/resolvers/worksheet/picking/activate-batch-picking.js +71 -1
  6. package/dist-server/graphql/resolvers/worksheet/picking/activate-batch-picking.js.map +1 -1
  7. package/dist-server/graphql/resolvers/worksheet/picking/activate-picking.js +21 -28
  8. package/dist-server/graphql/resolvers/worksheet/picking/activate-picking.js.map +1 -1
  9. package/dist-server/graphql/resolvers/worksheet/picking/bulk-activate-picking.js +21 -4
  10. package/dist-server/graphql/resolvers/worksheet/picking/bulk-activate-picking.js.map +1 -1
  11. package/dist-server/graphql/resolvers/worksheet/picking/complete-batch-picking.js +96 -130
  12. package/dist-server/graphql/resolvers/worksheet/picking/complete-batch-picking.js.map +1 -1
  13. package/dist-server/graphql/resolvers/worksheet/picking/complete-picking.js +22 -56
  14. package/dist-server/graphql/resolvers/worksheet/picking/complete-picking.js.map +1 -1
  15. package/dist-server/index.js +3 -0
  16. package/dist-server/index.js.map +1 -1
  17. package/dist-server/utils/lmd-util.js +193 -162
  18. package/dist-server/utils/lmd-util.js.map +1 -1
  19. package/package.json +9 -9
  20. package/server/controllers/outbound/index.ts +2 -0
  21. package/server/controllers/outbound/picking-worksheet-controller.ts +127 -17
  22. package/server/graphql/resolvers/worksheet/picking/activate-batch-picking.ts +107 -6
  23. package/server/graphql/resolvers/worksheet/picking/activate-picking.ts +73 -65
  24. package/server/graphql/resolvers/worksheet/picking/bulk-activate-picking.ts +30 -5
  25. package/server/graphql/resolvers/worksheet/picking/complete-batch-picking.ts +34 -56
  26. package/server/graphql/resolvers/worksheet/picking/complete-picking.ts +4 -36
  27. package/server/index.ts +2 -0
  28. package/server/utils/lmd-util.ts +180 -144
@@ -32,6 +32,8 @@ import {
32
32
  ORDER_TYPES,
33
33
  OrderInventory,
34
34
  OrderNoGenerator,
35
+ OrderPackage,
36
+ OrderPackageItem,
35
37
  OrderProduct,
36
38
  OrderTote,
37
39
  OrderToteItem,
@@ -252,11 +254,13 @@ export class PickingWorksheetController extends VasWorksheetController {
252
254
  'releaseGood.bizplace.domain',
253
255
  'releaseGood.orderProducts',
254
256
  'releaseGood.orderProducts.productDetail',
257
+ 'releaseGood.orderProducts.product',
255
258
  'releaseGood.orderProducts.productDetail.product',
256
259
  'releaseGood.orderPackages',
257
260
  'releaseGood.orderPackages.orderPackageItems',
258
261
  'releaseGood.orderPackages.orderPackageItems.orderProduct',
259
262
  'releaseGood.orderPackages.orderPackageItems.orderProduct.product',
263
+ 'releaseGood.orderPackages.orderPackageItems.orderProduct.productDetail',
260
264
  'domain',
261
265
  'bizplace',
262
266
  'bizplace.domain',
@@ -368,6 +372,21 @@ export class PickingWorksheetController extends VasWorksheetController {
368
372
  break
369
373
 
370
374
  default:
375
+ let orderPackage: OrderPackage = {
376
+ name: OrderNoGenerator.orderPackage(),
377
+ packageId: null,
378
+ trackingNo: null,
379
+ transporter: null,
380
+ airwayBill: releaseGood?.airwayBill,
381
+ invoice: releaseGood?.invoice,
382
+ status: ORDER_STATUS.PROCESSING,
383
+ releaseGood,
384
+ domain: releaseGood.domain,
385
+ bizplace: releaseGood.bizplace,
386
+ creator: releaseGood.creator,
387
+ updater: releaseGood.updater
388
+ }
389
+ await createOrderPackageAndItems(this.trxMgr, releaseGood, orderPackage)
371
390
  break
372
391
  }
373
392
  } catch (error) {
@@ -388,6 +407,12 @@ export class PickingWorksheetController extends VasWorksheetController {
388
407
  .leftJoinAndSelect('w.worksheetDetails', 'wd')
389
408
  .leftJoinAndSelect('w.releaseGood', 'rg')
390
409
  .leftJoinAndSelect('rg.domain', 'rgd')
410
+ .leftJoinAndSelect('rg.lastMileDelivery', 'lmd')
411
+ .leftJoinAndSelect('rg.orderPackages', 'rgop')
412
+ .leftJoinAndSelect('rgop.orderPackageItems', 'rgopi')
413
+ .leftJoinAndSelect('rgopi.orderProduct', 'op2')
414
+ .leftJoinAndSelect('op2.product', 'p')
415
+ .leftJoinAndSelect('op2.productDetail', 'pd')
391
416
  .leftJoinAndSelect('rg.bizplace', 'rgbz')
392
417
  .leftJoinAndSelect('rgbz.domain', 'bzd')
393
418
  .leftJoinAndSelect('b.domain', 'bd')
@@ -416,11 +441,12 @@ export class PickingWorksheetController extends VasWorksheetController {
416
441
  }
417
442
 
418
443
  const groupedWsBiz = [...groupWs.entries()]
419
- await Promise.all(
444
+ const updatedWs = await Promise.all(
420
445
  groupedWsBiz.map(async ([bizplaceId, worksheetIds]) => {
421
446
  return await this.activateBulkWorksheets(bizplaceId, worksheetIds)
422
447
  })
423
448
  )
449
+ worksheets = updatedWs.flat()
424
450
  } catch (error) {
425
451
  throw error
426
452
  } finally {
@@ -479,7 +505,11 @@ export class PickingWorksheetController extends VasWorksheetController {
479
505
  'releaseGood.orderPackages',
480
506
  'releaseGood.orderPackages.orderPackageItems',
481
507
  'releaseGood.orderPackages.orderPackageItems.orderProduct',
482
- 'releaseGood.orderPackages.orderPackageItems.orderProduct.product'
508
+ 'releaseGood.orderPackages.orderPackageItems.orderProduct.product',
509
+ 'releaseGood.orderPackages.orderPackageItems.orderProduct.productDetail',
510
+ 'releaseGood.orderProducts',
511
+ 'releaseGood.orderProducts.productDetail',
512
+ 'releaseGood.orderProducts.product',
483
513
  ]
484
514
  })
485
515
 
@@ -550,7 +580,22 @@ export class PickingWorksheetController extends VasWorksheetController {
550
580
  break
551
581
 
552
582
  default:
553
- break
583
+ let orderPackage: OrderPackage = {
584
+ name: OrderNoGenerator.orderPackage(),
585
+ packageId: null,
586
+ trackingNo: null,
587
+ transporter: null,
588
+ airwayBill: releaseGood?.airwayBill,
589
+ invoice: releaseGood?.invoice,
590
+ status: ORDER_STATUS.PROCESSING,
591
+ releaseGood,
592
+ domain: releaseGood.domain,
593
+ bizplace: releaseGood.bizplace,
594
+ creator: releaseGood.creator,
595
+ updater: releaseGood.updater
596
+ }
597
+ await createOrderPackageAndItems(this.trxMgr, releaseGood, orderPackage)
598
+ break
554
599
  }
555
600
  } catch (error) {
556
601
  logger.error(`picking-worksheet-controller[activateBatchPicking]: ${error}`)
@@ -775,8 +820,6 @@ export class PickingWorksheetController extends VasWorksheetController {
775
820
  and wd.name = $1 and w.domain_id = $2 and i.carton_id = $3
776
821
  ORDER BY w.domain_id, w.bizplace_id, wd.id
777
822
  `, [worksheetDetailName, this.domain.id, cartonId])
778
-
779
- ActiveWorksheetPickingView.refreshView()
780
823
  }
781
824
 
782
825
  //validation to check matching worksheet detail based on name
@@ -2451,30 +2494,37 @@ export class PickingWorksheetController extends VasWorksheetController {
2451
2494
  return newWorksheetDetails
2452
2495
  }
2453
2496
 
2454
- async activateBulkWorksheets(bizplaceId, worksheetIds) {
2497
+ async activateBulkWorksheets(bizplaceId, worksheetIds): Promise<Worksheet[]> {
2498
+ const updatedWs: Worksheet[] = []
2455
2499
  try {
2456
2500
  for (const worksheetId of worksheetIds) {
2457
2501
  try {
2458
2502
  let releaseGood: ReleaseGood
2459
2503
  let domain: Domain
2460
2504
 
2461
- getManager().transaction(async (tx: EntityManager) => {
2505
+ await getManager().transaction(async (tx: EntityManager) => {
2462
2506
  const worksheetRepo = tx.getRepository(Worksheet)
2463
2507
  let worksheet = await worksheetRepo
2464
2508
  .createQueryBuilder('w')
2509
+ .leftJoinAndSelect('w.releaseGood', 'rg')
2510
+ .leftJoinAndSelect('rg.bizplace', 'rg_b')
2511
+ .leftJoinAndSelect('rg.domain', 'rg_d')
2512
+ .leftJoinAndSelect('rg.lastMileDelivery', 'rg_lmd')
2513
+ .leftJoinAndSelect('rg_b.domain', 'b_d')
2514
+ .leftJoinAndSelect('rg.orderProducts', 'rg_op')
2515
+ .leftJoinAndSelect('rg_op.product', 'op_p')
2516
+ .leftJoinAndSelect('rg_op.productDetail', 'op_pd')
2517
+ .leftJoinAndSelect('op_pd.product', 'pd_p')
2518
+ .leftJoinAndSelect('rg.orderPackages', 'rg_opc')
2519
+ .leftJoinAndSelect('rg_opc.orderPackageItems', 'opc_opi')
2520
+ .leftJoinAndSelect('opc_opi.orderProduct', 'opi_op')
2521
+ .leftJoinAndSelect('opi_op.product', 'op_p2')
2522
+ .leftJoinAndSelect('opi_op.productDetail', 'op_pd2')
2465
2523
  .leftJoinAndSelect('w.domain', 'd')
2466
2524
  .leftJoinAndSelect('w.bizplace', 'b')
2467
- .leftJoinAndSelect('w.worksheetDetails', 'wd')
2468
- .leftJoinAndSelect('w.releaseGood', 'rg')
2469
- .leftJoinAndSelect('rg.domain', 'rgd')
2470
- .leftJoinAndSelect('rg.bizplace', 'rgbz')
2471
- .leftJoinAndSelect('rgbz.domain', 'bzd')
2472
- .leftJoinAndSelect('rg.orderProducts', 'op')
2473
- .leftJoinAndSelect('op.productDetail', 'pd')
2474
- .leftJoinAndSelect('pd.product', 'p')
2475
- .leftJoinAndSelect('b.domain', 'bd')
2476
2525
  .leftJoinAndSelect('b.company', 'c')
2477
- .leftJoinAndSelect('c.domain', 'cd')
2526
+ .leftJoinAndSelect('c.domain', 'c_d')
2527
+ .leftJoinAndSelect('w.worksheetDetails', 'wd')
2478
2528
  .leftJoinAndSelect('wd.targetInventory', 'ti')
2479
2529
  .leftJoinAndSelect('ti.product', 'tp')
2480
2530
  .where('w.id = :worksheetId', { worksheetId: worksheetId })
@@ -2514,6 +2564,8 @@ export class PickingWorksheetController extends VasWorksheetController {
2514
2564
  worksheet = await this.activateWorksheet(worksheet, worksheetDetails, [], tx)
2515
2565
  releaseGood = worksheet.releaseGood
2516
2566
  domain = worksheet.domain
2567
+
2568
+ updatedWs.push(worksheet)
2517
2569
  })
2518
2570
 
2519
2571
  const orderSource: string = releaseGood?.source
@@ -2578,6 +2630,21 @@ export class PickingWorksheetController extends VasWorksheetController {
2578
2630
  break
2579
2631
 
2580
2632
  default:
2633
+ let orderPackage: OrderPackage = {
2634
+ name: OrderNoGenerator.orderPackage(),
2635
+ packageId: null,
2636
+ trackingNo: null,
2637
+ transporter: null,
2638
+ airwayBill: releaseGood?.airwayBill,
2639
+ invoice: releaseGood?.invoice,
2640
+ status: ORDER_STATUS.PROCESSING,
2641
+ releaseGood,
2642
+ domain: releaseGood.domain,
2643
+ bizplace: releaseGood.bizplace,
2644
+ creator: releaseGood.creator,
2645
+ updater: releaseGood.updater
2646
+ }
2647
+ await createOrderPackageAndItems(this.trxMgr, releaseGood, orderPackage)
2581
2648
  break
2582
2649
  }
2583
2650
  } catch (e) {
@@ -2589,5 +2656,48 @@ export class PickingWorksheetController extends VasWorksheetController {
2589
2656
  } catch (e) {
2590
2657
  console.log(e)
2591
2658
  }
2659
+
2660
+ return updatedWs
2592
2661
  }
2662
+
2593
2663
  }
2664
+
2665
+ export async function createOrderPackageAndItems(tx: EntityManager, releaseGood: ReleaseGood, orderPackage: OrderPackage): Promise<void> {
2666
+ let savedOrderPackage: OrderPackage = await tx.getRepository(OrderPackage).save(orderPackage)
2667
+
2668
+ const orderPackageItems: OrderPackageItem[] = releaseGood.orderProducts.map(op => {
2669
+ if (op.product){
2670
+ return {
2671
+ name: OrderNoGenerator.orderPackageItem(),
2672
+ orderProduct: op,
2673
+ status: ORDER_STATUS.PROCESSING,
2674
+ releaseQty: op.releaseQty,
2675
+ orderPackage: savedOrderPackage,
2676
+ domain: releaseGood.domain,
2677
+ bizplace: releaseGood.bizplace,
2678
+ creator: releaseGood.creator,
2679
+ updater: releaseGood.updater,
2680
+ productDetail: op.productDetail
2681
+ }
2682
+ } else {
2683
+ let productBundle = op.productBundle
2684
+ return productBundle.productBundleSettings.map(pbs => ({
2685
+ name: OrderNoGenerator.orderPackageItem(),
2686
+ orderProduct: op,
2687
+ status: ORDER_STATUS.PROCESSING,
2688
+ releaseQty: op.releaseQty * pbs.bundleQty,
2689
+ orderPackage: savedOrderPackage,
2690
+ domain: releaseGood.domain,
2691
+ bizplace: releaseGood.bizplace,
2692
+ creator: releaseGood.creator,
2693
+ updater: releaseGood.updater,
2694
+ productDetail: pbs.productDetail
2695
+ }))
2696
+ }
2697
+ }).flat()
2698
+
2699
+ await tx.getRepository(OrderPackageItem).save(orderPackageItems)
2700
+ orderPackage.orderPackageItems = orderPackageItems
2701
+ releaseGood.orderPackages = [orderPackage]
2702
+ }
2703
+
@@ -1,12 +1,25 @@
1
- import { EntityManager, getConnection } from 'typeorm'
1
+ import {
2
+ EntityManager,
3
+ getConnection,
4
+ In
5
+ } from 'typeorm'
2
6
 
3
- import { User } from '@things-factory/auth-base'
7
+ import {
8
+ ApplicationType,
9
+ User
10
+ } from '@things-factory/auth-base'
11
+ import { logger } from '@things-factory/env'
4
12
  import { MarketplaceStore } from '@things-factory/integration-marketplace'
13
+ import { MarketplaceOrder } from '@things-factory/marketplace-base'
14
+ import { ReleaseGood } from '@things-factory/sales-base'
5
15
  import { Domain } from '@things-factory/shell'
6
16
 
7
- import { EcommerceController, PickingWorksheetController } from '../../../../controllers'
17
+ import {
18
+ EcommerceController,
19
+ PickingWorksheetController
20
+ } from '../../../../controllers'
8
21
  import { Worksheet } from '../../../../entities'
9
- import { logger } from '@things-factory/env'
22
+ import { createLmdParcel } from '../../../../utils'
10
23
 
11
24
  export const activateBatchPickingResolver = {
12
25
  async activateBatchPicking(_: any, { worksheetNo }, context: any) {
@@ -23,17 +36,26 @@ export async function activateBatchPicking(
23
36
  ): Promise<Worksheet> {
24
37
  try {
25
38
  const worksheetController: PickingWorksheetController = new PickingWorksheetController(tx, domain, user)
39
+ const ecommerceCtrl: EcommerceController = new EcommerceController(tx, domain, user)
26
40
  const worksheet = await worksheetController.activateBatchPicking(worksheetNo)
27
41
  const worksheetDetails = worksheet.worksheetDetails
28
42
  const companyDomain: Domain = worksheet?.bizplace.company.domain
29
43
 
44
+ let orderInventories: any[] = worksheetDetails.map(wsd => wsd.targetInventory)
45
+
30
46
  // find for any existing marketplace store connections
31
47
  const marketplaceStores: MarketplaceStore[] = await tx.getRepository(MarketplaceStore).find({
32
48
  where: { domain: companyDomain, status: 'ACTIVE', isAutoUpdateStockQty: true },
33
49
  relations: ['marketplaceDistributors']
34
50
  })
35
51
 
36
- const updateMarketplaceProductVariationStock = async (worksheetDetails, domain, user, marketplaceStores, companyDomain) => {
52
+ const updateMarketplaceProductVariationStock = async (
53
+ worksheetDetails,
54
+ domain,
55
+ user,
56
+ marketplaceStores,
57
+ companyDomain
58
+ ) => {
37
59
  try {
38
60
  await getConnection().transaction(async (tx2: EntityManager) => {
39
61
  let orderInventories: any[] = worksheetDetails.map(wsd => wsd.targetInventory)
@@ -49,8 +71,87 @@ export async function activateBatchPicking(
49
71
  updateMarketplaceProductVariationStock(worksheetDetails, domain, user, marketplaceStores, companyDomain)
50
72
  }
51
73
 
52
- return worksheet
74
+ try {
75
+ let releaseGoods: ReleaseGood[] = []
76
+ let releaseGoodIds: ReleaseGood[] = orderInventories.reduce((data, orderInventory) => {
77
+ if (!data.find(x => x.id == orderInventory.releaseGood.id)) {
78
+ data.push(orderInventory.releaseGood.id)
79
+ }
80
+ return data
81
+ }, [])
82
+
83
+ releaseGoods = await tx.getRepository(ReleaseGood).find({
84
+ where: { id: In(releaseGoodIds) },
85
+ relations: [
86
+ 'domain',
87
+ 'lastMileDelivery',
88
+ 'bizplace',
89
+ 'bizplace.domain',
90
+ 'orderPackages',
91
+ 'orderPackages.orderPackageItems',
92
+ 'orderPackages.orderPackageItems.orderProduct',
93
+ 'orderPackages.orderPackageItems.orderProduct.product',
94
+ 'orderPackages.orderPackageItems.orderProduct.productDetail',
95
+ 'orderProducts',
96
+ 'orderProducts.productDetail',
97
+ 'orderProducts.product'
98
+ ]
99
+ })
100
+
101
+ if (releaseGoods?.length) {
102
+ for (const releaseGood of releaseGoods) {
103
+ const orderSource = releaseGood?.source
104
+ const marketplaceOrder: MarketplaceOrder = await tx.getRepository(MarketplaceOrder).findOne({
105
+ where: { orderNo: releaseGood.refNo, domain: companyDomain },
106
+ relations: ['marketplaceStore']
107
+ })
108
+
109
+ switch (orderSource) {
110
+ case ApplicationType.MMS:
111
+ if (marketplaceStores?.length) {
112
+ if (marketplaceOrder) {
113
+ const marketplaceStore: MarketplaceStore = marketplaceOrder.marketplaceStore
114
+ await ecommerceCtrl.createOrderPackage(
115
+ tx,
116
+ marketplaceOrder,
117
+ companyDomain,
118
+ marketplaceStore,
119
+ releaseGood
120
+ )
121
+ }
122
+ }
123
+ break
124
+ default:
125
+ break
126
+ }
53
127
 
128
+ if (
129
+ releaseGood?.orderPackages?.length &&
130
+ releaseGood.lmdOption &&
131
+ releaseGood.lastMileDelivery &&
132
+ releaseGood?.orderPackages?.some(op => op.parcelId == null)
133
+ ) {
134
+ await createLmdParcel([releaseGood], tx, domain, user, marketplaceOrder)
135
+
136
+ //where to trigger update parcel count
137
+ let countParcel = releaseGood?.countParcel ? releaseGood.countParcel : 0
138
+ const releaseGoodId = releaseGood?.id
139
+
140
+ await tx.getRepository(ReleaseGood).update(
141
+ { id: releaseGoodId },
142
+ {
143
+ countParcel: countParcel + 1,
144
+ updater: user.id
145
+ }
146
+ )
147
+ }
148
+ }
149
+ }
150
+ } catch (e) {
151
+ logger.error(e)
152
+ }
153
+
154
+ return worksheet
54
155
  } catch (error) {
55
156
  logger.error(`activate-batch-picking[activateBatchPicking]: ${worksheetNo + ':' + error}`)
56
157
  throw new Error('Something went wrong. Please contact support.')
@@ -1,13 +1,26 @@
1
1
  import { EntityManager } from 'typeorm'
2
2
 
3
- import { ApplicationType, User } from '@things-factory/auth-base'
3
+ import {
4
+ ApplicationType,
5
+ User
6
+ } from '@things-factory/auth-base'
4
7
  import { MarketplaceStore } from '@things-factory/integration-marketplace'
5
8
  import { MarketplaceOrder } from '@things-factory/marketplace-base'
6
- import { ORDER_STATUS, ReleaseGood } from '@things-factory/sales-base'
9
+ import {
10
+ ORDER_STATUS,
11
+ ReleaseGood
12
+ } from '@things-factory/sales-base'
7
13
  import { Domain } from '@things-factory/shell'
8
14
 
9
- import { EcommerceController, PickingWorksheetController } from '../../../../controllers'
10
- import { ActiveWorksheetPickingView, Worksheet } from '../../../../entities'
15
+ import {
16
+ EcommerceController,
17
+ PickingWorksheetController
18
+ } from '../../../../controllers'
19
+ import {
20
+ ActiveWorksheetPickingView,
21
+ Worksheet
22
+ } from '../../../../entities'
23
+ import { createLmdParcel } from '../../../../utils'
11
24
 
12
25
  export const activatePickingResolver = {
13
26
  async activatePicking(_: any, { worksheetNo }, context: any) {
@@ -24,81 +37,76 @@ export async function activatePicking(
24
37
  ): Promise<Worksheet> {
25
38
  try {
26
39
  const worksheetController: PickingWorksheetController = new PickingWorksheetController(tx, domain, user)
40
+ const ecommerceCtrl: EcommerceController = new EcommerceController(tx, domain, user)
27
41
  const worksheet = await worksheetController.activatePicking(worksheetNo)
28
42
  const companyDomain: Domain = worksheet?.bizplace.company.domain
29
43
 
30
- let releaseGood: ReleaseGood = worksheet.releaseGood
31
-
32
- const orderSource: string = releaseGood.source
33
- switch (orderSource) {
34
- case ApplicationType.MMS:
35
- // find for any existing marketplace store connections
36
- const marketplaceStores: MarketplaceStore[] = await tx.getRepository(MarketplaceStore).find({
37
- where: { domain: companyDomain, status: 'ACTIVE', isAutoUpdateStockQty: true },
38
- relations: ['marketplaceDistributors']
39
- })
40
-
41
- if (marketplaceStores?.length) {
42
- if (marketplaceStores.some(store => store.isAutoUpdateStockQty)) {
43
- const worksheetDetails = worksheet.worksheetDetails
44
- let orderInventories: any[] = worksheetDetails.map(wsd => wsd.targetInventory)
45
- const ecommerceCtrl: EcommerceController = new EcommerceController(tx, domain, user)
46
- await ecommerceCtrl.updateProductVariationStock(marketplaceStores, orderInventories, companyDomain)
47
- }
48
-
49
- const marketplaceOrder: MarketplaceOrder = await tx.getRepository(MarketplaceOrder).findOne({
50
- where: { orderNo: releaseGood.refNo, domain: companyDomain },
51
- relations: ['marketplaceStore']
52
- })
44
+ let releaseGood: ReleaseGood = worksheet.releaseGood
45
+ const orderSource: string = releaseGood.source
46
+
47
+ const marketplaceOrder: MarketplaceOrder = await tx.getRepository(MarketplaceOrder).findOne({
48
+ where: { orderNo: releaseGood.refNo, domain: companyDomain },
49
+ relations: ['marketplaceStore']
50
+ })
51
+
52
+ switch (orderSource) {
53
+ case ApplicationType.MMS:
54
+ // find for any existing marketplace store connections
55
+ const marketplaceStores: MarketplaceStore[] = await tx.getRepository(MarketplaceStore).find({
56
+ where: { domain: companyDomain, status: 'ACTIVE', isAutoUpdateStockQty: true },
57
+ relations: ['marketplaceDistributors']
58
+ })
59
+
60
+ if (marketplaceStores?.length) {
61
+ if (marketplaceStores.some(store => store.isAutoUpdateStockQty)) {
62
+ const worksheetDetails = worksheet.worksheetDetails
63
+ let orderInventories: any[] = worksheetDetails.map(wsd => wsd.targetInventory)
64
+ const ecommerceCtrl: EcommerceController = new EcommerceController(tx, domain, user)
65
+ await ecommerceCtrl.updateProductVariationStock(marketplaceStores, orderInventories, companyDomain)
66
+ }
53
67
 
54
68
  if (marketplaceOrder) {
55
69
  const marketplaceStore: MarketplaceStore = marketplaceOrder.marketplaceStore
56
70
 
57
- if (marketplaceStore.isAutoUpdateShipment) {
58
- const ecommerceCtrl: EcommerceController = new EcommerceController(tx, domain, user)
59
- await ecommerceCtrl.createOrderComment(marketplaceStore, marketplaceOrder, ORDER_STATUS.PICKING)
60
- }
71
+ if (marketplaceStore.isAutoUpdateShipment) {
72
+ const ecommerceCtrl: EcommerceController = new EcommerceController(tx, domain, user)
73
+ await ecommerceCtrl.createOrderComment(marketplaceStore, marketplaceOrder, ORDER_STATUS.PICKING)
61
74
  }
75
+
76
+ await ecommerceCtrl.createOrderPackage(tx, marketplaceOrder, companyDomain, marketplaceStore, releaseGood)
62
77
  }
63
- break
78
+ }
79
+ break
64
80
 
65
81
  default:
66
82
  break
67
83
  }
68
84
 
69
- // if (releaseGood.type === 'b2c') {
70
- // const sellercraft: Sellercraft = await tx
71
- // .getRepository(Sellercraft)
72
- // .findOne({ domain: worksheet.bizplace.domain, status: SellercraftStatus.ACTIVE })
73
-
74
- // if (marketplaceStores?.length && !sellercraft) {
75
- // if (marketplaceStores.some(store => store.isAutoUpdateStockQty)) {
76
- // const worksheetDetails = worksheet.worksheetDetails
77
- // let orderInventories: any[] = worksheetDetails.map(wsd => wsd.targetInventory)
78
- // const ecommerceCtrl: EcommerceController = new EcommerceController(tx, domain, user)
79
- // await ecommerceCtrl.updateProductVariationStock(marketplaceStores, orderInventories, companyDomain)
80
- // }
81
-
82
- // const marketplaceOrder: MarketplaceOrder = await tx.getRepository(MarketplaceOrder).findOne({
83
- // where: { orderNo: releaseGood.refNo, domain: companyDomain },
84
- // relations: ['marketplaceStore']
85
- // })
86
-
87
- // if (marketplaceOrder) {
88
- // const marketplaceStore: MarketplaceStore = marketplaceOrder.marketplaceStore
89
-
90
- // if (marketplaceStore.isAutoUpdateShipment) {
91
- // const ecommerceCtrl: EcommerceController = new EcommerceController(tx, domain, user)
92
- // await ecommerceCtrl.createOrderComment(marketplaceStore, marketplaceOrder, ORDER_STATUS.PICKING)
93
- // }
94
- // }
95
- // }
96
- // }
97
- return worksheet
98
- } catch (error) {
99
- throw error
100
- } finally {
101
- ActiveWorksheetPickingView.refreshView()
85
+ if (
86
+ releaseGood?.orderPackages?.length &&
87
+ releaseGood.lmdOption &&
88
+ releaseGood.lastMileDelivery &&
89
+ releaseGood?.orderPackages?.some(op => op.parcelId == null)
90
+ ) {
91
+ await createLmdParcel([releaseGood], tx, domain, user, marketplaceOrder)
92
+
93
+ //where to trigger update parcel count
94
+ let countParcel = releaseGood?.countParcel ? releaseGood.countParcel : 0
95
+ const releaseGoodId = releaseGood?.id
96
+
97
+ await tx.getRepository(ReleaseGood).update(
98
+ { id: releaseGoodId },
99
+ {
100
+ countParcel: countParcel+1,
101
+ updater: user.id
102
+ }
103
+ )
102
104
  }
103
105
 
106
+ return worksheet
107
+ } catch (error) {
108
+ throw error
109
+ } finally {
110
+ ActiveWorksheetPickingView.refreshView()
111
+ }
104
112
  }
@@ -17,6 +17,7 @@ import {
17
17
  PickingWorksheetController
18
18
  } from '../../../../controllers'
19
19
  import { Worksheet } from '../../../../entities'
20
+ import { createLmdParcel } from '../../../../utils'
20
21
 
21
22
  export const activateBulkPickingResolver = {
22
23
  async activateBulkPicking(_: any, { worksheetNo }, context: any) {
@@ -33,6 +34,7 @@ export async function activateBulkPicking(
33
34
  worksheetNo: string[]
34
35
  ): Promise<Worksheet[]> {
35
36
  const worksheetController: PickingWorksheetController = new PickingWorksheetController(tx, domain, user)
37
+ const ecommerceCtrl: EcommerceController = new EcommerceController(tx, domain, user)
36
38
  const worksheets = await worksheetController.activateBulkPicking(worksheetNo)
37
39
 
38
40
  for (const worksheet of worksheets) {
@@ -40,6 +42,11 @@ export async function activateBulkPicking(
40
42
  let releaseGood: ReleaseGood = worksheet.releaseGood
41
43
  const orderSource: string = releaseGood.source
42
44
 
45
+ const marketplaceOrder: MarketplaceOrder = await tx.getRepository(MarketplaceOrder).findOne({
46
+ where: { orderNo: releaseGood.refNo, domain: companyDomain },
47
+ relations: ['marketplaceStore']
48
+ })
49
+
43
50
  switch (orderSource) {
44
51
  case ApplicationType.MMS:
45
52
  // find for any existing marketplace store connections
@@ -56,11 +63,6 @@ export async function activateBulkPicking(
56
63
  await ecommerceCtrl.updateProductVariationStock(marketplaceStores, orderInventories, companyDomain)
57
64
  }
58
65
 
59
- const marketplaceOrder: MarketplaceOrder = await tx.getRepository(MarketplaceOrder).findOne({
60
- where: { orderNo: releaseGood.refNo, domain: companyDomain },
61
- relations: ['marketplaceStore']
62
- })
63
-
64
66
  if (marketplaceOrder) {
65
67
  const marketplaceStore: MarketplaceStore = marketplaceOrder.marketplaceStore
66
68
 
@@ -68,12 +70,35 @@ export async function activateBulkPicking(
68
70
  const ecommerceCtrl: EcommerceController = new EcommerceController(tx, domain, user)
69
71
  await ecommerceCtrl.createOrderComment(marketplaceStore, marketplaceOrder, ORDER_STATUS.PICKING)
70
72
  }
73
+
74
+ await ecommerceCtrl.createOrderPackage(tx, marketplaceOrder, companyDomain, marketplaceStore, releaseGood)
71
75
  }
72
76
  }
73
77
  break
74
78
  default:
75
79
  break
76
80
  }
81
+
82
+ if (
83
+ releaseGood?.orderPackages?.length &&
84
+ releaseGood.lmdOption &&
85
+ releaseGood.lastMileDelivery &&
86
+ releaseGood?.orderPackages?.some(op => op.parcelId == null)
87
+ ) {
88
+ await createLmdParcel([releaseGood], tx, domain, user, marketplaceOrder)
89
+
90
+ //where to trigger update parcel count
91
+ let countParcel = releaseGood?.countParcel ? releaseGood.countParcel : 0
92
+ const releaseGoodId = releaseGood?.id
93
+
94
+ await tx.getRepository(ReleaseGood).update(
95
+ { id: releaseGoodId },
96
+ {
97
+ countParcel: countParcel+1,
98
+ updater: user.id
99
+ }
100
+ )
101
+ }
77
102
  }
78
103
  return worksheets
79
104
  }