diff --git a/imio_teleservices_templatetags/templatetags/imio_teleservices.py b/imio_teleservices_templatetags/templatetags/imio_teleservices.py index 3c51fb0..23b3b9b 100644 --- a/imio_teleservices_templatetags/templatetags/imio_teleservices.py +++ b/imio_teleservices_templatetags/templatetags/imio_teleservices.py @@ -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): """