From 7239698a211a2ba7abb2afec9e323b9686d824b9 Mon Sep 17 00:00:00 2001 From: Allan Carr Date: Thu, 2 Oct 2025 15:49:31 -0700 Subject: [PATCH] IO-3389 Parts Scanning with Part # Update Signed-off-by: Allan Carr --- server/parts-scan/parts-scan.js | 41 ++++++++++++++++++++++----------- 1 file changed, 27 insertions(+), 14 deletions(-) diff --git a/server/parts-scan/parts-scan.js b/server/parts-scan/parts-scan.js index 6822bded6..79eda54d6 100644 --- a/server/parts-scan/parts-scan.js +++ b/server/parts-scan/parts-scan.js @@ -82,22 +82,35 @@ exports.partsScan = async function (req, res) { criticalIds.add(jobline.id); } if (update_field && update_value) { - const result = await client.setHeaders({ Authorization: BearerToken }).request(queries.UPDATE_JOB_LINE, { - lineId: jobline.id, - line: { [update_field]: update_value, manual_line: true } - }); - - const auditResult = await client - .setHeaders({ Authorization: BearerToken }) - .request(queries.INSERT_AUDIT_TRAIL, { - auditObj: { - bodyshopid: data.jobs_by_pk.bodyshop.id, - jobid, - operation: `Jobline (#${jobline.line_no} ${jobline.line_desc}/${jobline.id}) ${update_field} updated from ${jobline[update_field]} to ${update_value}. Lined marked as manual line.`, - type: "partscanupdate", - useremail: req.user.email + let actualUpdateField = update_field; + if (update_field === "part_number") { + // Determine which part number field to update based on the match + if (!jobline.oem_partno) { + actualUpdateField = "oem_partno"; + } else { + if (regex) { + actualUpdateField = regex.test(jobline.oem_partno || "") ? "oem_partno" : "alt_partno"; + } else { + actualUpdateField = jobline.oem_partno === value ? "oem_partno" : "alt_partno"; } + } + } + if (actualUpdateField) { + await client.setHeaders({ Authorization: BearerToken }).request(queries.UPDATE_JOB_LINE, { + lineId: jobline.id, + line: { [actualUpdateField]: update_value, manual_line: true } }); + } + + await client.setHeaders({ Authorization: BearerToken }).request(queries.INSERT_AUDIT_TRAIL, { + auditObj: { + bodyshopid: data.jobs_by_pk.bodyshop.id, + jobid, + operation: `Jobline (#${jobline.line_no} ${jobline.line_desc}/${jobline.id}) ${update_field} updated from ${jobline[update_field]} to ${update_value}. Lined marked as manual line.`, + type: "partscanupdate", + useremail: req.user.email + } + }); } //break; // No need to evaluate further rules for this jobline