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


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

  • Всем привет. С modx начал работать совсем недавно, поэтому строго не судите.
    Делаю магазин и товары в нём вариативные. Сделал поле price в котором цены указываются в EURO.

    [[!*price:shk_curr_rate:replace=`[[+id]]==[[*id]]`]]
    

    И ещё несколько полей которые только меняют цену в процентах. К примеру Оцинкованная сталь==*0.90||Сталь 430==0||Сталь 1.4301==*1.2
    И сделал поле которое считает итоговую цену товара с учетом вариаций: <span class="shk-price">[[*price:num_format]]</span>
    В евро всё считает правильно, но клиентам нужно показывать цену в рублях.
    Указал курс ЕВРО 2.5.
    На странице товара итоговая цена товара с учетом вариаций остаётся в евро. Но если зайти в корзину, то цену пересчитывает по курсу 2.5 правильно.
    Т.е. проблема только на странице с товаром. Там итоговую стоимость товара не считает по курсу который я указал.

  • Как меняете валюту, есть какой-то переключатель?

  • @Andchir
    Нет. Просто в системных настройках указал валюту по умолчанию shk3.currency_default - 1 (EURO)
    shk3.currency_selected - 2 (руб)

  • Участник @leegaal написал в shopkeeper 3 - на странице товара не пересчитывает цену по курсу:

    И сделал поле которое считает итоговую цену товара с учетом вариаций: <span class="shk-price">[[*price:num_format]]</span>

    Тут должно быть

    [[*price:shk_curr_rate]]
    
  • @Andchir

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

    Так? Если так, то не работает. Просто считает без учёта курса. Если так

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

    То вообще супер большое число

  • То вообще супер большое число

    Какое число? Покажите ваши настройки курсов валют и какие получаются результаты.

    Указал курс ЕВРО 2.5.

    Откуда взяли цифру? Должно быть такое число: 0.013625

    0_1566843112631_screenshot_049.png

    https://www.calc.ru/kurs-EUR-RUB.html

  • В Беларуси Евро стоит 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 где единица я просто скрою.

 

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

  • C

    Если вдруг кто-то озадачится.
    В файле updateorderstatus.class.php

    //Формируем письмо $orderOutputData = $shopCart->getOrderData( $order_id ); $chunkArr = array( 'orderID' => $order_data['id'], 'orderDate' => $order_data['date'], 'statusName' => $status_data['label'], 'orderCurrency' => $shopCart->config['currency'], 'orderOutputData' => $orderOutputData, //добавляем строку 'status' => $status_data['color'], );

    Читать далее
  • Участник @Vladislava написал в Проблема с giftCards:

    @Andchir Спасибо большое! А не скажете ещё, где можно скачать Compare? Тоже не могу найти.

    Сравнение товаров
    https://e-store.shopkerx.net/katalog/modx_extras/compare

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

    @Andchir Спасибо большое! А не скажете ещё, где можно скачать Compare? Тоже не могу найти.

    Читать далее
  • Дополнение "Paykeeper2 - онлайн-оплата и электронные товары" теперь стало бесплатным.

    0_1574706584028_Chash Register.png

    Сниппет для продажи электронных товаров, а так же оплаты заказов в интернет-магазине на основе Shopkeeper 3.x.
    Компонент для управления электронными товарами (Фронт-енд написан на Angular2 + TypeScript).
    Используется библиотека Omnipay. Эта библиотека позволяет делать единый API для разных платежных систем.
    Сайт проекта: http://omnipay.thephpleague.com/

    В состав входят готовые обработчики для платежных систем:
    Yandex.Kassa (агрегатор), WebMoney, PayPal.

    Скачать можно здесь:
    https://e-store.shopkerx.net/katalog/modx_extras/onlayn-oplata-dlya-modx-paykeeper2

    Читать далее