Install the Sales Data Export feature
Edit on GitHubInstall feature core
Follow the steps below to install feature core.
1) Install the required modules
Run the following command to install the required modules:
composer require spryker/data-export:"^0.1.0" spryker/data-export-extension:"^0.1.0" spryker/sales-data-export:"^0.2.0" --update-with-dependencies
Verification
Make sure that the following modules have been installed:
MODULE | EXPECTED DIRECTORY |
---|---|
DataExport | vendor/spryker/data-export |
DataExportExtension | vendor/spryker/data-export-extension |
SalesDataExport | vendor/spryker/sales-data-export |
2) Set up transfer objects
- Generate transfer changes:
vendor/bin/console transfer:generate
Verification
Make sure that the following changes are present in transfer objects::
TRANSFER | TYPE | EVENT | PATH |
---|---|---|---|
DataExportBatch | class | created | src/Generated/Shared/Transfer/DataExportBatchTransfer.php |
DataExportConfiguration | class | created | src/Generated/Shared/Transfer/DataExportConfigurationTransfer.php |
DataExportConfigurations | class | created | src/Generated/Shared/Transfer/DataExportConfigurationsTransfer.php |
DataExportConnectionConfiguration | class | created | src/Generated/Shared/Transfer/DataExportConnectionConfigurationTransfer.php |
DataExportFormatConfiguration | class | created | src/Generated/Shared/Transfer/DataExportFormatConfigurationTransfer.php |
DataExportFormatResponse | class | created | src/Generated/Shared/Transfer/DataExportFormatResponseTransfer.php |
DataExportReport | class | created | src/Generated/Shared/Transfer/DataExportReportTransfer.php |
DataExportResult | class | created | src/Generated/Shared/Transfer/DataExportResultTransfer.php |
DataExportWriteResponse | class | created | src/Generated/Shared/Transfer/DataExportWriteResponseTransfer.php |
3) Set up behavior
- Register the console command in
ConsoleDependencyProvider
COMMAND | SPECIFICATION | PREREQUISITES | NAMESPACE |
---|---|---|---|
DataExportConsole | Runs data export. | None | Spryker\Zed\DataExport\Communication\Console |
src/Pyz/Zed/Console/ConsoleDependencyProvider.php
<?php
namespace Pyz\Zed\Console;
use Spryker\Zed\Console\ConsoleDependencyProvider as SprykerConsoleDependencyProvider;
use Spryker\Zed\DataExport\Communication\Console\DataExportConsole;
use Spryker\Zed\Kernel\Container;
class ConsoleDependencyProvider extends SprykerConsoleDependencyProvider
{
/**
* @param \Spryker\Zed\Kernel\Container $container
*
* @return \Symfony\Component\Console\Command\Command[]
*/
protected function getConsoleCommands(Container $container): array
{
$commands = [
new DataExportConsole(),
];
return $commands;
}
}
Verification
Run vendor/bin/console list
and make sure that data:export command is on the list of the available commands.
- Add the data export configuration .yml file to the
data/export/config
folder:
version: 1
defaults:
filter_criteria: &default_filter_criteria
order_created_at:
type: between
from: '2020-05-01 00:00:00'
to: '2020-12-31 23:59:59'
actions:
- data_entity: order-expense
destination: '{data_entity}s_DE_{timestamp}.{extension}'
filter_criteria:
<<: *default_filter_criteria
store_name: [DE]
- data_entity: order-expense
destination: '{data_entity}s_AT_{timestamp}.{extension}'
filter_criteria:
<<: *default_filter_criteria
store_name: [AT]
- data_entity: order-item
destination: '{data_entity}s_DE_{timestamp}.{extension}'
filter_criteria:
<<: *default_filter_criteria
store_name: [DE]
- data_entity: order-item
destination: '{data_entity}s_AT_{timestamp}.{extension}'
filter_criteria:
<<: *default_filter_criteria
store_name: [AT]
- data_entity: order
destination: '{data_entity}s_DE_{timestamp}.{extension}'
filter_criteria:
<<: *default_filter_criteria
store_name: [DE]
- data_entity: order
destination: '{data_entity}s_AT_{timestamp}.{extension}'
filter_criteria:
<<: *default_filter_criteria
store_name: [AT]
- Activate the following plugins:
PLUGIN | SPECIFICATION | PREREQUISITES | NAMESPACE |
---|---|---|---|
OrderDataEntityExporterPlugin | Adds the order data exporter. |
None | Spryker\Zed\SalesDataExport\Communication\Plugin\DataExport |
OrderExpenseDataEntityExporterPlugin | Adds the order-expense data exporter. |
None | Spryker\Zed\SalesDataExport\Communication\Plugin\DataExport |
OrderItemDataEntityExporterPlugin | Adds the order-item data exporter. |
None | Spryker\Zed\SalesDataExport\Communication\Plugin\DataExport |
src/Pyz/Zed/DataExport/DataExportDependencyProvider.php
<?php
namespace Pyz\Zed\DataExport;
use Spryker\Zed\DataExport\DataExportDependencyProvider as SprykerDataExportDependencyProvider;
use Spryker\Zed\SalesDataExport\Communication\Plugin\DataExport\OrderDataEntityExporterPlugin;
use Spryker\Zed\SalesDataExport\Communication\Plugin\DataExport\OrderExpenseDataEntityExporterPlugin;
use Spryker\Zed\SalesDataExport\Communication\Plugin\DataExport\OrderItemDataEntityExporterPlugin;
class DataExportDependencyProvider extends SprykerDataExportDependencyProvider
{
/**
* @return \Spryker\Zed\DataExportExtension\Dependency\Plugin\DataEntityExporterPluginInterface[]
*/
protected function getDataEntityExporterPlugins(): array
{
return [
new OrderDataEntityExporterPlugin(),
new OrderItemDataEntityExporterPlugin(),
new OrderExpenseDataEntityExporterPlugin(),
];
}
}
Verification
To verify that plugins are activated, run console command vendor/bin/console data:export -c order_export_config.yml
and check that files with the exported data were created in the data/export
folder.
Thank you!
For submitting the form