ЭНЦИКЛОПЕДИЯ СОВРЕМЕННОГО САЙТОСТРОЕНИЯ

Инструкция Opencart 2.x. Решаем проблему с курсами валют

Тема в разделе "Версии 2.x", создана пользователем Алексей, 6 июн 2016.

  1. Алексей

    Алексей Гуру Команда форума Эксперт

    Сообщения:
    367
    Рейтинг:
    151
    Без лишних рассусоливаний перейду к сути проблемы. Итак, пожалуй каждый интернет-магазин рано или поздно сталкивается с проблемой, когда есть несколько поставщиков, которые присылают прайсы в разных валютах. Это настоящая головная боль для контент-менеджеров и всех, кто так или иначе ковыряет админку сайта. Особенно когда товаров несколько тысяч + 3 разных валюты + российская экономика.

    При всём этом, на фронт-энде (витрине магазина, которую видят покупатели, цены должны быть в национальной валюте).

    Более наглядно:

    • Поставщик 1 поставляет товар за рубли;

    • Поставщик 2 — за доллары;

    • Поставщик 3 — за евро;

    • Поставщик 4 — за монгольские тугрики;

    • Поставщик 5 — по собственному непредсказуемому курсу. Да, такие бывают. У них «у.е.» - это действительно «условная единица», которая может быть равна как ведру картошки, так и хитрой формуле типа «формула расчёта пенсии в РФ минус разница курсов доллара за вчера и за сегодня до пятого знака после запятой, умноженное на евро в пятой степени».
    Всего, пусть будет, 20 тыс товаров. И все цены должны быть в рублях. Честно я бы свалил с сайта, если бы мне предложили купить, например, телефон за рубли, карту памяти за доллары, а ЮСБ-причиндалы за валюту с непроизносимым названием.

    Наш план работ:

    • Создать нужные нам валюты в разделе локализаций в админке. Валюты не обязательно включать, т. е. Они совсем не обязательно должны отображаться во фронт-энде;

    • Создать в БД новое поле, которое будет содержать в себе ID валюты, созданной в разделе локализаций админки;

    • Заставить курс обновляться ежедневно в соответствии с официальным курсом ЦБ;

    • Автоматизировать внедрение новой «фишки», чтобы не пришлось каждый товар править вручную.
    Итак, что нам понадобится:

    Пара модулей, немного времени и, в принципе, всё. Это решение я искал дня 3, наверное. Наконец-то собрал всё необходимое и готов поделиться.

    Модули:

    1. Currency Fixes (фикс автообновления курса валют по ЦБ. Изначально опенкарт обновлял курсы по YAHOO, а они априори кривые);

    2. Product Currency Choice 1.0.5 (этот модуль позволяет в админке привязывать к каждому товару его курс. Т.е. указываем цену, а рядом выбираем, в чём эта цена — доллары, евро или вёдра египетской картошки). Внутри архива можно найти скрипт запроса к MySQL;

    3. CSV Price import/export версии 4.1.7 и выше. «Взлететь» может и более ранняя версия, если там есть вкладка «Макросы».
    Порядок действий:

    1. Создаём нужные валюты в админке. Важный момент: обозначение курса должно быть официальным. USD, EUR, RUR и т.д.;

    2. Устанавливаем Currency Fixes;

    3. Устанавливаем Product Currency Choice 1.0.5 (это OCMOD-модуль, запрос к БД сам сделает);

    4. В CSV Price import/export в макросах задаём следующие параметры:
    • Таблица — oc_product;

    • Имя поля — currency_id;

    • Заголовок CSV - _CUSTOM_CURRENCY_ID_;

    • Название — ID валюты.
    Вот, в принципе, и всё.

    Теперь можно проверить работу всех составляющих сразу. Создаём тестовый товар, ставим ему цену 1 доллар/евро/другая официальная валюта, сохраняем, проверяем курс по Яндексу.


    Перелопатить весь каталог можно двумя способами:
    1. Тупо проставлять валюты-цены каждому товару.
    2. Использовать CSV Price import/export, создав новый столбец _CUSTOM_CURRENCY_ID_ и проставив там ID валюты, который можно посмотреть либо напрямую в БД, либо в админке — раздел локализаций — валюты — посмотреть на окончание ссылки кнопки редактировать каждой валюты. ID валюты — это цифра.

    Будут вопросы — пишите в комментарии. Первые два модуля выкладываю здесь. Как устанавливать и пользоваться могу рассказать по просьбе. CSV Price import/export – модуль платный и пиратки постоянно слетают. Но что-нибудь придумать можно всегда :)
     

    Вложения:

    #1
  2. Загрузка...
  3. anna666

    anna666 Новичок

    Сообщения:
    1
    Рейтинг:
    1
    Добрый день! Не получается создать в БД столбец. Ошибка #1067 - Invalid default value for 'date_available'
    Могли бы Вы чем-то помочь? Очень нужно хотя бы 2 валюты иметь. Спасибо!
     
    #2
  4. Александр

    Александр Новичок

    Сообщения:
    1
    Рейтинг:
    1
    Спасибо огромное за этот замечательный и полезный пост.
     
    #3