Без лишних рассусоливаний перейду к сути проблемы. Итак, пожалуй каждый интернет-магазин рано или поздно сталкивается с проблемой, когда есть несколько поставщиков, которые присылают прайсы в разных валютах. Это настоящая головная боль для контент-менеджеров и всех, кто так или иначе ковыряет админку сайта. Особенно когда товаров несколько тысяч + 3 разных валюты + российская экономика. При всём этом, на фронт-энде (витрине магазина, которую видят покупатели, цены должны быть в национальной валюте). Более наглядно: Поставщик 1 поставляет товар за рубли; Поставщик 2 — за доллары; Поставщик 3 — за евро; Поставщик 4 — за монгольские тугрики; Поставщик 5 — по собственному непредсказуемому курсу. Да, такие бывают. У них «у.е.» - это действительно «условная единица», которая может быть равна как ведру картошки, так и хитрой формуле типа «формула расчёта пенсии в РФ минус разница курсов доллара за вчера и за сегодня до пятого знака после запятой, умноженное на евро в пятой степени». Всего, пусть будет, 20 тыс товаров. И все цены должны быть в рублях. Честно я бы свалил с сайта, если бы мне предложили купить, например, телефон за рубли, карту памяти за доллары, а ЮСБ-причиндалы за валюту с непроизносимым названием. Наш план работ: Создать нужные нам валюты в разделе локализаций в админке. Валюты не обязательно включать, т. е. Они совсем не обязательно должны отображаться во фронт-энде; Создать в БД новое поле, которое будет содержать в себе ID валюты, созданной в разделе локализаций админки; Заставить курс обновляться ежедневно в соответствии с официальным курсом ЦБ; Автоматизировать внедрение новой «фишки», чтобы не пришлось каждый товар править вручную. Итак, что нам понадобится: Пара модулей, немного времени и, в принципе, всё. Это решение я искал дня 3, наверное. Наконец-то собрал всё необходимое и готов поделиться. Модули: Currency Fixes (фикс автообновления курса валют по ЦБ. Изначально опенкарт обновлял курсы по YAHOO, а они априори кривые); Product Currency Choice 1.0.5 (этот модуль позволяет в админке привязывать к каждому товару его курс. Т.е. указываем цену, а рядом выбираем, в чём эта цена — доллары, евро или вёдра египетской картошки). Внутри архива можно найти скрипт запроса к MySQL; CSV Price import/export версии 4.1.7 и выше. «Взлететь» может и более ранняя версия, если там есть вкладка «Макросы». Порядок действий: Создаём нужные валюты в админке. Важный момент: обозначение курса должно быть официальным. USD, EUR, RUR и т.д.; Устанавливаем Currency Fixes; Устанавливаем Product Currency Choice 1.0.5 (это OCMOD-модуль, запрос к БД сам сделает); В CSV Price import/export в макросах задаём следующие параметры: Таблица — oc_product; Имя поля — currency_id; Заголовок CSV - _CUSTOM_CURRENCY_ID_; Название — ID валюты. Вот, в принципе, и всё. Теперь можно проверить работу всех составляющих сразу. Создаём тестовый товар, ставим ему цену 1 доллар/евро/другая официальная валюта, сохраняем, проверяем курс по Яндексу. Перелопатить весь каталог можно двумя способами: Тупо проставлять валюты-цены каждому товару. Использовать CSV Price import/export, создав новый столбец _CUSTOM_CURRENCY_ID_ и проставив там ID валюты, который можно посмотреть либо напрямую в БД, либо в админке — раздел локализаций — валюты — посмотреть на окончание ссылки кнопки редактировать каждой валюты. ID валюты — это цифра. Будут вопросы — пишите в комментарии. Первые два модуля выкладываю здесь. Как устанавливать и пользоваться могу рассказать по просьбе. CSV Price import/export – модуль платный и пиратки постоянно слетают. Но что-нибудь придумать можно всегда
Добрый день! Не получается создать в БД столбец. Ошибка #1067 - Invalid default value for 'date_available' Могли бы Вы чем-то помочь? Очень нужно хотя бы 2 валюты иметь. Спасибо!