• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/tradingplatform/helper.php
  • Класс: BitrixSaleTradingPlatformHelper
  • Вызов: Helper::onAfterUpdateShipment
static function onAfterUpdateShipment(BitrixMainEvent $event)
{
	$result = new EventResult();
	$data = $event->getParameter('fields');

	if (!isset($data["TRACKING_NUMBER"]) && !isset($data["DELIVERY_NAME"]))
		return $result;

	$primary = $event->getParameter('id');

	$dbRes = OrderTable::getList(array(
		'select' => array(
			'*',
			'SITE_ID' => 'ORDER.LID',
			'TRADING_PLATFORM_CODE' => 'TRADING_PLATFORM.CODE',
			'TRADING_PLATFORM_CLASS' => 'TRADING_PLATFORM.CLASS',
			'DELIVERY_NAME' => 'SHIPMENT.DELIVERY.NAME',
			'DELIVERY_ID' => 'SHIPMENT.DELIVERY_ID',
			'TRACKING_NUMBER' => 'SHIPMENT.TRACKING_NUMBER',
		),
		'filter' => array(
			'=SHIPMENT.ID' => $primary['ID'],
		),
		'runtime' => array(
			'SHIPMENT' => array(
				'data_type' => 'BitrixSaleInternalsShipmentTable',
				'reference' => array(
					'=this.ORDER_ID' => 'ref.ORDER_ID',
				),
			),
		),
	));

	if ($platformOrder = $dbRes->fetch())
	{
		if (class_exists($platformOrder['TRADING_PLATFORM_CLASS']) && is_subclass_of($platformOrder['TRADING_PLATFORM_CLASS'], 'BitrixSaleTradingPlatformPlatform'))
		{
			if ($platform = call_user_func($platformOrder['TRADING_PLATFORM_CLASS'] . '::getInstance'))
			{
				$result = $platform->onAfterUpdateShipment(
					$event,
					array_merge(
						$platformOrder,
						array(
							'TRACKING_NUMBER' => isset($data["TRACKING_NUMBER"]) ? $data["TRACKING_NUMBER"] : $platformOrder["TRACKING_NUMBER"],
							'DELIVERY_NAME' => isset($data["DELIVERY_NAME"]) ? $data["DELIVERY_NAME"] : $platformOrder["DELIVERY_NAME"],
							'DELIVERY_ID' => isset($data["DELIVERY_ID"]) ? $data["DELIVERY_ID"] : $platformOrder["DELIVERY_ID"],
						)
					)
				);
			}
		}
	}

	return $result;
}