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