@things-factory/worksheet-base 4.3.538 → 4.3.541

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@things-factory/worksheet-base",
3
- "version": "4.3.538",
3
+ "version": "4.3.541",
4
4
  "main": "dist-server/index.js",
5
5
  "browser": "client/index.js",
6
6
  "things-factory": true,
@@ -29,21 +29,21 @@
29
29
  "@things-factory/id-rule-base": "^4.3.535",
30
30
  "@things-factory/integration-accounting": "^4.3.536",
31
31
  "@things-factory/integration-base": "^4.3.536",
32
- "@things-factory/integration-lmd": "^4.3.537",
33
- "@things-factory/integration-marketplace": "^4.3.537",
34
- "@things-factory/integration-powrup": "^4.3.537",
35
- "@things-factory/integration-sellercraft": "^4.3.537",
32
+ "@things-factory/integration-lmd": "^4.3.541",
33
+ "@things-factory/integration-marketplace": "^4.3.541",
34
+ "@things-factory/integration-powrup": "^4.3.541",
35
+ "@things-factory/integration-sellercraft": "^4.3.541",
36
36
  "@things-factory/integration-sftp": "^4.3.536",
37
- "@things-factory/marketplace-base": "^4.3.537",
37
+ "@things-factory/marketplace-base": "^4.3.541",
38
38
  "@things-factory/notification": "^4.3.535",
39
- "@things-factory/sales-base": "^4.3.537",
39
+ "@things-factory/sales-base": "^4.3.541",
40
40
  "@things-factory/setting-base": "^4.3.535",
41
41
  "@things-factory/shell": "^4.3.535",
42
42
  "@things-factory/transport-base": "^4.3.535",
43
- "@things-factory/warehouse-base": "^4.3.537",
43
+ "@things-factory/warehouse-base": "^4.3.541",
44
44
  "jspdf": "2.5.1",
45
45
  "puppeteer": "21.0.3",
46
46
  "uuid": "^9.0.0"
47
47
  },
48
- "gitHead": "756261225586464ae03d30b47f5d1af3bfd39405"
48
+ "gitHead": "6992bcb08354a9fa38880360a7fff850433285b6"
49
49
  }
