• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/Reservation/AvailableQuantityCalculator.php
  • Класс: Bitrix\Crm\Reservation\AvailableQuantityCalculator
  • Вызов: AvailableQuantityCalculator::getProductsAvailableQuantity
private function getProductsAvailableQuantity(array $products): array
{
	if (empty($products))
	{
		return [];
	}

	$storeIds = [];
	$productIds = [];
	foreach ($products as $productId => $stores)
	{
		$productIds[] = $productId;
		foreach ($stores as $storeId => $value)
		{
			$storeIds[] = $storeId;
		}
	}

	$result = [];

	$rows = StoreProductTable::getList([
		'select' => [
			'PRODUCT_ID',
			'AMOUNT',
			'STORE_ID',
			'QUANTITY_RESERVED',
		],
		'filter' => [
			'=PRODUCT_ID' => $productIds,
			'=STORE_ID' => $storeIds,
		],
	]);
	foreach ($rows as $row)
	{
		$storeId = (int)$row['STORE_ID'];
		$productId = (int)$row['PRODUCT_ID'];

		$result[$productId][$storeId] = (float)($row['AMOUNT'] - $row['QUANTITY_RESERVED']);
	}

	return $result;
}