From 6e1d98779af9044ffe969fb9bb6705a6d3cc112b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Fri, 17 Oct 2025 14:08:46 +0200 Subject: [PATCH] Make the number of bank accounts required The number is the record name so it must always be filled. Closes #14297 --- modules/bank/bank.py | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/modules/bank/bank.py b/modules/bank/bank.py index 7e9bb5ee0a..03f29274ff 100644 --- a/modules/bank/bank.py +++ b/modules/bank/bank.py @@ -199,8 +199,12 @@ class AccountNumber(DeactivableMixin, sequence_ordered(), ModelSQL, ModelView): ('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 @@ class AccountNumber(DeactivableMixin, sequence_ordered(), ModelSQL, ModelView): 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)