Добавление собственного поля в письмо о заказе

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

Февраль 21, 2020

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

Добавление собственного поля в информационные письма о заказах.

В данном примере осуществляется добавление поля #PICKUP_INFO#, содержащего информацию о правилах самовывоза из дополнительного свойства с кодом "UF_REGULATIONS" у склада самовывоза в письмо о разрешении доставки (событие "SALE_ORDER_DELIVERY"):


namespace Partner;


\
Bitrix\Main\EventManager::getInstance()->addEventHandler
    
'main'
    
'\Bitrix\Main\Mail\Internal\Event::OnBeforeAdd'
    
'\Partner\ShippingMail::onBeforeAdd'
); 

class 
ShippingMail
{
    function 
onBeforeAdd(\Bitrix\Main\Entity\Event $event)
    {
        
$fields $event->getParameter("fields");

        if(
$fields['EVENT_NAME']!='SALE_ORDER_DELIVERY')
            return;

        
$cFields $fields['C_FIELDS'];
        
$cFields['PICKUP_INFO'] = '';

        if(
            (
$orderId=intval($cFields['ORDER_REAL_ID']))>0
            
&& \Bitrix\Main\Loader::includeModule('sale')
            && (
$order=\Bitrix\Sale\Order::load($orderId))
        ) {
            foreach(
$order->getShipmentCollection() as $shipment)
            {
                if((
$storeId=intval($shipment->getStoreId()))<=0)
                    continue;
                
$storeParams = array(
                    
'filter' => array('=ID'=>$storeId),
                    
'select' => array('*','UF_REGULATIONS'),
                    
'limit' => 1,
                );
                if(!
$store = \Bitrix\Catalog\StoreTable::getList($storeParams)->fetch())
                    continue;
                
$cFields['PICKUP_INFO'] = $store['UF_REGULATIONS'];
            }
        }
        
        
$result = new \Bitrix\Main\Entity\EventResult();
        
$changedFields = array(
            
'C_FIELDS' => $cFields,
        );
        
$result->modifyFields($changedFields);
        
        return 
$result;
    }    
}

См. также:

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