IO-854 Resolve missing profit centers in job costing
This commit is contained in:
@@ -30,6 +30,7 @@ export function JobsCloseAutoAllocate({ bodyshop, joblines, form, disabled }) {
|
|||||||
} else {
|
} else {
|
||||||
ret.profitcenter_labor = null;
|
ret.profitcenter_labor = null;
|
||||||
}
|
}
|
||||||
|
//Verify that this is also manually updated in server/job-costing
|
||||||
if (!jl.part_type && !jl.mod_lbr_ty) {
|
if (!jl.part_type && !jl.mod_lbr_ty) {
|
||||||
const lineDesc = jl.line_desc.toLowerCase();
|
const lineDesc = jl.line_desc.toLowerCase();
|
||||||
if (lineDesc.includes("shop materials")) {
|
if (lineDesc.includes("shop materials")) {
|
||||||
|
|||||||
@@ -272,6 +272,36 @@ function GenerateCostingData(job) {
|
|||||||
partsAmount
|
partsAmount
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//To deal with additional costs.
|
||||||
|
if (!val.part_type && !val.mod_lbr_ty) {
|
||||||
|
//Does it already have a defined profit center?
|
||||||
|
//If so, use it, otherwise try to use the same from the auto-allocate logic in IO app jobs-close-auto-allocate.
|
||||||
|
const partsProfitCenter =
|
||||||
|
val.profitcenter_part ||
|
||||||
|
getAdditionalCostCenter(val, defaultProfits) ||
|
||||||
|
"?";
|
||||||
|
|
||||||
|
if (partsProfitCenter === "?") {
|
||||||
|
console.log("Unknown type", val.part_type);
|
||||||
|
} else {
|
||||||
|
const partsAmount = Dinero({
|
||||||
|
amount: Math.round((val.act_price || 0) * 100),
|
||||||
|
}).multiply(val.part_qty || 1);
|
||||||
|
console.log(
|
||||||
|
`*** partsAmount`,
|
||||||
|
val.line_desc,
|
||||||
|
partsProfitCenter,
|
||||||
|
partsAmount.toJSON()
|
||||||
|
);
|
||||||
|
if (!acc.parts[partsProfitCenter])
|
||||||
|
acc.parts[partsProfitCenter] = Dinero();
|
||||||
|
acc.parts[partsProfitCenter] = acc.parts[partsProfitCenter].add(
|
||||||
|
partsAmount
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return acc;
|
return acc;
|
||||||
},
|
},
|
||||||
{ parts: {}, labor: {} }
|
{ parts: {}, labor: {} }
|
||||||
@@ -411,3 +441,23 @@ const formatGpPercent = (gppercent) => {
|
|||||||
|
|
||||||
return gppercentFormatted;
|
return gppercentFormatted;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
//Verify that this stays in line with jobs-close-auto-allocate logic from the application.
|
||||||
|
const getAdditionalCostCenter = (jl, profitCenters) => {
|
||||||
|
console.log("Checking additional cost center", jl.line_desc);
|
||||||
|
if (!jl.part_type && !jl.mod_lbr_ty) {
|
||||||
|
const lineDesc = jl.line_desc.toLowerCase();
|
||||||
|
//This logic is covered prior and assigned based on the labor type of the lines
|
||||||
|
// if (lineDesc.includes("shop materials")) {
|
||||||
|
// return profitCenters["MASH"];
|
||||||
|
// } else if (lineDesc.includes("paint/materials")) {
|
||||||
|
// return profitCenters["MAPA"];
|
||||||
|
// } else
|
||||||
|
//End covered logic
|
||||||
|
if (lineDesc.includes("ats amount")) {
|
||||||
|
return profitCenters["ATS"];
|
||||||
|
} else {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user