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

337 lines
13 KiB
PHP

#!/usr/bin/php -c/var/www/batch/config/php_batch_sd.ini
<?php
function exporte($txt, $lon=-1, $sep="|") {
$txt=strtr(trim($txt),array('&#039;'=>"'",'&amp;'=>'&', '&sup2;'=>'²', "\r"=>'', "\n"=>'', "\t"=>''));
if ($lon==-1) return $txt.$sep;
elseif ($sep=='') return sprintf("%-".$lon.'.'.$lon."s", $txt);
else return trim(sprintf("%-".$lon.'.'.$lon."s", $txt)).$sep;
}
function choixAdr($bodEtab, $bodSiege, $insee) {
if (strlen(trim($bodSiege))>0) $adr=trim($bodSiege);
elseif (strlen(trim($bodEtab))>0) $adr=trim($bodEtab);
else $adr='';
if (isset($insee) && trim($insee)<>'') return $insee;
else return $adr;
}
error_reporting(E_ALL);
include_once(FWK_PATH.'common/chiffres.php');
include_once(FWK_PATH.'common/dates.php');
include_once(INCLUDE_PATH.'partenaires/classMBilans.php');
include_once(INCLUDE_PATH.'insee/classMInsee.php');
include_once(INCLUDE_PATH.'scores/classMFinancier.php');
include_once(INCLUDE_PATH.'scores/classMScores.php');
include_once(FWK_PATH.'mail/sendMail.php');
include_once(INCLUDE_PATH.'partenaires/classMLiens.php');
global $iDb2,$iLiens,$iBilan,$iInsee;
$iDb=new WDB('insee');
$iDb2=new WDB('historiques');
//$iWs=new WsEntreprise();
$iInsee=new MInsee();
$iBilan=new MBilans(0);
$iLiens=new MLiens(0);
$iCotation=new ICotation(array());
/*$argv=$_SERVER['argv'];
$presta=$argv[1];
$date=date('Ymd');
/*
$fp=fopen('/home/data/clients/adecco/adecco'.$presta."_$date.txt",'w');
// Ligne d'entête
fwrite($fp, "insSIREN|insNIC|insL1_nomen|insL2_ComP|insL3_cadr|insL4_VOIE|insL5_disp|insL6_post|insL7_ETRG|insZR1|insrpet|insdepet|insarronet|insctonet|inscomet|inslibcom|insdu|insTu|insuu|inscodpos|insZR2|instcd|inszemet|inscodevoie|insNUMVOIE|insINDREP|insTYPVOIE|insLIBVOIE|insENSEIGNE|insapet700|insZR3|inssiege|instefet|insefetcent|insorigine|insdcRET|insMMIntrET|insACTIVNAT|insLIEUACT|insACTISURF|inssaisonat|insMODET|insdapet|insdefet|insEXPLET|insProdpart|insauxilt|inseaeant|inseaeapet|inseaesec1t|inseaesec2t|insnomen|inssigle|insCIVILITE|inscj|instefen|insefencent|insapen700|insZR4|insaprm|instca|insrecme|insdapen|insdefen|insdcren|insmmintren|insmonoact|insMODEN|insEXPLEN|inseaeann|insEAEapen|inseaesec1n|inseaesec2n|inseaesec3n|inseaesec4n|insnbETEXPL|instcaexp|insregimp|insmonoreg|insrpen|insdepcomen|refAdecco|sdActif|sdEvenDate|sdEven|sdNomPrenomDir|sdYP|sdPctAct|sdSirenAct|sdNomAct".EOL);
if ($presta==1) {
$nbRows=$iDb->select('tmp.adecco', 'REF, SIREN, NIC, siret', "nafet IN('7810Z', '7820Z', '7830Z')", true, MYSQL_ASSOC, true);
echo date('Y/m/d - H:i:s') ." - Il y a $nbRows établissements Adecco en Presta $presta...".EOL;
while($tabTmp=$iDb->fetch(MYSQL_ASSOC)) {
exporteAdecco($tabTmp['siret'],$tabTmp['REF'],$fp);
}
} else {
$nbRows=$iDb->select('tmp.adecco_naf', "'' AS REF, siren AS SIREN, nic AS NIC, siret",
"siret NOT IN(SELECT siret FROM tmp.adecco)", true, MYSQL_ASSOC, true);
echo date('Y/m/d - H:i:s') ." - Il y a $nbRows établissements Adecco en Presta $presta...".EOL;
while($tabTmp=$iDb->fetch(MYSQL_ASSOC)) {
exporteAdecco($tabTmp['siret'],$tabTmp['REF'],$fp);
}
}
echo date('Y/m/d - H:i:s') ." - Fin de la prestation Adecco en Presta $presta.".EOL;
fclose($fp);
die();
*/
$tabSirens=file('/root/sirenDge3.csv');
$fp=fopen('/root/sirenDge3out.csv','a');
foreach ($tabSirens as $i=>$ligne) {
$tabTmp=explode(',', $ligne);
$siren=trim($tabTmp[0]);
$nic=trim($tabTmp[1]);
$ref=trim($tabTmp[2]);
$sirenA=$rs=$civ=$nom=$prenom=$actif=$pct=$pays='';
$tabAct=@$iLiens->getActionnaires($siren, false);
$j=0;
foreach ($tabAct as $j=>$lien) {
//print_r($lien);
$sirenA=$lien['Siren'];
$rs= $lien['RaisonSociale'];
/* $civ= $lien['CodePays'];
$nom= $lien['CodePays'];
$prenom=$lien['CodePays'];*/
$actif= $lien['Actif'];
$pct= $lien['PminNum'];
if ($pct<=50 && $lien['MajMin']=='+') $pct='Major.';
elseif ($pct<=1 && $lien['MajMin']=='i') $pct='Minor.';
$pays= $lien['CodePays'];
$strOut="$i\t$j\t$siren\t$nic\t$ref\tok\t$sirenA\t$rs\t$actif\t$pct\t$pays";
fwrite($fp, $strOut.EOL);
echo $strOut.EOL;
//$civ\t$nom\t$prenom\t
//die();
}
if ($j==0) {
$strOut="$i\t$j\t$siren\t$nic\t$ref\tKO\t$sirenA\t$rs\t$actif\t$pct\t$pays";
fwrite($fp, $strOut.EOL);
echo $strOut.EOL;
}
}
die();
// Traitement clazssique
foreach ($tabSirens as $i=>$ligne) {
$tabTmp=explode("\t", $ligne);
$siren1=trim($tabTmp[0]);
$siren2=trim($tabTmp[1]);
$sirenA=$sirenB=$actif=$pct=$type='';
$dateCessL=$dateCessA=$dateCessB=$inconnu='';
$tabAct=@$iLiens->getActionnaires($siren1, false);
foreach ($tabAct as $j=>$lien) {
if ($lien['Siren']==$siren2) {
$sirenB = $siren2;
$sirenA = $siren1;
break;
}
}
if ($sirenA=='') {
$tabAct=@$iLiens->getActionnaires($siren2, false);
foreach ($tabAct as $j=>$lien) {
if ($lien['Siren']==$siren1) {
$sirenA = $siren2;
$sirenB = $siren1;
break;
}
}
}
// Récursif 1
if ($sirenA=='') {
$tabAct=@$iLiens->getActionnaires($siren1, false);
foreach ($tabAct as $j=>$lienTmp) {
$sirenTmp=$lienTmp['Siren'];
$pctTmp =$lienTmp['PminNum'];
$actifTmp=$lienTmp['Actif'];
if ($actifTmp==0) {
$dateCessLtmp=$lienTmp['DateLien'];
if (str_replace('-','',$dateCessLtmp)*1==0)
$dateCessLtmp=$lienTmp['DateMaj'];
}
$tabActTmp=@$iLiens->getActionnaires($sirenTmp, false);
foreach ($tabActTmp as $j=>$lien) {
if ($lien['Siren']==$siren2) {
$sirenB = $siren2;
$sirenA = $siren1;
$type = 'indirecte';
break;
}
}
}
}
// Récursif 2
if ($sirenA=='') {
$tabAct=@$iLiens->getActionnaires($siren2, false);
foreach ($tabAct as $j=>$lienTmp) {
$sirenTmp=$lienTmp['Siren'];
$pctTmp =$lienTmp['PminNum'];
$actifTmp=$lienTmp['Actif'];
if ($actifTmp==0) {
$dateCessLtmp=$lienTmp['DateLien'];
if (str_replace('-','',$dateCessLtmp)*1==0)
$dateCessLtmp=$lienTmp['DateMaj'];
}
$tabActTmp=@$iLiens->getActionnaires($sirenTmp, false);
foreach ($tabActTmp as $j=>$lien) {
if ($lien['Siren']==$siren1) {
$sirenA = $siren2;
$sirenB = $siren1;
$type = 'indirecte';
break;
}
}
}
}
if ($sirenA<>'') {
if ($type=='') {
$actif = $lien['Actif'];
if ($actif==0) {
$dateCessL=$lien['DateLien'];
if (str_replace('-','',$dateCessL)*1==0)
$dateCessL=$lien['DateMaj'];
}
$pct = $lien['PminNum'];
$type = 'directe';
} else {
if ($actifTmp==0)
$actif=0;
elseif ($lien['Actif']==0) {
$actif=0;
$dateCessL=$lien['DateLien'];
if (str_replace('-','',$dateCessL)*1==0)
$dateCessL=$dateCessLtmp;
if (str_replace('-','',$dateCessL)*1==0)
$dateCessL=$lien['DateMaj'];
} else {
$actif=1;
$dateCessL='';
}
$pct=round((($lien['PminNum']/100)*($pctTmp/100))*100,2);
$type = 'indirecte';
}
$tabId=$iInsee->getIdentiteLight($sirenA);
if ($tabId['Actif']==0) {
$siren=$sirenA;
$nic=$tabId['Nic'];
$ret=$iDb->select('insee.insee_even', 'insEVE,insDATEVE,insSIRETPS,idFlux,insSIRETASS', "insSIREN=$siren AND insNIC=$nic AND insEVE IN (400,410,420,425,430,435,510,530,620,621,650,795)", false, MYSQL_ASSOC);
if (count($ret)>0) {
$tmp=$ret[0];
$dateCessA=$tmp['insDATEVE'];
}
}
$tabId=$iInsee->getIdentiteLight($sirenB);
if ($tabId['Actif']==0) {
$siren=$sirenB;
$nic=$tabId['Nic'];
$ret=$iDb->select('insee.insee_even', 'insEVE,insDATEVE,insSIRETPS,idFlux,insSIRETASS', "insSIREN=$siren AND insNIC=$nic AND insEVE IN (400,410,420,425,430,435,510,530,620,621,650,795)", false, MYSQL_ASSOC);
if (count($ret)>0) {
$tmp=$ret[0];
$dateCessB=$tmp['insDATEVE'];
}
}
} else $inconnu='Y';
echo "$i:\t$siren1\t$siren2\t$sirenB\t$sirenA\t$actif\t$pct\t$type\t$dateCessL\t$dateCessB\t$dateCessA\t$inconnu".EOL;
/*
$sirenAct=$lien['Siren'];
//die(print_r($lien));
if($sirenAct>100 && ($lien['PminNum']>=50 || $lien['MajMin']=='+')) {
$tabIdentiteA=$iInsee->getIdentiteLight($sirenAct);
$pctAct=$lien['Pmin'];
$nomAct=$tabIdentiteA['Nom'];
break;
}
}*/
}
function exporteAdecco($siret,$ref,$fp=false) {
global $iDb2,$iLiens,$iBilan,$iInsee; //insSIREN,insNIC,insL1_nomen,insL2_ComP,insL3_cadr,insL4_VOIE,insL5_disp,insL6_post,insL7_ETRG,insZR1,insrpet,insdepet,insarronet,insctonet,inscomet,inslibcom,insdu,insTu,insuu,inscodpos,insZR2,instcd,inszemet,inscodevoie,insNUMVOIE,insINDREP,insTYPVOIE,insLIBVOIE,insENSEIGNE,insapet700,insZR3,inssiege,instefet,insefetcent,insorigine,insdcRET,insMMIntrET,insACTIVNAT,insLIEUACT,insACTISURF,inssaisonat,insMODET,insdapet,insdefet,insEXPLET,insProdpart,insauxilt,inseaeant,inseaeapet,inseaesec1t,inseaesec2t,insnomen,inssigle,insCIVILITE,inscj,instefen,insefencent,insapen700,insZR4,insaprm,instca,insrecme,insdapen,insdefen,insdcren,insmmintren,insmonoact,insMODEN,insEXPLEN,inseaeann,insEAEapen,inseaesec1n,inseaesec2n,inseaesec3n,inseaesec4n,insnbETEXPL,instcaexp,insregimp,insmonoreg,insrpen,insdepcomen,
//REF,actif,dateInactif,evenInactif,dirigeant,YP,actionPct,actionSiren,actionNom*/
$ret=$iDb2->select('historiques.notice_201012', 'insSIREN,insNIC,insL1_nomen,insL2_ComP,insL3_cadr,insL4_VOIE,insL5_disp,insL6_post,insL7_ETRG,insZR1,insrpet,insdepet,insarronet,insctonet,inscomet,inslibcom,insdu,insTu,insuu,inscodpos,insZR2,instcd,inszemet,inscodevoie,insNUMVOIE,insINDREP,insTYPVOIE,insLIBVOIE,insENSEIGNE,insapet700,insZR3,inssiege,instefet,insefetcent,insorigine,insdcRET,insMMIntrET,insACTIVNAT,insLIEUACT,insACTISURF,inssaisonat,insMODET,insdapet,insdefet,insEXPLET,insProdpart,insauxilt,inseaeant,inseaeapet,inseaesec1t,inseaesec2t,insnomen,inssigle,insCIVILITE,inscj,instefen,insefencent,insapen700,insZR4,insaprm,instca,insrecme,insdapen,insdefen,insdcren,insmmintren,insmonoact,insMODEN,insEXPLEN,inseaeann,insEAEapen,inseaesec1n,inseaesec2n,inseaesec3n,inseaesec4n,insnbETEXPL,instcaexp,insregimp,insmonoreg,insrpen,insdepcomen', "siret='$siret'", false);
$siren=substr($siret,0,9);
$nic=substr($siret,9,5);
$even=$evenDate=$nomPrenomDir=$YP=$pctAct=$sirenAct=$nomAct=$strOut='';
if (count($ret)==0) {
$actif=0;
$strOut.="$siren|$nic|";
for($i=0;$i<78;$i++)
$strOut.='|';
// Dernier Even Insee
$ret=$iDb2->select('insee.insee_even', 'insEVE,insDATEVE,insSIRETPS,idFlux,insSIRETASS', "insSIREN=$siren AND insNIC=$nic AND insEVE IN (400,410,420,425,430,435,510,530,620,621,650,795)", false, MYSQL_ASSOC);
if (count($ret)==1 ) {
$tmp=$ret[0];
$siret2=$tmp['insSIRETPS']*1;
if ($siret2==0) $siret2=$tmp['insSIRETASS']*1;
if ($siret2>0) $siret2=' de/vers '.$siret2;
else $siret2='';
switch ($tmp['insEVE']*1) {
//case400,410,420,425,430,435,510,530,620,621,650,795
case 400: $even='Suppression du doublon'; break;
case 410: $even='Cessation juridique de l\'entreprise'; break;
case 420:
case 425: $even='Cessation économique de l\'entreprise'; break;
case 430:
case 435: $even='Fermeture de l\'etablissement'; break;
case 510:
case 530: $even='Transfert'.$siret2; break;
case 620:
case 621:
case 650: $even='Cessation economique de l\'etablissement'; break;
case 795: $even='Personne radiee à sa demande de SIRENE diffusion'; break;
default: $even=''; break;
}
$evenDate=$tmp['insDATEVE'];
}
} else {
$actif=1;
$tmp=$ret[0];
for($i=0; isset($tmp[$i]); $i++)
$strOut.=str_replace('|',' ',$tmp[$i]).'|';
// Dirigeant
$ret=$iDb2->select('jo.etablissements_act', 'dirNom,dirPrenom,eff_entrep', "siren=$siren LIMIT 0,1", false, MYSQL_ASSOC);
$tmp=@$ret[0];
$nomPrenomDir=trim($tmp['dirPrenom'].' '.$tmp['dirNom']);
$effent=$tmp['eff_entrep']*1;
// Effectif Bilan
$tabBilan=$iDb2->select('jo.bilans', 'siren, dateExercice, dateExercicePre, dureeExercice, dureeExercicePre, monnaie, unite, typeBilan, postes', "siren=$siren AND typeBilan IN ('N','S') ORDER BY dateExercice DESC LIMIT 0,1", false, MYSQL_ASSOC);
$tabBilan=@$tabBilan[0];
$tabTmp=explode(';', $tabBilan['postes']);
foreach($tabTmp as $poste) {
if (trim($poste)<>'') {
$tabTmp2=explode('=',$poste);
$tabPostes[trim($tabTmp2[0])]=trim($tabTmp2[1]);
}
}
if ($tabBilan['typeBilan']=='S')
$tabPostes=@$iBilan->bilanSimplifie2Normal($tabPostes);
$YP=str_replace('NS','', @$tabPostes['YP'])*1;
if ($effent>$YP) $YP=$effent;
if ($YP<10) return;
// Actionnaire
$tabAct=$iLiens->getActionnaires($siren, true);
foreach ($tabAct as $i=>$lien) {
$sirenAct=$lien['Siren'];
//die(print_r($lien));
if($sirenAct>100 && ($lien['PminNum']>=50 || $lien['MajMin']=='+')) {
$tabIdentiteA=$iInsee->getIdentiteLight($sirenAct);
$pctAct=$lien['Pmin'];
$nomAct=$tabIdentiteA['Nom'];
break;
}
}
}
$strOut.="$ref|$actif|$evenDate|$even|".str_replace('|',' ',$nomPrenomDir)."|$YP|$pctAct|$sirenAct|".str_replace('|',' ',$nomAct).EOL;
echo $strOut;
if ($fp) fwrite($fp, $strOut);
}
?>