• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/controller/tracking.php
  • Класс: BitrixSaleControllerTracking
  • Вызов: Tracking::getStatusByShipmentIdAction
public function getStatusByShipmentIdAction(int $shipmentId, string $trackingNumber = '')
{
	if($shipmentId <= 0)
	{
		$this->addError(new Error(Loc::getMessage('SALE_CONTROLLER_TRACKING_ERROR_SHIPMENT_ZERO')));
		return null;
	}

	if($trackingNumber == '')
	{
		$this->addError(new Error(Loc::getMessage('SALE_CONTROLLER_TRACKING_ERROR_DELETE_STATUS')));
		return null;
	}

	if(!$this->checkPermission(self::PERMISSION_READ))
	{
		return null;
	}

	$result = null;
	$res = $this->manager->getStatusByShipmentId($shipmentId, $trackingNumber);

	if($res->isSuccess())
	{
		$lastChange = '';

		if($res->lastChangeTimestamp > 0)
		{
			$lastChange = BitrixMainTypeDateTime::createFromTimestamp(
				$res->lastChangeTimestamp
			)->toString();
		}

		$result = [
			'status' => $res->status,
			'statusName' => Manager::getStatusName($res->status),
			'description' => $res->description,
			'lastChange' => $lastChange
		];

		if($this->checkPermission(self::PERMISSION_WRITE))
		{
			$res = $this->manager->updateShipment($shipmentId, $res);

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

	return $result;
}