• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/providerbase.php
  • Класс: BitrixSaleProviderBase
  • Вызов: ProviderBase::shipBasketItem
static function shipBasketItem(BasketItemBase $basketItem)
{

	$result = new Result();

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

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

	/** @var ShipmentCollection $shipmentCollection */
	$shipmentCollection = $order->getShipmentCollection();

	/** @var Shipment $shipment */
	foreach ($shipmentCollection as $shipment)
	{
		$needShip = $shipment->needShip();
		if ($needShip === null)
			continue;

		$r = static::shipShipment($shipment);
		if (!$r->isSuccess())
		{
			$result->addErrors($r->getErrors());
		}
		elseif ($r->hasWarnings())
		{
			$result->addWarnings($r->getWarnings());
			EntityMarker::addMarker($order, $shipment, $r);
			if (!$shipment->isSystem())
			{
				$shipment->setField('MARKED', 'Y');
			}
		}
	}

	return $result;
}