Как добавить новое свинца и обновить существующее лидерство в Salesforce

StackOverflow https://stackoverflow.com/questions/3775654

  •  04-10-2019
  •  | 
  •  

Вопрос

Я новичок в разработке вершины, и я начинаю работать над моим проектом в Apex. Я хотел бы сделать следующее:


Использование электронной почты // Я полагал эту часть
Получить EmailAddress с электронной почты // Знаю, как это сделать
Если есть уже экскусствующий свинец или контакт с тем же электронной почтойAddress
обновить его информацию
еще
Создать новый провод


Я хотел бы найти, как я могу искать мою базу данных (Leads и контакты SaleForce) и обновляют существующую информацию пользователя.

Это было полезно?

Решение

Вы должны выполнить запрос на свинца и контакт с помощью адреса электронной почты в качестве критериев для запроса. Если он возвращает 0 записей для ведущих записей и 0 записей для контакта, то вы создадим новый провод.

Ваш запрос может вернуть более 1 записи для лидеров или контакта, поэтому вам придется разработать стратегию для обработки этого случая. Адрес электронной почты не обязан быть уникальным.

public class StackOverflowExample {

public static void test(String email) {
    handleNewEmail(email);
}

private static void handleNewEmail(String email) {
    List<Lead> leads = [select id, email from Lead where email = :email];
    List<Contact> contacts = [select id, email from Contact where email = :email];
    if (leads.size() == 0 && contacts.size() == 0) {
        //Create new lead
        insert new Lead(Company = 'Lead Company', FirstName = 'firstname', LastName = 'lastname', Email = email);
    } else if (leads.size() == 1) {
        // Update this lead
        leads[0].FirstName = 'newfirstname';
        update leads;
    } else if (contacts.size() == 1) {
        // Update this contact
        contacts[0].FirstName = 'newfirstname';
        update contacts;
    } else {
        // Must be more than 1 contact or lead
        System.debug('\nMore than 1 contact or lead.');
    }
}

}

Другой вариант - выполнить поиск, ограничивающий объем на поля электронной почты.

public class StackOverflowExample {

public static void test(String email) {
    handleNewEmail(email);
}

private static void handleNewEmail(String email) {
    List<List<SObject>> searchResults = [FIND :email IN Email Fields RETURNING 
                Lead(Id, FirstName, LastName), 
                Contact(Id, FirstName, LastName)];
    List<Lead> leads = ((List<Lead>)searchResults[0]);
    List<Contact> contacts = ((List<Contact>)searchResults[1]);
    if (leads.size() == 0 && contacts.size() == 0) {
        //Create new lead
        insert new Lead(Company = 'Lead Company', FirstName = 'firstname', LastName = 'lastname', Email = email);
    } else if (leads.size() == 1) {
        // Update this lead
        leads[0].FirstName = 'newfirstname';
        update leads;
    } else if (contacts.size() == 1) {
        // Update this contact
        contacts[0].FirstName = 'newfirstname';
        update contacts;
    } else {
        // Must be more than 1 contact or lead
        System.debug('\nMore than 1 contact or lead.');
    }
}

}

Другие советы

В встроенной помощи Salesforce вы можете найти некоторые Информация о объекте InBoundemail. Отказ Страница содержит также 2 примера о работе с контактами и приводами на основе адреса электронной почты, извлеченного из сообщения.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top