• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/delivery/tracking/manager.php
  • Класс: BitrixSaleDeliveryTrackingManager
  • Вызов: Manager::processStatusesByDelivery
protected function processStatusesByDelivery($deliveryId, $shipmentsData)
{
	$result = new Result();
	$trackingObject = $this->getTrackingObjectByDeliveryId($deliveryId);

	if($trackingObject)
	{
		$statusResults = $trackingObject->getStatusesShipment($shipmentsData);
		$eventsParams = array();

		/** @var StatusResult $statusResult */
		foreach($statusResults as $number => $statusResult)
		{
			$eventParams = null;

			if(empty($shipmentsData[$number]))
				continue;

			if(!$statusResult->isSuccess())
			{
				$eventLog = new CEventLog;

				$eventLog->Add(array(
					"SEVERITY" => CEventLog::SEVERITY_ERROR,
					"AUDIT_TYPE_ID" => 'SALE_DELIVERY_TRACKING_STATUS_RESULT',
					"MODULE_ID" => "sale",
					"ITEM_ID" => $shipmentsData[$number]['SHIPMENT_ID'],
					"DESCRIPTION" => implode('n', $statusResult->getErrorMessages())
				));

				continue;
			}

			if(($statusResult->status != $shipmentsData[$number]['TRACKING_STATUS']))
			{
				$eventParams = new StatusChangeEventParam();
				$eventParams->orderId = $shipmentsData[$number]['ORDER_ID'];
				$eventParams->shipmentId = $shipmentsData[$number]['SHIPMENT_ID'];
				$eventParams->status = $statusResult->status;
				$eventParams->trackingNumber = $number;
				$eventParams->description = $statusResult->description;
				$eventParams->lastChangeTimestamp = $statusResult->lastChangeTimestamp;
				$eventParams->deliveryId = $deliveryId;
				$eventsParams[] = $eventParams;
			}

			$res = $this->updateShipment(
				$shipmentsData[$number]['SHIPMENT_ID'],
				$statusResult
			);

			if(!$res->isSuccess())
			{
				$eventLog = new CEventLog;

				$eventLog->Add(array(
					"SEVERITY" => CEventLog::SEVERITY_ERROR,
					"AUDIT_TYPE_ID" => 'SALE_DELIVERY_TRACKING_UPDATE_SHIPMENT',
					"MODULE_ID" => "sale",
					"ITEM_ID" => $shipmentsData[$number]['SHIPMENT_ID'],
					"DESCRIPTION" => implode('n', $res->getErrorMessages())
				));
			}
		}

		$result->setData($eventsParams);
	}

	return $result;
}