spryker-demo / import-process-feature
Import process [feature]
1.0.0
2025-04-09 16:09 UTC
Requires
- php: >=8.2
- spryker-demo/import-process: ^1.0.0
- spryker-demo/import-process-google-sheets: ^1.0.0
- spryker-demo/import-process-google-sheets-gui: ^1.0.0
- spryker-demo/import-process-gui: ^1.0.0
README
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