diff --git a/client/src/components/job-bills-total/job-bills-total.component.jsx b/client/src/components/job-bills-total/job-bills-total.component.jsx index 011a9b80f..ef9e0da35 100644 --- a/client/src/components/job-bills-total/job-bills-total.component.jsx +++ b/client/src/components/job-bills-total/job-bills-total.component.jsx @@ -64,9 +64,9 @@ export default function JobBillsTotalComponent({ }) ); - const totalPartsSublet = Dinero(totals.parts.parts.total).add( - Dinero(totals.parts.sublets.total) - ); + const totalPartsSublet = Dinero(totals.parts.parts.total) + .add(Dinero(totals.parts.sublets.total)) + .add(Dinero(totals.additional.towing)); const discrepancy = totalPartsSublet.subtract(billTotals); diff --git a/client/src/components/job-reconciliation-modal/job-reconciliation-modal.component.jsx b/client/src/components/job-reconciliation-modal/job-reconciliation-modal.component.jsx index f817a4e73..cde3abc6c 100644 --- a/client/src/components/job-reconciliation-modal/job-reconciliation-modal.component.jsx +++ b/client/src/components/job-reconciliation-modal/job-reconciliation-modal.component.jsx @@ -18,7 +18,11 @@ export default function JobReconciliationModalComponent({ job, bills }) { .flat() || []; const jobLineData = job.joblines.filter( - (j) => j.part_type !== null && j.part_type !== "PAE" + (j) => + (j.part_type !== null && j.part_type !== "PAE") || + (j.line_desc && + j.line_desc.toLowerCase().includes("towing") && + j.lbr_op === "OP13") ); return ( diff --git a/server/job/job-totals.js b/server/job/job-totals.js index 31dc995a6..f6ef1fda6 100644 --- a/server/job/job-totals.js +++ b/server/job/job-totals.js @@ -418,21 +418,27 @@ function CalculateAdditional(job) { pvrt: null, total: null, }; + ret.towing = Dinero({ + amount: Math.round((job.towing_payable || 0) * 100), + }); ret.additionalCosts = job.joblines .filter((jl) => !jl.removed && IsAdditionalCost(jl)) .reduce((acc, val) => { const lineValue = Dinero({ amount: Math.round((val.act_price || 0) * 100), }).multiply(val.part_qty || 1); - ret.additionalCostItems.push({ key: val.line_desc, total: lineValue }); - return acc.add(lineValue); + + if (val.line_desc.toLowerCase().includes("towing")) { + ret.towing = lineValue; + return acc; + } else { + ret.additionalCostItems.push({ key: val.line_desc, total: lineValue }); + return acc.add(lineValue); + } }, Dinero()); ret.adjustments = Dinero({ amount: Math.round((job.adjustment_bottom_line || 0) * 100), }); - ret.towing = Dinero({ - amount: Math.round((job.towing_payable || 0) * 100), - }); ret.storage = Dinero({ amount: Math.round((job.storage_payable || 0) * 100), });