@things-factory/marketplace-base 4.0.11 → 4.0.16
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/entities/index.js +8 -2
- package/dist-server/entities/index.js.map +1 -1
- package/dist-server/entities/marketplace-order-item.js +80 -0
- package/dist-server/entities/marketplace-order-item.js.map +1 -1
- package/dist-server/entities/marketplace-order-shipping.js +16 -0
- package/dist-server/entities/marketplace-order-shipping.js.map +1 -1
- package/dist-server/entities/marketplace-order.js +36 -0
- package/dist-server/entities/marketplace-order.js.map +1 -1
- package/dist-server/entities/marketplace-refund-order-item.js +82 -0
- package/dist-server/entities/marketplace-refund-order-item.js.map +1 -0
- package/dist-server/entities/marketplace-refund-order.js +77 -0
- package/dist-server/entities/marketplace-refund-order.js.map +1 -0
- package/dist-server/graphql/resolvers/index.js +2 -0
- package/dist-server/graphql/resolvers/index.js.map +1 -1
- package/dist-server/graphql/resolvers/marketplace-order/marketplace-orders.js +19 -17
- package/dist-server/graphql/resolvers/marketplace-order/marketplace-orders.js.map +1 -1
- package/dist-server/graphql/resolvers/marketplace-order/sync-all-marketplace-order.js +267 -205
- package/dist-server/graphql/resolvers/marketplace-order/sync-all-marketplace-order.js.map +1 -1
- package/dist-server/graphql/resolvers/marketplace-order/sync-marketplace-order.js +100 -43
- package/dist-server/graphql/resolvers/marketplace-order/sync-marketplace-order.js.map +1 -1
- package/dist-server/graphql/resolvers/marketplace-order-item/marketplace-order-items.js +1 -1
- package/dist-server/graphql/resolvers/marketplace-order-item/marketplace-order-items.js.map +1 -1
- package/dist-server/graphql/resolvers/marketplace-order-shipping/marketplace-order-shippings.js +28 -10
- package/dist-server/graphql/resolvers/marketplace-order-shipping/marketplace-order-shippings.js.map +1 -1
- package/dist-server/graphql/resolvers/marketplace-order-shipping/update-marketplace-order-shipping.js +7 -0
- package/dist-server/graphql/resolvers/marketplace-order-shipping/update-marketplace-order-shipping.js.map +1 -1
- package/dist-server/graphql/resolvers/marketplace-refund-order/index.js +9 -0
- package/dist-server/graphql/resolvers/marketplace-refund-order/index.js.map +1 -0
- package/dist-server/graphql/resolvers/marketplace-refund-order/sync-all-marketplace-refund-orders.js +93 -0
- package/dist-server/graphql/resolvers/marketplace-refund-order/sync-all-marketplace-refund-orders.js.map +1 -0
- package/dist-server/graphql/resolvers/marketplace-refund-order/sync-marketplace-refund-orders.js +79 -0
- package/dist-server/graphql/resolvers/marketplace-refund-order/sync-marketplace-refund-orders.js.map +1 -0
- package/dist-server/graphql/resolvers/marketplace-report/index.js +8 -0
- package/dist-server/graphql/resolvers/marketplace-report/index.js.map +1 -0
- package/dist-server/graphql/resolvers/marketplace-report/marketplace-sales-report.js +112 -0
- package/dist-server/graphql/resolvers/marketplace-report/marketplace-sales-report.js.map +1 -0
- package/dist-server/graphql/types/index.js +2 -0
- package/dist-server/graphql/types/index.js.map +1 -1
- package/dist-server/graphql/types/marketplace-order/marketplace-order.js +2 -0
- package/dist-server/graphql/types/marketplace-order/marketplace-order.js.map +1 -1
- package/dist-server/graphql/types/marketplace-order-item/marketplace-order-item.js +4 -0
- package/dist-server/graphql/types/marketplace-order-item/marketplace-order-item.js.map +1 -1
- package/dist-server/graphql/types/marketplace-order-shipping/marketplace-order-shipping.js +4 -0
- package/dist-server/graphql/types/marketplace-order-shipping/marketplace-order-shipping.js.map +1 -1
- package/dist-server/graphql/types/marketplace-refund-order/index.js +31 -0
- package/dist-server/graphql/types/marketplace-refund-order/index.js.map +1 -0
- package/dist-server/graphql/types/marketplace-refund-order/marketplace-refund-order-list.js +14 -0
- package/dist-server/graphql/types/marketplace-refund-order/marketplace-refund-order-list.js.map +1 -0
- package/dist-server/graphql/types/marketplace-refund-order/marketplace-refund-order.js +23 -0
- package/dist-server/graphql/types/marketplace-refund-order/marketplace-refund-order.js.map +1 -0
- package/dist-server/graphql/types/marketplace-report/index.js +25 -0
- package/dist-server/graphql/types/marketplace-report/index.js.map +1 -0
- package/dist-server/graphql/types/marketplace-report/marketplace-sales-report-list.js +14 -0
- package/dist-server/graphql/types/marketplace-report/marketplace-sales-report-list.js.map +1 -0
- package/dist-server/graphql/types/marketplace-report/marketplace-sales-report.js +65 -0
- package/dist-server/graphql/types/marketplace-report/marketplace-sales-report.js.map +1 -0
- package/package.json +5 -5
- package/server/entities/index.ts +8 -2
- package/server/entities/marketplace-order-item.ts +60 -0
- package/server/entities/marketplace-order-shipping.ts +12 -0
- package/server/entities/marketplace-order.ts +27 -0
- package/server/entities/marketplace-refund-order-item.ts +65 -0
- package/server/entities/marketplace-refund-order.ts +62 -0
- package/server/graphql/resolvers/index.ts +2 -0
- package/server/graphql/resolvers/marketplace-order/marketplace-orders.ts +25 -17
- package/server/graphql/resolvers/marketplace-order/sync-all-marketplace-order.ts +337 -278
- package/server/graphql/resolvers/marketplace-order/sync-marketplace-order.ts +107 -45
- package/server/graphql/resolvers/marketplace-order-item/marketplace-order-items.ts +5 -2
- package/server/graphql/resolvers/marketplace-order-shipping/marketplace-order-shippings.ts +35 -14
- package/server/graphql/resolvers/marketplace-order-shipping/update-marketplace-order-shipping.ts +8 -0
- package/server/graphql/resolvers/marketplace-refund-order/index.ts +9 -0
- package/server/graphql/resolvers/marketplace-refund-order/sync-all-marketplace-refund-orders.ts +121 -0
- package/server/graphql/resolvers/marketplace-refund-order/sync-marketplace-refund-orders.ts +103 -0
- package/server/graphql/resolvers/marketplace-report/index.ts +7 -0
- package/server/graphql/resolvers/marketplace-report/marketplace-sales-report.ts +130 -0
- package/server/graphql/types/index.ts +2 -0
- package/server/graphql/types/marketplace-order/marketplace-order.ts +2 -0
- package/server/graphql/types/marketplace-order-item/marketplace-order-item.ts +4 -0
- package/server/graphql/types/marketplace-order-shipping/marketplace-order-shipping.ts +4 -0
- package/server/graphql/types/marketplace-refund-order/index.ts +16 -0
- package/server/graphql/types/marketplace-refund-order/marketplace-refund-order-list.ts +8 -0
- package/server/graphql/types/marketplace-refund-order/marketplace-refund-order.ts +17 -0
- package/server/graphql/types/marketplace-report/index.ts +10 -0
- package/server/graphql/types/marketplace-report/marketplace-sales-report-list.ts +8 -0
- package/server/graphql/types/marketplace-report/marketplace-sales-report.ts +59 -0
|
@@ -24,6 +24,8 @@ export const syncMarketplaceOrder = {
|
|
|
24
24
|
let hasMorePage: boolean = true
|
|
25
25
|
let lastOrderId: string
|
|
26
26
|
var limit: number = 100
|
|
27
|
+
const cancelStatuses: string[] = ['cancelled', 'canceled']
|
|
28
|
+
const disallowCancelStatuses: string[] = ['CANCELLED', 'PENDING_CANCEL']
|
|
27
29
|
|
|
28
30
|
while (hasMorePage) {
|
|
29
31
|
const { results: marketplaceOrders, more } = await StoreAPI.getStoreOrders(marketplaceStore, {
|
|
@@ -41,6 +43,7 @@ export const syncMarketplaceOrder = {
|
|
|
41
43
|
let marketplaceOrderItems = []
|
|
42
44
|
let tracking_code = ''
|
|
43
45
|
let deliveryProvider: string
|
|
46
|
+
let dropPickProvider: string
|
|
44
47
|
|
|
45
48
|
if (marketplaceStore.platform == 'lazada') {
|
|
46
49
|
if (order.trackingNo != '') {
|
|
@@ -60,7 +63,10 @@ export const syncMarketplaceOrder = {
|
|
|
60
63
|
shippingProviderInfo[key] = value
|
|
61
64
|
})
|
|
62
65
|
|
|
63
|
-
|
|
66
|
+
dropPickProvider = shippingProviderInfo?.Pickup
|
|
67
|
+
? shippingProviderInfo['Pickup']
|
|
68
|
+
: shippingProviderInfo['Drop-off']
|
|
69
|
+
deliveryProvider = shippingProviderInfo['Delivery']
|
|
64
70
|
}
|
|
65
71
|
|
|
66
72
|
let marketplaceOrder: MarketplaceOrder = new MarketplaceOrder()
|
|
@@ -76,6 +82,16 @@ export const syncMarketplaceOrder = {
|
|
|
76
82
|
marketplaceOrder.orderUpdatedAt = order.orderUpdatedAt
|
|
77
83
|
marketplaceOrder.marketplaceStore = marketplaceStore
|
|
78
84
|
marketplaceOrder.domain = marketplaceStore.domain
|
|
85
|
+
marketplaceOrder.buyerUsername = order.buyerUsername
|
|
86
|
+
marketplaceOrder.payTime = order.payTime
|
|
87
|
+
marketplaceOrder.serviceFee = order.serviceFee
|
|
88
|
+
marketplaceOrder.commissionFee = order.commissionFee
|
|
89
|
+
marketplaceOrder.transactionFee = order.transactionFee
|
|
90
|
+
marketplaceOrder.shippingMode = order.shippingMode
|
|
91
|
+
marketplaceOrder.voucherAmount = order.voucherAmount
|
|
92
|
+
marketplaceOrder.totalRealeasedAmount = order.totalRealeasedAmount
|
|
93
|
+
marketplaceOrder.voucherCode = order.voucherCode
|
|
94
|
+
marketplaceOrder.shippingRebate = order.shippingRebate
|
|
79
95
|
|
|
80
96
|
const existingMarketplaceOrder: MarketplaceOrder = await tx.getRepository(MarketplaceOrder).findOne({
|
|
81
97
|
where: { domain: marketplaceStore.domain, name: order.name },
|
|
@@ -103,52 +119,67 @@ export const syncMarketplaceOrder = {
|
|
|
103
119
|
updater: user
|
|
104
120
|
}
|
|
105
121
|
|
|
106
|
-
|
|
107
|
-
|
|
122
|
+
if (marketplaceOrder?.releaseOrderId) {
|
|
123
|
+
const fulfillmentCenter: FulfillmentCenter = marketplaceOrder.fulfillmentCenter
|
|
124
|
+
const centerId: string = fulfillmentCenter.centerId
|
|
125
|
+
const warehouseDomain: Domain = await tx.getRepository(Domain).findOne({ where: { subdomain: centerId } })
|
|
126
|
+
const customerBizplaces: Bizplace[] = await getCustomerBizplaces(warehouseDomain)
|
|
127
|
+
const customerBizplaceId: string = customerBizplaces[0].id
|
|
108
128
|
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
const warehouseDomain: Domain = await tx.getRepository(Domain).findOne({ where: { subdomain: centerId } })
|
|
114
|
-
const customerBizplaces: Bizplace[] = await getCustomerBizplaces(warehouseDomain)
|
|
115
|
-
const customerBizplaceId: string = customerBizplaces[0].id
|
|
116
|
-
|
|
117
|
-
let { items: releaseOrders }: any = await FulfillmentAPI.getOutboundOrders(fulfillmentCenter, {
|
|
118
|
-
customerBizplaceId,
|
|
119
|
-
refNo: marketplaceOrder.orderNo
|
|
120
|
-
})
|
|
129
|
+
let { items: releaseOrders }: any = await FulfillmentAPI.getOutboundOrders(fulfillmentCenter, {
|
|
130
|
+
customerBizplaceId,
|
|
131
|
+
refNo: marketplaceOrder.orderNo
|
|
132
|
+
})
|
|
121
133
|
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
134
|
+
let releaseOrder = Object.assign({}, releaseOrders[0])
|
|
135
|
+
let patch = {
|
|
136
|
+
id: releaseOrder.id,
|
|
137
|
+
marketplaceOrderStatus: marketplaceOrder.status,
|
|
138
|
+
trackingNo: marketplaceOrder.trackingNo,
|
|
139
|
+
transporter: dropPickProvider ? dropPickProvider : marketplaceOrder.shippingProvider
|
|
140
|
+
}
|
|
125
141
|
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
}
|
|
132
|
-
} else {
|
|
133
|
-
const fulfillmentCenter: FulfillmentCenter = marketplaceOrder.fulfillmentCenter
|
|
134
|
-
const centerId: string = fulfillmentCenter.centerId
|
|
142
|
+
await FulfillmentAPI.updateReleaseGoodDetails(fulfillmentCenter, {
|
|
143
|
+
customerBizplaceId,
|
|
144
|
+
releaseOrder: { ...patch },
|
|
145
|
+
shippingOrder: null
|
|
146
|
+
})
|
|
135
147
|
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
148
|
+
if (cancelStatuses.includes(marketplaceOrder.status)) {
|
|
149
|
+
if (existingMarketplaceOrder.isSplitted) {
|
|
150
|
+
releaseOrders = releaseOrders.filter(function (order) {
|
|
151
|
+
return !disallowCancelStatuses.includes(order.status)
|
|
152
|
+
})
|
|
139
153
|
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
154
|
+
if (releaseOrders?.length) {
|
|
155
|
+
for (var a = 0; a < releaseOrders.length; a++) {
|
|
156
|
+
const releaseOrderId: string = releaseOrders[a].id
|
|
157
|
+
await FulfillmentAPI.cancelReleaseOrder(fulfillmentCenter, { customerBizplaceId, releaseOrderId })
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
} else {
|
|
161
|
+
const fulfillmentCenter: FulfillmentCenter = marketplaceOrder.fulfillmentCenter
|
|
162
|
+
const centerId: string = fulfillmentCenter.centerId
|
|
144
163
|
|
|
145
|
-
|
|
164
|
+
const warehouseDomain: Domain = await tx
|
|
165
|
+
.getRepository(Domain)
|
|
166
|
+
.findOne({ where: { subdomain: centerId } })
|
|
167
|
+
const customerBizplaces: Bizplace[] = await getCustomerBizplaces(warehouseDomain)
|
|
168
|
+
const customerBizplaceId: string = customerBizplaces[0].id
|
|
146
169
|
|
|
147
|
-
|
|
148
|
-
await FulfillmentAPI.cancelReleaseOrder(fulfillmentCenter, {
|
|
170
|
+
const { items: releaseOrders }: any = await FulfillmentAPI.getOutboundOrders(fulfillmentCenter, {
|
|
149
171
|
customerBizplaceId,
|
|
150
|
-
|
|
172
|
+
refNo: marketplaceOrder.orderNo
|
|
151
173
|
})
|
|
174
|
+
|
|
175
|
+
const releaseOrderStatus = releaseOrders[0].status
|
|
176
|
+
|
|
177
|
+
if (!disallowCancelStatuses.includes(releaseOrderStatus)) {
|
|
178
|
+
await FulfillmentAPI.cancelReleaseOrder(fulfillmentCenter, {
|
|
179
|
+
customerBizplaceId,
|
|
180
|
+
releaseOrderId: releaseOrders[0].id
|
|
181
|
+
})
|
|
182
|
+
}
|
|
152
183
|
}
|
|
153
184
|
}
|
|
154
185
|
}
|
|
@@ -172,16 +203,20 @@ export const syncMarketplaceOrder = {
|
|
|
172
203
|
marketplaceOrderShipping.attentionTo = orderShipping.attentionTo
|
|
173
204
|
marketplaceOrderShipping.city = orderShipping.city
|
|
174
205
|
marketplaceOrderShipping.country = orderShipping.country
|
|
175
|
-
marketplaceOrderShipping.state = orderShipping?.state
|
|
206
|
+
marketplaceOrderShipping.state = orderShipping?.state || null
|
|
176
207
|
marketplaceOrderShipping.postCode = orderShipping.postCode
|
|
177
208
|
marketplaceOrderShipping.phone1 = orderShipping.phone1
|
|
178
209
|
marketplaceOrderShipping.phone2 = orderShipping.phone2
|
|
179
|
-
marketplaceOrderShipping.trackingNo = order
|
|
210
|
+
marketplaceOrderShipping.trackingNo = order?.trackingNo || null
|
|
180
211
|
marketplaceOrderShipping.orderNoRef = marketplaceOrder.orderNo
|
|
181
212
|
marketplaceOrderShipping.subOrderNoRef = marketplaceOrder.orderNo
|
|
182
213
|
marketplaceOrderShipping.marketplaceStore = marketplaceStore
|
|
183
214
|
marketplaceOrderShipping.creator = user
|
|
184
215
|
marketplaceOrderShipping.domain = marketplaceStore.domain
|
|
216
|
+
marketplaceOrderShipping.shippingFee = orderShipping.shippingFee
|
|
217
|
+
marketplaceOrderShipping.actualShippingFee = orderShipping.actualShippingFee
|
|
218
|
+
marketplaceOrderShipping.marketplaceShippingFeeVoucher = orderShipping.marketplaceShippingFeeVoucher
|
|
219
|
+
marketplaceOrderShipping.sellerShippingFeeVoucher = orderShipping.sellerShippingFeeVoucher
|
|
185
220
|
|
|
186
221
|
if (existingMarketplaceOrder) {
|
|
187
222
|
if (existingMarketplaceOrder.isSplitted) {
|
|
@@ -207,7 +242,11 @@ export const syncMarketplaceOrder = {
|
|
|
207
242
|
phone1: orderShipping.phone1,
|
|
208
243
|
phone2: orderShipping.phone2,
|
|
209
244
|
email: orderShipping?.email,
|
|
210
|
-
trackingNo: order
|
|
245
|
+
trackingNo: order?.trackingNo,
|
|
246
|
+
shippingFee: orderShipping.shippingFee,
|
|
247
|
+
actualShippingFee: orderShipping.actualShippingFee,
|
|
248
|
+
marketplaceShippingFeeVoucher: orderShipping.marketplaceShippingFeeVoucher,
|
|
249
|
+
sellerShippingFeeVoucher: orderShipping.sellerShippingFeeVoucher
|
|
211
250
|
}
|
|
212
251
|
})
|
|
213
252
|
|
|
@@ -222,6 +261,11 @@ export const syncMarketplaceOrder = {
|
|
|
222
261
|
marketplaceOrderShipping = {
|
|
223
262
|
...existingOrderShipping,
|
|
224
263
|
...marketplaceOrderShipping,
|
|
264
|
+
trackingNo: marketplaceOrderShipping?.trackingNo
|
|
265
|
+
? marketplaceOrderShipping.trackingNo
|
|
266
|
+
: existingOrderShipping?.trackingNo
|
|
267
|
+
? existingOrderShipping.trackingNo
|
|
268
|
+
: marketplaceOrderShipping.trackingNo,
|
|
225
269
|
updater: user
|
|
226
270
|
}
|
|
227
271
|
|
|
@@ -269,7 +313,27 @@ export const syncMarketplaceOrder = {
|
|
|
269
313
|
marketplaceOrderItem.trackingCode = order.trackingNo
|
|
270
314
|
marketplaceOrderItem.marketplaceOrder = marketplaceOrder
|
|
271
315
|
marketplaceOrderItem.marketplaceOrderShipping = savedMarketplaceOrderShipping
|
|
316
|
+
marketplaceOrderItem.originalPrice = item.originalPrice
|
|
317
|
+
marketplaceOrderItem.discount = item.discount
|
|
318
|
+
marketplaceOrderItem.promotionId = item.promotionId
|
|
272
319
|
marketplaceOrderItem.creator = user
|
|
320
|
+
marketplaceOrderItem.paymentFee = item.paymentFee || null
|
|
321
|
+
marketplaceOrderItem.commissionFee = item.commissionFee || null
|
|
322
|
+
marketplaceOrderItem.shippingFeePaidByCustomer = item.shippingFeePaidByCustomer || null
|
|
323
|
+
marketplaceOrderItem.itemPriceCredit = item.itemPriceCredit || null
|
|
324
|
+
marketplaceOrderItem.promotionalCharges = item.promotionalCharges || null
|
|
325
|
+
marketplaceOrderItem.ordersMarketplaceFeesTotal = item.ordersMarketplaceFeesTotal || null
|
|
326
|
+
marketplaceOrderItem.ordersSalesTotal = item.ordersSalesTotal || null
|
|
327
|
+
marketplaceOrderItem.ordersMarketingFeesTotal = item.ordersMarketingFeesTotal || null
|
|
328
|
+
marketplaceOrderItem.ordersLogisticsTotal = item.ordersLogisticsTotal || null
|
|
329
|
+
marketplaceOrderItem.marketplaceBonus = item.marketplaceBonus
|
|
330
|
+
marketplaceOrderItem.marketplaceBonusSeller = item.marketplaceBonusSeller
|
|
331
|
+
marketplaceOrderItem.shippingFeeDiscountMarketplace = item.shippingFeeDiscountMarketplace
|
|
332
|
+
marketplaceOrderItem.shippingFeeDiscountSeller = item.shippingFeeDiscountSeller
|
|
333
|
+
marketplaceOrderItem.promotionalChargesFlexiCombo = item.promotionalChargesFlexiCombo
|
|
334
|
+
marketplaceOrderItem.autoShippingSubsidyMarketplace = item.autoShippingSubsidyMarketplace
|
|
335
|
+
marketplaceOrderItem.originalShippingFee = item.originalShippingFee
|
|
336
|
+
marketplaceOrderItem.taxAmount = item.taxAmount
|
|
273
337
|
|
|
274
338
|
marketplaceOrderItems.push({ ...marketplaceOrderItem })
|
|
275
339
|
|
|
@@ -283,9 +347,7 @@ export const syncMarketplaceOrder = {
|
|
|
283
347
|
existingOrderItems = existingMarketplaceOrder.marketplaceOrderItems
|
|
284
348
|
|
|
285
349
|
marketplaceOrderItems = existingOrderItems.filter(
|
|
286
|
-
itm =>
|
|
287
|
-
itm.name == item.name &&
|
|
288
|
-
itm.marketplaceProductVariation.variationId == item.marketplaceProductVariation.variationId
|
|
350
|
+
itm => itm.name == item.name && itm.marketplaceProductVariation.variationId == item.variationId
|
|
289
351
|
)
|
|
290
352
|
marketplaceOrderItems = marketplaceOrderItems.map(marketplaceOrderitem => {
|
|
291
353
|
return {
|
|
@@ -311,7 +373,7 @@ export const syncMarketplaceOrder = {
|
|
|
311
373
|
nonMatchedOrderItems.push({ ...item })
|
|
312
374
|
}
|
|
313
375
|
})
|
|
314
|
-
if (nonMatchedOrderItems.length > 0)
|
|
376
|
+
if (nonMatchedOrderItems.length > 0 && !cancelStatuses.includes(marketplaceOrder.status))
|
|
315
377
|
await tx.getRepository(MarketplaceOrderItem).delete(nonMatchedOrderItems)
|
|
316
378
|
|
|
317
379
|
existingOrderItems = marketplaceOrderItems.map(item => {
|
|
@@ -1,5 +1,7 @@
|
|
|
1
|
-
import { ListParam, convertListParams } from '@things-factory/shell'
|
|
2
1
|
import { getRepository } from 'typeorm'
|
|
2
|
+
|
|
3
|
+
import { convertListParams, ListParam } from '@things-factory/shell'
|
|
4
|
+
|
|
3
5
|
import { MarketplaceOrderItem } from '../../../entities'
|
|
4
6
|
|
|
5
7
|
export const marketplaceOrderItemsResolver = {
|
|
@@ -9,6 +11,7 @@ export const marketplaceOrderItemsResolver = {
|
|
|
9
11
|
...convertedParams,
|
|
10
12
|
relations: ['domain', 'creator', 'updater']
|
|
11
13
|
})
|
|
14
|
+
|
|
12
15
|
return { items, total }
|
|
13
16
|
}
|
|
14
|
-
}
|
|
17
|
+
}
|
|
@@ -1,21 +1,42 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
1
|
+
import { getRepository, SelectQueryBuilder } from 'typeorm'
|
|
2
|
+
|
|
3
|
+
import { buildQuery, ListParam } from '@things-factory/shell'
|
|
4
|
+
|
|
3
5
|
import { MarketplaceOrderShipping } from '../../../entities'
|
|
4
6
|
|
|
5
7
|
export const marketplaceOrderShippingsResolver = {
|
|
6
8
|
async marketplaceOrderShippings(_: any, params: ListParam, context: any) {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
9
|
+
let dateFilter = params.filters.filter(filter => filter.name == 'createdAt')
|
|
10
|
+
|
|
11
|
+
params.filters = params.filters.filter(x => x.name != 'createdAt')
|
|
12
|
+
|
|
13
|
+
const qb: SelectQueryBuilder<MarketplaceOrderShipping> = getRepository(MarketplaceOrderShipping)
|
|
14
|
+
.createQueryBuilder('MOS')
|
|
15
|
+
.innerJoinAndSelect('MOS.marketplaceOrderItems', 'MOI')
|
|
16
|
+
.innerJoinAndSelect('MOI.marketplaceOrder', 'MO')
|
|
17
|
+
.innerJoinAndSelect('MOI.marketplaceProductVariation', 'MPV')
|
|
18
|
+
.innerJoinAndSelect('MOS.marketplaceStore', 'MS')
|
|
19
|
+
.innerJoinAndSelect('MOS.domain', 'domain')
|
|
20
|
+
.innerJoinAndSelect('MOS.creator', 'creator')
|
|
21
|
+
.leftJoinAndSelect('MOS.updater', 'updater')
|
|
22
|
+
|
|
23
|
+
buildQuery(qb, params, context, false)
|
|
24
|
+
|
|
25
|
+
if (dateFilter) {
|
|
26
|
+
if (dateFilter[0].operator == 'between') {
|
|
27
|
+
qb.andWhere('MO.orderCreatedAt BETWEEN :begin AND :end', {
|
|
28
|
+
begin: dateFilter[0].value[0],
|
|
29
|
+
end: dateFilter[0].value[1]
|
|
30
|
+
})
|
|
31
|
+
} else if (dateFilter[0].operator == 'gte') {
|
|
32
|
+
qb.andWhere('MO.orderCreatedAt >= :begin', { begin: dateFilter[0].value })
|
|
33
|
+
} else if (dateFilter[0].operator == 'lte') {
|
|
34
|
+
qb.andWhere('MO.orderCreatedAt <= :begin', { begin: dateFilter[0].value })
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
const [items, total] = await qb.getManyAndCount()
|
|
39
|
+
|
|
19
40
|
return { items, total }
|
|
20
41
|
}
|
|
21
42
|
}
|
package/server/graphql/resolvers/marketplace-order-shipping/update-marketplace-order-shipping.ts
CHANGED
|
@@ -8,8 +8,16 @@ export const updateMarketplaceOrderShipping = {
|
|
|
8
8
|
relations: ['marketplaceStore']
|
|
9
9
|
})
|
|
10
10
|
|
|
11
|
+
if (!marketplaceOrderShipping) throw new Error(`Shipping not exist`)
|
|
12
|
+
|
|
11
13
|
marketplaceOrderShipping.ownTrackingNo = patch.trackingNo
|
|
12
14
|
|
|
15
|
+
if (marketplaceOrderShipping.marketplaceStore.platform == 'lazada') {
|
|
16
|
+
if (patch?.trackingNo) {
|
|
17
|
+
patch.trackingNo = marketplaceOrderShipping.trackingNo
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
|
|
13
21
|
marketplaceOrderShipping = await tx.getRepository(MarketplaceOrderShippingEntity).save({
|
|
14
22
|
...marketplaceOrderShipping,
|
|
15
23
|
...patch,
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { syncMarketplaceRefundOrders } from './sync-marketplace-refund-orders'
|
|
2
|
+
import { syncAllMarketplaceRefundOrders } from './sync-all-marketplace-refund-orders'
|
|
3
|
+
|
|
4
|
+
export const MarketplaceRefundOrderResolver = {
|
|
5
|
+
Mutation: {
|
|
6
|
+
...syncMarketplaceRefundOrders,
|
|
7
|
+
...syncAllMarketplaceRefundOrders
|
|
8
|
+
}
|
|
9
|
+
}
|
package/server/graphql/resolvers/marketplace-refund-order/sync-all-marketplace-refund-orders.ts
ADDED
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
import { EntityManager, getRepository } from 'typeorm'
|
|
2
|
+
|
|
3
|
+
import { User } from '@things-factory/auth-base'
|
|
4
|
+
import { MarketplaceStore, StoreAPI } from '@things-factory/integration-marketplace'
|
|
5
|
+
import { Domain } from '@things-factory/shell'
|
|
6
|
+
|
|
7
|
+
import { MarketplaceRefundOrder, MarketplaceRefundOrderItem, MarketplaceProductVariation } from '../../../entities'
|
|
8
|
+
|
|
9
|
+
export const syncAllMarketplaceRefundOrders = {
|
|
10
|
+
async syncAllMarketplaceRefundOrders(_: any, { companyDomainId, fromDate, toDate, blackListStores }, context: any) {
|
|
11
|
+
const { user, tx }: { user: User; tx: EntityManager } = context.state
|
|
12
|
+
|
|
13
|
+
const companyDomain: Domain = await getRepository(Domain).findOne(companyDomainId)
|
|
14
|
+
|
|
15
|
+
// Step 1: get all available marketplace-store
|
|
16
|
+
const marketplaceStores: MarketplaceStore[] = await StoreAPI.getMarketplaceStores(companyDomain)
|
|
17
|
+
|
|
18
|
+
// Step 2: get marketplace refund orders based on each marketplace-store
|
|
19
|
+
if (marketplaceStores?.length === 0) throw new Error('No active marketplace store')
|
|
20
|
+
let whiteListStores: MarketplaceStore[] = marketplaceStores
|
|
21
|
+
|
|
22
|
+
if (blackListStores && blackListStores?.length) {
|
|
23
|
+
whiteListStores = marketplaceStores.filter(store => blackListStores.indexOf(store.name) < 0)
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
for (var i = 0; i < whiteListStores?.length; i++) {
|
|
27
|
+
const marketplaceStore = whiteListStores[i]
|
|
28
|
+
const domain: Domain = marketplaceStore.domain
|
|
29
|
+
|
|
30
|
+
let page: number = 0
|
|
31
|
+
let hasMorePage: boolean = true
|
|
32
|
+
var limit: number = 100
|
|
33
|
+
|
|
34
|
+
while (hasMorePage) {
|
|
35
|
+
const { results: marketplaceRefundOrders, more } = await StoreAPI.getStoreRefundOrders(marketplaceStore, {
|
|
36
|
+
fromDate,
|
|
37
|
+
toDate,
|
|
38
|
+
pagination: { page, limit }
|
|
39
|
+
})
|
|
40
|
+
|
|
41
|
+
if (marketplaceRefundOrders?.length > 0) {
|
|
42
|
+
for (var m = 0; m < marketplaceRefundOrders.length; m++) {
|
|
43
|
+
var refundOrder = marketplaceRefundOrders[i]
|
|
44
|
+
|
|
45
|
+
let marketplaceRefundOrder: MarketplaceRefundOrder = new MarketplaceRefundOrder()
|
|
46
|
+
marketplaceRefundOrder.name = refundOrder.name
|
|
47
|
+
marketplaceRefundOrder.orderNo = refundOrder.orderNo
|
|
48
|
+
marketplaceRefundOrder.amount = refundOrder.amount
|
|
49
|
+
marketplaceRefundOrder.status = refundOrder.status
|
|
50
|
+
marketplaceRefundOrder.originalOrderNo = refundOrder.originalOrderNo
|
|
51
|
+
marketplaceRefundOrder.domain = marketplaceStore.domain
|
|
52
|
+
marketplaceRefundOrder.creator = user
|
|
53
|
+
marketplaceRefundOrder.updater = user
|
|
54
|
+
|
|
55
|
+
const existingRefundOrder: MarketplaceRefundOrder = await getRepository(MarketplaceRefundOrder).findOne({
|
|
56
|
+
where: { domain: marketplaceStore.domain, name: refundOrder.name },
|
|
57
|
+
relations: ['domain', 'marketplaceRefundOrderItems']
|
|
58
|
+
})
|
|
59
|
+
|
|
60
|
+
if (existingRefundOrder) {
|
|
61
|
+
marketplaceRefundOrder = {
|
|
62
|
+
...existingRefundOrder,
|
|
63
|
+
...marketplaceRefundOrder,
|
|
64
|
+
updater: user
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
marketplaceRefundOrder = await getRepository(MarketplaceRefundOrder).save(marketplaceRefundOrder)
|
|
68
|
+
|
|
69
|
+
refundOrder.items.forEach(async item => {
|
|
70
|
+
let existingVariation: MarketplaceProductVariation = await
|
|
71
|
+
getRepository(MarketplaceProductVariation)
|
|
72
|
+
.findOne({
|
|
73
|
+
where: { domain: marketplaceStore.domain, name: item.variationId }
|
|
74
|
+
})
|
|
75
|
+
|
|
76
|
+
if (marketplaceStore.platform === 'lazada') {
|
|
77
|
+
existingVariation = await getRepository(MarketplaceProductVariation).findOne({
|
|
78
|
+
where: { domain: marketplaceStore.domain, channelSku: item.channelSku }
|
|
79
|
+
})
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
let marketplaceRefundOrderItem: MarketplaceRefundOrderItem = new MarketplaceRefundOrderItem()
|
|
83
|
+
|
|
84
|
+
marketplaceRefundOrderItem.name = item.name
|
|
85
|
+
marketplaceRefundOrderItem.orderItemId = item.orderItemId
|
|
86
|
+
marketplaceRefundOrderItem.price = item.price
|
|
87
|
+
marketplaceRefundOrderItem.qty = item.qty
|
|
88
|
+
marketplaceRefundOrderItem.status = item.status
|
|
89
|
+
marketplaceRefundOrderItem.domain = marketplaceStore.domain
|
|
90
|
+
marketplaceRefundOrderItem.creator = user
|
|
91
|
+
marketplaceRefundOrderItem.updater = user
|
|
92
|
+
marketplaceRefundOrderItem.marketplaceRefundOrder = marketplaceRefundOrder
|
|
93
|
+
marketplaceRefundOrderItem.marketplaceProductVariation = existingVariation
|
|
94
|
+
|
|
95
|
+
const existingRefundOrderItem: MarketplaceRefundOrderItem = await getRepository(
|
|
96
|
+
MarketplaceRefundOrderItem
|
|
97
|
+
).findOne({
|
|
98
|
+
where: { domain: marketplaceStore.domain, name: item.name },
|
|
99
|
+
relations: ['domain']
|
|
100
|
+
})
|
|
101
|
+
if (existingRefundOrderItem) {
|
|
102
|
+
marketplaceRefundOrderItem = {
|
|
103
|
+
...existingRefundOrderItem,
|
|
104
|
+
...marketplaceRefundOrderItem,
|
|
105
|
+
updater: user
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
marketplaceRefundOrderItem = await getRepository(MarketplaceRefundOrderItem).save(
|
|
110
|
+
marketplaceRefundOrderItem
|
|
111
|
+
)
|
|
112
|
+
})
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
if (more) page++
|
|
116
|
+
hasMorePage = more
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
return true
|
|
120
|
+
}
|
|
121
|
+
}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import { EntityManager } from 'typeorm'
|
|
2
|
+
|
|
3
|
+
import { User } from '@things-factory/auth-base'
|
|
4
|
+
import { MarketplaceStore, StoreAPI } from '@things-factory/integration-marketplace'
|
|
5
|
+
import { Domain } from '@things-factory/shell'
|
|
6
|
+
import { MarketplaceRefundOrder, MarketplaceRefundOrderItem, MarketplaceProductVariation } from '../../../entities'
|
|
7
|
+
|
|
8
|
+
export const syncMarketplaceRefundOrders = {
|
|
9
|
+
async syncMarketplaceRefundOrders(_: any, { storeId, fromDate, toDate }, context: any) {
|
|
10
|
+
|
|
11
|
+
const { domain, user, tx }: { domain: Domain; user: User; tx: EntityManager } = context.state
|
|
12
|
+
|
|
13
|
+
//@ahmedqaid, I think it would be better if this logic could be written inside a function.
|
|
14
|
+
//That way sync-all-marketplace-refund-orders doesn't need to re-write the logic.
|
|
15
|
+
//By doing so, it would improve readability and maintainability easily.
|
|
16
|
+
const marketplaceStore: MarketplaceStore = await StoreAPI.getMarketplaceStore(storeId)
|
|
17
|
+
|
|
18
|
+
let page: number = 0
|
|
19
|
+
let hasMorePage: boolean = true
|
|
20
|
+
var limit: number = 100
|
|
21
|
+
|
|
22
|
+
while (hasMorePage) {
|
|
23
|
+
const { results: marketplaceRefundOrders, more } = await StoreAPI.getStoreRefundOrders(marketplaceStore, {
|
|
24
|
+
fromDate,
|
|
25
|
+
toDate,
|
|
26
|
+
pagination: { page, limit }
|
|
27
|
+
})
|
|
28
|
+
|
|
29
|
+
for (var i = 0; i < marketplaceRefundOrders.length; i++) {
|
|
30
|
+
var refundOrder = marketplaceRefundOrders[i]
|
|
31
|
+
|
|
32
|
+
let marketplaceRefundOrder: MarketplaceRefundOrder = new MarketplaceRefundOrder()
|
|
33
|
+
marketplaceRefundOrder.name = refundOrder.name
|
|
34
|
+
marketplaceRefundOrder.orderNo = refundOrder.orderNo
|
|
35
|
+
marketplaceRefundOrder.amount = refundOrder.amount
|
|
36
|
+
marketplaceRefundOrder.status = refundOrder.status
|
|
37
|
+
marketplaceRefundOrder.originalOrderNo = refundOrder.originalOrderNo
|
|
38
|
+
marketplaceRefundOrder.domain = marketplaceStore.domain
|
|
39
|
+
marketplaceRefundOrder.creator = user
|
|
40
|
+
marketplaceRefundOrder.updater = user
|
|
41
|
+
|
|
42
|
+
const existingRefundOrder: MarketplaceRefundOrder = await tx.getRepository(MarketplaceRefundOrder).findOne({
|
|
43
|
+
where: { domain: marketplaceStore.domain, name: refundOrder.name },
|
|
44
|
+
relations: ['domain', 'marketplaceRefundOrderItems']
|
|
45
|
+
})
|
|
46
|
+
|
|
47
|
+
if (existingRefundOrder) {
|
|
48
|
+
marketplaceRefundOrder = {
|
|
49
|
+
...existingRefundOrder,
|
|
50
|
+
...marketplaceRefundOrder,
|
|
51
|
+
updater: user
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
marketplaceRefundOrder = await tx.getRepository(MarketplaceRefundOrder).save(marketplaceRefundOrder)
|
|
55
|
+
|
|
56
|
+
refundOrder.items.forEach(async (item) => {
|
|
57
|
+
|
|
58
|
+
let existingVariation: MarketplaceProductVariation = await tx.getRepository(MarketplaceProductVariation).findOne({
|
|
59
|
+
where: { domain: marketplaceStore.domain, name: item.variationId }
|
|
60
|
+
})
|
|
61
|
+
|
|
62
|
+
if (marketplaceStore.platform === 'lazada') {
|
|
63
|
+
existingVariation = await tx.getRepository(MarketplaceProductVariation).findOne({
|
|
64
|
+
where: { domain: marketplaceStore.domain, channelSku: item.channelSku }
|
|
65
|
+
})
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
let marketplaceRefundOrderItem: MarketplaceRefundOrderItem = new MarketplaceRefundOrderItem()
|
|
69
|
+
|
|
70
|
+
marketplaceRefundOrderItem.name = item.name
|
|
71
|
+
marketplaceRefundOrderItem.orderItemId = item.orderItemId
|
|
72
|
+
marketplaceRefundOrderItem.price = item.price
|
|
73
|
+
marketplaceRefundOrderItem.qty = item.qty
|
|
74
|
+
marketplaceRefundOrderItem.status = item.status
|
|
75
|
+
marketplaceRefundOrderItem.domain = marketplaceStore.domain
|
|
76
|
+
marketplaceRefundOrderItem.creator = user
|
|
77
|
+
marketplaceRefundOrderItem.updater = user
|
|
78
|
+
marketplaceRefundOrderItem.marketplaceRefundOrder = marketplaceRefundOrder
|
|
79
|
+
marketplaceRefundOrderItem.marketplaceProductVariation = existingVariation
|
|
80
|
+
|
|
81
|
+
const existingRefundOrderItem: MarketplaceRefundOrderItem = await tx
|
|
82
|
+
.getRepository(MarketplaceRefundOrderItem)
|
|
83
|
+
.findOne({
|
|
84
|
+
where: { domain: marketplaceStore.domain, name: item.name },
|
|
85
|
+
relations: ['domain']
|
|
86
|
+
})
|
|
87
|
+
if (existingRefundOrderItem) {
|
|
88
|
+
marketplaceRefundOrderItem = {
|
|
89
|
+
...existingRefundOrderItem,
|
|
90
|
+
...marketplaceRefundOrderItem,
|
|
91
|
+
updater: user
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
marketplaceRefundOrderItem = await tx.getRepository(MarketplaceRefundOrderItem).save(marketplaceRefundOrderItem)
|
|
96
|
+
})
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
if (more) page++
|
|
100
|
+
hasMorePage = more
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
}
|