@things-factory/worksheet-base 4.3.82 → 4.3.87

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 (97) hide show
  1. package/dist-server/controllers/inbound/unloading-worksheet-controller.js +49 -49
  2. package/dist-server/controllers/inbound/unloading-worksheet-controller.js.map +1 -1
  3. package/dist-server/controllers/inspect/cycle-count-worksheet-controller.js +4 -2
  4. package/dist-server/controllers/inspect/cycle-count-worksheet-controller.js.map +1 -1
  5. package/dist-server/controllers/outbound/loading-worksheet-controller.js +4 -10
  6. package/dist-server/controllers/outbound/loading-worksheet-controller.js.map +1 -1
  7. package/dist-server/controllers/outbound/packing-worksheet-controller.js +20 -22
  8. package/dist-server/controllers/outbound/packing-worksheet-controller.js.map +1 -1
  9. package/dist-server/controllers/outbound/picking-worksheet-controller.js +154 -71
  10. package/dist-server/controllers/outbound/picking-worksheet-controller.js.map +1 -1
  11. package/dist-server/controllers/outbound/sorting-worksheet-controller.js +14 -12
  12. package/dist-server/controllers/outbound/sorting-worksheet-controller.js.map +1 -1
  13. package/dist-server/controllers/vas/vas-worksheet-controller.js +2 -1
  14. package/dist-server/controllers/vas/vas-worksheet-controller.js.map +1 -1
  15. package/dist-server/controllers/worksheet-controller.js +37 -2
  16. package/dist-server/controllers/worksheet-controller.js.map +1 -1
  17. package/dist-server/entities/worksheet-detail.js +2 -1
  18. package/dist-server/entities/worksheet-detail.js.map +1 -1
  19. package/dist-server/graphql/resolvers/worksheet/batch-picking-worksheet.js +0 -6
  20. package/dist-server/graphql/resolvers/worksheet/batch-picking-worksheet.js.map +1 -1
  21. package/dist-server/graphql/resolvers/worksheet/confirm-cancellation-release-order.js +2 -1
  22. package/dist-server/graphql/resolvers/worksheet/confirm-cancellation-release-order.js.map +1 -1
  23. package/dist-server/graphql/resolvers/worksheet/cycle-count-adjustment.js +6 -6
  24. package/dist-server/graphql/resolvers/worksheet/cycle-count-adjustment.js.map +1 -1
  25. package/dist-server/graphql/resolvers/worksheet/inventories-by-pallet.js +1 -2
  26. package/dist-server/graphql/resolvers/worksheet/inventories-by-pallet.js.map +1 -1
  27. package/dist-server/graphql/resolvers/worksheet/loading/complete-loading.js +28 -67
  28. package/dist-server/graphql/resolvers/worksheet/loading/complete-loading.js.map +1 -1
  29. package/dist-server/graphql/resolvers/worksheet/packing/activate-packing.js +8 -23
  30. package/dist-server/graphql/resolvers/worksheet/packing/activate-packing.js.map +1 -1
  31. package/dist-server/graphql/resolvers/worksheet/packing/complete-packing.js +7 -30
  32. package/dist-server/graphql/resolvers/worksheet/packing/complete-packing.js.map +1 -1
  33. package/dist-server/graphql/resolvers/worksheet/packing/packing.js +8 -23
  34. package/dist-server/graphql/resolvers/worksheet/packing/packing.js.map +1 -1
  35. package/dist-server/graphql/resolvers/worksheet/packing/scan-product-packing.js +8 -25
  36. package/dist-server/graphql/resolvers/worksheet/packing/scan-product-packing.js.map +1 -1
  37. package/dist-server/graphql/resolvers/worksheet/packing-worksheet.js +12 -59
  38. package/dist-server/graphql/resolvers/worksheet/packing-worksheet.js.map +1 -1
  39. package/dist-server/graphql/resolvers/worksheet/picking/activate-picking.js +25 -51
  40. package/dist-server/graphql/resolvers/worksheet/picking/activate-picking.js.map +1 -1
  41. package/dist-server/graphql/resolvers/worksheet/picking/complete-batch-picking.js +2 -2
  42. package/dist-server/graphql/resolvers/worksheet/picking/complete-batch-picking.js.map +1 -1
  43. package/dist-server/graphql/resolvers/worksheet/picking/complete-picking.js +118 -262
  44. package/dist-server/graphql/resolvers/worksheet/picking/complete-picking.js.map +1 -1
  45. package/dist-server/graphql/resolvers/worksheet/picking/fetch-and-assign-picking-task.js +38 -36
  46. package/dist-server/graphql/resolvers/worksheet/picking/fetch-and-assign-picking-task.js.map +1 -1
  47. package/dist-server/graphql/resolvers/worksheet/picking/scan-product-picking.js +4 -7
  48. package/dist-server/graphql/resolvers/worksheet/picking/scan-product-picking.js.map +1 -1
  49. package/dist-server/graphql/resolvers/worksheet/picking-worksheet.js +2 -3
  50. package/dist-server/graphql/resolvers/worksheet/picking-worksheet.js.map +1 -1
  51. package/dist-server/graphql/resolvers/worksheet/proceed-extra-products.js +4 -6
  52. package/dist-server/graphql/resolvers/worksheet/proceed-extra-products.js.map +1 -1
  53. package/dist-server/graphql/resolvers/worksheet/putaway/complete-putaway.js +14 -39
  54. package/dist-server/graphql/resolvers/worksheet/putaway/complete-putaway.js.map +1 -1
  55. package/dist-server/graphql/resolvers/worksheet/transfer.js +9 -9
  56. package/dist-server/graphql/resolvers/worksheet/transfer.js.map +1 -1
  57. package/dist-server/graphql/resolvers/worksheet/vas-transactions/common-utils.js +17 -17
  58. package/dist-server/graphql/resolvers/worksheet/vas-transactions/common-utils.js.map +1 -1
  59. package/dist-server/graphql/resolvers/worksheet-detail/regenerate-release-good-worksheet-details.js +4 -4
  60. package/dist-server/graphql/resolvers/worksheet-detail/regenerate-release-good-worksheet-details.js.map +1 -1
  61. package/dist-server/graphql/types/worksheet-detail/index.js +0 -1
  62. package/dist-server/graphql/types/worksheet-detail/index.js.map +1 -1
  63. package/dist-server/utils/inventory-util.js +98 -1
  64. package/dist-server/utils/inventory-util.js.map +1 -1
  65. package/package.json +17 -17
  66. package/server/controllers/inbound/unloading-worksheet-controller.ts +70 -49
  67. package/server/controllers/inspect/cycle-count-worksheet-controller.ts +4 -2
  68. package/server/controllers/outbound/loading-worksheet-controller.ts +3 -9
  69. package/server/controllers/outbound/packing-worksheet-controller.ts +31 -23
  70. package/server/controllers/outbound/picking-worksheet-controller.ts +219 -88
  71. package/server/controllers/outbound/sorting-worksheet-controller.ts +12 -12
  72. package/server/controllers/vas/vas-worksheet-controller.ts +2 -2
  73. package/server/controllers/worksheet-controller.ts +49 -5
  74. package/server/entities/worksheet-detail.ts +5 -0
  75. package/server/graphql/resolvers/worksheet/batch-picking-worksheet.ts +0 -6
  76. package/server/graphql/resolvers/worksheet/confirm-cancellation-release-order.ts +2 -1
  77. package/server/graphql/resolvers/worksheet/cycle-count-adjustment.ts +2 -2
  78. package/server/graphql/resolvers/worksheet/inventories-by-pallet.ts +1 -3
  79. package/server/graphql/resolvers/worksheet/loading/complete-loading.ts +33 -77
  80. package/server/graphql/resolvers/worksheet/packing/activate-packing.ts +9 -26
  81. package/server/graphql/resolvers/worksheet/packing/complete-packing.ts +9 -34
  82. package/server/graphql/resolvers/worksheet/packing/packing.ts +9 -26
  83. package/server/graphql/resolvers/worksheet/packing/scan-product-packing.ts +9 -28
  84. package/server/graphql/resolvers/worksheet/packing-worksheet.ts +13 -68
  85. package/server/graphql/resolvers/worksheet/picking/activate-picking.ts +30 -60
  86. package/server/graphql/resolvers/worksheet/picking/complete-batch-picking.ts +2 -2
  87. package/server/graphql/resolvers/worksheet/picking/complete-picking.ts +130 -288
  88. package/server/graphql/resolvers/worksheet/picking/fetch-and-assign-picking-task.ts +42 -41
  89. package/server/graphql/resolvers/worksheet/picking/scan-product-picking.ts +10 -30
  90. package/server/graphql/resolvers/worksheet/picking-worksheet.ts +2 -3
  91. package/server/graphql/resolvers/worksheet/proceed-extra-products.ts +4 -5
  92. package/server/graphql/resolvers/worksheet/putaway/complete-putaway.ts +15 -45
  93. package/server/graphql/resolvers/worksheet/transfer.ts +16 -18
  94. package/server/graphql/resolvers/worksheet/vas-transactions/common-utils.ts +2 -3
  95. package/server/graphql/resolvers/worksheet-detail/regenerate-release-good-worksheet-details.ts +1 -4
  96. package/server/graphql/types/worksheet-detail/index.ts +0 -1
  97. package/server/utils/inventory-util.ts +126 -1
