852 lines
24 KiB
JavaScript
852 lines
24 KiB
JavaScript
const path = require("path");
|
|
require("dotenv").config({
|
|
path: path.resolve(
|
|
process.cwd(),
|
|
`.env.${process.env.NODE_ENV || "development"}`
|
|
),
|
|
});
|
|
const GraphQLClient = require("graphql-request").GraphQLClient;
|
|
const soap = require("soap");
|
|
const queries = require("../graphql-client/queries");
|
|
const CdkBase = require("../web-sockets/web-socket");
|
|
const CdkWsdl = require("./cdk-wsdl").default;
|
|
const { CDK_CREDENTIALS, CheckCdkResponseForError } = require("./cdk-wsdl");
|
|
const moment = require("moment");
|
|
|
|
exports.default = async function (socket, { txEnvelope, jobid }) {
|
|
socket.logEvents = [];
|
|
socket.recordid = jobid;
|
|
socket.txEnvelope = txEnvelope;
|
|
try {
|
|
CdkBase.createLogEvent(
|
|
socket,
|
|
"DEBUG",
|
|
`Received Job export request for id ${jobid}`
|
|
);
|
|
|
|
const JobData = await QueryJobData(socket, jobid);
|
|
socket.JobData = JobData;
|
|
const DealerId = JobData.bodyshop.cdk_dealerid;
|
|
CdkBase.createLogEvent(
|
|
socket,
|
|
"DEBUG",
|
|
`Dealer ID detected: ${JSON.stringify(DealerId)}`
|
|
);
|
|
|
|
CdkBase.createLogEvent(
|
|
socket,
|
|
"DEBUG",
|
|
`{1} Begin Calculate DMS Vehicle ID using VIN: ${JobData.v_vin}`
|
|
);
|
|
socket.DMSVid = await CalculateDmsVid(socket, JobData);
|
|
|
|
if (socket.DMSVid.newId === "N") {
|
|
CdkBase.createLogEvent(
|
|
socket,
|
|
"DEBUG",
|
|
`{2.1} Querying the Vehicle using the DMSVid: ${socket.DMSVid}`
|
|
);
|
|
socket.DMSVeh = await QueryDmsVehicleById(socket, JobData, socket.DMSVid);
|
|
|
|
const DMSVehCustomer =
|
|
socket.DMSVeh &&
|
|
socket.DMSVeh.owners.find((o) => o.id.assigningPartyId === "CURRENT");
|
|
|
|
CdkBase.createLogEvent(
|
|
socket,
|
|
"DEBUG",
|
|
`{2.2} Querying the Customer using the ID from DMSVeh: ${DMSVehCustomer.id.value}`
|
|
);
|
|
socket.DMSVehCustomer = await QueryDmsCustomerById(
|
|
socket,
|
|
JobData,
|
|
DMSVehCustomer.id.value
|
|
);
|
|
}
|
|
|
|
CdkBase.createLogEvent(
|
|
socket,
|
|
"DEBUG",
|
|
`{2.3} Querying the Customer using the name.`
|
|
);
|
|
|
|
socket.DMSCustList = await QueryDmsCustomerByName(socket, JobData);
|
|
|
|
socket.emit("cdk-select-customer", [
|
|
...(socket.DMSVehCustomer ? [socket.DMSVehCustomer] : []),
|
|
...socket.DMSCustList,
|
|
]);
|
|
} catch (error) {
|
|
CdkBase.createLogEvent(
|
|
socket,
|
|
"ERROR",
|
|
`Error encountered in CdkJobExport. ${error}`
|
|
);
|
|
} finally {
|
|
//Ensure we always insert logEvents
|
|
//GQL to insert logevents.
|
|
CdkBase.createLogEvent(
|
|
socket,
|
|
"DEBUG",
|
|
`Capturing log events to database.`
|
|
);
|
|
}
|
|
};
|
|
|
|
async function CdkSelectedCustomer(socket, selectedCustomerId) {
|
|
try {
|
|
if (selectedCustomerId) {
|
|
CdkBase.createLogEvent(
|
|
socket,
|
|
"DEBUG",
|
|
`{3.1} Querying the Customer using Customer ID: ${selectedCustomerId}`
|
|
);
|
|
socket.DMSCust = await QueryDmsCustomerById(
|
|
socket,
|
|
socket.JobData,
|
|
selectedCustomerId
|
|
);
|
|
} else {
|
|
CdkBase.createLogEvent(
|
|
socket,
|
|
"DEBUG",
|
|
`{3.2} Generating a new customer ID.`
|
|
);
|
|
const newCustomerId = await GenerateDmsCustomerNumber(socket);
|
|
CdkBase.createLogEvent(
|
|
socket,
|
|
"DEBUG",
|
|
`{3.3} Inserting new customer with ID: ${newCustomerId}`
|
|
);
|
|
socket.DMSCust = await InsertDmsCustomer(socket, newCustomerId);
|
|
}
|
|
|
|
if (socket.DMSVid.newId === "Y") {
|
|
CdkBase.createLogEvent(
|
|
socket,
|
|
"DEBUG",
|
|
`{4.1} Inserting new vehicle with ID: ID ${socket.DMSVid.vehiclesVehId}`
|
|
);
|
|
socket.DMSVeh = await InsertDmsVehicle(socket);
|
|
} else {
|
|
CdkBase.createLogEvent(
|
|
socket,
|
|
"DEBUG",
|
|
`{4.2} Querying Existing Vehicle using ID ${socket.DMSVid.vehiclesVehId}`
|
|
);
|
|
socket.DMSVeh = await QueryDmsVehicleById(
|
|
socket,
|
|
socket.JobData,
|
|
socket.DMSVid
|
|
);
|
|
CdkBase.createLogEvent(
|
|
socket,
|
|
"DEBUG",
|
|
`{4.3} Updating Existing Vehicle to associate to owner.`
|
|
);
|
|
socket.DMSVeh = await UpdateDmsVehicle(socket);
|
|
}
|
|
CdkBase.createLogEvent(
|
|
socket,
|
|
"DEBUG",
|
|
`{5}Updating Service Vehicle History.`
|
|
);
|
|
await InsertServiceVehicleHistory(socket);
|
|
} catch (error) {
|
|
CdkBase.createLogEvent(
|
|
socket,
|
|
"ERROR",
|
|
`Error encountered in CdkSelectedCustomer. ${error}`
|
|
);
|
|
} finally {
|
|
//Ensure we always insert logEvents
|
|
//GQL to insert logevents.
|
|
CdkBase.createLogEvent(
|
|
socket,
|
|
"DEBUG",
|
|
`Capturing log events to database.`
|
|
);
|
|
}
|
|
}
|
|
|
|
exports.CdkSelectedCustomer = CdkSelectedCustomer;
|
|
|
|
async function QueryJobData(socket, jobid) {
|
|
CdkBase.createLogEvent(socket, "DEBUG", `Querying job data for id ${jobid}`);
|
|
const client = new GraphQLClient(process.env.GRAPHQL_ENDPOINT, {});
|
|
const result = await client
|
|
.setHeaders({ Authorization: `Bearer ${socket.handshake.auth.token}` })
|
|
.request(queries.QUERY_JOBS_FOR_CDK_EXPORT, { id: jobid });
|
|
CdkBase.createLogEvent(
|
|
socket,
|
|
"TRACE",
|
|
`Job data query result ${JSON.stringify(result, null, 2)}`
|
|
);
|
|
return result.jobs_by_pk;
|
|
}
|
|
|
|
async function CalculateDmsVid(socket, JobData) {
|
|
try {
|
|
const soapClientVehicleInsertUpdate = await soap.createClientAsync(
|
|
CdkWsdl.VehicleInsertUpdate
|
|
);
|
|
const soapResponseVehicleInsertUpdate =
|
|
await soapClientVehicleInsertUpdate.getVehIdsAsync({
|
|
arg0: CDK_CREDENTIALS,
|
|
arg1: { id: JobData.bodyshop.cdk_dealerid },
|
|
arg2: { VIN: JobData.v_vin },
|
|
});
|
|
|
|
const [result, rawResponse, , rawRequest] = soapResponseVehicleInsertUpdate;
|
|
CdkBase.createXmlEvent(
|
|
socket,
|
|
rawRequest,
|
|
`soapClientVehicleInsertUpdate.getVehIdsAsync request.`
|
|
);
|
|
|
|
CdkBase.createXmlEvent(
|
|
socket,
|
|
rawResponse,
|
|
`soapClientVehicleInsertUpdate.getVehIdsAsync response.`
|
|
);
|
|
|
|
CdkBase.createLogEvent(
|
|
socket,
|
|
"TRACE",
|
|
`soapClientVehicleInsertUpdate.getVehIdsAsync Result ${JSON.stringify(
|
|
result,
|
|
null,
|
|
2
|
|
)}`
|
|
);
|
|
CheckCdkResponseForError(socket, soapResponseVehicleInsertUpdate);
|
|
return result && result.return && result.return[0];
|
|
} catch (error) {
|
|
CdkBase.createXmlEvent(
|
|
socket,
|
|
error.request,
|
|
`soapClientVehicleInsertUpdate.getVehIdsAsync request.`,
|
|
true
|
|
);
|
|
|
|
CdkBase.createXmlEvent(
|
|
socket,
|
|
error.response && error.response.data,
|
|
`soapClientVehicleInsertUpdate.getVehIdsAsync response.`,
|
|
true
|
|
);
|
|
CdkBase.createLogEvent(
|
|
socket,
|
|
"ERROR",
|
|
`{1} Error in CalculateDmsVid - ${error}`
|
|
);
|
|
throw new Error(error);
|
|
}
|
|
}
|
|
|
|
async function QueryDmsVehicleById(socket, JobData, DMSVid) {
|
|
try {
|
|
const soapClientVehicleInsertUpdate = await soap.createClientAsync(
|
|
CdkWsdl.VehicleInsertUpdate
|
|
);
|
|
|
|
const soapResponseVehicleInsertUpdate =
|
|
await soapClientVehicleInsertUpdate.readAsync({
|
|
arg0: CDK_CREDENTIALS,
|
|
arg1: { id: JobData.bodyshop.cdk_dealerid },
|
|
arg2: {
|
|
fileType: "VEHICLES",
|
|
vehiclesVehicleId: DMSVid.vehiclesVehId,
|
|
},
|
|
});
|
|
|
|
const [result, rawResponse, , rawRequest] = soapResponseVehicleInsertUpdate;
|
|
|
|
CdkBase.createXmlEvent(
|
|
socket,
|
|
rawRequest,
|
|
`soapClientVehicleInsertUpdate.readAsync request.`
|
|
);
|
|
|
|
CdkBase.createLogEvent(
|
|
socket,
|
|
"TRACE",
|
|
`soapClientVehicleInsertUpdate.readAsync Result ${JSON.stringify(
|
|
result,
|
|
null,
|
|
2
|
|
)}`
|
|
);
|
|
CdkBase.createXmlEvent(
|
|
socket,
|
|
rawResponse,
|
|
`soapClientVehicleInsertUpdate.readAsync response.`
|
|
);
|
|
CheckCdkResponseForError(socket, soapResponseVehicleInsertUpdate);
|
|
const VehicleFromDMS = result && result.return && result.return.vehicle;
|
|
return VehicleFromDMS;
|
|
} catch (error) {
|
|
CdkBase.createLogEvent(
|
|
socket,
|
|
"ERROR",
|
|
`Error in QueryDmsVehicleById - ${error}`
|
|
);
|
|
throw new Error(error);
|
|
}
|
|
}
|
|
|
|
async function QueryDmsCustomerById(socket, JobData, CustomerId) {
|
|
try {
|
|
const soapClientCustomerInsertUpdate = await soap.createClientAsync(
|
|
CdkWsdl.CustomerInsertUpdate
|
|
);
|
|
const soapResponseCustomerInsertUpdate =
|
|
await soapClientCustomerInsertUpdate.readAsync({
|
|
arg0: CDK_CREDENTIALS,
|
|
arg1: { dealerId: JobData.bodyshop.cdk_dealerid }, //TODO: Verify why this does not follow the other standards.
|
|
arg2: {
|
|
// userId: CustomerId,
|
|
},
|
|
arg3: CustomerId,
|
|
});
|
|
|
|
const [result, rawResponse, , rawRequest] =
|
|
soapResponseCustomerInsertUpdate;
|
|
|
|
CdkBase.createXmlEvent(
|
|
socket,
|
|
rawRequest,
|
|
`soapClientCustomerInsertUpdate.readAsync request.`
|
|
);
|
|
|
|
CdkBase.createXmlEvent(
|
|
socket,
|
|
rawResponse,
|
|
`soapClientCustomerInsertUpdate.readAsync response.`
|
|
);
|
|
CdkBase.createLogEvent(
|
|
socket,
|
|
"TRACE",
|
|
`soapClientCustomerInsertUpdate.readAsync Result ${JSON.stringify(
|
|
result,
|
|
null,
|
|
2
|
|
)}`
|
|
);
|
|
CheckCdkResponseForError(socket, soapResponseCustomerInsertUpdate);
|
|
const CustomersFromDms =
|
|
result && result.return && result.return.customerParty;
|
|
return CustomersFromDms;
|
|
} catch (error) {
|
|
CdkBase.createXmlEvent(
|
|
socket,
|
|
error.request,
|
|
`soapClientCustomerInsertUpdate.readAsync request.`,
|
|
true
|
|
);
|
|
|
|
CdkBase.createXmlEvent(
|
|
socket,
|
|
error.response && error.response.data,
|
|
`soapClientCustomerInsertUpdate.readAsync response.`,
|
|
true
|
|
);
|
|
|
|
CdkBase.createLogEvent(
|
|
socket,
|
|
"ERROR",
|
|
`Error in QueryDmsCustomerById - ${error}`
|
|
);
|
|
throw new Error(error);
|
|
}
|
|
}
|
|
|
|
async function QueryDmsCustomerByName(socket, JobData) {
|
|
const ownerName = `${JobData.ownr_ln},${JobData.ownr_fn}`;
|
|
CdkBase.createLogEvent(
|
|
socket,
|
|
"DEBUG",
|
|
`Begin Query DMS Customer by Name using: ${ownerName}`
|
|
);
|
|
|
|
try {
|
|
const soapClientCustomerSearch = await soap.createClientAsync(
|
|
CdkWsdl.CustomerSearch
|
|
);
|
|
const soapResponseCustomerSearch =
|
|
await soapClientCustomerSearch.executeSearchAsync({
|
|
arg0: CDK_CREDENTIALS,
|
|
arg1: { dealerId: JobData.bodyshop.cdk_dealerid }, //TODO: Verify why this does not follow the other standards.
|
|
arg2: {
|
|
verb: "EXACT",
|
|
key: ownerName,
|
|
},
|
|
});
|
|
|
|
const [result, rawResponse, , rawRequest] = soapResponseCustomerSearch;
|
|
|
|
CdkBase.createXmlEvent(
|
|
socket,
|
|
rawRequest,
|
|
`soapClientCustomerSearch.executeSearchBulkAsync request.`
|
|
);
|
|
|
|
CdkBase.createXmlEvent(
|
|
socket,
|
|
rawResponse,
|
|
`soapClientCustomerSearch.executeSearchBulkAsync response.`
|
|
);
|
|
|
|
CdkBase.createLogEvent(
|
|
socket,
|
|
"TRACE",
|
|
`soapClientCustomerSearch.executeSearchBulkAsync Result ${JSON.stringify(
|
|
result,
|
|
null,
|
|
2
|
|
)}`
|
|
);
|
|
CheckCdkResponseForError(socket, soapResponseCustomerSearch);
|
|
const CustomersFromDms = (result && result.return) || [];
|
|
return CustomersFromDms;
|
|
} catch (error) {
|
|
CdkBase.createXmlEvent(
|
|
socket,
|
|
error.request,
|
|
`soapClientCustomerSearch.executeSearchBulkAsync request.`,
|
|
true
|
|
);
|
|
|
|
CdkBase.createXmlEvent(
|
|
socket,
|
|
error.response && error.response.data,
|
|
`soapClientCustomerSearch.executeSearchBulkAsync response.`,
|
|
true
|
|
);
|
|
|
|
CdkBase.createLogEvent(
|
|
socket,
|
|
"ERROR",
|
|
`Error in QueryDmsCustomerByName - ${error}`
|
|
);
|
|
throw new Error(error);
|
|
}
|
|
}
|
|
|
|
async function GenerateDmsCustomerNumber(socket) {
|
|
try {
|
|
const soapClientCustomerInsertUpdate = await soap.createClientAsync(
|
|
CdkWsdl.CustomerInsertUpdate
|
|
);
|
|
const soapResponseCustomerInsertUpdate =
|
|
await soapClientCustomerInsertUpdate.getCustomerNumberAsync(
|
|
{
|
|
arg0: CDK_CREDENTIALS,
|
|
arg1: { dealerId: socket.JobData.bodyshop.cdk_dealerid }, //TODO: Verify why this does not follow the other standards.
|
|
arg2: { userId: null },
|
|
},
|
|
|
|
{}
|
|
);
|
|
|
|
const [result, rawResponse, , rawRequest] =
|
|
soapResponseCustomerInsertUpdate;
|
|
|
|
CdkBase.createXmlEvent(
|
|
socket,
|
|
rawRequest,
|
|
`soapClientCustomerInsertUpdate.getCustomerNumberAsync request.`
|
|
);
|
|
|
|
CdkBase.createXmlEvent(
|
|
socket,
|
|
rawResponse,
|
|
`soapClientCustomerInsertUpdate.getCustomerNumberAsync response.`
|
|
);
|
|
|
|
CdkBase.createLogEvent(
|
|
socket,
|
|
"TRACE",
|
|
`soapClientCustomerInsertUpdate.getCustomerNumberAsync Result ${JSON.stringify(
|
|
result,
|
|
null,
|
|
2
|
|
)}`
|
|
);
|
|
CheckCdkResponseForError(socket, soapResponseCustomerInsertUpdate);
|
|
const customerNumber =
|
|
result && result.return && result.return.customerNumber;
|
|
return customerNumber;
|
|
} catch (error) {
|
|
CdkBase.createXmlEvent(
|
|
socket,
|
|
error.request,
|
|
`soapClientCustomerInsertUpdate.getCustomerNumberAsync request.`,
|
|
true
|
|
);
|
|
|
|
CdkBase.createXmlEvent(
|
|
socket,
|
|
error.response && error.response.data,
|
|
`soapClientCustomerInsertUpdate.getCustomerNumberAsync response.`,
|
|
true
|
|
);
|
|
CdkBase.createLogEvent(
|
|
socket,
|
|
"ERROR",
|
|
`Error in GenerateDmsCustomerNumber - ${error}`
|
|
);
|
|
throw new Error(error);
|
|
}
|
|
}
|
|
|
|
async function InsertDmsCustomer(socket, newCustomerNumber) {
|
|
try {
|
|
const soapClientCustomerInsertUpdate = await soap.createClientAsync(
|
|
CdkWsdl.CustomerInsertUpdate
|
|
);
|
|
const soapResponseCustomerInsertUpdate =
|
|
await soapClientCustomerInsertUpdate.insertAsync(
|
|
{
|
|
arg0: CDK_CREDENTIALS,
|
|
arg1: { dealerId: socket.JobData.bodyshop.cdk_dealerid }, //TODO: Verify why this does not follow the other standards.
|
|
arg2: { userId: null },
|
|
arg3: {
|
|
//Copied the required fields from the other integration.
|
|
//TODO: Verify whether we need to bring more information in.
|
|
id: { value: newCustomerNumber },
|
|
address: {
|
|
addressLine: socket.JobData.ownr_addr1,
|
|
city: socket.JobData.ownr_city,
|
|
country: null,
|
|
postalCode: socket.JobData.ownr_zip,
|
|
stateOrProvince: socket.JobData.ownr_st,
|
|
},
|
|
contactInfo: {
|
|
mainTelephoneNumber: {
|
|
main: true,
|
|
value: socket.JobData.ownr_ph1,
|
|
},
|
|
},
|
|
demographics: null,
|
|
name1: {
|
|
companyname: socket.JobData.ownr_co_nm,
|
|
firstName: socket.JobData.ownr_fn,
|
|
fullname: null,
|
|
lastName: socket.JobData.ownr_ln,
|
|
middleName: null,
|
|
nameType: "Person",
|
|
suffix: null,
|
|
title: null,
|
|
},
|
|
},
|
|
},
|
|
|
|
{}
|
|
);
|
|
|
|
const [result, rawResponse, , rawRequest] =
|
|
soapResponseCustomerInsertUpdate;
|
|
CdkBase.createXmlEvent(
|
|
socket,
|
|
rawRequest,
|
|
`soapClientCustomerInsertUpdate.insertAsync request.`
|
|
);
|
|
|
|
CdkBase.createXmlEvent(
|
|
socket,
|
|
rawResponse,
|
|
`soapClientCustomerInsertUpdate.insertAsync response.`
|
|
);
|
|
CdkBase.createLogEvent(
|
|
socket,
|
|
"TRACE",
|
|
`soapClientCustomerInsertUpdate.insertAsync Result ${JSON.stringify(
|
|
result,
|
|
null,
|
|
2
|
|
)}`
|
|
);
|
|
CheckCdkResponseForError(socket, soapResponseCustomerInsertUpdate);
|
|
const customer = result && result.return && result.return.customerParty;
|
|
return customer;
|
|
} catch (error) {
|
|
CdkBase.createXmlEvent(
|
|
socket,
|
|
error.request,
|
|
`soapClientCustomerInsertUpdate.insertAsync request.`,
|
|
true
|
|
);
|
|
|
|
CdkBase.createXmlEvent(
|
|
socket,
|
|
error.response && error.response.data,
|
|
`soapClientCustomerInsertUpdate.insertAsync response.`,
|
|
true
|
|
);
|
|
CdkBase.createLogEvent(
|
|
socket,
|
|
"ERROR",
|
|
`Error in InsertDmsCustomer - ${error}`
|
|
);
|
|
throw new Error(error);
|
|
}
|
|
}
|
|
|
|
async function InsertDmsVehicle(socket) {
|
|
try {
|
|
const soapClientVehicleInsertUpdate = await soap.createClientAsync(
|
|
CdkWsdl.VehicleInsertUpdate
|
|
);
|
|
|
|
const soapResponseVehicleInsertUpdate =
|
|
await soapClientVehicleInsertUpdate.insertAsync({
|
|
arg0: CDK_CREDENTIALS,
|
|
arg1: { id: socket.JobData.bodyshop.cdk_dealerid },
|
|
arg2: {
|
|
dealer: {
|
|
dealerNumber: socket.JobData.bodyshop.cdk_dealerid,
|
|
inServiceDate: moment().startOf("day").toISOString(),
|
|
vehicleId: socket.DMSVid.vehiclesVehId,
|
|
},
|
|
manufacturer: {},
|
|
vehicle: {
|
|
deliveryDate: moment().format("YYYYMMDD"),
|
|
make: socket.txEnvelope.dms_make,
|
|
modelAbrev: socket.txEnvelope.dms_model,
|
|
modelYear: socket.JobData.v_model_yr,
|
|
odometerStatus: socket.txEnvelope.kmout,
|
|
saleClassValue: "MISC",
|
|
VIN: socket.JobData.v_vin,
|
|
},
|
|
owners: {
|
|
id: {
|
|
assigningPartyId: "CURRENT",
|
|
value: socket.DMSCust.id.value,
|
|
},
|
|
},
|
|
},
|
|
arg3: "VEHICLES",
|
|
});
|
|
|
|
const [result, rawResponse, , rawRequest] = soapResponseVehicleInsertUpdate;
|
|
|
|
CdkBase.createXmlEvent(
|
|
socket,
|
|
rawRequest,
|
|
`soapClientVehicleInsertUpdate.insertAsync request.`
|
|
);
|
|
|
|
CdkBase.createLogEvent(
|
|
socket,
|
|
"TRACE",
|
|
`soapClientVehicleInsertUpdate.insertAsync Result ${JSON.stringify(
|
|
result,
|
|
null,
|
|
2
|
|
)}`
|
|
);
|
|
CdkBase.createXmlEvent(
|
|
socket,
|
|
rawResponse,
|
|
`soapClientVehicleInsertUpdate.insertAsync response.`
|
|
);
|
|
CheckCdkResponseForError(socket, soapResponseVehicleInsertUpdate);
|
|
const VehicleFromDMS = result && result.return && result.return.vehicle;
|
|
return VehicleFromDMS;
|
|
} catch (error) {
|
|
CdkBase.createLogEvent(
|
|
socket,
|
|
"ERROR",
|
|
`Error in InsertDmsVehicle - ${error}`
|
|
);
|
|
throw new Error(error);
|
|
}
|
|
}
|
|
|
|
async function UpdateDmsVehicle(socket) {
|
|
try {
|
|
const soapClientVehicleInsertUpdate = await soap.createClientAsync(
|
|
CdkWsdl.VehicleInsertUpdate
|
|
);
|
|
|
|
const soapResponseVehicleInsertUpdate =
|
|
await soapClientVehicleInsertUpdate.updateAsync({
|
|
arg0: CDK_CREDENTIALS,
|
|
arg1: { id: socket.JobData.bodyshop.cdk_dealerid },
|
|
arg2: {
|
|
...socket.DMSVeh,
|
|
dealer: {
|
|
...socket.DMSVeh.dealer,
|
|
inServiceDate: moment(
|
|
socket.DMSVeh.dealer.inServiceDate
|
|
).toISOString(),
|
|
},
|
|
vehicle: {
|
|
...socket.DMSVeh.vehicle,
|
|
deliveryDate: moment(
|
|
socket.DMSVeh.vehicle.deliveryDate
|
|
).toISOString(),
|
|
},
|
|
owners: {
|
|
id: {
|
|
assigningPartyId: "CURRENT",
|
|
value: socket.DMSCust.id.value,
|
|
},
|
|
},
|
|
},
|
|
arg3: "VEHICLES",
|
|
});
|
|
const [result, rawResponse, , rawRequest] = soapResponseVehicleInsertUpdate;
|
|
|
|
CdkBase.createXmlEvent(
|
|
socket,
|
|
rawRequest,
|
|
`soapClientVehicleInsertUpdate.updateAsync request.`
|
|
);
|
|
|
|
CdkBase.createLogEvent(
|
|
socket,
|
|
"TRACE",
|
|
`soapClientVehicleInsertUpdate.updateAsync Result ${JSON.stringify(
|
|
result,
|
|
null,
|
|
2
|
|
)}`
|
|
);
|
|
CdkBase.createXmlEvent(
|
|
socket,
|
|
rawResponse,
|
|
`soapClientVehicleInsertUpdate.updateAsync response.`
|
|
);
|
|
CheckCdkResponseForError(socket, soapResponseVehicleInsertUpdate);
|
|
const VehicleFromDMS = result && result.return && result.return.vehicle;
|
|
return VehicleFromDMS;
|
|
} catch (error) {
|
|
CdkBase.createLogEvent(
|
|
socket,
|
|
"ERROR",
|
|
`Error in UpdateDmsVehicle - ${error}`
|
|
);
|
|
throw new Error(error);
|
|
}
|
|
}
|
|
|
|
async function InsertServiceVehicleHistory(socket) {
|
|
try {
|
|
const soapClientServiceHistoryInsert = await soap.createClientAsync(
|
|
CdkWsdl.ServiceHistoryInsert
|
|
);
|
|
|
|
const soapResponseServiceHistoryInsert =
|
|
await soapClientServiceHistoryInsert.serviceHistoryHeaderInsertAsync({
|
|
authToken: CDK_CREDENTIALS,
|
|
dealerId: { dealerId: socket.JobData.bodyshop.cdk_dealerid },
|
|
serviceHistoryHeader: {
|
|
vehID: socket.DMSVid.vehiclesVehId,
|
|
roNumber: socket.JobData.ro_number.match(/\d+/g),
|
|
mileage: socket.txEnvelope.kmout,
|
|
openDate: moment(socket.JobData.actual_in).format("YYYY-MM-DD"),
|
|
openTime: moment(socket.JobData.actual_in).format("HH:MM:SS"),
|
|
closeDate: moment(socket.JobData.invoice_date).format("YYYY-MM-DD"),
|
|
closeTime: moment(socket.JobData.invoice_date).format("HH:MM:SS"),
|
|
comments: socket.txEnvelope.story,
|
|
cashierID: socket.JobData.bodyshop.cdk_configuration.cashierid, //NEEDS TO BE PROVIDED BY DEALER.
|
|
},
|
|
});
|
|
|
|
const [result, rawResponse, , rawRequest] =
|
|
soapResponseServiceHistoryInsert;
|
|
|
|
CdkBase.createXmlEvent(
|
|
socket,
|
|
rawRequest,
|
|
`soapClientServiceHistoryInsert.serviceHistoryHeaderInsert request.`
|
|
);
|
|
|
|
CdkBase.createLogEvent(
|
|
socket,
|
|
"TRACE",
|
|
`soapClientServiceHistoryInsert.serviceHistoryHeaderInsert Result ${JSON.stringify(
|
|
result,
|
|
null,
|
|
2
|
|
)}`
|
|
);
|
|
CdkBase.createXmlEvent(
|
|
socket,
|
|
rawResponse,
|
|
`soapClientServiceHistoryInsert.serviceHistoryHeaderInsert response.`
|
|
);
|
|
CheckCdkResponseForError(socket, soapResponseServiceHistoryInsert);
|
|
const VehicleFromDMS = result && result.return && result.return.vehicle;
|
|
return VehicleFromDMS;
|
|
} catch (error) {
|
|
CdkBase.createLogEvent(
|
|
socket,
|
|
"ERROR",
|
|
`Error in InsertServiceVehicleHistory - ${error}`
|
|
);
|
|
throw new Error(error);
|
|
}
|
|
}
|
|
async function InsertDmsStartWip(socket) {
|
|
try {
|
|
const soapClientAccountingGLInsertUpdate = await soap.createClientAsync(
|
|
CdkWsdl.AccountingGLInsertUpdate
|
|
);
|
|
|
|
const soapResponseAccountingGLInsertUpdate =
|
|
await soapClientAccountingGLInsertUpdate.startWIPAsync({
|
|
arg0: CDK_CREDENTIALS,
|
|
arg1: { id: socket.JobData.bodyshop.cdk_dealerid },
|
|
arg2: {
|
|
acctgDate: moment().toISOString(),
|
|
desc: socket.txEnvelope.story,
|
|
docType: 7 || 10, //Need to check what this usually would be?
|
|
//1 Cash Receipt , 2 Check, 3 Journal Voucher, 4 Parts invoice, 5 Payable Invoice, 6 Recurring Entry, 7 Repair Order Invoice, 8 Vehicle Purchase Invoice, 9 Vehicle Sale Invoice, 10 Other, 11 Payroll, 12 Finance Charge, 13 FMLR Invoice, 14 Parts Credit Memo, 15 Manufacturer Document, 16 FMLR Credit Memo
|
|
m13Flag: 0,
|
|
refer: socket.JobData.ro_number,
|
|
srcCo: socket.txEnvelope.journal,
|
|
srcJrnl: socket.txEnvelope.journal,
|
|
userID: "?", //Where is this coming from?
|
|
//userName: "IMEX",
|
|
},
|
|
});
|
|
|
|
const [result, rawResponse, , rawRequest] =
|
|
soapResponseAccountingGLInsertUpdate;
|
|
|
|
CdkBase.createXmlEvent(
|
|
socket,
|
|
rawRequest,
|
|
`soapClientAccountingGLInsertUpdate.startWIPAsync request.`
|
|
);
|
|
|
|
CdkBase.createLogEvent(
|
|
socket,
|
|
"TRACE",
|
|
`soapClientAccountingGLInsertUpdate.startWIPAsync Result ${JSON.stringify(
|
|
result,
|
|
null,
|
|
2
|
|
)}`
|
|
);
|
|
CdkBase.createXmlEvent(
|
|
socket,
|
|
rawResponse,
|
|
`soapClientAccountingGLInsertUpdate.startWIPAsync response.`
|
|
);
|
|
CheckCdkResponseForError(socket, soapResponseAccountingGLInsertUpdate);
|
|
const VehicleFromDMS = result && result.return && result.return.vehicle;
|
|
return VehicleFromDMS;
|
|
} catch (error) {
|
|
CdkBase.createLogEvent(
|
|
socket,
|
|
"ERROR",
|
|
`Error in QueryDmsVehicleById - ${error}`
|
|
);
|
|
throw new Error(error);
|
|
}
|
|
}
|