- def check_vat_el(self, vat):
- return self.check_vat_gr(vat)
-
- def check_vat_hu(self, vat):
- '''
- Check Hungary VAT number.
- '''
- if len(vat) != 8:
- return False
- try:
- int(vat)
- except:
- return False
- if int(vat[0]) <= 0:
- return False
- sum = 9 * int(vat[0]) + 7 * int(vat[1]) + 3 * int(vat[2]) + \
- 1 * int(vat[3]) + 9 * int(vat[4]) + 7 * int(vat[5]) + \
- 3 * int(vat[6])
- check = 10 - (sum % 10)
- if check == 10:
- check = 0
- if check != int(vat[7]):
- return False
- return True
-
- def check_vat_ie(self, vat):
- '''
- Check Ireland VAT number.
- '''
- if len(vat) != 8:
- return False
- if (ord(vat[1]) >= 65 and ord(vat[1]) <= 90) \
- or vat[1] in ('+', '*'):
- try:
- int(vat[0])
- int(vat[2:7])
- except:
- return False
-
- if int(vat[0]) <= 6:
- return False
-
- sum = 7 * int(vat[2]) + 6 * int(vat[3]) + 5 * int(vat[4]) + \
- 4 * int(vat[5]) + 3 * int(vat[6]) + 2 * int(vat[0])
- check = sum % 23
- if check == 0:
- check = 'W'
- else:
- check = chr(check + 64)
- if check != vat[7]:
- return False
- return True
- else:
- try:
- int(vat[0:7])
- except:
- return False
-
- sum = 8 * int(vat[0]) + 7 * int(vat[1]) + 6 * int(vat[2]) + \
- 5 * int(vat[3]) + 4 * int(vat[4]) + 3 * int(vat[5]) + \
- 2 * int(vat[6])
- check = sum % 23
- if check == 0:
- check = 'W'
- else:
- check = chr(check + 64)
- if check != vat[7]:
- return False
- return True
-
- def check_vat_it(self, vat):
- '''
- Check Italy VAT number.
- '''
- if len(vat) != 11:
- return False
- try:
- int(vat)
- except:
- return False
- if int(vat[0:7]) <= 0:
- return False
- if int(vat[7:10]) <= 0:
- return False
- if int(vat[7:10]) > 100 and int(vat[7:10]) < 120:
- return False
-
- sum = int(vat[0]) + mult_add(2, int(vat[1])) + int(vat[2]) + \
- mult_add(2, int(vat[3])) + int(vat[4]) + \
- mult_add(2, int(vat[5])) + int(vat[6]) + \
- mult_add(2, int(vat[7])) + int(vat[8]) + \
- mult_add(2, int(vat[9]))
- check = 10 - (sum % 10)
- if check == 10:
- check = 0
- if check != int(vat[10]):
- return False
- return True
-
- def check_vat_lt(self, vat):
- '''
- Check Lithuania VAT number.
- '''
- try:
- int(vat)
- except:
- return False
-
- if len(vat) == 9:
- if int(vat[7]) != 1:
- return False
- sum = 1 * int(vat[0]) + 2 * int(vat[1]) + 3 * int(vat[2]) + \
- 4 * int(vat[3]) + 5 * int(vat[4]) + 6 * int(vat[5]) + \
- 7 * int(vat[6]) + 8 * int(vat[7])
- if sum % 11 == 10:
- sum = 3 * int(vat[0]) + 4 * int(vat[1]) + 5 * int(vat[2]) + \
- 6 * int(vat[3]) + 7 * int(vat[4]) + 8 * int(vat[5]) + \
- 9 * int(vat[6]) + 1 * int(vat[7])
- check = sum % 11
- if check == 10:
- check = 0
- if check != int(vat[8]):
- return False
- return True
- elif len(vat) == 12:
- if int(vat[10]) != 1:
- return False
- sum = 1 * int(vat[0]) + 2 * int(vat[1]) + 3 * int(vat[2]) + \
- 4 * int(vat[3]) + 5 * int(vat[4]) + 6 * int(vat[5]) + \
- 7 * int(vat[6]) + 8 * int(vat[7]) + 9 * int(vat[8]) + \
- 1 * int(vat[9]) + 2 * int(vat[10])
- if sum % 11 == 10:
- sum = 3 * int(vat[0]) + 4 * int(vat[1]) + 5 * int(vat[2]) + \
- 6 * int(vat[3]) + 7 * int(vat[4]) + 8 * int(vat[5]) + \
- 9 * int(vat[6]) + 1 * int(vat[7]) + 2 * int(vat[8]) + \
- 3 * int(vat[9]) + 4 * int(vat[10])
- check = sum % 11
- if check == 10:
- check = 0
- if check != int(vat[11]):
- return False
- return True
- return False
-
- def check_vat_lu(self, vat):
- '''
- Check Luxembourg VAT number.
- '''
- if len(vat) != 8:
- return False
- try:
- int(vat)
- except:
- return False
- if int(vat[0:6]) <= 0:
- return False
- check = int(vat[0:6]) % 89
- if check != int(vat[6:8]):
- return False
- return True
-
- def check_vat_lv(self, vat):
- '''
- Check Latvia VAT number.
- '''
- if len(vat) != 11:
- return False
- try:
- int(vat)
- except:
- return False
- if int(vat[0]) >= 4:
- sum = 9 * int(vat[0]) + 1 * int(vat[1]) + 4 * int(vat[2]) + \
- 8 * int(vat[3]) + 3 * int(vat[4]) + 10 * int(vat[5]) + \
- 2 * int(vat[6]) + 5 * int(vat[7]) + 7 * int(vat[8]) + \
- 6 * int(vat[9])
- if sum % 11 == 4 and int(vat[0]) == 9:
- sum = sum - 45
- if sum % 11 == 4:
- check = 4 - (sum % 11)
- elif sum % 11 > 4:
- check = 14 - (sum % 11)
- elif sum % 11 < 4:
- check = 3 - (sum % 11)
- if check != int(vat[10]):
- return False
- return True
- else:
- if int(vat[2:4]) == 2 and int(vat[4:6]) % 4 > 0:
- if int(vat[0:2]) < 1 or int(vat[0:2]) > 28:
- return False
- if int(vat[2:4]) == 2 and int(vat[4:6]) % 4 == 0:
- if int(vat[0:2]) < 1 or int(vat[0:2]) > 29:
- return False
- if int(vat[2:4]) in (4, 6, 9, 11):
- if int(vat[0:2]) < 1 or int(vat[0:2]) > 30:
- return False
- if int(vat[2:4]) in (1, 3, 5, 7, 8, 10, 12):
- if int(vat[0:2]) < 1 or int(vat[0:2]) > 31:
- return False
- if int(vat[2:4]) < 1 or int(vat[2:4]) > 12:
- return False
- return True
-
- def check_vat_mt(self, vat):
- '''
- Check Malta VAT number.
- '''
- if len(vat) != 8:
- return False
- try:
- int(vat)
- except:
- return False
-
- if int(vat[0:6]) < 100000:
- return False
-
- sum = 3 * int(vat[0]) + 4 * int(vat[1]) + 6 * int(vat[2]) + \
- 7 * int(vat[3]) + 8 * int(vat[4]) + 9 * int(vat[5])
- check = 37 - (sum % 37)
- if check != int(vat[6:8]):
- return False
- return True
-
- def check_vat_nl(self, vat):
- '''
- Check Netherlands VAT number.
- '''
- if len(vat) != 12:
- return False
- try:
- int(vat[0:9])
- int(vat[10:12])
- except:
- return False
- if int(vat[0:8]) <= 0:
- return False
- if vat[9] != 'B':
- return False
-
- sum = 9 * int(vat[0]) + 8 * 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 = sum % 11
- if check == 10:
- return False
- if check != int(vat[8]):
- return False
- return True
-
- def check_vat_pl(self, vat):
- '''
- Check Poland VAT number.
- '''
- if len(vat) != 10:
- return False
- try:
- int(vat)
- except:
- return False
-
- sum = 6 * int(vat[0]) + 5 * int(vat[1]) + 7 * int(vat[2]) + \
- 2 * int(vat[3]) + 3 * int(vat[4]) + 4 * int(vat[5]) + \
- 5 * int(vat[6]) + 6 * int(vat[7]) + 7 * int(vat[8])
- check = sum % 11
- if check == 10:
- return False
- if check != int(vat[9]):
- return False
- return True
-
- def check_vat_pt(self, vat):
- '''
- Check Portugal VAT number.
- '''
- if len(vat) != 9:
- return False
- try:
- int(vat)
- except:
- return False
-
- if int(vat[0]) <= 0:
- return False
-
- sum = 9 * int(vat[0]) + 8 * 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 == 10 or check == 11:
- check = 0
- return True
-
- def check_vat_ro(self, vat):
- '''
- Check Romania VAT number.
- '''
- try:
- int(vat)
- except:
- return False
-
- if len(vat) >= 2 and len(vat) <= 10:
- vat = (10 - len(vat)) * '0' + vat
- sum = 7 * int(vat[0]) + 5 * int(vat[1]) + 3 * int(vat[2]) + \
- 2 * int(vat[3]) + 1 * int(vat[4]) + 7 * int(vat[5]) + \
- 5 * int(vat[6]) + 3 * int(vat[7]) + 2 * int(vat[8])
- check = (sum * 10) % 11
- if check == 10:
- check = 0
- if check != int(vat[9]):
- return False
- return True
- elif len(vat) == 13:
- if int(vat[0]) not in (1, 2, 3, 4, 6):
- return False
- if int(vat[3:5]) < 1 or int(vat[3:5]) > 12:
- return False
- if int(vat[3:5]) == 2 and int(vat[1:3]) % 4 > 0:
- if int(vat[5:7]) < 1 or int(vat[5:7]) > 28:
- return False
- if int(vat[3:5]) == 2 and int(vat[1:3]) % 4 == 0:
- if int(vat[5:7]) < 1 or int(vat[5:7]) > 29:
- return False
- if int(vat[3:5]) in (4, 6, 9, 11):
- if int(vat[5:7]) < 1 or int(vat[5:7]) > 30:
- return False
- if int(vat[3:5]) in (1, 3, 5, 7, 8, 10, 12):
- if int(vat[5:7]) < 1 or int(vat[5:7]) > 31:
- return False
-
- sum = 2 * int(vat[0]) + 7 * int(vat[1]) + 9 * int(vat[2]) + \
- 1 * int(vat[3]) + 4 * int(vat[4]) + 6 * int(vat[5]) + \
- 3 * int(vat[6]) + 5 * int(vat[7]) + 8 * int(vat[8]) + \
- 2 * int(vat[9]) + 7 * int(vat[10]) + 9 * int(vat[11])
- check = sum % 11
- if check == 10:
- check = 1
- if check != int(vat[12]):
- return False
- return True
- return False
-
- def check_vat_se(self, vat):
- '''
- Check Sweden VAT number.
- '''
- if len(vat) != 12:
- return False
- try:
- int(vat)
- except:
- return False
-
- if int(vat[9:11]) < 0:
- return False
-
- sum = mult_add(2, int(vat[0])) + int(vat[1]) + \
- mult_add(2, int(vat[2])) + int(vat[3]) + \
- mult_add(2, int(vat[4])) + int(vat[5]) + \
- mult_add(2, int(vat[6])) + int(vat[7]) + \
- mult_add(2, int(vat[8]))
- check = 10 - (sum % 10)
- if check == 10:
- check = 0
- if check != int(vat[9]):
- return False
- return True
-
- def check_vat_si(self, vat):
- '''
- Check Slovenia VAT number.
- '''
- if len(vat) != 8:
- return False
- try:
- int(vat)
- except:
- return False
- if int(vat[0:7]) <= 999999:
- return False
-
- sum = 8 * int(vat[0]) + 7 * int(vat[1]) + 6 * int(vat[2]) + \
- 5 * int(vat[3]) + 4 * int(vat[4]) + 3 * int(vat[5]) + \
- 2 * int(vat[6])
- check = 11 - (sum % 11)
- if check == 10:
- check = 0
- if check == 11:
- check = 1
- if check != int(vat[7]):
- return False
- return True
-
- def check_vat_sk(self, vat):
- '''
- Check Slovakia VAT number.
- '''
- try:
- int(vat)
- except:
- return False
- if len(vat) not in(9, 10):
- return False
-
- if int(vat[0:2]) in (0, 10, 20) and len(vat) == 10:
- return True
-
- if len(vat) == 10:
- if int(vat[0:2]) < 54 or int(vat[0:2]) > 99:
- return False
-
- if len(vat) == 9:
- if int(vat[0:2]) > 53 :
- return False
-
- if int(vat[2:4]) < 1:
- return False
- if int(vat[2:4]) > 12 and int(vat[2:4]) < 51:
- return False
- if int(vat[2:4]) > 62:
- return False
- if int(vat[2:4]) in (2, 52) and int(vat[0:2]) % 4 > 0:
- if int(vat[4:6]) < 1 or int(vat[4:6]) > 28:
- return False
- if int(vat[2:4]) in (2, 52) and int(vat[0:2]) % 4 == 0:
- if int(vat[4:6]) < 1 or int(vat[4:6]) > 29:
- return False
- if int(vat[2:4]) in (4, 6, 9, 11, 54, 56, 59, 61):
- if int(vat[4:6]) < 1 or int(vat[4:6]) > 30:
- return False
- if int(vat[2:4]) in (1, 3, 5, 7, 8, 10, 12,
- 51, 53, 55, 57, 58, 60, 62):
- if int(vat[4:6]) < 1 or int(vat[4:6]) > 31:
- return False
- return True