Legosp Forum
Shop-Script "Legosp" => Разработка => Тема начата: Bas916 от Мая 05, 2014, 07:49:04 pm
-
Собственно проблема: в Беларуси нет денег меньше 50 рублей, соответственно все нужно округлять до полтинника. Как проще это реализовать? Первая мысль - прописать на вывод сумм везде округление, если currency_iso = "BYR", но даже страшно представить, сколько всего перелопачивать придется. Может кто-то реализовывал что-то подобное, поделитесь идеей пожалуйста. Чувствую что можно как-то попроще с этим справиться, да вот только пока не могу понять как.
Забыл указать - вариант, прописать цены в каталоге с учетом округления не канает, так как валюта магазина USD и цены в базе соответственно тоже в USD. Курс подбирать так чтобы получались целые числа - не получится, так как он автоматически подтягивается с сайта банка... Пробовал его округлить немного, в итоге потери из-за округлений по 3-5 баксов, а не по 50 руб, что равно 0,005 доллара...
-
Вы знаете, банально мало то "перелапачивать". Всего то ковырнуть инклюды, да функции(и также категорий)
Всего то :) , во всех файлах, изменить на свое желание:):
/ CURRENCY_val
-
Эмм... Так и так все верно рассчитывается, по курсу. Проблема в том, что нету таких денег, как выдает при расчете... Тоесть нужно округлять полученную сумму до той банкноты, которая имеется, так что "/ CURRENCY_val" здесь явно не при чем.
-
Магазин только в одной валюте, в бел. рублях?
Если да, я бы все же пробежался и поменял:/ CURRENCY_val на * CURRENCY_val,
и тогда можно попробовать в category_function.php сделать так(добавить минус):
$row['Price'] = round($row['Price'] * CURRENCY_val, -2);
$row['list_price'] = round($row['list_price'] * CURRENCY_val, -2);
так вроде мин.погрешности в округлении.
P.S. курс, соответственно, задавать реальный.
-
Нет, в том то и проблема, что в магазине сейчас 4 валюты. Будет около 7...
-
Тогда кроме как проверки, типо: если $_SESSION['CURRENCY_ID']=нужный ид валюты, то:
$row['Price'] = round($row['Price'] / CURRENCY_val, -2);
$row['list_price'] = round($row['list_price'] / CURRENCY_val, -2);
по иначему:
$row['Price'] = round($row['Price'] / CURRENCY_val, 2);
$row['list_price'] = round($row['list_price'] / CURRENCY_val, 2);
попробовать все в том же category_function.php, в том же месте(function products_to_show).
Как то так, наверное, более чем пока не посетило, не сталкивался, и не пробовал. :)
p.s. просто смарти нагружать излишними пересчетами, как бэ, не очень правильно.
-
"-2" это до 100 округление, а надо до 50 (но написать код, чтобы округляло правильно не проблема, проблемнее использовать его в куче функций одновременно, а в случае если что-то придется изменить....) :) В общем я так сразу и предполагал, когда тему создавал. Интересует лишь, можно ли это как-то попроще реализовать...
-
...но написать код, чтобы округляло правильно не проблема, ..
Тогда не вижу препятствий для реализации через условие "если": ID-валюты то... Хотя.. Сильно "шибанет", это корзина/пересчет, могут быть казусы.. :-\