Апрель 7, 2024
Теги: События, Модули grain, Интеграция с iiko
Для модуля Интеграция с iiko от 4.1. Пример использования события "OnWebhookDeliveryOrderUpdate".
Необходимо создать свойства заказа с символьными кодами "COURIER_NAME", "COURIER_PHONE" и настроить обновление статусов заказов из iiko стандартными средствами модуля.
<?php
namespace Partner;
\Bitrix\Main\EventManager::getInstance()->addEventHandler(
'grain.iiko',
'OnWebhookDeliveryOrderUpdate',
'\Partner\CourierInfo::onWebhookDeliveryOrderUpdate'
);
class CourierInfo
{
public static function onWebhookDeliveryOrderUpdate(\Bitrix\Main\Event $event)
{
$webhook = $event->getParameter('WEBHOOK'); // вебхук
$order = $event->getParameter('ORDER'); // объект заказа
$orderStatus = $event->getParameter('STATUS'); // статус заказа в iiko, например, "Unconfirmed"
$statusId = $event->getParameter('STATUS_ID'); // id установленного статуса заказа битрикс
$propertyCollection = $order->getPropertyCollection();
if(!$courierNameProperty=$propertyCollection->getItemByOrderPropertyCode('COURIER_NAME'))
return;
if(!$courierPhoneProperty=$propertyCollection->getItemByOrderPropertyCode('COURIER_PHONE'))
return;
$courierName = '';
$courierPhone = '';
if(isset($webhook['eventInfo']['order']['courierInfo']['courier']['name']))
$courierName = $webhook['eventInfo']['order']['courierInfo']['courier']['name'];
if(isset($webhook['eventInfo']['order']['courierInfo']['courier']['name']))
$courierPhone = $webhook['eventInfo']['order']['courierInfo']['courier']['phone'];
$courierNameProperty->setValue($courierName);
$courierPhoneProperty->setValue($courierPhone);
$order->save();
}
}