From 55fe4ab796b8ff66bc42a53ee0f5fd8f1140ebba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rolv=20R=C3=A5en=20rora=40adego=2Eno?= <> Date: Tue, 19 Apr 2011 12:17:34 +0200 Subject: [PATCH] Added support for Norwegian VAT no bzr revid: rora@adego.no-20110419101734-c8q8sb2aku83y1sg --- addons/base_vat/base_vat.py | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/addons/base_vat/base_vat.py b/addons/base_vat/base_vat.py index 102619e876d..2ddcada9399 100644 --- a/addons/base_vat/base_vat.py +++ b/addons/base_vat/base_vat.py @@ -39,7 +39,7 @@ _ref_vat = { 'pt': 'PT123456789', 'ro': 'RO1234567897', 'se': 'SE123456789701', 'si': 'SI12345679', 'sk': 'SK0012345675', 'el': 'EL12345670', - 'mx': 'MXABC123456T1B' + 'mx': 'MXABC123456T1B', 'no': 'NO123456785' } @@ -1077,6 +1077,33 @@ class res_partner(osv.osv): elif len(vat)==13 and not vat[:4].isalpha() | vat[4:10].isdigit() | vat[-3:].isalnum(): return False return True + + def check_vat_no(self, vat): + ''' + Check Norway VAT number. + ''' + if len(vat) != 9: + return False + try: + int(vat) + except: + return False + + sum = (3 * int(vat[0])) + (2 * int(vat[1])) + \ + (7 * int(vat[2])) + (6 * int(vat[3])) + \ + (5 * int(vat[4])) + (4 * int(vat[5])) + \ + (3 * int(vat[6])) + (2 * int(vat[7])) + + check = 11 -(sum % 11) + if check == 11: + check = 0 + if check == 10: + check -1 + return False + if check != int(vat[8]): + return False + return True + res_partner() # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: