2012-02-09 6 views
7

Soy nuevo en el uso de la API de Salesforce. He descargado el toolkit de salesforce/php y puedo crear contactos y cuentas de un formulario web en mi servidor.contacto asociado con la cuenta usando api de Salesforce

Para crear un contacto que estoy haciendo lo siguiente:

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

Para crear una cuenta de que estoy haciendo lo siguiente

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

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

Puede alguien darme un ejemplo sencillo de cómo iba a asociar una contacto con una cuenta?

Tengo una casilla de verificación en el formulario que pregunta si se trata de una organización. Si el usuario marca esta casilla, me gustaría crear una cuenta de organización con algunos de los datos y crear un contacto con algunos de los datos y asociarlos.

No estoy buscando un ejemplo completo de trabajo pero más solo algo que me apunte en la dirección correcta.

Digamos que tengo una cuenta con el id de 001Z0000004XeWfIAK

He tratado

$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

vuelve esto:

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

)

pero estoy tratando asociar un contacto con una orginización

+0

¿Se crea el contacto en absoluto? tuviste algun error? –

+0

Debe, por ejemplo, $ create para ver por qué falló la creación. – superfell

+0

Lo siento. No creo que esté siendo claro. Tengo un tipo de cuenta llamada organización. Cada organización tiene contactos asociados con ellos. Intento asociar contactos con la organización – jpshayes

Respuesta

6

Ok, estoy respondiendo esto mismo porque no puedo marcar el comentario de Superfell como la respuesta. Pero su comentario

"Al crear la cuenta, es necesario establecer el recordTypeId a un tipo de registro que no es el RecordType hogar -. Superfell"

me ayudó a conseguir la respuesta.

Aquí está mi código final para crear una cuenta y luego un contacto de esa cuenta.

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

Después de crear la cuenta, Salesforce devuelve un mensaje de éxito con el nuevo AccountId

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

) 

entonces soy capaz de crear un contacto y asociarlo con mi nueva cuenta

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

Gracias de nuevo a Jeremey y Superfell. Me ahorró horas.

6

Contacto tiene un campo AccountId. Por lo tanto, el código siguiente supone que tiene el ID de cuenta en una variable llamada $accountId y $resource[0] es el contacto que desea asociar.

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

No sé php muy bien, pero creo que esto sería casi correcto.

+0

Gracias Jeremmy. Creo que lo he intentado. Actualicé mi pregunta anterior – jpshayes

+0

No hay otra asociación excepto a través de AccountId, pero la cuenta primero debe crearse primero para que pueda obtener su Id para usar en Contact.AccountId. Lo que obtiene es un error de validación personalizado que requiere una coincidencia de tipos de registros para Cuenta/Contacto, verifique la regla de validación y asigne los tipos de registros apropiados – mmix

Cuestiones relacionadas