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.
@@ -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
- resolve(cart);
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(itemTotalTax)).toFixed(6)
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
- let itemModiTotalTax = 0
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 = parseFloat(element.item_modifiers[modiIndex].tax_amount) + parseFloat(taxAmount);
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
- let itemModiTotalTax = 0
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, qty) {
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 = 0;
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
- if (!tax.ieps_type) {
600
- taxRate += parseFloat(tax.tax_rate);
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 == 1) {
606
- taxAmount = ((beforeTax * taxRate) / 100).toFixed(6);
607
- } else {
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
- if (tax.ieps_type && tax.ieps_type == 2) {
615
- // Adjust beforeTax based on tax type
616
- if (beforeTax >= tax.tax_rate) {
617
- beforeTaxIeps = taxType == 1 ? beforeTax : (beforeTax - (tax.tax_rate * qty));
618
- beforeTaxIeps = (beforeTaxIeps).toFixed(6);
619
- iepsTaxRate = (tax.tax_rate * qty) / beforeTaxIeps;
620
- iepsTaxRate = parseFloat(iepsTaxRate).toFixed(6);
621
- iepsTaxAmount = (tax.tax_rate * qty).toFixed(6);
622
- iepsTaxRateQuantity = iepsTaxAmount;
623
- }
624
- } else if (tax.ieps_type && tax.ieps_type == 1) {
625
- beforeTaxIeps = taxType == 1 ? (beforeTax).toFixed(6) : (beforeTax / (1 + tax.tax_rate / 100)).toFixed(6);
626
- iepsTaxRate = tax.tax_rate;
627
- iepsTaxAmount = beforeTax - beforeTaxIeps;
628
- iepsTaxAmount = (iepsTaxAmount).toFixed(6)
629
- }
630
- });
631
- resolve({ beforeTax, taxAmount, beforeTaxIeps, iepsTaxRate, iepsTaxAmount, iepsTaxRateQuantity });
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;