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