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

17 января, 2018 21:23
Admin
19 июня, 2022 9:15

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