- Модуль: catalog
- Путь к файлу: ~/bitrix/modules/catalog/lib/component/storeamount.php
- Класс: BitrixCatalogComponentStoreAmount
- Вызов: StoreAmount::fillStoreTotal
protected function fillStoreTotal(): void
{
$storeTotalData = [
'QUANTITY' => [],
'AMOUNT' => [],
];
if ($this->getStoresCount() > 0)
{
$variationsTotalData = $this->getVariationsTotalData($this->getVariationIds());
foreach ($variationsTotalData as $variationData)
{
$variationData['MEASURE_ID'] = $variationData['MEASURE_ID'] ?? (int)$this->getDefaultMeasure()['ID'];
if (!isset($storeTotalData['QUANTITY'][$variationData['MEASURE_ID']]))
{
$storeTotalData['QUANTITY'][$variationData['MEASURE_ID']] = [
'QUANTITY' => 0.0,
'QUANTITY_COMMON' => 0.0,
'QUANTITY_RESERVED' => 0.0,
'MEASURE_ID' => $variationData['MEASURE_ID'],
];
}
$quantityValue = (float)$variationData['QUANTITY_COMMON'] - (float)$variationData['QUANTITY_RESERVED'];
$storeTotalData['QUANTITY'][$variationData['MEASURE_ID']]['QUANTITY'] += $quantityValue;
$storeTotalData['QUANTITY'][$variationData['MEASURE_ID']]['QUANTITY_COMMON'] += (float)$variationData['QUANTITY_COMMON'];
$storeTotalData['QUANTITY'][$variationData['MEASURE_ID']]['QUANTITY_RESERVED'] += (float)$variationData['QUANTITY_RESERVED'];
if (!isset($storeTotalData['AMOUNT'][$variationData['CURRENCY']]))
{
$storeTotalData['AMOUNT'][$variationData['CURRENCY']] = [
'AMOUNT' => 0.0,
'CURRENCY' => $variationData['CURRENCY'],
];
}
$commonPrice = (float)$variationData['QUANTITY_COMMON'] * (float)$variationData['PRICE'];
$storeTotalData['AMOUNT'][$variationData['CURRENCY']]['AMOUNT'] += $commonPrice;
}
}
$this->storeTotal = $storeTotalData;
}