@things-factory/operato-mms 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.
@@ -2,7 +2,12 @@ import { getRepository } from 'typeorm'
2
2
 
3
3
  import { Bizplace, getCustomerBizplaces } from '@things-factory/biz-base'
4
4
  import { FulfillmentAPI, FulfillmentCenter } from '@things-factory/integration-fulfillment'
5
- import { MarketplaceOrder, MarketplaceOrderItem, MarketplaceOrderShipping } from '@things-factory/marketplace-base'
5
+ import {
6
+ MarketplaceOrder,
7
+ MarketplaceOrderItem,
8
+ MarketplaceOrderShipping,
9
+ MarketplaceOrderShippingItem
10
+ } from '@things-factory/marketplace-base'
6
11
  import { Product, ProductBundle } from '@things-factory/product-base'
7
12
  import { Domain } from '@things-factory/shell'
8
13
 
@@ -31,7 +36,8 @@ export const addReleaseOrderResolver = {
31
36
  relations: [
32
37
  'marketplaceOrderItems',
33
38
  'marketplaceOrderItems.marketplaceProductVariation',
34
- 'marketplaceOrderItems.marketplaceOrderShipping',
39
+ 'marketplaceOrderItems.marketplaceOrderShippingItems',
40
+ 'marketplaceOrderItems.marketplaceOrderShippingItems.marketplaceOrderShipping',
35
41
  'marketplaceStore'
36
42
  ]
37
43
  })
