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
?>