From 02dfd4fed8ef982a31f051b085338d42bdf8a48f Mon Sep 17 00:00:00 2001 From: Nicolas Martinelli Date: Mon, 6 Nov 2017 16:35:07 +0100 Subject: [PATCH] [FIX] l10n_us: ABA/Routing number Edit/create a bank account: - Add a correct ABA number => nothing is displayed - Add an incorrect number (e.g. with letters) => it crashes Combining an `Integer` field with a `char` widget is just a bad idea... opw-781069 --- addons/l10n_us/i18n/l10n_us.pot | 22 ++++++++++++++--- addons/l10n_us/models/res_partner_bank.py | 30 ++++++++++++++++++++++- 2 files changed, 48 insertions(+), 4 deletions(-) diff --git a/addons/l10n_us/i18n/l10n_us.pot b/addons/l10n_us/i18n/l10n_us.pot index 2e1fd6db784..d3820625cf6 100644 --- a/addons/l10n_us/i18n/l10n_us.pot +++ b/addons/l10n_us/i18n/l10n_us.pot @@ -1,12 +1,13 @@ # Translation of Odoo Server. # This file contains the translation of the following modules: +# * l10n_us # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 9.0\n" +"Project-Id-Version: Odoo Server 11.0+e\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-09-07 14:56+0000\n" -"PO-Revision-Date: 2015-09-07 14:56+0000\n" +"POT-Creation-Date: 2017-11-07 09:32+0000\n" +"PO-Revision-Date: 2017-11-07 09:32+0000\n" "Last-Translator: <>\n" "Language-Team: \n" "MIME-Version: 1.0\n" @@ -14,3 +15,18 @@ msgstr "" "Content-Transfer-Encoding: \n" "Plural-Forms: \n" +#. module: l10n_us +#: model:ir.model.fields,field_description:l10n_us.field_res_partner_bank_aba_routing +msgid "ABA/Routing" +msgstr "" + +#. module: l10n_us +#: code:addons/l10n_us/models/res_partner_bank.py:16 +#, python-format +msgid "ABA/Routing should only contains numbers (maximum 9 digits)." +msgstr "" + +#. module: l10n_us +#: model:ir.model.fields,help:l10n_us.field_res_partner_bank_aba_routing +msgid "American Bankers Association Routing Number" +msgstr "" diff --git a/addons/l10n_us/models/res_partner_bank.py b/addons/l10n_us/models/res_partner_bank.py index 5493ece0c9e..3a4516d80ed 100644 --- a/addons/l10n_us/models/res_partner_bank.py +++ b/addons/l10n_us/models/res_partner_bank.py @@ -1,10 +1,38 @@ # -*- coding: utf-8 -*- # Part of Odoo. See LICENSE file for full copyright and licensing details. -from odoo import fields, models +import re +from odoo import fields, models, api, _ +from odoo.exceptions import UserError class ResPartnerBank(models.Model): _inherit = 'res.partner.bank' aba_routing = fields.Integer(string="ABA/Routing", help="American Bankers Association Routing Number") + + def _check_aba_routing(self, aba_routing): + if aba_routing and not re.match(r'^\d{1,9}$', aba_routing): + raise UserError(_('ABA/Routing should only contains numbers (maximum 9 digits).')) + return aba_routing + + # ONLY FOR v11. DO NOT FORWARDPORT! + @api.model + def create(self, vals): + if vals.get('aba_routing'): + vals['aba_routing'] = int(self._check_aba_routing(vals['aba_routing'])) + return super(ResPartnerBank, self).create(vals) + + @api.multi + def write(self, vals): + if vals.get('aba_routing'): + vals['aba_routing'] = int(self._check_aba_routing(vals['aba_routing'])) + return super(ResPartnerBank, self).write(vals) + + @api.multi + def read(self, fields=None, load='_classic_read'): + result = super(ResPartnerBank, self).read(fields, load=load) + for record in result: + if record.get('aba_routing'): + record['aba_routing'] = str(record['aba_routing']) + return result