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

	$basketList = array();
	/** @var ShipmentItem $shipmentItem */
	foreach ($shipmentItemList as $shipmentItem)
	{

		/** @var BasketItem $basketItem */
		if (!$basketItem = $shipmentItem->getBasketItem())
		{
			continue;
		}

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

		/** @var Shipment $shipment */
		$shipment = $shipmentItemCollection->getShipment();

		if (!$shipment)
		{
			throw new ObjectNotFoundException('Entity "Shipment" not found');
		}

		$needShip = $shipment->needShip();
		if ($needShip === null)
		{
			continue;
		}

		$reserved = ((($shipmentItem->getQuantity() - $shipmentItem->getReservedQuantity()) == 0)
			|| ($shipment->getField('RESERVED') == "Y"));

		if ($basketItem->isBundleParent()
			|| (!$basketItem->isBundleParent() && !$basketItem->isBundleChild()))
		{

			$basketList[$basketItem->getBasketCode()] = array(
				'BASKET_ITEM' => $basketItem,
				'RESERVED' => ($reserved ? "Y" : "N"),
				'NEED_SHIP' => $needShip,
				'SHIPMENT_ITEM' => $shipmentItem
			);
		}

		if($basketItem->isBundleParent())
		{
			/** @var ShipmentItem $bundleShipmentItem */
			foreach ($shipmentItemCollection as $bundleShipmentItem)
			{
				/** @var BasketItem $bundleBasketItem */
				$bundleBasketItem = $bundleShipmentItem->getBasketItem();

				if($bundleBasketItem->isBundleChild())
				{
					$bundleParentBasketItem = $bundleBasketItem->getParentBasketItem();
					if ($bundleParentBasketItem->getBasketCode() == $basketItem->getBasketCode())
					{

						$basketList[$bundleBasketItem->getBasketCode()] = array(
							'BASKET_ITEM' => $bundleBasketItem,
							'RESERVED' => ($reserved ? "Y" : "N"),
							'NEED_SHIP' => $needShip,
							'SHIPMENT_ITEM' => $shipmentItem
						);
					}
				}
			}
		}


	}

	return $basketList;
}