@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
|
@@ -1,13 +1,22 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {
|
|
2
|
+
EntityManager,
|
|
3
|
+
getManager,
|
|
4
|
+
In
|
|
5
|
+
} from 'typeorm'
|
|
2
6
|
|
|
3
|
-
import {
|
|
4
|
-
|
|
7
|
+
import {
|
|
8
|
+
ApplicationType,
|
|
9
|
+
User
|
|
10
|
+
} from '@things-factory/auth-base'
|
|
5
11
|
import { logger } from '@things-factory/env'
|
|
6
12
|
import { Account } from '@things-factory/integration-accounting'
|
|
7
13
|
import { sqsSendMessage } from '@things-factory/integration-base'
|
|
8
14
|
import { MarketplaceStore } from '@things-factory/integration-marketplace'
|
|
9
15
|
import { Powrup } from '@things-factory/integration-powrup'
|
|
10
|
-
import {
|
|
16
|
+
import {
|
|
17
|
+
Sellercraft,
|
|
18
|
+
SellercraftStatus
|
|
19
|
+
} from '@things-factory/integration-sellercraft'
|
|
11
20
|
import { MarketplaceOrder } from '@things-factory/marketplace-base'
|
|
12
21
|
import {
|
|
13
22
|
ORDER_STATUS,
|
|
@@ -23,15 +32,17 @@ import { Domain } from '@things-factory/shell'
|
|
|
23
32
|
import { Inventory } from '@things-factory/warehouse-base'
|
|
24
33
|
|
|
25
34
|
import {
|
|
35
|
+
createOrderPackageAndItems,
|
|
26
36
|
PackingWorksheetController,
|
|
27
37
|
PickingWorksheetController,
|
|
28
38
|
SellercraftController,
|
|
29
39
|
SortingWorksheetController
|
|
30
40
|
} from '../../../../controllers/'
|
|
31
41
|
import { EcommerceController } from '../../../../controllers/ecommerce'
|
|
32
|
-
import {
|
|
33
|
-
|
|
34
|
-
|
|
42
|
+
import {
|
|
43
|
+
Worksheet,
|
|
44
|
+
WorksheetDetail
|
|
45
|
+
} from '../../../../entities'
|
|
35
46
|
|
|
36
47
|
export const completeBatchPickingResolver = {
|
|
37
48
|
async completeBatchPicking(_: any, { taskNo }, context: any) {
|
|
@@ -209,55 +220,22 @@ export async function completeBatchPicking(
|
|
|
209
220
|
break
|
|
210
221
|
|
|
211
222
|
default:
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
let savedOrderPackage: OrderPackage = await tx.getRepository(OrderPackage).save(orderPackage)
|
|
227
|
-
const orderPackageItems: OrderPackageItem[] = foundReleaseGood.orderProducts.map(op => {
|
|
228
|
-
if (op.product){
|
|
229
|
-
return {
|
|
230
|
-
name: OrderNoGenerator.orderPackageItem(),
|
|
231
|
-
orderProduct: op,
|
|
232
|
-
status: ORDER_STATUS.PROCESSING,
|
|
233
|
-
releaseQty: op.releaseQty,
|
|
234
|
-
orderPackage: savedOrderPackage,
|
|
235
|
-
domain: foundReleaseGood.domain,
|
|
236
|
-
bizplace: foundReleaseGood.bizplace,
|
|
237
|
-
creator: foundReleaseGood.creator,
|
|
238
|
-
updater: foundReleaseGood.updater,
|
|
239
|
-
productDetail: op.productDetail
|
|
240
|
-
}
|
|
241
|
-
} else {
|
|
242
|
-
let productBundle = op.productBundle
|
|
243
|
-
return productBundle.productBundleSettings.map(pbs => ({
|
|
244
|
-
name: OrderNoGenerator.orderPackageItem(),
|
|
245
|
-
orderProduct: op,
|
|
246
|
-
status: ORDER_STATUS.PROCESSING,
|
|
247
|
-
releaseQty: op.releaseQty * pbs.bundleQty,
|
|
248
|
-
orderPackage: savedOrderPackage,
|
|
249
|
-
domain: foundReleaseGood.domain,
|
|
250
|
-
bizplace: foundReleaseGood.bizplace,
|
|
251
|
-
creator: foundReleaseGood.creator,
|
|
252
|
-
updater: foundReleaseGood.updater,
|
|
253
|
-
productDetail: pbs.productDetail
|
|
254
|
-
}))
|
|
223
|
+
if(!foundReleaseGood?.orderPackages?.length){
|
|
224
|
+
let orderPackage: OrderPackage = {
|
|
225
|
+
name: OrderNoGenerator.orderPackage(),
|
|
226
|
+
packageId: null,
|
|
227
|
+
trackingNo: null,
|
|
228
|
+
transporter: null,
|
|
229
|
+
airwayBill: null,
|
|
230
|
+
status: ORDER_STATUS.PROCESSING,
|
|
231
|
+
releaseGood: foundReleaseGood,
|
|
232
|
+
domain: foundReleaseGood.domain,
|
|
233
|
+
bizplace: foundReleaseGood.bizplace,
|
|
234
|
+
creator: foundReleaseGood.creator,
|
|
235
|
+
updater: foundReleaseGood.updater
|
|
255
236
|
}
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
await tx.getRepository(OrderPackageItem).save(orderPackageItems)
|
|
259
|
-
orderPackage.orderPackageItems = orderPackageItems
|
|
260
|
-
foundReleaseGood.orderPackages = [orderPackage]
|
|
237
|
+
|
|
238
|
+
await createOrderPackageAndItems(tx, foundReleaseGood, orderPackage)
|
|
261
239
|
break
|
|
262
240
|
}
|
|
263
241
|
|
|
@@ -308,7 +286,6 @@ export async function completeBatchPicking(
|
|
|
308
286
|
foundReleaseGood.lastMileDelivery &&
|
|
309
287
|
foundReleaseGood?.orderPackages?.some(op => op.parcelId == null)
|
|
310
288
|
) {
|
|
311
|
-
await createLmdParcel([foundReleaseGood], tx, domain, user, marketplaceOrder)
|
|
312
289
|
// trigger RTS
|
|
313
290
|
try {
|
|
314
291
|
const orderSource: string = foundReleaseGood.source
|
|
@@ -360,6 +337,7 @@ export async function completeBatchPicking(
|
|
|
360
337
|
}
|
|
361
338
|
|
|
362
339
|
return false
|
|
340
|
+
}
|
|
363
341
|
} else {
|
|
364
342
|
let foundObsoleteInventories: any = worksheet
|
|
365
343
|
await tx.getRepository(Inventory).update({ id: In(foundObsoleteInventories) }, { obsolete: true })
|
|
@@ -57,6 +57,7 @@ import {
|
|
|
57
57
|
WORKSHEET_TYPE
|
|
58
58
|
} from '../../../../constants'
|
|
59
59
|
import {
|
|
60
|
+
createOrderPackageAndItems,
|
|
60
61
|
LoadingWorksheetController,
|
|
61
62
|
PackingWorksheetController,
|
|
62
63
|
PickingWorksheetController,
|
|
@@ -70,7 +71,6 @@ import {
|
|
|
70
71
|
WorksheetDetail,
|
|
71
72
|
ActiveWorksheetPickingView
|
|
72
73
|
} from '../../../../entities'
|
|
73
|
-
import { createLmdParcel } from '../../../../utils'
|
|
74
74
|
import { activateVas } from '../vas/activate-vas'
|
|
75
75
|
|
|
76
76
|
export const completePickingResolver = {
|
|
@@ -359,6 +359,7 @@ export async function completePicking(
|
|
|
359
359
|
break
|
|
360
360
|
|
|
361
361
|
default:
|
|
362
|
+
if (!releaseGood?.orderPackages?.length) {
|
|
362
363
|
let orderPackage: OrderPackage = {
|
|
363
364
|
name: OrderNoGenerator.orderPackage(),
|
|
364
365
|
packageId: null,
|
|
@@ -374,40 +375,8 @@ export async function completePicking(
|
|
|
374
375
|
updater: releaseGood.updater
|
|
375
376
|
}
|
|
376
377
|
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
if (op.product){
|
|
380
|
-
return {
|
|
381
|
-
name: OrderNoGenerator.orderPackageItem(),
|
|
382
|
-
orderProduct: op,
|
|
383
|
-
status: ORDER_STATUS.PROCESSING,
|
|
384
|
-
releaseQty: op.releaseQty,
|
|
385
|
-
orderPackage: savedOrderPackage,
|
|
386
|
-
domain: releaseGood.domain,
|
|
387
|
-
bizplace: releaseGood.bizplace,
|
|
388
|
-
creator: releaseGood.creator,
|
|
389
|
-
updater: releaseGood.updater,
|
|
390
|
-
productDetail: op.productDetail
|
|
391
|
-
}
|
|
392
|
-
} else {
|
|
393
|
-
let productBundle = op.productBundle
|
|
394
|
-
return productBundle.productBundleSettings.map(pbs => ({
|
|
395
|
-
name: OrderNoGenerator.orderPackageItem(),
|
|
396
|
-
orderProduct: op,
|
|
397
|
-
status: ORDER_STATUS.PROCESSING,
|
|
398
|
-
releaseQty: op.releaseQty * pbs.bundleQty,
|
|
399
|
-
orderPackage: savedOrderPackage,
|
|
400
|
-
domain: releaseGood.domain,
|
|
401
|
-
bizplace: releaseGood.bizplace,
|
|
402
|
-
creator: releaseGood.creator,
|
|
403
|
-
updater: releaseGood.updater,
|
|
404
|
-
productDetail: pbs.productDetail
|
|
405
|
-
}))
|
|
406
|
-
}
|
|
407
|
-
}).flat()
|
|
408
|
-
await tx.getRepository(OrderPackageItem).save(orderPackageItems)
|
|
409
|
-
orderPackage.orderPackageItems = orderPackageItems
|
|
410
|
-
releaseGood.orderPackages = [orderPackage]
|
|
378
|
+
await createOrderPackageAndItems(tx, releaseGood, orderPackage)
|
|
379
|
+
}
|
|
411
380
|
break
|
|
412
381
|
}
|
|
413
382
|
|
|
@@ -515,7 +484,6 @@ export async function completePicking(
|
|
|
515
484
|
releaseGood.lastMileDelivery &&
|
|
516
485
|
releaseGood?.orderPackages?.some(op => op.parcelId == null)
|
|
517
486
|
) {
|
|
518
|
-
await createLmdParcel([releaseGood], tx, domain, user, marketplaceOrder)
|
|
519
487
|
// trigger RTS
|
|
520
488
|
try {
|
|
521
489
|
const orderSource: string = releaseGood.source
|
package/server/index.ts
CHANGED
|
@@ -16,3 +16,5 @@ export * from './controllers/render-orientage-grn'
|
|
|
16
16
|
export * from './controllers/render-orientage-do'
|
|
17
17
|
export * from './controllers/render-ro-do'
|
|
18
18
|
export * from './controllers/ecommerce/ecommerce-controller'
|
|
19
|
+
|
|
20
|
+
export {createOrderPackageAndItems} from './controllers/outbound/picking-worksheet-controller'
|
package/server/utils/lmd-util.ts
CHANGED
|
@@ -12,6 +12,7 @@ import {
|
|
|
12
12
|
uploadAwb,
|
|
13
13
|
uploadInvoice
|
|
14
14
|
} from '@things-factory/attachment-base'
|
|
15
|
+
import { User } from '@things-factory/auth-base'
|
|
15
16
|
import { Bizplace } from '@things-factory/biz-base'
|
|
16
17
|
import {
|
|
17
18
|
Board,
|
|
@@ -34,7 +35,9 @@ import { MarketplaceStore } from '@things-factory/integration-marketplace'
|
|
|
34
35
|
import { MarketplaceOrder } from '@things-factory/marketplace-base'
|
|
35
36
|
import {
|
|
36
37
|
OrderPackage,
|
|
37
|
-
ReleaseGood
|
|
38
|
+
ReleaseGood,
|
|
39
|
+
ReleaseGoodLogs,
|
|
40
|
+
createReleaseGoodLog
|
|
38
41
|
} from '@things-factory/sales-base'
|
|
39
42
|
import { Domain } from '@things-factory/shell'
|
|
40
43
|
|
|
@@ -53,67 +56,71 @@ export async function createLmdParcel(releaseGoods, tx, domain, user, marketplac
|
|
|
53
56
|
try {
|
|
54
57
|
let parcelsRequest = []
|
|
55
58
|
for (let releaseGood of releaseGoods) {
|
|
56
|
-
|
|
59
|
+
try {
|
|
60
|
+
let lmd: LastMileDelivery = releaseGood.lastMileDelivery
|
|
57
61
|
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
+
const bizplace: Bizplace = await tx.getRepository(Bizplace).findOne({
|
|
63
|
+
where: { domain: releaseGood.domain },
|
|
64
|
+
relations: ['domain']
|
|
65
|
+
})
|
|
62
66
|
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
67
|
+
const senderGeoArea: GeoArea = await tx
|
|
68
|
+
.getRepository(GeoArea)
|
|
69
|
+
.findOne({ where: { postalCode: bizplace.postalCode } })
|
|
66
70
|
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
71
|
+
const recipientGeoArea: GeoArea = await tx
|
|
72
|
+
.getRepository(GeoArea)
|
|
73
|
+
.findOne({ where: { postalCode: releaseGood.postalCode } })
|
|
70
74
|
|
|
71
|
-
const currentTimestamp: number = Math.floor(Date.now() / 1000)
|
|
72
|
-
if (lmd?.platform == 'NINJA_VAN') {
|
|
73
75
|
const currentTimestamp: number = Math.floor(Date.now() / 1000)
|
|
74
|
-
if (
|
|
75
|
-
const
|
|
76
|
-
lmd
|
|
76
|
+
if (lmd?.platform == 'NINJA_VAN') {
|
|
77
|
+
const currentTimestamp: number = Math.floor(Date.now() / 1000)
|
|
78
|
+
if (currentTimestamp >= lmd?.expiresIn) {
|
|
79
|
+
const lastMileDelivery = await refreshAccessTokenNinjavan(lmd?.id, { state: { tx } })
|
|
80
|
+
lmd.accessToken = lastMileDelivery.accessToken
|
|
81
|
+
}
|
|
77
82
|
}
|
|
78
|
-
}
|
|
79
83
|
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
+
if (lmd?.platform == 'EMS') {
|
|
85
|
+
if (currentTimestamp >= lmd?.expiresIn || lmd?.expiresIn == null) {
|
|
86
|
+
let lastMileDelivery = await getAccessTokenEfmx(lmd?.id, lmd?.clientId, lmd?.secretKey, { state: { tx } })
|
|
87
|
+
lmd.accessToken = lastMileDelivery.accessToken
|
|
88
|
+
}
|
|
84
89
|
}
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
90
|
+
if (lmd?.platform == 'DHL_EXPRESS') {
|
|
91
|
+
if (
|
|
92
|
+
(releaseGood?.deliveryAddress2 != undefined && releaseGood?.deliveryAddress3 != undefined) ||
|
|
93
|
+
(releaseGood?.deliveryAddress2 == '-' && releaseGood?.deliveryAddress3 == '-') ||
|
|
94
|
+
(releaseGood?.deliveryAddress2 == null && releaseGood?.deliveryAddress3 == null)
|
|
95
|
+
) {
|
|
96
|
+
let addArray = releaseGood.deliveryAddress1?.split(',')
|
|
97
|
+
releaseGood.deliveryAddress1 = addArray[0]?.trim() + ','
|
|
98
|
+
releaseGood.deliveryAddress2 = addArray[1]?.trim() + ','
|
|
99
|
+
releaseGood.deliveryAddress3 = addArray?.slice(2).join(', ').trim()
|
|
100
|
+
}
|
|
96
101
|
}
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
102
|
+
let [latitude, longitude] = bizplace?.latlng?.split(',')
|
|
103
|
+
|
|
104
|
+
let data = {
|
|
105
|
+
courier: lmd.platform,
|
|
106
|
+
clientId: lmd?.clientId,
|
|
107
|
+
clientPass: lmd?.secretKey,
|
|
108
|
+
pickupAccountId: lmd?.pickupAccountId,
|
|
109
|
+
soldToAccountId: lmd?.soldToAccountId,
|
|
110
|
+
token: lmd?.accessToken,
|
|
111
|
+
staging: lmd?.staging,
|
|
112
|
+
accountNumber: lmd?.accountNumber,
|
|
113
|
+
accountName: lmd?.name,
|
|
114
|
+
orderDate: lmd.platform == 'DHL_EXPRESS' ? dateTime() : new Date().toISOString(),
|
|
115
|
+
remark: releaseGood?.remark,
|
|
116
|
+
prefix: lmd?.prefix,
|
|
117
|
+
|
|
118
|
+
//pass releaseGoodId for rg logs
|
|
119
|
+
releaseGoodId: releaseGood?.id,
|
|
120
|
+
|
|
121
|
+
orderNo: releaseGood?.refNo,
|
|
122
|
+
cod: releaseGood?.codOption,
|
|
123
|
+
paidAmount: releaseGood?.paidAmount?.toString(),
|
|
117
124
|
|
|
118
125
|
recipient: releaseGood.attentionTo,
|
|
119
126
|
phone: releaseGood.phone1,
|
|
@@ -131,24 +138,24 @@ export async function createLmdParcel(releaseGoods, tx, domain, user, marketplac
|
|
|
131
138
|
releaseGood.city?.toUpperCase(),
|
|
132
139
|
country: releaseGood.country,
|
|
133
140
|
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
141
|
+
pSender: bizplace.name,
|
|
142
|
+
pAddress: bizplace.address,
|
|
143
|
+
pAddress2: bizplace.address2,
|
|
144
|
+
pPhone: bizplace?.phone,
|
|
145
|
+
pEmail: bizplace.email,
|
|
146
|
+
pWard: bizplace?.ward, // only for viettel lmd
|
|
147
|
+
pCity: bizplace.city || senderGeoArea.cityName,
|
|
148
|
+
pPostcode: bizplace.postalCode || senderGeoArea.postalCode,
|
|
149
|
+
pDistrict: bizplace?.district || bizplace.city,
|
|
150
|
+
pState: bizplace.state || senderGeoArea.stateName,
|
|
151
|
+
pCountry: bizplace.countryCode || senderGeoArea.countryCode,
|
|
152
|
+
pLatitude: latitude,
|
|
153
|
+
pLongitude: longitude,
|
|
154
|
+
|
|
155
|
+
handoverMethod: 1
|
|
156
|
+
}
|
|
150
157
|
|
|
151
|
-
|
|
158
|
+
let unprocessedOrderPackages: OrderPackage[] = releaseGood.orderPackages.filter(op => !op.parcelId)
|
|
152
159
|
|
|
153
160
|
let packagesData = unprocessedOrderPackages.map(op => {
|
|
154
161
|
return {
|
|
@@ -171,56 +178,80 @@ export async function createLmdParcel(releaseGoods, tx, domain, user, marketplac
|
|
|
171
178
|
height: opi?.orderProduct?.productDetail?.height || ' '
|
|
172
179
|
}
|
|
173
180
|
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
181
|
+
if (lmd.platform == 'SAPX' || lmd.platform == 'VIETTEL_POST') {
|
|
182
|
+
if (lengthUnit == 'mm' || lengthUnit == 'm') {
|
|
183
|
+
;(items.width = (items.width / 10)?.toString()),
|
|
184
|
+
(items.length = (items.length / 10)?.toString()),
|
|
185
|
+
(items.height = (items.height / 10)?.toString())
|
|
186
|
+
} else {
|
|
187
|
+
;(items.width = items.width?.toString()),
|
|
188
|
+
(items.length = items.length?.toString()),
|
|
189
|
+
(items.height = items.height?.toString())
|
|
190
|
+
}
|
|
183
191
|
}
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
}
|
|
187
|
-
}
|
|
188
|
-
})
|
|
192
|
+
return items
|
|
193
|
+
})
|
|
194
|
+
}
|
|
195
|
+
})
|
|
189
196
|
|
|
190
|
-
|
|
197
|
+
parcelsRequest.push(...packagesData)
|
|
198
|
+
} catch (e) {
|
|
199
|
+
let errorResponse = JSON.stringify(e.message)
|
|
200
|
+
createReleaseGoodLog('create-lmd-parcel', errorResponse, releaseGood.id, {
|
|
201
|
+
state: { domain: null }
|
|
202
|
+
})
|
|
203
|
+
}
|
|
191
204
|
}
|
|
192
205
|
|
|
193
206
|
if (parcelsRequest && parcelsRequest.length > 0) {
|
|
194
|
-
let
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
207
|
+
let orderPackages: OrderPackage[]
|
|
208
|
+
|
|
209
|
+
try {
|
|
210
|
+
let res = await LastMileAPI.createParcel(
|
|
211
|
+
{ ...releaseGoods[0].lastMileDelivery, platform: 'lmdMiddleware' },
|
|
212
|
+
parcelsRequest
|
|
213
|
+
)
|
|
214
|
+
for (let parcel of res) {
|
|
215
|
+
let courier = parcel.transporter
|
|
216
|
+
let transporter = courier.replace(/_/g, ' ')
|
|
217
|
+
await tx
|
|
218
|
+
.getRepository(OrderPackage)
|
|
219
|
+
.update({ name: parcel.refNo }, { parcelId: parcel.parcelId, transporter: transporter })
|
|
220
|
+
|
|
221
|
+
parcelsRequest.map(rg => {
|
|
222
|
+
createReleaseGoodLog('lmd-create-parcel', parcel.message, rg.releaseGoodId, {
|
|
223
|
+
state: { domain: null }
|
|
224
|
+
})
|
|
225
|
+
})
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
const qb: SelectQueryBuilder<OrderPackage> = tx
|
|
202
229
|
.getRepository(OrderPackage)
|
|
203
|
-
.
|
|
204
|
-
|
|
230
|
+
.createQueryBuilder('op')
|
|
231
|
+
.innerJoinAndSelect('op.releaseGood', 'rg')
|
|
232
|
+
.innerJoinAndSelect('rg.domain', 'd')
|
|
233
|
+
.innerJoinAndSelect('rg.bizplace', 'b')
|
|
234
|
+
.innerJoinAndSelect('b.company', 'c')
|
|
235
|
+
.innerJoinAndSelect('c.domain', 'companyDomain')
|
|
236
|
+
.innerJoinAndSelect('b.domain', 'd2')
|
|
237
|
+
.leftJoinAndSelect('rg.lastMileDelivery', 'lmd')
|
|
238
|
+
.where('op.name IN (:...orderPackageIds)', {
|
|
239
|
+
orderPackageIds: res.map(parcel => {
|
|
240
|
+
return parcel.refNo
|
|
241
|
+
})
|
|
242
|
+
})
|
|
243
|
+
|
|
244
|
+
orderPackages = await qb.getMany()
|
|
205
245
|
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
.
|
|
209
|
-
.
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
.innerJoinAndSelect('b.company', 'c')
|
|
213
|
-
.innerJoinAndSelect('c.domain', 'companyDomain')
|
|
214
|
-
.innerJoinAndSelect('b.domain', 'd2')
|
|
215
|
-
.leftJoinAndSelect('rg.lastMileDelivery', 'lmd')
|
|
216
|
-
.where('op.name IN (:...orderPackageIds)', {
|
|
217
|
-
orderPackageIds: res.map(parcel => {
|
|
218
|
-
return parcel.refNo
|
|
246
|
+
await processAwbAndTrackingNo(orderPackages, tx, domain, user, marketplaceOrder)
|
|
247
|
+
} catch (error) {
|
|
248
|
+
let errorResponse = error.message
|
|
249
|
+
parcelsRequest.map(rg => {
|
|
250
|
+
createReleaseGoodLog('error-lmd-create-parcel', errorResponse, rg.releaseGoodId, {
|
|
251
|
+
state: { domain: null }
|
|
219
252
|
})
|
|
220
253
|
})
|
|
221
|
-
|
|
222
|
-
const orderPackages: OrderPackage[] = await qb.getMany()
|
|
223
|
-
await processAwbAndTrackingNo(orderPackages, tx, domain, user, marketplaceOrder)
|
|
254
|
+
}
|
|
224
255
|
}
|
|
225
256
|
} catch (e) {
|
|
226
257
|
logger.error(`[lmd-create-parcel]: ${e}`)
|
|
@@ -239,7 +270,7 @@ export async function processAwbAndTrackingNo(orderPackages, tx, domain, user, m
|
|
|
239
270
|
{ ...orderPackage.releaseGood.lastMileDelivery, platform: 'lmdMiddleware' },
|
|
240
271
|
{ parcelId: orderPackage.parcelId, staging: orderPackage.releaseGood.lastMileDelivery?.staging }
|
|
241
272
|
)
|
|
242
|
-
|
|
273
|
+
|
|
243
274
|
if (awbRes) {
|
|
244
275
|
let awbContent: any
|
|
245
276
|
let invoiceContent: any
|
|
@@ -343,43 +374,48 @@ export async function processAwbAndTrackingNo(orderPackages, tx, domain, user, m
|
|
|
343
374
|
}
|
|
344
375
|
}
|
|
345
376
|
} catch (e) {
|
|
377
|
+
let releaseGoodId = orderPackage.releaseGood.id
|
|
346
378
|
logger.error(e)
|
|
379
|
+
let errorResponse = e.message
|
|
380
|
+
createReleaseGoodLog('error-process-awb-and-tracking-no', errorResponse, releaseGoodId, {
|
|
381
|
+
state: { domain: null }
|
|
382
|
+
})
|
|
347
383
|
}
|
|
348
|
-
// })
|
|
349
384
|
}
|
|
350
|
-
|
|
351
|
-
// trigger RTS
|
|
352
|
-
// try {
|
|
353
|
-
// let uniqueReleaseOrders: ReleaseGood = [...new Map(releaseOrders.map(item => [item['id'], item])).values()]
|
|
354
|
-
|
|
355
|
-
// for (let releaseOrder of uniqueReleaseOrders) {
|
|
356
|
-
// const orderSource: string = releaseOrder.source
|
|
357
|
-
|
|
358
|
-
// if (orderSource == ApplicationType.SELLERCRAFT) {
|
|
359
|
-
// const sellercraft: Sellercraft = await getRepository(Sellercraft).findOne({
|
|
360
|
-
// domain: releaseOrder.bizplace.domain,
|
|
361
|
-
// status: SellercraftStatus.ACTIVE
|
|
362
|
-
// })
|
|
363
|
-
// if (sellercraft) {
|
|
364
|
-
// await getConnection().transaction(async tx => {
|
|
365
|
-
// const sellercraftCtrl: SellercraftController = new SellercraftController(tx, null, null)
|
|
366
|
-
// const rtsTriggerLevel: Setting = await tx.getRepository(Setting).findOne({
|
|
367
|
-
// where: { domain: releaseOrder.domain, category: 'id-rule', name: 'rts-trigger-level' }
|
|
368
|
-
// })
|
|
369
|
-
|
|
370
|
-
// if (rtsTriggerLevel && parseInt(rtsTriggerLevel?.value || 0) == 1) {
|
|
371
|
-
// await sellercraftCtrl.initiateOrderShipment(sellercraft, releaseOrder)
|
|
372
|
-
// }
|
|
373
|
-
// })
|
|
374
|
-
// }
|
|
375
|
-
// }
|
|
376
|
-
// }
|
|
377
|
-
// } catch (e) {
|
|
378
|
-
// logger.error(`[get-lmd-awb-sof-trigger]: ${e}`)
|
|
379
|
-
// }
|
|
380
|
-
//
|
|
385
|
+
// })
|
|
381
386
|
}
|
|
382
387
|
|
|
388
|
+
// trigger RTS
|
|
389
|
+
// try {
|
|
390
|
+
// let uniqueReleaseOrders: ReleaseGood = [...new Map(releaseOrders.map(item => [item['id'], item])).values()]
|
|
391
|
+
|
|
392
|
+
// for (let releaseOrder of uniqueReleaseOrders) {
|
|
393
|
+
// const orderSource: string = releaseOrder.source
|
|
394
|
+
|
|
395
|
+
// if (orderSource == ApplicationType.SELLERCRAFT) {
|
|
396
|
+
// const sellercraft: Sellercraft = await getRepository(Sellercraft).findOne({
|
|
397
|
+
// domain: releaseOrder.bizplace.domain,
|
|
398
|
+
// status: SellercraftStatus.ACTIVE
|
|
399
|
+
// })
|
|
400
|
+
// if (sellercraft) {
|
|
401
|
+
// await getConnection().transaction(async tx => {
|
|
402
|
+
// const sellercraftCtrl: SellercraftController = new SellercraftController(tx, null, null)
|
|
403
|
+
// const rtsTriggerLevel: Setting = await tx.getRepository(Setting).findOne({
|
|
404
|
+
// where: { domain: releaseOrder.domain, category: 'id-rule', name: 'rts-trigger-level' }
|
|
405
|
+
// })
|
|
406
|
+
|
|
407
|
+
// if (rtsTriggerLevel && parseInt(rtsTriggerLevel?.value || 0) == 1) {
|
|
408
|
+
// await sellercraftCtrl.initiateOrderShipment(sellercraft, releaseOrder)
|
|
409
|
+
// }
|
|
410
|
+
// })
|
|
411
|
+
// }
|
|
412
|
+
// }
|
|
413
|
+
// }
|
|
414
|
+
// } catch (e) {
|
|
415
|
+
// logger.error(`[get-lmd-awb-sof-trigger]: ${e}`)
|
|
416
|
+
// }
|
|
417
|
+
//
|
|
418
|
+
|
|
383
419
|
async function processCallback(packageInfo) {
|
|
384
420
|
try {
|
|
385
421
|
let response = await fetch(`${packageInfo.integration.urlCallback}`, {
|