batch/1.1/old/loadNotice80.php

851 lines
32 KiB
PHP
Raw Normal View History

#!/usr/bin/php -c/var/www/batch/config/php_batch_sd.ini
<?php
2013-06-19 08:24:49 +00:00
/** @todo Si MAJ en annule et remplace pr<EFBFBD>voir les manips SQL suivantes :
** A. Cr<EFBFBD>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;
2013-06-19 08:24:49 +00:00
$tabSep=array('"', '|', '#', '+', '-', '=', '_', '/', '\'', '\\', '&', '.', ';', ',', '!', '?', ':', '*', '<27>', '(', ')', '[', ']', '{', '}');
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),
2013-06-19 08:24:49 +00:00
'<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>',
// 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;
2013-06-19 08:24:49 +00:00
// 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';");
2013-06-19 08:24:49 +00:00
echo date ('Y/m/d - H:i:s')." - Cr<43>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
2013-06-19 08:24:49 +00:00
* NOW His Heure d'ex<EFBFBD>cution du script
* NOW_FORMAT H:i:s Heure d'ex<EFBFBD>cution du script
* TODAY Ymd Ann<EFBFBD>e, Mois, Jour d'ex<EFBFBD>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;
2013-06-19 08:24:49 +00:00
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)
2013-06-19 08:24:49 +00:00
Charger un fichier au format Notice80 dans une base de donn<EFBFBD>es avec cr<EFBFBD>ation de la table qui aura le nom du fichier charg<EFBFBD>..
Options disponibles:
2013-06-19 08:24:49 +00:00
-d=nom_bdd Nom de la base de donn<EFBFBD>es
-t=nom_table Nom de la table
2013-06-19 08:24:49 +00:00
(*): Valeurs par d<EFBFBD>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++;
}
}
2013-06-19 08:24:49 +00:00
if ($db_name=='') die("Base de donn<6E>es non communiqu<71>e !\n");
if ($db_table=='') die("Table non communiqu<71>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);
2013-06-19 08:24:49 +00:00
echo date ('Y/m/d - H:i:s')." - Cr<43>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) {
2013-06-19 08:24:49 +00:00
echo date ('Y/m/d - H:i:s')." - Impossible d'ouvrir le fichier n<>$nbFichiers <20> traiter : ".$rep.$nomFichier." !\r\n";
/* $tabDataToUpdate=array( 'NUM'=>$numScript,
'DATE_JOUR'=>$dateJour,
'HEURE_DEBUT'=>$heureDebut,
'HEURE_FIN'=>$heureFin,
'CODE_RETOUR'=>0,
'NB_MAIL'=>1,
2013-06-19 08:24:49 +00:00
'RESUME_EXEC'=>"Impossible d'ouvrir le fichier n<>$nbFichiers <20> 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;
2013-06-19 08:24:49 +00:00
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) ) {
2013-06-19 08:24:49 +00:00
// echo date ('Y/m/d - H:i:s') . " - ATTENTION, ligne $nbLignes, for<6F>age du code VMAJ <20> 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':
2013-06-19 08:24:49 +00:00
// Requ<71>tes de cr<63>ation ou mise <20> 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) );
2013-06-19 08:24:49 +00:00
$insTYPVOIE = trim( substr($a,145, 3) ); // R<>pertori<72> 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) );
2013-06-19 08:24:49 +00:00
$insRPET = (int) substr($a,243, 2); // R<>pertori<72> 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);
2013-06-19 08:24:49 +00:00
$insTU = (int) substr($a,283, 1); // de 0 <20> 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);
2013-06-19 08:24:49 +00:00
$insILOT = trim( substr($a,291, 8)); // toujours vide car tarif sp<73>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);
2013-06-19 08:24:49 +00:00
$insEFETCENT = trim( substr($a,317, 6)); // Num<75>rique
if ( $insEFETCENT=='' )
$insEFETCENT='NULL';
elseif (!is_numeric($insEFETCENT)) {
// if ( $insEFETCENT!='N' )
2013-06-19 08:24:49 +00:00
// $tabErreur[$nbErr++]="EFETCENT non num<75>rique : $insEFETCENT";
$insEFETCENT='NULL';
}
else
$insEFETCENT=(int)$insEFETCENT;
2013-06-19 08:24:49 +00:00
$insORIGINE = (int) substr($a,323, 1); // de 0 <20> 8
// if ($insORIGINE > 8)
// $tabErreur[$nbErr++]="ORIGINE non comprise entre 0 et 8 : $insORIGINE";
$insDCRET = substr($a,324, 6);
2013-06-19 08:24:49 +00:00
$insMMINTRET = (int) substr($a,330, 2); // de 0 <20> 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)).")";
2013-06-19 08:24:49 +00:00
$insNATURE = (int) substr($a,332, 2); // Num<75>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);
2013-06-19 08:24:49 +00:00
$insMODET = (int) substr($a,335, 1); // de 0 <20> 3
if ($insMODET > 3)
2013-06-19 08:24:49 +00:00
$tabErreur[$nbErr++]="MODET diff<66>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));
2013-06-19 08:24:49 +00:00
$insSINGT = (int) substr($a,344, 2); // Num<75>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)
2013-06-19 08:24:49 +00:00
// $tabErreur[$nbErr++]="AUXILT diff<66>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);
2013-06-19 08:24:49 +00:00
$insEFENCENT = trim( substr($a,369, 6)); // Num<75>rique
if ( $insEFENCENT=='' )
$insEFENCENT='NULL';
elseif (!is_numeric($insEFENCENT)) {
// if ( $insEFENCENT!='N' )
2013-06-19 08:24:49 +00:00
// $tabErreur[$nbErr++]="EFENCENT non num<75>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));
2013-06-19 08:24:49 +00:00
$insTCA = (int) substr($a,386, 1); // de 0 <20> 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 )
2013-06-19 08:24:49 +00:00
// $tabErreur[$nbErr++]="RECME diff<66>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);
2013-06-19 08:24:49 +00:00
$insMMINTREN = (int) substr($a,403, 2); // de 0 <20> 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' )
2013-06-19 08:24:49 +00:00
// $tabErreur[$nbErr++]="MONOACT diff<66>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)
2013-06-19 08:24:49 +00:00
// $tabErreur[$nbErr++]="MODEN diff<66>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)
2013-06-19 08:24:49 +00:00
// $tabErreur[$nbErr++]="ORDIN diff<66>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));
2013-06-19 08:24:49 +00:00
$insNBTOA = (int) substr($a,432, 4); // de 0 <20> 9999
$insTCAEXPOR = (int) substr($a,436, 1); // 0,1,2,3 ou 4
// if ($insTCAEXPOR > 4)
2013-06-19 08:24:49 +00:00
// $tabErreur[$nbErr++]="TCAEXPOR diff<66>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' )
2013-06-19 08:24:49 +00:00
// $tabErreur[$nbErr++]="MONOREG diff<66>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)
2013-06-19 08:24:49 +00:00
// $tabErreur[$nbErr++]="VMAJ1 diff<66>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)
2013-06-19 08:24:49 +00:00
// $tabErreur[$nbErr++]="VMAJ2 diff<66>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)
2013-06-19 08:24:49 +00:00
// $tabErreur[$nbErr++]="VMAJ3 diff<66>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;
2013-06-19 08:24:49 +00:00
// Traitement des diff<66>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':
2013-06-19 08:24:49 +00:00
// Annule et remplace le si<73>ge pr<70>c<EFBFBD>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':
2013-06-19 08:24:49 +00:00
// Entr<74>e d'un SIRET - Immatriculation d'un nouvel <20>tablissement
$vmajC++;
break;
case 'F':
2013-06-19 08:24:49 +00:00
// Etat final d'un SIRET modifi<66> (apr<70>s mise <20> 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) {
2013-06-19 08:24:49 +00:00
echo date ('Y/m/d - H:i:s') . " - ERREUR <20> l'insertion du siret $insSIREN $insNIC : $ret !\r\n";
flush();
}
break;
case 'E':
case 'I':
2013-06-19 08:24:49 +00:00
// Requ<71>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)
{
2013-06-19 08:24:49 +00:00
case 'E': // Suppression d'un SIRET - Cessation d'activit<69> d'un <20>tablissement
$vmajE++;
break;
2013-06-19 08:24:49 +00:00
case 'I': // Etat initial d'un SIRET modifi<66> (avant mise <20> jour)
$vmajI++;
break;
}
case 'EOF':
break;
}
/* if ($tabErreur) {
2013-06-19 08:24:49 +00:00
echo date ('Y/m/d - H:i:s') . " - ATTENTION, ligne $nbLignes, probl<62>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;
2013-06-19 08:24:49 +00:00
$messageInsertion.="R<EFBFBD>sum<EFBFBD> du traitement du fichier n<>$nbFichiers=$nomFichier du mois de $moisFichier !\r\n\r\n";
$messageInsertion.="Nombre de nouvelles insertion: ".$totI."\r\n";
2013-06-19 08:24:49 +00:00
$messageInsertion.=" - dont Changement de si<73>ge: ".$vmajS."\r\n";
$messageInsertion.=" - dont Entr<74>e d'un SIRET - Immatriculation d'un nouvel <20>tablissement: ".$vmajC."\r\n";
$messageInsertion.=" - dont Etat final d'un SIRET modifi<66> (apr<70>s mise <20> jour): ".$vmajF."\r\n";
$messageSuppression.="Nombre de suppression: ".$totS."\r\n";
2013-06-19 08:24:49 +00:00
$messageSuppression.=" - dont Suppression d'un SIRET - Cessation d'activit<69> d'un <20>tablissement: ".$vmajE."\r\n";
$messageSuppression.=" - dont Etat initial d'un SIRET modifi<66> (avant mise <20> jour): ".$vmajI."\r\n\r\n";
echo date ('Y/m/d - H:i:s') ." - Nombre de nouvelles insertion: ".$totI."\r\n";
2013-06-19 08:24:49 +00:00
echo date ('Y/m/d - H:i:s') ." - | dont Changement de si<73>ge: ".$vmajS."\r\n";
echo date ('Y/m/d - H:i:s') ." - | dont Entr<74>e d'un SIRET ou Immatriculation d'un nouvel <20>tablissement: ".$vmajC."\r\n";
echo date ('Y/m/d - H:i:s') ." - | dont Etat final d'un SIRET modifi<66> (apr<70>s mise <20> jour): ".$vmajF."\r\n";
echo date ('Y/m/d - H:i:s') ." - Nombre de suppression: ".$totS."\r\n";
2013-06-19 08:24:49 +00:00
echo date ('Y/m/d - H:i:s') ." - | dont Suppression d'un SIRET ou Cessation d'activit<69> d'un <20>tablissement: ".$vmajE."\r\n";
echo date ('Y/m/d - H:i:s') ." - | dont Etat initial d'un SIRET modifi<66> (avant mise <20> 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();
}
2013-06-19 08:24:49 +00:00
echo date ('Y/m/d - H:i:s')." - Cr<43>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`);");
2013-06-19 08:24:49 +00:00
echo date ('Y/m/d - H:i:s')." - Cr<43>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`);");
2013-06-19 08:24:49 +00:00
echo date ('Y/m/d - H:i:s')." - Cr<43>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);");
2013-06-19 08:24:49 +00:00
echo date ('Y/m/d - H:i:s')." - Cr<43>ation des index de recherche termin<69>e !\n";
2013-06-19 08:24:49 +00:00
// Mise <20> jour de la table PARAM
// -----------------------------
2013-06-19 08:24:49 +00:00
// 3 - pour la fin d'ex<65>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,
2013-06-19 08:24:49 +00:00
'RESUME_EXEC'=>"traitement achev<65> 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;
}
?>