@things-factory/marketplace-base 4.1.3 → 4.1.10

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 (129) hide show
  1. package/dist-server/entities/index.js +13 -10
  2. package/dist-server/entities/index.js.map +1 -1
  3. package/dist-server/entities/marketplace-order-item.js +3 -3
  4. package/dist-server/entities/marketplace-order-item.js.map +1 -1
  5. package/dist-server/entities/marketplace-order-shipping-item.js +77 -0
  6. package/dist-server/entities/marketplace-order-shipping-item.js.map +1 -0
  7. package/dist-server/entities/marketplace-order-shipping.js +6 -2
  8. package/dist-server/entities/marketplace-order-shipping.js.map +1 -1
  9. package/dist-server/graphql/resolvers/index.js +1 -0
  10. package/dist-server/graphql/resolvers/index.js.map +1 -1
  11. package/dist-server/graphql/resolvers/marketplace-order/auto-initialise-logistics-by-batch.js +9 -6
  12. package/dist-server/graphql/resolvers/marketplace-order/auto-initialise-logistics-by-batch.js.map +1 -1
  13. package/dist-server/graphql/resolvers/marketplace-order/auto-update-order-ready-to-ship.js +10 -5
  14. package/dist-server/graphql/resolvers/marketplace-order/auto-update-order-ready-to-ship.js.map +1 -1
  15. package/dist-server/graphql/resolvers/marketplace-order/generate-marketplace-order.js +58 -3
  16. package/dist-server/graphql/resolvers/marketplace-order/generate-marketplace-order.js.map +1 -1
  17. package/dist-server/graphql/resolvers/marketplace-order/get-etrax-order-document.js +3 -2
  18. package/dist-server/graphql/resolvers/marketplace-order/get-etrax-order-document.js.map +1 -1
  19. package/dist-server/graphql/resolvers/marketplace-order/get-order-document.js +14 -6
  20. package/dist-server/graphql/resolvers/marketplace-order/get-order-document.js.map +1 -1
  21. package/dist-server/graphql/resolvers/marketplace-order/initialise-lazada-logistics-by-batch.js +2 -1
  22. package/dist-server/graphql/resolvers/marketplace-order/initialise-lazada-logistics-by-batch.js.map +1 -1
  23. package/dist-server/graphql/resolvers/marketplace-order/initialise-logistics-by-batch.js +2 -0
  24. package/dist-server/graphql/resolvers/marketplace-order/initialise-logistics-by-batch.js.map +1 -1
  25. package/dist-server/graphql/resolvers/marketplace-order/marketplace-orders-for-batch-init.js +3 -2
  26. package/dist-server/graphql/resolvers/marketplace-order/marketplace-orders-for-batch-init.js.map +1 -1
  27. package/dist-server/graphql/resolvers/marketplace-order/marketplace-orders-for-export.js +4 -2
  28. package/dist-server/graphql/resolvers/marketplace-order/marketplace-orders-for-export.js.map +1 -1
  29. package/dist-server/graphql/resolvers/marketplace-order/marketplace-orders.js +2 -1
  30. package/dist-server/graphql/resolvers/marketplace-order/marketplace-orders.js.map +1 -1
  31. package/dist-server/graphql/resolvers/marketplace-order/split-orders-by-batch.js +72 -243
  32. package/dist-server/graphql/resolvers/marketplace-order/split-orders-by-batch.js.map +1 -1
  33. package/dist-server/graphql/resolvers/marketplace-order/sync-all-marketplace-order.js +82 -20
  34. package/dist-server/graphql/resolvers/marketplace-order/sync-all-marketplace-order.js.map +1 -1
  35. package/dist-server/graphql/resolvers/marketplace-order/sync-marketplace-order.js +73 -12
  36. package/dist-server/graphql/resolvers/marketplace-order/sync-marketplace-order.js.map +1 -1
  37. package/dist-server/graphql/resolvers/marketplace-order/update-order-ready-to-ship.js +65 -37
  38. package/dist-server/graphql/resolvers/marketplace-order/update-order-ready-to-ship.js.map +1 -1
  39. package/dist-server/graphql/resolvers/marketplace-order-shipping/marketplace-order-shipping.js +7 -4
  40. package/dist-server/graphql/resolvers/marketplace-order-shipping/marketplace-order-shipping.js.map +1 -1
  41. package/dist-server/graphql/resolvers/marketplace-order-shipping/marketplace-order-shippings.js +2 -1
  42. package/dist-server/graphql/resolvers/marketplace-order-shipping/marketplace-order-shippings.js.map +1 -1
  43. package/dist-server/graphql/resolvers/marketplace-order-shipping-item/create-marketplace-order-shipping-item.js +11 -0
  44. package/dist-server/graphql/resolvers/marketplace-order-shipping-item/create-marketplace-order-shipping-item.js.map +1 -0
  45. package/dist-server/graphql/resolvers/marketplace-order-shipping-item/delete-marketplace-order-shipping-item.js +12 -0
  46. package/dist-server/graphql/resolvers/marketplace-order-shipping-item/delete-marketplace-order-shipping-item.js.map +1 -0
  47. package/dist-server/graphql/resolvers/marketplace-order-shipping-item/delete-marketplace-order-shipping-items.js +15 -0
  48. package/dist-server/graphql/resolvers/marketplace-order-shipping-item/delete-marketplace-order-shipping-items.js.map +1 -0
  49. package/dist-server/graphql/resolvers/marketplace-order-shipping-item/index.js +14 -0
  50. package/dist-server/graphql/resolvers/marketplace-order-shipping-item/index.js.map +1 -0
  51. package/dist-server/graphql/resolvers/marketplace-order-shipping-item/marketplace-order-shipping-item.js +22 -0
  52. package/dist-server/graphql/resolvers/marketplace-order-shipping-item/marketplace-order-shipping-item.js.map +1 -0
  53. package/dist-server/graphql/resolvers/marketplace-order-shipping-item/marketplace-order-shipping-items.js +14 -0
  54. package/dist-server/graphql/resolvers/marketplace-order-shipping-item/marketplace-order-shipping-items.js.map +1 -0
  55. package/dist-server/graphql/resolvers/marketplace-order-shipping-item/update-marketplace-order-shipping-item.js +15 -0
  56. package/dist-server/graphql/resolvers/marketplace-order-shipping-item/update-marketplace-order-shipping-item.js.map +1 -0
  57. package/dist-server/graphql/resolvers/marketplace-order-shipping-item/update-multiple-marketplace-order-shipping-item.js +30 -0
  58. package/dist-server/graphql/resolvers/marketplace-order-shipping-item/update-multiple-marketplace-order-shipping-item.js.map +1 -0
  59. package/dist-server/graphql/resolvers/marketplace-report/marketplace-sales-report.js +2 -1
  60. package/dist-server/graphql/resolvers/marketplace-report/marketplace-sales-report.js.map +1 -1
  61. package/dist-server/graphql/types/index.js +1 -0
  62. package/dist-server/graphql/types/index.js.map +1 -1
  63. package/dist-server/graphql/types/marketplace-order/index.js +8 -7
  64. package/dist-server/graphql/types/marketplace-order/index.js.map +1 -1
  65. package/dist-server/graphql/types/marketplace-order/logistics-info.js +1 -0
  66. package/dist-server/graphql/types/marketplace-order/logistics-info.js.map +1 -1
  67. package/dist-server/graphql/types/marketplace-order-item/marketplace-order-item.js +1 -1
  68. package/dist-server/graphql/types/marketplace-order-item/new-marketplace-order-item.js +0 -1
  69. package/dist-server/graphql/types/marketplace-order-item/new-marketplace-order-item.js.map +1 -1
  70. package/dist-server/graphql/types/marketplace-order-shipping/marketplace-order-shipping-patch.js +0 -1
  71. package/dist-server/graphql/types/marketplace-order-shipping/marketplace-order-shipping-patch.js.map +1 -1
  72. package/dist-server/graphql/types/marketplace-order-shipping/marketplace-order-shipping.js +2 -1
  73. package/dist-server/graphql/types/marketplace-order-shipping/marketplace-order-shipping.js.map +1 -1
  74. package/dist-server/graphql/types/marketplace-order-shipping/new-marketplace-order-shipping.js +0 -1
  75. package/dist-server/graphql/types/marketplace-order-shipping/new-marketplace-order-shipping.js.map +1 -1
  76. package/dist-server/graphql/types/marketplace-order-shipping-item/index.js +47 -0
  77. package/dist-server/graphql/types/marketplace-order-shipping-item/index.js.map +1 -0
  78. package/dist-server/graphql/types/marketplace-order-shipping-item/marketplace-order-shipping-item-list.js +14 -0
  79. package/dist-server/graphql/types/marketplace-order-shipping-item/marketplace-order-shipping-item-list.js.map +1 -0
  80. package/dist-server/graphql/types/marketplace-order-shipping-item/marketplace-order-shipping-item-patch.js +19 -0
  81. package/dist-server/graphql/types/marketplace-order-shipping-item/marketplace-order-shipping-item-patch.js.map +1 -0
  82. package/dist-server/graphql/types/marketplace-order-shipping-item/marketplace-order-shipping-item.js +22 -0
  83. package/dist-server/graphql/types/marketplace-order-shipping-item/marketplace-order-shipping-item.js.map +1 -0
  84. package/dist-server/graphql/types/marketplace-order-shipping-item/new-marketplace-order-shipping-item.js +18 -0
  85. package/dist-server/graphql/types/marketplace-order-shipping-item/new-marketplace-order-shipping-item.js.map +1 -0
  86. package/package.json +6 -6
  87. package/server/entities/index.ts +15 -12
  88. package/server/entities/marketplace-order-item.ts +17 -5
  89. package/server/entities/marketplace-order-shipping-item.ts +55 -0
  90. package/server/entities/marketplace-order-shipping.ts +9 -3
  91. package/server/graphql/resolvers/index.ts +1 -0
  92. package/server/graphql/resolvers/marketplace-order/auto-initialise-logistics-by-batch.ts +9 -6
  93. package/server/graphql/resolvers/marketplace-order/auto-update-order-ready-to-ship.ts +16 -6
  94. package/server/graphql/resolvers/marketplace-order/generate-marketplace-order.ts +65 -3
  95. package/server/graphql/resolvers/marketplace-order/get-etrax-order-document.ts +5 -2
  96. package/server/graphql/resolvers/marketplace-order/get-order-document.ts +22 -7
  97. package/server/graphql/resolvers/marketplace-order/initialise-lazada-logistics-by-batch.ts +4 -2
  98. package/server/graphql/resolvers/marketplace-order/initialise-logistics-by-batch.ts +2 -0
  99. package/server/graphql/resolvers/marketplace-order/marketplace-orders-for-batch-init.ts +5 -2
  100. package/server/graphql/resolvers/marketplace-order/marketplace-orders-for-export.ts +7 -3
  101. package/server/graphql/resolvers/marketplace-order/marketplace-orders.ts +2 -1
  102. package/server/graphql/resolvers/marketplace-order/split-orders-by-batch.ts +84 -280
  103. package/server/graphql/resolvers/marketplace-order/sync-all-marketplace-order.ts +90 -19
  104. package/server/graphql/resolvers/marketplace-order/sync-marketplace-order.ts +73 -9
  105. package/server/graphql/resolvers/marketplace-order/update-order-ready-to-ship.ts +80 -42
  106. package/server/graphql/resolvers/marketplace-order-shipping/marketplace-order-shipping.ts +9 -4
  107. package/server/graphql/resolvers/marketplace-order-shipping/marketplace-order-shippings.ts +2 -1
  108. package/server/graphql/resolvers/marketplace-order-shipping-item/create-marketplace-order-shipping-item.ts +14 -0
  109. package/server/graphql/resolvers/marketplace-order-shipping-item/delete-marketplace-order-shipping-item.ts +10 -0
  110. package/server/graphql/resolvers/marketplace-order-shipping-item/delete-marketplace-order-shipping-items.ts +13 -0
  111. package/server/graphql/resolvers/marketplace-order-shipping-item/index.ts +20 -0
  112. package/server/graphql/resolvers/marketplace-order-shipping-item/marketplace-order-shipping-item.ts +21 -0
  113. package/server/graphql/resolvers/marketplace-order-shipping-item/marketplace-order-shipping-items.ts +16 -0
  114. package/server/graphql/resolvers/marketplace-order-shipping-item/update-marketplace-order-shipping-item.ts +18 -0
  115. package/server/graphql/resolvers/marketplace-order-shipping-item/update-multiple-marketplace-order-shipping-item.ts +44 -0
  116. package/server/graphql/resolvers/marketplace-report/marketplace-sales-report.ts +2 -1
  117. package/server/graphql/types/index.ts +1 -0
  118. package/server/graphql/types/marketplace-order/index.ts +8 -7
  119. package/server/graphql/types/marketplace-order/logistics-info.ts +1 -0
  120. package/server/graphql/types/marketplace-order-item/marketplace-order-item.ts +1 -1
  121. package/server/graphql/types/marketplace-order-item/new-marketplace-order-item.ts +0 -1
  122. package/server/graphql/types/marketplace-order-shipping/marketplace-order-shipping-patch.ts +0 -1
  123. package/server/graphql/types/marketplace-order-shipping/marketplace-order-shipping.ts +2 -1
  124. package/server/graphql/types/marketplace-order-shipping/new-marketplace-order-shipping.ts +0 -1
  125. package/server/graphql/types/marketplace-order-shipping-item/index.ts +32 -0
  126. package/server/graphql/types/marketplace-order-shipping-item/marketplace-order-shipping-item-list.ts +8 -0
  127. package/server/graphql/types/marketplace-order-shipping-item/marketplace-order-shipping-item-patch.ts +13 -0
  128. package/server/graphql/types/marketplace-order-shipping-item/marketplace-order-shipping-item.ts +16 -0
  129. package/server/graphql/types/marketplace-order-shipping-item/new-marketplace-order-shipping-item.ts +12 -0
