Получение данных о отгрузке
Задача, в письмо о отгрузке добавить информацию: идентификатор посылки, номер и дату документа, адрес доставки.
На событии OnBeforeEventSend проверяется название шаблона и добавляются новые поля. В самом шаблоне письма, вручную, вставляются полученные данные.
AddEventHandler('main', 'OnBeforeEventSend', "changeTemplatesOnDeliveryMail"); function changeShipmentMail(&$arFields, &$arTemplate) { if ($arTemplate['EVENT_NAME'] == 'SALE_STATUS_CHANGED_DF') { CModule::IncludeModule('sale'); $order = \Bitrix\Sale\Order::load($orderId); $arDeliveries = array(); $shipmentCollection = $order->getShipmentCollection(); foreach ($shipmentCollection as $shipment) { if (!$shipment->isSystem()) { // sushhestvuet sistemnaya otgruzka, t.k. tovary` ne mogut by`t` bez otgruzki $arDeliveries['SHIPMENTS'][] = array( 'TRACKING_NUMBER' => $shipment->getField('TRACKING_NUMBER'), 'DELIVERY_DOC_NUM' => $shipment->getField('DELIVERY_DOC_NUM'), 'DELIVERY_DOC_DATE' => $shipment->getField('DELIVERY_DOC_DATE')->format("d.m.Y") ); } } if ($arDeliveries['SHIPMENTS']) { $arShipment = current($arDeliveries['SHIPMENTS']); // Berem tol`ko 1-yu otgruzku $arFields['TRACKING_NUMBER'] = $arShipment['TRACKING_NUMBER']; $arFields['DELIVERY_DOC_NUM'] = $arShipment['DELIVERY_DOC_NUM']; $arFields['DELIVERY_DOC_DATE'] = $arShipment['DELIVERY_DOC_DATE']; } $propertyCollection = $order->getPropertyCollection(); $arProps = $propertyCollection->getArray(); foreach($arProps['properties'] as $arProp) { if ($arProp['CODE'] == 'CITY' || $arProp['CODE'] == 'ADDRESS') { foreach ($arProp['VALUE'] as $i => $value) { $arDeliveries['ADDRESS'][$i][$arProp['CODE']] = $value; } } } if ($arDeliveries['ADDRESS']) { $arDelivery = current($arDeliveries['ADDRESS']); // Berem tol`ko 1-yu adres $arFields['ADDRESS'] = $arDelivery['CITY'].' '.$arDelivery['ADDRESS']; } } }
Есть вопросы или нашли ошибку? Напишите комментарий (можно без регистрации), отвечать стараюсь быстро.