diff --git a/server/accounting/qb-receivables-lines.js b/server/accounting/qb-receivables-lines.js index 593b5bc2e..bb8fa8259 100644 --- a/server/accounting/qb-receivables-lines.js +++ b/server/accounting/qb-receivables-lines.js @@ -71,7 +71,7 @@ exports.default = function ({ bodyshop, jobs_by_pk, qbo = false, items, taxCodes { local: false, federal: InstanceManager({ imex: true, rome: false }), - state: checkStateTax(jobline, jobs_by_pk, responsibilityCenters.defaults.profits, jobline.profitcenter_part) + state: checkStateTax(jobline, jobs_by_pk) }, bodyshop.md_responsibility_centers.sales_tax_codes ); @@ -870,28 +870,18 @@ exports.createMultiQbPayerLines = function ({ bodyshop, jobs_by_pk, qbo = false, return InvoiceLineAdd; }; -function checkStateTax(jobline, jobs_by_pk, defaultsProfits, profitCenter) { - //Find out CIECA Code based on profitcenter_part to determine if state tax applies or not. - const cieca_code = Object.keys(defaultsProfits).find( - (key) => defaultsProfits[key].toLowerCase() === profitCenter.toLowerCase() - ); - //Check Labor Tax Rate - if (cieca_code.startsWith("LA")) { - if (jobs_by_pk.tax_lbr_rt === 0) { - return false; - } else return true; - } +function checkStateTax(jobline, jobs_by_pk) { + const isPaintOrShopMat = jobline.db_ref === "936008" || jobline.db_ref === "936007"; - //Check Material Tax Rate - if (cieca_code === "MAPA" || cieca_code === "MASH") { - if (cieca_code === "MAPA") { + if (isPaintOrShopMat) { + if (jobline.db_ref === "936008") { if (jobs_by_pk.tax_paint_mat_rt === 0) { return false; } else { return true; } } - if (cieca_code === "MASH") { + if (jobline.db_ref === "936007") { if (jobs_by_pk.tax_shop_mat_rt === 0) { return false; } else { @@ -900,38 +890,49 @@ function checkStateTax(jobline, jobs_by_pk, defaultsProfits, profitCenter) { } } - //Check that line is a part type - if (cieca_code.startsWith("PA")) { - //Check if jobline is taxable - if (jobline.tax_part === false) { + const isAdditionalCost = + (jobline.lbr_op === "OP13" || (jobline.db_ref && jobline.db_ref.startsWith("9360"))) && !isPaintOrShopMat; + + if (!jobline.part_type && isAdditionalCost) { + if (jobs_by_pk.tax_lbr_rt === 0) { return false; } else { - //Check Tax rate for Sublet - if (cieca_code === "PAS" || cieca_code === "PASL") { + return true; + } + } + + if ( + jobline.db_ref === "900511" || + jobline.db_ref === "900510" || + (jobline.mod_lb_hrs === 0 && jobline.act_price > 0 && jobline.lbr_op === "OP14") + ) + return true; //Extending IO-1375 as a part of IO-2023 + + if (jobline.tax_part === false) { + return false; + } else { + if (jobline.part_type) { + if (jobline.part_type === "PAS" || jobline.part_type === "PASL") { if (jobs_by_pk.tax_sub_rt === 0) { return false; } else { return true; } } - //Extending IO-1375 as a part of IO-2023 - else if ( - jobline.db_ref === "900511" || - jobline.db_ref === "900510" || - (jobline.mod_lb_hrs === 0 && jobline.act_price > 0 && jobline.lbr_op === "OP14") + + if ( + jobs_by_pk.parts_tax_rates[`${jobline.part_type.toUpperCase()}`].prt_tax_in === false || + jobs_by_pk.parts_tax_rates[`${jobline.part_type.toUpperCase()}`].prt_tax_rt === 0 ) { + return false; + } else { return true; } - // Line is to be sent to QBO as Parts - else { - if ( - jobs_by_pk.parts_tax_rates[`${cieca_code}`].prt_tax_in === false || - jobs_by_pk.parts_tax_rates[`${cieca_code}`].prt_tax_rt === 0 - ) { - return false; - } else { - return true; - } + } else { + if (jobs_by_pk.tax_lbr_rt === 0) { + return false; + } else { + return true; } } }