@things-factory/marketplace-base 4.0.10 → 4.0.14

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 (85) hide show
  1. package/dist-server/entities/index.js +8 -2
  2. package/dist-server/entities/index.js.map +1 -1
  3. package/dist-server/entities/marketplace-order-item.js +80 -0
  4. package/dist-server/entities/marketplace-order-item.js.map +1 -1
  5. package/dist-server/entities/marketplace-order-shipping.js +16 -0
  6. package/dist-server/entities/marketplace-order-shipping.js.map +1 -1
  7. package/dist-server/entities/marketplace-order.js +36 -0
  8. package/dist-server/entities/marketplace-order.js.map +1 -1
  9. package/dist-server/entities/marketplace-refund-order-item.js +82 -0
  10. package/dist-server/entities/marketplace-refund-order-item.js.map +1 -0
  11. package/dist-server/entities/marketplace-refund-order.js +77 -0
  12. package/dist-server/entities/marketplace-refund-order.js.map +1 -0
  13. package/dist-server/graphql/resolvers/index.js +2 -0
  14. package/dist-server/graphql/resolvers/index.js.map +1 -1
  15. package/dist-server/graphql/resolvers/marketplace-order/marketplace-orders.js +19 -17
  16. package/dist-server/graphql/resolvers/marketplace-order/marketplace-orders.js.map +1 -1
  17. package/dist-server/graphql/resolvers/marketplace-order/sync-all-marketplace-order.js +267 -205
  18. package/dist-server/graphql/resolvers/marketplace-order/sync-all-marketplace-order.js.map +1 -1
  19. package/dist-server/graphql/resolvers/marketplace-order/sync-marketplace-order.js +100 -43
  20. package/dist-server/graphql/resolvers/marketplace-order/sync-marketplace-order.js.map +1 -1
  21. package/dist-server/graphql/resolvers/marketplace-order-item/marketplace-order-items.js +1 -1
  22. package/dist-server/graphql/resolvers/marketplace-order-item/marketplace-order-items.js.map +1 -1
  23. package/dist-server/graphql/resolvers/marketplace-order-shipping/marketplace-order-shippings.js +28 -10
  24. package/dist-server/graphql/resolvers/marketplace-order-shipping/marketplace-order-shippings.js.map +1 -1
  25. package/dist-server/graphql/resolvers/marketplace-order-shipping/update-marketplace-order-shipping.js +7 -0
  26. package/dist-server/graphql/resolvers/marketplace-order-shipping/update-marketplace-order-shipping.js.map +1 -1
  27. package/dist-server/graphql/resolvers/marketplace-refund-order/index.js +9 -0
  28. package/dist-server/graphql/resolvers/marketplace-refund-order/index.js.map +1 -0
  29. package/dist-server/graphql/resolvers/marketplace-refund-order/sync-all-marketplace-refund-orders.js +93 -0
  30. package/dist-server/graphql/resolvers/marketplace-refund-order/sync-all-marketplace-refund-orders.js.map +1 -0
  31. package/dist-server/graphql/resolvers/marketplace-refund-order/sync-marketplace-refund-orders.js +79 -0
  32. package/dist-server/graphql/resolvers/marketplace-refund-order/sync-marketplace-refund-orders.js.map +1 -0
  33. package/dist-server/graphql/resolvers/marketplace-report/index.js +8 -0
  34. package/dist-server/graphql/resolvers/marketplace-report/index.js.map +1 -0
  35. package/dist-server/graphql/resolvers/marketplace-report/marketplace-sales-report.js +112 -0
  36. package/dist-server/graphql/resolvers/marketplace-report/marketplace-sales-report.js.map +1 -0
  37. package/dist-server/graphql/types/index.js +2 -0
  38. package/dist-server/graphql/types/index.js.map +1 -1
  39. package/dist-server/graphql/types/marketplace-order/marketplace-order.js +2 -0
  40. package/dist-server/graphql/types/marketplace-order/marketplace-order.js.map +1 -1
  41. package/dist-server/graphql/types/marketplace-order-item/marketplace-order-item.js +4 -0
  42. package/dist-server/graphql/types/marketplace-order-item/marketplace-order-item.js.map +1 -1
  43. package/dist-server/graphql/types/marketplace-order-shipping/marketplace-order-shipping.js +4 -0
  44. package/dist-server/graphql/types/marketplace-order-shipping/marketplace-order-shipping.js.map +1 -1
  45. package/dist-server/graphql/types/marketplace-refund-order/index.js +31 -0
  46. package/dist-server/graphql/types/marketplace-refund-order/index.js.map +1 -0
  47. package/dist-server/graphql/types/marketplace-refund-order/marketplace-refund-order-list.js +14 -0
  48. package/dist-server/graphql/types/marketplace-refund-order/marketplace-refund-order-list.js.map +1 -0
  49. package/dist-server/graphql/types/marketplace-refund-order/marketplace-refund-order.js +23 -0
  50. package/dist-server/graphql/types/marketplace-refund-order/marketplace-refund-order.js.map +1 -0
  51. package/dist-server/graphql/types/marketplace-report/index.js +25 -0
  52. package/dist-server/graphql/types/marketplace-report/index.js.map +1 -0
  53. package/dist-server/graphql/types/marketplace-report/marketplace-sales-report-list.js +14 -0
  54. package/dist-server/graphql/types/marketplace-report/marketplace-sales-report-list.js.map +1 -0
  55. package/dist-server/graphql/types/marketplace-report/marketplace-sales-report.js +65 -0
  56. package/dist-server/graphql/types/marketplace-report/marketplace-sales-report.js.map +1 -0
  57. package/package.json +5 -5
  58. package/server/entities/index.ts +8 -2
  59. package/server/entities/marketplace-order-item.ts +60 -0
  60. package/server/entities/marketplace-order-shipping.ts +12 -0
  61. package/server/entities/marketplace-order.ts +27 -0
  62. package/server/entities/marketplace-refund-order-item.ts +65 -0
  63. package/server/entities/marketplace-refund-order.ts +62 -0
  64. package/server/graphql/resolvers/index.ts +2 -0
  65. package/server/graphql/resolvers/marketplace-order/marketplace-orders.ts +25 -17
  66. package/server/graphql/resolvers/marketplace-order/sync-all-marketplace-order.ts +337 -278
  67. package/server/graphql/resolvers/marketplace-order/sync-marketplace-order.ts +107 -45
  68. package/server/graphql/resolvers/marketplace-order-item/marketplace-order-items.ts +5 -2
  69. package/server/graphql/resolvers/marketplace-order-shipping/marketplace-order-shippings.ts +35 -14
  70. package/server/graphql/resolvers/marketplace-order-shipping/update-marketplace-order-shipping.ts +8 -0
  71. package/server/graphql/resolvers/marketplace-refund-order/index.ts +9 -0
  72. package/server/graphql/resolvers/marketplace-refund-order/sync-all-marketplace-refund-orders.ts +121 -0
  73. package/server/graphql/resolvers/marketplace-refund-order/sync-marketplace-refund-orders.ts +103 -0
  74. package/server/graphql/resolvers/marketplace-report/index.ts +7 -0
  75. package/server/graphql/resolvers/marketplace-report/marketplace-sales-report.ts +130 -0
  76. package/server/graphql/types/index.ts +2 -0
  77. package/server/graphql/types/marketplace-order/marketplace-order.ts +2 -0
  78. package/server/graphql/types/marketplace-order-item/marketplace-order-item.ts +4 -0
  79. package/server/graphql/types/marketplace-order-shipping/marketplace-order-shipping.ts +4 -0
  80. package/server/graphql/types/marketplace-refund-order/index.ts +16 -0
  81. package/server/graphql/types/marketplace-refund-order/marketplace-refund-order-list.ts +8 -0
  82. package/server/graphql/types/marketplace-refund-order/marketplace-refund-order.ts +17 -0
  83. package/server/graphql/types/marketplace-report/index.ts +10 -0
  84. package/server/graphql/types/marketplace-report/marketplace-sales-report-list.ts +8 -0
  85. 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
