[FIX] base_vat: implement a generic check of vat numbers
bzr revid: christophe@tinyerp.com-20090415085738-b1jow8m2dh5tf9uf
This commit is contained in:
parent
b0e5e6ffd4
commit
ab164fe022
|
@ -22,6 +22,8 @@
|
|||
|
||||
from osv import osv
|
||||
from osv import fields
|
||||
import string
|
||||
from tools.func import partial
|
||||
|
||||
def mult_add(i, j):
|
||||
"""Sum each digits of the multiplication of i and j."""
|
||||
|
@ -39,15 +41,26 @@ class res_partner(osv.osv):
|
|||
if not partner.vat:
|
||||
continue #FIXME return False? empty vat numbre is invalid?
|
||||
|
||||
vat_country, vat_number = partner.vat[:2].lower(), partner.vat[2:]
|
||||
if vat_number.find(' ') != -1:
|
||||
return False
|
||||
check = getattr(self, 'check_vat_' + vat_country, lambda vn: False)
|
||||
vat_country, vat_number = partner.vat[:2].lower(), partner.vat[2:].replace(' ', '')
|
||||
check = getattr(self, 'check_vat_' + vat_country)
|
||||
if not check(vat_number):
|
||||
return False
|
||||
|
||||
return True
|
||||
|
||||
def __getattr__(self, attr):
|
||||
if not attr.startswith('check_vat_'):
|
||||
super(res_partner, self).__getattr__(attr)
|
||||
|
||||
def default_vat_check(self, cn, vn):
|
||||
# by default, a VAT number is valid if:
|
||||
# it starts with 2 letters
|
||||
# has more than 3 characters
|
||||
return len(vn) > 0 and len(cn) == 2 and cn[0] in string.ascii_lowercase and cn[1] in string.ascii_lowercase
|
||||
|
||||
return partial(default_vat_check, self, attr[10:])
|
||||
|
||||
|
||||
def vat_change(self, cr, uid, ids, value, context={}):
|
||||
return {'value': {'vat_subjected': bool(value)}}
|
||||
|
||||
|
|
Loading…
Reference in New Issue