Freeocart

Проект свободной экосистемы Opencart

FOC: Flexible CSV import/export

Модуль импорта/экспорта из CSV

Проект на стадии активной разработки, поэтому пока что исходный код недоступен. Релиз на Github запланирован после проведения тестов на стабильность импорта данных.

UPDATE:

Модуль вышел в мир, найти его вы можете здесь — https://github.com/Freeocart/fo-csv

Готовый к установке билд можно найти здесь — https://github.com/Freeocart/fo-csv/releases

Структура модуля подразумевает несколько компонент:

  1. Импорт данных из CSV
  2. Экспорт данных в CSV
  3. Возможность быстрого переноса настроек (профилей)

Разработка модуля ведётся под версии Opencart 2.3 / 3+.

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

Импорт

Компонент импорта изначально задуман быть максимально гибким при использовании. Система подгрузки CSV заголовков и предоставления пользователю возможность самостоятельно выбирать какое поле CSV документа в какое поле базы данных должно попасть. Подобный UX я встретил при работе с Advantshop, однако в среде Opencart подобного подхода, к сожалению, не увидел.

При импорте данных, вы можете приложить архив с изображениями, имеется возможность подгрузки изображений по URL и некоторые другие возможности.

UI модуля разрабатывается при помощи Vue2 и некоторых его компонент (vuex/vue-i18n/router), что позволяет серьёзно сократить время проектирования и разработки новых функций.

Как модуль производит импорт

При старте импорта происходит следующее: отправляется запрос на сервер (import), в результате этого запроса заливаются CSV файл и Zip архив (если есть).

Модуль сохраняет указанные ресурсы по определённому адресу, выполняет распаковку архива и генерирует специальный ключ.

Если предусмотрены какие-либо действия массового характера (например, удаление всех производителей) — оно выполняется здесь же.

После этого клиент получает ключ и метаинформацию о csv файле, например размер в байтах.

Далее фронт посылает запрос importPart, с полученными данными на первом шаге данными, бэкенд последовательно считывает записи из файла и импортирует их в базу данных. В результате указатель позиции в файле смещается и фронтенд получает обновлённые данные.

До тех пор пока весь файл не будет считан, либо бэкенд не выдаст ошибку — запросы importPart повторяются.


Stay tuned