Добавить обработчик на конвертирование валют

Рейтинг: 1.5104  
На голосовании
Предложил Пользователь 88511 16.09.2015 12:00:25

Добавить обработчик на конвертирование валют

Появилась острая необходимость делать дополнительные обработки при конвертировании цен из одной валюты в другую. В нашем случае округлять цены до 100 если конвертируем в рубли из евро/доллар, до 10 если из юань/гривна,  иначе округление не нужно (если товар стоит к примеру 65 рублей, то округление запрещено)

Как идея всего-то добавить обработчик в метод ConvertCurrency, что решает много проблем.

function ConvertCurrency($valSum, $curFrom, $curTo, $valDate = ""
 {
  $newPrice = doubleval(doubleval($valSum) * CCurrencyRates::GetConvertFactor($curFrom, $curTo, $valDate));
  foreach (GetModuleEvents('currency', 'ConvertCurrency', true) as $arEvent)
  {
   $result = ExecuteModuleEventEx($arEvent, array($newPrice, $curFrom, $curTo));
   if ($result != '')
    return $result;
  }
  return $newPrice;
 }

Рейтинг: 0  
Пользователь 1756 16.09.2015 15:56:20
Приклеивать округление к конвертации валют, имхо, не совсем верно. Например, у нас сложное округление происходит при применении скидок распродаж. Возможно, есть и другие варианты. Нужно какое-то более универсальное решение.