diff --git a/packages/app-store/salesforce/lib/CrmService.ts b/packages/app-store/salesforce/lib/CrmService.ts index d2ba2f6337..208ab6ce52 100644 --- a/packages/app-store/salesforce/lib/CrmService.ts +++ b/packages/app-store/salesforce/lib/CrmService.ts @@ -1157,47 +1157,53 @@ export default class SalesforceCRMService implements CRM { } // Handle different field types - if (fieldConfig.fieldType === field.type) { - if (field.type === SalesforceFieldType.TEXT || field.type === SalesforceFieldType.PHONE) { - const extractedText = await this.getTextFieldValue({ - fieldValue: fieldConfig.value, - fieldLength: field.length, - calEventResponses, - bookingUid, - }); - if (extractedText) { - writeOnRecordBody[field.name] = extractedText; - continue; - } - } else if (field.type === SalesforceFieldType.DATE && startTime && organizerEmail) { - const dateValue = await this.getDateFieldValue( - fieldConfig.value, - startTime, - bookingUid, - organizerEmail - ); - if (dateValue) { - writeOnRecordBody[field.name] = dateValue; - continue; - } - } else if (field.type === SalesforceFieldType.PICKLIST) { - const picklistValue = await this.getPicklistFieldValue({ - fieldConfigValue: fieldConfig.value, - salesforceField: field, - calEventResponses, - bookingUid, - contactId, - }); - if (picklistValue) { - writeOnRecordBody[field.name] = picklistValue; - continue; - } - } else if (field.type === SalesforceFieldType.CHECKBOX) { - // If the checkbox field value is not a boolean for some reason, default to if it's a falsely value - const checkboxValue = !!fieldConfig.value; - writeOnRecordBody[field.name] = checkboxValue; + if ( + field.type === SalesforceFieldType.TEXT || + field.type === SalesforceFieldType.TEXTAREA || + field.type === SalesforceFieldType.PHONE + ) { + const extractedText = await this.getTextFieldValue({ + fieldValue: fieldConfig.value, + fieldLength: field.length, + calEventResponses, + bookingUid, + }); + if (extractedText) { + writeOnRecordBody[field.name] = extractedText; continue; } + } else if ( + (field.type === SalesforceFieldType.DATE || field.type === SalesforceFieldType.DATETIME) && + startTime && + organizerEmail + ) { + const dateValue = await this.getDateFieldValue( + fieldConfig.value, + startTime, + bookingUid, + organizerEmail + ); + if (dateValue) { + writeOnRecordBody[field.name] = dateValue; + continue; + } + } else if (field.type === SalesforceFieldType.PICKLIST) { + const picklistValue = await this.getPicklistFieldValue({ + fieldConfigValue: fieldConfig.value, + salesforceField: field, + calEventResponses, + bookingUid, + contactId, + }); + if (picklistValue) { + writeOnRecordBody[field.name] = picklistValue; + continue; + } + } else if (field.type === SalesforceFieldType.CHECKBOX) { + // If the checkbox field value is not a boolean for some reason, default to if it's a falsely value + const checkboxValue = !!fieldConfig.value; + writeOnRecordBody[field.name] = checkboxValue; + continue; } log.error( @@ -1206,7 +1212,6 @@ export default class SalesforceCRMService implements CRM { }, field config ${JSON.stringify(fieldConfig)} and Salesforce config ${JSON.stringify(field)}` ); } - return writeOnRecordBody; } diff --git a/packages/app-store/salesforce/lib/enums.ts b/packages/app-store/salesforce/lib/enums.ts index b55c2af2a2..ba5936d817 100644 --- a/packages/app-store/salesforce/lib/enums.ts +++ b/packages/app-store/salesforce/lib/enums.ts @@ -16,6 +16,8 @@ export enum SalesforceFieldType { CUSTOM = "custom", PICKLIST = "picklist", CHECKBOX = "boolean", + DATETIME = "datetime", + TEXTAREA = "textarea", } export enum DateFieldTypeData {