@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.
- package/dist-server/controllers/outbound/index.js +3 -0
- package/dist-server/controllers/outbound/index.js.map +1 -1
- package/dist-server/controllers/outbound/picking-worksheet-controller.js +119 -15
- package/dist-server/controllers/outbound/picking-worksheet-controller.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/picking/activate-batch-picking.js +71 -1
- package/dist-server/graphql/resolvers/worksheet/picking/activate-batch-picking.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/picking/activate-picking.js +21 -28
- package/dist-server/graphql/resolvers/worksheet/picking/activate-picking.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/picking/bulk-activate-picking.js +21 -4
- package/dist-server/graphql/resolvers/worksheet/picking/bulk-activate-picking.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/picking/complete-batch-picking.js +96 -130
- package/dist-server/graphql/resolvers/worksheet/picking/complete-batch-picking.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/picking/complete-picking.js +22 -56
- package/dist-server/graphql/resolvers/worksheet/picking/complete-picking.js.map +1 -1
- package/dist-server/index.js +3 -0
- package/dist-server/index.js.map +1 -1
- package/dist-server/utils/lmd-util.js +193 -162
- package/dist-server/utils/lmd-util.js.map +1 -1
- package/package.json +9 -9
- package/server/controllers/outbound/index.ts +2 -0
- package/server/controllers/outbound/picking-worksheet-controller.ts +127 -17
- package/server/graphql/resolvers/worksheet/picking/activate-batch-picking.ts +107 -6
- package/server/graphql/resolvers/worksheet/picking/activate-picking.ts +73 -65
- package/server/graphql/resolvers/worksheet/picking/bulk-activate-picking.ts +30 -5
- package/server/graphql/resolvers/worksheet/picking/complete-batch-picking.ts +34 -56
- package/server/graphql/resolvers/worksheet/picking/complete-picking.ts +4 -36
- package/server/index.ts +2 -0
- 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
|
-
|
|
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', '
|
|
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 {
|
|
1
|
+
import {
|
|
2
|
+
EntityManager,
|
|
3
|
+
getConnection,
|
|
4
|
+
In
|
|
5
|
+
} from 'typeorm'
|
|
2
6
|
|
|
3
|
-
import {
|
|
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 {
|
|
17
|
+
import {
|
|
18
|
+
EcommerceController,
|
|
19
|
+
PickingWorksheetController
|
|
20
|
+
} from '../../../../controllers'
|
|
8
21
|
import { Worksheet } from '../../../../entities'
|
|
9
|
-
import {
|
|
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 (
|
|
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
|
-
|
|
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 {
|
|
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 {
|
|
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 {
|
|
10
|
-
|
|
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
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
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
|
-
|
|
58
|
-
|
|
59
|
-
|
|
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
|
-
|
|
78
|
+
}
|
|
79
|
+
break
|
|
64
80
|
|
|
65
81
|
default:
|
|
66
82
|
break
|
|
67
83
|
}
|
|
68
84
|
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
//
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
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
|
}
|