@@ -1,4 +1,5 @@
1
- import { getRepository } from 'typeorm'
1
+ import { getRepository, IsNull } from 'typeorm'
2
+ import uuid from 'uuid/v4'
2
3
 
3
4
  import { User } from '@things-factory/auth-base'
4
5
  import { Bizplace, getCustomerBizplaces } from '@things-factory/biz-base'
@@ -11,6 +12,7 @@ import {
11
12
  MarketplaceOrder,
12
13
  MarketplaceOrderItem,
13
14
  MarketplaceOrderShipping,
15
+ MarketplaceOrderShippingItem,
14
16
  MarketplaceProductVariation
15
17
  } from '../../../entities'
16
18
  import { NoGenerator } from '../../../utils'
@@ -117,8 +119,9 @@ export const syncAllMarketplaceOrder = {
117
119
  'domain',
118
120
  'fulfillmentCenter',
119
121
  'marketplaceOrderItems',
120
- 'marketplaceOrderItems.marketplaceProductVariation',
121
- 'marketplaceOrderItems.marketplaceOrderShipping'
122
+ 'marketplaceOrderItems.marketplaceOrderShippingItems',
123
+ 'marketplaceOrderItems.marketplaceOrderShippingItems.marketplaceOrderShipping',
124
+ 'marketplaceOrderItems.marketplaceProductVariation'
122
125
  ]
