details:   https://code.tryton.org/tryton/commit/8d359573d99e
branch:    default
user:      Cédric Krier <[email protected]>
date:      Fri Oct 17 14:08:46 2025 +0200
description:
        Make the number of bank accounts required

        The number is the record name so it must always be filled.

        Closes #14297
diffstat:

 modules/bank/bank.py |  18 ++++++++++++++++--
 1 files changed, 16 insertions(+), 2 deletions(-)

diffs (35 lines):

diff -r ec77abb45395 -r 8d359573d99e modules/bank/bank.py
--- a/modules/bank/bank.py      Fri Oct 17 17:27:27 2025 +0200
+++ b/modules/bank/bank.py      Fri Oct 17 14:08:46 2025 +0200
@@ -199,8 +199,12 @@
             ('iban', 'IBAN'),
             ('other', 'Other'),
             ], 'Type', required=True)
-    number = fields.Char('Number')
-    number_compact = fields.Char('Number Compact', readonly=True)
+    number = fields.Char("Number", required=True)
+    number_compact = fields.Char(
+        "Number Compact", readonly=True,
+        states={
+            'required': Eval('type').in_(['iban']),
+            })
 
     @classmethod
     def __setup__(cls):
@@ -261,6 +265,16 @@
         return (iban.compact(self.number) if self.type == 'iban'
             else self.number)
 
+    @classmethod
+    def preprocess_values(cls, mode, values):
+        values = super().preprocess_values(mode, values)
+        if mode == 'create':
+            if (values.get('type') == 'iban'
+                    and (number := values.get('number'))):
+                values['number'] = iban.format(number)
+                values['number_compact'] = iban.compact(number)
+        return values
+
     def compute_fields(self, field_names=None):
         values = super().compute_fields(field_names=field_names)
         if ((not field_names or {'type', 'number'} & field_names)

Reply via email to