Merged in release/2022-03-11 (pull request #420)

Release/2022 03 11
This commit is contained in:
Patrick Fic
2022-03-11 18:47:44 +00:00
10 changed files with 86 additions and 13 deletions

View File

@@ -34752,6 +34752,27 @@
</concept_node> </concept_node>
</children> </children>
</folder_node> </folder_node>
<concept_node>
<name>mechanical_authorization</name>
<definition_loaded>false</definition_loaded>
<description></description>
<comment></comment>
<default_text></default_text>
<translations>
<translation>
<language>en-US</language>
<approved>false</approved>
</translation>
<translation>
<language>es-MX</language>
<approved>false</approved>
</translation>
<translation>
<language>fr-CA</language>
<approved>false</approved>
</translation>
</translations>
</concept_node>
<concept_node> <concept_node>
<name>mpi_animal_checklist</name> <name>mpi_animal_checklist</name>
<definition_loaded>false</definition_loaded> <definition_loaded>false</definition_loaded>
@@ -43353,6 +43374,27 @@
</translation> </translation>
</translations> </translations>
</concept_node> </concept_node>
<concept_node>
<name>novehinfo</name>
<definition_loaded>false</definition_loaded>
<description></description>
<comment></comment>
<default_text></default_text>
<translations>
<translation>
<language>en-US</language>
<approved>false</approved>
</translation>
<translation>
<language>es-MX</language>
<approved>false</approved>
</translation>
<translation>
<language>fr-CA</language>
<approved>false</approved>
</translation>
</translations>
</concept_node>
<concept_node> <concept_node>
<name>relatedjobs</name> <name>relatedjobs</name>
<definition_loaded>false</definition_loaded> <definition_loaded>false</definition_loaded>

View File

@@ -64,9 +64,9 @@ export default function JobBillsTotalComponent({
}) })
); );
const totalPartsSublet = Dinero(totals.parts.parts.total).add( const totalPartsSublet = Dinero(totals.parts.parts.total)
Dinero(totals.parts.sublets.total) .add(Dinero(totals.parts.sublets.total))
); .add(Dinero(totals.additional.towing));
const discrepancy = totalPartsSublet.subtract(billTotals); const discrepancy = totalPartsSublet.subtract(billTotals);

View File

@@ -462,7 +462,7 @@ export function JobLinesComponent({
}; };
}} }}
rowSelection={{ rowSelection={{
selectedRowKeys: selectedLines.map((item) => item.id), selectedRowKeys: selectedLines.map((item) => item && item.id),
onSelectAll: (selected, selectedRows, changeRows) => { onSelectAll: (selected, selectedRows, changeRows) => {
setSelectedLines(selectedRows); setSelectedLines(selectedRows);
}, },

View File

@@ -18,7 +18,11 @@ export default function JobReconciliationModalComponent({ job, bills }) {
.flat() || []; .flat() || [];
const jobLineData = job.joblines.filter( const jobLineData = job.joblines.filter(
(j) => j.part_type !== null && j.part_type !== "PAE" (j) =>
(j.part_type !== null && j.part_type !== "PAE") ||
(j.line_desc &&
j.line_desc.toLowerCase().includes("towing") &&
j.lbr_op === "OP13")
); );
return ( return (

View File

@@ -60,6 +60,13 @@ export function JobsDetailHeader({ job, bodyshop, disabled }) {
); );
}, [job.status, bodyshop.md_ro_statuses.post_production_statuses]); }, [job.status, bodyshop.md_ro_statuses.post_production_statuses]);
const vehicleTitle = `${job.v_model_yr || ""} ${job.v_color || ""}
${job.v_make_desc || ""}
${job.v_model_desc || ""}`.trim();
console.log(
"🚀 ~ file: jobs-detail-header.component.jsx ~ line 64 ~ vehicleTitle",
vehicleTitle.length
);
return ( return (
<Row gutter={[16, 16]} style={{ alignItems: "stretch" }}> <Row gutter={[16, 16]} style={{ alignItems: "stretch" }}>
<Col {...colSpan}> <Col {...colSpan}>
@@ -188,9 +195,9 @@ export function JobsDetailHeader({ job, bodyshop, disabled }) {
: job.vehicle && `/manage/vehicles/${job.vehicle.id}` : job.vehicle && `/manage/vehicles/${job.vehicle.id}`
} }
> >
{`${job.v_model_yr || ""} ${job.v_color || ""} {vehicleTitle.length > 0
${job.v_make_desc || ""} ? vehicleTitle
${job.v_model_desc || ""}`} : t("vehicles.labels.novehinfo")}
</Link> </Link>
) : ( ) : (
<span></span> <span></span>

View File

@@ -2068,6 +2068,7 @@
"labels": "Labels", "labels": "Labels",
"position": "Starting Position" "position": "Starting Position"
}, },
"mechanical_authorization": "Mechanical Authorization",
"mpi_animal_checklist": "MPI - Animal Checklist", "mpi_animal_checklist": "MPI - Animal Checklist",
"mpi_eglass_auth": "MPI - eGlass Auth", "mpi_eglass_auth": "MPI - eGlass Auth",
"mpi_final_acct_sheet": "MPI - Final Accounting Sheet", "mpi_final_acct_sheet": "MPI - Final Accounting Sheet",
@@ -2578,6 +2579,7 @@
}, },
"labels": { "labels": {
"fromvehicle": "Historical Vehicle Record", "fromvehicle": "Historical Vehicle Record",
"novehinfo": "No Vehicle Information",
"relatedjobs": "Related Jobs", "relatedjobs": "Related Jobs",
"updatevehicle": "Update Vehicle Information" "updatevehicle": "Update Vehicle Information"
}, },

