@things-factory/worksheet-base 4.3.522 → 4.3.524

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.
@@ -11,8 +11,9 @@ var __rest = (this && this.__rest) || function (s, e) {
11
11
  return t;
12
12
  };
13
13
  Object.defineProperty(exports, "__esModule", { value: true });
14
- exports.createOrderPackageAndItems = exports.PickingWorksheetController = void 0;
14
+ exports.sortingProduct = exports.createConsignmentWithMultipackage = exports.createConsignmentPackageItem = exports.createConsignmentPackage = exports.createOrderConsignment = exports.splitOrderConsignment = exports.createOrderPackageAndItems = exports.PickingWorksheetController = void 0;
15
15
  const typeorm_1 = require("typeorm");
16
+ const uuid_1 = require("uuid");
16
17
  const auth_base_1 = require("@things-factory/auth-base");
17
18
  const env_1 = require("@things-factory/env");
18
19
  const id_rule_base_1 = require("@things-factory/id-rule-base");
@@ -148,13 +149,31 @@ class PickingWorksheetController extends vas_worksheet_controller_1.VasWorksheet
148
149
  return await this.createWorksheetDetails(worksheet, constants_1.WORKSHEET_TYPE.PICKING, [targetInventory]);
149
150
  }
150
151
  async activatePicking(worksheetNo) {
151
- var _a;
152
+ var _a, _b;
152
153
  let worksheet = await this.findActivatableWorksheet(worksheetNo, constants_1.WORKSHEET_TYPE.PICKING, [
153
154
  'releaseGood',
154
155
  'releaseGood.bizplace',
155
156
  'releaseGood.domain',
156
157
  'releaseGood.lastMileDelivery',
157
158
  'releaseGood.bizplace.domain',
159
+ 'releaseGood.orderProducts',
160
+ 'releaseGood.orderProducts.productDetail',
161
+ 'releaseGood.orderProducts.product',
162
+ 'releaseGood.orderProducts.productDetail.product',
163
+ 'releaseGood.orderProducts.productBundle',
164
+ 'releaseGood.orderProducts.productBundle.productBundleSettings',
165
+ 'releaseGood.orderProducts.productBundle.productBundleSettings.productDetail',
166
+ 'releaseGood.orderPackages',
167
+ 'releaseGood.orderPackages.orderPackageItems',
168
+ 'releaseGood.orderPackages.orderPackageItems.orderProduct',
169
+ 'releaseGood.orderPackages.orderPackageItems.orderProduct.product',
170
+ 'releaseGood.orderPackages.orderPackageItems.orderProduct.productDetail',
171
+ 'releaseGood.orderConsignments',
172
+ 'releaseGood.orderConsignments.orderPackages',
173
+ 'releaseGood.orderConsignments.orderPackages.orderPackageItems',
174
+ 'releaseGood.orderConsignments.orderPackages.orderPackageItems.orderProduct',
175
+ 'releaseGood.orderConsignments.orderPackages.orderPackageItems.orderProduct.product',
176
+ 'releaseGood.orderConsignments.orderPackages.orderPackageItems.orderProduct.productDetail',
158
177
  'domain',
159
178
  'bizplace',
160
179
  'bizplace.domain',
@@ -187,6 +206,7 @@ class PickingWorksheetController extends vas_worksheet_controller_1.VasWorksheet
187
206
  });
188
207
  worksheet.releaseGood = Object.assign(Object.assign({}, worksheet.releaseGood), { orderProducts, orderPackages });
189
208
  let releaseGood = Object.assign(new sales_base_1.ReleaseGood(), worksheet.releaseGood);
209
+ let newReleaseGood;
190
210
  // assign inventory if unassigned
191
211
  if (!releaseGood.assignedInventory) {
192
212
  worksheetDetails = await this.assignInventoriesForUnassignedOrder(worksheet);
@@ -267,22 +287,32 @@ class PickingWorksheetController extends vas_worksheet_controller_1.VasWorksheet
267
287
  break;
268
288
  default:
269
289
  if (!((_a = releaseGood === null || releaseGood === void 0 ? void 0 : releaseGood.orderPackages) === null || _a === void 0 ? void 0 : _a.length)) {
270
- let orderPackage = {
271
- name: sales_base_1.OrderNoGenerator.orderPackage(),
272
- packageId: null,
273
- trackingNo: null,
274
- transporter: null,
275
- airwayBill: releaseGood === null || releaseGood === void 0 ? void 0 : releaseGood.airwayBill,
276
- invoice: releaseGood === null || releaseGood === void 0 ? void 0 : releaseGood.invoice,
277
- status: sales_base_1.ORDER_STATUS.PROCESSING,
278
- releaseGood,
279
- domain: releaseGood.domain,
280
- bizplace: releaseGood.bizplace,
281
- creator: this.user,
282
- updater: this.user
283
- };
284
- worksheet.releaseGood = await createOrderPackageAndItems(this.trxMgr, releaseGood, orderPackage);
285
- //worksheet.releaseGood = releaseGood
290
+ let mps = (_b = releaseGood === null || releaseGood === void 0 ? void 0 : releaseGood.lastMileDelivery) === null || _b === void 0 ? void 0 : _b.mps;
291
+ switch (mps) {
292
+ case true:
293
+ newReleaseGood = await splitOrderConsignment(this.trxMgr, releaseGood, this.user, this.domain);
294
+ break;
295
+ case false:
296
+ case undefined:
297
+ let orderConsignment = await createOrderConsignment(this.trxMgr, {}, releaseGood, this.user);
298
+ let orderPackage = {
299
+ name: sales_base_1.OrderNoGenerator.orderPackage(),
300
+ packageId: null,
301
+ trackingNo: null,
302
+ transporter: null,
303
+ airwayBill: releaseGood === null || releaseGood === void 0 ? void 0 : releaseGood.airwayBill,
304
+ invoice: releaseGood === null || releaseGood === void 0 ? void 0 : releaseGood.invoice,
305
+ status: sales_base_1.ORDER_STATUS.PROCESSING,
306
+ releaseGood,
307
+ domain: releaseGood.domain,
308
+ bizplace: releaseGood.bizplace,
309
+ creator: this.user,
310
+ updater: this.user,
311
+ orderConsignment: orderConsignment
312
+ };
313
+ newReleaseGood = await createOrderPackageAndItems(this.trxMgr, releaseGood, orderPackage);
314
+ break;
315
+ }
286
316
  }
287
317
  break;
288
318
  }
@@ -290,6 +320,9 @@ class PickingWorksheetController extends vas_worksheet_controller_1.VasWorksheet
290
320
  catch (error) {
291
321
  env_1.logger.error(`picking-worksheet-controller[activatePicking]: ${error}`);
292
322
  }
323
+ if (newReleaseGood) {
324
+ worksheet.releaseGood = newReleaseGood;
325
+ }
293
326
  return worksheet;
294
327
  }
