Добрый день. Как правильно округлить итоговую цену в заказе? Ситуация вообщем такая, на сайт загружаю цену с копейками, в настройках стоит опция: количество знаков после запятой = 0 - это округляет мои цифры (это есть хорошо). Проблема в следующем когда выполняется заказ товара (с копейками) в итоге я получаю цену совсем иную. Например: Есть товар: Стоимость 124.60 = 125 (на карточке товара система округлила - это правильно) Но если заказать товар в 3х экземплярах то: 124,60+124,60+124,60 = 373,8 Система округляет = 374 (это также правильно - но не совсем), товар на карточке стоит то 125руб. и если 125+125+125= 375руб. должно быть. Проблема: В итоговой цене (внутри заказа) я получаю не 375руб. а 374руб. Вопрос: Каким образом настроить подсчет итоговой цены по округленных значениях? Использую: OC2.0.3.1 Выслушиваю варианты куда смотреть/как быть... Спасибо.
В opencart 1.5.6.4 в настройках валюты можно поставить кол-во знаков после запятой. Чесно скажу - с версиями выше 1.5.6.4 дело не имел, по этому как там это реализованно - незнаю. Но по логике, такая функция должна была остаться.
Дело в том что это не для РФ. А в рублях написал что-бы максимально передать суть вопроса =). Да такая штука есть, все как-бы работает как след, но я получаю вот такую картину: Что-то подобное делали здесь: https://goo.gl/Hf47tH
Точные цены на товар: Наверное нужно так: 1. 209.30 = 209 (округлено) 209.30 = 210 2. 188.30 = 188 (округлено) 188.30 = 189 3. 124.60 = 125 (округлено) 124.60 = 125 4. 140.00 = 140 (округлено) 140.00 = 140 Получаем итог: 210+189+125х(3)+140= 914 - в пользу магазина. А OC считает в пользу покупателя, плюс не считает по округленной цене товара, в итоге получаем то что на скриншоте.
У меня была такая задача на 1.5 правда. Я модифицировал функцию сложения чтоб не из базы тянула, а использовала округленные значения (или добавлял округление перед сложением, уже не помню) и в симпле чёто переделывал.
Хорошая идея, по таком пути сейчас и стараюсь решить эту проблему. Но роюсь в файлах, не могу найти этот момент который позволит округлит все это дело. PS: Simple не использую.
Просто поставить в настройках кол-во знаков после запятой - 2. И все. Зачем устрвивать себе такой... Кхм... Прошу прощения за эльфийский - геморой.
Но тогда итог заказа будет: 911.40 - но разве удобно буде так платить? А если комиссия за перевод средств + 2,30%, тогда получается нужно оплатить: 932.36 ну допустим покупатель оплатит 924 грн. это хорошо, но иногда бывают "тошные" которым нужно разницу отдать ещё, вот тогда и начинается вся эта фигня... Проще найти этот момент кода и дописать нужные параметры округления. После мы будем получать нормальные цифры с выгодой для магазина. Но как-то так.
А в корзине правильно считает? Мне кажется это просто ошибка и её надо исправлять. Так как в библиотеке cart.php нет округлния и цена складывается как есть.
Тогда ставь цены сразу с округлением. Т.е. товар стоит 113.37 - пиши стоимость 114грн. Тогда вообще ничего менять не нужно. Ну и если начали говорить про дотошных покупателей: Некоторые с калькулятором сидят у экрана и пересчитывают. Заметив разницу в цифрах(в ваших округлениях) они могут поднять большой хай.
Нет в корзине тоже самое: Цена товара: 124.60 = 125 (округляет OC) Оформляю заказ на 3 шт. по 125 * 3 = 375 - должно быть в итоге На самом деле, я получаю итоговую цену по подсчетам: 124.60*3 (по подсчетам цены которая не округлена) = 373.80 - OС округляет = 374 - но мне нужно 375, так как цена товара 125... Вот это поворот.
Как вариант, но проблема в том что все база товара на OC синхронизирована с БД предприятия, цены идут с копейками на некоторых товарах есть акции, а есть и целые числа (что более удобней). Пока вариантов не вижу как округлить все внутри OC.
а если после синхронизации предварительно sql запросом округлить все цены у товаров? PHP: UPDATE oc_product SET price = ROUND(price) Просто я посмотрел и понял... округлять придется во всех файлах.., т.е проще запросом округлить и все.
Как вариант... Но я разобрался немного с ценами, дали добро на округление к целому до загрузки их в OC