Автор Тема: Округление стоимости товара  (Прочитано 16173 раз)

Оффлайн Bas916

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

Забыл указать - вариант, прописать цены в каталоге с учетом округления не канает, так как валюта магазина USD и цены в базе соответственно тоже в USD. Курс подбирать так чтобы получались целые числа - не получится, так как он автоматически подтягивается с сайта банка... Пробовал его округлить немного, в итоге потери из-за округлений по 3-5 баксов, а не по 50 руб, что равно 0,005 доллара...
« Последнее редактирование: Мая 05, 2014, 07:53:18 pm от Bas916 »

Оффлайн Heisenberg

  • Спец
  • ***
  • Сообщений: 157
    • Просмотр профиля
Re: Округление стоимости товара
« Ответ #1 : Мая 06, 2014, 12:01:32 am »
Вы знаете, банально мало то "перелапачивать". Всего то ковырнуть инклюды, да функции(и также категорий)
Всего то :) , во всех файлах, изменить на свое желание:):
/ CURRENCY_val
« Последнее редактирование: Мая 06, 2014, 12:09:17 am от Heisenberg »

Оффлайн Bas916

  • Пользователь
  • **
  • Сообщений: 79
    • Просмотр профиля
Re: Округление стоимости товара
« Ответ #2 : Мая 06, 2014, 06:00:07 pm »
Эмм... Так и так все верно рассчитывается, по курсу. Проблема в том, что нету таких денег, как выдает при расчете... Тоесть нужно округлять полученную сумму до той банкноты, которая имеется, так что "/ CURRENCY_val" здесь явно не при чем.

Оффлайн Heisenberg

  • Спец
  • ***
  • Сообщений: 157
    • Просмотр профиля
Re: Округление стоимости товара
« Ответ #3 : Мая 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. курс, соответственно, задавать реальный.
« Последнее редактирование: Мая 06, 2014, 11:59:43 pm от Heisenberg »

Оффлайн Bas916

  • Пользователь
  • **
  • Сообщений: 79
    • Просмотр профиля
Re: Округление стоимости товара
« Ответ #4 : Мая 07, 2014, 11:48:00 am »
Нет, в том то и проблема, что в магазине сейчас 4 валюты. Будет около 7...

Оффлайн Heisenberg

  • Спец
  • ***
  • Сообщений: 157
    • Просмотр профиля
Re: Округление стоимости товара
« Ответ #5 : Мая 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. просто смарти нагружать излишними пересчетами, как бэ, не очень правильно.
« Последнее редактирование: Мая 07, 2014, 05:00:07 pm от Heisenberg »

Оффлайн Bas916

  • Пользователь
  • **
  • Сообщений: 79
    • Просмотр профиля
Re: Округление стоимости товара
« Ответ #6 : Мая 08, 2014, 12:57:01 am »
"-2" это до 100 округление, а надо до 50 (но написать код, чтобы округляло правильно не проблема, проблемнее использовать его в куче функций одновременно, а в случае если что-то придется изменить....) :) В общем я так сразу и предполагал, когда тему создавал. Интересует лишь, можно ли это как-то попроще реализовать...

Оффлайн Heisenberg

  • Спец
  • ***
  • Сообщений: 157
    • Просмотр профиля
Re: Округление стоимости товара
« Ответ #7 : Мая 08, 2014, 11:18:48 pm »
Цитировать
...но написать код, чтобы округляло правильно не проблема, ..
Тогда не вижу препятствий для реализации через условие "если": ID-валюты то... Хотя.. Сильно "шибанет", это корзина/пересчет, могут быть казусы.. :-\