batch/includes/partenaires/classMLiens.php
2015-07-20 08:17:28 +00:00

1570 lines
69 KiB
PHP

<?
class MLiens {
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');
private $tabIdLoc=array();
public function __construct($siren) {
$this->siren=$siren;
$this->iDb=new WDB();
$this->iInsee=new MInsee();
$this->tabIdLoc=$this->setIdLoc();
}
private function setIdLoc() {
$tabIdLocal=array();
$tab=$this->iDb->select('sdv1.tabIdLocal', 'id, idLocal', '1', false, MYSQL_ASSOC);
foreach ($tab as $tabTmp)
$tabIdLocal[$tabTmp['id']]=$tabTmp['idLocal'];
return $tabIdLocal;
}
public function getActionnaires($siren=false, $actifsUniquement=true) {
if (!$siren) $siren=$this->siren;
$tabIdentite=$this->iInsee->getIdentiteLight($siren);
//echo $siren;
//print_r($tabIdentite);
$nic=$tabIdentite['Nic'];
$tab=$this->iDb->select('liens2 l, liensRef p, liensRef a LEFT JOIN tabPays t ON t.codPays3=a.adresse_pays',
'p.siren AS Siren1, 1 AS ActionPart, PDetention AS Pmin, 0 AS Pmax, MajMin, a.PpPm, a.siren AS Siren2, a.RS AS RaisonSociale,
a.isin, a.idLoc1Type, a.idLoc1Num, a.idLoc2Type, a.idLoc2Num, a.idLoc3Type, a.idLoc3Num,
a.adresse_num, a.adresse_btq, a.adresse_codvoie, a.adresse_libvoie, a.adresse_comp, a.adresse_cp, a.adresse_ville, a.tel, a.fax, a.web, a.email,
a.adresse_pays AS Pays, t.libPays, l.actif, l.source, dateEffetLien *1 AS dateLien, DATE( l.dateInsert ) *1 AS dateInsert, DATE( l.dateUpdate ) *1 AS dateUpdate',
"p.siren='$siren' AND p.id=l.idPar AND l.idAct=a.id ORDER BY l.source DESC, l.actif DESC, l.PDetention DESC", true, MYSQL_ASSOC);
$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 {
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,
'Isin' => $lien['isin'],
'IdLocalNum' => $lien['idLoc1Num'],
'IdLocalType' => $this->tabIdLoc[$lien['idLoc1Type']],
// idLoc2Type, p.idLoc2Num, p.idLoc3Type, p.idLoc3Num
'RaisonSociale' => $libRS,
'Adresse1' => trim(preg_replace('/\s+/',' ',preg_replace('/^0+/','',$lien['adresse_num'].' '.$lien['adresse_btq'].' '.$lien['adresse_codvoie'].' '.$lien['adresse_libvoie']))),
'Adresse2' => trim($lien['adresse_comp']),
'AdresseCP' => trim($lien['adresse_cp']),
'AdresseVille' => trim($lien['adresse_ville']),
'Tel' => trim($lien['tel']),
'Fax' => trim($lien['fax']),
'Web' => trim($lien['web']),
'Mail' => trim($lien['email']),
'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));
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 **/
$tmp=$this->iDb->select('tribunaux', 'triSiret, triNom, dateUpdate', "triId=(SELECT triIdSup FROM tribunaux WHERE triSiret LIKE '$siren%' LIMIT 1)", true, MYSQL_ASSOC);
$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' => Wdate::dateT('Ymd','Y-m-d', $tabCC['dateUpdate']),
'DateMaj' => Wdate::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)) {
// @sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "Debug Fin $siren ($actifsUniquement) $sirenCom existe !", '') ;
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'];
$tab=$this->iDb->select('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',
"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' => Wdate::dateT('Y-m-d','Y-m-d', $dateMaj),
'DateMaj' => Wdate::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')));
$res=$this->iDb->select('liens', 'count(*)', "Siren1=$siren AND (Siren2=$siren2 OR (RaisonSociale='".addslashes($nom)."' AND Pays='$pays'))");
if ($res[0][0]>0) {
if (!$this->iDb->update('liens', array_merge($tabUpdate,array('ActionPart'=>1)), "siren=$siren AND (Siren2=$siren2 OR (RaisonSociale='".addslashes($nom)."' AND Pays='$pays'))", true))
$errMaj=1016166;
} else {
if (!$this->iDb->insert('liens', $tabInsert1, true))
$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')));
$res=$this->iDb->select('liens', 'count(*)', "Siren1=$siren2 AND (Siren2=$siren OR (RaisonSociale='$nom2' AND Pays='$pays2'))");
if ($res[0][0]>0) {
if (!$this->iDb->update('liens', array_merge($tabUpdate,array('ActionPart'=>2)), "siren=$siren2 AND (Siren2=$siren OR (RaisonSociale='".addslashes($nom2)."' AND Pays='$pays2'))", true))
$errMaj=1016168;
} else {
if (!$this->iDb->insert('liens', $tabInsert2, true))
$errMaj=1016169;
}
/** Insertion du dirigeant pour l'actionnaire en base **/
$dirs=$this->iDb->select('rncs_dirigeants','siren', "siren=$siren2", true, MYSQL_ASSOC);
if (count($dirs)==0) {
$this->iDb->insert('rncs_dirigeants', array( 'siren' => $siren2,
'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',
);
}
}*/
//@sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "Debug Fin $siren ($actifsUniquement)", print_r($tabRet,true)) ;
return $tabRet;
}
/** Retourne les actionnaires du siren
** @param int Siren de l'entreprise
** @return array Tableau d'actionnaires
**/
public function getActionnairesOld($siren=false, $actifsUniquement=true) {
if (!$siren) $siren=$this->siren;
$tabIdentite=$this->iInsee->getIdentiteLight($siren);
//echo $siren;
//print_r($tabIdentite);
$nic=$tabIdentite['Nic'];
$tab=$this->iDb->select('liens',
'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");
//@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;
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') {
$tmp=$this->iDb->select('tabPays', 'libPays', "codPays3='$codPays'", true, MYSQL_ASSOC);
$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' => Wdate::dateT('Ymd','Y-m-d', $lien['dateLien']),
'DateMaj' => Wdate::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 **/
$tmp=$this->iDb->select('tribunaux', 'triSiret, triNom, dateUpdate', "triId=(SELECT triIdSup FROM tribunaux WHERE triSiret LIKE '$siren%' LIMIT 1)", true, MYSQL_ASSOC);
$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' => Wdate::dateT('Ymd','Y-m-d', $tabCC['dateUpdate']),
'DateMaj' => Wdate::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)) {
// @sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "Debug Fin $siren ($actifsUniquement) $sirenCom existe !", '') ;
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'];
$tab=$this->iDb->select('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',
"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' => Wdate::dateT('Y-m-d','Y-m-d', $dateMaj),
'DateMaj' => Wdate::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')));
$res=$this->iDb->select('liens', 'count(*)', "Siren1=$siren AND (Siren2=$siren2 OR (RaisonSociale='".addslashes($nom)."' AND Pays='$pays'))");
if ($res[0][0]>0) {
if (!$this->iDb->update('liens', array_merge($tabUpdate,array('ActionPart'=>1)), "siren=$siren AND (Siren2=$siren2 OR (RaisonSociale='".addslashes($nom)."' AND Pays='$pays'))", true))
$errMaj=1016166;
} else {
if (!$this->iDb->insert('liens', $tabInsert1, true))
$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')));
$res=$this->iDb->select('liens', 'count(*)', "Siren1=$siren2 AND (Siren2=$siren OR (RaisonSociale='$nom2' AND Pays='$pays2'))");
if ($res[0][0]>0) {
if (!$this->iDb->update('liens', array_merge($tabUpdate,array('ActionPart'=>2)), "siren=$siren2 AND (Siren2=$siren OR (RaisonSociale='".addslashes($nom2)."' AND Pays='$pays2'))", true))
$errMaj=1016168;
} else {
if (!$this->iDb->insert('liens', $tabInsert2, true))
$errMaj=1016169;
}
/** Insertion du dirigeant pour l'actionnaire en base **/
$dirs=$this->iDb->select('rncs_dirigeants','siren', "siren=$siren2", true, MYSQL_ASSOC);
if (count($dirs)==0) {
$this->iDb->insert('rncs_dirigeants', array( 'siren' => $siren2,
'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',
);
}
}*/
//@sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "Debug Fin $siren ($actifsUniquement)", print_r($tabRet,true)) ;
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(
'liens2 l, liensRef a, liensRef p LEFT JOIN tabPays t ON t.codPays3=p.adresse_pays',
'a.siren AS Siren1, 2 AS ActionPart, PDetention AS Pmin, 0 AS Pmax, MajMin, p.PpPm, p.siren AS Siren2, p.RS AS RaisonSociale,
p.isin, p.idLoc1Type, p.idLoc1Num, p.idLoc2Type, p.idLoc2Num, p.idLoc3Type, p.idLoc3Num,
p.adresse_num, p.adresse_btq, p.adresse_codvoie, p.adresse_libvoie, p.adresse_comp, p.adresse_cp, p.adresse_ville, p.tel, p.fax, p.web, p.email,
p.adresse_pays AS Pays, t.libPays, l.actif, l.source, dateEffetLien *1 AS dateLien, DATE( l.dateInsert ) *1 AS dateInsert, DATE( l.dateUpdate ) *1 AS dateUpdate',
"a.siren='$siren' AND a.id=l.idAct AND l.idPar=p.id ORDER BY l.source DESC, l.actif DESC, l.PDetention 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,
'Isin' => $lien['isin'],
'IdLocalNum' => $lien['idLoc1Num'],
'IdLocalType' => $this->tabIdLoc[$lien['idLoc1Type']],
// idLoc2Type, p.idLoc2Num, p.idLoc3Type, p.idLoc3Num
'RaisonSociale' => $libRS,
'Adresse1' => trim(preg_replace('/\s+/',' ',preg_replace('/^0+/','',$lien['adresse_num'].' '.$lien['adresse_btq'].' '.$lien['adresse_codvoie'].' '.$lien['adresse_libvoie']))),
'Adresse2' => trim($lien['adresse_comp']),
'AdresseCP' => trim($lien['adresse_cp']),
'AdresseVille' => trim($lien['adresse_ville']),
'Tel' => trim($lien['tel']),
'Fax' => trim($lien['fax']),
'Web' => trim($lien['web']),
'Mail' => trim($lien['email']),
'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 **/
$tmp=$this->iDb->select('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);
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;
}
// }
//@sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "Debug Liens $siren", print_r($tabRet,true)) ;
return $tabRet;
}
/** Retourne les participations du siren
** @param int Siren de l'entreprise
** @return array Tableau de participations
**/
public function getParticipationsOld($siren=false, $actifsUniquement=true) {
if (!$siren) $siren=$this->siren;
$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) {
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 **/
$tmp=$this->iDb->select('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);
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;
}
// }
//@sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "Debug Liens $siren", print_r($tabRet,true)) ;
return $tabRet;
}
public function getEvenements($siren=false) {
if (!$siren) $siren=$this->siren;
$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);
$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'];
}
$strInfos ='#'.$lien['Isin'].'#'.$lien['IdLocalType'].'#'.$lien['IdLocalNum'];
$strInfos.='#'.$lien['Adresse1'].'#'.$lien['Adresse2'].'#'.$lien['AdresseCP'].'#'.$lien['AdresseVille'].'#'.$lien['Tel'].'#'.$lien['Fax'].'#'.$lien['Web'].'#'.$lien['Mail'].'#'.$lien['Pays'];
$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.$strInfos;
// if ($codPays=='' || $codPays=='FRA' || $codPays=='BEL' || $codPays=='NLD' || $codPays=='LUX' || $codPays=='DEU' || $codPays=='AND' || $codPays=='ESP' ||
// $codPays=='MCO' || $codPays=='GBR' || $codPays=='CAN')
echo "+ $sirenFille#".$nomP.'#'.$libPays.$strInfos;
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);
}
//function getAllParticipations($siren, $pctMin=33, $nbNiveaux=15, $niveauCour=1, $tabSiren=array(), $sirenIni=0, $sirenMere=0, $appel=0, $actifsUniquement=true) {
public function getArboresence($siren, $pctMin=25, $nbNiveaux=50, $niveauCour=1, $tabSiren=array(), $sirenIni=0, $sirenMere=0, $appel=0, $actifsUniquement=true, $tabRet=array()) {
//$tabId=$this->iInsee->getIdentiteLight($siren);
$siren=trim($siren);
$tabId=$this->iInsee->getIdentiteLight($siren);
$sirenMere=trim($this->getMaisonMereFr($siren));
$tabIdMere=@$this->iInsee->getIdentiteEntreprise($sirenMere);
echo "Z, $siren : ".$tabId['Nom'];
if ($siren<>$sirenMere) {
echo ", $sirenMere : ".$tabIdMere['Nom'];
//print_r($tabIdMere);
//die();
$strInfos ='#'.$tabIdMere['Isin'].'#'.@$lien['IdLocalType'].'#'.@$lien['IdLocalNum'];
$strInfos.='#'.$tabIdMere['Adresse'].'#'.$tabIdMere['Adresse2'].'#'.$tabIdMere['CP'].'#'.$tabIdMere['Ville'].'#'.$tabIdMere['Tel'].'#'.$tabIdMere['Fax'].'#'.$tabIdMere['Web'].'#'.$tabIdMere['Mail'].'#'.$tabIdMere['Pays'];
echo $strInfos;
} else {
$tabIdMere=@$this->iInsee->getIdentiteEntreprise($siren);
$strInfos ='#'.$tabIdMere['Isin'].'#'.@$lien['IdLocalType'].'#'.@$lien['IdLocalNum'];
$strInfos.='#'.$tabIdMere['Adresse'].'#'.$tabIdMere['Adresse2'].'#'.$tabIdMere['CP'].'#'.$tabIdMere['Ville'].'#'.$tabIdMere['Tel'].'#'.$tabIdMere['Fax'].'#'.$tabIdMere['Web'].'#'.$tabIdMere['Mail'].'#'.$tabIdMere['Pays'];
echo $strInfos;
}
echo EOL;
$tabSirenAll=$this->getAllParticipations($sirenMere, $pctMin, $nbNiveaux, $niveauCour, $tabSiren, $siren, $sirenMere, $appel, $actifsUniquement, 'txt', $tabRet);
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,
);
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 distinct sirenGrp FROM etablissements_act WHERE siren=$siren AND siege=1) LIMIT 0,1", false, MYSQL_ASSOC);
$tabEnt=$tmp[0];
$sirenGrp=$tabEnt['siren'];
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',
);
$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] => 0709
[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;
}
}
?>