Неправильное округление в корзине

Цены в магазине задаются в уе, выводятся в рублях. с обновлением до shop script 6 все цены красиво округляются, но в корзине идет несоответствие:

итоговая цена за 3 единицы товара не соответствует цене за ед. товара * 3(итоговая цена даже за 1 единицу товара не всегда совпадает). я так понимаю, что сначала берется цена в у.е. - умножается на 3 - а потом только округляется? также и итоговая сумма заказа не равна сумме всех товаров:

выходит путаница в корзине, как это можно исправить? все цены выводятся через {shop_currency_html}


6 ответов

  • 1

    Пожалуйста, подскажите, какую тему дизайна вы используете? Если возможно, опубликуйте здесь код из шаблона cart.html, который отвечает за вывод строки в списке товаров корзины. Вот так этот фрагмент выглядит в теме дизайна «Дефолт 2.0» (из шаблона cart.html):

    <div class="col w2 item-qty align-center nowrap"><span class="gray">&times;</span> <input type="text" name="quantity[{$item.id}]" value="{$item.quantity}" class="qty{if !empty($item.error)} error{/if}"></div>
    <div class="col w1 item-remove"><a class="delete" href="#" title="[`Remove from cart`]"><i class="icon16 remove"></i></a></div>
    <div class="col w3 align-center item-total nowrap">{shop_currency_html($item.full_price, true)}</div>

    Код {shop_currency_html($item.full_price, true)} отображает округленную сумму заказанного количества товаров, которая рассчитывается сначала округлением, а затем умножением (а не наоборот). Возможно, в вашей теме дизайна значение в колонке "Цена" нужно считать как-то иначе, а не так, как прописано в вашем шаблоне сейчас.

  • 1
    Вадим 22 декабря 2015 12:10 #

    Аналогичная проблема...

    Проверил, у нас вывод из шаблона cart.html именно такой:

    {shop_currency_html($item.full_price, true)}

    Озвучу (повторю) свою проблему:
    Итоговая цена за 10 единиц товара не соответствует цене за ед. товара * 10

    Вводная: Цены у нас в евро, на витрине: в рублях

    Сейчас магазин shop-script работает так.:
    Вариант 1: берется цена в у.е. -> умножается на 10 , а потом переводится в рубли и только потом округляется до 0.01!
    Вариант 2: берется цена в у.е. ->переводится в рубли,НЕ округляется, умножается на 10 , и только потом округляется до 0.01!

    А должно быть так: берется цена в у.е,переводится в рубли, округляется до 0.01, затем умножается на 10

    Поддержка проблему подтвердила, однако сроки устранения называть не берется.. Т.е когда поправят неизвестно.

    В связи с этим вопрос: может быть как то можно эту проблему решить по другому ?






    • +2

      Округление до 0,01 это тоже самое что округления нет, поэтому и проблема.
      Это интерфейсная ошибка настроек (пункт нужно было назвать без округления), из-за которой и происходит недопонимание.
      Попробуйте поставить округление до 0,1 и увидите, что когда округление работает, то оно работает правильно.

      • +1
        Вадим Вадим 22 декабря 2015 13:39 #

        При переводе цен в основную валюту: округлять до 0,1

        Здесь ?


        А как же быть с округлением до 0,01 ? В принципе пока не использовать ?


  • 1
    Вадим 22 декабря 2015 13:56 #

    Проверил.

    При переводе цен в основную валюту: округлять до 0,1 - да, так нормально работает..

    А в поддержке об этом не знают )) Вы из разных ведомств что ли ?

    Спасибо,что хоть тут адекватные специалисты..

    А то,в поддержке один ответ: "Проблема есть, решим к кратчайшие сроки.." А чего конкретно делать- не говорят..

  • 1
    Вадим 23 декабря 2015 09:30 #

    Обновился shop-script.

    Исправили ошибку с округлением.

    Округление до 0.01 теперь работает корректно. То ли совпало, то ли и прям так быстро стали решать проблемы..

    Действительно : "решим в кратчайшие сроки". Молодцы в общем.

Добавить ответ

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