feature/IO-3357-Reynolds-and-Reynolds-DMS-API-Integration - Enhance logging
This commit is contained in:
@@ -1,16 +1,15 @@
|
||||
const { buildRRRepairOrderPayload } = require("./rr-job-helpers");
|
||||
const { buildClientAndOpts } = require("./rr-lookup");
|
||||
const { ensureRRServiceVehicle } = require("./rr-service-vehicles");
|
||||
const RRLogger = require("./rr-logger");
|
||||
const CreateRRLogEvent = require("./rr-logger-event");
|
||||
|
||||
/**
|
||||
* Export a job to Reynolds & Reynolds as a Repair Order (create or update).
|
||||
* @param args
|
||||
* @returns {Promise<{success, data: *, roStatus: *, statusBlocks, xml: *, parsed: any, customerNo: string, svId: null, roNo: *}>}
|
||||
* @returns {Promise<{success, data: *, roStatus: *, statusBlocks,customerNo: string, svId: null, roNo: *}>}
|
||||
*/
|
||||
const exportJobToRR = async (args) => {
|
||||
const { bodyshop, job, advisorNo, selectedCustomer, existing, socket } = args || {};
|
||||
const log = RRLogger(socket, { ns: "rr-export" });
|
||||
|
||||
if (!bodyshop) throw new Error("exportJobToRR: bodyshop is required");
|
||||
if (!job) throw new Error("exportJobToRR: job is required");
|
||||
@@ -48,9 +47,9 @@ const exportJobToRR = async (args) => {
|
||||
socket
|
||||
});
|
||||
svId = svRes?.svId || null;
|
||||
log("info", "RR service vehicle ensured", { created: svRes?.created, svId });
|
||||
CreateRRLogEvent(socket, "INFO", "RR service vehicle ensured", { created: svRes?.created, svId });
|
||||
} catch (e) {
|
||||
log("warn", "RR ensure service vehicle failed; continuing", { error: e?.message });
|
||||
CreateRRLogEvent(socket, "WARN", "RR ensure service vehicle failed; continuing", { error: e?.message });
|
||||
}
|
||||
}
|
||||
|
||||
@@ -64,23 +63,25 @@ const exportJobToRR = async (args) => {
|
||||
// Canonical update key is "roNo" (prefer DMS RO number); accept fallbacks from "existing"
|
||||
const roNoForUpdate = existing?.roNo || existing?.dmsRoNo || existing?.dmsRepairOrderId || null;
|
||||
|
||||
const rrRes = roNoForUpdate
|
||||
const response = roNoForUpdate
|
||||
? await client.updateRepairOrder({ ...payload, roNo: String(roNoForUpdate) }, finalOpts) // ✅ use roNo on update
|
||||
: await client.createRepairOrder(payload, finalOpts);
|
||||
|
||||
const data = rrRes?.data || null;
|
||||
CreateRRLogEvent(socket, "INFO", `RR raw Repair Order ${roNoForUpdate ? "updated" : "created"}`, {
|
||||
response
|
||||
});
|
||||
|
||||
const data = response?.data || null;
|
||||
const roStatus = data?.roStatus || null;
|
||||
|
||||
// Extract canonical roNo you'll need for finalize step
|
||||
const roNo = data?.dmsRoNo ?? data?.outsdRoNo ?? roStatus?.dmsRoNo ?? null;
|
||||
|
||||
return {
|
||||
success: rrRes?.success === true || roStatus?.status === "Success",
|
||||
success: response?.success === true || roStatus?.status === "Success",
|
||||
data,
|
||||
roStatus,
|
||||
statusBlocks: rrRes?.statusBlocks || [],
|
||||
xml: rrRes?.xml,
|
||||
parsed: rrRes?.parsed,
|
||||
statusBlocks: response?.statusBlocks || [],
|
||||
customerNo: String(selected),
|
||||
svId,
|
||||
roNo
|
||||
@@ -90,11 +91,10 @@ const exportJobToRR = async (args) => {
|
||||
/**
|
||||
* Finalize an RR Repair Order by sending finalUpdate: "Y".
|
||||
* @param args
|
||||
* @returns {Promise<{success, data: *, roStatus: *, statusBlocks, xml: *, parsed: any}>}
|
||||
* @returns {Promise<{success, data: *, roStatus: *, statusBlocks}>}
|
||||
*/
|
||||
const finalizeRRRepairOrder = async (args) => {
|
||||
const { bodyshop, job, advisorNo, customerNo, roNo, vin, socket } = args || {};
|
||||
const log = RRLogger(socket, { ns: "rr-finalize" });
|
||||
|
||||
if (!bodyshop) throw new Error("finalizeRRRepairOrder: bodyshop is required");
|
||||
if (!job) throw new Error("finalizeRRRepairOrder: job is required");
|
||||
@@ -142,7 +142,7 @@ const finalizeRRRepairOrder = async (args) => {
|
||||
estimate: { estimateType: "Final" }
|
||||
};
|
||||
|
||||
log("info", "RR finalize updateRepairOrder", {
|
||||
CreateRRLogEvent(socket, "INFO", "Finalizing RR Repair Order", {
|
||||
roNo: roNoToSend,
|
||||
outsdRoNo: String(externalRo),
|
||||
customerNo: String(customerNo),
|
||||
@@ -157,9 +157,7 @@ const finalizeRRRepairOrder = async (args) => {
|
||||
success: rrRes?.success === true || roStatus?.status === "Success",
|
||||
data,
|
||||
roStatus,
|
||||
statusBlocks: rrRes?.statusBlocks || [],
|
||||
xml: rrRes?.xml,
|
||||
parsed: rrRes?.parsed
|
||||
statusBlocks: rrRes?.statusBlocks || []
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user