'é', 'ç'=>'ç','è'=>'è','à '=>'à'); 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.', ); public function __construct($siren) { $this->siren=$siren; } /** 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; $iDb=new WDB(); $tab=$iDb->select('liens', 'Siren1, ActionPart, Pmin, Pmax, MajMin, PpPm, Siren2, RaisonSociale, Pays, actif, source', "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=false; $tabRet=array(); foreach ($tab as $i=>$lien) { if ($lien['source']>=1700 && $lien['source']<=1720) $source=1700; else $source=$lien['source']; 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=$iDb->select('tabPays', 'libPays', "codPays3='$codPays'", true, MYSQL_ASSOC); $libPays=$tmp[0]['libPays']; } if ($lien['MajMin']=='F') $majMin='A'; else $majMin=$lien['MajMin']; $tabRet[]=array( 'Pmin' => number_format($lien['Pmin']*1,2,',',''), 'MajMin' => $majMin, 'RaisonSociale' => strtr($lien['RaisonSociale'],$this->tabChars), 'Pays' => $libPays, 'Siren' => $lien['Siren2'], 'Actif' => $lien['actif']); } $sourcePre=$source; } if (count($tabRet)==0) { $iInsee=new MInsee(); $tabTmp=$iInsee->getIdentiteLight($siren); switch ($tabTmp['FJ']*1) { case 7111: case 7113: case 7120: case 7150: case 7160: case 7171: case 7172: case 7179: case 7190: case 7229: case 7331: case 7349: case 7351: case 7352: case 7364: case 7365: case 7366: case 7371: case 7372: case 7373: case 7379: case 7381: case 7382: case 7383: case 7384: case 7385: case 7389: case 7410: case 7430: case 7450: case 7490: $tabRet[]=array('Pmin' => 0, 'MajMin' => '+', 'RaisonSociale' => 'ETAT FRANCAIS', 'Pays' => '', 'Siren' => 0, 'Actif' => 1); 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=$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, 'MajMin' => '+', 'RaisonSociale' => strtoupper($typeCC.' '.preg_replace('/^(CA|CC|CU|SAN) /Uis', '',$tabCC['libEPCI'])), 'Pays' => '', 'Siren' => $tabCC['codEPCI'], 'Actif' => 1); break; } } if (count($tabRet)==0) { $iInsee=new MInsee(); $tabTmp=$iInsee->getIdentiteLight($siren); $fj=$tabTmp['FJ']*1; if ($fj==5498) $strFonctions=",'Gérant'"; else $strFonctions=''; $adresse=end(explode(' ', $tabTmp['AdresseVoie'])); $codePostal=$tabTmp['CP']; $tab=$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', "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=$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']; } /* 'Nom'=>prepareString(strtr($etab['Nom'],'/*',' ')), 'Nom2'=>prepareString($etab['Nom2']), 'Sigle'=>prepareString($etab['Sigle']), 'Enseigne'=>prepareString($etab['Enseigne']), 'Adresse'=>prepareString($etab['Adresse']), 'CP'=>$etab['CP'], 'Ville'=>prepareString($etab['Ville']), 'Tel'=>$etab['Tel'], 'Fax'=>$etab['Fax'], 'Nic'=>$etab['Nic'], 'Actif'=>$etab['Actif'], 'NafEtab'=>$etab['NafEtab'], // Etablissement 'NafEtabLib'=>prepareString($etab['NafEtabLib']), 'NafEnt'=>$etab['NafEnt'], // Entreprise 'NafEntLib'=>prepareString($etab['NafEntLib']),*/ $tabSiren2=array_unique($tabSiren); if (count($tabSiren2==1)) $siren2=end($tabSiren2); else $siren2=$lien['dirSiren']; if ($lien['civilite']=='MME') $genre='Madame'; elseif ($lien['civilite']=='M') $genre='Monsieur'; else $genre=''; $tabRet[]=array( 'Pmin' => 0, 'MajMin' => $majMin, 'RaisonSociale' => trim(preg_replace('/ +/', ' ', $lien['dirRS'].' '.$genre.' '.$lien['nom'].' '.$lien['prenom'])), 'Pays' => '', 'Siren' => $siren2, 'Actif' => $lien['actif']); if ($siren2*1>0) { /** Insertion du lien en base **/ $nom=$pays=$dateMAJ=''; $ppPm='P'; $pct=0; $entrep2=$iInsee->getIdentiteLight($siren); $nom2=$entrep2['Nom']; $pays2='FRA'; if (substr($entrep2['FJ'],0,1)*1<>1) $ppPm='M'; $entrep=$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=$iDb->select('liens', 'count(*)', "Siren1=$siren AND (Siren2=$siren2 OR (RaisonSociale='".addslashes($nom)."' AND Pays='$pays'))"); if ($res[0][0]>0) { if (!$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 (!$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=$iDb->select('liens', 'count(*)', "Siren1=$siren2 AND (Siren2=$siren OR (RaisonSociale='$nom2' AND Pays='$pays2'))"); if ($res[0][0]>0) { if (!$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 (!$iDb->insert('liens', $tabInsert2, true)) $errMaj=1016169; } /** Insertion du dirigeant pour l'actionnaire en base **/ $dirs=$iDb->select('rncs_dirigeants','siren', "siren=$siren2", true, MYSQL_ASSOC); if (count($dirs)==0) { $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); } } } } } //@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; $iDb=new WDB(); $tab=$iDb->select('liens LEFT JOIN tabPays ON codPays3=Pays', 'Siren1, ActionPart, Pmin, Pmax, MajMin, PpPm, Siren2, RaisonSociale, Pays, libPays, actif, source', "Siren1='$siren' AND ActionPart=2 ORDER BY source DESC, actif DESC, Pmin DESC", true, MYSQL_ASSOC); // OR Siren2='$siren // $tabPartDB=mysql_select('dbo_liens_fi', 'SirenEntite, NomAdresse, PourcentageDetenu, Ville, Lien, MAJLien, MAJImport', "Siren='$siren' AND CodeLien='PA' ORDER BY PourcentageDetenu DESC"); $tabRet=array(); $sourcePre=false; foreach ($tab as $i=>$lien) { if ($lien['source']>=500 && $lien['source']<=520) $source=500; else $source=$lien['source']; 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']); $sourcePre=$source; } if (count($tabRet)==0) { $iInsee=new MInsee(); $tabTmp=$iInsee->getIdentiteLight($siren); switch ($tabTmp['FJ']*1) { 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=$iDb->select('insee.insee_tabVillesEpci', 'typEPCI, libEPCI, codeInsee, libCommune', "codEPCI='$siren'", true, MYSQL_ASSOC); @sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "Debug Fin $siren ($actifsUniquement)", print_r($tmp, true)) ; 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 ($iInsee->valideSiren($sirenCom)) break; } $tabRet[]=array('Pmin' => 0, 'MajMin' => '+', 'RaisonSociale' => 'COMMUNE DE '.strtoupper($tabCom['libCommune']), 'Pays' => '', 'Siren' => $sirenCom, 'Actif' => 1); } break; } } return $tabRet; } public function getLiens($siren=false) { $tabA=$this->getActionnaires($siren); $tabP=$this->getParticipations($siren); return array( 'actionnaires'=>$tabA, 'participations'=>$tabP); } private function getLiensPartenaires($siren=false) { if (!$siren) $siren=$this->siren; /** Le partenaire pour les liens Actionnaires/Participations est infobilan.decideur.com **/ $urlRacine='http://infobilan.decideur.com/'; $tabPost=array( 'choix'=>'1', 'pagePrecedente'=>'recherche_entreprise.html', 'nomsocRech'=>'', 'cpRech'=>'', 'villeRech'=>'', 'nomdirRech'=>'', 'predirRech'=>'', 'sirenRech'=>$this->siren, 'telRech'=>'', 'Rechercher.x'=>round(79), 'Rechercher.y'=>round(19),); $url=$urlRacine.'liste_result.html'; $referer=$urlRacine.'recherche_entreprise.html'; $page=getUrl($url,'', $tabPost, $referer, false, 'infobilan.decideur.com'); $this->body=$page['body']; $strCookie=$page['header']['Set-Cookie']; $refererInfoD=$url; if(preg_match_all('/(.*)<\/a><\/span>
/i', $page['body'], $matches)) { $urlInfoD=$urlRacine.'choix_pdt.html?'.$matches[1][0]; $page=getUrl($urlInfoD,$strCookie,'', $refererInfoD, false, 'infobilan.decideur.com'); $referer=$urlInfoD; if ($this->nscrl==0) $this->nscrl=@getTextInHtml($url, 'nscrlP=', '=','&'); $url=$urlRacine.'fiche_ident.html'; $page=getUrl($url,$strCookie,'', $referer, false, 'infobilan.decideur.com'); $this->body=$page['body']; if ($this->raisonSociale=='') $this->raisonSociale=trim(@getTextInHtml($this->body, 'Société', ' :', '')); if ($this->adresse=='') $this->adresse=trim(@getTextInHtml($this->body, 'Adresse :', '', '')); if ($this->tel=='') $this->tel=trim(@getTextInHtml($this->body, 'Tél', '', '
')); if ($this->fax=='') $this->fax=trim(@getTextInHtml($this->body, 'Fax', ' :', '
')); if ($this->web=='') $this->web=trim(@getTextInHtml($this->body, 'Site Web', '
')); if ($this->mail=='') $this->mail=trim(@getTextInHtml($this->body, 'E-mail', '')); if ($this->naf=='') $this->naf=trim(@getTextInHtml($this->body, 'Code NAF', ' :', '')); if(preg_match('/Capital social<\/span> : (\d*)(.*)
/isU', $this->body, $matches) && ($this->capitalMontant=='' || $this->capitalDevise=='')) { $this->capitalMontant=trim($matches[1]); $this->capitalDevise=trim($matches[2]); } if ($this->fj=='') $this->fj=trim(@getTextInHtml($this->body, 'Forme juridique', ' :', '
')); if ($this->nationalite=='') $this->nationalite=trim(@getTextInHtml($this->body, 'Nationalité', ' :', '')); if ($this->effectif=='') $this->effectif=trim(@getTextInHtml($this->body, 'Effectif', ' :', '
')); if ($this->activite=='') $this->activite=trim(@getTextInHtml($this->body, 'Activité', ' :', '
')); /** Actionnaires **/ $strTmp=trim(@getTextInHtml($this->body, 'ACTIONNAIRES
', '', '

