Odoo18-Base/addons/l10n_au/models/res_partner_bank.py
2025-01-06 10:57:38 +07:00

40 lines
1.4 KiB
Python

# -*- 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'