Перейти к публикации
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...

Округление цен с 2 612 096 до 2 612 000


Tarasovby
 Поделиться

Рекомендованные сообщения

Всем привет!
Ребя подскажите пожалуйста криворукому человеку :(
Нужно округлить цены с 2 612 096 до 2 612 000.
Помогите пожалуйста разобраться как это можно сделать.
Очень жду дельный ответ!

Ссылка на комментарий
Поделиться на других сайтах


  • 2 недели спустя...

 

по аналогии до тысячи (-2 меняем на -3)

 

судя по цифре у Вас белорусский рубль, значит для вас 

 if ($currency == 'BYR')
{
$string .= number_format(round($value, -3), (int)$decimal_place, $decimal_point, $thousand_point);
}
else
{
$string .= number_format(round($value, (int)$decimal_place), (int)$decimal_place, $decimal_point, $thousand_point);
}

 

Огромное спасибо!

Вы настоящий друг :eek:

Ссылка на комментарий
Поделиться на других сайтах


  • 4 недели спустя...

Всем спасибо за решения, но у меня немного "посложнее" задача для рублевых округлений...

 

Есть товары дорогие, условно дороже 15 тыс, для них оеругление до сотен самое то,

но есть товары дешевые, всякая мелочевка, которая стоит условно от 300 до 3000 руб.,

и для них надо округлять уже десятки.

 

Т.е. нужна проверка, если цена условно до 3 тыр, то десятки , если больше, то сотни.

Что-то не получается у меня написать эту строку, может кто подскажет..

Ссылка на комментарий
Поделиться на других сайтах


а какие попытки предпринимались?

 if ($currency == 'BYR')
{
$string .= ($value>15000)? number_format(round($value, -3), (int)$decimal_place, $decimal_point, $thousand_point) : number_format(round($value, (int)$decimal_place), (int)$decimal_place, $decimal_point, $thousand_point);
}
Ссылка на комментарий
Поделиться на других сайтах

Спасибо большое.

 

Но ошибка происходит, не могу понять где:

if ($currency == 'RUB')
{
$string .= ($value>15000)? number_format (round($value, -2), (int)$decimal_place, $decimal_point, $thousand_point); 

else

$string .= number_format (round($value, -1), (int)$decimal_place, $decimal_point, $thousand_point); 
}
Ссылка на комментарий
Поделиться на других сайтах


  • 1 год спустя...

Сделал, как советовали выше, цена в карточке товара округляется. Но если положить его в корзину в количестве, отличном от 1, то для расчета суммы используется цена, причем с копейками. Например, товар стоит 1,73 USD. По курсу 64 получается 110,72

 

Если положить в товар 10 шт - то сумма получается 1107 без округления и 1110 с округлением. Если 100 или 1000 - то соответственно 11070 /11072 и 110720/110720 (при цене за шт. 110, т.к. в настройках указано не учитывать копейки).

 

Где подправить, чтобы при подсчете суммы тоже учитывалась округленная цена?

Ссылка на комментарий
Поделиться на других сайтах


Как выяснилось, это особенность подсчета самого движка opencart. Ошибки возникают, если валюта по дефолту и валюта во фронтенде отличаются.

Странно, что до сих пор нету мода, который исправляет эти ошибки и считает суммы используя цену фронтенда, а не дефолтную в другой валюте с последующим округлением.

Ссылка на комментарий
Поделиться на других сайтах


  • 9 месяцев спустя...

А можно ли округлить цену до кратной не 10, а 5 или 3? Можно вот так, например (кратно 5)

$string .= number_format(round($value/5, 0)*5,(int)$decimal_place, $decimal_point, $thousand_point);

Но проблема с вычислением сумм остается, т.к. эта строчка только для отображения цены...

Изменено пользователем Leo2
Ссылка на комментарий
Поделиться на других сайтах


Да, ошибки накапливаются..

 

Для этого нужно округлять во сех тех местах, где происходят манипуляции с "денежными" числами.

Ссылка на комментарий
Поделиться на других сайтах

Нет..

 

Цена в админке указана в $

 

В магазине идет пересчет по курсу

 

Соответственно будут и копейки и десятки копеек.

 

Я уже на форуме показывал методы округления  финансовых данных, но их найти...

 

Проще повториться

 

$price = 1

$value = 1234.567;

 

$price_currency = round($price * $value);

 

Далее все манипуляции с уже округленными данными

 

$total = $price_currency * $quantity

 

И затем форматирование для вывода

Ссылка на комментарий
Поделиться на других сайтах

  • 2 года спустя...

             Всем добрый день! Нужен совет как округлить цену в карточке товара? 

Задача была такая: нужно чтобы цена товара на ветрине и везде была без копеек и в виде округленного числа до десятков (Например 1230 руб а не 1231руб)

              С помощью способов опубликованных на форуме проделала следующее:

              - Сначала убрала копейки   Настройки--Локолизация--Валюта---знаков после запятой:   ставим 0.        Получила 1231 руб. 

              - Далее округлила цену до десятков:       в файле        \system\library\cart\currency.php

                найдем там функцию:                       public function format

                 в этой функции есть строка:     $amount round($amount, (int)$decimal_place);

                 заменим  на:                              $amount = (round($amount/10))*10;

Все теперь цена отображается корректно на ветрине и  считает в корзине  правильно согласно цены на витрине (даже если увеличить кол-во) 

И  выглядит как округленная до десятков:             например 1230руб.

                                                                                    в корзине 1230руб. * 2шт. =2460ру.

Но вот проблема, если зайти в карточку товара цена отображается все так же (не округленная)  например 1231руб.  Никак не найду ответ в каком файле что нужно исправить еще? Очень нужен совет!!!! Магазин установлен на движке Опенкарт Русская сборка  2.3.0.2.3. 

               

 

Ссылка на комментарий
Поделиться на других сайтах


RusHookah  

спасибо, модуль интересный и наверное незаменим когда несколько валют применяется. У меня все проще есть только одна - это РУБ.

 

Ссылка на комментарий
Поделиться на других сайтах


3 минуты назад, Iren18 сказал:

RusHookah  

спасибо, модуль интересный и наверное незаменим когда несколько валют применяется. У меня все проще есть только одна - это РУБ.

 

Самый простой способ в вашем случае тек же этот файл копать

Данное решение на 1.5.* но по аналогии можно сделать и для 2.3 и 3.0

Ссылка на комментарий
Поделиться на других сайтах


Только что, RusHookah сказал:

Самый простой способ в вашем случае, Этот же файл копать

Данное решение на 1.5.* но по аналогии можно сделать и для 2.3 и 3.0

 

Ссылка на комментарий
Поделиться на других сайтах


  • 11 месяцев спустя...
В 11.11.2018 в 16:05, RusHookah сказал:

/system/library/cart/currency.php

        $string .= number_format($amount, (int)$decimal_place, $this->language->get('decimal_point'), $this->language->get('thousand_point'));
 

В моей версии именно такая строка. На что ее нужно заменить, что б цены скруглялись? 

Ссылка на комментарий
Поделиться на других сайтах


  • 1 год спустя...
В 11.10.2019 в 19:08, Stackand сказал:

В моей версии именно такая строка. На что ее нужно заменить, что б цены скруглялись? 

Не узнали ответ, случаем?) 

Ссылка на комментарий
Поделиться на других сайтах


Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас
 Поделиться

×
×
  • Создать...

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.