<?xml version="1.0" encoding="UTF-8"?>
<!--
  ~ Copyright Magmodules.eu. All rights reserved.
  ~ See COPYING.txt for license details.
  -->

<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Event/etc/events.xsd">
    <event name="admin_system_config_changed_section_mollie_payment_methods">
        <observer name="custom_admin_system_config_changed_section_payment" instance="Mollie\Payment\Observer\ConfigObserver"/>
    </event>
    <event name="order_cancel_after">
        <observer name="mollie_cancel_order" instance="Mollie\Payment\Observer\OrderCancelAfter"/>
    </event>
    <event name="sales_order_shipment_save_before">
        <!-- Order of execution is important -->
        <observer name="mollie_aaaa_lock_unlock_order" instance="Mollie\Payment\Observer\LockUnlockOrder" />
        <observer name="mollie_create_shipment" instance="Mollie\Payment\Observer\SalesOrderShipmentSaveBefore\CreateMollieShipment"/>
    </event>
    <event name="sales_order_shipment_save_after">
        <observer name="mollie_lock_unlock_order" instance="Mollie\Payment\Observer\LockUnlockOrder" />
    </event>
    <event name="sales_order_shipment_track_save_before">
        <observer name="mollie_aaaa_lock_unlock_order" instance="Mollie\Payment\Observer\LockUnlockOrder" />
    </event>
    <event name="sales_order_shipment_track_save_after">
        <observer name="mollie_create_shipment" instance="Mollie\Payment\Observer\SalesOrderShipmentTrackSaveAfter"/>
        <!-- Order of execution is important -->
        <observer name="mollie_zzzz_lock_unlock_order" instance="Mollie\Payment\Observer\LockUnlockOrder" />
    </event>
    <event name="adminhtml_sales_order_creditmemo_register_before">
        <observer name="mollie_do_not_refund_giftcard" instance="Mollie\Payment\Observer\AdminhtmlSalesOrderCreditmemoRegisterBefore\DoNotRefundGiftcard" />
    </event>
    <event name="sales_order_creditmemo_save_after">
        <observer name="mollie_create_online_refund" instance="Mollie\Payment\Observer\SalesOrderCreditmemoSaveAfter"/>
    </event>
    <event name="sales_model_service_quote_submit_before">
        <observer name="mollie_copy_payment_fee_to_order" instance="Mollie\Payment\Observer\SalesModelServiceQuoteSubmitBefore\CopyPaymentFeeToOrder" />
    </event>
    <event name="sales_quote_save_before">
        <observer name="mollie_set_paymentfee_on_quote" instance="Mollie\Payment\Observer\SalesQuoteSaveBefore\SetPaymentFeeDataOnQuote" />
    </event>
    <event name="sales_model_service_quote_submit_success">
        <observer name="mollie_attach_payment_token_to_order" instance="Mollie\Payment\Observer\SalesModelServiceQuoteSubmitSuccess\AttachPaymentTokenToOrder" />
        <observer name="mollie_set_payment_link_checkout_url" instance="Mollie\Payment\Observer\SalesModelServiceQuoteSubmitSuccess\SetCheckoutUrlForPaymentLink" />
    </event>
    <event name="mollie_start_transaction">
        <observer name="mollie_save_pending_payment_reminder" instance="Mollie\Payment\Observer\MollieStartTransaction\SavePendingOrder" />
    </event>
    <event name="mollie_process_transaction_end">
        <observer name="mollie_remove_from_pending_payment_reminder" instance="Mollie\Payment\Observer\MollieProcessTransactionEnd\RemoveCompletedOrdersFromPendingPaymentTable" />
    </event>
    <event name="controller_action_predispatch_checkout_index_index">
        <observer name="mollie_restore_quote_after_unsuccessful_payment" instance="Mollie\Payment\Observer\ControllerActionPredispatchCheckoutIndexIndex\RestoreQuoteOfUnsuccessfulPayment" />
    </event>
    <event name="sales_order_place_before">
        <observer name="mollie_remove_from_pending_payment_reminders_table" instance="Mollie\Payment\Observer\SalesOrderPlaceBefore\RemovePendingPaymentReminders" />
    </event>
    <event name="checkout_allow_guest">
        <observer name="mollie_force_customer_login_when_ordering_a_recurring_product" instance="Mollie\Payment\Observer\CheckoutAllowGuest\ForceCustomerLoginWhenSubscriptionItemInCart" />
    </event>
    <event name="checkout_submit_all_after">
        <observer name="mollie_starttransaction_for_instant_purchase_orders" instance="Mollie\Payment\Observer\CheckoutSubmitAllAfter\StartTransactionForInstantPurchaseOrders" />
        <observer name="mollie_starttransaction_for_pointofsale_orders" instance="Mollie\Payment\Observer\SalesModelServiceQuoteSubmitSuccess\StartTransactionForPointOfSaleOrders" />
    </event>
    <event name="sales_quote_item_set_product">
        <observer name="mollie_add_subscription_product_type_options" instance="Mollie\Payment\Observer\SalesQuoteItemSetProduct\SetSubscriptionDataOnBuyRequest" />
    </event>
    <event name="shortcut_buttons_container">
        <observer name="mollie_add_applepay_button_to_minicart" instance="Mollie\Payment\Observer\ShortcutButtonsContainer\AddApplePayShortcutButton" />
    </event>
    <event name="sales_order_payment_place_end">
        <observer name="mollie_set_order_state_to_pending_payment" instance="Mollie\Payment\Observer\SalesOrderPaymentPlaceEnd\SetOrderStateToPendingPayment" />
    </event>
    <event name="sales_order_invoice_pay">
        <observer name="mollie_mark_virtual_items_as_shipped" instance="Mollie\Payment\Observer\SalesOrderInvoicePay\MarkVirtualItemsAsShipped" />
    </event>
    <event name="sales_order_invoice_register">
        <observer name="mollie_capture_invoice" instance="Mollie\Payment\Observer\SalesOrderInvoiceRegister\CaptureInvoice" />
    </event>
    <event name="sales_quote_payment_import_data_before">
        <observer name="mollie_clear_issuer_on_method_change" instance="Mollie\Payment\Observer\SalesQuotePaymentImportDataBefore\ClearIssuerOnMethodChange" />
    </event>
    <event name="adminhtml_sales_order_create_process_item_before">
        <observer name="mollie_set_purchase_type_on_create_order_item" instance="Mollie\Payment\Observer\AdminhtmlSalesOrderCreateProcessItemBefore\SetPurchaseTypeOnCreateOrderItem" />
    </event>
    <event name="backend_block_widget_grid_prepare_grid_before">
        <observer name="mollie_add_additional_data_to_collection" instance="Mollie\Payment\Observer\BackendBlockWidgetGridPrepareGridBefore\AddAdditionalInformationToCollection" />
    </event>
</config>
