@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
@@ -1,13 +1,22 @@
1
- import { EntityManager, getManager, In } from 'typeorm'
1
+ import {
2
+ EntityManager,
3
+ getManager,
4
+ In
5
+ } from 'typeorm'
2
6
 
3
- import { ApplicationType, User } from '@things-factory/auth-base'
4
- import { Bizplace, getMyBizplace } from '@things-factory/biz-base'
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 { Sellercraft, SellercraftStatus } from '@things-factory/integration-sellercraft'
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 { WorksheetController } from '../../../../controllers/worksheet-controller'
33
- import { Worksheet, WorksheetDetail } from '../../../../entities'
34
- import { createLmdParcel } from '../../../../utils'
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
- let orderPackage: OrderPackage = {
213
- name: OrderNoGenerator.orderPackage(),
214
- packageId: null,
215
- trackingNo: null,
216
- transporter: null,
217
- airwayBill: null,
218
- status: ORDER_STATUS.PROCESSING,
219
- releaseGood: foundReleaseGood,
220
- domain: foundReleaseGood.domain,
221
- bizplace: foundReleaseGood.bizplace,
222
- creator: foundReleaseGood.creator,
223
- updater: foundReleaseGood.updater
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
- }).flat()
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
- let savedOrderPackage: OrderPackage = await tx.getRepository(OrderPackage).save(orderPackage)
378
- const orderPackageItems: OrderPackageItem[] = releaseGood.orderProducts.map(op => {
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'
@@ -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
- let lmd: LastMileDelivery = releaseGood.lastMileDelivery
59
+ try {
60
+ let lmd: LastMileDelivery = releaseGood.lastMileDelivery
57
61
 
58
- const bizplace: Bizplace = await tx.getRepository(Bizplace).findOne({
59
- where: { domain: releaseGood.domain },
60
- relations: ['domain']
61
- })
62
+ const bizplace: Bizplace = await tx.getRepository(Bizplace).findOne({
63
+ where: { domain: releaseGood.domain },
64
+ relations: ['domain']
65
+ })
62
66
 
63
- const senderGeoArea: GeoArea = await tx
64
- .getRepository(GeoArea)
65
- .findOne({ where: { postalCode: bizplace.postalCode } })
67
+ const senderGeoArea: GeoArea = await tx
68
+ .getRepository(GeoArea)
69
+ .findOne({ where: { postalCode: bizplace.postalCode } })
66
70
 
67
- const recipientGeoArea: GeoArea = await tx
68
- .getRepository(GeoArea)
69
- .findOne({ where: { postalCode: releaseGood.postalCode } })
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 (currentTimestamp >= lmd?.expiresIn) {
75
- const lastMileDelivery = await refreshAccessTokenNinjavan(lmd?.id, { state: { tx } })
76
- lmd.accessToken = lastMileDelivery.accessToken
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
- if (lmd?.platform == 'EMS') {
81
- if (currentTimestamp >= lmd?.expiresIn || lmd?.expiresIn == null) {
82
- let lastMileDelivery = await getAccessTokenEfmx(lmd?.id, lmd?.clientId, lmd?.secretKey, { state: { tx } })
83
- lmd.accessToken = lastMileDelivery.accessToken
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
- if (lmd?.platform == 'DHL_EXPRESS') {
87
- if (
88
- (releaseGood?.deliveryAddress2 != undefined && releaseGood?.deliveryAddress3 != undefined) ||
89
- (releaseGood?.deliveryAddress2 == '-' && releaseGood?.deliveryAddress3 == '-') ||
90
- (releaseGood?.deliveryAddress2 == null && releaseGood?.deliveryAddress3 == null)
91
- ) {
92
- let addArray = releaseGood.deliveryAddress1?.split(',')
93
- releaseGood.deliveryAddress1 = addArray[0]?.trim() + ','
94
- releaseGood.deliveryAddress2 = addArray[1]?.trim() + ','
95
- releaseGood.deliveryAddress3 = addArray?.slice(2).join(', ').trim()
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
- let [latitude, longitude] = bizplace?.latlng?.split(',')
99
-
100
- let data = {
101
- courier: lmd.platform,
102
- clientId: lmd?.clientId,
103
- clientPass: lmd?.secretKey,
104
- pickupAccountId: lmd?.pickupAccountId,
105
- soldToAccountId: lmd?.soldToAccountId,
106
- token: lmd?.accessToken,
107
- staging: lmd?.staging,
108
- accountNumber: lmd?.accountNumber,
109
- accountName: lmd?.name,
110
- orderDate: lmd.platform == 'DHL_EXPRESS' ? dateTime() : new Date().toISOString(),
111
- remark: releaseGood?.remark,
112
- prefix: lmd?.prefix,
113
-
114
- orderNo: releaseGood?.refNo,
115
- cod: releaseGood?.codOption,
116
- paidAmount: releaseGood?.paidAmount?.toString(),
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
- pSender: bizplace.name,
135
- pAddress: bizplace.address,
136
- pAddress2: bizplace.address2,
137
- pPhone: bizplace?.phone,
138
- pEmail: bizplace.email,
139
- pWard: bizplace?.ward, // only for viettel lmd
140
- pCity: bizplace.city || senderGeoArea.cityName,
141
- pPostcode: bizplace.postalCode || senderGeoArea.postalCode,
142
- pDistrict: bizplace?.district || bizplace.city,
143
- pState: bizplace.state || senderGeoArea.stateName,
144
- pCountry: bizplace.countryCode || senderGeoArea.countryCode,
145
- pLatitude: latitude,
146
- pLongitude: longitude,
147
-
148
- handoverMethod: 1
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
- let unprocessedOrderPackages: OrderPackage[] = releaseGood.orderPackages.filter(op => !op.parcelId)
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
- if (lmd.platform == 'SAPX' || lmd.platform == 'VIETTEL_POST') {
175
- if (lengthUnit == 'mm' || lengthUnit == 'm') {
176
- ;(items.width = (items.width / 10)?.toString()),
177
- (items.length = (items.length / 10)?.toString()),
178
- (items.height = (items.height / 10)?.toString())
179
- } else {
180
- ;(items.width = items.width?.toString()),
181
- (items.length = items.length?.toString()),
182
- (items.height = items.height?.toString())
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
- return items
186
- })
187
- }
188
- })
192
+ return items
193
+ })
194
+ }
195
+ })
189
196
 
190
- parcelsRequest.push(...packagesData)
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 res = await LastMileAPI.createParcel(
195
- { ...releaseGoods[0].lastMileDelivery, platform: 'lmdMiddleware' },
196
- parcelsRequest
197
- )
198
- for (let parcel of res) {
199
- let courier = parcel.transporter
200
- let transporter = courier.replace(/_/g, ' ')
201
- await tx
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
- .update({ name: parcel.refNo }, { parcelId: parcel.parcelId, transporter: transporter })
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
- const qb: SelectQueryBuilder<OrderPackage> = tx
207
- .getRepository(OrderPackage)
208
- .createQueryBuilder('op')
209
- .innerJoinAndSelect('op.releaseGood', 'rg')
210
- .innerJoinAndSelect('rg.domain', 'd')
211
- .innerJoinAndSelect('rg.bizplace', 'b')
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}`, {