2015-08-17 4 views
5

Я использую следующий gem для подключения к Microsoft Dyanmics CRM: https://github.com/TinderBox/dynamics_crm. Я смог подключиться и добавить контакты, ссылки и несколько других вещей просто отлично. Моя проблема в том, что я не могу понять, как добавить информацию о заказе и заказе. Вот код, я использую, чтобы создать деталь заказа:Добавить сведения о заказе Microsoft Dynamics CRM Online API

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) 

Это работает нормально, но когда я проверяю во внутреннем интерфейсе CRM, нет никаких записей по приказу детали. Я также не могу понять, как отправлять настраиваемые поля, я попробовал «new_shirtsize» => «XL», но я просто получил сообщение об ошибке, что поле «new_shirtsize» не существует для объекта «salesorderdetail».

+0

в JavaScript мы делаем это как details.salesorderid = {Id: order.id, LogicalName: 'salesorder'}; –

+0

** переместил комментарий к правильной теме ** – Alessi

ответ

2

Я могу только догадываться, но я посмотрел в specs из упомянутого вами драгоценного камня. Похоже, эти два параметра должны быть записаны следующим образом:

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

Btw, вы можете сделать это немного более компактный:

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

Две вещи, чтобы попробовать:

  1. Удалить это строки:

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

Причина: При создании новой записи через CRM API вам не обязательно указывать Id. CRM сгенерирует это для вас. Это рекомендуемый подход при создании новой записи CRM, вместо указания Id.

  1. Проверьте, что order.id является NOT NULL. Я подозреваю, что объект NULL.

Причина: При создании новой записи с помощью CRM API вы можете (если вы действительно хотите) обеспечить Id, но вы должны проверить, имеет в виду (XXXXXXXX-хххх действительный GUID -xxxx-xxxx-xxxxxxxxxxxx), where x = is of HEX value.

+0

Спасибо! Я понял, что существует функция генерации Guid, и я смог успешно сгенерировать ее, используя '' salesorderid '=> DynamicsCRM :: XML :: EntityReference.new ("salesorder", order.id) '. Функция запускалась без ошибок, и даже возвратила Guid из недавно созданных данных заказа клиента. Но когда я проверяю бэкэнд CRM, нет записи о состоянии заказа клиента. Любая идея, почему это может произойти? Я обновил свой оригинальный пост своим новым кодом. – Kyle

+0

Чтобы найти запись в CRM, попробуйте использовать расширенную находку для поиска деталей заказа и удаления всех фильтров. Чтобы отправить пользовательские поля и если вы вызываете конечную точку останова CRM API, имена полей чувствительны к регистру. Я предполагаю, что ваше имя поля должно быть «new_ShirtSize». – Alessi

Смежные вопросы