From 9db7604b935370e53dcdb87fa716ae24b45893a2 Mon Sep 17 00:00:00 2001 From: adriano Date: Mon, 13 Oct 2025 16:09:22 -0300 Subject: [PATCH] feat: adjustment to create contact via omnihit for SAP crm --- .../template_crm_sap_gradesco.json | 5 ++-- backend/controllers/crmController.js | 4 ++-- backend/utils/createContact.js | 24 +++++++++++++++---- backend/utils/journalingRequest.js | 6 +++-- backend/utils/whatsappJournalingCRM.js | 2 +- 5 files changed, 29 insertions(+), 12 deletions(-) diff --git a/backend/Templates-test/template_crm_sap_gradesco.json b/backend/Templates-test/template_crm_sap_gradesco.json index 62681e5..adae9b5 100644 --- a/backend/Templates-test/template_crm_sap_gradesco.json +++ b/backend/Templates-test/template_crm_sap_gradesco.json @@ -19,11 +19,12 @@ "body":{ "LastName":"crmLastName", "FirstName":"crmFirstName", - "Mobile":"crmPhone", + "Mobile":"+crmPhone", "AccountID":"1000320" }, "response":{ - "id":"d.results.ContactID" + "id":"d.results.ContactID", + "objectId":"d.results.ObjectID" } } }, diff --git a/backend/controllers/crmController.js b/backend/controllers/crmController.js index 27243d4..c8360a6 100644 --- a/backend/controllers/crmController.js +++ b/backend/controllers/crmController.js @@ -191,8 +191,8 @@ const callJournaling = async (req, res) => { // return res.status(StatusCodes.OK).send() // Refactor this in the future. Integração Gradezco colombia, o crm sap precisa criar o contato com o + no inicio seguido do codigo do pais - if(companyId == "4953"){ // companyId de test para colombia - crmPhone = '+57' + crmPhone + if(companyId == "4953"){ // companyId da gradezco colombia + crmPhone = '57' + crmPhone } else{ crmPhone = '55' + crmPhone diff --git a/backend/utils/createContact.js b/backend/utils/createContact.js index ccf34f4..daf71ef 100644 --- a/backend/utils/createContact.js +++ b/backend/utils/createContact.js @@ -25,9 +25,18 @@ async function createContact(companyId, rest, authentication, crmPhone = '', crm crmEmail } - for (const prop in body) { + for (const prop in body) { + + // Para o crm SAP que precisa do +57 no inicio do contato para ser criado corretamente + if(body[prop].includes("+crmPhone")){ + body[prop] = `+${crmPhone}` + continue + } + if (mapping.hasOwnProperty(body[prop])) { + const variable = mapping[body[prop]] + if (variable) { body[prop] = variable } else { @@ -40,7 +49,7 @@ async function createContact(companyId, rest, authentication, crmPhone = '', crm } } - body = unflatten(body) + body = unflatten(body) const { type, userName, passWord, token, crmClientId } = authentication @@ -91,17 +100,22 @@ async function createContact(companyId, rest, authentication, crmPhone = '', crm data = flatten(data) let auxContactId + let auxContactId2 for (const prop in data) { const _prop = prop.replace(/^\d+\./, '').replace(/(?:^|\.)\d+\b/g, '') if (_prop == response?.id?.trim()) { - auxContactId = data[prop] - break + auxContactId = data[prop] + } + + if (_prop == response?.objectId?.trim()) { + auxContactId2 = data[prop] } } + console.log('---------> createContact crmPhone: ', crmPhone, ' | auxContactId: ', auxContactId, ' | auxContactId2: ', auxContactId2) if (auxContactId && !test?.testing && crmEmail=='') { @@ -110,7 +124,7 @@ async function createContact(companyId, rest, authentication, crmPhone = '', crm await CRM_Contact.create({ companyId, crm, crmBaseURL: new URL(url).hostname, contactId: auxContactId, phone: crmPhone }) } - return { exist: true, contactId: auxContactId, phone: crmPhone } + return { exist: true, contactId: auxContactId, phone: crmPhone, contactId2: auxContactId2} } diff --git a/backend/utils/journalingRequest.js b/backend/utils/journalingRequest.js index f217a56..fb1676e 100644 --- a/backend/utils/journalingRequest.js +++ b/backend/utils/journalingRequest.js @@ -11,13 +11,15 @@ async function journalingRequest(request, body, crmCallDuration, contact, crmAge let { requestContentType, requestEncoding, requestType, responseType, url } = request console.log('----------> crmCallDuration: ', crmCallDuration) - console.log('----------> url 1: ', url) + console.log('----------> journalingRequest url 1: ', url) - // Second contactId for some cases like SAP crm + // Second contactId for some cases like SAP crm that use ObjectID to create note if(url.includes("contactObjectId") && contact?.contactId2){ url = url.replace("contactObjectId", contact.contactId2) } + console.log('----------> journalingRequest url 2: ', url) + body = flatten(body) let ignore = [] diff --git a/backend/utils/whatsappJournalingCRM.js b/backend/utils/whatsappJournalingCRM.js index 893a7a4..e474c39 100644 --- a/backend/utils/whatsappJournalingCRM.js +++ b/backend/utils/whatsappJournalingCRM.js @@ -144,7 +144,7 @@ async function _lookupContact(rest, authentication, crmPhone, crmEmail, companyI // Se o contato for criado, retorna suas informações if (contact?.contactId) { console.log(`Novo contato criado com ID: ${contact.contactId}`); - return { created: true, contactId: contact.contactId }; + return { created: true, contactId: contact.contactId, contactId2: contact?.contactId2}; } // Caso não tenha nem telefone nem e-mail, retorna um erro ou um valor nulo