149 lines
6.9 KiB
PHP
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;
|
|
|
|
?>
|