2015-07-03 13:28:52 +00:00
< ? php
2013-11-05 11:18:30 +00:00
2015-07-03 13:28:52 +00:00
/**
* Replace by v2
*/
2016-01-27 21:10:45 +00:00
class Metier_Partenaires_MLiens
2015-07-03 13:28:52 +00:00
{
2013-11-05 11:18:30 +00:00
public $siren = 0 ;
private $iDb ;
private $iInsee ;
public $tabSirenVisites ;
private $tabChars = array ( 'é' => 'é' , 'ç' => 'ç' , 'è' => 'è' , 'à ' => 'à' );
private static $tabFct = array ( 'ADM' => 'Administrateur' ,
'ASS' => 'Associé' ,
'COG' => 'Co-gérant' ,
'CON' => 'Contrôleur de gestion' ,
'DID' => 'Directeur Général Délégué' ,
'DIR' => 'Directeur' ,
'GER' => 'Gérant' ,
'PCS' => 'Président du Conseil de Surveillance' ,
'PDG' => 'Président Directeur Général' ,
'PP' => 'Personne Physique' ,
'PRD' => 'Président du directoire' ,
'PRE' => 'Président du Conseil d\'Administration' ,
'VIC' => 'Vice président du CA ou Surv.' ,
);
private $tabSources = array ( 0 => 'Presse' , // Old liens
1000 => 'Presse' , // 4 ?
1500 => 'Actes' , // Fedaso
1600 => 'Actes' , // S&D : 69642, Associé-Gérant
1700 => 'SED' ,
1800 => 'Collecte' , // Infolégales
1900 => 'Collecte' );
public function __construct ( $siren ) {
$this -> siren = $siren ;
$this -> iDb = new WDB ();
2016-01-27 21:20:37 +00:00
$this -> iInsee = new Metier_Insee_MInsee ();
2013-11-05 11:18:30 +00:00
}
/** Retourne les actionnaires du siren
** @ param int Siren de l ' entreprise
** @ return array Tableau d ' actionnaires
**/
public function getActionnaires ( $siren = false , $actifsUniquement = true )
{
if ( ! $siren ) $siren = $this -> siren ;
$tabIdentite = $this -> iInsee -> getIdentiteLight ( $siren );
$classWdate = new WDate ();
//echo $siren;
//print_r($tabIdentite);
$nic = $tabIdentite [ 'Nic' ];
2015-04-27 15:05:08 +00:00
$tab = $this -> iDb -> select ( 'jo.liens' ,
2013-11-05 11:18:30 +00:00
'Siren1, ActionPart, Pmin, Pmax, MajMin, PpPm, Siren2, RaisonSociale, Pays, actif, source, dateLien*1 AS dateLien, DATE(dateInsert)*1 AS dateInsert, DATE(dateUpdate)*1 AS dateUpdate' ,
" Siren1=' $siren ' AND ActionPart=1 ORDER BY source DESC, actif DESC, Pmin DESC " , true , MYSQL_ASSOC );
//$tabActiDB=mysql_select('dbo_liens_fi', 'SirenEntite, NomAdresse, PourcentageDetenu, Ville, Lien, MAJLien, MAJImport', "Siren='$siren' AND CodeLien='AC' ORDER BY PourcentageDetenu DESC");
$sourcePre = $unique = false ;
$pctTot = 0 ;
$tabRet = array ();
foreach ( $tab as $i => $lien ) {
if ( $lien [ 'source' ] >= 1700 ) $source = 1700 ;
else $source = $lien [ 'source' ] * 1 ;
if ( $i > 0 && $sourcePre <> $source ) break ;
/* if ( $actifsUniquement && $lien [ 'actif' ] == 0 ) continue ;
else
$tabRet [] = array ( 'Pmin' => number_format ( $lien [ 'Pmin' ] * 1 , 2 , ',' , '' ),
'MajMin' => $lien [ 'MajMin' ],
'RaisonSociale' => strtr ( $lien [ 'RaisonSociale' ], $this -> tabChars ),
'Pays' => $lien [ 'libPays' ],
'Siren' => $lien [ 'Siren2' ],
'Actif' => $lien [ 'actif' ]); */
if ( $actifsUniquement && $lien [ 'actif' ] == 0 ) continue ;
else {
$codPays = strtoupper ( $lien [ 'Pays' ]);
$libPays = '' ;
if ( $codPays <> '' && $codPays <> 'FRA' ) {
2015-04-27 15:05:08 +00:00
$tmp = $this -> iDb -> select ( 'jo.tabPays' , 'libPays' , " codPays3=' $codPays ' " , true , MYSQL_ASSOC );
2013-11-05 11:18:30 +00:00
$libPays = $tmp [ 0 ][ 'libPays' ];
}
if ( $lien [ 'MajMin' ] == 'F' ) $majMin = 'A' ;
else $majMin = $lien [ 'MajMin' ];
switch ( $tabIdentite [ 'FJ' ] * 1 ) {
case 5488 : // Entreprise Unipersonnelle à Responsabilité Limitée
case 5498 : // SARL unipersonnelle
case 5720 : // Société par actions simplifiée à associé unique
$lien [ 'Pmin' ] = 100 ;
$unique = true ;
break ;
default :
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' ];
if ( $lien [ 'source' ] == 1800 ) $libRS = strtoupper ( strtr ( $lien [ 'RaisonSociale' ], $this -> tabChars ));
else $libRS = strtr ( $lien [ 'RaisonSociale' ], $this -> tabChars );
$tabRet [] = array ( 'Pmin' => number_format ( $pctLien , 2 , ',' , '' ),
'PminNum' => $pctLien ,
'MajMin' => $majMin ,
'RaisonSociale' => $libRS ,
'Pays' => $libPays ,
'CodePays' => $codPays ,
'Siren' => $lien [ 'Siren2' ],
'Actif' => $lien [ 'actif' ],
'Source' => $this -> tabSources [ $source ],
'DateLien' => $classWdate -> dateT ( 'Ymd' , 'Y-m-d' , $lien [ 'dateLien' ]),
'DateMaj' => $classWdate -> dateT ( 'Ymd' , 'Y-m-d' , $dateMaj ));
if ( $unique ) break ;
}
$sourcePre = $source ;
}
if ( count ( $tabRet ) == 0 ) {
switch ( $tabIdentite [ 'FJ' ] * 1 ) {
case 7112 : // Autorité administrative indépendante
case 7160 : // Service déconcentré à compétence nation. D'un ministère (hors Défense)
case 7171 : // Service déconcentré de l'État à compétence (inter) régionale
case 7172 : // Service déconcentré de l'État à compétence (inter) départementale
case 7179 : // (Autre) Service déconcentré de l'État à compétence territoriale
case 7381 : // Organisme consulaire
/** Ces établissements sont dans le fichier des tribunaux **/
2015-04-27 15:05:08 +00:00
$tmp = $this -> iDb -> select ( 'jo.tribunaux' , 'triSiret, triNom, dateUpdate' , " triId=(SELECT triIdSup FROM tribunaux WHERE triSiret LIKE ' $siren %' LIMIT 1) " , true , MYSQL_ASSOC );
2013-11-05 11:18:30 +00:00
$tabCC = $tmp [ 0 ];
//$sirenCC=substr(,0,9);
//if ($siren*1<>$sirenCC*1)
if ( $tabCC [ 'triSiret' ] * 1 <> 0 ) //$siren*1<>$sirenCC*1)
$tabRet [] = array ( 'Pmin' => 0 ,
'PminNum' => 0 ,
'MajMin' => '+' ,
'RaisonSociale' => $tabCC [ 'triNom' ],
'Pays' => '' ,
'CodePays' => 'FRA' ,
'Siren' => $tabCC [ 'triSiret' ],
'Actif' => 1 ,
'Source' => $this -> tabSources [ 1900 ],
'DateLien' => $classWdate -> dateT ( 'Ymd' , 'Y-m-d' , $tabCC [ 'dateUpdate' ]),
'DateMaj' => $classWdate -> dateT ( 'Ymd' , 'Y-m-d' , $tabCC [ 'dateUpdate' ]),
);
case 7111 : // Autorité constitutionnelle
case 7113 : // Ministère
case 7120 : // Service central d'un ministère
case 7150 : // Service du ministère de la Défense
case 7190 : // Ecole nationale non dotée de la personnalité morale
// case 7210: // COMMUNE (traité après)
// case 7220: // DEPARTEMENT (traité après)
case 7225 : // Territoire d'Outre-mer
case 7229 : // (Autre) Collectivité territoriale
// case 7312: // Commune associée
// case 7313: // Section de commune
// case 7314: // Ensemble urbain
case 7230 : // Région
case 7321 : // Association syndicale autorisée
case 7322 : // Association foncière urbaine
case 7323 : // Association foncière de remembrement
case 7331 : // Établissement public local d'enseignement
// case 7341: // Secteur de commune
// case 7342: // District urbain
// case 7343: // Communauté urbaine
// case 7345: // Syndicat intercommunal à vocation multiple (SIVOM)
// case 7346: // Communauté de communes
// case 7347: // Communauté de villes
// case 7348: // Communauté d'agglomération
case 7349 : // Autre établissement public local de coopération non spécialisé ou entente
case 7351 : // Institution interdépartemental ou entente
case 7352 : // Institution interrégionale ou entente
// case 7353: // Syndicat intercommunal à vocation unique (SIVU)
// case 7354: // Syndicat mixte communal
// case 7355: // Autre syndicat mixte
case 7356 : // Commission syndicale pour la gestion des biens indivis des communes
// case 7361: // Centre communal d'action sociale
// case 7362: // Caisse des écoles
// case 7363: // Caisse de crédit municipal
case 7364 : // Établissement d'hospitalisation
case 7365 : // Syndicat inter hospitalier
case 7366 : // Établissement public local social et médico-social
case 7371 : // Office public d'habitation à loyer modéré (OPHLM)
case 7372 : // Service départemental d'incendie
case 7373 : // Établissement public local culturel
case 7378 : // Régie d'une collectivité locale à caractère administratif
case 7379 : // (Autre) Établissement public administratif local
case 7382 : // Établissement public national ayant fonction d'administration centrale
case 7383 : // Établissement public national à caractère scientifique culturel et professionnel
case 7384 : // Autre établissement public national d'enseignement
case 7385 : // Autre établissement public national administratif à compétence territoriale limitée
case 7389 : // Établissement public national à caractère administratif
case 7410 : // Groupement d'intérêt public (GIP)
case 7430 : // Établissement public des cultes d'Alsace-Lorraine
case 7450 : // Cercle et foyer dans les armées
case 7490 : // Autre personne morale de droit administratif
if ( count ( $tabRet ) == 0 )
$tabRet [] = array ( 'Pmin' => 0 ,
'PminNum' => 0 ,
'MajMin' => '+' ,
'RaisonSociale' => 'ETAT FRANCAIS' ,
'Pays' => '' ,
'CodePays' => 'FRA' ,
'Siren' => 0 ,
'Actif' => 1 ,
'Source' => $this -> tabSources [ 1900 ],
'DateLien' => date ( 'Y-m-' ) . '01' ,
'DateMaj' => date ( 'Y-m-' ) . '01' ,
);
break ;
case 7210 : // Communes
// Siren Commune du Lamentin : 219 722 139
// ~~~ ~~~~
$dept = substr ( $siren , 2 , 2 );
$comm = substr ( $siren , 5 , 3 );
$codeInsee = $dept . $comm ;
if ( $dept <> '20' ) // Corse
$strCodeInsee = " codeInsee=' $codeInsee ' " ;
else
$strCodeInsee = " codeInsee IN ('2A $comm ','2B $comm ','20 $comm ') " ;
$tmp = $this -> iDb -> select ( 'insee.insee_tabVillesEpci' , 'typEPCI, codEPCI, libEPCI, libCommune' , $strCodeInsee , true , MYSQL_ASSOC );
$tabCC = $tmp [ 0 ];
switch ( $tabCC [ 'typEPCI' ]) {
case 'CA' : $typeCC = " Communauté d'agglomérations " ; break ; // CJ=7348
case 'CC' : $typeCC = " Communauté de communes " ; break ; // CJ=7346
case 'CU' : $typeCC = " Communauté urbaine " ; break ; // CJ=73
case 'SAN' : $typeCC = " Syndicat d'agglomérations nouvelles " ; break ; // CJ=73
default : $typeCC = '' ;
}
$tabRet [] = array ( 'Pmin' => 0 ,
'PminNum' => 0 ,
'MajMin' => '+' ,
'RaisonSociale' => strtoupper ( $typeCC . ' ' . preg_replace ( '/^(CA|CC|CU|SAN) /Uis' , '' , $tabCC [ 'libEPCI' ])),
'Pays' => '' ,
'CodePays' => 'FRA' ,
'Siren' => $tabCC [ 'codEPCI' ],
'Actif' => 1 ,
'Source' => $this -> tabSources [ 1900 ],
'DateLien' => date ( 'Y-m-' ) . '01' ,
'DateMaj' => date ( 'Y-m-' ) . '01' ,
);
break ;
case 7220 : // Département
// Siren du 29 22 290001 1 => Région 233 500 016
// Siren du 28 22 280001 3 => Région 234 500 023
// Siren du 75 22 750001 => Région 237 500 079
// Siren du 972 22 972001 6 => Région 239 720 014
$dept = substr ( $siren , 2 , 2 );
if ( $dept * 1 > 95 )
$dept = substr ( $siren , 2 , 3 );
$tmp = $this -> iDb -> select ( 'insee.departements d, insee.insee_tabRegions r' ,
'd.codeRegionInsee, r.REGION, r.CHEFLIEU, r.NC' ,
" numdep=' $dept ' AND d.codeRegionInsee=r.REGION " , true , MYSQL_ASSOC );
$tabCC = $tmp [ 0 ];
$dept3 = substr ( $tabCC [ 'CHEFLIEU' ], 0 , 2 ) . '0' ;
if ( $dept3 * 1 > 960 )
$dept3 = substr ( $tabCC [ 'CHEFLIEU' ], 0 , 3 );
for ( $iSir = 0 ; $iSir < 100 ; $iSir ++ ) {
if ( $iSir < 10 ) $iSir2 = '0' . $iSir ;
else $iSir2 = $iSir ;
// 23 350 00 16 => Bon
// 23 350 00 00 => Mauvais
$sirenCom = '23' . $dept3 . '00' . $iSir2 ;
if ( $this -> iInsee -> valideSiren ( $sirenCom )) {
if ( $this -> iInsee -> sirenExiste ( $sirenCom )) {
break ;
}
}
}
$tabRet [] = array ( 'Pmin' => 0 ,
'PminNum' => 0 ,
'MajMin' => '+' ,
'RaisonSociale' => 'REGION ' . strtoupper ( $tabCC [ 'NC' ]),
'Pays' => '' ,
'CodePays' => 'FRA' ,
'Siren' => $sirenCom ,
'Actif' => 1 ,
'Source' => $this -> tabSources [ 1900 ],
'DateLien' => date ( 'Y-m-' ) . '01' ,
'DateMaj' => date ( 'Y-m-' ) . '01' ,
);
break ;
}
}
if ( count ( $tabRet ) == 0 ) {
$fj = $tabIdentite [ 'FJ' ] * 1 ;
if ( $fj == 5498 ) $strFonctions = " ,'Gérant' " ;
else $strFonctions = '' ;
$adresse = end ( explode ( ' ' , $tabIdentite [ 'AdresseVoie' ]));
$codePostal = $tabIdentite [ 'CP' ];
2015-04-27 15:05:08 +00:00
$tab = $this -> iDb -> select ( 'jo.rncs_dirigeants' , 'typeDir, raisonSociale, dirSiren, dirRS, civilite, nom, prenom, actif, naissance_nom, naissance_date, naissance_lieu, nat, adresse, fonction_code, fonction_lib, source, cinf, dateInsert, dateUpdate' ,
2013-11-05 11:18:30 +00:00
" siren=' $siren ' AND fonction_lib IN ('Associé-gérant' $strFonctions ) " , true , MYSQL_ASSOC );
$majMin = '+' ;
if ( count ( $tab ) > 1 ) $majMin = '-' ;
foreach ( $tab as $i => $lien ) {
if ( $actifsUniquement && $lien [ 'actif' ] == 0 ) continue ;
else {
$ville = $siege = $actif = '' ;
$deb = $siren2 = 0 ;
$nbRep = $maxRep = 200 ;
$pertinence = $avecSiren = true ;
$etabs = $this -> iInsee -> rechercheEtab ( $lien [ 'nom' ] . ' ' . $lien [ 'prenom' ], $adresse , $codePostal , $ville , $siege , $actif , $deb , $nbRep , $maxRep , $pertinence , $avecSiren );
$tabSiren = array ();
foreach ( $etabs [ 'reponses' ] as $etab ) {
$tabTmp = preg_split ( '/( +|\/|\*)/' , $etab [ 'Nom' ]);
$rsEtab = $tabTmp [ 0 ];
$tabTmp = preg_split ( '/( +|\/|\*)/' , $lien [ 'nom' ]);
$rsLien = $tabTmp [ 0 ];
if ( $etab [ 'FJ' ] == 1800 && $rsEtab == $rsLien )
$tabSiren [] = $etab [ 'Siren' ];
}
$tabSiren2 = array_unique ( $tabSiren );
if ( count ( $tabSiren2 == 1 )) $siren2 = end ( $tabSiren2 );
else $siren2 = $lien [ 'dirSiren' ];
if ( $lien [ 'civilite' ] == 'MME' ) $genre = 'Madame' ;
elseif ( $lien [ 'civilite' ] == 'M' ) $genre = 'Monsieur' ;
else $genre = '' ;
$dateMaj = $lien [ 'dateInsert' ];
if ( $lien [ 'dateUpdate' ] > $dateMaj ) $dateMaj = $lien [ 'dateUpdate' ];
$tabRet [] = array ( 'Pmin' => 0 ,
'PminNum' => 0 ,
'MajMin' => $majMin ,
'RaisonSociale' => trim ( preg_replace ( '/ +/' , ' ' , $lien [ 'dirRS' ] . ' ' . $genre . ' ' . $lien [ 'nom' ] . ' ' . $lien [ 'prenom' ])),
'Pays' => '' ,
'CodePays' => 'FRA' ,
'Siren' => $siren2 ,
'Actif' => $lien [ 'actif' ],
'Source' => $this -> tabSources [ 1600 ],
'DateLien' => $classWdate -> dateT ( 'Y-m-d' , 'Y-m-d' , $dateMaj ),
'DateMaj' => $classWdate -> dateT ( 'Y-m-d' , 'Y-m-d' , $dateMaj ),
);
if ( $unique ) break ;
/**/
if ( $siren2 * 1 > 0 ) {
/** Insertion du lien en base **/
$nom = $pays = $dateMAJ = '' ;
$ppPm = 'P' ;
$pct = 0 ;
$entrep2 = $this -> iInsee -> getIdentiteLight ( $siren );
$nom2 = $entrep2 [ 'Nom' ];
$pays2 = 'FRA' ;
if ( substr ( $entrep2 [ 'FJ' ], 0 , 1 ) * 1 <> 1 ) $ppPm = 'M' ;
$entrep = $this -> iInsee -> getIdentiteLight ( $siren2 );
$nom = strtr ( $entrep [ 'Nom' ], '/*' , ' ' );
$pays = 'FRA' ;
$tabUpdate = array ( 'Pmin' => $pct ,
'Pmax' => $pct ,
'MajMin' => $majMin ,
'PpPm' => $ppPm ,
'dateLien' => $dateMAJ ,
);
/* Insertion de l'actionnaire */
$tabInsert1 = array_merge ( $tabUpdate , array ( 'ActionPart' => 1 ),
array ( 'Siren1' => $siren ,
'Siren2' => $siren2 ,
'RaisonSociale' => $nom ,
'Pays' => $pays ,
'actif' => 1 ,
'source' => 1600 ,
'dateInsert' => date ( 'YmdHis' )));
2015-04-27 15:05:08 +00:00
$res = $this -> iDb -> select ( 'jo.liens' , 'count(*)' , " Siren1= $siren AND (Siren2= $siren2 OR (RaisonSociale=' " . addslashes ( $nom ) . " ' AND Pays=' $pays ')) " );
2013-11-05 11:18:30 +00:00
if ( $res [ 0 ][ 0 ] > 0 ) {
2015-04-27 14:26:46 +00:00
if ( ! $this -> iDb -> update ( 'jo.liens' , array_merge ( $tabUpdate , array ( 'ActionPart' => 1 )), " siren= $siren AND (Siren2= $siren2 OR (RaisonSociale=' " . addslashes ( $nom ) . " ' AND Pays=' $pays ')) " , true ))
2013-11-05 11:18:30 +00:00
$errMaj = 1016166 ;
} else {
2015-04-27 14:25:04 +00:00
if ( ! $this -> iDb -> insert ( 'jo.liens' , $tabInsert1 , true ))
2013-11-05 11:18:30 +00:00
$errMaj = 1016167 ;
}
/* Insertion de la participation pour l'actionnaire précédent */
$tabInsert2 = array_merge ( $tabUpdate , array ( 'ActionPart' => 2 ),
array ( 'Siren1' => $siren2 ,
'Siren2' => $siren ,
'RaisonSociale' => $nom2 ,
'Pays' => $pays2 ,
'actif' => 1 ,
'source' => 1600 ,
'dateInsert' => date ( 'YmdHis' )));
2015-04-27 15:05:08 +00:00
$res = $this -> iDb -> select ( 'jo.liens' , 'count(*)' , " Siren1= $siren2 AND (Siren2= $siren OR (RaisonSociale=' $nom2 ' AND Pays=' $pays2 ')) " );
2013-11-05 11:18:30 +00:00
if ( $res [ 0 ][ 0 ] > 0 ) {
2015-04-27 14:26:46 +00:00
if ( ! $this -> iDb -> update ( 'jo.liens' , array_merge ( $tabUpdate , array ( 'ActionPart' => 2 )), " siren= $siren2 AND (Siren2= $siren OR (RaisonSociale=' " . addslashes ( $nom2 ) . " ' AND Pays=' $pays2 ')) " , true ))
2013-11-05 11:18:30 +00:00
$errMaj = 1016168 ;
} else {
2015-04-27 14:25:04 +00:00
if ( ! $this -> iDb -> insert ( 'jo.liens' , $tabInsert2 , true ))
2013-11-05 11:18:30 +00:00
$errMaj = 1016169 ;
}
/** Insertion du dirigeant pour l'actionnaire en base **/
2015-04-27 15:05:08 +00:00
$dirs = $this -> iDb -> select ( 'jo.rncs_dirigeants' , 'siren' , " siren= $siren2 " , true , MYSQL_ASSOC );
2013-11-05 11:18:30 +00:00
if ( count ( $dirs ) == 0 ) {
2015-04-27 14:25:04 +00:00
$this -> iDb -> insert ( 'jo.rncs_dirigeants' , array ( 'siren' => $siren2 ,
2013-11-05 11:18:30 +00:00
'raisonSociale' => $nom ,
'civilite' => $lien [ 'civilite' ],
'typeDir' => $lien [ 'typeDir' ],
'dirRS' => $siren2 ,
'nom' => $lien [ 'nom' ],
'prenom' => $lien [ 'prenom' ],
'naissance_nom' => $lien [ 'naissance_nom' ],
'naissance_date' => $lien [ 'naissance_date' ],
'naissance_lieu' => $lien [ 'naissance_lieu' ],
'nat' => $lien [ 'nat' ],
'fonction_code' => 0 ,
'fonction_lib' => 'Personne Physique' ,
'actif' => 1 ,
'dateInsert' => date ( 'YmdHis' ),
'source' => 'lag' , // Lien Associé Gérant
'cinf' => $lien [ 'cinf' ],
), true );
}
}
}
}
}
/** Si l'entreprise n'a aucun actionnaire mais est majoritairement contrôlée par l'état alors on déclare l'état actionnaire **/
if ( count ( $tabRet ) == 0 ) {
$tabNotice = $this -> iInsee -> getInfosNotice ( $siren , $nic );
if ( $tabNotice [ 'insRECME' ] * 1 > 0 ) {
$tabRet [] = array ( 'Pmin' => 0 ,
'PminNum' => 0 ,
'MajMin' => '+' ,
'RaisonSociale' => 'ETAT FRANCAIS' ,
'Pays' => '' ,
'CodePays' => 'FRA' ,
'Siren' => 0 ,
'Actif' => 1 ,
'Source' => $this -> tabSources [ 1900 ],
'DateLien' => date ( 'Y-m-' ) . '01' ,
'DateMaj' => date ( 'Y-m-' ) . '01' ,
);
}
}
/** Si l'entreprise n'a aucun actionnaire, on regarde au niveau des cessions de parts **/
/* if ( count ( $tabRet ) == 0 ) {
$tab = $this -> iDb -> select ( 'rncs_even_info' , 'siren, dateDepot, codeEven, depot_num, depot_date, acte_num, acte_date, acte_type, acte_lib, acte_pages, acte_nature, acte_decision, collecte, flux, dateInsert' ,
" siren=' $siren ' AND codeEven IN(2,5,6,7,8,9,10,13,31,32,63) " , true , MYSQL_ASSOC );
foreach ( $tab as $i => $lien ) {
$tabRet [] = array ( 'Pmin' => 0 ,
'PminNum' => 0 ,
'MajMin' => '+' ,
'RaisonSociale' => 'ETAT FRANCAIS' ,
'Pays' => '' ,
'Siren' => 0 ,
'Actif' => 1 ,
'Source' => $this -> tabSources [ 1900 ],
'DateLien' => date ( 'Y-m-' ) . '01' ,
'DateMaj' => date ( 'Y-m-' ) . '01' ,
);
}
} */
return $tabRet ;
}
/** Retourne les participations du siren
** @ param int Siren de l ' entreprise
** @ return array Tableau de participations
**/
public function getParticipations ( $siren = false , $actifsUniquement = true ) {
if ( ! $siren ) $siren = $this -> siren ;
$tab = $this -> iDb -> select (
2015-04-27 15:05:08 +00:00
'jo.liens l LEFT JOIN jo.tabPays ON codPays3=Pays' ,
2013-11-05 11:18:30 +00:00
'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 ) {
if ( $lien [ 'source' ] >= 1700 ) $source = 1700 ;
//if ($lien['source']>=1700 && $lien['source']<=1720) $source=1700;
else $source = $lien [ 'source' ] * 1 ;
$dateMaj = $lien [ 'dateLien' ];
if ( $lien [ 'dateInsert' ] > $dateMaj ) $dateMaj = $lien [ 'dateInsert' ];
if ( $lien [ 'dateUpdate' ] > $dateMaj ) $dateMaj = $lien [ 'dateUpdate' ];
if ( $i > 0 && $sourcePre <> $source ) break ;
if ( $actifsUniquement && $lien [ 'actif' ] == 0 ) continue ;
else {
if ( $lien [ 'MajMin' ] == 'F' ) $majMin = 'A' ;
else $majMin = $lien [ 'MajMin' ];
if ( $lien [ 'source' ] == 1800 ) $libRS = strtoupper ( strtr ( $lien [ 'RaisonSociale' ], $this -> tabChars ));
else $libRS = strtr ( $lien [ 'RaisonSociale' ], $this -> tabChars );
$tabRet [] = array ( 'Pmin' => number_format ( $lien [ 'Pmin' ] * 1 , 2 , ',' , '' ),
'PminNum' => $lien [ 'Pmin' ] * 1 ,
'MajMin' => $majMin ,
'RaisonSociale' => $libRS ,
'Pays' => $lien [ 'libPays' ],
'CodePays' => $lien [ 'Pays' ],
'Siren' => $lien [ 'Siren2' ],
'Actif' => $lien [ 'actif' ],
'Source' => $this -> tabSources [ $source ],
'DateLien' => Wdate :: dateT ( 'Ymd' , 'Y-m-d' , $lien [ 'dateLien' ]),
'DateMaj' => Wdate :: dateT ( 'Ymd' , 'Y-m-d' , $dateMaj ),
);
}
$sourcePre = $source ;
}
// if (count($tabRet)==0) {
$tabTmp = $this -> iInsee -> getIdentiteLight ( $siren );
switch ( $tabTmp [ 'FJ' ] * 1 ) {
case 7112 : // Autorité administrative indépendante
case 7160 : // Service déconcentré à compétence nation. D'un ministère (hors Défense)
case 7171 : // Service déconcentré de l'État à compétence (inter) régionale
case 7172 : // Service déconcentré de l'État à compétence (inter) départementale
case 7179 : // (Autre) Service déconcentré de l'État à compétence territoriale
case 7381 : // Organisme consulaire
/** Ces établissements sont dans le fichier des tribunaux **/
2015-04-27 15:05:08 +00:00
$tmp = $this -> iDb -> select ( 'jo.tribunaux t1' , 't1.triSiret, t1.triNom' , " t1.triIdSup=(SELECT t2.triId FROM tribunaux t2 WHERE t2.triSiret LIKE ' $siren %' AND t2.triId<>t1.triId LIMIT 1) " , true , MYSQL_ASSOC );
2013-11-05 11:18:30 +00:00
foreach ( $tmp as $tabCC ) {
// $sirenCC=substr($tabCC['triSiret'],0,9);
if ( $tabCC [ 'triSiret' ] * 1 <> 0 ) //$siren*1<>$sirenCC*1)
$tabRet [] = array ( 'Pmin' => 0 ,
'PminNum' => 0 ,
'MajMin' => '+' ,
'RaisonSociale' => $tabCC [ 'triNom' ],
'Pays' => '' ,
'CodePays' => 'FRA' ,
'Siren' => $tabCC [ 'triSiret' ],
'Actif' => 1 ,
'Source' => $this -> tabSources [ 1900 ],
'DateLien' => Wdate :: dateT ( 'Ymd' , 'Y-m-d' , $tabCC [ 'dateUpdate' ]),
'DateMaj' => Wdate :: dateT ( 'Ymd' , 'Y-m-d' , $tabCC [ 'dateUpdate' ]),
);
}
break ;
case 7346 : // Communaute de communes
case 7348 : // Communaute d'agglomeration
//case 'CC': $typeCC="Communauté de communes"; break; // CJ=73
//case 'CU': $typeCC="Communauté urbaine"; break; // CJ=73
//case 'SAN': $typeCC="Syndicat d'agglomérations nouvelles"; break; // CJ=73
$tmp = $this -> iDb -> select ( 'insee.insee_tabVillesEpci' , 'typEPCI, libEPCI, codeInsee, libCommune' , " codEPCI=' $siren ' " , true , MYSQL_ASSOC );
foreach ( $tmp as $tabCom ) {
$dept = substr ( $tabCom [ 'codeInsee' ], 0 , 2 );
if ( $dept == '2A' || $dept == '2B' || $dept == '20' )
$dept = '200' ;
elseif ( $dept * 1 > 95 )
$dept = substr ( $tabCom [ 'codeInsee' ], 0 , 3 );
else
$dept = $dept . '0' ;
$comm = substr ( $tabCom [ 'codeInsee' ], 2 , 3 );
for ( $iSir = 0 ; $iSir < 10 ; $iSir ++ ) {
$sirenCom = '21' . $dept . $comm . $iSir ;
if ( $this -> iInsee -> valideSiren ( $sirenCom )) break ;
}
$tabRet [] = array ( 'Pmin' => 0 ,
'PminNum' => 0 ,
'MajMin' => '+' ,
'RaisonSociale' => 'COMMUNE DE ' . strtoupper ( $tabCom [ 'libCommune' ]),
'Pays' => '' ,
'CodePays' => 'FRA' ,
'Siren' => $sirenCom ,
'Actif' => 1 ,
'Source' => $this -> tabSources [ 1900 ],
'DateLien' => date ( 'Y-m-' ) . '01' ,
'DateMaj' => date ( 'Y-m-' ) . '01' ,
);
}
break ;
case 7230 : // Région
// Siren du 29 22 290001 1 => Région 233 500 016
// Siren du 28 22 280001 3 => Région 234 500 023
// Siren du 75 22 750001 => Région 237 500 079
// Siren du 972 22 972001 6 => Région 239 720 014
$dept = substr ( $siren , 2 , 2 );
$deptD = $dept . '000' ;
$deptF = $dept . '999' ;
if ( $dept * 1 > 95 ) {
$dept = substr ( $siren , 2 , 3 );
$deptD = $dept . '00' ;
$deptF = $dept . '99' ;
}
$tmp = $this -> iDb -> select ( 'insee.departements d, insee.insee_tabRegions r' ,
'd.numDep, d.libdep, d.codeRegionInsee, r.REGION, r.CHEFLIEU, r.NC' ,
" r.CHEFLIEU BETWEEN ' $deptD ' AND ' $deptF ' AND d.codeRegionInsee=r.REGION " , true , MYSQL_ASSOC );
foreach ( $tmp as $tabCom ) {
$dept = $tabCom [ 'numDep' ];
if ( $dept > 960 ) $dept3 = $dept ;
else $dept3 = $dept . '0' ;
for ( $iSir = 0 ; $iSir < 10 ; $iSir ++ ) {
$sirenCom = '22' . $dept3 . '001' . $iSir ;
if ( $this -> iInsee -> valideSiren ( $sirenCom )) break ;
}
$tabRet [] = array ( 'Pmin' => 0 ,
'PminNum' => 0 ,
'MajMin' => '+' ,
'RaisonSociale' => 'DEPARTEMENT ' . strtoupper ( $tabCom [ 'libdep' ]),
'Pays' => '' ,
'CodePays' => 'FRA' ,
'Siren' => $sirenCom ,
'Actif' => 1 ,
'Source' => $this -> tabSources [ 1900 ],
'DateLien' => date ( 'Y-m-' ) . '01' ,
'DateMaj' => date ( 'Y-m-' ) . '01' ,
);
}
break ;
}
// }
return $tabRet ;
}
public function getEvenements ( $siren = false ) {
if ( ! $siren ) $siren = $this -> siren ;
2015-04-27 15:05:08 +00:00
$tab = $this -> iDb -> select ( 'jo.rncs_even_info' , 'siren, dateDepot, codeEven, depot_num, depot_date, acte_num, acte_date, acte_type, acte_lib, acte_pages, acte_nature, acte_decision, collecte, flux, dateInsert' ,
2013-11-05 11:18:30 +00:00
" siren=' $siren ' AND codeEven IN(2,5,6,7,8,9,10,13,31,32,63) " , true , MYSQL_ASSOC );
$tabRet = array ();
foreach ( $tab as $i => $lien ) {
$tabRet [] = array ( /* 'Pmin' => 0 ,
'PminNum' => 0 ,
'MajMin' => '+' , */
'DateLien' => $lien [ 'acte_date' ],
'TypeEvenement' => $lien [ 'acte_nature' ],
'InfoEvenement' => $lien [ 'acte_decision' ],
// 'Pays' => '',
// 'Siren' => 0,
// 'Actif' => 1,
'Source' => $this -> tabSources [ 1500 ],
'DateMaj' => $lien [ 'flux' ],
);
}
return $tabRet ;
}
public function getLiens ( $siren = false ) {
$tabA = $this -> getActionnaires ( $siren );
$tabP = $this -> getParticipations ( $siren );
$tabE = $this -> getEvenements ( $siren );
return array ( 'actionnaires' => $tabA ,
'participations' => $tabP ,
'evenements' => $tabE );
}
public function getMaisonMereFr ( $siren , $debug = false , $tabSirenVisites = array ()) {
$this -> tabSirenVisites = $tabSirenVisites ;
$this -> tabSirenVisites [] = $siren ;
$tabA = $this -> getActionnaires ( $siren , true );
$majTrouve = false ;
foreach ( $tabA as $i => $lien ) {
$sirenMere = $lien [ 'Siren' ];
// Afin de ne pas boucler à l'infini si le siren est déjà dans la sructure !
//echo "je cherche $sirenMere dans ";
//print_r($tabSirenVisites);
if ( in_array ( $sirenMere , $this -> tabSirenVisites )) {
//echo "TROUVE !!!".EOL;
continue ;
} // else
//echo "inconnu".EOL;
if ( $debug && $sirenMere > 1000 ) $tabIdentiteA = $this -> iInsee -> getIdentiteLight ( $sirenMere );
else $tabIdentiteA [ 'Nom' ] = '' ;
if ( $siren * 1 == $sirenMere * 1 ) {
if ( $debug ) echo " D. $siren détenu à " . $lien [ 'Pmin' ] . " ( " . $lien [ 'MajMin' ] . " ) par " . $tabIdentiteA [ 'Nom' ] . " ( $sirenMere ) " . EOL ;
return $siren ;
}
elseif ( $sirenMere > 100 && $lien [ 'PminNum' ] > 50 ) {
if ( $debug ) echo " A. $siren détenu à " . $lien [ 'Pmin' ] . " ( " . $lien [ 'MajMin' ] . " ) par " . $tabIdentiteA [ 'Nom' ] . " ( $sirenMere ) " . EOL ;
$majTrouve = true ;
return $this -> getMaisonMereFr ( $sirenMere , $debug , $this -> tabSirenVisites );
}
elseif ( $sirenMere > 100 && $lien [ 'MajMin' ] == '+' && ! $majTrouve ) {
if ( $debug ) echo " B. $siren détenu à " . $lien [ 'Pmin' ] . " ( " . $lien [ 'MajMin' ] . " ) par " . $tabIdentiteA [ 'Nom' ] . " ( $sirenMere ) " . EOL ;
$majTrouve = true ;
return $this -> getMaisonMereFr ( $sirenMere , $debug , $this -> tabSirenVisites );
}
elseif ( $sirenMere < 100 ) {
if ( $debug ) echo " C. $siren détenu à " . $lien [ 'Pmin' ] . " ( " . $lien [ 'MajMin' ] . " ) par " . $tabIdentiteA [ 'Nom' ] . " ( $sirenMere ) " . EOL ;
return $siren ;
}
else {
if ( $debug ) echo " E. $siren détenu à " . $lien [ 'Pmin' ] . " ( " . $lien [ 'MajMin' ] . " ) par " . $tabIdentiteA [ 'Nom' ] . " ( $sirenMere ) " . EOL ;
//die("Cas pas prévue $siren, $sirenMere, ".$lien['Pmin'].', '.$lien['MajMin'].EOL);
return $siren ;
}
}
if ( $i == 0 ) return $siren ;
}
public function getAllParticipations ( $siren , $pctMin = 33 , $nbNiveaux = 15 , $niveauCour = 1 , $tabSiren = array (), $sirenIni = 0 , $sirenMere = 0 , $appel = 0 , $actifsUniquement = true , $format = 'txt' , $tabRet = array ()) {
$appel ++ ;
$tabP = $this -> getParticipations ( $siren , $actifsUniquement );
foreach ( $tabP as $i => $lien ) {
$sirenFille = $lien [ 'Siren' ] * 1 ;
if ( $sirenFille > 1000 ) {
$tabIdentiteP = $this -> iInsee -> getIdentiteLight ( $sirenFille );
$nomP = $tabIdentiteP [ 'Nom' ];
} else {
$nomP = $lien [ 'RaisonSociale' ];
}
$codPays = $lien [ 'Pays' ];
$libPays = '' ;
if ( $codPays <> '' && $codPays <> 'France' )
$libPays = " ( $codPays ) " ;
for ( $j = 0 ; $j < $appel ; $j ++ ) echo " | \t " ;
if ( $lien [ 'PminNum' ] > 0 )
$pct = $lien [ 'PminNum' ] . '%' ;
elseif ( $lien [ 'MajMin' ] == '+' )
$pct = 'major' ;
elseif ( $lien [ 'MajMin' ] == '-' )
$pct = 'minor' ;
else
$pct = $lien [ 'MajMin' ];
echo " + $sirenFille ( $pct ) : " . $nomP . $libPays ;
if ( $siren * 1 == $sirenFille * 1 ) {
echo " [D] " . EOL ;
$tabSiren [] = $siren ;
}
elseif ( $sirenFille > 100 && ( $lien [ 'PminNum' ] >= $pctMin || $lien [ 'MajMin' ] == '+' ) && $appel <= $nbNiveaux ) {
$tabSiren [] = $siren ;
if ( in_array ( $sirenFille , $tabSiren ))
echo " [Adeja] " . EOL ;
else {
echo " [A] " . EOL ;
$niveauCour ++ ;
$tabSiren = $this -> getAllParticipations ( $sirenFille , $pctMin , $nbNiveaux , $niveauCour , $tabSiren , $sirenIni , $sirenMere , $appel , $actifsUniquement , $format , $tabRet );
}
}
elseif ( $sirenFille > 100 && ( $lien [ 'PminNum' ] < $pctMin || $lien [ 'MajMin' ] == '-' )) {
echo " [B] " . EOL ;
$tabSiren [] = $siren ;
}
elseif ( $sirenFille < 100 ) {
echo " [C] " . EOL ;
$tabSiren [] = $siren ;
}
else {
/** 1 ) {
echo " [D] " . EOL ;
$tabSiren [] = $siren ;
}
elseif ( $sirenFille > 100 && ( $lien [ 'PminNum' ] >= $pctMin || $lien [ 'MajMin' ] == '+' ) && $niveauCour <= $nbNiveaux ) { */
echo " [E] " . EOL ; // $siren, $sirenFille, ".$lien['PminNum'].">=$pctMin, ".$lien['MajMin'].", $niveauCour<=$nbNiveaux".EOL;
$tabSiren [] = $siren ;
}
$tabPart = array ( 'siren' => $sirenFille ,
'nom' => $nomP ,
'pct' => $pct ,
'pays' => $libPays ,
'filles' => $tabFilles );
$tabParts [] = $tabPart ;
}
$tabRet = $tabParts ;
return array_unique ( $tabSiren );
}
/**
* Retourne l ' arborescence pour les groupes
* @ param string $siren
* @ param int $pctMin
* @ param int $nbNiveaux
*/
public function getArborescence ( $siren , $pctMin = 33 , $nbNiveaux = 10 )
{
//Récupération de la maison mère
$sirenMere = $this -> getMaisonMereFr ( $siren );
//Informations de la maison mère
$tabId = $this -> iInsee -> getIdentiteLight ( $sirenMere );
$tabSirenDeja = array ();
$tabSirenDeja [] = $tabId [ 'Siren' ];
//Retour
$tabRet = array (
'name' => $tabId [ 'Nom' ],
'siren' => $tabId [ 'Siren' ],
'children' => $this -> getArborescenceRecursive ( $sirenMere , $pctMin , 1 , $nbNiveaux , $tabSirenDeja ),
);
return $tabRet ;
}
/**
* Retourne un sous élement de l ' arborescende pour les groupes
* @ param string $siren
* @ param int $pctMin
* @ param int $niveau
* @ param int $nbNiveaux
* @ param array $tabSirenDeja
*/
public function getArborescenceRecursive ( $siren , $pctMin = 33 , $niveau = 0 , $nbNiveaux = 10 , $tabSirenDeja = array () )
{
if ( $niveau > $nbNiveaux ) return array ();
$niveau ++ ;
$tabRet = array ();
$participations = $this -> getParticipations ( $siren );
if ( count ( $participations ) > 0 ) {
foreach ( $participations as $item ) {
if ( $item [ 'Pmin' ] > $pctMin ) {
//file_put_contents('test.log', $item['Siren']."\n", FILE_APPEND);
$data = array (
'name' => $item [ 'RaisonSociale' ],
'siren' => $item [ 'Siren' ],
'pmin' => $item [ 'Pmin' ],
'pays' => $item [ 'Pays' ],
'children' => array (),
);
//Pour éviter d'avoir des boucles infinis
if ( ! in_array ( $item [ 'Siren' ], $tabSirenDeja ) && intval ( $item [ 'Siren' ]) > 1000 ){
$tabSirenDeja [] = $item [ 'Siren' ];
$data [ 'children' ] = $this -> getArborescenceRecursive ( $item [ 'Siren' ], $pctMin , $niveau , $nbNiveaux , $tabSirenDeja );
}
$tabRet [] = $data ;
}
}
//file_put_contents('test.log', "\n", FILE_APPEND);
}
return $tabRet ;
}
/** Recherche d ' entreprise par leur actionnaire
**
** @ param string $nom Raison sociale / Nom de l ' actionnaire ( obligatoire )
** @ param string $cpVille CP , Ville
** @ param integer $siren Siren de l ' actionnaire
** @ param string $pays Pays de l ' actionnaire
** @ param string $detention Niveau de détention de l ' actionnaire
** @ param integer $deb Position du curseur dans la liste des réponses ( 0 par défaut )
** @ param integer $nbRep Nombre de réponses retournées au maximum par cette requete ( 20 par défaut )
** @ param integer $maxRep Nombre de réponses recherchées au maximum ( 200 par défaut )
** @ param bool $pertinence Recherche orthographique stricte sur les noms et prénoms ( si true )
** @ return Liste des entreprises trouvées
**/
public function rechercheActionnaire ( $nom , $cpVille = '' , $siren = 0 , $pays = '' , $pctMin = 0 , $pctMax = 100 , $deb = 0 , $nbRep = 20 , $maxRep = 200 , $pertinence = false )
{
debugLog ( 'I' , " rechercheActionnaire de $nom , $cpVille , $pays , $siren entre $pctMin et $pctMax % (Max Rep= $nbRep ) " , __LINE__ , __FILE__ , __FUNCTION__ , __CLASS__ );
$formR = array (
'type' => 'act' ,
'siren' => $siren ,
'actNomRS' => join ( ' ' , array ( $nom , $cpVille )),
'pays' => $pays ,
'pctMin' => $pctMin ,
'pctMax' => $pctMax ,
);
$version = defined ( 'SPHINX_ACT_VERSION' ) ? SPHINX_ACT_VERSION : 1 ;
require_once 'Metier/sphinx/rechercheFonc.php' ;
$result = rechercheAct ( $formR , $deb , $nbRep , $maxRep );
/*
switch ( $version )
{
case 1 :
require_once 'Metier/sphinx/rechercheFonc.php' ;
$result = rechercheAct ( $formR , $deb , $nbRep , $maxRep );
break ;
case 2 :
require_once 'Metier/sphinx2/rechercheFonc.php' ;
$recherche = new rechercheFonc ();
$result = $recherche -> rechercheAct ( $formR , $deb , $nbRep , $maxRep );
break ;
}
*/
return $result ;
}
/** 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 ;
2015-04-27 15:05:08 +00:00
$tmp = $this -> iDb -> select ( 'jo.etablissements_act' ,
2013-11-05 11:18:30 +00:00
'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' ,
2015-04-28 09:54:48 +00:00
" siren=(SELECT distinct sirenGrp FROM jo.etablissements_act WHERE siren= $siren AND siege=1) LIMIT 0,1 " , false , MYSQL_ASSOC );
2013-11-05 11:18:30 +00:00
$tabEnt = $tmp [ 0 ];
$sirenGrp = $tabEnt [ 'siren' ];
if ( $sirenGrp < 1000 ) return false ;
/** Table des Nafs5 => Secteurs **/
2015-04-27 15:05:08 +00:00
$tmp = $this -> iDb -> select ( 'jo.tabNaf5' , 'codNaf2, codNaf1' , '1 GROUP BY codNAf2' , false , MYSQL_ASSOC );
2013-11-05 11:18:30 +00:00
$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' ,
);
$tabId = $this -> iInsee -> getIdentiteEntreprise ( $sirenGrp );
/*
[ SiretSiege ] => 54205118000066
[ dir1Titre ] => Président du conseil d ' administration
[ dir1NomPrenom ] => JACQUIN DE MARGERIE Christophe
[ Activite ] => la recherche et l ' exploitation des gisements miniers et notamment d' hydrocarbures sous toutes leurs formes , l 'industrie, le raffinage, la transformation et le commerce de ces matières ainsi que leurs dérivés et sous-produits, ainsi que toutes activités relevant de l' énergie et de la chimie
[ dir1Code ] => 1306
[ dir1Nom ] => JACQUIN DE MARGERIE
[ dir1Prenom ] => Christophe
[ dir1DateFct ] =>
[ dir1DateNaiss ] => 1951 - 08 - 06
[ dir1LieuNaiss ] => MAREUIL - SUR - LAY - DISSAIS
[ dir2Code ] => 070 9
[ dir2Titre ] => Directeur général
[ dir2NomPrenom ] => JACQUIN DE MARGERIE Christophe
[ dir2Nom ] => JACQUIN DE MARGERIE
[ dir2Prenom ] => Christophe
[ dir2DateFct ] =>
[ dir2DateNaiss ] => 1951 - 08 - 06
[ dir2LieuNaiss ] => MAREUIL - SUR - LAY - DISSAIS
[ dateImmat ] => 1954 - 08 - 20
[ dateRad ] => 0000 - 00 - 00
[ Bourse ] => Array
[ placeCotation ] => Euronext Paris ( France )
[ capitalisation ] => 87020810003.675
[ derCoursDate ] => 2011 - 10 - 17
[ derCoursCloture ] => 37.055
*/
$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'],
'grpTva' => $tabId [ 'TvaNumero' ],
'grpIsin' => $tabId [ 'Isin' ],
'grpNumRC' => $tabId [ 'numRC' ],
'grpTribunal' => $tabId [ 'TribunalLib' ],
'grpWeb' => $tabId [ 'Web' ],
//'grpTVA' => $tabId['TvaNumero'],
);
$tmp = $this -> iDb -> select ( 'jo.etablissements_act e' ,
'e.siren, e.eff_entrep, e.dateCrea_ent AS dateCrea, e.dateImmat*1 AS dateImmat, e.bilFK, e.bilFL, e.bilYP, e.ape_entrep, e.avisCs, e.procolHisto' ,
" e.sirenGrp= $sirenGrp AND e.siege=1 " , false , MYSQL_ASSOC );
$grpNbEnt = $grpEffectif = $grpCAExp = $grpCA = $nbProcol = 0 ;
$grpDateCrea = $grpDateImmat = date ( 'Ymd' );
$tabSirenGrp = array ();
foreach ( $tmp as $tabEnt ) {
$tabSirenGrp [] = $tabEnt [ 'siren' ];
$grpNbEnt ++ ;
if ( $tabEnt [ 'bilYP' ] > $tabEnt [ 'eff_entrep' ]) $grpEffectif += $tabEnt [ 'bilYP' ];
else $grpEffectif += $tabEnt [ 'eff_entrep' ];
if ( $tabEnt [ 'procolHisto' ] * 1 == 1 ) $nbProcol ++ ;
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 ; // Vérifier les procol
$strSiren = implode ( ',' , $tabSirenGrp );
/* $tmp = $this -> iDb -> select ( 'insee.insee_notices' ,
'insSIREN, insNIC, dateNotice' ,
" insSIREN IN( $strSiren ) AND insRECME>0 GROUP BY insSIREN, insNIC, dateNotice ORDER BY dateNotice DESC " , false , MYSQL_ASSOC );
if ( count ( $tmp ) > 0 ) $tabRet [ 'grpRecme' ] = 1 ;
else $tabRet [ 'grpRecme' ] = 0 ; */
$tabRet [ 'grpNbProcolHisto' ] = $nbProcol ;
return $tabRet ;
}
}