From 5752f123ac6ed0bbf1f97af3834516f72ae56eb1 Mon Sep 17 00:00:00 2001 From: Allan Carr Date: Fri, 21 Jun 2024 15:32:55 -0700 Subject: [PATCH] IO-2820 Adjustment to Bottom Line Signed-off-by: Allan Carr --- server/job/job-totals-USA.js | 39 ++++++++++++++++++------------------ 1 file changed, 20 insertions(+), 19 deletions(-) diff --git a/server/job/job-totals-USA.js b/server/job/job-totals-USA.js index 9a11574c5..ed9441d9d 100644 --- a/server/job/job-totals-USA.js +++ b/server/job/job-totals-USA.js @@ -747,9 +747,7 @@ function CalculateTaxesTotals(job, otherTotals) { MAPA: Dinero(), MASH: Dinero(), TOW: Dinero(), - STOR: Dinero(), - - ADJ: Dinero() + STOR: Dinero() }; //For each line, determine if it's taxable, and if it is, add the line amount to the taxable amounts total. @@ -818,8 +816,6 @@ function CalculateTaxesTotals(job, otherTotals) { amount: Math.round(stlStorage.t_amt * 100) }); - if (job.adjustment_bottom_line) taxableAmounts.ADJ = Dinero({ amount: Math.round(job.adjustment_bottom_line * 100) }); - const pfp = job.parts_tax_rates; //For any profile level markups/discounts, add them in now as well. @@ -907,26 +903,31 @@ function CalculateTaxesTotals(job, otherTotals) { ); } } - } else if (key === "ADJ") { - for (let tyCounter = 1; tyCounter <= 5; tyCounter++) { - if (IsTrueOrYes(pfp.PAT ? pfp.PAT[`prt_tx_in${tyCounter}`] : pfp.PAN[`prt_tx_in${tyCounter}`])) { - //This amount is taxable for this type. - taxableAmountsByTier[`ty${tyCounter}Tax`] = taxableAmountsByTier[`ty${tyCounter}Tax`].add( - taxableAmounts[key] - ); - } - } } } catch (error) { console.error("Key with issue", key); } }); - Object.keys(taxableAmountsByTier).forEach((taxTierKey) => { - if (taxableAmountsByTier[taxTierKey].lessThan(Dinero({ amount: 0 }))) { - taxableAmountsByTier[taxTierKey] = Dinero({ amount: 0 }); - } - }); + if (job.adjustment_bottom_line) { + const subtotal_before_adjustment = subtotal.add(Dinero({ amount: Math.round(job.adjustment_bottom_line * -100) })); + const percent_of_adjustment = + Math.round( + subtotal_before_adjustment.toUnit() / + (job.adjustment_bottom_line > 0 ? job.adjustment_bottom_line : job.adjustment_bottom_line * -1) + ) / 100; + + Object.keys(taxableAmountsByTier).forEach((taxTierKey) => { + taxable_adjustment = taxableAmountsByTier[taxTierKey].multiply(percent_of_adjustment); + console.log("🚀 ~ taxableAmountsByTier ~ taxable_adjustment:", taxable_adjustment) + if (job.adjustment_bottom_line > 0) { + taxableAmountsByTier[taxTierKey] = taxableAmountsByTier[taxTierKey].add(taxable_adjustment); + } else { + taxableAmountsByTier[taxTierKey] = taxableAmountsByTier[taxTierKey].subtract(taxable_adjustment); + } + }); + } + const remainingTaxableAmounts = taxableAmountsByTier; console.log("*** Taxable Amounts by Tier***"); console.table(JSON.parse(JSON.stringify(taxableAmountsByTier)));