@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.
- package/dist-server/controllers/outbound/index.js +7 -1
- package/dist-server/controllers/outbound/index.js.map +1 -1
- package/dist-server/controllers/outbound/picking-worksheet-controller.js +440 -90
- package/dist-server/controllers/outbound/picking-worksheet-controller.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/picking/activate-picking.js.map +1 -1
- package/dist-server/utils/lmd-util.js +214 -123
- package/dist-server/utils/lmd-util.js.map +1 -1
- package/package.json +18 -18
- package/server/controllers/outbound/index.ts +9 -1
- package/server/controllers/outbound/picking-worksheet-controller.ts +507 -83
- package/server/graphql/resolvers/worksheet/picking/activate-picking.ts +1 -1
- package/server/utils/lmd-util.ts +272 -139
|
@@ -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
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
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', '
|
|
308
|
-
.leftJoinAndSelect('
|
|
309
|
-
.leftJoinAndSelect('
|
|
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.
|
|
313
|
-
.leftJoinAndSelect('
|
|
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
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
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
|
|
1993
|
-
|
|
1994
|
-
|
|
1995
|
-
|
|
1996
|
-
|
|
1997
|
-
|
|
1998
|
-
|
|
1999
|
-
|
|
2000
|
-
|
|
2001
|
-
|
|
2002
|
-
|
|
2003
|
-
|
|
2004
|
-
|
|
2005
|
-
|
|
2006
|
-
|
|
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
|
-
|
|
2025
|
-
|
|
2026
|
-
|
|
2027
|
-
|
|
2028
|
-
|
|
2029
|
-
|
|
2030
|
-
|
|
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
|
-
|
|
2033
|
-
orderPackage: savedOrderPackage,
|
|
2173
|
+
releaseGood,
|
|
2034
2174
|
domain: releaseGood.domain,
|
|
2035
2175
|
bizplace: releaseGood.bizplace,
|
|
2036
|
-
creator:
|
|
2037
|
-
updater:
|
|
2038
|
-
|
|
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
|
-
|
|
2042
|
-
|
|
2043
|
-
|
|
2044
|
-
|
|
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
|
-
|
|
2058
|
-
|
|
2059
|
-
|
|
2060
|
-
|
|
2061
|
-
|
|
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.
|
|
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
|