295
328
  async activateBulkPicking(worksheetNo) {
@@ -304,13 +337,19 @@ class PickingWorksheetController extends vas_worksheet_controller_1.VasWorksheet
304
337
  .leftJoinAndSelect('w.releaseGood', 'rg')
305
338
  .leftJoinAndSelect('rg.domain', 'rgd')
306
339
  .leftJoinAndSelect('rg.lastMileDelivery', 'lmd')
307
- .leftJoinAndSelect('rg.orderPackages', 'rgop')
308
- .leftJoinAndSelect('rgop.orderPackageItems', 'rgopi')
309
- .leftJoinAndSelect('rgopi.orderProduct', 'op2')
340
+ .leftJoinAndSelect('rg.orderPackages', 'op')
341
+ .leftJoinAndSelect('op.orderPackageItems', 'opi')
342
+ .leftJoinAndSelect('opi.orderProduct', 'op2')
310
343
  .leftJoinAndSelect('op2.product', 'p')
311
344
  .leftJoinAndSelect('op2.productDetail', 'pd')
312
- .leftJoinAndSelect('rg.bizplace', 'rgbz')
313
- .leftJoinAndSelect('rgbz.domain', 'bzd')
345
+ .leftJoinAndSelect('rg.orderConsignments', 'oc')
346
+ .leftJoinAndSelect('oc.orderPackages', 'ocop')
347
+ .leftJoinAndSelect('ocop.orderPackageItems', 'ocpi')
348
+ .leftJoinAndSelect('ocpi.orderProduct', 'ocp2')
349
+ .leftJoinAndSelect('ocp2.product', 'ocp')
350
+ .leftJoinAndSelect('ocp2.productDetail', 'ocpd')
351
+ .leftJoinAndSelect('rg.bizplace', 'rgb')
352
+ .leftJoinAndSelect('rgb.domain', 'rgbd')
314
353
  .leftJoinAndSelect('b.domain', 'bd')
315
354
  .leftJoinAndSelect('b.company', 'c')
316
355
  .leftJoinAndSelect('c.domain', 'cd')
@@ -397,7 +436,13 @@ class PickingWorksheetController extends vas_worksheet_controller_1.VasWorksheet
397
436
  'releaseGood.orderPackages.orderPackageItems.orderProduct.productDetail',
398
437
  'releaseGood.orderProducts',
399
438
  'releaseGood.orderProducts.productDetail',
400
- 'releaseGood.orderProducts.product'
439
+ 'releaseGood.orderProducts.product',
440
+ 'releaseGood.orderConsignments',
441
+ 'releaseGood.orderConsignments.orderPackages',
442
+ 'releaseGood.orderConsignments.orderPackages.orderPackageItems',
443
+ 'releaseGood.orderConsignments.orderPackages.orderPackageItems.orderProduct',
444
+ 'releaseGood.orderConsignments.orderPackages.orderPackageItems.orderProduct.product',
445
+ 'releaseGood.orderConsignments.orderPackages.orderPackageItems.orderProduct.productDetail'
401
446
  ]
