details:   https://code.tryton.org/tryton/commit/b7ab57a8f93d
branch:    default
user:      Cédric Krier <[email protected]>
date:      Wed Apr 08 18:49:25 2026 +0200
description:
        Remove invalid SEPA mandate when payment is reset to draft

        Closes #14756
diffstat:

 modules/account_payment_sepa/payment.py |  13 +++++++++++++
 1 files changed, 13 insertions(+), 0 deletions(-)

diffs (23 lines):

diff -r 2fc55f35f172 -r b7ab57a8f93d modules/account_payment_sepa/payment.py
--- a/modules/account_payment_sepa/payment.py   Wed Apr 08 17:16:26 2026 +0200
+++ b/modules/account_payment_sepa/payment.py   Wed Apr 08 18:49:25 2026 +0200
@@ -489,6 +489,19 @@
             ('sepa_info_id', operator, code_value, *extra),
             ]
 
+    @classmethod
+    @ModelView.button
+    @Workflow.transition('draft')
+    def draft(cls, payments):
+        to_remove_mandate = []
+        for payment in payments:
+            if (payment.sepa_mandate
+                    and payment.sepa_mandate.state != 'validated'):
+                to_remove_mandate.append(payment)
+        if to_remove_mandate:
+            cls.write(to_remove_mandate, {'sepa_mandate': None})
+        super().draft(payments)
+
 
 class Payment_Invoice(metaclass=PoolMeta):
     __name__ = 'account.payment'

Reply via email to