Import/Export

Импорт прайсов поставщиков для OpenCart 2.3, 3 и 4

Версия
v1.0.0 (OpenCart 4)
v1.0.0 (OpenCart 3.x)
v1.0.0 (OpenCart 2.3)
Совместимость
OpenCart 2.3.0.x, 3.0.2 – 3.0.5.0 та 4.0.2 – 4.1.x
Импорт прайсов поставщиков для OpenCart 2.3, 3 и 4

Что внутри

  • Прайс в XLSX, CSV (UTF-8 и windows-1251), XML и YML
  • Загрузка файлом или автоматически по ссылке
  • Автоопределение колонок по заголовку прайса
  • Поиск товара по артикулу, модели или штрих-коду
  • Наценка уровнями от цены поставщика + фиксированная сумма
  • Валюта прайса с курсом магазина или собственным
  • Округление до гривны, десятки, …,99, …,95, …,50
  • Текстовые остатки: «в наличии», «под заказ», «нет»
  • Защита от подозрительных изменений цены (лимит в процентах)
  • План «было → станет» перед записью в каталог
  • Обработка пакетами — файлы на десятки тысяч строк
  • Товары, которых нет в прайсе: обнулить или выключить в пределах производителя или категории
  • Журнал всех изменений и откат любого запуска одним кликом
  • Несколько поставщиков с отдельными правилами (Pro)
  • Автоматическое обновление по расписанию через cron (Pro)

Импорт прайсов поставщиков обновляет цены и остатки в OpenCart из файла, который прислал поставщик — Excel, CSV или XML/YML, с компьютера или по ссылке. Есть три сборки: для OpenCart 4.0.2 – 4.1.x, 3.0.2 – 3.0.5.0 и 2.3.0.x; функциональность одинаковая, отличается только пакет.

Любой файл поставщика

Модуль читает XLSX (обычный Excel, без пересохранения в CSV), CSV в UTF-8 или windows-1251 с любым разделителем, а также XML и YML — тот формат, в котором прайсы отдают Rozetka, Prom и большинство украинских дистрибьюторов. Разделитель, кодировка и формат определяются автоматически; лист Excel, количество служебных строк сверху и тег товара в XML при необходимости указываются вручную.

Прайс можно загрузить файлом или дать ссылку — тогда модуль сам забирает его с сайта поставщика при каждом запуске.

Автоопределение колонок прайса: артикул, цена, остаток
Колонки прайса определены автоматически, рядом — первые строки файла

Колонки определяются сами

Модуль читает заголовок файла и сам находит, где артикул, где цена, где остаток: понимает «Артикул», «Код товара», «Цена закупочная», «Наличие», «vendorCode», «stock_quantity» и десятки других вариантов написания. Любое соответствие можно переопределить вручную — рядом показаны первые строки файла, чтобы было видно, что именно попадёт в магазин.

Товар находится по артикулу (SKU, MPN или модель), отдельно по модели или по штрих-коду (EAN, UPC, JAN, ISBN) — тем полем, которое реально заполнено в вашем каталоге.

Цена считается по вашим правилам

Цена поставщика не попадает в магазин напрямую. Сначала она переводится из валюты прайса по курсу магазина или по курсу, который вы укажете. Дальше применяется наценка уровнями: до 500 грн — 40%, от 500 до 2000 — 25%, выше — 15% плюс фиксированная сумма, сколько уровней нужно. Затем — округление: до гривны, до десятки или до привычного «…,99», «…,95», «…,50». Есть и нижняя граница цены, ниже которой модуль не опускается.

Остатки понимают не только числа: «в наличии», «под заказ», «нет» превращаются в количество по вашей таблице соответствий. Можно умножать остаток на коэффициент, ограничивать потолком и автоматически выключать товар, когда остаток стал нулём.

Защита от испорченного прайса

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

Сначала план, потом запись

