[TELE-1398]add is_valid_tva_number
This commit is contained in:
parent
63e14d73e8
commit
b72cd08029
|
@ -5,7 +5,6 @@ from decimal import Decimal
|
|||
import requests
|
||||
from django import template
|
||||
from django.utils.safestring import SafeText
|
||||
|
||||
from wcs.qommon import misc
|
||||
from wcs.qommon.templatetags.qommon import unlazy
|
||||
|
||||
|
@ -40,6 +39,7 @@ def diff_dates(oldest_date, newest_date):
|
|||
newest_date : datetime ou SafeText sous la forme "jj/mm/aaaa" ou "aaaa-mm-jj" ou "jj-mm-aaaa"
|
||||
return : (str) nombre de jours de différence entre les 2 dates
|
||||
"""
|
||||
|
||||
def transform_date(fdate):
|
||||
if "/" in fdate:
|
||||
return datetime.datetime.strptime(fdate, "%d/%m/%Y")
|
||||
|
@ -48,6 +48,7 @@ def diff_dates(oldest_date, newest_date):
|
|||
return datetime.datetime.strptime(fdate, "%Y-%m-%d")
|
||||
if len(fdate.split("-")[0]) == 2:
|
||||
return datetime.datetime.strptime(fdate, "%d-%m-%Y")
|
||||
|
||||
if type(oldest_date) == SafeText:
|
||||
oldest_date = transform_date(oldest_date)
|
||||
if type(newest_date) == SafeText:
|
||||
|
@ -56,6 +57,33 @@ def diff_dates(oldest_date, newest_date):
|
|||
return str(diff)
|
||||
|
||||
|
||||
@register.filter
|
||||
def is_valid_tva_number(tva_number, formatage=True):
|
||||
"""
|
||||
tva_number : (str) numéro de tva BE0000000097
|
||||
formatage : (bool) True/False
|
||||
return : (bool) True si le numéro est valide
|
||||
"""
|
||||
# si formatage alors enlève les espaces, points et tirets
|
||||
if formatage:
|
||||
tva_number = tva_number.replace(" ", "").replace(".", "").replace("-", "")
|
||||
|
||||
if not tva_number[:2].upper() == "BE":
|
||||
return False
|
||||
if not len(tva_number) == 12:
|
||||
if len(tva_number) == 11:
|
||||
tva_number = tva_number[:2] + "0" + tva_number[2:]
|
||||
else:
|
||||
return False
|
||||
if re.match(r"^\d{10}$", tva_number[2:]):
|
||||
int_value = int(tva_number[2:10])
|
||||
check_digit = int(int_value / 97) * 97
|
||||
if (97 - (int_value - check_digit)) == int(tva_number[10:12]):
|
||||
return True
|
||||
else:
|
||||
return False
|
||||
|
||||
|
||||
@register.filter
|
||||
def liste_type_rdv_plusieurs_personnes(value):
|
||||
"""
|
||||
|
|
Loading…
Reference in New Issue