@things-factory/marketplace-base 8.0.0-beta.9 → 8.0.2

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 (229) hide show
  1. package/dist-server/tsconfig.tsbuildinfo +1 -1
  2. package/package.json +7 -7
  3. package/server/constants/attachment.ts +3 -0
  4. package/server/constants/index.ts +4 -0
  5. package/server/constants/order.ts +11 -0
  6. package/server/constants/platform.ts +7 -0
  7. package/server/constants/product.ts +5 -0
  8. package/server/constants/reserve-qty-order-statuses.ts +7 -0
  9. package/server/controllers/index.ts +0 -0
  10. package/server/entities/index.ts +45 -0
  11. package/server/entities/marketplace-order-item.ts +137 -0
  12. package/server/entities/marketplace-order-shipping-item.ts +55 -0
  13. package/server/entities/marketplace-order-shipping.ts +168 -0
  14. package/server/entities/marketplace-order.ts +141 -0
  15. package/server/entities/marketplace-product-attribute.ts +83 -0
  16. package/server/entities/marketplace-product-category.ts +53 -0
  17. package/server/entities/marketplace-product-variation-price.ts +63 -0
  18. package/server/entities/marketplace-product-variation.ts +147 -0
  19. package/server/entities/marketplace-product.ts +164 -0
  20. package/server/entities/marketplace-refund-order-item.ts +56 -0
  21. package/server/entities/marketplace-refund-order.ts +51 -0
  22. package/server/entities/marketplace-setting.ts +49 -0
  23. package/server/entities/store-replenishment-item.ts +48 -0
  24. package/server/entities/store-replenishment.ts +79 -0
  25. package/server/graphql/index.ts +9 -0
  26. package/server/graphql/resolvers/index.ts +14 -0
  27. package/server/graphql/resolvers/marketplace-order/auto-initialise-logistics-by-batch.ts +164 -0
  28. package/server/graphql/resolvers/marketplace-order/auto-update-order-ready-to-ship.ts +136 -0
  29. package/server/graphql/resolvers/marketplace-order/cancel-marketplace-order.ts +64 -0
  30. package/server/graphql/resolvers/marketplace-order/create-marketplace-order-note.ts +21 -0
  31. package/server/graphql/resolvers/marketplace-order/dashboard-marketplace-orders.ts +82 -0
  32. package/server/graphql/resolvers/marketplace-order/dashboard-marketplace-sales-average.ts +82 -0
  33. package/server/graphql/resolvers/marketplace-order/dashboard-marketplace-sales.ts +93 -0
  34. package/server/graphql/resolvers/marketplace-order/delete-marketplace-orders.ts +17 -0
  35. package/server/graphql/resolvers/marketplace-order/generate-marketplace-order.ts +180 -0
  36. package/server/graphql/resolvers/marketplace-order/get-address-list.ts +9 -0
  37. package/server/graphql/resolvers/marketplace-order/get-branch-list.ts +9 -0
  38. package/server/graphql/resolvers/marketplace-order/get-etrax-order-document.ts +49 -0
  39. package/server/graphql/resolvers/marketplace-order/get-logistics-param.ts +47 -0
  40. package/server/graphql/resolvers/marketplace-order/get-order-document.ts +149 -0
  41. package/server/graphql/resolvers/marketplace-order/get-store-logistics.ts +9 -0
  42. package/server/graphql/resolvers/marketplace-order/get-time-slot.ts +9 -0
  43. package/server/graphql/resolvers/marketplace-order/index.ts +75 -0
  44. package/server/graphql/resolvers/marketplace-order/initialise-lazada-logistics-by-batch.ts +165 -0
  45. package/server/graphql/resolvers/marketplace-order/initialise-logistics-by-batch.ts +41 -0
  46. package/server/graphql/resolvers/marketplace-order/initialise-logistics.ts +29 -0
  47. package/server/graphql/resolvers/marketplace-order/initialise-shopee-logistics-by-batch.ts +97 -0
  48. package/server/graphql/resolvers/marketplace-order/marketplace-order.ts +12 -0
  49. package/server/graphql/resolvers/marketplace-order/marketplace-orders-for-batch-init.ts +52 -0
  50. package/server/graphql/resolvers/marketplace-order/marketplace-orders-for-export.ts +63 -0
  51. package/server/graphql/resolvers/marketplace-order/marketplace-orders.ts +56 -0
  52. package/server/graphql/resolvers/marketplace-order/set-marketplace-order-delivered.ts +25 -0
  53. package/server/graphql/resolvers/marketplace-order/set-marketplace-order-failed-delivery.ts +25 -0
  54. package/server/graphql/resolvers/marketplace-order/set-own-shipping-provider-by-orders.ts +39 -0
  55. package/server/graphql/resolvers/marketplace-order/split-orders-by-batch.ts +245 -0
  56. package/server/graphql/resolvers/marketplace-order/sync-all-marketplace-order.ts +39 -0
  57. package/server/graphql/resolvers/marketplace-order/sync-marketplace-order.ts +940 -0
  58. package/server/graphql/resolvers/marketplace-order/sync-marketplace-orders-by-platform.ts +31 -0
  59. package/server/graphql/resolvers/marketplace-order/sync-shopee-awb.ts +49 -0
  60. package/server/graphql/resolvers/marketplace-order/update-marketplace-order.ts +35 -0
  61. package/server/graphql/resolvers/marketplace-order/update-order-ready-to-ship.ts +142 -0
  62. package/server/graphql/resolvers/marketplace-order-item/create-marketplace-order-item.ts +14 -0
  63. package/server/graphql/resolvers/marketplace-order-item/delete-marketplace-order-item.ts +10 -0
  64. package/server/graphql/resolvers/marketplace-order-item/delete-marketplace-order-items.ts +17 -0
  65. package/server/graphql/resolvers/marketplace-order-item/index.ts +22 -0
  66. package/server/graphql/resolvers/marketplace-order-item/marketplace-order-item.ts +14 -0
  67. package/server/graphql/resolvers/marketplace-order-item/marketplace-order-items.ts +15 -0
  68. package/server/graphql/resolvers/marketplace-order-item/update-marketplace-order-item.ts +18 -0
  69. package/server/graphql/resolvers/marketplace-order-item/update-multiple-marketplace-order-item.ts +44 -0
  70. package/server/graphql/resolvers/marketplace-order-shipping/create-marketplace-order-shipping.ts +14 -0
  71. package/server/graphql/resolvers/marketplace-order-shipping/delete-marketplace-order-shipping.ts +10 -0
  72. package/server/graphql/resolvers/marketplace-order-shipping/delete-marketplace-order-shippings.ts +17 -0
  73. package/server/graphql/resolvers/marketplace-order-shipping/index.ts +23 -0
  74. package/server/graphql/resolvers/marketplace-order-shipping/marketplace-order-shipping.ts +25 -0
  75. package/server/graphql/resolvers/marketplace-order-shipping/marketplace-order-shippings-for-batch-init.ts +88 -0
  76. package/server/graphql/resolvers/marketplace-order-shipping/marketplace-order-shippings.ts +43 -0
  77. package/server/graphql/resolvers/marketplace-order-shipping/update-marketplace-order-shipping.ts +32 -0
  78. package/server/graphql/resolvers/marketplace-order-shipping/update-multiple-marketplace-order-shipping.ts +44 -0
  79. package/server/graphql/resolvers/marketplace-order-shipping-item/create-marketplace-order-shipping-item.ts +14 -0
  80. package/server/graphql/resolvers/marketplace-order-shipping-item/delete-marketplace-order-shipping-item.ts +10 -0
  81. package/server/graphql/resolvers/marketplace-order-shipping-item/delete-marketplace-order-shipping-items.ts +15 -0
  82. package/server/graphql/resolvers/marketplace-order-shipping-item/index.ts +20 -0
  83. package/server/graphql/resolvers/marketplace-order-shipping-item/marketplace-order-shipping-item.ts +21 -0
  84. package/server/graphql/resolvers/marketplace-order-shipping-item/marketplace-order-shipping-items.ts +14 -0
  85. package/server/graphql/resolvers/marketplace-order-shipping-item/update-marketplace-order-shipping-item.ts +18 -0
  86. package/server/graphql/resolvers/marketplace-order-shipping-item/update-multiple-marketplace-order-shipping-item.ts +44 -0
  87. package/server/graphql/resolvers/marketplace-product/create-marketplace-product.ts +35 -0
  88. package/server/graphql/resolvers/marketplace-product/delete-marketplace-product.ts +10 -0
  89. package/server/graphql/resolvers/marketplace-product/delete-marketplace-products.ts +17 -0
  90. package/server/graphql/resolvers/marketplace-product/index.ts +27 -0
  91. package/server/graphql/resolvers/marketplace-product/marketplace-product.ts +24 -0
  92. package/server/graphql/resolvers/marketplace-product/marketplace-products.ts +23 -0
  93. package/server/graphql/resolvers/marketplace-product/sync-all-marketplace-store-products.ts +225 -0
  94. package/server/graphql/resolvers/marketplace-product/sync-marketplace-store-products.ts +222 -0
  95. package/server/graphql/resolvers/marketplace-product/update-marketplace-product.ts +24 -0
  96. package/server/graphql/resolvers/marketplace-product/upsert-marketplace-product.ts +39 -0
  97. package/server/graphql/resolvers/marketplace-product-attribute/create-marketplace-product-attribute.ts +14 -0
  98. package/server/graphql/resolvers/marketplace-product-attribute/delete-marketplace-product-attribute.ts +10 -0
  99. package/server/graphql/resolvers/marketplace-product-attribute/delete-marketplace-product-attributes.ts +17 -0
  100. package/server/graphql/resolvers/marketplace-product-attribute/index.ts +22 -0
  101. package/server/graphql/resolvers/marketplace-product-attribute/marketplace-product-attribute.ts +14 -0
  102. package/server/graphql/resolvers/marketplace-product-attribute/marketplace-product-attributes.ts +14 -0
  103. package/server/graphql/resolvers/marketplace-product-attribute/update-marketplace-product-attribute.ts +18 -0
  104. package/server/graphql/resolvers/marketplace-product-attribute/update-multiple-marketplace-product-attribute.ts +44 -0
  105. package/server/graphql/resolvers/marketplace-product-category/create-marketplace-product-category.ts +14 -0
  106. package/server/graphql/resolvers/marketplace-product-category/delete-marketplace-product-categories.ts +17 -0
  107. package/server/graphql/resolvers/marketplace-product-category/delete-marketplace-product-category.ts +10 -0
  108. package/server/graphql/resolvers/marketplace-product-category/index.ts +22 -0
  109. package/server/graphql/resolvers/marketplace-product-category/marketplace-product-categories.ts +14 -0
  110. package/server/graphql/resolvers/marketplace-product-category/marketplace-product-category.ts +14 -0
  111. package/server/graphql/resolvers/marketplace-product-category/update-marketplace-product-category.ts +18 -0
  112. package/server/graphql/resolvers/marketplace-product-category/update-multiple-marketplace-product-category.ts +44 -0
  113. package/server/graphql/resolvers/marketplace-product-variation/create-marketplace-product-variation.ts +14 -0
  114. package/server/graphql/resolvers/marketplace-product-variation/delete-marketplace-product-variation.ts +10 -0
  115. package/server/graphql/resolvers/marketplace-product-variation/delete-marketplace-product-variations.ts +17 -0
  116. package/server/graphql/resolvers/marketplace-product-variation/index.ts +30 -0
  117. package/server/graphql/resolvers/marketplace-product-variation/link-warehouse-marketplace-product-variations.ts +59 -0
  118. package/server/graphql/resolvers/marketplace-product-variation/marketplace-product-variation.ts +14 -0
  119. package/server/graphql/resolvers/marketplace-product-variation/marketplace-product-variations.ts +79 -0
  120. package/server/graphql/resolvers/marketplace-product-variation/update-marketplace-product-variation.ts +32 -0
  121. package/server/graphql/resolvers/marketplace-product-variation/update-multiple-marketplace-product-variation-quantity.ts +76 -0
  122. package/server/graphql/resolvers/marketplace-product-variation/update-multiple-marketplace-product-variations.ts +49 -0
  123. package/server/graphql/resolvers/marketplace-product-variation-price/create-marketplace-product-variation-price.ts +16 -0
  124. package/server/graphql/resolvers/marketplace-product-variation-price/delete-marketplace-product-variation-price.ts +13 -0
  125. package/server/graphql/resolvers/marketplace-product-variation-price/delete-marketplace-product-variation-prices.ts +18 -0
  126. package/server/graphql/resolvers/marketplace-product-variation-price/index.ts +19 -0
  127. package/server/graphql/resolvers/marketplace-product-variation-price/marketplace-product-variation-price-query.ts +52 -0
  128. package/server/graphql/resolvers/marketplace-product-variation-price/update-marketplace-product-variation-price.ts +20 -0
  129. package/server/graphql/resolvers/marketplace-product-variation-price/update-multiple-marketplace-product-variation-price.ts +49 -0
  130. package/server/graphql/resolvers/marketplace-refund-order/index.ts +9 -0
  131. package/server/graphql/resolvers/marketplace-refund-order/sync-all-marketplace-refund-orders.ts +122 -0
  132. package/server/graphql/resolvers/marketplace-refund-order/sync-marketplace-refund-orders.ts +106 -0
  133. package/server/graphql/resolvers/marketplace-report/index.ts +7 -0
  134. package/server/graphql/resolvers/marketplace-report/marketplace-sales-report.ts +143 -0
  135. package/server/graphql/resolvers/store-replenishment/create-store-replenishment.ts +16 -0
  136. package/server/graphql/resolvers/store-replenishment/delete-store-replenishment.ts +13 -0
  137. package/server/graphql/resolvers/store-replenishment/delete-store-replenishments.ts +18 -0
  138. package/server/graphql/resolvers/store-replenishment/index.ts +19 -0
  139. package/server/graphql/resolvers/store-replenishment/store-replenishment-query.ts +52 -0
  140. package/server/graphql/resolvers/store-replenishment/update-multiple-store-replenishment.ts +49 -0
  141. package/server/graphql/resolvers/store-replenishment/update-store-replenishment.ts +20 -0
  142. package/server/graphql/resolvers/store-replenishment-item/create-store-replenishment-item.ts +16 -0
  143. package/server/graphql/resolvers/store-replenishment-item/delete-store-replenishment-item.ts +13 -0
  144. package/server/graphql/resolvers/store-replenishment-item/delete-store-replenishment-items.ts +18 -0
  145. package/server/graphql/resolvers/store-replenishment-item/index.ts +19 -0
  146. package/server/graphql/resolvers/store-replenishment-item/store-replenishment-item-query.ts +52 -0
  147. package/server/graphql/resolvers/store-replenishment-item/update-multiple-store-replenishment-item.ts +49 -0
  148. package/server/graphql/resolvers/store-replenishment-item/update-store-replenishment-item.ts +20 -0
  149. package/server/graphql/types/index.ts +13 -0
  150. package/server/graphql/types/marketplace-order/dashboard-order.ts +13 -0
  151. package/server/graphql/types/marketplace-order/full-logistics-detail.ts +10 -0
  152. package/server/graphql/types/marketplace-order/index.ts +69 -0
  153. package/server/graphql/types/marketplace-order/logistics-detail.ts +8 -0
  154. package/server/graphql/types/marketplace-order/logistics-info.ts +27 -0
  155. package/server/graphql/types/marketplace-order/logistics-init.ts +9 -0
  156. package/server/graphql/types/marketplace-order/logistics-time.ts +9 -0
  157. package/server/graphql/types/marketplace-order/logistics.ts +21 -0
  158. package/server/graphql/types/marketplace-order/marketplace-logistics.ts +11 -0
  159. package/server/graphql/types/marketplace-order/marketplace-order-export.ts +19 -0
  160. package/server/graphql/types/marketplace-order/marketplace-order-list.ts +8 -0
  161. package/server/graphql/types/marketplace-order/marketplace-order-patch.ts +14 -0
  162. package/server/graphql/types/marketplace-order/marketplace-order.ts +40 -0
  163. package/server/graphql/types/marketplace-order/new-marketplace-order.ts +22 -0
  164. package/server/graphql/types/marketplace-order/order-address.ts +16 -0
  165. package/server/graphql/types/marketplace-order/order-document.ts +13 -0
  166. package/server/graphql/types/marketplace-order-item/index.ts +21 -0
  167. package/server/graphql/types/marketplace-order-item/marketplace-order-item-list.ts +8 -0
  168. package/server/graphql/types/marketplace-order-item/marketplace-order-item-patch.ts +10 -0
  169. package/server/graphql/types/marketplace-order-item/marketplace-order-item.ts +32 -0
  170. package/server/graphql/types/marketplace-order-item/new-marketplace-order-item.ts +17 -0
  171. package/server/graphql/types/marketplace-order-shipping/index.ts +31 -0
  172. package/server/graphql/types/marketplace-order-shipping/marketplace-order-shipping-list.ts +8 -0
  173. package/server/graphql/types/marketplace-order-shipping/marketplace-order-shipping-patch.ts +45 -0
  174. package/server/graphql/types/marketplace-order-shipping/marketplace-order-shipping.ts +59 -0
  175. package/server/graphql/types/marketplace-order-shipping/new-marketplace-order-shipping.ts +44 -0
  176. package/server/graphql/types/marketplace-order-shipping-item/index.ts +32 -0
  177. package/server/graphql/types/marketplace-order-shipping-item/marketplace-order-shipping-item-list.ts +8 -0
  178. package/server/graphql/types/marketplace-order-shipping-item/marketplace-order-shipping-item-patch.ts +13 -0
  179. package/server/graphql/types/marketplace-order-shipping-item/marketplace-order-shipping-item.ts +16 -0
  180. package/server/graphql/types/marketplace-order-shipping-item/new-marketplace-order-shipping-item.ts +12 -0
  181. package/server/graphql/types/marketplace-product/index.ts +28 -0
  182. package/server/graphql/types/marketplace-product/marketplace-product-list.ts +8 -0
  183. package/server/graphql/types/marketplace-product/marketplace-product-patch.ts +24 -0
  184. package/server/graphql/types/marketplace-product/marketplace-product.ts +30 -0
  185. package/server/graphql/types/marketplace-product/new-marketplace-product.ts +24 -0
  186. package/server/graphql/types/marketplace-product-attribute/index.ts +35 -0
  187. package/server/graphql/types/marketplace-product-attribute/marketplace-product-attribute-list.ts +8 -0
  188. package/server/graphql/types/marketplace-product-attribute/marketplace-product-attribute-patch.ts +10 -0
  189. package/server/graphql/types/marketplace-product-attribute/marketplace-product-attribute.ts +20 -0
  190. package/server/graphql/types/marketplace-product-attribute/new-marketplace-product-attribute.ts +13 -0
  191. package/server/graphql/types/marketplace-product-category/index.ts +28 -0
  192. package/server/graphql/types/marketplace-product-category/marketplace-product-category-list.ts +8 -0
  193. package/server/graphql/types/marketplace-product-category/marketplace-product-category-patch.ts +10 -0
  194. package/server/graphql/types/marketplace-product-category/marketplace-product-category.ts +17 -0
  195. package/server/graphql/types/marketplace-product-category/new-marketplace-product-category.ts +10 -0
  196. package/server/graphql/types/marketplace-product-variation/index.ts +47 -0
  197. package/server/graphql/types/marketplace-product-variation/marketplace-product-variation-list.ts +8 -0
  198. package/server/graphql/types/marketplace-product-variation/marketplace-product-variation-patch.ts +32 -0
  199. package/server/graphql/types/marketplace-product-variation/marketplace-product-variation.ts +35 -0
  200. package/server/graphql/types/marketplace-product-variation/new-marketplace-product-variation.ts +26 -0
  201. package/server/graphql/types/marketplace-product-variation/warehouse-product.ts +9 -0
  202. package/server/graphql/types/marketplace-product-variation-price/index.ts +21 -0
  203. package/server/graphql/types/marketplace-product-variation-price/marketplace-product-variation-price-list.ts +8 -0
  204. package/server/graphql/types/marketplace-product-variation-price/marketplace-product-variation-price-patch.ts +17 -0
  205. package/server/graphql/types/marketplace-product-variation-price/marketplace-product-variation-price.ts +21 -0
  206. package/server/graphql/types/marketplace-product-variation-price/new-marketplace-product-variation-price.ts +14 -0
  207. package/server/graphql/types/marketplace-refund-order/index.ts +16 -0
  208. package/server/graphql/types/marketplace-refund-order/marketplace-refund-order-list.ts +8 -0
  209. package/server/graphql/types/marketplace-refund-order/marketplace-refund-order.ts +17 -0
  210. package/server/graphql/types/marketplace-report/index.ts +10 -0
  211. package/server/graphql/types/marketplace-report/marketplace-sales-report-list.ts +8 -0
  212. package/server/graphql/types/marketplace-report/marketplace-sales-report.ts +67 -0
  213. package/server/graphql/types/store-replenishment/index.ts +21 -0
  214. package/server/graphql/types/store-replenishment/new-store-replenishment.ts +8 -0
  215. package/server/graphql/types/store-replenishment/store-replenishment-list.ts +8 -0
  216. package/server/graphql/types/store-replenishment/store-replenishment-patch.ts +10 -0
  217. package/server/graphql/types/store-replenishment/store-replenishment.ts +24 -0
  218. package/server/graphql/types/store-replenishment-item/index.ts +21 -0
  219. package/server/graphql/types/store-replenishment-item/new-store-replenishment-item.ts +8 -0
  220. package/server/graphql/types/store-replenishment-item/store-replenishment-item-list.ts +8 -0
  221. package/server/graphql/types/store-replenishment-item/store-replenishment-item-patch.ts +10 -0
  222. package/server/graphql/types/store-replenishment-item/store-replenishment-item.ts +15 -0
  223. package/server/index.ts +6 -0
  224. package/server/middlewares/index.ts +3 -0
  225. package/server/migrations/index.ts +9 -0
  226. package/server/routes.ts +26 -0
  227. package/server/utils/index.ts +1 -0
  228. package/server/utils/no-generator.ts +25 -0
  229. package/tsconfig.json +9 -0
