@things-factory/worksheet-base 4.3.76 → 4.3.79-alpha.0

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 (64) hide show
  1. package/dist-server/controllers/outbound/packing-worksheet-controller.js +14 -2
  2. package/dist-server/controllers/outbound/packing-worksheet-controller.js.map +1 -1
  3. package/dist-server/controllers/outbound/picking-worksheet-controller.js +6 -9
  4. package/dist-server/controllers/outbound/picking-worksheet-controller.js.map +1 -1
  5. package/dist-server/controllers/worksheet-controller.js +14 -1
  6. package/dist-server/controllers/worksheet-controller.js.map +1 -1
  7. package/dist-server/graphql/resolvers/worksheet/confirm-cancellation-release-order.js +12 -0
  8. package/dist-server/graphql/resolvers/worksheet/confirm-cancellation-release-order.js.map +1 -1
  9. package/dist-server/graphql/resolvers/worksheet/generate-worksheet/generate-multiple-release-good-worksheet.js +3 -3
  10. package/dist-server/graphql/resolvers/worksheet/generate-worksheet/generate-multiple-release-good-worksheet.js.map +1 -1
  11. package/dist-server/graphql/resolvers/worksheet/generate-worksheet/generate-release-good-worksheet.js +4 -4
  12. package/dist-server/graphql/resolvers/worksheet/generate-worksheet/generate-release-good-worksheet.js.map +1 -1
  13. package/dist-server/graphql/resolvers/worksheet/loading/complete-loading.js +67 -28
  14. package/dist-server/graphql/resolvers/worksheet/loading/complete-loading.js.map +1 -1
  15. package/dist-server/graphql/resolvers/worksheet/packing/activate-packing.js +23 -8
  16. package/dist-server/graphql/resolvers/worksheet/packing/activate-packing.js.map +1 -1
  17. package/dist-server/graphql/resolvers/worksheet/packing/complete-packing.js +30 -7
  18. package/dist-server/graphql/resolvers/worksheet/packing/complete-packing.js.map +1 -1
  19. package/dist-server/graphql/resolvers/worksheet/packing/packing.js +23 -8
  20. package/dist-server/graphql/resolvers/worksheet/packing/packing.js.map +1 -1
  21. package/dist-server/graphql/resolvers/worksheet/packing/scan-product-packing.js +25 -8
  22. package/dist-server/graphql/resolvers/worksheet/packing/scan-product-packing.js.map +1 -1
  23. package/dist-server/graphql/resolvers/worksheet/packing-worksheet.js +112 -22
  24. package/dist-server/graphql/resolvers/worksheet/packing-worksheet.js.map +1 -1
  25. package/dist-server/graphql/resolvers/worksheet/pending-cancellation-release-order.js +87 -79
  26. package/dist-server/graphql/resolvers/worksheet/pending-cancellation-release-order.js.map +1 -1
  27. package/dist-server/graphql/resolvers/worksheet/picking/activate-picking.js +51 -25
  28. package/dist-server/graphql/resolvers/worksheet/picking/activate-picking.js.map +1 -1
  29. package/dist-server/graphql/resolvers/worksheet/picking/complete-batch-picking.js +2 -2
  30. package/dist-server/graphql/resolvers/worksheet/picking/complete-batch-picking.js.map +1 -1
  31. package/dist-server/graphql/resolvers/worksheet/picking/complete-picking.js +266 -140
  32. package/dist-server/graphql/resolvers/worksheet/picking/complete-picking.js.map +1 -1
  33. package/dist-server/graphql/resolvers/worksheet/putaway/complete-putaway.js +39 -14
  34. package/dist-server/graphql/resolvers/worksheet/putaway/complete-putaway.js.map +1 -1
  35. package/dist-server/graphql/resolvers/worksheet/reject-cancellation-release-order.js +92 -150
  36. package/dist-server/graphql/resolvers/worksheet/reject-cancellation-release-order.js.map +1 -1
  37. package/dist-server/graphql/types/worksheet/index.js +5 -2
  38. package/dist-server/graphql/types/worksheet/index.js.map +1 -1
  39. package/dist-server/graphql/types/worksheet/multiple-release-good-worksheet.js +11 -0
  40. package/dist-server/graphql/types/worksheet/multiple-release-good-worksheet.js.map +1 -0
  41. package/dist-server/utils/worksheet-util.js +3 -1
  42. package/dist-server/utils/worksheet-util.js.map +1 -1
  43. package/package.json +17 -17
  44. package/server/controllers/outbound/packing-worksheet-controller.ts +21 -2
  45. package/server/controllers/outbound/picking-worksheet-controller.ts +7 -11
  46. package/server/controllers/worksheet-controller.ts +25 -2
  47. package/server/graphql/resolvers/worksheet/confirm-cancellation-release-order.ts +13 -0
  48. package/server/graphql/resolvers/worksheet/generate-worksheet/generate-multiple-release-good-worksheet.ts +3 -7
  49. package/server/graphql/resolvers/worksheet/generate-worksheet/generate-release-good-worksheet.ts +5 -4
  50. package/server/graphql/resolvers/worksheet/loading/complete-loading.ts +77 -33
  51. package/server/graphql/resolvers/worksheet/packing/activate-packing.ts +26 -9
  52. package/server/graphql/resolvers/worksheet/packing/complete-packing.ts +34 -9
  53. package/server/graphql/resolvers/worksheet/packing/packing.ts +26 -9
  54. package/server/graphql/resolvers/worksheet/packing/scan-product-packing.ts +28 -9
  55. package/server/graphql/resolvers/worksheet/packing-worksheet.ts +128 -23
  56. package/server/graphql/resolvers/worksheet/pending-cancellation-release-order.ts +99 -94
  57. package/server/graphql/resolvers/worksheet/picking/activate-picking.ts +60 -30
  58. package/server/graphql/resolvers/worksheet/picking/complete-batch-picking.ts +2 -2
  59. package/server/graphql/resolvers/worksheet/picking/complete-picking.ts +288 -149
  60. package/server/graphql/resolvers/worksheet/putaway/complete-putaway.ts +45 -15
  61. package/server/graphql/resolvers/worksheet/reject-cancellation-release-order.ts +98 -213
  62. package/server/graphql/types/worksheet/index.ts +5 -2
  63. package/server/graphql/types/worksheet/multiple-release-good-worksheet.ts +8 -0
  64. package/server/utils/worksheet-util.ts +3 -1
