• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/providerbase.php
  • Класс: BitrixSaleProviderBase
  • Вызов: ProviderBase::tryReserveShipment
static function tryReserveShipment(Shipment $shipment)
{
	$result = new Result();

	/** @var ShipmentItemCollection $shipmentCollection */
	$shipmentItemCollection = $shipment->getShipmentItemCollection();

	$shipmentItemList = $shipmentItemCollection->getShippableItems();
	/** @var ShipmentItem $shipmentItem */
	foreach ($shipmentItemList as $shipmentItem)
	{
		try
		{
			/** @var Result $r */
			$r = static::tryReserveShipmentItem($shipmentItem);
			if (!$r->isSuccess())
			{
				$result->addErrors($r->getErrors());
			}
			elseif ($r->hasWarnings())
			{
				$result->addWarnings($r->getWarnings());
			}
		}
		catch(Exception $e)
		{
			/** @var Shipment $shipment */
			if (!$shipment = $shipmentItemCollection->getShipment())
			{
				throw new ObjectNotFoundException('Entity "Shipment" not found');
			}
			else
			{
				throw new $e;
			}

		}

	}

	return $result;
}