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 757434e6b..773400df1 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 @@ -77,13 +77,26 @@ export function DmsCustomerSelector({ bodyshop, jobid }) { const onUseGeneric = () => { setOpen(false); - socket.emit(`${dmsType}-selected-customer`, bodyshop.cdk_configuration.generic_customer_number); + + if (Fortellis.treatment === "on") { + wsssocket.emit(`fortellis-selected-customer`, { + selectedCustomerId: bodyshop.cdk_configuration.generic_customer_number, + jobid + }); + } else { + socket.emit(`${dmsType}-selected-customer`, bodyshop.cdk_configuration.generic_customer_number); + } setSelectedCustomer(null); }; const onCreateNew = () => { setOpen(false); - socket.emit(`${dmsType}-selected-customer`, null); + + if (Fortellis.treatment === "on") { + wsssocket.emit(`fortellis-selected-customer`, { selectedCustomerId: null, jobid }); + } else { + socket.emit(`${dmsType}-selected-customer`, null); + } setSelectedCustomer(null); }; diff --git a/server/fortellis/fortellis-helpers.js b/server/fortellis/fortellis-helpers.js index 893ac1fd6..229c4ecc2 100644 --- a/server/fortellis/fortellis-helpers.js +++ b/server/fortellis/fortellis-helpers.js @@ -303,7 +303,7 @@ const FortellisActions = { ? "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", + apiName: "CDK Drive Post Service Vehicle", }, GetCOA: { type: "get", diff --git a/server/fortellis/fortellis.js b/server/fortellis/fortellis.js index 530a211f7..ab57ec634 100644 --- a/server/fortellis/fortellis.js +++ b/server/fortellis/fortellis.js @@ -51,7 +51,7 @@ async function FortellisJobExport({ 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 }); + const DMSVid = (await CalculateDmsVid({ socket, JobData, redisHelpers }))[0]; await setSessionTransactionData(socket.id, getTransactionType(jobid), FortellisCacheEnums.DMSVid, DMSVid, defaultFortellisTTL); let DMSVehCustomer; @@ -125,7 +125,7 @@ async function FortellisSelectedCustomer({ socket, redisHelpers, ioHelpers, sele "DEBUG", `{3.1} Querying the Customer using Customer ID: ${selectedCustomerId}` ); - DMSCust = await QueryDmsCustomerById({ socket, redisHelpers, JobData, CustomerId: selectedCustomerId }); + DMSCust = await QueryDmsCustomerById({ socket, redisHelpers, JobData, CustomerId: selectedCustomerId }); //TODO: Optimize here - if selected ID, we already have the customer information. Prevent an extra call to Fortellis. await setSessionTransactionData(socket.id, getTransactionType(jobid), FortellisCacheEnums.DMSCust, DMSCust, defaultFortellisTTL); } else { CreateFortellisLogEvent( @@ -133,7 +133,8 @@ async function FortellisSelectedCustomer({ socket, redisHelpers, ioHelpers, sele "DEBUG", `{3.2} Creating new customer.` ); - DMSCust = await InsertDmsCustomer({ socket, redisHelpers, JobData }); + const DMSCustomerInsertResponse = await InsertDmsCustomer({ socket, redisHelpers, JobData }); + DMSCust = { customerId: DMSCustomerInsertResponse.data } await setSessionTransactionData(socket.id, getTransactionType(jobid), FortellisCacheEnums.DMSCust, DMSCust, defaultFortellisTTL); } @@ -360,7 +361,7 @@ async function InsertDmsCustomer({ socket, redisHelpers, JobData }) { { //"uuid": "", "number": JobData.ownr_ph1?.replace(replaceSpecialRegex, ""), - // "type": "MOBILE", + "type": "HOME", // "doNotCallIndicator": true, // "doNotCallIndicatorDate": `null, // "doNotCallRegistrySource": "", @@ -394,11 +395,11 @@ async function InsertDmsCustomer({ socket, redisHelpers, JobData }) { ], "emailAddresses": [ - !_.isEmpty(socket.JobData.ownr_ea) ? + ...!_.isEmpty(JobData.ownr_ea) ? [{ //"uuid": "", - "address": socket.JobData.ownr_ea, - // "type": "PERSONAL", + "address": JobData.ownr_ea, + "type": "PERSONAL", // "doNotEmailSource": "", // "doNotEmail": false, // "isPreferred": true, @@ -843,6 +844,14 @@ async function UpdateDmsVehicle({ socket, redisHelpers, JobData, DMSVeh, DMSCust } } + const DMSVehToSend = _.cloneDeep(DMSVeh); + //Remove unsupported fields on the post API. + delete DMSVehToSend.dealer.lastActivityDate; + delete DMSVehToSend.manufacturer; + delete DMSVehToSend.invoice; + delete DMSVehToSend.inventoryAccount; + + const result = await MakeFortellisCall({ ...FortellisActions.UpdateVehicle, requestSearchParams: {}, @@ -851,20 +860,21 @@ async function UpdateDmsVehicle({ socket, redisHelpers, JobData, DMSVeh, DMSCust socket, jobid: JobData.id, body: { - ...DMSVeh, + ...DMSVehToSend, dealer: { - ...DMSVeh.dealer, - ...((txEnvelope.inservicedate || DMSVeh.dealer.inServiceDate) && { + ...DMSVehToSend.dealer, //TODO: Check why company is blank on a queried record. + comapny: "77", + ...((txEnvelope.inservicedate || DMSVehToSend.dealer.inServiceDate) && { inServiceDate: txEnvelope.dms_unsold === true ? "" - : moment(DMSVeh.dealer.inServiceDate || txEnvelope.inservicedate) + : moment(DMSVehToSend.dealer.inServiceDate || txEnvelope.inservicedate) // .tz(JobData.bodyshop.timezone) .toISOString() }) }, vehicle: { - ...DMSVeh.vehicle, + ...DMSVehToSend.vehicle, ...(txEnvelope.dms_model_override ? { make: txEnvelope.dms_make, @@ -874,7 +884,7 @@ async function UpdateDmsVehicle({ socket, redisHelpers, JobData, DMSVeh, DMSCust deliveryDate: txEnvelope.dms_unsold === true ? "" - : moment(DMSVeh.vehicle.deliveryDate) + : moment(DMSVehToSend.vehicle.deliveryDate) //.tz(JobData.bodyshop.timezone) .toISOString() },