2015-08-17 9 views
5

Sto utilizzando il seguente gem per connettersi a Microsoft Dyanmics CRM: https://github.com/TinderBox/dynamics_crm. Sono stato in grado di connettermi e aggiungere contatti, lead e poche altre cose. Il mio problema è che non riesco a capire come aggiungere un ordine e i dettagli dell'ordine. Ecco il codice che sto usando per creare un particolare ordine:Aggiungere dettagli ordine API Microsoft Dynamics CRM online

details = Hash.new 
    details = { 
     'quantity' => 1000.0, 
     'productid' => product, 
     'salesorderid' => DynamicsCRM::XML::EntityReference.new("salesorder", order.id), 
     'uomid' => DynamicsCRM::XML::EntityReference.new("uom", 'F5AE673D-5D8E-E211-8AD0-78E3B5101E8F'), 
     'createdon' => Time.now.getutc, 
     'salesorderstatecode' => 1, 
     'description' => 'This is just a test order', 
    } 
    orderDetail = client.create('salesorderdetail', details) 

Questo funziona bene, ma quando controllo nel backend CRM, non v'è alcuna traccia sotto Dettagli ordini. Inoltre non riesco a capire come inviare campi personalizzati, ho provato 'new_shirtsize' => 'XL', ma ho appena ricevuto un errore che il campo 'new_shirtsize' non esiste per l'entità 'salesorderdetail'.

+0

in JavaScript lo facciamo come details.salesorderid = {Id: order.id, LogicalName: 'salesorder'}; –

+0

** spostato il commento per correggere il thread ** – Alessi

risposta

2

Posso solo indovinare, ma ho dato un'occhiata allo specs della gemma che hai menzionato. Sembra che i due parametri devono essere scritte in questo modo:

details = {} 
details['salesorderid'] = {} 
details['salesorderid']['Id'] = order.id 
details['salesorderid']['LogicalName'] = 'salesorder' 
client.create('orderdetail', details) 

Btw, si può fare di questo un po 'più compatta:

client.create('orderdetail', salesorderid: 
    {'Id' => order.id, 'LogicalName' => 'salesorder'}) 
1

Due cose da provare:

  1. Rimuovi questa linea:

details['salesorderid']['Id'] = order.id

Motivo: Quando si crea un nuovo record tramite CRM API non è necessario fornire lo Id. CRM genererà questo per te. Questo è l'approccio consigliato quando si crea un nuovo record CRM anziché specificare lo Id.

  1. Verificare che order.id sia NOT NULL. Sospetto che l'oggetto sia NULL.

Motivo: Quando si crea un nuovo record tramite CRM API si possibile (se si vuole veramente a) fornire la Id, ma è necessario controllare ha una valida GUID sotto forma di (xxxxxxxx-xxxx -xxxx-xxxx-xxxxxxxxxxxx), where x = is of HEX value.

+0

Grazie! Ho capito che esiste una funzione per generare un Guid e sono riuscito a generarlo correttamente usando ''salesorderid' => DynamicsCRM :: XML :: EntityReference.new (" salesorder ", order.id)'. La funzione è stata eseguita senza errori e ha persino restituito una Guida dei dettagli dell'ordine di vendita creati di recente. Ma quando eseguo il check-in nel back-end CRM, non è presente alcun record dei dettagli dell'ordine di vendita. Qualche idea sul perché questo potrebbe accadere? Ho aggiornato il mio post originale con il mio nuovo codice. – Kyle

+0

Per cercare il record in CRM, provare a utilizzare la ricerca avanzata per cercare Dettagli ordine e rimuovere tutti i filtri. Per inviare campi personalizzati e se si sta chiamando l'endpoint resto dell'API CRM, i nomi dei campi sono case sensitive. Immagino che il nome del tuo campo debba essere 'new_ShirtSize'. – Alessi

Problemi correlati