@things-factory/marketplace-base 3.6.3 → 3.6.8

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 (58) hide show
  1. package/dist-server/entities/marketplace-order-shipping.js +14 -2
  2. package/dist-server/entities/marketplace-order-shipping.js.map +1 -1
  3. package/dist-server/entities/marketplace-order.js +14 -2
  4. package/dist-server/entities/marketplace-order.js.map +1 -1
  5. package/dist-server/graphql/resolvers/marketplace-order/cancel-marketplace-order.js +26 -7
  6. package/dist-server/graphql/resolvers/marketplace-order/cancel-marketplace-order.js.map +1 -1
  7. package/dist-server/graphql/resolvers/marketplace-order/generate-marketplace-order.js +5 -0
  8. package/dist-server/graphql/resolvers/marketplace-order/generate-marketplace-order.js.map +1 -1
  9. package/dist-server/graphql/resolvers/marketplace-order/index.js +3 -1
  10. package/dist-server/graphql/resolvers/marketplace-order/index.js.map +1 -1
  11. package/dist-server/graphql/resolvers/marketplace-order/initialise-logistics-by-batch.js +3 -1
  12. package/dist-server/graphql/resolvers/marketplace-order/initialise-logistics-by-batch.js.map +1 -1
  13. package/dist-server/graphql/resolvers/marketplace-order/initialise-shopee-logistics-by-batch.js +2 -2
  14. package/dist-server/graphql/resolvers/marketplace-order/initialise-shopee-logistics-by-batch.js.map +1 -1
  15. package/dist-server/graphql/resolvers/marketplace-order/set-own-shipping-provider-by-orders.js +31 -0
  16. package/dist-server/graphql/resolvers/marketplace-order/set-own-shipping-provider-by-orders.js.map +1 -0
  17. package/dist-server/graphql/resolvers/marketplace-order/split-orders-by-batch.js +314 -181
  18. package/dist-server/graphql/resolvers/marketplace-order/split-orders-by-batch.js.map +1 -1
  19. package/dist-server/graphql/resolvers/marketplace-order/sync-all-marketplace-order.js +72 -38
  20. package/dist-server/graphql/resolvers/marketplace-order/sync-all-marketplace-order.js.map +1 -1
  21. package/dist-server/graphql/resolvers/marketplace-order/sync-marketplace-order.js +103 -45
  22. package/dist-server/graphql/resolvers/marketplace-order/sync-marketplace-order.js.map +1 -1
  23. package/dist-server/graphql/resolvers/marketplace-order/update-marketplace-order.js +21 -0
  24. package/dist-server/graphql/resolvers/marketplace-order/update-marketplace-order.js.map +1 -0
  25. package/dist-server/graphql/resolvers/marketplace-order-shipping/update-marketplace-order-shipping.js +2 -1
  26. package/dist-server/graphql/resolvers/marketplace-order-shipping/update-marketplace-order-shipping.js.map +1 -1
  27. package/dist-server/graphql/types/marketplace-order/index.js +2 -0
  28. package/dist-server/graphql/types/marketplace-order/index.js.map +1 -1
  29. package/dist-server/graphql/types/marketplace-order/logistics-info.js +2 -0
  30. package/dist-server/graphql/types/marketplace-order/logistics-info.js.map +1 -1
  31. package/dist-server/graphql/types/marketplace-order/marketplace-order.js +3 -0
  32. package/dist-server/graphql/types/marketplace-order/marketplace-order.js.map +1 -1
  33. package/dist-server/graphql/types/marketplace-order-shipping/marketplace-order-shipping-patch.js +3 -0
  34. package/dist-server/graphql/types/marketplace-order-shipping/marketplace-order-shipping-patch.js.map +1 -1
  35. package/dist-server/graphql/types/marketplace-order-shipping/marketplace-order-shipping.js +3 -0
  36. package/dist-server/graphql/types/marketplace-order-shipping/marketplace-order-shipping.js.map +1 -1
  37. package/dist-server/graphql/types/marketplace-order-shipping/new-marketplace-order-shipping.js +3 -0
  38. package/dist-server/graphql/types/marketplace-order-shipping/new-marketplace-order-shipping.js.map +1 -1
  39. package/package.json +5 -5
  40. package/server/entities/marketplace-order-shipping.ts +14 -2
  41. package/server/entities/marketplace-order.ts +15 -4
  42. package/server/graphql/resolvers/marketplace-order/cancel-marketplace-order.ts +27 -8
  43. package/server/graphql/resolvers/marketplace-order/generate-marketplace-order.ts +10 -3
  44. package/server/graphql/resolvers/marketplace-order/index.ts +5 -1
  45. package/server/graphql/resolvers/marketplace-order/initialise-logistics-by-batch.ts +3 -1
  46. package/server/graphql/resolvers/marketplace-order/initialise-shopee-logistics-by-batch.ts +4 -2
  47. package/server/graphql/resolvers/marketplace-order/set-own-shipping-provider-by-orders.ts +43 -0
  48. package/server/graphql/resolvers/marketplace-order/split-orders-by-batch.ts +368 -210
  49. package/server/graphql/resolvers/marketplace-order/sync-all-marketplace-order.ts +106 -53
  50. package/server/graphql/resolvers/marketplace-order/sync-marketplace-order.ts +138 -61
  51. package/server/graphql/resolvers/marketplace-order/update-marketplace-order.ts +35 -0
  52. package/server/graphql/resolvers/marketplace-order-shipping/update-marketplace-order-shipping.ts +3 -1
  53. package/server/graphql/types/marketplace-order/index.ts +2 -0
  54. package/server/graphql/types/marketplace-order/logistics-info.ts +2 -0
  55. package/server/graphql/types/marketplace-order/marketplace-order.ts +3 -0
  56. package/server/graphql/types/marketplace-order-shipping/marketplace-order-shipping-patch.ts +3 -0
  57. package/server/graphql/types/marketplace-order-shipping/marketplace-order-shipping.ts +3 -0
  58. package/server/graphql/types/marketplace-order-shipping/new-marketplace-order-shipping.ts +3 -0
@@ -12,6 +12,7 @@ exports.MarketplaceOrderShippingPatch = (0, graphql_tag_1.default) `
12
12
  description: String
13
13
  marketplaceOrderItems: [ObjectRef]
14
14
  orderNoRef: String
15
+ subOrderNoRef: String
15
16
  address1: String
16
17
  address2: String
17
18
  address3: String
@@ -19,6 +20,7 @@ exports.MarketplaceOrderShippingPatch = (0, graphql_tag_1.default) `
19
20
  address5: String
20
21
  attentionTo: String
21
22
  transporter: String
23
+ ownTransporter: String
22
24
  city: String
23
25
  state: String
24
26
  postCode: String
@@ -37,6 +39,7 @@ exports.MarketplaceOrderShippingPatch = (0, graphql_tag_1.default) `
37
39
  airwayBill: String
38
40
  invoice: String
39
41
  trackingNo: String
42
+ ownTrackingNo: String
40
43
  orderType: String
41
44
  freightType: Int
42
45
  parcelType: Int
@@ -1 +1 @@
1
- {"version":3,"file":"marketplace-order-shipping-patch.js","sourceRoot":"","sources":["../../../../server/graphql/types/marketplace-order-shipping/marketplace-order-shipping-patch.ts"],"names":[],"mappings":";;;;;;AAAA,8DAA6B;AAEhB,QAAA,6BAA6B,GAAG,IAAA,qBAAG,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuC/C,CAAA"}
1
+ {"version":3,"file":"marketplace-order-shipping-patch.js","sourceRoot":"","sources":["../../../../server/graphql/types/marketplace-order-shipping/marketplace-order-shipping-patch.ts"],"names":[],"mappings":";;;;;;AAAA,8DAA6B;AAEhB,QAAA,6BAA6B,GAAG,IAAA,qBAAG,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0C/C,CAAA"}
@@ -15,6 +15,7 @@ exports.MarketplaceOrderShipping = (0, graphql_tag_1.default) `
15
15
  marketplaceOrderItems: [MarketplaceOrderItem]
