batch/old/majAdressesDom.php

149 lines
6.9 KiB
PHP
Raw Permalink Normal View History

2012-07-28 14:21:05 +02:00
#!/usr/bin/php -c/var/www/batch/config/php_batch_sd.ini
<?php
include_once(FWK_PATH.'common/chiffres.php');
include_once(FWK_PATH.'common/dates.php');
include_once(INCLUDE_PATH.'insee/classMInsee.php');
include_once(FWK_PATH.'mail/sendMail.php');
$strInfoScript='Usage : '.basename($argv[0]). " <option> [SIREN]
2013-06-19 10:24:49 +02:00
Mise <EFBFBD> jour des adresses de domiciliation.
2012-07-28 14:21:05 +02:00
Options :
2013-06-19 10:24:49 +02:00
-d Mode debug (Verbosit<EFBFBD> au maximum)
-b Ne pas rechercher les nouvelles annonces Bodacc avec 'domiciliation' dans l'activit<EFBFBD>
";// -s:SSAAMMJJ Reprendre la mise <20> jour depuis le flux Insee du SSAAMMJJ
2012-07-28 14:21:05 +02:00
$modeDebug=false;
$newBodacc=true;
$argv=$_SERVER['argv'];
for ($i=1,$j=0; isset($argv[$i]); $i++) {
if (substr($argv[$i],0,1)=='-') {
switch (substr($argv[$i],1,1)) {
case 'd': $modeDebug=true; break;
case 'b': $newBodacc=false; break;
// case 's': $jourFlux=substr($argv[$i],3,8); break;
// case 'h': $histo=true; break;
/*
case 'j': $loadInpiLocal=false; break;
case 'q': $loadActesDuJour=false; break;
case 'b': $loadBilans=false; break;
case 'i': $iReprise=substr($argv[$i],3); break;*/
case '-':
case '?': die($strInfoScript); break;
default: die('Option '. $argv[$i] . ' inconnue !'.EOL); break;
}
} //else $tabSiren[]=$argv[$i];
}
$iDb=new WDB('jo');
$iInsee=new MInsee();
2013-06-19 10:24:49 +02:00
echo date ('Y/m/d - H:i:s')." - D<>but du traitement de mise <20> jour des adresses de domiciliation...".EOL;
2012-07-28 14:21:05 +02:00
if ($newBodacc) {
2013-06-19 10:24:49 +02:00
/** Recherche de la derni<EFBFBD>re date de MAJ de la table des domiciliations
2012-07-28 14:21:05 +02:00
**/
$AnnDb=$iDb->select('tabAdrDom', 'max(dateInsert*1) AS dateInsertNum, max(dateUpdate*1) AS dateUpdateNum,
max(dateInsert) AS dateInsert, max(dateUpdate) AS dateUpdate', '1', false, MYSQL_ASSOC);
if ($AnnDb[0]['dateUpdateNum']>$AnnDb[0]['dateInsertNum'])
$dateLastMaj=$AnnDb[0]['dateUpdate'];
else
$dateLastMaj=$AnnDb[0]['dateInsert'];
2013-06-19 10:24:49 +02:00
echo date('Y/m/d - H:i:s') ." - Derni<6E>re date de mise <20> jour des domiciliataires : $dateLastMaj.".EOL;
2012-07-28 14:21:05 +02:00
2013-06-19 10:24:49 +02:00
/** Recherche des annonces contenant le mot "domiciliation" dans l'activit<EFBFBD> r<EFBFBD>elle
2012-07-28 14:21:05 +02:00
**/
$AnnDb=$iDb->select('bodacc_detail', 'siren', "siren>1000 AND activite LIKE '%domiciliation%' AND (dateInsert>'$dateLastMaj' OR dateUpdate>'$dateLastMaj')", false, MYSQL_ASSOC);
$nb=count($AnnDb);
echo date('Y/m/d - H:i:s') ." - Il y a $nb annonces de domiciliataires avec une annonce Bodacc.".EOL;
$tabSiren=array();
foreach( $AnnDb as $i=>$tabDom)
$tabSiren[]=$tabDom['siren'];
$tabSiren=array_unique($tabSiren);
$nb=count($tabSiren);
echo date('Y/m/d - H:i:s') ." - Il y a $nb sirens avec au moins une annonce.".EOL;
// Comptage AVANT INSERT
$nbSiren=$iDb->select('tabAdrDom', 'siren', '1 GROUP BY siren', false, MYSQL_ASSOC, true);
$AnnDb=$iDb->select('tabAdrDom', 'count(*) AS nb', '1', false, MYSQL_ASSOC);
$nbSiret=$AnnDb[0]['nb'];
2013-06-19 10:24:49 +02:00
echo date('Y/m/d - H:i:s') ." - Il y a $nbSiren entreprises de domiciliations ($nbSiret <20>tablissements).".EOL;
2012-07-28 14:21:05 +02:00
2013-06-19 10:24:49 +02:00
// Insertion des siren, nic de tous les <20>tablissements trouv<75>s dans la base
2012-07-28 14:21:05 +02:00
$strSiren=implode(',',$tabSiren);
$iDb->query("INSERT IGNORE INTO jo.tabAdrDom (siren,nic,siege, etActif, nom, sigle, enseigne, adrNum, adrBtq, adrTypVoie, adrLibVoie, ville, cp, depComEt, adrComp, cj, apen,apet, dateInsert)
SELECT siren, nic, siege, actif AS etActif, raisonSociale AS nom, sigle, enseigne, adr_num as adrNum, adr_btq AS adrBtq, adr_typeVoie AS adrTypVoie, adr_libVoie AS adrLibVoie, adr_ville AS ville, adr_cp AS cp, CONCAT(adr_dep,adr_com) AS depComEt, adr_comp AS adrComp, cj, ape_entrep AS apen, ape_etab AS apet, NOW() as dateInsert
FROM jo.etablissements WHERE siren>1000 AND siren IN ($strSiren);", false);
// Comptage APRES INSERT
$nbSirenFin=$iDb->select('tabAdrDom', 'siren', '1 GROUP BY siren', false, MYSQL_ASSOC, true);
$AnnDb=$iDb->select('tabAdrDom', 'count(*) AS nb', '1', false, MYSQL_ASSOC);
$nbSiretFin=$AnnDb[0]['nb'];
$nbSiren=$nbSirenFin-$nbSiren;
$nbSiret=$nbSiretFin-$nbSiret;
2013-06-19 10:24:49 +02:00
echo date('Y/m/d - H:i:s') ." - Il y a $nbSiren nouvelles entreprises de domiciliations ($nbSiret nouveaux <20>tabs).".EOL;
2012-07-28 14:21:05 +02:00
}
2013-06-19 10:24:49 +02:00
/** Mise <EFBFBD> jour de toutes les fiches non encore mises <EFBFBD> jour ou trop ancienne
2012-07-28 14:21:05 +02:00
**/
$AnnDb=$iDb->select('tabAdrDom', 'id, siren, nic, enActif, etActif, procol, nom, nom2, sigle, enseigne, adrNum, adrBtq, adrTypVoie, adrLibVoie, ville, cp, adrComp, adrDistSp, cj, apen, apet, dateInsert, dateUpdate',"dateUpdate=0 OR DATEDIFF(NOW(),dateUpdate)>180", false, MYSQL_ASSOC);
$nb=count($AnnDb);
2013-06-19 10:24:49 +02:00
echo date('Y/m/d - H:i:s') ." - Il y a $nb adresse(s) de domiciliations <20> mettre <20> jour pour ajout ou ancien.".EOL;
2012-07-28 14:21:05 +02:00
foreach ($AnnDb as $i=>$tabDom) {
//print_r($tabDom);
$siren=$tabDom['siren'];
$nic=$tabDom['nic'];
if ($siren<1000) continue;
$tabId=@$iInsee->getIdentiteEntreprise($siren, $nic);
//print_r($tabId);
$dateCrea=@trim($tabId['dateImmat']);
if ($dateCrea=='0000-00-00' || $dateCrea=='0' || $dateCrea=='') $dateCrea=$tabId['DateCreaEn'];
$adresse=trim(preg_replace('/^0+/','',$tabId['AdresseNum'].' '.$tabId['AdresseBtq'].' '.$tabId['AdresseVoie'].' '.$tabId['AdresseRue']));//.' '.$tabId['Adresse2'];
//rechercheEtab($raisonSociale, $adresse='', $codePostal='', $ville='', $siege='', $actif='', $deb=0, $nbRep=20, $maxRep=200, $pertinence=false, $uniquementAvecSiren='', $ape_etab='') {
$tabAdr=@$iInsee->rechercheEtab('', $adresse, $tabId['CP'], $tabId['Ville'], '', 1, 0, 1, 1000);
$nbEntrep=$tabAdr['nbReponsesTotal'];
2013-06-19 10:24:49 +02:00
// die("$nbEntrep entreprises <20> l'adresse.".EOL);
2012-07-28 14:21:05 +02:00
$etActif=@$tabId['EntActiveRCS']|@$tabId['EtabActifRCS']*1;
$enActif=@$tabId['EntActiveRCS']*1;
$tabUpdate=array( 'enActif'=>$enActif,
'etActif'=>$etActif,
'procol'=>$tabId['SituationJuridique'],
'siege'=>$tabId['Siege'],
'nom'=>$tabId['Nom'],
'nom2'=>$tabId['Nom2'],
'sigle'=>$tabId['Sigle'],
'enseigne'=>$tabId['Enseigne'],
'adrNum'=>$tabId['AdresseNum'],
'adrBtq'=>$tabId['AdresseBtq'],
'adrTypVoie'=>$tabId['AdresseVoie'],
'adrLibVoie'=>$tabId['AdresseRue'],
'ville'=>$tabId['Ville'],
'cp'=>$tabId['CP'],
'adrComp'=>$tabId['Adresse2'],
'pays'=>$tabId['PaysIso2'],
'depComEt'=>$tabId['Dept'].$tabId['codeCommune'],
'activite'=>$tabId['Activite'],
'dateCre'=>$dateCrea,
'dateRad'=>@$tabId['dateRad'],
// 'adrDistSp'=>$tabId['FJ'],
'cj'=>$tabId['FJ'],
'apen'=>$tabId['NafEtab'],
'apet'=>$tabId['NafEnt'],
'nbEntrep'=>$nbEntrep,
);
if (!$iDb->update('tabAdrDom', $tabUpdate, 'id='.$tabDom['id'])) {
print_r($tabUpdate);
die(mysql_error());
} else
echo date ('Y/m/d - H:i:s')." - $i/$nb - $siren $nic (en=$enActif, et=$etActif) : $nbEntrep entreprises\t".$tabId['Nom'].EOL;
}
2013-06-19 10:24:49 +02:00
echo date ('Y/m/d - H:i:s')." - Fin du traitement de mise <20> jour des adresses de domiciliation.".EOL;
2012-07-28 14:21:05 +02:00
?>