From d50e845ba0d766191da3ade5579e18a722227f34 Mon Sep 17 00:00:00 2001 From: Patrick Fic <> Date: Wed, 10 Nov 2021 08:18:29 -0800 Subject: [PATCH] IO-117 PBS WIP --- server/accounting/pbs/pbs-job-export.js | 100 ++++++++++++++++++++---- 1 file changed, 84 insertions(+), 16 deletions(-) diff --git a/server/accounting/pbs/pbs-job-export.js b/server/accounting/pbs/pbs-job-export.js index 260cf575c..a29d728c2 100644 --- a/server/accounting/pbs/pbs-job-export.js +++ b/server/accounting/pbs/pbs-job-export.js @@ -30,6 +30,9 @@ exports.default = async function (socket, { txEnvelope, jobid }) { const JobData = await QueryJobData(socket, jobid); socket.JobData = JobData; + socket.DmsVeh = await QueryVehicleFromDms(socket); + + socket.DmsCustList = await QueryCustomersFromDms(socket); //Upsert the contact information as per Wafaa's Email. CdkBase.createLogEvent( socket, @@ -42,7 +45,7 @@ exports.default = async function (socket, { txEnvelope, jobid }) { "DEBUG", `Upserting vehicle information to DMS for ${socket.JobData.v_vin}` ); - // await UpsertVehicleData(socket, ownerRef.ReferenceId); + await UpsertVehicleData(socket, ownerRef.ReferenceId); CdkBase.createLogEvent(socket, "DEBUG", `Inserting account data.`); await InsertAccountPostingData(socket); CdkBase.createLogEvent(socket, "DEBUG", `Marking job as exported.`); @@ -60,7 +63,11 @@ exports.default = async function (socket, { txEnvelope, jobid }) { async function CheckForErrors(socket, response) { if (response.WasSuccessful) { - return; + CdkBase.createLogEvent( + socket, + "DEBUG", + `Succesful response from DMS:. ${response.Message}` + ); } else { CdkBase.createLogEvent( socket, @@ -89,6 +96,81 @@ async function QueryJobData(socket, jobid) { return result.jobs_by_pk; } +async function QueryVehicleFromDms(socket) { + try { + const { data: VehicleGetResponse } = await axios.post( + PBS_ENDPOINTS.VehicleGet, + { + SerialNumber: socket.JobData.bodyshop.pbs_serialnumber, + // VehicleId: "00000000000000000000000000000000", + // Year: "String", + // Make: "String", + // Model: "String", + // Trim: "String", + // ModelNumber: "String", + // StockNumber: "String", + VIN: socket.JobData.v_vin, + // LicenseNumber: "String", + // Lot: "String", + // Status: "String", + // StatusList: ["String"], + // OwnerRef: "00000000000000000000000000000000", + // ModifiedSince: "0001-01-01T00:00:00.0000000Z", + // ModifiedUntil: "0001-01-01T00:00:00.0000000Z", + // LastSaleSince: "0001-01-01T00:00:00.0000000Z", + // VehicleIDList: ["00000000000000000000000000000000"], + // IncludeInactive: false, + // IncludeBuildVehicles: false, + // ShortVIN: "String", + }, + { auth: PBS_CREDENTIALS } + ); + CheckForErrors(socket, VehicleGetResponse); + return VehicleGetResponse; + } catch (error) { + CdkBase.createLogEvent( + socket, + "ERROR", + `Error in QueryVehicleFromDms - ${error}` + ); + throw new Error(error); + } +} +async function QueryCustomersFromDms(socket) { + try { + const { data: CustomerGetResponse } = await axios.post( + PBS_ENDPOINTS.ContactGet, + { + SerialNumber: socket.JobData.bodyshop.pbs_serialnumber, + //ContactId: "00000000000000000000000000000000", + ContactCode: socket.JobData.owner.accountingid, + FirstName: socket.JobData.ownr_fn, + LastName: socket.JobData.ownr_ln, + PhoneNumber: socket.JobData.ownr_ph1, + // EmailAddress: "String", + // ModifiedSince: "0001-01-01T00:00:00.0000000Z", + // ModifiedUntil: "0001-01-01T00:00:00.0000000Z", + // ContactIdList: ["00000000000000000000000000000000"], + // IncludeInactive: false, + // PayableAccount: "String", + // ReceivableAccount: "String", + // DriverLicense: "String", + // ZipCode: "String", + }, + { auth: PBS_CREDENTIALS } + ); + CheckForErrors(socket, CustomerGetResponse); + return CustomerGetResponse; + } catch (error) { + CdkBase.createLogEvent( + socket, + "ERROR", + `Error in QueryCustomersFromDms - ${error}` + ); + throw new Error(error); + } +} + async function UpsertContactData(socket) { try { const { data: ContactChangeResponse } = await axios.post( @@ -393,20 +475,6 @@ async function InsertAccountPostingData(socket) { } }); - console.log( - JSON.stringify({ - SerialNumber: socket.JobData.bodyshop.pbs_serialnumber, - Posting: { - Reference: socket.JobData.ro_number, - JournalCode: socket.txEnvelope.journal, - TransactionDate: moment(socket.JobData.date_invoiced).toISOString(), //"0001-01-01T00:00:00.0000000Z", - Description: socket.txEnvelope.story, - //AdditionalInfo: "String", - Source: "ImEX Online", - Lines: wips, - }, - }) - ); const { data: AccountPostingChange } = await axios.post( PBS_ENDPOINTS.AccountingPostingChange, {