Estoy intentando crear un nuevo registro en Salesforce utilizando la API de PHP Toolkit 20.0. El objeto tiene un campo de relación maestro-detalle y, cada vez que intento crear un nuevo registro en este objeto, aparece un error que indica que: "Falta el campo obligatorio: [nombre_campo__c]". Estoy pasando el ID de Salesforce de 18 dígitos a ese campo, por lo que no entiendo por qué cree que falta.

$payment = new stdclass();
$payment->Bill_Amount__c = sprintf("%.2f", (int)$billamount);
$payment->Customer_Name__c = $debitcustname;
$payment->Student__c = $contact->records[0]->Id;
$payment->Transaction_Date__c = $transactiondate;

$createResponse = $sf->create($payment, 'Student_Payment__c');

Cuando var_dump $ pago, obtengo el siguiente objeto que me parece correcto:

object(stdClass)#7 (8) {
  ["Student__c"]=>
  string(18) "0033D00000NGoNNQA1"
  ["Bill_Amount__c"]=>
  string(6) "100.00"
  ["Customer_Name__c"]=>
  string(6) "SAMUEL"
  ["Transaction_Date__c"]=>
  string(20) "2017-01-01T00:00:00Z"
}

También revisé mi archivo wsdl.xml y el campo, Student__c, está presente.

<element name="Student__c" nillable="true" minOccurs="0" type="tns:ID"/>

¿Qué estoy haciendo mal aquí?

0
Colin 15 feb. 2018 a las 17:55

2 respuestas

La mejor respuesta

Resultó que el problema era que el primer argumento para el método de creación debe ser una matriz. Envolver la variable de pago $ entre paréntesis solucionó el problema.

$payment = new stdclass();
$payment->Bill_Amount__c = sprintf("%.2f", (int)$billamount);
$payment->Customer_Name__c = $debitcustname;
$payment->Student__c = $contact->records[0]->Id;
$payment->Transaction_Date__c = $transactiondate;

$createResponse = $sf->create([$payment], 'Student_Payment__c');
0
Colin 16 feb. 2018 a las 12:36

¿Ha intentado crear manualmente el registro a través de Workbench o Salesforce Dev Console?

Alternativamente, crearía un registro de depuración en Salesforce y luego depuraría el activador de inserción anterior para el objeto Student_Payment__c.

Lo que está haciendo debería estar técnicamente funcionando, podría ser algún código dentro de un activador de Salesforce que está causando un problema o una configuración de regla de validación para el objeto personalizado.

0
Tiaan Swart 16 feb. 2018 a las 02:37