- Модуль: 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;
}