')); if(preg_match_all('/

(.*)<\/span> - Participation<\/span> : (.*) %
(.*)<\/p>/isU', $strTmp, $matches)) { foreach ($matches[1] as $i=>$nom) { $this->tabAct[$i]['nom']=trim($nom); $this->tabAct[$i]['pct']=trim($matches[2][$i]); $this->tabAct[$i]['rcs']=trim(str_replace('RCS : ','',strip_tags($matches[3][$i]))); } } /** Filiales **/ $strTmp=trim(@getTextInHtml($this->body, 'FILIALES
', '

', '

')); if(preg_match_all('/

(.*)<\/span> - Participation<\/span> :(.*)%
(.*)<\/p>/isU', $strTmp, $matches)) { foreach ($matches[1] as $i=>$nom) { $this->tabFil[$i]['nom']=trim($nom); $this->tabFil[$i]['pct']=trim($matches[2][$i]); $this->tabFil[$i]['rcs']=trim(str_replace('RCS :','',strip_tags($matches[3][$i]))); } } /** CA et Résultat **/ $strTmp=trim(@getTextInHtml($this->body, '

PRINCIPAUX ELEMENTS FINANCIERS
', '

', '

')); if(preg_match('/

CA (.*)<\/span>(.*)
/isU', $strTmp, $matches)) { $this->derExerciceAnnee=trim($matches[1]); $this->derExerciceCA=trim(str_replace(':',' ', $matches[2])); } if(preg_match('/Résultat(.*)<\/span>(.*)$/isU', $strTmp, $matches)) { $this->derExerciceResultat=trim(str_replace(':',' ', $matches[2])); } /* $infoBilan=print_r($page, true); $fp=fopen('./infobilan.html', 'w'); fwrite($fp, $infoBilan); fclose($fp); */ } $tabA=$this->getActionnaires($siren); $tabP=$this->getParticipations($siren); return array( 'actionnaires'=>$tabA, 'participations'=>$tabP); } } ?>