@shushed/helpers 0.0.289 → 0.0.291
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/cjs/contracts/order/address.schema.json +14 -18
- package/dist/cjs/contracts/order/item.schema.json +6 -1
- package/dist/cjs/contracts/order/payment.schema.json +4 -4
- package/dist/cjs/contracts/order/shipment/item.schema.json +6 -1
- package/dist/cjs/contracts/order/shipment.schema.json +14 -0
- package/dist/cjs/contracts/order.schema.json +53 -53
- package/dist/cjs/dist-dereferenced/messages/order/delivered.js +1 -1
- package/dist/cjs/dist-dereferenced/messages/order/new.js +1 -1
- package/dist/cjs/dist-dereferenced/messages/order/processed.js +1 -1
- package/dist/cjs/dist-dereferenced/messages/order/return-initiated.js +1 -1
- package/dist/cjs/dist-dereferenced/messages/order/returned.js +1 -1
- package/dist/cjs/dist-dereferenced/messages/order/shipped.js +1 -1
- package/dist/cjs/dist-dereferenced/order/address.js +1 -1
- package/dist/cjs/dist-dereferenced/order/customer.js +1 -1
- package/dist/cjs/dist-dereferenced/order/item.js +1 -1
- package/dist/cjs/dist-dereferenced/order/orderMain.js +1 -1
- package/dist/cjs/dist-dereferenced/order/payment.js +1 -1
- package/dist/cjs/dist-dereferenced/order/shipment/item/itemMain.js +1 -1
- package/dist/cjs/dist-dereferenced/order/shipment/item/returned.js +1 -1
- package/dist/cjs/dist-dereferenced/order/shipment/pos/outbound.js +1 -1
- package/dist/cjs/dist-dereferenced/order/shipment/pos/posMain.js +1 -1
- package/dist/cjs/dist-dereferenced/order/shipment/pos/return.js +1 -1
- package/dist/cjs/dist-dereferenced/order/shipment/shipmentMain.js +1 -1
- package/dist/cjs/dist-dereferenced/order/shipment/shipped/outbound.js +1 -1
- package/dist/cjs/dist-dereferenced/order/shipment/shipped/return.js +1 -1
- package/dist/cjs/dist-dereferenced/order/shipment/shipped/shippedMain.js +1 -1
- package/dist/cjs/src-public/bcOrder.js +167 -154
- package/dist/cjs/src-public/pubsub.js +0 -1
- package/dist/package.json +1 -0
- package/dist/types/dist-dereferenced/messages/order/delivered.d.ts +117 -105
- package/dist/types/dist-dereferenced/messages/order/new.d.ts +117 -105
- package/dist/types/dist-dereferenced/messages/order/processed.d.ts +117 -105
- package/dist/types/dist-dereferenced/messages/order/return-initiated.d.ts +117 -105
- package/dist/types/dist-dereferenced/messages/order/returned.d.ts +117 -105
- package/dist/types/dist-dereferenced/messages/order/shipped.d.ts +117 -105
- package/dist/types/dist-dereferenced/order/address.d.ts +10 -14
- package/dist/types/dist-dereferenced/order/customer.d.ts +10 -14
- package/dist/types/dist-dereferenced/order/index.d.ts +117 -105
- package/dist/types/dist-dereferenced/order/item.d.ts +3 -0
- package/dist/types/dist-dereferenced/order/orderMain.d.ts +117 -105
- package/dist/types/dist-dereferenced/order/payment.d.ts +2 -2
- package/dist/types/dist-dereferenced/order/shipment/index.d.ts +15 -1
- package/dist/types/dist-dereferenced/order/shipment/item/index.d.ts +4 -1
- package/dist/types/dist-dereferenced/order/shipment/item/itemMain.d.ts +4 -1
- package/dist/types/dist-dereferenced/order/shipment/item/returned.d.ts +4 -1
- package/dist/types/dist-dereferenced/order/shipment/pos/index.d.ts +15 -1
- package/dist/types/dist-dereferenced/order/shipment/pos/outbound.d.ts +15 -1
- package/dist/types/dist-dereferenced/order/shipment/pos/posMain.d.ts +15 -1
- package/dist/types/dist-dereferenced/order/shipment/pos/return.d.ts +15 -1
- package/dist/types/dist-dereferenced/order/shipment/shipmentMain.d.ts +15 -1
- package/dist/types/dist-dereferenced/order/shipment/shipped/index.d.ts +15 -1
- package/dist/types/dist-dereferenced/order/shipment/shipped/outbound.d.ts +15 -1
- package/dist/types/dist-dereferenced/order/shipment/shipped/return.d.ts +15 -1
- package/dist/types/dist-dereferenced/order/shipment/shipped/shippedMain.d.ts +15 -1
- package/dist/types/dist-types/messages/order/delivered.d.ts +14 -9
- package/dist/types/dist-types/messages/order/new.d.ts +14 -9
- package/dist/types/dist-types/messages/order/processed.d.ts +14 -9
- package/dist/types/dist-types/messages/order/return-initiated.d.ts +14 -9
- package/dist/types/dist-types/messages/order/returned.d.ts +14 -9
- package/dist/types/dist-types/messages/order/shipped.d.ts +14 -9
- package/dist/types/dist-types/order/address.d.ts +3 -3
- package/dist/types/dist-types/order/customer.d.ts +6 -6
- package/dist/types/dist-types/order/item.d.ts +1 -0
- package/dist/types/dist-types/order/orderMain.d.ts +14 -9
- package/dist/types/dist-types/order/payment.d.ts +2 -2
- package/dist/types/dist-types/order/shipment/item/itemMain.d.ts +1 -0
- package/dist/types/dist-types/order/shipment/item/returned.d.ts +1 -0
- package/dist/types/dist-types/order/shipment/pos/outbound.d.ts +4 -0
- package/dist/types/dist-types/order/shipment/pos/posMain.d.ts +4 -0
- package/dist/types/dist-types/order/shipment/pos/return.d.ts +4 -0
- package/dist/types/dist-types/order/shipment/shipmentMain.d.ts +4 -0
- package/dist/types/dist-types/order/shipment/shipped/outbound.d.ts +4 -0
- package/dist/types/dist-types/order/shipment/shipped/return.d.ts +4 -0
- package/dist/types/dist-types/order/shipment/shipped/shippedMain.d.ts +4 -0
- package/dist/types/src-public/pubsub.d.ts +0 -1
- package/package.json +2 -1
|
@@ -7,6 +7,7 @@ exports.BCOrderHelper = void 0;
|
|
|
7
7
|
exports.buildLineGrouping = buildLineGrouping;
|
|
8
8
|
exports.transformMasterOrder = transformMasterOrder;
|
|
9
9
|
exports.validateOrder = validateOrder;
|
|
10
|
+
const currency_js_1 = __importDefault(require("currency.js"));
|
|
10
11
|
const order_schema_json_1 = __importDefault(require("../contracts/order.schema.json"));
|
|
11
12
|
const runtime_1 = __importDefault(require("./runtime"));
|
|
12
13
|
const validate_1 = __importDefault(require("./validate"));
|
|
@@ -14,10 +15,7 @@ const GBP = "GBP";
|
|
|
14
15
|
function toMinorUnits(amount) {
|
|
15
16
|
if (typeof amount !== "number" || !isFinite(amount))
|
|
16
17
|
return 0;
|
|
17
|
-
|
|
18
|
-
return Math.round(Number((amount * 100).toPrecision(15)));
|
|
19
|
-
}
|
|
20
|
-
return Math.round(amount * 100);
|
|
18
|
+
return (0, currency_js_1.default)(amount).intValue;
|
|
21
19
|
}
|
|
22
20
|
function money(value) {
|
|
23
21
|
const v = toMinorUnits(value);
|
|
@@ -40,6 +38,12 @@ function moneyFromMinor(minor) {
|
|
|
40
38
|
lcy_decimal_places: 2,
|
|
41
39
|
};
|
|
42
40
|
}
|
|
41
|
+
function trimAddr(val) {
|
|
42
|
+
if (val === null || val === undefined)
|
|
43
|
+
return null;
|
|
44
|
+
const s = String(val).replace(/[,\s]+$/g, '').replace(/^[\s]+/, '');
|
|
45
|
+
return s.length > 0 ? s : null;
|
|
46
|
+
}
|
|
43
47
|
function buildLineGrouping(payload) {
|
|
44
48
|
const group = {};
|
|
45
49
|
const makeKey = (orderNo, lineNo) => `${orderNo}:${lineNo}`;
|
|
@@ -102,8 +106,10 @@ function buildLineGrouping(payload) {
|
|
|
102
106
|
}
|
|
103
107
|
function transformMasterOrder(payload) {
|
|
104
108
|
const erp_order_id = payload.no || payload.system_id || "";
|
|
105
|
-
const
|
|
109
|
+
const allSales = Array.isArray(payload.sales) ? payload.sales : [];
|
|
110
|
+
const sale0 = allSales.find((s) => (s.sale_lines || []).length > 0) || allSales[0] || undefined;
|
|
106
111
|
const invoice0 = Array.isArray(payload.invoices) && payload.invoices.length > 0 ? payload.invoices[0] : undefined;
|
|
112
|
+
const allSaleLines = allSales.flatMap((s) => s.sale_lines || []);
|
|
107
113
|
const normalizeIntegerOrNull = (value) => {
|
|
108
114
|
if (value === null || value === undefined)
|
|
109
115
|
return null;
|
|
@@ -169,7 +175,7 @@ function transformMasterOrder(payload) {
|
|
|
169
175
|
const is_gift = Boolean((sale0?.gift_message && String(sale0?.gift_message).trim().length > 0) ||
|
|
170
176
|
(payload.invoices?.some((i) => (i.gift_message || "").trim().length > 0)));
|
|
171
177
|
const invoiceLinesForReturn = payload.invoices?.flatMap((i) => i.invoice_lines || []) || [];
|
|
172
|
-
const salesLinesFallbackForReturn =
|
|
178
|
+
const salesLinesFallbackForReturn = allSaleLines;
|
|
173
179
|
const sourceLinesForReturn = invoiceLinesForReturn.length > 0 ? invoiceLinesForReturn : salesLinesFallbackForReturn;
|
|
174
180
|
const skuByDescription = {};
|
|
175
181
|
sourceLinesForReturn.forEach((line) => {
|
|
@@ -225,7 +231,7 @@ function transformMasterOrder(payload) {
|
|
|
225
231
|
});
|
|
226
232
|
});
|
|
227
233
|
const invoiceLines = payload.invoices?.flatMap((i) => i.invoice_lines || []) || [];
|
|
228
|
-
const salesLinesFallback =
|
|
234
|
+
const salesLinesFallback = allSaleLines.map((l) => ({
|
|
229
235
|
type: l.type || "Item",
|
|
230
236
|
no: l.no,
|
|
231
237
|
variant_code: l.variant_code,
|
|
@@ -292,30 +298,30 @@ function transformMasterOrder(payload) {
|
|
|
292
298
|
vatRate = vatPercent / 100;
|
|
293
299
|
}
|
|
294
300
|
else if (netTotal > 0 && grossTotal > 0) {
|
|
295
|
-
vatRate = Math.max(0, (grossTotal
|
|
301
|
+
vatRate = Math.max(0, (0, currency_js_1.default)(grossTotal).subtract(netTotal).divide(netTotal).value);
|
|
296
302
|
}
|
|
297
303
|
let unitNet = 0;
|
|
298
304
|
let unitGross = 0;
|
|
299
305
|
if (unitPriceRaw > 0) {
|
|
300
306
|
if (headerPricesInclVat) {
|
|
301
307
|
unitGross = unitPriceRaw;
|
|
302
|
-
unitNet = vatRate > 0 ? (
|
|
308
|
+
unitNet = vatRate > 0 ? (0, currency_js_1.default)(unitGross).divide(1 + vatRate).value : unitGross;
|
|
303
309
|
}
|
|
304
310
|
else {
|
|
305
311
|
unitNet = unitPriceRaw;
|
|
306
|
-
unitGross = vatRate > 0 ? (
|
|
312
|
+
unitGross = vatRate > 0 ? (0, currency_js_1.default)(unitNet).multiply(1 + vatRate).value : unitNet;
|
|
307
313
|
}
|
|
308
314
|
}
|
|
309
315
|
else {
|
|
310
316
|
unitNet = quantity > 0
|
|
311
317
|
? (netTotal > 0
|
|
312
|
-
? netTotal
|
|
313
|
-
: (grossTotal > 0 && vatRate > 0 ? (
|
|
318
|
+
? (0, currency_js_1.default)(netTotal).divide(quantity).value
|
|
319
|
+
: (grossTotal > 0 && vatRate > 0 ? (0, currency_js_1.default)(grossTotal).divide(1 + vatRate).divide(quantity).value : 0))
|
|
314
320
|
: 0;
|
|
315
321
|
unitGross = quantity > 0
|
|
316
322
|
? (grossTotal > 0
|
|
317
|
-
? grossTotal
|
|
318
|
-
: (netTotal > 0 && vatRate > 0 ? (
|
|
323
|
+
? (0, currency_js_1.default)(grossTotal).divide(quantity).value
|
|
324
|
+
: (netTotal > 0 && vatRate > 0 ? (0, currency_js_1.default)(netTotal).multiply(1 + vatRate).divide(quantity).value : 0))
|
|
319
325
|
: 0;
|
|
320
326
|
}
|
|
321
327
|
const discountCode = (line.salesforce_promotion_id && line.salesforce_promotion_id.trim().length > 0)
|
|
@@ -336,22 +342,22 @@ function transformMasterOrder(payload) {
|
|
|
336
342
|
if (discountAmountRaw > 0) {
|
|
337
343
|
if (headerPricesInclVat) {
|
|
338
344
|
discountGross = discountAmountRaw;
|
|
339
|
-
discountNet = vatRate > 0 ? (
|
|
345
|
+
discountNet = vatRate > 0 ? (0, currency_js_1.default)(discountGross).divide(1 + vatRate).value : discountGross;
|
|
340
346
|
}
|
|
341
347
|
else {
|
|
342
348
|
discountNet = discountAmountRaw;
|
|
343
|
-
discountGross = vatRate > 0 ? (
|
|
349
|
+
discountGross = vatRate > 0 ? (0, currency_js_1.default)(discountNet).multiply(1 + vatRate).value : discountNet;
|
|
344
350
|
}
|
|
345
351
|
}
|
|
346
352
|
else if (discountPercent > 0) {
|
|
347
353
|
if (netTotal > 0)
|
|
348
|
-
discountNet = (netTotal
|
|
354
|
+
discountNet = (0, currency_js_1.default)(netTotal).multiply(discountPercent).divide(100).value;
|
|
349
355
|
if (grossTotal > 0)
|
|
350
|
-
discountGross = (grossTotal
|
|
356
|
+
discountGross = (0, currency_js_1.default)(grossTotal).multiply(discountPercent).divide(100).value;
|
|
351
357
|
if (grossTotal === 0 && discountNet > 0 && vatRate > 0)
|
|
352
|
-
discountGross =
|
|
358
|
+
discountGross = (0, currency_js_1.default)(discountNet).multiply(1 + vatRate).value;
|
|
353
359
|
if (netTotal === 0 && discountGross > 0 && vatRate > 0)
|
|
354
|
-
discountNet =
|
|
360
|
+
discountNet = (0, currency_js_1.default)(discountGross).divide(1 + vatRate).value;
|
|
355
361
|
}
|
|
356
362
|
const take = Math.min(shippedRemainingBySku[sku] || 0, quantity);
|
|
357
363
|
const remaining = quantity - take;
|
|
@@ -375,10 +381,10 @@ function transformMasterOrder(payload) {
|
|
|
375
381
|
...baseFields,
|
|
376
382
|
quantity: qty,
|
|
377
383
|
returned_quantity: Math.max(0, Number(returnedQtyForLine || 0)),
|
|
378
|
-
amount_net: money(unitNet
|
|
379
|
-
amount_gross: money(unitGross
|
|
380
|
-
discount_amount_net: money(
|
|
381
|
-
discount_amount_gross: money(
|
|
384
|
+
amount_net: money((0, currency_js_1.default)(unitNet).multiply(qty).value),
|
|
385
|
+
amount_gross: money((0, currency_js_1.default)(unitGross).multiply(qty).value),
|
|
386
|
+
discount_amount_net: money((0, currency_js_1.default)(discountNet).multiply(qty).divide(Math.max(1, quantity)).value),
|
|
387
|
+
discount_amount_gross: money((0, currency_js_1.default)(discountGross).multiply(qty).divide(Math.max(1, quantity)).value),
|
|
382
388
|
discount_amount_percent: line.line_discount_percent || 0,
|
|
383
389
|
});
|
|
384
390
|
};
|
|
@@ -414,10 +420,10 @@ function transformMasterOrder(payload) {
|
|
|
414
420
|
});
|
|
415
421
|
});
|
|
416
422
|
if (invoicesGrossMinor === 0 && (payload.invoices || []).length > 0) {
|
|
417
|
-
invoicesGrossMinor = toMinorUnits((payload.invoices || []).reduce((acc, inv) =>
|
|
423
|
+
invoicesGrossMinor = toMinorUnits((payload.invoices || []).reduce((acc, inv) => (0, currency_js_1.default)(acc).add(inv.amount_incl_vat || 0).value, 0));
|
|
418
424
|
}
|
|
419
|
-
if (invoicesGrossMinor === 0 && invoicedLineNos.size > 0 &&
|
|
420
|
-
const
|
|
425
|
+
if (invoicesGrossMinor === 0 && invoicedLineNos.size > 0 && allSaleLines.length > 0) {
|
|
426
|
+
const invoicedSaleLineItems = allSaleLines.filter((l) => {
|
|
421
427
|
if (isDeliveryItem(l))
|
|
422
428
|
return false;
|
|
423
429
|
if (String(l?.type || '').toLowerCase() !== 'item')
|
|
@@ -425,18 +431,18 @@ function transformMasterOrder(payload) {
|
|
|
425
431
|
const lineNo = Number(l?.line_no || -1);
|
|
426
432
|
return invoicedLineNos.has(lineNo);
|
|
427
433
|
});
|
|
428
|
-
invoicesGrossMinor = toMinorUnits(
|
|
434
|
+
invoicesGrossMinor = toMinorUnits(invoicedSaleLineItems.reduce((acc, l) => (0, currency_js_1.default)(acc).add(Number(l?.amount_including_vat || 0)).value, 0));
|
|
429
435
|
}
|
|
430
436
|
let nonInvSalesGrossMinor = 0;
|
|
431
|
-
if (
|
|
432
|
-
const
|
|
437
|
+
if (allSaleLines.length > 0) {
|
|
438
|
+
const saleLinesNoDelivery = allSaleLines.filter((l) => {
|
|
433
439
|
if (isDeliveryItem(l))
|
|
434
440
|
return false;
|
|
435
441
|
if (String(l?.type || '').toLowerCase() !== 'item')
|
|
436
442
|
return false;
|
|
437
443
|
return true;
|
|
438
444
|
});
|
|
439
|
-
const totalSaleGrossMinor = toMinorUnits(
|
|
445
|
+
const totalSaleGrossMinor = toMinorUnits(saleLinesNoDelivery.reduce((acc, l) => (0, currency_js_1.default)(acc).add(Number(l?.amount_including_vat || 0)).value, 0));
|
|
440
446
|
if (invoicesGrossMinor > 0) {
|
|
441
447
|
nonInvSalesGrossMinor = Math.max(0, totalSaleGrossMinor - invoicesGrossMinor);
|
|
442
448
|
}
|
|
@@ -445,7 +451,7 @@ function transformMasterOrder(payload) {
|
|
|
445
451
|
}
|
|
446
452
|
}
|
|
447
453
|
else if (sale0 && (sale0.amount_excl_vat || sale0.amount_incl_vat)) {
|
|
448
|
-
const saleGrossMinor = toMinorUnits(
|
|
454
|
+
const saleGrossMinor = toMinorUnits(allSales.reduce((acc, s) => (0, currency_js_1.default)(acc).add(s.amount_incl_vat || 0).value, 0));
|
|
449
455
|
if (invoicesGrossMinor > 0) {
|
|
450
456
|
nonInvSalesGrossMinor = Math.max(0, saleGrossMinor - invoicesGrossMinor);
|
|
451
457
|
}
|
|
@@ -454,7 +460,7 @@ function transformMasterOrder(payload) {
|
|
|
454
460
|
}
|
|
455
461
|
}
|
|
456
462
|
else {
|
|
457
|
-
const
|
|
463
|
+
const nonInvoicedSaleItems = allSaleLines.filter((l) => {
|
|
458
464
|
if (isDeliveryItem(l))
|
|
459
465
|
return false;
|
|
460
466
|
if (String(l?.type || '').toLowerCase() !== 'item')
|
|
@@ -462,21 +468,21 @@ function transformMasterOrder(payload) {
|
|
|
462
468
|
const lineNo = Number(l?.line_no || -1);
|
|
463
469
|
return !invoicedLineNos.has(lineNo);
|
|
464
470
|
});
|
|
465
|
-
nonInvSalesGrossMinor = toMinorUnits(
|
|
471
|
+
nonInvSalesGrossMinor = toMinorUnits(nonInvoicedSaleItems.reduce((acc, l) => (0, currency_js_1.default)(acc).add(Number(l?.amount_including_vat || 0)).value, 0));
|
|
466
472
|
}
|
|
467
473
|
const totalGrossMinor = invoicesGrossMinor + nonInvSalesGrossMinor;
|
|
468
|
-
const invoicesNetMinorWithDelivery = toMinorUnits((payload.invoices || []).reduce((acc, inv) =>
|
|
469
|
-
const invoicesGrossMinorWithDelivery = toMinorUnits((payload.invoices || []).reduce((acc, inv) =>
|
|
474
|
+
const invoicesNetMinorWithDelivery = toMinorUnits((payload.invoices || []).reduce((acc, inv) => (0, currency_js_1.default)(acc).add(inv.amount_excl_vat || 0).value, 0));
|
|
475
|
+
const invoicesGrossMinorWithDelivery = toMinorUnits((payload.invoices || []).reduce((acc, inv) => (0, currency_js_1.default)(acc).add(inv.amount_incl_vat || 0).value, 0));
|
|
470
476
|
let nonInvSalesNetMinorWithDelivery = 0;
|
|
471
477
|
let nonInvSalesGrossMinorWithDelivery = 0;
|
|
472
|
-
if (
|
|
473
|
-
const
|
|
478
|
+
if (allSaleLines.length > 0) {
|
|
479
|
+
const saleLinesWithDelivery = allSaleLines.filter((l) => {
|
|
474
480
|
if (String(l?.type || '').toLowerCase() !== 'item')
|
|
475
481
|
return false;
|
|
476
482
|
return true;
|
|
477
483
|
});
|
|
478
|
-
const totalSaleNetMinorWithDelivery = toMinorUnits(
|
|
479
|
-
const totalSaleGrossMinorWithDelivery = toMinorUnits(
|
|
484
|
+
const totalSaleNetMinorWithDelivery = toMinorUnits(saleLinesWithDelivery.reduce((acc, l) => (0, currency_js_1.default)(acc).add(Number(l?.amount || 0)).value, 0));
|
|
485
|
+
const totalSaleGrossMinorWithDelivery = toMinorUnits(saleLinesWithDelivery.reduce((acc, l) => (0, currency_js_1.default)(acc).add(Number(l?.amount_including_vat || 0)).value, 0));
|
|
480
486
|
if (invoicesGrossMinorWithDelivery > 0) {
|
|
481
487
|
nonInvSalesNetMinorWithDelivery = Math.max(0, totalSaleNetMinorWithDelivery - invoicesNetMinorWithDelivery);
|
|
482
488
|
nonInvSalesGrossMinorWithDelivery = Math.max(0, totalSaleGrossMinorWithDelivery - invoicesGrossMinorWithDelivery);
|
|
@@ -487,8 +493,8 @@ function transformMasterOrder(payload) {
|
|
|
487
493
|
}
|
|
488
494
|
}
|
|
489
495
|
else if (sale0 && (sale0.amount_excl_vat || sale0.amount_incl_vat)) {
|
|
490
|
-
const saleNetMinor = toMinorUnits(
|
|
491
|
-
const saleGrossMinor = toMinorUnits(
|
|
496
|
+
const saleNetMinor = toMinorUnits(allSales.reduce((acc, s) => (0, currency_js_1.default)(acc).add(s.amount_excl_vat || 0).value, 0));
|
|
497
|
+
const saleGrossMinor = toMinorUnits(allSales.reduce((acc, s) => (0, currency_js_1.default)(acc).add(s.amount_incl_vat || 0).value, 0));
|
|
492
498
|
if (invoicesGrossMinorWithDelivery > 0) {
|
|
493
499
|
nonInvSalesNetMinorWithDelivery = Math.max(0, saleNetMinor - invoicesNetMinorWithDelivery);
|
|
494
500
|
nonInvSalesGrossMinorWithDelivery = Math.max(0, saleGrossMinor - invoicesGrossMinorWithDelivery);
|
|
@@ -499,14 +505,14 @@ function transformMasterOrder(payload) {
|
|
|
499
505
|
}
|
|
500
506
|
}
|
|
501
507
|
else {
|
|
502
|
-
const nonInvoicedSalesWithDelivery =
|
|
508
|
+
const nonInvoicedSalesWithDelivery = allSaleLines.filter((l) => {
|
|
503
509
|
if (String(l?.type || '').toLowerCase() !== 'item')
|
|
504
510
|
return false;
|
|
505
511
|
const lineNo = Number(l?.line_no || -1);
|
|
506
512
|
return !invoicedLineNos.has(lineNo);
|
|
507
513
|
});
|
|
508
|
-
nonInvSalesNetMinorWithDelivery = toMinorUnits(nonInvoicedSalesWithDelivery.reduce((acc, l) =>
|
|
509
|
-
nonInvSalesGrossMinorWithDelivery = toMinorUnits(nonInvoicedSalesWithDelivery.reduce((acc, l) =>
|
|
514
|
+
nonInvSalesNetMinorWithDelivery = toMinorUnits(nonInvoicedSalesWithDelivery.reduce((acc, l) => (0, currency_js_1.default)(acc).add(Number(l?.amount || 0)).value, 0));
|
|
515
|
+
nonInvSalesGrossMinorWithDelivery = toMinorUnits(nonInvoicedSalesWithDelivery.reduce((acc, l) => (0, currency_js_1.default)(acc).add(Number(l?.amount_including_vat || 0)).value, 0));
|
|
510
516
|
}
|
|
511
517
|
const totalNetMinorWithDelivery = invoicesNetMinorWithDelivery + nonInvSalesNetMinorWithDelivery;
|
|
512
518
|
const totalGrossMinorWithDelivery = invoicesGrossMinorWithDelivery + nonInvSalesGrossMinorWithDelivery;
|
|
@@ -542,7 +548,26 @@ function transformMasterOrder(payload) {
|
|
|
542
548
|
}
|
|
543
549
|
return 'STANDARD';
|
|
544
550
|
};
|
|
545
|
-
|
|
551
|
+
let deliveryGrossMinor = 0;
|
|
552
|
+
let deliveryNetMinor = 0;
|
|
553
|
+
let deliveryDiscountGrossMinor = 0;
|
|
554
|
+
let deliveryDiscountNetMinor = 0;
|
|
555
|
+
const deliverySourceLines = invoiceLines.length > 0 ? invoiceLines : allSaleLines;
|
|
556
|
+
deliverySourceLines.forEach((line) => {
|
|
557
|
+
if (!isDeliveryItem(line))
|
|
558
|
+
return;
|
|
559
|
+
const gross = toMinorUnits(Number(line?.amount_including_vat || line?.amount_incl_vat || 0));
|
|
560
|
+
const net = toMinorUnits(Number(line?.amount || line?.amount_excl_vat || 0));
|
|
561
|
+
deliveryGrossMinor += gross;
|
|
562
|
+
deliveryNetMinor += net;
|
|
563
|
+
const lineDiscGross = toMinorUnits(Number(line?.line_discount_amount || 0));
|
|
564
|
+
const lineDiscNet = headerPricesInclVat
|
|
565
|
+
? (0, currency_js_1.default)(lineDiscGross, { fromCents: true }).divide(1.2).intValue
|
|
566
|
+
: lineDiscGross;
|
|
567
|
+
deliveryDiscountGrossMinor += lineDiscGross;
|
|
568
|
+
deliveryDiscountNetMinor += lineDiscNet;
|
|
569
|
+
});
|
|
570
|
+
const mappedShipments = (payload.shipments || []).map((s, shipIdx) => {
|
|
546
571
|
const rawLines = (s.shipment_lines || [])
|
|
547
572
|
.filter((l) => isShippableItem(l));
|
|
548
573
|
const qtyBySku = new Map();
|
|
@@ -559,6 +584,11 @@ function transformMasterOrder(payload) {
|
|
|
559
584
|
sku,
|
|
560
585
|
quantity: Math.max(1, qtyBySku.get(sku) || 0),
|
|
561
586
|
}));
|
|
587
|
+
const isFirstShipment = shipIdx === 0;
|
|
588
|
+
const shipGross = isFirstShipment ? deliveryGrossMinor : 0;
|
|
589
|
+
const shipNet = isFirstShipment ? deliveryNetMinor : 0;
|
|
590
|
+
const shipDiscGross = isFirstShipment ? deliveryDiscountGrossMinor : 0;
|
|
591
|
+
const shipDiscNet = isFirstShipment ? deliveryDiscountNetMinor : 0;
|
|
562
592
|
const statusVal = shipmentLines.length > 0 ? "SHIPPED" : "PENDING";
|
|
563
593
|
return {
|
|
564
594
|
erp_id: s.no || s.system_id || "",
|
|
@@ -570,10 +600,10 @@ function transformMasterOrder(payload) {
|
|
|
570
600
|
tracking_code: (s.torque_tracking_id && typeof s.torque_tracking_id === 'string') ? s.torque_tracking_id : null,
|
|
571
601
|
class_name: mapClassName(s.shipping_agent_service_code),
|
|
572
602
|
items: shipmentLines,
|
|
573
|
-
amount_net:
|
|
574
|
-
amount_gross:
|
|
575
|
-
discount_amount_net:
|
|
576
|
-
discount_amount_gross:
|
|
603
|
+
amount_net: moneyFromMinor(shipNet),
|
|
604
|
+
amount_gross: moneyFromMinor(shipGross),
|
|
605
|
+
discount_amount_net: moneyFromMinor(shipDiscNet),
|
|
606
|
+
discount_amount_gross: moneyFromMinor(shipDiscGross),
|
|
577
607
|
discount_amount_percent: 0,
|
|
578
608
|
};
|
|
579
609
|
});
|
|
@@ -660,7 +690,7 @@ function transformMasterOrder(payload) {
|
|
|
660
690
|
const isRefund = itemNo.toUpperCase() === 'REFUND';
|
|
661
691
|
if ((l?.quantity || 0) > 0 && isItemish && !isRefund && !isDeliveryItem(l)) {
|
|
662
692
|
hasQualifying = true;
|
|
663
|
-
return
|
|
693
|
+
return (0, currency_js_1.default)(s).add(l?.amount_including_vat || 0).value;
|
|
664
694
|
}
|
|
665
695
|
return s;
|
|
666
696
|
}, 0);
|
|
@@ -672,16 +702,16 @@ function transformMasterOrder(payload) {
|
|
|
672
702
|
const isItemish = typeStr.includes('item') || looksProduct;
|
|
673
703
|
const isRefund = itemNo.toUpperCase() === 'REFUND';
|
|
674
704
|
if ((l?.quantity || 0) > 0 && isItemish && !isRefund && !isDeliveryItem(l)) {
|
|
675
|
-
return
|
|
705
|
+
return (0, currency_js_1.default)(s).add(l?.amount || l?.amount_excl_vat || 0).value;
|
|
676
706
|
}
|
|
677
707
|
return s;
|
|
678
708
|
}, 0);
|
|
679
709
|
if (!hasQualifying)
|
|
680
710
|
return acc;
|
|
681
711
|
if (cm?.amount_incl_vat != null && cm.amount_incl_vat > 0) {
|
|
682
|
-
return { gross: acc.gross
|
|
712
|
+
return { gross: (0, currency_js_1.default)(acc.gross).add(cm.amount_incl_vat).value, net: (0, currency_js_1.default)(acc.net).add(cm.amount_excl_vat || 0).value };
|
|
683
713
|
}
|
|
684
|
-
return { gross: acc.gross
|
|
714
|
+
return { gross: (0, currency_js_1.default)(acc.gross).add(sumGross).value, net: (0, currency_js_1.default)(acc.net).add(sumNet).value };
|
|
685
715
|
}, { gross: 0, net: 0 });
|
|
686
716
|
const merchReturnGrossFromReturnSales = (payload.sales || []).reduce((acc, sale) => {
|
|
687
717
|
const docTypeRaw = String(sale?.document_type || sale?.documentType || "");
|
|
@@ -689,7 +719,7 @@ function transformMasterOrder(payload) {
|
|
|
689
719
|
if (!isReturnOrder)
|
|
690
720
|
return acc;
|
|
691
721
|
if (sale?.amount_incl_vat != null && sale.amount_incl_vat > 0) {
|
|
692
|
-
return { gross: acc.gross
|
|
722
|
+
return { gross: (0, currency_js_1.default)(acc.gross).add(sale.amount_incl_vat).value, net: (0, currency_js_1.default)(acc.net).add(sale.amount_excl_vat || sale.amount || 0).value };
|
|
693
723
|
}
|
|
694
724
|
const lines = sale?.sale_lines || [];
|
|
695
725
|
let hasQualifying = false;
|
|
@@ -702,7 +732,7 @@ function transformMasterOrder(payload) {
|
|
|
702
732
|
const isRefund = itemNo.toUpperCase() === 'REFUND';
|
|
703
733
|
if ((l?.quantity || 0) > 0 && isItemish && !isRefund && !isDeliveryItem(l)) {
|
|
704
734
|
hasQualifying = true;
|
|
705
|
-
return
|
|
735
|
+
return (0, currency_js_1.default)(s).add(l?.amount_including_vat || 0).value;
|
|
706
736
|
}
|
|
707
737
|
return s;
|
|
708
738
|
}, 0);
|
|
@@ -714,22 +744,22 @@ function transformMasterOrder(payload) {
|
|
|
714
744
|
const isItemish = typeStr.includes('item') || looksProduct;
|
|
715
745
|
const isRefund = itemNo.toUpperCase() === 'REFUND';
|
|
716
746
|
if ((l?.quantity || 0) > 0 && isItemish && !isRefund && !isDeliveryItem(l)) {
|
|
717
|
-
return
|
|
747
|
+
return (0, currency_js_1.default)(s).add(l?.amount || l?.amount_excl_vat || 0).value;
|
|
718
748
|
}
|
|
719
749
|
return s;
|
|
720
750
|
}, 0);
|
|
721
751
|
if (sumGross > 0) {
|
|
722
|
-
return { gross: acc.gross
|
|
752
|
+
return { gross: (0, currency_js_1.default)(acc.gross).add(sumGross).value, net: (0, currency_js_1.default)(acc.net).add(sumNet).value };
|
|
723
753
|
}
|
|
724
754
|
if (hasQualifying) {
|
|
725
|
-
return { gross: acc.gross
|
|
755
|
+
return { gross: (0, currency_js_1.default)(acc.gross).add(sale?.amount_incl_vat || sale?.amount_including_vat || 0).value, net: (0, currency_js_1.default)(acc.net).add(sale?.amount_excl_vat || sale?.amount || 0).value };
|
|
726
756
|
}
|
|
727
757
|
return acc;
|
|
728
758
|
}, { gross: 0, net: 0 });
|
|
729
|
-
const merchReturnGross = merchReturnGrossFromCreditMemos.gross
|
|
759
|
+
const merchReturnGross = (0, currency_js_1.default)(merchReturnGrossFromCreditMemos.gross).add(merchReturnGrossFromReturnSales.gross).value;
|
|
730
760
|
const hasMerchReturn = merchReturnGross > 0;
|
|
731
|
-
const returnsNetMinor = toMinorUnits((payload.credit_memos || []).reduce((acc, cm) =>
|
|
732
|
-
const returnsGrossMinor = toMinorUnits((payload.credit_memos || []).reduce((acc, cm) =>
|
|
761
|
+
const returnsNetMinor = toMinorUnits((payload.credit_memos || []).reduce((acc, cm) => (0, currency_js_1.default)(acc).add(cm.amount_excl_vat || 0).value, 0));
|
|
762
|
+
const returnsGrossMinor = toMinorUnits((payload.credit_memos || []).reduce((acc, cm) => (0, currency_js_1.default)(acc).add(cm.amount_incl_vat || 0).value, 0));
|
|
733
763
|
const return_total = (returnsGrossMinor > 0)
|
|
734
764
|
? {
|
|
735
765
|
amount_net: moneyFromMinor(returnsNetMinor),
|
|
@@ -754,7 +784,7 @@ function transformMasterOrder(payload) {
|
|
|
754
784
|
sourceLineMap.set(lineNo, line);
|
|
755
785
|
}
|
|
756
786
|
});
|
|
757
|
-
|
|
787
|
+
allSaleLines.forEach((line) => {
|
|
758
788
|
const lineNo = Number(line.line_no || -1);
|
|
759
789
|
if (lineNo > 0) {
|
|
760
790
|
const existing = sourceLineMap.get(lineNo);
|
|
@@ -779,7 +809,7 @@ function transformMasterOrder(payload) {
|
|
|
779
809
|
}
|
|
780
810
|
}
|
|
781
811
|
});
|
|
782
|
-
|
|
812
|
+
allSaleLines.forEach((line) => {
|
|
783
813
|
if (line.type === "Item") {
|
|
784
814
|
const itemNo = String(line.no || "");
|
|
785
815
|
const variant = String(line.variant_code || "");
|
|
@@ -797,7 +827,7 @@ function transformMasterOrder(payload) {
|
|
|
797
827
|
});
|
|
798
828
|
const shippedGrossDecimal = (payload.shipments || []).reduce((acc, s) => {
|
|
799
829
|
if (s.amount_incl_vat != null && s.amount_incl_vat > 0) {
|
|
800
|
-
return
|
|
830
|
+
return (0, currency_js_1.default)(acc).add(s.amount_incl_vat || 0).value;
|
|
801
831
|
}
|
|
802
832
|
const lineAmounts = (s.shipment_lines || []).reduce((lineAcc, l) => {
|
|
803
833
|
if (!isShippableItem(l))
|
|
@@ -815,18 +845,18 @@ function transformMasterOrder(payload) {
|
|
|
815
845
|
const sourceGross = Number(sourceLine.amount_including_vat || sourceLine.amount_incl_vat || 0);
|
|
816
846
|
const shippedQty = Number(l?.quantity || 0);
|
|
817
847
|
if (sourceQty > 0 && sourceGross > 0) {
|
|
818
|
-
const unitPrice = sourceGross
|
|
819
|
-
return lineAcc
|
|
848
|
+
const unitPrice = (0, currency_js_1.default)(sourceGross).divide(sourceQty).value;
|
|
849
|
+
return (0, currency_js_1.default)(lineAcc).add((0, currency_js_1.default)(unitPrice).multiply(shippedQty)).value;
|
|
820
850
|
}
|
|
821
851
|
}
|
|
822
|
-
return
|
|
852
|
+
return (0, currency_js_1.default)(lineAcc).add(l?.amount_including_vat || l?.amount_incl_vat || 0).value;
|
|
823
853
|
}, 0);
|
|
824
|
-
return acc
|
|
854
|
+
return (0, currency_js_1.default)(acc).add(lineAmounts).value;
|
|
825
855
|
}, 0);
|
|
826
856
|
const shippedGrossMinor = toMinorUnits(shippedGrossDecimal);
|
|
827
857
|
let status = "PROCESSED";
|
|
828
858
|
if (hasMerchReturn) {
|
|
829
|
-
const totalOrderGrossDecimal = totalOrderGrossMinor
|
|
859
|
+
const totalOrderGrossDecimal = (0, currency_js_1.default)(totalOrderGrossMinor, { fromCents: true }).value;
|
|
830
860
|
status = totalOrderGrossDecimal > 0 && merchReturnGross >= totalOrderGrossDecimal ? "RETURNED" : "PARTIALLY-RETURNED";
|
|
831
861
|
}
|
|
832
862
|
else if (shippedGrossMinor > 0 && totalOrderGrossMinor > 0) {
|
|
@@ -857,7 +887,7 @@ function transformMasterOrder(payload) {
|
|
|
857
887
|
}
|
|
858
888
|
if (c.includes('MOTO'))
|
|
859
889
|
return 'MOTO';
|
|
860
|
-
if (c.includes('ADYEN') &&
|
|
890
|
+
if (c.includes('ADYEN') && giftCertId.length === 0) {
|
|
861
891
|
return 'CREDIT-CARD';
|
|
862
892
|
}
|
|
863
893
|
const serviceType = String(card?.service_type || '').toUpperCase();
|
|
@@ -884,23 +914,27 @@ function transformMasterOrder(payload) {
|
|
|
884
914
|
order_no: c.order_no,
|
|
885
915
|
captured: c.captured,
|
|
886
916
|
}));
|
|
887
|
-
const normalPays = (payload.payments || []).map((p) =>
|
|
888
|
-
|
|
889
|
-
|
|
890
|
-
|
|
891
|
-
|
|
892
|
-
|
|
893
|
-
|
|
894
|
-
|
|
895
|
-
|
|
896
|
-
|
|
897
|
-
|
|
898
|
-
|
|
899
|
-
|
|
900
|
-
|
|
901
|
-
|
|
902
|
-
|
|
903
|
-
|
|
917
|
+
const normalPays = (payload.payments || []).map((p) => {
|
|
918
|
+
const pc = (p.payment_cards || [])[0];
|
|
919
|
+
return {
|
|
920
|
+
created_at: p.created_at,
|
|
921
|
+
amount: p.amount,
|
|
922
|
+
type: p.type,
|
|
923
|
+
payment_method_code: p.payment_method_code,
|
|
924
|
+
transaction_id: p.transaction_id,
|
|
925
|
+
card_number: pc?.card_number || undefined,
|
|
926
|
+
psp_reference: p.psp_reference,
|
|
927
|
+
payment_gateway_token: p.payment_gateway_token,
|
|
928
|
+
payment_number: p.payment_number || p.payment_no,
|
|
929
|
+
payment_refund_number: p.payment_refund_number || p.payment_reference_no,
|
|
930
|
+
original_payment_refund_id: p.original_payment_refund_id,
|
|
931
|
+
created_by: p.created_by || invoice0?.created_by || sale0?.created_by,
|
|
932
|
+
source: 'payment',
|
|
933
|
+
order_no: p.master_order_no,
|
|
934
|
+
ledger_entry_no: p.ledger_entry_no,
|
|
935
|
+
service_type: pc?.card_type || p.card_type || undefined,
|
|
936
|
+
};
|
|
937
|
+
});
|
|
904
938
|
const flat = [...cardPays, ...normalPays];
|
|
905
939
|
const groupsMap = new Map();
|
|
906
940
|
flat.forEach((p) => {
|
|
@@ -1105,13 +1139,15 @@ function transformMasterOrder(payload) {
|
|
|
1105
1139
|
}
|
|
1106
1140
|
if (originalPaymentForTransaction?.payment_gateway_token) {
|
|
1107
1141
|
const originalCardPayment = cardPaymentsByToken.get(originalPaymentForTransaction.payment_gateway_token);
|
|
1108
|
-
transaction_id = originalCardPayment?.transaction_id || null;
|
|
1142
|
+
transaction_id = originalCardPayment?.transaction_id || originalPaymentForTransaction.payment_gateway_token || null;
|
|
1109
1143
|
}
|
|
1110
1144
|
}
|
|
1111
1145
|
else {
|
|
1112
|
-
transaction_id = cardPaymentEntryForTransaction?.transaction_id || primary.transaction_id || null;
|
|
1146
|
+
transaction_id = cardPaymentEntryForTransaction?.transaction_id || primary.transaction_id || primary.payment_gateway_token || null;
|
|
1113
1147
|
}
|
|
1114
|
-
const psp_reference = transaction_id
|
|
1148
|
+
const psp_reference = transaction_id
|
|
1149
|
+
|| sortedEntries.find(e => e.payment_gateway_token)?.payment_gateway_token
|
|
1150
|
+
|| null;
|
|
1115
1151
|
const paymentCreatedByRaw = invoice0?.created_by || primary.created_by || sale0?.created_by || "";
|
|
1116
1152
|
const paymentCreatedByUpper = String(paymentCreatedByRaw).toUpperCase();
|
|
1117
1153
|
const isEmail = typeof paymentCreatedByRaw === 'string' && paymentCreatedByRaw.includes('@');
|
|
@@ -1130,12 +1166,16 @@ function transformMasterOrder(payload) {
|
|
|
1130
1166
|
card_number = cardPaymentEntryForTransaction.card_number || null;
|
|
1131
1167
|
}
|
|
1132
1168
|
let cardPaymentForBrand = sortedEntries.find(e => e.source === 'card_payment' && e.service_type);
|
|
1169
|
+
if (!cardPaymentForBrand) {
|
|
1170
|
+
cardPaymentForBrand = sortedEntries.find(e => e.service_type);
|
|
1171
|
+
}
|
|
1133
1172
|
if (!cardPaymentForBrand && g.type === 'REFUND' && cardPaymentEntryForTransaction) {
|
|
1134
1173
|
cardPaymentForBrand = cardPaymentEntryForTransaction;
|
|
1135
1174
|
}
|
|
1136
|
-
const
|
|
1175
|
+
const rawBrand = cardPaymentForBrand?.service_type
|
|
1137
1176
|
? String(cardPaymentForBrand.service_type).trim() || null
|
|
1138
1177
|
: null;
|
|
1178
|
+
const card_brand = (pm === 'PAYPAL' || pm === 'GIFT-CARD' || rawBrand === 'VOUCHER') ? null : rawBrand;
|
|
1139
1179
|
let status = 'CAPTURED';
|
|
1140
1180
|
const isVoucher = pm === 'GIFT-CARD' ||
|
|
1141
1181
|
sortedEntries.some(e => e.gift_certificate_id) ||
|
|
@@ -1199,39 +1239,6 @@ function transformMasterOrder(payload) {
|
|
|
1199
1239
|
};
|
|
1200
1240
|
});
|
|
1201
1241
|
const shipmentsWithItems = shipments.filter((s) => s.items && s.items.length > 0);
|
|
1202
|
-
shipmentsWithItems.forEach((shipment) => {
|
|
1203
|
-
let shipmentNetMinor = 0;
|
|
1204
|
-
let shipmentGrossMinor = 0;
|
|
1205
|
-
let shipmentDiscountNetMinor = 0;
|
|
1206
|
-
let shipmentDiscountGrossMinor = 0;
|
|
1207
|
-
let maxDiscountPercent = 0;
|
|
1208
|
-
(shipment.items || []).forEach((shipItem) => {
|
|
1209
|
-
const sku = shipItem.sku;
|
|
1210
|
-
const shipQty = Number(shipItem.quantity || 0);
|
|
1211
|
-
const matchingItems = itemsList.filter((item) => item.sku === sku);
|
|
1212
|
-
let remainingQty = shipQty;
|
|
1213
|
-
for (const item of matchingItems) {
|
|
1214
|
-
if (remainingQty <= 0)
|
|
1215
|
-
break;
|
|
1216
|
-
const itemQty = Number(item.quantity || 0);
|
|
1217
|
-
if (itemQty > 0) {
|
|
1218
|
-
const takeQty = Math.min(remainingQty, itemQty);
|
|
1219
|
-
const ratio = takeQty / itemQty;
|
|
1220
|
-
shipmentNetMinor += item.amount_net.value * ratio;
|
|
1221
|
-
shipmentGrossMinor += item.amount_gross.value * ratio;
|
|
1222
|
-
shipmentDiscountNetMinor += item.discount_amount_net.value * ratio;
|
|
1223
|
-
shipmentDiscountGrossMinor += item.discount_amount_gross.value * ratio;
|
|
1224
|
-
maxDiscountPercent = Math.max(maxDiscountPercent, item.discount_amount_percent || 0);
|
|
1225
|
-
remainingQty -= takeQty;
|
|
1226
|
-
}
|
|
1227
|
-
}
|
|
1228
|
-
});
|
|
1229
|
-
shipment.amount_net = moneyFromMinor(shipmentNetMinor);
|
|
1230
|
-
shipment.amount_gross = moneyFromMinor(shipmentGrossMinor);
|
|
1231
|
-
shipment.discount_amount_net = moneyFromMinor(shipmentDiscountNetMinor);
|
|
1232
|
-
shipment.discount_amount_gross = moneyFromMinor(shipmentDiscountGrossMinor);
|
|
1233
|
-
shipment.discount_amount_percent = maxDiscountPercent;
|
|
1234
|
-
});
|
|
1235
1242
|
let totalDiscountNetMinor = 0;
|
|
1236
1243
|
let totalDiscountGrossMinor = 0;
|
|
1237
1244
|
let maxTotalDiscountPercent = 0;
|
|
@@ -1252,45 +1259,51 @@ function transformMasterOrder(payload) {
|
|
|
1252
1259
|
centra_order_id,
|
|
1253
1260
|
sfcc_order_id,
|
|
1254
1261
|
globale_order_id: (() => {
|
|
1255
|
-
const v = (invoice0?.globale_order_id ?? sale0?.globale_order_id ?? null);
|
|
1262
|
+
const v = (invoice0?.globale_order_id ?? sale0?.globale_order_id ?? payload.glopal_order_id ?? null);
|
|
1256
1263
|
if (typeof v !== 'string')
|
|
1257
1264
|
return v;
|
|
1258
1265
|
const s = v.trim();
|
|
1259
1266
|
return s.length > 0 ? s : null;
|
|
1260
1267
|
})(),
|
|
1261
|
-
sitoo_order_id:
|
|
1268
|
+
sitoo_order_id: (() => {
|
|
1269
|
+
const v = payload.sitoo_order_id ?? sale0?.sitoo_order_id ?? null;
|
|
1270
|
+
if (v === null || v === undefined)
|
|
1271
|
+
return null;
|
|
1272
|
+
const s = String(v).trim();
|
|
1273
|
+
return s.length > 0 ? s : null;
|
|
1274
|
+
})(),
|
|
1262
1275
|
system_created_by,
|
|
1263
1276
|
ordered_at,
|
|
1264
1277
|
is_gift,
|
|
1265
1278
|
is_pos: created_by_raw === "SITOO",
|
|
1266
1279
|
billing_address: billing_from ? (() => {
|
|
1267
1280
|
const billToName = billing_from.bill_to_name || "";
|
|
1268
|
-
const firstName = billing_from.bill_to_first_name || (billToName ? billToName.split(' ')[0] : "");
|
|
1269
|
-
const lastName = billing_from.bill_to_surname || (billToName ? billToName.split(' ').slice(1).join(' ') : "");
|
|
1281
|
+
const firstName = trimAddr(billing_from.bill_to_first_name) || trimAddr(billToName ? billToName.split(' ')[0] : "");
|
|
1282
|
+
const lastName = trimAddr(billing_from.bill_to_surname) || trimAddr(billToName ? billToName.split(' ').slice(1).join(' ') : "");
|
|
1270
1283
|
return {
|
|
1271
|
-
first_name: firstName,
|
|
1272
|
-
last_name: lastName,
|
|
1273
|
-
address1: billing_from.bill_to_address || "",
|
|
1274
|
-
address2: billing_from.bill_to_address_2 || null,
|
|
1275
|
-
city: billing_from.bill_to_city ||
|
|
1276
|
-
post_code: billing_from.bill_to_post_code || null,
|
|
1277
|
-
country_code: billing_from.bill_to_country_region_code || "",
|
|
1278
|
-
phone: billing_from.sell_to_phone_no || null,
|
|
1284
|
+
first_name: firstName || null,
|
|
1285
|
+
last_name: lastName || null,
|
|
1286
|
+
address1: trimAddr(billing_from.bill_to_address) || "",
|
|
1287
|
+
address2: trimAddr(billing_from.bill_to_address_2) || null,
|
|
1288
|
+
city: trimAddr(billing_from.bill_to_city) || null,
|
|
1289
|
+
post_code: trimAddr(billing_from.bill_to_post_code) || null,
|
|
1290
|
+
country_code: trimAddr(billing_from.bill_to_country_region_code) || "",
|
|
1291
|
+
phone: trimAddr(billing_from.sell_to_phone_no) || null,
|
|
1279
1292
|
created_at: (typeof billing_from.system_created_at === 'string' && billing_from.system_created_at) || undefined,
|
|
1280
1293
|
};
|
|
1281
1294
|
})() : null,
|
|
1282
1295
|
shipping_address: shipping_from ? (() => {
|
|
1283
1296
|
const shipToName = shipping_from.ship_to_name || "";
|
|
1284
|
-
const firstName = shipping_from.ship_to_first_name || (shipToName ? shipToName.split(' ')[0] : "");
|
|
1285
|
-
const lastName = shipping_from.ship_to_surname || (shipToName ? shipToName.split(' ').slice(1).join(' ') : "");
|
|
1297
|
+
const firstName = trimAddr(shipping_from.ship_to_first_name) || trimAddr(shipToName ? shipToName.split(' ')[0] : "");
|
|
1298
|
+
const lastName = trimAddr(shipping_from.ship_to_surname) || trimAddr(shipToName ? shipToName.split(' ').slice(1).join(' ') : "");
|
|
1286
1299
|
return {
|
|
1287
|
-
first_name: firstName,
|
|
1288
|
-
last_name: lastName,
|
|
1289
|
-
address1: shipping_from.ship_to_address || "",
|
|
1290
|
-
address2: shipping_from.ship_to_address_2 || null,
|
|
1291
|
-
city: shipping_from.ship_to_city ||
|
|
1292
|
-
post_code: shipping_from.ship_to_post_code || null,
|
|
1293
|
-
country_code: shipping_from.ship_to_country_region_code || "",
|
|
1300
|
+
first_name: firstName || null,
|
|
1301
|
+
last_name: lastName || null,
|
|
1302
|
+
address1: trimAddr(shipping_from.ship_to_address) || "",
|
|
1303
|
+
address2: trimAddr(shipping_from.ship_to_address_2) || null,
|
|
1304
|
+
city: trimAddr(shipping_from.ship_to_city) || null,
|
|
1305
|
+
post_code: trimAddr(shipping_from.ship_to_post_code) || null,
|
|
1306
|
+
country_code: trimAddr(shipping_from.ship_to_country_region_code) || "",
|
|
1294
1307
|
phone: shipping_from.ship_to_phone_no || null,
|
|
1295
1308
|
created_at: (typeof shipping_from.system_created_at === 'string' && shipping_from.system_created_at) || undefined,
|
|
1296
1309
|
};
|
|
@@ -1313,14 +1326,14 @@ function transformMasterOrder(payload) {
|
|
|
1313
1326
|
if (c.no || payload.customer_no)
|
|
1314
1327
|
mapped.bc_customer_id = String(c.no || payload.customer_no);
|
|
1315
1328
|
const buildAddr = (src) => src ? {
|
|
1316
|
-
first_name: src.bill_to_first_name || src.ship_to_first_name ||
|
|
1317
|
-
last_name: src.bill_to_surname || src.ship_to_surname ||
|
|
1318
|
-
address1: (src.bill_to_address || src.ship_to_address || ""
|
|
1319
|
-
address2: (src.bill_to_address_2 || src.ship_to_address_2 || null
|
|
1320
|
-
city: (src.bill_to_city || src.ship_to_city ||
|
|
1321
|
-
post_code: (src.bill_to_post_code || src.ship_to_post_code || null
|
|
1322
|
-
country_code: (src.bill_to_country_region_code || src.ship_to_country_region_code || ""
|
|
1323
|
-
phone: (src.sell_to_phone_no || src.ship_to_phone_no || null
|
|
1329
|
+
first_name: trimAddr(src.bill_to_first_name || src.ship_to_first_name) || null,
|
|
1330
|
+
last_name: trimAddr(src.bill_to_surname || src.ship_to_surname) || null,
|
|
1331
|
+
address1: trimAddr(src.bill_to_address || src.ship_to_address) || "",
|
|
1332
|
+
address2: trimAddr(src.bill_to_address_2 || src.ship_to_address_2) || null,
|
|
1333
|
+
city: trimAddr(src.bill_to_city || src.ship_to_city) || null,
|
|
1334
|
+
post_code: trimAddr(src.bill_to_post_code || src.ship_to_post_code) || null,
|
|
1335
|
+
country_code: trimAddr(src.bill_to_country_region_code || src.ship_to_country_region_code) || "",
|
|
1336
|
+
phone: trimAddr(src.sell_to_phone_no || src.ship_to_phone_no) || null,
|
|
1324
1337
|
created_at: (typeof src.system_created_at === 'string' && src.system_created_at) || undefined,
|
|
1325
1338
|
} : null;
|
|
1326
1339
|
const custBilling = buildAddr(billing_from);
|