668 lines
31 KiB
PHP
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('''=>"'",'&'=>'&', '²'=>'²', "\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));
|
|
}
|
|
|
|
?>
|