Получение данных о отгрузке

3k
Алексей,
Получение данных о отгрузке

Задача, в письмо о отгрузке добавить информацию: идентификатор посылки, номер и дату документа, адрес доставки.

Задача, в письмо о отгрузке добавить информацию: идентификатор посылки, номер и дату документа, адрес доставки.

На событии 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'];
		}
	}
}

Есть вопросы или нашли ошибку? Напишите комментарий (можно без регистрации), отвечать стараюсь быстро.

Опубликовано 18 февраля 2017 | Обновлено 23 февраля 2017
примеры d7
Поделиться
Похожие статьи
Ядро D7, примеры, документация
Важная тема для разработчиков, чем быстрее начнете использовать, тем лучше.
Читать дальше » 0
Алексей,
Как получить название единицы измерения товара
Да и вообще всю информацию о единице измерения товара. Сразу покажу готовый код для нового ядра битр...
Читать дальше » 0
Алексей,
Комментарии
❮…❯
Авторизуйтесь чтобы получать уведомления об ответе
Задача, в письмо о отгрузке добавить информацию: идентификатор посылки, номер и дату документа, адрес доставки.