mirror of
https://gitlab.com/flectra-community/l10n-switzerland-flectra.git
synced 2024-12-24 21:31:44 +00:00
36 lines
1.1 KiB
Python
36 lines
1.1 KiB
Python
|
# Copyright 2020 Camptocamp SA
|
||
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||
|
from flectra import models
|
||
|
|
||
|
|
||
|
def _is_l10n_ch_qr_iban(account_ref):
|
||
|
"""Returns if the account_ref is a QR IBAN
|
||
|
|
||
|
A QR IBAN contains an IID QR.
|
||
|
An IID QR is between 30000 and 31999
|
||
|
It starts at the 5th character
|
||
|
eg: CH21 3080 8001 2345 6782 7
|
||
|
where 30808 is the IID QR
|
||
|
"""
|
||
|
account_ref = account_ref.replace(" ", "")
|
||
|
return (
|
||
|
account_ref.startswith("CH")
|
||
|
and account_ref[4:9] >= "30000"
|
||
|
and account_ref[4:9] <= "31999"
|
||
|
)
|
||
|
|
||
|
|
||
|
class ResPartnerBank(models.Model):
|
||
|
_inherit = "res.partner.bank"
|
||
|
|
||
|
def is_isr_issuer(self):
|
||
|
"""Supplier will provide ISR reference numbers in two cases:
|
||
|
|
||
|
- postal account number starting by 01 or 03
|
||
|
- QR-IBAN
|
||
|
"""
|
||
|
# acc_type can be bank for isrb
|
||
|
if self.acc_type in ["bank", "postal"] and self.l10n_ch_postal:
|
||
|
return self.l10n_ch_postal[:2] in ["01", "03"]
|
||
|
return self.acc_type == "iban" and _is_l10n_ch_qr_iban(self.acc_number)
|