связать контакт с учетной записью с помощью Salesforce API - PullRequest
7 голосов
/ 10 февраля 2012

Я новичок в использовании Salesforce API. Я загрузил инструментарий saleforce / php и могу успешно создавать контакты и учетные записи из веб-формы на моем сервере.

Для создания контакта я делаю следующее:

    $records[0] = new stdclass();
    $records[0]->FirstName = $FirstName;
    $records[0]->LastName = $LastName;
    $records[0]->Email = $Email;
    $records[0]->Phone = $Phone;
    $records[0]->MailingStreet = $MailingStreet;
    $records[0]->MailingCity = $MailingCity;
    $records[0]->MailingState = $MailingState;
    $records[0]->MailingPostalCode = $MailingPostalCode;
    $records[0]->MailingCountry = $MailingCountry;
    $records[0]->LeadSource = $LeadSource;

    $create = $mySforceConnection->create($records, 'Contact');

Для создания учетной записи я делаю следующее

    $records[0] = new stdclass();
    $records[0]->Name = $Name

    $create = $mySforceConnection->create($records, 'Account');

Может ли кто-нибудь дать мне простой пример того, как я бы связал контакт с учетной записью?

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

Я не ищу полноценный рабочий пример, а скорее просто что-то, указывающее мне правильное направление.

Допустим, у меня есть аккаунт с идентификатором 001Z0000004XeWfIAK

Я пытался

    $records[0] = new stdclass();
    $records[0]->FirstName = $FirstName;
    $records[0]->LastName = $LastName;
    $records[0]->Email = $Email;
    $records[0]->Phone = $Phone;
    $records[0]->MailingStreet = $MailingStreet;
    $records[0]->MailingCity = $MailingCity;
    $records[0]->MailingState = $MailingState;
    $records[0]->MailingPostalCode = $MailingPostalCode;
    $records[0]->MailingCountry = $MailingCountry;
    $records[0]->LeadSource = $LeadSource;
    $records[0]->AccountId = '001Z0000004XeWfIAK';

    $create = $mySforceConnection->create($records, 'Contact');

@ superfell

возвращает:

Array
(
    [0] => stdClass Object
        (
            [errors] => Array
                (
                    [0] => stdClass Object
                        (
                            [message] =>  A Household Contact's account must be a household.
                            [statusCode] => FIELD_CUSTOM_VALIDATION_EXCEPTION
                        )

                )

            [id] => 
            [success] => 
        )

)

Но я пытаюсь связать контакт с организацией

Ответы [ 2 ]

6 голосов
/ 10 февраля 2012

Хорошо, я отвечаю сам, потому что не могу пометить комментарий Superfell как ответ. Но его комментарий

"При создании учетной записи необходимо установить для recordTypeId тип записи, который не является типом записи домашнего хозяйства. - superfell"

помог мне получить ответ.

Вот мой окончательный код для создания учетной записи, а затем контакт этой учетной записи.

    //First I create a simple account
    //With no recordTypeId specified it defaults to the the type I want

    $records[0] = new stdclass();
    $records[0]->Name = $Name;

    //Create a new orginization account
    $org = $mySforceConnection->create($records, 'Account');

После создания учетной записи Salesforce возвращает сообщение об успехе с новым AccountId

Array
(
    [0] => stdClass Object
        (
            [id] => 001Z0000004XfXcIAK
            [success] => 1
        )

)

Тогда я могу создать контакт и связать его с моей новой учетной записью

    $contact[0] = new stdclass();
    $contact[0]->FirstName = $FirstName;
    $contact[0]->LastName = $LastName;
    $contact[0]->Email = $Email;
    $contact[0]->Phone = $Phone;
    $contact[0]->MailingStreet = $MailingStreet;
    $contact[0]->MailingCity = $MailingCity;
    $contact[0]->MailingState = $MailingState;
    $contact[0]->MailingPostalCode = $MailingPostalCode;
    $contact[0]->MailingCountry = $MailingCountry;
    $contact[0]->LeadSource = $LeadSource;

    //This is where my problem was, Thanks again superfell
    //$organization_contact = My custom Salesforce contact type ID, E.G. recordTypeId
    $contact[0]->recordTypeId = $orginization_contact;

    //The AccountId is the account I want to associate this contact with.
    //AccountId was returned by Salesforce upon the creation of the account (See above)  
    $contact[0]->AccountId = $org[0]->id;

    $contact = $mySforceConnection->create($contact, 'Contact');

Еще раз спасибо Джереми и Superfell. Спасло меня часы.

6 голосов
/ 10 февраля 2012

Контакт имеет поле AccountId.Поэтому в приведенном ниже коде предполагается, что у вас есть идентификатор учетной записи в переменной с именем $accountId, а $resource[0] - это контакт, который вы хотите связать.

$records[0]->AccountId = $accountId
$mySforceConnection->update($records)

Я не очень хорошо знаю php, но думаю,это было бы близко к правильному.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...