Передача произвольных параметров заказа в CRM Bitrix24

Январь 17, 2018 21:23 Admin

Порой при интеграции заказов интернет магазина с 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);
}

Посмотреть на github.com

Теперь, после того, как пользователь сформирует и оформит заказ, в заказе, в поле комментарий менеджера, будет находиться необходимая информация рис. 1.

Рис.1 Комментарий Битрикс

Смотрим результат

Период синхронизации по умолчанию в CRM установлен в 10 минут. Поэтому каждые 10 минут происходит синхронизация заказов с сайтом, после которой новые заказы появятся в CRM, а вместе с ними и наши комментарии (CRM->Сделки->Нужная сделка->Комментарий) рис. 2.

Рис.2 Комментарий CRM

Таким способом, мы можем передавать в сделку необходимую информацию. Более подробно про процесс интеграции CRM Bitrix24 с вашим сайтом вы можете прочитать здесь: https://www.bitrix24.ru/ blogs/howto/crm.php или https://helpdesk.bitrix24.ru/ open/6727273/.