Установка типа заказа при отправке в iiko

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

Ноябрь 21, 2023

Теги: События, Интеграция с iiko

Для модуля Интеграция с iiko. Установка типа заказа при отправке заказа в iiko.

Используется событие модуля "OnBuildIikoOrderBody".


<?php

    
namespace Partner;

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

// список типов заказа можно получить так:
// \Bitrix\Main\Loader::includeModule('grain.iiko');
// $account = Grain\Iiko\Rest::getAccount(ИД ресторана);
// print_r(Grain\Iiko\Rest\v1::query('/deliveries/order_types',array("organizationIds"=>["ИД организации = внешний код ресторана"]),"POST",$account));

class SetOrderType
{
    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']);
        
        if(
$account['API_VERSION']==1)
        {
            if(isset(
$body['order']['orderServiceType'])) 
            
// to prevent error: 
            // INVALID_BODY_JSON_FORMAT Only one of this fields required: orderTypeId or orderServiceType.
            
{
                if(
$body['order']['orderServiceType']=='DeliveryByCourier')
                {
                    
$body['order']['orderTypeId'] = '16067ea3-356f-eb93-9d14-1fa00d082c4e';
                }
                else
                {
                    
$body['order']['orderTypeId'] = '3b1508f9-fe5b-d6af-cb8d-043af587d5c2';
                }
                unset(
$body['order']['orderServiceType']);
            }
        }

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

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