• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/providerbase.php
  • Класс: BitrixSaleProviderBase
  • Вызов: ProviderBase::tryUnreserveShipment
static function tryUnreserveShipment(Shipment $shipment)
{
	$result = new Result();
	/** @var ShipmentItemCollection $shipmentItemCollection */
	if (!$shipmentItemCollection = $shipment->getShipmentItemCollection())
	{
		throw new ObjectNotFoundException('Entity "ShipmentItemCollection" not found');
	}

	/** @var ShipmentCollection $shipmentCollection */
	if (!($shipmentCollection = $shipment->getCollection()))
	{
		throw new ObjectNotFoundException('Entity "ShipmentCollection" not found');
	}

	/** @var Order $order */
	if (!($order = $shipmentCollection->getOrder()))
	{
		throw new ObjectNotFoundException('Entity "Order" not found');
	}

	/** @var ShipmentItem $shipmentItem */
	foreach ($shipmentItemCollection as $shipmentItem)
	{
		/** @var Result $r */
		$r = static::tryUnreserveShipmentItem($shipmentItem);
		if (!$r->isSuccess())
		{
			$result->addErrors($r->getErrors());
			EntityMarker::addMarker($order, $shipment, $r);
			if (!$shipment->isSystem())
			{
				$shipment->setField('MARKED', 'Y');
			}
		}
		elseif ($r->hasWarnings())
		{
			$result->addWarnings($r->getWarnings());
		}
	}

	return $result;
}