Кастомизация компонента заказа sale.order.ajax

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

Декабрь 22, 2018

Теги: Магазин

Кастомизация компонента "bitrix:sale.order.ajax" - наследование функций, изменение логики.

Наследование класса компонента:


CBitrixComponent::includeComponentClass("bitrix:sale.order.ajax");


class 
MySaleOrderAjax extends SaleOrderAjax
{
    
// наследуемые функции
}

Если нужно выполнить какой-то код при создании заказа, не меняя логику основного компонента:


protected function saveOrder($saveToSession false)

{
    
// код до создания заказа
    
parent::saveOrder($saveToSession);
    
// код после создания заказа
}

Установка изначального значения свойства заказа по символьному коду свойства в процедуре заказа (в данном случае мы устанавливаем значение "Y" свойству с кодом "RESERVE_FLAG", это можно было бы сделать и в настройках свойства, но оно может устанавливаться по условию или быть вычисляемым):


\Bitrix\Main\EventManager::getInstance()->addEventHandlerCompatible
    
'sale'
    
'OnSaleComponentOrderProperties'
    
'SaleOrderEvents::fillMyProperty'
); 

class = 
SaleOrderEvents
{
    function 
fillMyProperty(&$arUserResult$request, &$arParams, &$arResult
    {
        
$registry = \Bitrix\Sale\Registry::getInstance(\Bitrix\Sale\Registry::REGISTRY_TYPE_ORDER);
        
$orderClassName $registry->getOrderClassName();
        
$order $orderClassName::create(\Bitrix\Main\Application::getInstance()->getContext()->getSite());
        
$propertyCollection $order->getPropertyCollection();
    
        foreach (
$propertyCollection as $property)
        {
            if (!
$property->isUtil())
                continue;
            
$arProperty $property->getProperty();
            if(
$arProperty['CODE']!="RESERVE_FLAG")
                continue;
            
$arUserResult["ORDER_PROP"][$arProperty['ID']] = 'Y';
            break;
        }
    }
}

См. также:

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