IO-2023 Resolve hours paid as part for MPI.
This commit is contained in:
@@ -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,
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -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}}}) {
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
Reference in New Issue
Block a user