Появилась острая необходимость делать дополнительные обработки при конвертировании цен из одной валюты в другую. В нашем случае округлять цены до 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;
} |