@@ -39,17 +45,24 @@ export const addReleaseOrderResolver = {
39
45
  let marketplaceOrderShippings: MarketplaceOrderShipping[] = await getRepository(MarketplaceOrderShipping).find({
40
46
  where: { orderNoRef: marketplaceOrder.orderNo, domain },
41
47
  order: { subOrderNoRef: 'ASC' },
42
- relations: ['marketplaceOrderItems']
48
+ relations: [
49
+ 'marketplaceOrderShippingItems',
50
+ 'marketplaceOrderShippingItems.marketplaceOrderItem',
51
+ 'marketplaceOrderShippingItems.product'
52
+ ]
43
53
  })
44
54
 
45
- for (var j = 0; j < marketplaceOrderShippings.length; j++) {
55
+ for (let j = 0; j < marketplaceOrderShippings.length; j++) {
46
56
  let marketplaceOrderShipping: MarketplaceOrderShipping = marketplaceOrderShippings[j]
57
+ let marketplaceOrderShippingItems: MarketplaceOrderShippingItem[] =
58
+ marketplaceOrderShipping.marketplaceOrderShippingItems
47
59
 
48
60
  if (!marketplaceOrderShipping?.releaseOrderId) {
49
61
  const date: Date = new Date()
50
- const releaseDate = `${date.getFullYear()}-${(date.getMonth() + 1)
62
+ const releaseDate = `${date.getFullYear()}-${(date.getMonth() + 1).toString().padStart(2, '0')}-${date
63
+ .getDate()
51
64
  .toString()
52
- .padStart(2, '0')}-${date.getDate().toString().padStart(2, '0')}`
65
+ .padStart(2, '0')}`
53
66
 
54
67
  const newReleaseOrder: any = {
55
68
  releaseDate,
@@ -83,21 +96,14 @@ export const addReleaseOrderResolver = {
83
96
  marketplaceOrderStatus: marketplaceOrder.status,
84
97
  airwayBill: marketplaceOrderShipping?.airwayBill ? marketplaceOrderShipping.airwayBill : null,
85
98
  invoice: marketplaceOrderShipping?.invoice ? marketplaceOrderShipping.invoice : null,
86
- orderInventories: marketplaceOrder.marketplaceOrderItems
87
- .filter(item => {
88
- if (item.marketplaceOrderShipping.id === marketplaceOrderShipping.id) {
89
- return item
90
- }
91
- })
92
- .map((orderItem: any) => {
93
- const { marketplaceProductVariation: productVariation }: any = orderItem
94
- return {
95
- product: {
96
- sku: productVariation.sku
97
- },
98
- releaseQty: orderItem.qty
99
- }
100
- })
99
+ orderInventories: marketplaceOrderShippingItems.map(marketplaceOrderShippingItem => {
100
+ return {
101
+ product: {
102
+ sku: marketplaceOrderShippingItem.product.sku
103
+ },
104
+ releaseQty: marketplaceOrderShippingItem.qty
105
+ }
106
+ })
101
107
  }
102
108
 
103
109
  try {
@@ -105,6 +111,16 @@ export const addReleaseOrderResolver = {
105
111
  customerBizplaceId,
106
112
  releaseOrder: newReleaseOrder
107
113
  })
114
+
115
+ marketplaceOrderShipping.releaseOrderId = releaseOrder.id
116
+ marketplaceOrderShipping.fulfillmentCenter = fulfilmentCenter
117
+ await getRepository(MarketplaceOrderShipping).save(marketplaceOrderShipping)
118
+
119
+ if (releaseOrder && releaseOrder?.id) {
120
+ marketplaceOrder.releaseOrderId = releaseOrder.id
121
+ marketplaceOrder.fulfillmentCenter = fulfilmentCenter
122
+ await getRepository(MarketplaceOrder).save(marketplaceOrder)
123
+ }
108
124
  } catch (e) {}
109
125
 
110
126
  var invoiceProducts = await Promise.all(
@@ -119,10 +135,12 @@ export const addReleaseOrderResolver = {
119
135
  })
120
136
  }
121
137
 
122
- let moi: MarketplaceOrderItem = marketplaceOrder.marketplaceOrderItems.find(
123
- moi => moi.marketplaceProductVariation.sku === product.sku
138
+ let mosis: MarketplaceOrderShippingItem[] = marketplaceOrderShippingItems.filter(
139
+ mosi => mosi.product.sku === product.sku
124
140
  )
125
141
 
142
+ let moi: MarketplaceOrderItem = mosis[0].marketplaceOrderItem
143
+
126
144
  return {
127
145
  sku: product.sku,
128
146
  name: product.name,
@@ -135,10 +153,6 @@ export const addReleaseOrderResolver = {
135
153
  })
136
154
  )
137
155
 
138
- marketplaceOrderShipping.releaseOrderId = releaseOrder.id
139
- marketplaceOrderShipping.fulfillmentCenter = fulfilmentCenter
140
- await getRepository(MarketplaceOrderShipping).save(marketplaceOrderShipping)
141
-
142
156
  let newInvoice = {
143
157
  invoiceProducts,
144
158
  releaseGood: { id: releaseOrder.id, name: releaseOrder.name },
@@ -188,12 +202,6 @@ export const addReleaseOrderResolver = {
188
202
  } catch (e) {}
189
203
  }
190
204
  }
191
-
192
- if (releaseOrder && releaseOrder?.id) {
193
- marketplaceOrder.releaseOrderId = releaseOrder.id
194
- marketplaceOrder.fulfillmentCenter = fulfilmentCenter
195
- await getRepository(MarketplaceOrder).save(marketplaceOrder)
196
- }
197
205
  }
198
206
  }
199
207
  }
@@ -2,7 +2,12 @@ import { createQueryBuilder, getRepository, SelectQueryBuilder } from 'typeorm'
2
2
 
3
3
  import { Bizplace, getCustomerBizplaces } from '@things-factory/biz-base'
4
4
  import { FulfillmentAPI } from '@things-factory/integration-fulfillment'
5
- import { MarketplaceOrder, MarketplaceOrderItem, MarketplaceOrderShipping } from '@things-factory/marketplace-base'
5
+ import {
6
+ MarketplaceOrder,
7
+ MarketplaceOrderItem,
8
+ MarketplaceOrderShipping,
9
+ MarketplaceOrderShippingItem
10
+ } from '@things-factory/marketplace-base'
6
11
  import { Product, ProductBundle } from '@things-factory/product-base'
7
12
  import { Domain } from '@things-factory/shell'
8
13
 
