Апрель 6, 2024
Теги: События, Модули grain, Интеграция с iiko
Отправка пометки "Не перезванивать" в комментарий iiko, для модуля Интеграция с iiko. Используется событие модуля "OnBuildIikoOrderBody".
Необходимо создать свойство заказа "Не перезванивать" типа "Да/Нет", и включить отображение дополнительных свойств в параметрах компонента оформления заказа (grain:iiko.order).
<?php
namespace Partner;
\Bitrix\Main\EventManager::getInstance()->addEventHandler(
'grain.iiko',
'OnBuildIikoOrderBody',
'\Partner\DoNotCall::onBuildIikoOrderBody'
);
class DoNotCall
{
public static function onBuildIikoOrderBody(\Bitrix\Main\Event $event)
{
$restaurant = $event->getParameter('RESTAURANT');
$order = $event->getParameter('ORDER');
$params = $event->getParameter('PARAMS');
$body = $event->getParameter('BODY');
$account = \Grain\Iiko\Rest::getAccount($restaurant['ID']);
foreach ($event->getResults() as $eventResult) // получение данных после другого обработчика, если он был
{
if($eventResult->getType() == \Bitrix\Main\EventResult::ERROR)
continue;
if($eventResult->getParameters())
$body = $eventResult->getParameters();
}
$propertyCollection = $order->getPropertyCollection();
$commentPrefix = '';
if(
!!($doNotCallProperty=$propertyCollection->getItemByOrderPropertyCode('DO_NOT_CALL'))
&& $doNotCallProperty->getValue()=='Y'
) {
$commentPrefix = $doNotCallProperty->getName();
}
if(strlen($commentPrefix)>0)
{
if($account['API_VERSION']==1) // iikoTransport
{
if(is_array($body['order']))
{
if(is_string($body['order']['comment']))
$body['order']['comment'] = $commentPrefix."\n\n".$body['order']['comment'];
else
$body['order']['comment'] = $commentPrefix;
}
}
elseif($account['API_VERSION']==0) // iikoDelivery
{
if(!is_array($body['order']['address']))
$body['order']['address'] = array();
if(is_string($body['order']['address']['comment']))
$body['order']['address']['comment'] = $commentPrefix."\n\n".$body['order']['address']['comment'];
else
$body['order']['address']['comment'] = $commentPrefix;
}
}
$result = new \Bitrix\Main\EventResult(\Bitrix\Main\EventResult::SUCCESS, $body);
return $result;
}
}