1

Тема: Округление цен

Хочется разобраться с округлением.
Каша какая-то.

Опция есть "Округлять цены при внутренних пересчётах до" в настройках модуля каталога
А также есть опция "Округление" в настройках типа цены

Я не понимаю, как работает первая опция.

Плюс, как решить задачу "округлить цены на сайте", не создавая дополнительный тип цены, который автоматически расчитывается от основной цены товара.

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

2

Re: Округление цен

Чтобы найти все места, где используется данная опция, можно по коду поискать метод CostApi::roundCost.

Округление используется при выполнении следующих операций:

- Мультиобновление цен у комплектаций, если валюта рядом с ценой не соответствует валюте по умолчанию.
- Мультиобновление цен у товаров по формуле
- При пересчете курсов валют

Также есть один случай, где округление идет динамически:
При получении цены комплектации: $product->getOfferCost

Повысить оценку Понизить оценку

3

Re: Округление цен

То есть, если у товаров всего лишь одна цена, в системе одна валюта, (при этом нет комплектаций) то округления цен не происходит?
Базовая цена товара как была, так и остаётся.

4

Re: Округление цен

да. Основная идея - готовая цена основной комплектации должна всегда лежать в БД, округление только при операциях записи и только при автоматическом формировании/изменении цены.

Только так корректно работает сортировка по ценам и фильтрация в списках.

------

Чуть позже мы добавили динамическое округление для цен комплектаций (так как они не участвуют в каталоге, в списках товаров).

------

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

Совсем другая история, когда клиент пользуется какой-нибудь автоматической функцией RS и просто не имеет возможности вводить именно конечную цену, тут как раз и нужно авто-округление.

Повысить оценку Понизить оценку

5

Re: Округление цен

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

Часто бывает, что цены берем с прайсов поставщиков или с их сайтов сразу.
А там с копейками.
Конечно, можно округлить до заливки, но импортируем всего столько, что подобное просто забываешь, а клиент уже после сдачи сайта говорит - вот, округлить бы до десятков, а то смотрится не очень.

Я всё понял. Просто задача округления уже на сайте не так часто возникает. Более того, частенько в самом начале закладывается помимо базовой несколько цен - розница, уровни опта и т.п.
Но иногда задача чётко возникает - округлить. Тип цены - один, валюта одна, цены залиты полгода назад. И какой-то ступор. Вроде округлить есть тут, есть там - но ни черта не округляется.
Вам бы этот момент в админке обыграть как-то более понятно. Хотя бы пару строчек в подсказку добавить.

6

Re: Округление цен

Сейчас все равно есть вариант округлить имеющиеся цены следующим образом:

1. Устанавливаем в настройках модуля Каталог нужное округление
2. Выделяем 2 или более товара, нажимаем Редактировать
3. Выбираем "Изменить цену по формуле": Розничная = Розничная цена + 0 ед.
4. Сохраняем, получаем округленные цены у выбранных товаров

-----------------------------------------
Опция сейчас называется: "Округлять цены при внутренних пересчётах до", то есть мы специально подчеркнули, что при пересчетах. Но если непонятно, подумаем как еще можно уточнить этот момент.

Повысить оценку +1 Понизить оценку

7

Re: Округление цен

Да просто надо wiki внедрять и всю админку обтыкать ссылками на wiki
Сделать статью "Округление цен" - и со всех округлений ссылка туда. Новичок прочитает статью и поймёт всю ситуацию в целом.

С прибавлением нуля я как-то делал. Я по-всякому делал. Просто, перед тем, как создать эту тему, я полагал, что есть большая кнопка ОКРУГЛИТЬ ЦЕНЫ - и все цены округлятся. Типа я её не нашёл wink

В итоге, получается, хотим мы цены округлить, есть способы:
1. Округляйте в csv, потом загружайте заново
2. Создавайте ещё один тип цены, базовая остаётся как есть, а новый тип цен показывайте на сайте.
3. Выделяете все товары и "Розничная = Розничная цена + 0 ед"

Вроде всё, экзотические способы вроде
4. MySQL for Excel - открываете вашу базу на листе экселя и округляем экселем
оставим в сторонке big_smile