Пометка "Не перезванивать"

Модуль расширенного управления меню для битрикс

Апрель 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;
    }
}

← Переход к списку