Добавление названия службы доставки и оплаты в комментарий заказа iiko

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

Июнь 18, 2021

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

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

Данный код может помочь, если существует несколько платежных систем или служб доставки и название содержит какую-либо дополнительную информацию, например "Оплата картой при получении", "Оплата наличными при получении".


namespace Partner;


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

class 
IikoCommentInfo
{
    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();
        }

        
$deliveryName '';
        foreach(
$order->getShipmentCollection() as $shipment)
        {
            
$deliveryName $shipment->getField('DELIVERY_NAME');
            break;
        }
        
$paySystemName '';
        foreach(
$order->getPaymentCollection() as $payment)
        {
            if(
                !(
$paysystemId=$payment->getField('PAY_SYSTEM_ID'))
                || !(
$paySystemService \Bitrix\Sale\PaySystem\Manager::getObjectById($paysystemId))
            )
                continue;
            
$paySystemName $paySystemService->getField('NAME');
        }
        
        
$commentPrefix strlen($deliveryName)>0?'Способ доставки: '.$deliveryName:'';
        
$commentPrefix .= strlen($paySystemName)>0?(strlen($commentPrefix)>0?"\n":'').'Способ оплаты: '.$paySystemName:'';        
        
        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;
    }
}

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