From f7917f00d20b37cd91df489446cf3790defd6123 Mon Sep 17 00:00:00 2001 From: "rastapopoulos@spip.org" <> Date: Thu, 8 Apr 2010 13:46:18 +0000 Subject: [PATCH] =?UTF-8?q?On=20met=20le=20SIREN=20et=20le=20SIRET=20dans?= =?UTF-8?q?=20la=20m=C3=AAme=20v=C3=A9rification=20avec=20une=20option?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitattributes | 6 ++-- lang/verifier_fr.php | 9 +++--- verifier/siren.php | 31 --------------------- verifier/siren.yaml | 3 -- verifier/siren_siret.php | 58 +++++++++++++++++++++++++++++++++++++++ verifier/siren_siret.yaml | 12 ++++++++ verifier/siret.php | 33 ---------------------- verifier/siret.yaml | 3 -- 8 files changed, 77 insertions(+), 78 deletions(-) delete mode 100644 verifier/siren.php delete mode 100644 verifier/siren.yaml create mode 100644 verifier/siren_siret.php create mode 100644 verifier/siren_siret.yaml delete mode 100644 verifier/siret.php delete mode 100644 verifier/siret.yaml diff --git a/.gitattributes b/.gitattributes index 91b36e3..592e632 100644 --- a/.gitattributes +++ b/.gitattributes @@ -14,10 +14,8 @@ verifier/entier.php -text verifier/entier.yaml -text verifier/regex.php -text verifier/regex.yaml -text -verifier/siren.php -text -verifier/siren.yaml -text -verifier/siret.php -text -verifier/siret.yaml -text +verifier/siren_siret.php -text +verifier/siren_siret.yaml -text verifier/taille.php -text verifier/taille.yaml -text verifier/telephone.php -text diff --git a/lang/verifier_fr.php b/lang/verifier_fr.php index df26b59..9fa4abe 100644 --- a/lang/verifier_fr.php +++ b/lang/verifier_fr.php @@ -28,6 +28,9 @@ $GLOBALS[$GLOBALS['idx_lang']] = array( 'option_entier_max_label' => 'Valeur maximum', 'option_entier_min_label' => 'Valeur minimum', 'option_regex_modele_label' => 'La valeur doit correspondre au masque suivant', + 'option_siren_siret_mode' => 'Que voulez-vous vérifier ?', + 'option_siren_siret_mode_siren' => 'le SIREN', + 'option_siren_siret_mode_siret' => 'le SIRET', 'option_taille_max_label' => 'Taille maximum', 'option_taille_min_label' => 'Taille minimum', @@ -42,10 +45,8 @@ $GLOBALS[$GLOBALS['idx_lang']] = array( 'type_entier_description' => 'Vérifie que la valeur est un entier, avec la possibilité de restreindre entre deux valeurs.', 'type_regex' => 'Expression régulière', 'type_regex_description' => 'Vérifie que la valeur correspond au masque demandé. Pour l\'utilisation des masques, reportez-vous à <a href="http://fr2.php.net/manual/fr/reference.pcre.pattern.syntax.php">l\'aide en ligne de PHP</a>.', - 'type_siren' => 'SIREN', - 'type_siren_description' => 'Vérifie que la valeur est un numéro valide du <a href="http://fr.wikipedia.org/wiki/SIREN">Système d’Identification du Répertoire des ENtreprises</a> français.', - 'type_siret' => 'SIRET', - 'type_siret_description' => 'Vérifie que la valeur est un numéro valide du <a href="http://fr.wikipedia.org/wiki/SIRET">Système d’Identification du Répertoire des ETablissements</a> français.', + 'type_siren_siret' => 'SIREN ou SIRET', + 'type_siren_siret_description' => 'Vérifie que la valeur est un numéro valide du <a href="http://fr.wikipedia.org/wiki/SIREN">Système d’Identification du Répertoire des ENtreprises</a> français.', 'type_taille' => 'Taille', 'type_taille_description' => 'Vérifie que la taille de la valeur correspond au minimum et/ou au maximum demandé.', 'type_telephone' => 'Numéro de téléphone', diff --git a/verifier/siren.php b/verifier/siren.php deleted file mode 100644 index 2c7d288..0000000 --- a/verifier/siren.php +++ /dev/null @@ -1,31 +0,0 @@ -<?php - -// Sécurité -if (!defined("_ECRIRE_INC_VERSION")) return; - -/** - * 1/ Un SIREN comporte STRICTEMENT 9 caractères - * 1b/ Un SIRET comporte strictement 14 caractères - * 2/ Un siren/siret utilise une clef de controle "1-2" - * Un siren/siret est donc valide si la somme des chiffres paires - * + la somme du double de tous les chiffres impairs (16 = 1+6 = 7) est un multiple de 10 - */ - -function verifier_siren_dist($valeur, $options=array()){ - $erreur = _T('verifier:erreur_siren'); - $ok = ''; - - // Si pas 9 caractère, c'est déjà foiré ! - if(!preg_match('/^[0-9]{9}$/',$valeur)) return $erreur; - - // On vérifie la clef de controle "1-2" - $somme = 0; - $i = 0; // Les impaires - while($i < 9){ $somme += $valeur[$i]; $i+=2; } - $i = 1; // Les paires ! - while($i < 9){ if((2*$valeur[$i])>9) $somme += (2*$valeur[$i])-9; else $somme += 2*$valeur[$i]; $i+=2; } - - if($somme % 10) return $erreur; - - return $ok; -} diff --git a/verifier/siren.yaml b/verifier/siren.yaml deleted file mode 100644 index 2ea4ea1..0000000 --- a/verifier/siren.yaml +++ /dev/null @@ -1,3 +0,0 @@ - -titre: '<:verifier:type_siren:>' -description: '<:verifier:type_siren_description:>' diff --git a/verifier/siren_siret.php b/verifier/siren_siret.php new file mode 100644 index 0000000..b284a77 --- /dev/null +++ b/verifier/siren_siret.php @@ -0,0 +1,58 @@ +<?php + +// Sécurité +if (!defined("_ECRIRE_INC_VERSION")) return; + +/** + * 1/ Un SIREN comporte STRICTEMENT 9 caractères + * 1b/ Un SIRET comporte strictement 14 caractères + * 2/ Un siren/siret utilise une clef de controle "1-2" + * Un siren/siret est donc valide si la somme des chiffres paires + * + la somme du double de tous les chiffres impairs (16 = 1+6 = 7) est un multiple de 10 + */ + +function verifier_siren_siret_dist($valeur, $options=array()){ + if (!$options['mode'] or !in_array($options['mode'], array('siren', 'siret'))){ + $mode = 'siren'; + } + else{ + $mode = $options['mode']; + } + + // Test de SIREN + if ($mode == 'siren'){ + $erreur = _T('verifier:erreur_siren'); + + // Si pas 9 caractère, c'est déjà foiré ! + if(!preg_match('/^[0-9]{9}$/',$valeur)) return $erreur; + + // On vérifie la clef de controle "1-2" + $somme = 0; + $i = 0; // Les impaires + while($i < 9){ $somme += $valeur[$i]; $i+=2; } + $i = 1; // Les paires ! + while($i < 9){ if((2*$valeur[$i])>9) $somme += (2*$valeur[$i])-9; else $somme += 2*$valeur[$i]; $i+=2; } + + if ($somme % 10) return $erreur; + } + // Test de SIRET + else{ + $erreur = _T('verifier:erreur_siret'); + + // Si pas 14 caractère, c'est déjà foiré ! + if(!preg_match('/^[0-9]{14}$/',$valeur)) return $erreur; + if(preg_match('/[0]{8}/',$valeur)) return $erreur; + + // Pour le SIRET on vérifie la clef de controle "1-2" avec les impaires *2 + // (vs pairs*2 pour SIREN, parce qu'on part de la fin) + $somme = 0; + $i = 1; // Les paires + while($i < 14){ $somme += $valeur[$i]; $i+=2; } + $i = 0; // Les impaires ! + while($i < 14){ if((2*$valeur[$i])>9) $somme += (2*$valeur[$i])-9; else $somme += 2*$valeur[$i]; $i+=2; } + + if($somme % 10) return $erreur; + } + + return ''; +} diff --git a/verifier/siren_siret.yaml b/verifier/siren_siret.yaml new file mode 100644 index 0000000..3644932 --- /dev/null +++ b/verifier/siren_siret.yaml @@ -0,0 +1,12 @@ + +titre: '<:verifier:type_siren_siret:>' +description: '<:verifier:type_siren_siret_description:>' +options: + - + saisie: 'radio' + options: + nom: 'mode' + label: '<:verifier:option_siren_siret_mode:>' + datas: + siren: '<:verifier:option_siren_siret_mode_siren:>' + siret: '<:verifier:option_siren_siret_mode_siret:>' diff --git a/verifier/siret.php b/verifier/siret.php deleted file mode 100644 index 43d5d57..0000000 --- a/verifier/siret.php +++ /dev/null @@ -1,33 +0,0 @@ -<?php - -// Sécurité -if (!defined("_ECRIRE_INC_VERSION")) return; - -/** - * 1/ Un SIREN comporte STRICTEMENT 9 caractères - * 1b/ Un SIRET comporte strictement 14 caractères - * 2/ Un siren/siret utilise une clef de controle "1-2" - * Un siren/siret est donc valide si la somme des chiffres paires - * + la somme du double de tous les chiffres impairs (16 = 1+6 = 7) est un multiple de 10 - */ - -function verifier_siret_dist($valeur, $options=array()){ - $erreur = _T('verifier:erreur_siret'); - $ok = ''; - - // Si pas 14 caractère, c'est déjà foiré ! - if(!preg_match('/^[0-9]{14}$/',$valeur)) return $erreur; - if(preg_match('/[0]{8}/',$valeur)) return $erreur; - - // Pour le SIRET on vérifie la clef de controle "1-2" avec les impaires *2 - // (vs pairs*2 pour SIREN, parce qu'on part de la fin) - $somme = 0; - $i = 1; // Les paires - while($i < 14){ $somme += $valeur[$i]; $i+=2; } - $i = 0; // Les impaires ! - while($i < 14){ if((2*$valeur[$i])>9) $somme += (2*$valeur[$i])-9; else $somme += 2*$valeur[$i]; $i+=2; } - - if($somme % 10) return $erreur; - - return $ok; -} diff --git a/verifier/siret.yaml b/verifier/siret.yaml deleted file mode 100644 index e64f9b4..0000000 --- a/verifier/siret.yaml +++ /dev/null @@ -1,3 +0,0 @@ - -titre: '<:verifier:type_siret:>' -description: '<:verifier:type_siret_description:>' -- GitLab