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

149 lines
6.9 KiB
PHP

#!/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]
Mise à jour des adresses de domiciliation.
Options :
-d Mode debug (Verbosité au maximum)
-b Ne pas rechercher les nouvelles annonces Bodacc avec 'domiciliation' dans l'activité
";// -s:SSAAMMJJ Reprendre la mise à jour depuis le flux Insee du SSAAMMJJ
$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();
echo date ('Y/m/d - H:i:s')." - Début du traitement de mise à jour des adresses de domiciliation...".EOL;
if ($newBodacc) {
/** Recherche de la dernière date de MAJ de la table des domiciliations
**/
$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'];
echo date('Y/m/d - H:i:s') ." - Dernière date de mise à jour des domiciliataires : $dateLastMaj.".EOL;
/** Recherche des annonces contenant le mot "domiciliation" dans l'activité réelle
**/
$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'];
echo date('Y/m/d - H:i:s') ." - Il y a $nbSiren entreprises de domiciliations ($nbSiret établissements).".EOL;
// Insertion des siren, nic de tous les établissements trouvés dans la base
$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;
echo date('Y/m/d - H:i:s') ." - Il y a $nbSiren nouvelles entreprises de domiciliations ($nbSiret nouveaux étabs).".EOL;
}
/** Mise à jour de toutes les fiches non encore mises à jour ou trop ancienne
**/
$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);
echo date('Y/m/d - H:i:s') ." - Il y a $nb adresse(s) de domiciliations à mettre à jour pour ajout ou ancien.".EOL;
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'];
// die("$nbEntrep entreprises à l'adresse.".EOL);
$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;
}
echo date ('Y/m/d - H:i:s')." - Fin du traitement de mise à jour des adresses de domiciliation.".EOL;
?>