From 0a2183a7d11dd6645a9724bc5c9bf672476df191 Mon Sep 17 00:00:00 2001 From: Mehdi Bendali Hacine Date: Wed, 19 Apr 2023 07:10:49 +0000 Subject: [PATCH] [IMP] base_vat: add TIN validation for KSA closes odoo/odoo#121389 X-original-commit: efbaf72c0fd1781846b28baf08a1ea9a16f249f0 Signed-off-by: Josse Colpaert --- addons/base_vat/models/res_partner.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/addons/base_vat/models/res_partner.py b/addons/base_vat/models/res_partner.py index ab6c33d68c4..5c65cb432bb 100644 --- a/addons/base_vat/models/res_partner.py +++ b/addons/base_vat/models/res_partner.py @@ -76,6 +76,7 @@ _ref_vat = { 'tr': 'TR1234567890 (VERGINO) or TR17291716060 (TCKIMLIKNO)', # Levent Karakas @ Eska Yazilim A.S. 've': 'V-12345678-1, V123456781, V-12.345.678-1', 'xi': 'XI123456782', + 'sa': '310175397400003 [Fifteen digits, first and last digits should be "3"]' } _region_specific_vat_codes = { @@ -572,6 +573,16 @@ class ResPartner(models.Model): return False + __check_vat_sa_re = re.compile(r"^3[0-9]{13}3$") + + # Saudi Arabia TIN validation + def check_vat_sa(self, vat): + """ + Check company VAT TIN according to ZATCA specifications: The VAT number should start and begin with a '3' + and be 15 digits long + """ + return self.__check_vat_sa_re.match(vat) or False + def check_vat_ua(self, vat): res = [] for partner in self: