2012-02-09 12 views
7

Jestem nowy w używaniu apl Salesforce. Pobrałem zestaw narzędzi salesforce/php i jestem w stanie z powodzeniem tworzyć kontakty i konta z formularza internetowego na moim serwerze.Skojarzyć kontakt z kontem za pomocą salesforce api

Aby utworzyć kontakt robie co następuje:

$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'); 

Aby utworzyć konto robie następujące

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

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

Czy ktoś może mi dać prosty przykład jak byłoby skojarzyć kontakt z kontem?

Mam pole wyboru na formularzu, które pyta, czy jest to organizacja. Jeśli użytkownik zaznaczy to pole, chciałbym utworzyć konto organizacji z niektórymi danymi i utworzyć kontakt z niektórymi danymi oraz powiązać te dwa.

Nie szukam pełnowartościowego przykładu pracy, ale bardziej po prostu coś, co skierowało mnie we właściwym kierunku.

Powiedzmy mam konto z identyfikatorem 001Z0000004XeWfIAK

próbowałem

$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

zwraca to:

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] => 
     ) 

)

Ale staram aby powiązać kontakt z orginacją

+0

Czy kontakt jest w ogóle tworzony? Czy masz jakieś błędy? –

+0

Musisz podać przykład $ create, aby zobaczyć, dlaczego tworzenie się nie powiodło. – superfell

+0

Przykro mi. Nie sądzę, że jestem jasny. Mam typ konta o nazwie organizacja. Każda organizacja ma kontakty z nimi powiązane. Próbuję powiązać kontakty z organizacją – jpshayes

Odpowiedz

6

OK, odpowiadam sam, ponieważ nie mogę oznaczyć komentarza Superfell jako odpowiedzi. Ale jego komentarz

„Podczas tworzenia konta, trzeba ustawić recordTypeId do typu rekordu, który nie jest RECORDTYPE gospodarstwa domowego -. Superfell”

pomógł mi dostać odpowiedź.

Oto mój ostatni kod do utworzenia konta, a następnie kontaktu tego konta.

//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'); 

Po utworzeniu konta, Salesforce zwraca komunikat o powodzeniu z nowym accountid

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

) 

to jestem w stanie utworzyć kontakt i skojarzyć go z moim nowym koncie

$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'); 

Jeszcze raz dziękuję Jeremeyowi i Superfell. Uratowałeś mi godziny.

6

Kontakt ma pole . Tak więc poniższy kod zakłada, że ​​identyfikator konta w zmiennej o nazwie $accountId i $resource[0] jest kontaktem, który chcesz powiązać.

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

Nie wiem, php bardzo dobrze, ale myślę, że byłoby to blisko prawidłowe.

+0

Dzięki Jeremmy. Wierzę, że próbowałem tego. Zaktualizowałem moje pytanie powyżej – jpshayes

+0

Nie istnieje żadne inne powiązanie z wyjątkiem poprzez AccountId, ale konto musi najpierw zostać utworzone, aby można było użyć jego identyfikatora w Contact.AccountId. Otrzymujesz niestandardowy błąd sprawdzania poprawności, który wymaga dopasowania typów rekordów dla konta/kontaktu, sprawdzenia reguły sprawdzania poprawności i przypisania odpowiednich typów rekordów – mmix

Powiązane problemy