[FIX] base_vat: belgian vat number correct display
Odoo Accept the following mask for vat encoding : BE0477472701 BE.0.477.472.701 BE.477.472.701 BE477.472.701 BE477472701 But, in certain cases we have to add the zero to be compliance (i.e. belgian official reports...). -> http://www.tvaintracommunautaire.eu/belgique.html This commit make use of the compact method defined in stdnum.be.vat (which is used by vatnumber in order to validate the vat). The compact method return a 10 digits vat number starting with a 0 which is compliant with the official reports. closes odoo/odoo#28523
This commit is contained in:
@@ -17,6 +17,40 @@ except ImportError:
|
||||
from odoo import api, models, _
|
||||
from odoo.tools.misc import ustr
|
||||
from odoo.exceptions import ValidationError
|
||||
from stdnum.at.uid import compact as compact_at
|
||||
from stdnum.be.vat import compact as compact_be
|
||||
from stdnum.bg.vat import compact as compact_bg
|
||||
from stdnum.ch.vat import compact as compact_ch
|
||||
from stdnum.cy.vat import compact as compact_cy
|
||||
from stdnum.cz.dic import compact as compact_cz
|
||||
from stdnum.de.vat import compact as compact_de
|
||||
from stdnum.ee.kmkr import compact as compact_ee
|
||||
# el not in stdnum
|
||||
from stdnum.es.nif import compact as compact_es
|
||||
from stdnum.fi.alv import compact as compact_fi
|
||||
from stdnum.fr.tva import compact as compact_fr
|
||||
from stdnum.gb.vat import compact as compact_gb
|
||||
from stdnum.gr.vat import compact as compact_gr
|
||||
from stdnum.hu.anum import compact as compact_hu
|
||||
from stdnum.hr.oib import compact as compact_hr
|
||||
from stdnum.ie.vat import compact as compact_ie
|
||||
from stdnum.it.iva import compact as compact_it
|
||||
from stdnum.lt.pvm import compact as compact_lt
|
||||
from stdnum.lu.tva import compact as compact_lu
|
||||
from stdnum.lv.pvn import compact as compact_lv
|
||||
from stdnum.mt.vat import compact as compact_mt
|
||||
from stdnum.mx.rfc import compact as compact_mx
|
||||
from stdnum.nl.btw import compact as compact_nl
|
||||
from stdnum.no.mva import compact as compact_no
|
||||
# pe is not in stdnum
|
||||
from stdnum.pl.nip import compact as compact_pl
|
||||
from stdnum.pt.nif import compact as compact_pt
|
||||
from stdnum.ro.cf import compact as compact_ro
|
||||
from stdnum.se.vat import compact as compact_se
|
||||
from stdnum.si.ddv import compact as compact_si
|
||||
from stdnum.sk.dph import compact as compact_sk
|
||||
# tr compact vat is not in stdnum
|
||||
|
||||
|
||||
_eu_country_vat = {
|
||||
'GR': 'EL'
|
||||
@@ -363,3 +397,25 @@ class ResPartner(models.Model):
|
||||
return stdnum.al.vat.is_valid(vat)
|
||||
except ImportError:
|
||||
return True
|
||||
|
||||
def default_compact(self, vat):
|
||||
return vat
|
||||
|
||||
def _fix_vat_number(self, vat):
|
||||
vat_country, vat_number = self._split_vat(vat)
|
||||
check_func_name = 'compact_' + vat_country
|
||||
check_func = globals().get(check_func_name) or getattr(self, 'default_compact')
|
||||
vat_number = check_func(vat_number)
|
||||
return vat_country.upper() + vat_number
|
||||
|
||||
@api.model
|
||||
def create(self, values):
|
||||
if values.get('vat'):
|
||||
values['vat'] = self._fix_vat_number(values['vat'])
|
||||
return super(ResPartner, self).create(values)
|
||||
|
||||
@api.multi
|
||||
def write(self, values):
|
||||
if values.get('vat'):
|
||||
values['vat'] = self._fix_vat_number(values['vat'])
|
||||
return super(ResPartner, self).write(values)
|
||||
|
||||
Reference in New Issue
Block a user