batch/1.1/old/consolideEtab2.php
2013-06-19 08:24:49 +00:00

775 lines
35 KiB
PHP

#!/usr/bin/php -c/var/www/batch/config/php_batch_sd.ini
<?php
/**
** @todo
**
**/
echo date ('Y/m/d - H:i:s')." - DEBUT de la consolidation de la base Etablissements".EOL;
include_once(FWK_PATH.'common/chiffres.php');
include_once(FWK_PATH.'common/dates.php');
include_once(INCLUDE_PATH.'bodacc/classMBodacc.php');
include_once(INCLUDE_PATH.'insee/classMInsee.php');
$all=true;
$joAsso=$joBodacc=$baseInsee=$reset=$pageRankOnly=$iGreffe=false;
// Compteurs
$nbInsertAsso=$nbInsertBod=$nbInsertBodNS=$nbInsertGreffes=$nbInsertMarques=$nbUpdateAsso=0;
$strInfoScript='Usage : '.basename($argv[0]). " [OPTION]
Consolide la table des établissement et des entreprises à partir des dernières mises à jours des différentes sources.
Sans aucune options, consolide toutes les sources dernièrement mises à jour.
Options :
-a Consolider seulement le JO association.
-b Consolider seulement le Bodacc
-i Consolider les infos INSEE
-g Consolider les entreprises en provenance des Greffes
-m Mettre à jour les données sur les marques
-r Reconstruire complètement la base
-p traiter uniquement la construction du 'page rank'
";
$argv=$_SERVER['argv'];
if ($_SERVER['argc']>1)
{
for ($i=1; isset($argv[$i]); $i++) {
if (substr($argv[$i],0,1)=='-') {
switch (substr($argv[$i],1,1)) {
case 'a':
$all=false;
$joAsso=true;
break;
case 'g':
$all=false;
$iGreffe=true;
break;
case 'm':
$all=false;
$iMarques=true;
break;
case 'b':
$all=false;
$joBodacc=true;
break;
case 'i':
$all=false;
$baseInsee=true;
break;
case 'r':
$reset=true;
break;
case 'p':
$pageRankOnly=true;
break;
case '-':
case '?':
die($strInfoScript);
break;
default:
die('Option '. $argv[$i] . " inconnue !\n");
break;
}
}
}
}
/** Par défaut, on consolide toutes les sources **/
if ($all) {
$joAsso=$joBodacc=$baseInsee=$iGreffe=$iMarques=true;
}
$iDb=new WDB('jo');
if (!$pageRankOnly) {
$iDb2=new WDB('jo');
$iDbInsee=new WDB('insee');
$iInsee=new MInsee();
//if (0==1) {
echo date ('Y/m/d - H:i:s')." - Création de la nouvelle table établissements.".EOL;
if (!$iDb->query("DROP TABLE IF EXISTS jo.etablissements_tmp;"))
die($iDb->getLastError());
if (!$iDb->query("CREATE TABLE jo.etablissements_tmp (
`id` bigint(20) NOT NULL auto_increment,
`source` tinyint(3) unsigned zerofill NOT NULL,
`source_id` bigint(20) unsigned NOT NULL,
`triCode` varchar(6) NOT NULL,
`autre_id` varchar(15) NOT NULL,
`siren` int(9) unsigned zerofill NOT NULL,
`nic` mediumint(5) unsigned zerofill NOT NULL,
`actif` tinyint(1) NOT NULL,
`siege` tinyint(1) unsigned NOT NULL,
`raisonSociale` varchar(80) NOT NULL,
`enseigne` varchar(40) NOT NULL,
`sigle` varchar(20) NOT NULL,
`identite_pre` varchar(255) NOT NULL,
`marques` varchar(255) NOT NULL,
`adr_num` smallint(4) unsigned zerofill NOT NULL,
`adr_btq` char(1) NOT NULL,
`adr_typeVoie` char(4) NOT NULL,
`adr_libVoie` varchar(32) NOT NULL,
`adr_comp` varchar(38) NOT NULL,
`adr_cp` mediumint(5) unsigned zerofill NOT NULL,
`adr_ville` varchar(32) NOT NULL,
`adr_dep` smallint(3) unsigned zerofill NOT NULL,
`tel` bigint(8) unsigned zerofill NOT NULL,
`fax` bigint(8) unsigned zerofill NOT NULL,
`cj` smallint(4) unsigned zerofill NOT NULL,
`ape_etab` char(5) NOT NULL,
`ape_entrep` char(5) NOT NULL,
`rang` smallint unsigned zerofill NOT NULL,
`dateInsert` datetime NOT NULL,
`dateUpdate` timestamp NOT NULL default '0000-00-00 00:00:00' on update CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `source` (`source`,`source_id`),
KEY `tel` (`tel`),
KEY `fax` (`fax`),
KEY `siren` (`siren`,`nic`),
KEY `autre_id` (`autre_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;", true))
die($iDb->getLastError());
if ($baseInsee) {
/*$dateInsert=date('YmdHis');
if (!$reset) {
$tabTmp=$iDb->select('etablissements_tmp', 'max(source_id)', 'source=2', true);
$last_id=$tabTmp[0][0]*1;
} else {
$last_id=0;
$iDb->query('DELETE FROM etablissements_tmp WHERE source=2', true);
}*/
echo date ('Y/m/d - H:i:s')." - Mise à jour de la nouvelle table établissements depuis l'Insee.".EOL;
$retTmp=$iDb->select('insee.identite', 'COUNT(*) AS nbEtab', '1', false,MYSQL_ASSOC);
$nbEtab=$retTmp[0]['nbEtab'];
echo date ('Y/m/d - H:i:s')." - Il y a $nbEtab établissements à consolider depuis l'Insee...".EOL;
$iDb->query("INSERT INTO jo.etablissements_tmp SELECT 0 AS id, '2' AS source, id AS source_id, '' AS triCode, NUMRC AS autre_id, SIREN AS siren, NIC AS nic, ACTIF%10 as actif,
SIEGE as siege, NOM as raisonSociale, ENSEIGNE AS enseigne, SIGLE AS sigle, CONCAT(IDENTITE_PRE, ' ',NOM2) AS identite_pre, '' AS marques, ADR_NUMVOIE as adr_num,
ADR_BTQ as adr_btq, ADR_TYPVOIE as adr_typevoie, ADR_LIBVOIE as adr_libvoie, ADR_COMP as adr_comp,
ADR_CP as adr_cp, ADR_LIBCOM as adr_ville, IF(ADR_DEP=97 OR ADR_DEP=98, SUBSTRING(ADR_CP,1,3), ADR_DEP) AS adr_dep,
TEL as tel, FAX as fax, CJ as cj, APE_ETAB as ape_etab, APE_ENT as apen_entrep, 0 as rank, DATE_MAJ as dateInsert,
0 as dateUpdate FROM insee.identite");
$retTmp=$iDb->select('jo.etablissements_tmp', 'COUNT(*) AS nbEtab', '1', false,MYSQL_ASSOC);
$nbEtab=$retTmp[0]['nbEtab'];
echo date ('Y/m/d - H:i:s')." - Il y a $nbEtab établissements Insee consolidés.".EOL;
/* $hier=date('YmdHis');
$nbAsso=$iDbInsee->select('identite', 'id, SIREN, NIC, NUMRC, NOM, NOM2, ENSEIGNE, SIGLE, SIEGE, ADR_NUMVOIE, ADR_BTQ, ADR_TYPVOIE, ADR_LIBVOIE, ADR_COMP, ADR_CP, ADR_LIBCOM, ADR_DEP, TEL, FAX, CJ, APE_ETAB, APE_ENT', "id>$last_id OR dateUpdate>$hier", false, MYSQL_ASSOC, true);
echo date ('Y/m/d - H:i:s')." - Il y a $nbAsso fiches INSEE à consolider depuis $last_id...".EOL;
while ($tabSiren=$iDbInsee->fetch(MYSQL_ASSOC)) {
$tabEtab=array( 'source'=>2,
'source_id'=>$tabSiren['id'],
'siren'=>$tabSiren['SIREN'],
'nic'=>$tabSiren['NIC'],
'triCode'=>'',
'autre_id'=>$tabSiren['NUMRC'],
'siege'=>$tabSiren['SIEGE'],
'raisonSociale'=>$tabSiren['NOM'].$tabSiren['NOM2'],
'enseigne'=>$tabSiren['ENSEIGNE'],
'sigle'=>$tabSiren['SIGLE'],
'adr_num'=>$tabSiren['ADR_NUMVOIE'],
'adr_btq'=>$tabSiren['ADR_BTQ'],
'adr_typeVoie'=>$tabSiren['ADR_TYPVOIE'],
'adr_libVoie'=>$tabSiren['ADR_LIBVOIE'],
'adr_comp'=>$tabSiren['ADR_COMP'],
'adr_cp'=>$tabSiren['ADR_CP'],
'adr_ville'=>$tabSiren['ADR_LIBCOM'],
'adr_dep'=>$tabSiren['ADR_DEP'],
'tel'=>$tabSiren['TEL'],
'fax'=>$tabSiren['FAX'],
'cj'=>$tabSiren['CJ'],
'ape_etab'=>$tabSiren['APE_ETAB'],
'ape_entrep'=>$tabSiren['APE_ENT'],
'dateInsert'=>$dateInsert,
);
if (!$iDb->insert('etablissements',$tabEtab))
$zerqzfqsd=0;
// $iDb->update('etablissements',$tabEtab);
}*/
}
if ($joBodacc) {
echo date ('Y/m/d - H:i:s')." - Mise à jour de la nouvelle table établissements depuis le Bodacc.".EOL;
$dateInsert=date('YmdHis');
/* if (!$reset) {
$tabTmp=$iDb->select('etablissements', 'max(source_id)', 'source=1', true);
$last_id=$tabTmp[0][0]*1;
} else*/ $last_id=0;
$nbBodS=$iDb->select('bodacc_detail d LEFT JOIN etablissements_tmp e ON d.siren = e.siren', 'd.id, d.typeEven, d.siren, d.nic, d.Bodacc_Date_Parution, d.Tribunal_Code, d.Rubrique_Bodacc, d.Rubrique, d.typeAnnonce, d.RC, d.raisonSociale, d.nomCommercial, d.sigle, d.enseigne, d.FJ, d.Capital, d.CapitalDev, d.adrSiegeNum, d.adrSiegeIndRep, d.adrSiegeTypVoie, d.adrSiegeLibVoie, d.adrSiegeComp1, d.adrSiegeComp2, d.codePostalSiege, d.villeSiege, d.adrNum, d.adrIndRep, d.adrTypVoie, d.adrLibVoie, d.adrComp1, d.adrComp2, d.codePostal, d.ville, d.activite', "d.siren>1000 AND e.siren IS NULL", false,MYSQL_ASSOC,true);
echo date ('Y/m/d - H:i:s')." - Il y a $nbBodS annonces BODACC dont le siren est absent de l'insee à consolider depuis $last_id...".EOL;
while ($tabBodacc=$iDb->fetch(MYSQL_ASSOC)) {
// Si le siren n'existe pas dans la base etablissement, on l'ajoute
$cj=$naf='';
$dep=floor($tabBodacc['codePostalSiege']/1000);
if ($dep>96) $dep=floor($tabBodacc['codePostalSiege']/100);
$actif=1;
$tabEven=explode(';',$tabBodacc['typeEven']);
foreach ($tabEven as $even) {
$typeEven=$even*1;
if ($typeEven>=6000 && $typeEven<=6700) $actif=0;
elseif ($typeEven==2000 || $typeEven==2206) $actif=0;
elseif ($typeEven>=2200 && $typeEven<=2204) $actif=0;
elseif ($typeEven>=2200 && $typeEven<=2204) $actif=0;
elseif ($typeEven>=2200 && $typeEven<=2204) $actif=0;
elseif ($typeEven>=2200 && $typeEven<=2204) $actif=0;
elseif ($typeEven==2720) $actif=0;
}
if (trim(@$tabBodacc['adresseSiege'])<>'') {
$siege=1;
$adr_num=$tabBodacc['adrSiegeNum'];
$adr_btq=$tabBodacc['adrSiegeIndRep'];
$adr_typeVoie=$tabBodacc['adrSiegeTypVoie'];
$adr_libVoie=$tabBodacc['adrSiegeLibVoie'];
$adr_comp=trim(strtoupper($tabBodacc['adrSiegeComp1'].' '.$tabBodacc['adrSiegeComp2']));
$adr_cp=$tabBodacc['codePostalSiege'];
$adr_ville=strtoupper(trim(strtr($tabBodacc['villeSiege'], '{.!}',' ')));
} else {
$siege=0;
$adr_num=$tabBodacc['adrNum'];
$adr_btq=$tabBodacc['adrIndRep'];
$adr_typeVoie=$tabBodacc['adrTypVoie'];
$adr_libVoie=$tabBodacc['adrLibVoie'];
$adr_comp=trim(strtoupper($tabBodacc['adrComp1'].' '.$tabBodacc['adrComp2']));
$adr_cp=$tabBodacc['codePostal'];
$adr_ville=strtoupper(trim(strtr($tabBodacc['ville'], '{.!}',' ')));
}
$matches1=$matches2=array();
$raisonSociale=trim($tabBodacc['raisonSociale']);
if (preg_match("/ Nom d'usage (.*)/i", $raisonSociale, $matches1))
$raisonSociale=trim(preg_replace("/ Nom d'usage .*/i", '', $raisonSociale));
if (preg_match("/ Pseudonyme (.*)/i", $raisonSociale, $matches2))
$raisonSociale=trim(preg_replace("/ Pseudonyme .*/i", '', $raisonSociale));
if (preg_match("/^S E L A R L /i", $raisonSociale) || preg_match("/ S E L A R L$/i", $raisonSociale))
$raisonSociale=trim(str_replace('S E L A R L','SELARL',$raisonSociale));
elseif (preg_match("/^S A R L /i", $raisonSociale) || preg_match("/ S A R L$/i", $raisonSociale))
$raisonSociale=trim(str_replace('S A R L','SARL',$raisonSociale));
elseif (preg_match("/^S A S /i", $raisonSociale) || preg_match("/ S A S$/i", $raisonSociale))
$raisonSociale=trim(str_replace('S A S','SAS',$raisonSociale));
elseif (preg_match("/^S C I /i", $raisonSociale) || preg_match("/ S C I$/i", $raisonSociale))
$raisonSociale=trim(str_replace('S A S','SAS',$raisonSociale));
elseif (preg_match("/^S C P /i", $raisonSociale) || preg_match("/ S C P$/i", $raisonSociale))
$raisonSociale=trim(str_replace('S C P','SCP',$raisonSociale));
elseif (preg_match("/^S N C /i", $raisonSociale) || preg_match("/ S N C$/i", $raisonSociale))
$raisonSociale=trim(str_replace('S N C','SNC',$raisonSociale));
elseif (preg_match("/^S A /i", $raisonSociale) || preg_match("/ S A$/i", $raisonSociale))
$raisonSociale=trim(str_replace('S A','SA',$raisonSociale));
elseif (preg_match("/^S C E A /i", $raisonSociale) || preg_match("/ S C E A$/i", $raisonSociale))
$raisonSociale=trim(str_replace('S C E A','SCEA',$raisonSociale));
elseif (preg_match("/^S C A /i", $raisonSociale) || preg_match("/ S C A$/i", $raisonSociale))
$raisonSociale=trim(str_replace('S C A','SCA',$raisonSociale));
elseif (preg_match("/^S C /i", $raisonSociale) || preg_match("/ S C$/i", $raisonSociale))
$raisonSociale=trim(str_replace('S C','SC',$raisonSociale));
elseif (preg_match("/^E A R L /i", $raisonSociale) || preg_match("/ E A R L$/i", $raisonSociale))
$raisonSociale=trim(str_replace('E A R L','EARL',$raisonSociale));
elseif (preg_match("/^E A R /i", $raisonSociale) || preg_match("/ E A R$/i", $raisonSociale))
$raisonSociale=trim(str_replace('E A R','EAR',$raisonSociale));
elseif (preg_match("/^E A /i", $raisonSociale) || preg_match("/ E A$/i", $raisonSociale))
$raisonSociale=trim(str_replace('E A','EA',$raisonSociale));
elseif (preg_match("/^E U R L /i", $raisonSociale) || preg_match("/ E U R L$/i", $raisonSociale))
$raisonSociale=trim(str_replace('E U R L','EURL',$raisonSociale));
$raisonSociale=trim(preg_replace("/ +/",' ', strtr(' '.strtoupper($raisonSociale).' ', array(' DENOMINATION '=>' ', ' SUCCESSION '=>' '))));
$identitePre=trim(@$matches1[1].' '.@$matches1[2]);
$tabEtab=array( 'source'=>1,
'source_id'=>$tabBodacc['id'],
'siren'=>$tabBodacc['siren'],
'nic'=>$tabBodacc['nic'],
'triCode'=>$tabBodacc['Tribunal_Code'],
'autre_id'=>$tabBodacc['RC'],
'siege'=>$siege,
'actif'=>$actif,
'raisonSociale'=>$raisonSociale,
'enseigne'=>$tabBodacc['enseigne'],
'sigle'=>$tabBodacc['sigle'],
'identite_pre'=>$identitePre,
'adr_num'=>$adr_num,
'adr_btq'=>$adr_btq,
'adr_typeVoie'=>$adr_typeVoie,
'adr_libVoie'=>$adr_libVoie,
'adr_comp'=>$adr_comp,
'adr_cp'=>$adr_cp,
'adr_ville'=>$adr_ville,
'adr_dep'=>substr($adr_cp,0,2),
'tel'=>'',
'fax'=>'',
'cj'=>$cj,
'ape_etab'=>$naf,
'ape_entrep'=>$naf,
'dateInsert'=>$dateInsert,
);
$ret=$iDb->insert('etablissements_tmp',$tabEtab);
if (!$ret && mysql_errno()<>1062) {
echo date ('Y/m/d - H:i:s')." - ERREUR ". mysql_errno()." : Insertion des informations BODACC sur le siren ". $tabBodacc['siren'] .' : '. $tabBodacc['raisonSociale'] .' ('. $tabBodacc['id'].') !'.EOL;
echo date ('Y/m/d - H:i:s'). mysql_error();
} else
$nbInsertBod++;
}
echo date ('Y/m/d - H:i:s')." - Il y a $nbInsertBod établissements Bodacc consolidés.".EOL;
$dateInsert=date('YmdHis');
/* if (!$reset) {
$tabTmp=$iDb->select('etablissements', 'max(source_id)', 'source=1', true);
$last_id=$tabTmp[0][0]*1;
} else*/ $last_id=0;
$nbBodS=$iDb->select('bodacc_detail d', 'd.id, d.typeEven, d.siren, d.sirenValide, d.nic, d.Bodacc_Date_Parution, d.Tribunal_Code, d.Rubrique_Bodacc, d.Rubrique, d.typeAnnonce, d.RC, d.raisonSociale, d.nomCommercial, d.sigle, d.enseigne, d.FJ, d.Capital, d.CapitalDev, d.adrSiegeNum, d.adrSiegeIndRep, d.adrSiegeTypVoie, d.adrSiegeLibVoie, d.adrSiegeComp1, d.adrSiegeComp2, d.codePostalSiege, d.villeSiege, d.adrNum, d.adrIndRep, d.adrTypVoie, d.adrLibVoie, d.adrComp1, d.adrComp2, d.codePostal, d.ville, d.activite', "d.siren<=1000", false,MYSQL_ASSOC,true);
echo date ('Y/m/d - H:i:s')." - Il y a $nbBodS annonces BODACC non sirenées à consolider depuis $last_id...".EOL;
while ($tabBodacc=$iDb->fetch(MYSQL_ASSOC)) {
//if ($tabBodacc['siren']<>0)
// $ret=$iDb2->select('etablissements_tmp', 'count(*)', 'SIREN='.$tabBodacc['siren']);
// Si le siren n'existe pas dans la base etablissement, on l'ajoute
$cj=$naf='';
$dep=floor($tabBodacc['codePostalSiege']/1000);
if ($dep>96) $dep=floor($tabBodacc['codePostalSiege']/100);
$actif=1;
$tabEven=explode(';',$tabBodacc['typeEven']);
foreach ($tabEven as $even) {
$typeEven=$even*1;
if ($typeEven>=6000 && $typeEven<=6700) $actif=0;
elseif ($typeEven==2000 || $typeEven==2206) $actif=0;
elseif ($typeEven>=2200 && $typeEven<=2204) $actif=0;
elseif ($typeEven>=2200 && $typeEven<=2204) $actif=0;
elseif ($typeEven>=2200 && $typeEven<=2204) $actif=0;
elseif ($typeEven>=2200 && $typeEven<=2204) $actif=0;
elseif ($typeEven==2720) $actif=0;
}
if (@$tabBodacc['adresseSiege']<>'') {
$siege=1;
$adr_num=$tabBodacc['adrSiegeNum'];
$adr_btq=$tabBodacc['adrSiegeIndRep'];
$adr_typeVoie=$tabBodacc['adrSiegeTypVoie'];
$adr_libVoie=$tabBodacc['adrSiegeLibVoie'];
$adr_comp=trim(strtoupper($tabBodacc['adrSiegeComp1'].' '.$tabBodacc['adrSiegeComp2']));
$adr_cp=$tabBodacc['codePostalSiege'];
$adr_ville=strtoupper(trim(strtr($tabBodacc['villeSiege'], '{.!}',' ')));
} else {
$siege=0;
$adr_num=$tabBodacc['adrNum'];
$adr_btq=$tabBodacc['adrIndRep'];
$adr_typeVoie=$tabBodacc['adrTypVoie'];
$adr_libVoie=$tabBodacc['adrLibVoie'];
$adr_comp=trim(strtoupper($tabBodacc['adrComp1'].' '.$tabBodacc['adrComp2']));
$adr_cp=$tabBodacc['codePostal'];
$adr_ville=strtoupper(trim(strtr($tabBodacc['ville'], '{.!}',' ')));
}
/** Suppression des Noms d'usage et Pseudonymes dans la raison sociale **/
$matches1=$matches2=array();
$raisonSociale=trim($tabBodacc['raisonSociale']);
if (preg_match("/ Nom d'usage (.*)/i", $raisonSociale, $matches1))
$raisonSociale=trim(preg_replace("/ Nom d'usage .*/i", '', $raisonSociale));
if (preg_match("/ Pseudonyme (.*)/i", $raisonSociale, $matches2))
$raisonSociale=trim(preg_replace("/ Pseudonyme .*/i", '', $raisonSociale));
if (preg_match("/^S E L A R L /i", $raisonSociale) || preg_match("/ S E L A R L$/i", $raisonSociale))
$raisonSociale=trim(str_replace('S E L A R L','SELARL',$raisonSociale));
elseif (preg_match("/^S A R L /i", $raisonSociale) || preg_match("/ S A R L$/i", $raisonSociale))
$raisonSociale=trim(str_replace('S A R L','SARL',$raisonSociale));
elseif (preg_match("/^S A S /i", $raisonSociale) || preg_match("/ S A S$/i", $raisonSociale))
$raisonSociale=trim(str_replace('S A S','SAS',$raisonSociale));
elseif (preg_match("/^S C I /i", $raisonSociale) || preg_match("/ S C I$/i", $raisonSociale))
$raisonSociale=trim(str_replace('S A S','SAS',$raisonSociale));
elseif (preg_match("/^S C P /i", $raisonSociale) || preg_match("/ S C P$/i", $raisonSociale))
$raisonSociale=trim(str_replace('S C P','SCP',$raisonSociale));
elseif (preg_match("/^S N C /i", $raisonSociale) || preg_match("/ S N C$/i", $raisonSociale))
$raisonSociale=trim(str_replace('S N C','SNC',$raisonSociale));
elseif (preg_match("/^S A /i", $raisonSociale) || preg_match("/ S A$/i", $raisonSociale))
$raisonSociale=trim(str_replace('S A','SA',$raisonSociale));
elseif (preg_match("/^S C E A /i", $raisonSociale) || preg_match("/ S C E A$/i", $raisonSociale))
$raisonSociale=trim(str_replace('S C E A','SCEA',$raisonSociale));
elseif (preg_match("/^S C A /i", $raisonSociale) || preg_match("/ S C A$/i", $raisonSociale))
$raisonSociale=trim(str_replace('S C A','SCA',$raisonSociale));
elseif (preg_match("/^S C /i", $raisonSociale) || preg_match("/ S C$/i", $raisonSociale))
$raisonSociale=trim(str_replace('S C','SC',$raisonSociale));
elseif (preg_match("/^E A R L /i", $raisonSociale) || preg_match("/ E A R L$/i", $raisonSociale))
$raisonSociale=trim(str_replace('E A R L','EARL',$raisonSociale));
elseif (preg_match("/^E A R /i", $raisonSociale) || preg_match("/ E A R$/i", $raisonSociale))
$raisonSociale=trim(str_replace('E A R','EAR',$raisonSociale));
elseif (preg_match("/^E A /i", $raisonSociale) || preg_match("/ E A$/i", $raisonSociale))
$raisonSociale=trim(str_replace('E A','EA',$raisonSociale));
elseif (preg_match("/^E U R L /i", $raisonSociale) || preg_match("/ E U R L$/i", $raisonSociale))
$raisonSociale=trim(str_replace('E U R L','EURL',$raisonSociale));
$raisonSociale=trim(preg_replace("/ +/",' ', strtr(' '.strtoupper($raisonSociale).' ', array(' DENOMINATION '=>' ', ' SUCCESSION '=>' '))));
$identitePre=trim(@$matches1[1].' '.@$matches1[2]);
$tabEtab=array( 'source'=>1,
'source_id'=>$tabBodacc['id'],
'siren'=>$tabBodacc['siren'],
'nic'=>$tabBodacc['nic'],
'triCode'=>$tabBodacc['Tribunal_Code'],
'autre_id'=>$tabBodacc['RC'],
'siege'=>$siege,
'actif'=>$actif,
'raisonSociale'=>$raisonSociale,
'enseigne'=>$tabBodacc['enseigne'],
'sigle'=>$tabBodacc['sigle'],
'identite_pre'=>$identitePre,
'adr_num'=>$adr_num,
'adr_btq'=>$adr_btq,
'adr_typeVoie'=>$adr_typeVoie,
'adr_libVoie'=>$adr_libVoie,
'adr_comp'=>$adr_comp,
'adr_cp'=>$adr_cp,
'adr_ville'=>$adr_ville,
'adr_dep'=>substr($adr_cp,0,2),
'tel'=>'',
'fax'=>'',
'cj'=>$cj,
'ape_etab'=>$naf,
'ape_entrep'=>$naf,
'dateInsert'=>$dateInsert,
);
$ret=$iDb->insert('etablissements_tmp',$tabEtab);
if (!$ret && mysql_errno()<>1062) {
echo date ('Y/m/d - H:i:s')." - ERREUR ". mysql_errno()." : Insertion des informations BODACC sur le siren ". $tabBodacc['siren'] .' : '. $tabBodacc['raisonSociale'] .' ('. $tabBodacc['id'].') !'.EOL;
echo date ('Y/m/d - H:i:s'). mysql_error();
} else
$nbInsertBodNS++;
}
echo date ('Y/m/d - H:i:s')." - Il y a $nbInsertBodNS établissements Bodacc NS consolidés.".EOL;
/*
$dateInsert=date('YmdHis');
if (!$reset) {
$tabTmp=$iDb->select('etablissements', 'max(source_id)', 'source=1 AND siege=0', true);
$last_id=$tabTmp[0][0]*1;
} else $last_id=0;
$nbBodE=$iDb->select('bodacc_detail', 'id, typeEven, siren, nic, Bodacc_Date_Parution, Tribunal_Code, Rubrique_Bodacc, Rubrique, typeAnnonce, RC, raisonSociale, nomCommercial, enseigne, FJ, Capital, CapitalDev, adrNum, adrIndRep, adrTypVoie, adrLibVoie, adrComp1, adrComp2, codePostal, ville, activite', "adresse<>'' AND id>$last_id", false,MYSQL_ASSOC,true);
//
echo date ('Y/m/d - H:i:s')." - Il y a $nbBodE annonces BODACC établissement à consolider depuis $last_id...".EOL;
while ($tabBodacc=$iDb->fetch(MYSQL_ASSOC)) {
if ($tabBodacc['siren']<>0)
$ret=$iDb2->select('etablissements', 'count(*)', 'SIREN='.$tabBodacc['siren']);
if ($ret[0][0]==0 || $tabBodacc['siren']==0) {
// Si le siren n'existe pas dans la base etablissement, on l'ajoute
$cj=$naf='';
$dep=floor($tabBodacc['codePostal']/1000);
if ($dep>96) $dep=floor($tabBodacc['codePostal']/100);
$actif=1;
$tabEven=explode(';',$tabBodacc['typeEven']);
foreach ($tabEven as $even) {
$typeEven=$even*1;
if ($typeEven>=6000 && $typeEven<=6700) $actif=0;
elseif ($typeEven==2000 || $typeEven==2206) $actif=0;
elseif ($typeEven>=2200 && $typeEven<=2204) $actif=0;
elseif ($typeEven>=2200 && $typeEven<=2204) $actif=0;
elseif ($typeEven>=2200 && $typeEven<=2204) $actif=0;
elseif ($typeEven>=2200 && $typeEven<=2204) $actif=0;
elseif ($typeEven==2720) $actif=0;
}
$tabEtab=array( 'source'=>1,
'source_id'=>$tabBodacc['id'],
'siren'=>$tabBodacc['siren'],
'nic'=>$tabBodacc['nic'],
'triCode'=>$tabBodacc['Tribunal_Code'],
'autre_id'=>$tabBodacc['RC'],
'siege'=>0,
'actif'=>$actif,
'raisonSociale'=>$tabBodacc['raisonSociale'],
'enseigne'=>$tabBodacc['enseigne'],
'sigle'=>'',
'adr_num'=>$tabBodacc['adrNum'],
'adr_btq'=>$tabBodacc['adrIndRep'],
'adr_typeVoie'=>$tabBodacc['adrTypVoie'],
'adr_libVoie'=>strtoupper($tabBodacc['adrLibVoie']),
'adr_comp'=>trim(strtoupper($tabBodacc['adrComp1'].' '.$tabBodacc['adrComp2'])),
'adr_cp'=>$tabBodacc['codePostal'],
'adr_dep'=>$dep,
'adr_ville'=>strtoupper(trim(strtr($tabBodacc['ville'], '{.!}',' '))),
'tel'=>'',
'fax'=>'',
'cj'=>$cj,
'ape_etab'=>$naf,
'dateInsert'=>$dateInsert,
);
$iDb->insert('etablissements',$tabEtab);
}
}*/
}
if ($joAsso) {
echo date ('Y/m/d - H:i:s')." - Mise à jour de la nouvelle table établissements depuis le JO Association.".EOL;
$dateInsert=date('YmdHis');
/* if (!$reset) {
$tabTmp=$iDb->select('etablissements', 'max(source_id)', 'source=3', true);
$last_id=$tabTmp[0][0]*1;
} else*/ $last_id=0;
$nbAsso=$iDb->select('asso', 'id, Assoc_Nom, siren, nic, Waldec, Activite, Type_Annonce, Date_Parution, Departement, Sous_Prefecture, Assoc_Adresse, Assoc_NAdresse, Assoc_ANom, Assoc_NNom, Assoc_Date_Declaration2, dateInsert', "id>$last_id AND siren<100", false,MYSQL_ASSOC,true);
echo date ('Y/m/d - H:i:s')." - Il y a $nbAsso annonces ASSOCIATIONS à consolider depuis $last_id...".EOL;
while ($tabAsso=$iDb->fetch(MYSQL_ASSOC)) {
/*
9110 Syndicat de copropriété
9210 Association non déclarée
9221 Association déclarée "entreprises d'insertion par l'économique"
9222 Association intermédiaire
9223 Groupement d'employeurs
9230 Association déclarée reconnue d'utilité publique
9240 Congrégation
*/
/** Initialisation des valeurs par défaut
**/
$naf='';
$actif=1;
$cj=9220; // Association déclarée
if (preg_match('/ASL/i', $tabAsso['Type_Annonce']) || preg_match('/syndicale/i', $tabAsso['Type_Annonce'])) {
$cj=9150; // ASL
$naf='8110Z'; // Activités combinées de soutien lié aux bâtiments
}
elseif (preg_match('/Fondation/i', $tabAsso['Type_Annonce']))
$cj=9300; // FONDATION
elseif ($tabAsso['Departement']==57 || $tabAsso['Departement']==67 || $tabAsso['Departement']==68)
$cj=9260; // Association de droit local
if (preg_match('/cr(é|e)ation/i', $tabAsso['Type_Annonce']) && preg_match('/Annulation/i', $tabAsso['Type_Annonce']))
$actif=0;
elseif (preg_match('/Dissolution/i', $tabAsso['Type_Annonce']) && !preg_match('/Annulation/i', $tabAsso['Type_Annonce']))
$actif=0;
if ($naf=='') {
if (preg_match('/sport/i', $tabAsso['Activite'])) // 0015
$naf='9319Z';//'926C'; // Autres activités sportives
elseif (preg_match('/(culte|religieu)/i', $tabAsso['Activite'])) // 0004
$naf='9491Z';//913A'; // Organisations religieuses
elseif (preg_match('/communication/i', $tabAsso['Activite'])) // 0003
$naf='6399Z'; // Autres services d'information n.c.a.
elseif (preg_match('/Politique/i', $tabAsso['Activite'])) // 0012
$naf='9492Z'; // Activités des organisations politiques
elseif (preg_match('/(Enseignement|Education|formation)/i', $tabAsso['Activite'])) // 0008
$naf='8559B';
elseif (preg_match('/(Social|Humanitaire)/i', $tabAsso['Activite']) ) // 0014
$naf='8899B';//853K'; // Autres formes d'action sociale
elseif (preg_match('/(Recherche|Technique)/i', $tabAsso['Activite'])) // 0010
$naf='7219Z'; // Recherche-développement en autres sciences physiques et naturelles
elseif (preg_match('/Loisir/i', $tabAsso['Activite'])) // 0005
$naf='9329Z'; // Autres activités récréatives et de loisirs
elseif (preg_match('/Art/i', $tabAsso['Activite'])) // 0005
$naf='9003B'; // Autre création artistique
else
$naf='9499Z'; // Autres organisations fonctionnant par adhésion volontaire
}
if ($tabAsso['Assoc_NAdresse']<>'')
$adr=$iInsee->structureVoie($tabAsso['Assoc_NAdresse']);
else
$adr=$iInsee->structureVoie($tabAsso['Assoc_Adresse']);
$adrComp=strtoupper(@$adr['adrComp0']);
if (@$adr['adrComp1']<>'')
$adrComp.=' '.strtoupper(@$adr['adrComp1']);
$raisonSociale=trim($tabAsso['Assoc_Nom']);
if ($raisonSociale=='')
$raisonSociale=trim($tabAsso['Assoc_ANom']);
if (preg_match("/^(.*) \((.*)\)$/U", $raisonSociale, $matches)) {
$raisonSociale=trim($matches[1]);
$sigle=trim(strtr($matches[2],array('.'=>'')));
}
else
$sigle='';
$tabEtab=array( 'source'=>3,
'source_id'=>$tabAsso['id'],
'siren'=>$tabAsso['siren'],
'nic'=>$tabAsso['nic'],
'triCode'=>$tabAsso['Sous_Prefecture'], // Gérer la table des préfecture
'autre_id'=>$tabAsso['Waldec'],
'siege'=>1,
'actif'=>$actif,
'raisonSociale'=>$raisonSociale,
'enseigne'=>'',
'identite_pre'=>$tabAsso['Assoc_ANom'],
'sigle'=>$sigle,
'adr_num'=>@$adr['num'],
'adr_btq'=>@$adr['indRep'],
'adr_typeVoie'=>@$adr['typeVoie'],
'adr_libVoie'=>strtoupper(@$adr['libVoie']),
'adr_comp'=>$adrComp,
'adr_cp'=>@$adr['cp'],
'adr_ville'=>trim(strtoupper(@$adr['ville'])),
'adr_dep'=>$tabAsso['Departement'],
'tel'=>'',
'fax'=>'',
'cj'=>$cj,
'ape_etab'=>$naf,
'ape_entrep'=>$naf,
'dateInsert'=>$dateInsert,
);
$ret=$iDb->insert('etablissements_tmp',$tabEtab);
if (!$ret && mysql_errno()<>1062) {
echo date ('Y/m/d - H:i:s')." - ERREUR ". mysql_errno()." : Insertion des informations Associations sur le siren ". $tabBodacc['siren'] .' : '. $tabBodacc['raisonSociale'] .' ('. $tabBodacc['id'].') !'.EOL;
echo date ('Y/m/d - H:i:s'). mysql_error();
} else
$nbInsertAsso++;
}
echo date ('Y/m/d - H:i:s')." - Il y a $nbInsertAsso établissements Associations consolidés.".EOL;
echo date ('Y/m/d - H:i:s')." - Mise à jour de la nouvelle table établissements depuis le JO Association Sirené (Waldec, etc...)".EOL;
$dateInsert=date('YmdHis');
$last_id=0;
$nbAsso=$iDb->select('asso', 'id, Assoc_Nom, siren, nic, Waldec, Activite, Type_Annonce, Date_Parution, Departement, Sous_Prefecture, Assoc_Adresse, Assoc_NAdresse, Assoc_ANom, Assoc_NNom, Assoc_Date_Declaration2, dateInsert', "id>$last_id AND siren>100", false,MYSQL_ASSOC,true);
echo date ('Y/m/d - H:i:s')." - Il y a $nbAsso annonces ASSOCIATIONS à mettre à jour depuis $last_id...".EOL;
while ($tabAsso=$iDb->fetch(MYSQL_ASSOC)) {
$tabEtab=array( 'triCode'=>$tabAsso['Sous_Prefecture'], // Gérer la table des préfecture
'autre_id'=>$tabAsso['Waldec'],
'identite_pre'=>$tabAsso['Assoc_Nom'],
);
$ret=$iDb->update('etablissements_tmp',$tabEtab, 'siren='.$tabAsso['siren']);
if (!$ret || mysql_errno()<>0) {
echo date ('Y/m/d - H:i:s')." - ERREUR ". mysql_errno()." : Insertion des informations Associations sur le siren ". $tabBodacc['siren'] .' : '. $tabBodacc['raisonSociale'] .' ('. $tabBodacc['id'].') !'.EOL;
echo date ('Y/m/d - H:i:s'). mysql_error();
} else
$nbUpdateAsso++;
}
echo date ('Y/m/d - H:i:s')." - Il y a $nbUpdateAsso établissements Associations avec SIREN consolidés.".EOL;
}
if ($iGreffe) {
echo date ('Y/m/d - H:i:s')." - Mise à jour de la nouvelle table établissements depuis les Greffes.".EOL;
$dateInsert=date('YmdHis');
$nbBodS=$iDb->select('greffes_identite g LEFT JOIN etablissements_tmp e ON g.siren = e.siren', 'g.id, g.siren, g.nom, g.adresse, g.cp, g.ville, g.enseigne, g.siege, g.fj, g.fjLib, g.naf, g.nafLib, g.numGreffe, g.libGreffe, g.numRC, g.dateCreation, g.dateRadiation, g.dateInsert', "e.siren IS NULL", false,MYSQL_ASSOC,true);
echo date ('Y/m/d - H:i:s')." - Il y a $nbBodS entreprises en provenance des Greffes dont le siren est absent de l'insee à consolider depuis $last_id...".EOL;
while ($tabBodacc=$iDb->fetch(MYSQL_ASSOC)) {
$adr=$iInsee->structureVoie($tabBodacc['adresse']);
$adr_cp=@$tabBodacc['cp'];
$tabEtab=array( 'source'=>4,
'source_id'=>$tabBodacc['id'],
'siren'=>$tabBodacc['siren'],
'nic'=>0,
'triCode'=>$tabBodacc['libGreffe'],//@todo Correspondance Tribunal_Code
'autre_id'=>$tabBodacc['numRC'],
'siege'=>1,
'actif'=>0,
'raisonSociale'=>$tabBodacc['nom'],
'enseigne'=>$tabBodacc['enseigne'],
'sigle'=>'',
'identite_pre'=>'',
'adr_num'=>@$adr['num'],
'adr_btq'=>@$adr['adr_btq'],
'adr_typeVoie'=>@$adr['typeVoie'],
'adr_libVoie'=>strtoupper(@$adr['libVoie']),
'adr_comp'=>'',
'adr_cp'=>$adr_cp,
'adr_ville'=>strtoupper(@$tabBodacc['ville']),
'adr_dep'=>substr($adr_cp,0,2),
'tel'=>'',
'fax'=>'',
'cj'=>$tabBodacc['fj'],
'ape_etab'=>$tabBodacc['naf'],
'ape_entrep'=>$tabBodacc['naf'],
'dateInsert'=>$dateInsert,
);
$ret=$iDb->insert('etablissements_tmp',$tabEtab);
if (!$ret && mysql_errno()<>1062) {
echo date ('Y/m/d - H:i:s')." - ERREUR ". mysql_errno()." : Insertion des informations GREFFES sur le siren ". $tabBodacc['siren'] .' : '. $tabBodacc['raisonSociale'] .' ('. $tabBodacc['id'].') !'.EOL;
echo date ('Y/m/d - H:i:s'). mysql_error();
} else
$nbInsertGreffes++;
}
echo date ('Y/m/d - H:i:s')." - Il y a $nbInsertGreffes établissements Greffes consolidés.".EOL;
}
if ($iMarques) {
echo date ('Y/m/d - H:i:s')." - Mise à jour des marques.".EOL;
$nbMarques=$iDb->select('marques', 'Siren, Marques', '1 ORDER BY Siren ASC', false,MYSQL_ASSOC,true);
echo date ('Y/m/d - H:i:s')." - Il y a $nbMarques marques à mettre à jour...".EOL;
$sirenPre=false;
$strMarques='';
while ($tabMarques=$iDb->fetch(MYSQL_ASSOC)) {
$siren =$tabMarques['Siren'];
$strMarques.=$tabMarques['Marques'];
if ($sirenPre<>$siren && $sirenPre<>false) {
/** Il faut mettre à jour l'ensemble des marques pour ce siren **/
$tabUpdate=array( 'marques'=>$strMarques );
$ret=$iDb->update('etablissements_tmp',$tabUpdate, "siren=$siren");
if (!$ret) {
echo date ('Y/m/d - H:i:s')." - ERREUR ". mysql_errno()." : Insertion des informations MARQUES sur le siren $siren impossible ($strMarques) !".EOL;
echo date ('Y/m/d - H:i:s'). mysql_error();
} else $nbInsertMarques++;
$strMarques='';
}
$sirenPre=$siren;
}
echo date ('Y/m/d - H:i:s')." - Il y a $nbInsertMarques établissements avec Marques consolidés.".EOL;
}
} else {
echo date ('Y/m/d - H:i:s')." - Remise à 0 de tous les ranks de la table etablissements...".EOL;
$tab=array( 'rang'=>0 );
$iDb->update('etablissements', $tab, 'siren=0');
}
echo date ('Y/m/d - H:i:s')." - Mise à jour du rank de l'entreprise pour les recherches par nom".EOL;
$iDbRanks=new WDB('sdv1');
$nbRanks=$iDbRanks->select('`logs`', 'siren, count(*) AS `rang`', "page='identite' AND siren<>0 GROUP BY siren ORDER BY `rang` DESC", false,MYSQL_ASSOC,true);
echo date ('Y/m/d - H:i:s')." - Il y a $nbRanks ranks à mettre à jour...".EOL;
while ($tabRank=$iDbRanks->fetch(MYSQL_ASSOC)) {
$tab=array( 'rang'=>$tabRank['rang'] );
if ($pageRankOnly) $tableEtab='etablissements';
else $tableEtab='etablissements_tmp';
$iDb->update($tableEtab, $tab, 'siren='.substr($tabRank['siren'],0,9));
}
if (!$pageRankOnly) {
echo date ('Y/m/d - H:i:s')." - Mise en place des tables pour l'indexation.".EOL;
$iDb->query("DROP TABLE jo.etablissements_old;");
echo date ('Y/m/d - H:i:s')." - Suppression de la table etablissements_old : Debug erreur n°".mysql_errno().' - '.mysql_error().EOL;
//$iDb->query("RENAME TABLE jo.etablissements TO jo.etablissements_old;");
//echo date ('Y/m/d - H:i:s')." - Sauvegarde de l'ancienne table établissements : Debug erreur n°".mysql_errno().' - '.mysql_error().EOL;
//$iDb->query("RENAME TABLE jo.etablissements_tmp TO jo.etablissements;");
//echo date ('Y/m/d - H:i:s')." - Passage en production de la table tmp : Debug erreur n°".mysql_errno().' - '.mysql_error().EOL;
}
echo date ('Y/m/d - H:i:s')." - FIN de la consolidation de la base Etablissements".EOL;
//echo date ('Y/m/d - H:i:s')." - Lancement de la commande : indexer --all --config /usr/local/etc/sphinx.conf --rotate".EOL;
/*$nb=@$nbAsso+@$nbBodS+@$nbBodE;
if ($nb>0) die(0);
else die(1);*/
die();
?>