123
126
  })
124
127
 
@@ -194,7 +197,9 @@ export const syncAllMarketplaceOrder = {
194
197
  let patch = {
195
198
  id: releaseOrder.id,
196
199
  marketplaceOrderStatus: marketplaceOrder.status,
197
- trackingNo: foundMarketplaceOrderShipping?.trackingNo
200
+ trackingNo: foundMarketplaceOrderShipping?.trackingNo == '[]'
201
+ ? foundMarketplaceOrderShipping.ownTrackingNo :
202
+ foundMarketplaceOrderShipping?.trackingNo
198
203
  ? foundMarketplaceOrderShipping.trackingNo
199
204
  : foundMarketplaceOrderShipping.ownTrackingNo,
200
205
  transporter: dropPickProvider ? dropPickProvider : marketplaceOrder.shippingProvider
@@ -216,7 +221,9 @@ export const syncAllMarketplaceOrder = {
216
221
  let patch = {
217
222
  id: releaseOrder.id,
218
223
  marketplaceOrderStatus: marketplaceOrder.status,
219
- trackingNo: foundMarketplaceOrderShipping?.trackingNo
224
+ trackingNo: foundMarketplaceOrderShipping?.trackingNo == '[]'
225
+ ? foundMarketplaceOrderShipping.ownTrackingNo :
226
+ foundMarketplaceOrderShipping?.trackingNo
220
227
  ? foundMarketplaceOrderShipping.trackingNo
221
228
  : foundMarketplaceOrderShipping.ownTrackingNo,
222
229
  transporter: dropPickProvider ? dropPickProvider : marketplaceOrder.shippingProvider
@@ -236,7 +243,7 @@ export const syncAllMarketplaceOrder = {
236
243
  })
237
244
 
238
245
  if (releaseOrders?.length) {
239
- for (var a = 0; a < releaseOrders.length; a++) {
246
+ for (let a = 0; a < releaseOrders.length; a++) {
240
247
  const releaseOrderId: string = releaseOrders[a].id
241
248
  await FulfillmentAPI.cancelReleaseOrder(fulfillmentCenter, {
242
249
  customerBizplaceId,
@@ -322,10 +329,12 @@ export const syncAllMarketplaceOrder = {
322
329
  attentionTo: orderShipping.attentionTo,
323
330
  city: orderShipping.city,
324
331
  country: orderShipping.country,
332
+ state: orderShipping?.state,
325
333
  postCode: orderShipping.postCode,
326
334
  phone1: orderShipping.phone1,
327
335
  phone2: orderShipping.phone2,
328
- trackingNo: order.trackingNo,
336
+ email: orderShipping?.email,
337
+ trackingNo: order?.trackingNo,
329
338
  shippingFee: orderShipping.shippingFee,
330
339
  actualShippingFee: orderShipping.actualShippingFee,
331
340
  marketplaceShippingFeeVoucher: orderShipping.marketplaceShippingFeeVoucher,
@@ -339,12 +348,18 @@ export const syncAllMarketplaceOrder = {
339
348
  } else {
340
349
  if (existingMarketplaceOrder?.marketplaceOrderItems) {
341
350
  let existingOrderShipping: MarketplaceOrderShipping
342
- existingOrderShipping = existingMarketplaceOrder.marketplaceOrderItems[0].marketplaceOrderShipping
351
+ existingOrderShipping =
352
+ existingMarketplaceOrder.marketplaceOrderItems[0].marketplaceOrderShippingItems[0]
353
+ .marketplaceOrderShipping
343
354
 
344
355
  marketplaceOrderShipping = {
345
356
  ...existingOrderShipping,
346
357
  ...marketplaceOrderShipping,
347
- trackingNo: order?.trackingNo ? order.trackingNo : existingOrderShipping.trackingNo,
358
+ trackingNo: marketplaceOrderShipping?.trackingNo
359
+ ? marketplaceOrderShipping.trackingNo
360
+ : existingOrderShipping?.trackingNo
361
+ ? existingOrderShipping.trackingNo
362
+ : marketplaceOrderShipping.trackingNo,
348
363
  updater: user
349
364
  }
350
365
 
@@ -364,10 +379,15 @@ export const syncAllMarketplaceOrder = {
364
379
  let foundVariations = []
365
380
  for (var j = 0; j < order.orderItems.length; j++) {
366
381
  var item = order.orderItems[j]
367
- let foundVariation = await getRepository(MarketplaceProductVariation).findOne({
368
- where: { domain: marketplaceStore.domain, variationId: item.variationId }
382
+ let foundVariationsQuery = await getRepository(MarketplaceProductVariation).find({
383
+ where: { domain: marketplaceStore.domain, variationId: item.variationId },
384
+ relations: ['domain', 'marketplaceProduct', 'marketplaceProduct.marketplaceStore']
369
385
  })
370
386
 
387
+ let foundVariation = foundVariationsQuery.filter(
388
+ fv => fv.marketplaceProduct.marketplaceStore.id == marketplaceStore.id
389
+ )[0]
390
+
371
391
  if (foundVariation) {
372
392
  foundVariations.push(foundVariation)
373
393
  }
@@ -393,9 +413,8 @@ export const syncAllMarketplaceOrder = {
393
413
  marketplaceOrderItem.status = marketplaceOrder.status
394
414
  marketplaceOrderItem.docRefNo = item.docRefNo
395
415
  marketplaceOrderItem.marketplaceProductVariation = foundVariation
396
- marketplaceOrderItem.marketplaceOrder = marketplaceOrder
397
416
  marketplaceOrderItem.trackingCode = order.trackingNo
398
- marketplaceOrderItem.marketplaceOrderShipping = savedMarketplaceOrderShipping
417
+ marketplaceOrderItem.marketplaceOrder = marketplaceOrder
399
418
  marketplaceOrderItem.originalPrice = item.originalPrice
400
419
  marketplaceOrderItem.discount = item.discount
401
420
  marketplaceOrderItem.promotionId = item.promotionId
@@ -416,7 +435,7 @@ export const syncAllMarketplaceOrder = {
416
435
  marketplaceOrderItem.promotionalChargesFlexiCombo = item.promotionalChargesFlexiCombo
417
436
  marketplaceOrderItem.autoShippingSubsidyMarketplace = item.autoShippingSubsidyMarketplace
418
437
  marketplaceOrderItem.originalShippingFee = item.originalShippingFee
419
- marketplaceOrderItem.taxAmount = item.autoShippingSubsidyMarketplace
438
+ marketplaceOrderItem.taxAmount = item.taxAmount
420
439
 
421
440
  marketplaceOrderItems.push({ ...marketplaceOrderItem })
422
441
 
@@ -436,7 +455,6 @@ export const syncAllMarketplaceOrder = {
436
455
  return {
437
456
  ...marketplaceOrderitem,
438
457
  status: order.status,
439
- marketplaceProductVariation: foundVariation,
440
458
  trackingCode: order.trackingNo
441
459
  }
442
460
  })
@@ -665,11 +683,10 @@ export const syncAllMarketplaceOrder = {
665
683
  relations: ['domain', 'marketplaceProduct', 'marketplaceProduct.marketplaceStore']
666
684
  })
667
685
 
668
- let item = order.orderItems.find(e => e.variationId == foundVariation.variationId)
669
686
  let activeVariations: MarketplaceProductVariation[] = allVariations.filter(
670
687
  variation => variation.marketplaceProduct.marketplaceStore.status != 'TERMINATED'
671
688
  )
672
-
689
+ let item = order.orderItems.find(e => e.variationId == foundVariation.variationId)
673
690
  await Promise.all(
674
691
  activeVariations.map(async variation => {
675
692
  await calculateReserveQtyForBundle(variation, marketplaceOrder.domain, item.qty)
@@ -683,8 +700,6 @@ export const syncAllMarketplaceOrder = {
683
700
  )
684
701
  }
685
702
 
686
- foundVariation = await getRepository(MarketplaceProductVariation).save(foundVariation)
687
-
688
703
  if (order?.orderShipping) {
689
704
  savedMarketplaceOrderShipping.totalWeight = orderTotalWeight
690
705
  savedMarketplaceOrderShipping = await getRepository(MarketplaceOrderShipping).save(
@@ -698,6 +713,62 @@ export const syncAllMarketplaceOrder = {
698
713
  await getRepository(MarketplaceOrder).save(marketplaceOrder)
699
714
  await getRepository(MarketplaceOrderItem).save(marketplaceOrderItems)
700
715
 
716
+ for (let i = 0; i < marketplaceOrderItems.length; i++) {
717
+ const marketplaceOrderItem: MarketplaceOrderItem = marketplaceOrderItems[i]
718
+ const marketplaceProductVariation: MarketplaceProductVariation =
719
+ marketplaceOrderItem.marketplaceProductVariation
720
+ let existingMarketplaceOrderShippingItems: MarketplaceOrderShippingItem[] = await getRepository(
721
+ MarketplaceOrderShippingItem
722
+ ).find({
723
+ where: { domain: marketplaceStore.domain, marketplaceOrderItem }
724
+ })
725
+
726
+ let product: Product = await getRepository(Product).findOne({
727
+ where: { domain: marketplaceStore.domain, sku: marketplaceProductVariation.sku, deletedAt: IsNull() },
728
+ relations: ['productDetails']
729
+ })
730
+
731
+ let productBundle: ProductBundle
732
+ if (!product) {
733
+ productBundle = await getRepository(ProductBundle).findOne({
734
+ where: { domain: marketplaceStore.domain, sku: marketplaceProductVariation.sku },
735
+ relations: ['productBundleSettings', 'productBundleSettings.product']
736
+ })
737
+ }
738
+
739
+ if (existingMarketplaceOrderShippingItems && existingMarketplaceOrderShippingItems?.length) {
740
+ } else {
741
+ if (productBundle) {
742
+ const productBundleSettings: ProductBundleSetting[] = productBundle.productBundleSettings
743
+ let marketplaceOrderShippingItems: MarketplaceOrderShippingItem[] = []
744
+ productBundleSettings.map(productBundleSetting => {
745
+ let marketplaceOrderShippingItem: MarketplaceOrderShippingItem =
746
+ new MarketplaceOrderShippingItem()
747
+ marketplaceOrderShippingItem.name = uuid()
748
+ marketplaceOrderShippingItem.qty = marketplaceOrderItem.qty * productBundleSetting.bundleQty
749
+ marketplaceOrderShippingItem.domain = marketplaceStore.domain
750
+ marketplaceOrderShippingItem.marketplaceOrderItem = marketplaceOrderItem
751
+ marketplaceOrderShippingItem.marketplaceOrderShipping = savedMarketplaceOrderShipping
752
+ marketplaceOrderShippingItem.product = productBundleSetting.product
753
+
754
+ marketplaceOrderShippingItems.push(marketplaceOrderShippingItem)
755
+ })
756
+
757
+ await getRepository(MarketplaceOrderShippingItem).save(marketplaceOrderShippingItems)
758
+ } else {
759
+ let marketplaceOrderShippingItem: MarketplaceOrderShippingItem = new MarketplaceOrderShippingItem()
760
+ marketplaceOrderShippingItem.name = uuid()
761
+ marketplaceOrderShippingItem.qty = marketplaceOrderItem.qty
762
+ marketplaceOrderShippingItem.domain = marketplaceStore.domain
763
+ marketplaceOrderShippingItem.marketplaceOrderItem = marketplaceOrderItem
764
+ marketplaceOrderShippingItem.marketplaceOrderShipping = savedMarketplaceOrderShipping
765
+ marketplaceOrderShippingItem.product = product ? product : null
766
+
767
+ await getRepository(MarketplaceOrderShippingItem).save(marketplaceOrderShippingItem)
768
+ }
769
+ }
770
+ }
771
+
701
772
  if (m == marketplaceOrders.length - 1) {
702
773
  lastOrderId = order.name
703
774
  }
@@ -1,4 +1,5 @@
1
- import { EntityManager } from 'typeorm'
1
+ import { EntityManager, IsNull } from 'typeorm'
2
+ import uuid from 'uuid/v4'
2
3
 
3
4
  import { User } from '@things-factory/auth-base'
4
5
  import { Bizplace, getCustomerBizplaces } from '@things-factory/biz-base'
@@ -11,6 +12,7 @@ import {
11
12
  MarketplaceOrder,
12
13
  MarketplaceOrderItem,
13
14
  MarketplaceOrderShipping,
15
+ MarketplaceOrderShippingItem,
14
16
  MarketplaceProductVariation
15
17
  } from '../../../entities'
16
18
  import { NoGenerator } from '../../../utils'
@@ -100,8 +102,9 @@ export const syncMarketplaceOrder = {
100
102
  'domain',
101
103
  'fulfillmentCenter',
102
104
  'marketplaceOrderItems',
103
- 'marketplaceOrderItems.marketplaceProductVariation',
104
- 'marketplaceOrderItems.marketplaceOrderShipping'
105
+ 'marketplaceOrderItems.marketplaceOrderShippingItems',
106
+ 'marketplaceOrderItems.marketplaceOrderShippingItems.marketplaceOrderShipping',
107
+ 'marketplaceOrderItems.marketplaceProductVariation'
105
108
  ]
106
109
  })
107
110
 
@@ -173,7 +176,9 @@ export const syncMarketplaceOrder = {
173
176
  let patch = {
174
177
  id: releaseOrder.id,
175
178
  marketplaceOrderStatus: marketplaceOrder.status,
176
- trackingNo: foundMarketplaceOrderShipping?.trackingNo
179
+ trackingNo: foundMarketplaceOrderShipping?.trackingNo == '[]'
180
+ ? foundMarketplaceOrderShipping.ownTrackingNo :
181
+ foundMarketplaceOrderShipping?.trackingNo
177
182
  ? foundMarketplaceOrderShipping.trackingNo
178
183
  : foundMarketplaceOrderShipping.ownTrackingNo,
179
184
  transporter: dropPickProvider ? dropPickProvider : marketplaceOrder.shippingProvider
@@ -195,7 +200,9 @@ export const syncMarketplaceOrder = {
195
200
  let patch = {
196
201
  id: releaseOrder.id,
197
202
  marketplaceOrderStatus: marketplaceOrder.status,
198
- trackingNo: foundMarketplaceOrderShipping?.trackingNo
203
+ trackingNo: foundMarketplaceOrderShipping?.trackingNo == '[]'
204
+ ? foundMarketplaceOrderShipping.ownTrackingNo :
205
+ foundMarketplaceOrderShipping?.trackingNo
199
206
  ? foundMarketplaceOrderShipping.trackingNo
200
207
  : foundMarketplaceOrderShipping.ownTrackingNo,
201
208
  transporter: dropPickProvider ? dropPickProvider : marketplaceOrder.shippingProvider
@@ -317,7 +324,9 @@ export const syncMarketplaceOrder = {
317
324
  } else {
318
325
  if (existingMarketplaceOrder?.marketplaceOrderItems) {
319
326
  let existingOrderShipping: MarketplaceOrderShipping
320
- existingOrderShipping = existingMarketplaceOrder.marketplaceOrderItems[0].marketplaceOrderShipping
327
+ existingOrderShipping =
328
+ existingMarketplaceOrder.marketplaceOrderItems[0].marketplaceOrderShippingItems[0]
329
+ .marketplaceOrderShipping
321
330
 
322
331
  marketplaceOrderShipping = {
323
332
  ...existingOrderShipping,
@@ -346,11 +355,13 @@ export const syncMarketplaceOrder = {
346
355
  let foundVariations = []
347
356
  for (var j = 0; j < order.orderItems.length; j++) {
348
357
  var item = order.orderItems[j]
349
- let foundVariation = await tx.getRepository(MarketplaceProductVariation).findOne({
358
+ let foundVariationsQuery = await tx.getRepository(MarketplaceProductVariation).find({
350
359
  where: { domain: marketplaceStore.domain, variationId: item.variationId },
351
360
  relations: ['domain', 'marketplaceProduct', 'marketplaceProduct.marketplaceStore']
352
361
  })
353
362
 
363
+ let foundVariation = foundVariationsQuery.filter(fv => fv.marketplaceProduct.marketplaceStore.id == marketplaceStore.id)[0]
364
+
354
365
  if (foundVariation) {
355
366
  foundVariations.push(foundVariation)
356
367
  }
@@ -378,7 +389,6 @@ export const syncMarketplaceOrder = {
378
389
  marketplaceOrderItem.marketplaceProductVariation = foundVariation
379
390
  marketplaceOrderItem.trackingCode = order.trackingNo
380
391
  marketplaceOrderItem.marketplaceOrder = marketplaceOrder
381
- marketplaceOrderItem.marketplaceOrderShipping = savedMarketplaceOrderShipping
382
392
  marketplaceOrderItem.originalPrice = item.originalPrice
383
393
  marketplaceOrderItem.discount = item.discount
384
394
  marketplaceOrderItem.promotionId = item.promotionId
@@ -419,7 +429,6 @@ export const syncMarketplaceOrder = {
419
429
  return {
420
430
  ...marketplaceOrderitem,
421
431
  status: order.status,
422
- marketplaceProductVariation: foundVariation,
423
432
  trackingCode: order.trackingNo
424
433
  }
425
434
  })
@@ -676,6 +685,61 @@ export const syncMarketplaceOrder = {
676
685
  await tx.getRepository(MarketplaceOrder).save(marketplaceOrder)
677
686
  await tx.getRepository(MarketplaceOrderItem).save(marketplaceOrderItems)
678
687
 
688
+ for (let i = 0; i < marketplaceOrderItems.length; i++) {
689
+ const marketplaceOrderItem: MarketplaceOrderItem = marketplaceOrderItems[i]
690
+ const marketplaceProductVariation: MarketplaceProductVariation =
691
+ marketplaceOrderItem.marketplaceProductVariation
692
+ let existingMarketplaceOrderShippingItems: MarketplaceOrderShippingItem[] = await tx
693
+ .getRepository(MarketplaceOrderShippingItem)
694
+ .find({
695
+ where: { domain: marketplaceStore.domain, marketplaceOrderItem }
696
+ })
697
+
698
+ let product: Product = await tx.getRepository(Product).findOne({
699
+ where: { domain: marketplaceStore.domain, sku: marketplaceProductVariation.sku, deletedAt: IsNull() },
700
+ relations: ['productDetails']
701
+ })
702
+
703
+ let productBundle: ProductBundle
704
+ if (!product) {
705
+ productBundle = await tx.getRepository(ProductBundle).findOne({
706
+ where: { domain: marketplaceStore.domain, sku: marketplaceProductVariation.sku },
707
+ relations: ['productBundleSettings', 'productBundleSettings.product']
708
+ })
709
+ }
710
+
711
+ if (existingMarketplaceOrderShippingItems && existingMarketplaceOrderShippingItems?.length) {
712
+ } else {
713
+ if (productBundle) {
714
+ const productBundleSettings: ProductBundleSetting[] = productBundle.productBundleSettings
715
+ let marketplaceOrderShippingItems: MarketplaceOrderShippingItem[] = []
716
+ productBundleSettings.map(productBundleSetting => {
717
+ let marketplaceOrderShippingItem: MarketplaceOrderShippingItem = new MarketplaceOrderShippingItem()
718
+ marketplaceOrderShippingItem.name = uuid()
719
+ marketplaceOrderShippingItem.qty = marketplaceOrderItem.qty * productBundleSetting.bundleQty
720
+ marketplaceOrderShippingItem.domain = marketplaceStore.domain
721
+ marketplaceOrderShippingItem.marketplaceOrderItem = marketplaceOrderItem
722
+ marketplaceOrderShippingItem.marketplaceOrderShipping = savedMarketplaceOrderShipping
723
+ marketplaceOrderShippingItem.product = productBundleSetting.product
724
+
725
+ marketplaceOrderShippingItems.push(marketplaceOrderShippingItem)
726
+ })
727
+
728
+ await tx.getRepository(MarketplaceOrderShippingItem).save(marketplaceOrderShippingItems)
729
+ } else {
730
+ let marketplaceOrderShippingItem: MarketplaceOrderShippingItem = new MarketplaceOrderShippingItem()
731
+ marketplaceOrderShippingItem.name = uuid()
732
+ marketplaceOrderShippingItem.qty = marketplaceOrderItem.qty
733
+ marketplaceOrderShippingItem.domain = marketplaceStore.domain
734
+ marketplaceOrderShippingItem.marketplaceOrderItem = marketplaceOrderItem
735
+ marketplaceOrderShippingItem.marketplaceOrderShipping = savedMarketplaceOrderShipping
736
+ marketplaceOrderShippingItem.product = product ? product : null
737
+
738
+ await tx.getRepository(MarketplaceOrderShippingItem).save(marketplaceOrderShippingItem)
739
+ }
740
+ }
741
+ }
742
+
679
743
  if (i == marketplaceOrders.length - 1) {
680
744
  lastOrderId = order.name
681
745
  }
@@ -1,18 +1,28 @@
1
1
  import { EntityManager } from 'typeorm'
2
2
 
3
3
  import { MarketplaceStore, StoreAPI } from '@things-factory/integration-marketplace'
4
+ import { Domain } from '@things-factory/shell'
4
5
 
5
- import { MarketplaceOrder, MarketplaceOrderItem, MarketplaceOrderShipping } from '../../../entities'
6
+ import {
7
+ MarketplaceOrder,
8
+ MarketplaceOrderItem,
9
+ MarketplaceOrderShipping,
10
+ MarketplaceOrderShippingItem
11
+ } from '../../../entities'
6
12
 
7
13
  export const updateOrderReadyToShip = {
8
- async updateOrderReadyToShip(_: any, { shippingProvider, deliveryType, orderNo }, context: any) {
14
+ async updateOrderReadyToShip(_: any, { shippingProvider, deliveryType, orderNo, orderId, domainId }, context: any) {
9
15
  const { tx }: { tx: EntityManager } = context.state
16
+
17
+ const domain: Domain = await tx.getRepository(Domain).findOne(domainId)
18
+
10
19
  let foundMarketplaceOrder: MarketplaceOrder = await tx.getRepository(MarketplaceOrder).findOne({
11
- where: { name: orderNo },
20
+ where: { name: orderId, orderNo, domain },
12
21
  relations: [
13
22
  'marketplaceStore',
14
23
  'marketplaceOrderItems',
15
- 'marketplaceOrderItems.marketplaceOrderShipping',
24
+ 'marketplaceOrderItems.marketplaceOrderShippingItems',
25
+ 'marketplaceOrderItems.marketplaceOrderShippingItems.marketplaceOrderShipping',
16
26
  'marketplaceOrderItems.marketplaceProductVariation'
17
27
  ]
18
28
  })
@@ -25,54 +35,82 @@ export const updateOrderReadyToShip = {
25
35
  let marketplaceOrderShippings: MarketplaceOrderShipping[] = []
26
36
 
27
37
  foundMarketplaceOrder.marketplaceOrderItems.map(item => {
28
- if (item?.marketplaceOrderShipping) {
29
- marketplaceOrderShippings.push(item.marketplaceOrderShipping)
30
- }
38
+ const marketplaceOrderShippingItems: MarketplaceOrderShippingItem[] = item.marketplaceOrderShippingItems
39
+ marketplaceOrderShippingItems.map(itm => {
40
+ if (itm?.marketplaceOrderShipping) {
41
+ marketplaceOrderShippings.push(itm.marketplaceOrderShipping)
42
+ }
43
+ })
31
44
  })
32
45
 
33
46
  const uniqueMarketplaceOrderShippings = Array.from(new Set(marketplaceOrderShippings.map(a => a.id))).map(id => {
34
47
  return marketplaceOrderShippings.find(a => a.id === id)
35
48
  })
36
49
 
37
- if (uniqueMarketplaceOrderShippings.some(marketplaceOrderShipping => marketplaceOrderShipping.trackingNo != null)) {
38
- uniqueMarketplaceOrderShippings.map((orderShipping: MarketplaceOrderShipping) => {
39
- if (orderShipping?.trackingNo) {
40
- const trackingNoInfo: any[] = JSON.parse(orderShipping.trackingNo)
41
- const orderTrackingNos: string[] = trackingNoInfo.map(item => item.tracking_code)
42
- const uniqueTrackingNos = [...new Set(orderTrackingNos)]
43
-
44
- let orderItemIds: string[] = []
45
-
46
- if (uniqueTrackingNos?.length == 1) {
47
- orderItemIds = trackingNoInfo.map(item => item.order_item_id)
48
- trackingInfoArr.push({ orderItemIds, trackingNo: uniqueTrackingNos[0] })
49
- } else {
50
- uniqueTrackingNos.map(trackingNo => {
51
- orderItemIds = trackingNoInfo
52
- .filter(info => info.tracking_code === trackingNo)
53
- .map(filteredInfo => filteredInfo.order_item_id)
54
-
55
- trackingInfoArr.push({ orderItemIds, trackingNo })
56
- })
50
+ if (marketplaceStore.platform === 'lazada') {
51
+ if (
52
+ uniqueMarketplaceOrderShippings.some(marketplaceOrderShipping => marketplaceOrderShipping.trackingNo != null)
53
+ ) {
54
+ uniqueMarketplaceOrderShippings.map((orderShipping: MarketplaceOrderShipping) => {
55
+ if (orderShipping?.trackingNo) {
56
+ const trackingNoInfo: any[] = JSON.parse(orderShipping.trackingNo)
57
+ const orderTrackingNos: string[] = trackingNoInfo.map(item => item.tracking_code)
58
+ const uniqueTrackingNos = [...new Set(orderTrackingNos)]
59
+
60
+ let orderItemIds: string[] = []
61
+
62
+ if (uniqueTrackingNos?.length == 1) {
63
+ orderItemIds = trackingNoInfo.map(item => item.order_item_id)
64
+ trackingInfoArr.push({ orderItemIds, trackingNo: uniqueTrackingNos[0] })
65
+ } else {
66
+ uniqueTrackingNos.map(trackingNo => {
67
+ orderItemIds = trackingNoInfo
68
+ .filter(info => info.tracking_code === trackingNo)
69
+ .map(filteredInfo => filteredInfo.order_item_id)
70
+
71
+ trackingInfoArr.push({ orderItemIds, trackingNo })
72
+ })
73
+ }
57
74
  }
58
- }
59
- })
60
- }
61
-
62
- for (var i = 0; i < trackingInfoArr?.length; i++) {
63
- const trackingInfo = trackingInfoArr[i]
64
- const trackingNo = trackingInfo.trackingNo
65
- const orderItemId = trackingInfo.orderItemIds
75
+ })
76
+ }
66
77
 
67
- await StoreAPI.setStoreOrderStatusReadyToShip(marketplaceStore, {
68
- shipmentProvider: shippingProvider,
69
- deliveryType,
70
- orderItemId,
71
- trackingNo
72
- })
78
+ for (var i = 0; i < trackingInfoArr?.length; i++) {
79
+ const trackingInfo = trackingInfoArr[i]
80
+ const trackingNo = trackingInfo.trackingNo
81
+ const orderItemId = trackingInfo.orderItemIds
82
+
83
+ const res = await StoreAPI.setStoreOrderStatusReadyToShip(marketplaceStore, {
84
+ shipmentProvider: shippingProvider,
85
+ deliveryType,
86
+ orderItemId,
87
+ trackingNo
88
+ })
89
+ }
90
+ } else {
91
+ let mos = uniqueMarketplaceOrderShippings.filter(mos => mos.trackingNo != null || mos.ownTrackingNo != null)
92
+ if (mos.length > 0) {
93
+ let trackingNo = mos[0].ownTrackingNo
94
+ const note = mos[0].trackingUrl || trackingNo
95
+
96
+ const res = await StoreAPI.setStoreOrderStatusReadyToShip(marketplaceStore, {
97
+ orderId,
98
+ trackingUrl: mos[0].trackingUrl || '',
99
+ trackingNo,
100
+ order: foundMarketplaceOrder,
101
+ note
102
+ })
103
+
104
+ if (marketplaceStore.platform === 'woocommerce') {
105
+ await StoreAPI.updateOrderStatus(marketplaceStore, {
106
+ orderId,
107
+ status: 'READY_TO_SHIP'
108
+ })
109
+ }
110
+ }
73
111
  }
74
112
 
75
- const updatedOrder = await StoreAPI.getStoreOrder(marketplaceStore, { orderId: orderNo })
113
+ const updatedOrder = await StoreAPI.getStoreOrder(marketplaceStore, { orderId })
76
114
 
77
115
  foundMarketplaceOrder.status = updatedOrder.status
78
116
  foundMarketplaceOrder.orderUpdatedAt = updatedOrder.orderUpdatedAt
@@ -1,20 +1,25 @@
1
1
  import { getRepository } from 'typeorm'
2
+
2
3
  import { MarketplaceOrderShipping } from '../../../entities'
3
4
 
4
5
  export const marketplaceOrderShippingResolver = {
5
6
  async marketplaceOrderShipping(_: any, { name }, context: any) {
6
7
  const repository = getRepository(MarketplaceOrderShipping)
7
8
 
8
- return await getRepository(MarketplaceOrderShipping).findOne({
9
+ const items: MarketplaceOrderShipping = await repository.findOne({
9
10
  where: { domain: context.state.domain, name },
10
11
  relations: [
11
12
  'domain',
12
13
  'creator',
13
14
  'updater',
14
- 'marketplaceOrderItems',
15
- 'marketplaceOrderItems.marketplaceProductVariation',
16
- 'marketplaceOrderItems.marketplaceProductVariation.marketplaceProduct'
15
+ 'marketplaceOrderShippingItems',
16
+ 'marketplaceOrderShippingItems.product',
17
+ 'marketplaceOrderShippingItems.marketplaceOrderItem',
18
+ 'marketplaceOrderShippingItems.marketplaceOrderItem.marketplaceProductVariation',
19
+ 'marketplaceOrderShippingItems.marketplaceOrderItem.marketplaceProductVariation.marketplaceProduct'
17
20
  ]
18
21
  })
22
+
23
+ return items
19
24
  }
20
25
  }
@@ -12,7 +12,8 @@ export const marketplaceOrderShippingsResolver = {
12
12
 
13
13
  const qb: SelectQueryBuilder<MarketplaceOrderShipping> = getRepository(MarketplaceOrderShipping)
14
14
  .createQueryBuilder('MOS')
15
- .innerJoinAndSelect('MOS.marketplaceOrderItems', 'MOI')
15
+ .innerJoinAndSelect('MOS.marketplaceOrderShippingItems', 'MOSI')
16
+ .innerJoinAndSelect('MOSI.marketplaceOrderItem', 'MOI')
16
17
  .innerJoinAndSelect('MOI.marketplaceOrder', 'MO')
17
18
  .innerJoinAndSelect('MOI.marketplaceProductVariation', 'MPV')
18
19
  .innerJoinAndSelect('MOS.marketplaceStore', 'MS')
@@ -0,0 +1,14 @@
1
+ import { getRepository } from 'typeorm'
2
+
3
+ import { MarketplaceOrderShippingItem } from '../../../entities'
4
+
5
+ export const createMarketplaceOrderShippingItem = {
6
+ async createMarketplaceOrderShippingItem(_: any, { marketplaceOrderShippingItem }, context: any) {
7
+ return await getRepository(MarketplaceOrderShippingItem).save({
8
+ ...marketplaceOrderShippingItem,
9
+ domain: context.state.domain,
10
+ creator: context.state.user,
11
+ updater: context.state.user
12
+ })
13
+ }
14
+ }
@@ -0,0 +1,10 @@
1
+ import { getRepository } from 'typeorm'
2
+
3
+ import { MarketplaceOrderShippingItem } from '../../../entities'
4
+
5
+ export const deleteMarketplaceOrderShippingItem = {
6
+ async deleteMarketplaceOrderShippingItem(_: any, { name }, context: any) {
7
+ await getRepository(MarketplaceOrderShippingItem).delete({ domain: context.state.domain, name })
8
+ return true
9
+ }
10
+ }
@@ -0,0 +1,13 @@
1
+ import { getRepository, In } from 'typeorm'
2
+
3
+ import { MarketplaceOrderShippingItem } from '../../../entities'
4
+
5
+ export const deleteMarketplaceOrderShippingItems = {
6
+ async deleteMarketplaceOrderShippingItems(_: any, { names }, context: any) {
7
+ await getRepository(MarketplaceOrderShippingItem).delete({
8
+ domain: context.state.domain,
9
+ name: In(names)
10
+ })
11
+ return true
12
+ }
13
+ }
@@ -0,0 +1,20 @@
1
+ import { createMarketplaceOrderShippingItem } from './create-marketplace-order-shipping-item'
2
+ import { deleteMarketplaceOrderShippingItem } from './delete-marketplace-order-shipping-item'
3
+ import { deleteMarketplaceOrderShippingItems } from './delete-marketplace-order-shipping-items'
4
+ import { marketplaceOrderShippingItemResolver } from './marketplace-order-shipping-item'
5
+ import { updateMarketplaceOrderShippingItem } from './update-marketplace-order-shipping-item'
6
+ import { updateMultipleMarketplaceOrderShippingItem } from './update-multiple-marketplace-order-shipping-item'
7
+
8
+ export const MarketplaceOrderShippingItemResolver = {
9
+ Query: {
10
+ ...marketplaceOrderShippingItemResolver,
11
+ ...marketplaceOrderShippingItemResolver
12
+ },
13
+ Mutation: {
14
+ ...updateMarketplaceOrderShippingItem,
15
+ ...updateMultipleMarketplaceOrderShippingItem,
16
+ ...createMarketplaceOrderShippingItem,
17
+ ...deleteMarketplaceOrderShippingItem,
18
+ ...deleteMarketplaceOrderShippingItems
19
+ }
20
+ }
@@ -0,0 +1,21 @@
1
+ import { getRepository } from 'typeorm'
2
+
3
+ import { MarketplaceOrderShippingItem } from '../../../entities'
4
+
5
+ export const marketplaceOrderShippingItemResolver = {
6
+ async marketplaceOrderShippingItem(_: any, { name }, context: any) {
7
+ const repository = getRepository(MarketplaceOrderShippingItem)
8
+
9
+ return await getRepository(MarketplaceOrderShippingItem).findOne({
10
+ where: { domain: context.state.domain, name },
11
+ relations: [
12
+ 'domain',
13
+ 'creator',
14
+ 'updater',
15
+ 'marketplaceOrderItem',
16
+ 'marketplaceOrderItem.marketplaceProductVariation',
17
+ 'marketplaceOrderItem.marketplaceProductVariation.marketplaceProduct'
18
+ ]
19
+ })
20
+ }
21
+ }