[TELE-1398]add is_valid_tva_number

This commit is contained in:
Nicolas Selva 2022-07-29 11:17:25 +02:00
parent 63e14d73e8
commit b72cd08029
1 changed files with 29 additions and 1 deletions

View File

@ -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):
"""