16
16
  marketplaceStore: MarketplaceStore
17
17
  orderNoRef: String
18
+ subOrderNoRef: String
18
19
  shippingId: String
19
20
  address1: String
20
21
  address2: String
@@ -31,7 +32,9 @@ exports.MarketplaceOrderShipping = (0, graphql_tag_1.default) `
31
32
  email: String
32
33
  type: String
33
34
  transporter: String
35
+ ownTransporter: String
34
36
  trackingNo: String
37
+ ownTrackingNo: String
35
38
  airwayBill: String
36
39
  invoice: String
37
40
  weightUnit: String
@@ -1 +1 @@
1
- {"version":3,"file":"marketplace-order-shipping.js","sourceRoot":"","sources":["../../../../server/graphql/types/marketplace-order-shipping/marketplace-order-shipping.ts"],"names":[],"mappings":";;;;;;AAAA,8DAA6B;AAEhB,QAAA,wBAAwB,GAAG,IAAA,qBAAG,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8C1C,CAAA"}
1
+ {"version":3,"file":"marketplace-order-shipping.js","sourceRoot":"","sources":["../../../../server/graphql/types/marketplace-order-shipping/marketplace-order-shipping.ts"],"names":[],"mappings":";;;;;;AAAA,8DAA6B;AAEhB,QAAA,wBAAwB,GAAG,IAAA,qBAAG,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiD1C,CAAA"}
@@ -11,6 +11,7 @@ exports.NewMarketplaceOrderShipping = (0, graphql_tag_1.default) `
11
11
  description: String
12
12
  marketplaceOrderItems: [ObjectRef]
13
13
  orderNoRef: String
14
+ subOrderNoRef: String
14
15
  shippingId: String
15
16
  address1: String
16
17
  address2: String
