IO-2023 Resolve hours paid as part for MPI.

This commit is contained in:
Patrick Fic
2022-08-16 16:18:50 -07:00
parent b744720efe
commit fe6e85e993
3 changed files with 41 additions and 34 deletions

View File

@@ -82,7 +82,11 @@ exports.default = function ({
state: state:
jobs_by_pk.state_tax_rate === 0 jobs_by_pk.state_tax_rate === 0
? false ? false
: jobline.db_ref === "900511" || jobline.db_ref === "900510" : jobline.db_ref === "900511" ||
jobline.db_ref === "900510" ||
(jobline.mod_lb_hrs === 0 && //Extending IO-1375 as a part of IO-2023
jobline.act_price > 0 &&
jobline.lbr_op === "OP14")
? true ? true
: jobline.tax_part, : jobline.tax_part,
}, },

View File

@@ -211,6 +211,7 @@ query QUERY_JOBS_FOR_RECEIVABLES_EXPORT($ids: [uuid!]!) {
tax_part tax_part
line_ref line_ref
unq_seq unq_seq
lbr_op
} }
} }
bodyshops(where: {associations: {active: {_eq: true}}}) { bodyshops(where: {associations: {active: {_eq: true}}}) {

View File

@@ -309,7 +309,8 @@ function GenerateCostingData(job) {
job.bodyshop.md_responsibility_centers.defaults.profits; job.bodyshop.md_responsibility_centers.defaults.profits;
const allCenters = _.union( const allCenters = _.union(
job.bodyshop.md_responsibility_centers.profits.map((p) => p.name), job.bodyshop.md_responsibility_centers.profits.map((p) => p.name),
job.bodyshop.md_responsibility_centers.costs.map((p) => p.name) job.bodyshop.md_responsibility_centers.costs.map((p) => p.name),
["Unknown"]
); );
const materialsHours = { mapaHrs: 0, mashHrs: 0 }; const materialsHours = { mapaHrs: 0, mashHrs: 0 };
@@ -331,9 +332,11 @@ function GenerateCostingData(job) {
} }
if (val.mod_lbr_ty) { if (val.mod_lbr_ty) {
const laborProfitCenter = const laborProfitCenter =
val.profitcenter_labor || defaultProfits[val.mod_lbr_ty] || "?"; val.profitcenter_labor ||
defaultProfits[val.mod_lbr_ty] ||
"Unknown";
if (laborProfitCenter === "?") if (laborProfitCenter === "Unknown")
console.log("Unknown type", val.line_desc, val.mod_lbr_ty); console.log("Unknown type", val.line_desc, val.mod_lbr_ty);
const rateName = `rate_${(val.mod_lbr_ty || "").toLowerCase()}`; const rateName = `rate_${(val.mod_lbr_ty || "").toLowerCase()}`;
@@ -374,9 +377,9 @@ function GenerateCostingData(job) {
val.part_type !== "PASL" val.part_type !== "PASL"
) { ) {
const partsProfitCenter = const partsProfitCenter =
val.profitcenter_part || defaultProfits[val.part_type] || "?"; val.profitcenter_part || defaultProfits[val.part_type] || "Unknown";
if (partsProfitCenter === "?") if (partsProfitCenter === "Unknown")
console.log("Unknown type", val.line_desc, val.part_type); console.log("Unknown type", val.line_desc, val.part_type);
if (!partsProfitCenter) if (!partsProfitCenter)
@@ -414,9 +417,9 @@ function GenerateCostingData(job) {
(val.part_type === "PAS" || val.part_type === "PASL") (val.part_type === "PAS" || val.part_type === "PASL")
) { ) {
const partsProfitCenter = const partsProfitCenter =
val.profitcenter_part || defaultProfits[val.part_type] || "?"; val.profitcenter_part || defaultProfits[val.part_type] || "Unknown";
if (partsProfitCenter === "?") if (partsProfitCenter === "Unknown")
console.log("Unknown type", val.line_desc, val.part_type); console.log("Unknown type", val.line_desc, val.part_type);
if (!partsProfitCenter) if (!partsProfitCenter)
@@ -431,17 +434,17 @@ function GenerateCostingData(job) {
.multiply(val.part_qty || 1) .multiply(val.part_qty || 1)
.add( .add(
((val.prt_dsmk_m && val.prt_dsmk_m !== 0) || ((val.prt_dsmk_m && val.prt_dsmk_m !== 0) ||
(val.prt_dsmk_p && val.prt_dsmk_p !== 0)) && (val.prt_dsmk_p && val.prt_dsmk_p !== 0)) &&
DiscountNotAlreadyCounted(val, job.joblines) DiscountNotAlreadyCounted(val, job.joblines)
? val.prt_dsmk_m ? val.prt_dsmk_m
? Dinero({ amount: Math.round(val.prt_dsmk_m * 100) }) ? Dinero({ amount: Math.round(val.prt_dsmk_m * 100) })
: Dinero({ : Dinero({
amount: Math.round(val.act_price * 100), amount: Math.round(val.act_price * 100),
}) })
.multiply(val.part_qty || 0) .multiply(val.part_qty || 0)
.percentage(Math.abs(val.prt_dsmk_p || 0)) .percentage(Math.abs(val.prt_dsmk_p || 0))
.multiply(val.prt_dsmk_p > 0 ? 1 : -1) .multiply(val.prt_dsmk_p > 0 ? 1 : -1)
: Dinero() : Dinero()
); );
if (!acc.sublet[partsProfitCenter]) if (!acc.sublet[partsProfitCenter])
acc.sublet[partsProfitCenter] = Dinero(); acc.sublet[partsProfitCenter] = Dinero();
@@ -456,17 +459,17 @@ function GenerateCostingData(job) {
const partsProfitCenter = const partsProfitCenter =
val.profitcenter_part || val.profitcenter_part ||
getAdditionalCostCenter(val, defaultProfits) || getAdditionalCostCenter(val, defaultProfits) ||
"?"; "Unknown";
if (partsProfitCenter === "?") { if (partsProfitCenter === "Unknown") {
console.log("Unknown type", val.line_desc, val.part_type); console.log("Unknown type", val.line_desc, val.part_type);
} else { }
const partsAmount = Dinero({ const partsAmount = Dinero({
amount: Math.round((val.act_price || 0) * 100), amount: Math.round((val.act_price || 0) * 100),
}) })
.multiply(val.part_qty || 1) .multiply(val.part_qty || 1)
.add( .add(
((val.prt_dsmk_m && val.prt_dsmk_m !== 0) || ((val.prt_dsmk_m && val.prt_dsmk_m !== 0) ||
(val.prt_dsmk_p && val.prt_dsmk_p !== 0)) && (val.prt_dsmk_p && val.prt_dsmk_p !== 0)) &&
DiscountNotAlreadyCounted(val, job.joblines) DiscountNotAlreadyCounted(val, job.joblines)
? val.prt_dsmk_m ? val.prt_dsmk_m
@@ -478,13 +481,12 @@ function GenerateCostingData(job) {
.percentage(Math.abs(val.prt_dsmk_p || 0)) .percentage(Math.abs(val.prt_dsmk_p || 0))
.multiply(val.prt_dsmk_p > 0 ? 1 : -1) .multiply(val.prt_dsmk_p > 0 ? 1 : -1)
: Dinero() : Dinero()
); );
if (!acc.additional[partsProfitCenter]) if (!acc.additional[partsProfitCenter])
acc.additional[partsProfitCenter] = Dinero(); acc.additional[partsProfitCenter] = Dinero();
acc.additional[partsProfitCenter] = acc.additional[partsProfitCenter] =
acc.additional[partsProfitCenter].add(partsAmount); acc.additional[partsProfitCenter].add(partsAmount);
}
} }
return acc; return acc;