@@ -28,7 +28,10 @@ export class SellercraftController extends WorksheetController {
28
28
  sellercraftSetting?.disablePackOrder && sellercraftSetting?.disablePackOrder == 1 ? true : false
29
29
 
30
30
  if (!disablePackOrder) {
31
- const orderProducts: OrderProduct[] = releaseGood.orderProducts
31
+ //sourceData contains the original order products
32
+ const sourceData = JSON.parse(releaseGood?.sourceData)
33
+ const orderProducts: OrderProduct[] = sourceData?.orderProducts
34
+ const editedOrderProducts: OrderProduct[] = releaseGood.orderProducts
32
35
  let sellercraftOPs: any[] = []
33
36
 
34
37
  sellercraftOPs = orderProducts.map(orderProduct => {
@@ -74,6 +77,55 @@ export class SellercraftController extends WorksheetController {
74
77
 
75
78
  if (orderPack?.packages) {
76
79
  const packages: any[] = orderPack.packages
80
+ const createOrderPackageItems = (orderProducts: OrderProduct[], orderPackage: OrderPackage, items: any[]) => {
81
+ return items
82
+ .map(itm => {
83
+ const { sku, qty, product, releaseQty } = itm
84
+ const idx = orderProducts.findIndex(op => op.product.sku == sku || op.product.sku == product?.sku)
85
+
86
+ const matchedOrderProduct = idx !== -1 ? orderProducts[idx] : undefined
87
+
88
+ const matchedOrderPackageItem: OrderPackageItem = orderPackage?.orderPackageItems?.find(
89
+ itm => itm.orderProductId === matchedOrderProduct?.id
90
+ )
91
+
92
+ if (!matchedOrderProduct || orderProducts[idx].releaseQty <= 0) {
93
+ return null
94
+ }
95
+
96
+ const commonProperties = {
97
+ orderProduct: matchedOrderProduct,
98
+ status: ORDER_STATUS.PROCESSING,
99
+ orderPackage: orderPackage,
100
+ domain: releaseGood.domain,
101
+ bizplace: releaseGood.bizplace,
102
+ creator: this.user,
103
+ updater: this.user,
104
+ productDetail: matchedOrderProduct.productDetail
105
+ }
106
+
107
+ // If an existing order package item is found, update its release quantity
108
+ if (matchedOrderPackageItem) {
109
+ return {
110
+ ...commonProperties,
111
+ id: matchedOrderPackageItem.id,
112
+ name: matchedOrderPackageItem.name,
113
+ releaseQty: (matchedOrderPackageItem.releaseQty || 0) + (releaseQty || 0)
114
+ }
115
+ }
116
+
117
+ // Update release quantity of the matched order product
118
+ orderProducts[idx].releaseQty = (orderProducts[idx].releaseQty || 0) - (qty || 0)
119
+
120
+ // Return a new order package item if no existing item was found
121
+ return {
122
+ ...commonProperties,
123
+ name: OrderNoGenerator.orderPackageItem(),
124
+ releaseQty: qty || releaseQty
125
+ }
126
+ })
127
+ .filter(item => item != null)
128
+ }
77
129
 
78
130
  await Promise.all(
79
131
  packages.map(async pkg => {
@@ -86,33 +138,45 @@ export class SellercraftController extends WorksheetController {
86
138
  domain: releaseGood.domain,
87
139
  bizplace: releaseGood.bizplace,
88
140
  creator: releaseGood.creator,
89
- updater: releaseGood.updater
141
+ updater: releaseGood.updater,
142
+ originalPackResponse: JSON.stringify(pkg)
90
143
  }
91
144
 
92
145
  let savedOrderPackage: OrderPackage = await this.trxMgr.getRepository(OrderPackage).save(orderPackage)
93
146
 
94
- const orderPackageItems: OrderPackageItem[] = items.map(itm => {
95
- const { sku, qty } = itm
96
- const matchedOrderProduct: OrderProduct = orderProducts.find(op => op.product.sku == sku)
97
-
98
- return {
99
- name: OrderNoGenerator.orderPackageItem(),
100
- orderProduct: matchedOrderProduct,
101
- status: ORDER_STATUS.PROCESSING,
102
- releaseQty: qty,
103
- orderPackage: savedOrderPackage,
104
- domain: releaseGood.domain,
105
- bizplace: releaseGood.bizplace,
106
- creator: releaseGood.creator,
107
- updater: releaseGood.updater,
108
- productDetail: matchedOrderProduct?.productDetail
109
- }
110
- })
111
-
147
+ const orderPackageItems: OrderPackageItem[] = createOrderPackageItems(
148
+ editedOrderProducts,
149
+ savedOrderPackage,
150
+ items
151
+ )
112
152
  await this.trxMgr.getRepository(OrderPackageItem).save(orderPackageItems)
113
153
  })
114
154
  )
115
155
 
156
+ const unassignedOrderProducts: OrderProduct[] = editedOrderProducts.filter(op => {
157
+ return op.releaseQty > 0 || !packages.some(pkg => pkg.items.some(itm => itm.sku === op.product.sku))
158
+ })
159
+
160
+ if (unassignedOrderProducts?.length > 0) {
161
+ const orderPackages: OrderPackage[] = await this.trxMgr.getRepository(OrderPackage).find({
162
+ where: { releaseGood: releaseGood.id },
163
+ relations: ['orderPackageItems']
164
+ })
165
+
166
+ let selectedOrderPackage = orderPackages.reduce((minOrderPackage, currentOrderPackage) => {
167
+ return currentOrderPackage?.orderPackageItems.length < minOrderPackage?.orderPackageItems.length
168
+ ? currentOrderPackage
169
+ : minOrderPackage
170
+ }, orderPackages[0])
171
+
172
+ const unassignedPackageItems: OrderPackageItem[] = createOrderPackageItems(
173
+ unassignedOrderProducts,
174
+ selectedOrderPackage,
175
+ unassignedOrderProducts
176
+ )
177
+ await this.trxMgr.getRepository(OrderPackageItem).save(unassignedPackageItems)
178
+ }
179
+
116
180
  roUpdateFields = {
117
181
  packageId: packages[0].packageId,
118
182
  marketPackCallSuccess: new Date(),
@@ -4,4 +4,12 @@ export * from './picking-worksheet-controller'
4
4
  export * from './returning-worksheet-controller'
5
5
  export * from './sorting-worksheet-controller'
6
6
 
7
- export {createOrderPackageAndItems} from './picking-worksheet-controller'
7
+ export {
8
+ createOrderPackageAndItems,
9
+ splitOrderConsignment,
10
+ createOrderConsignment,
11
+ createConsignmentPackage,
12
+ createConsignmentPackageItem,
13
+ createConsignmentWithMultipackage,
14
+ sortingProduct
15
+ } from './picking-worksheet-controller'