@@ -27,7 +28,9 @@ exports.NewMarketplaceOrderShipping = (0, graphql_tag_1.default) `
27
28
  email: String
28
29
  type: String
29
30
  transporter: String
31
+ ownTransporter: String
30
32
  trackingNo: String
33
+ ownTrackingNo: String
31
34
  airwayBill: String
32
35
  invoice: String
33
36
  weightUnit: String
@@ -1 +1 @@
1
- {"version":3,"file":"new-marketplace-order-shipping.js","sourceRoot":"","sources":["../../../../server/graphql/types/marketplace-order-shipping/new-marketplace-order-shipping.ts"],"names":[],"mappings":";;;;;;AAAA,8DAA6B;AAEhB,QAAA,2BAA2B,GAAG,IAAA,qBAAG,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsC7C,CAAA"}
1
+ {"version":3,"file":"new-marketplace-order-shipping.js","sourceRoot":"","sources":["../../../../server/graphql/types/marketplace-order-shipping/new-marketplace-order-shipping.ts"],"names":[],"mappings":";;;;;;AAAA,8DAA6B;AAEhB,QAAA,2BAA2B,GAAG,IAAA,qBAAG,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyC7C,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@things-factory/marketplace-base",
3
- "version": "3.6.3",
3
+ "version": "3.6.8",
4
4
  "main": "dist-server/index.js",
5
5
  "browser": "client/index.js",
6
6
  "things-factory": true,
@@ -24,9 +24,9 @@
24
24
  "migration:create": "node ../../node_modules/typeorm/cli.js migration:create -d ./server/migrations"
25
25
  },
26
26
  "dependencies": {
27
- "@things-factory/integration-fulfillment": "^3.6.3",
28
- "@things-factory/integration-marketplace": "^3.6.3",
29
- "@things-factory/shell": "^3.6.1"
27
+ "@things-factory/integration-fulfillment": "^3.6.8",
28
+ "@things-factory/integration-marketplace": "^3.6.7",
29
+ "@things-factory/shell": "^3.6.7"
30
30
  },
31
- "gitHead": "2bc8415b0ef4f036ccede0c82437f2ee96616b0c"
31
+ "gitHead": "7f1c9066395c4dccecbc248216a828d9ae06de23"
32
32
  }
@@ -1,5 +1,3 @@
1
- import { User } from '@things-factory/auth-base'
2
- import { Domain } from '@things-factory/shell'
3
1
  import {
4
2
  Column,
5
3
  CreateDateColumn,
@@ -10,8 +8,13 @@ import {
10
8
  PrimaryGeneratedColumn,
11
9
  UpdateDateColumn
12
10
  } from 'typeorm'
11
+
12
+ import { User } from '@things-factory/auth-base'
13
13
  import { MarketplaceStore } from '@things-factory/integration-marketplace'
14
+ import { Domain } from '@things-factory/shell'
15
+
14
16
  import { MarketplaceOrderItem } from '../entities'
17
+
15
18
  @Entity()
16
19
  @Index(
17
20
  'ix_marketplace-order-shipping_0',
@@ -40,6 +43,9 @@ export class MarketplaceOrderShipping {
40
43
  @Column({ nullable: true })
41
44
  orderNoRef: string
42
45
 
46
+ @Column({ nullable: true })
47
+ subOrderNoRef: string
48
+
43
49
  @Column()
44
50
  address1: string
45
51
 
@@ -82,6 +88,9 @@ export class MarketplaceOrderShipping {
82
88
  @Column({ nullable: true })
83
89
  transporter: string
84
90
 
91
+ @Column({ nullable: true })
92
+ ownTransporter: string
93
+
85
94
  @Column({ nullable: true })
86
95
  orderType: string
87
96
 
@@ -124,6 +133,9 @@ export class MarketplaceOrderShipping {
124
133
  @Column({ nullable: true })
125
134
  trackingNo: string
126
135
 
136
+ @Column({ nullable: true })
137
+ ownTrackingNo: string
138
+
127
139
  @Column({ nullable: true })
128
140
  airwayBill: string
129
141
 
@@ -1,6 +1,3 @@
1
- import { User } from '@things-factory/auth-base'
2
- import { MarketplaceStore } from '@things-factory/integration-marketplace'
3
- import { Domain } from '@things-factory/shell'
4
1
  import {
5
2
  Column,
6
3
  CreateDateColumn,
@@ -11,8 +8,13 @@ import {
11
8
  PrimaryGeneratedColumn,
12
9
  UpdateDateColumn
13
10
  } from 'typeorm'
14
- import { MarketplaceOrderItem } from '../entities'
11
+
12
+ import { User } from '@things-factory/auth-base'
15
13
  import { FulfillmentCenter } from '@things-factory/integration-fulfillment'
14
+ import { MarketplaceStore } from '@things-factory/integration-marketplace'
15
+ import { Domain } from '@things-factory/shell'
16
+
17
+ import { MarketplaceOrderItem } from '../entities'
16
18
 
17
19
  @Entity()
18
20
  @Index(
@@ -72,9 +74,15 @@ export class MarketplaceOrder {
72
74
  @Column({ nullable: true })
73
75
  trackingNo: string
74
76
 
77
+ @Column({ nullable: true })
78
+ ownTrackingNo: string
79
+
75
80
  @Column({ nullable: true })
76
81
  shippingProvider: string
77
82
 
83
+ @Column({ nullable: true })
84
+ ownShippingProvider: string
85
+
78
86
  @Column()
79
87
  status: string
80
88
 
@@ -93,6 +101,9 @@ export class MarketplaceOrder {
93
101
  @Column({ nullable: true })
94
102
  otherInfoJSON: string
95
103
 
104
+ @Column({ nullable: true })
105
+ isSplitted: boolean
106
+
96
107
  @CreateDateColumn()
97
108
  createdAt: Date
98
109
 
@@ -33,14 +33,33 @@ export const cancelMarketplaceOrderResolver = {
33
33
 
34
34
  const cancelStatuses: string[] = ['cancelled', 'canceled']
35
35
  if (cancelStatuses.includes(marketplaceOrder.status) && marketplaceOrder?.releaseOrderId) {
36
- const releaseOrderId: string = marketplaceOrder.releaseOrderId
37
- const fulfillmentCenter: FulfillmentCenter = marketplaceOrder.fulfillmentCenter
38
- const centerId: string = fulfillmentCenter.centerId
39
-
40
- const warehouseDomain: Domain = await tx.getRepository(Domain).findOne({ where: { subdomain: centerId } })
41
- const customerBizplaces: Bizplace[] = await getCustomerBizplaces(warehouseDomain)
42
- const customerBizplaceId: string = customerBizplaces[0].id
43
- await FulfillmentAPI.cancelReleaseOrder(fulfillmentCenter, { customerBizplaceId, releaseOrderId })
36
+ if (marketplaceOrder.isSplitted) {
37
+ const fulfillmentCenter: FulfillmentCenter = marketplaceOrder.fulfillmentCenter
38
+ const centerId: string = fulfillmentCenter.centerId
39
+ const warehouseDomain: Domain = await tx.getRepository(Domain).findOne({ where: { subdomain: centerId } })
40
+ const customerBizplaces: Bizplace[] = await getCustomerBizplaces(warehouseDomain)
41
+ const customerBizplaceId: string = customerBizplaces[0].id
42
+
43
+ const { items: releaseOrders }: any = await FulfillmentAPI.getOutboundOrders(fulfillmentCenter, {
44
+ customerBizplaceId,
45
+ refNo: marketplaceOrder.orderNo
46
+ })
47
+ if (releaseOrders?.length) {
48
+ for (var a = 0; a < releaseOrders.length; a++) {
49
+ const releaseOrderId: string = releaseOrders[a].id
50
+ await FulfillmentAPI.cancelReleaseOrder(fulfillmentCenter, { customerBizplaceId, releaseOrderId })
51
+ }
52
+ }
53
+ } else {
54
+ const releaseOrderId: string = marketplaceOrder.releaseOrderId
55
+ const fulfillmentCenter: FulfillmentCenter = marketplaceOrder.fulfillmentCenter
56
+ const centerId: string = fulfillmentCenter.centerId
57
+
58
+ const warehouseDomain: Domain = await tx.getRepository(Domain).findOne({ where: { subdomain: centerId } })
59
+ const customerBizplaces: Bizplace[] = await getCustomerBizplaces(warehouseDomain)
60
+ const customerBizplaceId: string = customerBizplaces[0].id
61
+ await FulfillmentAPI.cancelReleaseOrder(fulfillmentCenter, { customerBizplaceId, releaseOrderId })
62
+ }
44
63
  }
45
64
 
46
65
  return marketplaceOrder
@@ -1,12 +1,14 @@
1
+ import { EntityManager } from 'typeorm'
2
+
1
3
  import { User } from '@things-factory/auth-base'
2
4
  import { MarketplaceStore as MarketplaceStoreEntity } from '@things-factory/integration-marketplace'
3
5
  import { Domain } from '@things-factory/shell'
4
- import { EntityManager } from 'typeorm'
6
+
5
7
  import {
6
8
  MarketplaceOrder as MarketplaceOrderEntity,
7
9
  MarketplaceOrderItem as MarketplaceOrderItemEntity,
8
- MarketplaceProductVariation as MarketplaceProductVariationEntity,
9
- MarketplaceOrderShipping as MarketplaceOrderShippingEntity
10
+ MarketplaceOrderShipping as MarketplaceOrderShippingEntity,
11
+ MarketplaceProductVariation as MarketplaceProductVariationEntity
10
12
  } from '../../../entities'
11
13
  import { NoGenerator } from '../../../utils/no-generator'
12
14
 
@@ -58,8 +60,13 @@ export async function generateMarketplaceOrder(
58
60
  newMarketplaceOrderShipping.name = marketplaceOrderShipping?.shippingId
59
61
  ? marketplaceOrderShipping.shippingId
60
62
  : NoGenerator.orderShipping()
63
+ newMarketplaceOrderShipping.transporter =
64
+ marketplaceOrderShipping?.transporter === '' ? null : marketplaceOrderShipping.transporter
65
+ newMarketplaceOrderShipping.ownTransporter =
66
+ marketplaceOrderShipping?.transporter === '' ? null : marketplaceOrderShipping.transporter
61
67
  newMarketplaceOrderShipping.marketplaceStore = marketplaceStore
62
68
  newMarketplaceOrderShipping.orderNoRef = newMarketplaceOrder.orderNo
69
+ newMarketplaceOrderShipping.subOrderNoRef = newMarketplaceOrder.orderNo
63
70
  newMarketplaceOrderShipping.domain = domain
64
71
  newMarketplaceOrderShipping.creator = user
65
72
  newMarketplaceOrderShipping = await tx
@@ -21,9 +21,11 @@ import { marketplaceOrdersForBatchInitResolver } from './marketplace-orders-for-
21
21
  import { marketplaceOrdersForExport } from './marketplace-orders-for-export'
22
22
  import { setMarketplaceOrderDelivered } from './set-marketplace-order-delivered'
23
23
  import { setMarketplaceOrderFailedDelivery } from './set-marketplace-order-failed-delivery'
24
+ import { setOwnShippingProviderByOrdersResolver } from './set-own-shipping-provider-by-orders'
24
25
  import { splitOrdersByBatch } from './split-orders-by-batch'
25
26
  import { syncAllMarketplaceOrder } from './sync-all-marketplace-order'
26
27
  import { syncMarketplaceOrder } from './sync-marketplace-order'
28
+ import { updateMarketplaceOrder } from './update-marketplace-order'
27
29
  import { updateOrderReadyToShip } from './update-order-ready-to-ship'
28
30
 
29
31
  export const MarketplaceOrderResolver = {
@@ -56,7 +58,9 @@ export const MarketplaceOrderResolver = {
56
58
  ...initialiseShopeeLogisticsByBatch,
57
59
  ...initialiseLazadaLogisticsByBatch,
58
60
  ...cancelMarketplaceOrderResolver,
59
- ...splitOrdersByBatch
61
+ ...splitOrdersByBatch,
62
+ ...updateMarketplaceOrder,
63
+ ...setOwnShippingProviderByOrdersResolver
60
64
  }
61
65
  }
62
66
 
@@ -26,9 +26,11 @@ export const initialiseLogisticsByBatch = {
26
26
 
27
27
  marketplaceOrderShipping.trackingNo = patch?.trackingNo
28
28
  marketplaceOrderShipping.transporter = patch?.shippingProvider
29
+ marketplaceOrderShipping.ownTransporter = patch?.shippingProvider
29
30
  await tx.getRepository(MarketplaceOrderShipping).save(marketplaceOrderShipping)
30
31
 
31
- marketplaceOrder.shippingProvider = patch.shippingProvider
32
+ marketplaceOrder.shippingProvider = patch?.shippingProvider
33
+ marketplaceOrder.ownShippingProvider = patch?.shippingProvider
32
34
  marketplaceOrder.trackingNo = patch?.trackingNo
33
35
 
34
36
  await tx.getRepository(MarketplaceOrder).save(marketplaceOrder)
@@ -1,12 +1,14 @@
1
- import { MarketplaceStore, StoreAPI } from '@things-factory/integration-marketplace'
2
1
  import { getRepository } from 'typeorm'
2
+
3
+ import { MarketplaceStore, StoreAPI } from '@things-factory/integration-marketplace'
4
+
3
5
  import { MarketplaceOrder } from '../../../entities'
4
6
 
5
7
  export const initialiseShopeeLogisticsByBatch = {
6
8
  async initialiseShopeeLogisticsByBatch(_: any, { patches }, context: any) {
7
9
  await Promise.all(
8
10
  patches.map(async patch => {
9
- const foundMarketplaceOrder: MarketplaceOrder = await getRepository(MarketplaceOrder).findOne({
11
+ let foundMarketplaceOrder: MarketplaceOrder = await getRepository(MarketplaceOrder).findOne({
10
12
  where: { id: patch.id },
11
13
  relations: ['marketplaceStore', 'marketplaceOrderItems']
12
14
  })
@@ -0,0 +1,43 @@
1
+ import { EntityManager } from 'typeorm'
2
+
3
+ import { User } from '@things-factory/auth-base'
4
+
5
+ import { MarketplaceOrder, MarketplaceOrderShipping } from '../../../entities'
6
+
7
+ export const setOwnShippingProviderByOrdersResolver = {
8
+ async setOwnShippingProviderByOrders(_: any, { patches }, context: any) {
9
+ const { user, tx }: { user: User; tx: EntityManager } = context.state
10
+
11
+ await Promise.all(
12
+ patches.map(async patch => {
13
+ let marketplaceOrder: MarketplaceOrder = await tx.getRepository(MarketplaceOrder).findOne({
14
+ where: { id: patch.id },
15
+ relations: ['marketplaceStore']
16
+ })
17
+
18
+ if (!marketplaceOrder) throw new Error('No order is found')
19
+
20
+ let marketplaceOrderShippings: MarketplaceOrderShipping[] = await tx
21
+ .getRepository(MarketplaceOrderShipping)
22
+ .find({
23
+ where: { orderNoRef: marketplaceOrder.orderNo },
24
+ relations: ['marketplaceStore']
25
+ })
26
+
27
+ marketplaceOrder.ownShippingProvider = patch?.ownShippingProvider
28
+
29
+ await tx.getRepository(MarketplaceOrder).save(marketplaceOrder)
30
+
31
+ marketplaceOrderShippings = marketplaceOrderShippings.map(marketplaceOrderShipping => {
32
+ return {
33
+ ...marketplaceOrderShipping,
34
+ ownTransporter: patch?.ownShippingProvider
35
+ }
36
+ })
37
+
38
+ await tx.getRepository(MarketplaceOrderShipping).save(marketplaceOrderShippings)
39
+ })
40
+ )
41
+ return true
42
+ }
43
+ }
@@ -1,7 +1,7 @@
1
1
  import { EntityManager } from 'typeorm'
2
2
 
3
3
  import { User } from '@things-factory/auth-base'
4
- import { MarketplaceSetting, MarketplaceStore, StoreAPI } from '@things-factory/integration-marketplace'
4
+ import { MarketplaceSetting, MarketplaceStore } from '@things-factory/integration-marketplace'
5
5
  import { Domain } from '@things-factory/shell'
6
6
 
7
7
  import {
@@ -36,172 +36,110 @@ export const splitOrdersByBatch = {
36
36
  })
37
37
  if (!maxWeightSetting) throw new Error('marketplace_order_max_weight setting not found')
38
38
 
39
- if (marketplaceStore.platform === 'shopee') {
40
- let marketplaceOrderItems: MarketplaceOrderItem[] = marketplaceOrder.marketplaceOrderItems
41
-
42
- if (marketplaceOrderItems.some(item => item.marketplaceProductVariation.primaryUnitValue == null)) {
43
- throw new Error('some sku weight are empty')
44
- }
45
-
46
- marketplaceOrderItems.sort(function (a, b) {
47
- if (
48
- a.marketplaceProductVariation.primaryUnitValue * a.qty <
49
- b.marketplaceProductVariation.primaryUnitValue * b.qty
50
- )
51
- return -1
52
- if (
53
- a.marketplaceProductVariation.primaryUnitValue * a.qty >
54
- b.marketplaceProductVariation.primaryUnitValue * b.qty
55
- )
56
- return 1
57
- return 0
39
+ let originalMarketplaceOrderShipping: MarketplaceOrderShipping = await tx
40
+ .getRepository(MarketplaceOrderShipping)
41
+ .findOne({
42
+ where: { domain, orderNoRef: marketplaceOrder.orderNo, marketplaceStore: marketplaceOrder.marketplaceStore }
58
43
  })
59
44
 
60
- let splittedShipmentItems: any[] = []
61
- for (let j: number = 0; j < marketplaceOrderItems.length; j++) {
62
- const marketplaceOrderItem: MarketplaceOrderItem = marketplaceOrderItems[j]
63
- const marketplaceProductVariation: MarketplaceProductVariation =
64
- marketplaceOrderItem.marketplaceProductVariation
65
- const qty: number = marketplaceOrderItem.qty
66
- const primaryValue: number = parseFloat(marketplaceProductVariation.primaryUnitValue.toFixed(2)) * qty
45
+ const originalMarketplaceOrderItems: MarketplaceOrderItem[] = marketplaceOrder.marketplaceOrderItems
46
+ let newMarketplaceOrderItems: MarketplaceOrderItem[] = []
47
+ let splittedShipmentItems: any[] = []
67
48
 
68
- if (splittedShipmentItems.length == 0) {
69
- let splittedShipment: any = {
70
- shipments: [{ ...marketplaceOrderItem }],
71
- totalWeight: primaryValue
72
- }
73
- splittedShipmentItems.push(splittedShipment)
74
- } else {
75
- let lastShipment: any = splittedShipmentItems[splittedShipmentItems.length - 1]
76
- let lastTotalWeight: number = parseFloat(lastShipment.totalWeight.toFixed(2))
77
- if (lastTotalWeight + primaryValue < parseFloat(maxWeightSetting.value)) {
78
- splittedShipmentItems.map((shipmentItem, idx) => {
79
- if (idx === splittedShipmentItems.length - 1) {
80
- let shipments: any[] = shipmentItem.shipments
81
-
82
- shipments = shipments.map(async shipment => {
83
- if (shipment.marketplaceProductVariation.id === marketplaceProductVariation.id) {
84
- shipment.qty += marketplaceOrderItem.qty
85
- } else {
86
- marketplaceOrderItem.marketplaceOrder = marketplaceOrder
87
- marketplaceOrderItem.marketplaceOrderShipping = shipment.marketplaceOrderShipping
88
- shipmentItem.shipments.push({ ...marketplaceOrderItem })
89
- }
90
-
91
- shipment.marketplaceOrderShipping.totalWeight = parseFloat(
92
- (lastTotalWeight + primaryValue).toFixed(2)
93
- )
94
- await tx.getRepository(MarketplaceOrderShipping).save(shipment.marketplaceOrderShipping)
95
- })
96
-
97
- shipmentItem.totalWeight += primaryValue
98
- }
99
- })
100
- } else {
101
- let splittedShipment: any = {
102
- shipments: [{ ...marketplaceOrderItem }],
103
- totalWeight: primaryValue
104
- }
105
- splittedShipmentItems.push(splittedShipment)
106
- }
49
+ for (let a: number = 0; a < originalMarketplaceOrderItems.length; a++) {
50
+ const marketplaceOrderItem: MarketplaceOrderItem = originalMarketplaceOrderItems[a]
51
+
52
+ for (let b: number = 0; b < marketplaceOrderItem.qty; b++) {
53
+ const newItem: MarketplaceOrderItem = {
54
+ ...marketplaceOrderItem,
55
+ qty: 1
107
56
  }
57
+ newMarketplaceOrderItems.push(newItem)
108
58
  }
59
+ }
109
60
 
110
- let parcels: any[] = []
61
+ newMarketplaceOrderItems.sort(function (a, b) {
62
+ if (a.marketplaceProductVariation.primaryUnitValue < b.marketplaceProductVariation.primaryUnitValue) return -1
63
+ if (a.marketplaceProductVariation.primaryUnitValue > b.marketplaceProductVariation.primaryUnitValue) return 1
64
+ return 0
65
+ })
111
66
 
112
- splittedShipmentItems.forEach(shipmentItem => {
113
- parcels.push(
114
- shipmentItem.shipments.map(shipment => {
115
- return {
116
- item_id: parseFloat(shipment.name),
117
- variation_id: parseFloat(shipment.marketplaceProductVariation.variationId),
118
- order_item_id: parseFloat(shipment.name),
119
- promotion_group_id: 0
67
+ for (let a: number = 0; a < newMarketplaceOrderItems.length; a++) {
68
+ const marketplaceOrderItem: MarketplaceOrderItem = newMarketplaceOrderItems[a]
69
+ const marketplaceProductVariation: MarketplaceProductVariation =
70
+ marketplaceOrderItem.marketplaceProductVariation
71
+ if (!marketplaceProductVariation.primaryUnitValue)
72
+ throw new Error(marketplaceProductVariation.variationSku + ' weight is empty')
73
+ const primaryUnitValue: number = parseFloat(marketplaceProductVariation.primaryUnitValue.toFixed(2))
74
+
75
+ delete marketplaceOrderItem.id
76
+
77
+ let newMarketplaceOrderShipping: MarketplaceOrderShipping = new MarketplaceOrderShipping()
78
+ newMarketplaceOrderShipping.name = NoGenerator.orderShipping()
79
+ newMarketplaceOrderShipping.address1 = originalMarketplaceOrderShipping.address1
80
+ newMarketplaceOrderShipping.address2 = originalMarketplaceOrderShipping.address2
81
+ newMarketplaceOrderShipping.address3 = originalMarketplaceOrderShipping.address3
82
+ newMarketplaceOrderShipping.address4 = originalMarketplaceOrderShipping.address4
83
+ newMarketplaceOrderShipping.address5 = originalMarketplaceOrderShipping.address5
84
+ newMarketplaceOrderShipping.attentionTo = originalMarketplaceOrderShipping.attentionTo
85
+ newMarketplaceOrderShipping.city = originalMarketplaceOrderShipping.city
86
+ newMarketplaceOrderShipping.country = originalMarketplaceOrderShipping.country
87
+ newMarketplaceOrderShipping.postCode = originalMarketplaceOrderShipping.postCode
88
+ newMarketplaceOrderShipping.phone1 = originalMarketplaceOrderShipping.phone1
89
+ newMarketplaceOrderShipping.phone2 = originalMarketplaceOrderShipping.phone2
90
+ newMarketplaceOrderShipping.orderNoRef = marketplaceOrder.orderNo
91
+ newMarketplaceOrderShipping.transporter = originalMarketplaceOrderShipping.transporter
92
+ newMarketplaceOrderShipping.marketplaceStore = marketplaceStore
93
+ newMarketplaceOrderShipping.creator = user
94
+ newMarketplaceOrderShipping.domain = marketplaceOrder.domain
95
+ newMarketplaceOrderShipping.weightUnit = 'KG'
96
+
97
+ if (splittedShipmentItems.length == 0) {
98
+ newMarketplaceOrderShipping.totalWeight = primaryUnitValue
99
+
100
+ newMarketplaceOrderShipping = await tx
101
+ .getRepository(MarketplaceOrderShipping)
102
+ .save(newMarketplaceOrderShipping)
103
+
104
+ marketplaceOrderItem.marketplaceOrder = marketplaceOrder
105
+ marketplaceOrderItem.marketplaceOrderShipping = newMarketplaceOrderShipping
106
+ marketplaceOrderItem.domain = marketplaceOrder.domain
107
+ marketplaceOrderItem.docRefNo = marketplaceOrder.orderNo
108
+
109
+ let splittedShipment: any = {
110
+ shipments: [{ ...marketplaceOrderItem }],
111
+ totalWeight: primaryUnitValue
112
+ }
113
+ splittedShipmentItems.push(splittedShipment)
114
+ } else {
115
+ let lastShipment: any = splittedShipmentItems[splittedShipmentItems.length - 1]
116
+ let lastTotalWeight: number = parseFloat(lastShipment.totalWeight.toFixed(2))
117
+ if (lastTotalWeight + primaryUnitValue < parseFloat(maxWeightSetting.value)) {
118
+ splittedShipmentItems.map((shipmentItem, idx) => {
119
+ if (idx === splittedShipmentItems.length - 1) {
120
+ let shipments: any[] = shipmentItem.shipments
121
+
122
+ shipments = shipments.map(async shipment => {
123
+ if (shipment.marketplaceProductVariation.id === marketplaceProductVariation.id) {
124
+ shipment.qty += marketplaceOrderItem.qty
125
+ } else {
126
+ marketplaceOrderItem.marketplaceOrder = marketplaceOrder
127
+ marketplaceOrderItem.marketplaceOrderShipping = shipment.marketplaceOrderShipping
128
+ marketplaceOrderItem.domain = marketplaceOrder.domain
129
+ marketplaceOrderItem.docRefNo = marketplaceOrder.orderNo
130
+ shipmentItem.shipments.push({ ...marketplaceOrderItem })
131
+ }
132
+
133
+ shipment.marketplaceOrderShipping.totalWeight = parseFloat(
134
+ (lastTotalWeight + primaryUnitValue).toFixed(2)
135
+ )
136
+ await tx.getRepository(MarketplaceOrderShipping).save(shipment.marketplaceOrderShipping)
137
+ })
138
+
139
+ shipmentItem.totalWeight += primaryUnitValue
120
140
  }
121
141
  })
122
- )
123
- })
124
-
125
- const splittedPackage: any = await StoreAPI.splitOrder(marketplaceStore, {
126
- ordersn: marketplaceOrder.orderNo,
127
- parcels
128
- })
129
-
130
- const packageLists: any[] = splittedPackage.packageList
131
-
132
- for (let a: number = 0; a < packageLists.length; a++) {
133
- const packageList: any = packageLists[a]
134
- const packageNumber: string = packageList.packageNumber
135
- const packageItems: any[] = packageList.items
136
- for (let b: number = 0; b < marketplaceOrderItems.length; b++) {
137
- let marketplaceOrderItem: any = marketplaceOrderItems[b]
138
- if (packageItems.find(item => item.itemId === marketplaceOrderItem)) {
139
- marketplaceOrderItem.packageId = packageNumber
140
- }
141
- }
142
- }
143
-
144
- await tx.getRepository(MarketplaceOrderItem).save(marketplaceOrderItems)
145
- } else {
146
- let originalMarketplaceOrderShipping: MarketplaceOrderShipping = await tx
147
- .getRepository(MarketplaceOrderShipping)
148
- .findOne({
149
- where: { domain, orderNoRef: marketplaceOrder.orderNo, marketplaceStore: marketplaceOrder.marketplaceStore }
150
- })
151
-
152
- const originalMarketplaceOrderItems: MarketplaceOrderItem[] = marketplaceOrder.marketplaceOrderItems
153
- let newMarketplaceOrderItems: MarketplaceOrderItem[] = []
154
- let splittedShipmentItems: any[] = []
155
-
156
- for (let a: number = 0; a < originalMarketplaceOrderItems.length; a++) {
157
- const marketplaceOrderItem: MarketplaceOrderItem = originalMarketplaceOrderItems[a]
158
-
159
- for (let b: number = 0; b < marketplaceOrderItem.qty; b++) {
160
- const newItem: MarketplaceOrderItem = {
161
- ...marketplaceOrderItem,
162
- qty: 1
163
- }
164
- newMarketplaceOrderItems.push(newItem)
165
- }
166
- }
167
-
168
- newMarketplaceOrderItems.sort(function (a, b) {
169
- if (a.marketplaceProductVariation.primaryUnitValue < b.marketplaceProductVariation.primaryUnitValue) return -1
170
- if (a.marketplaceProductVariation.primaryUnitValue > b.marketplaceProductVariation.primaryUnitValue) return 1
171
- return 0
172
- })
173
-
174
- for (let a: number = 0; a < newMarketplaceOrderItems.length; a++) {
175
- const marketplaceOrderItem: MarketplaceOrderItem = newMarketplaceOrderItems[a]
176
- const marketplaceProductVariation: MarketplaceProductVariation =
177
- marketplaceOrderItem.marketplaceProductVariation
178
- if (!marketplaceProductVariation.primaryUnitValue)
179
- throw new Error(marketplaceProductVariation.variationSku + 'weight is empty')
180
- const primaryUnitValue: number = parseFloat(marketplaceProductVariation.primaryUnitValue.toFixed(2))
181
-
182
- delete marketplaceOrderItem.id
183
-
184
- let newMarketplaceOrderShipping: MarketplaceOrderShipping = new MarketplaceOrderShipping()
185
- newMarketplaceOrderShipping.name = NoGenerator.orderShipping()
186
- newMarketplaceOrderShipping.address1 = originalMarketplaceOrderShipping.address1
187
- newMarketplaceOrderShipping.address2 = originalMarketplaceOrderShipping.address2
188
- newMarketplaceOrderShipping.address3 = originalMarketplaceOrderShipping.address3
189
- newMarketplaceOrderShipping.address4 = originalMarketplaceOrderShipping.address4
190
- newMarketplaceOrderShipping.address5 = originalMarketplaceOrderShipping.address5
191
- newMarketplaceOrderShipping.attentionTo = originalMarketplaceOrderShipping.attentionTo
192
- newMarketplaceOrderShipping.city = originalMarketplaceOrderShipping.city
193
- newMarketplaceOrderShipping.country = originalMarketplaceOrderShipping.country
194
- newMarketplaceOrderShipping.postCode = originalMarketplaceOrderShipping.postCode
195
- newMarketplaceOrderShipping.phone1 = originalMarketplaceOrderShipping.phone1
196
- newMarketplaceOrderShipping.phone2 = originalMarketplaceOrderShipping.phone2
197
- newMarketplaceOrderShipping.orderNoRef = marketplaceOrder.orderNo
198
- newMarketplaceOrderShipping.transporter = originalMarketplaceOrderShipping.transporter
199
- newMarketplaceOrderShipping.marketplaceStore = marketplaceStore
200
- newMarketplaceOrderShipping.creator = user
201
- newMarketplaceOrderShipping.domain = marketplaceOrder.domain
202
- newMarketplaceOrderShipping.weightUnit = 'KG'
203
-
204
- if (splittedShipmentItems.length == 0) {
142
+ } else {
205
143
  newMarketplaceOrderShipping.totalWeight = primaryUnitValue
206
144
 
207
145
  newMarketplaceOrderShipping = await tx
@@ -210,71 +148,291 @@ export const splitOrdersByBatch = {
210
148
 
211
149
  marketplaceOrderItem.marketplaceOrder = marketplaceOrder
212
150
  marketplaceOrderItem.marketplaceOrderShipping = newMarketplaceOrderShipping
151
+ marketplaceOrderItem.domain = marketplaceOrder.domain
152
+ marketplaceOrderItem.docRefNo = marketplaceOrder.orderNo
213
153
 
214
154
  let splittedShipment: any = {
215
155
  shipments: [{ ...marketplaceOrderItem }],
216
156
  totalWeight: primaryUnitValue
217
157
  }
218
158
  splittedShipmentItems.push(splittedShipment)
219
- } else {
220
- let lastShipment: any = splittedShipmentItems[splittedShipmentItems.length - 1]
221
- let lastTotalWeight: number = parseFloat(lastShipment.totalWeight.toFixed(2))
222
- if (lastTotalWeight + primaryUnitValue < parseFloat(maxWeightSetting.value)) {
223
- splittedShipmentItems.map((shipmentItem, idx) => {
224
- if (idx === splittedShipmentItems.length - 1) {
225
- let shipments: any[] = shipmentItem.shipments
226
-
227
- shipments = shipments.map(async shipment => {
228
- if (shipment.marketplaceProductVariation.id === marketplaceProductVariation.id) {
229
- shipment.qty += marketplaceOrderItem.qty
230
- } else {
231
- marketplaceOrderItem.marketplaceOrder = marketplaceOrder
232
- marketplaceOrderItem.marketplaceOrderShipping = shipment.marketplaceOrderShipping
233
- shipmentItem.shipments.push({ ...marketplaceOrderItem })
234
- }
235
-
236
- shipment.marketplaceOrderShipping.totalWeight = parseFloat(
237
- (lastTotalWeight + primaryUnitValue).toFixed(2)
238
- )
239
- await tx.getRepository(MarketplaceOrderShipping).save(shipment.marketplaceOrderShipping)
240
- })
241
-
242
- shipmentItem.totalWeight += primaryUnitValue
243
- }
244
- })
245
- } else {
246
- newMarketplaceOrderShipping.totalWeight = primaryUnitValue
247
-
248
- newMarketplaceOrderShipping = await tx
249
- .getRepository(MarketplaceOrderShipping)
250
- .save(newMarketplaceOrderShipping)
251
-
252
- marketplaceOrderItem.marketplaceOrder = marketplaceOrder
253
- marketplaceOrderItem.marketplaceOrderShipping = newMarketplaceOrderShipping
254
-
255
- let splittedShipment: any = {
256
- shipments: [{ ...marketplaceOrderItem }],
257
- totalWeight: primaryUnitValue
258
- }
259
- splittedShipmentItems.push(splittedShipment)
260
- }
261
159
  }
262
160
  }
161
+ }
263
162
 
264
- let savedMarketplaceOrderItems: MarketplaceOrderItem[] = []
265
- for (let a: number = 0; a < splittedShipmentItems.length; a++) {
266
- const shipments: any[] = splittedShipmentItems[a].shipments
267
- for (let b: number = 0; b < shipments.length; b++) {
268
- savedMarketplaceOrderItems.push(shipments[b])
269
- }
163
+ let savedMarketplaceOrderItems: MarketplaceOrderItem[] = []
164
+ for (let a: number = 0; a < splittedShipmentItems.length; a++) {
165
+ const shipments: any[] = splittedShipmentItems[a].shipments
166
+ for (let b: number = 0; b < shipments.length; b++) {
167
+ savedMarketplaceOrderItems.push(shipments[b])
270
168
  }
169
+ }
271
170
 
272
- savedMarketplaceOrderItems = await tx.getRepository(MarketplaceOrderItem).save(savedMarketplaceOrderItems)
171
+ savedMarketplaceOrderItems = await tx.getRepository(MarketplaceOrderItem).save(savedMarketplaceOrderItems)
172
+
173
+ await tx.getRepository(MarketplaceOrderItem).delete(originalMarketplaceOrderItems.map(item => item.id))
174
+
175
+ await tx.getRepository(MarketplaceOrderShipping).delete(originalMarketplaceOrderShipping.id)
176
+
177
+ // if (marketplaceStore.platform === 'shopee') {
178
+ // let marketplaceOrderItems: MarketplaceOrderItem[] = marketplaceOrder.marketplaceOrderItems
179
+
180
+ // if (marketplaceOrderItems.some(item => item.marketplaceProductVariation.primaryUnitValue == null)) {
181
+ // throw new Error('some sku weight are empty')
182
+ // }
183
+
184
+ // marketplaceOrderItems.sort(function (a, b) {
185
+ // if (
186
+ // a.marketplaceProductVariation.primaryUnitValue * a.qty <
187
+ // b.marketplaceProductVariation.primaryUnitValue * b.qty
188
+ // )
189
+ // return -1
190
+ // if (
191
+ // a.marketplaceProductVariation.primaryUnitValue * a.qty >
192
+ // b.marketplaceProductVariation.primaryUnitValue * b.qty
193
+ // )
194
+ // return 1
195
+ // return 0
196
+ // })
197
+
198
+ // let splittedShipmentItems: any[] = []
199
+ // for (let j: number = 0; j < marketplaceOrderItems.length; j++) {
200
+ // const marketplaceOrderItem: MarketplaceOrderItem = marketplaceOrderItems[j]
201
+ // const marketplaceProductVariation: MarketplaceProductVariation =
202
+ // marketplaceOrderItem.marketplaceProductVariation
203
+ // const qty: number = marketplaceOrderItem.qty
204
+ // const primaryValue: number = parseFloat(marketplaceProductVariation.primaryUnitValue.toFixed(2)) * qty
205
+
206
+ // if (splittedShipmentItems.length == 0) {
207
+ // let splittedShipment: any = {
208
+ // shipments: [{ ...marketplaceOrderItem }],
209
+ // totalWeight: primaryValue
210
+ // }
211
+ // splittedShipmentItems.push(splittedShipment)
212
+ // } else {
213
+ // let lastShipment: any = splittedShipmentItems[splittedShipmentItems.length - 1]
214
+ // let lastTotalWeight: number = parseFloat(lastShipment.totalWeight.toFixed(2))
215
+ // if (lastTotalWeight + primaryValue < parseFloat(maxWeightSetting.value)) {
216
+ // splittedShipmentItems.map((shipmentItem, idx) => {
217
+ // if (idx === splittedShipmentItems.length - 1) {
218
+ // let shipments: any[] = shipmentItem.shipments
219
+
220
+ // shipments = shipments.map(async shipment => {
221
+ // if (shipment.marketplaceProductVariation.id === marketplaceProductVariation.id) {
222
+ // shipment.qty += marketplaceOrderItem.qty
223
+ // } else {
224
+ // marketplaceOrderItem.marketplaceOrder = marketplaceOrder
225
+ // marketplaceOrderItem.marketplaceOrderShipping = shipment.marketplaceOrderShipping
226
+ // shipmentItem.shipments.push({ ...marketplaceOrderItem })
227
+ // }
228
+
229
+ // shipment.marketplaceOrderShipping.totalWeight = parseFloat(
230
+ // (lastTotalWeight + primaryValue).toFixed(2)
231
+ // )
232
+ // await tx.getRepository(MarketplaceOrderShipping).save(shipment.marketplaceOrderShipping)
233
+ // })
234
+
235
+ // shipmentItem.totalWeight += primaryValue
236
+ // }
237
+ // })
238
+ // } else {
239
+ // let splittedShipment: any = {
240
+ // shipments: [{ ...marketplaceOrderItem }],
241
+ // totalWeight: primaryValue
242
+ // }
243
+ // splittedShipmentItems.push(splittedShipment)
244
+ // }
245
+ // }
246
+ // }
247
+
248
+ // let parcels: any[] = []
249
+
250
+ // splittedShipmentItems.forEach(shipmentItem => {
251
+ // parcels.push(
252
+ // shipmentItem.shipments.map(shipment => {
253
+ // return {
254
+ // item_id: parseFloat(shipment.name),
255
+ // variation_id: parseFloat(shipment.marketplaceProductVariation.variationId),
256
+ // order_item_id: parseFloat(shipment.name),
257
+ // promotion_group_id: 0
258
+ // }
259
+ // })
260
+ // )
261
+ // })
262
+
263
+ // const splittedPackage: any = await StoreAPI.splitOrder(marketplaceStore, {
264
+ // ordersn: marketplaceOrder.orderNo,
265
+ // parcels
266
+ // })
267
+
268
+ // const packageLists: any[] = splittedPackage.packageList
269
+
270
+ // for (let a: number = 0; a < packageLists.length; a++) {
271
+ // const packageList: any = packageLists[a]
272
+ // const packageNumber: string = packageList.packageNumber
273
+ // const packageItems: any[] = packageList.items
274
+ // for (let b: number = 0; b < marketplaceOrderItems.length; b++) {
275
+ // let marketplaceOrderItem: any = marketplaceOrderItems[b]
276
+ // if (packageItems.find(item => item.itemId === marketplaceOrderItem)) {
277
+ // marketplaceOrderItem.packageId = packageNumber
278
+ // }
279
+ // }
280
+ // }
281
+
282
+ // await tx.getRepository(MarketplaceOrderItem).save(marketplaceOrderItems)
283
+ // } else {
284
+ // let originalMarketplaceOrderShipping: MarketplaceOrderShipping = await tx
285
+ // .getRepository(MarketplaceOrderShipping)
286
+ // .findOne({
287
+ // where: { domain, orderNoRef: marketplaceOrder.orderNo, marketplaceStore: marketplaceOrder.marketplaceStore }
288
+ // })
289
+
290
+ // const originalMarketplaceOrderItems: MarketplaceOrderItem[] = marketplaceOrder.marketplaceOrderItems
291
+ // let newMarketplaceOrderItems: MarketplaceOrderItem[] = []
292
+ // let splittedShipmentItems: any[] = []
293
+
294
+ // for (let a: number = 0; a < originalMarketplaceOrderItems.length; a++) {
295
+ // const marketplaceOrderItem: MarketplaceOrderItem = originalMarketplaceOrderItems[a]
296
+
297
+ // for (let b: number = 0; b < marketplaceOrderItem.qty; b++) {
298
+ // const newItem: MarketplaceOrderItem = {
299
+ // ...marketplaceOrderItem,
300
+ // qty: 1
301
+ // }
302
+ // newMarketplaceOrderItems.push(newItem)
303
+ // }
304
+ // }
305
+
306
+ // newMarketplaceOrderItems.sort(function (a, b) {
307
+ // if (a.marketplaceProductVariation.primaryUnitValue < b.marketplaceProductVariation.primaryUnitValue) return -1
308
+ // if (a.marketplaceProductVariation.primaryUnitValue > b.marketplaceProductVariation.primaryUnitValue) return 1
309
+ // return 0
310
+ // })
311
+
312
+ // for (let a: number = 0; a < newMarketplaceOrderItems.length; a++) {
313
+ // const marketplaceOrderItem: MarketplaceOrderItem = newMarketplaceOrderItems[a]
314
+ // const marketplaceProductVariation: MarketplaceProductVariation =
315
+ // marketplaceOrderItem.marketplaceProductVariation
316
+ // if (!marketplaceProductVariation.primaryUnitValue)
317
+ // throw new Error(marketplaceProductVariation.variationSku + 'weight is empty')
318
+ // const primaryUnitValue: number = parseFloat(marketplaceProductVariation.primaryUnitValue.toFixed(2))
319
+
320
+ // delete marketplaceOrderItem.id
321
+
322
+ // let newMarketplaceOrderShipping: MarketplaceOrderShipping = new MarketplaceOrderShipping()
323
+ // newMarketplaceOrderShipping.name = NoGenerator.orderShipping()
324
+ // newMarketplaceOrderShipping.address1 = originalMarketplaceOrderShipping.address1
325
+ // newMarketplaceOrderShipping.address2 = originalMarketplaceOrderShipping.address2
326
+ // newMarketplaceOrderShipping.address3 = originalMarketplaceOrderShipping.address3
327
+ // newMarketplaceOrderShipping.address4 = originalMarketplaceOrderShipping.address4
328
+ // newMarketplaceOrderShipping.address5 = originalMarketplaceOrderShipping.address5
329
+ // newMarketplaceOrderShipping.attentionTo = originalMarketplaceOrderShipping.attentionTo
330
+ // newMarketplaceOrderShipping.city = originalMarketplaceOrderShipping.city
331
+ // newMarketplaceOrderShipping.country = originalMarketplaceOrderShipping.country
332
+ // newMarketplaceOrderShipping.postCode = originalMarketplaceOrderShipping.postCode
333
+ // newMarketplaceOrderShipping.phone1 = originalMarketplaceOrderShipping.phone1
334
+ // newMarketplaceOrderShipping.phone2 = originalMarketplaceOrderShipping.phone2
335
+ // newMarketplaceOrderShipping.orderNoRef = marketplaceOrder.orderNo
336
+ // newMarketplaceOrderShipping.transporter = originalMarketplaceOrderShipping.transporter
337
+ // newMarketplaceOrderShipping.marketplaceStore = marketplaceStore
338
+ // newMarketplaceOrderShipping.creator = user
339
+ // newMarketplaceOrderShipping.domain = marketplaceOrder.domain
340
+ // newMarketplaceOrderShipping.weightUnit = 'KG'
341
+
342
+ // if (splittedShipmentItems.length == 0) {
343
+ // newMarketplaceOrderShipping.totalWeight = primaryUnitValue
344
+
345
+ // newMarketplaceOrderShipping = await tx
346
+ // .getRepository(MarketplaceOrderShipping)
347
+ // .save(newMarketplaceOrderShipping)
348
+
349
+ // marketplaceOrderItem.marketplaceOrder = marketplaceOrder
350
+ // marketplaceOrderItem.marketplaceOrderShipping = newMarketplaceOrderShipping
351
+
352
+ // let splittedShipment: any = {
353
+ // shipments: [{ ...marketplaceOrderItem }],
354
+ // totalWeight: primaryUnitValue
355
+ // }
356
+ // splittedShipmentItems.push(splittedShipment)
357
+ // } else {
358
+ // let lastShipment: any = splittedShipmentItems[splittedShipmentItems.length - 1]
359
+ // let lastTotalWeight: number = parseFloat(lastShipment.totalWeight.toFixed(2))
360
+ // if (lastTotalWeight + primaryUnitValue < parseFloat(maxWeightSetting.value)) {
361
+ // splittedShipmentItems.map((shipmentItem, idx) => {
362
+ // if (idx === splittedShipmentItems.length - 1) {
363
+ // let shipments: any[] = shipmentItem.shipments
364
+
365
+ // shipments = shipments.map(async shipment => {
366
+ // if (shipment.marketplaceProductVariation.id === marketplaceProductVariation.id) {
367
+ // shipment.qty += marketplaceOrderItem.qty
368
+ // } else {
369
+ // marketplaceOrderItem.marketplaceOrder = marketplaceOrder
370
+ // marketplaceOrderItem.marketplaceOrderShipping = shipment.marketplaceOrderShipping
371
+ // shipmentItem.shipments.push({ ...marketplaceOrderItem })
372
+ // }
373
+
374
+ // shipment.marketplaceOrderShipping.totalWeight = parseFloat(
375
+ // (lastTotalWeight + primaryUnitValue).toFixed(2)
376
+ // )
377
+ // await tx.getRepository(MarketplaceOrderShipping).save(shipment.marketplaceOrderShipping)
378
+ // })
379
+
380
+ // shipmentItem.totalWeight += primaryUnitValue
381
+ // }
382
+ // })
383
+ // } else {
384
+ // newMarketplaceOrderShipping.totalWeight = primaryUnitValue
385
+
386
+ // newMarketplaceOrderShipping = await tx
387
+ // .getRepository(MarketplaceOrderShipping)
388
+ // .save(newMarketplaceOrderShipping)
389
+
390
+ // marketplaceOrderItem.marketplaceOrder = marketplaceOrder
391
+ // marketplaceOrderItem.marketplaceOrderShipping = newMarketplaceOrderShipping
392
+
393
+ // let splittedShipment: any = {
394
+ // shipments: [{ ...marketplaceOrderItem }],
395
+ // totalWeight: primaryUnitValue
396
+ // }
397
+ // splittedShipmentItems.push(splittedShipment)
398
+ // }
399
+ // }
400
+ // }
401
+
402
+ // let savedMarketplaceOrderItems: MarketplaceOrderItem[] = []
403
+ // for (let a: number = 0; a < splittedShipmentItems.length; a++) {
404
+ // const shipments: any[] = splittedShipmentItems[a].shipments
405
+ // for (let b: number = 0; b < shipments.length; b++) {
406
+ // savedMarketplaceOrderItems.push(shipments[b])
407
+ // }
408
+ // }
409
+
410
+ // savedMarketplaceOrderItems = await tx.getRepository(MarketplaceOrderItem).save(savedMarketplaceOrderItems)
411
+
412
+ // await tx.getRepository(MarketplaceOrderItem).delete(originalMarketplaceOrderItems.map(item => item.id))
413
+
414
+ // await tx.getRepository(MarketplaceOrderShipping).delete(originalMarketplaceOrderShipping.id)
415
+ // }
416
+
417
+ let marketplaceOrderShippings: MarketplaceOrderShipping[] = await tx
418
+ .getRepository(MarketplaceOrderShipping)
419
+ .find({ where: { domain, orderNoRef: marketplaceOrder.orderNo } })
420
+
421
+ marketplaceOrderShippings = marketplaceOrderShippings.map((marketplaceOrderShipping, idx) => {
422
+ return {
423
+ ...marketplaceOrderShipping,
424
+ subOrderNoRef:
425
+ marketplaceOrderShipping.orderNoRef + ' - ' + (idx + 1) + '/' + marketplaceOrderShippings.length
426
+ }
427
+ })
273
428
 
274
- await tx.getRepository(MarketplaceOrderItem).delete(originalMarketplaceOrderItems.map(item => item.id))
429
+ await tx.getRepository(MarketplaceOrderShipping).save(marketplaceOrderShippings)
275
430
 
276
- await tx.getRepository(MarketplaceOrderShipping).delete(originalMarketplaceOrderShipping.id)
277
- }
431
+ let newMarketplaceOrder: MarketplaceOrder = await tx.getRepository(MarketplaceOrder).findOne({
432
+ where: { id: patch.id }
433
+ })
434
+ newMarketplaceOrder.isSplitted = true
435
+ await tx.getRepository(MarketplaceOrder).save(newMarketplaceOrder)
278
436
  }
279
437
 
280
438
  return true