Legosp Forum

Shop-Script "Legosp" => Разработка => Тема начата: Bas916 от Мая 05, 2014, 07:49:04 pm

Название: Округление стоимости товара
Отправлено: Bas916 от Мая 05, 2014, 07:49:04 pm
Собственно проблема: в Беларуси нет денег меньше 50 рублей, соответственно все нужно округлять до полтинника. Как проще это реализовать? Первая мысль - прописать на вывод сумм везде округление, если currency_iso = "BYR", но даже страшно представить, сколько всего перелопачивать придется. Может кто-то реализовывал что-то подобное, поделитесь идеей пожалуйста. Чувствую что можно как-то попроще с этим справиться, да вот только пока не могу понять как.

Забыл указать - вариант, прописать цены в каталоге с учетом округления не канает, так как валюта магазина USD и цены в базе соответственно тоже в USD. Курс подбирать так чтобы получались целые числа - не получится, так как он автоматически подтягивается с сайта банка... Пробовал его округлить немного, в итоге потери из-за округлений по 3-5 баксов, а не по 50 руб, что равно 0,005 доллара...
Название: Re: Округление стоимости товара
Отправлено: Heisenberg от Мая 06, 2014, 12:01:32 am
Вы знаете, банально мало то "перелапачивать". Всего то ковырнуть инклюды, да функции(и также категорий)
Всего то :) , во всех файлах, изменить на свое желание:):
/ CURRENCY_val
Название: Re: Округление стоимости товара
Отправлено: Bas916 от Мая 06, 2014, 06:00:07 pm
Эмм... Так и так все верно рассчитывается, по курсу. Проблема в том, что нету таких денег, как выдает при расчете... Тоесть нужно округлять полученную сумму до той банкноты, которая имеется, так что "/ CURRENCY_val" здесь явно не при чем.
Название: Re: Округление стоимости товара
Отправлено: Heisenberg от Мая 06, 2014, 10:24:56 pm
Магазин только в одной валюте, в бел. рублях?
Если да, я бы все же пробежался и поменял:/ 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. курс, соответственно, задавать реальный.
Название: Re: Округление стоимости товара
Отправлено: Bas916 от Мая 07, 2014, 11:48:00 am
Нет, в том то и проблема, что в магазине сейчас 4 валюты. Будет около 7...
Название: Re: Округление стоимости товара
Отправлено: Heisenberg от Мая 07, 2014, 04:56:10 pm
Тогда кроме как проверки, типо: если $_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. просто смарти нагружать излишними пересчетами, как бэ, не очень правильно.
Название: Re: Округление стоимости товара
Отправлено: Bas916 от Мая 08, 2014, 12:57:01 am
"-2" это до 100 округление, а надо до 50 (но написать код, чтобы округляло правильно не проблема, проблемнее использовать его в куче функций одновременно, а в случае если что-то придется изменить....) :) В общем я так сразу и предполагал, когда тему создавал. Интересует лишь, можно ли это как-то попроще реализовать...
Название: Re: Округление стоимости товара
Отправлено: Heisenberg от Мая 08, 2014, 11:18:48 pm
Цитировать
...но написать код, чтобы округляло правильно не проблема, ..
Тогда не вижу препятствий для реализации через условие "если": ID-валюты то... Хотя.. Сильно "шибанет", это корзина/пересчет, могут быть казусы.. :-\