View File

@@ -2068,6 +2068,7 @@
"labels": "", "labels": "",
"position": "" "position": ""
}, },
"mechanical_authorization": "",
"mpi_animal_checklist": "", "mpi_animal_checklist": "",
"mpi_eglass_auth": "", "mpi_eglass_auth": "",
"mpi_final_acct_sheet": "", "mpi_final_acct_sheet": "",
@@ -2578,6 +2579,7 @@
}, },
"labels": { "labels": {
"fromvehicle": "", "fromvehicle": "",
"novehinfo": "",
"relatedjobs": "", "relatedjobs": "",
"updatevehicle": "" "updatevehicle": ""
}, },

View File

@@ -2068,6 +2068,7 @@
"labels": "", "labels": "",
"position": "" "position": ""
}, },
"mechanical_authorization": "",
"mpi_animal_checklist": "", "mpi_animal_checklist": "",
"mpi_eglass_auth": "", "mpi_eglass_auth": "",
"mpi_final_acct_sheet": "", "mpi_final_acct_sheet": "",
@@ -2578,6 +2579,7 @@
}, },
"labels": { "labels": {
"fromvehicle": "", "fromvehicle": "",
"novehinfo": "",
"relatedjobs": "", "relatedjobs": "",
"updatevehicle": "" "updatevehicle": ""
}, },

View File

@@ -37,6 +37,14 @@ export const TemplateList = (type, context) => {
disabled: false, disabled: false,
group: "authorization", group: "authorization",
}, },
mechanical_authorization: {
title: i18n.t("printcenter.jobs.mechanical_authorization"),
description: "Diagnostic Authorization",
subject: i18n.t("printcenter.jobs.mechanical_authorization"),
key: "mechanical_authorization",
disabled: false,
group: "authorization",
},
appointment_reminder: { appointment_reminder: {
title: i18n.t("printcenter.jobs.appointment_reminder"), title: i18n.t("printcenter.jobs.appointment_reminder"),
description: "All Jobs Notes", description: "All Jobs Notes",

View File

@@ -418,21 +418,27 @@ function CalculateAdditional(job) {
pvrt: null, pvrt: null,
total: null, total: null,
}; };
ret.towing = Dinero({
amount: Math.round((job.towing_payable || 0) * 100),
});
ret.additionalCosts = job.joblines ret.additionalCosts = job.joblines
.filter((jl) => !jl.removed && IsAdditionalCost(jl)) .filter((jl) => !jl.removed && IsAdditionalCost(jl))
.reduce((acc, val) => { .reduce((acc, val) => {
const lineValue = Dinero({ const lineValue = 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);
ret.additionalCostItems.push({ key: val.line_desc, total: lineValue });
return acc.add(lineValue); if (val.line_desc.toLowerCase().includes("towing")) {
ret.towing = lineValue;
return acc;
} else {
ret.additionalCostItems.push({ key: val.line_desc, total: lineValue });
return acc.add(lineValue);
}
}, Dinero()); }, Dinero());
ret.adjustments = Dinero({ ret.adjustments = Dinero({
amount: Math.round((job.adjustment_bottom_line || 0) * 100), amount: Math.round((job.adjustment_bottom_line || 0) * 100),
}); });
ret.towing = Dinero({
amount: Math.round((job.towing_payable || 0) * 100),
});
ret.storage = Dinero({ ret.storage = Dinero({
amount: Math.round((job.storage_payable || 0) * 100), amount: Math.round((job.storage_payable || 0) * 100),
}); });