Округление делал в файлах контроллера. Видимо поэтому и не получались правильные значения. Так как вы и сказали.
Но вчера я нашел куда копать и у меня получилось сделать округление так как надо.
Заходим в файл \system\library\currency.php и в функции public function format() находим вот такую строчку:
$string .= number_format(round($value, (int)$decimal_place), (int)$decimal_place, $decimal_point, $thousand_point);
и меняем на такую:
$string .= number_format((ceil($value / 0.5) * 0.5), (int)$decimal_place, $decimal_point, $thousand_point);
В итоге всё округляется верно.
Есть только один момент, как прописать условие при котором если выбрана одна валюта округление работает, а в иных случаях не работает?
Я пробовал делать вот так:
if ($this->config->get('config_currency_id') == 4) {
$string .= number_format((ceil($value / 0.5) * 0.5), (int)$decimal_place, $decimal_point, $thousand_point);
} else {
$string .= number_format(round($value, (int)$decimal_place), (int)$decimal_place, $decimal_point, $thousand_point);
}
Ничего не происходит, я так подозреваю что ошибка вот в этой строке
($this->config->get('config_currency_id') == 4)
Подскажите пожалуйста как правильно это сделать?