COVID2019 и это вот все. Друзья, вся эта история начинает плохо пахнет. Мойте руки, не ходите в люди. Отложите все плановые покупки и положите в носок заначку. Заприте ваших родителей, бабушек-дедушек на даче. Лучше перебдеть чем недобдеть. Берегите себя!

Округление цены


ArtemAMA

Recommended Posts

Имеется необходимость округление отображаемой цены до -4 знаков ДО! запятой, т.е. до 10 000 (для Беларуси это актуально)

 

пример: у меня цены: 610779 -> 610 000

143428 -> 140 000 

155682 -> 160 000

 

в предыдущих версиях опенкарта (1.5.4,,,) надо было

1) найти файл в Контроллере (если округлять в Корзине - \catalog\controller\checkout\cart.php, в Оформлении заказа - \catalog\controller\checkout\checkout.php, в Симпле - соответствующие файлы), а в файле строчку типа
'total' => $product['total'],
и её поправить: 
'total' => round($product['total'],-2),
2) либо, аналогично, в Модели (\catalog\model\checkout\order.php)

что и где надо поменять в 2.1.0.1.10?

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

к чему такие сложности?

если вы говорите про округление при выводе форматированной цены везде, правьте class Currency->format(), если конечно не хотите увеличивать поле `decimal_place` до CHAR(2) или там TINYINT(1) signed и менять значение просто в админке

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

4 минуты назад, savage4pro сказал:

правьте class Currency->format()

sorry
можно для чайников чуть подробнее
что,как именно, где 
заранее спасибо

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

6 минут назад, savage4pro сказал:

и менять значение просто в админке

думаю такое чудо мне не по зубам (только если подробную инструкцию, а еще лучше ocmode, или же буду пробовать на основании инструкции сам делать ocmode(а вось получится...)

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

53 минуты назад, savage4pro сказал:

от чудо из чудес


ALTER TABLE `вашпрефикс_currency` 
CHANGE COLUMN `decimal_place` `decimal_place` CHAR(2) NOT NULL ;

после чего смело добавляем знак "-" перед значением в Система-Локализация-Валюта > Количество знаков после запятой

 

этот вариант будет в самый раз
только где это меняется?

 

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

извините темного, сейчас попробую через  phpmyadmin префикс не менял, будет стандартный ос_

 

ОГРОМНОЕ СПАСИБО!!!
ВСЕ ЗАРАБОТАЛО НА 100%  c возможностью изменять через админку необходимую величину изменений, в нужной валюте

ВЫ ГУРУ!!! :rolleyes:

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

следуя логике, что через запросы к БД можно поменять отображение, не внося изменения в файлы
обнаглею чуть-чуть и спрошу у Вас еще каким запросом сделать отображение в цене разделитель между тысячами " " (т.е. пробел) вместо 600000 -> 600 000

на данный момент я это решаю через catalog/language/russian/russian.php

$_['thousand_point'] = ' ';   (т.е. добавляю пробел между одинарными ковычками)

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

29 минуты назад, ArtemAMA сказал:

ОГРОМНОЕ СПАСИБО!!!

 

ерунда, не за что, в любом случае это костыль, посему будьте внимательны при последующих обновлениях сборки

 

5 минут назад, ArtemAMA сказал:

следуя логике, что через запросы к БД можно поменять отображение, не внося изменения в файлы
обнаглею чуть-чуть и спрошу у Вас еще каким запросом сделать отображение в цене разделитель между тысячами " " (т.е. пробел) вместо 600000 -> 600 000

на данный момент я это решаю через catalog/language/russian/russian.php

$_['thousand_point'] = ' ';   (т.е. добавляю пробел между одинарными ковычками)

 

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

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

4 минуты назад, savage4pro сказал:

ерунда, не за что, в любом случае это костыль, посему будьте внимательны при последующих обновлениях сборки


раз костыль, и теоретически может повлиять на что-либо еще в последующих обновлениях, плиз напишите для общественности (вдруг кому-нибудь будет нужно) каким запросом вернуть все в исходное состояние (проверил еще на версии 2.1.0.1.8 про, тоже работает)

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

  • 3 months later...

Здравствуйте!  У меня следующая проблема с округлением, округлить до сотен у меня получилось (прим. до круг. 4941, после округ 4900), но теперь я столкнулся с проблемой правильности арифметических действий со стороны opencart при суммировании стоимости товаров в корзине (прим. 4 шт по 4900 opencart суммирует и выводит итог 19800, вместо положенных 19600).

Как это можно исправить?

 

P.S. Магазин работает на OcStore 1.5.5.2. В магазин товары заносятся в USD, конвертируются по курсу и выводятся на витрину в Рублях. 

 

Тот же вопрос актуален для opencart pro 2.1.0.1.8

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

  • 7 months later...
В 04.01.2016 at 06:51, savage4pro сказал:

 


ALTER TABLE `вашпрефикс_currency` 
CHANGE COLUMN `decimal_place` `decimal_place` CHAR(2) NOT NULL ;

после чего смело добавляем знак "-" перед значением в Система-Локализация-Валюта > Количество знаков после запятой

 

Сделал как написано. Тип столбца изменился на char(2), но через админку значение "-1 или -2" не устанавливается, при сохранении остается только "-" (минус).

Напрямую в БД установил значение decimal_place "-2", на сайте ничего не изменилось. Округление до рубля, а хочется до 10 рублей.
Подскажите как быть? :)

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

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Ответить в тему...

×   Вы вставили отформатированное содержимое.   Удалить форматирование

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.