- Модуль: catalog
- Путь к файлу: ~/bitrix/modules/catalog/lib/component/storeamount.php
- Класс: BitrixCatalogComponentStoreAmount
- Вызов: StoreAmount::getVariationsTotalData
protected function getVariationsTotalData(array $variationIds): array
{
$products = [];
$filter = [
'=PRODUCT_ID' => $variationIds,
'=STORE.ACTIVE' => 'Y',
];
$filter = array_merge(
$filter,
AccessController::getCurrent()->getEntityFilter(
ActionDictionary::ACTION_STORE_VIEW,
StoreProductTable::class
)
);
$commonProductData = StoreProductTable::getList([
'select' => [
'PRODUCT_ID',
'MEASURE_ID' => 'PRODUCT.MEASURE',
'PRICE' => 'PRODUCT.PURCHASING_PRICE',
'CURRENCY' => 'PRODUCT.PURCHASING_CURRENCY',
'QUANTITY_COMMON',
],
'filter' => $filter,
'group' => ['PRODUCT_ID'],
'runtime' => [
new EntityExpressionField('QUANTITY_COMMON', 'SUM(AMOUNT)'),
],
])->fetchAll();
foreach ($commonProductData as $productData)
{
$products[$productData['PRODUCT_ID']] = $productData;
}
$productQuantityReservedData = StoreProductTable::getList([
'select' => [
'PRODUCT_ID',
'RESERVED_AMOUNT',
],
'filter' => [
'=PRODUCT_ID' => $variationIds,
'=STORE.ACTIVE' => 'Y',
],
'group' => ['PRODUCT_ID'],
'runtime' => [
new EntityExpressionField('RESERVED_AMOUNT', 'SUM(QUANTITY_RESERVED)'),
],
])->fetchAll();
foreach ($productQuantityReservedData as $productData)
{
$products[$productData['PRODUCT_ID']]['QUANTITY_RESERVED'] = $productData['RESERVED_AMOUNT'];
}
return $products;
}