Итоговая цена в заказе

Тема в разделе "Общие вопросы", создана пользователем Jess23, 22 сен 2015.

  1. Jess23

    Jess23 Пользователь

    Сообщения:
    119
    Симпатии:
    14
    Добрый день.

    Как правильно округлить итоговую цену в заказе?

    Ситуация вообщем такая, на сайт загружаю цену с копейками, в настройках стоит опция: количество знаков после запятой = 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

    Выслушиваю варианты куда смотреть/как быть...

    Спасибо.
     
  2. Ravilr

    Ravilr Специалист

    Сообщения:
    3.884
    Симпатии:
    1.065
    Хороший вопрос. Посмотрю что можно придумать. Но ведь копейки не актуальны для РФ
     
  3. Vlad77mk

    Vlad77mk Пользователь

    Сообщения:
    142
    Симпатии:
    1
    В opencart 1.5.6.4 в настройках валюты можно поставить кол-во знаков после запятой. Чесно скажу - с версиями выше 1.5.6.4 дело не имел, по этому как там это реализованно - незнаю. Но по логике, такая функция должна была остаться.
     
  4. Jess23

    Jess23 Пользователь

    Сообщения:
    119
    Симпатии:
    14
    Дело в том что это не для РФ. А в рублях написал что-бы максимально передать суть вопроса =).

    Да такая штука есть, все как-бы работает как след, но я получаю вот такую картину:
    [​IMG]

    Что-то подобное делали здесь: https://goo.gl/Hf47tH
     
    Последнее редактирование: 23 сен 2015
  5. Jess23

    Jess23 Пользователь

    Сообщения:
    119
    Симпатии:
    14
    Точные цены на товар: Наверное нужно так:
    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 считает в пользу покупателя, плюс не считает по округленной цене товара, в итоге получаем то что на скриншоте.
     
  6. optimlab

    optimlab Продвинутый пользователь

    Сообщения:
    924
    Симпатии:
    240
    У меня была такая задача на 1.5 правда. Я модифицировал функцию сложения чтоб не из базы тянула, а использовала округленные значения (или добавлял округление перед сложением, уже не помню) и в симпле чёто переделывал.
     
  7. Jess23

    Jess23 Пользователь

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

    PS: Simple не использую.
     
  8. Vlad77mk

    Vlad77mk Пользователь

    Сообщения:
    142
    Симпатии:
    1
    Просто поставить в настройках кол-во знаков после запятой - 2. И все. Зачем устрвивать себе такой... Кхм... Прошу прощения за эльфийский - геморой.
     
  9. Jess23

    Jess23 Пользователь

    Сообщения:
    119
    Симпатии:
    14
    Но тогда итог заказа будет: 911.40 - но разве удобно буде так платить? А если комиссия за перевод средств + 2,30%, тогда получается нужно оплатить: 932.36 ну допустим покупатель оплатит 924 грн. это хорошо, но иногда бывают "тошные" которым нужно разницу отдать ещё, вот тогда и начинается вся эта фигня... Проще найти этот момент кода и дописать нужные параметры округления.

    После мы будем получать нормальные цифры с выгодой для магазина.

    Но как-то так.
     
  10. Vlad

    Vlad Эксперт

    Сообщения:
    4.129
    Симпатии:
    999
    А в корзине правильно считает? Мне кажется это просто ошибка и её надо исправлять. Так как в библиотеке cart.php нет округлния и цена складывается как есть.
     
  11. Vlad77mk

    Vlad77mk Пользователь

    Сообщения:
    142
    Симпатии:
    1
    Тогда ставь цены сразу с округлением. Т.е. товар стоит 113.37 - пиши стоимость 114грн. Тогда вообще ничего менять не нужно.

    Ну и если начали говорить про дотошных покупателей:
    Некоторые с калькулятором сидят у экрана и пересчитывают. Заметив разницу в цифрах(в ваших округлениях) они могут поднять большой хай.
     
  12. Jess23

    Jess23 Пользователь

    Сообщения:
    119
    Симпатии:
    14
    Нет в корзине тоже самое:

    Цена товара: 124.60 = 125 (округляет OC)
    Оформляю заказ на 3 шт. по 125 * 3 = 375 - должно быть в итоге
    На самом деле, я получаю итоговую цену по подсчетам: 124.60*3 (по подсчетам цены которая не округлена) = 373.80 - OС округляет = 374 - но мне нужно 375, так как цена товара 125...

    Вот это поворот.
     
  13. Jess23

    Jess23 Пользователь

    Сообщения:
    119
    Симпатии:
    14
    Как вариант, но проблема в том что все база товара на OC синхронизирована с БД предприятия, цены идут с копейками на некоторых товарах есть акции, а есть и целые числа (что более удобней).

    Пока вариантов не вижу как округлить все внутри OC.
     
  14. Vlad

    Vlad Эксперт

    Сообщения:
    4.129
    Симпатии:
    999
    а если после синхронизации предварительно sql запросом округлить все цены у товаров?
    PHP:
    UPDATE oc_product SET price ROUND(price)
    Просто я посмотрел и понял... округлять придется во всех файлах.., т.е проще запросом округлить и все.
     
    Последнее редактирование: 24 сен 2015
  15. Jess23

    Jess23 Пользователь

    Сообщения:
    119
    Симпатии:
    14
    Как вариант...
    Но я разобрался немного с ценами, дали добро на округление к целому до загрузки их в OC