spryker-demo/import-process-feature

Import process [feature]

1.0.0 2025-04-09 16:09 UTC

This package is auto-updated.

Last update: 2025-05-22 16:54:23 UTC


README

Minimum PHP Version

Import Process Feature

Installation

Add repositories to composer as they are not registered in packagist.org

composer config repositories.spryker-demo-import-process-feature vsc 'https://github.com/spryker-projects/import-process-feature.git'
composer config repositories.spryker-demo-import-process vsc 'https://github.com/spryker-projects/import-process.git'
composer config repositories.spryker-demo-import-process-gui vsc 'https://github.com/spryker-projects/import-process-gui.git'
composer config repositories.spryker-demo-import-process-google-sheets vsc 'https://github.com/spryker-projects/import-process-google-sheets.git'
composer config repositories.spryker-demo-import-process-google-sheets-gui vsc 'https://github.com/spryker-projects/import-process-google-sheets-gui.git'

Install feature

composer require spryker-demo/import-process-feature

Add SprykerDemo namespace and Google Sheets API credentials to configuration

use SprykerDemo\Service\GoogleSheets\GoogleSheetsConfig;
use SprykerDemo\Shared\GoogleSheets\GoogleSheetsConstants;
...

$config[KernelConstants::CORE_NAMESPACES] = [
    ...
    'SprykerDemo',
];
...

$config[GoogleSheetsConstants::GOOGLE_SHEETS_CREDENTIALS] = [
    GoogleSheetsConfig::CREDENTIAL_FIELD_TYPE => 'service_account',
    GoogleSheetsConfig::CREDENTIAL_FIELD_PROJECT_ID => getenv('SPRYKER_GOOGLE_SHEETS_PROJECT_ID'),
    GoogleSheetsConfig::CREDENTIAL_FIELD_PRIVATE_KEY_ID => getenv('SPRYKER_GOOGLE_SHEETS_PRIVATE_KEY_ID'),
    GoogleSheetsConfig::CREDENTIAL_FIELD_PRIVATE_KEY => getenv('SPRYKER_GOOGLE_SHEETS_PRIVATE_KEY'),
    GoogleSheetsConfig::CREDENTIAL_FIELD_CLIENT_EMAIL => getenv('SPRYKER_GOOGLE_SHEETS_CLIENT_EMAIL'),
    GoogleSheetsConfig::CREDENTIAL_FIELD_CLIENT_ID => getenv('SPRYKER_GOOGLE_SHEETS_CLIENT_ID'),
    GoogleSheetsConfig::CREDENTIAL_FIELD_AUTH_URI => 'https://accounts.google.com/o/oauth2/auth',
    GoogleSheetsConfig::CREDENTIAL_FIELD_TOKEN_URI => 'https://oauth2.googleapis.com/token',
    GoogleSheetsConfig::CREDENTIAL_FIELD_AUTH_PROVIDER_X_509_CERT_URL => 'https://www.googleapis.com/oauth2/v1/certs',
    GoogleSheetsConfig::CREDENTIAL_FIELD_CLIENT_X_509_CERT_URL => getenv('SPRYKER_GOOGLE_SHEETS_CLIENT_X_509_CERT_URL'),
];

Make sure to also set the needed environment variables.

Build transfers

console transfer:generate

Register import process queue

# src/Pyz/Client/RabbitMq/RabbitMqConfig.php

...
use SprykerDemo\Zed\ImportProcess\ImportProcessConfig;
...

protected function getQueueConfiguration(): array
{
    return [
        ...
        ImportProcessConfig::IMPORT_PROCESS_QUEUE,
    ];
}

Wire gueue message processor plugin

# src/Pyz/Zed/Queue/QueueDependencyProvider.php

...
use SprykerDemo\Zed\ImportProcess\Communication\Plugin\Queue\ImportProcessQueueMessageProcessorPlugin;
use SprykerDemo\Zed\ImportProcess\ImportProcessConfig;
...

// ...

protected function getProcessorMessagePlugins(Container $container): array
{
    return [
        ...
        ImportProcessConfig::IMPORT_PROCESS_QUEUE => new ImportProcessQueueMessageProcessorPlugin(),
    ];
});

Wire import process plugins

# src/Pyz/Zed/ImportProcess/ImportProcessDependencyProvider.php

use SprykerDemo\Zed\ImportProcess\ImportProcessDependencyProvider as SprykerDemoImportProcessDependencyProvider;
use SprykerDemo\Zed\ImportProcessSpreadsheet\Communication\Plugin\ImportProcess\ImportProcessSpreadsheetPayloadCleanupPlugin;
use SprykerDemo\Zed\ImportProcessSpreadsheet\Communication\Plugin\ImportProcess\ImportProcessSpreadsheetPayloadDownloadPlugin;

// ...

protected function getImportProcessDataImportConfigurationBuilderPlugins(): array
{
    return [
        // ...
        new ImportProcessSpreadsheetDataImportConfigurationBuilderPlugin(),
    ];
}

protected function getImportProcessDataImportPostExecutePlugins(): array
{
    return [
        // ...
        new ImportProcessSpreadsheetDataImportCleanupPlugin(),
    ];
}

Adjust Navigation configuration file

<?xml version="1.0"?>
<config>
    ...
    <administration>
        ...
        <pages>
            ...
            <import-process-gui>
                <label>Import processes</label>
                <title>Import processes</title>
                <bundle>import-process-gui</bundle>
                <controller>index</controller>
                <action>index</action>
            </import-process-gui>
        </pages>
    </administration>
</config>

Apply Twig customization

# src/Pyz/Zed/ProductManagement/Presentation/Index/index.twig

{% block action %}
    {{ createActionButton('/import-process-spreadsheet-gui/index/select-sheet', 'import_process.google_sheets.data_import_from_spreadsheet' | trans) }}
    ...
{% endblock %}

Add synchronization Propel behavior

<?xml version="1.0"?>
<database xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          name="zed"
          xsi:noNamespaceSchemaLocation="http://static.spryker.com/schema-01.xsd"
          namespace="Orm\Zed\ImportProcess\Persistence"
          package="src.Orm.Zed.ImportProcess.Persistence">

    <table name="spy_import_process">
        <behavior name="event">
            <parameter name="spy_import_process_create" column="*"/>
        </behavior>
    </table>

</database>

Build Propel classes

console propel:install

Generate Backoffice translations

console translator:generate-cache

Build Backoffice frontend

frontend:zed:install-dependencies
frontend:zed:build