foodbot-cart-calculations 1.0.5 → 1.0.6-dev.1
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/calculations.js +63 -12
- package/functions/pointsCalculation.js +201 -89
- package/functions/promotionCalculation.js +382 -283
- package/functions/taxCalculation.js +58 -38
- package/index.js +793 -69
- package/package.json +1 -1
|
@@ -76,7 +76,15 @@ function calculateTax2(cart, texSettings, taxType) {
|
|
|
76
76
|
if (itemIndex == cart.item_details.length - 1) {
|
|
77
77
|
cart.cart_total_with_tax = parseFloat(cart.cartTotal) + parseFloat(cart.tax_amount);
|
|
78
78
|
cart.cart_total_with_tax = parseFloat(cart.cart_total_with_tax).toFixed(2);
|
|
79
|
-
|
|
79
|
+
|
|
80
|
+
await new Promise((resolve) => {
|
|
81
|
+
setTimeout(async () => {
|
|
82
|
+
resolve(); // Resolve after processing all items
|
|
83
|
+
}, 300)});
|
|
84
|
+
|
|
85
|
+
// setTimeout(() => {
|
|
86
|
+
resolve(cart);
|
|
87
|
+
// }, 500);
|
|
80
88
|
}
|
|
81
89
|
|
|
82
90
|
});
|
|
@@ -238,7 +246,7 @@ function calculatePackageItemTax(cart, itemIndex, element, tax_settings, afterDi
|
|
|
238
246
|
}
|
|
239
247
|
});
|
|
240
248
|
|
|
241
|
-
element.tax_amount = (parseFloat(element.tax_amount) + parseFloat(
|
|
249
|
+
element.tax_amount = (parseFloat(element.tax_amount) + parseFloat(element.package_items[packageItemIndex].tax_amount)).toFixed(6)
|
|
242
250
|
element.total_tax_amount = (parseFloat(element.total_tax_amount) + parseFloat(element.package_items[packageItemIndex].tax_amount)).toFixed(6)
|
|
243
251
|
})
|
|
244
252
|
if (packageItemIndex == element.package_items.length - 1) {
|
|
@@ -251,10 +259,15 @@ function calculatePackageItemTax(cart, itemIndex, element, tax_settings, afterDi
|
|
|
251
259
|
function calculateModiTax(cart, itemIndex, element, tax_settings, afterDicsount, taxType) {
|
|
252
260
|
return new Promise(async (resolve, reject) => {
|
|
253
261
|
if (element && element.item_modifiers && element.item_modifiers.length > 0) {
|
|
254
|
-
|
|
262
|
+
|
|
255
263
|
element.item_modifiers.forEach((modi, modiIndex) => {
|
|
264
|
+
let itemModiTotalTax = 0
|
|
256
265
|
let taxId = []
|
|
257
|
-
let iepsTax;
|
|
266
|
+
let iepsTax;
|
|
267
|
+
//code commented for test
|
|
268
|
+
|
|
269
|
+
//code gain commented for push
|
|
270
|
+
|
|
258
271
|
if (modi.is_tax_rate_same == 1) {
|
|
259
272
|
if (modi.linked_product && modi.linked_product.product_tax_id) {
|
|
260
273
|
taxId = modi.linked_product.product_tax_id
|
|
@@ -333,7 +346,7 @@ function calculateModiTax(cart, itemIndex, element, tax_settings, afterDicsount,
|
|
|
333
346
|
element.item_modifiers[modiIndex].tax_array = tax_array;
|
|
334
347
|
cart = await setTaxes(cart, JSON.parse(JSON.stringify(modiItemTaxArray)));
|
|
335
348
|
|
|
336
|
-
element.item_modifiers[modiIndex].tax_amount =
|
|
349
|
+
element.item_modifiers[modiIndex].tax_amount = parseFloat(element.item_modifiers[modiIndex].tax_amount) + parseFloat(taxAmount);
|
|
337
350
|
element.item_modifiers[modiIndex].tax_amount = parseFloat(element.item_modifiers[modiIndex].tax_amount).toFixed(6)
|
|
338
351
|
element.tax_amount_modifier = parseFloat(element.tax_amount_modifier) + parseFloat(taxAmount)
|
|
339
352
|
element.tax_amount_modifier = parseFloat(element.tax_amount_modifier).toFixed(6)
|
|
@@ -368,12 +381,13 @@ function calculatePackageModiTax(cart, itemIndex, element, tax_settings, afterDi
|
|
|
368
381
|
element.package_items.forEach((packageItem, packageItemIndex) => {
|
|
369
382
|
element.package_items[packageItemIndex].tax_amount_modifier = 0
|
|
370
383
|
if (packageItem.modifiers.length > 0) {
|
|
371
|
-
|
|
384
|
+
|
|
372
385
|
packageItem.modifiers.forEach((modi, modiIndex) => {
|
|
386
|
+
let itemModiTotalTax = 0;
|
|
373
387
|
let taxId = []
|
|
374
388
|
let iepsTax;
|
|
375
389
|
if (modi.is_tax_rate_same == 1) {
|
|
376
|
-
if (modi.linked_product && modi.linked_product.product_tax_id) {
|
|
390
|
+
if (modi.linked_product && modi.linked_product.product_tax_id && Array.isArray(modi.linked_product.product_tax_id)) {
|
|
377
391
|
taxId = modi.linked_product.product_tax_id
|
|
378
392
|
iepsTax = modi.linked_product.ieps_tax
|
|
379
393
|
} else {
|
|
@@ -451,7 +465,7 @@ function calculatePackageModiTax(cart, itemIndex, element, tax_settings, afterDi
|
|
|
451
465
|
element.package_items[packageItemIndex].modifiers[modiIndex].tax_array = tax_array;
|
|
452
466
|
cart = await setTaxes(cart, JSON.parse(JSON.stringify(modiItemTaxArray)))
|
|
453
467
|
|
|
454
|
-
element.package_items[packageItemIndex].modifiers[modiIndex].tax_amount = parseFloat(element.package_items[packageItemIndex].modifiers[modiIndex].tax_amount) + parseFloat(taxAmount)
|
|
468
|
+
element.package_items[packageItemIndex].modifiers[modiIndex].tax_amount = parseFloat(element.package_items[packageItemIndex].modifiers[modiIndex].tax_amount) + parseFloat(taxAmount);
|
|
455
469
|
element.package_items[packageItemIndex].tax_amount_modifier = (parseFloat(element.package_items[packageItemIndex].tax_amount_modifier) + parseFloat(taxAmount)).toFixed(6)
|
|
456
470
|
element.package_items[packageItemIndex].total_tax_amount = (parseFloat(element.package_items[packageItemIndex].total_tax_amount) + parseFloat(taxAmount)).toFixed(6)
|
|
457
471
|
element.tax_amount_modifier = (parseFloat(element.tax_amount_modifier) + parseFloat(taxAmount)).toFixed(6)
|
|
@@ -585,51 +599,57 @@ function isJson(str) {
|
|
|
585
599
|
return true;
|
|
586
600
|
}
|
|
587
601
|
|
|
588
|
-
async function getBeforeTaxPriceOfItem(taxes, price, taxType,
|
|
602
|
+
async function getBeforeTaxPriceOfItem(taxes, price, taxType, quantity) {
|
|
589
603
|
return new Promise((resolve, reject) => {
|
|
590
604
|
let beforeTax = +price;
|
|
591
605
|
let beforeTaxIeps = 0;
|
|
592
606
|
let taxRate = 0;
|
|
593
607
|
let taxAmount = 0;
|
|
594
608
|
let iepsTaxRate = 0;
|
|
595
|
-
let iepsTaxAmount
|
|
609
|
+
let iepsTaxAmount=0;
|
|
596
610
|
let iepsTaxRateQuantity = 0;
|
|
611
|
+
let totalTax = 0;
|
|
612
|
+
let firstAmount = beforeTax ;
|
|
597
613
|
|
|
598
614
|
taxes.forEach((tax) => {
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
615
|
+
if (!tax.ieps_type) {
|
|
616
|
+
taxRate += parseFloat(tax.tax_rate);
|
|
617
|
+
totalTax += parseFloat(tax.tax_rate);
|
|
618
|
+
}
|
|
619
|
+
if (tax.ieps_type && tax.ieps_type == 1) {
|
|
620
|
+
totalTax += parseFloat(tax.tax_rate);
|
|
621
|
+
}
|
|
602
622
|
});
|
|
603
623
|
|
|
604
624
|
// Calculate taxAmount based on tax type 1 = exclusive and 2 = inclusive
|
|
605
|
-
if (taxType ==
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
beforeTax = (beforeTax / (1 + taxRate / 100)).toFixed(6);
|
|
609
|
-
taxAmount = (price - beforeTax).toFixed(6);
|
|
610
|
-
}
|
|
625
|
+
if (taxType == 2) {
|
|
626
|
+
beforeTax = (beforeTax / (1 + totalTax / 100)).toFixed(2);
|
|
627
|
+
}
|
|
611
628
|
|
|
612
629
|
// ieps tax type = 1 precentage 2 absoulte
|
|
613
630
|
taxes.forEach((tax) => {
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
631
|
+
if (tax.ieps_type && tax.ieps_type == 2) {
|
|
632
|
+
// Adjust beforeTax based on tax type
|
|
633
|
+
if (beforeTax >= tax.tax_rate) {
|
|
634
|
+
beforeTaxIeps = taxType == 1 ? beforeTax : beforeTax - tax.tax_rate * quantity;
|
|
635
|
+
beforeTaxIeps = parseFloat(beforeTaxIeps).toFixed(2)
|
|
636
|
+
iepsTaxRate = tax.tax_rate * quantity / beforeTaxIeps
|
|
637
|
+
iepsTaxRateQuantity = tax.tax_rate * quantity
|
|
638
|
+
iepsTaxRate = parseFloat(iepsTaxRate)
|
|
639
|
+
iepsTaxAmount = (tax.tax_rate * quantity).toFixed(2);
|
|
640
|
+
}
|
|
641
|
+
}
|
|
642
|
+
else if (tax.ieps_type && tax.ieps_type == 1) {
|
|
643
|
+
beforeTaxIeps = beforeTax ;
|
|
644
|
+
iepsTaxRate = tax.tax_rate
|
|
645
|
+
iepsTaxAmount = (firstAmount - beforeTax - taxAmount).toFixed(2);
|
|
646
|
+
}
|
|
647
|
+
else{
|
|
648
|
+
taxAmount = ((beforeTax * tax.tax_rate) / 100).toFixed(2);
|
|
649
|
+
}
|
|
650
|
+
});
|
|
651
|
+
resolve({ beforeTax, taxAmount, beforeTaxIeps, iepsTaxRate,iepsTaxAmount,iepsTaxRateQuantity });
|
|
652
|
+
});
|
|
633
653
|
}
|
|
634
654
|
function setTaxes(cart, ele) {
|
|
635
655
|
let index = -1;
|