[FIX] base_vat: support for 2020 Albanian Tax ID

__Description of the issue this PR addresses:__
The first character of a Tax ID from Albania is a letter representing the decade in which it has been issued. The letter M represents the current decade. (This pdf explains in details how it is formated: https://www.oecd.org/tax/automatic-exchange/crs-implementation-and-assistance/tax-identification-numbers/Albania-TIN.pdf).

Currently the way Albanian Tax IDs are validated is through the python library [`python-stdnum`](https://pypi.org/project/python-stdnum/).
However, the regex that is used to validate them has not been updated since 2017. (I made a PR in its repo https://github.com/arthurdejong/python-stdnum/pull/402 to fix that).

The code from this commit is inspired by the one from that library, but the regex includes the letter M.

__Current behavior before PR:__
(`base_vat` must be installed)
By going to Settings > Users & Companies > [A company]:
- Set the country to Albania
- Set VAT/Tax ID to “M12345678T”.

=> Error message

closes odoo/odoo#114488

X-original-commit: f0b6e4ccd8f7402a5d70b9d60d91e463073e5bde
Signed-off-by: Nicolas Viseur (vin) <vin@odoo.com>
This commit is contained in:
Julien (jula)
2023-03-07 08:02:33 +01:00
parent 7b71480c19
commit 8eb2893932
+10
View File
@@ -285,6 +285,16 @@ class ResPartner(models.Model):
)
__check_vat_al_re = re.compile(r'^[JKLM][0-9]{8}[A-Z]$')
def check_vat_al(self, vat):
"""Check Albania VAT number"""
number = stdnum.util.get_cc_module('al', 'vat').compact(vat)
if len(number) == 10 and self.__check_vat_al_re.match(number):
return True
return False
__check_vat_ch_re = re.compile(r'E([0-9]{9}|-[0-9]{3}\.[0-9]{3}\.[0-9]{3})(MWST|TVA|IVA)$')
def check_vat_ch(self, vat):