Документация Shopkeeper 4.x

Импорт-Экспорт дополнение

Дополнение для импорта и экспорта товаров (документов) в Shopkeeper4. Поддерживаемые форматы файлов: XLS, XLSX, CSV.

Возможности и особенности

  • Импорт и экспорт документов (товаров). Поддерживаемые форматы для импорта и экспорта: XLS, XLSX, CSV.
  • Возможность создания отдельных конфигураций для импорта и экспорта.
  • Удобный интерфейс настройки параметров.
  • Поддержка листов Excel. Можно выбрать лист (по названию), с которого нужно импортировать товары.
  • Автоматическая генерация псевдонимов на латинице. Псевдоним генерируется по названию товара, а также можно выбрать дополнительное поле.
  • Обновление данных товаров с проверкой по полю (артикулу или т.п.).
  • Импорт категорий. Категории могут быть указаны в отдельной колонке в файле или на отдельной строке. Можно задать разделитель для категорий.
  • Возможность автоматического скачивания файлов по URL.
  • Возможность импорта в несколько шагов, если файл очень большой, а ресурсов сервера недостаточно.
  • Возможность брать разные параметры товара из одного поля файла при использовании разделителя (пример: синий - 5 кг - 300 ватт).
  • Показ процентов выполнения задачи в реальном времени.

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

  • Shopkeeper 4.1.2+
  • PHP 7.2+
  • PHP расширения: mbstring, dom, iconv, gd, xml, zip.
  • Возможность использования Composer.

Установка

