diff --git a/_reference/Fortellis Feedback.md b/_reference/Fortellis Feedback.md
new file mode 100644
index 000000000..39e9b1d92
--- /dev/null
+++ b/_reference/Fortellis Feedback.md
@@ -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.
\ No newline at end of file
diff --git a/client/src/components/dms-customer-selector/dms-customer-selector.component.jsx b/client/src/components/dms-customer-selector/dms-customer-selector.component.jsx
index e38ad0a27..757434e6b 100644
--- a/client/src/components/dms-customer-selector/dms-customer-selector.component.jsx
+++ b/client/src/components/dms-customer-selector/dms-customer-selector.component.jsx
@@ -17,7 +17,7 @@ const mapDispatchToProps = (dispatch) => ({
});
export default connect(mapStateToProps, mapDispatchToProps)(DmsCustomerSelector);
-export function DmsCustomerSelector({ bodyshop }) {
+export function DmsCustomerSelector({ bodyshop, jobid }) {
const { t } = useTranslation();
const [customerList, setcustomerList] = useState([]);
const [open, setOpen] = useState(false);
@@ -38,7 +38,7 @@ export function DmsCustomerSelector({ bodyshop }) {
if (Fortellis.treatment === "on") {
const handleFortellisSelectCustomer = (customerList, callback) => {
setOpen(true);
- setDmsType("fortellis");
+ setDmsType("cdk");
setcustomerList(customerList);
};
wsssocket.on("fortellis-select-customer", handleFortellisSelectCustomer);
@@ -67,7 +67,11 @@ export function DmsCustomerSelector({ bodyshop }) {
const onUseSelected = () => {
setOpen(false);
- socket.emit(`${dmsType}-selected-customer`, selectedCustomer);
+ if (Fortellis.treatment === "on") {
+ wsssocket.emit(`fortellis-selected-customer`, { selectedCustomerId: selectedCustomer, jobid });
+ } else {
+ socket.emit(`${dmsType}-selected-customer`, selectedCustomer);
+ }
setSelectedCustomer(null);
};
diff --git a/client/src/components/dms-post-form/dms-post-form.component.jsx b/client/src/components/dms-post-form/dms-post-form.component.jsx
index 44076b01c..48baecba9 100644
--- a/client/src/components/dms-post-form/dms-post-form.component.jsx
+++ b/client/src/components/dms-post-form/dms-post-form.component.jsx
@@ -72,7 +72,13 @@ export function DmsPostForm({ bodyshop, socket, job, logsRef }) {
const handleFinish = (values) => {
//TODO: Add this as a split instead.
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 {
socket.emit(`${determineDmsType(bodyshop)}-export-job`, {
jobid: job.id,
diff --git a/client/src/pages/dms/dms.container.jsx b/client/src/pages/dms/dms.container.jsx
index 155fa5433..2b7a161b3 100644
--- a/client/src/pages/dms/dms.container.jsx
+++ b/client/src/pages/dms/dms.container.jsx
@@ -201,7 +201,7 @@ export function DmsContainer({ bodyshop, setBreadcrumbs, setSelectedHeader, inse
-
+
diff --git a/server/fortellis/fortellis-helpers.js b/server/fortellis/fortellis-helpers.js
index 41ecdcaa5..893ac1fd6 100644
--- a/server/fortellis/fortellis-helpers.js
+++ b/server/fortellis/fortellis-helpers.js
@@ -175,6 +175,17 @@ async function MakeFortellisCall({
}
});
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) {
@@ -266,6 +277,34 @@ const FortellisActions = {
type: "get",
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: {
type: "get",
apiName: "CDK Drive Post Accounts GL WIP",
@@ -277,7 +316,14 @@ const FortellisActions = {
const FortellisCacheEnums = {
txEnvelope: "txEnvelope",
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 = [] }) {
diff --git a/server/fortellis/fortellis.js b/server/fortellis/fortellis.js
index b36310fa0..530a211f7 100644
--- a/server/fortellis/fortellis.js
+++ b/server/fortellis/fortellis.js
@@ -14,9 +14,8 @@ const {
defaultFortellisTTL,
FortellisCacheEnums
} = require("./fortellis-helpers");
-const { last } = require("lodash");
-
-// const moment = require("moment-timezone");
+const _ = require("lodash");
+const moment = require("moment-timezone");
const replaceSpecialRegex = /[^a-zA-Z0-9 .,\n #]+/g;
@@ -28,15 +27,15 @@ async function FortellisJobExport({
jobid
}) {
const {
- setSessionData,
- getSessionData,
- addUserSocketMapping,
- removeUserSocketMapping,
- refreshUserSocketTTL,
- getUserSocketMappingByBodyshop,
+ // setSessionData,
+ // getSessionData,
+ // addUserSocketMapping,
+ // removeUserSocketMapping,
+ // refreshUserSocketTTL,
+ // getUserSocketMappingByBodyshop,
setSessionTransactionData,
- getSessionTransactionData,
- clearSessionTransactionData
+ // getSessionTransactionData,
+ // clearSessionTransactionData
} = redisHelpers;
try {
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.
- 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}`);
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;
- if (DMSVid.newId === "N") {
+ if (!DMSVid.newId) {
CreateFortellisLogEvent(
socket,
"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 });
- await setSessionTransactionData(socket.id, getTransactionType(jobid), `DMSVeh`, DMSVeh, defaultFortellisTTL);
+ await setSessionTransactionData(socket.id, getTransactionType(jobid), FortellisCacheEnums.DMSVeh, DMSVeh, defaultFortellisTTL);
const DMSVehCustomerFromVehicle =
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}`
);
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.`);
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", [
@@ -99,86 +98,126 @@ async function FortellisJobExport({
-// async function CdkSelectedCustomer(socket, selectedCustomerId) {
-// try {
-// socket.selectedCustomerId = selectedCustomerId;
-// 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);
-// }
+async function FortellisSelectedCustomer({ socket, redisHelpers, ioHelpers, selectedCustomerId, jobid }) {
+ try {
+ const {
+ // setSessionData,
+ // getSessionData,
+ // addUserSocketMapping,
+ // removeUserSocketMapping,
+ // refreshUserSocketTTL,
+ // getUserSocketMappingByBodyshop,
+ setSessionTransactionData,
+ getSessionTransactionData,
+ //clearSessionTransactionData
+ } = redisHelpers;
-// 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);
-// }
+ await setSessionTransactionData(socket.id, getTransactionType(jobid), FortellisCacheEnums.selectedCustomerId, selectedCustomerId, defaultFortellisTTL);
+ const JobData = await getSessionTransactionData(socket.id, getTransactionType(jobid), FortellisCacheEnums.JobData);
+ const txEnvelope = await getSessionTransactionData(socket.id, getTransactionType(jobid), FortellisCacheEnums.txEnvelope);
+ const DMSVid = await redisHelpers.getSessionTransactionData(socket.id, getTransactionType(JobData.id), FortellisCacheEnums.DMSVid);
-// CdkBase.createLogEvent(socket, "DEBUG", `{5} Creating Transaction header with Dms Start WIP`);
-// socket.DMSTransHeader = await InsertDmsStartWip(socket);
-// CdkBase.createLogEvent(socket, "DEBUG", `{5.1} Creating Transaction with ID ${socket.DMSTransHeader.transID}`);
-// socket.DMSBatchTxn = await InsertDmsBatchWip(socket);
-// CdkBase.createLogEvent(
-// socket,
-// "DEBUG",
-// `{6} Attempting to post Transaction with ID ${socket.DMSTransHeader.transID}`
-// );
-// socket.DmsBatchTxnPost = await PostDmsBatchWip(socket);
-// if (socket.DmsBatchTxnPost.code === "success") {
-// //something
-// CdkBase.createLogEvent(socket, "DEBUG", `{6} Successfully posted sransaction to DMS.`);
+ 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);
+ }
-// await MarkJobExported(socket, socket.JobData.id);
+ 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 });
-// CdkBase.createLogEvent(socket, "DEBUG", `{5} Updating Service Vehicle History.`);
-// socket.DMSVehHistory = await InsertServiceVehicleHistory(socket);
-// socket.emit("export-success", socket.JobData.id);
-// } else {
-// //Get the error code
-// CdkBase.createLogEvent(
-// socket,
-// "DEBUG",
-// `{6.1} Getting errors for Transaction ID ${socket.DMSTransHeader.transID}`
-// );
-// socket.DmsError = await QueryDmsErrWip(socket);
-// //Delete the transaction
-// CdkBase.createLogEvent(socket, "DEBUG", `{6.2} Deleting Transaction ID ${socket.DMSTransHeader.transID}`);
-// socket.DmsBatchTxnPost = await DeleteDmsWip(socket);
+ 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.
-// socket.DmsError.errMsg
-// .split("|")
-// .map(
-// (e) =>
-// e !== null &&
-// e !== "" &&
-// CdkBase.createLogEvent(socket, "ERROR", `Error(s) encountered in posting transaction. ${e}`)
-// );
-// }
-// } catch (error) {
-// CdkBase.createLogEvent(socket, "ERROR", `Error encountered in CdkSelectedCustomer. ${error}`);
-// await InsertFailedExportLog(socket, error);
-// } finally {
-// //Ensure we always insert logEvents
-// //GQL to insert logevents.
-// CdkBase.createLogEvent(socket, "DEBUG", `Capturing log events to database.`);
-// }
-//}
+ console.log(DMSVeh)
+ // CdkBase.createLogEvent(socket, "DEBUG", `{5} Creating Transaction header with Dms Start WIP`);
+ // socket.DMSTransHeader = await InsertDmsStartWip(socket);
+ // CdkBase.createLogEvent(socket, "DEBUG", `{5.1} Creating Transaction with ID ${socket.DMSTransHeader.transID}`);
-// exports.CdkSelectedCustomer = CdkSelectedCustomer;
+ // socket.DMSBatchTxn = await InsertDmsBatchWip(socket);
+ // CdkBase.createLogEvent(
+ // socket,
+ // "DEBUG",
+ // `{6} Attempting to post Transaction with ID ${socket.DMSTransHeader.transID}`
+ // );
+ // socket.DmsBatchTxnPost = await PostDmsBatchWip(socket);
+ // if (socket.DmsBatchTxnPost.code === "success") {
+ // //something
+ // CdkBase.createLogEvent(socket, "DEBUG", `{6} Successfully posted sransaction to DMS.`);
+
+ // await MarkJobExported(socket, socket.JobData.id);
+
+ // CdkBase.createLogEvent(socket, "DEBUG", `{5} Updating Service Vehicle History.`);
+ // socket.DMSVehHistory = await InsertServiceVehicleHistory(socket);
+ // socket.emit("export-success", socket.JobData.id);
+ // } else {
+ // //Get the error code
+ // CdkBase.createLogEvent(
+ // socket,
+ // "DEBUG",
+ // `{6.1} Getting errors for Transaction ID ${socket.DMSTransHeader.transID}`
+ // );
+ // socket.DmsError = await QueryDmsErrWip(socket);
+ // //Delete the transaction
+ // CdkBase.createLogEvent(socket, "DEBUG", `{6.2} Deleting Transaction ID ${socket.DMSTransHeader.transID}`);
+ // socket.DmsBatchTxnPost = await DeleteDmsWip(socket);
+
+ // socket.DmsError.errMsg
+ // .split("|")
+ // .map(
+ // (e) =>
+ // e !== null &&
+ // e !== "" &&
+ // CdkBase.createLogEvent(socket, "ERROR", `Error(s) encountered in posting transaction. ${e}`)
+ // );
+ // }
+ } catch (error) {
+ // CdkBase.createLogEvent(socket, "ERROR", `Error encountered in CdkSelectedCustomer. ${error}`);
+ // await InsertFailedExportLog(socket, error);
+ } finally {
+ //Ensure we always insert logEvents
+ //GQL to insert logevents.
+
+ //CdkBase.createLogEvent(socket, "DEBUG", `Capturing log events to database.`);
+ }
+}
+
+exports.FortellisSelectedCustomer = FortellisSelectedCustomer;
async function QueryJobData({ socket, jobid }) {
const client = new GraphQLClient(process.env.GRAPHQL_ENDPOINT, {});
@@ -217,8 +256,7 @@ async function QueryDmsVehicleById({ socket, redisHelpers, JobData, DMSVid }) {
jobid: JobData.id,
body: {},
});
- const VehicleFromDMS = result && result.return && result.return.vehicle;
- return VehicleFromDMS;
+ return result;
} catch (error) {
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 }) {
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 = await MakeFortellisCall({
+ ...FortellisActions.ReadCustomer,
+ requestPathParams: CustomerId,
+ headers: {},
+ redisHelpers,
+ socket,
+ jobid: JobData.id,
+ body: {},
+
});
-
- 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;
+ return result.data;
} 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);
+ CreateFortellisLogEvent(socket, "ERROR", `Error in QueryDmsCustomerById - ${error}`, { request: error.request });
}
}
@@ -293,313 +309,690 @@ async function QueryDmsCustomerByName({ socket, redisHelpers, JobData }) {
}
}
-// 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 }
-// },
+async function InsertDmsCustomer({ socket, redisHelpers, JobData }) {
-// {}
-// );
+ try {
+ const result = await MakeFortellisCall({
+ ...FortellisActions.CreateCustomer,
+ headers: {},
+ redisHelpers,
+ 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": [
-// const [result, rawResponse, , rawRequest] = soapResponseCustomerInsertUpdate;
+ !_.isEmpty(socket.JobData.ownr_ea) ?
+ [{
+ //"uuid": "",
+ "address": socket.JobData.ownr_ea,
+ // "type": "PERSONAL",
+ // "doNotEmailSource": "",
+ // "doNotEmail": false,
+ // "isPreferred": true,
+ // "transactionEmailNotificationOptIn": false,
+ // "optInRequestDate": null,
+ // "optInDate": null
+ }] : [],
+ // {
+ // "uuid": "",
+ // "address": "jilldoe@test.com",
+ // "type": "WORK",
+ // "doNotEmailSource": "",
+ // "doNotEmail": false,
+ // "isPreferred": false,
+ // "transactionEmailNotificationOptIn": false,
+ // "optInRequestDate": null,
+ // "optInDate": null
+ // }
+ ]
+ },
+ // // "doNotContact": false,
+ // // "optOutDate": "",
+ // // "optOutTime": "",
+ // // "optOutFlag": false,
+ // // "isDeleteDataFlag": false,
+ // // "deleteDataDate": "",
+ // // "deleteDataTime": "",
+ // // "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"
+ // }
+ // ]
+ },
-// CdkBase.createXmlEvent(socket, rawRequest, `soapClientCustomerInsertUpdate.getCustomerNumberAsync request.`);
+ });
+ return result;
+ } catch (error) {
+ CreateFortellisLogEvent(socket, "ERROR", `Error in InsertDmsCustomer - ${error}`, { request: error.request });
+ }
-// CdkBase.createXmlEvent(socket, rawResponse, `soapClientCustomerInsertUpdate.getCustomerNumberAsync response.`);
+ // try {
+ // const soapClientCustomerInsertUpdate = await soap.createClientAsync(CdkWsdl.CustomerInsertUpdate);
+ // const soapResponseCustomerInsertUpdate = await soapClientCustomerInsertUpdate.insertAsync(
+ // {
+ // arg0: CDK_CREDENTIALS,
+ // arg1: { dealerId: socket.JobData.bodyshop.cdk_dealerid },
+ // 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 && socket.JobData.ownr_addr1.replace(replaceSpecialRegex, ""),
+ // city: socket.JobData.ownr_city && socket.JobData.ownr_city.replace(replaceSpecialRegex, ""),
+ // country: socket.JobData.ownr_ctry && socket.JobData.ownr_ctry.replace(replaceSpecialRegex, ""),
+ // postalCode: InstanceMgr({
+ // imex:
+ // socket.JobData.ownr_zip &&
+ // socket.JobData.ownr_zip //TODO Need to remove for US Based customers.
+ // .toUpperCase()
+ // .replace(/\W/g, "")
+ // .replace(/(...)/, "$1 "),
+ // rome: socket.JobData.ownr_zip
+ // }),
+ // stateOrProvince: socket.JobData.ownr_st && socket.JobData.ownr_st.replace(replaceSpecialRegex, "")
+ // },
+ // contactInfo: {
+ // mainTelephoneNumber: {
+ // main: true,
+ // value: socket.JobData.ownr_ph1 && socket.JobData.ownr_ph1.replace(replaceSpecialRegex, "")
+ // },
+ // email: {
+ // desc: socket.JobData.ownr_ea ? "Other" : "CustomerDeclined",
+ // value: socket.JobData.ownr_ea ? socket.JobData.ownr_ea : null
+ // }
+ // },
+ // demographics: null,
+ // name1: {
+ // companyName:
+ // socket.JobData.ownr_co_nm && socket.JobData.ownr_co_nm.replace(replaceSpecialRegex, "").toUpperCase(),
-// CdkBase.createLogEvent(
-// socket,
-// "SILLY",
-// `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
-// );
+ // firstName: socket.JobData.ownr_fn && socket.JobData.ownr_fn.replace(replaceSpecialRegex, "").toUpperCase(),
+ // fullname: null,
+ // lastName: socket.JobData.ownr_ln && socket.JobData.ownr_ln.replace(replaceSpecialRegex, "").toUpperCase(),
+ // middleName: null,
+ // nameType:
+ // socket.JobData.ownr_co_nm && String(socket.JobData.ownr_co_nm).trim() !== "" ? "Business" : "Person",
+ // suffix: null,
+ // title: null
+ // }
+ // }
+ // },
-// 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 },
-// 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 && socket.JobData.ownr_addr1.replace(replaceSpecialRegex, ""),
-// city: socket.JobData.ownr_city && socket.JobData.ownr_city.replace(replaceSpecialRegex, ""),
-// country: socket.JobData.ownr_ctry && socket.JobData.ownr_ctry.replace(replaceSpecialRegex, ""),
-// postalCode: InstanceMgr({
-// imex:
-// socket.JobData.ownr_zip &&
-// socket.JobData.ownr_zip //TODO Need to remove for US Based customers.
-// .toUpperCase()
-// .replace(/\W/g, "")
-// .replace(/(...)/, "$1 "),
-// rome: socket.JobData.ownr_zip
-// }),
-// stateOrProvince: socket.JobData.ownr_st && socket.JobData.ownr_st.replace(replaceSpecialRegex, "")
-// },
-// contactInfo: {
-// mainTelephoneNumber: {
-// main: true,
-// value: socket.JobData.ownr_ph1 && socket.JobData.ownr_ph1.replace(replaceSpecialRegex, "")
-// },
-// email: {
-// desc: socket.JobData.ownr_ea ? "Other" : "CustomerDeclined",
-// value: socket.JobData.ownr_ea ? socket.JobData.ownr_ea : null
-// }
-// },
-// demographics: null,
-// name1: {
-// companyName:
-// socket.JobData.ownr_co_nm && socket.JobData.ownr_co_nm.replace(replaceSpecialRegex, "").toUpperCase(),
+ // const [result, rawResponse, , rawRequest] = soapResponseCustomerInsertUpdate;
+ // CdkBase.createXmlEvent(socket, rawRequest, `soapClientCustomerInsertUpdate.insertAsync request.`);
-// firstName: socket.JobData.ownr_fn && socket.JobData.ownr_fn.replace(replaceSpecialRegex, "").toUpperCase(),
-// fullname: null,
-// lastName: socket.JobData.ownr_ln && socket.JobData.ownr_ln.replace(replaceSpecialRegex, "").toUpperCase(),
-// middleName: null,
-// nameType:
-// socket.JobData.ownr_co_nm && String(socket.JobData.ownr_co_nm).trim() !== "" ? "Business" : "Person",
-// suffix: null,
-// title: null
-// }
-// }
-// },
+ // CdkBase.createXmlEvent(socket, rawResponse, `soapClientCustomerInsertUpdate.insertAsync response.`);
+ // CdkBase.createLogEvent(
+ // socket,
+ // "SILLY",
+ // `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);
+ // }
+}
-// const [result, rawResponse, , rawRequest] = soapResponseCustomerInsertUpdate;
-// CdkBase.createXmlEvent(socket, rawRequest, `soapClientCustomerInsertUpdate.insertAsync request.`);
+async function InsertDmsVehicle({ socket, redisHelpers, JobData, txEnvelope, DMSVid, DMSCust }) {
+ try {
-// CdkBase.createXmlEvent(socket, rawResponse, `soapClientCustomerInsertUpdate.insertAsync response.`);
-// CdkBase.createLogEvent(
-// socket,
-// "SILLY",
-// `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);
+ const result = await MakeFortellisCall({
+ ...FortellisActions.InsertVehicle,
+ requestSearchParams: {},
+ headers: {},
+ redisHelpers,
+ socket,
+ jobid: JobData.id,
+ body: {
+ "dealer": {
+ "company": JobData.bodyshop.cdk_configuration.srcco || "77",
+ // "dealNumber": "",
+ // "dealerAssignedNumber": "82268",
+ // "dealerDefined1": "2WDSP",
+ // "dealerDefined2": "33732.71",
+ // "dealerDefined3": "",
+ // "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"
+ // },
+ // "invoice": {
+ // "entryDate": "2012-01-19",
+ // "freight": {
+ // "freightInCharge": 995.95,
+ // "freightOutCharge": 95.95,
+ // "freightTaxCharge": 5.95
+ // },
+ // "vehicleAcquisitionDate": "2012-01-18",
+ // "vehicleOrderDate": "2012-01-12",
+ // "vehicleOrderNumber": "",
+ // "vehicleOrderPriority": "",
+ // "vehicleOrderType": "TRE RETAIL - STOCK"
+ // },
+ "vehicle": {
+ // "axleCode": "GU6/3.42 REAR AXLE RATIO",
+ // "axleCount": 2,
+ // "bodyStyle": "PU",
+ // "brakeSystem": "",
+ // "cabType": "",
+ // "certifiedPreownedInd": false,
+ // "certifiedPreownedNumber": "",
+ // "chassis": "",
+ // "color": "",
+ // "dealerBodyStyle": "",
+ deliveryDate:
+ txEnvelope.dms_unsold === true
+ ? ""
+ : moment()
+ // .tz(JobData.bodyshop.timezone)
+ .format("YYYY-MM-DD"),
+ // "deliveryMileage": 4,
+ // "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
+ },
-// CdkBase.createXmlEvent(
-// socket,
-// error.response && error.response.data,
-// `soapClientCustomerInsertUpdate.insertAsync response.`,
-// true
-// );
-// CdkBase.createLogEvent(socket, "ERROR", `Error in InsertDmsCustomer - ${error}`);
-// throw new Error(error);
-// }
-// }
+ }
+ ],
+ //"inventoryAccount": "237"
+ },
-// async function InsertDmsVehicle(socket) {
-// try {
-// const soapClientVehicleInsertUpdate = await soap.createClientAsync(CdkWsdl.VehicleInsertUpdate);
+ });
+ return result.data;
+ } catch (error) {
+ CreateFortellisLogEvent(socket, "ERROR", `Error in InsertDmsVehicle - ${error}`, { request: error.request });
+ }
+}
-// const soapResponseVehicleInsertUpdate = await soapClientVehicleInsertUpdate.insertAsync({
-// arg0: CDK_CREDENTIALS,
-// arg1: { id: socket.JobData.bodyshop.cdk_dealerid },
-// arg2: {
-// dealer: {
-// dealerNumber: socket.JobData.bodyshop.cdk_dealerid,
-// ...(socket.txEnvelope.inservicedate && {
-// inServiceDate:
-// socket.txEnvelope.dms_unsold === true
-// ? ""
-// : moment(socket.txEnvelope.inservicedate)
-// //.tz(socket.JobData.bodyshop.timezone)
-// .startOf("day")
-// .toISOString()
-// }),
-// vehicleId: socket.DMSVid.vehiclesVehId
-// },
-// manufacturer: {},
-// vehicle: {
-// deliveryDate:
-// socket.txEnvelope.dms_unsold === true
-// ? ""
-// : moment()
-// // .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: {
-// id: {
-// assigningPartyId: "CURRENT",
-// value: socket.DMSCust.id.value
-// }
-// }
-// },
-// arg3: "VEHICLES"
-// });
+async function UpdateDmsVehicle({ socket, redisHelpers, JobData, DMSVeh, DMSCust, selectedCustomerId, txEnvelope }) {
+ try {
-// const [result, rawResponse, , rawRequest] = soapResponseVehicleInsertUpdate;
+ let ids = [];
-// CdkBase.createXmlEvent(socket, rawRequest, `soapClientVehicleInsertUpdate.insertAsync request.`);
+ //if it's a generic customer, don't update the vehicle owners.
-// CdkBase.createLogEvent(
-// socket,
-// "SILLY",
-// `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);
-// }
-// }
+ 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);
-// async function UpdateDmsVehicle(socket) {
-// try {
-// const soapClientVehicleInsertUpdate = await soap.createClientAsync(CdkWsdl.VehicleInsertUpdate);
+ 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");
-// let ids = [];
+ ids = [
+ {
+ id: {
+ assigningPartyId: "CURRENT",
+ value: DMSCust.customerId
+ }
+ },
+ ...(oldOwner
+ ? [
+ {
+ id: {
+ assigningPartyId: "PREVIOUS",
+ value: oldOwner.id
+ }
+ }
+ ]
+ : [])
+ ];
+ }
+ }
-// //if it's a generic customer, don't update the vehicle owners.
+ 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
+ },
-// if (socket.selectedCustomerId === socket.JobData.bodyshop.cdk_configuration.generic_customer_number) {
-// ids = socket.DMSVeh && socket.DMSVeh.owners && socket.DMSVeh.owners;
-// } else {
-// const existingOwnerinVeh =
-// socket.DMSVeh &&
-// socket.DMSVeh.owners &&
-// socket.DMSVeh.owners.find((o) => o.id.value === socket.DMSCust.id.value);
+ });
+ return result;
+ } catch (error) {
+ CreateFortellisLogEvent(socket, "ERROR", `Error in UpdateDmsVehicle - ${error}`, { request: error.request });
+ }
-// if (existingOwnerinVeh) {
-// ids = socket.DMSVeh.owners.map((o) => {
-// return {
-// id: {
-// assigningPartyId: o.id.value === socket.DMSCust.id.value ? "CURRENT" : "PREVIOUS",
-// value: o.id.value
-// }
-// };
-// });
-// } else {
-// const oldOwner =
-// socket.DMSVeh &&
-// socket.DMSVeh.owners &&
-// socket.DMSVeh.owners.find((o) => o.id.assigningPartyId === "CURRENT");
+ //
-// ids = [
-// {
-// id: {
-// assigningPartyId: "CURRENT",
-// value: socket.DMSCust.id.value
-// }
-// },
-// ...(oldOwner
-// ? [
-// {
-// id: {
-// assigningPartyId: "PREVIOUS",
-// value: oldOwner.id.value
-// }
-// }
-// ]
-// : [])
-// ];
-// }
-// }
+ // 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,
-// ...((socket.txEnvelope.inservicedate || socket.DMSVeh.dealer.inServiceDate) && {
-// inServiceDate:
-// socket.txEnvelope.dms_unsold === true
-// ? ""
-// : moment(socket.DMSVeh.dealer.inServiceDate || socket.txEnvelope.inservicedate)
-// // .tz(socket.JobData.bodyshop.timezone)
-// .toISOString()
-// })
-// },
-// vehicle: {
-// ...socket.DMSVeh.vehicle,
-// ...(socket.txEnvelope.dms_model_override
-// ? {
-// make: socket.txEnvelope.dms_make,
-// modelAbrev: socket.txEnvelope.dms_model
-// }
-// : {}),
-// deliveryDate:
-// socket.txEnvelope.dms_unsold === true
-// ? ""
-// : moment(socket.DMSVeh.vehicle.deliveryDate)
-// //.tz(socket.JobData.bodyshop.timezone)
-// .toISOString()
-// },
-// owners: ids
-// },
-// arg3: "VEHICLES"
-// });
-// const [result, rawResponse, , rawRequest] = soapResponseVehicleInsertUpdate;
+ // let ids = [];
-// CdkBase.createXmlEvent(socket, rawRequest, `soapClientVehicleInsertUpdate.updateAsync request.`);
+ // //if it's a generic customer, don't update the vehicle owners.
-// CdkBase.createLogEvent(
-// socket,
-// "DEBUG",
-// `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);
-// }
-// }
+ // if (socket.selectedCustomerId === socket.JobData.bodyshop.cdk_configuration.generic_customer_number) {
+ // ids = socket.DMSVeh && socket.DMSVeh.owners && socket.DMSVeh.owners;
+ // } else {
+ // const existingOwnerinVeh =
+ // socket.DMSVeh &&
+ // socket.DMSVeh.owners &&
+ // socket.DMSVeh.owners.find((o) => o.id.value === socket.DMSCust.id.value);
+
+ // if (existingOwnerinVeh) {
+ // ids = socket.DMSVeh.owners.map((o) => {
+ // return {
+ // id: {
+ // assigningPartyId: o.id.value === socket.DMSCust.id.value ? "CURRENT" : "PREVIOUS",
+ // value: o.id.value
+ // }
+ // };
+ // });
+ // } else {
+ // const oldOwner =
+ // socket.DMSVeh &&
+ // socket.DMSVeh.owners &&
+ // socket.DMSVeh.owners.find((o) => o.id.assigningPartyId === "CURRENT");
+
+ // ids = [
+ // {
+ // id: {
+ // assigningPartyId: "CURRENT",
+ // value: socket.DMSCust.id.value
+ // }
+ // },
+ // ...(oldOwner
+ // ? [
+ // {
+ // id: {
+ // assigningPartyId: "PREVIOUS",
+ // value: oldOwner.id.value
+ // }
+ // }
+ // ]
+ // : [])
+ // ];
+ // }
+ // }
+
+ // const soapResponseVehicleInsertUpdate = await soapClientVehicleInsertUpdate.updateAsync({
+ // arg0: CDK_CREDENTIALS,
+ // arg1: { id: socket.JobData.bodyshop.cdk_dealerid },
+ // arg2: {
+ // ...socket.DMSVeh,
+ // dealer: {
+ // ...socket.DMSVeh.dealer,
+ // ...((socket.txEnvelope.inservicedate || socket.DMSVeh.dealer.inServiceDate) && {
+ // inServiceDate:
+ // socket.txEnvelope.dms_unsold === true
+ // ? ""
+ // : moment(socket.DMSVeh.dealer.inServiceDate || socket.txEnvelope.inservicedate)
+ // // .tz(socket.JobData.bodyshop.timezone)
+ // .toISOString()
+ // })
+ // },
+ // vehicle: {
+ // ...socket.DMSVeh.vehicle,
+ // ...(socket.txEnvelope.dms_model_override
+ // ? {
+ // make: socket.txEnvelope.dms_make,
+ // modelAbrev: socket.txEnvelope.dms_model
+ // }
+ // : {}),
+ // deliveryDate:
+ // socket.txEnvelope.dms_unsold === true
+ // ? ""
+ // : moment(socket.DMSVeh.vehicle.deliveryDate)
+ // //.tz(socket.JobData.bodyshop.timezone)
+ // .toISOString()
+ // },
+ // owners: ids
+ // },
+ // arg3: "VEHICLES"
+ // });
+ // const [result, rawResponse, , rawRequest] = soapResponseVehicleInsertUpdate;
+
+ // CdkBase.createXmlEvent(socket, rawRequest, `soapClientVehicleInsertUpdate.updateAsync request.`);
+
+ // CdkBase.createLogEvent(
+ // socket,
+ // "DEBUG",
+ // `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 {
@@ -984,4 +1377,4 @@ async function QueryDmsCustomerByName({ socket, redisHelpers, JobData }) {
// }
exports.getTransactionType = getTransactionType;
-exports.default = FortellisJobExport;
+exports.FortellisJobExport = FortellisJobExport;
diff --git a/server/web-sockets/redisSocketEvents.js b/server/web-sockets/redisSocketEvents.js
index 8a9292c3b..e52fb5943 100644
--- a/server/web-sockets/redisSocketEvents.js
+++ b/server/web-sockets/redisSocketEvents.js
@@ -1,5 +1,5 @@
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 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