Т.е. когда основная рабочая валюта рубли (или гривны для Украины) и у нее выставлен единичный курс, то курс доллара и евро приходится выставлять не впрямую как он есть - скажем, 64 рубля за доллар и 75руб за евро, а обратный - 0.015625 и 0.013333.
Решение оказалось простым. При выводе таблицы валют поле currency_value инвертируем (1/currency_value), а перед сохранением инвертируем еще раз. При этом в админке мы видим и вводим нормальные привычные цифры курса, а для всего остального shopCMS ничего не меняется.
Конкретика:
в файле conf_currencies.php
1. строку
$val["curr_value"] = (float)$val["curr_value"];
меняем на
# BEGIN CurrencyInversion
#$val["curr_value"] = (float)$val["curr_value"];
$val["curr_value"] = 1/(float)$val["curr_value"];
# END CurrencyInversion
2. строку
$_POST["curr_new_value"],
меняем на
# BEGIN CurrencyInversion
#$_POST["curr_new_value"],
1/(float)$_POST["curr_new_value"],
# END CurrencyInversion
3. перед строкой
$smarty->assign("currencies", $currencies);
вставляем
# BEGIN CurrencyInversion
foreach ($currencies as $key => $val) $currencies[$key]['currency_value'] = round(1/$val['currency_value'],3);
# END CurrencyInversion