Compact vat_number

It is better to standardize the format of the vat number using the compact
method of python-stdnum.

issue4445
review14861002
This commit is contained in:
Cédric Krier committed 2015-01-12 22:53:00 +01:00
1 parent 2baf27e12b
commit 14447a42f7
3 files changed
+28 -13

No files matched your search

+1
View File
@@ -1,3 +1,4 @@
* compact vat number
* value Function fields don't set the value anymore
Version 3.4.0 - 2014-10-20
+26 -12
View File
@@ -1,6 +1,7 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
import logging
from importlib import import_module
from sql.functions import CharLength
@@ -127,6 +128,23 @@ class Party(ModelSQL, ModelView):
def on_change_with_vat_code(self, name=None):
return (self.vat_country or '') + (self.vat_number or '')
@fields.depends('vat_country', 'vat_number')
def on_change_with_vat_number(self):
if not self.vat_country:
return self.vat_number
code = self.vat_country.lower()
vat_module = None
try:
module = import_module('stdnum.%s' % code)
vat_module = getattr(module, 'vat', None)
if not vat_module:
vat_module = import_module('stdnum.%s.vat' % code)
except ImportError:
pass
if vat_module:
return vat_module.compact(self.vat_number)
return self.vat_number
@classmethod
def search_vat_code(cls, name, clause):
res = []
@@ -216,25 +234,21 @@ class Party(ModelSQL, ModelView):
'''
if not HAS_VATNUMBER:
return
vat_number = self.vat_number
if not self.vat_country:
return
vat_number = self.on_change_with_vat_number()
if vat_number != self.vat_number:
self.vat_number = vat_number
self.save()
if not getattr(vatnumber, 'check_vat_' +
self.vat_country.lower())(vat_number):
# Check if user doesn't have put country code in number
if vat_number.startswith(self.vat_country):
vat_number = vat_number[len(self.vat_country):]
Party.write([self], {
'vat_number': vat_number,
self.raise_user_error('invalid_vat', {
'vat': vat_number,
'party': self.rec_name,
})
else:
self.raise_user_error('invalid_vat', {
'vat': vat_number,
'party': self.rec_name,
})
class PartyCategory(ModelSQL):
+1 -1
View File
@@ -92,7 +92,7 @@ setup(name=name,
license='GPL-3',
install_requires=requires,
extras_require={
'VAT': ['vatnumber'],
'VAT': ['vatnumber', 'python-stdnum'],
},
zip_safe=False,
entry_points="""