msMultiCurrency

Компонент добавляет мультивалютность в miniShop2, а также позволяет привязывать цену отдельного товара к одной из
валют.
Видео-обзор
Купить
Prihod
Prihod
10 мая 2018, 12:18
modx.pro
6 022
Реклама

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

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

          ВАЖНО! Перед обновлением не забывайте сделать бэкап базы данных. После обновления необходимо очистить кэш браузера
            Prihod
            Prihod Старожил
            17 февраля 2019, 14:22
            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
              А как сделать что бы при изменении количества товара в корзине итоговая цена менялась в выбранной валюте?
                Prihod
                Prihod Старожил
                18 марта 2019, 19:03
                ничего делать не нужно т/к она и так должна меняться если у тебя последняя версия minishop2 и msMultiCurrency ну и естественно если ты id у элементов формы не удалил
                  Дмитрий
                  Дмитрий Старожил
                  18 марта 2019, 19:06
                  Не менял ничего, вот код корзины
                  <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
                    Prihod Старожил
                    18 марта 2019, 19:31
                    скинь мне через техподдержку доступ в админку сайта
                homka
                homka Старожил
                21 марта 2019, 12:20
                установили модуль. пытаемся создать поставщика котировок валют и не ясно как это сделать. согласно инструкции должна быть папка providers и в ней класс пример. но такой нет папки или что-то не так поняла??
                  Leonid Krylov
                  Leonid Krylov Старожил
                  21 марта 2019, 14:15
                  Напишите в техподдержку дополнения.
                    Prihod
                    Prihod Старожил
                    21 марта 2019, 14:17
                    вопрос решен уже
                  Сергей
                  Сергей Старожил
                  03 мая 2019, 14:37
                  Компонент работает с динамическим обновлением цен и товаров на компоненте msMCD, проверил на своем проекте
                  Чанк вывода msMCDMiniCartRowTpl
                  Вывод цены товара [[!msMultiCurrencyPrice? &price=`{$item.price}`]] [[!+msmc.symbol_right]]
                  Вывод суммы [[!msMultiCurrencyPrice? &price=`{$total_cost}`]]
                    Сергей
                    Сергей Старожил
                    03 мая 2019, 16:30
                    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
                    Ребята, добрый день! Нужна ваша помощь. В общем проблема с выводом конвертированной суммы на страницу оплаты через liqPay.
                    Коротко о поставленной мне задачи:
                    У товаров основной валютой должно быть Евро, но в корзине и на страницу оплаты через Liqpay должна быть цена пересчитанная в грн. В общем все настроил, только вот в LiqPay заходит сумма не 3000 грн, 100 грн, где 100 это цена товара в евро.
                      Prihod
                      Prihod Старожил
                      27 мая 2019, 15:27
                      Ну так дополнение которое реализует оплату 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
                        Огромное спасибо! Буду пробовать
                          Владимир
                          Владимир Старожил
                          27 мая 2019, 16:43
                          На сколько я понял скрипт находиться здесь 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
                            Prihod Старожил
                            27 мая 2019, 17:04
                            ну тебе нужно сделать свой класс который будет наследникам 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
                              На данный момент в minishope в выборе класса оплаты нельзя вбить свой, а в выпадающем меню только PayPal и LiqPay. Есть ли возможность откорректировать родительский класс?
                                Prihod
                                Prihod Старожил
                                27 мая 2019, 20:03
                                ну по моему если ты этот свой класс добавишь в core/components/minishop2/custom/payment то он появиться в списке
                                  Владимир
                                  Владимир Старожил
                                  27 мая 2019, 21:34
                                  В общем через создание нового класса так и не получилось (виснет корзина, а при обновлении страницы пишет корзина пуста), но засветилась ошибка в логах, о конфликте с компонентом msExtraFields, снес компонент и выбранная валюта стала передаваться в LiqPay, в общем огромное спасибо! Напишу скрипт на выбор гривны при загрузке страницы и удаления выпадающего списка и будет все ок). Еще раз спасибо!
                        Evgeny Tarasov
                        Evgeny Tarasov Старожил
                        11 февраля 2020, 12:21
                        Планирую приобрести данное дополнение.
                        Подскажите, может кто сталкивался, дополнение msMultiCurrency работает с msOptionsPrice2?
                        Володя (автор msOptionsPrice2) сказал, что нужно уточнять у разработчика msMultiCurrency.
                          Prihod
                          Prihod Старожил
                          11 февраля 2020, 18:14
                          Частично, не работает привязка товара к валюте т.к для этого нужно делать правки компонента msOptionsPrice2
                            Александр
                            Александр Старожил
                            24 апреля 2020, 22:51
                            Не подскажите, в каком направлении должны быть правки?
                              Prihod
                              Prihod Старожил
                              24 апреля 2020, 22:57
                              когда привязывается цена к валюте то цена в выбранной валюте указывается в отдельном поле которое добавлено к товару, у модификаций msOptionsPrice2 такого поля нет и добавить его через плагин как это сделано для товара нельзя
                          Николай
                          Николай Старожил
                          11 февраля 2020, 17:19
                          Планирую купить ваш компонент, однако задача стоит нетривиальная. Может ли ваш компонент по клику менять цену в [[+price]]. Допустим менеджер внес цену в евро (т.к. именно в евро ему дает цену поставщик), потом он нажимает где то в админке кнопку и цена меняется именно в поле [[+price]] на рубли. В общем клиент хочет менять валюту в бекенде точнее в своей админке причем именно нажатием на кнопку, он не планирует импортировать товары.
                            Prihod
                            Prihod Старожил
                            11 февраля 2020, 18:11
                            Привязка товара к валюте так и происходит, ты вводишь цену в выбранной валюте, а она автоматом пересчитывается по курсу в базовую при сохранении товара
                            Prihod
                            Prihod Старожил
                            13 февраля 2020, 22:39
                            UPD 1.1.0
                            — Добавлено: Параметр «ID валюты по умолчанию на сайте» (для разных контекстов можно указать свою валюту)
                            — Изменено: При включенной опции «Цена в корзине в валюте пользователя» заказ создается в валюте выбранной пользователем. ВАЖНО! Если используется какой то платежный сервис то значение цены для него будет в валюте выбранной пользователем.
                            — Изменено: Cниппет «msMultiCurrencyCart» (в чанках больше не нужно использовать сниппет msMultiCurrencyPrice)
                            — Улучшено: Работа с контекстами
                              Владимир Ребров
                              25 февраля 2020, 19:23
                              При создании нового товара устанавливается код валюты = 0. Без названия валюты, которого естественно и быть не может, так как валюты с таким кодом в базе нет.


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

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

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

                                    Сайт — lovebythemoon.store
                                      Prihod
                                      Prihod Старожил
                                      09 июля 2020, 15:12
                                      Hi, доступы к сайту актуальные? Если нет то сделай такие как были раньше я сегодня постараюсь посмотреть
                                        Виктор
                                        Виктор Старожил
                                        10 июля 2020, 18:18
                                        Да, те же. Сумму вызывал как положено — без сниппета
                                          Prihod
                                          Prihod Старожил
                                          12 июля 2020, 21:43
                                          в общим там в js файле msMultiCurrency остался код от старой версии я у тебя ее поправил
                                      Rrp2010
                                      Rrp2010 Старожил
                                      01 ноября 2020, 00:01
                                      Здравствуйте! Добавлена ли совместимость с msOptionPrice?
                                        Александр
                                        Александр Старожил
                                        21 февраля 2021, 16:43
                                        Здравствуйте. Написали в техподдржку компонента ещё в пятницу, до сих пор ответа нет. Продублирую здесь, может кто то сталкивался и подскажет:
                                        Добрый день. Подскажите пожалуйста: Задаем цену товара 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
                                          В техподдержке ответили: Нужно написать свой плагин для события msmcOnGetPrice в котором делать округление в нужную сторону. Будем пробовать
                                          Александр
                                          Александр Старожил
                                          25 февраля 2021, 19:58
                                          Опять возник вопрос, написали утром в поддержку, нет ответа, а время поджимает. Поэтому спрошу и здесь.
                                          Каким образом правильно загружать компонентом msImportExport?
                                          Сейчас загружая указываем id валюты, цену в валюте, всё это загружается и отображается в карточке товара в админке и там же перерасчитанная цена в рублях. А в категории в админке в списке товаров цены нулевые и на сайте также не отображаются. После пересохранения товара вручную начинают отображаться, пробовали программно пересохранять — ничего не меняется. В чем ошибка?
                                            Роман
                                            Роман Старожил
                                            15 марта 2021, 11:14
                                            Здравствуйте. Создается новый магазин, еще не наполняли товарами. Хочется задать каждому товару стоимость в Евро, на фронтенде чтобы было отображение в Гривне.

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

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

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

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

                                                    www.youtube.com/watch?v=KBjx4Olh970
                                                      Andy
                                                      Andy Старожил
                                                      03 мая 2023, 14:51
                                                      Добрый день! Юань поддерживается?
                                                        Prihod
                                                        Prihod Старожил
                                                        03 мая 2023, 15:46
                                                        Да, только его нужно будет добавить вручную joxi.ru/a2XN0EgCpQ7lMr
                                                          Артур Шевченко
                                                          Артур Шевченко Старожил
                                                          22 мая 2023, 13:54
                                                          Я тут сайт пилил с несколькими контекстами. Контексты на разных доменах. Повесил плагин переключения контекстов на 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