- deliveryProvider = shippingProviderInfo.Delivery
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
- const cancelStatuses: string[] = ['cancelled', 'canceled']
107
- const disallowCancelStatuses: string[] = ['CANCELLED', 'PENDING_CANCEL']
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
- if (cancelStatuses.includes(marketplaceOrder.status) && marketplaceOrder?.releaseOrderId) {
110
- if (existingMarketplaceOrder.isSplitted) {
111
- const fulfillmentCenter: FulfillmentCenter = marketplaceOrder.fulfillmentCenter
112
- const centerId: string = fulfillmentCenter.centerId
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
- releaseOrders = releaseOrders.filter(function (order) {
123
- return !disallowCancelStatuses.includes(order.status)
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
- if (releaseOrders?.length) {
127
- for (var a = 0; a < releaseOrders.length; a++) {
128
- const releaseOrderId: string = releaseOrders[a].id
129
- await FulfillmentAPI.cancelReleaseOrder(fulfillmentCenter, { customerBizplaceId, releaseOrderId })
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
- const warehouseDomain: Domain = await tx.getRepository(Domain).findOne({ where: { subdomain: centerId } })
137
- const customerBizplaces: Bizplace[] = await getCustomerBizplaces(warehouseDomain)
138
- const customerBizplaceId: string = customerBizplaces[0].id
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
- const { items: releaseOrders }: any = await FulfillmentAPI.getOutboundOrders(fulfillmentCenter, {
141
- customerBizplaceId,
142
- refNo: marketplaceOrder.orderNo
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
- const releaseOrderStatus = releaseOrders[0].status
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
- if (!disallowCancelStatuses.includes(releaseOrderStatus)) {
148
- await FulfillmentAPI.cancelReleaseOrder(fulfillmentCenter, {
170
+ const { items: releaseOrders }: any = await FulfillmentAPI.getOutboundOrders(fulfillmentCenter, {
149
171
  customerBizplaceId,
150
- releaseOrderId: releaseOrders[0].id
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.trackingNo
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.trackingNo
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 { ListParam, convertListParams } from '@things-factory/shell'
2
- import { getRepository } from 'typeorm'
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
- const convertedParams = convertListParams(params)
8
- const [items, total] = await getRepository(MarketplaceOrderShipping).findAndCount({
9
- ...convertedParams,
10
- relations: [
11
- 'domain',
12
- 'marketplaceOrderItems',
13
- 'marketplaceOrderItems.marketplaceProductVariation',
14
- 'marketplaceStore',
15
- 'creator',
16
- 'updater'
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
  }
@@ -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
+ }
@@ -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
+ }
@@ -0,0 +1,7 @@
1
+ import { marketplaceSalesReportsResolver } from './marketplace-sales-report'
2
+
3
+ export const MarketplaceReportResolver = {
4
+ Query: {
5
+ ...marketplaceSalesReportsResolver
6
+ }
7
+ }