Последние темы


shopkeeper 3 - на странице товара не пересчитывает цену по курсу

  • В Беларуси Евро стоит 2,3 рубля. Указал 2,5 для теста, чтобы было легче проверить правильность расчётов в корзине. Цены я указываю не в рублях, а в евро. Пример: карандаш стоит 1 евро. Посетители должны видеть 2.3 рубля. Если курс евро вырос (а в Беларуси он растёт всегда😁 ), то я установлю курс 2.5 и карандаш будет стоить 2.5 рубля. Товаров будет достаточно много и вариаций ещё больше. Менять каждый товар нереально. Поэтому решил привязать к валюте. Вот пример товара:

    0_1566842824513_скрин.jpg
    На фото1 считает один к одному не учитывая курс 2,5. Прописано <span class="shk-price">[[*price:shk_curr_rate:num_format]]</span>
    0_1566843062233_скрин1.jpg
    На фото2 в корзине считает как надо, по курсу 2.5. Т.е. 18,82 *2,5 = 47,06

    0_1566843248852_скрин2.jpg
    На фото3 написал поле <span class="shk-price">[[*price:shk_curr_rate]]</span>
    И вот такую бредятину показывает. Но в корзину отправляет правильное число - 47,06

    Ниже настройки
    0_1566843444707_скрин3.jpg
    0_1566843500201_скрин4.jpg

  • Если цены изначально указаны в евро, то в настройках для евро нужно ввести единицу, т.к. ничего менять не нужно цена и так в евро. А для рублей указать по принципу, о котором я писал ранее. Нужно учитывать, что при расчете цены происходит просто деление цены на число, которое вы указываете.

  • @Andchir
    Ещё раз повторю проблему. Всё считает правильно. В корзине цена правильная. Неправильная только на странице товара. Цена не умножается на 2.5. (Возможно я не совсем понятно объясняю, прошу прощения)

    Вот это из инструкции shopkeeper. Сделал точно так же

    Если на сайте только одна валюта, но цены товаров указаны в другой валюте, нужно добавить в настройках системы параметр «shk3.currency_selected» (Пространство имен «shopkeeper3») со значением - номер валюты (от еденицы), в которую нужно переводить.
    Например, если у товаров указана цена в долларах, а нужно выводить в рублях:
    shk3.currency_default = 3 (USD)
    shk3.currency_selected = 1 (руб.)
    3 - номер валюты USD в списке курсов валют.
  • Я всё так и понял. Начинать надо как раз со страницы товара, а не с корзины. Я написал, что курсы у вас указаны не правильно. Если убрать все параметры, цена по курсу пересчитывается правильно?

    Цена не умножается на 2.5.

    Она и не должна умножаться, должна делиться. Читайте выше.

  • @Andchir
    Проверил. Убрал вариации. Если задать цену товара 26, то на странице пересчитывает по курсу и получается 65. В корзине тоже самое. Т.е. всё считает правильно. Вся проблема с выводом цены в этой строке

    <span class="shk-price">[[*price:shk_curr_rate:num_format]]</span>
    

    Если я укажу евро - 1, а рубль 0.44, то это тоже самое что 2.5 к 1. Так что математически нет смысла менять курс.
    Тем более я проверил, без вариаций всё считает правильно на двух страницах. Помогите 😩
    Может можно как-то эту строку через сниппет умножить на 2.5? Ведь в евро считает верно.

  • Если я укажу...

    Если вы не хотите делать так как вам советуют, то зачем просите помощи? Делайте сами.

    Ещё момент, умножение вроде должно работать, а вот сложение нет. Нужно проверить, чтобы среди параметров не было цен со сложением. Про сложение цен параметров с мультивалютностью где-то здесь на форуме есть тема.

  • @Andchir
    почему не хочу? Сделал как вы сказали. Я же написал, ничего не изменилось.
    Среди параметров нет сложения. Есть поле Price. В нем список параметров с ценами. d1==10||d2==20 и тд. А все остальные параметры только умножают.

    <span class="shk-price">[[*price:shk_curr_rate:num_format]]</span>
    

    Может есть способ как-то умножить это поле на 2.5?

  • почему не хочу? Сделал как вы сказали. Я же написал, ничего не изменилось.

    Где вы написали, что сделали как я сказал?

    Среди параметров нет сложения. Есть поле Price. В нем список параметров с ценами. d1==10||d2==20 и тд.

    Вы противоречите сами себе.

    Может есть способ как-то умножить это поле на 2.5?

    Есть. https://docs.modx.com/revolution/2.x/making-sites-with-modx/customizing-content/input-and-output-filters-(output-modifiers)

    [[*price:mpy=`2.5`]
    
  • @Andchir

    [[*price:mpy=`2.5`]
    

    выдаёт значение - 0.
    Я ещё раз прошу прощения если не так выразился. Но я попробовал сделать по вашему совету. Результата это не дало.
    И почему я себе противоречу? Поле Price называется диаметр. В нём можно выбрать диаметр к которому привязана соответствующая цена. Остальные параметры производят только умножение.
    0_1566906778443_6b50a656-f211-48b0-b721-d875908b32d0-image.png

  • И почему я себе противоречу? Поле Price называется диаметр.

    Потому что не важно как называется поле, если в его значении список значений, которые предполагается суммировать. Цена в любом случае должна быть не списком, а полем с одной цифрой. Если вам цифра не нужна, то можно поставить значение 0. Если не переводить валюту по курсу, то всё работает?

    При суммировании цена переводиться не будет т.к. для этого нужно все цены параметра переводить в шаблоне (чанке) этого списка.

    http://forum.modx-shopkeeper.ru/topic/1332/мультивалютность-param_edit-пересчет-доп-параметров-с-ценой-в-текущую-валюта/3

  • @Andchir
    Если не переводить по курсу, то всё работает.
    По поводу списка в поле price, то Вы правы. Задал одно значение и считает с учётом курса как надо.

  • @Andchir
    Большое спасибо. Главное что нашёл причину и сразу же нашёл решение. Возможно не самое правильное, но работает как нужно.
    В поле Price ввожу значение "1". Создал дополнительное поле диаметр. И вместо того чтобы складывать как было до этого, я умножаю на нужное число.
    К примеру: D=80==26.46||D=100==29.22 (было), D=80==*26.46||D=100==*29.22 (сделал).
    Поле price где единица я просто скрою.

 

Последние комментарии

  • У меня почему то не получилось прикрутить эту штуку.

    Что конкретно не получилось? Какие-то ошибки?

    Там вроде как зависимость от компонента http://angular-ui.github.io/bootstrap/
    Но вроде он и используется, но, возможно, какая-то старая версия.

    Читать далее
  • N

    @Andchir Спасибо, но это немного не то.
    Задача такая - менеджер должен выставлять промежуток времени, когда клиенту удобно принять доставку.
    Т.е. надо прикрутить что то типа этого https://rgkevin.github.io/datetimeRangePicker/#/home
    Чтобы можно было выбирать и вилку дней и промежуток по времени.
    У меня почему то не получилось прикрутить эту штуку.

    По сохранению сложностей не возникло, т.е. проблема только с UI

    Читать далее
  • https://github.com/andchir/shopkeeper3/blob/master/core/components/shopkeeper3/templates/home.tpl
    Шаблон редактирования заказа здесь обозначен комментарием

    <!-- order_edit -->

    Нужно добавить поле в форму. Пример:

    <input type="date" ng-model="data.order.date">

    В "ng-model" указывается имя поля в заказе.
    Если это новое поле, то сохранять его нужно здесь
    https://github.com/andchir/shopkeeper3/blob/master/core/components/shopkeeper3/processors/mgr/saveorder.class.php

    Читать далее
  • N

    @Andchir извиняюсь, забыл что не на битве экстрасенсов)
    Версия старенькая - 3.2.5-pl. С таким количеством нововведений обновлять просто уже нельзя.

    Читать далее