@@ -0,0 +1,39 @@
1
+ import { MarketplaceOrder, MarketplaceOrderShipping } from '../../../entities'
2
+
3
+ export const setOwnShippingProviderByOrdersResolver = {
4
+ async setOwnShippingProviderByOrders(_: any, { patches }, context: ResolverContext) {
5
+ const { user, tx } = context.state
6
+
7
+ await Promise.all(
8
+ patches.map(async patch => {
9
+ let marketplaceOrder: MarketplaceOrder = await tx.getRepository(MarketplaceOrder).findOne({
10
+ where: { id: patch.id },
11
+ relations: ['marketplaceStore']
12
+ })
13
+
14
+ if (!marketplaceOrder) throw new Error('No order is found')
15
+
16
+ let marketplaceOrderShippings: MarketplaceOrderShipping[] = await tx
17
+ .getRepository(MarketplaceOrderShipping)
18
+ .find({
19
+ where: { orderNoRef: marketplaceOrder.orderNo },
20
+ relations: ['marketplaceStore']
21
+ })
22
+
23
+ marketplaceOrder.ownShippingProvider = patch?.ownShippingProvider
24
+
25
+ await tx.getRepository(MarketplaceOrder).save(marketplaceOrder)
26
+
27
+ marketplaceOrderShippings = marketplaceOrderShippings.map(marketplaceOrderShipping => {
28
+ return {
29
+ ...marketplaceOrderShipping,
30
+ ownTransporter: patch?.ownShippingProvider
31
+ }
32
+ })
33
+
34
+ await tx.getRepository(MarketplaceOrderShipping).save(marketplaceOrderShippings)
35
+ })
36
+ )
37
+ return true
38
+ }
39
+ }
@@ -0,0 +1,245 @@
1
+ import { v4 as uuidv4 } from 'uuid'
2
+
3
+ import { MarketplaceSetting, MarketplaceStore } from '@things-factory/integration-marketplace'
4
+ import { Product } from '@things-factory/product-base'
5
+
6
+ import {
7
+ MarketplaceOrder,
8
+ MarketplaceOrderItem,
9
+ MarketplaceOrderShipping,
10
+ MarketplaceOrderShippingItem,
11
+ MarketplaceProductVariation
12
+ } from '../../../entities'
13
+ import { NoGenerator } from '../../../utils'
14
+
15
+ export const splitOrdersByBatch = {
16
+ async splitOrdersByBatch(_: any, { patches }, context: ResolverContext) {
17
+ const { user, tx, domain } = context.state
18
+
19
+ for (let i: number = 0; i < patches.length; i++) {
20
+ const patch: any = patches[i]
21
+ let marketplaceOrder: MarketplaceOrder = await tx.getRepository(MarketplaceOrder).findOne({
22
+ where: { id: patch.id },
23
+ relations: [
24
+ 'domain',
25
+ 'marketplaceStore',
26
+ 'marketplaceOrderItems',
27
+ 'marketplaceOrderItems.marketplaceProductVariation'
28
+ ]
29
+ })
30
+ if (!marketplaceOrder) throw new Error('No order is found')
31
+
32
+ const marketplaceStore: MarketplaceStore = marketplaceOrder.marketplaceStore
33
+
34
+ const maxWeightSetting: MarketplaceSetting = await tx.getRepository(MarketplaceSetting).findOne({
35
+ where: {
36
+ domain: { id: domain.id },
37
+ category: 'marketplace_order_max_weight',
38
+ marketplaceStore: { id: marketplaceStore.id }
39
+ }
40
+ })
41
+ if (!maxWeightSetting) throw new Error('marketplace_order_max_weight setting not found')
42
+
43
+ const marketplaceOrderItems: MarketplaceOrderItem[] = marketplaceOrder.marketplaceOrderItems
44
+ if (!marketplaceOrderItems.every(marketplaceOrderItem => marketplaceOrderItem.marketplaceProductVariation.sku))
45
+ throw new Error('all items must be linked before split order')
46
+
47
+ let originalMarketplaceOrderShipping: MarketplaceOrderShipping = await tx
48
+ .getRepository(MarketplaceOrderShipping)
49
+ .findOne({
50
+ where: {
51
+ domain: { id: domain.id },
52
+ orderNoRef: marketplaceOrder.orderNo,
53
+ marketplaceStore: { id: marketplaceOrder.marketplaceStore.id }
54
+ },
55
+ relations: [
56
+ 'marketplaceOrderShippingItems',
57
+ 'marketplaceOrderShippingItems.product',
58
+ 'marketplaceOrderShippingItems.product.productDetails',
59
+ 'marketplaceOrderShippingItems.marketplaceOrderItem',
60
+ 'marketplaceOrderShippingItems.marketplaceOrderItem.marketplaceProductVariation'
61
+ ]
62
+ })
63
+
64
+ const originalMarketplaceOrderShippingItems: MarketplaceOrderShippingItem[] =
65
+ originalMarketplaceOrderShipping.marketplaceOrderShippingItems
66
+ let newMarketplaceOrderShippingItems: MarketplaceOrderShippingItem[] = []
67
+ let splittedShipmentItems: any[] = []
68
+
69
+ for (let a: number = 0; a < originalMarketplaceOrderShippingItems.length; a++) {
70
+ const marketplaceOrderShippingItem: MarketplaceOrderShippingItem = originalMarketplaceOrderShippingItems[a]
71
+
72
+ for (let b: number = 0; b < marketplaceOrderShippingItem.qty; b++) {
73
+ const newItem: MarketplaceOrderShippingItem = {
74
+ ...marketplaceOrderShippingItem,
75
+ qty: 1
76
+ }
77
+ newMarketplaceOrderShippingItems.push(newItem)
78
+ }
79
+ }
80
+
81
+ newMarketplaceOrderShippingItems.sort(function (a, b) {
82
+ if (
83
+ a.marketplaceOrderItem.marketplaceProductVariation.primaryUnitValue <
84
+ b.marketplaceOrderItem.marketplaceProductVariation.primaryUnitValue
85
+ )
86
+ return -1
87
+ if (
88
+ a.marketplaceOrderItem.marketplaceProductVariation.primaryUnitValue >
89
+ b.marketplaceOrderItem.marketplaceProductVariation.primaryUnitValue
90
+ )
91
+ return 1
92
+ return 0
93
+ })
94
+
95
+ for (let a: number = 0; a < newMarketplaceOrderShippingItems.length; a++) {
96
+ let marketplaceOrderShippingItem: MarketplaceOrderShippingItem = newMarketplaceOrderShippingItems[a]
97
+ const product: Product = marketplaceOrderShippingItem.product
98
+ const marketplaceOrderItem: MarketplaceOrderItem = marketplaceOrderShippingItem.marketplaceOrderItem
99
+
100
+ const marketplaceProductVariation: MarketplaceProductVariation =
101
+ marketplaceOrderItem.marketplaceProductVariation
102
+
103
+ if (!marketplaceProductVariation?.primaryUnitValue)
104
+ throw new Error(marketplaceProductVariation.variationSku + ' weight is empty')
105
+
106
+ const primaryUnitValue: number = parseFloat(marketplaceProductVariation.primaryUnitValue.toFixed(2)) || 0
107
+
108
+ delete marketplaceOrderShippingItem.id
109
+
110
+ let newMarketplaceOrderShipping: MarketplaceOrderShipping = new MarketplaceOrderShipping()
111
+ newMarketplaceOrderShipping.name = NoGenerator.orderShipping()
112
+ newMarketplaceOrderShipping.address1 = originalMarketplaceOrderShipping.address1
113
+ newMarketplaceOrderShipping.address2 = originalMarketplaceOrderShipping.address2
114
+ newMarketplaceOrderShipping.address3 = originalMarketplaceOrderShipping.address3
115
+ newMarketplaceOrderShipping.address4 = originalMarketplaceOrderShipping.address4
116
+ newMarketplaceOrderShipping.address5 = originalMarketplaceOrderShipping.address5
117
+ newMarketplaceOrderShipping.attentionTo = originalMarketplaceOrderShipping.attentionTo
118
+ newMarketplaceOrderShipping.city = originalMarketplaceOrderShipping.city
119
+ newMarketplaceOrderShipping.country = originalMarketplaceOrderShipping.country
120
+ newMarketplaceOrderShipping.postCode = originalMarketplaceOrderShipping.postCode
121
+ newMarketplaceOrderShipping.phone1 = originalMarketplaceOrderShipping.phone1
122
+ newMarketplaceOrderShipping.phone2 = originalMarketplaceOrderShipping.phone2
123
+ newMarketplaceOrderShipping.orderNoRef = marketplaceOrder.orderNo
124
+ newMarketplaceOrderShipping.transporter = originalMarketplaceOrderShipping.transporter
125
+ newMarketplaceOrderShipping.marketplaceStore = marketplaceStore
126
+ newMarketplaceOrderShipping.creator = user
127
+ newMarketplaceOrderShipping.domain = marketplaceOrder.domain
128
+ newMarketplaceOrderShipping.weightUnit = 'KG'
129
+
130
+ if (splittedShipmentItems.length == 0) {
131
+ newMarketplaceOrderShipping.totalWeight = primaryUnitValue
132
+
133
+ newMarketplaceOrderShipping = await tx
134
+ .getRepository(MarketplaceOrderShipping)
135
+ .save(newMarketplaceOrderShipping)
136
+
137
+ marketplaceOrderShippingItem.name = uuidv4()
138
+ marketplaceOrderShippingItem.marketplaceOrderItem = marketplaceOrderItem
139
+ marketplaceOrderShippingItem.marketplaceOrderShipping = newMarketplaceOrderShipping
140
+ marketplaceOrderShippingItem.product = product
141
+ marketplaceOrderShippingItem.domain = marketplaceOrder.domain
142
+
143
+ let splittedShipment: any = {
144
+ shipments: [{ ...marketplaceOrderShippingItem }],
145
+ totalWeight: primaryUnitValue
146
+ }
147
+ splittedShipmentItems.push(splittedShipment)
148
+ } else {
149
+ let lastShipment: any = splittedShipmentItems[splittedShipmentItems.length - 1]
150
+ let lastTotalWeight: number = parseFloat(lastShipment.totalWeight.toFixed(2))
151
+ if (lastTotalWeight + primaryUnitValue < parseFloat(maxWeightSetting.value)) {
152
+ splittedShipmentItems.map((shipmentItem, idx) => {
153
+ if (idx === splittedShipmentItems.length - 1) {
154
+ let shipments: any[] = shipmentItem.shipments
155
+
156
+ shipments = shipments.map(async shipment => {
157
+ if (shipment.product.id === product.id) {
158
+ shipment.qty += marketplaceOrderShippingItem.qty
159
+ } else {
160
+ const matchedProduct = shipments.find(shipment => shipment.product.id == product.id)
161
+ if (!matchedProduct) {
162
+ marketplaceOrderShippingItem.name = uuidv4()
163
+ marketplaceOrderShippingItem.marketplaceOrderItem = marketplaceOrderItem
164
+ marketplaceOrderShippingItem.marketplaceOrderShipping = shipment.marketplaceOrderShipping
165
+ marketplaceOrderShippingItem.product = product
166
+ marketplaceOrderShippingItem.domain = marketplaceOrder.domain
167
+ shipmentItem.shipments.push({ ...marketplaceOrderShippingItem })
168
+ }
169
+ }
170
+
171
+ shipment.marketplaceOrderShipping.totalWeight = parseFloat(
172
+ (lastTotalWeight + primaryUnitValue).toFixed(2)
173
+ )
174
+ await tx.getRepository(MarketplaceOrderShipping).save(shipment.marketplaceOrderShipping)
175
+ })
176
+
177
+ shipmentItem.totalWeight += primaryUnitValue
178
+ }
179
+ })
180
+ } else {
181
+ newMarketplaceOrderShipping.totalWeight = primaryUnitValue
182
+
183
+ newMarketplaceOrderShipping = await tx
184
+ .getRepository(MarketplaceOrderShipping)
185
+ .save(newMarketplaceOrderShipping)
186
+
187
+ marketplaceOrderShippingItem.name = uuidv4()
188
+ marketplaceOrderShippingItem.marketplaceOrderItem = marketplaceOrderItem
189
+ marketplaceOrderShippingItem.marketplaceOrderShipping = newMarketplaceOrderShipping
190
+ marketplaceOrderShippingItem.product = product
191
+ marketplaceOrderShippingItem.domain = marketplaceOrder.domain
192
+
193
+ let splittedShipment: any = {
194
+ shipments: [{ ...marketplaceOrderShippingItem }],
195
+ totalWeight: primaryUnitValue
196
+ }
197
+ splittedShipmentItems.push(splittedShipment)
198
+ }
199
+ }
200
+ }
201
+
202
+ let savedMarketplaceOrderShippingItems: MarketplaceOrderShippingItem[] = []
203
+ for (let a: number = 0; a < splittedShipmentItems.length; a++) {
204
+ const shipments: any[] = splittedShipmentItems[a].shipments
205
+ for (let b: number = 0; b < shipments.length; b++) {
206
+ savedMarketplaceOrderShippingItems.push(shipments[b])
207
+ }
208
+ }
209
+
210
+ savedMarketplaceOrderShippingItems = await tx
211
+ .getRepository(MarketplaceOrderShippingItem)
212
+ .save(savedMarketplaceOrderShippingItems)
213
+
214
+ await tx
215
+ .getRepository(MarketplaceOrderShippingItem)
216
+ .delete(originalMarketplaceOrderShippingItems.map(item => item.id))
217
+
218
+ await tx.getRepository(MarketplaceOrderShipping).delete(originalMarketplaceOrderShipping.id)
219
+
220
+ let marketplaceOrderShippings: MarketplaceOrderShipping[] = await tx
221
+ .getRepository(MarketplaceOrderShipping)
222
+ .find({ where: { domain: { id: domain.id }, orderNoRef: marketplaceOrder.orderNo } })
223
+
224
+ marketplaceOrderShippings = marketplaceOrderShippings.map((marketplaceOrderShipping, idx) => {
225
+ return {
226
+ ...marketplaceOrderShipping,
227
+ subOrderNoRef:
228
+ marketplaceOrderShippings.length == 1
229
+ ? marketplaceOrderShipping.orderNoRef
230
+ : marketplaceOrderShipping.orderNoRef + ' - ' + (idx + 1) + '/' + marketplaceOrderShippings.length
231
+ }
232
+ })
233
+
234
+ await tx.getRepository(MarketplaceOrderShipping).save(marketplaceOrderShippings)
235
+
236
+ let newMarketplaceOrder: MarketplaceOrder = await tx.getRepository(MarketplaceOrder).findOne({
237
+ where: { id: patch.id }
238
+ })
239
+ newMarketplaceOrder.isSplitted = true
240
+ await tx.getRepository(MarketplaceOrder).save(newMarketplaceOrder)
241
+ }
242
+
243
+ return true
244
+ }
245
+ }
@@ -0,0 +1,39 @@
1
+ import { MarketplaceStore, StoreAPI } from '@things-factory/integration-marketplace'
2
+ import { Domain, getRepository } from '@things-factory/shell'
3
+
4
+ import { syncMarketplaceOrder } from './sync-marketplace-order'
5
+
6
+ export const syncAllMarketplaceOrder = {
7
+ async syncAllMarketplaceOrder(
8
+ _: any,
9
+ { companyDomainId, fromCreatedDate, toCreatedDate, blackListStores },
10
+ context: any
11
+ ) {
12
+ const { user } = context.state
13
+
14
+ const companyDomain: Domain = await getRepository(Domain).findOneBy({ id: companyDomainId })
15
+
16
+ // Step 1: get all available marketplace-store
17
+ const marketplaceStores: MarketplaceStore[] = await StoreAPI.getMarketplaceStores(companyDomain)
18
+
19
+ // Step 2: get marketplace order based on each marketplace-store
20
+ if (marketplaceStores?.length === 0) throw new Error('No active marketplace store')
21
+ let whiteListStores: MarketplaceStore[] = marketplaceStores
22
+
23
+ if (blackListStores) {
24
+ blackListStores = blackListStores.split(',')
25
+ whiteListStores = marketplaceStores.filter(store => blackListStores.indexOf(store.name) < 0)
26
+ }
27
+
28
+ for (var i = 0; i < whiteListStores?.length; i++) {
29
+ const marketplaceStore = whiteListStores[i]
30
+ syncMarketplaceOrder.syncMarketplaceOrder(
31
+ _,
32
+ { storeId: marketplaceStore.id, fromCreatedDate, toCreatedDate, scheduler: true },
33
+ context
34
+ )
35
+ }
36
+
37
+ return true
38
+ }
39
+ }