From 82b073c158ddf73108d5bf9793679b5806f117ff Mon Sep 17 00:00:00 2001 From: Raimon Esteve Date: Wed, 15 Jun 2022 09:09:27 +0200 Subject: [PATCH] issue11198.diff [bank] Fill or create bank from IBAN and enforce uniqueness --- issue11198.diff | 51 +++++++++++++++++++++++++++++++++++++++++++++++++ series | 1 + 2 files changed, 52 insertions(+) create mode 100644 issue11198.diff diff --git a/issue11198.diff b/issue11198.diff new file mode 100644 index 0000000..8fa3873 --- /dev/null +++ b/issue11198.diff @@ -0,0 +1,51 @@ +diff --git a/trytond/trytond/modules/bank/bank.py b/trytond/trytond/modules/bank/bank.py +index 04f6e3d..7bc6601 100644 +--- a/trytond/trytond/modules/bank/bank.py ++++ b/trytond/trytond/modules/bank/bank.py +@@ -3,10 +3,11 @@ + from stdnum import iban, bic + import stdnum.exceptions + from sql import operators, Literal ++from sql.operators import Equal + + from trytond.i18n import gettext + from trytond.model import ( +- ModelView, ModelSQL, DeactivableMixin, fields, sequence_ordered) ++ Exclude, ModelView, ModelSQL, DeactivableMixin, fields, sequence_ordered) + + from .exceptions import IBANValidationError, InvalidBIC + +@@ -96,6 +97,17 @@ class AccountNumber(sequence_ordered(), ModelSQL, ModelView): + super().__setup__() + cls.__access__.add('account') + cls._order.insert(0, ('account', 'ASC')) ++ table = cls.__table__() ++ cls._sql_constraints += [ ++ ('number_iban_exclude', ++ Exclude(table, (table.number_compact, Equal), ++ where=table.type == 'iban'), ++ 'bank.msg_number_iban_unique'), ++ ('account_iban_exclude', ++ Exclude(table, (table.account, Equal), ++ where=table.type == 'iban'), ++ 'bank.msg_account_iban_unique'), ++ ] + + @classmethod + def default_type(cls): +diff --git a/trytond/trytond/modules/bank/message.xml b/trytond/trytond/modules/bank/message.xml +index a06297f..f4ab923 100644 +--- a/trytond/trytond/modules/bank/message.xml ++++ b/trytond/trytond/modules/bank/message.xml +@@ -9,5 +9,11 @@ this repository contains the full copyright notices and license terms. --> + + The BIC "%(bic)s" is not valid. + ++ ++ Account can have only one IBAN. ++ ++ ++ IBAN must be unique. ++ + + diff --git a/series b/series index e75834d..85c405e 100644 --- a/series +++ b/series @@ -122,3 +122,4 @@ issue11077.diff # [trytond] Fill Value of MultiValue with the other default valu issue8952.diff # [country] Use Tryton's CDN to download postal codes Remove on 6.4 issue10363.diff # [production] Remove unique product constraint on BOM issue11000.diff # [account] +issue11198.diff # [bank] Fill or create bank from IBAN and enforce uniqueness