@@ -13,7 +18,8 @@ export const autoAddReleaseOrderResolver = {
13
18
  const qb: SelectQueryBuilder<MarketplaceOrder> = createQueryBuilder(MarketplaceOrder, 'MO')
14
19
  const marketplaceOrders: MarketplaceOrder[] = await qb
15
20
  .leftJoinAndSelect('MO.marketplaceOrderItems', 'MOI')
16
- .leftJoinAndSelect('MOI.marketplaceOrderShipping', 'MOS')
21
+ .leftJoinAndSelect('MOI.marketplaceOrderShippingItems', 'MOSI')
22
+ .leftJoinAndSelect('MOSI.marketplaceOrderShipping', 'MOS')
17
23
  .leftJoinAndSelect('MOI.marketplaceProductVariation', 'MPV')
18
24
  .leftJoinAndSelect('MO.marketplaceStore', 'MPS')
19
25
  .where('MO.domain = :domainId', { domainId: domain.id })
@@ -38,17 +44,25 @@ export const autoAddReleaseOrderResolver = {
38
44
 
39
45
  const marketplaceOrderShippings: MarketplaceOrderShipping[] = await getRepository(MarketplaceOrderShipping).find({
40
46
  where: { orderNoRef: marketplaceOrder.orderNo, domain },
41
- order: { subOrderNoRef: 'ASC' }
47
+ order: { subOrderNoRef: 'ASC' },
48
+ relations: [
49
+ 'marketplaceOrderShippingItems',
50
+ 'marketplaceOrderShippingItems.marketplaceOrderItem',
51
+ 'marketplaceOrderShippingItems.product'
52
+ ]
42
53
  })
43
54
 
44
- for (var j = 0; j < marketplaceOrderShippings.length; j++) {
55
+ for (let j = 0; j < marketplaceOrderShippings.length; j++) {
45
56
  let marketplaceOrderShipping: MarketplaceOrderShipping = marketplaceOrderShippings[j]
57
+ let marketplaceOrderShippingItems: MarketplaceOrderShippingItem[] =
58
+ marketplaceOrderShipping.marketplaceOrderShippingItems
46
59
 
47
60
  if (!marketplaceOrderShipping?.releaseOrderId) {
48
61
  const date: Date = new Date()
49
- const releaseDate = `${date.getFullYear()}-${(date.getMonth() + 1)
62
+ const releaseDate = `${date.getFullYear()}-${(date.getMonth() + 1).toString().padStart(2, '0')}-${date
63
+ .getDate()
50
64
  .toString()
51
- .padStart(2, '0')}-${date.getDate().toString().padStart(2, '0')}`
65
+ .padStart(2, '0')}`
52
66
 
53
67
  const newReleaseOrder: any = {
54
68
  releaseDate,
@@ -82,21 +96,14 @@ export const autoAddReleaseOrderResolver = {
82
96
  marketplaceOrderStatus: marketplaceOrder.status,
83
97
  airwayBill: marketplaceOrderShipping?.airwayBill ? marketplaceOrderShipping.airwayBill : null,
84
98
  invoice: marketplaceOrderShipping?.invoice ? marketplaceOrderShipping.invoice : null,
85
- orderInventories: marketplaceOrder.marketplaceOrderItems
86
- .filter(item => {
87
- if (item.marketplaceOrderShipping.id === marketplaceOrderShipping.id) {
88
- return item
89
- }
90
- })
91
- .map((orderItem: any) => {
92
- const { marketplaceProductVariation: productVariation }: any = orderItem
93
- return {
94
- product: {
95
- sku: productVariation.sku
96
- },
97
- releaseQty: orderItem.qty
98
- }
99
- })
99
+ orderInventories: marketplaceOrderShippingItems.map(marketplaceOrderShippingItem => {
100
+ return {
101
+ product: {
102
+ sku: marketplaceOrderShippingItem.product.sku
103
+ },
104
+ releaseQty: marketplaceOrderShippingItem.qty
105
+ }
106
+ })
100
107
  }
101
108
 
102
109
  try {
@@ -104,6 +111,16 @@ export const autoAddReleaseOrderResolver = {
104
111
  customerBizplaceId,
105
112
  releaseOrder: newReleaseOrder
106
113
  })
114
+
115
+ marketplaceOrderShipping.releaseOrderId = releaseOrder.id
116
+ marketplaceOrderShipping.fulfillmentCenter = fulfilmentCenter
117
+ await getRepository(MarketplaceOrderShipping).save(marketplaceOrderShipping)
118
+
119
+ if (releaseOrder && releaseOrder?.id) {
120
+ marketplaceOrder.releaseOrderId = releaseOrder.id
121
+ marketplaceOrder.fulfillmentCenter = fulfilmentCenter
122
+ await getRepository(MarketplaceOrder).save(marketplaceOrder)
123
+ }
107
124
  } catch (e) {}
108
125
 
109
126
  var invoiceProducts = await Promise.all(
@@ -118,10 +135,12 @@ export const autoAddReleaseOrderResolver = {
118
135
  })
119
136
  }
120
137
 
121
- let moi: MarketplaceOrderItem = marketplaceOrder.marketplaceOrderItems.find(
122
- moi => moi.marketplaceProductVariation.sku === product.sku
138
+ let mosis: MarketplaceOrderShippingItem[] = marketplaceOrderShippingItems.filter(
139
+ mosi => mosi.product.sku === product.sku
123
140
  )
124
141
 
142
+ let moi: MarketplaceOrderItem = mosis[0].marketplaceOrderItem
143
+
125
144
  return {
126
145
  sku: product.sku,
127
146
  name: product.name,
@@ -134,10 +153,6 @@ export const autoAddReleaseOrderResolver = {
134
153
  })
135
154
  )
136
155
 
137
- marketplaceOrderShipping.releaseOrderId = releaseOrder.id
138
- marketplaceOrderShipping.fulfillmentCenter = fulfilmentCenter
139
- await getRepository(MarketplaceOrderShipping).save(marketplaceOrderShipping)
140
-
141
156
  let newInvoice = {
142
157
  invoiceProducts,
143
158
  releaseGood: { id: releaseOrder.id, name: releaseOrder.name },
@@ -187,12 +202,6 @@ export const autoAddReleaseOrderResolver = {
187
202
  } catch (e) {}
188
203
  }
189
204
  }
190
-
191
- if (releaseOrder && releaseOrder?.id) {
192
- marketplaceOrder.releaseOrderId = releaseOrder.id
193
- marketplaceOrder.fulfillmentCenter = fulfilmentCenter
194
- await getRepository(MarketplaceOrder).save(marketplaceOrder)
195
- }
196
205
  }
197
206
  }
198
207
  }
