Fix для Валюты

Тема в разделе "Готовые модули и модификаторы. Бесплатно", создана пользователем GlobalWhite, 30 сен 2016.

  1. GlobalWhite

    GlobalWhite Пользователь

    Сообщения:
    36
    Симпатии:
    14
    Это не мой фикс. Я только переделал его под OCMOD. Оригинал - находится тут: http://www.opencart.com/index.php?route=extension/extension/info&extension_id=19640&filter_search=Currency Fixes

    Делает:
    1. Добавляет в настройку основного магазина, выбор отображаемой валюты. Т.е. в системе - появляется валюта по умолчанию (например, доллар), и валюта которую видят все пользователи. Например - рубли (Т.е. базовая валюта, и отображаемая покупателям валюта).

    2. Обновляет цены при изменении валюты по умолчанию. Когда вы меняете валюту по умолчанию - цены не изменяются, что приводит к неправильным ценам в магазине, до следующего ежедневного обновления курсов. Мод исправляет эту проблему.

    3.Ручное обновление курсов. По умолчанию, OpenCart обновляет курсы раз в день. Но, иногда необходимо принудительно обновить курсы. Этот мод добавляет кнопку в Система->Локализация->Валюты.

    4. Изменение валюты заказа. По умолчанию, OpenCart не позволяет менять валюту, при редактировании заказа. Мод позволяет это сделать.

    Совместимость - OC 1.5-2.3.0.2 (заявленная автором. Свою реализацию под OCMOD я тестировал только на 2.3.0.2-rs3)

    Вышеуказанные возможности - вольный перевод страницы описания оригинального мода. Пункт 3 - наверное для более старых версий, т.к. в 2.3.0.2-rs3 - кнопка обновления курсов у меня была и без данного мода.

    P.S. Валюта по умолчанию - выставляется в настройках ОСНОВНОГО магазина, в разделе ЛОКАЛИЗАЦИЯ.
    В разделе ВАЛЮТЫ - нет никакого смысла выставлять какой-либо валюте курс 1.000. Не сработает, не сделает ее по умолчанию. Пока не пропишете ее в локализации основного магазина, тогда и в разделе валюты - курс установленной в локализации валюты станет 1.000.

    P.P.S. Обновил версию. Исправленные косяки:
    1. При редактировании основного магазина - переключатель "показать переключатель валют" по умолчанию всегда выставлялся в "да", вне зависимости от того, что было сохранено.
    2. На второстепенных магазинах, по-умолчанию выставлялась отображаемая валюта основного магазина.
     

    Вложения:

    Последнее редактирование: 15 авг 2017
    michael11, solunski.d, Zhezkazganetcs и 3 другим нравится это.
  2. Zhezkazganetcs

    Zhezkazganetcs Продвинутый пользователь

    Сообщения:
    819
    Симпатии:
    108
    еще бы округление бы было
    т.е. после конвертации валют должно быть не 10,16, а 10,50 или 11,00
     
  3. GlobalWhite

    GlobalWhite Пользователь

    Сообщения:
    36
    Симпатии:
    14
    Так поставьте 0 знаков после запятой. И должно округляться по математическим правилам до ближайшего целого. Т.е. 10.16->10.0, 10.50->11.
     
  4. Zhezkazganetcs

    Zhezkazganetcs Продвинутый пользователь

    Сообщения:
    819
    Симпатии:
    108
    дак мне копейки нужны
    лампа за 1,00 дешево
    за 2,00 дорого
    1,50 само то
     
  5. GlobalWhite

    GlobalWhite Пользователь

    Сообщения:
    36
    Симпатии:
    14
    Предполагаю, что округлять стоит до 1 знака после запятой. тогда 10.16->10.2, 10.14->10.1 :)
     
  6. Zhezkazganetcs

    Zhezkazganetcs Продвинутый пользователь

    Сообщения:
    819
    Симпатии:
    108
    дак это понятно
    хотелось бы либо 0,50 либо 1,00
     
  7. Ecsiron

    Ecsiron Продвинутый пользователь

    Сообщения:
    415
    Симпатии:
    53
    Так в чем прикол? В настройках валюты количество знаков после запятой.
    Вот мне наоборот копейки не нужны) У меня поэтому 0 стоит.
    А ты попробуй 1 и скажи результат. Работает 1)
    А что нормально смотрится ₽389426.5)
     
  8. Zhezkazganetcs

    Zhezkazganetcs Продвинутый пользователь

    Сообщения:
    819
    Симпатии:
    108
    прикол в том, что вместо 10,5 будет 11
     
  9. Ecsiron

    Ecsiron Продвинутый пользователь

    Сообщения:
    415
    Симпатии:
    53
    Не может быть.
    Версия движка.
    Модули или модификации, которые используешь для модификации цены.
    Эта модификация для меня вообще бесполезна, но она не влияет на отображение формата цены...
    Пришли скрин localisation/currency/edit той валюты, которая на сайте для вывода цены.
    Количество знаков после запятой должно быть "2".
     
  10. Zhezkazganetcs

    Zhezkazganetcs Продвинутый пользователь

    Сообщения:
    819
    Симпатии:
    108
    ну и получится 10,16
    если основная валюта доллар
    а на сайте рубли
    и да, 2 знака после запятой
    неохота делать скрины
    версия 2,3
     
  11. Ecsiron

    Ecsiron Продвинутый пользователь

    Сообщения:
    415
    Симпатии:
    53
    теперь я понял, точки нужно было ставить...
    Постановка задачи звучит округлять в большую сторону до 50 копеек или целого числа)
    Если правильно понял, то все элементарно Ватсон. В PHP целых три функции округления: round, ceil и floor.
    Значит до обработки тебе нужно грамотно округлить цену)
    И делается это так: ceil ($price*2) / 2 - для варианта с шагом в 50 копеек, а ceil ($price) для округления в большую сторону.
    А если я скажу, что округление можно сделать всего в одном файле /system/library/cart/currency.php и это распространится на все контроллеры, то меня обругает Влад: "Не трогайте библиотеки, меняйте контроллеры."
    Решать Вам батенька)
     
  12. OpenWeb

    OpenWeb Новичок

    Сообщения:
    9
    Симпатии:
    0
    Подскажите,по подробнее,как решить данный вопрос с округлением.
    Заранее благодарю
     
  13. Zhezkazganetcs

    Zhezkazganetcs Продвинутый пользователь

    Сообщения:
    819
    Симпатии:
    108
    а как сделать чтобы белорусские рубли отображались на сайте?
    в российских более менее гуд
    изменил
    system/library/cart/currency.php
    Код:
    public function format($number, $currency, $value = '', $format = true)
    на
    Код:
    public function format($number, $currency = 'BYN', $value = '', $format = true)
    но не помогает
    помогает, если вручную установить курс евро к белкам для российского рубля
     
    Последнее редактирование: 13 янв 2017
  14. GlobalWhite

    GlobalWhite Пользователь

    Сообщения:
    36
    Симпатии:
    14
    У меня нормально отображаются бел. рубли, без правок кода и прочего. Основная валюта стоит USD, и добавил валюту BYN. Ну и "Отображаемая валюта магазина" - тоже прописал BYN. И все.
     
  15. Zhezkazganetcs

    Zhezkazganetcs Продвинутый пользователь

    Сообщения:
    819
    Симпатии:
    108
    если обновить курсы, то евро учитывает рубли, а не белки
     
  16. GlobalWhite

    GlobalWhite Пользователь

    Сообщения:
    36
    Симпатии:
    14
    Можно конкретнее? Что значит, евро учитывает рубли а не белки? Непонятна сама суть проблемы.

    Если выставить базовую валюту USD, и добавить другие валюты - RUB, EUR, BYN - то у меня курсы обновляются и пересчитываются все правильно.
     
  17. Zhezkazganetcs

    Zhezkazganetcs Продвинутый пользователь

    Сообщения:
    819
    Симпатии:
    108
    есть 3 валюты евро, белки и рубли
    выставляю евро в админке, а на сайте белки = не работает
    выставляю евро в админке, а на сайте рубли = работает, но курс считается к российскому (1 к 67,00)
    отключаю рубли и цена вообще не показывается
    ставлю курс 2,0 (1 евро = 2бел.руб) и все нормально
    не могу понять в чем проблема
     
  18. GlobalWhite

    GlobalWhite Пользователь

    Сообщения:
    36
    Симпатии:
    14
    Поставить основную валюту магазина - Евро, поставить отображаемую валюту - белки. зайти в настройку валют, нажать обновить курсы. проверить как оно работает. Основная валюта - выставляется у магазина по умолчанию (в случае мультимагазинной конфигурации).
     
  19. Zhezkazganetcs

    Zhezkazganetcs Продвинутый пользователь

    Сообщения:
    819
    Симпатии:
    108
    не могу понять почему идет привязка к рублю
    если RUB сделать курс BYN то считает нормально
    но если RUB отключить, то вообще нет цены
    т.е. RUB выводится на сайте по-любому
    вот как то так
    буду завтра на работе - запишу видео
     
  20. GlobalWhite

    GlobalWhite Пользователь

    Сообщения:
    36
    Симпатии:
    14
    Потому, что в качестве основной валюты - стоит рубль.
     
    Ecsiron нравится это.