как сделать цены в нескольких валютах и пересчет корзины в рубли

Тема в разделе "OpenCart", создана пользователем Besqcii, 1 авг 2018.

  1. Besqcii

    Besqcii

    Регистрация:
    5 ноя 2016
    Сообщения:
    6
    Симпатии:
    2
    Здравствуйте. Есть две задачи (или одна?)
    1) отображать цены в двух валютах рубли/доллары согласно курса
    2) отображать цены в уе (напр в долларах) или в двух валютах, а в корзине пересчитывать все в рубли

    Подскажите, как это лучше реализовать? догадываюсь, что нужен модуль, но не знаю какой искать. Спасибо.
     
  2. Baco

    Baco Антихронофаг Команда форума

    Регистрация:
    9 окт 2012
    Сообщения:
    803
    Симпатии:
    399
    по умолчанию в ОС есть такой метод как convert, я его использую так (если надо вывести валюту, отличную от дефолта):
    Код:
    $second_price = $this->currency->convert($result['price'], 'RUB', 'USD');
    ну и соотв. $second_price - уже вторая, переконвертированная цена.
     
  3. Besqcii

    Besqcii

    Регистрация:
    5 ноя 2016
    Сообщения:
    6
    Симпатии:
    2
    Вы не могли бы чуть подробнее рассказать? это дописывать во вьюху товара? как работает конверт? откуда берет курсы? можно ли устанавливать свои?

    все же хотелось бы решение в два клика из коробки.
     
  4. Baco

    Baco Антихронофаг Команда форума

    Регистрация:
    9 окт 2012
    Сообщения:
    803
    Симпатии:
    399
    данный метод находится в библиотеке валюты (system/library/currency.php) и использовать его можно в любом месте, где фигурируют цифровые данные (в смысле цифры), для примера, можно вывести на странице товара вторую цену вот таким вот образом, учитывая условия, что валюта по дефолту RUB:
    открываемс файл: catalog\controller\product\product.php, там находим строку:
    Код:
    if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) {
                    $this->data['price'] = $this->currency->format($this->tax->calculate($product_info['price'], $product_info['tax_class_id'], $this->config->get('config_tax')));
                } else {
                    $this->data['price'] = false;
                }
    
    и добавляем ниже этого блока 2-ю цену:
    Код:
    if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) {
                    $this->data['second_price'] = $this->currency->convert($product_info['price'], 'RUB', 'USD');
                } else {
                    $this->data['second_price'] = false;
                }
    
    при условии, что USD - настроен в админке и имеет конвертационный коэфициент.

    ну и саму 2-ю валюту товара выводим во view (catalog\view\theme\default\template\product\product.tpl):
    находим строку:
    Код:
    <span id="price"><?php echo $price; ?></span>
    и ниже добавляем:
    Код:
    <?php if ($second_price) { ?><br/><span id="second-price"><?php echo $second_price; ?></span><?php } ?>
    P.S. код не проверял, писал под версию 1.5.5 ОС, но уверен что он рабочий
     
    MGT1 нравится это.
  5. Besqcii

    Besqcii

    Регистрация:
    5 ноя 2016
    Сообщения:
    6
    Симпатии:
    2
    Вот с этим тоже проблема. Изначально валюта в магазине одна, если я не ошибаюсь. Как сделать несколько?
    --- Добавлено, 6 авг 2018 ---
    разобрался. спасибо.
    для валют таки купил модуль