@@ -1,7 +1,8 @@
1
1
  import { EntityManager } from 'typeorm'
2
2
 
3
- import { ApplicationType, User } from '@things-factory/auth-base'
3
+ import { User } from '@things-factory/auth-base'
4
4
  import { MarketplaceStore } from '@things-factory/integration-marketplace'
5
+ import { Sellercraft, SellercraftStatus } from '@things-factory/integration-sellercraft'
5
6
  import { MarketplaceOrder } from '@things-factory/marketplace-base'
6
7
  import { ORDER_STATUS, ReleaseGood } from '@things-factory/sales-base'
7
8
  import { Domain } from '@things-factory/shell'
@@ -26,73 +27,42 @@ export async function activatePicking(
26
27
  const worksheet = await worksheetController.activatePicking(worksheetNo)
27
28
  const companyDomain: Domain = worksheet?.bizplace.company.domain
28
29
 
29
- let releaseGood: ReleaseGood = worksheet.releaseGood
30
+ // find for any existing marketplace store connections
31
+ const marketplaceStores: MarketplaceStore[] = await tx.getRepository(MarketplaceStore).find({
32
+ where: { domain: companyDomain, status: 'ACTIVE', isAutoUpdateStockQty: true },
33
+ relations: ['marketplaceDistributors']
34
+ })
30
35
 
31
- const orderSource: string = releaseGood.source
32
- switch (orderSource) {
33
- case ApplicationType.MMS:
34
- // find for any existing marketplace store connections
35
- const marketplaceStores: MarketplaceStore[] = await tx.getRepository(MarketplaceStore).find({
36
- where: { domain: companyDomain, status: 'ACTIVE', isAutoUpdateStockQty: true },
37
- relations: ['marketplaceDistributors']
38
- })
36
+ let releaseGood: ReleaseGood = worksheet.releaseGood
39
37
 
40
- if (marketplaceStores?.length) {
41
- if (marketplaceStores.some(store => store.isAutoUpdateStockQty)) {
42
- const worksheetDetails = worksheet.worksheetDetails
43
- let orderInventories: any[] = worksheetDetails.map(wsd => wsd.targetInventory)
44
- const ecommerceCtrl: EcommerceController = new EcommerceController(tx, domain, user)
45
- await ecommerceCtrl.updateProductVariationStock(marketplaceStores, orderInventories, companyDomain)
46
- }
38
+ if (releaseGood.type === 'b2c') {
39
+ const sellercraft: Sellercraft = await tx
40
+ .getRepository(Sellercraft)
41
+ .findOne({ domain: worksheet.bizplace.domain, status: SellercraftStatus.ACTIVE })
42
+
43
+ if (marketplaceStores?.length && !sellercraft) {
44
+ if (marketplaceStores.some(store => store.isAutoUpdateStockQty)) {
45
+ const worksheetDetails = worksheet.worksheetDetails
46
+ let orderInventories: any[] = worksheetDetails.map(wsd => wsd.targetInventory)
47
+ const ecommerceCtrl: EcommerceController = new EcommerceController(tx, domain, user)
48
+ await ecommerceCtrl.updateProductVariationStock(marketplaceStores, orderInventories, companyDomain)
49
+ }
47
50
 
48
- const marketplaceOrder: MarketplaceOrder = await tx.getRepository(MarketplaceOrder).findOne({
49
- where: { orderNo: releaseGood.refNo, domain: companyDomain },
50
- relations: ['marketplaceStore']
51
- })
51
+ const marketplaceOrder: MarketplaceOrder = await tx.getRepository(MarketplaceOrder).findOne({
52
+ where: { orderNo: releaseGood.refNo, domain: companyDomain },
53
+ relations: ['marketplaceStore']
54
+ })
52
55
 
53
- if (marketplaceOrder) {
54
- const marketplaceStore: MarketplaceStore = marketplaceOrder.marketplaceStore
56
+ if (marketplaceOrder) {
57
+ const marketplaceStore: MarketplaceStore = marketplaceOrder.marketplaceStore
55
58
 
56
- if (marketplaceStore.isAutoUpdateShipment) {
57
- const ecommerceCtrl: EcommerceController = new EcommerceController(tx, domain, user)
58
- await ecommerceCtrl.createOrderComment(marketplaceStore, marketplaceOrder, ORDER_STATUS.PICKING)
59
- }
59
+ if (marketplaceStore.isAutoUpdateShipment) {
60
+ const ecommerceCtrl: EcommerceController = new EcommerceController(tx, domain, user)
61
+ await ecommerceCtrl.createOrderComment(marketplaceStore, marketplaceOrder, ORDER_STATUS.PICKING)
60
62
  }
61
63
  }
62
- break
63
-
64
- default:
65
- break
64
+ }
66
65
  }
67
66
 
68
- // if (releaseGood.type === 'b2c') {
69
- // const sellercraft: Sellercraft = await tx
70
- // .getRepository(Sellercraft)
71
- // .findOne({ domain: worksheet.bizplace.domain, status: SellercraftStatus.ACTIVE })
72
-
73
- // if (marketplaceStores?.length && !sellercraft) {
74
- // if (marketplaceStores.some(store => store.isAutoUpdateStockQty)) {
75
- // const worksheetDetails = worksheet.worksheetDetails
76
- // let orderInventories: any[] = worksheetDetails.map(wsd => wsd.targetInventory)
77
- // const ecommerceCtrl: EcommerceController = new EcommerceController(tx, domain, user)
78
- // await ecommerceCtrl.updateProductVariationStock(marketplaceStores, orderInventories, companyDomain)
79
- // }
80
-
81
- // const marketplaceOrder: MarketplaceOrder = await tx.getRepository(MarketplaceOrder).findOne({
82
- // where: { orderNo: releaseGood.refNo, domain: companyDomain },
83
- // relations: ['marketplaceStore']
84
- // })
85
-
86
- // if (marketplaceOrder) {
87
- // const marketplaceStore: MarketplaceStore = marketplaceOrder.marketplaceStore
88
-
89
- // if (marketplaceStore.isAutoUpdateShipment) {
90
- // const ecommerceCtrl: EcommerceController = new EcommerceController(tx, domain, user)
91
- // await ecommerceCtrl.createOrderComment(marketplaceStore, marketplaceOrder, ORDER_STATUS.PICKING)
92
- // }
93
- // }
94
- // }
95
- // }
96
-
97
67
  return worksheet
98
68
  }
@@ -69,7 +69,7 @@ export async function completeBatchPicking(
69
69
 
70
70
  let foundReleaseGood: ReleaseGood = await tx.getRepository(ReleaseGood).findOne({
71
71
  where: { id: releaseGood.id },
72
- relations: ['orderProducts', 'orderProducts.product']
72
+ relations: ['orderProducts', 'orderProducts.product', 'orderProducts.product.productDetails']
73
73
  })
74
74
 
75
75
  if (!foundReleaseGood?.packageId) {
@@ -112,7 +112,7 @@ export async function completeBatchPicking(
112
112
  })
113
113
 
114
114
  // loop to generate packing worksheet
115
- for (let i: number = 0; i < uniqueRoNo.length; i++) {
115
+ for (var i: number = 0; i < uniqueRoNo.length; i++) {
116
116
  const releaseGoodNo: string = uniqueRoNo[i]
117
117
  const packingWSCtrl: PackingWorksheetController = new PackingWorksheetController(tx, domain, user)
118
118
  await packingWSCtrl.generatePackingWorksheet(releaseGoodNo)
@@ -1,6 +1,6 @@
1
1
  import { EntityManager, getManager } from 'typeorm'
2
2
 
3
- import { ApplicationType, User } from '@things-factory/auth-base'
3
+ import { 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,307 +81,149 @@ export async function completePicking(
81
81
 
82
82
  await pickingWSCtrl.completePicking(releaseGoodNo)
83
83
 
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
- }
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 })
107
102
  }
103
+ }
108
104
 
109
- await sellercraftCtrl.initiateOrderShipment(sellercraft, releaseGood)
110
- })
111
- }
105
+ await sellercraftCtrl.initiateOrderShipment(sellercraft, releaseGood)
106
+ })
112
107
  }
