• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/delivery/tracking/manager.php
  • Класс: BitrixSaleDeliveryTrackingManager
  • Вызов: Manager::getStatusByShipmentId
public function getStatusByShipmentId($shipmentId, $trackingNumber = '')
{
	if(intval($shipmentId) <= 0)
		throw new ArgumentNullException('shipmentId');

	$result = new StatusResult();

	$res = ShipmentTable::getList(array(
		'filter' => array(
			'ID'=>$shipmentId
		),
		'select' => array(
			'ID', 'ORDER_ID', 'DELIVERY_ID', 'TRACKING_STATUS', 'TRACKING_NUMBER'
		)
	));

	if(!$shipment = $res->fetch())
	{
		$result->addError(new Error("Can't find shipment with id:"".$shipmentId.'"'));
		return $result;
	}

	if($trackingNumber <> '' && $trackingNumber != $shipment['TRACKING_NUMBER'])
		$shipment['TRACKING_NUMBER'] = $trackingNumber;

	if($shipment['TRACKING_NUMBER'] == '')
		return $result;

	$result = $this->getStatus($shipment);

	if($result->isSuccess())
	{
		if($shipment['TRACKING_STATUS'] != $result->status)
		{
			$eventParams = new StatusChangeEventParam();
			$eventParams->orderId = $shipment['ORDER_ID'];
			$eventParams->shipmentId = $shipmentId;
			$eventParams->status = $result->status;
			$eventParams->trackingNumber = $shipment['TRACKING_NUMBER'];
			$eventParams->description = $result->description;
			$eventParams->lastChangeTimestamp = $result->lastChangeTimestamp;
			$eventParams->deliveryId = $shipment['DELIVERY_ID'];
			$res = $this->processStatusChange(array($eventParams));

			if(!$res->isSuccess())
			{
				$result->addErrors($res->getErrors());
			}
		}
	}

	return $result;
}