Февраль 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;
}
}