Для установки данного дополнения у вас должен быть установлен Shopkeeper 4.1.2+ и Composer (https://getcomposer.org/).

  1. Распаковать содержимое архива в папку vendor/andchir. В этой папке должна быть папка import-export-bundle (из архива дополнения).

  2. Установить дополнительные пакеты, используя Composer:

    composer require phpoffice/phpspreadsheet
    composer require behat/transliterator
  3. Добавить строчку в файл composer.json:

    "autoload": {
        "psr-4": {
            ...,
            "Andchir\\ImportExportBundle\\": "vendor/andchir/import-export-bundle/"
        }
    }
  4. Добавить строчку в массив в файле config/bundles.php

    Andchir\ImportExportBundle\ImportExportBundle::class => ['all' => true]
  5. Добавить в файл config/packages/doctrine_mongodb.yaml в раздел document_managers - default:

    ImportExportBundle:
        is_bundle: true
        type: annotation
        dir: 'Document'
        prefix: Andchir\ImportExportBundle\Document\
        alias: ImportExportBundle

    Пожалуйста, проверьте, чтобы формат файла соответствовал требованиям YAML (важны пробелы, всё должно быть ровно).

  6. Добавить строчку в файл config/resources/admin_menu.yaml:

    - { title: 'IMPORT_EXPORT', route: '/module/import-export', icon: 'icon-inbox' }

    Важны пробелы по аналогии с другими строками. Можно менять порядок строк.

  7. Скопировать файл vendor/andchir/import-export-bundle/Resources/config/routes/plugin_import_export.yaml в папку config/routes.

  8. Вызвать команды для обновления автозагрузки:

    composer install
    composer dump-autoload

    При этом будет автоматически скопирована папка vendor/andchir/import-export-bundle/Resources/public/admin в public/bundles/importexport.

  9. Не обязательный шаг. Для режима разработки скопировать папку vendor/andchir/import-export-bundle/frontend/projects в папку frontend. Заменить файл frontend/angular.json на файл, который находится по следующему адресу: vendor/andchir/import-export-bundle/frontend/angular.json. Для этого можно использовать терминал:

    cp -r vendor/andchir/import-export-bundle/frontend/projects frontend && \
    cp vendor/andchir/import-export-bundle/frontend/angular.json frontend
  10. Открыть интерфейс администратора, в левом меню должен появиться пункт "Импорт/Экспорт".

  11. Перейти в раздел "Настройки". В выпадающем меню "Очистить кэш" кликнуть пункт "Обновить словари".

Инструкция по использованию

Импорт

  1. Для создания конфигурации импорта необходимо открыть раздел "Импорт" и нажать кнопку "Добавить".

  2. Ввести название конфигурации в поле "Заголовок". Выбрать файл через соответствующую кнопку. Также можно указать файл, перетащив его в блок с кнопкой.

  3. После загрузки файла открыть конфигурацию для редактирования. Открыть файл и посмотреть на какой строке находятся заголовки. Ввести номер строки в поле "Номер строки заголовков". В поле "Номер первой строки данных" указать номер строки, с которой начинаются данные товаров (документов) в файле. Если в файле нет заголовков колонок, можно для заголовков указать номер первой строки данных.

  4. В поле "Номер последней строки данных" можно ввести любой другой номер строки, на которой вы хотите прервать импорт. При необходимости вернуть реальный номер последней строки, можно ввести "0" (ноль без кавычек). В этом случае после сохранения значение будет возвращено на первоначальное.

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

  6. Выбрать родительскую категорию в соответствующем выпадающем меню.

  7. При настройке импорта данных из колонок можно выбрать один из следующих вариантов:

    • Не импортировать - пропустить, если данные не нужны.
    • Категория - в этом случае будет создана категория в структуре каталога.
    • Выбрать поле - можно выбрать поле типа контента в выпадающем списке.
    • Создать поле - указать имя (псевдоним на латинице без пробелов) поля, которое необходимо создать. Для заголовка поля будет использован заголовок колонки. Создается поле с типом ввода "Текстовое поле". Позже можно отредактировать это поле в разделе "Каталог" - "Типы контента".
  8. Если в файле в одном поле указано несколько категорий с разделителем, этот разделитель необходимо указать в поле "Разделитель категорий". В этом случае будет создано несколько категорий и товары будут помещены в последнюю из этого списка.

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

  10. Если в файле в одном поле указано сразу несколько параметров товара, можно разделить (выбрать этот вариант в списке) это значение на несколько полей типа контента. В этом случае нужно указать разделитель и последовательно для каждого значения указать поле (или создать новое).

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

  12. В выпадающем списке "Поле для поиска" можно выбрать поле, по которому нужно проверять существование товара. Например, если выбран артикул и в каталоге уже существует товар с данным артикулом, то будут обновлены его данные, а новый товар создан не будет. Также можно включить опцию "Пропускать найденные", если данные найденного товара обновлять не нужно.

  13. Опция "Скачивать файлы". Данная опция работает только для полей с типом ввода "Файл". Если в импортируемом файле в соответствующей ячейке указана ссылка на файл, который находится на удаленном сервере, то этот файл будет автоматически скачан и загружен на сервер сайта.

  14. После того как все параметры импорта настроены, можно протестировать импорт, нажав кнопку "Тест". После этого вы увидите список найденных категорий и полей документа. Также в таблице есть информация об размере использованной оперативной памяти и времени выполнения операции.

  15. Если при тестировании видно, что расходуется слишком много оперативной памяти или операция выполняется слишком долго (зависит от ресурсов сервера), рекомендуется разбить импорт на несколько шагов. Для этого в поле "Число шагов" нужно ввести соответствующую цифру. После этого при тестировании должен быть виден результат. Обратите внимание, что если в файле категории находятся на отдельных строках, а не в колонках, то первое сохранение при использовании шагов может занимать довольно продолжительное время, т.к. программа ищет соответствующие строки для разделения га шаги.

  16. После тестирования нажать кнопку "Импортировать". Будет показан ход выполнения операции с процентами обработанных строк файла.

  17. После импорта при использовании фильтров в разделе "Настройки" в выпадающем списке "Очистить кэш" нужно кликнуть пункт "Обновить фильтры". Позже при редактировании товаров, фильтры будут обновляться автоматически.

Экспорт

  1. Для создания конфигурации экспорта необходимо открыть раздел "Экспорт" и нажать кнопку "Добавить".

  2. Ввести название конфигурации в поле "Заголовок". Выбрать родительскую категорию - верхний уровень вложенности каталога, из которого нужно экспортировать категории и товары.

  3. В выпадающем списке "Формат" выбрать формат файла, который будет создан при экспорте. Выбрать тип контента в соответствующем списке.

  4. Категории каталога могут быть записаны в колонках или в отдельных строках в файле. Выбрать вариант можно в выпадающем списке "Тип записи категорий".

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

    • Категория - одна из категорий по вложенности. Можно создать несколько колонок для категорий.
    • Категории с разделителем - записать все категории в одну ячейку с разделителем. Разделитель можно задать в поле "Разделитель категорий".
    • Выбрать поле - поле типа контента, значение которого нужно сохранить в текущей ячейке колонки.
  6. После завершения конфигурации, нужно её сохранить и нажать кнопку "Экспорт". После выполнения операции появится кнопка "Скачать" для скачивания созданного файла.