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

668 lines
31 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,$iDb3,$iLiens,$iBilan,$iInsee,$date;
$iDb=new WDB('jo');
$iDb2=new WDB('historiques');
$iDb3=new WDB('tmp');
$iInsee=new MInsee();
$iBilan=new MBilans(0);
$iLiens=new MLiens(0);
$iCotation=new ICotation(array());
$presta=$purge=$siretReprise=false;
$strReprise='';
$date=date('Ymd');
$tabFichier=array();
$nbSirValides=$nbSirInvalides=0;
$nbNicValides=$nbNicInvalides=0;
$nbInsert=0;
$eff69=$dateDebut=$nafAMS=false;
$strInfoScript='Usage : '.basename($argv[0]). " [OPTION] [Stock Adecco à charger]
Traitement spécifique Adecco Diffusion des Mise à jour des champs complexes de la table 'etablissement_act' et génération du fichier spécifique Véolia.
Options :
-1 Prestation 1 Mise à jour du stock Adecco
-2 Prestation 2 Ajout des établissements de + de 10 salariés absent du stock Adecco
-a=SSAAMMJJ Prestation 3A Créations mensuelles d'établissements de + de 10 salariés depuis le SSAAMMJJ
-b=SSAAMMJJ Prestation 3B Fermeture mensuelles d'établissements depuis le SSAAMMJJ
-c Prestation 3C Stock des liens groupes des établissements de + de 10 salariés
-p Purger la table addeco_out
-r=SIRET Reprendre au siret supérieur
-v Verbosité maximum
-m Traitement AMS
-6 Traitement des 6 à 9 salariés
";
$presta2='';
$argv=$_SERVER['argv'];
if ($_SERVER['argc']>1)
{
for ($i=1; isset($argv[$i]); $i++) {
if (substr($argv[$i],0,1)=='-') {
switch (strtolower(substr($argv[$i],1,1))) {
case '1': $presta=1; break;
case '2': $presta=2; break;
case '6': $eff69=true; $presta2='_69'; break;
case 'm': $nafAMS=true; $presta2='ams'; break;
case 'a': $presta=3.1; $dateDebut=substr($argv[$i],3); break;
case 'b': $presta=3.2; $dateDebut=substr($argv[$i],3); break;
case 'c': $presta=3.3; break;
case 'p': $purge=true; break;
case 'r': $siretReprise=substr($argv[$i],3); break;
case '-':
case '?': die($strInfoScript); break;
default: die('Option '. $argv[$i] . " inconnue !\n");
break;
}
} else $tabFichier[]=$argv[$i];
}
}
// Si pas de date de début alors on prend le 1er jour du mois précédent
if (!$dateDebut) $dateDebut=date('Ymd', mktime(0, 0, 0, date('m')-1, 1, date('Y')));
$dateDebIniYmd=20111201; // Date de début de sdémarrage de la prestation Adecco
$dateDebYmd=substr($dateDebut,0,6).'01';
$dateFinYmd=date('Ymt', mktime(0, 0, 0, substr($dateDebut,4,2), 1, substr($dateDebut,0,4)));
$mailTo='jproust@scores-decisions.com,ylenaour@scores-decisions.com,support@scores-decisions.com,fabienne.sourbier@adecco-groupe.fr,frederic.montagne@adecco-groupe.fr';
if (count($tabFichier)==1) {
/* Chargement du fichier Entrant adecco */
$nomFichier=$tabFichier[0];
$fp=fopen($nomFichier, 'r');
if (!$fp) {
echo date ('Y/m/d - H:i:s')." - Erreur : Impossible d'ouvrir le fichier Adecco à traiter ('".$nomFichier."') !".EOL;
echo date ('Y/m/d - H:i:s')." - Fin du traitement".EOL;
die();
}
$nbLignes=0; // Nombre de ligne du fichier
while (!feof($fp))
{
$nbLignes++;
$a = trim(fgets($fp, 4096));
}
echo date ('Y/m/d - H:i:s')." - Début du traitement du fichier '$nomFichier' ($nbLignes lignes à traiter).".EOL;
rewind($fp);
/** Traitement de la 1ère ligne **/
$ligne = trim(fgets($fp, 4096));
if ($ligne<>'adREF|adSIREN|adNIC|adRAISON_SOCIALE|adADRESSE|adFILLER|adCP|adNAF2008|adTRANCHE_EFFECTIF|adCEDEX|adCODE_COMMUNE|adVILLE|adVILLE_CDX|ADSE')
die('Première ligne du flux Adecco innatendue !'.EOL);
$dateInsert=date('YmdHis');
$nbLignesLues=1;
while (!feof($fp))
{
$nbLignesLues++;
$a=array();
$ligne = trim(fgets($fp, 4096));
$tabEtab=explode('|', $ligne);
$a['adREF'] = $tabEtab[0];
$a['adSIREN'] = $tabEtab[1];
$a['adNIC'] = $tabEtab[2];
$a['adRAISON_SOCIALE'] = $tabEtab[3];
$a['adADRESSE'] = $tabEtab[4];
$a['adFILLER'] = $tabEtab[5];
$a['adCP'] = $tabEtab[6];
$a['adNAF2008'] = $tabEtab[7];
$a['adTRANCHE_EFFECTIF']= $tabEtab[8];
$a['adCEDEX'] = $tabEtab[9];
$a['adCODE_COMMUNE'] = $tabEtab[10];
$a['adVILLE'] = $tabEtab[11];
$a['adVILLE_CDX'] = $tabEtab[12];
$a['ADSE'] = $tabEtab[13];
if (!$iInsee->valideSiren($a['adSIREN'])) {
$a['sirenValide']=0;
$a['nicValide']=0;
$nbNicInvalides++;
$nbSirInvalides++;
} else {
$a['sirenValide']=1;
$nbSirValides++;
if (!$iInsee->valideSiren($a['adSIREN'], $a['adNIC'])) {
$a['nicValide']=0;
$nbNicInvalides++;
} else {
$a['nicValide']=1;
$nbNicValides++;
}
}
$a['siret']=''.$tabEtab[1].''.$tabEtab[2];
if ($iDb3->insert('adecco_in', $a))
$nbInsert++;
elseif (mysql_errno()<>1062)
die(mysql_error().EOL);
}
echo date ('Y/m/d - H:i:s')." - Fin du traitement du fichier '$nomFichier' ($nbLignes/$nbLignesLues lignes traitées dont $nbInsert insérées).".EOL;
}
if ($presta<>1 && $presta<>2 && $presta<>3.1 && $presta<>3.2 && $presta<>3.3) {
if (count($tabFichier)<>1)
echo date('Y/m/d - H:i:s') ." - Prestation '$presta' inconnue !".EOL;
die();
}
$nomFichier='/home/data/clients/adecco/adecco'.$presta.$presta2."_$date.txt";
$fp=fopen($nomFichier,'w');
// Ligne d'entête
if ($presta<>3.2 && $presta<>3.3)
fwrite($fp, "adSIREN|adNIC|adREF|adRAISON_SOCIALE|adADRESSE|adFILLER|adCP|adVILLE|adSE|SIREN|NIC|L1_NOMEN|L2_COMP|L3_CADR|L4_VOIE|L5_DISP|L6_POST|L7_ETRG|ZR1|RPET|DEPET|ARRONET|CTONET|COMET|LIBCOM|DU|TU|UU|CODPOS|ZR2|TCD|ZEMET|CODEVOIE|NUMVOIE|INDREP|TYPVOIE|LIBVOIE|ENSEIGNE|APET700|ZR3|SIEGE|TEFET|EFETCENT|ORIGINE|DCRET|MMINTRET|ACTIVNAT|LIEUACT|ACTISURF|SAISONAT|MODET|DAPET|DEFET|EXPLET|PRODPART|AUXILT|EAEANT|EAEAPET|EAESEC1T|EAESEC2T|NOMEN|SIGLE|CIVILITE|CJ|TEFEN|EFENCENT|APEN700|ZR4|APRM|TCA|RECME|DAPEN|DEFEN|DCREN|MMINTREN|MONOACT|MODEN|EXPLEN|EAEANN|EAEAPEN|EAESEC1N|EAESEC2N|EAESEC3N|EAESEC4N|NBETEXPL|TCAEXP|REGIMP|MONOREG|RPEN|DEPCOMEN|sdActif|sdEvenDate|sdEven|sdNomPrenomDir|sdYP|sdPctAct|sdSirenAct|sdNomAct".EOL);
//exporteAdecco('32392385400059','ref',$fp, $presta,'','','','','');
//die();
if ($purge) {
//$iDb3->query('/*TRUNCATE TABLE adecco_out;*/');
}
if ($presta==1) {
if ($siretReprise) $strReprise=" AND CONCAT(adSIREN,adNIC)>$siretReprise ";
//$nbRows=$iDb->select('tmp.adecco', 'REF, SIREN, NIC, siret, RAISON_SOCIALE, ADRESSE, FILLER, CP, VILLE', "nafet IN('7810Z', '7820Z', '7830Z')", true, MYSQL_ASSOC, true);
if ($eff69) $where="moinsDe10=1"; else $where='1';
$nbRows=$iDb->select('tmp.adecco_in',
'adRef AS REF, adSIREN AS SIREN, adNIC AS NIC, CONCAT(adSIREN,adNIC) AS siret, adRAISON_SOCIALE AS RAISON_SOCIALE, adADRESSE AS ADRESSE, adFILLER AS FILLER, adCP AS CP, adVILLE AS VILLE, ADSE/*CODE_COMMUNE, CEDEX*/',
"$where $strReprise ORDER BY adSIREN ASC, adNIC ASC", 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, $presta, $eff69, $nafAMS, $tabTmp['RAISON_SOCIALE'], $tabTmp['ADRESSE'], $tabTmp['FILLER'], $tabTmp['CP'], $tabTmp['VILLE'], $tabTmp['ADSE']);
}
/** @toto Presta 1 :
- enregistrer chaque ligne fourni en bdd
- vérifier les fusions
*/
} elseif ($presta==3.1) {
$iDb->query('SELECT siretTrouve AS siret FROM tmp.adecco_out UNION SELECT siret FROM tmp.adecco_out;');
echo mysql_error().EOL;
if (mysql_errno()>0) die();
$tabSiret=array();
while($tabTmp=$iDb->fetch(MYSQL_ASSOC)) {
$tabSiret[]=$tabTmp['siret'];
}
$tabSiret=array_unique($tabSiret);
$nbRows=count($tabSiret);
echo date('Y/m/d - H:i:s') ." - Il y a $nbRows siret Adecco uniques à exclure en Presta $presta...".EOL;
/** Les Créations d'étab>10 **/
/*if ($eff69) $where10='AND (insEFENCENT>5 || insTEFET>2)';
elseif($nafAMS) $where10="AND (insTEFET IN ('00','01','02') OR insEFENCENT BETWEEN 1 AND 5) AND insCJ BETWEEN 4000 AND 6999
AND insAPET700 IN ('4773Z','8610Z','8621Z','8622A','8622B','8622C','8623Z','8690A','8690B','8690C','8690D','8690E','8690F','8710A','8710B','8810A','8810B','8810C','8891A','8891B','8899A','8899B')";
else $where10='AND (insEFENCENT>9 || insTEFET>10)';*/
$where10="AND (insEFENCENT>5 OR insTEFET>2 OR ((insTEFET IN ('00','01','02') OR insEFENCENT BETWEEN 1 AND 5) AND insCJ BETWEEN 4000 AND 6999
AND insAPET700 IN ('4773Z','8610Z','8621Z','8622A','8622B','8622C','8623Z','8690A','8690B','8690C','8690D','8690E','8690F','8710A','8710B','8810A','8810B','8810C','8891A','8891B','8899A','8899B')))";
if ($siretReprise) $strReprise=" AND CONCAT(insSIREN, insNIC)>$siretReprise ";
if ($dateDebut && $dateDebut>19800101 && $dateDebut<=date('Ymd')) $strDateDeb=" AND (insDCRET BETWEEN $dateDebIniYmd AND $dateFinYmd OR insDCREN BETWEEN $dateDebYmd AND $dateFinYmd)";
$nbRows=$iDb->select('insee.insee_even', "'' AS REF, insSIREN AS SIREN, insNIC AS NIC, concat(insSIREN, insNIC) AS siret",
"insCJ NOT BETWEEN 3000 AND 3999 AND insAPET700 NOT IN ('6820B','7020Z') AND
(insEVE IN ('110','120','125','130','145','M0C','M0R') OR
insEVE IN ('510','520') AND insTYPETAB IN(9,11,21,31)) $strDateDeb $where10 $strReprise
GROUP BY siret ORDER BY siret ASC", true, MYSQL_ASSOC, true);
echo date('Y/m/d - H:i:s') ." - Il y a $nbRows établissements Adecco en Presta $presta...".EOL;
echo mysql_error().EOL;
if (mysql_errno()>0) die();
while($tabTmp=$iDb->fetch(MYSQL_ASSOC)) {
if (!in_array($tabTmp['siret'], $tabSiret))
exporteAdecco($tabTmp['siret'],$tabTmp['REF'],$fp, $presta, $eff69, $nafAMS);
}
} elseif ($presta==3.2) {
/** Toutes les Fermetures **/
$iDb->query('SELECT CONCAT(siren,nic) AS siret FROM tmp.adecco_fermetures;');
echo mysql_error().EOL;
if (mysql_errno()>0) die();
$tabSiret=array();
while($tabTmp=$iDb->fetch(MYSQL_ASSOC)) {
$tabSiret[]=$tabTmp['siret'];
}
$tabSiret=array_unique($tabSiret);
$nbRows=count($tabSiret);
echo date('Y/m/d - H:i:s') ." - Il y a $nbRows siret Adecco uniques à exclure en Presta $presta...".EOL;
$dateDebYmd=20120701;
if ($siretReprise) $strReprise=" AND CONCAT(insSIREN, insNIC)>$siretReprise ";
if ($dateDebut && $dateDebut>19800101 && $dateDebut<=date('Ymd')) $strDateDeb=" AND insDATEVE BETWEEN $dateDebYmd AND $dateFinYmd ";
else die('Préciser une date de début valide !'.EOL);
$nbRows=$iDb->select('insee.insee_even', "'' AS REF, insSIREN AS SIREN, insNIC AS NIC, concat(insSIREN, insNIC) AS siret, insDATEVE, insEVE",
"(insEVE IN ('400','410','430','435','795','810','M0F') OR
insEVE IN ('510','530') AND insTYPETAB IN(8,10,20,30)) $strDateDeb $strReprise GROUP BY siret ORDER BY siret ASC", true, MYSQL_ASSOC, true);
echo date('Y/m/d - H:i:s') ." - Il y a $nbRows établissements Adecco en Presta $presta...".EOL;
echo mysql_error().EOL;
if (mysql_errno()>0) die();
fwrite($fp, "adSIREN|adNIC|sdActif|sdEvenDate|sdEven".EOL);
while($tabTmp=$iDb->fetch(MYSQL_ASSOC)) {
$even='';
switch ($tabTmp['insEVE']) {
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 'M0F':
case '430':
case '435': $even.='fermeture de l\'etablissement '; break;
case '510':
case '530': $even.='fermeture de l\'etablissement dans le cadre d\'un transfert '; break;
case '620':
case '621':
case '650': $even.='cessation economique de l\'etablissement '; break;
case '795': $even.='personne radiee a sa demande de SIRENE diffusion '; break;
case '810': $even.='suppression du siren suite à refus RCS'; break;
default: $even.=' '; break;
}
$strOut=$tabTmp['SIREN'].'|'.$tabTmp['NIC'].'|0|'.$tabTmp['insDATEVE'].'|'.trim($even).EOL;
if ($fp) {
if (!in_array($tabTmp['SIREN'].$tabTmp['NIC'], $tabSiret)) {
fwrite($fp, str_replace(';',' ',$strOut));
$iDb3->insert('adecco_fermetures', array( 'siren'=>$tabTmp['SIREN'],
'nic'=>$tabTmp['NIC'],
'evenDate'=>$tabTmp['insDATEVE'],
'even'=>trim($even),
'presta'=>$presta,
'prestaDate'=>$date));
}
}
echo $strOut;
}
} elseif ($presta==3.3) {
if ($siretReprise) $strReprise=" AND concat(siren,nic)>$siretReprise ";
/** Toutes les Liens Groupe des étabs > 9 salariés **/
/* if ($eff69) $where10='AND eff_etab>5';
elseif($nafAMS) $where10="AND (eff_etab>5 OR (teff_etab IS NOT NULL AND eff_etab IN (0,1,2) AND presentRcs=1
AND ape_etab IN ('4773Z','8610Z','8621Z','8622A','8622B','8622C','8623Z','8690A','8690B','8690C','8690D','8690E','8690F','8710A','8710B','8810A','8810B','8810C','8891A','8891B','8899A','8899B')))";
else $where10='AND eff_etab>9';*/
$where10="AND (eff_etab>5 OR (teff_etab IS NOT NULL AND eff_etab IN (0,1,2) AND presentRcs=1
AND ape_etab IN ('4773Z','8610Z','8621Z','8622A','8622B','8622C','8623Z','8690A','8690B','8690C','8690D','8690E','8690F','8710A','8710B','8810A','8810B','8810C','8891A','8891B','8899A','8899B')))";
$nbRows=$iDb->select('jo.etablissements_act', "'' AS REF, siren AS SIREN, nic AS NIC, concat(siren,nic) AS siret, sirenGrp",
"cj NOT BETWEEN 3000 AND 3999 AND ape_etab NOT IN ('6820B','7020Z') $where10 AND sirenGrp>1000 $strReprise ORDER BY siren, nic", true, MYSQL_ASSOC, true);
echo date('Y/m/d - H:i:s') ." - Il y a $nbRows établissements Adecco en Presta $presta...".EOL;
echo mysql_error().EOL;
if (mysql_errno()>0) die();
fwrite($fp, "adSIREN|adNIC|sdPctAct|sdSirenAct|sdNomAct".EOL);
$sirenPre=false;
$pctAct=$sirenAct=$nomAct='';
while($tabTmp=$iDb->fetch(MYSQL_ASSOC)) {
$siren=$tabTmp['SIREN'];
// Actionnaire
if ($siren<>$sirenPre) {
$pctAct=$sirenAct=$nomAct='';
$tabAct=$iLiens->getActionnaires($siren, true);
foreach ($tabAct as $i=>$lien) {
$sirenAct=$lien['Siren']*1;
if($sirenAct>1000 && $lien['PminNum']>=50) {
$ret=$iDb2->select('jo.etablissements_act', 'sirenGrp', "siren=$siren LIMIT 0,1", false, MYSQL_ASSOC);
if (count($ret)==1) $sirenAct=$ret[0]['sirenGrp'];
$tabIdentiteA=@$iInsee->getIdentiteLight($sirenAct);
$pctAct=$lien['Pmin'];
$nomAct=str_replace('|',' ',$tabIdentiteA['Nom']);
break;
} else
$sirenAct='';
}
if ($sirenAct<=1000) $sirenAct='';
}
if ($pctAct=='' && $sirenAct=='' && $nomAct=='') {
$sirenPre=$siren;
continue;
}
$strOut=$tabTmp['SIREN'].'|'.$tabTmp['NIC']."|$pctAct|$sirenAct|$nomAct".EOL;
if ($fp) fwrite($fp, str_replace(';',' ',$strOut));
echo $strOut;
$sirenPre=$siren;
}
} else {
/** @todo
- Non présents dans le fichier source Adecco
- Non Fournis dans le fichier principal (Déménagements, et affectation de NIC valide)
etab >= à 10 salariés, France entière avec Corse et les DOM TOM. Les sociétés étrangères immatriculées au RCS sont à exclure.
Les 2 NAF suivants sont à exclure
6820B = SCI/location de terrains
7020Z = Holding
*/
$tabSiret=array();
$iDb->query('DROP table IF EXISTS adecco_siret;');
$iDb->query('CREATE TABLE adecco_siret SELECT siret FROM tmp.adecco_in UNION SELECT siretTrouve AS siret FROM tmp.adecco_out;');
$iDb->query('ALTER TABLE adecco_siret CHANGE siret siret BIGINT(14) UNSIGNED ZEROFILL NULL DEFAULT NULL, ADD PRIMARY KEY(siret);');
/*echo mysql_error().EOL;
if (mysql_errno()>0) die();
while($tabTmp=$iDb->fetch(MYSQL_ASSOC)) {
$tabSiret[]=$tabTmp['siret'];
}
$tabSiret=array_unique($tabSiret);
$nbRows=count($tabSiret);*/
//echo date('Y/m/d - H:i:s') ." - Il y a $nbRows siret Adecco uniques à exclure en Presta $presta...".EOL;
echo date('Y/m/d - H:i:s') ." - Préparation des siret Adecco uniques à exclure en Presta $presta...".EOL;
/*if ($eff69) $where10='AND (eff_etab>5 OR teff_etab>2) AND (eff_etab<10 OR teff_etab<11)';
elseif($nafAMS) $where10="AND eff_etab>=0 AND eff_etab<3 AND teff_etab IS NOT NULL AND presentRcs=1
AND ape_etab IN ('4773Z','8610Z','8621Z','8622A','8622B','8622C','8623Z','8690A','8690B','8690C','8690D','8690E','8690F','8710A','8710B','8810A','8810B','8810C','8891A','8891B','8899A','8899B')";
else $where10='AND (eff_etab>9 OR teff_etab>10)';
*/
$where10="AND (eff_etab>5 OR ape_etab IN ('4773Z','8610Z','8621Z','8622A','8622B','8622C','8623Z','8690A','8690B','8690C','8690D','8690E','8690F','8710A','8710B','8810A','8810B','8810C','8891A','8891B','8899A','8899B'))";
if ($siretReprise) $strReprise=" AND concat(siren,nic)>$siretReprise ";
$nbRows=$iDb->select('jo.etablissements_act', "'' AS REF, siren AS SIREN, nic AS NIC, concat(siren, nic) AS siret",
"cj NOT BETWEEN 3000 AND 3999 AND ape_etab NOT IN ('6820B','7020Z') $where10 /*AND dateCrea_etab<=20120801*/
AND concat(siren, nic) NOT IN(SELECT siret FROM tmp.adecco_siret) $strReprise ORDER BY siret", true, MYSQL_ASSOC, true);
// $strReprise ORDER BY siret", true, MYSQL_ASSOC, true);
// "siret NOT IN(SELECT CONCAT(SIREN,NIC) AS siret FROM tmp.adecco_echantillon)", true, MYSQL_ASSOC, true);
echo date('Y/m/d - H:i:s') ." - Il y a $nbRows établissements Adecco en Presta $presta...".EOL;
echo mysql_error().EOL;
if (mysql_errno()>0) die();
//die();
while($tabTmp=$iDb->fetch(MYSQL_ASSOC)) {
if (!in_array($tabTmp['siret'], $tabSiret)) {
//echo 'siret='.$tabTmp['siret'].EOL;
exporteAdecco($tabTmp['siret'],$tabTmp['REF'],$fp, $presta, $eff69, $nafAMS);
}
}
$iDb->query('DROP table adecco_siret;');
}
echo date('Y/m/d - H:i:s') ." - Fin de la prestation Adecco en Presta $presta.".EOL;
fclose($fp);
if (($presta==3.1 || $presta==3.2 || $presta==3.3) && $mailTo) {
$tabAttached=array($nomFichier);
$messageInfo="Bonjour,
Veuillez trouver ci-joint le fichier Scores & Décisions relatifs à votre prestation contractuelle n°$presta.
Bien Cordialement,
Le service Support.
--
SCORES & DECISIONS
Service support
1, rue de Clairefontaine - 78120 RAMBOUILLET
tél : 33 (0)1 75 43 80 10
fax : 33 (0)1 75 43 85 74
support@scores-decisions.com
http://www.scores-decisions.com/
Scores & Décisions est l'acteur nouvelle génération de l'information et de l'évaluation des entreprises
Pensez à l'environnement avant d'imprimer ce message !
Save paper - think before you print";
@sendMail('production@scores-decisions.com', $mailTo, "Prestation Adecco S&D $presta", $messageInfo, '', $tabAttached);
}
die();
function exporteAdecco($siret,$ref,$fp=false, $presta, $eff69=false, $nafAMS=false, $RAISON_SOCIALE='', $ADRESSE='', $FILLER='', $CP='', $VILLE='', $ADSE='') {
global $iDb2,$iDb3,$iLiens,$iBilan,$iInsee,$date;
$siren=substr($siret,0,9);
$nic=substr($siret,9,5);
$strIdentite="
SIREN,NIC,NOM AS L1_nomen,NOM2 AS L2_ComP,ADR_COMP AS L3_cadr,
NULL AS L4_VOIE, ADR_DISTSP AS L5_disp, NULL AS L6_POST, PAYS AS L7_ETRG, '' AS ZR1, NULL AS RPET, ADR_DEP AS insdepet,
NULL AS ARRONET, NULL AS CTONET, ADR_COM AS comet, ADR_LIBCOM AS libcom, NULL AS DU, NULL AS TU, NULL AS UU,
ADR_CP AS codpos, '' AS ZR2, NULL AS TCD, NULL AS ZEMET, CODEVOIE, ADR_NUMVOIE AS NUMVOIE, ADR_BTQ AS INDREP,
ADR_TYPVOIE AS TYPVOIE, ADR_LIBVOIE AS LIBVOIE, ENSEIGNE, APE_ETAB AS apet700, '' AS ZR3, SIEGE,
TEFF_ET AS tefet, EFF_ET AS efetcent, ORIGINE, DCRET, NULL AS MMINTRET, ACTIVNAT, LIEUACT, ACTISURF, SAISONAT, MODET,
DAPET, DEFET, EXPLET, PRODPART, AUXILT, NULL AS EAEANT, NULL AS EAEAPET, NULL AS EAESEC1T, NULL AS EAESEC2T, NOM AS nomen,
SIGLE, CIVILITE, CJ, TEFF_ENT AS tefen, EFF_ENT AS efencent, APE_ENT AS insapen700, '' AS ZR4, APRM, TCA,
NULL AS RECME, DAPEN, DEFEN, DCREN,NULL AS MMINTREN, MONOACT, MODEN, EXPLEN, NULL AS EAEANN, NULL AS EAEAPEN,
NULL AS EAESEC1N, NULL AS EAESEC2N, NULL AS EAESEC3N, NULL AS EAESEC4N, NBETAB AS nbETEXPL, TCAEXP, REGIMP,
MONOREG, NULL AS RPEN,NULL AS DEPCOMEN, ACTIF AS sdActif";/*EFF_ET mediumint(7) UNSIGNED ZEROFILL Non Affiche les valeurs distinctes Modifier Supprimer Primaire Unique Index Texte entier
TEFF_ET*/
$strNotice="
insSIREN AS SIREN, insNIC AS NIC, insL4_VOIE AS L4_VOIE, insL6_POST AS L6_POST,
insRPET AS RPET, insDEPCOMEN AS DEPCOMEN, insRPEN AS RPEN, insARRONET AS ARRONET, insCTONET AS CTONET, insTCD AS TCD,
insZEMET AS ZEMET, insDU AS DU, insTU AS TU, insUU AS UU, insMMINTRET AS MMINTRET, insMMINTREN AS MMINTREN, insRECME AS RECME,
insEAEANT AS EAEANT, insEAEAPET AS EAEAPET, insEAESEC1T AS EAESEC1T, insEAESEC2T AS EAESEC2T, insEAEANN AS EAEANN,
insEAEAPEN AS EAEAPEN, insEAESEC1N AS EAESEC1N, insEAESEC2N AS EAESEC2N, insEAESEC3N AS EAESEC3N, insEAESEC4N AS EAESEC4N";
$ret=$iDb2->select('insee.identite', $strIdentite, "SIREN=$siren AND NIC=$nic", false);
$ret2=$iDb2->select('insee.insee_notices', $strNotice, "insSIREN=$siren AND insNIC=$nic", false, MYSQL_ASSOC);
//echo '2:'.mysql_error().EOL;
//$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);
$even=$evenDate=$nomPrenomDir=$YP=$pctAct=$sirenAct=$nomAct='';
$strOut="$siren|$nic|$ref|$RAISON_SOCIALE|$ADRESSE|$FILLER|$CP|$VILLE|$ADSE|";
if (count($ret)==0) {
/*$actif=0;
$strOut.="$siren|$nic|";
for($i=0;$i<79;$i++)
$strOut.='|';*/
$even='Siren/Siret invalide';
// Recherche par IDENTITE
$deb=0;$nbRep=20;$maxRep=20;$siege=$actif='';
$nomIn=$RAISON_SOCIALE;
$adrIn=$ADRESSE;
//$FILLER
$cpIn=$CP;
$comIn=$VILLE;
$res=@$iInsee->rechercheEtab($nomIn, $adrIn, $cpIn, $comIn, $siege, $actif, $deb, $nbRep, $maxRep, false, true);
if ($res['nbReponses']>0) {
$levMin=1;
$trouve=false;
foreach ($res['reponses'] as $i=>$etab) {
//die(print_r($etab));
$size=strlen($nomIn.$etab['Nom'].$adrIn.$etab['Adresse'].$cpIn.$etab['CP'].$comIn.$etab['Ville']);
$levNom=levenshtein($nomIn,$etab['Nom']);
$levAdr=levenshtein($adrIn,$etab['Adresse']);
$levCP =levenshtein($cpIn ,$etab['CP']);
$levCom=levenshtein($comIn,$etab['Ville']);
$levTot=$levNom+$levAdr+$levCP+$levCom;
$levPct=$levTot/$size;
if ($levPct<0.15 && $levPct<$levMin) {
$trouve=true;
$siret=''.$etab['Siren'].''.$etab['Nic'];
$levMin=$levPct;
}
}
if ($trouve) {
$siren=substr($siret,0,9);
$nic=substr($siret,9,5);
$ret=$iDb2->select('insee.identite', $strIdentite, "SIREN=$siren AND NIC=$nic", false);
$ret2=$iDb2->select('insee.insee_notices', $strNotice, "insSIREN=$siren AND insNIC=$nic", false, MYSQL_ASSOC);
}
}
}
if (count($ret)==0) {
$actif=0;
$strOut.="$siren|$nic|";
for($i=0;$i<80;$i++)
$strOut.='|';
$even='Siren/Siret inexistant';
} else {
$tmp=$ret[0];
$actif=$tmp['sdActif']*1;
$nouveauSiret='';
$tabAncienSiret=array();
$nbDem=0;
while ($actif==0) {
if ($presta==2) return;
// Recherche du nouveau siret
//echo "DEB Recherche du nouveau siret pour $siren $nic actif=$actif, nbDem=$nbDem, nouveauSiret=$nouveauSiret/";
$tabAssoc=@$iInsee->getSiretAssoc($siren, $nic);
$nouveauSiret=@trim(''.$tabAssoc['suc']['siren'].
$tabAssoc['suc']['nic']);
@$tabAncienSiret[$nouveauSiret]++;
if($nouveauSiret<>'' && @$tabAncienSiret[''.$siren.$nic]<=2) {
$nbDem++;
$siren=substr($nouveauSiret,0,9);
$nic=substr($nouveauSiret,9,5);
$ret=$iDb2->select('insee.identite', $strIdentite, "SIREN=$siren AND NIC=$nic", false);
$ret2=$iDb2->select('insee.insee_notices', $strNotice, "insSIREN=$siren AND insNIC=$nic", false, MYSQL_ASSOC);
$tmp=$ret[0];
$actif=$tmp['sdActif']*1;
$even="Etablissement déménagé $nbDem fois ";
} else
break;
//echo "FIN Recherche du nouveau siret pour $siren $nic actif=$actif, nbDem=$nbDem, nouveauSiret=$nouveauSiret/";
}
//$tmp=$ret[0];
//$actif=$tmp['sdActif'];
$effet=$tmp['efetcent']*1;
$effetTR=$tmp['tefet']*1;
//(insEFENCENT>5 || insTEFET>2)
$tmp2=@$ret2[0];
$afficherNotice=false;
if ($actif*1==0) {
$actif=0;
$strOut.="$siren|$nic|";
for($i=0;$i<80;$i++)
$strOut.='|';
if (@$even=='') $even='Etablissement inactif ';
else $even.='inactif ';
// Recherche du 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='';*/
$infoFusion=false;
switch ($tmp['insEVE']*1) {
case 400: $even.='suppression du doublon '; break;
case 410: $even.='cessation juridique de l\'entreprise '; $infoFusion=true; break;
case 420:
case 425: $even.='cessation économique de l\'entreprise ';$infoFusion=true; 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 a sa demande de SIRENE diffusion '; break;
default: $even.=' '; break;
}
$evenDate=$tmp['insDATEVE'];
if ($infoFusion) {
// Annonces BODACC Fusion/Absorptions
$tabFusion=$iInsee->getAnnoncesLegales($siren, 0, array(2700,2701,2702,2703,2710,2720,2721,2725,2726,2730,2740), false);
if (count($tabFusion)>0) {
$FUSIONPROJET_SIREN=0;
foreach ($tabFusion as $iDep=>$depot) {
if ($iDep==0)
$ANNONCEFUSDATE=$depot['DateParution'];
$ANNONCEFUS++;
$FUSIONPROJET_DATE=$depot['dateJugement']; // Date du projet de fusion
$FUSIONPROJET=$depot['complement']; // Présence d'un projet de fusion, libellé du projet
if (preg_match_all("/((?:[0-9]{9,9})|(?:[0-9]{3,3} [0-9]{3,3} [0-9]{3,3})|(?:[0-9]{3,3}\.[0-9]{3,3}\.[0-9]{3,3})|(?:[0-9]{3,3}-[0-9]{3,3}-[0-9]{3,3}))/", $FUSIONPROJET, $matches)) {
foreach ($matches[1] as $FUSIONPROJET_SIREN) {
$FUSIONPROJET_SIREN=strtr($FUSIONPROJET_SIREN, array('.'=>'','-'=>'', ' '=>''));
if (!$iInsee->valideSiren($FUSIONPROJET_SIREN)) $FUSIONPROJET_SIREN=0;
else break;
}
}
if ($FUSIONPROJET_SIREN*1>1000) break;
}
$even.='dans le cadre d\'une fusion ';
if ($FUSIONPROJET_SIREN>1000) $even.="avec $FUSIONPROJET_SIREN ";
}
if (strtr($evenDate,array('-'=>''))*1==0) {
$tabRad=$iInsee->getAnnoncesLegales($siren, 0, array(2000,2200,2201,2202,2203,2204,2205,2206,2208,2210,2212,6000,6001,6002,6003,6004,6005,6100,6200,6201,6300,6400,6500,6600,6700), false);
$evenDate=$tabRad[0]['DateParution'];
}
}
}
} else {
foreach ($tmp as $i=>$value) {
if (is_numeric($i)) {
if ($value===null)
$afficherNotice=true;
else {
$strOut.=str_replace('|',' ',$tmp[$i]).'|';
$afficherNotice=false;
}
} else {
if ($afficherNotice) {
$strOut.=str_replace('|',' ',$tmp2[$i]).'|';
}
}
}
if ($presta==2) {
/* if ($eff69 && (($effet<6 && $effetTR<3) || $actif==0)) return;
elseif ($nafAMS && ($effet>5 || $actif==0)) return;
elseif (!$eff69 && !$nafAMS && ($effet<10 || $actif==0)) return;*/
if (($effet<6 && $effetTR<3) || $actif==0) return;
}
// Dirigeant
/*$ret=$iDb2->select('jo.etablissements', 'dirNom,dirPrenom', "siren=$siren LIMIT 0,1", false, MYSQL_ASSOC);
$tmp=@$ret[0];*/
$nomPrenomDir='';//trim($tmp['dirPrenom'].' '.$tmp['dirNom']);
// Actionnaire
$tabAct=$iLiens->getActionnaires($siren, true);
foreach ($tabAct as $i=>$lien) {
$sirenAct=$lien['Siren']*1;
//die(print_r($lien));
if($sirenAct>1000 && $lien['PminNum']>=50 /*|| $lien['MajMin']=='+')*/) {
$ret=$iDb2->select('jo.etablissements_act', 'sirenGrp', "siren=$siren LIMIT 0,1", false, MYSQL_ASSOC);
if (count($ret)==1) $sirenAct=$ret[0]['sirenGrp'];
$tabIdentiteA=$iInsee->getIdentiteLight($sirenAct);
$pctAct=$lien['Pmin'];
$nomAct=$tabIdentiteA['Nom'];
break;
} else
$sirenAct='';
}
if ($sirenAct<=1000) $sirenAct='';
}
}
$strOut.="$evenDate|$even|".str_replace('|',' ',$nomPrenomDir)."|$YP|$pctAct|$sirenAct|".str_replace('|',' ',$nomAct).EOL;
//if ($presta==1) {
$iDb3->insert('adecco_out', array( 'ref'=>$ref,
'siren'=>$siren,
'nic'=>$nic,
'siretTrouve'=>$siren.''.$nic,
'siret'=>$siret,
'evenDate'=>$evenDate,
'even'=>$even,
'presta'=>$presta,
'prestaDate'=>$date));
//}
//echo $strOut;
echo "$siret\t$ref\t$ADSE\t$RAISON_SOCIALE\t$CP\t$VILLE".EOL;
if ($fp) fwrite($fp, str_replace(';',' ',$strOut));
}
?>