diff --git a/config/services.php b/config/services.php
new file mode 100644
index 000000000..3eb928775
--- /dev/null
+++ b/config/services.php
@@ -0,0 +1,74 @@
+services();
+ $parameters = $container->parameters();
+ $container->import('services/**/*.php');
+
+ $parameters->set('sylius_refund.default_logo_file', '@SyliusRefundPlugin/assets/sylius-logo.png');
+ $parameters->set('sylius_refund.template.logo_file', '%env(default:sylius_refund.default_logo_file:resolve:SYLIUS_REFUND_LOGO_FILE)%');
+
+ $services->defaults()
+ ->public();
+
+ $services->set('sylius_refund.calculator.unit_refund_total', \Sylius\RefundPlugin\Calculator\UnitRefundTotalCalculator::class)
+ ->args([service('sylius_refund.provider.remaining_total')]);
+
+ $services->alias(\Sylius\RefundPlugin\Calculator\UnitRefundTotalCalculatorInterface::class, 'sylius_refund.calculator.unit_refund_total');
+
+ $services->set('sylius_refund.refunder.order_item_units', \Sylius\RefundPlugin\Refunder\OrderItemUnitsRefunder::class)
+ ->args([
+ service('sylius_refund.creator.refund'),
+ service('sylius.event_bus'),
+ service('sylius_refund.filter.unit_refund'),
+ ])
+ ->tag('sylius_refund.refunder');
+
+ $services->set('sylius_refund.refunder.order_shipments', \Sylius\RefundPlugin\Refunder\OrderShipmentsRefunder::class)
+ ->args([
+ service('sylius_refund.creator.refund'),
+ service('sylius.event_bus'),
+ service('sylius_refund.filter.unit_refund'),
+ ])
+ ->tag('sylius_refund.refunder');
+
+ $services->set('sylius_refund.twig.extension.order_refunds', \Sylius\RefundPlugin\Twig\OrderRefundsExtension::class)
+ ->args([
+ service('sylius_refund.provider.order_refunded_total'),
+ service(\Sylius\RefundPlugin\Provider\UnitRefundedTotalProviderInterface::class),
+ service('sylius_refund.checker.unit_refunding_availability'),
+ service('sylius.repository.order'),
+ service('sylius_refund.repository.refund_payment'),
+ service('sylius_refund.factory.refund_type'),
+ ])
+ ->tag('twig.extension');
+
+ $services->set('sylius_refund.twig.extension.order_refund_availability', \Sylius\RefundPlugin\Twig\OrderRefundAvailabilityExtension::class)
+ ->args([service('sylius_refund.checker.order_refunds_list_availability')])
+ ->tag('twig.extension');
+
+ $services->set('sylius_refund.repository.credit_memo_sequence', \Doctrine\ORM\EntityRepository::class)
+ ->args([\Sylius\RefundPlugin\Entity\CreditMemoSequence::class])
+ ->factory([service('doctrine.orm.entity_manager'), 'getRepository']);
+
+ $services->set('sylius_refund.email_sender.credit_memo', \Sylius\RefundPlugin\Sender\CreditMemoEmailSender::class)
+ ->args([
+ service('sylius.email_sender'),
+ '%sylius_refund.pdf_generator.enabled%',
+ service('sylius_refund.resolver.credit_memo_file'),
+ service('sylius_refund.resolver.credit_memo_file_path'),
+ ]);
+
+ $services->alias(\Sylius\RefundPlugin\Sender\CreditMemoEmailSenderInterface::class, 'sylius_refund.email_sender.credit_memo');
+
+ $services->set('sylius_refund.response_builder.credit_memo_file', \Sylius\RefundPlugin\ResponseBuilder\CreditMemoFileResponseBuilder::class);
+
+ $services->alias(\Sylius\RefundPlugin\ResponseBuilder\CreditMemoFileResponseBuilderInterface::class, 'sylius_refund.response_builder.credit_memo_file');
+
+ $services->set('sylius_refund.manager.credit_memo_file', \Sylius\RefundPlugin\Manager\CreditMemoFileManager::class)
+ ->args([service('gaufrette.sylius_refund_credit_memo_filesystem')]);
+
+ $services->alias(\Sylius\RefundPlugin\Manager\CreditMemoFileManagerInterface::class, 'sylius_refund.manager.credit_memo_file');
+};
diff --git a/config/services.xml b/config/services.xml
deleted file mode 100644
index ef297f65c..000000000
--- a/config/services.xml
+++ /dev/null
@@ -1,86 +0,0 @@
-
-
-
-
-
-
-
-
-
-
- @SyliusRefundPlugin/assets/sylius-logo.png
- %env(default:sylius_refund.default_logo_file:resolve:SYLIUS_REFUND_LOGO_FILE)%
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Sylius\RefundPlugin\Entity\CreditMemoSequence
-
-
-
-
- %sylius_refund.pdf_generator.enabled%
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/config/services/actions.php b/config/services/actions.php
new file mode 100644
index 000000000..ff80e47db
--- /dev/null
+++ b/config/services/actions.php
@@ -0,0 +1,63 @@
+services();
+ $parameters = $container->parameters();
+
+ $services->defaults()
+ ->public();
+
+ $services->set('sylius_refund.controller.admin.download_credit_memo', \Sylius\RefundPlugin\Action\Admin\DownloadCreditMemoAction::class)
+ ->args([
+ service('sylius_refund.resolver.credit_memo_file'),
+ service('sylius_refund.response_builder.credit_memo_file'),
+ '%sylius_refund.pdf_generator.enabled%',
+ ]);
+
+ $services->set('sylius_refund.controller.shop.download_credit_memo', \Sylius\RefundPlugin\Action\Shop\DownloadCreditMemoAction::class)
+ ->args([
+ service('sylius_refund.resolver.credit_memo_file'),
+ service('sylius_refund.checker.credit_memo_customer_relation'),
+ service('sylius_refund.response_builder.credit_memo_file'),
+ '%sylius_refund.pdf_generator.enabled%',
+ ]);
+
+ $services->set('sylius_refund.controller.admin.order_refunds_list', \Sylius\RefundPlugin\Action\Admin\OrderRefundsListAction::class)
+ ->args([
+ service('sylius.repository.order'),
+ service('sylius_refund.checker.order_refunds_list_availability'),
+ service('sylius_refund.provider.refund_payment_methods'),
+ service('twig'),
+ service('request_stack'),
+ service('router'),
+ ]);
+
+ $services->set('sylius_refund.controller.admin.refund_units', \Sylius\RefundPlugin\Action\Admin\RefundUnitsAction::class)
+ ->args([
+ service('sylius.command_bus'),
+ service('request_stack'),
+ service('router'),
+ service('sylius_refund.creator.request_command'),
+ service('monolog.logger'),
+ service('security.csrf.token_manager'),
+ ]);
+
+ $services->set('sylius_refund.controller.complete_refund_payment', \Sylius\RefundPlugin\Action\CompleteRefundPaymentAction::class)
+ ->args([
+ service('request_stack'),
+ service('sylius_refund.repository.refund_payment'),
+ service('sylius.repository.order'),
+ service('sylius_refund.state_resolver.refund_payment_completed_applier'),
+ service('router'),
+ ]);
+
+ $services->set('sylius_refund.controller.admin.send_credit_memo', \Sylius\RefundPlugin\Action\Admin\SendCreditMemoAction::class)
+ ->args([
+ service('sylius.command_bus'),
+ service('sylius_refund.repository.credit_memo'),
+ service('request_stack'),
+ service('router'),
+ ]);
+};
diff --git a/config/services/actions.xml b/config/services/actions.xml
deleted file mode 100644
index 8c9745644..000000000
--- a/config/services/actions.xml
+++ /dev/null
@@ -1,68 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
- %sylius_refund.pdf_generator.enabled%
-
-
-
-
-
-
- %sylius_refund.pdf_generator.enabled%
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/config/services/checkers.php b/config/services/checkers.php
new file mode 100644
index 000000000..f4871dd5b
--- /dev/null
+++ b/config/services/checkers.php
@@ -0,0 +1,38 @@
+services();
+ $parameters = $container->parameters();
+
+ $services->set('sylius_refund.checker.credit_memo_customer_relation', \Sylius\RefundPlugin\Checker\CreditMemoCustomerRelationChecker::class)
+ ->args([
+ service('sylius.context.customer'),
+ service('sylius_refund.repository.credit_memo'),
+ ]);
+
+ $services->alias(\Sylius\RefundPlugin\Checker\CreditMemoCustomerRelationCheckerInterface::class, 'sylius_refund.checker.credit_memo_customer_relation');
+
+ $services->set('sylius_refund.checker.order_refunding_availability', \Sylius\RefundPlugin\Checker\OrderRefundingAvailabilityChecker::class)
+ ->args([
+ service('sylius.repository.order'),
+ service('sylius_abstraction.state_machine'),
+ ]);
+
+ $services->set('sylius_refund.checker.order_refunds_list_availability', \Sylius\RefundPlugin\Checker\OrderRefundsListAvailabilityChecker::class)
+ ->args([
+ service('sylius.repository.order'),
+ service('sylius_refund.checker.order_refunding_availability'),
+ ]);
+
+ $services->set('sylius_refund.checker.order_fully_refunded_total', \Sylius\RefundPlugin\Checker\OrderFullyRefundedTotalChecker::class)
+ ->args([service('sylius_refund.provider.order_refunded_total')]);
+
+ $services->alias(\Sylius\RefundPlugin\Checker\OrderFullyRefundedTotalCheckerInterface::class, 'sylius_refund.checker.order_fully_refunded_total');
+
+ $services->set('sylius_refund.checker.unit_refunding_availability', \Sylius\RefundPlugin\Checker\UnitRefundingAvailabilityChecker::class)
+ ->args([service('sylius_refund.provider.remaining_total')]);
+
+ $services->alias(\Sylius\RefundPlugin\Checker\UnitRefundingAvailabilityCheckerInterface::class, 'sylius_refund.checker.unit_refunding_availability');
+};
diff --git a/config/services/checkers.xml b/config/services/checkers.xml
deleted file mode 100644
index e2f4fe30a..000000000
--- a/config/services/checkers.xml
+++ /dev/null
@@ -1,46 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/config/services/command_bus.php b/config/services/command_bus.php
new file mode 100644
index 000000000..e358702b1
--- /dev/null
+++ b/config/services/command_bus.php
@@ -0,0 +1,35 @@
+services();
+ $parameters = $container->parameters();
+
+ $services->set('sylius_refund.command_handler.refund_units', \Sylius\RefundPlugin\CommandHandler\RefundUnitsHandler::class)
+ ->args([
+ tagged_iterator('sylius_refund.refunder'),
+ service('sylius.event_bus'),
+ service('sylius.repository.order'),
+ service('sylius_refund.validator.refund_units_command'),
+ ])
+ ->tag('messenger.message_handler', ['bus' => 'sylius.command_bus']);
+
+ $services->set('sylius_refund.command_handler.generate_credit_memo', \Sylius\RefundPlugin\CommandHandler\GenerateCreditMemoHandler::class)
+ ->args([
+ service('sylius_refund.generator.credit_memo'),
+ service('sylius_refund.manager.credit_memo'),
+ service('sylius.event_bus'),
+ service('sylius.repository.order'),
+ service('sylius_refund.resolver.credit_memo_file'),
+ '%sylius_refund.pdf_generator.enabled%',
+ ])
+ ->tag('messenger.message_handler', ['bus' => 'sylius.command_bus']);
+
+ $services->set('sylius_refund.command_handler.send_credit_memo', \Sylius\RefundPlugin\CommandHandler\SendCreditMemoHandler::class)
+ ->args([
+ service('sylius_refund.repository.credit_memo'),
+ service('sylius_refund.email_sender.credit_memo'),
+ ])
+ ->tag('messenger.message_handler', ['bus' => 'sylius.command_bus']);
+};
diff --git a/config/services/command_bus.xml b/config/services/command_bus.xml
deleted file mode 100644
index 0c4941b22..000000000
--- a/config/services/command_bus.xml
+++ /dev/null
@@ -1,44 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- %sylius_refund.pdf_generator.enabled%
-
-
-
-
-
-
-
-
-
-
diff --git a/config/services/converters.php b/config/services/converters.php
new file mode 100644
index 000000000..1816c5872
--- /dev/null
+++ b/config/services/converters.php
@@ -0,0 +1,56 @@
+services();
+ $parameters = $container->parameters();
+
+ $services->set('sylius_refund.converter.line_items', \Sylius\RefundPlugin\Converter\LineItem\CompositeLineItemConverter::class)
+ ->args([
+ tagged_iterator('sylius_refund.line_item_converter'),
+ service('sylius_refund.filter.unit_refund'),
+ ]);
+
+ $services->alias(\Sylius\RefundPlugin\Converter\LineItem\LineItemsConverterInterface::class, 'sylius_refund.converter.line_items');
+
+ $services->alias('sylius_refund.converter.line_items.composite', 'sylius_refund.converter.line_items');
+
+ $services->set('sylius_refund.converter.request_to_refund_units', \Sylius\RefundPlugin\Converter\Request\RequestToRefundUnitsConverter::class)
+ ->args([tagged_iterator('sylius_refund.request_to_refund_units_converter')]);
+
+ $services->alias(\Sylius\RefundPlugin\Converter\Request\RequestToRefundUnitsConverterInterface::class, 'sylius_refund.converter.request_to_refund_units');
+
+ $services->set('sylius_refund.converter.request_to_shipment_refund', \Sylius\RefundPlugin\Converter\Request\RequestToShipmentRefundConverter::class)
+ ->args([service('sylius_refund.converter.refund_units')])
+ ->tag('sylius_refund.request_to_refund_units_converter');
+
+ $services->alias(\Sylius\RefundPlugin\Converter\Request\RequestToShipmentRefundConverter::class, 'sylius_refund.converter.request_to_shipment_refund');
+
+ $services->set('sylius_refund.converter.request_to_order_item_unit_refund', \Sylius\RefundPlugin\Converter\Request\RequestToOrderItemUnitRefundConverter::class)
+ ->args([service('sylius_refund.converter.refund_units')])
+ ->tag('sylius_refund.request_to_refund_units_converter');
+
+ $services->alias(\Sylius\RefundPlugin\Converter\Request\RequestToOrderItemUnitRefundConverter::class, 'sylius_refund.converter.request_to_order_item_unit_refund');
+
+ $services->set('sylius_refund.converter.line_items.order_item_unit', \Sylius\RefundPlugin\Converter\LineItem\OrderItemUnitLineItemsConverter::class)
+ ->args([
+ service('sylius.repository.order_item_unit'),
+ service('sylius_refund.provider.tax_rate'),
+ service('sylius_refund.factory.line_item'),
+ ])
+ ->tag('sylius_refund.line_item_converter');
+
+ $services->set('sylius_refund.converter.line_items.shipment', \Sylius\RefundPlugin\Converter\LineItem\ShipmentLineItemsConverter::class)
+ ->args([
+ service('sylius.repository.adjustment'),
+ service('sylius_refund.provider.tax_rate'),
+ service('sylius_refund.factory.line_item'),
+ ])
+ ->tag('sylius_refund.line_item_converter');
+
+ $services->set('sylius_refund.converter.refund_units', \Sylius\RefundPlugin\Converter\RefundUnitsConverter::class)
+ ->args([service('sylius_refund.calculator.unit_refund_total')]);
+
+ $services->alias(\Sylius\RefundPlugin\Converter\RefundUnitsConverterInterface::class, 'sylius_refund.converter.refund_units');
+};
diff --git a/config/services/converters.xml b/config/services/converters.xml
deleted file mode 100644
index 5be09f48c..000000000
--- a/config/services/converters.xml
+++ /dev/null
@@ -1,69 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/config/services/creators.php b/config/services/creators.php
new file mode 100644
index 000000000..8266931cd
--- /dev/null
+++ b/config/services/creators.php
@@ -0,0 +1,23 @@
+services();
+ $parameters = $container->parameters();
+
+ $services->set('sylius_refund.creator.refund', \Sylius\RefundPlugin\Creator\RefundCreator::class)
+ ->args([
+ service('sylius_refund.factory.refund'),
+ service('sylius_refund.provider.remaining_total'),
+ service('sylius.repository.order'),
+ service('sylius_refund.manager.refund'),
+ ]);
+
+ $services->alias(\Sylius\RefundPlugin\Creator\RefundCreatorInterface::class, 'sylius_refund.creator.refund');
+
+ $services->set('sylius_refund.creator.request_command', \Sylius\RefundPlugin\Creator\RefundUnitsCommandCreator::class)
+ ->args([service('sylius_refund.converter.request_to_refund_units')]);
+
+ $services->alias(\Sylius\RefundPlugin\Creator\RequestCommandCreatorInterface::class, 'sylius_refund.creator.request_command');
+};
diff --git a/config/services/creators.xml b/config/services/creators.xml
deleted file mode 100644
index b325320bb..000000000
--- a/config/services/creators.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/config/services/event_bus.php b/config/services/event_bus.php
new file mode 100644
index 000000000..c176ee219
--- /dev/null
+++ b/config/services/event_bus.php
@@ -0,0 +1,41 @@
+services();
+ $parameters = $container->parameters();
+
+ $services->set('sylius_refund.listener.credit_memo_generated', \Sylius\RefundPlugin\Listener\CreditMemoGeneratedEventListener::class)
+ ->public()
+ ->args([service('sylius.command_bus')])
+ ->tag('messenger.message_handler', ['bus' => 'sylius.event_bus']);
+
+ $services->set('sylius_refund.listener.unit_refunded', \Sylius\RefundPlugin\Listener\UnitRefundedEventListener::class)
+ ->public()
+ ->args([service('sylius_refund.state_resolver.order_partially_refunded')])
+ ->tag('messenger.message_handler', ['bus' => 'sylius.event_bus']);
+
+ $services->set('sylius_refund.process_manager.units_refunded', \Sylius\RefundPlugin\ProcessManager\UnitsRefundedProcessManager::class)
+ ->public()
+ ->args([tagged_iterator('sylius_refund.units_refunded.process_step')])
+ ->tag('messenger.message_handler', ['bus' => 'sylius.event_bus']);
+
+ $services->alias(\Sylius\RefundPlugin\ProcessManager\UnitsRefundedProcessManagerInterface::class, 'sylius_refund.process_manager.units_refunded');
+
+ $services->set('sylius_refund.process_manager.refund_payment', \Sylius\RefundPlugin\ProcessManager\RefundPaymentProcessManager::class)
+ ->args([
+ service('sylius_refund.state_resolver.order_fully_refunded'),
+ service('sylius_refund.provider.related_payment_id'),
+ service('sylius_refund.factory.refund_payment'),
+ service('sylius.repository.order'),
+ service('sylius.repository.payment_method'),
+ service('doctrine.orm.default_entity_manager'),
+ service('sylius.event_bus'),
+ ])
+ ->tag('sylius_refund.units_refunded.process_step', ['priority' => 50]);
+
+ $services->set('sylius_refund.process_manager.credit_memo', \Sylius\RefundPlugin\ProcessManager\CreditMemoProcessManager::class)
+ ->args([service('sylius.command_bus')])
+ ->tag('sylius_refund.units_refunded.process_step', ['priority' => 100]);
+};
diff --git a/config/services/event_bus.xml b/config/services/event_bus.xml
deleted file mode 100644
index f6aa78590..000000000
--- a/config/services/event_bus.xml
+++ /dev/null
@@ -1,56 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/config/services/factories.php b/config/services/factories.php
new file mode 100644
index 000000000..bc9c95d30
--- /dev/null
+++ b/config/services/factories.php
@@ -0,0 +1,39 @@
+services();
+ $parameters = $container->parameters();
+
+ $services->set('sylius_refund.factory.credit_memo_sequence', \Sylius\RefundPlugin\Factory\CreditMemoSequenceFactory::class);
+
+ $services->alias(\Sylius\RefundPlugin\Factory\CreditMemoSequenceFactoryInterface::class, 'sylius_refund.factory.credit_memo_sequence');
+
+ $services->set('sylius_refund.factory.refund_type', \Sylius\RefundPlugin\Factory\RefundTypeFactory::class)
+ ->args(['%sylius_refund.refund_type%']);
+
+ $services->alias(\Sylius\RefundPlugin\Factory\RefundTypeFactoryInterface::class, 'sylius_refund.factory.refund_type');
+
+ $services->set('sylius_refund.factory.line_item', \Sylius\RefundPlugin\Factory\LineItemFactory::class)
+ ->args(['%sylius_refund.model.line_item.class%']);
+
+ $services->alias(\Sylius\RefundPlugin\Factory\LineItemFactoryInterface::class, 'sylius_refund.factory.line_item');
+
+ $services->set('sylius_refund.custom_factory.credit_memo', \Sylius\RefundPlugin\Factory\CreditMemoFactory::class)
+ ->decorate('sylius_refund.factory.credit_memo', null, 256)
+ ->args([
+ service('.inner'),
+ service('sylius_refund.generator.credit_memo_identifier'),
+ service('sylius_refund.generator.credit_memo_number'),
+ service(\Sylius\RefundPlugin\Provider\CurrentDateTimeImmutableProviderInterface::class),
+ ]);
+
+ $services->set('sylius_refund.custom_factory.shop_billing_data', \Sylius\RefundPlugin\Factory\ShopBillingDataFactory::class)
+ ->decorate('sylius_refund.factory.shop_billing_data', null, 256)
+ ->args([service('.inner')]);
+
+ $services->set('sylius_refund.custom_factory.customer_billing_data', \Sylius\RefundPlugin\Factory\CustomerBillingDataFactory::class)
+ ->decorate('sylius_refund.factory.customer_billing_data', null, 256)
+ ->args([service('.inner')]);
+};
diff --git a/config/services/factories.xml b/config/services/factories.xml
deleted file mode 100644
index aba719e7e..000000000
--- a/config/services/factories.xml
+++ /dev/null
@@ -1,63 +0,0 @@
-
-
-
-
-
-
-
-
-
-
- %sylius_refund.refund_type%
-
-
-
-
- %sylius_refund.model.line_item.class%
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/config/services/filters.php b/config/services/filters.php
new file mode 100644
index 000000000..26aedf5c2
--- /dev/null
+++ b/config/services/filters.php
@@ -0,0 +1,12 @@
+services();
+ $parameters = $container->parameters();
+
+ $services->set('sylius_refund.filter.unit_refund', \Sylius\RefundPlugin\Filter\UnitRefundFilter::class);
+
+ $services->alias(\Sylius\RefundPlugin\Filter\UnitRefundFilterInterface::class, 'sylius_refund.filter.unit_refund');
+};
diff --git a/config/services/filters.xml b/config/services/filters.xml
deleted file mode 100644
index ee832b969..000000000
--- a/config/services/filters.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-
-
-
-
-
-
-
-
-
-
diff --git a/config/services/generators.php b/config/services/generators.php
new file mode 100644
index 000000000..a2bdb821e
--- /dev/null
+++ b/config/services/generators.php
@@ -0,0 +1,70 @@
+services();
+ $parameters = $container->parameters();
+
+ $services->set('sylius_refund.generator.credit_memo_number', \Sylius\RefundPlugin\Generator\SequentialCreditMemoNumberGenerator::class)
+ ->args([
+ service('sylius_refund.repository.credit_memo_sequence'),
+ service('sylius_refund.factory.credit_memo_sequence'),
+ service('doctrine.orm.entity_manager'),
+ ]);
+
+ $services->alias(\Sylius\RefundPlugin\Generator\CreditMemoNumberGeneratorInterface::class, 'sylius_refund.generator.credit_memo_number');
+
+ $services->set('sylius_refund.generator.credit_memo', \Sylius\RefundPlugin\Generator\CreditMemoGenerator::class)
+ ->args([
+ service('sylius_refund.converter.line_items'),
+ service('sylius_refund.generator.tax_items'),
+ service('sylius_refund.factory.credit_memo'),
+ service('sylius_refund.factory.customer_billing_data'),
+ service('sylius_refund.factory.shop_billing_data'),
+ ]);
+
+ $services->alias(\Sylius\RefundPlugin\Generator\CreditMemoGeneratorInterface::class, 'sylius_refund.generator.credit_memo');
+
+ $services->set('sylius_refund.generator.credit_memo_file_name', \Sylius\RefundPlugin\Generator\CreditMemoFileNameGenerator::class);
+
+ $services->alias(\Sylius\RefundPlugin\Generator\CreditMemoFileNameGeneratorInterface::class, 'sylius_refund.generator.credit_memo_file_name');
+
+ $services->set('sylius_refund.generator.credit_memo_pdf_file', \Sylius\RefundPlugin\Generator\CreditMemoPdfFileGenerator::class)
+ ->args([
+ service('sylius_refund.repository.credit_memo'),
+ service('file_locator'),
+ '@SyliusRefundPlugin/download/credit_memo.html.twig',
+ '%sylius_refund.template.logo_file%',
+ service('sylius_refund.generator.twig_to_pdf'),
+ service('sylius_refund.generator.credit_memo_file_name'),
+ ]);
+
+ $services->alias(\Sylius\RefundPlugin\Generator\CreditMemoPdfFileGeneratorInterface::class, 'sylius_refund.generator.credit_memo_pdf_file');
+
+ $services->set('sylius_refund.generator.tax_items', \Sylius\RefundPlugin\Generator\TaxItemsGenerator::class);
+
+ $services->alias(\Sylius\RefundPlugin\Generator\TaxItemsGeneratorInterface::class, 'sylius_refund.generator.tax_items');
+
+ $services->set('sylius_refund.generator.credit_memo_identifier', \Sylius\RefundPlugin\Generator\UuidCreditMemoIdentifierGenerator::class);
+
+ $services->alias(\Sylius\RefundPlugin\Generator\CreditMemoIdentifierGeneratorInterface::class, 'sylius_refund.generator.credit_memo_identifier');
+
+ $services->set('sylius_refund.generator.pdf_options', \Sylius\RefundPlugin\Generator\PdfOptionsGenerator::class)
+ ->args([
+ service('file_locator'),
+ '%knp_snappy.pdf.options%',
+ '%sylius_refund.pdf_generator.allowed_files%',
+ ]);
+
+ $services->alias(\Sylius\RefundPlugin\Generator\PdfOptionsGeneratorInterface::class, 'sylius_refund.generator.pdf_options');
+
+ $services->set('sylius_refund.generator.twig_to_pdf', \Sylius\RefundPlugin\Generator\TwigToPdfGenerator::class)
+ ->args([
+ service('twig'),
+ service('knp_snappy.pdf'),
+ service('sylius_refund.generator.pdf_options'),
+ ]);
+
+ $services->alias(\Sylius\RefundPlugin\Generator\TwigToPdfGeneratorInterface::class, 'sylius_refund.generator.twig_to_pdf');
+};
diff --git a/config/services/generators.xml b/config/services/generators.xml
deleted file mode 100644
index 9755038f0..000000000
--- a/config/services/generators.xml
+++ /dev/null
@@ -1,72 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- @SyliusRefundPlugin/download/credit_memo.html.twig
- %sylius_refund.template.logo_file%
-
-
-
-
-
-
-
-
-
-
-
-
-
- %knp_snappy.pdf.options%
- %sylius_refund.pdf_generator.allowed_files%
-
-
-
-
-
-
-
-
-
-
-
diff --git a/config/services/listeners.php b/config/services/listeners.php
new file mode 100644
index 000000000..7dde333cd
--- /dev/null
+++ b/config/services/listeners.php
@@ -0,0 +1,14 @@
+services();
+ $parameters = $container->parameters();
+
+ $services->defaults()
+ ->public();
+
+ $services->set('sylius_refund.listener.admin_main_menu', \Sylius\RefundPlugin\Menu\AdminMainMenuListener::class)
+ ->tag('kernel.event_listener', ['event' => 'sylius.menu.admin.main', 'method' => 'addCreditMemosSection']);
+};
diff --git a/config/services/listeners.xml b/config/services/listeners.xml
deleted file mode 100644
index 2b220e0f3..000000000
--- a/config/services/listeners.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/config/services/providers.php b/config/services/providers.php
new file mode 100644
index 000000000..56dc808d0
--- /dev/null
+++ b/config/services/providers.php
@@ -0,0 +1,71 @@
+services();
+ $parameters = $container->parameters();
+ $parameters->set('sylius_refund.supported_gateways', ['offline']);
+
+ $services->set('sylius_refund.provider.credit_memo_file', \Sylius\RefundPlugin\Provider\CreditMemoFileProvider::class)
+ ->args([
+ service('sylius_refund.generator.credit_memo_file_name'),
+ service('sylius_refund.manager.credit_memo_file'),
+ ]);
+
+ $services->alias(\Sylius\RefundPlugin\Provider\CreditMemoFileProviderInterface::class, 'sylius_refund.provider.credit_memo_file');
+
+ $services->set('sylius_refund.provider.refunded_shipment_fee', \Sylius\RefundPlugin\Provider\RefundedShipmentFeeProvider::class)
+ ->args([service('sylius.repository.adjustment')]);
+
+ $services->alias(\Sylius\RefundPlugin\Provider\RefundedShipmentFeeProviderInterface::class, 'sylius_refund.provider.refunded_shipment_fee');
+
+ $services->set('sylius_refund.provider.order_refunded_total', \Sylius\RefundPlugin\Provider\OrderRefundedTotalProvider::class)
+ ->args([
+ service('sylius_refund.repository.refund'),
+ service('sylius.repository.order_item_unit'),
+ ]);
+
+ $services->alias(\Sylius\RefundPlugin\Provider\OrderRefundedTotalProviderInterface::class, 'sylius_refund.provider.order_refunded_total');
+
+ $services->set('sylius_refund.provider.current_date_time_immutable', \Sylius\RefundPlugin\Provider\CurrentDateTimeImmutableProvider::class);
+
+ $services->alias(\Sylius\RefundPlugin\Provider\CurrentDateTimeImmutableProviderInterface::class, 'sylius_refund.provider.current_date_time_immutable');
+
+ $services->set('sylius_refund.provider.order_item_unit_total', \Sylius\RefundPlugin\Provider\OrderItemUnitTotalProvider::class)
+ ->args([service('sylius.repository.order_item_unit')])
+ ->tag('sylius_refund.refund_unit_total_provider');
+
+ $services->set('sylius_refund.provider.shipment_total', \Sylius\RefundPlugin\Provider\ShipmentTotalProvider::class)
+ ->args([service('sylius.repository.adjustment')])
+ ->tag('sylius_refund.refund_unit_total_provider');
+
+ $services->set('sylius_refund.provider.remaining_total', \Sylius\RefundPlugin\Provider\RemainingTotalProvider::class)
+ ->args([
+ tagged_locator('sylius_refund.refund_unit_total_provider', indexAttribute: 'refund_type', defaultIndexMethod: 'refundType'),
+ service('sylius_refund.repository.refund'),
+ ]);
+
+ $services->alias(\Sylius\RefundPlugin\Provider\RemainingTotalProviderInterface::class, 'sylius_refund.provider.remaining_total');
+
+ $services->set('sylius_refund.provider.unit_refunded_total', \Sylius\RefundPlugin\Provider\UnitRefundedTotalProvider::class)
+ ->args([service('sylius_refund.repository.refund')]);
+
+ $services->alias(\Sylius\RefundPlugin\Provider\UnitRefundedTotalProviderInterface::class, 'sylius_refund.provider.unit_refunded_total');
+
+ $services->set('sylius_refund.provider.related_payment_id', \Sylius\RefundPlugin\Provider\DefaultRelatedPaymentIdProvider::class);
+
+ $services->alias(\Sylius\RefundPlugin\Provider\RelatedPaymentIdProviderInterface::class, 'sylius_refund.provider.related_payment_id');
+
+ $services->set('sylius_refund.provider.refund_payment_methods', \Sylius\RefundPlugin\Provider\SupportedRefundPaymentMethodsProvider::class)
+ ->args([
+ service('sylius.repository.payment_method'),
+ '%sylius_refund.supported_gateways%',
+ ]);
+
+ $services->alias(\Sylius\RefundPlugin\Provider\RefundPaymentMethodsProviderInterface::class, 'sylius_refund.provider.refund_payment_methods');
+
+ $services->set('sylius_refund.provider.tax_rate', \Sylius\RefundPlugin\Provider\TaxRateProvider::class);
+
+ $services->alias(\Sylius\RefundPlugin\Provider\TaxRateProviderInterface::class, 'sylius_refund.provider.tax_rate');
+};
diff --git a/config/services/providers.xml b/config/services/providers.xml
deleted file mode 100644
index ac0d194d3..000000000
--- a/config/services/providers.xml
+++ /dev/null
@@ -1,88 +0,0 @@
-
-
-
-
-
-
-
- offline
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- %sylius_refund.supported_gateways%
-
-
-
-
-
-
-
diff --git a/config/services/queries.php b/config/services/queries.php
new file mode 100644
index 000000000..7a361283c
--- /dev/null
+++ b/config/services/queries.php
@@ -0,0 +1,14 @@
+services();
+ $parameters = $container->parameters();
+
+ $services->set('sylius_refund.doctrine.orm.query.count_order_item_unit_refunds_belonging_to_order', \Sylius\RefundPlugin\Doctrine\ORM\CountOrderItemUnitRefundsBelongingToOrderQuery::class)
+ ->args([service('sylius.repository.order_item_unit')]);
+
+ $services->set('sylius_refund.doctrine.orm.query.count_shipment_refunds_belonging_to_order', \Sylius\RefundPlugin\Doctrine\ORM\CountShipmentRefundsBelongingToOrderQuery::class)
+ ->args([service('sylius.repository.adjustment')]);
+};
diff --git a/config/services/queries.xml b/config/services/queries.xml
deleted file mode 100644
index 1377e7538..000000000
--- a/config/services/queries.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/config/services/resolvers.php b/config/services/resolvers.php
new file mode 100644
index 000000000..cf516e4a6
--- /dev/null
+++ b/config/services/resolvers.php
@@ -0,0 +1,23 @@
+services();
+ $parameters = $container->parameters();
+
+ $services->set('sylius_refund.resolver.credit_memo_file', \Sylius\RefundPlugin\Resolver\CreditMemoFileResolver::class)
+ ->args([
+ service('sylius_refund.repository.credit_memo'),
+ service('sylius_refund.provider.credit_memo_file'),
+ service('sylius_refund.generator.credit_memo_pdf_file'),
+ service('sylius_refund.manager.credit_memo_file'),
+ ]);
+
+ $services->alias(\Sylius\RefundPlugin\Resolver\CreditMemoFileResolverInterface::class, 'sylius_refund.resolver.credit_memo_file');
+
+ $services->set('sylius_refund.resolver.credit_memo_file_path', \Sylius\RefundPlugin\Resolver\CreditMemoFilePathResolver::class)
+ ->args(['%sylius_refund.credit_memo_save_path%']);
+
+ $services->alias(\Sylius\RefundPlugin\Resolver\CreditMemoFilePathResolverInterface::class, 'sylius_refund.resolver.credit_memo_file_path');
+};
diff --git a/config/services/resolvers.xml b/config/services/resolvers.xml
deleted file mode 100644
index 1296a5da2..000000000
--- a/config/services/resolvers.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- %sylius_refund.credit_memo_save_path%
-
-
-
-
diff --git a/config/services/state_resolvers.php b/config/services/state_resolvers.php
new file mode 100644
index 000000000..00979fe25
--- /dev/null
+++ b/config/services/state_resolvers.php
@@ -0,0 +1,35 @@
+services();
+ $parameters = $container->parameters();
+
+ $services->set('sylius_refund.state_resolver.order_fully_refunded', \Sylius\RefundPlugin\StateResolver\OrderFullyRefundedStateResolver::class)
+ ->args([
+ service('sylius_abstraction.state_machine'),
+ service('sylius.manager.order'),
+ service('sylius_refund.checker.order_fully_refunded_total'),
+ service('sylius.repository.order'),
+ ]);
+
+ $services->alias(\Sylius\RefundPlugin\StateResolver\OrderFullyRefundedStateResolverInterface::class, 'sylius_refund.state_resolver.order_fully_refunded');
+
+ $services->set('sylius_refund.state_resolver.order_partially_refunded', \Sylius\RefundPlugin\StateResolver\OrderPartiallyRefundedStateResolver::class)
+ ->args([
+ service('sylius.repository.order'),
+ service('sylius_abstraction.state_machine'),
+ service('sylius.manager.order'),
+ ]);
+
+ $services->alias(\Sylius\RefundPlugin\StateResolver\OrderPartiallyRefundedStateResolverInterface::class, 'sylius_refund.state_resolver.order_partially_refunded');
+
+ $services->set('sylius_refund.state_resolver.refund_payment_completed_applier', \Sylius\RefundPlugin\StateResolver\RefundPaymentCompletedStateApplier::class)
+ ->args([
+ service('sylius_abstraction.state_machine'),
+ service('sylius_refund.manager.refund_payment'),
+ ]);
+
+ $services->alias(\Sylius\RefundPlugin\StateResolver\RefundPaymentCompletedStateApplierInterface::class, 'sylius_refund.state_resolver.refund_payment_completed_applier');
+};
diff --git a/config/services/state_resolvers.xml b/config/services/state_resolvers.xml
deleted file mode 100644
index a28186272..000000000
--- a/config/services/state_resolvers.xml
+++ /dev/null
@@ -1,41 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/config/services/twig_components.php b/config/services/twig_components.php
new file mode 100644
index 000000000..d2baf1b3e
--- /dev/null
+++ b/config/services/twig_components.php
@@ -0,0 +1,13 @@
+services();
+ $parameters = $container->parameters();
+
+ $services->set('sylius_refund.twig_component.customer_credit_memos', \Sylius\RefundPlugin\Twig\Component\OrderCreditMemosComponent::class)
+ ->args([service('sylius_refund.repository.credit_memo')])
+ ->tag('sylius.twig_component', ['key' => 'sylius_refund:shop:account:credit_memos'])
+ ->tag('sylius.twig_component', ['key' => 'sylius_refund:admin:credit_memos']);
+};
diff --git a/config/services/twig_components.xml b/config/services/twig_components.xml
deleted file mode 100644
index 2554c076b..000000000
--- a/config/services/twig_components.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/config/services/validators.php b/config/services/validators.php
new file mode 100644
index 000000000..4655755ab
--- /dev/null
+++ b/config/services/validators.php
@@ -0,0 +1,36 @@
+services();
+ $parameters = $container->parameters();
+
+ $services->set('sylius_refund.validator.refund_units_command', \Sylius\RefundPlugin\Validator\RefundUnitsCommandValidator::class)
+ ->args([
+ service('sylius_refund.checker.order_refunding_availability'),
+ service('sylius_refund.validator.refund_amount'),
+ tagged_iterator('sylius_refund.validator.unit_refunds_belonging_to_order'),
+ ]);
+
+ $services->alias(\Sylius\RefundPlugin\Validator\RefundUnitsCommandValidatorInterface::class, 'sylius_refund.validator.refund_units_command');
+
+ $services->set('sylius_refund.validator.order_item_unit_refunds_belonging_to_order', \Sylius\RefundPlugin\Validator\OrderItemUnitRefundsBelongingToOrderValidator::class)
+ ->args([
+ service('sylius_refund.filter.unit_refund'),
+ service('sylius_refund.doctrine.orm.query.count_order_item_unit_refunds_belonging_to_order'),
+ ])
+ ->tag('sylius_refund.validator.unit_refunds_belonging_to_order');
+
+ $services->set('sylius_refund.validator.shipment_refunds_belonging_to_order', \Sylius\RefundPlugin\Validator\ShipmentRefundsBelongingToOrderValidator::class)
+ ->args([
+ service('sylius_refund.filter.unit_refund'),
+ service('sylius_refund.doctrine.orm.query.count_shipment_refunds_belonging_to_order'),
+ ])
+ ->tag('sylius_refund.validator.unit_refunds_belonging_to_order');
+
+ $services->set('sylius_refund.validator.refund_amount', \Sylius\RefundPlugin\Validator\RefundAmountValidator::class)
+ ->args([service('sylius_refund.provider.remaining_total')]);
+
+ $services->alias(\Sylius\RefundPlugin\Validator\RefundAmountValidatorInterface::class, 'sylius_refund.validator.refund_amount');
+};
diff --git a/config/services/validators.xml b/config/services/validators.xml
deleted file mode 100644
index a4f146649..000000000
--- a/config/services/validators.xml
+++ /dev/null
@@ -1,44 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/DependencyInjection/SyliusRefundExtension.php b/src/DependencyInjection/SyliusRefundExtension.php
index 1752bdf83..9cf89d0e4 100644
--- a/src/DependencyInjection/SyliusRefundExtension.php
+++ b/src/DependencyInjection/SyliusRefundExtension.php
@@ -24,7 +24,7 @@
use Symfony\Component\Config\FileLocator;
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\DependencyInjection\Extension\PrependExtensionInterface;
-use Symfony\Component\DependencyInjection\Loader\XmlFileLoader;
+use Symfony\Component\DependencyInjection\Loader\PhpFileLoader;
final class SyliusRefundExtension extends AbstractResourceExtension implements PrependExtensionInterface
{
@@ -38,8 +38,8 @@ public function load(array $configs, ContainerBuilder $container): void
$configs = $this->processConfiguration($configuration, $configs);
- $loader = new XmlFileLoader($container, new FileLocator(__DIR__ . '/../../config'));
- $loader->load('services.xml');
+ $loader = new PhpFileLoader($container, new FileLocator(__DIR__ . '/../../config'));
+ $loader->load('services.php');
$this->tagsAutoconfiguration($container, [
'sylius_refund.units_refunded.process_step' => UnitsRefundedProcessStepInterface::class,
diff --git a/tests/Behat/Resources/services.php b/tests/Behat/Resources/services.php
new file mode 100644
index 000000000..e3b347406
--- /dev/null
+++ b/tests/Behat/Resources/services.php
@@ -0,0 +1,135 @@
+services();
+ $parameters = $container->parameters();
+ $parameters->set('sylius.behat.page.admin.order.show.class', \Tests\Sylius\RefundPlugin\Behat\Page\Admin\Order\ShowPage::class);
+ $parameters->set('sylius.behat.page.shop.order.show.class', \Tests\Sylius\RefundPlugin\Behat\Page\Shop\Order\ShowPage::class);
+
+ $services->defaults()
+ ->public();
+
+ $services->set(\Tests\Sylius\RefundPlugin\Behat\Page\Admin\OrderRefundsPage::class)
+ ->parent('sylius.behat.symfony_page');
+
+ $services->set(\Tests\Sylius\RefundPlugin\Behat\Page\Admin\CreditMemoDetailsPage::class)
+ ->parent('sylius.behat.symfony_page')
+ ->args([service('sylius.behat.table_accessor')]);
+
+ $services->set(\Tests\Sylius\RefundPlugin\Behat\Page\Admin\CreditMemoIndexPage::class)
+ ->parent('sylius.behat.page.admin.crud.index')
+ ->args(['sylius_refund_admin_credit_memo_index']);
+
+ $services->set(\FriendsOfBehat\PageObjectExtension\Element\Element::class)
+ ->private()
+ ->abstract()
+ ->args([
+ service('behat.mink.default_session'),
+ service('behat.mink.parameters'),
+ ]);
+
+ $services->set(\Tests\Sylius\RefundPlugin\Behat\Element\PdfDownloadElement::class)
+ ->private()
+ ->parent(\FriendsOfBehat\PageObjectExtension\Element\Element::class);
+
+ $services->set(\Tests\Sylius\RefundPlugin\Behat\Context\Application\RefundingContext::class)
+ ->args([
+ service('sylius.repository.order'),
+ service('sylius_refund.repository.refund'),
+ service('sylius_refund.provider.remaining_total'),
+ service('sylius.command_bus'),
+ service('sylius.behat.email_checker'),
+ ]);
+
+ $services->set(\Tests\Sylius\RefundPlugin\Behat\Context\Application\CreditMemoContext::class)
+ ->args([
+ service('sylius_refund.repository.credit_memo'),
+ service('sylius_refund.provider.current_date_time_immutable'),
+ '%sylius_refund.credit_memo_save_path%',
+ ]);
+
+ $services->set(\Tests\Sylius\RefundPlugin\Behat\Context\Ui\ManagingOrdersContext::class)
+ ->args([
+ service('sylius.behat.page.admin.order.show'),
+ service('sylius.behat.page.admin.order.index'),
+ service('sylius.behat.notification_checker.shop'),
+ ]);
+
+ $services->set(\Tests\Sylius\RefundPlugin\Behat\Context\Ui\RefundingContext::class)
+ ->args([
+ service(\Tests\Sylius\RefundPlugin\Behat\Page\Admin\OrderRefundsPage::class),
+ service('sylius.behat.notification_checker.admin'),
+ service('sylius.behat.email_checker'),
+ ]);
+
+ $services->set(\Tests\Sylius\RefundPlugin\Behat\Context\Ui\CreditMemoContext::class)
+ ->args([
+ service('sylius.behat.page.admin.order.show'),
+ service(\Tests\Sylius\RefundPlugin\Behat\Page\Admin\CreditMemoIndexPage::class),
+ service(\Tests\Sylius\RefundPlugin\Behat\Page\Admin\CreditMemoDetailsPage::class),
+ service(\Tests\Sylius\RefundPlugin\Behat\Element\PdfDownloadElement::class),
+ service('sylius_refund.repository.credit_memo'),
+ service('sylius_refund.provider.current_date_time_immutable'),
+ ]);
+
+ $services->set(\Tests\Sylius\RefundPlugin\Behat\Context\Setup\RefundingContext::class)
+ ->args([
+ service('sylius.repository.order'),
+ service('sylius.command_bus'),
+ service(\Tests\Sylius\RefundPlugin\Behat\Services\Generator\FailedCreditMemoGenerator::class),
+ service(\Tests\Sylius\RefundPlugin\Behat\Services\Factory\FailedRefundPaymentFactory::class),
+ ]);
+
+ $services->set(\Tests\Sylius\RefundPlugin\Behat\Context\Setup\OrderContext::class)
+ ->args([
+ service('sylius.manager.order'),
+ service('sylius.behat.shared_storage'),
+ service('sylius_abstraction.state_machine'),
+ ]);
+
+ $services->set(\Tests\Sylius\RefundPlugin\Behat\Context\Setup\PaymentContext::class)
+ ->args([
+ service('sylius_abstraction.state_machine'),
+ service('sylius.behat.shared_storage'),
+ ]);
+
+ $services->set(\Tests\Sylius\RefundPlugin\Behat\Context\Transform\OrderContext::class)
+ ->args([service('sylius.repository.order')]);
+
+ $services->set(\Tests\Sylius\RefundPlugin\Behat\Context\Transform\PriceContext::class);
+
+ $services->set(\Tests\Sylius\RefundPlugin\Behat\Context\Ui\Shop\Customer\CreditMemoContext::class)
+ ->args([
+ service('sylius.behat.page.shop.order.show'),
+ service(\Tests\Sylius\RefundPlugin\Behat\Element\PdfDownloadElement::class),
+ ]);
+
+ $services->set(\Tests\Sylius\RefundPlugin\Behat\Context\Setup\ChannelContext::class)
+ ->args([
+ service('sylius.behat.shared_storage'),
+ service('sylius.behat.factory.default_united_states_channel'),
+ service('sylius.behat.factory.default_channel'),
+ service('sylius.manager.channel'),
+ ]);
+
+ $services->set(\Tests\Sylius\RefundPlugin\Behat\Context\Application\EmailsContext::class)
+ ->args([service('sylius.behat.email_checker')]);
+
+ $services->set(\Tests\Sylius\RefundPlugin\Behat\Context\Setup\ProductContext::class)
+ ->args([service('sylius.behat.context.setup.product')]);
+
+ $services->set(\Tests\Sylius\RefundPlugin\Behat\Context\Hook\CreditMemosContext::class)
+ ->args(['%sylius_refund.credit_memo_save_path%']);
+
+ $services->set(\Tests\Sylius\RefundPlugin\Behat\Services\Factory\FailedRefundPaymentFactory::class)
+ ->private()
+ ->decorate('sylius_refund.factory.refund_payment')
+ ->args([service('.inner')]);
+
+ $services->set(\Tests\Sylius\RefundPlugin\Behat\Services\Generator\FailedCreditMemoGenerator::class)
+ ->private()
+ ->decorate('sylius_refund.generator.credit_memo')
+ ->args([service('.inner')]);
+};
diff --git a/tests/Behat/Resources/services.xml b/tests/Behat/Resources/services.xml
deleted file mode 100644
index 579220efe..000000000
--- a/tests/Behat/Resources/services.xml
+++ /dev/null
@@ -1,129 +0,0 @@
-
-
-
-
- Tests\Sylius\RefundPlugin\Behat\Page\Admin\Order\ShowPage
- Tests\Sylius\RefundPlugin\Behat\Page\Shop\Order\ShowPage
-
-
-
-
-
-
-
-
-
-
- sylius_refund_admin_credit_memo_index
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- %sylius_refund.credit_memo_save_path%
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- %sylius_refund.credit_memo_save_path%
-
-
-
-
-
-
-
-
-
-
-
diff --git a/tests/TestApplication/config/config.yaml b/tests/TestApplication/config/config.yaml
index 18c891fe6..cd2d45697 100644
--- a/tests/TestApplication/config/config.yaml
+++ b/tests/TestApplication/config/config.yaml
@@ -5,3 +5,9 @@ imports:
twig:
paths:
'%kernel.project_dir%/../../../tests/TestApplication/templates': ~
+
+knp_snappy:
+ pdf:
+ enabled: true
+ binary: '%env(resolve:WKHTMLTOPDF_PATH)%'
+ options: []
diff --git a/tests/TestApplication/config/services_test.php b/tests/TestApplication/config/services_test.php
index 516df18fc..031158122 100644
--- a/tests/TestApplication/config/services_test.php
+++ b/tests/TestApplication/config/services_test.php
@@ -9,7 +9,7 @@
if (str_starts_with($env, 'test')) {
$container->import('../../../vendor/sylius/sylius/src/Sylius/Behat/Resources/config/services.xml');
- $container->import('@SyliusRefundPlugin/tests/Behat/Resources/services.xml');
+ $container->import('@SyliusRefundPlugin/tests/Behat/Resources/services.php');
}
if (filter_var($_ENV['TEST_SYLIUS_REFUND_PDF_GENERATION_DISABLED'], FILTER_VALIDATE_BOOLEAN)) {