- Модуль: sale
- Путь к файлу: ~/bitrix/modules/sale/lib/discount/actions.php
- Класс: BitrixSaleDiscountActions
- Вызов: Actions::calculateDiscountPrice
static function calculateDiscountPrice($value, $unit, array $basketRow, $limitValue, $maxBound)
{
$calculateValue = $value;
if ($unit == self::VALUE_TYPE_PERCENT)
$calculateValue = static::percentToValue($basketRow, $calculateValue);
$calculateValue = static::roundValue($calculateValue, $basketRow['CURRENCY']);
if ($unit == self::VALUE_TYPE_CLOSEOUT)
{
if ($calculateValue < $basketRow['PRICE'])
{
$result = $calculateValue;
$calculateValue = $result - $basketRow['PRICE'];
}
else
{
$result = -1;
}
}
else
{
if (!empty($limitValue) && $limitValue + $calculateValue <= 0)
$calculateValue = -$limitValue;
$result = static::roundZeroValue($basketRow['PRICE'] + $calculateValue);
if ($maxBound && $result < 0)
{
$result = 0;
$calculateValue = -$basketRow['PRICE'];
}
}
return [$calculateValue, $result];
}