Merge from 2.0

This commit is contained in:
Michael RICOIS 2011-10-05 12:11:46 +00:00
commit c17f767aef
11 changed files with 7311 additions and 285 deletions

View File

@ -970,26 +970,24 @@ private static $tabEvenements=array(
* La première ligne ne contient pas de NOM PRENOM car il s'agit de la 1ère ligne
*/
foreach ($tabAdministration as $i=>$ligne) {
/*
file_put_contents('coucou.log','Ligne : '.$ligne."\n", FILE_APPEND);
preg_match("/(.*)gérants?(.*)$/i", $ligne, $matches);
file_put_contents('coucou.log','Test : '.print_r($matches, 1), FILE_APPEND);
preg_match("/(.*)g.rants?(.*)$/i", $ligne, $matches);
preg_match("/(.*)g.rants?(.*)$/iu", $ligne, $matches);
file_put_contents('coucou.log','Test : '.print_r($matches, 1), FILE_APPEND);
preg_match("/(.*)g.rants?(.*)$/i", utf8_decode($ligne), $matches);
file_put_contents('coucou.log','Test : '.print_r($matches, 1), FILE_APPEND);
*/
*/
/** On recherche la fonction et son code fonction de la ligne */
foreach ($this->tabDirigeants as $fonction=>$numFct) {
file_put_contents('coucou.log','Fonction : '.$fonction, FILE_APPEND);
//file_put_contents('coucou.log','Fonction : '.$fonction, FILE_APPEND);
//@todo : provisoire table bdd en utf8
if (preg_match("/(.*)$fonction(.*)$/i", utf8_decode($ligne), $matches)) {
//file_put_contents('coucou.log',"Matched \n", FILE_APPEND);
if (preg_match("/(.*)$fonction(.*)$/iu", $ligne, $matches)) {
file_put_contents('coucou.log',"Matched \n", FILE_APPEND);
$tabCodeFct[$i]=$numFct;
$tabFonctions[$i]=@preg_replace("/($strFonctions)/i", '', $tabAdministration[$i+1]);
if(@preg_match("/(partant|ancien|suppression|cha.g|d.part|d.mis(si|is)on|r.vocation)/i", $tabAdministration[$i+1]))

View File

@ -1348,7 +1348,7 @@ public function rechercheDirOld($nom, $prenom='', $fonction='', $dateNaiss='', $
"e.raisonSociale, e.enseigne, e.sigle, e.adr_num, e.adr_btq, e.adr_typeVoie, e.adr_libVoie, ".
"e.adr_comp, e.adr_cp, e.adr_ville, e.tel, e.fax, e.cj, e.ape_etab, e.ape_entrep, e.teff_etab, ".
"CONCAT(e.siren, e.nic) as siret, e.actif, e.identite_pre",
"e.siren=$siren $strActif ORDER BY e.siege DESC, e.actif DESC $limit", false, MYSQL_ASSOC);
"e.siren=$siren $strActif ORDER BY e.siege DESC, e.actif DESC $limit", false, MYSQL_ASSOC);
} else {
$listeEtab=$this->iDb->select('etablissements e',
"'Etab' as Loc, e.id, e.source, e.source_id, e.triCode, e.autre_id, e.siren, e.nic, e.siege, ".
@ -2269,7 +2269,7 @@ print_r($tabTmp, true));
'TrancheCALib'=>self::$tabTCA[$tabInsee['TCA']],
'TrancheCAexp'=>$tabInsee['TCAEXP'],
'TrancheCAexpLib'=>self::$tabTCAexp[$tabInsee['TCAEXP']],
'TrancheCAType'=>'I',
'AnneeEffEn'=>$tabInsee['DEFEN'],
'AnneeEffEt'=>$tabInsee['DEFET'],
'AnneeTCA'=>$tabInsee['TCA_AN'],
@ -2301,6 +2301,19 @@ print_r($tabTmp, true));
// MODET,
);
/** Estimation du Chiffre d'affaires **/
$cj1=substr($tabInsee['CJ'],0,1)*1;
if ($tabRet['TrancheCA']*1==0 && $tabInsee['ACTIF']==1 && $tabInsee['CJ']<>1800 && $tabInsee['CJ']<>1900 && $cj1<>7 && $cj1<>8 && $cj1<>9) {
$caEstime=$this->getCAnafEffectif($tabInsee['APE_ENT'], $tabInsee['EFF_ENT']);
$tabRet['TrancheCA']=$this->getTca($caEstime);
$tabRet['TrancheCALib']=self::$tabTCA[$tabRet['TrancheCA']];
if ($tabRet['TrancheCA']*1>0) {
$tabRet['TrancheCAType']='E';
$tabRet['AnneeTCA']=date('Y')-2;
}
}
/** Si tourisme, recherche du classeement **/
$tabNafTourisme=array( '5510Z', // Hôtels et hébergement similaire
'5520Z', // Hébergement touristique et autre hébergement de co
'5530Z', // Terrains de camping et parcs pour caravanes ou véh
@ -3002,6 +3015,7 @@ print_r($tmp, true));
$rep=$this->iDb->select('bilans', 'siren, dateExercice, dureeExercice, monnaie, typeBilan, unite, postes, dateProvPartenaire, dateInsert', "siren=$siren AND typeBilan IN ('N','S') ORDER BY dateExercice DESC", false, MYSQL_ASSOC);
$entrep=$rep[0];
if (isset($entrep['dateExercice'])) {
$tabRet['bilanAnnee'] = substr($entrep['dateExercice'],0,4);
$tabRet['bilanDate'] = $entrep['dateExercice'];
$tabRet['bilanMois'] = $entrep['dureeExercice'];
$tabRet['bilanDevise'] = $entrep['monnaie'];
@ -3055,6 +3069,9 @@ print_r($tmp, true));
$tabRet['TypeExploitation']=10;
}
$timer['infosBilan']=microtime(true);
} elseif($caEstime>0 && $tabInsee['ACTIF']==1) {
$tabRet['bilanAnnee'] = date('Y')-2;
$tabRet['bilanFLestime']=$caEstime;
}
/** CA Estimé si aucune info Bilan au TCA Insee
@ -4940,7 +4957,7 @@ function getProColPart($siren, $rubrique='', $forceVerif=false, $idAnnonce=0) {
$tabAnnees[]=$an;
$strAnnees.=implode(',', $tabAnnees).')';
}
$tabImportExport=$this->iDb->select('importExport', 'importExport, annee, /*siren, raisonSociale, naf, categorie, adresse,*/ rangNational, deptSiege', "1 $strImportExport $strAnnees AND siren=$siren ORDER BY annee DESC, importExport ASC",false, MYSQL_ASSOC);
$tabImportExport=$this->iDb->select('importExport', 'importExport, annee, /*siren, raisonSociale, naf, categorie, adresse,*/ rangNational, deptSiege', "1 $strImportExport $strAnnees AND siren=$siren ORDER BY annee DESC, importExport ASC", false, MYSQL_ASSOC);
return $tabImportExport;
}
@ -5678,21 +5695,51 @@ function getProColPart($siren, $rubrique='', $forceVerif=false, $idAnnonce=0) {
}
return $tabRet;
}
/** Donne la tranche de CA à partir du CA réel
* @param double $montantCA Chiffre d'affaires réel ou estimé
* @return integer Tranche de CA
*/
public function getTca($montantCA) {
$montantCA=$montantCA*1;
if ($montantCA>=200000000) // 9 : 200 millions d'euros ou plus)
return 9;
elseif ($montantCA>=100000000) // 8 : De 100 millions à moins de 200 millions d'euros
return 8;
elseif ($montantCA>= 50000000) // 7 : De 50 millions à moins de 100 millions d'euros
return 7;
elseif ($montantCA>= 20000000) // 6 : De 20 millions à moins de 50 millions d'euros
return 6;
elseif ($montantCA>= 10000000) // 5 : De 10 millions à moins de 20 millions d'euros
return 5;
elseif ($montantCA>= 5000000) // 4 : De 5 millions à moins de 10 millions d'euros
return 4;
elseif ($montantCA>= 2000000) // 3 : De 2 millions à moins de 5 millions d'euros
return 3;
elseif ($montantCA>= 1000000) // 2 : De 1 million à moins de 2 millions d'euros
return 2;
elseif ($montantCA>= 500000) // 1 : De 0,5 à moins de 1 million d'euros
return 1;
else
return 0; // Non renseignée ou moins de 0,5 million d'euros
}
/** CA Moyen par salarié pour un secteur donné
** @param string $naf Naf de l'entreprise
** @param integer $effectif Effectif de l'entreprise
**/
public function getCAnafEffectif($naf, $effectif=0) {
$tabTmp=$this->iDb->select('ratios_secteurs', 'id, naf5, annee, SUM(montant), SUM(nombre), SUM(montant)/SUM(nombre) AS moyenne', "naf5='$naf' AND id=267 AND ANNEE>(SELECT MAX(annee) FROM ratios_secteurs WHERE naf5='$naf' AND id=267)-2 GROUP BY id, naf5", true, MYSQL_ASSOC);
if (count($tabTmp)>0) {
$caSecteur=round($tabTmp[0]['moyenne']*1000);
// Encours moyen secteur * nb salariés
if ($effectif>0) return $caSecteur*$effectif;
else return $caSecteur;
} else
return 0;
}
}
/*$tabSiren[$even['insDATEVE']]=array('rs'=>$even['insNOMEN'],
'sigle'=>$even['insSIGLE'],
'ape'=>$even['insAPEN700'],
'nic'=>$even['insNICSIEGE'],
'cj'=>$even['insCJ'],
);
$tabSiret[$even['insNIC']][$even['insDATEVE']]
= array('ens'=>$even['insENSEIGNE'],
'ape'=>$even['insAPET700'],
'adresse'=>$even['insL2_COMP'].' '.$even['insL3_CADR'].' '.$even['insL4_VOIE'].' '.$even['insL5_DISP'].' '.$even['insL6_POST'].' '.$even['insL7_ETRG'],
'effectif'=>$even['insEFENCENT'].' (Tranche '.$even['insTEFET'].')',
);
*/
function getInfoPrecedente($tabSir, $dateEven, $even) {
//sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "classMInsee, getInfoPrecedente avant le $dateEven pour '$even'", print_r($tabSir, true));

View File

@ -220,9 +220,9 @@ $tabPostesDGI=array(
'1T'=>'Prêts et autres immobilisations financières (brut)',
'LQ'=>'TOTAL IV (brut)',
'0G'=>'TOTAL GENERAL (I+II+III+IV) (brut)',
'L9'=>'Sur sol propre dont Composant',
'L9'=>'Sur sol propre dont Composant',
'M1'=>'Sur sol d\'autrui dont Composant',
'M2'=>'Installation générale, aménagement, agencement dont Composant',
'M2'=>'Installation générale, aménagement, agencement dont Composant',
'M3'=>'Installations techniques, matériel et outillage industriels dont Composant',
'KB'=>'Frais d\'établissement de Rech. et Dev. TOTAL I (réév.)',
'KE'=>'Autres postes d\'immobilisations incorporelles TOTAL II (réév.)',
@ -737,16 +737,16 @@ $tabPostesDGI=array(
'VF'=>'(2) Prêts et avances consentis aux associés (pers. phys.)',
'7Y'=>'Emprunts obligataires convertibles (1)',
'7Z'=>'Autres emprunts obligataires (1)',
'VG'=>'Emprunts et dettes auprès des établissements de crédits (1) : à 1 an maximum',
'VH'=>'Emprunts et dettes auprès des établissements de crédits (1) : à + 1 an',
'VG'=>'Emprunts et dettes auprès des établissements de crédits (1) : à 1 an maximum',
'VH'=>'Emprunts et dettes auprès des établissements de crédits (1) : à + 1 an',
'8A'=>'Emprunts,dettes financières divers (1)(2)',
'8B'=>'Fournisseurs comptes rattachées',
'8C'=>'Personnels et comptes rattachés',
'8D'=>'SS et autres organisme sociaux',
'8E'=>'Etat et autres collectivités publiques : Impôts sur les bénéfices',
'VW'=>'Etat et autres collectivités publiques : T.V.A.',
'VX'=>'Etat et autres collectivités publiques : Obligations cautionnées',
'VQ'=>'Etat et autres collectivités publiques : Autes impôts, taxes et assimilés',
'VW'=>'Etat et autres collectivités publiques : T.V.A.',
'VX'=>'Etat et autres collectivités publiques : Obligations cautionnées',
'VQ'=>'Etat et autres collectivités publiques : Autes impôts, taxes et assimilés',
'8J'=>'Dettes sur immo, comptes rattachés',
'VI'=>'Groupe et associés (2)',
'8K'=>'Autres dettes',
@ -1045,13 +1045,13 @@ $tabGreffe2Sd=array(
'E1J'=>'IU',
'E1K'=>'IV',
'E3L'=>'IW',
'E3M'=>'IX',
'E3M'=>'IX',
'E3N'=>'NN',
// IMMO Fin
'E4A'=>'IZ',
'E4B'=>'I0',
'E3R'=>'I1',
'E3S'=>'I2',
'E3S'=>'I2',
'E3T'=>'NM',
'E3U'=>'NP',
@ -1085,7 +1085,7 @@ $tabGreffe2Sd=array(
'J1X'=>'VP2',
'J1Y'=>'VC2',
'J1Z'=>'VR2',
'J2A'=>'VS2',
'J2A'=>'VS2',
'J2B'=>'7Y1',
'J2C'=>'7Z1',
@ -1165,7 +1165,7 @@ $tabGreffe2Sd=array(
'M2L'=>'ZK1',
);
require_once 'framework/common/curl.php';
class MGreffes {
@ -1177,12 +1177,14 @@ class MGreffes {
public $libErreur='';
public $cookie='';
public $iDb;
private $iInsee;
public $enCache=false;
function __construct() {
$this->iDb=new WDB();
$this->iInsee=new MInsee();
}
function getIdentite($siren, $refresh=false) {
$res=$this->iDb->select('greffes_identite', 'id, siren, nom, nomCommercial, adresse, adresse2, cp, ville, enseigne, siege, fj, fjLib, naf, nafLib, numRC, numRC2, typeRCS, numGreffe, libGreffe, dateCreation, dateRadiation, dateCloture, ca, res, eff, dateInsert', "siren=$siren");
if (count($res)>0 && !$refresh) {
@ -1220,7 +1222,7 @@ class MGreffes {
}
$this->cookie=$page['header']['Set-Cookie'];
$this->referer=$url;
$url='http://www.infogreffe.fr/infogreffe/newRechercheEntreprise.xml';
$postData=array( 'denomination'=>'',
'commune'=>'',
@ -1241,7 +1243,7 @@ class MGreffes {
$url='http://www.infogreffe.fr/weblogic/infogreffe/index.do';
$page=getUrl($url, $this->cookie, '', $this->referer, false, 'www.infogreffe.fr', false, '', '', 21);
$this->body=$page['body'];
$this->codeRetour=$page['code'];
$this->codeRetour=$page['code'];
if ($this->codeRetour<>'302') {
$this->libErreur='Erreur Infogreffe 302b !';
return false;
@ -1274,11 +1276,11 @@ class MGreffes {
$fp=fopen('./infogreffe.log', 'a');
fwrite($fp, $this->body);
fclose($fp);
//005480256R.C.S.STNAZAIRE
$nomCom=$adr=$adr2=$cpVille=$cp=$ville=$ens=$dateRad=$dateCre=$dateCloture=$ca=$res=$eff='';
$strSiren=htm2txt(@getTextInHtml($this->body, '<div class="text-rcs" id="libelleRcsGreffe" style="margin-left:0px; margin-right: 0px;">', '0px;">', '</div>'));
$strSiren=htm2txt(@getTextInHtml($this->body, '<div class="text-rcs" id="libelleRcsGreffe" style="margin-left:0px; margin-right: 0px;">', '0px;">', '</div>'));
//511 054 843 R.S.A.C. NARBONNE
/*if (preg_match("/((?:[0-9]{9,9})|(?:[0-9]{3,3} [0-9]{3,3} [0-9]{3,3})|(?:[0-9]{3,3}\.[0-9]{3,3}\.[0-9]{3,3})|(?:[0-9]{3,3}-[0-9]{3,3}-[0-9]{3,3}))/", $strSiren, $matches)) {
print_r($matches);
@ -1294,7 +1296,7 @@ class MGreffes {
$greffe_lib=trim(preg_replace('/^Spécial des Entrepreneurs Individuels à Responsabilité Limitée/','',trim(implode(' ', $tabTmp))));
} else
$greffe_lib=trim(preg_replace('/^inscrit au R.C.S./','',trim(implode(' ', $tabTmp))));
$strTmp=@getTextInHtml($this->body, '<td class=\'content\'>IDENTITE</td></tr></table></div>', '</tr></table></div>', '<span class="span-planAcces">');
$siege=htm2txt(@getTextInHtml($strTmp, '<span id="fiche.etablissement.type" class="ficheidentite-texte-standard-italic-gras">', 'gras">', '</span>'));
if ($siege=='Siège social') $siege=1; else $siege=0;
@ -1303,10 +1305,10 @@ class MGreffes {
if (preg_match('/<span id="fiche.denomination" class="texte-standard">(?:.*)Enseigne \:(.*)</Uis',$this->body,$matches))
$ens=htm2txt(trim($matches[1]));
if (preg_match('/<span id="fiche.denomination" class="texte-standard">(?:.*)Nom commercial \:(.*)</Uis',$this->body,$matches))
$nomCom=htm2txt(trim($matches[1]));
if (preg_match('/<\/span>(.*)<div>(.*)<br\/>(.*)<br\/>(.*)<br\/>(.*)<br\/>/Uis',$strTmp,$matches)) {
// Adresse sur 5 lignes
$adr=htm2txt(trim($matches[4]));
@ -1333,7 +1335,7 @@ class MGreffes {
$cp=substr($cpVille,0,5);
$ville=trim(substr($cpVille,5));
}
if (preg_match('/<span class=\'ficheidentite.texte.standard.italic.gras\'>Activit(?:.*)\(code NAF\)(?:.*)title="(.*)">(.*)<\/span>/Uis',$this->body,$matches)) {
$naf=$matches[2];
$nafLib=htm2txt(ucfirst(strtolower($matches[1])));
@ -1342,7 +1344,7 @@ class MGreffes {
$siege=1;
} else {
$matches=array();
preg_match('/<span class=\'ficheidentite.texte.standard.italic.gras\'>Forme juridique<\/span><br\/><span id="fiche.forme.juridique" class="texte-standard">(.*)<\/span>/Uis',$this->body,$matches);
preg_match('/<span class=\'ficheidentite.texte.standard.italic.gras\'>Forme juridique<\/span><br\/><span id="fiche.forme.juridique" class="texte-standard">(.*)<\/span>/Uis',$this->body,$matches);
}
$cjLib=prepareString(@strtoupper(trim($matches[1])));
$capitalType='SOC';
@ -1440,7 +1442,7 @@ class MGreffes {
case 'SARL D&#039;ARCHITECTURE': $cj=5499; break;
case 'SARL D&#039;INTERET COLLECTIF ET AGRICOLE A CAPITAL VARIABLE': $cj=5432; $capitalType='VAR'; break;
case 'SARL NON MEMBRE DE LA CE OU NON PARTIE A L&#039;ACCORD SUR L&#039;ESPACE ECONOMIQUE EUR.': $cj=3120; break;
case 'SARL SOCIETE A ASSOCIE UNIQUE': $cj=5498; break;
case 'SARL SOCIETE A ASSOCIE UNIQUE': $cj=5498; break;
case 'SARL SOUS FORME DE EURL': $cj=5498; break;
case 'SARL UNIPERSONNELLE SPORTIVE': $cj=5498; break;
case 'SARL UNIPERSONNELLE': $cj=5498; break;
@ -1642,7 +1644,7 @@ class MGreffes {
else
$cjLib=ucfirst(strtolower($cjLib));
if (preg_match('/<input type="hidden" name="greffe" value="(.*)">/Uis',$this->body,$matches)) {
$greffe_num=$matches[1];
}
@ -1673,7 +1675,7 @@ class MGreffes {
if (preg_match('/<span class="text-standard">(?:.*)Effectif \:(.*)<br/Uis',$this->body,$matches)) {
$eff=strtr(trim($matches[1]),array(chr(160)=>'',' '=>'','k'=>'000','K'=>'000','&euro;'=>'','personnes'=>''));
}
$numRC=$greffe_mil.$greffe_sta.$greffe_chr;
if (strlen($numRC)>4 && strlen($numRC)<10) {
if ($numRC<>'' && substr($numRC,0,2)*1>=30)
@ -1684,7 +1686,7 @@ class MGreffes {
$numRC2='';
} else
$numRC2=$numRC;
/** Insertion en base de données **/
$tabInsert=array( 'siren' => $siren,
'nom' => $nom,
@ -1716,7 +1718,7 @@ class MGreffes {
//sendMail('debug@scores-decisions.com', 'ylenaour@scores-decisions.com', "classMGreffes.php : Debug identite $siren", $this->body);
// 997536917
}
$tabRet=array( 'id' => $id,// A calculer après insert
'Pertinence' => 100,
@ -1751,7 +1753,7 @@ class MGreffes {
);
return $tabRet;
}
function getListeEtab($siren) {
//POSTDATA=
$tabIdentite=$this->getIdentite($siren, true);
@ -1789,7 +1791,6 @@ class MGreffes {
}
}
$iInsee=new MInsee();
foreach ($tabNumRC as $i=>$docId) {
$nom=$nomCom=$adr=$adr2=$cp=$ville=$ens=$siege=$nafEtab=$greffe_num=$typeRCS=$greffe_lib=$numRC=$numRC2='';
$siege=$princip=0;
@ -1797,14 +1798,14 @@ class MGreffes {
/* [22] => ^M
AUTOMOBILES PEUGEOT^M
PARC DU GRIFFON 38 AV DES GEORGE S DE CAB RIES BP 258 . 13747 VITROLLES - Etablissement Secondaire^M
*/
if (preg_match('/^(.*)<\/a>/Uis', $tabEtabs[$i], $matches))
$nom=htm2txt(trim($matches[1]));
if (preg_match('/^(?:.*)<\/a>(?:.*)<br \/>(.*) - /Uis', $tabEtabs[$i], $matches)) {
if (preg_match('/Enseigne \:(.*)<br\/>(.*)/Uis',$matches[1],$matches2)) {
$ens=htm2txt(trim($matches2[1]));
@ -1812,17 +1813,17 @@ class MGreffes {
} elseif (preg_match('/Nom commercial \:(.*)<br\/>(.*)/Uis',$matches[1],$matches2)) {
$nomCom=htm2txt(trim($matches2[1]));
$adr=htm2txt(trim($matches2[2]));
} else
$adr=htm2txt(trim($matches[1]));
$tabAdr=$iInsee->structureVoie($adr.'.');
} else
$adr=htm2txt(trim($matches[1]));
$tabAdr=$this->iInsee->structureVoie($adr.'.');
}
if (preg_match("/([0-9]{3,3} [0-9]{3,3} [0-9]{3,3}) (R\.C\.S\.|R\.S\.A\.C\.) (.*)<br/Uis", $tabEtabs[$i], $matches)) {
$siren=$matches[1];
$typeRCS=$matches[2];
$greffe_lib=htm2txt(trim($matches[3]));
}
if (preg_match('/<br\/>(.*)$/sUi', $tabEtabs[$i], $matches))
$nafEtab=htm2txt(trim($matches[1]));
@ -1832,11 +1833,11 @@ class MGreffes {
$princip=1;
elseif (preg_match('/- Siège Social/Uis', htm2txt($tabEtabs[$i])))
$siege=1;
if (preg_match('/<span class="text-orange-xsmall">Radi&eacute;<\/span>/Uis', $tabEtabs[$i]))
$actif=0;
$greffe_num = substr($docId,0,4);
$numRC = substr($docId,4,8);
if (strlen($numRC)>4 && strlen($numRC)<10) {
@ -1848,7 +1849,7 @@ class MGreffes {
$numRC2='';
} else
$numRC2=$numRC;
$tabEt[$i]=@array( 'docId' => $docId, //
'nom' => $nom, //
'nomCommercial' => $nomCom, //
@ -1877,15 +1878,15 @@ class MGreffes {
}
return false;
}
/** http://www.infogreffe.fr/infogreffe/listEtablissement.do?ets=552144503&index=RCS
** numRC des établissements :
** http://www.infogreffe.fr/infogreffe/getEntrepDetail.do?docId=330290B017760010
** http://www.infogreffe.fr/infogreffe/getEntrepDetail.do?docId=130379B005800010
**/
/** Génère une requète sur le Web Service Infogreffe et récupère le résultat
**
** @param unknown_type $siren
@ -1921,13 +1922,13 @@ class MGreffes {
case 'rcs': break;
}*/
// Par défaut, le résultat ne provient pas du cache
// Par défaut, le résultat ne provient pas du cache
$this->enCache=false;
/** Par défaut les documents avec des liens vers les actes ne sont pas périsables
**/
if ($option=='')
$perisable=true;
$perisable=true;
else
$perisable=false;
/*`siren` , `dateRequete` , `strXml` , `type` , , `codeErreur`
@ -1948,12 +1949,12 @@ FROM ``*/
$errMsg=$xml;
}
//echo 'Une requête dans le cache <br/>';
}// else
}// else
//echo 'Pas de requête dans le cache <br/>';
if (INFOGREFFE_DISPO_WS && (
!$this->enCache ||
($perisable && $dateReq*1<>date('Ymd')) ||
!$this->enCache ||
($perisable && $dateReq*1<>date('Ymd')) ||
($this->enCache && !$perisable && strlen($xml)<=200))) {
$query=$this->requeteInfogreffe($siren,$idCommande,$type, $vecteur, $option);
$xml=$this->getInfogreffeXML($query);
@ -1961,10 +1962,10 @@ FROM ``*/
$sirenQuery=$sirenReponse=0;
if (preg_match('/<num_siren>(.*)<\/num_siren>/Uis', $query, $matches))
$sirenQuery=$matches[1];
if (preg_match('/<num_siren>(.*)<\/num_siren>/Uis', $xml, $matches))
$sirenReponse=$matches[1];
/** Réponse pour un autre siren, sans erreur ! **/
if ($sirenQuery<>$sirenReponse && strlen($xml)>=200)
sendMail('debug@scores-decisions.com', 'ylenaour@scores-decisions.com', "classMGreffes.php : Debug requete $siren,$idCommande,$type, $vecteur, $option", "Debug requete $siren,$idCommande,$type, $vecteur, $option
@ -2002,10 +2003,10 @@ $xml");
//echo EOL.'Insertion réponse Infogreffe'.EOL;
}
}
return $xml;
}
/**
* Retourne le résultat du webservice infogreffe.
* @param string $req
@ -2025,7 +2026,7 @@ function getInfogreffeXML($req){
//$url='https://wsrcte.experian.fr/WSContextInfogreffe/INFOGREFFE';
else
$url = INFOGREFFE_WS_URL;
$req = utf8_encode($req);
debugLog('I', "Accès Infogreffe WS Avant = $url", __LINE__, __FILE__, __FUNCTION__, __CLASS__);
$post = '<?xml version="1.0" encoding="UTF-8"?><SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="https://webservices.infogreffe.fr/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:getProduitsWebServicesXML><param0 xsi:type="xsd:string">'.$req.'</param0></ns1:getProduitsWebServicesXML></SOAP-ENV:Body></SOAP-ENV:Envelope>';
@ -2036,16 +2037,16 @@ function getInfogreffeXML($req){
$fpErr=fopen(LOG_PATH.'/curlDebug.log', 'a');
curl_setopt($ch, CURLOPT_STDERR, $fpErr);
curl_setopt($ch, CURLOPT_VERBOSE, TRUE);
curl_setopt($ch, CURLOPT_COOKIEFILE,TRUE);
curl_setopt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
curl_setopt($ch, CURLOPT_TIMEOUT, 5);
$output = curl_exec($ch);
fclose($fpErr);
$xml = str_replace("<?xml version='1.0' encoding='UTF-8'?><SOAP-ENV:Envelope xmlns:SOAP-ENV='http://schemas.xmlsoap.org/soap/envelope/' xmlns:SOAP-ENC='http://schemas.xmlsoap.org/soap/encoding/' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xsd='http://www.w3.org/2001/XMLSchema'><SOAP-ENV:Body><ns0:getProduitsWebServicesXMLResponse xmlns:ns0='urn:local' SOAP-ENV:encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'><return xsi:type='xsd:string'>", '', $output);
$xml = str_replace('</return></ns0:getProduitsWebServicesXMLResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>','', $xml);
// $firephp->log($xml,'XML');
@ -2106,7 +2107,7 @@ function requeteInfogreffe($siren, $idCommande=0, $type='BS', $vecteur='XL', $op
'<type_requete>S</type_requete>'.
'<media>WS</media>'.
'<mode_diffusion>';
if ($type=='AC' && $option=='' && $vecteur=='XL')
$req.= '<mode type="T"/>'.
'<mode type="C"/>';
@ -2170,15 +2171,15 @@ function getListeBilans($siren, $type='*') {
$result = $xpath->query("//listeBilanSaisi/bilanSaisi/.");
if (count($result)>0) {
/** On parse chaque noeud XML pour récupérer les infos **/
foreach ($result as $annonce) {
/** Année de Millésime et infos Greffes pour la Ref Commande **/
$title = $xpath->query ('millesime', $annonce);
$mil=trim($title->item(0)->nodeValue);
/*<>7501</greffe>
<>55</dossier_millesime>
<dossier_statut>B</dossier_statut>
/*<>7501</greffe>
<>55</dossier_millesime>
<dossier_statut>B</dossier_statut>
<dossier_chrono>*/
$title = $xpath->query ('num_gest/greffe', $annonce);
$dgre=trim($title->item(0)->nodeValue);
@ -2188,7 +2189,7 @@ function getListeBilans($siren, $type='*') {
$dsta=trim($title->item(0)->nodeValue);
$title = $xpath->query ('num_gest/dossier_chrono', $annonce);
$dchr=trim($title->item(0)->nodeValue);
$title = $xpath->query ('type_comptes', $annonce);
$typeCpt=strtolower(trim($title->item(0)->nodeValue));
$title = $xpath->query ('liasse', $annonce);
@ -2205,7 +2206,7 @@ function getListeBilans($siren, $type='*') {
$title = $xpath->query ('num_depot', $annonce);
$num_depot=strtolower(trim($title->item(0)->nodeValue));
$ref=$mil."_$typeCpt-".str_replace('-', '',$millesime)."-$dgre-$dmil-$dsta-$dchr-$num_depot";
/*elseif ($type=='C') $presta=2001;
@ -2241,7 +2242,7 @@ function getListeBilans($siren, $type='*') {
@$iDb->insert('greffes_actes', $tabInsert);*/
}
//print_r($tabRet2);
/** Ajout des dates de clotures précédentes et des durées d'exercices **/
foreach ($tabRet2 as $i=>$ret) {
$tabRet[$ret['index']]=$ret;
@ -2260,16 +2261,16 @@ function getListeBilans($siren, $type='*') {
$tabRet[$ret['index']]['dateExercicePre']=str_replace('-', '',$millesimePre);
$tabRet[$ret['index']]['dureeExercicePre']=$delta2;
}
}
//@sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "classMGreffes::getListeBilans sur $siren", $xml.EOL.print_r($tabRet, true).EOL.'enCache='.$this->enCache.EOL);
return $tabRet;
}
function getBilan($siren, $ref='') {
global $tabGreffe2Sd;
global $tabPostesDGI;
$tabRet=$tabPostes=array();
$xml=$this->getProduitWS($siren,'BS',0,'XL',$ref);
//die($xml);
@ -2278,11 +2279,11 @@ function getBilan($siren, $ref='') {
$xpath = new Domxpath($dom_object);
$title = $xpath->query ('//bilanSaisi/liasse');
$liasse=strtoupper(trim($title->item(0)->nodeValue));
$result = $xpath->query("//bilanSaisi/page/poste/.");
if (count($result)>0) {
//echo count($result).EOL;
/** On parse chaque Poste du Bilans en XML pour récupérer les infos **/
foreach ($result as $poste) {
/** Année de Millésime et infos Greffes pour la Ref Commande **/
@ -2322,10 +2323,10 @@ function getBilan($siren, $ref='') {
$tabPostes[$codeSd]=$valeur;
}
$tabRet['POSTES']=$tabPostes;
$tabRet['DATE_FRAICHE_BILAN']=date('Ymd');
$tabRet['MONNAIE_LIV_UNITE']='';
$title = $xpath->query('//bilanSaisi/date_cloture');
$tabRet['DATE_CLOTURE']=WDate::dateT('Y-m-d','d/m/Y',trim($title->item(0)->nodeValue));
$title = $xpath->query ('//bilanSaisi/duree_exo');
@ -2366,7 +2367,7 @@ function getBilan($siren, $ref='') {
$title = $xpath->query ('//bilanSaisi/devise');
$tabRet['MONNAIE_ORI']=trim($title->item(0)->nodeValue);
if ($tabRet['MONNAIE_ORI']=='') $tabRet['MONNAIE_ORI']='EUR';
// Conversion en EUR car on ne livre qu'en EUROS !
if ($tabRet['MONNAIE_ORI']<>'EUR') {
if ($tabRet['MONNAIE_ORI']=='FRF') {
@ -2384,11 +2385,11 @@ function getBilan($siren, $ref='') {
$tabRet['MONNAIE']='EUR';
$tabBilan['SOURCE']=10; // 167 avant
/*
<denomination>AUTOMOBILES PEUGEOT</denomination>
<adresse>75 AV DE LA GRANDE ARMEE</adresse>
<code_postal>75016</code_postal>
<ville>PARIS</ville>
<pays />
<denomination>AUTOMOBILES PEUGEOT</denomination>
<adresse>75 AV DE LA GRANDE ARMEE</adresse>
<code_postal>75016</code_postal>
<ville>PARIS</ville>
<pays />
*/
}
return $tabRet;
@ -2437,12 +2438,12 @@ function getListeActes($siren) {
</mode_diffusion>
</acte>
</depot_acte>
</liste_depot_acte>**/
$result = $xpath->query("//liste_depot_acte/depot_acte/.");
if (count($result)>0) {
/** On parse chaque noeud XML pour récupérer les infos **/
foreach ($result as $annonce) {
/*// Gestion
@ -2525,7 +2526,7 @@ function getListeActes($siren) {
'vecteurC'=>$vecteurC,
);
}
}*/
}*/
// Greffes et RC
$title = $xpath->query ('num_gest/greffe', $annonce);
$dgre=trim($title->item(0)->nodeValue);
@ -2535,7 +2536,7 @@ function getListeActes($siren) {
$dsta=trim($title->item(0)->nodeValue);
$title = $xpath->query ('num_gest/dossier_chrono', $annonce);
$dchr=trim($title->item(0)->nodeValue);
// Dépôt
$title = $xpath->query ('num_depot', $annonce);
$depot_num=strtolower(trim($title->item(0)->nodeValue));
@ -2545,7 +2546,7 @@ function getListeActes($siren) {
// Siren
$title = $xpath->query ("num_siren", $annonce);
$num_siren = $title->item(0)->nodeValue;
// Actes
$actes = $xpath->query("acte/.", $annonce);
$nbVecteurT=$nbActes=0;
@ -2584,7 +2585,7 @@ function getListeActes($siren) {
if ($title->length==1) //$vecteurC = true;
$tabVecteurs[]='C';
}
if ($date_acte=='') $date=$date_depot; else $date=$date_acte;
$tabRet[]=array( 'siren' => $siren,
@ -2632,9 +2633,9 @@ function getListesProcolVentes() {
Referer[http://www.infogreffe.fr/infogreffe/afficherRechercheActualiteAction.do?paramTypeListe=5]
Cookie[webabacus_id=1259143571392-1; JSESSIONID=5g2VLTDbHFBLJVnPv9TVbNYm17w9KfL90pvPLtdtTj6qydH2D120!1981381761!1657286441]
Données POST:
2 GET
2 GET
3 GET http://www.infogreffe.fr/infogreffe/afficherListeActualitesAction.do?page=2
Referer[http://www.infogreffe.fr/infogreffe/rechercheListeActualiteAction.do]
Cookie[webabacus_id=1259143571392-1; JSESSIONID=5g2VLTDbHFBLJVnPv9TVbNYm17w9KfL90pvPLtdtTj6qydH2D120!1981381761!1657286441]
@ -2650,7 +2651,7 @@ function getListesProcolVentes() {
}
$this->cookie=$page['header']['Set-Cookie'];
$this->referer=$url;
$url='http://www.infogreffe.fr/infogreffe/afficherRechercheActualiteAction.do?paramTypeListe=1';
$page=getUrl($url, $this->cookie, '', $this->referer, false);
$this->body=$page['body'];
@ -2662,8 +2663,8 @@ function getListesProcolVentes() {
//$this->cookie=$page['header']['Set-Cookie'];*/
$this->referer=$url;
print_r($page);
die();
die();
$url='http://www.infogreffe.fr/infogreffe/rechercheListeActualiteAction.do';
$postData=array( 'radImmatRad'=>'FN',
'departement'=>'',
@ -2684,17 +2685,17 @@ function getListesProcolVentes() {
$this->referer=$url;
print_r($page);
die();
$url='http://www.infogreffe.fr/weblogic/infogreffe/index.do';
$page=getUrl($url, $this->cookie, '', $this->referer, false, 'www.infogreffe.fr');
$this->body=$page['body'];
$this->codeRetour=$page['code'];
$this->codeRetour=$page['code'];
if ($this->codeRetour<>'302') {
$this->libErreur='Erreur Infogreffe 302b !';
return false;
}
$this->referer=$url;
$url='http://www.infogreffe.fr/infogreffe/afficherListeActualitesAction.do?rebuild=true';
$page=getUrl($url, $this->cookie, '', $this->referer, false, 'www.infogreffe.fr');
$this->body=$page['body'];
@ -2702,7 +2703,7 @@ function getListesProcolVentes() {
$this->header=$page['header'];
print_r($page);
die();
if ($this->codeRetour==302) {
$this->referer=$url;
$url='http://www.infogreffe.fr/infogreffe/entrepListe.do?index=rcs';
@ -2724,7 +2725,7 @@ function getListesProcolVentes() {
$fp=fopen('./infogreffe.log', 'a');
fwrite($fp, $this->body);
fclose($fp);
}
@ -2742,10 +2743,10 @@ function getBilansImages($siren, $ref='') {
$dom_object = new DomDocument2();
$dom_object->loadXML($xml);
// create DOMXPath object with our DOMObject
$xpath = new Domxpath($dom_object);
$xpath = new Domxpath($dom_object);
$result = $xpath->query("//liste_bilan_complet/bilan_complet/.");
if (count($result)>0) {
/** On parse chaque noeud XML pour récupérer les infos **/
foreach ($result as $annonce) {
/** Année de Millésime et infos Greffes pour la Ref Commande **/
@ -2760,15 +2761,15 @@ function getBilansImages($siren, $ref='') {
$dsta=trim($title->item(0)->nodeValue);
$title = $xpath->query ('num_gest/dossier_chrono', $annonce);
$dchr=trim($title->item(0)->nodeValue);
$title = $xpath->query ('type_comptes', $annonce);
$typeCpt=strtolower(trim($title->item(0)->nodeValue));
$title = $xpath->query ('date_cloture', $annonce);
$millesime=strtolower(trim($title->item(0)->nodeValue));
$title = $xpath->query ('date_cloture_iso', $annonce);
$dateClotureIso=strtolower(trim($title->item(0)->nodeValue));
$title = $xpath->query ('num_depot', $annonce);
$num_depot=strtolower(trim($title->item(0)->nodeValue));
@ -2777,7 +2778,7 @@ function getBilansImages($siren, $ref='') {
$tabVecteurs=array();
$vecteurs = $xpath->query("mode_diffusion/.", $annonce);
foreach ($vecteurs as $vecteur) {
$title = $xpath->query ("mode[@type='T']", $vecteur);
$title = $xpath->query ("mode[@type='T']", $vecteur);
if ($title->length==1) //$vecteurT = true;
$tabVecteurs[]='T';
$title = $xpath->query ("mode[@type='C']", $vecteur);
@ -2788,7 +2789,7 @@ function getBilansImages($siren, $ref='') {
$tabRet[]=array( 'siren' => $siren,
'numRC' => $dmil.'-'.$dsta.'-'.$dchr,
'numGreffe' => $dgre,
'numGreffe' => $dgre,
'annee' => $mil,
'type' => $typeCpt,
'dateClotureAff' => $millesime,
@ -2813,9 +2814,9 @@ function getBilansImages($siren, $ref='') {
);
if (!$iDb->insert('greffes_bilans', $tabInsert))
if (!$iDb->update('greffes_bilans', $tabInsert, "siren='$siren' AND num_depot='$num_depot' AND date_cloture='$dateClotureIso' AND type_comptes='$typeCpt'"))
$iDb->update('greffes_bilans', $tabInsert, "siren='$siren' AND num_depot='$num_depot' AND date_cloture='$dateClotureIso' AND type_comptes=''");
$iDb->update('greffes_bilans', $tabInsert, "siren='$siren' AND num_depot='$num_depot' AND date_cloture='$dateClotureIso' AND type_comptes=''");
}
}
//@sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "classMGreffes::getListeBilans sur $siren", $xml.EOL.print_r($tabRet, true));
return $tabRet;
@ -2828,15 +2829,15 @@ function getInfosCessions($siren) {
$tabCes=$ret[0];
if (count($ret)>1)
sendMail('debug@scores-decisions.com', 'ylenaour@scores-decisions.com', "classMGreffes.php : Debug getInfosCessions $siren", "Plus de 1 cession pour ce siren");
//id, siren, nom, libGreffe, inscrit, etat, dateImmat,
//id, siren, nom, libGreffe, inscrit, etat, dateImmat,
//pdfLink, pdfSize, pdfVer, pdfPage, ,
// dateLimite, mandataire, dateInsert
// dateLimite, mandataire, dateInsert
return array( 'cessJuge'=> $tabCes['etat'],
'cessDateJuge'=>$tabCes['dateJuge'],
'cessDateConv'=>$tabCes['dateConv'],
'cessDateLJS'=> $tabCes['dateLJS'],
'cessDateInv'=> $tabCes['dateInventaire'],
'cessDateBod'=> $tabCes['dateBodacc'],
'cessDateBod'=> $tabCes['dateBodacc'],
'cessCAdec'=> $tabCes['caDeclare'],
'cessEffectif'=>$tabCes['effectif'],
'cessDesc'=> $tabCes['descriptif'],
@ -2862,7 +2863,7 @@ function getListeCessions($typeProcedure='rj') {
}
$this->cookie=$page['header']['Set-Cookie'];
$this->referer=$url;
$url='http://www.infogreffe.fr/infogreffe/newRechercheEntreprise.xml';
$postData=array( 'denomination'=>'',
'commune'=>'',
@ -2878,13 +2879,13 @@ function getListeCessions($typeProcedure='rj') {
return false;
}
$this->referer=$url;
/*
* Déprécié le 6 octobre 2010
$url='http://www.infogreffe.fr/weblogic/infogreffe/index.do';
$page=getUrl($url, $this->cookie, '', $this->referer, false, 'www.infogreffe.fr', false, '', '', 21);
$this->body=$page['body'];
$this->codeRetour=$page['code'];
$this->codeRetour=$page['code'];
if ($this->codeRetour<>'302') {
$this->libErreur='Erreur Infogreffe 302b !';
return false;
@ -2914,7 +2915,7 @@ function getListeCessions($typeProcedure='rj') {
return false;
}
$this->referer=$url;
$url='http://www.infogreffe.fr/infogreffe/afficherRechercheActualiteAction.do?paramTypeListe=1';
$page=getUrl($url, $this->cookie, '', $this->referer, false, 'www.infogreffe.fr', false, '', '', 21);
$this->body=$page['body'];
@ -2925,7 +2926,7 @@ function getListeCessions($typeProcedure='rj') {
}
$this->referer=$url;
sleep(1);
$url='http://www.infogreffe.fr/infogreffe/afficherRechercheActualiteAction.do?paramTypeListe=5';
$page=getUrl($url, $this->cookie, '', $this->referer, false, 'www.infogreffe.fr', false, '', '', 21);
$this->body=$page['body'];
@ -2936,7 +2937,7 @@ function getListeCessions($typeProcedure='rj') {
}
$this->referer=$url;
sleep(2);
// Premier POST pour obtenir la liste des RJ ou LJ à céder !
$url='http://www.infogreffe.fr/infogreffe/rechercheListeActualiteAction.do';
$postData=array('radImmatRad'=>'FN',
@ -2957,7 +2958,7 @@ function getListeCessions($typeProcedure='rj') {
*8 Plus de 500M euros
*/
);
$page=getUrl($url, $this->cookie, $postData, $this->referer, false, 'www.infogreffe.fr', false, '', '', 21);
$page=getUrl($url, $this->cookie, $postData, $this->referer, false, 'www.infogreffe.fr', false, '', '', 21);
$this->body=$page['body'];
$this->codeRetour=$page['code'];
if ($this->codeRetour<>'200') {
@ -2969,7 +2970,7 @@ function getListeCessions($typeProcedure='rj') {
$nbCessions=trim($matches[1]);
$nbPages=ceil($nbCessions/10);
sleep(1);
/** Liste des entreprises **/
$tabCessions=array();
$nbInsert=$nbDeja=0;
@ -2978,8 +2979,8 @@ function getListeCessions($typeProcedure='rj') {
$url='http://www.infogreffe.fr/infogreffe/afficherListeActualitesAction.do?rebuild=true';
else
$url='http://www.infogreffe.fr/infogreffe/afficherListeActualitesAction.do?page='.$iPage;
$page=getUrl($url, $this->cookie, '', $this->referer, false, 'www.infogreffe.fr', false, '', '', 21);
$page=getUrl($url, $this->cookie, '', $this->referer, false, 'www.infogreffe.fr', false, '', '', 21);
$this->body=$page['body'];
$this->codeRetour=$page['code'];
if ($this->codeRetour<>'200') {
@ -2987,7 +2988,7 @@ function getListeCessions($typeProcedure='rj') {
return false;
}
$this->referer=$url;
$tabStrCessions=explode('<td class="titre" style="vertical-align:top;font-weight:normal">',$this->body);
foreach($tabStrCessions as $k=>$strCession) {
if($k==0) continue;
@ -3018,11 +3019,11 @@ function getListeCessions($typeProcedure='rj') {
//@$k2++;
$urlPre=$url;
$nomPdf=$page['header']['Location'];
//echo "Redirection #$k2 : ".$page['header']['Location'].EOL;
//echo "Redirection #$k2 : ".$page['header']['Location'].EOL;
$page=getUrl($page['header']['Location'], $this->cookie, '', $urlPre, false);//, 'www.infogreffe.fr', false, '', '', 21);
}
$strPdf=$page['body'];
$pdfSizeIn=$page['header']['Content-Length'];
$pdfSizeIn=$page['header']['Content-Length'];
$tabInfo['pdfLink']=$nomPdf;
/*
$tabPdf=getPdfInfo($repPdfGreffesCessions.'/'.basename($nomPdf));
@ -3066,7 +3067,7 @@ function getListeCessions($typeProcedure='rj') {
}
return array( 'insert'=>$nbInsert,
'update'=>$nbDeja);//$tabCessions;
// echo "$nbCessions cessions sur $nbPages pages".EOL;
// echo "$nbCessions cessions sur $nbPages pages".EOL;
// die();
}
}

View File

@ -2,8 +2,11 @@
class MLiens {
public $siren=0;
public $siren=0;
private $iDb;
private $iInsee;
public $tabSirenVisites;
private $tabChars=array('é'=>'é', 'ç'=>'ç','è'=>'è','à '=>'à');
private static $tabFct=array( 'ADM'=>'Administrateur',
@ -32,6 +35,8 @@ class MLiens {
public function __construct($siren) {
$this->siren=$siren;
$this->iDb=new WDB();
$this->iInsee=new MInsee();
}
/** Retourne les actionnaires du siren
@ -40,18 +45,17 @@ class MLiens {
**/
public function getActionnaires($siren=false, $actifsUniquement=true) {
if (!$siren) $siren=$this->siren;
$iInsee=new MInsee();
$iDb=new WDB();
$tabIdentite=$iInsee->getIdentiteLight($siren);
$tabIdentite=$this->iInsee->getIdentiteLight($siren);
//echo $siren;
//print_r($tabIdentite);
$nic=$tabIdentite['Nic'];
$tab=$iDb->select('liens',
$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;
@ -70,7 +74,7 @@ class MLiens {
$codPays=strtoupper($lien['Pays']);
$libPays='';
if ($codPays<>'' && $codPays<>'FRA') {
$tmp=$iDb->select('tabPays', 'libPays', "codPays3='$codPays'", true, MYSQL_ASSOC);
$tmp=$this->iDb->select('tabPays', 'libPays', "codPays3='$codPays'", true, MYSQL_ASSOC);
$libPays=$tmp[0]['libPays'];
}
if ($lien['MajMin']=='F') $majMin='A';
@ -86,10 +90,15 @@ class MLiens {
break;
}
$dateMaj=$lien['dateLien'];
$pctLien=$lien['Pmin']*1;
$pctTot+=$pctLien;
// On évite d'afficher des totaux de détention > à 100%
if($pctTot>100) $pctLien=0;
if ($lien['dateInsert']>$dateMaj) $dateMaj=$lien['dateInsert'];
if ($lien['dateUpdate']>$dateMaj) $dateMaj=$lien['dateUpdate'];
$tabRet[]=array( 'Pmin' => number_format($lien['Pmin']*1,2,',',''),
'PminNum' => $lien['Pmin']*1,
$tabRet[]=array( 'Pmin' => number_format($pctLien,2,',',''),
'PminNum' => $pctLien,
'MajMin' => $majMin,
'RaisonSociale' => strtr($lien['RaisonSociale'],$this->tabChars),
'Pays' => $libPays,
@ -102,7 +111,7 @@ class MLiens {
}
$sourcePre=$source;
}
if (count($tabRet)==0) {
switch ($tabIdentite['FJ']*1) {
case 7112: // Autorité administrative indépendante
@ -112,7 +121,7 @@ class MLiens {
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=$iDb->select('tribunaux', 'triSiret, triNom, dateUpdate', "triId=(SELECT triIdSup FROM tribunaux WHERE triSiret LIKE '$siren%' LIMIT 1)", true, MYSQL_ASSOC);
$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)
@ -204,7 +213,7 @@ class MLiens {
else
$strCodeInsee="codeInsee IN ('2A$comm','2B$comm','20$comm') ";
$tmp=$iDb->select('insee.insee_tabVillesEpci', 'typEPCI, codEPCI, libEPCI, libCommune', $strCodeInsee, true, MYSQL_ASSOC);
$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
@ -233,7 +242,7 @@ class MLiens {
$dept=substr($siren,2,2);
if ($dept*1>95)
$dept=substr($siren,2,3);
$tmp=$iDb->select('insee.departements d, insee.insee_tabRegions r',
$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];
@ -246,8 +255,8 @@ class MLiens {
// 23 350 00 16 => Bon
// 23 350 00 00 => Mauvais
$sirenCom='23'.$dept3.'00'.$iSir2;
if ($iInsee->valideSiren($sirenCom)) {
if ($iInsee->sirenExiste($sirenCom)) {
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;
}
@ -274,7 +283,7 @@ class MLiens {
else $strFonctions='';
$adresse=end(explode(' ', $tabIdentite['AdresseVoie']));
$codePostal=$tabIdentite['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, dateInsert, dateUpdate',
$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='-';
@ -286,7 +295,7 @@ class MLiens {
$nbRep=$maxRep=200;
$pertinence=$avecSiren=true;
$etabs=$iInsee->rechercheEtab($lien['nom'].' '.$lien['prenom'], $adresse, $codePostal, $ville, $siege, $actif, $deb, $nbRep, $maxRep, $pertinence, $avecSiren);
$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']);
@ -296,22 +305,6 @@ class MLiens {
if ($etab['FJ']==1800 && $rsEtab==$rsLien)
$tabSiren[]=$etab['Siren'];
}
/*
'Nom'=>prepareString(strtr($etab['Nom'],'/*',' ')),
'Nom2'=>prepareString($etab['Nom2']),
'Sigle'=>prepareString($etab['Sigle']),
'Enseigne'=>prepareString($etab['Enseigne']),
'Adresse'=>prepareString($etab['Adresse']),
'CP'=>$etab['CP'],
'Ville'=>prepareString($etab['Ville']),
'Tel'=>$etab['Tel'],
'Fax'=>$etab['Fax'],
'Nic'=>$etab['Nic'],
'Actif'=>$etab['Actif'],
'NafEtab'=>$etab['NafEtab'], // Etablissement
'NafEtabLib'=>prepareString($etab['NafEtabLib']),
'NafEnt'=>$etab['NafEnt'], // Entreprise
'NafEntLib'=>prepareString($etab['NafEntLib']),*/
$tabSiren2=array_unique($tabSiren);
if (count($tabSiren2==1)) $siren2=end($tabSiren2);
else $siren2=$lien['dirSiren'];
@ -338,11 +331,11 @@ class MLiens {
$nom=$pays=$dateMAJ='';
$ppPm='P';
$pct=0;
$entrep2=$iInsee->getIdentiteLight($siren);
$entrep2=$this->iInsee->getIdentiteLight($siren);
$nom2=$entrep2['Nom'];
$pays2='FRA';
if (substr($entrep2['FJ'],0,1)*1<>1) $ppPm='M';
$entrep=$iInsee->getIdentiteLight($siren2);
$entrep=$this->iInsee->getIdentiteLight($siren2);
$nom=strtr($entrep['Nom'],'/*',' ');
$pays='FRA';
$tabUpdate=array( 'Pmin'=> $pct,
@ -360,12 +353,12 @@ class MLiens {
'actif'=> 1,
'source'=> 1600,
'dateInsert'=> date('YmdHis')));
$res=$iDb->select('liens', 'count(*)', "Siren1=$siren AND (Siren2=$siren2 OR (RaisonSociale='".addslashes($nom)."' AND Pays='$pays'))");
$res=$this->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))
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 (!$iDb->insert('liens', $tabInsert1, true))
if (!$this->iDb->insert('liens', $tabInsert1, true))
$errMaj=1016167;
}
@ -378,19 +371,19 @@ class MLiens {
'actif'=> 1,
'source'=> 1600,
'dateInsert'=> date('YmdHis')));
$res=$iDb->select('liens', 'count(*)', "Siren1=$siren2 AND (Siren2=$siren OR (RaisonSociale='$nom2' AND Pays='$pays2'))");
$res=$this->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))
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 (!$iDb->insert('liens', $tabInsert2, true))
if (!$this->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);
$dirs=$this->iDb->select('rncs_dirigeants','siren', "siren=$siren2", true, MYSQL_ASSOC);
if (count($dirs)==0) {
$iDb->insert('rncs_dirigeants', array( 'siren' => $siren2,
$this->iDb->insert('rncs_dirigeants', array( 'siren' => $siren2,
'raisonSociale' => $nom,
'civilite' => $lien['civilite'],
'typeDir' => $lien['typeDir'],
@ -416,7 +409,7 @@ class MLiens {
}
if (count($tabRet)==0) {
$tabNotice=$iInsee->getInfosNotice($siren, $nic);
$tabNotice=$this->iInsee->getInfosNotice($siren, $nic);
if ($tabNotice['insRECME']*1>0) {
$tabRet[]=array('Pmin' => 0,
'PminNum' => 0,
@ -441,9 +434,10 @@ class MLiens {
**/
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");
$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) {
@ -475,8 +469,7 @@ class MLiens {
}
// if (count($tabRet)==0) {
$iInsee=new MInsee();
$tabTmp=$iInsee->getIdentiteLight($siren);
$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)
@ -485,7 +478,7 @@ class MLiens {
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=$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);
$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)
@ -507,7 +500,7 @@ class MLiens {
//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);
$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')
@ -519,7 +512,7 @@ class MLiens {
$comm=substr($tabCom['codeInsee'],2,3);
for ($iSir=0; $iSir<10; $iSir++) {
$sirenCom='21'.$dept.$comm.$iSir;
if ($iInsee->valideSiren($sirenCom)) break;
if ($this->iInsee->valideSiren($sirenCom)) break;
}
$tabRet[]=array('Pmin' => 0,
'PminNum' => 0,
@ -547,7 +540,7 @@ class MLiens {
$deptD=$dept.'00';
$deptF=$dept.'99';
}
$tmp=$iDb->select('insee.departements d, insee.insee_tabRegions r',
$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) {
@ -556,7 +549,7 @@ class MLiens {
else $dept3=$dept.'0';
for ($iSir=0; $iSir<10; $iSir++) {
$sirenCom='22'.$dept3.'001'.$iSir;
if ($iInsee->valideSiren($sirenCom)) break;
if ($this->iInsee->valideSiren($sirenCom)) break;
}
$tabRet[]=array('Pmin' => 0,
'PminNum' => 0,
@ -573,6 +566,7 @@ class MLiens {
break;
}
// }
//@sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "Debug Liens $siren", print_r($tabRet,true)) ;
return $tabRet;
}
@ -586,22 +580,22 @@ class MLiens {
public function getMaisonMereFr($siren, $debug=false, $tabSirenVisites=array()) {
$tabSirenVisites[]=$siren;
$this->tabSirenVisites=$tabSirenVisites;
$this->tabSirenVisites[]=$siren;
$tabA=$this->getActionnaires($siren, true);
$majTrouve=false;
$iInsee=new MInsee();
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, $tabSirenVisites)) {
if (in_array($sirenMere, $this->tabSirenVisites)) {
//echo "TROUVE !!!".EOL;
continue;
}// else
//echo "inconnu".EOL;
if ($debug && $sirenMere>1000) $tabIdentiteA=$iInsee->getIdentiteLight($sirenMere);
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;
@ -610,12 +604,12 @@ class MLiens {
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, $tabSirenVisites);
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, $tabSirenVisites);
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;
@ -632,13 +626,11 @@ class MLiens {
public function getAllParticipations($siren, $pctMin=33, $nbNiveaux=15, $niveauCour=1, $tabSiren=array(), $sirenIni=0, $sirenMere=0, $appel=0, $actifsUniquement=true) {
$appel++;
//echo "0, $sirenIni, $sirenMere, $appel, $niveauCour/$nbNiveaux, $siren DEBUT".EOL;
$tabP=$this->getParticipations($siren, $actifsUniquement);
$iInsee=new MInsee();
foreach ($tabP as $i=>$lien) {
$sirenFille=$lien['Siren']*1;
if ($sirenFille>1000) {
$tabIdentiteP=$iInsee->getIdentiteLight($sirenFille);
$tabIdentiteP=$this->iInsee->getIdentiteLight($sirenFille);
$nomP=$tabIdentiteP['Nom'];
} else {
$nomP=$lien['RaisonSociale'];
@ -648,7 +640,8 @@ class MLiens {
if ($codPays<>'' && $codPays<>'France')
$libPays=" ($codPays)";
for($j=0;$j<=$appel; $j++) echo "|\t";
for($j=0;$j<$appel; $j++) echo "|\t";
if ($lien['PminNum']>0)
$pct=$lien['PminNum'].'%';
elseif ($lien['MajMin']=='+')
@ -659,69 +652,35 @@ class MLiens {
$pct=$lien['MajMin'];
echo "+ $sirenFille ($pct) : ".$nomP.$libPays;
/*
echo "$sirenFille>100".EOL;
echo $lien['PminNum'].">=".$pctMin.EOL;
echo $lien['MajMin']."==+".EOL;
echo "$niveauCour<=$nbNiveau";
*/
if ($siren*1==$sirenFille*1) {
echo "[D]".EOL;//, $sirenIni, $sirenMere, $appel, $niveauCour/$nbNiveaux, $siren détient à ".$lien['Pmin']." (".$lien['MajMin'].") : ".$tabIdentiteP['Nom']." ($sirenFille)".EOL;
echo "[D]".EOL;
$tabSiren[]=$siren;
}
elseif($sirenFille>100 && ($lien['PminNum']>=$pctMin || $lien['MajMin']=='+') && $niveauCour<=$nbNiveaux) {
$tabSiren[]=$siren;
$niveauCour++;
if (in_array($sirenFille,$tabSiren))
echo "[Adeja]".EOL;//echo ", $sirenIni, $sirenMere, $appel, $niveauCour/$nbNiveaux, $siren détient à ".$lien['Pmin']." (".$lien['MajMin'].") : ".$tabIdentiteP['Nom']." ($sirenFille)".EOL;
echo "[Adeja]".EOL;
else {
echo "[A]".EOL;//, $sirenIni, $sirenMere, $appel, $niveauCour/$nbNiveaux, $siren détient à ".$lien['Pmin']." (".$lien['MajMin'].") : ".$tabIdentiteP['Nom']." ($sirenFille)".EOL;
$tabSiren=$this->getAllParticipations($sirenFille, $pctMin, $nbNiveaux, $niveauCour, $tabSiren, $sirenIni, $sirenMere, $appel, $actifsUniquement);
echo "[A]".EOL;
$tabSiren=$this->getAllParticipations($sirenFille, $pctMin, $nbNiveaux, $niveauCour, $tabSiren, $sirenIni, $sirenMere, $appel, $actifsUniquement, $format);
}
}
elseif($sirenFille>100 && ($lien['PminNum']<$pctMin || $lien['MajMin']=='-')) {
echo "[B]".EOL;//, $sirenIni, $sirenMere, $appel, $niveauCour/$nbNiveaux, $siren détient à ".$lien['Pmin']." (".$lien['MajMin'].") : ".$tabIdentiteP['Nom']." ($sirenFille)".EOL;
echo "[B]".EOL;
$tabSiren[]=$siren;
//$tabSiren=$this->getAllParticipations($sirenFille, $pctMin, $tabSiren);
}
elseif ($sirenFille<100) {
echo "[C]".EOL;//, $sirenIni, $sirenMere, $appel, $niveauCour/$nbNiveaux, $siren détient à ".$lien['Pmin']." (".$lien['MajMin'].") : ".$tabIdentiteP['Nom']." ($sirenFille)".EOL;
echo "[C]".EOL;
$tabSiren[]=$siren;
//return $tabSiren;
}
else {
echo "[E]".EOL;//, $sirenIni, $sirenMere, $appel, $niveauCour/$nbNiveaux, $siren détient à ".$lien['Pmin']." (".$lien['MajMin'].") : ".$tabIdentiteP['Nom']." ($sirenFille)".EOL;
//$tabSiren=array_merge(array($siren), $tabSiren);
echo "[E]".EOL;
$tabSiren[]=$siren;
//return $tabSiren;
//die("Cas pas prévue $siren, $sirenFille, ".$lien['Pmin'].', '.$lien['MajMin'].EOL);
}
}
/*
foreach ($tabP as $i=>$lien) {
$sirenFille=$lien['Siren'];
// $tabIdentiteP=$iInsee->getIdentiteLight($sirenFille);
//for($j=1;$j<=$niveauCour; $j++) echo "|\t";
// echo "+ $sirenFille (". $lien['PminNum']."%) : ".$tabIdentiteP['Nom'];
/*
echo "$sirenFille>100".EOL;
echo $lien['PminNum'].">=".$pctMin.EOL;
echo $lien['MajMin']."==+".EOL;
echo "$niveauCour<=$nbNiveau";
*
if($sirenFille>100 && ($lien['PminNum']>=$pctMin || $lien['MajMin']=='+') && $niveauCour<=$nbNiveaux) {
$tabSiren[]=$siren;
$niveauCour++;
if (!in_array($sirenFille,$tabSiren)) {
//echo "[A]".EOL;//, $sirenIni, $sirenMere, $appel, $niveauCour/$nbNiveaux, $siren détient à ".$lien['Pmin']." (".$lien['MajMin'].") : ".$tabIdentiteP['Nom']." ($sirenFille)".EOL;
$tabSiren=$this->getAllParticipations($sirenFille, $pctMin, $nbNiveaux, $niveauCour, $tabSiren, $sirenIni, $sirenMere, $appel);
}
}
}*/
//echo 'Fin Normale'.EOL;
//echo "[F], $sirenIni, $sirenMere, $appel, $niveauCour/$nbNiveaux, $siren FIN".EOL;
return array_unique($tabSiren);
}
@ -751,6 +710,111 @@ class MLiens {
);
return rechercheAct($formR, $deb, $nbRep, $maxRep);
}
/** Retourne les informations relatives au groupe du siren donné
** @param string $siren Siren de l'entreprise
**/
public function getInfoGroupe($siren) {
if ($siren<1000) return false;
$tmp=$this->iDb->select('etablissements_act',
'raisonSociale, enseigne, sigle, identite_pre, adr_num, adr_btq, adr_typeVoie, adr_libVoie, adr_comp, adr_cp, adr_ville, adr_dep, adr_com, tel, fax, siren, sirenGrp',
"siren=(SELECT sirenGrp FROM etablissements_act WHERE siren=$siren AND siege=1) LIMIT 0,1", false, MYSQL_ASSOC);
$tabEnt=$tmp[0];
$sirenGrp=$tabEnt['siren'];
//print_r($tabEnt);
if ($sirenGrp<1000) return false;
/** Table des Nafs5 => Secteurs **/
$tmp=$this->iDb->select('tabNaf5', 'codNaf2, codNaf1', '1 GROUP BY codNAf2', false, MYSQL_ASSOC);
$tabNAf2=array();
foreach ($tmp as $tmp2) {
$tabNAf2[$tmp2['codNaf2']]=$tmp2['codNaf1'];
}
$tabNaf2Lib=array( 'A'=>'Agriculture, sylviculture et pêche',
'B'=>'Industries extractives',
'C'=>'Industrie manufacturière',
'D'=>'Production et distribution d\'électricité, de gaz, de vapeur et d\'air conditionné',
'E'=>'Production et distribution d\'eau ; assainissement, gestion des déchets et dépollution',
'F'=>'Construction',
'G'=>'Commerce ; réparation d\'automobiles et de motocycles',
'H'=>'Transports et entreposage',
'I'=>'Hébergement et restauration',
'J'=>'Information et communication',
'K'=>'Activités financières et d\'assurance',
'L'=>'Activités immobilières',
'M'=>'Activités spécialisées, scientifiques et techniques',
'N'=>'Activités de services administratifs et de soutien',
'O'=>'Administration publique',
'P'=>'Enseignement',
'Q'=>'Santé humaine et action sociale',
'R'=>'Arts, spectacles et activités récréatives',
'S'=>'Autres activités de services',
'T'=>'Activités des ménages en tant qu\'employeurs ; activités indifférenciées des ménages en tant que producteurs de biens et services pour usage propre',
'U'=>'Activités extra-territoriales',
);
$tabRet=array( 'grpNom' => $tabEnt['raisonSociale'],
'grpEnseigne' => $tabEnt['enseigne'],
'grpSigle' => $tabEnt['sigle'],
//'grpEnseigne' => $tabEnt['identite_pre'],
'grpAdrNum' => $tabEnt['adr_num'],
'grpAdrBtq' => $tabEnt['adr_btq'],
'grpAdrTypeVoie'=> $tabEnt['adr_typeVoie'],
'grpadrLibVoie' => $tabEnt['adr_libVoie'],
'grpAdrComp' => $tabEnt['adr_comp'],
'grpAdrCP' => $tabEnt['adr_cp'],
'grpAdrVille' => $tabEnt['adr_ville'],
'grpAdrDep' => $tabEnt['adr_dep'],
'grpAdrCom' => $tabEnt['adr_com'],
'grpTel' => $tabEnt['tel'],
'grpFax' => $tabEnt['fax'],
'grpSiren' => $tabEnt['siren'],
//'grpSirenGrp' => $tabEnt['sirenGrp'],
);
$tmp=$this->iDb->select('etablissements_act',
'eff_entrep, dateCrea_ent AS dateCrea, dateImmat*1 AS dateImmat, bilFK, bilFL, ape_entrep, avisCs',
"sirenGrp=$sirenGrp AND siege=1", false, MYSQL_ASSOC);
$grpNbEnt=$grpEffectif=$grpCAExp=$grpCA=0;
$grpDateCrea=$grpDateImmat=date('Ymd');
foreach ($tmp as $tabEnt) {
$grpNbEnt++;
$grpEffectif+=$tabEnt['eff_entrep'];
if ($grpDateCrea>$tabEnt['dateCrea'] && $tabEnt['dateCrea']>=19000101) $grpDateCrea=$tabEnt['dateCrea'];
if ($grpDateImmat>$tabEnt['dateImmat'] && $tabEnt['dateImmat']>=19000101) $grpDateImmat=$tabEnt['dateImmat'];
$grpCAExp+=$tabEnt['bilFK'];
$grpCA+=$tabEnt['bilFL'];
/* @$tabApe5[''.$tabEnt['ape_entrep']]['nb']++;
@$tabApe5[''.$tabEnt['ape_entrep']]['ca']+=$tabEnt['bilFL'];
@$tabApe5[''.$tabEnt['ape_entrep']]['eff']+=$tabEnt['eff_entrep'];*/
@$tabSecteur[$tabNAf2[''.substr($tabEnt['ape_entrep'],0,2)]]['nb']++;
@$tabSecteur[$tabNAf2[''.substr($tabEnt['ape_entrep'],0,2)]]['ca']+=$tabEnt['bilFL'];
@$tabSecteur[$tabNAf2[''.substr($tabEnt['ape_entrep'],0,2)]]['eff']+=$tabEnt['eff_entrep'];
@$tabAvis[$tabEnt['avisCs']]++;
}
foreach ($tabSecteur as $secteur=>$tmp) {
$tabSecteur2[$secteur]['activite']=$tabNaf2Lib[$secteur];
$tabSecteur2[$secteur]['nb']=$tmp['nb'];
$tabSecteur2[$secteur]['nb_tx']=round($tmp['nb']*100/$grpNbEnt,2);
$tabSecteur2[$secteur]['ca']=$tmp['ca'];
$tabSecteur2[$secteur]['ca_tx']=round($tmp['ca']*100/$grpCA,2);
$tabSecteur2[$secteur]['eff']=$tmp['eff'];
$tabSecteur2[$secteur]['eff_tx']=round($tmp['eff']*100/$grpEffectif,2);
}
$tabRet['grpNbEntrep']=$grpNbEnt;
$tabRet['grpEffectif']=$grpEffectif;
if ($grpDateCrea<$grpDateImmat)
$tabRet['grpAnneCreation']=substr($grpDateCrea,0,4);
else
$tabRet['grpAnneCreation']=substr($grpDateImmat,0,4);
$tabRet['grpCAExport']=$grpCAExp;
$tabRet['grpCA']=$grpCA;
if ($grpCA>=500000000) $tabRet['grpGrandGroupeFr']=1; else $tabRet['grpGrandGroupeFr']=0;
// $tabRet['ape5']=$tabApe5;
$tabRet['secteur']=$tabSecteur2;
//$tabRet['avisCs']=$tabAvis;
return $tabRet;
}
}
?>
?>

View File

@ -10,6 +10,7 @@ class MQualibat {
private $accesDist=true;
private $iDb;
private $iBodacc;
private $iInsee;
public $enCache=false;
public $force=false;
@ -19,6 +20,7 @@ class MQualibat {
$this->accesDist=$accesDist;
$this->iDb=new WDb('sdv1');
$this->iBodacc=new MBodacc();
$this->$iInsee=new MInsee();
}
private function getCodeFctDirigeant($strLibDirigeant, $siren=0) {
@ -39,12 +41,11 @@ class MQualibat {
elseif (preg_match("/resp.{1,16}Expl/i")) return 37;
elseif (preg_match("/di.{1,16}Expl/i")) return 7;
elseif (preg_match("/Chef.{1,6}Ent/i")) {
$iInsee=new MInsee();
$tabTmp=$iInsee->getIdentiteLight($siren);
$tabTmp=$this->iInsee->getIdentiteLight($siren);
if ($tabTmp['FJ']>=1000 && $tabTmp['FJ']<2000) return 1050;
else die($tabTmp);
}
else return false;
else return false;
}
/*
@ -96,7 +97,7 @@ class MQualibat {
"1","ReprÉsentant SociÉtÉ PrÉsidente"
"1","Vice-président"
Gérer en fonction du code CJ
Gérer en fonction du code CJ
"128","Chef D'entreprise"
"2","Chef Ent."
"3","Chef Entr."
@ -129,7 +130,7 @@ Gérer en fonction du code CJ
return array_diff($tabQualibatCalc, $tabQualibatBase);
}
public function getInfosQualibat($siren, $idQualibat=0) {
if ($siren*1>1000)
$strWhere="siren=$siren";
@ -268,7 +269,7 @@ Gérer en fonction du code CJ
$dirs=trim($matches[1]);
/* <tr>
<td>
Monsieur EPP Olivier
Monsieur EPP Olivier
</td>
<td>
Gérant
@ -290,7 +291,7 @@ Gérer en fonction du code CJ
'nom'=>strtoupper(trim(substr($strNom,$pDeb,65))),
'prenom'=>ucwords(strtolower(trim(substr($strNom,$pDeb+66)))),
'fonction'=>$libFonction,
'fonctionCode'=>$this->getCodeFctDirigeant($libFonction, $siren),
'fonctionCode'=>$this->getCodeFctDirigeant($libFonction, $siren),
);
}
//print_r($tabRet['dirigeants']);
@ -299,7 +300,7 @@ Gérer en fonction du code CJ
/** Insertion de l'entreprise
**/
$tabInsert=array_merge($tabRet,
$tabInsert=array_merge($tabRet,
array( 'idQualibatAttribue'=>1,
'dateInsert'=>date('YmdHis'),
'dateDeb'=>@$tabDateAttrib[0],
@ -339,4 +340,4 @@ Gérer en fonction du code CJ
}
}
?>
?>

View File

@ -2,25 +2,6 @@
require_once 'Metier/partenaires/classMPrivileges.php';
require_once 'Metier/partenaires/classMMarques.php';
/**
* CA Moyen par salarié pour un secteur donné
* @param string $naf
* @param int $effectif
*/
function getCAnafEffectif($naf, $effectif=0)
{
$iDb = new WDB("jo");
$tabTmp = $iDb->select('ratios_secteurs', 'id, naf5, annee, SUM(montant), SUM(nombre), SUM(montant)/SUM(nombre) AS moyenne', "naf5='$naf' AND id=267 AND ANNEE>(SELECT MAX(annee) FROM ratios_secteurs WHERE naf5='$naf' AND id=267)-2 GROUP BY id, naf5", true, MYSQL_ASSOC);
if (count($tabTmp)>0) {
$caSecteur = round($tabTmp[0]['moyenne']*1000);
// Encours moyen secteur * nb salariés
if ($effectif>0) return $caSecteur*$effectif;
else return $caSecteur;
} else {
return 0;
}
}
/**
* Enter description here ...
* @param unknown_type $siren
@ -2175,8 +2156,8 @@ AltmanCote=$scoreAltmanB".EOL.print_r($tabInfosNotation,true);
if ($EFFECTIF>0) $CAESTIME=$caSecteur*$EFFECTIF;
else $CAESTIME=$caSecteur;
*/
$CAESTIME=getCAnafEffectif($naf, $EFFECTIF);
$CAESTIME=$iInsee->getCAnafEffectif($naf, $EFFECTIF);
if ($CABILAN>0) $CABIOUES=$CABILAN;
else $CABIOUES=$CAESTIME;

View File

@ -5,5 +5,9 @@ defaut = false;
[0.3]
actif = true;
defaut = false;
[0.4]
actif = true;
defaut = true;

View File

@ -0,0 +1,2 @@
Chiffre d'affaire estimé
nomUsage pour getDirigeants

View File

@ -0,0 +1,66 @@
Type[] = "ErrorType"
Type[] = "StatusReturn"
Type[] = "SearchReturn"
Type[] = "SearchEntrepriseReturn"
Type[] = "SearchDirReturn"
Type[] = "DirigeantsReturn"
Type[] = "AnnoncesReturn"
Type[] = "InseeReturn"
Type[] = "TvaReturn"
Type[] = "LiensReturn"
Type[] = "InfosRegReturn"
Type[] = "ListeBilansReturn"
Type[] = "SetSurveillanceReturn"
Type[] = "SurveillancesReturn"
Type[] = "ListeEtablissementsReturn"
Type[] = "RatiosReturn"
Type[] = "RechercheAnnonceReturn"
Type[] = "Identite"
Type[] = "GeoInfos"
Type[] = "IdentiteBilan"
Type[] = "IdentiteBourse"
Type[] = "AutreSiren"
Type[] = "EntrepriseCriteres"
Type[] = "DirigeantCriteres"
Type[] = "EntrepriseItem"
Type[] = "EntrepriseDirItem"
Type[] = "Etablissement"
Type[] = "Dirigeant"
Type[] = "Annonce"
Type[] = "AnnonceEvenement"
Type[] = "Actionnaire"
Type[] = "Participation"
Type[] = "InseeEven"
Type[] = "InfosReg"
Type[] = "InfosBourse"
Type[] = "ListeBilans"
Type[] = "SurveillancesFiltre"
Type[] = "Surveillance"
Type[] = "Bilan"
Type[] = "BilanPoste"
Type[] = "RechercheAnnonceCriteres"
Type[] = "AnnonceItem"
Type[] = "RatiosBilansInfos"
Type[] = "RatiosInfos"
Type[] = "RatiosSecteur"
Type[] = "Ratios"
Type[] = "Rapport"
Type[] = "Indiscore"
Type[] = "Scores"
Type[] = "IndiscoreVariables"
Type[] = "CA_Y"
Type[] = "IndiscoreImportExport"
Type[] = "IndiscoreInfosNotations"
Type[] = "IndiscorePaiement"
Type[] = "IndiscorePaiementDetail"
Type[] = "IndiscoreNotesStructure"
Type[] = "IndiscoreBilans"
Type[] = "AdresseDomEnt"
Type[] = "InfosIris"
Type[] = "BanquesReturn"
Type[] = "Banque"
Type[] = "ListeCompetencesReturn"
Type[] = "Competence"
Type[] = "IdentiteProcol"
Type[] = "Organe"
Type[] = "AutreSiret"

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff