Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

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


Tarasovby

Recommended Posts

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

Надіслати
Поділитися на інших сайтах


  • 2 weeks later...

 

по аналогии до тысячи (-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 weeks later...

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

 

Есть товары дорогие, условно дороже 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 year later...

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

 

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

 

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

Надіслати
Поділитися на інших сайтах


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

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

Надіслати
Поділитися на інших сайтах


  • 9 months later...

А можно ли округлить цену до кратной не 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 years later...

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

Задача была такая: нужно чтобы цена товара на ветрине и везде была без копеек и в виде округленного числа до десятков (Например 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. 

               

 

Надіслати
Поділитися на інших сайтах


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

RusHookah  

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

 

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

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

Надіслати
Поділитися на інших сайтах


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

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

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

 

Надіслати
Поділитися на інших сайтах


  • 11 months later...
В 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 year later...

Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.