Skip to content
Snippets Groups Projects
Commit f0b6e4cc authored by Julien (jula)'s avatar Julien (jula)
Browse files

[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#114006

Signed-off-by: default avatarNicolas Viseur (vin) <vin@odoo.com>
parent 5ad4f6cf
No related branches found
No related tags found
No related merge requests found
......@@ -214,6 +214,16 @@ class ResPartner(models.Model):
format=vat_no
)
__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):
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment