Порой при интеграции заказов интернет магазина с CRM Bitrix24 требуется передача произвольных параметров, в меру тех или иных причин. Самый простой способ это сделать – передать нужные параметры в комментарий менеджера к заказу. В таком случае, переданный комментарий автоматически будет добавлен в CRM при следующем импорте. Данный способ передачи параметров мы и рассмотрим в этой статье.
Добавляем произвольные параметры заказа в CRM Bitrix24 с помощью комментария
В современном ядре D7 Bitrix управления сайтом у модуля sale, есть полезный обработчик событий: OnSaleOrderBeforeSaved, благодаря которому можно корректировать информацию заказа в самом начале процесса сохранения. С его помощью к примеру, можно записывать комментарий менеджера, в котором будут находиться нужные данные, которые отобразятся в Bitrix24, в поле комментария к заказу.
Таким образом, в файле init.php можно записать примерно следующий обработчик, который сохраняет адрес и произвольные поля в комментарий менеджера к заказу:
<?php
// Регистрируем обработчик методами D7
use Bitrix\Main;
use Bitrix\Sale;
Main\EventManager::getInstance()->addEventHandler(
'sale',
'OnSaleOrderBeforeSaved',
'OnSaleComponentHandler'
);
function OnSaleComponentHandler(Main\Event $event)
{
$order = $event->getParameter("ENTITY");
// Получаем объект заказа
$commentbitrix24 = "";
$propertyCollection = $order->getPropertyCollection();
// Свойства товара в корзине, коллекция объектов Sale\BasketPropertyItem
$propertys = $propertyCollection->getArray();
// Массив свойств ['properties' => [..], 'groups' => [..] ];
// Получаем адрес пользователя
$address = "Адрес:";
foreach ($propertys["properties"] as $location)
{
if($location["CODE"] === "ADDRESS")
{
$address .= $location["VALUE"][0] . "<br>";
}
elseif($location["CODE"] === "STREET"
|| $location["CODE"] === "HOUSE")
{
$address .= $location["VALUE"][0] . " ";
}
}
$commentbitrix24 = $address;
// Получаем дополнительные параметры,
//которые необходимо поместить в комментарий менеджера
$articles = "";
$dbBasketItems = CSaleBasket::GetList(array(),
array("ORDER_ID"=>$order->getId()));
// Выбираем записи из корзины, по id заказа
while ($arItems = $dbBasketItems->Fetch())
{
// Выбираем необходимые свойства
$db_props = CSaleBasket::GetPropsList(
array(),
array(
"BASKET_ID"=>$arItems["ID"],
"CODE"=>"FABRIC" )
);
while ($item = $db_props->Fetch())
{
$articles = "<br/>Артикулы из обложки: " . $item["VALUE"];
}
}
$commentbitrix24 .= $articles; // Получаем конечную строку комментария
// Устанавливаем сформированный комментарий менеджера для заказа
$order->setField("COMMENTS", $commentbitrix24);
}
Теперь, после того, как пользователь сформирует и оформит заказ, в заказе, в поле комментарий менеджера, будет находиться необходимая информация рис. 1.
Рис.1
Смотрим результат
Период синхронизации по умолчанию в CRM установлен в 10 минут. Поэтому каждые 10 минут происходит синхронизация заказов с сайтом, после которой новые заказы появятся в CRM, а вместе с ними и наши комментарии (CRM->Сделки->Нужная сделка->Комментарий) рис. 2.
Рис.2
Таким способом, мы можем передавать в сделку необходимую информацию. Более подробно про процесс интеграции CRM Bitrix24 с вашим сайтом вы можете прочитать здесь: https://www.bitrix24.ru/ blogs/howto/crm.php или https://helpdesk.bitrix24.ru/ open/6727273/.