• Модуль: catalog
  • Путь к файлу: ~/bitrix/modules/catalog/lib/model/price.php
  • Класс: BitrixCatalogModelPrice
  • Вызов: Price::calculatePriceFromBase
static function calculatePriceFromBase($id, array &$fields)
{
	$correct = false;
	$copyFields = $fields;
	if (
		!isset($fields['PRODUCT_ID'])
		|| !isset($fields['CATALOG_GROUP_ID'])
		|| !array_key_exists('QUANTITY_FROM', $fields)
		|| !array_key_exists('QUANTITY_TO', $fields)
	)
	{
		if ($id !== null)
		{

			$iterator = self::getList([
				'select' => ['ID', 'PRODUCT_ID', 'CATALOG_GROUP_ID', 'QUANTITY_FROM', 'QUANTITY_TO'],
				'filter' => ['=ID' => $id]
			]);
			$data = $iterator->fetch();
			unset($iterator);
			if (!empty($data))
			{
				$copyFields = array_merge($data, $copyFields);
				$correct = true;
			}
			unset($data);
		}
	}
	else
	{
		$correct = true;
	}

	if (!$correct)
		return;

	$productId = $copyFields['PRODUCT_ID'];

	if (!isset(self::$productPrices[$productId]))
		self::loadProductBasePrices($productId);

	$index = self::getPriceIndex($copyFields);
	if (!isset(self::$productPrices[$productId][$index]))
		return;

	$fields['PRICE'] = self::$productPrices[$productId][$index]['PRICE']*self::$extraList[$copyFields['EXTRA_ID']];
	$fields['CURRENCY'] = self::$productPrices[$productId][$index]['CURRENCY'];
}