Конвертация валюты в Bitrix
Иногда возникает необходимость чтобы цены товаров в интернет-магазине в панели администратора указывались не в родной валюте, а в иностранной, но вывод на сайте и расчет происходил в национальной валюте (например: товар закупается за рубежом в евро, а продается на территории страны в рублях и для удобства в панели администратора цена указывается в той валюте, за которую он был закуплен).
Перед кастомизацией компонента необходимо создать курсы валют по которым будет происходить конвертация валют. Заходим: Панель Администратора -> Настройки -> Валюты -> Курсы валют и устанавливаем необходимый нам курс (см. ниже).
После остановки курса приступим к дописыванию кода. Для этого открываем логику нашего компонента (к примеру catalog.section), предварительно скопировав его в пользовательскую директория «имя сайта»/bitrix/components/«ваша директория»/«имя компонента» и дописываем туда необходимый код после строчки
$arItem["PRICES"] = CIBlockPriceTools::GetItemPrices
наш код:
foreach($arItem["PRICES"] as $key1=>$PRICE) { foreach($PRICE as $key2=>$value) { if (!in_array($key2,Array('CAN_ACCESS','CAN_BUY','CURRENCY','ID','VALUE_NOVAT','VALUE_VAT', 'VATRATE_VALUE','DISCOUNT_VALUE_NOVAT','DISCOUNT_VALUE_VAT','DISCOUNT_VATRATE_VALUE', 'VALUE','DISCOUNT_VALUE'))) $ModPRICE[$key1][$key2]=CurrencyFormat(CCurrencyRates::ConvertCurrency(doubleval($value), $PRICE['CURRENCY'], "RUB"),"RUB"); elseif (in_array($key2,Array('VALUE_NOVAT','VALUE_VAT','VATRATE_VALUE','DISCOUNT_VALUE_NOVAT', 'DISCOUNT_VALUE_VAT','DISCOUNT_VATRATE_VALUE','VALUE','DISCOUNT_VALUE'))) $ModPRICE[$key1][$key2]=round(CCurrencyRates::ConvertCurrency(doubleval($value), $PRICE['CURRENCY'], "RUB"),-1); elseif ($key2=='CURRENCY') $ModPRICE[$key1][$key2]="RUB"; else $ModPRICE[$key1][$key2]=$value; } $ModPRICE[$key1]["PRINT_VALUE"]=CurrencyFormat($ModPRICE[$key1]["VALUE"],"RUB"); $ModPRICE[$key1]["PRINT_DISCOUNT_VALUE"]=CurrencyFormat($ModPRICE[$key1]["DISCOUNT_VALUE"],"RUB"); } $arItem["PRICES"]=$ModPRICE;
Сохраняем и любуемся в пользовательской части сайта отображением валюты в удобном для посетителей виде.