@shushed/helpers 0.0.223-redis-fix-20251222110941 → 0.0.224-main-20251222140743
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/src-public/bcOrder.js +104 -42
- package/dist/cjs/src-public/env.js +3 -6
- package/package.json +1 -1
|
@@ -400,18 +400,15 @@ function transformMasterOrder(payload) {
|
|
|
400
400
|
const desc = String(line?.description || '').trim().toLowerCase();
|
|
401
401
|
return desc === 'delivery';
|
|
402
402
|
};
|
|
403
|
-
let invoicesNetMinor = 0;
|
|
404
403
|
let invoicesGrossMinor = 0;
|
|
405
404
|
(payload.invoices || []).forEach((inv) => {
|
|
406
405
|
(inv.invoice_lines || []).forEach((line) => {
|
|
407
406
|
if (!isDeliveryItem(line)) {
|
|
408
|
-
invoicesNetMinor += toMinorUnits(Number(line?.amount || line?.amount_excl_vat || 0));
|
|
409
407
|
invoicesGrossMinor += toMinorUnits(Number(line?.amount_including_vat || line?.amount_incl_vat || 0));
|
|
410
408
|
}
|
|
411
409
|
});
|
|
412
410
|
});
|
|
413
411
|
if (invoicesGrossMinor === 0 && (payload.invoices || []).length > 0) {
|
|
414
|
-
invoicesNetMinor = toMinorUnits((payload.invoices || []).reduce((acc, inv) => acc + (inv.amount_excl_vat || 0), 0));
|
|
415
412
|
invoicesGrossMinor = toMinorUnits((payload.invoices || []).reduce((acc, inv) => acc + (inv.amount_incl_vat || 0), 0));
|
|
416
413
|
}
|
|
417
414
|
if (invoicesGrossMinor === 0 && invoicedLineNos.size > 0 && sale0?.sale_lines) {
|
|
@@ -423,10 +420,8 @@ function transformMasterOrder(payload) {
|
|
|
423
420
|
const lineNo = Number(l?.line_no || -1);
|
|
424
421
|
return invoicedLineNos.has(lineNo);
|
|
425
422
|
});
|
|
426
|
-
invoicesNetMinor = toMinorUnits(invoicedSaleLines.reduce((acc, l) => acc + (Number(l?.amount || 0)), 0));
|
|
427
423
|
invoicesGrossMinor = toMinorUnits(invoicedSaleLines.reduce((acc, l) => acc + (Number(l?.amount_including_vat || 0)), 0));
|
|
428
424
|
}
|
|
429
|
-
let nonInvSalesNetMinor = 0;
|
|
430
425
|
let nonInvSalesGrossMinor = 0;
|
|
431
426
|
if (sale0?.sale_lines && sale0.sale_lines.length > 0) {
|
|
432
427
|
const allSaleLines = (sale0.sale_lines || []).filter((l) => {
|
|
@@ -436,26 +431,20 @@ function transformMasterOrder(payload) {
|
|
|
436
431
|
return false;
|
|
437
432
|
return true;
|
|
438
433
|
});
|
|
439
|
-
const totalSaleNetMinor = toMinorUnits(allSaleLines.reduce((acc, l) => acc + (Number(l?.amount || 0)), 0));
|
|
440
434
|
const totalSaleGrossMinor = toMinorUnits(allSaleLines.reduce((acc, l) => acc + (Number(l?.amount_including_vat || 0)), 0));
|
|
441
435
|
if (invoicesGrossMinor > 0) {
|
|
442
|
-
nonInvSalesNetMinor = Math.max(0, totalSaleNetMinor - invoicesNetMinor);
|
|
443
436
|
nonInvSalesGrossMinor = Math.max(0, totalSaleGrossMinor - invoicesGrossMinor);
|
|
444
437
|
}
|
|
445
438
|
else {
|
|
446
|
-
nonInvSalesNetMinor = totalSaleNetMinor;
|
|
447
439
|
nonInvSalesGrossMinor = totalSaleGrossMinor;
|
|
448
440
|
}
|
|
449
441
|
}
|
|
450
442
|
else if (sale0 && (sale0.amount_excl_vat || sale0.amount_incl_vat)) {
|
|
451
|
-
const saleNetMinor = toMinorUnits(sale0.amount_excl_vat || 0);
|
|
452
443
|
const saleGrossMinor = toMinorUnits(sale0.amount_incl_vat || 0);
|
|
453
444
|
if (invoicesGrossMinor > 0) {
|
|
454
|
-
nonInvSalesNetMinor = Math.max(0, saleNetMinor - invoicesNetMinor);
|
|
455
445
|
nonInvSalesGrossMinor = Math.max(0, saleGrossMinor - invoicesGrossMinor);
|
|
456
446
|
}
|
|
457
447
|
else {
|
|
458
|
-
nonInvSalesNetMinor = saleNetMinor;
|
|
459
448
|
nonInvSalesGrossMinor = saleGrossMinor;
|
|
460
449
|
}
|
|
461
450
|
}
|
|
@@ -468,32 +457,57 @@ function transformMasterOrder(payload) {
|
|
|
468
457
|
const lineNo = Number(l?.line_no || -1);
|
|
469
458
|
return !invoicedLineNos.has(lineNo);
|
|
470
459
|
});
|
|
471
|
-
nonInvSalesNetMinor = toMinorUnits(nonInvoicedSales.reduce((acc, l) => acc + (Number(l?.amount || 0)), 0));
|
|
472
460
|
nonInvSalesGrossMinor = toMinorUnits(nonInvoicedSales.reduce((acc, l) => acc + (Number(l?.amount_including_vat || 0)), 0));
|
|
473
461
|
}
|
|
474
|
-
const returnsNetMinor = toMinorUnits((payload.credit_memos || []).reduce((acc, cm) => acc + (cm.amount_excl_vat || 0), 0));
|
|
475
|
-
const returnsGrossMinor = toMinorUnits((payload.credit_memos || []).reduce((acc, cm) => acc + (cm.amount_incl_vat || 0), 0));
|
|
476
|
-
const totalNetMinor = invoicesNetMinor + nonInvSalesNetMinor;
|
|
477
462
|
const totalGrossMinor = invoicesGrossMinor + nonInvSalesGrossMinor;
|
|
478
|
-
const
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
463
|
+
const invoicesNetMinorWithDelivery = toMinorUnits((payload.invoices || []).reduce((acc, inv) => acc + (inv.amount_excl_vat || 0), 0));
|
|
464
|
+
const invoicesGrossMinorWithDelivery = toMinorUnits((payload.invoices || []).reduce((acc, inv) => acc + (inv.amount_incl_vat || 0), 0));
|
|
465
|
+
let nonInvSalesNetMinorWithDelivery = 0;
|
|
466
|
+
let nonInvSalesGrossMinorWithDelivery = 0;
|
|
467
|
+
if (sale0?.sale_lines && sale0.sale_lines.length > 0) {
|
|
468
|
+
const allSaleLinesWithDelivery = (sale0.sale_lines || []).filter((l) => {
|
|
469
|
+
if (String(l?.type || '').toLowerCase() !== 'item')
|
|
470
|
+
return false;
|
|
471
|
+
return true;
|
|
472
|
+
});
|
|
473
|
+
const totalSaleNetMinorWithDelivery = toMinorUnits(allSaleLinesWithDelivery.reduce((acc, l) => acc + (Number(l?.amount || 0)), 0));
|
|
474
|
+
const totalSaleGrossMinorWithDelivery = toMinorUnits(allSaleLinesWithDelivery.reduce((acc, l) => acc + (Number(l?.amount_including_vat || 0)), 0));
|
|
475
|
+
if (invoicesGrossMinorWithDelivery > 0) {
|
|
476
|
+
nonInvSalesNetMinorWithDelivery = Math.max(0, totalSaleNetMinorWithDelivery - invoicesNetMinorWithDelivery);
|
|
477
|
+
nonInvSalesGrossMinorWithDelivery = Math.max(0, totalSaleGrossMinorWithDelivery - invoicesGrossMinorWithDelivery);
|
|
492
478
|
}
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
479
|
+
else {
|
|
480
|
+
nonInvSalesNetMinorWithDelivery = totalSaleNetMinorWithDelivery;
|
|
481
|
+
nonInvSalesGrossMinorWithDelivery = totalSaleGrossMinorWithDelivery;
|
|
482
|
+
}
|
|
483
|
+
}
|
|
484
|
+
else if (sale0 && (sale0.amount_excl_vat || sale0.amount_incl_vat)) {
|
|
485
|
+
const saleNetMinor = toMinorUnits(sale0.amount_excl_vat || 0);
|
|
486
|
+
const saleGrossMinor = toMinorUnits(sale0.amount_incl_vat || 0);
|
|
487
|
+
if (invoicesGrossMinorWithDelivery > 0) {
|
|
488
|
+
nonInvSalesNetMinorWithDelivery = Math.max(0, saleNetMinor - invoicesNetMinorWithDelivery);
|
|
489
|
+
nonInvSalesGrossMinorWithDelivery = Math.max(0, saleGrossMinor - invoicesGrossMinorWithDelivery);
|
|
490
|
+
}
|
|
491
|
+
else {
|
|
492
|
+
nonInvSalesNetMinorWithDelivery = saleNetMinor;
|
|
493
|
+
nonInvSalesGrossMinorWithDelivery = saleGrossMinor;
|
|
494
|
+
}
|
|
495
|
+
}
|
|
496
|
+
else {
|
|
497
|
+
const nonInvoicedSalesWithDelivery = (sale0?.sale_lines || []).filter((l) => {
|
|
498
|
+
if (String(l?.type || '').toLowerCase() !== 'item')
|
|
499
|
+
return false;
|
|
500
|
+
const lineNo = Number(l?.line_no || -1);
|
|
501
|
+
return !invoicedLineNos.has(lineNo);
|
|
502
|
+
});
|
|
503
|
+
nonInvSalesNetMinorWithDelivery = toMinorUnits(nonInvoicedSalesWithDelivery.reduce((acc, l) => acc + (Number(l?.amount || 0)), 0));
|
|
504
|
+
nonInvSalesGrossMinorWithDelivery = toMinorUnits(nonInvoicedSalesWithDelivery.reduce((acc, l) => acc + (Number(l?.amount_including_vat || 0)), 0));
|
|
505
|
+
}
|
|
506
|
+
const totalNetMinorWithDelivery = invoicesNetMinorWithDelivery + nonInvSalesNetMinorWithDelivery;
|
|
507
|
+
const totalGrossMinorWithDelivery = invoicesGrossMinorWithDelivery + nonInvSalesGrossMinorWithDelivery;
|
|
508
|
+
const total = {
|
|
509
|
+
amount_net: moneyFromMinor(totalNetMinorWithDelivery),
|
|
510
|
+
amount_gross: moneyFromMinor(totalGrossMinorWithDelivery),
|
|
497
511
|
discount_amount_net: money(0),
|
|
498
512
|
discount_amount_gross: money(0),
|
|
499
513
|
discount_amount_percent: 0,
|
|
@@ -603,7 +617,7 @@ function transformMasterOrder(payload) {
|
|
|
603
617
|
const merchReturnGrossFromCreditMemos = (payload.credit_memos || []).reduce((acc, cm) => {
|
|
604
618
|
const lines = cm?.credit_memo_lines || [];
|
|
605
619
|
let hasQualifying = false;
|
|
606
|
-
const
|
|
620
|
+
const sumGross = lines.reduce((s, l) => {
|
|
607
621
|
const itemNo = String(l?.item_no || l?.no || "");
|
|
608
622
|
const desc = String(l?.description || "");
|
|
609
623
|
const looksProduct = itemNo.includes('-') || desc.includes(' - ');
|
|
@@ -616,24 +630,36 @@ function transformMasterOrder(payload) {
|
|
|
616
630
|
}
|
|
617
631
|
return s;
|
|
618
632
|
}, 0);
|
|
633
|
+
const sumNet = lines.reduce((s, l) => {
|
|
634
|
+
const itemNo = String(l?.item_no || l?.no || "");
|
|
635
|
+
const desc = String(l?.description || "");
|
|
636
|
+
const looksProduct = itemNo.includes('-') || desc.includes(' - ');
|
|
637
|
+
const typeStr = String(l?.type || "").toLowerCase();
|
|
638
|
+
const isItemish = typeStr.includes('item') || looksProduct;
|
|
639
|
+
const isRefund = itemNo.toUpperCase() === 'REFUND';
|
|
640
|
+
if ((l?.quantity || 0) > 0 && isItemish && !isRefund && !isDeliveryItem(l)) {
|
|
641
|
+
return s + (l?.amount || l?.amount_excl_vat || 0);
|
|
642
|
+
}
|
|
643
|
+
return s;
|
|
644
|
+
}, 0);
|
|
619
645
|
if (!hasQualifying)
|
|
620
646
|
return acc;
|
|
621
647
|
if (cm?.amount_incl_vat != null && cm.amount_incl_vat > 0) {
|
|
622
|
-
return acc + cm.amount_incl_vat;
|
|
648
|
+
return { gross: acc.gross + cm.amount_incl_vat, net: acc.net + (cm.amount_excl_vat || 0) };
|
|
623
649
|
}
|
|
624
|
-
return acc +
|
|
625
|
-
}, 0);
|
|
650
|
+
return { gross: acc.gross + sumGross, net: acc.net + sumNet };
|
|
651
|
+
}, { gross: 0, net: 0 });
|
|
626
652
|
const merchReturnGrossFromReturnSales = (payload.sales || []).reduce((acc, sale) => {
|
|
627
653
|
const docTypeRaw = String(sale?.document_type || sale?.documentType || "");
|
|
628
654
|
const isReturnOrder = docTypeRaw.toLowerCase().includes('return');
|
|
629
655
|
if (!isReturnOrder)
|
|
630
656
|
return acc;
|
|
631
657
|
if (sale?.amount_incl_vat != null && sale.amount_incl_vat > 0) {
|
|
632
|
-
return acc + sale.amount_incl_vat;
|
|
658
|
+
return { gross: acc.gross + sale.amount_incl_vat, net: acc.net + (sale.amount_excl_vat || sale.amount || 0) };
|
|
633
659
|
}
|
|
634
660
|
const lines = sale?.sale_lines || [];
|
|
635
661
|
let hasQualifying = false;
|
|
636
|
-
const
|
|
662
|
+
const sumGross = lines.reduce((s, l) => {
|
|
637
663
|
const itemNo = String(l?.item_no || l?.no || "");
|
|
638
664
|
const desc = String(l?.description || "");
|
|
639
665
|
const looksProduct = itemNo.includes('-') || desc.includes(' - ');
|
|
@@ -646,10 +672,46 @@ function transformMasterOrder(payload) {
|
|
|
646
672
|
}
|
|
647
673
|
return s;
|
|
648
674
|
}, 0);
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
675
|
+
const sumNet = lines.reduce((s, l) => {
|
|
676
|
+
const itemNo = String(l?.item_no || l?.no || "");
|
|
677
|
+
const desc = String(l?.description || "");
|
|
678
|
+
const looksProduct = itemNo.includes('-') || desc.includes(' - ');
|
|
679
|
+
const typeStr = String(l?.type || "").toLowerCase();
|
|
680
|
+
const isItemish = typeStr.includes('item') || looksProduct;
|
|
681
|
+
const isRefund = itemNo.toUpperCase() === 'REFUND';
|
|
682
|
+
if ((l?.quantity || 0) > 0 && isItemish && !isRefund && !isDeliveryItem(l)) {
|
|
683
|
+
return s + (l?.amount || l?.amount_excl_vat || 0);
|
|
684
|
+
}
|
|
685
|
+
return s;
|
|
686
|
+
}, 0);
|
|
687
|
+
if (sumGross > 0) {
|
|
688
|
+
return { gross: acc.gross + sumGross, net: acc.net + sumNet };
|
|
689
|
+
}
|
|
690
|
+
if (hasQualifying) {
|
|
691
|
+
return { gross: acc.gross + (sale?.amount_incl_vat || sale?.amount_including_vat || 0), net: acc.net + (sale?.amount_excl_vat || sale?.amount || 0) };
|
|
692
|
+
}
|
|
693
|
+
return acc;
|
|
694
|
+
}, { gross: 0, net: 0 });
|
|
695
|
+
const merchReturnGross = merchReturnGrossFromCreditMemos.gross + merchReturnGrossFromReturnSales.gross;
|
|
652
696
|
const hasMerchReturn = merchReturnGross > 0;
|
|
697
|
+
const returnsNetMinor = toMinorUnits((payload.credit_memos || []).reduce((acc, cm) => acc + (cm.amount_excl_vat || 0), 0));
|
|
698
|
+
const returnsGrossMinor = toMinorUnits((payload.credit_memos || []).reduce((acc, cm) => acc + (cm.amount_incl_vat || 0), 0));
|
|
699
|
+
const return_total = (returnsGrossMinor > 0)
|
|
700
|
+
? {
|
|
701
|
+
amount_net: moneyFromMinor(returnsNetMinor),
|
|
702
|
+
amount_gross: moneyFromMinor(returnsGrossMinor),
|
|
703
|
+
discount_amount_net: money(0),
|
|
704
|
+
discount_amount_gross: money(0),
|
|
705
|
+
discount_amount_percent: 0,
|
|
706
|
+
}
|
|
707
|
+
: undefined;
|
|
708
|
+
const net_total = {
|
|
709
|
+
amount_net: moneyFromMinor(Math.max(0, totalNetMinorWithDelivery - returnsNetMinor)),
|
|
710
|
+
amount_gross: moneyFromMinor(Math.max(0, totalGrossMinorWithDelivery - returnsGrossMinor)),
|
|
711
|
+
discount_amount_net: money(0),
|
|
712
|
+
discount_amount_gross: money(0),
|
|
713
|
+
discount_amount_percent: 0,
|
|
714
|
+
};
|
|
653
715
|
const totalOrderGrossMinor = totalGrossMinor;
|
|
654
716
|
const sourceLineMap = new Map();
|
|
655
717
|
sourceLines.forEach((line) => {
|
|
@@ -155,15 +155,12 @@ class EnvEngine extends runtime_1.default {
|
|
|
155
155
|
Object.assign(this.globalInMemoryRef[level], Object.fromEntries(Object.entries(objEncrypted).map(([k, v]) => [k, `${expirseAt}/${now}/${v}`])));
|
|
156
156
|
}
|
|
157
157
|
if (!options.ignoreStores?.includes('redis')) {
|
|
158
|
-
|
|
158
|
+
(async () => {
|
|
159
159
|
const redisClient = await (0, redisClient_1.getConnectedRedisClient)(this.systemEnvName).catch(() => null);
|
|
160
160
|
if (redisClient) {
|
|
161
|
-
|
|
161
|
+
Promise.allSettled(Object.entries(objEncrypted).map(([k, v]) => redisClient.set(k, `${expirseAt}/${now}/${v}`, { PX: expirseAt - Date.now() })));
|
|
162
162
|
}
|
|
163
|
-
}
|
|
164
|
-
catch {
|
|
165
|
-
this.logging.error(`Failed to set the ${envs.map(x => x.name).join(', ')} in Redis`);
|
|
166
|
-
}
|
|
163
|
+
})().catch(() => this.logging.error(`Failed to set the ${envs.map(x => x.name).join(', ')} in Redis`));
|
|
167
164
|
}
|
|
168
165
|
}
|
|
169
166
|
else {
|