@@ -5,7 +5,12 @@ import { Bizplace, getCustomerBizplaces } from '@things-factory/biz-base'
5
5
  import { FulfillmentAPI, FulfillmentCenter } from '@things-factory/integration-fulfillment'
6
6
  import { Etrax, LastMileDelivery } from '@things-factory/integration-lmd'
7
7
  import { MarketplaceStore, MarketplaceTransporter, StoreAPI } from '@things-factory/integration-marketplace'
8
- import { MarketplaceOrder, MarketplaceOrderItem, MarketplaceOrderShipping } from '@things-factory/marketplace-base'
8
+ import {
9
+ MarketplaceOrder,
10
+ MarketplaceOrderItem,
11
+ MarketplaceOrderShipping,
12
+ MarketplaceOrderShippingItem
13
+ } from '@things-factory/marketplace-base'
9
14
  import { Domain } from '@things-factory/shell'
10
15
 
11
16
  const debug = require('debug')('things-factory:jest.config')
@@ -70,15 +75,17 @@ etraxRouter.post(`/lmd/etrax/status_update`, async (context, next) => {
70
75
  'domain',
71
76
  'marketplaceStore',
72
77
  'marketplaceOrderItems',
73
- 'marketplaceOrderItems.marketplaceOrderShipping',
74
- 'marketplaceOrderItems.marketplaceOrderShipping.fulfillmentCenter'
78
+ 'marketplaceOrderItems.marketplaceOrderShippingItems',
79
+ 'marketplaceOrderItems.marketplaceOrderShippingItems.marketplaceOrderShipping',
80
+ 'marketplaceOrderItems.marketplaceOrderShippingItems.marketplaceOrderShipping.fulfillmentCenter'
75
81
  ]
76
82
  })
