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