851 lines
32 KiB
PHP
851 lines
32 KiB
PHP
#!/usr/bin/php -c/var/www/batch/config/php_batch_sd.ini
|
|
<?php
|
|
/** @todo Si MAJ en annule et remplace prévoir les manips SQL suivantes :
|
|
** A. Création d'une table insee.tmp sans aucun index
|
|
** B. A la fin du chargement construire les index
|
|
** //ALTER TABLE insee ADD PRIMARY KEY (insSIREN, insNIC);
|
|
** ALTER TABLE insee ADD INDEX (insSIREN, insNIC);
|
|
** ALTER TABLE insee ADD FULLTEXT (insNOMEN);
|
|
** ALTER TABLE insee ADD INDEX (insSIEGE);
|
|
** ALTER TABLE insee ADD INDEX (insCODPOS);
|
|
** ALTER TABLE insee ADD INDEX (insDEPET);
|
|
** ALTER TABLE insee ADD INDEX (insAPET700);
|
|
** ALTER TABLE insee ADD INDEX (insAPEN700);
|
|
** ALTER TABLE insee ADD INDEX (insCJ);
|
|
** --- ?
|
|
** ALTER TABLE insee ADD FULLTEXT (insNOMET);
|
|
** ALTER TABLE insee ADD FULLTEXT (insSIGLE);
|
|
** ALTER TABLE insee ADD INDEX (insNOMEN);
|
|
** ALTER TABLE insee ADD INDEX (insNOMET);
|
|
** ALTER TABLE insee ADD INDEX (insSIGLE);
|
|
** --- ?
|
|
**
|
|
** Si pas d'erreur :
|
|
** 1. detruire insee
|
|
** 2. Renommer insee.tmp en insee
|
|
**/
|
|
|
|
global $tabSep;
|
|
$tabSep=array('"', '|', '#', '+', '-', '=', '_', '/', '\'', '\\', '&', '.', ';', ',', '!', '?', ':', '*', '°', '(', ')', '[', ']', '{', '}');
|
|
|
|
global $tabInutils;
|
|
$tabInutils=array('', 'la', 'le', 'du', 'les', 'aux', 'au', 'des', 'ma', 'mon', 'ton', 'tes', 'nos', 'vos', 'l', 'de', 'ta', 'a', 'et', 'on', 'en');
|
|
|
|
function specialCharToSpace($str) {
|
|
$str=strtr( strtoupper($str),
|
|
'àáâãäåæçèéêëìíîïðñòóôõöùúûüýÿ',
|
|
// strtoupper('aaaaaaaceeeeiiiionooooouuuuyy'));
|
|
strtoupper('AAAAAAACEEEEIIIIONOOOOOUUUUYY'));
|
|
$ret='';
|
|
for ($i=0; $i<strlen($str); $i++) {
|
|
if (ord($str[$i])>64 && ord($str[$i])<91)
|
|
$ret.=$str[$i];
|
|
else
|
|
$ret.=' ';
|
|
}
|
|
return $ret;
|
|
}
|
|
|
|
|
|
function getTabWords($str) {
|
|
global $tabInutils;
|
|
// Découpe du champ NOMEN
|
|
$tabMot=array();
|
|
$tabRS=explode(' ', specialCharToSpace($str));
|
|
$i=0;
|
|
foreach($tabRS as $k => $mot) {
|
|
// Si le mot courant n'est pas inutil, on le garde !
|
|
if (!in_array(trimAccent($mot), $tabInutils))
|
|
{
|
|
$tabMot[$i]=$mot;
|
|
$i++;
|
|
}
|
|
}
|
|
|
|
return $tabMot;
|
|
}
|
|
/*
|
|
include_once('/var/www/_includes/timer.php');
|
|
include_once('/var/www/_includes/phonex.php');
|
|
include_once('/var/www/_includes/soundex.php');
|
|
function soundex2($str) {
|
|
$soundex2 = new soundex2;
|
|
$soundex2 -> build ($str);
|
|
return $soundex2 -> sString;
|
|
}
|
|
*/
|
|
|
|
// $ret=mysql_query('ALTER TABLE `insee` RENAME `insee_'. date('Y-m-d') .'`;');
|
|
// echo date ('Y/m/d - H:i:s')." - Sauvegarde de l'ancienne base INSEE\n";
|
|
|
|
|
|
/*
|
|
$ret=mysql_query('ALTER TABLE `insee_recherche` RENAME `insee_recherche_'. date('Y-m-d') .'`;');
|
|
echo date ('Y/m/d - H:i:s')." - Sauvegarde de l'ancienne base de recherche INSEE\n";
|
|
|
|
$ret=mysql_query("CREATE TABLE IF NOT EXISTS insee_recherche (
|
|
insSIREN varchar(9) NOT NULL default '',
|
|
insNIC varchar(5) NOT NULL default '',
|
|
motNOM varchar(24) default NULL,
|
|
shxNOM varchar(4) default NULL,
|
|
phxNOM bigint(12) default '0',
|
|
motADR varchar(24) default NULL,
|
|
shxADR varchar(4) default NULL,
|
|
phxADR bigint(12) default '0',
|
|
insNUMVOIE int(4) default NULL,
|
|
insTYPVOIE char(3) default NULL,
|
|
CodeInseeCommune varchar(5) default NULL,
|
|
insLIBCOM varchar(26) default NULL,
|
|
insSIEGE tinyint(1) NOT NULL default '0',
|
|
insAPET700 varchar(4) default NULL,
|
|
insAPET31 char(2) default NULL,
|
|
insCJ varchar(4) default NULL,
|
|
insAPEN700 varchar(4) default NULL,
|
|
insAPEN31 char(2) default NULL,
|
|
SPEACT char(1) default NULL,
|
|
SORLJ_N char(1) default NULL,
|
|
SOEVT char(2) default NULL,
|
|
SOETEL varchar(10) default NULL,
|
|
SOEFAX varchar(10) default NULL,
|
|
SODTEN_D varchar(8) default NULL) TYPE=MyISAM COMMENT='Base INSEE de recherche';");
|
|
echo date ('Y/m/d - H:i:s')." - Création de la structure de la base de recherche INSEE sans les index\n";
|
|
*/
|
|
/*,
|
|
KEY `insSIREN` (`insSIREN`,`insNIC`),
|
|
KEY `insSIEGE` (`insSIEGE`),
|
|
KEY `insCODPOS` (`insCODPOS`),
|
|
KEY `insDEPET` (`insDEPET`),
|
|
KEY `insAPET700` (`insAPET700`),
|
|
KEY `insCJ` (`insCJ`),
|
|
KEY `insAPEN700` (`insAPEN700`),
|
|
KEY `insSIGLE` (`insSIGLE`),
|
|
KEY `insNOMEN_2` (`insNOMEN`),
|
|
KEY `insNOMET_2` (`insNOMET`),
|
|
FULLTEXT KEY `insNOMEN` (`insNOMEN`),
|
|
FULLTEXT KEY `insNOMET` (`insNOMET`),
|
|
FULLTEXT KEY `insSIGLE_2` (`insSIGLE`)*/
|
|
|
|
/** On ne prend l'heure qu'une seule fois par script PHP et on initialise des constantes.
|
|
*
|
|
* DATETIME YmdHis
|
|
* DATETIME_LOG Y-m-d H:i:s Date du jour pour les insertions en BDD
|
|
* NOW His Heure d'exécution du script
|
|
* NOW_FORMAT H:i:s Heure d'exécution du script
|
|
* TODAY Ymd Année, Mois, Jour d'exécution du script
|
|
* TODAY_FORMAT Y-m-d
|
|
* TODAY_AFF d/m/Y
|
|
*/
|
|
|
|
define ('TODAY', substr(DATETIME,0,8));
|
|
define ('TODAY_FORMAT', substr(DATETIME,0,4).'-'.substr(DATETIME,4,2).'-'.substr(DATETIME,6,2));
|
|
define ('NOW_FORMAT', substr(DATETIME,8,2).':'.substr(DATETIME,10,2).':'.substr(DATETIME,12,2));
|
|
|
|
set_time_limit(0);
|
|
$heureDebut=NOW_FORMAT;
|
|
$dateJour=TODAY;
|
|
$dateJourFormat=TODAY_FORMAT;
|
|
|
|
echo date ('Y/m/d - H:i:s') . " - Début du traitement\r\n";
|
|
flush();
|
|
$db_name=$db_table='';
|
|
|
|
//Initialistation des variables
|
|
$argv=$_SERVER['argv'];
|
|
if ($_SERVER['argc']<3) die('Usage : '.basename($argv[0]). " [OPTION]... FICHIER(S)
|
|
Charger un fichier au format Notice80 dans une base de données avec création de la table qui aura le nom du fichier chargé..
|
|
|
|
Options disponibles:
|
|
-d=nom_bdd Nom de la base de données
|
|
-t=nom_table Nom de la table
|
|
|
|
(*): Valeurs par défaut !
|
|
");
|
|
for ($i=1,$j=0; isset($argv[$i]); $i++) {
|
|
if (substr($argv[$i],0,1)=='-') {
|
|
switch (substr($argv[$i],1,1)) {
|
|
case 'd': $db_name=substr($argv[$i],3); break;
|
|
case 't': $db_table=substr($argv[$i],3); break;
|
|
default: die('Option '. $argv[$i] . " inconnue !\n");
|
|
}
|
|
} else {
|
|
$fichier_csv[$j]=$argv[$i];
|
|
$j++;
|
|
}
|
|
}
|
|
if ($db_name=='') die("Base de données non communiquée !\n");
|
|
if ($db_table=='') die("Table non communiquée !\n");
|
|
|
|
$iDb=new WDB($db_name);
|
|
|
|
$sql="CREATE TABLE IF NOT EXISTS $db_table (
|
|
insSIREN varchar(9) NOT NULL default '',
|
|
insNIC varchar(5) NOT NULL default '',
|
|
insNOMEN varchar(40) default NULL,
|
|
insNOMET varchar(40) default NULL,
|
|
insSIGLE varchar(20) default NULL,
|
|
insCADR varchar(26) default NULL,
|
|
insNUMVOIE varchar(4) default NULL,
|
|
`insINDREP` char(1) default NULL,
|
|
`insTYPVOIE` char(3) default NULL,
|
|
`insLIBVOIE` varchar(26) default NULL,
|
|
`insDISTSP` varchar(26) default NULL,
|
|
`insACHPOSTE` varchar(32) default NULL,
|
|
`insZR` varchar(11) default NULL,
|
|
`insRPET` tinyint(2) NOT NULL default '0',
|
|
`insDEPET` char(2) default NULL,
|
|
`insARRONET` char(2) default NULL,
|
|
`insCTONET` char(3) default NULL,
|
|
`insCOMET` char(3) default NULL,
|
|
`insLIBCOM` varchar(26) default NULL,
|
|
`insDU` char(2) default NULL,
|
|
`insTU` tinyint(1) NOT NULL default '0',
|
|
`insU7U` char(2) default NULL,
|
|
`insCODPOS` varchar(5) default NULL,
|
|
`insILOT` varchar(8) default NULL,
|
|
`insTCD` tinyint(2) NOT NULL default '0',
|
|
`insZEMET` char(2) default NULL,
|
|
`insCODEVOIE` varchar(5) default NULL,
|
|
`insAPET700` varchar(4) default NULL,
|
|
`insAPET31` char(2) default NULL,
|
|
`insSIEGE` tinyint(1) NOT NULL default '0',
|
|
`insTEFET` tinyint(2) NOT NULL default '0',
|
|
`insEFETCENT` mediumint(6) default NULL,
|
|
`insORIGINE` tinyint(1) NOT NULL default '0',
|
|
`insDCRET` varchar(6) default NULL,
|
|
`insMMINTRET` tinyint(2) NOT NULL default '0',
|
|
`insNATURE` char(2) default NULL,
|
|
`insSAISONAT` tinyint(1) NOT NULL default '0',
|
|
`insMODET` tinyint(1) NOT NULL default '0',
|
|
`insDAPET` varchar(4) default NULL,
|
|
`insDEFET` varchar(4) default NULL,
|
|
`insSINGT` tinyint(2) NOT NULL default '0',
|
|
`insAUXILT` tinyint(1) NOT NULL default '0',
|
|
`insEAEANT` varchar(4) default NULL,
|
|
`insEAEAPET` varchar(4) default NULL,
|
|
`insEAESEC1T` varchar(4) default NULL,
|
|
`insEAESEC2T` varchar(4) default NULL,
|
|
`insCJ` varchar(4) default NULL,
|
|
`insTEFEN` tinyint(2) NOT NULL default '0',
|
|
`insEFENCENT` mediumint(6) default NULL,
|
|
`insAPEN700` varchar(4) default NULL,
|
|
`insAPEN31` char(2) default NULL,
|
|
`insAPRM` varchar(5) default NULL,
|
|
`insTCA` tinyint(1) NOT NULL default '0',
|
|
`insSEXE` enum('M','F','') NOT NULL default 'M',
|
|
`insRECME` tinyint(1) NOT NULL default '0',
|
|
`insDAPEN` varchar(4) default NULL,
|
|
`insDEFEN` varchar(4) default NULL,
|
|
`insDCREN` varchar(6) default NULL,
|
|
`insMMINTREN` tinyint(2) NOT NULL default '0',
|
|
`insMONOACT` tinyint(1) default NULL,
|
|
`insMODEN` tinyint(1) NOT NULL default '0',
|
|
`insORDIN` tinyint(1) NOT NULL default '0',
|
|
`insEAEANN` varchar(4) default NULL,
|
|
`insEAEAPEN` varchar(4) default NULL,
|
|
`insEAESEC1N` varchar(4) default NULL,
|
|
`insEAESEC2N` varchar(4) default NULL,
|
|
`insEAESEC3N` varchar(4) default NULL,
|
|
`insEAESEC4N` varchar(4) default NULL,
|
|
`insNBTOA` SMALLINT(4) UNSIGNED NOT NULL default '0',
|
|
`insTCAEXPOR` tinyint(1) NOT NULL default '0',
|
|
`insREGIMP` char(2) default NULL,
|
|
`insMONOREG` tinyint(1) default NULL,
|
|
`insRPEN` tinyint(2) NOT NULL default '0',
|
|
`insDEPCOMEN` varchar(5) default NULL,
|
|
`insVMAJ` enum('C','E','I','F','S') NOT NULL default 'C',
|
|
`insVMAJ1` tinyint(1) NOT NULL default '0',
|
|
`insVMAJ2` tinyint(1) NOT NULL default '0',
|
|
`insVMAJ3` tinyint(1) NOT NULL default '0',
|
|
`SPEACT` char(1) default NULL,
|
|
`SORLJ_N` char(1) default NULL,
|
|
`SOEVT` char(2) default NULL,
|
|
`SOROL` char(1) default NULL,
|
|
`SODJL_D` varchar(8) default NULL,
|
|
`SOEDRQ` char(3) default NULL,
|
|
`SOEDRN_X` varchar(60) default NULL,
|
|
`SOEDRD_D` varchar(8) default NULL,
|
|
`SOEDRL_N` varchar(35) default NULL,
|
|
`SORSNC` char(1) default NULL,
|
|
`SORSNO` char(2) default NULL,
|
|
`SOETEL` varchar(10) default NULL,
|
|
`SOEFAX` varchar(10) default NULL,
|
|
`SODTEN_D` varchar(8) default NULL) TYPE=MyISAM COMMENT='Base INSEE courante';";
|
|
$ret=$iDb->query($sql, true);
|
|
echo date ('Y/m/d - H:i:s')." - Création de la structure de la base '$db_table' sans les index\n";
|
|
//echo "$sql\n";
|
|
$tabFichDate=$fichier_csv;
|
|
|
|
$messageInsertion=$messageSuppression='';
|
|
|
|
for ($nbFichiers=0; isset($tabFichDate[$nbFichiers]); $nbFichiers++)
|
|
{
|
|
$tab_nom_date =explode('|', $tabFichDate[$nbFichiers]);
|
|
$nomFichier =$tab_nom_date[0];
|
|
$moisFichier ='200601';//$tab_nom_date[1];
|
|
|
|
$fp=fopen($nomFichier,"r");
|
|
if (!$fp) {
|
|
echo date ('Y/m/d - H:i:s')." - Impossible d'ouvrir le fichier n°$nbFichiers à traiter : ".$rep.$nomFichier." !\r\n";
|
|
/* $tabDataToUpdate=array( 'NUM'=>$numScript,
|
|
'DATE_JOUR'=>$dateJour,
|
|
'HEURE_DEBUT'=>$heureDebut,
|
|
'HEURE_FIN'=>$heureFin,
|
|
'CODE_RETOUR'=>0,
|
|
'NB_MAIL'=>1,
|
|
'RESUME_EXEC'=>"Impossible d'ouvrir le fichier n°$nbFichiers à traiter : $nomFichier.");*/
|
|
echo date ('Y/m/d - H:i:s') . " - Fin du traitement\r\n";
|
|
exit();
|
|
}
|
|
|
|
$nbLignes=0;
|
|
$vmajC=0;
|
|
$vmajE=0;
|
|
$vmajI=0;
|
|
$vmajF=0;
|
|
$vmajS=0;
|
|
$totI=0;
|
|
$totS=0;
|
|
|
|
echo date ('Y/m/d - H:i:s')." - Début du traitement du fichier n°$nbFichiers=$nomFichier du mois de $moisFichier !\r\n";
|
|
flush();
|
|
|
|
while (!feof($fp))
|
|
{
|
|
$nbLignes++;
|
|
|
|
$a = fgets($fp, 4096);
|
|
unset($tabErreur); $nbErr=0;
|
|
|
|
$insSIREN =substr($a, 0, 9);
|
|
$insNIC =substr($a, 9, 5);
|
|
$insVMAJ =substr($a,447, 1);
|
|
/* if ( $insVMAJ==' ' )
|
|
$insVMAJ ='C';
|
|
*/
|
|
|
|
if (!valideSiret($insSIREN.$insNIC)) {
|
|
if (trim($a)=='')
|
|
$insVMAJ='EOF';
|
|
else
|
|
$tabErreur[$nbErr++]="SIRET incorrect : $insSIREN.$insNIC";
|
|
}
|
|
|
|
if ( $insVMAJ!='C' && $insVMAJ!='E' && $insVMAJ!='I' && $insVMAJ!='F' && $insVMAJ!='S' && $insVMAJ!='EOF' ) {
|
|
if ( $insVMAJ!=' ' && $insVMAJ!=chr(0) ) {
|
|
// echo date ('Y/m/d - H:i:s') . " - ATTENTION, ligne $nbLignes, forçage du code VMAJ à C car VMAJ='$insVMAJ' (Code ASCII=".ord($insVMAJ).") inexistant pour le siret $insSIREN $insNIC !!!\r\n";
|
|
flush();
|
|
}
|
|
$insVMAJ='C';
|
|
}
|
|
|
|
switch($insVMAJ)
|
|
{
|
|
case 'C':
|
|
case 'F':
|
|
case 'S':
|
|
// Requêtes de création ou mise à jour
|
|
// ***********************************
|
|
$insNOMEN = trim( substr($a, 14,40) );
|
|
|
|
$insNOMET = trim( substr($a, 54,40) );
|
|
|
|
$insSIGLE = trim( substr($a, 94,20) );
|
|
|
|
$insCADR = trim( substr($a,114,26) );
|
|
$insNUMVOIE = trim( substr($a,140, 4) );
|
|
$insINDREP = trim( substr($a,144, 1) );
|
|
$insTYPVOIE = trim( substr($a,145, 3) ); // Répertorié dans 1 tableau
|
|
// if (!$insee->isTypeVoie($insTYPVOIE))
|
|
// $tabErreur[$nbErr++]="TYPVOIE inconnu : '$insTYPVOIE'";
|
|
$insLIBVOIE = trim( substr($a,148,26) );
|
|
$insDISTSP = trim( substr($a,174,26) );
|
|
$insACHPOSTE = trim( substr($a,200,32) );
|
|
$insZR = trim( substr($a,232,11) );
|
|
$insRPET = (int) substr($a,243, 2); // Répertorié dans 1 tableau
|
|
// if ( trim($insee->getLibRegion($insRPET))=='' )
|
|
// $tabErreur[$nbErr++]="RPET inconnue : '$insRPET' (Code ASCII=".ord(substr($a,243, 1))." & ".ord(substr($a,244, 1)).")";
|
|
$insDEPET = substr($a,245, 2);
|
|
$insARRONET = substr($a,247, 2);
|
|
$insCTONET = substr($a,249, 3);
|
|
$insCOMET = substr($a,252, 3);
|
|
$insLIBCOM = trim( substr($a,255,26) );
|
|
$insDU = substr($a,281, 2);
|
|
$insTU = (int) substr($a,283, 1); // de 0 à 8
|
|
// if ($insTU > 8)
|
|
// $tabErreur[$nbErr++]="TU non comprise entre 0 et 8 : '$insTU' (Code ASCII=".ord(substr($a,283, 1)).")";
|
|
$insU7U = substr($a,284, 2); // Champ UU de l'Insee
|
|
$insCODPOS = substr($a,286, 5);
|
|
$insILOT = trim( substr($a,291, 8)); // toujours vide car tarif spécial !
|
|
$insTCD = (int) substr($a,299, 2);
|
|
|
|
$insZEMET = substr($a,301, 2);
|
|
$insCODEVOIE = substr($a,303, 5);
|
|
$insAPET700 = substr($a,308, 4);
|
|
$insAPET31 = substr($a,312, 2);
|
|
$insSIEGE = (int) substr($a,314, 1);
|
|
$insTEFET = (int) substr($a,315, 2);
|
|
$insEFETCENT = trim( substr($a,317, 6)); // Numérique
|
|
if ( $insEFETCENT=='' )
|
|
$insEFETCENT='NULL';
|
|
elseif (!is_numeric($insEFETCENT)) {
|
|
// if ( $insEFETCENT!='N' )
|
|
// $tabErreur[$nbErr++]="EFETCENT non numérique : $insEFETCENT";
|
|
$insEFETCENT='NULL';
|
|
}
|
|
else
|
|
$insEFETCENT=(int)$insEFETCENT;
|
|
$insORIGINE = (int) substr($a,323, 1); // de 0 à 8
|
|
// if ($insORIGINE > 8)
|
|
// $tabErreur[$nbErr++]="ORIGINE non comprise entre 0 et 8 : $insORIGINE";
|
|
$insDCRET = substr($a,324, 6);
|
|
$insMMINTRET = (int) substr($a,330, 2); // de 0 à 12
|
|
// if ( $insMMINTRET < 0 || $insMMINTRET > 12 )
|
|
// $tabErreur[$nbErr++]="MMINTRET non compris entre 0 et 12 : $insMMINTRET (Code ASCII=".ord(substr($a,330, 1))." & ".ord(substr($a,331, 1)).")";
|
|
$insNATURE = (int) substr($a,332, 2); // Numérique définit dans 1 tableau//
|
|
// if ( !$insee->isNature($insNATURE) )
|
|
// $tabErreur[$nbErr++]="NATURE inconnue : $insNATURE (Code ASCII=".ord(substr($a,332, 1))." & ".ord(substr($a,333, 1)).")";
|
|
$insSAISONAT = (int) substr($a,334, 1);
|
|
$insMODET = (int) substr($a,335, 1); // de 0 à 3
|
|
if ($insMODET > 3)
|
|
$tabErreur[$nbErr++]="MODET différent de 0,1,2 ou 3 : $insMODET (Code ASCII=".ord(substr($a,335, 1)).")";
|
|
$insDAPET = trim( substr($a,336, 4));
|
|
$insDEFET = trim( substr($a,340, 4));
|
|
$insSINGT = (int) substr($a,344, 2); // Numérique définit dans 1 tableau
|
|
// if ( trim($insee->getLibSingularite($insSINGT))=='' )
|
|
// $tabErreur[$nbErr++]="SINGT inconnue : $insSINGT (Code ASCII=".ord(substr($a,344, 1))." & ".ord(substr($a,345, 1)).")";
|
|
$insAUXILT = (int) substr($a,346, 1); // 0, 1 ou 9
|
|
// if ($insAUXILT > 1 && $insAUXILT < 9)
|
|
// $tabErreur[$nbErr++]="AUXILT différent de 0, 1 ou 9 : $insAUXILT (Code ASCII=".ord(substr($a,346, 1)).")";
|
|
$insEAEANT = trim( substr($a,347, 4));
|
|
$insEAEAPET = trim( substr($a,351, 4));
|
|
$insEAESEC1T = trim( substr($a,355, 4));
|
|
$insEAESEC2T = trim( substr($a,359, 4));
|
|
$insCJ = substr($a,363, 4);
|
|
$insTEFEN = (int) substr($a,367, 2);
|
|
$insEFENCENT = trim( substr($a,369, 6)); // Numérique
|
|
if ( $insEFENCENT=='' )
|
|
$insEFENCENT='NULL';
|
|
elseif (!is_numeric($insEFENCENT)) {
|
|
// if ( $insEFENCENT!='N' )
|
|
// $tabErreur[$nbErr++]="EFENCENT non numérique : $insEFENCENT (Code ASCII=".ord($insEFENCENT).")";
|
|
$insEFENCENT='NULL';
|
|
}
|
|
else
|
|
$insEFENCENT=(int)$insEFENCENT;
|
|
$insAPEN700 = substr($a,375, 4);
|
|
$insAPEN31 = substr($a,379, 2);
|
|
$insAPRM = trim( substr($a,381, 5));
|
|
$insTCA = (int) substr($a,386, 1); // de 0 à 9
|
|
$insSEXE = strtoupper( substr($a,387, 1)); // M, F ou blanc
|
|
if ( $insSEXE!='M' && $insSEXE!='F' && $insSEXE!=' ' )
|
|
// if ( $insSEXE!=chr(0) )
|
|
// $tabErreur[$nbErr++]="SEXE inconnu : $insSEXE (Code ASCII=".ord($insVMAJ).")";
|
|
// else
|
|
$insSEXE=' ';
|
|
$insRECME = (int) substr($a,388, 1); // 0 ou 1
|
|
// if ( $insRECME > 1 )
|
|
// $tabErreur[$nbErr++]="RECME différent de 0 ou 1 : $insRECME (Code ASCII=".ord(substr($a,388, 1)).")";
|
|
$insDAPEN = trim( substr($a,389, 4));
|
|
$insDEFEN = trim( substr($a,393, 4));
|
|
$insDCREN = substr($a,397, 6);
|
|
$insMMINTREN = (int) substr($a,403, 2); // de 0 à 12
|
|
// if ( $insMMINTREN < 0 || $insMMINTREN > 12 )
|
|
// $tabErreur[$nbErr++]="MMINTREN non compris entre 0 et 12 : $insMMINTREN (Code ASCII=".ord(substr($a,403, 1))." & ".ord(substr($a,404, 1)).")";
|
|
$insMONOACT = trim( substr($a,405, 1)); // 0,1,2 ou NULL
|
|
if ( $insMONOACT == '' )
|
|
$insMONOACT = 'NULL';
|
|
else {
|
|
// if( $insMONOACT != '0' && $insMONOACT != '1' && $insMONOACT != '2' )
|
|
// $tabErreur[$nbErr++]="MONOACT différent de 0,1,2 ou NULL : $insMONOACT (Code ASCII=".ord(substr($a,405, 1)).")";
|
|
$insMONOACT=(int)$insMONOACT;
|
|
}
|
|
$insMODEN = (int) substr($a,406, 1); // 0,1,2 ou 3
|
|
// if ($insMODEN > 3)
|
|
// $tabErreur[$nbErr++]="MODEN différent de 0,1,2 ou 3 : $insMODEN (Code ASCII=".ord(substr($a,406, 1)).")";
|
|
$insORDIN = (int) substr($a,407, 1); // 0 ou 1
|
|
// if ($insORDIN > 1)
|
|
// $tabErreur[$nbErr++]="ORDIN différent de 0 ou 1 : $insORDIN (Code ASCII=".ord(substr($a,407, 1)).")";
|
|
$insEAEANN = trim( substr($a,408, 4));
|
|
$insEAEAPEN = trim( substr($a,412, 4));
|
|
$insEAESEC1N = trim( substr($a,416, 4));
|
|
$insEAESEC2N = trim( substr($a,420, 4));
|
|
$insEAESEC3N = trim( substr($a,424, 4));
|
|
$insEAESEC4N = trim( substr($a,428, 4));
|
|
$insNBTOA = (int) substr($a,432, 4); // de 0 à 9999
|
|
$insTCAEXPOR = (int) substr($a,436, 1); // 0,1,2,3 ou 4
|
|
// if ($insTCAEXPOR > 4)
|
|
// $tabErreur[$nbErr++]="TCAEXPOR différent de 0,1,2,3 ou 4 : $insTCAEXPOR (Code ASCII=".ord(substr($a,436, 1)).")";
|
|
$insREGIMP = substr($a,437, 2);
|
|
$insMONOREG = trim( substr($a,439, 1)); // 0,1,2 ou NULL
|
|
if ( $insMONOREG == '' )
|
|
$insMONOREG = 'NULL';
|
|
else {
|
|
// if( $insMONOREG != '0' && $insMONOREG != '1' && $insMONOREG != '2' )
|
|
// $tabErreur[$nbErr++]="MONOREG différent de 0,1,2 ou NULL : $insMONOREG (Code ASCII=".ord(substr($a,439, 1)).")";
|
|
$insMONOREG=(int)$insMONOREG;
|
|
}
|
|
$insRPEN = (int) substr($a,440, 2);
|
|
$insDEPCOMEN = substr($a,442, 5);
|
|
// $insVMAJ = substr($a,447, 1);
|
|
$insVMAJ1 = (int) substr($a,448, 1); // 0 ou 1
|
|
// if ($insVMAJ1 > 1)
|
|
// $tabErreur[$nbErr++]="VMAJ1 différent de 0 ou 1 : $insVMAJ1 (Code ASCII=".ord(substr($a,448, 1)).")";
|
|
$insVMAJ2 = (int) substr($a,449, 1); // 0 ou 1
|
|
// if ($insVMAJ2 > 1)
|
|
// $tabErreur[$nbErr++]="VMAJ2 différent de 0 ou 1 : $insVMAJ2 (Code ASCII=".ord(substr($a,449, 1)).")";
|
|
$insVMAJ3 = (int) substr($a,450, 1); // 0 ou 1
|
|
// if ($insVMAJ3 > 1)
|
|
// $tabErreur[$nbErr++]="VMAJ3 différent de 0 ou 1 : $insVMAJ3 (Code ASCII=".ord(substr($a,450, 1)).")";
|
|
|
|
$bilSPEACT = trim( substr($a,451, 1)); //
|
|
$bilSORLJ_N = trim( substr($a,452, 1));
|
|
$bilSOEVT = trim( substr($a,453, 2)); //
|
|
$bilSOROL = trim( substr($a,455, 1)); //
|
|
$bilSODJL_D = trim( substr($a,456, 8)); //
|
|
$bilSOEDRQ = trim( substr($a,464, 3)); //
|
|
$bilSOEDRN_X= trim( substr($a,467, 60)); //
|
|
$bilSOEDRD_D= trim( substr($a,527, 8)); //
|
|
$bilSOEDRL_N= trim( substr($a,535, 35)); //
|
|
$bilSORSNC = trim( substr($a,570, 1)); //
|
|
$bilSORSNO = trim( substr($a,571, 2)); //
|
|
$bilSOETEL = trim( substr($a,573, 10)); //
|
|
$bilSOEFAX = trim( substr($a,583, 10)); //
|
|
$bilSODTEN_D= trim( substr($a,593, 8)); //
|
|
// Traitement du NOM, Enseigne et sigle pour optimiser la recherche
|
|
//$tabNOMEN=getTabWords($insNOMEN);
|
|
//$tabNOMET=getTabWords($insNOMET);
|
|
//$tabSIGLE=getTabWords($insSIGLE);
|
|
/*$tabNOM=array_merge($tabNOMEN,
|
|
$tabNOMET,
|
|
$tabSIGLE);
|
|
array_unique($tabNOM);
|
|
$nbNOM=count($tabNOM);
|
|
$nbLignesRec=$nbNOM;
|
|
// Traitement des différents zones d'adresse pour optimiser la recherche
|
|
$tabCADR=getTabWords($insCADR);
|
|
$tabLIBVOIE=getTabWords($insLIBVOIE);
|
|
$tabDISTSP=getTabWords($insDISTSP);
|
|
$tabADR=array_merge($tabCADR,
|
|
$tabLIBVOIE,
|
|
$tabDISTSP);
|
|
array_unique($tabADR);
|
|
$nbADR=count($tabADR);
|
|
|
|
if ($nbADR>$nbLignesRec) $nbLignesRec=$nbADR;
|
|
|
|
$CodeInseeCommune=$insDEPET.$insCOMET;
|
|
$insNUMVOIE=(int)$insNUMVOIE;
|
|
*/
|
|
|
|
/*
|
|
for ($i_rec=0; $i_rec<$nbLignesRec; $i_rec++) {
|
|
$tabDataToInsertR=array('insSIREN' => $insSIREN,
|
|
'insNIC' => $insNIC,
|
|
'motNOM' => $tabNOM[$i_rec],
|
|
'shxNOM' => soundex2($tabNOM[$i_rec]),
|
|
'phxNOM' => phonex($tabNOM[$i_rec]),
|
|
'motADR' => $tabADR[$i_rec],
|
|
'shxADR' => soundex2($tabADR[$i_rec]),
|
|
'phxADR' => phonex($tabADR[$i_rec]),
|
|
'insNUMVOIE' => $insNUMVOIE,
|
|
'insTYPVOIE' => $insTYPVOIE,
|
|
'CodeInseeCommune'=> $CodeInseeCommune,
|
|
'insLIBCOM' => $insLIBCOM,
|
|
'insSIEGE' => $insSIEGE,
|
|
'insAPET700' => $insAPET700,
|
|
'insAPET31' => $insAPET31,
|
|
'insCJ' => $insCJ,
|
|
'insAPEN700' => $insAPEN700,
|
|
'insAPEN31' => $insAPEN31,
|
|
'SPEACT' => $bilSPEACT,
|
|
'SORLJ_N' => $bilSORLJ_N,
|
|
'SOEVT' => $bilSOEVT,
|
|
'SOETEL' => $bilSOETEL,
|
|
'SOEFAX' => $bilSOEFAX,
|
|
'SODTEN_D' => $bilSODTEN_D );
|
|
$ret=mysql_insert('insee_recherche', $tabDataToInsertR);
|
|
}
|
|
|
|
**********/
|
|
$tabDataToInsert=array(
|
|
'insSIREN' => $insSIREN,
|
|
'insNIC' => $insNIC,
|
|
'insNOMEN' => $insNOMEN,
|
|
'insNOMET' => $insNOMET,
|
|
'insSIGLE' => $insSIGLE,
|
|
'insCADR' => $insCADR,
|
|
'insNUMVOIE' => $insNUMVOIE,
|
|
'insINDREP' => $insINDREP,
|
|
'insTYPVOIE' => $insTYPVOIE,
|
|
'insLIBVOIE' => $insLIBVOIE,
|
|
'insDISTSP' => $insDISTSP,
|
|
'insACHPOSTE' => $insACHPOSTE,
|
|
'insZR' => $insZR,
|
|
'insRPET' => $insRPET,
|
|
'insDEPET' => $insDEPET,
|
|
'insARRONET' => $insARRONET,
|
|
'insCTONET' => $insCTONET,
|
|
'insCOMET' => $insCOMET,
|
|
'insLIBCOM' => $insLIBCOM,
|
|
'insDU' => $insDU,
|
|
'insTU' => $insTU,
|
|
'insU7U' => $insU7U,
|
|
'insCODPOS' => $insCODPOS,
|
|
'insILOT' => $insILOT,
|
|
'insTCD' => $insTCD,
|
|
'insZEMET' => $insZEMET,
|
|
'insCODEVOIE' => $insCODEVOIE,
|
|
'insAPET700' => $insAPET700,
|
|
'insAPET31' => $insAPET31,
|
|
'insSIEGE' => $insSIEGE,
|
|
'insTEFET' => $insTEFET,
|
|
'insEFETCENT' => $insEFETCENT,
|
|
'insORIGINE' => $insORIGINE,
|
|
'insDCRET' => $insDCRET,
|
|
'insMMINTRET' => $insMMINTRET,
|
|
'insNATURE' => $insNATURE,
|
|
'insSAISONAT' => $insSAISONAT,
|
|
'insMODET' => $insMODET,
|
|
'insDAPET' => $insDAPET,
|
|
'insDEFET' => $insDEFET,
|
|
'insSINGT' => $insSINGT,
|
|
'insAUXILT' => $insAUXILT,
|
|
'insEAEANT' => $insEAEANT,
|
|
'insEAEAPET' => $insEAEAPET,
|
|
'insEAESEC1T' => $insEAESEC1T,
|
|
'insEAESEC2T' => $insEAESEC2T,
|
|
'insCJ' => $insCJ,
|
|
'insTEFEN' => $insTEFEN,
|
|
'insEFENCENT' => $insEFENCENT,
|
|
'insAPEN700' => $insAPEN700,
|
|
'insAPEN31' => $insAPEN31,
|
|
'insAPRM' => $insAPRM,
|
|
'insTCA' => $insTCA,
|
|
'insSEXE' => $insSEXE,
|
|
'insRECME' => $insRECME,
|
|
'insDAPEN' => $insDAPEN,
|
|
'insDEFEN' => $insDEFEN,
|
|
'insDCREN' => $insDCREN,
|
|
'insMMINTREN' => $insMMINTREN,
|
|
'insMONOACT' => $insMONOACT,
|
|
'insMODEN' => $insMODEN,
|
|
'insORDIN' => $insORDIN,
|
|
'insEAEANN' => $insEAEANN,
|
|
'insEAEAPEN' => $insEAEAPEN,
|
|
'insEAESEC1N' => $insEAESEC1N,
|
|
'insEAESEC2N' => $insEAESEC2N,
|
|
'insEAESEC3N' => $insEAESEC3N,
|
|
'insEAESEC4N' => $insEAESEC4N,
|
|
'insNBTOA' => $insNBTOA,
|
|
'insTCAEXPOR' => $insTCAEXPOR,
|
|
'insREGIMP' => $insREGIMP,
|
|
'insMONOREG' => $insMONOREG,
|
|
'insRPEN' => $insRPEN,
|
|
'insDEPCOMEN' => $insDEPCOMEN,
|
|
'insVMAJ' => $insVMAJ,
|
|
'insVMAJ1' => $insVMAJ1,
|
|
'insVMAJ2' => $insVMAJ2,
|
|
'insVMAJ3' => $insVMAJ3,
|
|
'SPEACT' => $bilSPEACT,
|
|
'SORLJ_N' => $bilSORLJ_N,
|
|
'SOEVT' => $bilSOEVT,
|
|
'SOROL' => $bilSOROL,
|
|
'SODJL_D' => $bilSODJL_D,
|
|
'SOEDRQ' => $bilSOEDRQ,
|
|
'SOEDRN_X' => $bilSOEDRN_X,
|
|
'SOEDRD_D' => $bilSOEDRD_D,
|
|
'SOEDRL_N' => $bilSOEDRL_N,
|
|
'SORSNC' => $bilSORSNC,
|
|
'SORSNO' => $bilSORSNO,
|
|
'SOETEL' => $bilSOETEL,
|
|
'SOEFAX' => $bilSOEFAX,
|
|
'SODTEN_D' => $bilSODTEN_D,
|
|
);
|
|
$insVMAJ3 = (int) substr($a,450, 1);
|
|
|
|
switch($insVMAJ)
|
|
{
|
|
case 'S':
|
|
// Annule et remplace le siège précédent
|
|
// if ($iinsee->addHisto($insSIREN, $insNIC)) {
|
|
// $iinsee->removeInsee($insSIREN, $insNIC);
|
|
$vmajS++;
|
|
// }
|
|
// else {
|
|
// echo date ('Y/m/d - H:i:s') . " - ERREUR d'historisation du siret $insSIREN $insNIC !\r\n";
|
|
// flush();
|
|
// }
|
|
break;
|
|
case 'C':
|
|
// Entrée d'un SIRET - Immatriculation d'un nouvel établissement
|
|
$vmajC++;
|
|
break;
|
|
case 'F':
|
|
// Etat final d'un SIRET modifié (après mise à jour)
|
|
// if ($iinsee->addHisto($insSIREN, $insNIC)) {
|
|
// $iinsee->removeInsee($insSIREN, $insNIC);
|
|
// }
|
|
$vmajF++;
|
|
break;
|
|
}
|
|
|
|
// $resultat=array_merge($resultat, array('Bodacc_Annee_Parution'=>$annee, 'Tri_User_Saisie'=>$_SESSION['user']));
|
|
|
|
$ret=$iDb->insert($db_table, $tabDataToInsert);
|
|
if ($ret!=1) {
|
|
echo date ('Y/m/d - H:i:s') . " - ERREUR à l'insertion du siret $insSIREN $insNIC : $ret !\r\n";
|
|
flush();
|
|
}
|
|
|
|
break;
|
|
case 'E':
|
|
case 'I':
|
|
// Requête de suppression
|
|
// **********************
|
|
// if ($iinsee->addHisto($insSIREN, $insNIC))
|
|
// $iinsee->removeInsee($insSIREN, $insNIC);
|
|
// else {
|
|
// echo date ('Y/m/d - H:i:s') . " - ERREUR d'historisation du siret $insSIREN $insNIC !\r\n";
|
|
// flush();
|
|
// }
|
|
switch($insVMAJ)
|
|
{
|
|
case 'E': // Suppression d'un SIRET - Cessation d'activité d'un établissement
|
|
$vmajE++;
|
|
break;
|
|
case 'I': // Etat initial d'un SIRET modifié (avant mise à jour)
|
|
$vmajI++;
|
|
break;
|
|
}
|
|
case 'EOF':
|
|
break;
|
|
}
|
|
/* if ($tabErreur) {
|
|
echo date ('Y/m/d - H:i:s') . " - ATTENTION, ligne $nbLignes, problèmes pour le siret $insSIREN $insNIC !!!\r\n";
|
|
print_array($tabErreur,0,"txt");
|
|
flush();
|
|
}
|
|
*/
|
|
// if ($nbLignes%20==0) sleep(1);
|
|
// print_array($tabDataToInsert,0,'txt');
|
|
unset($tabDataToInsert);
|
|
}
|
|
fclose ($fp);
|
|
|
|
$strUpdate='';
|
|
|
|
for ($j=$nbFichiers+1; isset($tabFichDate[$j]); $j++)
|
|
$strUpdate.=$tabFichDate[$j].';';
|
|
$tabDataToUpdate=array( 'VALEUR'=>$strUpdate,
|
|
'CLE'=>'INSEE_FICHIERS_MAJ');
|
|
// $iparam->setParamValeur($tabDataToUpdate);
|
|
|
|
$totI=$vmajS+$vmajC+$vmajF;
|
|
$totS=$vmajE+$vmajI;
|
|
|
|
$messageInsertion.="Résumé du traitement du fichier n°$nbFichiers=$nomFichier du mois de $moisFichier !\r\n\r\n";
|
|
$messageInsertion.="Nombre de nouvelles insertion: ".$totI."\r\n";
|
|
$messageInsertion.=" - dont Changement de siège: ".$vmajS."\r\n";
|
|
$messageInsertion.=" - dont Entrée d'un SIRET - Immatriculation d'un nouvel établissement: ".$vmajC."\r\n";
|
|
$messageInsertion.=" - dont Etat final d'un SIRET modifié (après mise à jour): ".$vmajF."\r\n";
|
|
|
|
$messageSuppression.="Nombre de suppression: ".$totS."\r\n";
|
|
$messageSuppression.=" - dont Suppression d'un SIRET - Cessation d'activité d'un établissement: ".$vmajE."\r\n";
|
|
$messageSuppression.=" - dont Etat initial d'un SIRET modifié (avant mise à jour): ".$vmajI."\r\n\r\n";
|
|
|
|
echo date ('Y/m/d - H:i:s') ." - Nombre de nouvelles insertion: ".$totI."\r\n";
|
|
echo date ('Y/m/d - H:i:s') ." - | dont Changement de siège: ".$vmajS."\r\n";
|
|
echo date ('Y/m/d - H:i:s') ." - | dont Entrée d'un SIRET ou Immatriculation d'un nouvel établissement: ".$vmajC."\r\n";
|
|
echo date ('Y/m/d - H:i:s') ." - | dont Etat final d'un SIRET modifié (après mise à jour): ".$vmajF."\r\n";
|
|
echo date ('Y/m/d - H:i:s') ." - Nombre de suppression: ".$totS."\r\n";
|
|
echo date ('Y/m/d - H:i:s') ." - | dont Suppression d'un SIRET ou Cessation d'activité d'un établissement: ".$vmajE."\r\n";
|
|
echo date ('Y/m/d - H:i:s') ." - | dont Etat initial d'un SIRET modifié (avant mise à jour): ".$vmajI."\r\n";
|
|
echo date ('Y/m/d - H:i:s') ." - Fin du traitement du fichier n°$nbFichiers=$nomFichier du mois de $moisFichier !\r\n\r\n";
|
|
flush();
|
|
|
|
}
|
|
|
|
|
|
|
|
echo date ('Y/m/d - H:i:s')." - Création des index de recherche...\n";
|
|
/*
|
|
$ret=mysql_query("ALTER TABLE `insee_recherche` ADD INDEX (`motNOM`);");
|
|
$ret=mysql_query("ALTER TABLE `insee_recherche` ADD INDEX (`shxNOM`);");
|
|
$ret=mysql_query("ALTER TABLE `insee_recherche` ADD INDEX (`phxNOM`);");
|
|
echo date ('Y/m/d - H:i:s')." - Création des index de NOM ok\n";
|
|
$ret=mysql_query("ALTER TABLE `insee_recherche` ADD INDEX (`motADR`);");
|
|
$ret=mysql_query("ALTER TABLE `insee_recherche` ADD INDEX (`shxADR`);");
|
|
$ret=mysql_query("ALTER TABLE `insee_recherche` ADD INDEX (`phxADR`);");
|
|
$ret=mysql_query("ALTER TABLE `insee_recherche` ADD INDEX (`insNUMVOIE`);");
|
|
$ret=mysql_query("ALTER TABLE `insee_recherche` ADD INDEX (`insTYPVOIE`);");
|
|
$ret=mysql_query("ALTER TABLE `insee_recherche` ADD INDEX (`CodeInseeCommune`);");
|
|
echo date ('Y/m/d - H:i:s')." - Création des index d'ADRESSE ok\n";
|
|
*/
|
|
$ret=$iDb->query("ALTER TABLE $db_table ADD INDEX idxSiret(insSIREN, insNIC);");
|
|
$ret=$iDb->query("ALTER TABLE $db_table ADD INDEX (insSIEGE);");
|
|
$ret=$iDb->query("ALTER TABLE $db_table ADD INDEX (insAPET700);");
|
|
$ret=$iDb->query("ALTER TABLE $db_table ADD INDEX (insAPET31);");
|
|
$ret=$iDb->query("ALTER TABLE $db_table ADD INDEX (insCJ);");
|
|
$ret=$iDb->query("ALTER TABLE $db_table ADD INDEX (insAPEN700);");
|
|
$ret=$iDb->query("ALTER TABLE $db_table ADD INDEX (insAPEN31);");
|
|
$ret=$iDb->query("ALTER TABLE $db_table ADD INDEX (SPEACT);");
|
|
$ret=$iDb->query("ALTER TABLE $db_table ADD INDEX (SORLJ_N);");
|
|
$ret=$iDb->query("ALTER TABLE $db_table ADD INDEX (SOEVT);");
|
|
$ret=$iDb->query("ALTER TABLE $db_table ADD INDEX (SOETEL);");
|
|
$ret=$iDb->query("ALTER TABLE $db_table ADD INDEX (SOEFAX);");
|
|
|
|
echo date ('Y/m/d - H:i:s')." - Création des index de recherche terminée !\n";
|
|
|
|
// Mise à jour de la table PARAM
|
|
// -----------------------------
|
|
// 3 - pour la fin d'exécution du traitement en cours
|
|
$tabDataToUpdate=array('VALEUR'=>0,
|
|
'CLE'=>'INSEE_MAJ_ENCOURS');
|
|
// $iparam->setParamValeur($tabDataToUpdate);
|
|
$heureFin=date('H:i:s');
|
|
|
|
$tabDataToUpdateTraitement=array('NUM'=>$numScript,
|
|
'DATE_JOUR'=>$dateJour,
|
|
'HEURE_DEBUT'=>$heureDebut,
|
|
'HEURE_FIN'=>$heureFin,
|
|
'CODE_RETOUR'=>1,
|
|
'NB_MAIL'=>1,
|
|
'RESUME_EXEC'=>"traitement achevé correctement");
|
|
// $itraitement->setTraitement($tabDataToUpdateTraitement);
|
|
|
|
$tabDataMail= array('MAIL_OBJET'=>$sujetMail,
|
|
'MAIL_CORPS'=>"Traitement correct: \r\n".$messageInsertion."\r\n ".$messageSuppression."\r\n");
|
|
// $emailBatch=new EMailBatch($tabDataMail);
|
|
// $emailBatch->mailBatica($numScript);
|
|
echo date ('Y/m/d - H:i:s') . " - Fin correcte du traitement.\r\n";
|
|
exit();
|
|
|
|
function ecrireFichier($fichier,$texte){
|
|
$fp = fopen($fichier, "a");
|
|
fwrite($fp, $texte."\r\n");
|
|
fclose ($fp);
|
|
}
|
|
|
|
function valideSiret($SIRET) {
|
|
if (!is_numeric($SIRET))
|
|
return false;
|
|
|
|
$somme=0;
|
|
for ($i=0; $i<=12; $i+=2) { // Traitement PAIR
|
|
$var_tmp=(string)(2*((integer)substr($SIRET,$i,1)));
|
|
$som_tmp=0;
|
|
for($j=0;$j<strlen($var_tmp);$j++)
|
|
$som_tmp+=(integer)substr($var_tmp,$j,1);
|
|
$somme+=$som_tmp;
|
|
}
|
|
for ($i=1; $i<=13; $i+=2) // Traitement IMPAIR
|
|
$somme+=(integer)substr($SIRET,$i,1);
|
|
|
|
if ((integer)($somme/10)!=($somme/10))
|
|
return false;
|
|
|
|
return true;
|
|
}
|
|
|
|
?>
|