В модуле присутствует дополнительный функционал, позволяющий модифицировать данные, приходящие из системы и уходящие в нее. Для этого в файле init.php
нужно описать нужную функцию и произвести требуемые изменения данных.
Функция retailCrmBeforeCustomerSend
retailCrmBeforeCustomerSend
— модификация данных клиента перед отправкой в систему.
function retailCrmBeforeCustomerSend($customer)
{
//Ваши изменения
return $customer;
//либо return false; и тогда данные отправлены в систему не будут
}
Где $customer
— сформированный массив данных клиента для отправки в систему.
Функция retailCrmBeforeOrderSend
retailCrmBeforeOrderSend
— модификация данных заказа перед отправкой в систему.
function retailCrmBeforeOrderSend($order, $arFields)
{
//Ваши изменения
return $order;
//либо return false; и тогда данные отправлены в систему не будут
}
Где $order
— сформированный массив данных заказа для отправки в систему, а $arFields
— массив полей заказа на сайте.
Функция retailCrmBeforeCustomerSave
retailCrmBeforeCustomerSave
— модификация данных клиента, пришедших по истории из системы.
function retailCrmBeforeCustomerSave($customer)
{
//Ваши изменения
return $customer;
//либо return false; и тогда изменения из системы по этому клиенту будут проигнорированы
}
Где $customer
— массив с измененными данными клиента, пришедший из системы.
Функция retailCrmAfterCustomerSave
retailCrmAfterCustomerSave
— функция, выполняющаяся сразу после сохранения на сайте изменений данных клиента, пришедших по истории из системы.
function retailCrmAfterCustomerSave($customer)
{
//Ваши изменения
return;
}
Где $customer
— массив с измененными данными клиента, пришедшими из системы.
Функция retailCrmBeforeOrderSave
retailCrmBeforeOrderSave
— модификация данных заказа, пришедших по истории из системы.
function retailCrmBeforeOrderSave($order)
{
//Ваши изменения
return $order;
//либо return false; и тогда изменения из системы по этому заказу будут проигнорированы
}
Где $order
— массив с измененными данными заказа, пришедший из системы.
Функция retailCrmAfterOrderSave
retailCrmAfterOrderSave
— функция, которая выполняется сразу после сохранения на сайте изменений заказа, пришедших по истории из системы.
function retailCrmAfterOrderSave($order)
{
//Ваши изменения
return;
}
Где $order
— массив с измененными данными заказа, пришедшими из системы.
Функция retailCrmApiResult
retailCrmApiResult
— функция выполняющаяся сразу после получения ответа от API системы.
function retailCrmApiResult($methodApi, $res, $code)
{
//Ваши изменения
return;
}
Где $methodApi
— название API метода, $res
— результат запроса true
/false
(удачный или не удачный запрос), $code
- код статуса ответа API.
Примечание
Ошибки в коде, при использовании данной функции, могут нарушить работу синхронизации сайта и системы.
Если перечисленных выше инструментов по какой-то причине недостаточно, то можно внести требуемые изменения непосредственно в код модуля без риска потери этих изменений при обновлении модуля. Для этого требуется скопировать файл с нужным классом в директорию /bitrix/php_interface/retailcrm/
и уже в нем производить модификацию.
Данный механизм поддерживает изменение классов для работы с клиентами, заказами, событиями, экспортом каталога и другими вспомогательными механизмами.
Особенности
Пользовательские поля в CRM выгружаются через ассоциативный массив customFields
, в данных заказа. Пример:
json {"customFields":{"someCode":"value"}}
Для передачи пользовательского поля в систему используйте php-функцию:
function retailCrmBeforeOrderSend($order, $arFields)
{
$order['customFields']['someCode'] = 'value';
return $order;
}