TESTER NUMÉRO TVA INTRA-COMMUNAUTAIRE

katsankat Messages postés 571 Date d'inscription vendredi 30 décembre 2005 Statut Membre Dernière intervention 12 juillet 2012 - 3 févr. 2006 à 06:47
Yurck Messages postés 1 Date d'inscription mardi 18 octobre 2005 Statut Membre Dernière intervention 9 juillet 2009 - 9 juil. 2009 à 14:41
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/35869-tester-numero-tva-intra-communautaire

Yurck Messages postés 1 Date d'inscription mardi 18 octobre 2005 Statut Membre Dernière intervention 9 juillet 2009
9 juil. 2009 à 14:41
Merci pour ton code.

A noter qu'un contrôle supplémentaire peut être fait sur la tva intra française.

En effet sa structure est ainsi faite

FR XX 999 9999 99Y
Où XX représente une clef informatique dont je ne connais pas la méthode de contrôle
mais Y est une clé de contrôle des 8 chiffres précédents (le tout formant le code SIREN)

Le principe est le suivant : on multiplie les chiffres de rang impair à partir de la droite par 1,
ceux de rang pair par 2 ; la somme des chiffres obtenus doit être un multiple de 10.

exemple : soit le SIREN 732 829 320
pour vérifier : 7 3 2 8 2 9 3 2 0
rang pair x 2 : 6 16 18 4
rang impair x 1 : 7 2 2 3 0
----------------------
somme : 7+6+2+1+6+2+1+8+3+4+0 = 40
Le numéro est exact.

Je ne connais pas le VB alors je laisse le soin à qui en a besoin de faire ce bout de code.
Zlub Messages postés 809 Date d'inscription mercredi 11 octobre 2000 Statut Membre Dernière intervention 29 septembre 2010 8
3 févr. 2006 à 18:01
NB : ça serait sympas d'indiquer pourquoi vous mettez une mauvaise note afin que je puisse améliorer le code ou clarifier des points. Sinon ça n'a pas de sens.
Zlub Messages postés 809 Date d'inscription mercredi 11 octobre 2000 Statut Membre Dernière intervention 29 septembre 2010 8
3 févr. 2006 à 16:21
ECONS > je suppose que c'est pour ça. Je n'ai pas trouvé le detail dans la doc. Etant donné que ni Ecosse, ni Pays de Galles ont un code pays, j'imagine que GB les regroupent.
De toute façon, les codes pays sont fixés par les pays membres de UE et ne sont donc pas de moi.
econs Messages postés 4030 Date d'inscription mardi 13 mai 2003 Statut Membre Dernière intervention 23 décembre 2008 24
3 févr. 2006 à 16:10
Zlub > Y'a pas de problème, tu peux laisser comme c'est là. Y'a pas de faute de programmation.

Je me demandais : le Case "GB" ne serait-il pas de la forme :
isIntraComValide = (Angleterre_valide Or Ecosse_Valide Or Pays_de_Galles_Valide) ?
C'est pour çà que tu l'as appelé GB ?
katsankat Messages postés 571 Date d'inscription vendredi 30 décembre 2005 Statut Membre Dernière intervention 12 juillet 2012 3
3 févr. 2006 à 16:06
Salut si tu veux on le fait ensemble car je vais faire le client en C sous linux: la méthode est la même.
Zlub Messages postés 809 Date d'inscription mercredi 11 octobre 2000 Statut Membre Dernière intervention 29 septembre 2010 8
3 févr. 2006 à 15:34
Salut,

Merci pour vos commentaires.

KatSankat > en effet, j'ai prévu de m'occuper de ça. En l'état c'est une version "autonome" donc sans connexion au Net. Mais l'idée de vraiment vérifier me plait bien et je vais sans doute bosser dessus.

ECONS > C'est vonlontairement que j'ai fait ainsi en hésitant sur ce point. J'ai opté pour cette solution pour faciliter les modifications au cas où les codes d'un pays changerait. Je me renseigne sur ce point et le cas échéant, je réduirais le nombres de lignes.

++

Zlub
econs Messages postés 4030 Date d'inscription mardi 13 mai 2003 Statut Membre Dernière intervention 23 décembre 2008 24
3 févr. 2006 à 14:55
Pour ceux qui voudraient écrire beaucoup moins de lignes de code, il est possible de regrouper les pays qui nécessitent les mêmes actions.


Comme ces actions-ci :


Case "DE": isIntraComValide (finLength 9) And IsNumeric(fin) ' Allemagne
Case "EL": isIntraComValide (finLength 9) And IsNumeric(fin) ' Grèce
Case "GR": isIntraComValide (finLength 9) And IsNumeric(fin) ' Grèce
Case "PT": isIntraComValide (finLength 9) And IsNumeric(fin) ' Portugal
Case "EE": isIntraComValide (finLength 9) And IsNumeric(fin) ' Estonie

qui se regroupent comme ceci :

Case "DE","EL","GR","PT","EE": isIntraComValide (finLength 9) And IsNumeric(fin)

On peut ainsi enlever dix lignes de ton code.
Chacun fait comme il préfère. Ce n'est en aucun cas une critique de ta source qui est propre et facile à lire.
katsankat Messages postés 571 Date d'inscription vendredi 30 décembre 2005 Statut Membre Dernière intervention 12 juillet 2012 3
3 févr. 2006 à 06:47
J'aime. Et c'est du bon VB.
Deux remarques:
Il faut affiner le Royaume-Uni.
Ce qui serait intéressant serait un client HTTP qui vérifie en ligne: autant bénéficier de la base de données actualisée en temps réel.
Rejoignez-nous