951 lines
40 KiB
PHP
951 lines
40 KiB
PHP
|
<?
|
|||
|
|
|||
|
class MLiens {
|
|||
|
|
|||
|
public $siren=0;
|
|||
|
private $iDb;
|
|||
|
private $iInsee;
|
|||
|
public $tabSirenVisites;
|
|||
|
|
|||
|
private $tabChars=array('é'=>'<27>', 'ç'=>'<27>','è'=>'<27>','<27> '=>'<27>');
|
|||
|
|
|||
|
private static $tabFct=array( 'ADM'=>'Administrateur',
|
|||
|
'ASS'=>'Associ<63>',
|
|||
|
'COG'=>'Co-g<>rant',
|
|||
|
'CON'=>'Contr<74>leur de gestion',
|
|||
|
'DID'=>'Directeur G<>n<EFBFBD>ral D<>l<EFBFBD>gu<67>',
|
|||
|
'DIR'=>'Directeur',
|
|||
|
'GER'=>'G<>rant',
|
|||
|
'PCS'=>'Pr<50>sident du Conseil de Surveillance',
|
|||
|
'PDG'=>'Pr<50>sident Directeur G<>n<EFBFBD>ral',
|
|||
|
'PP'=>'Personne Physique',
|
|||
|
'PRD'=>'Pr<50>sident du directoire',
|
|||
|
'PRE'=>'Pr<50>sident du Conseil d\'Administration',
|
|||
|
'VIC'=>'Vice pr<70>sident du CA ou Surv.',
|
|||
|
);
|
|||
|
|
|||
|
private $tabSources=array( 0=>'Presse', // Old liens
|
|||
|
1000=>'Presse', // 4 ?
|
|||
|
1500=>'Actes', // Fedaso
|
|||
|
1600=>'Actes', // S&D : 69642, Associ<63>-G<>rant
|
|||
|
1700=>'SED',
|
|||
|
1800=>'Collecte', // Infol<6F>gales
|
|||
|
1900=>'Collecte');
|
|||
|
|
|||
|
|
|||
|
public function __construct($siren) {
|
|||
|
$this->siren=$siren;
|
|||
|
$this->iDb=new WDB();
|
|||
|
$this->iInsee=new MInsee();
|
|||
|
}
|
|||
|
|
|||
|
/** 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);
|
|||
|
//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 <20> Responsabilit<69> Limit<69>e
|
|||
|
case 5498: // SARL unipersonnelle
|
|||
|
case 5720: // Soci<63>t<EFBFBD> par actions simplifi<66>e <20> associ<63> unique
|
|||
|
$lien['Pmin']=100;
|
|||
|
$unique=true;
|
|||
|
break;
|
|||
|
default:
|
|||
|
break;
|
|||
|
}
|
|||
|
$dateMaj=$lien['dateLien'];
|
|||
|
$pctLien=$lien['Pmin']*1;
|
|||
|
$pctTot+=$pctLien;
|
|||
|
// On <20>vite d'afficher des totaux de d<>tention > <20> 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<69> administrative ind<6E>pendante
|
|||
|
case 7160: // Service d<>concentr<74> <20> comp<6D>tence nation. D'un minist<73>re (hors D<>fense)
|
|||
|
case 7171: // Service d<>concentr<74> de l'<27>tat <20> comp<6D>tence (inter) r<>gionale
|
|||
|
case 7172: // Service d<>concentr<74> de l'<27>tat <20> comp<6D>tence (inter) d<>partementale
|
|||
|
case 7179: // (Autre) Service d<>concentr<74> de l'<27>tat <20> comp<6D>tence territoriale
|
|||
|
case 7381: // Organisme consulaire
|
|||
|
/** Ces <20>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<69> constitutionnelle
|
|||
|
case 7113: // Minist<73>re
|
|||
|
case 7120: // Service central d'un minist<73>re
|
|||
|
case 7150: // Service du minist<73>re de la D<>fense
|
|||
|
|
|||
|
case 7190: // Ecole nationale non dot<6F>e de la personnalit<69> morale
|
|||
|
// case 7210: // COMMUNE (trait<69> apr<70>s)
|
|||
|
// case 7220: // DEPARTEMENT (trait<69> apr<70>s)
|
|||
|
case 7225: // Territoire d'Outre-mer
|
|||
|
case 7229: // (Autre) Collectivit<69> territoriale
|
|||
|
// case 7312: // Commune associ<63>e
|
|||
|
// case 7313: // Section de commune
|
|||
|
// case 7314: // Ensemble urbain
|
|||
|
case 7230: // R<>gion
|
|||
|
case 7321: // Association syndicale autoris<69>e
|
|||
|
case 7322: // Association fonci<63>re urbaine
|
|||
|
case 7323: // Association fonci<63>re de remembrement
|
|||
|
case 7331: // <20>tablissement public local d'enseignement
|
|||
|
// case 7341: // Secteur de commune
|
|||
|
// case 7342: // District urbain
|
|||
|
// case 7343: // Communaut<75> urbaine
|
|||
|
// case 7345: // Syndicat intercommunal <20> vocation multiple (SIVOM)
|
|||
|
// case 7346: // Communaut<75> de communes
|
|||
|
// case 7347: // Communaut<75> de villes
|
|||
|
// case 7348: // Communaut<75> d'agglom<6F>ration
|
|||
|
case 7349: // Autre <20>tablissement public local de coop<6F>ration non sp<73>cialis<69> ou entente
|
|||
|
case 7351: // Institution interd<72>partemental ou entente
|
|||
|
case 7352: // Institution interr<72>gionale ou entente
|
|||
|
// case 7353: // Syndicat intercommunal <20> 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 <20>coles
|
|||
|
// case 7363: // Caisse de cr<63>dit municipal
|
|||
|
case 7364: // <20>tablissement d'hospitalisation
|
|||
|
case 7365: // Syndicat inter hospitalier
|
|||
|
case 7366: // <20>tablissement public local social et m<>dico-social
|
|||
|
case 7371: // Office public d'habitation <20> loyer mod<6F>r<EFBFBD> (OPHLM)
|
|||
|
case 7372: // Service d<>partemental d'incendie
|
|||
|
case 7373: // <20>tablissement public local culturel
|
|||
|
case 7378: // R<>gie d'une collectivit<69> locale <20> caract<63>re administratif
|
|||
|
case 7379: // (Autre) <20>tablissement public administratif local
|
|||
|
case 7382: // <20>tablissement public national ayant fonction d'administration centrale
|
|||
|
case 7383: // <20>tablissement public national <20> caract<63>re scientifique culturel et professionnel
|
|||
|
case 7384: // Autre <20>tablissement public national d'enseignement
|
|||
|
case 7385: // Autre <20>tablissement public national administratif <20> comp<6D>tence territoriale limit<69>e
|
|||
|
case 7389: // <20>tablissement public national <20> caract<63>re administratif
|
|||
|
case 7410: // Groupement d'int<6E>r<EFBFBD>t public (GIP)
|
|||
|
case 7430: // <20>tablissement public des cultes d'Alsace-Lorraine
|
|||
|
case 7450: // Cercle et foyer dans les arm<72>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<EFBFBD> d'agglom<6F>rations"; break; // CJ=7348
|
|||
|
case 'CC': $typeCC="Communaut<EFBFBD> de communes"; break; // CJ=7346
|
|||
|
case 'CU': $typeCC="Communaut<EFBFBD> urbaine"; break; // CJ=73
|
|||
|
case 'SAN': $typeCC="Syndicat d'agglom<6F>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<63>-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<70>c<EFBFBD>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<63> G<>rant
|
|||
|
'cinf' => $lien['cinf'],
|
|||
|
), true);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
/** Si l'entreprise n'a aucun actionnaire mais est majoritairement contr<74>l<EFBFBD>e par l'<27>tat alors on d<>clare l'<27>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(
|
|||
|
'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<69> administrative ind<6E>pendante
|
|||
|
case 7160: // Service d<>concentr<74> <20> comp<6D>tence nation. D'un minist<73>re (hors D<>fense)
|
|||
|
case 7171: // Service d<>concentr<74> de l'<27>tat <20> comp<6D>tence (inter) r<>gionale
|
|||
|
case 7172: // Service d<>concentr<74> de l'<27>tat <20> comp<6D>tence (inter) d<>partementale
|
|||
|
case 7179: // (Autre) Service d<>concentr<74> de l'<27>tat <20> comp<6D>tence territoriale
|
|||
|
case 7381: // Organisme consulaire
|
|||
|
/** Ces <20>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<75> de communes"; break; // CJ=73
|
|||
|
//case 'CU': $typeCC="Communaut<75> urbaine"; break; // CJ=73
|
|||
|
//case 'SAN': $typeCC="Syndicat d'agglom<6F>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 <20> l'infini si le siren est d<>j<EFBFBD> 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 <20> ".$lien['Pmin']." (".$lien['MajMin'].") par ".$tabIdentiteA['Nom']." ($sirenMere)".EOL;
|
|||
|
return $siren;
|
|||
|
}
|
|||
|
elseif($sirenMere>100 && $lien['PminNum']>50) {
|
|||
|
if ($debug) echo "A. $siren d<>tenu <20> ".$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 <20> ".$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 <20> ".$lien['Pmin']." (".$lien['MajMin'].") par ".$tabIdentiteA['Nom']." ($sirenMere)".EOL;
|
|||
|
return $siren;
|
|||
|
}
|
|||
|
else {
|
|||
|
if ($debug) echo "E. $siren d<>tenu <20> ".$lien['Pmin']." (".$lien['MajMin'].") par ".$tabIdentiteA['Nom']." ($sirenMere)".EOL;
|
|||
|
//die("Cas pas pr<70>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);
|
|||
|
}
|
|||
|
|
|||
|
//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);
|
|||
|
$sirenMere=$this->getMaisonMereFr($siren);
|
|||
|
$tabId=$this->iInsee->getIdentiteLight($sirenMere);
|
|||
|
echo "Z, $sirenMere,".$tabId['Nom'].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<EFBFBD>tention de l'actionnaire
|
|||
|
** @param integer $deb Position du curseur dans la liste des r<EFBFBD>ponses (0 par d<EFBFBD>faut)
|
|||
|
** @param integer $nbRep Nombre de r<EFBFBD>ponses retourn<EFBFBD>es au maximum par cette requete (20 par d<EFBFBD>faut)
|
|||
|
** @param integer $maxRep Nombre de r<EFBFBD>ponses recherch<EFBFBD>es au maximum (200 par d<EFBFBD>faut)
|
|||
|
** @param bool $pertinence Recherche orthographique stricte sur les noms et pr<EFBFBD>noms (si true)
|
|||
|
** @return Liste des entreprises trouv<EFBFBD>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<EFBFBD>
|
|||
|
** @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<72>re',
|
|||
|
'D'=>'Production et distribution d\'<27>lectricit<69>, de gaz, de vapeur et d\'air conditionn<6E>',
|
|||
|
'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<69>s financi<63>res et d\'assurance',
|
|||
|
'L'=>'Activit<69>s immobili<6C>res',
|
|||
|
'M'=>'Activit<69>s sp<73>cialis<69>es, scientifiques et techniques',
|
|||
|
'N'=>'Activit<69>s de services administratifs et de soutien',
|
|||
|
'O'=>'Administration publique',
|
|||
|
'P'=>'Enseignement',
|
|||
|
'Q'=>'Sant<6E> humaine et action sociale',
|
|||
|
'R'=>'Arts, spectacles et activit<69>s r<>cr<63>atives',
|
|||
|
'S'=>'Autres activit<69>s de services',
|
|||
|
'T'=>'Activit<69>s des m<>nages en tant qu\'employeurs ; activit<69>s indiff<66>renci<63>es des m<>nages en tant que producteurs de biens et services pour usage propre',
|
|||
|
'U'=>'Activit<69>s extra-territoriales',
|
|||
|
);
|
|||
|
|
|||
|
$tabId=$this->iInsee->getIdentiteEntreprise($sirenGrp);
|
|||
|
/*
|
|||
|
[SiretSiege] => 54205118000066
|
|||
|
[dir1Titre] => Pr<EFBFBD>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<74>res ainsi que leurs d<>riv<69>s et sous-produits, ainsi que toutes activit<69>s relevant de l' <EFBFBD>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<EFBFBD>n<EFBFBD>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;
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
?>
|