feat: Prioritize Contacts Over Leads If They Exist [CAL-4640] (#17380)
This commit is contained in:
1 parent
04a49e74d4
commit
b8b270e4e5
4 files changed
+35
-2
No files matched your search
@@ -2720,6 +2720,7 @@
|
||||
"attendee_timezone_info": "Attendee Timezone",
|
||||
"event_start_time_in_attendee_timezone_info": "Event Start Time In Attendee Timezone",
|
||||
"event_end_time_in_attendee_timezone_info": "Event End Time In Attendee Timezone",
|
||||
"salesforce_create_event_on_contact": "Create event on contact, if it exists. Else fallback to lead",
|
||||
"salesforce_owner_name_to_change": "Owner name to change",
|
||||
"ADD_NEW_STRINGS_ABOVE_THIS_LINE_TO_PREVENT_MERGE_CONFLICTS": "↑↑↑↑↑↑↑↑↑↑↑↑↑ Add your new strings above here ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑"
|
||||
}
|
||||
@@ -27,6 +27,7 @@ const EventTypeAppCard: EventTypeAppCardComponent = function EventTypeAppCard({
|
||||
const createEventOn = getAppData("createEventOn") ?? SalesforceRecordEnum.CONTACT;
|
||||
const onBookingWriteToEventObject = getAppData("onBookingWriteToEventObject") ?? false;
|
||||
const onBookingWriteToEventObjectMap = getAppData("onBookingWriteToEventObjectMap") ?? {};
|
||||
const createEventOnLeadCheckForContact = getAppData("createEventOnLeadCheckForContact") ?? false;
|
||||
const onBookingChangeRecordOwner = getAppData("onBookingChangeRecordOwner") ?? false;
|
||||
const onBookingChangeRecordOwnerName = getAppData("onBookingChangeRecordOwnerName") ?? [];
|
||||
const { t } = useLocale();
|
||||
@@ -93,6 +94,18 @@ const EventTypeAppCard: EventTypeAppCardComponent = function EventTypeAppCard({
|
||||
/>
|
||||
</div>
|
||||
) : null}
|
||||
{createEventOnSelectedOption.value === SalesforceRecordEnum.LEAD ? (
|
||||
<div>
|
||||
<Switch
|
||||
label={t("salesforce_create_event_on_contact")}
|
||||
labelOnLeading
|
||||
checked={createEventOnLeadCheckForContact}
|
||||
onCheckedChange={(checked) => {
|
||||
setAppData("createEventOnLeadCheckForContact", checked);
|
||||
}}
|
||||
/>
|
||||
</div>
|
||||
) : null}
|
||||
{createEventOnSelectedOption.value === SalesforceRecordEnum.ACCOUNT ? (
|
||||
<>
|
||||
<div className="mb-4">
|
||||
|
||||
@@ -342,9 +342,27 @@ export default class SalesforceCRMService implements CRM {
|
||||
}
|
||||
const results = await conn.query(soql);
|
||||
|
||||
if (!results || !results.records.length) return [];
|
||||
let records: ContactRecord[] = [];
|
||||
|
||||
const records = results.records as ContactRecord[];
|
||||
// If falling back to contacts, check for the contact before returning the leads or empty array
|
||||
if (
|
||||
appOptions.createEventOn === SalesforceRecordEnum.LEAD &&
|
||||
appOptions.createEventOnLeadCheckForContact
|
||||
) {
|
||||
// Get any matching contacts
|
||||
const contactSearch = await conn.query(
|
||||
`SELECT Id, Email, OwnerId FROM ${SalesforceRecordEnum.CONTACT} WHERE Email IN ('${emailArray.join(
|
||||
"','"
|
||||
)}')`
|
||||
);
|
||||
|
||||
if (contactSearch && contactSearch.records.length > 0)
|
||||
records = contactSearch.records as ContactRecord[];
|
||||
} else if (!results || !results.records.length) {
|
||||
return [];
|
||||
}
|
||||
|
||||
if (!records.length) records = results.records as ContactRecord[];
|
||||
|
||||
if (includeOwner || forRoundRobinSkip) {
|
||||
const ownerIds: Set<string> = new Set();
|
||||
|
||||
@@ -15,6 +15,7 @@ export const appDataSchema = eventTypeAppCardZod.extend({
|
||||
createLeadIfAccountNull: z.boolean().optional(),
|
||||
onBookingWriteToEventObject: z.boolean().optional(),
|
||||
onBookingWriteToEventObjectMap: z.record(z.any()).optional(),
|
||||
createEventOnLeadCheckForContact: z.boolean().optional(),
|
||||
onBookingChangeRecordOwner: z.boolean().optional(),
|
||||
onBookingChangeRecordOwnerName: z.string().optional(),
|
||||
});
|
||||
|
||||
Reference in new issue
Block a user