@things-factory/worksheet-base 4.3.80-alpha.4 → 4.3.81
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/inbound/unloading-worksheet-controller.js +49 -49
- package/dist-server/controllers/inbound/unloading-worksheet-controller.js.map +1 -1
- package/dist-server/controllers/inspect/cycle-count-worksheet-controller.js +4 -2
- package/dist-server/controllers/inspect/cycle-count-worksheet-controller.js.map +1 -1
- package/dist-server/controllers/outbound/loading-worksheet-controller.js +4 -10
- package/dist-server/controllers/outbound/loading-worksheet-controller.js.map +1 -1
- package/dist-server/controllers/outbound/packing-worksheet-controller.js +20 -22
- package/dist-server/controllers/outbound/packing-worksheet-controller.js.map +1 -1
- package/dist-server/controllers/outbound/picking-worksheet-controller.js +39 -34
- package/dist-server/controllers/outbound/picking-worksheet-controller.js.map +1 -1
- package/dist-server/controllers/outbound/sorting-worksheet-controller.js +14 -12
- package/dist-server/controllers/outbound/sorting-worksheet-controller.js.map +1 -1
- package/dist-server/controllers/vas/vas-worksheet-controller.js +2 -1
- package/dist-server/controllers/vas/vas-worksheet-controller.js.map +1 -1
- package/dist-server/controllers/worksheet-controller.js +3 -2
- package/dist-server/controllers/worksheet-controller.js.map +1 -1
- package/dist-server/entities/warehouse-bizplace-onhand-inventory.js.map +1 -1
- package/dist-server/entities/worksheet-detail.js.map +1 -1
- package/dist-server/entities/worksheet-movement.js.map +1 -1
- package/dist-server/entities/worksheet.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/batch-picking-worksheet.js +0 -6
- package/dist-server/graphql/resolvers/worksheet/batch-picking-worksheet.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/confirm-cancellation-release-order.js +2 -1
- package/dist-server/graphql/resolvers/worksheet/confirm-cancellation-release-order.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/cycle-count-adjustment.js +6 -6
- package/dist-server/graphql/resolvers/worksheet/cycle-count-adjustment.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/inventories-by-pallet.js +1 -2
- package/dist-server/graphql/resolvers/worksheet/inventories-by-pallet.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/loading/complete-loading.js +28 -67
- package/dist-server/graphql/resolvers/worksheet/loading/complete-loading.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/packing/activate-packing.js +8 -23
- package/dist-server/graphql/resolvers/worksheet/packing/activate-packing.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/packing/complete-packing.js +7 -30
- package/dist-server/graphql/resolvers/worksheet/packing/complete-packing.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/packing/packing.js +8 -23
- package/dist-server/graphql/resolvers/worksheet/packing/packing.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/packing/scan-product-packing.js +8 -25
- package/dist-server/graphql/resolvers/worksheet/packing/scan-product-packing.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/packing-worksheet.js +12 -59
- package/dist-server/graphql/resolvers/worksheet/packing-worksheet.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/picking/activate-picking.js +25 -51
- package/dist-server/graphql/resolvers/worksheet/picking/activate-picking.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/picking/complete-batch-picking.js +2 -2
- package/dist-server/graphql/resolvers/worksheet/picking/complete-batch-picking.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/picking/complete-picking.js +118 -262
- package/dist-server/graphql/resolvers/worksheet/picking/complete-picking.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/picking-worksheet.js +2 -3
- package/dist-server/graphql/resolvers/worksheet/picking-worksheet.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/proceed-extra-products.js +4 -6
- package/dist-server/graphql/resolvers/worksheet/proceed-extra-products.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/putaway/complete-putaway.js +14 -39
- package/dist-server/graphql/resolvers/worksheet/putaway/complete-putaway.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/transfer.js +9 -9
- package/dist-server/graphql/resolvers/worksheet/transfer.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/vas-transactions/common-utils.js +17 -17
- package/dist-server/graphql/resolvers/worksheet/vas-transactions/common-utils.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet-detail/regenerate-release-good-worksheet-details.js +4 -4
- package/dist-server/graphql/resolvers/worksheet-detail/regenerate-release-good-worksheet-details.js.map +1 -1
- package/dist-server/graphql/types/worksheet-detail/index.js +0 -1
- package/dist-server/graphql/types/worksheet-detail/index.js.map +1 -1
- package/dist-server/utils/inventory-util.js +98 -1
- package/dist-server/utils/inventory-util.js.map +1 -1
- package/package.json +17 -17
- package/server/controllers/inbound/unloading-worksheet-controller.ts +70 -49
- package/server/controllers/inspect/cycle-count-worksheet-controller.ts +4 -2
- package/server/controllers/outbound/loading-worksheet-controller.ts +3 -9
- package/server/controllers/outbound/packing-worksheet-controller.ts +31 -23
- package/server/controllers/outbound/picking-worksheet-controller.ts +51 -34
- package/server/controllers/outbound/sorting-worksheet-controller.ts +12 -12
- package/server/controllers/vas/vas-worksheet-controller.ts +2 -2
- package/server/controllers/worksheet-controller.ts +6 -4
- package/server/graphql/resolvers/worksheet/batch-picking-worksheet.ts +0 -6
- package/server/graphql/resolvers/worksheet/confirm-cancellation-release-order.ts +2 -1
- package/server/graphql/resolvers/worksheet/cycle-count-adjustment.ts +2 -2
- package/server/graphql/resolvers/worksheet/inventories-by-pallet.ts +1 -3
- package/server/graphql/resolvers/worksheet/loading/complete-loading.ts +33 -77
- package/server/graphql/resolvers/worksheet/packing/activate-packing.ts +9 -26
- package/server/graphql/resolvers/worksheet/packing/complete-packing.ts +9 -34
- package/server/graphql/resolvers/worksheet/packing/packing.ts +9 -26
- package/server/graphql/resolvers/worksheet/packing/scan-product-packing.ts +9 -28
- package/server/graphql/resolvers/worksheet/packing-worksheet.ts +13 -68
- package/server/graphql/resolvers/worksheet/picking/activate-picking.ts +30 -60
- package/server/graphql/resolvers/worksheet/picking/complete-batch-picking.ts +2 -2
- package/server/graphql/resolvers/worksheet/picking/complete-picking.ts +130 -288
- package/server/graphql/resolvers/worksheet/picking-worksheet.ts +2 -3
- package/server/graphql/resolvers/worksheet/proceed-extra-products.ts +4 -5
- package/server/graphql/resolvers/worksheet/putaway/complete-putaway.ts +15 -45
- package/server/graphql/resolvers/worksheet/transfer.ts +16 -18
- package/server/graphql/resolvers/worksheet/vas-transactions/common-utils.ts +2 -3
- package/server/graphql/resolvers/worksheet-detail/regenerate-release-good-worksheet-details.ts +1 -4
- package/server/graphql/types/worksheet-detail/index.ts +0 -1
- package/server/utils/inventory-util.ts +126 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { EntityManager, getManager } from 'typeorm'
|
|
2
2
|
|
|
3
|
-
import {
|
|
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
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
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
|
-
|
|
110
|
-
|
|
111
|
-
}
|
|
105
|
+
await sellercraftCtrl.initiateOrderShipment(sellercraft, releaseGood)
|
|
106
|
+
})
|
|
112
107
|
}
|
|
108
|
+
}
|
|
113
109
|
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
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
|
-
|
|
140
|
-
|
|
141
|
-
|
|
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
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
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
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
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
|
-
|
|
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)
|
|
@@ -76,7 +76,6 @@ export async function pickingWorksheet(
|
|
|
76
76
|
.leftJoinAndSelect('T_INV.binLocation', 'BIN_LOC')
|
|
77
77
|
.leftJoinAndSelect('T_INV.inventory', 'INV')
|
|
78
78
|
.leftJoinAndSelect('T_INV.product', 'PROD')
|
|
79
|
-
.leftJoinAndSelect('T_INV.productDetail', 'PROD_DET')
|
|
80
79
|
.leftJoinAndSelect('INV.location', 'LOC')
|
|
81
80
|
|
|
82
81
|
if (locationSortingRules?.length > 0) {
|
|
@@ -115,8 +114,8 @@ export async function pickingWorksheet(
|
|
|
115
114
|
const inventoryChangesCount: number = await tx.getRepository(InventoryChange).count({
|
|
116
115
|
where: {
|
|
117
116
|
inventory: inventory.id,
|
|
118
|
-
status:
|
|
119
|
-
transactionType:
|
|
117
|
+
status: "PENDING",
|
|
118
|
+
transactionType: "MISSING"
|
|
120
119
|
},
|
|
121
120
|
relations: ['inventory', 'product']
|
|
122
121
|
})
|
|
@@ -73,7 +73,7 @@ export const proceedExtraProductsResolver = {
|
|
|
73
73
|
if (editedApprovedProducts?.length > 0) {
|
|
74
74
|
editedApprovedProducts.map((editedApprovedProd: OrderProduct) => {
|
|
75
75
|
const selectedOrderProduct: OrderProduct = storedOrderProducts.find(
|
|
76
|
-
(op: OrderProduct) => op.
|
|
76
|
+
(op: OrderProduct) => op.id === editedApprovedProd.id
|
|
77
77
|
)
|
|
78
78
|
|
|
79
79
|
updatedOrderProducts.push({
|
|
@@ -115,7 +115,7 @@ export const proceedExtraProductsResolver = {
|
|
|
115
115
|
if (addedApprovedProducts?.length > 0) {
|
|
116
116
|
addedApprovedProducts.map((addedApprovedProd: OrderProduct) => {
|
|
117
117
|
const selectedOrderProduct: OrderProduct = storedOrderProducts.find(
|
|
118
|
-
(op: OrderProduct) => op.
|
|
118
|
+
(op: OrderProduct) => op.id === addedApprovedProd.id
|
|
119
119
|
)
|
|
120
120
|
updatedOrderProducts.push({
|
|
121
121
|
...selectedOrderProduct,
|
|
@@ -173,7 +173,7 @@ export const proceedExtraProductsResolver = {
|
|
|
173
173
|
if (editedRejectedProducts?.length > 0) {
|
|
174
174
|
editedRejectedProducts = editedRejectedProducts.map((editedRejectProduct: OrderProduct) => {
|
|
175
175
|
const selectedOrderProduct: OrderProduct = storedOrderProducts.find(
|
|
176
|
-
(op: OrderProduct) => op.
|
|
176
|
+
(op: OrderProduct) => op.id === editedRejectProduct.id
|
|
177
177
|
)
|
|
178
178
|
|
|
179
179
|
return {
|
|
@@ -194,8 +194,7 @@ export const proceedExtraProductsResolver = {
|
|
|
194
194
|
let deleteOrderProducts: OrderProduct[] = []
|
|
195
195
|
addedRejectedProducts.map(rejectedOp => {
|
|
196
196
|
const selectedOrderProduct: OrderProduct[] = storedOrderProducts.find(
|
|
197
|
-
|
|
198
|
-
(op: OrderProduct) => op.productDetailId === rejectedOp.productDetailId
|
|
197
|
+
(op: OrderProduct) => op.id === rejectedOp.id
|
|
199
198
|
)
|
|
200
199
|
deleteOrderProducts.push(selectedOrderProduct)
|
|
201
200
|
})
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { EntityManager } from 'typeorm'
|
|
2
2
|
|
|
3
|
-
import {
|
|
3
|
+
import { 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,54 +33,24 @@ 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
|
+
})
|
|
36
40
|
|
|
37
|
-
const
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
const sellercraft: Sellercraft = await tx
|
|
41
|
-
.getRepository(Sellercraft)
|
|
42
|
-
.findOne({ domain: customerDomain, status: SellercraftStatus.ACTIVE })
|
|
43
|
-
|
|
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
|
|
41
|
+
const sellercraft: Sellercraft = await tx
|
|
42
|
+
.getRepository(Sellercraft)
|
|
43
|
+
.findOne({ domain: customerDomain, status: SellercraftStatus.ACTIVE })
|
|
61
44
|
|
|
62
|
-
|
|
63
|
-
|
|
45
|
+
if (sellercraft) {
|
|
46
|
+
const sellercraftCtrl: SellercraftController = new SellercraftController(tx, domain, user)
|
|
47
|
+
await sellercraftCtrl.registerProductInbound(sellercraft, arrivalNotice)
|
|
64
48
|
}
|
|
65
49
|
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
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
|
-
// }
|
|
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)
|
|
53
|
+
}
|
|
84
54
|
}
|
|
85
55
|
}
|
|
86
56
|
|