• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/basket/baserefreshstrategy.php
  • Класс: BitrixSaleBasketBaseRefreshStrategy
  • Вызов: BaseRefreshStrategy::getAvailableQuantityFromPool
static function getAvailableQuantityFromPool(BasketItemBase $item, $quantity)
{
	$availableQuantity = $quantity;
	/** @var BasketBase $basket */
	$basket = $item->getCollection();
	if (!$basket)
	{
		throw new MainObjectNotFoundException('Basket');
	}

	$order = $basket->getOrder();
	if ($order && $order->getId() > 0)
	{
		$productId = $item->getProductId();

		$poolQuantity = 0;

		$pool = PoolQuantity::getInstance($order->getInternalId());
		$reserveQuantityList = $pool->getQuantities(PoolQuantity::POOL_RESERVE_TYPE);
		$quantityList = $pool->getQuantities(PoolQuantity::POOL_QUANTITY_TYPE);

		if (isset($quantityList[$productId]))
		{
			$poolQuantity += $quantityList[$productId];
		}

		if (isset($reserveQuantityList[$productId]))
		{
			$poolQuantity += $reserveQuantityList[$productId];
		}

		if ($poolQuantity < 0)
		{
			$poolQuantity = abs($poolQuantity);
		}

		if (($quantity + $poolQuantity) >= $item->getQuantity())
		{
			$availableQuantity = $item->getQuantity();
		}
	}

	return $availableQuantity;
}