108
+ }
113
109
 
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
- })
129
-
130
- if (marketplaceOrder) {
131
- const marketplaceStore: MarketplaceStore = marketplaceOrder.marketplaceStore
132
- let eTraxOption: boolean
133
-
134
- if (marketplaceStore.isAutoUpdateShipment) {
135
- const ecommerceCtrl: EcommerceController = new EcommerceController(tx, domain, user)
136
- await ecommerceCtrl.createOrderComment(marketplaceStore, marketplaceOrder, ORDER_STATUS.PACKING)
137
- }
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
+ })
138
123
 
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'
158
- }
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
- })
124
+ if (!sellercraft && marketplaceOrder) {
125
+ const marketplaceStore: MarketplaceStore = marketplaceOrder.marketplaceStore
126
+ let eTraxOption: boolean
168
127
 
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))
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'
197
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))
189
+ }
198
190
 
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
- }
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
209
+ }
210
+ await delay(5000)
211
+ //Timeout after 15sec
212
+ if (++retry > 3) {
213
+ break
223
214
  }
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
230
215
  }
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
231
222
  }
232
223
  }
233
- break
234
-
235
- default:
236
- break
224
+ }
237
225
  }
238
226
 
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
-
385
227
  if (releaseGood.packingOption) {
386
228
  const packingWSCtrl: PackingWorksheetController = new PackingWorksheetController(tx, domain, user)
387
229
  await packingWSCtrl.generatePackingWorksheet(releaseGoodNo)