Projet

Général

Profil

Development #35619

validation code IBAN

Ajouté par Frédéric Péters il y a plus de 4 ans. Mis à jour il y a plus de 4 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Version cible:
-
Début:
27 août 2019
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:
Non

Description

Il y a du code qui s'est trouvé dans #30849, qu'il faudrait intégrer dans la nouvelle mécanique de validation (#11455).


Fichiers

Révisions associées

Révision d0842a57 (diff)
Ajouté par Nicolas Roche il y a plus de 4 ans

fields: add nir and iban algorithms to string field validation (#35619)

Historique

#1

Mis à jour par Nicolas Roche il y a plus de 4 ans

  • Assigné à mis à Nicolas Roche

Ok, je regarde.
il s'agit de la des algorithmes donnés dans la documentation de la Banque Postale pour la mise en place du TIP : le RIB et l'IBAN.
Peut-être que c'est redondant avec ce que l'on a déjà.

#2

Mis à jour par Nicolas Roche il y a plus de 4 ans

En fait seul l'algo du RIB est issu du document de la poste.
Cet algo est rendu limite obsolète par celui du code IBAN.

J'ai également repris la validation du numéro de sécurité social,
mais on peut se demander si c'est une bonne idée d'inciter à le saisir (dixit Thomas).

Donc dites-moi si je vire le NIR et/ou le RIB du patch, d'autant plus qu'ils n'apparaissent pas dans le titre du ticket.

Sinon, le patch est largement inspiré de #35013 (merci Benjamin).

#3

Mis à jour par Mikaël Ates il y a plus de 4 ans

Donc dites-moi si je vire le NIR et/ou le RIB du patch, d'autant plus qu'ils n'apparaissent pas dans le titre du ticket.

Ce serait bien de les conserver.

#4

Mis à jour par Thomas Noël il y a plus de 4 ans

Nicolas Roche a écrit :

En fait seul l'algo du RIB est issu du document de la poste. Cet algo est rendu limite obsolète par celui du code IBAN.

Ce n'est pas l'algo qui est obsolète, c'est la notion de RIB ; ça n'existe plus. Aujourd'hui c'est l'IBAN qui est toujours demandé. Ca m'irait de ne pas avoir la validation de RIB, pour ne pas avoir à maintenir du code déjà mort (et ne plus jamais oser le retirer ensuite de peur qu'il soit utilisé quand même).

J'ai également repris la validation du numéro de sécurité sociale,
mais on peut se demander si c'est une bonne idée d'inciter à le saisir (dixit Thomas).

Je trouve effectivement ça assez malsain. Pour moi ce numéro n'est utile que dans une communication entre assuré et l'assurance santé. Mais bon, on peut ajouter ce validateur, à la rigueur ça nous fera une bonne façon de détecter son usage :-)

Mikaël Ates a écrit :

Ce serait bien de les conserver.

En fait y'a rien à conserver, car tout cela est nouveau. Je propose donc de ne pas ajouter la notion de RIB, ça sert à rien du tout. Et ok pour la validation du numéro de sécu.


Sur le patch en lui-même, je vois deux pépins:
  • il faut vérifier que iban_key.isdigit()
  • même chose pour string_value[13:].isdigit() (tu pourrais créer une variable nir_key = string_value[13:] pour gagner un poil de lisibilité de l'algo)

Ensuite, avant les calculs de clés, je pense qu'on pourrait vérifier d'autres choses sur le numéro SS (genre le premier chiffre ne peut pas être 0, le mois de naissance doit être entre 01 et 12, etc). Sur l'IBAN c'est plus délicat, mais j'ai le sentiment qu'on pourrait par exemple vérifier que les deux premiers codes sont un pays...? (mais où avoir la liste... no sé)

En tout cas il faudrait arriver à dire, quelque part, que ces vérifications sont juste "par calcul", on ne valide pas du tout que le numéro de sécu ou l'IBAN existe réellement, juste qu'il semble avoir une bonne tête... Peut-être qu'au lieu de

        ('iban', {'title': N_('IBAN Code'), 'function': 'validate_iban'}),

on pourrait plus explicitement déclarer :

        ('iban', {'title': N_('IBAN Code format'), 'function': 'validate_iban_format'}),
#5

Mis à jour par Nicolas Roche il y a plus de 4 ans

  • Statut changé de Solution proposée à En cours

En effet tous les RIB qui ne contiennent pas de lettre passent aussi la validation IBAN, par exemple.
Pour l'IBAN on peut difficilement faire mieux, mais bien vu pour le NIR.

#6

Mis à jour par Nicolas Roche il y a plus de 4 ans

En fait si, mais pour les IBAN français uniquement (commençant par 'FRxx') on peut valider le RIB sous-jacent.

#7

Mis à jour par Nicolas Roche il y a plus de 4 ans

Voici une seconde proposition qui prend en compte les remarques précédentes.
J'ai entre autre retiré le RIB et ajouté des tests sur les composantes du numéro de sécu.

#8

Mis à jour par Nicolas Roche il y a plus de 4 ans

j'ai oublié un test (interdiff).

#9

Mis à jour par Thomas Noël il y a plus de 4 ans

  • Statut changé de Solution proposée à Solution validée

Un seul détail de nommage, ne pas préciser "Code" quand on parle déjà d'un numéro, donc :

-        ('nir-fr', {'title': N_('NIR Code (France)'), 'function': 'validate_nir'}),
-        ('iban', {'title': N_('IBAN Code'), 'function': 'validate_iban'}),
+        ('nir-fr', {'title': N_('NIR (France)'), 'function': 'validate_nir'}),
+        ('iban', {'title': N_('IBAN'), 'function': 'validate_iban'}),

Et push.

#10

Mis à jour par Nicolas Roche il y a plus de 4 ans

zut, c'était pour m'aligner sur l'existant

        ('zipcode-fr', {'title': N_('Zip Code (France)'), 'regex': '\d{5}'}),
        ('siren-fr', {'title': N_('SIREN Code (France)'), 'function': 'validate_siren'}),
        ('siret-fr', {'title': N_('SIRET Code (France)'), 'function': 'validate_siret'}),

#11

Mis à jour par Thomas Noël il y a plus de 4 ans

Oui, il existe des codes postaux, des numéros SIRET et des numéros SIREN ; mais on ne dit pas "numéro IBAN" ou "code IBAN", on dit juste "IBAN" car le N est déjà "numéro". Même pour NIR.

#12

Mis à jour par Nicolas Roche il y a plus de 4 ans

  • Statut changé de Solution validée à Résolu (à déployer)
commit d0842a5729dbaaf9fe1de365a96b3f73ae5fba3c
Author: Nicolas ROCHE <nroche@entrouvert.com>
Date:   Wed Aug 28 17:23:30 2019 +0200

    fields: add nir and iban algorithms to string field validation (#35619)
#13

Mis à jour par Frédéric Péters il y a plus de 4 ans

  • Statut changé de Résolu (à déployer) à Solution déployée

Formats disponibles : Atom PDF