Выгрузка количества персон в заказ iiko

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

Май 20, 2022

Теги: События, Модули grain, Интеграция с iiko

Выгрузка количества персон в заказ iiko. Для модуля Интеграция с iiko. Используется событие "OnBuildIikoOrderBody".

Предполагает наличие свойства заказа типа "Перечисление" с символьным кодом "PERSON_COUNT". В значениях вариантов (поле "Код") должны быть числа, соответствующие количеству персон. Либо строковое свойство, но желательно при этом обеспечить проверку, что в значении будет отправляться целое число. Код работает как с api iikoDelivery, так и iikoTransport.


<?php

    
namespace Partner;

\Bitrix\Main\EventManager::getInstance()->addEventHandler
    
'grain.iiko'
    
'OnBuildIikoOrderBody'
    
'\Partner\IikoOrderEvents::onBuildIikoOrderBody'
); 

class 
IikoOrderEvents
{
    public static function 
onBuildIikoOrderBody(\Bitrix\Main\Event $event
    {
        
$restaurant $event->getParameter('RESTAURANT');
        
$order $event->getParameter('ORDER');
        
$params $event->getParameter('PARAMS');
        
$body $event->getParameter('BODY');
        foreach (
$event->getResults() as $eventResult// получение данных после другого обработчика, если он был
        
{
            if(
$eventResult->getType() == \Bitrix\Main\EventResult::ERROR)
                continue;
            if(
$eventResult->getParameters())
                
$body $eventResult->getParameters();
        }
        
$account \Grain\Iiko\Rest::getAccount($restaurant['ID']);
        
        foreach(
$order->getPropertyCollection() as $propertyValue)
        {
            if(
$propertyValue->getField('CODE')!='PERSON_COUNT')
                continue;
            if(
intval($propertyValue->getField('VALUE'))>0)
            {
                if(
$account['API_VERSION']==1)
                {
                    
$body['order']['guests'] = array(
                        
'count' => intval($propertyValue->getField('VALUE')),
                        
'splitBetweenPersons' => true,
                    );
                }
                elseif(
$account['API_VERSION']==0)
                {
                    
$body['order']['personsCount'] = intval($propertyValue->getField('VALUE'));
                }
            }
        }

        
$result = new \Bitrix\Main\EventResult(\Bitrix\Main\EventResult::SUCCESS$body);
        return 
$result;
    }
}

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