IO-2793 Better tax handling
Signed-off-by: Allan Carr <allan.carr@thinkimex.com>
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user