-
From this version, the plugin now validates if an Order can transition to either
refundorpartially_refundbefore performing or rendering refund operations.- In the controller, both transitions (
refundandpartially_refund) are checked. If neither transition is allowed, a 403 Forbidden is thrown. - In the Twig template, the refund button is displayed only if at least one of the transitions is available.
- In the controller, both transitions (
-
The following constructor signatures have been changed:
Sylius\RefundPlugin\Checker\OrderRefundingAvailabilityChecker:public function __construct( private OrderRepositoryInterface $orderRepository, + private ?StateMachineInterface $stateMachine = null, )Sylius\RefundPlugin\Checker\OrderRefundsListAvailabilityChecker:public function __construct( private OrderRepositoryInterface $orderRepository, + private ?OrderRefundingAvailabilityCheckerInterface $orderRefundingAvailabilityChecker = null, )
-
Support for Sylius 2.0 has been added, it is now the recommended Sylius version to use with SyliusRefundPlugin.
-
Support for Sylius 1.X has been dropped, upgrade your application to Sylius 2.0.
-
The minimum supported version of PHP has been increased to 8.2.
-
The way of customizing resource definition has been changed.
- sylius_resource: + sylius_refund: resources: - sylius_refund.sample_resource: + sample_resource: ...
-
Doctrine migrations have been regenerated, meaning all previous migration files have been removed and their content is now in a single migration file. To apply the new migration and get rid of the old entries run migrations as usual:
bin/console doctrine:migrations:migrate --no-interaction
-
As the assets have been reorganized, you need to update the way you import them in your application. Add the following line to your
assets/admin/entrypoint.jsfile:import '../../vendor/sylius/refund-plugin/assets/entrypoint';
-
The structures of the directories have been updated to follow the current Symfony recommendations:
@SyliusRefundPlugin/Resources/assets->@SyliusRefundPlugin/assets@SyliusRefundPlugin/Resources/config->@SyliusRefundPlugin/config@SyliusRefundPlugin/Resources/translations->@SyliusRefundPlugin/translations@SyliusRefundPlugin/Resources/views->@SyliusRefundPlugin/templates
You need to adjust the import of configuration file in your end application:
imports: - - { resource: "@SyliusRefundPlugin/Resources/config/config.yml" } + - { resource: '@SyliusRefundPlugin/config/config.yaml' }
And the routes configuration paths:
sylius_refund: - resource: "@SyliusRefundPlugin/Resources/config/routing.yml" + resource: "@SyliusRefundPlugin/config/routes.yaml"
Adjust the paths to assets and templates if you are using them.
-
No need to overwrite templates:
Thanks to the use of Twig Hooks and the refactoring of templates, you no longer need to overwrite templates to use plugin features. -
The following routes have been removed:
sylius_refund_order_credit_memos_listsylius_refund_plugin_shop_order_credit_memos_partial
-
Aliases introduced in RefundPlugin 1.6 have now become the primary service IDs in RefundPlugin 2.0. The old service IDs have been removed, and all references must be updated accordingly:
Old ID New ID sylius_refund_plugin.repository.credit_memo_sequencesylius_refund.repository.credit_memo_sequenceSylius\RefundPlugin\Action\Admin\DownloadCreditMemoActionsylius_refund.controller.admin.download_credit_memoSylius\RefundPlugin\Action\Admin\OrderRefundsListActionsylius_refund.controller.admin.order_refunds_listSylius\RefundPlugin\Action\Admin\RefundUnitsActionsylius_refund.controller.admin.refund_unitsSylius\RefundPlugin\Action\Admin\SendCreditMemoActionsylius_refund.controller.admin.send_credit_memoSylius\RefundPlugin\Action\CompleteRefundPaymentActionsylius_refund.controller.complete_refund_paymentSylius\RefundPlugin\Action\Shop\DownloadCreditMemoActionsylius_refund.controller.shop.download_credit_memoSylius\RefundPlugin\Checker\OrderRefundingAvailabilityCheckersylius_refund.checker.order_refunding_availabilitySylius\RefundPlugin\Checker\OrderRefundsListAvailabilityCheckersylius_refund.checker.order_refunds_list_availabilitySylius\RefundPlugin\CommandHandler\GenerateCreditMemoHandlersylius_refund.command_handler.generate_credit_memoSylius\RefundPlugin\CommandHandler\RefundUnitsHandlersylius_refund.command_handler.refund_unitsSylius\RefundPlugin\CommandHandler\SendCreditMemoHandlersylius_refund.command_handler.send_credit_memoSylius\RefundPlugin\Converter\LineItem\OrderItemUnitLineItemsConvertersylius_refund.converter.line_items.order_item_unitSylius\RefundPlugin\Converter\LineItem\ShipmentLineItemsConvertersylius_refund.converter.line_items.shipmentSylius\RefundPlugin\Doctrine\ORM\CountOrderItemUnitRefundsBelongingToOrderQuerysylius_refund.doctrine.orm.query.count_order_item_unit_refunds_belonging_to_orderSylius\RefundPlugin\Doctrine\ORM\CountShipmentRefundsBelongingToOrderQuerysylius_refund.doctrine.orm.query.count_shipment_refunds_belonging_to_orderSylius\RefundPlugin\Factory\CreditMemoFactorysylius_refund.custom_factory.credit_memoSylius\RefundPlugin\Factory\CustomerBillingDataFactorysylius_refund.custom_factory.customer_billing_dataSylius\RefundPlugin\Factory\ShopBillingDataFactorysylius_refund.custom_factory.shop_billing_dataSylius\RefundPlugin\Listener\CreditMemoGeneratedEventListenersylius_refund.listener.credit_memo_generatedSylius\RefundPlugin\Listener\UnitRefundedEventListenersylius_refund.listener.unit_refundedSylius\RefundPlugin\Menu\AdminMainMenuListenersylius_refund.listener.admin_main_menuSylius\RefundPlugin\Menu\OrderShowMenuListenersylius_refund.listener.order_show_menuSylius\RefundPlugin\ProcessManager\CreditMemoProcessManagersylius_refund.process_manager.credit_memoSylius\RefundPlugin\ProcessManager\RefundPaymentProcessManagersylius_refund.process_manager.refund_paymentSylius\RefundPlugin\Provider\OrderItemUnitTotalProvidersylius_refund.provider.order_item_unit_totalSylius\RefundPlugin\Provider\ShipmentTotalProvidersylius_refund.provider.shipment_totalSylius\RefundPlugin\Refunder\OrderItemUnitsRefundersylius_refund.refunder.order_item_unitsSylius\RefundPlugin\Refunder\OrderShipmentsRefundersylius_refund.refunder.order_shipmentsSylius\RefundPlugin\Twig\OrderRefundsExtensionsylius_refund.twig.extension.order_refundsSylius\RefundPlugin\Validator\OrderItemUnitRefundsBelongingToOrderValidatorsylius_refund.validator.order_item_unit_refunds_belonging_to_orderSylius\RefundPlugin\Validator\ShipmentRefundsBelongingToOrderValidatorsylius_refund.validator.shipment_refunds_belonging_to_order -
The following services had new aliases added in RefundPlugin 1.6. In RefundPlugin 2.0, these aliases have become the primary service IDs, and the old service IDs remain as aliases:
Old ID New Id Sylius\RefundPlugin\Calculator\UnitRefundTotalCalculatorInterfacesylius_refund.calculator.unit_refund_totalSylius\RefundPlugin\Checker\CreditMemoCustomerRelationCheckerInterfacesylius_refund.checker.credit_memo_customer_relationSylius\RefundPlugin\Checker\OrderFullyRefundedTotalCheckerInterfacesylius_refund.checker.order_fully_refunded_totalSylius\RefundPlugin\Checker\UnitRefundingAvailabilityCheckerInterfacesylius_refund.checker.unit_refunding_availabilitySylius\RefundPlugin\Converter\LineItem\LineItemsConverterInterfacesylius_refund.converter.line_itemsSylius\RefundPlugin\Converter\RefundUnitsConverterInterfacesylius_refund.converter.refund_unitsSylius\RefundPlugin\Converter\Request\RequestToOrderItemUnitRefundConvertersylius_refund.converter.request_to_order_item_unit_refundSylius\RefundPlugin\Converter\Request\RequestToRefundUnitsConverterInterfacesylius_refund.converter.request_to_refund_unitsSylius\RefundPlugin\Converter\Request\RequestToShipmentRefundConvertersylius_refund.converter.request_to_shipment_refundSylius\RefundPlugin\Creator\RefundCreatorInterfacesylius_refund.creator.refundSylius\RefundPlugin\Creator\RequestCommandCreatorInterfacesylius_refund.creator.request_commandSylius\RefundPlugin\Factory\CreditMemoSequenceFactoryInterfacesylius_refund.factory.credit_memo_sequenceSylius\RefundPlugin\Factory\LineItemFactoryInterfacesylius_refund.factory.line_itemSylius\RefundPlugin\Factory\RefundTypeFactoryInterfacesylius_refund.factory.refund_typeSylius\RefundPlugin\Filter\UnitRefundFilterInterfacesylius_refund.filter.unit_refundSylius\RefundPlugin\Generator\CreditMemoFileNameGeneratorInterfacesylius_refund.generator.credit_memo_file_nameSylius\RefundPlugin\Generator\CreditMemoGeneratorInterfacesylius_refund.generator.credit_memoSylius\RefundPlugin\Generator\CreditMemoIdentifierGeneratorInterfacesylius_refund.generator.credit_memo_identifierSylius\RefundPlugin\Generator\CreditMemoNumberGeneratorInterfacesylius_refund.generator.credit_memo_numberSylius\RefundPlugin\Generator\CreditMemoPdfFileGeneratorInterfacesylius_refund.generator.credit_memo_pdf_fileSylius\RefundPlugin\Generator\PdfOptionsGeneratorInterfacesylius_refund.generator.pdf_optionsSylius\RefundPlugin\Generator\TaxItemsGeneratorInterfacesylius_refund.generator.tax_itemsSylius\RefundPlugin\Generator\TwigToPdfGeneratorInterfacesylius_refund.generator.twig_to_pdfSylius\RefundPlugin\Manager\CreditMemoFileManagerInterfacesylius_refund.manager.credit_memo_fileSylius\RefundPlugin\ProcessManager\UnitsRefundedProcessManagerInterfacesylius_refund.process_manager.units_refundedSylius\RefundPlugin\Provider\CreditMemoFileProviderInterfacesylius_refund.provider.credit_memo_fileSylius\RefundPlugin\Provider\CurrentDateTimeImmutableProviderInterfacesylius_refund.provider.current_date_time_immutableSylius\RefundPlugin\Provider\OrderRefundedTotalProviderInterfacesylius_refund.provider.order_refunded_totalSylius\RefundPlugin\Provider\RefundedShipmentFeeProviderInterfacesylius_refund.provider.refunded_shipment_feeSylius\RefundPlugin\Provider\RefundPaymentMethodsProviderInterfacesylius_refund.provider.refund_payment_methodsSylius\RefundPlugin\Provider\RelatedPaymentIdProviderInterfacesylius_refund.provider.related_payment_idSylius\RefundPlugin\Provider\RemainingTotalProviderInterfacesylius_refund.provider.remaining_totalSylius\RefundPlugin\Provider\TaxRateProviderInterfacesylius_refund.provider.tax_rateSylius\RefundPlugin\Resolver\CreditMemoFilePathResolverInterfacesylius_refund.resolver.credit_memo_file_pathSylius\RefundPlugin\Resolver\CreditMemoFileResolverInterfacesylius_refund.resolver.credit_memo_fileSylius\RefundPlugin\ResponseBuilder\CreditMemoFileResponseBuilderInterfacesylius_refund.response_builder.credit_memo_fileSylius\RefundPlugin\Sender\CreditMemoEmailSenderInterfacesylius_refund.email_sender.credit_memoSylius\RefundPlugin\StateResolver\OrderFullyRefundedStateResolverInterfacesylius_refund.state_resolver.order_fully_refundedSylius\RefundPlugin\StateResolver\OrderPartiallyRefundedStateResolverInterfacesylius_refund.state_resolver.order_partially_refundedSylius\RefundPlugin\StateResolver\RefundPaymentCompletedStateApplierInterfacesylius_refund.state_resolver.refund_payment_completed_applierSylius\RefundPlugin\Validator\RefundAmountValidatorInterfacesylius_refund.validator.refund_amountSylius\RefundPlugin\Validator\RefundUnitsCommandValidatorInterfacesylius_refund.validator.refund_units_command -
The following deprecated aliases have been removed, use the service IDs instead:
Old alias ID Service Id Sylius\RefundPlugin\Calculator\UnitRefundTotalCalculatorsylius_refund.calculator.unit_refund_totalSylius\RefundPlugin\Checker\CreditMemoCustomerRelationCheckersylius_refund.checker.credit_memo_customer_relationSylius\RefundPlugin\Checker\OrderFullyRefundedTotalCheckersylius_refund.checker.order_fully_refunded_totalSylius\RefundPlugin\Checker\OrderRefundingAvailabilityCheckersylius_refund.checker.order_refunding_availabilitySylius\RefundPlugin\Checker\UnitRefundingAvailabilityCheckersylius_refund.checker.unit_refunding_availabilitySylius\RefundPlugin\Converter\OrderItemUnitLineItemsConvertersylius_refund.converter.line_items.order_item_unitSylius\RefundPlugin\Converter\ShipmentLineItemsConvertersylius_refund.converter.line_items.shipmentSylius\RefundPlugin\Creator\RefundCreatorsylius_refund.creator.refundSylius\RefundPlugin\Creator\RefundUnitsCommandCreatorsylius_refund.creator.request_commandSylius\RefundPlugin\Factory\CreditMemoSequenceFactorysylius_refund.factory.credit_memo_sequenceSylius\RefundPlugin\Generator\CreditMemoGeneratorsylius_refund.generator.credit_memoSylius\RefundPlugin\Generator\CreditMemoPdfFileGeneratorsylius_refund.generator.credit_memo_pdf_fileSylius\RefundPlugin\Generator\SequentialCreditMemoNumberGeneratorsylius_refund.generator.credit_memo_numberSylius\RefundPlugin\Generator\UuidCreditMemoIdentifierGeneratorsylius_refund.generator.credit_memo_identifierSylius\RefundPlugin\Provider\OrderRefundedTotalProvidersylius_refund.provider.order_refunded_totalSylius\RefundPlugin\Provider\RefundedShipmentFeeProvidersylius_refund.provider.refunded_shipment_feeSylius\RefundPlugin\Provider\RemainingTotalProvidersylius_refund.provider.remaining_totalSylius\RefundPlugin\Provider\UnitRefundedTotalProvidersylius_refund.provider.unit_refunded_totalSylius\RefundPlugin\ResponseBuilder\CreditMemoFileResponseBuildersylius_refund.response_builder.credit_memo_fileSylius\RefundPlugin\Sender\CreditMemoEmailSendersylius_refund.email_sender.credit_memoSylius\RefundPlugin\StateResolver\OrderFullyRefundedStateResolversylius_refund.state_resolver.order_fully_refundedSylius\RefundPlugin\StateResolver\OrderPartiallyRefundedStateResolversylius_refund.state_resolver.order_partially_refundedSylius\RefundPlugin\StateResolver\RefundPaymentCompletedStateAppliersylius_refund.state_resolver.refund_payment_completedSylius\RefundPlugin\Validator\RefundAmountValidatorsylius_refund.validator.refund_amountSylius\RefundPlugin\Validator\RefundUnitsCommandValidatorsylius_refund.validator.refund_units_command -
The following parameters have been renamed:
Old parameter New parameter default_logo_filesylius_refund.default_logo_filesylius.refund.template.logo_filesylius_refund.template.logo_file -
The following configuration parameters have been renamed:
- sylius_refund_plugin: + sylius_refund: pdf_generator: ...
-
The buses
sylius_refund_plugin.command_busandsylius_refund_plugin.event_bushave been replaced accordingly bysylius.command_busandsylius.event_bus. -
The visibility of services has been changed to
privateby default. This change enhances the performance and maintainability of the application and also follows Symfony's best practices for service encapsulation.Exceptions:
- Services required by Symfony to be
public(e.g., controllers, event listeners) remain public.
- Services required by Symfony to be
-
_javascript.html.twigfile has been removed, and its code has been moved tosrc/Resources/assets/js/refund-button.js. When upgrading to 2.0, import thesrc/Resources/assets/entrypoint.jsfile into your application’s main js file.-
The following constructor signatures have been changed:
-
Sylius\RefundPlugin\Action\Admin\OrderRefundsListAction:public function __construct( - private readonly SessionInterface | RequestStack $requestStackOrSession, + private RequestStack $requestStack, private OrderRepositoryInterface $orderRepository, private OrderRefundingAvailabilityCheckerInterface $orderRefundsListAvailabilityChecker, private RefundPaymentMethodsProviderInterface $refundPaymentMethodsProvider, private Environment $twig, private UrlGeneratorInterface $router, ) { }
-
Sylius\RefundPlugin\Action\Admin\RefundUnitsAction:public function __construct( - private readonly SessionInterface|RequestStack $requestStackOrSession, - private readonly RequestCommandCreatorInterface|RefundUnitsCommandCreatorInterface $commandCreator, + private RequestStack $requestStack, + private RequestCommandCreatorInterface $commandCreator, private MessageBusInterface $commandBus, private UrlGeneratorInterface $router, private LoggerInterface $logger, private CsrfTokenManagerInterface $csrfTokenManager, ) { }
-
Sylius\RefundPlugin\Action\Admin\SendCreditMemoAction:public function __construct( - private readonly SessionInterface | RequestStack $requestStackOrSession, + private RequestStack $requestStack, private MessageBusInterface $commandBus, private RepositoryInterface $creditMemoRepository, private UrlGeneratorInterface $router, ) { }
-
Sylius\RefundPlugin\CommandHandler\GenerateCreditMemoHandler:public function __construct( - private readonly ObjectManager $creditMemoManager, - private readonly ?CreditMemoFileResolverInterface $creditMemoFileResolver = null, + private EntityManagerInterface $creditMemoManager, + private CreditMemoFileResolverInterface $creditMemoFileResolver, private CreditMemoIdentifierGeneratorInterface $identifierGenerator, private CreditMemoNumberGeneratorInterface $numberGenerator, private CreditMemoPdfFileGeneratorInterface $pdfFileGenerator, ) { }
-
Sylius\RefundPlugin\CommandHandler\RefundUnitsHandler:public function __construct( - private ObjectManager $entityManager, + private EntityManagerInterface $entityManager, private RefundCreatorInterface $refundCreator, private RemainingTotalProviderInterface $remainingTotalProvider, ) { }
-
Sylius\RefundPlugin\Converter\LineItem\OrderItemUnitLineItemsConverter:public function __construct( private RepositoryInterface $orderItemUnitRepository, private TaxRateProviderInterface $taxRateProvider, - private readonly ?LineItemFactoryInterface $lineItemFactory = null, + private LineItemFactoryInterface $lineItemFactory, ) { } -
Sylius\RefundPlugin\Converter\LineItem\ShipmentLineItemsConverter:public function __construct( private RepositoryInterface $adjustmentRepository, private TaxRateProviderInterface $taxRateProvider, - private readonly ?LineItemFactoryInterface $lineItemFactory = null, + private LineItemFactoryInterface $lineItemFactory, ) { } -
Sylius\RefundPlugin\Creator\RefundCreator:public function __construct( private RefundFactoryInterface $refundFactory, private RemainingTotalProviderInterface $remainingTotalProvider, private OrderRepositoryInterface $orderRepository, - private ObjectManager $refundManager, + private EntityManagerInterface $refundManager, ) { } -
Sylius\RefundPlugin\Creator\RefundUnitsCommandCreator:public function __construct( - private RequestToRefundUnitsConverterInterface|RefundUnitsConverterInterface $requestToRefundUnitsConverter, + private RequestToRefundUnitsConverterInterface $requestToRefundUnitsConverter, ) { }
-
Sylius\RefundPlugin\Generator\CreditMemoGenerator:public function __construct( - private LineItemsConverterInterface|LegacyLineItemsConverterInterface $lineItemsConverter, + private LineItemsConverterInterface $lineItemsConverter, private TaxItemsGeneratorInterface|LineItemsConverterInterface $taxItemsGenerator, private CreditMemoFactoryInterface|TaxItemsGeneratorInterface $creditMemoFactory, private CustomerBillingDataFactoryInterface|CreditMemoFactoryInterface $customerBillingDataFactory, private ShopBillingDataFactoryInterface|CustomerBillingDataFactoryInterface $shopBillingDataFactory, ) { }
-
Sylius\RefundPlugin\Provider\RemainingTotalProvider:public function __construct( - private ServiceProviderInterface|RepositoryInterface $refundUnitTotalProvider, + private ServiceProviderInterface $refundUnitTotalProvider, private RepositoryInterface $refundRepository, ) { }
-
Sylius\RefundPlugin\Refunder\OrderItemUnitsRefunder:public function __construct( private RefundCreatorInterface $refundCreator, private MessageBusInterface $eventBus, - private ?UnitRefundFilterInterface $unitRefundFilter = null, + private UnitRefundFilterInterface $unitRefundFilter, ) { } -
Sylius\RefundPlugin\Refunder\OrderShipmentsRefunder:public function __construct( private RefundCreatorInterface $refundCreator, private MessageBusInterface $eventBus, - private ?UnitRefundFilterInterface $unitRefundFilter = null, + private UnitRefundFilterInterface $unitRefundFilter, ) { } -
Sylius\RefundPlugin\Sender\CreditMemoEmailSender:public function __construct( - private readonly ?CreditMemoPdfFileGeneratorInterface $creditMemoPdfFileGenerator, - private readonly ?FileManagerInterface $fileManager, - private readonly ?CreditMemoFileResolverInterface $creditMemoFileResolver = null, - private readonly ?CreditMemoFilePathResolverInterface $creditMemoFilePathResolver = null, + private CreditMemoFileResolverInterface $creditMemoFileResolver, + private CreditMemoFilePathResolverInterface $creditMemoFilePathResolver, ) { }
-
Sylius\RefundPlugin\Validator\RefundUnitsCommandValidator:public function __construct( private OrderRefundingAvailabilityCheckerInterface $orderRefundingAvailabilityChecker, private RefundAmountValidatorInterface $refundAmountValidator, - private ?iterable $refundUnitsBelongingToOrderValidators = null, + private iterable $refundUnitsBelongingToOrderValidators, ) { }
-
-
-
-
The following deprecated classes and interfaces have been removed in 2.0:
- Sylius\RefundPlugin\Converter\LineItemsConverterInterface
- Sylius\RefundPlugin\Converter\OrderItemUnitLineItemsConverter
- Sylius\RefundPlugin\Converter\RequestToOrderItemUnitRefundConverter
- Sylius\RefundPlugin\Converter\RequestToRefundUnitsConverterInterface
- Sylius\RefundPlugin\Converter\RequestToShipmentRefundConverter
- Sylius\RefundPlugin\Converter\ShipmentLineItemsConverter
- Sylius\RefundPlugin\Creator\RefundUnitsCommandCreatorInterface
- Sylius\RefundPlugin\File\FileManagerInterface
- Sylius\RefundPlugin\File\TemporaryFileManager
- Sylius\RefundPlugin\Menu\OrderShowMenuListener