WIP Fortellis.
This commit is contained in:
5
_reference/Fortellis Feedback.md
Normal file
5
_reference/Fortellis Feedback.md
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
Fortellis Feedback
|
||||||
|
|
||||||
|
Create Customer
|
||||||
|
https://apidocs.fortellis.io/apis/c5cfb5b3-2013-4870-8645-0379c01ae56b
|
||||||
|
Request Body compoennts do not show on website. Unable to determine which components are required.
|
||||||
@@ -17,7 +17,7 @@ const mapDispatchToProps = (dispatch) => ({
|
|||||||
});
|
});
|
||||||
export default connect(mapStateToProps, mapDispatchToProps)(DmsCustomerSelector);
|
export default connect(mapStateToProps, mapDispatchToProps)(DmsCustomerSelector);
|
||||||
|
|
||||||
export function DmsCustomerSelector({ bodyshop }) {
|
export function DmsCustomerSelector({ bodyshop, jobid }) {
|
||||||
const { t } = useTranslation();
|
const { t } = useTranslation();
|
||||||
const [customerList, setcustomerList] = useState([]);
|
const [customerList, setcustomerList] = useState([]);
|
||||||
const [open, setOpen] = useState(false);
|
const [open, setOpen] = useState(false);
|
||||||
@@ -38,7 +38,7 @@ export function DmsCustomerSelector({ bodyshop }) {
|
|||||||
if (Fortellis.treatment === "on") {
|
if (Fortellis.treatment === "on") {
|
||||||
const handleFortellisSelectCustomer = (customerList, callback) => {
|
const handleFortellisSelectCustomer = (customerList, callback) => {
|
||||||
setOpen(true);
|
setOpen(true);
|
||||||
setDmsType("fortellis");
|
setDmsType("cdk");
|
||||||
setcustomerList(customerList);
|
setcustomerList(customerList);
|
||||||
};
|
};
|
||||||
wsssocket.on("fortellis-select-customer", handleFortellisSelectCustomer);
|
wsssocket.on("fortellis-select-customer", handleFortellisSelectCustomer);
|
||||||
@@ -67,7 +67,11 @@ export function DmsCustomerSelector({ bodyshop }) {
|
|||||||
|
|
||||||
const onUseSelected = () => {
|
const onUseSelected = () => {
|
||||||
setOpen(false);
|
setOpen(false);
|
||||||
|
if (Fortellis.treatment === "on") {
|
||||||
|
wsssocket.emit(`fortellis-selected-customer`, { selectedCustomerId: selectedCustomer, jobid });
|
||||||
|
} else {
|
||||||
socket.emit(`${dmsType}-selected-customer`, selectedCustomer);
|
socket.emit(`${dmsType}-selected-customer`, selectedCustomer);
|
||||||
|
}
|
||||||
setSelectedCustomer(null);
|
setSelectedCustomer(null);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -72,7 +72,13 @@ export function DmsPostForm({ bodyshop, socket, job, logsRef }) {
|
|||||||
const handleFinish = (values) => {
|
const handleFinish = (values) => {
|
||||||
//TODO: Add this as a split instead.
|
//TODO: Add this as a split instead.
|
||||||
if (Fortellis.treatment === "on") {
|
if (Fortellis.treatment === "on") {
|
||||||
wsssocket.emit("fortellis-export-job", { jobid: job.id, txEnvelope: values });
|
wsssocket.emit("fortellis-export-job", {
|
||||||
|
jobid: job.id,
|
||||||
|
txEnvelope: {
|
||||||
|
...values,
|
||||||
|
SubscriptionID: "5b527d7d-baf3-40bc-adae-e7a541e37363" //bodyshop.cdk_dealerid
|
||||||
|
}
|
||||||
|
});
|
||||||
} else {
|
} else {
|
||||||
socket.emit(`${determineDmsType(bodyshop)}-export-job`, {
|
socket.emit(`${determineDmsType(bodyshop)}-export-job`, {
|
||||||
jobid: job.id,
|
jobid: job.id,
|
||||||
|
|||||||
@@ -201,7 +201,7 @@ export function DmsContainer({ bodyshop, setBreadcrumbs, setSelectedHeader, inse
|
|||||||
<DmsPostForm socket={socket} jobId={jobId} job={data && data.jobs_by_pk} logsRef={logsRef} />
|
<DmsPostForm socket={socket} jobId={jobId} job={data && data.jobs_by_pk} logsRef={logsRef} />
|
||||||
</Col>
|
</Col>
|
||||||
|
|
||||||
<DmsCustomerSelector />
|
<DmsCustomerSelector jobid={jobId} />
|
||||||
|
|
||||||
<Col span={24}>
|
<Col span={24}>
|
||||||
<div ref={logsRef}>
|
<div ref={logsRef}>
|
||||||
|
|||||||
@@ -175,6 +175,17 @@ async function MakeFortellisCall({
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
break;
|
break;
|
||||||
|
case "put":
|
||||||
|
result = await axios.put(fullUrl, body, {
|
||||||
|
headers: {
|
||||||
|
Authorization: `Bearer ${access_token}`,
|
||||||
|
"Subscription-Id": SubscriptionMeta.subscriptionId,
|
||||||
|
"Request-Id": ReqId,
|
||||||
|
"Department-Id": DepartmentId,
|
||||||
|
...headers
|
||||||
|
}
|
||||||
|
});
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (debug) {
|
if (debug) {
|
||||||
@@ -266,6 +277,34 @@ const FortellisActions = {
|
|||||||
type: "get",
|
type: "get",
|
||||||
apiName: "CDK Drive Post Customer",
|
apiName: "CDK Drive Post Customer",
|
||||||
},
|
},
|
||||||
|
ReadCustomer: {
|
||||||
|
url: isProduction
|
||||||
|
? "https://api.fortellis.io/cdk/drive/customerpost/v1/" //Customer ID is request param.
|
||||||
|
: "https://api.fortellis.io/cdk-test/drive/customerpost/v1/",
|
||||||
|
type: "get",
|
||||||
|
apiName: "CDK Drive Post Customer",
|
||||||
|
},
|
||||||
|
CreateCustomer: {
|
||||||
|
url: isProduction
|
||||||
|
? "https://api.fortellis.io/cdk/drive/customerpost/v1/"
|
||||||
|
: "https://api.fortellis.io/cdk-test/drive/customerpost/v1/",
|
||||||
|
type: "post",
|
||||||
|
apiName: "CDK Drive Post Customer",
|
||||||
|
},
|
||||||
|
InsertVehicle: {
|
||||||
|
url: isProduction
|
||||||
|
? "https://api.fortellis.io/cdk/drive/service-vehicle-mgmt/v2/"
|
||||||
|
: "https://api.fortellis.io/cdk-test/drive/service-vehicle-mgmt/v2/",
|
||||||
|
type: "post",
|
||||||
|
apiName: "CDK Drive Post Service Vehicle",
|
||||||
|
},
|
||||||
|
UpdateVehicle: {
|
||||||
|
url: isProduction
|
||||||
|
? "https://api.fortellis.io/cdk/drive/service-vehicle-mgmt/v2/"
|
||||||
|
: "https://api.fortellis.io/cdk-test/drive/service-vehicle-mgmt/v2/",
|
||||||
|
type: "put",
|
||||||
|
apiName: "CDK Drive Post Customer",
|
||||||
|
},
|
||||||
GetCOA: {
|
GetCOA: {
|
||||||
type: "get",
|
type: "get",
|
||||||
apiName: "CDK Drive Post Accounts GL WIP",
|
apiName: "CDK Drive Post Accounts GL WIP",
|
||||||
@@ -277,7 +316,14 @@ const FortellisActions = {
|
|||||||
const FortellisCacheEnums = {
|
const FortellisCacheEnums = {
|
||||||
txEnvelope: "txEnvelope",
|
txEnvelope: "txEnvelope",
|
||||||
SubscriptionMeta: "SubscriptionMeta",
|
SubscriptionMeta: "SubscriptionMeta",
|
||||||
DepartmentId: "DepartmentId"
|
DepartmentId: "DepartmentId",
|
||||||
|
JobData: "JobData",
|
||||||
|
DMSVid: "DMSVid",
|
||||||
|
DMSVeh: "DMSVeh",
|
||||||
|
DMSVehCustomer: "DMSVehCustomer",
|
||||||
|
DMSCustList: "DMSCustList",
|
||||||
|
DMSCust: "DMSCust",
|
||||||
|
selectedCustomerId: "selectedCustomerId",
|
||||||
};
|
};
|
||||||
|
|
||||||
function constructFullUrl({ url, pathParams = "", requestSearchParams = [] }) {
|
function constructFullUrl({ url, pathParams = "", requestSearchParams = [] }) {
|
||||||
|
|||||||
@@ -14,9 +14,8 @@ const {
|
|||||||
defaultFortellisTTL,
|
defaultFortellisTTL,
|
||||||
FortellisCacheEnums
|
FortellisCacheEnums
|
||||||
} = require("./fortellis-helpers");
|
} = require("./fortellis-helpers");
|
||||||
const { last } = require("lodash");
|
const _ = require("lodash");
|
||||||
|
const moment = require("moment-timezone");
|
||||||
// const moment = require("moment-timezone");
|
|
||||||
|
|
||||||
const replaceSpecialRegex = /[^a-zA-Z0-9 .,\n #]+/g;
|
const replaceSpecialRegex = /[^a-zA-Z0-9 .,\n #]+/g;
|
||||||
|
|
||||||
@@ -28,15 +27,15 @@ async function FortellisJobExport({
|
|||||||
jobid
|
jobid
|
||||||
}) {
|
}) {
|
||||||
const {
|
const {
|
||||||
setSessionData,
|
// setSessionData,
|
||||||
getSessionData,
|
// getSessionData,
|
||||||
addUserSocketMapping,
|
// addUserSocketMapping,
|
||||||
removeUserSocketMapping,
|
// removeUserSocketMapping,
|
||||||
refreshUserSocketTTL,
|
// refreshUserSocketTTL,
|
||||||
getUserSocketMappingByBodyshop,
|
// getUserSocketMappingByBodyshop,
|
||||||
setSessionTransactionData,
|
setSessionTransactionData,
|
||||||
getSessionTransactionData,
|
// getSessionTransactionData,
|
||||||
clearSessionTransactionData
|
// clearSessionTransactionData
|
||||||
} = redisHelpers;
|
} = redisHelpers;
|
||||||
try {
|
try {
|
||||||
CreateFortellisLogEvent(socket, "debug", `Received Job export request for id ${jobid}`);
|
CreateFortellisLogEvent(socket, "debug", `Received Job export request for id ${jobid}`);
|
||||||
@@ -49,21 +48,21 @@ async function FortellisJobExport({
|
|||||||
);
|
);
|
||||||
|
|
||||||
const JobData = await QueryJobData({ socket, jobid }); //TODO: Need to remove unnecessary stuff here to reduce the payload.
|
const JobData = await QueryJobData({ socket, jobid }); //TODO: Need to remove unnecessary stuff here to reduce the payload.
|
||||||
await setSessionTransactionData(socket.id, getTransactionType(jobid), `JobData`, JobData, defaultFortellisTTL);
|
await setSessionTransactionData(socket.id, getTransactionType(jobid), FortellisCacheEnums.JobData, JobData, defaultFortellisTTL);
|
||||||
|
|
||||||
CreateFortellisLogEvent(socket, "DEBUG", `{1} Begin Calculate DMS Vehicle ID using VIN: ${JobData.v_vin}`);
|
CreateFortellisLogEvent(socket, "DEBUG", `{1} Begin Calculate DMS Vehicle ID using VIN: ${JobData.v_vin}`);
|
||||||
const DMSVid = await CalculateDmsVid({ socket, JobData, redisHelpers });
|
const DMSVid = await CalculateDmsVid({ socket, JobData, redisHelpers });
|
||||||
await setSessionTransactionData(socket.id, getTransactionType(jobid), `DMSVid`, DMSVid, defaultFortellisTTL);
|
await setSessionTransactionData(socket.id, getTransactionType(jobid), FortellisCacheEnums.DMSVid, DMSVid, defaultFortellisTTL);
|
||||||
|
|
||||||
let DMSVehCustomer;
|
let DMSVehCustomer;
|
||||||
if (DMSVid.newId === "N") {
|
if (!DMSVid.newId) {
|
||||||
CreateFortellisLogEvent(
|
CreateFortellisLogEvent(
|
||||||
socket,
|
socket,
|
||||||
"DEBUG",
|
"DEBUG",
|
||||||
`{2.1} Querying the Vehicle using the DMSVid: ${socket.DMSVid.vehiclesVehId}`
|
`{2.1} Querying the Vehicle using the DMSVid: ${DMSVid.vehiclesVehId}`
|
||||||
);
|
);
|
||||||
const DMSVeh = await QueryDmsVehicleById({ socket, redisHelpers, JobData, DMSVid });
|
const DMSVeh = await QueryDmsVehicleById({ socket, redisHelpers, JobData, DMSVid });
|
||||||
await setSessionTransactionData(socket.id, getTransactionType(jobid), `DMSVeh`, DMSVeh, defaultFortellisTTL);
|
await setSessionTransactionData(socket.id, getTransactionType(jobid), FortellisCacheEnums.DMSVeh, DMSVeh, defaultFortellisTTL);
|
||||||
|
|
||||||
const DMSVehCustomerFromVehicle =
|
const DMSVehCustomerFromVehicle =
|
||||||
DMSVeh && DMSVeh.owners && DMSVeh.owners.find((o) => o.id.assigningPartyId === "CURRENT");
|
DMSVeh && DMSVeh.owners && DMSVeh.owners.find((o) => o.id.assigningPartyId === "CURRENT");
|
||||||
@@ -75,13 +74,13 @@ async function FortellisJobExport({
|
|||||||
`{2.2} Querying the Customer using the ID from DMSVeh: ${DMSVehCustomerFromVehicle.id.value}`
|
`{2.2} Querying the Customer using the ID from DMSVeh: ${DMSVehCustomerFromVehicle.id.value}`
|
||||||
);
|
);
|
||||||
DMSVehCustomer = await QueryDmsCustomerById({ socket, redisHelpers, JobData, CustomerId: DMSVehCustomerFromVehicle.id.value });
|
DMSVehCustomer = await QueryDmsCustomerById({ socket, redisHelpers, JobData, CustomerId: DMSVehCustomerFromVehicle.id.value });
|
||||||
await setSessionTransactionData(socket.id, getTransactionType(jobid), `DMSVehCustomer`, DMSVehCustomer, defaultFortellisTTL);
|
await setSessionTransactionData(socket.id, getTransactionType(jobid), FortellisCacheEnums.DMSVehCustomer, DMSVehCustomer, defaultFortellisTTL);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
CreateFortellisLogEvent(socket, "DEBUG", `{2.3} Querying the Customer using the name.`);
|
CreateFortellisLogEvent(socket, "DEBUG", `{2.3} Querying the Customer using the name.`);
|
||||||
|
|
||||||
const DMSCustList = await QueryDmsCustomerByName({ socket, redisHelpers, JobData });
|
const DMSCustList = await QueryDmsCustomerByName({ socket, redisHelpers, JobData });
|
||||||
await setSessionTransactionData(socket.id, getTransactionType(jobid), `DMSCustList`, DMSCustList, defaultFortellisTTL);
|
await setSessionTransactionData(socket.id, getTransactionType(jobid), FortellisCacheEnums.DMSCustList, DMSCustList, defaultFortellisTTL);
|
||||||
|
|
||||||
|
|
||||||
socket.emit("fortellis-select-customer", [
|
socket.emit("fortellis-select-customer", [
|
||||||
@@ -99,33 +98,73 @@ async function FortellisJobExport({
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
// async function CdkSelectedCustomer(socket, selectedCustomerId) {
|
async function FortellisSelectedCustomer({ socket, redisHelpers, ioHelpers, selectedCustomerId, jobid }) {
|
||||||
// try {
|
try {
|
||||||
// socket.selectedCustomerId = selectedCustomerId;
|
const {
|
||||||
// if (selectedCustomerId) {
|
// setSessionData,
|
||||||
// CdkBase.createLogEvent(socket, "DEBUG", `{3.1} Querying the Customer using Customer ID: ${selectedCustomerId}`);
|
// getSessionData,
|
||||||
// socket.DMSCust = await QueryDmsCustomerById(socket, socket.JobData, selectedCustomerId);
|
// addUserSocketMapping,
|
||||||
// } else {
|
// removeUserSocketMapping,
|
||||||
// CdkBase.createLogEvent(socket, "DEBUG", `{3.2} Generating a new customer ID.`);
|
// refreshUserSocketTTL,
|
||||||
// const newCustomerId = await GenerateDmsCustomerNumber(socket);
|
// getUserSocketMappingByBodyshop,
|
||||||
// CdkBase.createLogEvent(socket, "DEBUG", `{3.3} Inserting new customer with ID: ${newCustomerId}`);
|
setSessionTransactionData,
|
||||||
// socket.DMSCust = await InsertDmsCustomer(socket, newCustomerId);
|
getSessionTransactionData,
|
||||||
// }
|
//clearSessionTransactionData
|
||||||
|
} = redisHelpers;
|
||||||
|
|
||||||
// if (socket.DMSVid.newId === "Y") {
|
await setSessionTransactionData(socket.id, getTransactionType(jobid), FortellisCacheEnums.selectedCustomerId, selectedCustomerId, defaultFortellisTTL);
|
||||||
// CdkBase.createLogEvent(socket, "DEBUG", `{4.1} Inserting new vehicle with ID: ID ${socket.DMSVid.vehiclesVehId}`);
|
const JobData = await getSessionTransactionData(socket.id, getTransactionType(jobid), FortellisCacheEnums.JobData);
|
||||||
// socket.DMSVeh = await InsertDmsVehicle(socket);
|
const txEnvelope = await getSessionTransactionData(socket.id, getTransactionType(jobid), FortellisCacheEnums.txEnvelope);
|
||||||
// } else {
|
const DMSVid = await redisHelpers.getSessionTransactionData(socket.id, getTransactionType(JobData.id), FortellisCacheEnums.DMSVid);
|
||||||
// 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);
|
|
||||||
// }
|
|
||||||
|
|
||||||
|
|
||||||
|
let DMSCust;
|
||||||
|
if (selectedCustomerId) {
|
||||||
|
CreateFortellisLogEvent(
|
||||||
|
socket,
|
||||||
|
"DEBUG",
|
||||||
|
`{3.1} Querying the Customer using Customer ID: ${selectedCustomerId}`
|
||||||
|
);
|
||||||
|
DMSCust = await QueryDmsCustomerById({ socket, redisHelpers, JobData, CustomerId: selectedCustomerId });
|
||||||
|
await setSessionTransactionData(socket.id, getTransactionType(jobid), FortellisCacheEnums.DMSCust, DMSCust, defaultFortellisTTL);
|
||||||
|
} else {
|
||||||
|
CreateFortellisLogEvent(
|
||||||
|
socket,
|
||||||
|
"DEBUG",
|
||||||
|
`{3.2} Creating new customer.`
|
||||||
|
);
|
||||||
|
DMSCust = await InsertDmsCustomer({ socket, redisHelpers, JobData });
|
||||||
|
await setSessionTransactionData(socket.id, getTransactionType(jobid), FortellisCacheEnums.DMSCust, DMSCust, defaultFortellisTTL);
|
||||||
|
}
|
||||||
|
|
||||||
|
let DMSVeh;
|
||||||
|
if (DMSVid.newId) {
|
||||||
|
CreateFortellisLogEvent(
|
||||||
|
socket,
|
||||||
|
"DEBUG",
|
||||||
|
`{4.1} Inserting new vehicle with ID: ID ${DMSVid.vehiclesVehId}`
|
||||||
|
);
|
||||||
|
DMSVeh = await InsertDmsVehicle({ socket, redisHelpers, JobData, txEnvelope, DMSVid, DMSCust });
|
||||||
|
} else {
|
||||||
|
CreateFortellisLogEvent(
|
||||||
|
socket,
|
||||||
|
"DEBUG",
|
||||||
|
`{4.2} Querying Existing Vehicle using ID ${DMSVid.vehiclesVehId}`
|
||||||
|
);
|
||||||
|
DMSVeh = await QueryDmsVehicleById({ socket, redisHelpers, JobData, DMSVid });
|
||||||
|
|
||||||
|
CreateFortellisLogEvent(
|
||||||
|
socket,
|
||||||
|
"DEBUG",
|
||||||
|
`{4.3} Updating Existing Vehicle to associate to owner.`
|
||||||
|
);
|
||||||
|
DMSVeh = await UpdateDmsVehicle({ socket, redisHelpers, JobData, DMSVeh, DMSCust, selectedCustomerId, txEnvelope });
|
||||||
|
}
|
||||||
|
////New code above.
|
||||||
|
/// Old code below.
|
||||||
|
|
||||||
|
|
||||||
|
console.log(DMSVeh)
|
||||||
// CdkBase.createLogEvent(socket, "DEBUG", `{5} Creating Transaction header with Dms Start WIP`);
|
// CdkBase.createLogEvent(socket, "DEBUG", `{5} Creating Transaction header with Dms Start WIP`);
|
||||||
// socket.DMSTransHeader = await InsertDmsStartWip(socket);
|
// socket.DMSTransHeader = await InsertDmsStartWip(socket);
|
||||||
// CdkBase.createLogEvent(socket, "DEBUG", `{5.1} Creating Transaction with ID ${socket.DMSTransHeader.transID}`);
|
// CdkBase.createLogEvent(socket, "DEBUG", `{5.1} Creating Transaction with ID ${socket.DMSTransHeader.transID}`);
|
||||||
@@ -167,18 +206,18 @@ async function FortellisJobExport({
|
|||||||
// CdkBase.createLogEvent(socket, "ERROR", `Error(s) encountered in posting transaction. ${e}`)
|
// CdkBase.createLogEvent(socket, "ERROR", `Error(s) encountered in posting transaction. ${e}`)
|
||||||
// );
|
// );
|
||||||
// }
|
// }
|
||||||
// } catch (error) {
|
} catch (error) {
|
||||||
// CdkBase.createLogEvent(socket, "ERROR", `Error encountered in CdkSelectedCustomer. ${error}`);
|
// CdkBase.createLogEvent(socket, "ERROR", `Error encountered in CdkSelectedCustomer. ${error}`);
|
||||||
// await InsertFailedExportLog(socket, error);
|
// await InsertFailedExportLog(socket, error);
|
||||||
// } finally {
|
} finally {
|
||||||
// //Ensure we always insert logEvents
|
//Ensure we always insert logEvents
|
||||||
// //GQL to insert logevents.
|
//GQL to insert logevents.
|
||||||
|
|
||||||
//CdkBase.createLogEvent(socket, "DEBUG", `Capturing log events to database.`);
|
//CdkBase.createLogEvent(socket, "DEBUG", `Capturing log events to database.`);
|
||||||
// }
|
}
|
||||||
//}
|
}
|
||||||
|
|
||||||
// exports.CdkSelectedCustomer = CdkSelectedCustomer;
|
exports.FortellisSelectedCustomer = FortellisSelectedCustomer;
|
||||||
|
|
||||||
async function QueryJobData({ socket, jobid }) {
|
async function QueryJobData({ socket, jobid }) {
|
||||||
const client = new GraphQLClient(process.env.GRAPHQL_ENDPOINT, {});
|
const client = new GraphQLClient(process.env.GRAPHQL_ENDPOINT, {});
|
||||||
@@ -217,8 +256,7 @@ async function QueryDmsVehicleById({ socket, redisHelpers, JobData, DMSVid }) {
|
|||||||
jobid: JobData.id,
|
jobid: JobData.id,
|
||||||
body: {},
|
body: {},
|
||||||
});
|
});
|
||||||
const VehicleFromDMS = result && result.return && result.return.vehicle;
|
return result;
|
||||||
return VehicleFromDMS;
|
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
CreateFortellisLogEvent(socket, "ERROR", `Error in QueryDmsVehicleById - ${error}`, { request: error.request });
|
CreateFortellisLogEvent(socket, "ERROR", `Error in QueryDmsVehicleById - ${error}`, { request: error.request });
|
||||||
}
|
}
|
||||||
@@ -226,41 +264,19 @@ async function QueryDmsVehicleById({ socket, redisHelpers, JobData, DMSVid }) {
|
|||||||
|
|
||||||
async function QueryDmsCustomerById({ socket, redisHelpers, JobData, CustomerId }) {
|
async function QueryDmsCustomerById({ socket, redisHelpers, JobData, CustomerId }) {
|
||||||
try {
|
try {
|
||||||
const soapClientCustomerInsertUpdate = await soap.createClientAsync(CdkWsdl.CustomerInsertUpdate);
|
const result = await MakeFortellisCall({
|
||||||
const soapResponseCustomerInsertUpdate = await soapClientCustomerInsertUpdate.readAsync({
|
...FortellisActions.ReadCustomer,
|
||||||
arg0: CDK_CREDENTIALS,
|
requestPathParams: CustomerId,
|
||||||
arg1: { dealerId: JobData.bodyshop.cdk_dealerid }, //TODO: Verify why this does not follow the other standards.
|
headers: {},
|
||||||
arg2: {
|
redisHelpers,
|
||||||
// userId: CustomerId,
|
socket,
|
||||||
},
|
jobid: JobData.id,
|
||||||
arg3: CustomerId
|
body: {},
|
||||||
|
|
||||||
});
|
});
|
||||||
|
return result.data;
|
||||||
const [result, rawResponse, , rawRequest] = soapResponseCustomerInsertUpdate;
|
|
||||||
|
|
||||||
CdkBase.createXmlEvent(socket, rawRequest, `soapClientCustomerInsertUpdate.readAsync request.`);
|
|
||||||
|
|
||||||
CdkBase.createXmlEvent(socket, rawResponse, `soapClientCustomerInsertUpdate.readAsync response.`);
|
|
||||||
CdkBase.createLogEvent(
|
|
||||||
socket,
|
|
||||||
"SILLY",
|
|
||||||
`soapClientCustomerInsertUpdate.readAsync Result ${JSON.stringify(result, null, 2)}`
|
|
||||||
);
|
|
||||||
CheckCdkResponseForError(socket, soapResponseCustomerInsertUpdate);
|
|
||||||
const CustomersFromDms = result && result.return && result.return.customerParty;
|
|
||||||
return CustomersFromDms;
|
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
CdkBase.createXmlEvent(socket, error.request, `soapClientCustomerInsertUpdate.readAsync request.`, true);
|
CreateFortellisLogEvent(socket, "ERROR", `Error in QueryDmsCustomerById - ${error}`, { request: error.request });
|
||||||
|
|
||||||
CdkBase.createXmlEvent(
|
|
||||||
socket,
|
|
||||||
error.response && error.response.data,
|
|
||||||
`soapClientCustomerInsertUpdate.readAsync response.`,
|
|
||||||
true
|
|
||||||
);
|
|
||||||
|
|
||||||
CdkBase.createLogEvent(socket, "ERROR", `Error in QueryDmsCustomerById - ${error}`);
|
|
||||||
throw new Error(error);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -293,53 +309,205 @@ async function QueryDmsCustomerByName({ socket, redisHelpers, JobData }) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// async function GenerateDmsCustomerNumber(socket) {
|
async function InsertDmsCustomer({ socket, redisHelpers, JobData }) {
|
||||||
// try {
|
|
||||||
// const soapClientCustomerInsertUpdate = await soap.createClientAsync(CdkWsdl.CustomerInsertUpdate);
|
try {
|
||||||
// const soapResponseCustomerInsertUpdate = await soapClientCustomerInsertUpdate.getCustomerNumberAsync(
|
const result = await MakeFortellisCall({
|
||||||
// {
|
...FortellisActions.CreateCustomer,
|
||||||
// arg0: CDK_CREDENTIALS,
|
headers: {},
|
||||||
// arg1: { dealerId: socket.JobData.bodyshop.cdk_dealerid }, //TODO: Verify why this does not follow the other standards.
|
redisHelpers,
|
||||||
// arg2: { userId: null }
|
socket,
|
||||||
|
jobid: JobData.id,
|
||||||
|
body: {
|
||||||
|
"customerType": "INDIVIDUAL",
|
||||||
|
"customerName": {
|
||||||
|
//"suffix": "Mr.",
|
||||||
|
"firstName": JobData.ownr_fn && JobData.ownr_fn.replace(replaceSpecialRegex, "").toUpperCase(),
|
||||||
|
//"middleName": "",
|
||||||
|
"lastName": JobData.ownr_ln && JobData.ownr_ln.replace(replaceSpecialRegex, "").toUpperCase(),
|
||||||
|
//"title": "",
|
||||||
|
//"nickName": ""
|
||||||
|
},
|
||||||
|
"companyName": JobData.ownr_co_nm && JobData.ownr_co_nm.replace(replaceSpecialRegex, "").toUpperCase(),
|
||||||
|
"postalAddress": {
|
||||||
|
"addressLine1": JobData.ownr_addr1?.replace(replaceSpecialRegex, "").trim(),
|
||||||
|
"addressLine2": JobData.ownr_addr2?.replace(replaceSpecialRegex, "").trim(),
|
||||||
|
"city": JobData.ownr_city?.replace(replaceSpecialRegex, "").trim(),
|
||||||
|
"state": JobData.ownr_state?.replace(replaceSpecialRegex, "").trim(),
|
||||||
|
"postalCode": InstanceMgr({
|
||||||
|
imex:
|
||||||
|
JobData.ownr_zip &&
|
||||||
|
JobData.ownr_zip
|
||||||
|
.toUpperCase()
|
||||||
|
.replace(/\W/g, "")
|
||||||
|
.replace(/(...)/, "$1 "),
|
||||||
|
rome: JobData.ownr_zip
|
||||||
|
}),
|
||||||
|
//"county": JobData.ownr_county?.trim(),
|
||||||
|
"country": JobData.ownr_ctry?.replace(replaceSpecialRegex, "").trim(),
|
||||||
|
"province": JobData.ownr_st?.replace(replaceSpecialRegex, "").trim(),
|
||||||
|
//"territory": ""
|
||||||
|
},
|
||||||
|
// "birthDate": {
|
||||||
|
// "day": "15",
|
||||||
|
// "month": "07",
|
||||||
|
// "year": "1979"
|
||||||
// },
|
// },
|
||||||
|
//"gender": "M",
|
||||||
|
//"language": "English",
|
||||||
|
"contactMethods": {
|
||||||
|
"phones": [
|
||||||
|
{
|
||||||
|
//"uuid": "",
|
||||||
|
"number": JobData.ownr_ph1?.replace(replaceSpecialRegex, ""),
|
||||||
|
// "type": "MOBILE",
|
||||||
|
// "doNotCallIndicator": true,
|
||||||
|
// "doNotCallIndicatorDate": `null,
|
||||||
|
// "doNotCallRegistrySource": "",
|
||||||
|
// "isOnDoNotCallRegistry": false,
|
||||||
|
// "isPrimary": false,
|
||||||
|
// "isPreferred": false,
|
||||||
|
// "isTextMessageAllowed": false,
|
||||||
|
// "textMessageCarrier": "",
|
||||||
|
// "optInDate": null,
|
||||||
|
// "optInRequestedDate": null,
|
||||||
|
// "preferredDay": "",
|
||||||
|
// "preferredTime": ""
|
||||||
|
},
|
||||||
|
// {
|
||||||
|
// "uuid": "",
|
||||||
|
// "number": "6666666666",
|
||||||
|
// "type": "MOBILE",
|
||||||
|
// "doNotCallIndicator": true,
|
||||||
|
// "doNotCallIndicatorDate": null,
|
||||||
|
// "doNotCallRegistrySource": "",
|
||||||
|
// "isOnDoNotCallRegistry": false,
|
||||||
|
// "isPrimary": true,
|
||||||
|
// "isPreferred": true,
|
||||||
|
// "isTextMessageAllowed": false,
|
||||||
|
// "textMessageCarrier": "",
|
||||||
|
// "optInDate": null,
|
||||||
|
// "optInRequestedDate": null,
|
||||||
|
// "preferredDay": "",
|
||||||
|
// "preferredTime": ""
|
||||||
|
// }
|
||||||
|
],
|
||||||
|
"emailAddresses": [
|
||||||
|
|
||||||
// {}
|
!_.isEmpty(socket.JobData.ownr_ea) ?
|
||||||
// );
|
[{
|
||||||
|
//"uuid": "",
|
||||||
// const [result, rawResponse, , rawRequest] = soapResponseCustomerInsertUpdate;
|
"address": socket.JobData.ownr_ea,
|
||||||
|
// "type": "PERSONAL",
|
||||||
// CdkBase.createXmlEvent(socket, rawRequest, `soapClientCustomerInsertUpdate.getCustomerNumberAsync request.`);
|
// "doNotEmailSource": "",
|
||||||
|
// "doNotEmail": false,
|
||||||
// CdkBase.createXmlEvent(socket, rawResponse, `soapClientCustomerInsertUpdate.getCustomerNumberAsync response.`);
|
// "isPreferred": true,
|
||||||
|
// "transactionEmailNotificationOptIn": false,
|
||||||
// CdkBase.createLogEvent(
|
// "optInRequestDate": null,
|
||||||
// socket,
|
// "optInDate": null
|
||||||
// "SILLY",
|
}] : [],
|
||||||
// `soapClientCustomerInsertUpdate.getCustomerNumberAsync Result ${JSON.stringify(result, null, 2)}`
|
// {
|
||||||
// );
|
// "uuid": "",
|
||||||
// CheckCdkResponseForError(socket, soapResponseCustomerInsertUpdate);
|
// "address": "jilldoe@test.com",
|
||||||
// const customerNumber = result && result.return && result.return.customerNumber;
|
// "type": "WORK",
|
||||||
// return customerNumber;
|
// "doNotEmailSource": "",
|
||||||
// } catch (error) {
|
// "doNotEmail": false,
|
||||||
// CdkBase.createXmlEvent(
|
// "isPreferred": false,
|
||||||
// socket,
|
// "transactionEmailNotificationOptIn": false,
|
||||||
// error.request,
|
// "optInRequestDate": null,
|
||||||
// `soapClientCustomerInsertUpdate.getCustomerNumberAsync request.`,
|
// "optInDate": null
|
||||||
// true
|
// }
|
||||||
// );
|
]
|
||||||
|
},
|
||||||
// CdkBase.createXmlEvent(
|
// // "doNotContact": false,
|
||||||
// socket,
|
// // "optOutDate": "",
|
||||||
// error.response && error.response.data,
|
// // "optOutTime": "",
|
||||||
// `soapClientCustomerInsertUpdate.getCustomerNumberAsync response.`,
|
// // "optOutFlag": false,
|
||||||
// true
|
// // "isDeleteDataFlag": false,
|
||||||
// );
|
// // "deleteDataDate": "",
|
||||||
// CdkBase.createLogEvent(socket, "ERROR", `Error in GenerateDmsCustomerNumber - ${error}`);
|
// // "deleteDataTime": "",
|
||||||
// throw new Error(error);
|
// // "blockMailFlag": true,
|
||||||
|
// // "dateAdded": "",
|
||||||
|
// // "employer": "employer",
|
||||||
|
// "insurance": {
|
||||||
|
// "policy": {
|
||||||
|
// "effectiveDate": "2022-01-01",
|
||||||
|
// "expirationDate": "2023-01-01",
|
||||||
|
// "number": "12345",
|
||||||
|
// "verifiedBy": "Agent",
|
||||||
|
// "verifiedDate": "2023-01-01",
|
||||||
|
// "insPolicyCollisionDed": "",
|
||||||
|
// "insPolicyComprehensiveDed": "",
|
||||||
|
// "insPolicyFireTheftDed": ""
|
||||||
|
// },
|
||||||
|
// "insuranceAgency": {
|
||||||
|
// "agencyName": "InsAgency",
|
||||||
|
// "agentName": "agent",
|
||||||
|
// "phoneNumber": "9999999999",
|
||||||
|
// "postalAddress": {
|
||||||
|
// "addressLine1": "999 Main St",
|
||||||
|
// "addressLine2": "Suite 999",
|
||||||
|
// "city": "Austin",
|
||||||
|
// "state": "TX",
|
||||||
|
// "postalCode": "78750",
|
||||||
|
// "county": "Travis",
|
||||||
|
// "country": "USA"
|
||||||
|
// }
|
||||||
|
// },
|
||||||
|
// "insuranceCompany": {
|
||||||
|
// "name": "InsCompany",
|
||||||
|
// "phoneNumber": "8888888888",
|
||||||
|
// "postalAddress": {
|
||||||
|
// "addressLine1": "888 Main St",
|
||||||
|
// "addressLine2": "Suite 888",
|
||||||
|
// "city": "Austin",
|
||||||
|
// "state": "TX",
|
||||||
|
// "postalCode": "78750",
|
||||||
|
// "county": "Travis",
|
||||||
|
// "country": "USA"
|
||||||
// }
|
// }
|
||||||
// }
|
// }
|
||||||
|
// },
|
||||||
|
// "specialInstructions": [
|
||||||
|
// {
|
||||||
|
// "lineNuber": "1",
|
||||||
|
// "specialInstruction": "specialInstruction1"
|
||||||
|
// },
|
||||||
|
// {
|
||||||
|
// "lineNuber": "2",
|
||||||
|
// "specialInstruction": "specialInstruction2"
|
||||||
|
// }
|
||||||
|
// ],
|
||||||
|
// "groupCode": "PT",
|
||||||
|
// "priceCode": "5",
|
||||||
|
// "roPriceCode": "5",
|
||||||
|
// "taxCode": "3145",
|
||||||
|
// "dealerLoyaltyIndicator": "PN612345",
|
||||||
|
// "delCdeServiceNames": "99",
|
||||||
|
// "deleteCode": "9999",
|
||||||
|
// "fleetFlag": "1",
|
||||||
|
// "dealerFields": [
|
||||||
|
// {
|
||||||
|
// "lineNumber": null,
|
||||||
|
// "dealerField": "Custom dealer field value 1"
|
||||||
|
// },
|
||||||
|
// {
|
||||||
|
// "lineNumber": null,
|
||||||
|
// "dealerField": "Custom dealer field value 2"
|
||||||
|
// },
|
||||||
|
// {
|
||||||
|
// "lineNumber": null,
|
||||||
|
// "dealerField": "Custom dealer field value 3"
|
||||||
|
// }
|
||||||
|
// ]
|
||||||
|
},
|
||||||
|
|
||||||
|
});
|
||||||
|
return result;
|
||||||
|
} catch (error) {
|
||||||
|
CreateFortellisLogEvent(socket, "ERROR", `Error in InsertDmsCustomer - ${error}`, { request: error.request });
|
||||||
|
}
|
||||||
|
|
||||||
// async function InsertDmsCustomer(socket, newCustomerNumber) {
|
|
||||||
// try {
|
// try {
|
||||||
// const soapClientCustomerInsertUpdate = await soap.createClientAsync(CdkWsdl.CustomerInsertUpdate);
|
// const soapClientCustomerInsertUpdate = await soap.createClientAsync(CdkWsdl.CustomerInsertUpdate);
|
||||||
// const soapResponseCustomerInsertUpdate = await soapClientCustomerInsertUpdate.insertAsync(
|
// const soapResponseCustomerInsertUpdate = await soapClientCustomerInsertUpdate.insertAsync(
|
||||||
@@ -420,82 +588,307 @@ async function QueryDmsCustomerByName({ socket, redisHelpers, JobData }) {
|
|||||||
// CdkBase.createLogEvent(socket, "ERROR", `Error in InsertDmsCustomer - ${error}`);
|
// CdkBase.createLogEvent(socket, "ERROR", `Error in InsertDmsCustomer - ${error}`);
|
||||||
// throw new Error(error);
|
// throw new Error(error);
|
||||||
// }
|
// }
|
||||||
// }
|
}
|
||||||
|
|
||||||
// async function InsertDmsVehicle(socket) {
|
async function InsertDmsVehicle({ socket, redisHelpers, JobData, txEnvelope, DMSVid, DMSCust }) {
|
||||||
// try {
|
try {
|
||||||
// const soapClientVehicleInsertUpdate = await soap.createClientAsync(CdkWsdl.VehicleInsertUpdate);
|
|
||||||
|
|
||||||
// const soapResponseVehicleInsertUpdate = await soapClientVehicleInsertUpdate.insertAsync({
|
const result = await MakeFortellisCall({
|
||||||
// arg0: CDK_CREDENTIALS,
|
...FortellisActions.InsertVehicle,
|
||||||
// arg1: { id: socket.JobData.bodyshop.cdk_dealerid },
|
requestSearchParams: {},
|
||||||
// arg2: {
|
headers: {},
|
||||||
// dealer: {
|
redisHelpers,
|
||||||
// dealerNumber: socket.JobData.bodyshop.cdk_dealerid,
|
socket,
|
||||||
// ...(socket.txEnvelope.inservicedate && {
|
jobid: JobData.id,
|
||||||
// inServiceDate:
|
body: {
|
||||||
// socket.txEnvelope.dms_unsold === true
|
"dealer": {
|
||||||
// ? ""
|
"company": JobData.bodyshop.cdk_configuration.srcco || "77",
|
||||||
// : moment(socket.txEnvelope.inservicedate)
|
// "dealNumber": "",
|
||||||
// //.tz(socket.JobData.bodyshop.timezone)
|
// "dealerAssignedNumber": "82268",
|
||||||
// .startOf("day")
|
// "dealerDefined1": "2WDSP",
|
||||||
// .toISOString()
|
// "dealerDefined2": "33732.71",
|
||||||
// }),
|
// "dealerDefined3": "",
|
||||||
// vehicleId: socket.DMSVid.vehiclesVehId
|
// "dealerDefined4": "G0901",
|
||||||
|
// "dealerDefined5": "",
|
||||||
|
// "dealerDefined6": "",
|
||||||
|
// "dealerDefined7": "",
|
||||||
|
// "dealerDefined8": "",
|
||||||
|
// "dealerNumber": "",
|
||||||
|
...(txEnvelope.inservicedate && {
|
||||||
|
inServiceDate:
|
||||||
|
txEnvelope.dms_unsold === true
|
||||||
|
? ""
|
||||||
|
: moment(txEnvelope.inservicedate)
|
||||||
|
//.tz(JobData.bodyshop.timezone)
|
||||||
|
.startOf("day")
|
||||||
|
.toISOString()
|
||||||
|
}),
|
||||||
|
//"lastServiceDate": "2011-11-23",
|
||||||
|
"vehicleId": DMSVid.vehiclesVehId,
|
||||||
|
// "vehicleLocation": "",
|
||||||
|
// "vehicleSoldDate": "2021-04-06",
|
||||||
|
// "wholesaleVehicleInd": false
|
||||||
|
},
|
||||||
|
// "manufacturer": {
|
||||||
|
// "name": "",
|
||||||
|
// "plant": "",
|
||||||
|
// "productionNumber": "PZPKM6",
|
||||||
|
// "vehicleProductionDate": "2020-04-06"
|
||||||
// },
|
// },
|
||||||
// manufacturer: {},
|
// "invoice": {
|
||||||
// vehicle: {
|
// "entryDate": "2012-01-19",
|
||||||
// deliveryDate:
|
// "freight": {
|
||||||
// socket.txEnvelope.dms_unsold === true
|
// "freightInCharge": 995.95,
|
||||||
// ? ""
|
// "freightOutCharge": 95.95,
|
||||||
// : moment()
|
// "freightTaxCharge": 5.95
|
||||||
// // .tz(socket.JobData.bodyshop.timezone)
|
|
||||||
// .format("YYYYMMDD"),
|
|
||||||
// licensePlateNo:
|
|
||||||
// socket.JobData.plate_no === null
|
|
||||||
// ? null
|
|
||||||
// : String(socket.JobData.plate_no).replace(/([^\w]|_)/g, "").length === 0
|
|
||||||
// ? null
|
|
||||||
// : String(socket.JobData.plate_no)
|
|
||||||
// .replace(/([^\w]|_)/g, "")
|
|
||||||
// .toUpperCase(),
|
|
||||||
// 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: {
|
// "vehicleAcquisitionDate": "2012-01-18",
|
||||||
// id: {
|
// "vehicleOrderDate": "2012-01-12",
|
||||||
// assigningPartyId: "CURRENT",
|
// "vehicleOrderNumber": "",
|
||||||
// value: socket.DMSCust.id.value
|
// "vehicleOrderPriority": "",
|
||||||
// }
|
// "vehicleOrderType": "TRE RETAIL - STOCK"
|
||||||
// }
|
|
||||||
// },
|
// },
|
||||||
// arg3: "VEHICLES"
|
"vehicle": {
|
||||||
// });
|
// "axleCode": "GU6/3.42 REAR AXLE RATIO",
|
||||||
|
// "axleCount": 2,
|
||||||
// const [result, rawResponse, , rawRequest] = soapResponseVehicleInsertUpdate;
|
// "bodyStyle": "PU",
|
||||||
|
// "brakeSystem": "",
|
||||||
// CdkBase.createXmlEvent(socket, rawRequest, `soapClientVehicleInsertUpdate.insertAsync request.`);
|
// "cabType": "",
|
||||||
|
// "certifiedPreownedInd": false,
|
||||||
// CdkBase.createLogEvent(
|
// "certifiedPreownedNumber": "",
|
||||||
// socket,
|
// "chassis": "",
|
||||||
// "SILLY",
|
// "color": "",
|
||||||
// `soapClientVehicleInsertUpdate.insertAsync Result ${JSON.stringify(result, null, 2)}`
|
// "dealerBodyStyle": "",
|
||||||
// );
|
deliveryDate:
|
||||||
// CdkBase.createXmlEvent(socket, rawResponse, `soapClientVehicleInsertUpdate.insertAsync response.`);
|
txEnvelope.dms_unsold === true
|
||||||
// CheckCdkResponseForError(socket, soapResponseVehicleInsertUpdate);
|
? ""
|
||||||
// const VehicleFromDMS = result && result.return && result.return.vehicle;
|
: moment()
|
||||||
// return VehicleFromDMS;
|
// .tz(JobData.bodyshop.timezone)
|
||||||
// } catch (error) {
|
.format("YYYY-MM-DD"),
|
||||||
// CdkBase.createLogEvent(socket, "ERROR", `Error in InsertDmsVehicle - ${error}`);
|
// "deliveryMileage": 4,
|
||||||
// throw new Error(error);
|
// "doorsQuantity": 4,
|
||||||
|
// "engineNumber": "",
|
||||||
|
// "engineType": "LMG/VORTEC 5.3L VVT V8 SFI FLEXFUEL",
|
||||||
|
// "exteriorColor": "",
|
||||||
|
// "fleetVehicleId": "",
|
||||||
|
// "frontTireCode": "",
|
||||||
|
// "gmRPOCode": "",
|
||||||
|
// "ignitionKeyNumber": "",
|
||||||
|
// "interiorColor": "EBONY",
|
||||||
|
licensePlateNo:
|
||||||
|
JobData.plate_no === null
|
||||||
|
? null
|
||||||
|
: String(JobData.plate_no).replace(/([^\w]|_)/g, "").length === 0
|
||||||
|
? null
|
||||||
|
: String(JobData.plate_no)
|
||||||
|
.replace(/([^\w]|_)/g, "")
|
||||||
|
.toUpperCase(),
|
||||||
|
make: txEnvelope.dms_make,
|
||||||
|
// "model": "CC10753",
|
||||||
|
modelAbrev: txEnvelope.dms_model,
|
||||||
|
// "modelDescription": "SILVERADO 1500 2WD EXT CAB LT",
|
||||||
|
// "modelType": "T",
|
||||||
|
modelYear: JobData.v_model_yr,
|
||||||
|
// "numberOfEngineCylinders": 4,
|
||||||
|
odometerStatus: txEnvelope.kmout,
|
||||||
|
// "options": [
|
||||||
|
// {
|
||||||
|
// "optionCategory": "SS",
|
||||||
|
// "optionCode": "A95",
|
||||||
|
// "optionCost": 875.6,
|
||||||
|
// "optionDescription": "FRONT BUCKET SEATS INCLUDING: PWR SEAT ADJUST DRIVER 6-WAY",
|
||||||
|
// "optionPrices": [
|
||||||
|
// {
|
||||||
|
// "optionPricingType": "RETAIL",
|
||||||
|
// "price": 995
|
||||||
|
// },
|
||||||
|
// {
|
||||||
|
// "optionPricingType": "INVOICE",
|
||||||
|
// "price": 875.6
|
||||||
// }
|
// }
|
||||||
|
// ]
|
||||||
|
// },
|
||||||
|
// {
|
||||||
|
// "optionCategory": "E",
|
||||||
|
// "optionCode": "LMG",
|
||||||
|
// "optionCost": 0,
|
||||||
|
// "optionDescription": "VORTEC 5.3L V8 SFI ENGINE W/ACTIVE FUEL MANAGEMENT",
|
||||||
|
// "optionPrices": [
|
||||||
|
// {
|
||||||
|
// "optionPricingType": "RETAIL",
|
||||||
|
// "price": 0
|
||||||
|
// },
|
||||||
|
// {
|
||||||
|
// "optionPricingType": "INVOICE",
|
||||||
|
// "price": 0
|
||||||
// }
|
// }
|
||||||
|
// ]
|
||||||
|
// }
|
||||||
|
// ],
|
||||||
|
// "rearTireCode": "",
|
||||||
|
// "restraintSystem": "",
|
||||||
|
saleClassValue: "MISC",
|
||||||
|
// "sourceCodeValue": "",
|
||||||
|
// "sourceDescription": "",
|
||||||
|
// "standardEquipment": "",
|
||||||
|
// "stickerNumber": "",
|
||||||
|
// "transmissionType": "A",
|
||||||
|
// "transmissionNo": "MYC/ELECTRONIC 6-SPEED AUTOMATIC W/OD",
|
||||||
|
// "trimCode": "",
|
||||||
|
// "vehicleNote": "",
|
||||||
|
// "vehiclePrices": [
|
||||||
|
// {
|
||||||
|
// "price": 35894,
|
||||||
|
// "vehiclePricingType": "SELLINGPRICE"
|
||||||
|
// },
|
||||||
|
// {
|
||||||
|
// "price": 33749.87,
|
||||||
|
// "vehiclePricingType": "INVOICE"
|
||||||
|
// },
|
||||||
|
// {
|
||||||
|
// "price": 36472,
|
||||||
|
// "vehiclePricingType": "RETAIL"
|
||||||
|
// },
|
||||||
|
// {
|
||||||
|
// "price": 28276.66,
|
||||||
|
// "vehiclePricingType": "BASEINVOICE"
|
||||||
|
// },
|
||||||
|
// {
|
||||||
|
// "price": 30405,
|
||||||
|
// "vehiclePricingType": "BASERETAIL"
|
||||||
|
// },
|
||||||
|
// {
|
||||||
|
// "price": 33749.87,
|
||||||
|
// "vehiclePricingType": "COMMISSIONPRICE"
|
||||||
|
// },
|
||||||
|
// {
|
||||||
|
// "price": 32702.9,
|
||||||
|
// "vehiclePricingType": "DRAFTAMOUNT"
|
||||||
|
// }
|
||||||
|
// ],
|
||||||
|
// "vehicleStatus": "G",
|
||||||
|
// "vehicleStock": "82268",
|
||||||
|
// "vehicleWeight": "6800",
|
||||||
|
vin: JobData.v_vin
|
||||||
|
// "warrantyExpDate": "2015-01-12",
|
||||||
|
// "wheelbase": ""
|
||||||
|
},
|
||||||
|
"owners": [
|
||||||
|
{
|
||||||
|
"id": {
|
||||||
|
assigningPartyId: "CURRENT",
|
||||||
|
value: DMSCust.customerId
|
||||||
|
},
|
||||||
|
|
||||||
|
}
|
||||||
|
],
|
||||||
|
//"inventoryAccount": "237"
|
||||||
|
},
|
||||||
|
|
||||||
|
});
|
||||||
|
return result.data;
|
||||||
|
} catch (error) {
|
||||||
|
CreateFortellisLogEvent(socket, "ERROR", `Error in InsertDmsVehicle - ${error}`, { request: error.request });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async function UpdateDmsVehicle({ socket, redisHelpers, JobData, DMSVeh, DMSCust, selectedCustomerId, txEnvelope }) {
|
||||||
|
try {
|
||||||
|
|
||||||
|
let ids = [];
|
||||||
|
|
||||||
|
//if it's a generic customer, don't update the vehicle owners.
|
||||||
|
|
||||||
|
if (selectedCustomerId === JobData.bodyshop.cdk_configuration.generic_customer_number) {
|
||||||
|
ids = DMSVeh && DMSVeh.owners && DMSVeh.owners;
|
||||||
|
} else {
|
||||||
|
const existingOwnerinVeh =
|
||||||
|
DMSVeh &&
|
||||||
|
DMSVeh.owners &&
|
||||||
|
DMSVeh.owners.find((o) => o.id.value === DMSCust.customerId);
|
||||||
|
|
||||||
|
if (existingOwnerinVeh) {
|
||||||
|
ids = DMSVeh.owners.map((o) => {
|
||||||
|
return {
|
||||||
|
id: {
|
||||||
|
assigningPartyId: o.id.value === DMSCust.customerId ? "CURRENT" : "PREVIOUS",
|
||||||
|
value: o.id.value
|
||||||
|
}
|
||||||
|
};
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
const oldOwner =
|
||||||
|
DMSVeh &&
|
||||||
|
DMSVeh.owners &&
|
||||||
|
DMSVeh.owners.find((o) => o.id.assigningPartyId === "CURRENT");
|
||||||
|
|
||||||
|
ids = [
|
||||||
|
{
|
||||||
|
id: {
|
||||||
|
assigningPartyId: "CURRENT",
|
||||||
|
value: DMSCust.customerId
|
||||||
|
}
|
||||||
|
},
|
||||||
|
...(oldOwner
|
||||||
|
? [
|
||||||
|
{
|
||||||
|
id: {
|
||||||
|
assigningPartyId: "PREVIOUS",
|
||||||
|
value: oldOwner.id
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
: [])
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const result = await MakeFortellisCall({
|
||||||
|
...FortellisActions.UpdateVehicle,
|
||||||
|
requestSearchParams: {},
|
||||||
|
headers: {},
|
||||||
|
redisHelpers,
|
||||||
|
socket,
|
||||||
|
jobid: JobData.id,
|
||||||
|
body: {
|
||||||
|
...DMSVeh,
|
||||||
|
dealer: {
|
||||||
|
...DMSVeh.dealer,
|
||||||
|
...((txEnvelope.inservicedate || DMSVeh.dealer.inServiceDate) && {
|
||||||
|
inServiceDate:
|
||||||
|
txEnvelope.dms_unsold === true
|
||||||
|
? ""
|
||||||
|
: moment(DMSVeh.dealer.inServiceDate || txEnvelope.inservicedate)
|
||||||
|
// .tz(JobData.bodyshop.timezone)
|
||||||
|
.toISOString()
|
||||||
|
})
|
||||||
|
},
|
||||||
|
vehicle: {
|
||||||
|
...DMSVeh.vehicle,
|
||||||
|
...(txEnvelope.dms_model_override
|
||||||
|
? {
|
||||||
|
make: txEnvelope.dms_make,
|
||||||
|
modelAbrev: txEnvelope.dms_model
|
||||||
|
}
|
||||||
|
: {}),
|
||||||
|
deliveryDate:
|
||||||
|
txEnvelope.dms_unsold === true
|
||||||
|
? ""
|
||||||
|
: moment(DMSVeh.vehicle.deliveryDate)
|
||||||
|
//.tz(JobData.bodyshop.timezone)
|
||||||
|
.toISOString()
|
||||||
|
},
|
||||||
|
owners: ids
|
||||||
|
},
|
||||||
|
|
||||||
|
});
|
||||||
|
return result;
|
||||||
|
} catch (error) {
|
||||||
|
CreateFortellisLogEvent(socket, "ERROR", `Error in UpdateDmsVehicle - ${error}`, { request: error.request });
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
|
||||||
// async function UpdateDmsVehicle(socket) {
|
|
||||||
// try {
|
// try {
|
||||||
// const soapClientVehicleInsertUpdate = await soap.createClientAsync(CdkWsdl.VehicleInsertUpdate);
|
// const soapClientVehicleInsertUpdate = await soap.createClientAsync(CdkWsdl.VehicleInsertUpdate);
|
||||||
|
|
||||||
@@ -599,7 +992,7 @@ async function QueryDmsCustomerByName({ socket, redisHelpers, JobData }) {
|
|||||||
// CdkBase.createLogEvent(socket, "ERROR", `Error in UpdateDmsVehicle - ${error}`);
|
// CdkBase.createLogEvent(socket, "ERROR", `Error in UpdateDmsVehicle - ${error}`);
|
||||||
// throw new Error(error);
|
// throw new Error(error);
|
||||||
// }
|
// }
|
||||||
// }
|
}
|
||||||
|
|
||||||
// async function InsertServiceVehicleHistory(socket) {
|
// async function InsertServiceVehicleHistory(socket) {
|
||||||
// try {
|
// try {
|
||||||
@@ -984,4 +1377,4 @@ async function QueryDmsCustomerByName({ socket, redisHelpers, JobData }) {
|
|||||||
// }
|
// }
|
||||||
|
|
||||||
exports.getTransactionType = getTransactionType;
|
exports.getTransactionType = getTransactionType;
|
||||||
exports.default = FortellisJobExport;
|
exports.FortellisJobExport = FortellisJobExport;
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
const { admin } = require("../firebase/firebase-handler");
|
const { admin } = require("../firebase/firebase-handler");
|
||||||
const FortellisJobExport = require("../fortellis/fortellis").default;
|
const { FortellisJobExport, FortellisSelectedCustomer } = require("../fortellis/fortellis");
|
||||||
const FortellisLogger = require("../fortellis/fortellis-logger");
|
const FortellisLogger = require("../fortellis/fortellis-logger");
|
||||||
|
|
||||||
const redisSocketEvents = ({
|
const redisSocketEvents = ({
|
||||||
@@ -272,6 +272,33 @@ const redisSocketEvents = ({
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
socket.on("fortellis-selected-customer", async ({ jobid, selectedCustomerId }) => {
|
||||||
|
try {
|
||||||
|
await FortellisSelectedCustomer({
|
||||||
|
socket,
|
||||||
|
redisHelpers: {
|
||||||
|
setSessionData,
|
||||||
|
getSessionData,
|
||||||
|
addUserSocketMapping,
|
||||||
|
removeUserSocketMapping,
|
||||||
|
refreshUserSocketTTL,
|
||||||
|
getUserSocketMappingByBodyshop,
|
||||||
|
setSessionTransactionData,
|
||||||
|
getSessionTransactionData,
|
||||||
|
clearSessionTransactionData
|
||||||
|
},
|
||||||
|
ioHelpers: { getBodyshopRoom, getBodyshopConversationRoom },
|
||||||
|
jobid,
|
||||||
|
selectedCustomerId
|
||||||
|
});
|
||||||
|
} catch (error) {
|
||||||
|
FortellisLogger(socket, "error", `Error during Fortellis export : ${error.message}`);
|
||||||
|
logger.log("fortellis-selectd-customer-error", "error", null, null, {
|
||||||
|
message: error.message,
|
||||||
|
stack: error.stack
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
// Call Handlers
|
// Call Handlers
|
||||||
|
|||||||
Reference in New Issue
Block a user