77
83
  let orderItems: MarketplaceOrderItem[] = order.marketplaceOrderItems
78
84
 
79
85
  for (const orderItem of orderItems) {
80
- if (orderItem.marketplaceOrderShipping !== null) {
81
- const orderShipping: MarketplaceOrderShipping = orderItem.marketplaceOrderShipping
86
+ if (orderItem.marketplaceOrderShippingItems[0].marketplaceOrderShipping !== null) {
87
+ const orderShippingItems: MarketplaceOrderShippingItem[] = orderItem.marketplaceOrderShippingItems
88
+ const orderShipping: MarketplaceOrderShipping = orderShippingItems[0].marketplaceOrderShipping
82
89
  const fulfillmentCenter: FulfillmentCenter = orderShipping?.fulfillmentCenter
83
90
  const marketplaceStore: MarketplaceStore = order.marketplaceStore
84
91
 
@@ -119,9 +126,28 @@ etraxRouter.post(`/lmd/etrax/status_update`, async (context, next) => {
119
126
  const marketplaceStore: MarketplaceStore = await StoreAPI.getMarketplaceStore(storeId)
120
127
 
121
128
  // to-do update tracking no to every marketplaces
122
- if (marketplaceStore.platform === 'woocommerce') {
129
+ if (marketplaceStore.platform === 'woocommerce' || marketplaceStore.platform === 'shopify') {
123
130
  const note = 'http://ets.sntglobal.com/?mod=tracking&action=index&orders=' + trackingNo
124
- await StoreAPI.createOrderNote(marketplaceStore, { orderId: order.name, note })
131
+ let orderInfo: MarketplaceOrder = await getRepository(MarketplaceOrder).findOne({
132
+ where: {
133
+ name: order.name
134
+ },
135
+ relations: ['marketplaceOrderItems', 'marketplaceOrderItems.marketplaceProductVariation']
136
+ })
137
+ const result = await StoreAPI.setStoreOrderStatusReadyToShip(marketplaceStore, {
138
+ orderId: order.name,
139
+ trackingUrl: note,
140
+ trackingNo,
141
+ order: orderInfo,
142
+ note
143
+ })
144
+
145
+ if (marketplaceStore.platform === 'woocommerce') {
146
+ await StoreAPI.updateOrderStatus(marketplaceStore, {
147
+ orderId: order.name,
148
+ status: 'READY_TO_SHIP'
149
+ })
150
+ }
125
151
  }
126
152
 
127
153
  const resp = {
@@ -144,6 +144,7 @@
144
144
  "field.total_weight": "total weight",
145
145
  "field.town": "town",
146
146
  "field.tracking_no": "tracking no",
147
+ "field.tracking_url": "tracking URL",
147
148
  "field.type": "type",
148
149
  "field.unit": "unit",
149
150
  "field.uom_value": "UOM value",
@@ -143,6 +143,7 @@
143
143
  "field.total_weight": "[ko] total weight",
144
144
  "field.town": "[ko] town",
145
145
  "field.tracking_no": "[ko] tracking no",
146
+ "field.tracking_url": "[ko] tracking URL",
146
147
  "field.type": "[ko] type",
147
148
  "field.unit": "[ko] unit",
148
149
  "field.uom_value": "[ko] UOM value",
@@ -143,6 +143,7 @@
143
143
  "field.total_weight": "[ms] total weight",
144
144
  "field.town": "[ms] town",
145
145
  "field.tracking_no": "[ms] tracking no",
146
+ "field.tracking_url": "[ms] tracking URL",
146
147
  "field.type": "[ms] type",
147
148
  "field.unit": "[ms] unit",
148
149
  "field.uom_value": "[ms] UOM value",
@@ -143,6 +143,7 @@
143
143
  "field.total_weight": "[zh] total weight",
144
144
  "field.town": "[zh] town",
145
145
  "field.tracking_no": "[zh] tracking no",
146
+ "field.tracking_url": "[zh] tracking URL",
146
147
  "field.type": "[zh] type",
147
148
  "field.unit": "[zh] unit",
148
149
  "field.uom_value": "[zh] UOM value",