Модуль никогда не пишет в каталог сразу. Сначала он читает файл, сопоставляет его с товарами и показывает полный план: сколько строк прочитано, сколько найдено в каталоге, какие цены и остатки изменятся — таблица «было → станет» по каждому товару. Отдельно видно строки с неизвестными кодами, подозрительные изменения, ошибки и те, где ничего не изменилось.

Только после вашего подтверждения план применяется — пакетами, поэтому 40 тысяч строк не зависят от того, выдержит ли один запрос таймаут сервера.

План импорта с таблицей «было → станет» перед записью в каталог
План импорта: сколько строк найдено, какие цены и остатки изменятся

Товары, которых нет в прайсе

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

Журнал и откат

Каждый запуск сохраняется: когда, из какого файла, сколько строк прочитано и сколько товаров обновлено. Все изменения записываются по полям — старая и новая цена, старый и новый остаток, — поэтому любой запуск откатывается одним кликом к значениям, которые были до него. Это не «восстановите бэкап базы», а точный возврат именно тех товаров, которых коснулся импорт.

Автоматическое обновление по расписанию

Профиль поставщика со ссылкой на прайс можно поставить на расписание — ежечасно, каждые 6 часов, ежедневно или еженедельно. Модуль сам забирает файл, считает цены по вашим правилам и обновляет каталог; результат каждого запуска остаётся в истории с тем же откатом. Запуск выполняется по адресу cron с секретным токеном, чтобы никто посторонний не мог запустить импорт.

Что входит в лицензию

Лицензия выдаётся на один домен и включает год обновлений и поддержки. Одна покупка покрывает все три ветки OpenCart — 2.3.0.x, 3.0.2 – 3.0.5.0 и 4.0.2 – 4.1.x, — поэтому переезд магазина на новую версию ничего не стоит. Код открытый, ionCube не нужен, файлы ядра не меняются.

Бесплатная версия полностью рабочая: читает те же форматы, показывает тот же план и тот же журнал, но обновляет до 50 строк за запуск и ведёт одного поставщика без расписания.

Технические требования

OpenCart 2.3.0.x, 3.0.2 – 3.0.5.0 или 4.0.2 – 4.1.x, PHP 7.0 – 8.3, включённые расширения zip и xml, cURL для загрузки прайса по ссылке. Установка штатная: Админ → Расширения → Инсталлятор → Загрузить, далее активация в списке модулей.

Частые вопросы

Надо ли перегонять Excel в CSV?

Нет. Модуль читает .xlsx напрямую, включая формулы (берётся посчитанное значение) и несколько листов.

Поставщик присылает прайс в windows-1251 — будет «кракозябра»?

Нет, кодировка определяется автоматически, а при необходимости указывается вручную.

Что будет, если в прайсе ошибка и цены в 100 раз меньше?

Включите лимит изменения в процентах — такие строки не запишутся, а попадут в список «Подозрительное изменение» на проверку.

Можно ли откатить импорт?

Да. Каждый запуск сохраняет старые и новые значения по каждому полю, откат возвращает ровно те товары, которых коснулся импорт.

Модуль создаёт новые товары?

Нет, он обновляет цены и остатки существующих. Это осознанное решение: создание карточек без описаний и изображений портит каталог и SEO.

Можно ли обновлять прайс автоматически ежедневно?

Да, в Pro: укажите ссылку на прайс и расписание, дальше модуль забирает файл и обновляет каталог сам.

Одна лицензия покрывает и 3.x, и 4.x?

Да, в лицензию входят сборки для 2.3, 3.x и 4.x — переезд магазина на другую версию ничего не стоит.

Вопросы по модулю?

Пишите в Telegram — ответим в течение рабочего дня. Поможем с настройкой, совместимостью и активацией ключа.

@catcode_support

Не тот вариант, что искали?

Мы делаем кастомные модули под WordPress, WooCommerce, OpenCart и Shopify. Расскажите о задаче — подготовим оценку.

Заказать кастомный модуль