diff --git a/addons/l10n_au/__manifest__.py b/addons/l10n_au/__manifest__.py index bb2972f9c26..7a9c4b00173 100644 --- a/addons/l10n_au/__manifest__.py +++ b/addons/l10n_au/__manifest__.py @@ -25,6 +25,7 @@ Also: 'views/menuitems.xml', 'views/report_invoice.xml', 'views/res_company_views.xml', + 'views/res_partner_bank_views.xml', ], 'demo': [ 'demo/demo_company.xml', diff --git a/addons/l10n_au/models/__init__.py b/addons/l10n_au/models/__init__.py index 5116e46f472..998f24d472a 100644 --- a/addons/l10n_au/models/__init__.py +++ b/addons/l10n_au/models/__init__.py @@ -2,3 +2,4 @@ from . import template_au from . import account_move +from . import res_partner_bank diff --git a/addons/l10n_au/models/res_partner_bank.py b/addons/l10n_au/models/res_partner_bank.py new file mode 100644 index 00000000000..ea2f4f380a2 --- /dev/null +++ b/addons/l10n_au/models/res_partner_bank.py @@ -0,0 +1,39 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +import re + +from odoo import api, fields, models, _ +from odoo.exceptions import ValidationError + + +class ResPartnerBank(models.Model): + _inherit = "res.partner.bank" + + aba_bsb = fields.Char(string='BSB', help='Bank State Branch code - needed if payment is to be made using ABA files') + + @api.model + def _get_supported_account_types(self): + rslt = super(ResPartnerBank, self)._get_supported_account_types() + rslt.append(('aba', _('ABA'))) + return rslt + + @api.constrains('aba_bsb') + def _validate_aba_bsb(self): + for record in self: + if record.aba_bsb: + test_bsb = re.sub('( |-)', '', record.aba_bsb) + if len(test_bsb) != 6 or not test_bsb.isdigit(): + raise ValidationError(_('BSB is not valid (expected format is "NNN-NNN"). Please rectify.')) + + @api.depends('acc_number') + def _compute_acc_type(self): + """ Criteria to be an ABA account: + - Spaces, hypens, digits are valid. + - Total length must be 9 or less. + - Cannot be only spaces, zeros or hyphens (must have at least one digit in range 1-9) + """ + super()._compute_acc_type() + for rec in self: + if rec.acc_type == 'bank' and re.match(r"^(?=.*[1-9])[ \-\d]{0,9}$", rec.acc_number or ''): + rec.acc_type = 'aba' diff --git a/addons/l10n_au/views/res_partner_bank_views.xml b/addons/l10n_au/views/res_partner_bank_views.xml new file mode 100644 index 00000000000..10afa2080e7 --- /dev/null +++ b/addons/l10n_au/views/res_partner_bank_views.xml @@ -0,0 +1,13 @@ + + + + aba.res.partner.bank.form + res.partner.bank + + + + + + + +