402
447
  });
403
448
  let releaseGoods = pickingOrderInventory.reduce((data, oi) => {
@@ -409,7 +454,7 @@ class PickingWorksheetController extends vas_worksheet_controller_1.VasWorksheet
409
454
  // massage data and trigger SC pack order asynchronously
410
455
  if (releaseGoods === null || releaseGoods === void 0 ? void 0 : releaseGoods.length) {
411
456
  releaseGoods = await Promise.all(releaseGoods.map(async (releaseGood) => {
412
- var _a;
457
+ var _a, _b;
413
458
  try {
414
459
  const orderSource = releaseGood === null || releaseGood === void 0 ? void 0 : releaseGood.source;
415
460
  switch (orderSource) {
@@ -455,21 +500,32 @@ class PickingWorksheetController extends vas_worksheet_controller_1.VasWorksheet
455
500
  break;
456
501
  default:
457
502
  if (!((_a = releaseGood === null || releaseGood === void 0 ? void 0 : releaseGood.orderPackages) === null || _a === void 0 ? void 0 : _a.length)) {
458
- let orderPackage = {
459
- name: sales_base_1.OrderNoGenerator.orderPackage(),
460
- packageId: null,
461
- trackingNo: null,
462
- transporter: null,
463
- airwayBill: releaseGood === null || releaseGood === void 0 ? void 0 : releaseGood.airwayBill,
464
- invoice: releaseGood === null || releaseGood === void 0 ? void 0 : releaseGood.invoice,
465
- status: sales_base_1.ORDER_STATUS.PROCESSING,
466
- releaseGood,
467
- domain: releaseGood.domain,
468
- bizplace: releaseGood.bizplace,
469
- creator: this.user,
470
- updater: this.user
471
- };
472
- releaseGood = await createOrderPackageAndItems(this.trxMgr, releaseGood, orderPackage);
503
+ let mps = (_b = releaseGood === null || releaseGood === void 0 ? void 0 : releaseGood.lastMileDelivery) === null || _b === void 0 ? void 0 : _b.mps;
504
+ switch (mps) {
505
+ case true:
506
+ await splitOrderConsignment(this.trxMgr, releaseGood, this.user, this.domain);
507
+ break;
508
+ case false:
509
+ case undefined:
510
+ let orderConsignment = await createOrderConsignment(this.trxMgr, {}, releaseGood, this.user);
511
+ let orderPackage = {
512
+ name: sales_base_1.OrderNoGenerator.orderPackage(),
513
+ packageId: null,
514
+ trackingNo: null,
515
+ transporter: null,
516
+ airwayBill: releaseGood === null || releaseGood === void 0 ? void 0 : releaseGood.airwayBill,
517
+ invoice: releaseGood === null || releaseGood === void 0 ? void 0 : releaseGood.invoice,
518
+ status: sales_base_1.ORDER_STATUS.PROCESSING,
519
+ releaseGood,
520
+ domain: releaseGood.domain,
521
+ bizplace: releaseGood.bizplace,
522
+ creator: this.user,
523
+ updater: this.user,
524
+ orderConsignment: orderConsignment
525
+ };
526
+ await createOrderPackageAndItems(this.trxMgr, releaseGood, orderPackage);
527
+ break;
528
+ }
473
529
  }
474
530
  break;
475
531
  }
@@ -1886,7 +1942,7 @@ class PickingWorksheetController extends vas_worksheet_controller_1.VasWorksheet
1886
1942
  return newWorksheetDetails;
1887
1943
  }
1888
1944
  async activateBulkWorksheets(bizplaceId, worksheetIds) {
1889
- var _a;
1945
+ var _a, _b;
1890
1946
  const updatedWs = [];
1891
1947
  try {
1892
1948
  for (const worksheetId of worksheetIds) {
@@ -1915,6 +1971,12 @@ class PickingWorksheetController extends vas_worksheet_controller_1.VasWorksheet
1915
1971
  .leftJoinAndSelect('opc_opi.orderProduct', 'opi_op')
1916
1972
  .leftJoinAndSelect('opi_op.product', 'op_p2')
1917
1973
  .leftJoinAndSelect('opi_op.productDetail', 'op_pd2')
1974
+ .leftJoinAndSelect('rg.orderConsignments', 'rg_oc')
1975
+ .leftJoinAndSelect('rg_oc.orderPackages', 'oc_op')
1976
+ .leftJoinAndSelect('oc_op.orderPackageItems', 'oc_opi')
1977
+ .leftJoinAndSelect('oc_opi.orderProduct', 'opi_op2')
1978
+ .leftJoinAndSelect('opi_op2.product', 'op_p3')
1979
+ .leftJoinAndSelect('opi_op2.productDetail', 'op_pd3')
1918
1980
  .leftJoinAndSelect('w.domain', 'd')
1919
1981
  .leftJoinAndSelect('w.bizplace', 'b')
1920
1982
  .leftJoinAndSelect('b.company', 'c')
@@ -1987,23 +2049,36 @@ class PickingWorksheetController extends vas_worksheet_controller_1.VasWorksheet
1987
2049
  }
1988
2050
  });
1989
2051
  break;
2052
+ case auth_base_1.ApplicationType.MMS:
2053
+ break;
1990
2054
  default:
1991
2055
  if (!((_a = releaseGood === null || releaseGood === void 0 ? void 0 : releaseGood.orderPackages) === null || _a === void 0 ? void 0 : _a.length)) {
1992
- let orderPackage = {
1993
- name: sales_base_1.OrderNoGenerator.orderPackage(),
1994
- packageId: null,
1995
- trackingNo: null,
1996
- transporter: null,
1997
- airwayBill: releaseGood === null || releaseGood === void 0 ? void 0 : releaseGood.airwayBill,
1998
- invoice: releaseGood === null || releaseGood === void 0 ? void 0 : releaseGood.invoice,
1999
- status: sales_base_1.ORDER_STATUS.PROCESSING,
2000
- releaseGood,
2001
- domain: releaseGood.domain,
2002
- bizplace: releaseGood.bizplace,
2003
- creator: this.user,
2004
- updater: this.user
2005
- };
2006
- await createOrderPackageAndItems(this.trxMgr, releaseGood, orderPackage);
2056
+ let mps = (_b = releaseGood === null || releaseGood === void 0 ? void 0 : releaseGood.lastMileDelivery) === null || _b === void 0 ? void 0 : _b.mps;
2057
+ switch (mps) {
2058
+ case true:
2059
+ await splitOrderConsignment(this.trxMgr, releaseGood, this.user, this.domain);
2060
+ break;
2061
+ case false:
2062
+ case undefined:
2063
+ let orderConsignment = await createOrderConsignment(this.trxMgr, {}, releaseGood, this.user);
2064
+ let orderPackage = {
2065
+ name: sales_base_1.OrderNoGenerator.orderPackage(),
2066
+ packageId: null,
2067
+ trackingNo: null,
2068
+ transporter: null,
2069
+ airwayBill: releaseGood === null || releaseGood === void 0 ? void 0 : releaseGood.airwayBill,
2070
+ invoice: releaseGood === null || releaseGood === void 0 ? void 0 : releaseGood.invoice,
2071
+ status: sales_base_1.ORDER_STATUS.PROCESSING,
2072
+ releaseGood,
2073
+ domain: releaseGood.domain,
2074
+ bizplace: releaseGood.bizplace,
2075
+ creator: this.user,
2076
+ updater: this.user,
2077
+ orderConsignment: orderConsignment
2078
+ };
2079
+ await createOrderPackageAndItems(this.trxMgr, releaseGood, orderPackage);
2080
+ break;
2081
+ }
2007
2082
  }
2008
2083
  break;
2009
2084
  }
@@ -2021,44 +2096,319 @@ class PickingWorksheetController extends vas_worksheet_controller_1.VasWorksheet
2021
2096
  }
2022
2097
  exports.PickingWorksheetController = PickingWorksheetController;
2023
2098
  async function createOrderPackageAndItems(tx, releaseGood, orderPackage) {
2024
- let savedOrderPackage = await tx.getRepository(sales_base_1.OrderPackage).save(orderPackage);
2025
- const orderPackageItems = releaseGood.orderProducts
2026
- .map(op => {
2027
- if (op.product) {
2028
- return {
2029
- name: sales_base_1.OrderNoGenerator.orderPackageItem(),
2030
- orderProduct: op,
2099
+ try {
2100
+ let savedOrderPackage = await tx.getRepository(sales_base_1.OrderPackage).save(orderPackage);
2101
+ const orderPackageItems = releaseGood.orderProducts
2102
+ .map(op => {
2103
+ if (op.product) {
2104
+ return {
2105
+ id: (0, uuid_1.v4)(),
2106
+ name: sales_base_1.OrderNoGenerator.orderPackageItem(),
2107
+ orderProduct: op,
2108
+ status: sales_base_1.ORDER_STATUS.PROCESSING,
2109
+ releaseQty: op.releaseQty,
2110
+ orderPackage: savedOrderPackage,
2111
+ domain: releaseGood.domain,
2112
+ bizplace: releaseGood.bizplace,
2113
+ creator: releaseGood.creator,
2114
+ updater: releaseGood.updater,
2115
+ productDetail: op.productDetail
2116
+ };
2117
+ }
2118
+ else {
2119
+ let productBundle = op.productBundle;
2120
+ return productBundle.productBundleSettings.map(pbs => ({
2121
+ name: sales_base_1.OrderNoGenerator.orderPackageItem(),
2122
+ orderProduct: op,
2123
+ status: sales_base_1.ORDER_STATUS.PROCESSING,
2124
+ releaseQty: op.releaseQty * pbs.bundleQty,
2125
+ orderPackage: savedOrderPackage,
2126
+ domain: releaseGood.domain,
2127
+ bizplace: releaseGood.bizplace,
2128
+ creator: releaseGood.creator,
2129
+ updater: releaseGood.updater,
2130
+ productDetail: pbs.productDetail
2131
+ }));
2132
+ }
2133
+ })
2134
+ .flat();
2135
+ await tx.getRepository(sales_base_1.OrderPackageItem).save(orderPackageItems);
2136
+ orderPackage.orderPackageItems = orderPackageItems;
2137
+ releaseGood.orderPackages = [orderPackage];
2138
+ return releaseGood;
2139
+ }
2140
+ catch (e) {
2141
+ env_1.logger.error(`error:${e}`);
2142
+ }
2143
+ }
2144
+ exports.createOrderPackageAndItems = createOrderPackageAndItems;
2145
+ async function splitOrderConsignment(tx, releaseGood, user, domain) {
2146
+ try {
2147
+ let currentConsignment = { id: (0, uuid_1.v4)(), totalWeight: 0, orderPackages: [] };
2148
+ let totalConsignments = [];
2149
+ let currOrderProducts = [];
2150
+ let totalConsignmentWeight = 0;
2151
+ let orderProducts = releaseGood.orderProducts;
2152
+ let maxConsignmentWeight = releaseGood.lastMileDelivery.consignmentWeight;
2153
+ //sort product according to packingType
2154
+ let sortOrderProducts = await sortingProduct(orderProducts);
2155
+ //initialise new orderConsignment created
2156
+ const createdNewConsignment = () => ({
2157
+ id: (0, uuid_1.v4)(),
2158
+ totalWeight: 0,
2159
+ orderPackages: []
2160
+ });
2161
+ //push orderPackage & packageItems into consigment
2162
+ const createPackageConsignment = (consignment, packageWeight, releaseGood, orderProduct, releaseQty, user) => {
2163
+ consignment.totalWeight += packageWeight;
2164
+ currentConsignment.orderPackages.push({
2165
+ id: (0, uuid_1.v4)(),
2166
+ name: sales_base_1.OrderNoGenerator.orderPackage(),
2167
+ packageId: null,
2168
+ trackingNo: null,
2169
+ transporter: null,
2170
+ airwayBill: releaseGood === null || releaseGood === void 0 ? void 0 : releaseGood.airwayBill,
2171
+ invoice: releaseGood === null || releaseGood === void 0 ? void 0 : releaseGood.invoice,
2031
2172
  status: sales_base_1.ORDER_STATUS.PROCESSING,
2032
- releaseQty: op.releaseQty,
2033
- orderPackage: savedOrderPackage,
2173
+ releaseGood,
2034
2174
  domain: releaseGood.domain,
2035
2175
  bizplace: releaseGood.bizplace,
2036
- creator: releaseGood.creator,
2037
- updater: releaseGood.updater,
2038
- productDetail: op.productDetail
2039
- };
2176
+ creator: user,
2177
+ updater: user,
2178
+ orderPackageItems: [
2179
+ {
2180
+ id: (0, uuid_1.v4)(),
2181
+ name: sales_base_1.OrderNoGenerator.orderPackageItem(),
2182
+ releaseQty: releaseQty,
2183
+ orderProduct: orderProduct,
2184
+ domain: releaseGood.domain,
2185
+ bizplace: releaseGood.bizplace,
2186
+ creator: releaseGood.creator,
2187
+ updater: releaseGood.updater,
2188
+ productDetail: orderProduct.productDetail
2189
+ }
2190
+ ]
2191
+ });
2192
+ };
2193
+ const createPackage = op => {
2194
+ let releaseQty = op.productDetail.packingType.toLowerCase() === 'carton' ? 1 : op.releaseQty;
2195
+ let packageWeight = op.productDetail.packingType.toLowerCase() === 'carton'
2196
+ ? op.productDetail.grossWeight
2197
+ : op.productDetail.grossWeight * releaseQty;
2198
+ const isCarton = op.productDetail.packingType.toLowerCase() === 'carton';
2199
+ totalConsignmentWeight += packageWeight;
2200
+ const requiresNewConsignment = totalConsignmentWeight >= maxConsignmentWeight;
2201
+ if (isCarton || op.releaseQty > 1) {
2202
+ if (requiresNewConsignment) {
2203
+ //push the current consignment to create new consignment
2204
+ totalConsignments.push(currentConsignment);
2205
+ //Initialise the totalConsignment weight to the new data
2206
+ totalConsignmentWeight = packageWeight + 0;
2207
+ currentConsignment = createdNewConsignment();
2208
+ }
2209
+ createPackageConsignment(currentConsignment, packageWeight, releaseGood, op, releaseQty, user);
2210
+ }
2211
+ else {
2212
+ currOrderProducts.push(op);
2213
+ }
2214
+ };
2215
+ sortOrderProducts.forEach(item => {
2216
+ if (item.packingType.toLowerCase() === 'carton') {
2217
+ for (let i = 0; i < item.releaseQty; i++) {
2218
+ createPackage(item);
2219
+ }
2220
+ }
2221
+ else {
2222
+ createPackage(item);
2223
+ }
2224
+ });
2225
+ // Add any remaining items to the last orderPackage
2226
+ if (currOrderProducts.length > 0) {
2227
+ let availableConsignment;
2228
+ for (let i = 0; i < currOrderProducts.length; i++) {
2229
+ let op = currOrderProducts[i];
2230
+ let releaseQty = op.releaseQty;
2231
+ let currProductWeight = op.productDetail.grossWeight * op.releaseQty;
2232
+ let lastOrderPackage = currentConsignment.orderPackages[currentConsignment.orderPackages.length - 1];
2233
+ //push the product into last current consignment orderPackage
2234
+ if (currentConsignment.totalWeight + currProductWeight < maxConsignmentWeight) {
2235
+ if (lastOrderPackage) {
2236
+ lastOrderPackage.orderPackageItems.push({
2237
+ id: (0, uuid_1.v4)(),
2238
+ name: sales_base_1.OrderNoGenerator.orderPackageItem(),
2239
+ releaseQty: op.releaseQty,
2240
+ orderProduct: op,
2241
+ domain: releaseGood.domain,
2242
+ bizplace: releaseGood.bizplace,
2243
+ creator: releaseGood.creator,
2244
+ updater: releaseGood.updater,
2245
+ productDetail: op.productDetail
2246
+ });
2247
+ }
2248
+ else {
2249
+ await createPackageConsignment(currentConsignment, currProductWeight, releaseGood, op, releaseQty, user);
2250
+ }
2251
+ }
2252
+ else {
2253
+ //push the currentConsignment into list of all the consignments
2254
+ if (!totalConsignments.some(tc => tc.id === currentConsignment.id)) {
2255
+ totalConsignments.push(currentConsignment);
2256
+ }
2257
+ //find one order consignment to include the product
2258
+ availableConsignment = totalConsignments.find(tc => {
2259
+ tc.totalWeight += currProductWeight < maxConsignmentWeight;
2260
+ });
2261
+ if (availableConsignment) {
2262
+ let lastOrderPackage = availableConsignment.orderPackages[currentConsignment.orderPackages.length - 1];
2263
+ lastOrderPackage.orderPackageItems.push({
2264
+ id: (0, uuid_1.v4)(),
2265
+ name: sales_base_1.OrderNoGenerator.orderPackageItem(),
2266
+ releaseQty: op.releaseQty,
2267
+ orderProducts: op,
2268
+ domain: releaseGood.domain,
2269
+ bizplace: releaseGood.bizplace,
2270
+ creator: releaseGood.creator,
2271
+ updater: releaseGood.updater,
2272
+ productDetail: op.productDetail
2273
+ });
2274
+ //update the totalConsignment data
2275
+ totalConsignments = totalConsignments.map(tc => {
2276
+ tc.id === availableConsignment.id ? availableConsignment : tc;
2277
+ });
2278
+ }
2279
+ else {
2280
+ //create new consignment if no consignment available
2281
+ currentConsignment = createdNewConsignment();
2282
+ createPackageConsignment(currentConsignment, currProductWeight, releaseGood, op, releaseQty, user);
2283
+ totalConsignments.push(currentConsignment);
2284
+ }
2285
+ }
2286
+ }
2040
2287
  }
2041
- else {
2042
- let productBundle = op.productBundle;
2043
- return productBundle.productBundleSettings.map(pbs => ({
2044
- name: sales_base_1.OrderNoGenerator.orderPackageItem(),
2045
- orderProduct: op,
2046
- status: sales_base_1.ORDER_STATUS.PROCESSING,
2047
- releaseQty: op.releaseQty * pbs.bundleQty,
2048
- orderPackage: savedOrderPackage,
2049
- domain: releaseGood.domain,
2050
- bizplace: releaseGood.bizplace,
2051
- creator: releaseGood.creator,
2052
- updater: releaseGood.updater,
2053
- productDetail: pbs.productDetail
2054
- }));
2288
+ //totalConsignments.length < 1 ? totalConsignments.push(currentConsignment) : totalConsignments
2289
+ const existingConsignment = totalConsignments.find(tc => tc.id === currentConsignment.id);
2290
+ if (!existingConsignment) {
2291
+ totalConsignments.push(currentConsignment);
2055
2292
  }
2056
- })
2057
- .flat();
2058
- await tx.getRepository(sales_base_1.OrderPackageItem).save(orderPackageItems);
2059
- orderPackage.orderPackageItems = orderPackageItems;
2060
- releaseGood.orderPackages = [orderPackage];
2061
- return releaseGood;
2293
+ let orderConsignment = totalConsignments;
2294
+ let newReleaseGood = await createConsignmentWithMultipackage(tx, orderConsignment, releaseGood, user, domain);
2295
+ return newReleaseGood;
2296
+ }
2297
+ catch (e) {
2298
+ env_1.logger.error(`[lmd-create-consignment-notes]: ${e} `);
2299
+ }
2062
2300
  }
2063
- exports.createOrderPackageAndItems = createOrderPackageAndItems;
2301
+ exports.splitOrderConsignment = splitOrderConsignment;
2302
+ async function createOrderConsignment(tx, orderCons, releaseGood, user) {
2303
+ var _a;
2304
+ try {
2305
+ const orderConsignment = {
2306
+ id: (0, uuid_1.v4)(),
2307
+ name: sales_base_1.OrderNoGenerator.orderConsignment(),
2308
+ noOfPackages: ((_a = orderCons === null || orderCons === void 0 ? void 0 : orderCons.orderPackages) === null || _a === void 0 ? void 0 : _a.length) ? orderCons.orderPackages.length : 1,
2309
+ domain: releaseGood.domain,
2310
+ bizplace: releaseGood.bizplace,
2311
+ releaseGood: releaseGood,
2312
+ orderPackages: [],
2313
+ creator: user,
2314
+ updater: user
2315
+ };
2316
+ return tx.getRepository(sales_base_1.OrderConsignment).save(orderConsignment);
2317
+ }
2318
+ catch (e) {
2319
+ env_1.logger.error(`[lmd-create-order-consignment]: ${e} `);
2320
+ }
2321
+ }
2322
+ exports.createOrderConsignment = createOrderConsignment;
2323
+ async function createConsignmentPackage(tx, orderPackageData, releaseGood, user, orderConsignment) {
2324
+ try {
2325
+ const orderPackage = {
2326
+ id: (0, uuid_1.v4)(),
2327
+ name: sales_base_1.OrderNoGenerator.orderPackage(),
2328
+ packageId: null,
2329
+ trackingNo: null,
2330
+ transporter: null,
2331
+ airwayBill: releaseGood === null || releaseGood === void 0 ? void 0 : releaseGood.airwayBill,
2332
+ invoice: releaseGood === null || releaseGood === void 0 ? void 0 : releaseGood.invoice,
2333
+ status: sales_base_1.ORDER_STATUS.PROCESSING,
2334
+ releaseGood,
2335
+ domain: releaseGood.domain,
2336
+ bizplace: releaseGood.bizplace,
2337
+ creator: user,
2338
+ updater: user,
2339
+ orderConsignment
2340
+ };
2341
+ return tx.getRepository(sales_base_1.OrderPackage).save(orderPackage);
2342
+ }
2343
+ catch (e) {
2344
+ env_1.logger.error(`[lmd-create-order-package]: ${e} `);
2345
+ }
2346
+ }
2347
+ exports.createConsignmentPackage = createConsignmentPackage;
2348
+ async function createConsignmentPackageItem(tx, orderPackageItemsData, savedOrderPackage, releaseGood) {
2349
+ try {
2350
+ const orderPackageItems = orderPackageItemsData.map(opi => ({
2351
+ id: opi.id,
2352
+ name: opi.name,
2353
+ orderProduct: opi.orderProduct,
2354
+ status: sales_base_1.ORDER_STATUS.PROCESSING,
2355
+ releaseQty: opi.releaseQty,
2356
+ orderPackage: savedOrderPackage,
2357
+ domain: releaseGood.domain,
2358
+ bizplace: releaseGood.bizplace,
2359
+ creator: releaseGood.creator,
2360
+ updater: releaseGood.updater,
2361
+ productDetail: opi.productDetail
2362
+ }));
2363
+ await tx.getRepository(sales_base_1.OrderPackageItem).save(orderPackageItems);
2364
+ return orderPackageItems;
2365
+ }
2366
+ catch (e) {
2367
+ env_1.logger.error(`[lmd-create-order-package]: ${e} `);
2368
+ }
2369
+ }
2370
+ exports.createConsignmentPackageItem = createConsignmentPackageItem;
2371
+ async function createConsignmentWithMultipackage(tx, orderConsList, releaseGood, user, domain) {
2372
+ try {
2373
+ let newOrderPackages = [];
2374
+ let newOrderConsignments = [];
2375
+ for (const orderCons of orderConsList) {
2376
+ const savedOrderConsignment = await createOrderConsignment(tx, orderCons, releaseGood, user);
2377
+ for (const currentPackage of orderCons.orderPackages) {
2378
+ const savedOrderPackage = await createConsignmentPackage(tx, currentPackage, releaseGood, user, savedOrderConsignment);
2379
+ const orderPackageItems = await createConsignmentPackageItem(tx, currentPackage.orderPackageItems, savedOrderPackage, releaseGood);
2380
+ savedOrderPackage.orderPackageItems = orderPackageItems;
2381
+ savedOrderConsignment.orderPackages.push(savedOrderPackage);
2382
+ newOrderPackages.push(savedOrderPackage);
2383
+ }
2384
+ newOrderConsignments.push(savedOrderConsignment);
2385
+ }
2386
+ releaseGood.orderConsignments = newOrderConsignments;
2387
+ releaseGood.orderPackages = newOrderPackages;
2388
+ return releaseGood;
2389
+ }
2390
+ catch (error) {
2391
+ console.error('Error creating consignment with multiple packages:', error);
2392
+ throw error;
2393
+ }
2394
+ }
2395
+ exports.createConsignmentWithMultipackage = createConsignmentWithMultipackage;
2396
+ async function sortingProduct(orderProducts) {
2397
+ try {
2398
+ orderProducts.sort((a, b) => {
2399
+ if (a.product.packingType !== b.product.packingType) {
2400
+ return a.product.packingType < b.product.packingType ? -1 : 1;
2401
+ }
2402
+ if (a.product.sku !== b.product.sku) {
2403
+ return a.product.sku < b.product.sku ? -1 : 1;
2404
+ }
2405
+ return 0;
2406
+ });
2407
+ return orderProducts;
2408
+ }
2409
+ catch (e) {
2410
+ env_1.logger.error(`[lmd-sort-product]: ${e} `);
2411
+ }
2412
+ }
2413
+ exports.sortingProduct = sortingProduct;
2064
2414
  //# sourceMappingURL=picking-worksheet-controller.js.map