• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/discount/actions.php
  • Класс: BitrixSaleDiscountActions
  • Вызов: Actions::compareBasketResultDescr
static function compareBasketResultDescr(array $action, $resultDescr)
{
	$result = false;

	if (empty($action))
		return $result;
	if (!is_array($resultDescr) || !isset($resultDescr['TYPE']))
		return $result;

	$currency = (isset($action['CURRENCY']) ? $action['CURRENCY'] : static::getCurrency());
	$value = abs($action['VALUE']);
	$valueAction = (
		$action['VALUE'] < 0
		? Formatter::VALUE_ACTION_DISCOUNT
		: Formatter::VALUE_ACTION_EXTRA
	);

	switch ($resultDescr['TYPE'])
	{
		case Formatter::TYPE_VALUE:
			if (
				$resultDescr['VALUE'] == $value
				&& $resultDescr['VALUE_ACTION'] = $valueAction
			)
			{
				switch($action['UNIT'])
				{
					case self::VALUE_TYPE_SUMM:
						$result = (
							(
								$resultDescr['VALUE_TYPE'] == Formatter::VALUE_TYPE_SUMM_BASKET
								|| $resultDescr['VALUE_TYPE'] == Formatter::VALUE_TYPE_SUMM
							)
							&& $resultDescr['VALUE_UNIT'] == $currency
						);
						break;
					case self::VALUE_TYPE_PERCENT:
						$result = ($resultDescr['VALUE_TYPE'] == Formatter::VALUE_TYPE_PERCENT);
						break;
					case self::VALUE_TYPE_FIX:
						$result = (
							$resultDescr['VALUE_TYPE'] == Formatter::VALUE_TYPE_CURRENCY
							&& $resultDescr['VALUE_UNIT'] == $currency
						);
						break;
				}
			}
			break;
		case Formatter::TYPE_MAX_BOUND:
			$result = (
				$resultDescr['VALUE'] == $value
				&& $resultDescr['VALUE_ACTION'] == $valueAction
				&& $resultDescr['VALUE_TYPE'] == Formatter::VALUE_TYPE_CURRENCY
				&& $resultDescr['VALUE_UNIT'] == $currency
			);
			break;
	}

	unset($valueAction, $value, $currency);

	return $result;
}