msMultiCurrency

Компонент добавляет мультивалютность в miniShop2, а также позволяет привязывать цену отдельного товара к одной из
валют.
Видео-обзор
Купить
Prihod
10 мая 2018, 12:18
modx.pro
2
4 342
+13
Поблагодарить автора Отправить деньги

Комментарии: 69

Дмитрий
10 мая 2018, 16:04
+7
То, чего не хватало всем многие годы. Спасибо!
    Andrey Extra
    18 мая 2018, 02:19
    0
    Работает ли с mFilter2 когда фильтруешь по цене?
      Prihod
      18 мая 2018, 10:55
      0
      Фильтрация по цене будет работать но вот цена в фильтре всегда будет отображаться в базовой валюте. На следующей недели посмотрю как это можно исправить.
        Prihod
        19 июня 2018, 12:13
        0
        Инфа в доках, раздел mFilter2
      Андрей
      16 июля 2018, 11:53
      0
      Добрый день. Компонент позволяет задать привязку например к евро и выводить цену в рублях, на основе курса евро?
        Prihod
        16 июля 2018, 12:35
        0
        Да
        Евгений
        27 сентября 2018, 11:02
        0
        Возможно ли привязать цену не к каждому отдельному товару, а ко всем товарам отдельно взятой категории?
          Prihod
          27 сентября 2018, 11:11
          0
          нет
          Prihod
          02 ноября 2018, 17:59
          0
          UPD 1.0.3
          — Добавлено: Наборы значений валюты

          ВАЖНО! Перед обновлением не забывайте сделать бэкап базы данных. После обновления необходимо очистить кэш браузера
            Prihod
            17 февраля 2019, 14:22
            0
            UPD 1.0.4
            — Добавлено: Вывод полей: валюта, цена и старая цена в категории товара
            — Добавлено: Пересчет цены при импорте с помощью msImportExport

            Вывод цен и валюты в категории товаров
            Для того что бы поля “Валюта”, “Цена в выбранной валюте” или “Старая цена в выбранной валюте” вывести в категории товара, необходимо в системных настройках minishop2 для опцию “Поля таблицы товаров” (ключ ms2_category_grid_fields) добавить название нужных полей.

            currency_id — название валюты
            msmc_price — цена в выбранной валюте
            msmc_old_price — старая цена в выбранной валюте

            Пример
            id,menuindex,pagetitle,article,price,msmc_price,currency_id,thumb,new,favorite,popular
              Дмитрий
              18 марта 2019, 18:58
              0
              А как сделать что бы при изменении количества товара в корзине итоговая цена менялась в выбранной валюте?
                Prihod
                18 марта 2019, 19:03
                0
                ничего делать не нужно т/к она и так должна меняться если у тебя последняя версия minishop2 и msMultiCurrency ну и естественно если ты id у элементов формы не удалил
                  Дмитрий
                  18 марта 2019, 19:06
                  0
                  Не менял ничего, вот код корзины
                  <div class="cartPage" id="msCart">
                      <div class="cartPageTitle">
                      	<h2>
                      		Корзина
                      	</h2>
                      	<form class="clearCart" method="post">
                      	    <button class="clearCart" type="submit" name="ms2_action" value="cart/clean">
                      		    Очистить корзину
                      		</button>
                      	</form>
                      </div>
                      {if !count($products)}
                          {'ms2_cart_is_empty' | lexicon}
                      {else}
                      <div class="cartPageTable">
                          <div class="cartPageTableTitle">
                  			<p class="columnImage cartPageTableTitleEl">
                  				Товар
                  			</p>
                  			<p class="columnDescription cartPageTableTitleEl">
                  				Описание
                  			</p>
                  			<p class="columnPrice cartPageTableTitleEl">
                  				Цена
                  			</p>
                  			<p class="columnCount cartPageTableTitleEl">
                  				Количество
                  			</p>
                  			<p class="columnClose cartPageTableTitleEl"></p>
                      	</div>
                      	<div class="cartPageTableContent">
                      	    {foreach $products as $product}
                      	    <div class="cartPageTableContentEl" id="{$product.key}">
                      	        <div class="goodsImageColumnWrapper">
                  					<div class="goodsImageColumn">
                  						{if $product.thumb?}
                                                  <img src="{$product.thumb}" alt="{$product.pagetitle}" title="{$product.pagetitle}"/>
                                              {else}
                                                  <img src="{'assets_url' | option}components/minishop2/img/web/ms2_small.png"
                                                       srcset="{'assets_url' | option}components/minishop2/img/web/ms2_small@2x.png 2x"
                                                       alt="{$product.pagetitle}" title="{$product.pagetitle}"/>
                                              {/if}
                  					</div>
                  				</div>
                  				<div class="goodsDescriptionColumnWrapper">
                  					<div class="goodsDescriptionColumn">
                  						<p>
                  							<strong>Артикул:  </strong>
                  							{$product.article}
                  						</p>
                  						<p class="goodsDescriptionColumnBrief">
                  							{if $product.options?}
                                                  {foreach $product.options as $key => $option}
                                                      {if $key in ['modification','modifications','msal']}{continue}{/if}
                                              
                                                      {set $caption = $product[$key ~ '.caption']}
                                                      {set $caption = $caption ? $caption : ('ms2_product_' ~ $key) | lexicon}
                                                      
                                                      {if $option is array} 
                                                      {$caption} - {$option | join : '; '} 
                                                      {else}
                                                      {$caption} - {$option} 
                                                      {/if}
                                                      
                                                  {/foreach}
                                              {/if}
                  						</p>
                  					</div>
                  				</div>
                  				<div class="goodsPrice">
                  					<p>
                  					    [[!msMultiCurrencyPrice? &price=`{$product.price}`]][[!+msmc.symbol_right]]
                  					</p>
                  				</div>
                  				<div class="goodsAmount">
                      			<form method="post" class="ms2_form e quantity" role="form">
                      			  <input type="hidden" name="key" value="{$product.key}"/>
                      			  <a class="minus" href="#reduce">-</a>
                      			  <input type="number" name="count" class="counter" value="{$product.count}"/>
                      			  <a class="plus" href="#add">+</a>
                      			  <button class="btn btn-default" type="submit" name="ms2_action" value="cart/change">
                      				<i class="glyphicon glyphicon-refresh"></i>
                      			  </button>
                  			    </form>
                      			</div>
                      			<div class="goodsClose">
                  					<form method="post" class="ms2_form">
                  					    <input type="hidden" name="key" value="{$product.key}">
                  						<button type="submit" name="ms2_action" value="cart/remove">
                  							<img class="goodsCloseButton" src="img/cart/closeIcon.png" alt="">
                  							<img class="goodsCloseButtonHover" src="img/cart/closeHoverIcon.png" alt="">
                  						</button>
                  					</form>
                  				</div>
                      	    </div>
                      	    {/foreach}
                      	</div>
                      	<div class="cartPageResult">
                      	    <p>
                      			<strong>
                      				{'ms2_cart_total' | lexicon}:  
                      			</strong>
                      			<span class="ms2_total_cost">[[!msMultiCurrencyPrice? &price=`{$total.cost}`]]</span> 	[[!+msmc.symbol_right]]
                      		
                      		</p>
                      		<div class="cartPageResultButton">
                  				<a href="[[++site_url]]">
                  					Назад в магазин
                  				</a>
                  				<a href="[[~56]]">Оформить заказ</a>
                  			</div>
                      	</div>
                      </div>
                      {/if}
                  </div>
                    Prihod
                    18 марта 2019, 19:31
                    0
                    скинь мне через техподдержку доступ в админку сайта
                homka
                21 марта 2019, 12:20
                0
                установили модуль. пытаемся создать поставщика котировок валют и не ясно как это сделать. согласно инструкции должна быть папка providers и в ней класс пример. но такой нет папки или что-то не так поняла??
                Сергей
                03 мая 2019, 14:37
                1
                +1
                Компонент работает с динамическим обновлением цен и товаров на компоненте msMCD, проверил на своем проекте
                Чанк вывода msMCDMiniCartRowTpl
                Вывод цены товара [[!msMultiCurrencyPrice? &price=`{$item.price}`]] [[!+msmc.symbol_right]]
                Вывод суммы [[!msMultiCurrencyPrice? &price=`{$total_cost}`]]
                  Сергей
                  03 мая 2019, 16:30
                  1
                  0
                  fenom
                  Вывод цены товара  {'!msMultiCurrencyPrice' | snippet : ['price' => $item.price,]} {$_modx->getPlaceholder('msmc.symbol_right')}
                  
                  Вывод суммы {'!msMultiCurrencyPrice' | snippet : ['price' => $total_cost,]} {$_modx->getPlaceholder('msmc.symbol_right')}
                  Владимир
                  27 мая 2019, 14:37
                  0
                  Ребята, добрый день! Нужна ваша помощь. В общем проблема с выводом конвертированной суммы на страницу оплаты через liqPay.
                  Коротко о поставленной мне задачи:
                  У товаров основной валютой должно быть Евро, но в корзине и на страницу оплаты через Liqpay должна быть цена пересчитанная в грн. В общем все настроил, только вот в LiqPay заходит сумма не 3000 грн, 100 грн, где 100 это цена товара в евро.
                    Prihod
                    27 мая 2019, 15:27
                    0
                    Ну так дополнение которое реализует оплату liqPay берет цену из поля price, а у тебя там цена в евро вот ты и получаешь 100 грн. Система оплаты ничего же не знает о msMultiCurrency. Поэтому тебе нужно, если конечно в этом модуле оплаты есть системное событие, прикрутить плагин в котором конвертировать сумму из евро в гривну. Вот код конвертации.

                    $convertCurrencyId = 2; // ID валюты в которую нужно конвертировать цену. У гривны это 2  
                    $msmc = $modx->getService('msmulticurrency', 'MsMC');
                    $convertPrice =  $msmc->getPrice($price, 0, $convertCurrencyId, 0, false);
                      Владимир
                      27 мая 2019, 15:44
                      0
                      Огромное спасибо! Буду пробовать
                        Владимир
                        27 мая 2019, 16:43
                        0
                        На сколько я понял скрипт находиться здесь core/components/minishop2/custom/payment/liqpay.class.php
                        <?php
                        
                        if (!class_exists('msPaymentInterface')) {
                        	require_once dirname(dirname(dirname(__FILE__))) . '/model/minishop2/mspaymenthandler.class.php';
                        }
                        
                        class LiqPay extends msPaymentHandler implements msPaymentInterface {
                        	public $config;
                        	public $modx;
                        
                        	function __construct(xPDOObject $object, $config = array()) {
                        		$this->modx = & $object->xpdo;
                        		$siteUrl = $this->modx->getOption('site_url');
                        		$assetsUrl = $this->modx->getOption('minishop2.assets_url', $config, $this->modx->getOption('assets_url').'components/minishop2/');
                        		$paymentUrl = $siteUrl . substr($assetsUrl, 1) . 'payment/liqpay.php';
                        		$this->config = array_merge(array(
                        			'paymentUrl' => $paymentUrl
                        			,'checkoutUrl' => $this->modx->getOption('ms2_payment_liqpay_url', null, 'https://www.liqpay.com/api/pay', true)
                        			,'public_key' => $this->modx->getOption('ms2_payment_liqpay_public_key')
                        			,'private_key' => $this->modx->getOption('ms2_payment_liqpay_private_key')
                        			,'currency' => $this->modx->getOption('ms2_payment_liqpay_currency', 'USD')
                        			,'culture' => $this->modx->getOption('ms2_payment_liqpay_culture', 'ru')
                        			,'sandbox' => $this->modx->getOption('ms2_payment_liqpay_sandbox')
                        			,'payway' => $this->modx->getOption('ms2_payment_liqpay_payway', 'card, liqpay, delayed, invoice, privat24', true)
                        		), $config);
                        	}
                        
                        	/* @inheritdoc} */
                        	public function send(msOrder $order) {
                        		$link = $this->getPaymentLink($order);
                        		return $this->success('', array('redirect' => $link));
                        	}
                        
                        	public function getPaymentLink(msOrder $order) {
                        		$id = $order->get('id');
                        		$successUrl = $this->config['paymentUrl']."?action=success&order_id=".$id;
                        		$sum = number_format($order->get('cost'), 2, '.', '');
                                $description='Payment #'.$id;
                                $signature = base64_encode(sha1($this->config['private_key'].$sum.$this->config['currency'].$this->config['public_key'].$id.'buy'.$description.$successUrl.$this->config['paymentUrl'],1));
                        		$request = array(
                        			'url' => $this->config['checkoutUrl']
                        			,'public_key' => $this->config['public_key']
                        			,'amount' => $sum
                        			,'order_id' => $id
                        			,'type' => 'buy'
                        			,'pay_way' => $this->config['payway']
                        			,'language' => $this->config['culture']
                        			,'sandbox' => $this->config['sandbox']
                        			,'signature' => $signature
                        			,'description' => $description
                        			,'result_url'=> $successUrl
                        			,'server_url' => $this->config['paymentUrl']
                        			,'currency' => $this->config['currency']
                        		);
                        		$link = $this->config['checkoutUrl'] .'?'. http_build_query($request);
                        		return $link;
                        	}
                        
                        	/* @inheritdoc} */
                        	public function receive(msOrder $order, $params = array()) {
                        		$id = $order->get('id');
                        		$success =
                                    isset($_POST['amount']) &&
                                    isset($_POST['currency']) &&
                                    isset($_POST['public_key']) &&
                                    isset($_POST['description']) &&
                                    isset($_POST['order_id']) &&
                                    isset($_POST['type']) &&
                                    isset($_POST['status']) &&
                                    isset($_POST['transaction_id']) &&
                                    isset($_POST['sender_phone']);
                                if (!$success) { die(); }
                                $amount = $_POST['amount'];
                                $currency = $_POST['currency'];
                                $public_key = $_POST['public_key'];
                                $description = $_POST['description'];
                                $order_id = $_POST['order_id'];
                                $type = $_POST['type'];
                                $status = $_POST['status'];
                                $transaction_id = $_POST['transaction_id'];
                                $sender_phone = $_POST['sender_phone'];
                                $insig = $_POST['signature'];
                                if ($order_id!=$id) { die(); }
                                $private_key = $this->config['private_key'];
                                $gensig = base64_encode(sha1(join('',compact(
                                    'private_key',
                                    'amount',
                                    'currency',
                                    'public_key',
                                    'order_id',
                                    'type',
                                    'description',
                                    'status',
                                    'transaction_id',
                                    'sender_phone'
                                )),1));
                                if ($insig != $gensig) { die(); }
                                if ($status == 'sandbox' || $status == 'success') {
                                	/* @var miniShop2 $miniShop2 */
                        			$miniShop2 = $this->modx->getService('miniShop2');
                        			@$this->modx->context->key = 'mgr';
                        			$miniShop2->changeOrderStatus($order->get('id'), 2);
                        			exit('OK');
                                } elseif ($status == 'failure') {
                                    $this->paymentError('Err: wrong signature.', $params);
                                }
                        	}
                        
                        	public function paymentError($text, $request = array()) {
                        		$this->modx->log(modX::LOG_LEVEL_ERROR,'[miniShop2:LiqPay] ' . $text . ', request: '.print_r($request,1));
                        		header("HTTP/1.0 400 Bad Request");
                        
                        		die('ERR: ' . $text);
                        	}
                        }
                        Вот только как прикрутить к нему выше указанный Вами код, реально не выкупаю. Буду весьма признателен за помощь
                          Prihod
                          27 мая 2019, 17:04
                          0
                          ну тебе нужно сделать свой класс который будет наследникам LiqPay в котором переопределить метод getPaymentLink т/к в этом методе происходит получение цены заказа. Нужно
                          $sum = number_format($order->get('cost'), 2, '.', '');
                          заменить на

                          $msmc = $modx->getService('msmulticurrency', 'MsMC');
                          $sum =  $msmc->getPrice($order->get('cost'), 0, 2, 0, false);
                          $sum = number_format($sum, 2, '.', '');


                          потом естественно свой класс нужно указать в настройках miniShop2 prntscr.com/ntykpc
                            Владимир
                            27 мая 2019, 18:04
                            0
                            На данный момент в minishope в выборе класса оплаты нельзя вбить свой, а в выпадающем меню только PayPal и LiqPay. Есть ли возможность откорректировать родительский класс?
                              Prihod
                              27 мая 2019, 20:03
                              0
                              ну по моему если ты этот свой класс добавишь в core/components/minishop2/custom/payment то он появиться в списке
                                Владимир
                                27 мая 2019, 21:34
                                0
                                В общем через создание нового класса так и не получилось (виснет корзина, а при обновлении страницы пишет корзина пуста), но засветилась ошибка в логах, о конфликте с компонентом msExtraFields, снес компонент и выбранная валюта стала передаваться в LiqPay, в общем огромное спасибо! Напишу скрипт на выбор гривны при загрузке страницы и удаления выпадающего списка и будет все ок). Еще раз спасибо!
                      Evgeny Tarasov
                      11 февраля 2020, 12:21
                      0
                      Планирую приобрести данное дополнение.
                      Подскажите, может кто сталкивался, дополнение msMultiCurrency работает с msOptionsPrice2?
                      Володя (автор msOptionsPrice2) сказал, что нужно уточнять у разработчика msMultiCurrency.
                        Prihod
                        11 февраля 2020, 18:14
                        0
                        Частично, не работает привязка товара к валюте т.к для этого нужно делать правки компонента msOptionsPrice2
                          Александр
                          24 апреля 2020, 22:51
                          0
                          Не подскажите, в каком направлении должны быть правки?
                            Prihod
                            24 апреля 2020, 22:57
                            0
                            когда привязывается цена к валюте то цена в выбранной валюте указывается в отдельном поле которое добавлено к товару, у модификаций msOptionsPrice2 такого поля нет и добавить его через плагин как это сделано для товара нельзя
                        Николай
                        11 февраля 2020, 17:19
                        0
                        Планирую купить ваш компонент, однако задача стоит нетривиальная. Может ли ваш компонент по клику менять цену в [[+price]]. Допустим менеджер внес цену в евро (т.к. именно в евро ему дает цену поставщик), потом он нажимает где то в админке кнопку и цена меняется именно в поле [[+price]] на рубли. В общем клиент хочет менять валюту в бекенде точнее в своей админке причем именно нажатием на кнопку, он не планирует импортировать товары.
                          Prihod
                          11 февраля 2020, 18:11
                          0
                          Привязка товара к валюте так и происходит, ты вводишь цену в выбранной валюте, а она автоматом пересчитывается по курсу в базовую при сохранении товара
                          Prihod
                          13 февраля 2020, 22:39
                          0
                          UPD 1.1.0
                          — Добавлено: Параметр «ID валюты по умолчанию на сайте» (для разных контекстов можно указать свою валюту)
                          — Изменено: При включенной опции «Цена в корзине в валюте пользователя» заказ создается в валюте выбранной пользователем. ВАЖНО! Если используется какой то платежный сервис то значение цены для него будет в валюте выбранной пользователем.
                          — Изменено: Cниппет «msMultiCurrencyCart» (в чанках больше не нужно использовать сниппет msMultiCurrencyPrice)
                          — Улучшено: Работа с контекстами
                            Владимир Ребров
                            25 февраля 2020, 19:23
                            0
                            При создании нового товара устанавливается код валюты = 0. Без названия валюты, которого естественно и быть не может, так как валюты с таким кодом в базе нет.


                            После сохранения нового товара, даже, если принудительно выбираю базовую (основную) валюту, код валюты опять сбрасывается в ноль и наблюдается картина со скрина выше.

                            Если выбрать для нового товара небазовую неосновную валюту, то в этом случае основная цена пересчитывается и после сохранения товара выбранная валюта сохраняется, но в поле валюты отображается её ID, а не название.
                              Владимир Ребров
                              25 февраля 2020, 22:59
                              +1
                              Вопрос закрыт в рамках техподдержки. Спасибо автору дополнения за помощь и исчерпывающую консультацию.
                              Arahort
                              10 апреля 2020, 11:29
                              0
                              Здравствуйте, стоит задача дать возможность вносить в админке цены в рубля\долларах\евро и на сайте везде выводить в рублях, установил на modhost тестовую версию, не с первого раза но всё таки обновились курсы валют, ввожу цену в долларах, в поле price как и должно быть появляется цена в рублях по курсу. Но я так понял при смене курса цены не меняются? Вручную изменил курс — цены остались те же?
                                local
                                10 апреля 2020, 11:50
                                0
                                в настройках модуля указано, что нужно его автоматически обновлять?
                                https://prnt.sc/rm1onf
                                  Arahort
                                  10 апреля 2020, 14:32
                                  0
                                  Да joxi.ru/ZrJ9e5LcM74vxA
                                  P.S Я имею ввиду изменение не курса, а цены товара при смене курса
                                    local
                                    10 апреля 2020, 14:41
                                    0
                                    при изменение курса, цена меняется, когда включена эта опция
                                      Arahort
                                      10 апреля 2020, 14:45
                                      0
                                      Цена уже созданных товаров? Я вручную меняю курс доллара например на 80 — цена товаров остаётся прежней
                                        Prihod
                                        10 апреля 2020, 19:03
                                        0
                                        все должно пересчитываться даже если ты вручную меняешь курс валюты так что смотри лог modx и лог ошибок сервера. Ну и проверь что у тебя не закешировались данные товара
                                Andrey
                                10 апреля 2020, 19:47
                                0
                                добрый день.
                                планируем использовать дополнение, чтобы в контексте с англ. версией сайта выводить цену в USD.
                                Используем msOptionPrice (для опций цвета, не для цен)
                                Есть вопросы:
                                1. Можем ли заводить вручную цены в USD и в рублях по-отдельности? я так понял, они будут связаны курсом?
                                Мы не хотим привязываться к курсу, сами все цены круглые проставим.
                                2. возможно, был опыт — через какую платежную систему можем брать оплату с карт в долларах?
                                и в них же получать потом на расчётный счет.
                                сейчас используется яндекс.касса, но они все равно транзакции только в рублях могут производить.
                                  Prihod
                                  10 апреля 2020, 20:17
                                  0
                                  Можем ли заводить вручную цены в USD и в рублях по-отдельности? я так понял, они будут связаны курсом?
                                  Нет, но в новой версии возможно эта возможность будет
                                    Andrey
                                    10 апреля 2020, 20:26
                                    0
                                    как скоро можно ожидать?
                                      Prihod
                                      10 апреля 2020, 20:28
                                      0
                                      не раньше июня
                                        Andrey
                                        28 мая 2020, 11:12
                                        0
                                        добрый день!
                                        очень ждем, готовы проспонсировать функцию
                                  Виктор
                                  07 июля 2020, 18:53
                                  0
                                  Сергей, приветствую! Что-то у меня техподдержка на день раньше отключилась. Спасибо тебе огромное за помощь. По последнему вопросу с НП — да, совсем мимо задал… Но всё получилось!)

                                  Возник еще момент странный. Пока доработка liqpay в процессе, снял в настройках «отображение корзины в валюте пользователя». Но вот что вышло — итоговая сумма, сумма за каждый товар показывается как надо — не переключаются, а «итого с доставкой» всё равно переключается вместе со сменой валюты.

                                  Сайт — lovebythemoon.store
                                    Prihod
                                    09 июля 2020, 15:12
                                    0
                                    Hi, доступы к сайту актуальные? Если нет то сделай такие как были раньше я сегодня постараюсь посмотреть
                                      Виктор
                                      10 июля 2020, 18:18
                                      0
                                      Да, те же. Сумму вызывал как положено — без сниппета
                                        Prihod
                                        12 июля 2020, 21:43
                                        0
                                        в общим там в js файле msMultiCurrency остался код от старой версии я у тебя ее поправил
                                    Rrp2010
                                    01 ноября 2020, 00:01
                                    0
                                    Здравствуйте! Добавлена ли совместимость с msOptionPrice?
                                      Александр
                                      21 февраля 2021, 16:43
                                      0
                                      Здравствуйте. Написали в техподдржку компонента ещё в пятницу, до сих пор ответа нет. Продублирую здесь, может кто то сталкивался и подскажет:
                                      Добрый день. Подскажите пожалуйста: Задаем цену товара 170$ и надо ее выводить именно так, однако видимо при пересчете получается 169.99 это при точности 2. Если ставим точность ноль, то выводит 169$. Получается округляет в меньшую сторону. Как то можно сделать чтобы округляло в большую сторону? Или же цена, которая задана (привязана к товару) выводилась именно такой, как задана? В данном случае 170$

                                      На странице товара выводим так:

                                      {'!msMultiCurrencyPrice' | snippet: [
                                      'price' => $_pls['price'],
                                      ]}
                                      {$_modx->getPlaceholder('msmc.symbol_right')}


                                      Далее обнаружил что в динамической корзине товар с ценой 4.74$ например (это пересчет по курсу от цены в рублях), пересчитывается, вернее показывает, при количестве 4 штук вот так:
                                      4 x 4 = 18
                                      Получается что пересчет идет: 4.74 умножает на 4, потом округляет 18.96 до 18. Но показывает округленную цену товара, равную 4. И получается неправильная арифметика.
                                      Возможно кто то знает решение.
                                      Спасибо.
                                        Александр
                                        22 февраля 2021, 12:17
                                        0
                                        В техподдержке ответили: Нужно написать свой плагин для события msmcOnGetPrice в котором делать округление в нужную сторону. Будем пробовать
                                        Александр
                                        25 февраля 2021, 19:58
                                        0
                                        Опять возник вопрос, написали утром в поддержку, нет ответа, а время поджимает. Поэтому спрошу и здесь.
                                        Каким образом правильно загружать компонентом msImportExport?
                                        Сейчас загружая указываем id валюты, цену в валюте, всё это загружается и отображается в карточке товара в админке и там же перерасчитанная цена в рублях. А в категории в админке в списке товаров цены нулевые и на сайте также не отображаются. После пересохранения товара вручную начинают отображаться, пробовали программно пересохранять — ничего не меняется. В чем ошибка?
                                          Роман
                                          15 марта 2021, 11:14
                                          0
                                          Здравствуйте. Создается новый магазин, еще не наполняли товарами. Хочется задать каждому товару стоимость в Евро, на фронтенде чтобы было отображение в Гривне.

                                          При изменении курса, допустим с 33 грн до 34 грн за 1 евро, зайти в админку, изменить в одном поле 33 на 34 и получить пересчет всех цен.

                                          Компонент готов к таким нечеловеческим нагрузкам?)
                                            Prihod
                                            15 марта 2021, 11:24
                                            0
                                            Да, в карточки товар можно сделать привязку цены к нужной валюте после чего при изменении курса привязанной валюты будет автоматически пересчитывается цена товара к основной валюте
                                            Курс валюты можно обновлять как вручную так и автоматически по крону
                                              Роман
                                              15 марта 2021, 11:51
                                              0
                                              Курс 33, выставляю стоимость 11.8 евро, получаю стоимость 389.4 грн, задаю формат цен [0, ".", " "], получаю отображение цены 389 грн на фронтенде.

                                              Но при заказе в CRM получаю стоимость 389.4 грн.

                                              Как округлять правильно? Нужно чтобы и в CRM получать стоимость 389 грн.
                                            Sergey (Sentinel)
                                            16 апреля 2021, 14:24
                                            0
                                            Как можно переключать валюту для polylang? При смене языка?
                                              Сергей Карпович
                                              03 мая 2021, 09:55
                                              0
                                              Тоже интересует данный вопрос, автор в личке пока молчит
                                                Sergey (Sentinel)
                                                04 мая 2021, 10:36
                                                0
                                                Автор выпустил обновление с интеграцией, но пока не удалось решить задачу. Разбираемся.
                                                  Сергей Карпович
                                                  04 мая 2021, 10:42
                                                  0
                                                  Интеграция работает так: соответствующая валюта языку включается при первом входе на языковую версию сайта. Т.е. по умолчанию.
                                                  Но если затем переключить язык на сайте, то валюта не переключается.
                                                Prihod
                                                07 мая 2021, 00:43
                                                0
                                                Обнови до последней версии msMultiCurrency и Polylang и создай плагин код которого приведен в доках Polylang в разделе msMultiCurrency
                                                  Александр Быковский
                                                  09 июня 2021, 11:50
                                                  0
                                                  Добрый день. Тоже подключился к данной теме по просьбе) Дополнения последние msMultiCurrency и Polylang. У У ссылок класс polylang-toggle как и в trigger. Событие OnTogglePolylangLanguage для плагина из документации. Но переключение валюты при смене языка не происходит
                                                Prihod
                                                28 мая 2021, 14:59
                                                +1
                                                Если не корректно считается стоимость доставки и версия miniShop2 < 2.9.*-pl то необходим обновить файл /core/components/minishop2/model/minishop2/msorderhandler.class.php на этот
                                                  Oleg
                                                  14 февраля 2023, 10:06
                                                  0
                                                  Всем привет. Доставку в оформлении заказа неправильно считает, то есть не переводит в usd. Самое интересное, что сначала правильно считает, но потом срабатывают скрипты и цена меняется на неправильную. Может было у кого подобное?

                                                  www.youtube.com/watch?v=KBjx4Olh970
                                                    Andy
                                                    03 мая 2023, 14:51
                                                    0
                                                    Добрый день! Юань поддерживается?
                                                      Prihod
                                                      03 мая 2023, 15:46
                                                      0
                                                      Да, только его нужно будет добавить вручную joxi.ru/a2XN0EgCpQ7lMr
                                                        Артур Шевченко
                                                        22 мая 2023, 13:54
                                                        0
                                                        Я тут сайт пилил с несколькими контекстами. Контексты на разных доменах. Повесил плагин переключения контекстов на OnHandleRequest, контексты исправно переключались, но авторизация во втором контексте не работала. Причина тому плагин на событие OnMODXInit, в котором есть вот такой код
                                                        $msmc->makePlaceholders();
                                                        И в этой функции есть вызов метода switchContext(), который берет ключ контекста из сессии. Поскольку я не придумал как добавить ключ контекста в сессию на событие OnMODXInit, то просто сделал так
                                                        case 'OnMODXInit':
                                                                $msmc->extendMsOptionsPriceModel();
                                                                break;
                                                            case 'OnHandleRequest':
                                                                if ($ctx === 'mgr') return;
                                                                 $msmc->makePlaceholders();
                                                                $key = $msmc->getSessionContextKey();
                                                                $_SESSION[$key] = $ctx;
                                                                break;
                                                      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
                                                      69