@@ -1,6 +1,6 @@
1
1
  import { EntityManager, getManager } from 'typeorm'
2
2
 
3
- import { User } from '@things-factory/auth-base'
3
+ import { ApplicationType, User } from '@things-factory/auth-base'
4
4
  import { Bizplace, ContactPoint, getMyBizplace } from '@things-factory/biz-base'
5
5
  import { LastMileAPI, LastMileDelivery } from '@things-factory/integration-lmd'
6
6
  import { MarketplaceStore, MarketplaceTransporter } from '@things-factory/integration-marketplace'
@@ -81,171 +81,310 @@ export async function completePicking(
81
81
 
82
82
  await pickingWSCtrl.completePicking(releaseGoodNo)
83
83
 
84
- if (releaseGood.type == 'b2c') {
85
-
86
- const sellercraft: Sellercraft = await tx.getRepository(Sellercraft).findOne({ domain: releaseGood.bizplace.domain, status: SellercraftStatus.ACTIVE })
87
- const initSCOrderShipment = async (sellercraft) => {
88
- if (sellercraft) {
89
-
90
- await getManager().transaction(async txMgr => {
91
- const sellercraftCtrl: SellercraftController = new SellercraftController(txMgr, domain, user)
92
-
93
- if (!releaseGood?.packageId) {
94
- const orderProducts: OrderProduct[] = await tx.getRepository(OrderProduct).find({
95
- where: { releaseGood },
96
- relations: ['product', 'product.productDetails']
97
- })
98
- releaseGood = await sellercraftCtrl.packOrder(sellercraft, { ...releaseGood, orderProducts })
99
-
100
- if (releaseGood?.packageId) {
101
- await txMgr.getRepository(ReleaseGood).update({ id: releaseGood.id }, { packageId: releaseGood.packageId, updater: releaseGood.updater })
84
+ const orderSource: string = releaseGood.source
85
+ switch (orderSource) {
86
+ case ApplicationType.SELLERCRAFT:
87
+ const sellercraft: Sellercraft = await tx
88
+ .getRepository(Sellercraft)
89
+ .findOne({ domain: releaseGood.bizplace.domain, status: SellercraftStatus.ACTIVE })
90
+ const initSCOrderShipment = async sellercraft => {
91
+ if (sellercraft) {
92
+ await getManager().transaction(async txMgr => {
93
+ const sellercraftCtrl: SellercraftController = new SellercraftController(txMgr, domain, user)
94
+
95
+ if (!releaseGood?.packageId) {
96
+ const orderProducts: OrderProduct[] = await tx.getRepository(OrderProduct).find({
97
+ where: { releaseGood },
98
+ relations: ['product', 'product.productDetails']
99
+ })
100
+ releaseGood = await sellercraftCtrl.packOrder(sellercraft, { ...releaseGood, orderProducts })
101
+
102
+ if (releaseGood?.packageId) {
103
+ await txMgr
104
+ .getRepository(ReleaseGood)
105
+ .update({ id: releaseGood.id }, { packageId: releaseGood.packageId, updater: releaseGood.updater })
106
+ }
102
107
  }
103
- }
104
108
 
105
- await sellercraftCtrl.initiateOrderShipment(sellercraft, releaseGood)
106
- })
109
+ await sellercraftCtrl.initiateOrderShipment(sellercraft, releaseGood)
110
+ })
111
+ }
107
112
  }
108
- }
109
113
 
110
- // asynchronouly call to initiate sellercraft order shipment/ RTS
111
- initSCOrderShipment(sellercraft)
112
-
113
- const companyDomain: Domain = releaseGood.bizplace.company.domain
114
- let marketplaceOrder: MarketplaceOrder = await tx.getRepository(MarketplaceOrder).findOne({
115
- where: { orderNo: releaseGood.refNo, domain: companyDomain },
116
- relations: [
117
- 'marketplaceStore',
118
- 'marketplaceOrderItems',
119
- 'marketplaceOrderItems.marketplaceOrderShippingItems',
120
- 'marketplaceOrderItems.marketplaceOrderShippingItems.marketplaceOrderShipping'
121
- ]
122
- })
114
+ // asynchronouly call to initiate sellercraft order shipment/ RTS
115
+ initSCOrderShipment(sellercraft)
116
+ break
117
+
118
+ case ApplicationType.MMS:
119
+ const companyDomain: Domain = releaseGood.bizplace.company.domain
120
+ let marketplaceOrder: MarketplaceOrder = await tx.getRepository(MarketplaceOrder).findOne({
121
+ where: { orderNo: releaseGood.refNo, domain: companyDomain },
122
+ relations: [
123
+ 'marketplaceStore',
124
+ 'marketplaceOrderItems',
125
+ 'marketplaceOrderItems.marketplaceOrderShippingItems',
126
+ 'marketplaceOrderItems.marketplaceOrderShippingItems.marketplaceOrderShipping'
127
+ ]
128
+ })
123
129
 
124
- if (!sellercraft && marketplaceOrder) {
125
- const marketplaceStore: MarketplaceStore = marketplaceOrder.marketplaceStore
126
- let eTraxOption: boolean
130
+ if (marketplaceOrder) {
131
+ const marketplaceStore: MarketplaceStore = marketplaceOrder.marketplaceStore
132
+ let eTraxOption: boolean
127
133
 
128
- if (marketplaceStore.isAutoUpdateShipment) {
129
- const ecommerceCtrl: EcommerceController = new EcommerceController(tx, domain, user)
130
- await ecommerceCtrl.createOrderComment(marketplaceStore, marketplaceOrder, ORDER_STATUS.PACKING)
131
- }
132
-
133
- if (!marketplaceOrder)
134
- throw new Error('Failed to find ecommerce order, kindly contact our support team regarding this issue')
135
- eTraxOption = marketplaceOrder?.marketplaceStore.eTrax
136
-
137
- // if eTrax option is true
138
- if (eTraxOption) {
139
- const marketplaceOrderItems: MarketplaceOrderItem[] = marketplaceOrder.marketplaceOrderItems
140
-
141
- // access every marketplaceOrderItems for shipping information you need
142
- // trigger the controller from integration-lmd that trigger the API, build the parameters needed
143
- // for etrax didn't support multi awb per order
144
- const marketplaceOrderShippingItems: MarketplaceOrderShippingItem[] =
145
- marketplaceOrderItems[0].marketplaceOrderShippingItems
146
- const marketplaceOrderShipping: MarketplaceOrderShipping =
147
- marketplaceOrderShippingItems[0].marketplaceOrderShipping
148
- const lmd: LastMileDelivery = await tx.getRepository(LastMileDelivery).findOne({
149
- where: {
150
- domain,
151
- platform: 'eTrax'
152
- }
153
- })
154
-
155
- //Get which transporter to use
156
- const marketplaceTransporter: MarketplaceTransporter = await tx.getRepository(MarketplaceTransporter).findOne({
157
- where: { marketplaceStore: marketplaceOrder.marketplaceStore },
158
- relations: ['pickupTransporter', 'deliveryTransporter']
159
- })
160
-
161
- const resp = await LastMileAPI.createShipmentRequest(lmd, {
162
- orderNo: marketplaceOrder.orderNo,
163
- clientId: lmd.clientId,
164
- clientType: lmd.clientType,
165
- clientName: lmd.clientName,
166
- transporterId: marketplaceTransporter.pickupTransporter.transporterId,
167
- pickupName: warehouseContactPoint.name,
168
- pickupAddress1: warehouseContactPoint.address,
169
- pickupAddress2: warehouseContactPoint.address2,
170
- pickupPostcode: warehouseContactPoint.postCode,
171
- pickupState: warehouseContactPoint.state,
172
- pickupCity: warehouseContactPoint.city,
173
- pickupPhone: warehouseContactPoint.phone,
174
- pickupEmail: warehouseContactPoint.email,
175
- name: marketplaceOrderShipping?.attentionTo ? marketplaceOrderShipping.attentionTo.trim() : '',
176
- address1: marketplaceOrderShipping?.address1 ? marketplaceOrderShipping?.address1.trim() : '-',
177
- address2: marketplaceOrderShipping?.address2 ? marketplaceOrderShipping?.address2.trim() : '-',
178
- postCode: marketplaceOrderShipping?.postCode ? marketplaceOrderShipping?.postCode.trim() : '',
179
- city: marketplaceOrderShipping?.city ? marketplaceOrderShipping?.city.trim() : '',
180
- state: marketplaceOrderShipping?.state ? marketplaceOrderShipping?.state.trim() : '',
181
- phone: marketplaceOrderShipping.phone1 || '',
182
- email: marketplaceOrderShipping.email || '',
183
- attentionTo: marketplaceOrderShipping.attentionTo,
184
- quantity: marketplaceOrderItems.length
185
- })
186
-
187
- const delay = (ms: number) => {
188
- return new Promise(resolve => setTimeout(resolve, ms))
134
+ if (marketplaceStore.isAutoUpdateShipment) {
135
+ const ecommerceCtrl: EcommerceController = new EcommerceController(tx, domain, user)
136
+ await ecommerceCtrl.createOrderComment(marketplaceStore, marketplaceOrder, ORDER_STATUS.PACKING)
189
137
  }
190
138
 
191
- if (resp.Status === 'SUCCESS') {
192
- //Success
193
- let awbObtained = false
194
- let retry = 0
195
- while (!awbObtained) {
196
- const marketplaceOrder2: MarketplaceOrder = await tx.getRepository(MarketplaceOrder).findOne({
197
- where: { releaseOrderId: releaseGood.id },
198
- relations: [
199
- 'marketplaceStore',
200
- 'marketplaceOrderItems',
201
- 'marketplaceOrderItems.marketplaceOrderShippingItems',
202
- 'marketplaceOrderItems.marketplaceOrderShippingItems.marketplaceOrderShipping'
203
- ]
204
- })
205
- const orderShipping =
206
- marketplaceOrder2.marketplaceOrderItems[0].marketplaceOrderShippingItems[0].marketplaceOrderShipping
207
- if (orderShipping?.airwayBill) {
208
- awbObtained = true
139
+ if (!marketplaceOrder)
140
+ throw new Error('Failed to find ecommerce order, kindly contact our support team regarding this issue')
141
+ eTraxOption = marketplaceOrder?.marketplaceStore.eTrax
142
+
143
+ // if eTrax option is true
144
+ if (eTraxOption) {
145
+ const marketplaceOrderItems: MarketplaceOrderItem[] = marketplaceOrder.marketplaceOrderItems
146
+
147
+ // access every marketplaceOrderItems for shipping information you need
148
+ // trigger the controller from integration-lmd that trigger the API, build the parameters needed
149
+ // for etrax didn't support multi awb per order
150
+ const marketplaceOrderShippingItems: MarketplaceOrderShippingItem[] =
151
+ marketplaceOrderItems[0].marketplaceOrderShippingItems
152
+ const marketplaceOrderShipping: MarketplaceOrderShipping =
153
+ marketplaceOrderShippingItems[0].marketplaceOrderShipping
154
+ const lmd: LastMileDelivery = await tx.getRepository(LastMileDelivery).findOne({
155
+ where: {
156
+ domain,
157
+ platform: 'eTrax'
209
158
  }
210
- await delay(5000)
211
- //Timeout after 15sec
212
- if (++retry > 3) {
213
- break
159
+ })
160
+
161
+ //Get which transporter to use
162
+ const marketplaceTransporter: MarketplaceTransporter = await tx
163
+ .getRepository(MarketplaceTransporter)
164
+ .findOne({
165
+ where: { marketplaceStore: marketplaceOrder.marketplaceStore },
166
+ relations: ['pickupTransporter', 'deliveryTransporter']
167
+ })
168
+
169
+ const resp = await LastMileAPI.createShipmentRequest(lmd, {
170
+ orderNo: marketplaceOrder.orderNo,
171
+ clientId: lmd.clientId,
172
+ clientType: lmd.clientType,
173
+ clientName: lmd.clientName,
174
+ transporterId: marketplaceTransporter.pickupTransporter.transporterId,
175
+ pickupName: warehouseContactPoint.name,
176
+ pickupAddress1: warehouseContactPoint.address,
177
+ pickupAddress2: warehouseContactPoint.address2,
178
+ pickupPostcode: warehouseContactPoint.postCode,
179
+ pickupState: warehouseContactPoint.state,
180
+ pickupCity: warehouseContactPoint.city,
181
+ pickupPhone: warehouseContactPoint.phone,
182
+ pickupEmail: warehouseContactPoint.email,
183
+ name: marketplaceOrderShipping?.attentionTo ? marketplaceOrderShipping.attentionTo.trim() : '',
184
+ address1: marketplaceOrderShipping?.address1 ? marketplaceOrderShipping?.address1.trim() : '-',
185
+ address2: marketplaceOrderShipping?.address2 ? marketplaceOrderShipping?.address2.trim() : '-',
186
+ postCode: marketplaceOrderShipping?.postCode ? marketplaceOrderShipping?.postCode.trim() : '',
187
+ city: marketplaceOrderShipping?.city ? marketplaceOrderShipping?.city.trim() : '',
188
+ state: marketplaceOrderShipping?.state ? marketplaceOrderShipping?.state.trim() : '',
189
+ phone: marketplaceOrderShipping.phone1 || '',
190
+ email: marketplaceOrderShipping.email || '',
191
+ attentionTo: marketplaceOrderShipping.attentionTo,
192
+ quantity: marketplaceOrderItems.length
193
+ })
194
+
195
+ const delay = (ms: number) => {
196
+ return new Promise(resolve => setTimeout(resolve, ms))
197
+ }
198
+
199
+ if (resp.Status === 'SUCCESS') {
200
+ //Success
201
+ let awbObtained = false
202
+ let retry = 0
203
+ while (!awbObtained) {
204
+ const marketplaceOrder2: MarketplaceOrder = await tx.getRepository(MarketplaceOrder).findOne({
205
+ where: { releaseOrderId: releaseGood.id },
206
+ relations: [
207
+ 'marketplaceStore',
208
+ 'marketplaceOrderItems',
209
+ 'marketplaceOrderItems.marketplaceOrderShippingItems',
210
+ 'marketplaceOrderItems.marketplaceOrderShippingItems.marketplaceOrderShipping'
211
+ ]
212
+ })
213
+ const orderShipping =
214
+ marketplaceOrder2.marketplaceOrderItems[0].marketplaceOrderShippingItems[0].marketplaceOrderShipping
215
+ if (orderShipping?.airwayBill) {
216
+ awbObtained = true
217
+ }
218
+ await delay(5000)
219
+ //Timeout after 15sec
220
+ if (++retry > 3) {
221
+ break
222
+ }
214
223
  }
224
+ } else {
225
+ if (resp?.AWBurl && resp?.TrackingNo)
226
+ await tx
227
+ .getRepository(MarketplaceOrderShipping)
228
+ .update({ id: marketplaceOrderShipping.id }, { airwayBill: resp.AWBurl, trackingNo: resp.TrackingNo })
229
+ else throw resp
215
230
  }
216
- } else {
217
- if (resp?.AWBurl && resp?.TrackingNo)
218
- await tx
219
- .getRepository(MarketplaceOrderShipping)
220
- .update({ id: marketplaceOrderShipping.id }, { airwayBill: resp.AWBurl, trackingNo: resp.TrackingNo })
221
- else throw resp
222
231
  }
223
232
  }
224
- }
233
+ break
234
+
235
+ default:
236
+ break
225
237
  }
226
238
 
239
+ // if (releaseGood.type == 'b2c') {
240
+ // const sellercraft: Sellercraft = await tx
241
+ // .getRepository(Sellercraft)
242
+ // .findOne({ domain: releaseGood.bizplace.domain, status: SellercraftStatus.ACTIVE })
243
+
244
+ // const initSCOrderShipment = async sellercraft => {
245
+ // if (sellercraft) {
246
+ // await getManager().transaction(async txMgr => {
247
+ // const sellercraftCtrl: SellercraftController = new SellercraftController(txMgr, domain, user)
248
+
249
+ // if (!releaseGood?.packageId) {
250
+ // const orderProducts: OrderProduct[] = await tx.getRepository(OrderProduct).find({
251
+ // where: { releaseGood },
252
+ // relations: ['product', 'product.productDetails']
253
+ // })
254
+ // releaseGood = await sellercraftCtrl.packOrder(sellercraft, { ...releaseGood, orderProducts })
255
+
256
+ // if (releaseGood?.packageId) {
257
+ // await txMgr
258
+ // .getRepository(ReleaseGood)
259
+ // .update({ id: releaseGood.id }, { packageId: releaseGood.packageId, updater: releaseGood.updater })
260
+ // }
261
+ // }
262
+
263
+ // await sellercraftCtrl.initiateOrderShipment(sellercraft, releaseGood)
264
+ // })
265
+ // }
266
+ // }
267
+
268
+ // // asynchronouly call to initiate sellercraft order shipment/ RTS
269
+ // initSCOrderShipment(sellercraft)
270
+
271
+ // const companyDomain: Domain = releaseGood.bizplace.company.domain
272
+ // let marketplaceOrder: MarketplaceOrder = await tx.getRepository(MarketplaceOrder).findOne({
273
+ // where: { orderNo: releaseGood.refNo, domain: companyDomain },
274
+ // relations: [
275
+ // 'marketplaceStore',
276
+ // 'marketplaceOrderItems',
277
+ // 'marketplaceOrderItems.marketplaceOrderShippingItems',
278
+ // 'marketplaceOrderItems.marketplaceOrderShippingItems.marketplaceOrderShipping'
279
+ // ]
280
+ // })
281
+
282
+ // if (!sellercraft && marketplaceOrder) {
283
+ // const marketplaceStore: MarketplaceStore = marketplaceOrder.marketplaceStore
284
+ // let eTraxOption: boolean
285
+
286
+ // if (marketplaceStore.isAutoUpdateShipment) {
287
+ // const ecommerceCtrl: EcommerceController = new EcommerceController(tx, domain, user)
288
+ // await ecommerceCtrl.createOrderComment(marketplaceStore, marketplaceOrder, ORDER_STATUS.PACKING)
289
+ // }
290
+
291
+ // if (!marketplaceOrder)
292
+ // throw new Error('Failed to find ecommerce order, kindly contact our support team regarding this issue')
293
+ // eTraxOption = marketplaceOrder?.marketplaceStore.eTrax
294
+
295
+ // // if eTrax option is true
296
+ // if (eTraxOption) {
297
+ // const marketplaceOrderItems: MarketplaceOrderItem[] = marketplaceOrder.marketplaceOrderItems
298
+
299
+ // // access every marketplaceOrderItems for shipping information you need
300
+ // // trigger the controller from integration-lmd that trigger the API, build the parameters needed
301
+ // // for etrax didn't support multi awb per order
302
+ // const marketplaceOrderShippingItems: MarketplaceOrderShippingItem[] =
303
+ // marketplaceOrderItems[0].marketplaceOrderShippingItems
304
+ // const marketplaceOrderShipping: MarketplaceOrderShipping =
305
+ // marketplaceOrderShippingItems[0].marketplaceOrderShipping
306
+ // const lmd: LastMileDelivery = await tx.getRepository(LastMileDelivery).findOne({
307
+ // where: {
308
+ // domain,
309
+ // platform: 'eTrax'
310
+ // }
311
+ // })
312
+
313
+ // //Get which transporter to use
314
+ // const marketplaceTransporter: MarketplaceTransporter = await tx.getRepository(MarketplaceTransporter).findOne({
315
+ // where: { marketplaceStore: marketplaceOrder.marketplaceStore },
316
+ // relations: ['pickupTransporter', 'deliveryTransporter']
317
+ // })
318
+
319
+ // const resp = await LastMileAPI.createShipmentRequest(lmd, {
320
+ // orderNo: marketplaceOrder.orderNo,
321
+ // clientId: lmd.clientId,
322
+ // clientType: lmd.clientType,
323
+ // clientName: lmd.clientName,
324
+ // transporterId: marketplaceTransporter.pickupTransporter.transporterId,
325
+ // pickupName: warehouseContactPoint.name,
326
+ // pickupAddress1: warehouseContactPoint.address,
327
+ // pickupAddress2: warehouseContactPoint.address2,
328
+ // pickupPostcode: warehouseContactPoint.postCode,
329
+ // pickupState: warehouseContactPoint.state,
330
+ // pickupCity: warehouseContactPoint.city,
331
+ // pickupPhone: warehouseContactPoint.phone,
332
+ // pickupEmail: warehouseContactPoint.email,
333
+ // name: marketplaceOrderShipping?.attentionTo ? marketplaceOrderShipping.attentionTo.trim() : '',
334
+ // address1: marketplaceOrderShipping?.address1 ? marketplaceOrderShipping?.address1.trim() : '-',
335
+ // address2: marketplaceOrderShipping?.address2 ? marketplaceOrderShipping?.address2.trim() : '-',
336
+ // postCode: marketplaceOrderShipping?.postCode ? marketplaceOrderShipping?.postCode.trim() : '',
337
+ // city: marketplaceOrderShipping?.city ? marketplaceOrderShipping?.city.trim() : '',
338
+ // state: marketplaceOrderShipping?.state ? marketplaceOrderShipping?.state.trim() : '',
339
+ // phone: marketplaceOrderShipping.phone1 || '',
340
+ // email: marketplaceOrderShipping.email || '',
341
+ // attentionTo: marketplaceOrderShipping.attentionTo,
342
+ // quantity: marketplaceOrderItems.length
343
+ // })
344
+
345
+ // const delay = (ms: number) => {
346
+ // return new Promise(resolve => setTimeout(resolve, ms))
347
+ // }
348
+
349
+ // if (resp.Status === 'SUCCESS') {
350
+ // //Success
351
+ // let awbObtained = false
352
+ // let retry = 0
353
+ // while (!awbObtained) {
354
+ // const marketplaceOrder2: MarketplaceOrder = await tx.getRepository(MarketplaceOrder).findOne({
355
+ // where: { releaseOrderId: releaseGood.id },
356
+ // relations: [
357
+ // 'marketplaceStore',
358
+ // 'marketplaceOrderItems',
359
+ // 'marketplaceOrderItems.marketplaceOrderShippingItems',
360
+ // 'marketplaceOrderItems.marketplaceOrderShippingItems.marketplaceOrderShipping'
361
+ // ]
362
+ // })
363
+ // const orderShipping =
364
+ // marketplaceOrder2.marketplaceOrderItems[0].marketplaceOrderShippingItems[0].marketplaceOrderShipping
365
+ // if (orderShipping?.airwayBill) {
366
+ // awbObtained = true
367
+ // }
368
+ // await delay(5000)
369
+ // //Timeout after 15sec
370
+ // if (++retry > 3) {
371
+ // break
372
+ // }
373
+ // }
374
+ // } else {
375
+ // if (resp?.AWBurl && resp?.TrackingNo)
376
+ // await tx
377
+ // .getRepository(MarketplaceOrderShipping)
378
+ // .update({ id: marketplaceOrderShipping.id }, { airwayBill: resp.AWBurl, trackingNo: resp.TrackingNo })
379
+ // else throw resp
380
+ // }
381
+ // }
382
+ // }
383
+ // }
384
+
227
385
  if (releaseGood.packingOption) {
228
386
  const packingWSCtrl: PackingWorksheetController = new PackingWorksheetController(tx, domain, user)
229
-
230
- const directActivatePackingWorksheet: Setting = await tx.getRepository(Setting).findOne({
231
- where: { domain: domain, category: 'id-rule', name: 'enable-direct-activate-packing-worksheet' }
232
- })
233
- const partnerDirectActivatePackingWorksheetSetting: PartnerSetting = await tx
234
- .getRepository(PartnerSetting)
235
- .findOne({
236
- where: { setting: directActivatePackingWorksheet, domain: domain, partnerDomain: releaseGood.bizplace?.domain }
237
- })
238
-
239
- let packingWorksheet: Worksheet = await packingWSCtrl.generatePackingWorksheet(releaseGoodNo)
240
-
241
- if (directActivatePackingWorksheet != undefined && directActivatePackingWorksheet.value.toLowerCase() == 'true') {
242
- if (partnerDirectActivatePackingWorksheetSetting != undefined) {
243
- if (partnerDirectActivatePackingWorksheetSetting.value.toLowerCase() == 'true')
244
- await packingWSCtrl.activatePacking(packingWorksheet.name)
245
- } else {
246
- await packingWSCtrl.activatePacking(packingWorksheet.name)
247
- }
248
- }
387
+ await packingWSCtrl.generatePackingWorksheet(releaseGoodNo)
249
388
  } else {
250
389
  // Find Existing Loading Worksheet if any
251
390
  let existLoadingWorksheet: Worksheet = await tx.getRepository(Worksheet).findOne({
@@ -1,6 +1,6 @@
1
1
  import { EntityManager } from 'typeorm'
2
2
 
3
- import { User } from '@things-factory/auth-base'
3
+ import { ApplicationType, User } from '@things-factory/auth-base'
4
4
  import { MarketplaceStore } from '@things-factory/integration-marketplace'
5
5
  import { Sellercraft, SellercraftStatus } from '@things-factory/integration-sellercraft'
6
6
  import { ArrivalNotice } from '@things-factory/sales-base'
@@ -33,24 +33,54 @@ export const completePutawayResolver = {
33
33
  // search for any active marketplace connection
34
34
  const companyDomain: Domain = arrivalNotice.bizplace.company.domain
35
35
  const customerDomain: Domain = arrivalNotice.bizplace.domain
36
- const marketplaceStores: MarketplaceStore[] = await tx.getRepository(MarketplaceStore).find({
37
- where: { domain: companyDomain, status: 'ACTIVE', isAutoUpdateStockQty: true },
38
- relations: ['marketplaceDistributors']
39
- })
40
36
 
41
- const sellercraft: Sellercraft = await tx
42
- .getRepository(Sellercraft)
43
- .findOne({ domain: customerDomain, status: SellercraftStatus.ACTIVE })
37
+ const orderSource: string = arrivalNotice.source
38
+ switch (orderSource) {
39
+ case ApplicationType.SELLERCRAFT:
40
+ const sellercraft: Sellercraft = await tx
41
+ .getRepository(Sellercraft)
42
+ .findOne({ domain: customerDomain, status: SellercraftStatus.ACTIVE })
44
43
 
45
- if (sellercraft) {
46
- const sellercraftCtrl: SellercraftController = new SellercraftController(tx, domain, user)
47
- await sellercraftCtrl.registerProductInbound(sellercraft, arrivalNotice)
48
- }
44
+ if (sellercraft) {
45
+ const sellercraftCtrl: SellercraftController = new SellercraftController(tx, domain, user)
46
+ await sellercraftCtrl.registerProductInbound(sellercraft, arrivalNotice)
47
+ }
48
+ break
49
+
50
+ case ApplicationType.MMS:
51
+ const marketplaceStores: MarketplaceStore[] = await tx.getRepository(MarketplaceStore).find({
52
+ where: { domain: companyDomain, status: 'ACTIVE', isAutoUpdateStockQty: true },
53
+ relations: ['marketplaceDistributors']
54
+ })
55
+
56
+ if (marketplaceStores?.length && marketplaceStores.some(store => store.isAutoUpdateStockQty)) {
57
+ const ecommerceCtrl: EcommerceController = new EcommerceController(tx, domain, user)
58
+ await ecommerceCtrl.updateProductVariationStock(marketplaceStores, arrivalNotice.orderProducts, companyDomain)
59
+ }
60
+ break
49
61
 
50
- if (marketplaceStores?.length && marketplaceStores.some(store => store.isAutoUpdateStockQty)) {
51
- const ecommerceCtrl: EcommerceController = new EcommerceController(tx, domain, user)
52
- await ecommerceCtrl.updateProductVariationStock(marketplaceStores, arrivalNotice.orderProducts, companyDomain)
62
+ default:
63
+ break
53
64
  }
65
+
66
+ // const marketplaceStores: MarketplaceStore[] = await tx.getRepository(MarketplaceStore).find({
67
+ // where: { domain: companyDomain, status: 'ACTIVE', isAutoUpdateStockQty: true },
68
+ // relations: ['marketplaceDistributors']
69
+ // })
70
+
71
+ // const sellercraft: Sellercraft = await tx
72
+ // .getRepository(Sellercraft)
73
+ // .findOne({ domain: customerDomain, status: SellercraftStatus.ACTIVE })
74
+
75
+ // if (sellercraft) {
76
+ // const sellercraftCtrl: SellercraftController = new SellercraftController(tx, domain, user)
77
+ // await sellercraftCtrl.registerProductInbound(sellercraft, arrivalNotice)
78
+ // }
79
+
80
+ // if (marketplaceStores?.length && marketplaceStores.some(store => store.isAutoUpdateStockQty)) {
81
+ // const ecommerceCtrl: EcommerceController = new EcommerceController(tx, domain, user)
82
+ // await ecommerceCtrl.updateProductVariationStock(marketplaceStores, arrivalNotice.orderProducts, companyDomain)
83
+ // }
54
84
  }
55
85
  }
56
86