diff --git a/library/Metier/insee/classMInsee.php b/library/Metier/insee/classMInsee.php index faa5e8e1..24202119 100644 --- a/library/Metier/insee/classMInsee.php +++ b/library/Metier/insee/classMInsee.php @@ -2302,7 +2302,8 @@ print_r($tabTmp, true)); ); /** Estimation du Chiffre d'affaires **/ - if ($tabRet['TrancheCA']*1==0 && $tabInsee['ACTIF']==1) { + $cj1=substr($tabInsee['CJ'],0,1)*1; + if ($tabRet['TrancheCA']*1==0 && $tabInsee['ACTIF']==1 && $tabInsee['CJ']<>1800 && $tabInsee['CJ']<>1900 && $cj1<>7 && $cj1<>8 && $cj1<>9) { $caEstime=$this->getCAnafEffectif($tabInsee['APE_ENT'], $tabInsee['EFF_ENT']); $tabRet['TrancheCA']=$this->getTca($caEstime); $tabRet['TrancheCALib']=self::$tabTCA[$tabRet['TrancheCA']]; diff --git a/library/Metier/partenaires/classMLiens.php b/library/Metier/partenaires/classMLiens.php index a6795b3a..1aa3601f 100644 --- a/library/Metier/partenaires/classMLiens.php +++ b/library/Metier/partenaires/classMLiens.php @@ -55,6 +55,7 @@ class MLiens { //$tabActiDB=mysql_select('dbo_liens_fi', 'SirenEntite, NomAdresse, PourcentageDetenu, Ville, Lien, MAJLien, MAJImport', "Siren='$siren' AND CodeLien='AC' ORDER BY PourcentageDetenu DESC"); //@sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "Debug $siren ($actifsUniquement)", print_r($tab,true)) ; $sourcePre=$unique=false; + $pctTot=0; $tabRet=array(); foreach ($tab as $i=>$lien) { if ($lien['source']>=1700) $source=1700; @@ -89,10 +90,15 @@ class MLiens { break; } $dateMaj=$lien['dateLien']; + $pctLien=$lien['Pmin']*1; + $pctTot+=$pctLien; + // On évite d'afficher des totaux de détention > à 100% + if($pctTot>100) $pctLien=0; + if ($lien['dateInsert']>$dateMaj) $dateMaj=$lien['dateInsert']; if ($lien['dateUpdate']>$dateMaj) $dateMaj=$lien['dateUpdate']; - $tabRet[]=array( 'Pmin' => number_format($lien['Pmin']*1,2,',',''), - 'PminNum' => $lien['Pmin']*1, + $tabRet[]=array( 'Pmin' => number_format($pctLien,2,',',''), + 'PminNum' => $pctLien, 'MajMin' => $majMin, 'RaisonSociale' => strtr($lien['RaisonSociale'],$this->tabChars), 'Pays' => $libPays, @@ -105,7 +111,7 @@ class MLiens { } $sourcePre=$source; } - + if (count($tabRet)==0) { switch ($tabIdentite['FJ']*1) { case 7112: // Autorité administrative indépendante @@ -299,22 +305,6 @@ class MLiens { if ($etab['FJ']==1800 && $rsEtab==$rsLien) $tabSiren[]=$etab['Siren']; } - /* - 'Nom'=>prepareString(strtr($etab['Nom'],'/*',' ')), - 'Nom2'=>prepareString($etab['Nom2']), - 'Sigle'=>prepareString($etab['Sigle']), - 'Enseigne'=>prepareString($etab['Enseigne']), - 'Adresse'=>prepareString($etab['Adresse']), - 'CP'=>$etab['CP'], - 'Ville'=>prepareString($etab['Ville']), - 'Tel'=>$etab['Tel'], - 'Fax'=>$etab['Fax'], - 'Nic'=>$etab['Nic'], - 'Actif'=>$etab['Actif'], - 'NafEtab'=>$etab['NafEtab'], // Etablissement - 'NafEtabLib'=>prepareString($etab['NafEtabLib']), - 'NafEnt'=>$etab['NafEnt'], // Entreprise - 'NafEntLib'=>prepareString($etab['NafEntLib']),*/ $tabSiren2=array_unique($tabSiren); if (count($tabSiren2==1)) $siren2=end($tabSiren2); else $siren2=$lien['dirSiren']; @@ -444,8 +434,10 @@ class MLiens { **/ public function getParticipations($siren=false, $actifsUniquement=true) { if (!$siren) $siren=$this->siren; - $tab=$this->iDb->select('liens LEFT JOIN tabPays ON codPays3=Pays', 'Siren1, ActionPart, Pmin, Pmax, MajMin, PpPm, Siren2, RaisonSociale, Pays, libPays, actif, source', "Siren1='$siren' AND ActionPart=2 ORDER BY source DESC, actif DESC, Pmin DESC", true, MYSQL_ASSOC); // OR Siren2='$siren -// $tabPartDB=mysql_select('dbo_liens_fi', 'SirenEntite, NomAdresse, PourcentageDetenu, Ville, Lien, MAJLien, MAJImport', "Siren='$siren' AND CodeLien='PA' ORDER BY PourcentageDetenu DESC"); + $tab=$this->iDb->select( + 'liens l LEFT JOIN tabPays ON codPays3=Pays', + 'Siren1, ActionPart, Pmin, Pmax, MajMin, PpPm, Siren2, RaisonSociale, Pays, libPays, actif, source, dateLien*1 AS dateLien, DATE(l.dateInsert)*1 AS dateInsert, DATE(l.dateUpdate)*1 AS dateUpdate', + "Siren1='$siren' AND ActionPart=2 ORDER BY source DESC, actif DESC, Pmin DESC", true, MYSQL_ASSOC); // OR Siren2='$siren $tabRet=array(); $sourcePre=false; foreach ($tab as $i=>$lien) { @@ -574,6 +566,7 @@ class MLiens { break; } // } + //@sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "Debug Liens $siren", print_r($tabRet,true)) ; return $tabRet; } @@ -633,7 +626,6 @@ class MLiens { public function getAllParticipations($siren, $pctMin=33, $nbNiveaux=15, $niveauCour=1, $tabSiren=array(), $sirenIni=0, $sirenMere=0, $appel=0, $actifsUniquement=true) { $appel++; - //echo "0, $sirenIni, $sirenMere, $appel, $niveauCour/$nbNiveaux, $siren DEBUT".EOL; $tabP=$this->getParticipations($siren, $actifsUniquement); foreach ($tabP as $i=>$lien) { $sirenFille=$lien['Siren']*1; @@ -648,7 +640,8 @@ class MLiens { if ($codPays<>'' && $codPays<>'France') $libPays=" ($codPays)"; - for($j=0;$j<=$appel; $j++) echo "|\t"; + for($j=0;$j<$appel; $j++) echo "|\t"; + if ($lien['PminNum']>0) $pct=$lien['PminNum'].'%'; elseif ($lien['MajMin']=='+') @@ -659,69 +652,35 @@ class MLiens { $pct=$lien['MajMin']; echo "+ $sirenFille ($pct) : ".$nomP.$libPays; - /* - echo "$sirenFille>100".EOL; - echo $lien['PminNum'].">=".$pctMin.EOL; - echo $lien['MajMin']."==+".EOL; - echo "$niveauCour<=$nbNiveau"; - */ + if ($siren*1==$sirenFille*1) { - echo "[D]".EOL;//, $sirenIni, $sirenMere, $appel, $niveauCour/$nbNiveaux, $siren détient à ".$lien['Pmin']." (".$lien['MajMin'].") : ".$tabIdentiteP['Nom']." ($sirenFille)".EOL; + echo "[D]".EOL; $tabSiren[]=$siren; } elseif($sirenFille>100 && ($lien['PminNum']>=$pctMin || $lien['MajMin']=='+') && $niveauCour<=$nbNiveaux) { $tabSiren[]=$siren; $niveauCour++; if (in_array($sirenFille,$tabSiren)) - echo "[Adeja]".EOL;//echo ", $sirenIni, $sirenMere, $appel, $niveauCour/$nbNiveaux, $siren détient à ".$lien['Pmin']." (".$lien['MajMin'].") : ".$tabIdentiteP['Nom']." ($sirenFille)".EOL; + echo "[Adeja]".EOL; else { - echo "[A]".EOL;//, $sirenIni, $sirenMere, $appel, $niveauCour/$nbNiveaux, $siren détient à ".$lien['Pmin']." (".$lien['MajMin'].") : ".$tabIdentiteP['Nom']." ($sirenFille)".EOL; - $tabSiren=$this->getAllParticipations($sirenFille, $pctMin, $nbNiveaux, $niveauCour, $tabSiren, $sirenIni, $sirenMere, $appel, $actifsUniquement); + echo "[A]".EOL; + $tabSiren=$this->getAllParticipations($sirenFille, $pctMin, $nbNiveaux, $niveauCour, $tabSiren, $sirenIni, $sirenMere, $appel, $actifsUniquement, $format); } } elseif($sirenFille>100 && ($lien['PminNum']<$pctMin || $lien['MajMin']=='-')) { - echo "[B]".EOL;//, $sirenIni, $sirenMere, $appel, $niveauCour/$nbNiveaux, $siren détient à ".$lien['Pmin']." (".$lien['MajMin'].") : ".$tabIdentiteP['Nom']." ($sirenFille)".EOL; + echo "[B]".EOL; $tabSiren[]=$siren; - //$tabSiren=$this->getAllParticipations($sirenFille, $pctMin, $tabSiren); } elseif ($sirenFille<100) { - echo "[C]".EOL;//, $sirenIni, $sirenMere, $appel, $niveauCour/$nbNiveaux, $siren détient à ".$lien['Pmin']." (".$lien['MajMin'].") : ".$tabIdentiteP['Nom']." ($sirenFille)".EOL; + echo "[C]".EOL; $tabSiren[]=$siren; - //return $tabSiren; } else { - echo "[E]".EOL;//, $sirenIni, $sirenMere, $appel, $niveauCour/$nbNiveaux, $siren détient à ".$lien['Pmin']." (".$lien['MajMin'].") : ".$tabIdentiteP['Nom']." ($sirenFille)".EOL; - //$tabSiren=array_merge(array($siren), $tabSiren); + echo "[E]".EOL; $tabSiren[]=$siren; - //return $tabSiren; - //die("Cas pas prévue $siren, $sirenFille, ".$lien['Pmin'].', '.$lien['MajMin'].EOL); } } - /* - foreach ($tabP as $i=>$lien) { - $sirenFille=$lien['Siren']; -// $tabIdentiteP=$this->iInsee->getIdentiteLight($sirenFille); - //for($j=1;$j<=$niveauCour; $j++) echo "|\t"; - // echo "+ $sirenFille (". $lien['PminNum']."%) : ".$tabIdentiteP['Nom']; - /* - echo "$sirenFille>100".EOL; - echo $lien['PminNum'].">=".$pctMin.EOL; - echo $lien['MajMin']."==+".EOL; - echo "$niveauCour<=$nbNiveau"; - * - if($sirenFille>100 && ($lien['PminNum']>=$pctMin || $lien['MajMin']=='+') && $niveauCour<=$nbNiveaux) { - $tabSiren[]=$siren; - $niveauCour++; - if (!in_array($sirenFille,$tabSiren)) { - //echo "[A]".EOL;//, $sirenIni, $sirenMere, $appel, $niveauCour/$nbNiveaux, $siren détient à ".$lien['Pmin']." (".$lien['MajMin'].") : ".$tabIdentiteP['Nom']." ($sirenFille)".EOL; - $tabSiren=$this->getAllParticipations($sirenFille, $pctMin, $nbNiveaux, $niveauCour, $tabSiren, $sirenIni, $sirenMere, $appel); - } - } - }*/ - - //echo 'Fin Normale'.EOL; - //echo "[F], $sirenIni, $sirenMere, $appel, $niveauCour/$nbNiveaux, $siren FIN".EOL; - + return array_unique($tabSiren); } @@ -751,6 +710,111 @@ class MLiens { ); return rechercheAct($formR, $deb, $nbRep, $maxRep); } + + /** Retourne les informations relatives au groupe du siren donné + ** @param string $siren Siren de l'entreprise + **/ + public function getInfoGroupe($siren) { + if ($siren<1000) return false; + $tmp=$this->iDb->select('etablissements_act', + 'raisonSociale, enseigne, sigle, identite_pre, adr_num, adr_btq, adr_typeVoie, adr_libVoie, adr_comp, adr_cp, adr_ville, adr_dep, adr_com, tel, fax, siren, sirenGrp', + "siren=(SELECT sirenGrp FROM etablissements_act WHERE siren=$siren AND siege=1) LIMIT 0,1", false, MYSQL_ASSOC); + $tabEnt=$tmp[0]; + $sirenGrp=$tabEnt['siren']; + //print_r($tabEnt); + if ($sirenGrp<1000) return false; + /** Table des Nafs5 => Secteurs **/ + $tmp=$this->iDb->select('tabNaf5', 'codNaf2, codNaf1', '1 GROUP BY codNAf2', false, MYSQL_ASSOC); + $tabNAf2=array(); + foreach ($tmp as $tmp2) { + $tabNAf2[$tmp2['codNaf2']]=$tmp2['codNaf1']; + } + + $tabNaf2Lib=array( 'A'=>'Agriculture, sylviculture et pêche', + 'B'=>'Industries extractives', + 'C'=>'Industrie manufacturière', + 'D'=>'Production et distribution d\'électricité, de gaz, de vapeur et d\'air conditionné', + 'E'=>'Production et distribution d\'eau ; assainissement, gestion des déchets et dépollution', + 'F'=>'Construction', + 'G'=>'Commerce ; réparation d\'automobiles et de motocycles', + 'H'=>'Transports et entreposage', + 'I'=>'Hébergement et restauration', + 'J'=>'Information et communication', + 'K'=>'Activités financières et d\'assurance', + 'L'=>'Activités immobilières', + 'M'=>'Activités spécialisées, scientifiques et techniques', + 'N'=>'Activités de services administratifs et de soutien', + 'O'=>'Administration publique', + 'P'=>'Enseignement', + 'Q'=>'Santé humaine et action sociale', + 'R'=>'Arts, spectacles et activités récréatives', + 'S'=>'Autres activités de services', + 'T'=>'Activités des ménages en tant qu\'employeurs ; activités indifférenciées des ménages en tant que producteurs de biens et services pour usage propre', + 'U'=>'Activités extra-territoriales', + ); + + $tabRet=array( 'grpNom' => $tabEnt['raisonSociale'], + 'grpEnseigne' => $tabEnt['enseigne'], + 'grpSigle' => $tabEnt['sigle'], + //'grpEnseigne' => $tabEnt['identite_pre'], + 'grpAdrNum' => $tabEnt['adr_num'], + 'grpAdrBtq' => $tabEnt['adr_btq'], + 'grpAdrTypeVoie'=> $tabEnt['adr_typeVoie'], + 'grpadrLibVoie' => $tabEnt['adr_libVoie'], + 'grpAdrComp' => $tabEnt['adr_comp'], + 'grpAdrCP' => $tabEnt['adr_cp'], + 'grpAdrVille' => $tabEnt['adr_ville'], + 'grpAdrDep' => $tabEnt['adr_dep'], + 'grpAdrCom' => $tabEnt['adr_com'], + 'grpTel' => $tabEnt['tel'], + 'grpFax' => $tabEnt['fax'], + 'grpSiren' => $tabEnt['siren'], + //'grpSirenGrp' => $tabEnt['sirenGrp'], + ); + $tmp=$this->iDb->select('etablissements_act', + 'eff_entrep, dateCrea_ent AS dateCrea, dateImmat*1 AS dateImmat, bilFK, bilFL, ape_entrep, avisCs', + "sirenGrp=$sirenGrp AND siege=1", false, MYSQL_ASSOC); + $grpNbEnt=$grpEffectif=$grpCAExp=$grpCA=0; + $grpDateCrea=$grpDateImmat=date('Ymd'); + foreach ($tmp as $tabEnt) { + $grpNbEnt++; + $grpEffectif+=$tabEnt['eff_entrep']; + if ($grpDateCrea>$tabEnt['dateCrea'] && $tabEnt['dateCrea']>=19000101) $grpDateCrea=$tabEnt['dateCrea']; + if ($grpDateImmat>$tabEnt['dateImmat'] && $tabEnt['dateImmat']>=19000101) $grpDateImmat=$tabEnt['dateImmat']; + $grpCAExp+=$tabEnt['bilFK']; + $grpCA+=$tabEnt['bilFL']; + /* @$tabApe5[''.$tabEnt['ape_entrep']]['nb']++; + @$tabApe5[''.$tabEnt['ape_entrep']]['ca']+=$tabEnt['bilFL']; + @$tabApe5[''.$tabEnt['ape_entrep']]['eff']+=$tabEnt['eff_entrep'];*/ + @$tabSecteur[$tabNAf2[''.substr($tabEnt['ape_entrep'],0,2)]]['nb']++; + @$tabSecteur[$tabNAf2[''.substr($tabEnt['ape_entrep'],0,2)]]['ca']+=$tabEnt['bilFL']; + @$tabSecteur[$tabNAf2[''.substr($tabEnt['ape_entrep'],0,2)]]['eff']+=$tabEnt['eff_entrep']; + + @$tabAvis[$tabEnt['avisCs']]++; + } + foreach ($tabSecteur as $secteur=>$tmp) { + $tabSecteur2[$secteur]['activite']=$tabNaf2Lib[$secteur]; + $tabSecteur2[$secteur]['nb']=$tmp['nb']; + $tabSecteur2[$secteur]['nb_tx']=round($tmp['nb']*100/$grpNbEnt,2); + $tabSecteur2[$secteur]['ca']=$tmp['ca']; + $tabSecteur2[$secteur]['ca_tx']=round($tmp['ca']*100/$grpCA,2); + $tabSecteur2[$secteur]['eff']=$tmp['eff']; + $tabSecteur2[$secteur]['eff_tx']=round($tmp['eff']*100/$grpEffectif,2); + } + $tabRet['grpNbEntrep']=$grpNbEnt; + $tabRet['grpEffectif']=$grpEffectif; + if ($grpDateCrea<$grpDateImmat) + $tabRet['grpAnneCreation']=substr($grpDateCrea,0,4); + else + $tabRet['grpAnneCreation']=substr($grpDateImmat,0,4); + $tabRet['grpCAExport']=$grpCAExp; + $tabRet['grpCA']=$grpCA; + if ($grpCA>=500000000) $tabRet['grpGrandGroupeFr']=1; else $tabRet['grpGrandGroupeFr']=0; + // $tabRet['ape5']=$tabApe5; + $tabRet['secteur']=$tabSecteur2; + //$tabRet['avisCs']=$tabAvis; + return $tabRet; + } } ?> \ No newline at end of file