summaryrefslogtreecommitdiff
path: root/addons/base_vat
diff options
context:
space:
mode:
authorJigar Vaghela <jva@odoo.com>2020-04-28 09:27:43 +0000
committerJigar Vaghela <jva@odoo.com>2020-04-30 07:20:07 +0000
commitd78d4684cb4cc23a88870e14e40436e67c43a980 (patch)
tree2c7fc4d993a91d3fa2e5d374fa7bc361d7062f18 /addons/base_vat
parentb842af6ce9d49a4f9fa7def65af53fbf19a56b4f (diff)
[ADD] base_vat: add vat validation for india
closes odoo/odoo#48430 Related: odoo/upgrade#997 Related: odoo/enterprise#9500 Signed-off-by: Josse Colpaert <jco@openerp.com>
Diffstat (limited to 'addons/base_vat')
-rw-r--r--addons/base_vat/models/res_partner.py14
1 files changed, 14 insertions, 0 deletions
diff --git a/addons/base_vat/models/res_partner.py b/addons/base_vat/models/res_partner.py
index c3376cd0ba5..ca42180586f 100644
--- a/addons/base_vat/models/res_partner.py
+++ b/addons/base_vat/models/res_partner.py
@@ -41,6 +41,7 @@ _ref_vat = {
'hu': 'HU12345676',
'hr': 'HR01234567896', # Croatia, contributed by Milan Tribuson
'ie': 'IE1234567FA',
+ 'in': "12AAAAA1234AAZA",
'is': 'IS062199',
'it': 'IT12345670017',
'lt': 'LT123456715',
@@ -468,6 +469,19 @@ class ResPartner(models.Model):
return False
return True
+ def check_vat_in(self, vat):
+ #reference from https://www.gstzen.in/a/format-of-a-gst-number-gstin.html
+ if vat and len(vat) == 15:
+ all_gstin_re = [
+ r'[0-9]{2}[a-zA-Z]{5}[0-9]{4}[a-zA-Z]{1}[1-9A-Za-z]{1}[Zz1-9A-Ja-j]{1}[0-9a-zA-Z]{1}', # Normal, Composite, Casual GSTIN
+ r'[0-9]{4}[A-Z]{3}[0-9]{5}[UO]{1}[N][A-Z0-9]{1}', #UN/ON Body GSTIN
+ r'[0-9]{4}[a-zA-Z]{3}[0-9]{5}[N][R][0-9a-zA-Z]{1}', #NRI GSTIN
+ r'[0-9]{2}[a-zA-Z]{4}[a-zA-Z0-9]{1}[0-9]{4}[a-zA-Z]{1}[1-9A-Za-z]{1}[DK]{1}[0-9a-zA-Z]{1}', #TDS GSTIN
+ r'[0-9]{2}[a-zA-Z]{5}[0-9]{4}[a-zA-Z]{1}[1-9A-Za-z]{1}[C]{1}[0-9a-zA-Z]{1}' #TCS GSTIN
+ ]
+ return any(re.compile(rx).match(vat) for rx in all_gstin_re)
+ return False
+
def _fix_vat_number(self, vat, country_id):
code = self.env['res.country'].browse(country_id).code if country_id else False
vat_country, vat_number = self._split_vat(vat)