Получить идентификатор учетной записи на основе основного адреса электронной почты в Sugar CRM - PullRequest
2 голосов
/ 01 августа 2011

У нас есть веб-сайт, и когда запись вставляется / обновляется, мы запускаем скрипт для обновления модуля учетных записей пользователя CRM.

В модуле Аккаунты есть поле website_id_c. Когда вставка происходит в БД, мы устанавливаем идентификатор последней вставки для website_id_c Sugar CRM и оставшиеся значения для вставки.

Вставьте скрипт как показано ниже.

$name_value_field=array(
    array('name' => 'name','value' => $name),
    array('name' => 'primary_contactperson_c','value' => $ownername),
    array('name' => 'billing_address_street','value' => $address),
    array('name' => 'billing_address_postalcode','value' => $postalcode),
    array('name' => 'email1','value' => $email),
    array('name' => 'website_id_c','value' => $id_retrieved),
);
if(!empty($sessn_id))
{
    $result=$soap->set_entry("Accounts",$name_value_field); 

}

Для связи с облаком Sugar CRM используется клиент SOAP nusoap. Вставка работает нормально и обновляет тоже.

$response = $soap->get_entry_list('Accounts', 
                array('id'), 
                "website_id_c='$websiteID'");
$account_id = $response['entry_list'][0]['id'];

Но в настоящее время я хочу получить account_id для обновления записи на основе электронной почты. Я изменил поля с электронной почтой. Но я чувствую, что он хранится в каком-то другом месте, а первичный адресный ключ хранится в модуле учетных записей. Итак, сначала мы хотим получить этот идентификатор из модуля электронной почты, а затем запросить модуль учетных записей на основе этого идентификатора адреса электронной почты, чтобы получить значения учетной записи.

 $response = $soap->get_entry_list('Accounts', 
                array('id'), 
                "email1='email@example.com'");

Какой модуль хранит адрес электронной почты? Я не работал над сахаром раньше. Поэтому не стесняйтесь спрашивать меня, точно ли вы меня не поняли.

Спасибо

1 Ответ

3 голосов
/ 01 августа 2011

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

$response = $soap->get_entry_list(
    $module = 'Accounts',
    $fields = array('id'),
    $query = "accounts.id IN (
        SELECT eabr.bean_id
        FROM email_addr_bean_rel eabr 
            JOIN email_addresses ea ON (ea.id = eabr.email_address_id)
        WHERE 
            eabr.bean_module = 'Accounts' 
            AND eabr.deleted = 0 
            AND ea.email_address = 'email@example.com'
    )",
    $orderBy = "accounts.name", 
    $offset = 0, 
    $max = 10
);

Мои мыльные клиенты get_entry_list метод имеет вид

get_entry_list($module, 
    $fields = array(), 
    $query='', 
    $order_by='', 
    $offset=0, 
    $limit = 1000)

Внесите необходимые изменения соответственно.

...