Skip to content
Extraits de code Groupes Projets
Valider f7917f00 rédigé par rastapopoulos@spip.org's avatar rastapopoulos@spip.org
Parcourir les fichiers

On met le SIREN et le SIRET dans la même vérification avec une option

parent f2fbc7dd
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -14,10 +14,8 @@ verifier/entier.php -text ...@@ -14,10 +14,8 @@ verifier/entier.php -text
verifier/entier.yaml -text verifier/entier.yaml -text
verifier/regex.php -text verifier/regex.php -text
verifier/regex.yaml -text verifier/regex.yaml -text
verifier/siren.php -text verifier/siren_siret.php -text
verifier/siren.yaml -text verifier/siren_siret.yaml -text
verifier/siret.php -text
verifier/siret.yaml -text
verifier/taille.php -text verifier/taille.php -text
verifier/taille.yaml -text verifier/taille.yaml -text
verifier/telephone.php -text verifier/telephone.php -text
......
...@@ -28,6 +28,9 @@ $GLOBALS[$GLOBALS['idx_lang']] = array( ...@@ -28,6 +28,9 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
'option_entier_max_label' => 'Valeur maximum', 'option_entier_max_label' => 'Valeur maximum',
'option_entier_min_label' => 'Valeur minimum', 'option_entier_min_label' => 'Valeur minimum',
'option_regex_modele_label' => 'La valeur doit correspondre au masque suivant', '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_max_label' => 'Taille maximum',
'option_taille_min_label' => 'Taille minimum', 'option_taille_min_label' => 'Taille minimum',
...@@ -42,10 +45,8 @@ $GLOBALS[$GLOBALS['idx_lang']] = array( ...@@ -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_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' => 'Expression régulière',
'type_regex_description' => 'V&eacute;rifie que la valeur correspond au masque demand&eacute;. 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_regex_description' => 'V&eacute;rifie que la valeur correspond au masque demand&eacute;. 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_siret' => 'SIREN ou SIRET',
'type_siren_description' => 'V&eacute;rifie que la valeur est un num&eacute;ro valide du <a href="http://fr.wikipedia.org/wiki/SIREN">Syst&egrave;me d&rsquo;Identification du R&eacute;pertoire des ENtreprises</a> fran&ccedil;ais.', 'type_siren_siret_description' => 'V&eacute;rifie que la valeur est un num&eacute;ro valide du <a href="http://fr.wikipedia.org/wiki/SIREN">Syst&egrave;me d&rsquo;Identification du R&eacute;pertoire des ENtreprises</a> fran&ccedil;ais.',
'type_siret' => 'SIRET',
'type_siret_description' => 'V&eacute;rifie que la valeur est un num&eacute;ro valide du <a href="http://fr.wikipedia.org/wiki/SIRET">Syst&egrave;me d&rsquo;Identification du R&eacute;pertoire des ETablissements</a> fran&ccedil;ais.',
'type_taille' => 'Taille', 'type_taille' => 'Taille',
'type_taille_description' => 'V&eacute;rifie que la taille de la valeur correspond au minimum et/ou au maximum demand&eacute;.', 'type_taille_description' => 'V&eacute;rifie que la taille de la valeur correspond au minimum et/ou au maximum demand&eacute;.',
'type_telephone' => 'Num&eacute;ro de t&eacute;l&eacute;phone', 'type_telephone' => 'Num&eacute;ro de t&eacute;l&eacute;phone',
......
<?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;
}
titre: '<:verifier:type_siren:>'
description: '<:verifier:type_siren_description:>'
<?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 '';
}
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:>'
<?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;
}
titre: '<:verifier:type_siret:>'
description: '<:verifier:type_siret_description:>'
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter