diff options
| author | Jigar Vaghela <jva@odoo.com> | 2020-04-28 09:27:43 +0000 |
|---|---|---|
| committer | Jigar Vaghela <jva@odoo.com> | 2020-04-30 07:20:07 +0000 |
| commit | d78d4684cb4cc23a88870e14e40436e67c43a980 (patch) | |
| tree | 2c7fc4d993a91d3fa2e5d374fa7bc361d7062f18 | |
| parent | b842af6ce9d49a4f9fa7def65af53fbf19a56b4f (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>
| -rw-r--r-- | addons/base_vat/models/res_partner.py | 14 |
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) |
