Intégration des modifications du WebService v1.0

This commit is contained in:
Michael RICOIS 2012-12-28 17:00:29 +00:00
parent 543a04387d
commit e8d1f01811
26 changed files with 19351 additions and 6676 deletions

File diff suppressed because it is too large Load Diff

View File

@ -1,53 +1,24 @@
<?php
ini_set('soap.wsdl_cache_enabled', 0);
class AmaSoapClient extends SoapClient {
function __doRequest($request, $location, $action, $version) {
/* $request = strtr($request, array('<ns1:'=>'<ama:',
'</ns1:'=>'</ama:',
// '<param0 xsi:type="xsd:string">'=>'',
'xmlns:ns1="http://www.amabis.com/ama.xsd"'=>'xmlns:ama="http://www.amabis.com/ama.xsd"',
// '</param0>'=>'',
// '&lt;'=>'<',
// '&gt;'=>'>',
)
);*/
return parent::__doRequest($request, $location, $action, $version);
}
}
ini_set('default_socket_timeout', 30);
class MAmabis {
private $client;
function __construct() {
/* $this->client = new AmaSoapClient(null, //'http://www.amabis.com/ama.wsdl',//null, //
array( 'location' => AMABIS_WS_URL,//'http://sw4.amabis.com:5101',
'uri' => AMABIS_WS_URI,//'http://sw4.amabis.com:5101',
'soap_version' => SOAP_1_1,
'trace' => 1,
'style' => SOAP_RPC,
'use' => SOAP_ENCODED,
'connection_timeout'=> 2,
)
);
*/
$this->client = new AmaSoapClient(null,
array( //'location' => 'http://sw4.amabis.com:5100',
'location' => 'http://sw2.amabis.com:5100/',
'uri' => 'http://www.amabis.com/ns.xsd',
'connection_timeout' => 2,
'default_socket_timeout'=> 2,
'soap_version' => SOAP_1_1,
'trace' => 1,
'style' => SOAP_RPC,
'use' => SOAP_ENCODED,
)
);
function __construct()
{
$this->client = new SoapClient(null, array(
'location' => 'http://sw2.amabis.com:5100/',
'uri' => 'http://www.amabis.com/ns.xsd',
'connection_timeout' => 2,
'soap_version' => SOAP_1_1,
'trace' => 1,
'style' => SOAP_RPC,
'use' => SOAP_ENCODED,
));
}
function getZonage($adrNum, $adrIndRep, $adrTypeVoie, $adrLibVoie, $cp, $ville='', $codeRivoli='', $rnvp=false, $raisonSociale='TEST', $debug=false) {
$tabRep=array();
if (!$rnvp) {
@ -75,7 +46,7 @@ class MAmabis {
break;
}
}
$iDb=new WDB();
$adresse=addslashes(trim(preg_replace('/ +/',' ', "$adrNum $adrIndRep $adrTypeVoie $adrLibVoie")));
$ville=addslashes($ville);
@ -105,11 +76,11 @@ class MAmabis {
}
//return $tabRep;
} else {
try {
if (trim($raisonSociale)=='') $raisonSociale='TEST'; // Le RNVP ne fonctionne pas sans la Raison Sociale qui est la 1ère ligne d'adresse
$rep=$this->client->zonage( new SoapParam(strtr("$raisonSociale:$adresse:$cp:$ville",
'¿°ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõöøùúûýýþÿ??',
'¿°ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõöøùúûýýþÿ??',
' aaaaaaaceeeeiiiidnoooooouuuuybsaaaaaaaceeeeiiiidnoooooouuuyybyRr'),'adresse'),
new SoapParam(':','separateur'),
new SoapParam('type=M','options')
@ -117,13 +88,13 @@ class MAmabis {
/*$rep=$this->client->zonage( "<adresse></adresse>".
"<separateur>:</separateur>".
"<options>type=M</options>");*/
/** Découpage des ZFU, CUCS etcs...
**/
$fp=fopen(LOG_PATH.'/amabis.log', 'a');
fwrite($fp, date('d-m-Y H:i:s').' - '.implode("\n", $rep)."\n============================================================================\n");
fclose($fp);
$tabZones=explode(',',$rep['zonage']); // ZUS=OUI,NZUS=1127020,ZFU=OUI,NZFU=11270ZF,CUCS=OUI,NCUCS=1127020
foreach ($tabZones as $zone) {
$tabTmp=explode('=',$zone);
@ -150,7 +121,7 @@ class MAmabis {
'rivoli'=>$codeRivoli,
);
$iDb->insert('zonage', $tabInsert);
/** Autres Informations de la RNVP
**/
if ($rnvp || $debug) {
@ -158,7 +129,7 @@ class MAmabis {
$tabZones=explode(',',$rep['objdesc']);
foreach ($tabZones as $zone) {
$tabTmp=explode('=',$zone);
if (trim($tabTmp[0])<>'')
if (trim($tabTmp[0])<>'')
$tabRepTmp[$tabTmp[0]]=$tabTmp[1];
}
if (!$debug) {
@ -193,7 +164,7 @@ class MAmabis {
case 'ZAFR': $tabRep['AFR']='OUI'; $tabRep['NAFR']=$codeInsee; break;
default: break;
}
return $tabRep;
}
@ -208,16 +179,16 @@ class MAmabis {
$query="<rs>$nom</rs><cpville>$cp $ville</cpville><scoremini>90</scoremini><distinction>30</distinction>";
else
$query="<nom>$nom</nom><prenom>$prenom</prenom><cpville>$cp $ville</cpville><scoremini>90</scoremini><distinction>30</distinction>";
$rep=$this->client->rechtel($query);
$fp=fopen(LOG_PATH.'/amabis.log', 'a');
fwrite($fp, date('d-m-Y H:i:s')." - $query - ".implode("\n", $rep)."\n============================================================================\n");
fwrite($fp, "Requête : ".$this->client->__getLastRequest()."\n");
fwrite($fp, "Réponse : ".$this->client->__getLastResponse()."\n");
fclose($fp);
}
}
?>

View File

@ -138,6 +138,10 @@ class MArtisanat {
$this->libErreur='Erreur Siren $sirenLu<>$siren !';
return false;
}
} elseif (preg_match('/<span class="rouge">aucune entreprise ne correspond &agrave; vos crit&egrave;res de recherche<\/span>/Uis', $this->body, $matches)) {
$this->libErreur='Erreur Artisan absent de la base Artisanat !';
// die($this->body);
return false;
} else {
$this->libErreur='Erreur Siren absent dans la page !';
return false;

View File

@ -98,7 +98,7 @@ $tabCtrl=array(
'AA+BJ+CJ+CL+CM+CN=CO'=>'Total Actif Brut',
'BK+CK=1A'=>'Total Actif (Amor.)',
'AA2+BK1+CK1+CL2+CM2+CN2=1A1'=>'Total Actif Net',
// PASSIF
// PASSIF
'DA+DB+DC+DD+DE+DF+DG+DH+DI+DJ+DK=DL'=>'Passif : s/total I (Capitaux Propres)',
'DM+DN=DO'=>'Passif : s/total II (Autres fonds propres)',
'DP+DQ=DR'=>'Passif : s/total III (Provisions)',
@ -134,7 +134,17 @@ $tabCtrl=array(
),
);
$tabLibCodeCtrl=array(
'_0'=>'-',
'_1'=>'Corrigé',
'_3'=>'Capital',
'_5'=>'Calculs', // Anciennement 2 mais maintenant >=5 correspond à une erreur grave
'_7'=>'Effectif',
'_9'=>'Unité',
);
$tabLibCodeSaisie=array(
// Code Saisie Bilans par Infogreffe
'_00'=>'Bilan saisi sans anomalie',
'_01'=>'Bilan saisi avec des incohérences comptables à la source du document (issues du remettant)',
'_02'=>'Bilan avec Actif, Passif ou Compte de Résultat nul',
@ -157,6 +167,8 @@ $tabLibCodeSaisie=array(
'_13'=>'Bilan de Société d\'assurance',
'_14'=>'Bilan de Société immobilière',
'_15'=>'Bilan de Société étrangère',
// Codes saisie de Bilans spécifique às S&D
'_70'=>'Document relatif à une autre société',
);
class MBilans {
@ -166,6 +178,112 @@ class MBilans {
public $dernierExerciceDeposeLe=0;
// public $rncs;
public $igreffe;
private $tabBS2BN=array('AH'=>'010',
'AI'=>'012',
'AI1'=>'013',
'AJ'=>'014',
'AK'=>'016',
'AK1'=>'017',
'AT'=>'028',
'AU'=>'030',
'AU1'=>'031',
'BH'=>'040',
'BI'=>'042',
'BI1'=>'043',
'BJ'=>'044',
'BK'=>'048',
'BK1'=>'049',
'BL'=>'050',
'BM'=>'052',
'BM1'=>'053',
'BT'=>'060',
'BU'=>'062',
'BU1'=>'063',
'BV'=>'064',
'BW'=>'066',
'BW1'=>'067',
'BX'=>'068',
'BY'=>'070',
'BY1'=>'071',
'BZ'=>'072',
'CA'=>'074',
'CA1'=>'075',
'CD'=>'080',
'CE'=>'082',
'CE1'=>'083',
'CF'=>'084',
'CG'=>'086',
'CG1'=>'087',
'CH'=>'092',
'CI'=>'094',
'CI1'=>'095',
'CJ'=>'096',
'CK'=>'098',
'CK1'=>'099',
'CO'=>'110',
'1A'=>'112',
'1A1'=>'113',
'DA'=>'120',
'DC'=>'124',
'DD'=>'126',
'DF'=>'130',
'DG'=>'132',
'DH'=>'134',
'DI'=>'136',
'DK'=>'140',
'DL'=>'142',
'DR'=>'154',
'DP'=>'154',
'DU'=>'156',
'DV'=>'169',
'DW'=>'164',
'DX'=>'166',
'EA'=>'172-169',
'EB'=>'174',
'EC'=>'176',
'EE'=>'180',
'EH'=>'156-195',
'FA'=>'210-209',
'FB'=>'209',
'FC'=>'210',
'FD'=>'214-215',
'FE'=>'215',
'FF'=>'214',
'FH'=>'217',
'FI'=>'218',
'FK'=>'209+215+217',
'FL'=>'210+214+218',
'FM'=>'222',
'FN'=>'224',
'FO'=>'226',
'FQ'=>'230',
'FR'=>'232',
'FS'=>'234',
'FT'=>'236',
'FU'=>'238',
'FV'=>'240',
'FW'=>'242',
'FX'=>'244',
'FY'=>'250',
'FZ'=>'252',
'GA'=>'254',
'GE'=>'262',
'GF'=>'264',
'GG'=>'270',
'GP'=>'280',
'GU'=>'294',
'GW'=>'270+280+294',
'HD'=>'290',
'HH'=>'300',
'HI'=>'290-300',
'HK'=>'306',
'HL'=>'232+280+290',
'HM'=>'264+294+300+306',
'HN'=>'310',
'YY'=>'374',
'YZ'=>'378',
'YP'=>'376',
);
function __construct($siren) {
$this->siren=$siren;
@ -175,7 +293,11 @@ class MBilans {
function __destruct() {}
/** Liste les bilans disponibles */
/** Liste les bilans disponibles au format numérique (et non PDF image) pour une entreprise
**
** @param $accesPartenaire bool Accès autorisé aux partenaires distant si le bilan est absenr
** @param $nbMaxBilans int Nombre de bilans maximums retournés
**/
function listeBilans($accesPartenaire=false, $nbMaxBilans=0) {
$iDb2=new WDB();
if ($nbMaxBilans>0) $limit="LIMIT 0, $nbMaxBilans";
@ -202,19 +324,19 @@ class MBilans {
if ($ENV=='PRD') { // A supprimer le jour ou on vire l'ancien serveur car curl plantait sur Infogreffe !!!
$tabRefXml=$tabRefPdf=array();
// Tableau des références de bilans XML Infogreffe
// Tableau des références de bilans XML Infogreffe
foreach ($tabRet as $idxTmp=>$bilanTmp) {
if ((substr($idxTmp,-4)*1)>(date(Y)-4))
$tabRefXml[]=$bilanTmp['ref'];
}
$tabImg=$this->igreffe->getBilansImages($this->siren);
// Tableau des références de bilans PDF Infogreffe
// Tableau des références de bilans PDF Infogreffe
foreach ($tabImg as $idxTmp=>$bilanTmp) {
if ($bilanTmp['annee']>(date(Y)-4))
$tabRefPdf[]=$bilanTmp['ref'];
}
$tabDiff=array_diff($tabRefPdf, $tabRefXml);
if (count($tabDiff)>0) {
$strMillesimes='';
@ -229,7 +351,7 @@ class MBilans {
);
}
}
$tabTri=array();
foreach ($tabRet as $millesime=>$bil) {
$typeBilan=substr($millesime,0,1);
@ -293,6 +415,13 @@ class MBilans {
return $tabRet3;
}
/** Retourne un bilan disponible au format numérique pour une entreprise
**
** @param $millesime date Date de cloture du bilan au format d/m/Y
** @param $typeBilan enum Type de bilan (N=Réel Normal, S=Réel Simplifié, C=Consolidé, A=Assurance, B=Banque)
** @param $refPart string Référence du bilan chez le partenaire (si $accesPartenaire=true)
** @param $accesPartenaire bool Accès autorisé aux partenaires distant si le bilan est absenr
**/
function getBilan($millesime='', $typeBilan='N', $refPart=0, $accesPartenaire=false) {
$millesimeDB=WDate::dateT('d/m/Y','Ymd',$millesime);
$iDb2=new WDB();
@ -301,7 +430,7 @@ class MBilans {
$strSansBilansWeb=' AND partenaire<>7 ';
else
$strSansBilansWeb='';
$ret=$iDb2->select('bilans', 'dateProvPartenaire, dateExercice, dateExercicePre, dureeExercice, dureeExercicePre, monnaie, typeBilan, monnaieOrigine, unite, postes, partenaire', "siren='$this->siren' AND typeBilan='$typeBilan' AND dateExercice='$millesimeDB' $strSansBilansWeb", true, MYSQL_ASSOC);
$ret=$iDb2->select('bilans', 'dateProvPartenaire, dateExercice, dateExercicePre, dureeExercice, dureeExercicePre, monnaie, typeBilan, monnaieOrigine, unite, postes, partenaire, id, confidentiel, dateInsert', "siren='$this->siren' AND typeBilan='$typeBilan' AND dateExercice='$millesimeDB' $strSansBilansWeb", true, MYSQL_ASSOC);
$bilan=$ret[0];
if (count($ret)==0 && $accesPartenaire) {
if ($refPart=='' || $refPart==0) {
@ -344,7 +473,7 @@ class MBilans {
);
if (!$iDb2->insert('bilans', $tabInsert, true))
$iDb2->update('bilans', $tabInsert, "siren='$this->siren' AND typeBilan='$typeBilan' AND dateExercice='$millesimeDB'");
$ret=$iDb2->select('bilans', 'dateProvPartenaire, dateExercice, dateExercicePre, dureeExercice, dureeExercicePre, monnaie, typeBilan, monnaieOrigine, unite, postes', "siren='$this->siren' AND typeBilan='$typeBilan' AND dateExercice='$millesimeDB'", true);
$ret=$iDb2->select('bilans', 'dateProvPartenaire, dateExercice, dateExercicePre, dureeExercice, dureeExercicePre, monnaie, typeBilan, monnaieOrigine, unite, postes, partenaire, id, confidentiel, dateInsert', "siren='$this->siren' AND typeBilan='$typeBilan' AND dateExercice='$millesimeDB'", true);
$bilan=$ret[0];
}
}
@ -360,6 +489,9 @@ class MBilans {
$tabBilan['MONNAIE_ORI'] = $bilan['monnaieOrigine'];
$tabBilan['MONNAIE_LIV_UNITE'] = $bilan['unite'];
$tabBilan['SOURCE'] = $bilan['partenaire'];
$tabBilan['ID_BILAN_SD'] = $bilan['id'];
$tabBilan['DATE_BILAN_SD'] = $bilan['dateInsert'];
$tabBilan['TOP_CONFIDENTIEL'] = $bilan['confidentiel'];
// Devise et Unité
if ($bilan['monnaie']=='EUR') $monnaie='&euro;'; else $monnaie=$bilan['monnaie'];
@ -801,118 +933,14 @@ class MBilans {
return $tabBilan;
}
/** Conversion des bilans Simplifiés en Réels Normal
** @param $bilanRS array Bilan au format réel simplifé (2033)
** @return array Bilan au format réel Normal (2050)
*/
function bilanSimplifie2Normal($bilanRS) {
$tabBS2BN=array('AH'=>'010',
'AI'=>'012',
'AI1'=>'013',
'AJ'=>'014',
'AK'=>'016',
'AK1'=>'017',
'AT'=>'028',
'AU'=>'030',
'AU1'=>'031',
'BH'=>'040',
'BI'=>'042',
'BI1'=>'043',
'BJ'=>'044',
'BK'=>'048',
'BK1'=>'049',
'BL'=>'050',
'BM'=>'052',
'BM1'=>'053',
'BT'=>'060',
'BU'=>'062',
'BU1'=>'063',
'BV'=>'064',
'BW'=>'066',
'BW1'=>'067',
'BX'=>'068',
'BY'=>'070',
'BY1'=>'071',
'BZ'=>'072',
'CA'=>'074',
'CA1'=>'075',
'CD'=>'080',
'CE'=>'082',
'CE1'=>'083',
'CF'=>'084',
'CG'=>'086',
'CG1'=>'087',
'CH'=>'092',
'CI'=>'094',
'CI1'=>'095',
'CJ'=>'096',
'CK'=>'098',
'CK1'=>'099',
'CO'=>'110',
'1A'=>'112',
'1A1'=>'113',
'DA'=>'120',
'DC'=>'124',
'DD'=>'126',
'DF'=>'130',
'DG'=>'132',
'DH'=>'134',
'DI'=>'136',
'DK'=>'140',
'DL'=>'142',
'DR'=>'154',
'DP'=>'154',
'DU'=>'156',
'DV'=>'169',
'DW'=>'164',
'DX'=>'166',
'EA'=>'172-169',
'EB'=>'174',
'EC'=>'176',
'EE'=>'180',
'EH'=>'156-195',
'FA'=>'210-209',
'FB'=>'209',
'FC'=>'210',
'FD'=>'214-215',
'FE'=>'215',
'FF'=>'214',
'FH'=>'217',
'FI'=>'218',
'FK'=>'209+215+217',
'FL'=>'210+214+218',
'FM'=>'222',
'FN'=>'224',
'FO'=>'226',
'FQ'=>'230',
'FR'=>'232',
'FS'=>'234',
'FT'=>'236',
'FU'=>'238',
'FV'=>'240',
'FW'=>'242',
'FX'=>'244',
'FY'=>'250',
'FZ'=>'252',
'GA'=>'254',
'GE'=>'262',
'GF'=>'264',
'GG'=>'270',
'GP'=>'280',
'GU'=>'294',
'GW'=>'270+280+294',
'HD'=>'290',
'HH'=>'300',
'HI'=>'290-300',
'HK'=>'306',
'HL'=>'232+280+290',
'HM'=>'264+294+300+306',
'HN'=>'310',
'YY'=>'374',
'YZ'=>'378',
'YP'=>'376',
);
$bilanRN=array();
foreach ($tabBS2BN as $posteRN => $formule) {
foreach ($this->tabBS2BN as $posteRN => $formule) {
if (preg_match('/\+|\-/', $formule)) {
$tabTmp=preg_split('/\+|\-/', $formule, -1, PREG_SPLIT_OFFSET_CAPTURE);
//$bilanRN[$posteRN]=0;
@ -962,4 +990,4 @@ class MBilans {
return $bilanRN;
}
}
?>
?>

View File

@ -1,15 +1,14 @@
<?
<?php
require_once 'framework/common/curl.php';
class MBourse {
class MBourse
{
var $siren=false;
public function __construct($siren=0) {
$this->siren=$siren;
$this->siren=$siren;
}
public function getLibSource($source) {
switch ($source) {
case 'B': return 'Business Wire'; break;
@ -20,17 +19,44 @@ class MBourse {
default: return 'N/C'; break;
}
}
/** Vérifie la validité de la structure d'un code ISIN
**
** @param string $isin
** @return bool
**/
function isIsin($isin) {
if (strlen(trim($isin))) {
$cle = substr($isin, -1);
$isinLeft = substr($isin, 0, strlen($isin)-1);
$letter2number = array('A'=>10, 'B'=>11, 'C'=>12, 'D'=>13, 'E'=>14, 'F'=>15, 'G'=>16, 'H'=>17, 'I'=>18, 'J'=>19, 'K'=>20, 'L'=>21, 'M'=>22, 'N'=>23, 'O'=>24, 'P'=>25, 'Q'=>26, 'R'=>27, 'S'=>28, 'T'=>29, 'U'=>30, 'V'=>31, 'W'=>32, 'X'=>33, 'Y'=>34, 'Z'=>35);
$isinConvertion = strtr($isinLeft, $letter2number);
$sum = '';
$sumFinal = 0;
for($i=0; $i<strlen($isinConvertion); ++$i) $sum .= (($i % 2) ? 1 : 2)*$isinConvertion[$i];
for($i=0; $i<strlen($sum); ++$i) $sumFinal += $sum[$i];
if ($sumFinal % 10){
$cleVerif = ((int)($sumFinal/10) + 1)*10-$sumFinal;
} else {
$cleVerif = 0;
}
if ($cle == $cleVerif) {
return true;
} else
return false;
} else return false;
}
/** Obtenir le code ISIN à partir d'un siren
**
** @param integer $siren
** @param integer $siren
** @return string
**/
function getCodeIsin($siren=false) {
$iDb=new WDB();
if (!$siren)
$siren=$this->siren;
$tabTmp=$iDb->select('infos_entrep', 'isin', "siren=$siren AND isin<>''", false, MYSQL_ASSOC);
return trim(@$tabTmp[0]['isin']);
}
@ -45,7 +71,7 @@ class MBourse {
$tabTmp=$iDb->select('infos_entrep', 'siren', "isin='$isin' AND siren<>0", false, MYSQL_ASSOC);
return trim($tabTmp[0]['siren']);
}
/** A partir d'un siren, récupère les informations règlementés
**
** @param integer $siren
@ -53,7 +79,7 @@ class MBourse {
** @return unknown
**/
function getInfosReg($siren=false, $id=false) {
if (!$siren)
$siren=$this->siren;
@ -64,7 +90,7 @@ class MBourse {
$iDb=new WDB('presse');
if ($id) $sqlID=" AND id=$id ";
else $sqlID='';
$bodacc=$iDb->select( 'articles',
'id, companyName, companyIsin, companySiren, companyWebSite, pressReleaseDate, pressReleaseTitle, '.
'pressReleaseText, pressReleaseHtml, pressReleaseAttachments, pressReleaseUrl, source, dateInsert',
@ -83,7 +109,7 @@ class MBourse {
'url'=>$ann['pressReleaseUrl'],
'dateInsertionSD'=>$ann['dateInsert'],
);
else
else
$tabRet[$k]=array( 'id'=>$ann['id'],
'source'=>$this->getLibSource($ann['source']),
'DateParution'=>$ann['pressReleaseDate'],
@ -98,7 +124,7 @@ class MBourse {
}
return $tabRet;
}
/** A partir d'un siren, récupère les informations boursières
**
** @param integer $siren
@ -116,15 +142,25 @@ class MBourse {
$tabRet=array();
if ($isin<>'') {
$datePre=date('Y-m').'-01';
$tabRes=$iDb->select( 'bourse_isin b, bourse_cours c',
'siren, raisonSociale, adresse, effectif, code_sicovam, code_mnemo, code_bloomberg, code_datastream, code_isin, logo, code_ric, '.
'dateIntroduction, dateDerAG, dateRadiation, autre_isin, eligibleSRD, eligiblePEA, nombreTitres, tel1, tel2, fax1, fax2, web, mail, '.
'marche, placeCotation, description, secteur, activite, activiteDet, dirigeants, actionnaires, chiffresTrim, '.
'c.autre, c.`date`, c.`heure`, c.`open` , c.`high` , c.`low` , c.`close` , c.`volume`',
"code_isin='$isin' /*OR siren=$siren)*/ AND b.code_isin=c.isin AND c.autre IN('','e','f','g','m','s','u') AND c.`date`>='$datePre' ORDER BY b.dateUpdate DESC, c.dateInsert DESC LIMIT 0,1", false, MYSQL_ASSOC);
if (APPLICATION_ENV=='development') {
$tabRes=$iDb->select( 'bourse_isin b, bourse_cours c',
'siren, raisonSociale, adresse, effectif, code_sicovam, code_mnemo, code_bloomberg, code_datastream, code_isin, logo, code_ric, '.
'dateIntroduction, dateDerAG, dateRadiation, autre_isin, eligibleSRD, eligiblePEA, nombreTitres, tel1, tel2, fax1, fax2, web, mail, '.
'marche, placeCotation, description, secteur, activite, activiteDet, dirigeants, actionnaires, chiffresTrim, '.
'c.autre, c.`date`, c.`heure`, c.`open` , c.`high` , c.`low` , c.`close` , c.`volume`',
"code_isin='$isin' /*OR siren=$siren)*/ AND b.code_isin=c.isin AND c.autre IN('','e','f','g','m','s','u') ORDER BY b.dateUpdate DESC, c.dateInsert DESC LIMIT 0,1", false, MYSQL_ASSOC);
} else {
$tabRes=$iDb->select( 'bourse_isin b, bourse_cours c',
'siren, raisonSociale, adresse, effectif, code_sicovam, code_mnemo, code_bloomberg, code_datastream, code_isin, logo, code_ric, '.
'dateIntroduction, dateDerAG, dateRadiation, autre_isin, eligibleSRD, eligiblePEA, nombreTitres, tel1, tel2, fax1, fax2, web, mail, '.
'marche, placeCotation, description, secteur, activite, activiteDet, dirigeants, actionnaires, chiffresTrim, '.
'c.autre, c.`date`, c.`heure`, c.`open` , c.`high` , c.`low` , c.`close` , c.`volume`',
"code_isin='$isin' /*OR siren=$siren)*/ AND b.code_isin=c.isin AND c.autre IN('','e','f','g','m','s','u') AND c.`date`>='$datePre' ORDER BY b.dateUpdate DESC, c.dateInsert DESC LIMIT 0,1", false, MYSQL_ASSOC);
}
$tabRet=$tabRes[0];
$timer['infosBoursieres-infosIsin']=microtime(true);
$tabRes=$iDb->select( 'bourse_cours',
'min(close) AS coursMin, avg(close) AS coursMoy, max(close) AS coursMax',
"isin='$isin' GROUP BY isin", false, MYSQL_ASSOC);
@ -133,73 +169,9 @@ class MBourse {
$tabRet['coursMoy']=$tabTmp['coursMoy'];
$tabRet['coursMax']=$tabTmp['coursMax'];
$timer['infosBoursieres-derniersCours']=microtime(true);
/*
$tabRes=$iDb->select( 'bourse_cours',
'`date`, close',
"isin='$isin' AND autre IN('','e','f','g','m','s','u') AND heure=9999 AND ( ".
"`date`=DATE_SUB(CURDATE(), INTERVAL 6 DAY) OR ".
"`date`=DATE_SUB(CURDATE(), INTERVAL 7 DAY) OR ".
"`date`=DATE_SUB(CURDATE(), INTERVAL 8 DAY) OR ".
"`date`='".date('Y')."-01-02' OR ".
"`date`='".date('Y')."-01-03' OR ".
"`date`='".date('Y')."-01-04' OR ".
"`date`=DATE_SUB(CURDATE(), INTERVAL 365 DAY) OR ".
"`date`=DATE_SUB(CURDATE(), INTERVAL 366 DAY) OR ".
"`date`=DATE_SUB(CURDATE(), INTERVAL 367 DAY) OR ".
"`date`=MIN(`date`) ) GROUP BY `date` ORDER BY `date` DESC", false, MYSQL_ASSOC);
$tabTmp=$tabRes[0];
print_r($tabTmp);
*/
/* Variations en clôture du 07/03/2008
Variation 5 jours -2.03%
Variation au 1 janvier +9.36%
Variation 1 an +13.84%
Variation 10 ans NC
Volumes
Volume séance 2 253
Volume moy. 20 séances 16 326
Ratio volumes 13.80%
Nombre de titres 113 038 156
Capital échangé séance 0.00%
Extrêmes
Plus haut 10 ans (14/02/2008) 78.5
Plus bas 10 ans (18/04/2005) 41.12*/
/*$tabRet[]=array( 'siren'=>$tabBourse,
'raisonSociale',
'adresse',
'effectif',
'code_sicovam',
'code_mnemo',
'code_bloomberg',
'code_datastream',
'code_isin',
'logo',
'code_ric',
'dateIntroduction',
'dateDerAG',
'dateRadiation',
'autre_isin',
'eligibleSRD',
'eligiblePEA',
'nombreTitres',
'tel1',
'tel2',
'fax1',
'fax2',
'web',
'mail',
'marche',
'placeCotation',
'description',
'secteur',
'activite',
'activiteDet',
'dirigeants',
'actionnaires',
'chiffresTrim'
);*/
}
return $tabRet;
}
}
?>
}

View File

@ -386,6 +386,13 @@ class MFacto {
'parTrim'=>$tabNbr2);
}
public function getLibInfoCS($cs) {
return array( 'CoteCS' => $cs,
'LibCS' => $this->tabInfoCS["_$cs"]['libExt'],
'NivRisque' => $this->tabInfoCS["_$cs"]['risque'],
'CodeRisque' => $this->tabInfoCS["_$cs"]['type'],
);
}
}
?>

View File

@ -33,7 +33,7 @@
public function getRefCodeVoie($sep=',', $eol=EOL) {
$row = 1;
$handle = fopen(DOC_WEB_LOCAL.'voies.csv', 'r');
$handle = fopen(DOC_WEB_LOCAL.'tables/voies.csv', 'r');
if (!$handle) die('Impossible d\'ouvrir le fichier de configuration des voies INSEE');
$tabTmp=array();
while (($data = fgetcsv($handle, 1000, ';')) !== FALSE) {

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 {
@ -1179,12 +1179,12 @@ class MGreffes {
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) {
@ -1211,9 +1211,9 @@ class MGreffes {
$dateRad=$ent['dateRadiation'];
$dateCloture=$ent['dateCloture'];
$dateInsert=$ent['dateInsert'];
} elseif (INFOGREFFE_DISPO_WEB) {
} elseif (INFOGREFFE_DISPO_WEB) { // @todo : Pour désactiver Infogreffe
$url='http://www.infogreffe.fr/infogreffe/index.jsp';
$page=getUrl($url, '', '', $this->referer, false, 'www.infogreffe.fr', false, '', '', 21);
$page=getUrl($url, '', '', $this->referer, false, 'www.infogreffe.fr', false, '', '', 5);
$this->body=$page['body'];
$this->codeRetour=$page['code'];
if ($this->codeRetour<>'200') {
@ -1222,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'=>'',
@ -1243,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;
@ -1276,11 +1276,11 @@ class MGreffes {
$fp=fopen(LOG_PATH.'/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);
@ -1296,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;
@ -1305,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]));
@ -1335,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])));
@ -1344,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';
@ -1442,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;
@ -1644,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];
}
@ -1675,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)
@ -1686,7 +1686,7 @@ class MGreffes {
$numRC2='';
} else
$numRC2=$numRC;
/** Insertion en base de données **/
$tabInsert=array( 'siren' => $siren,
'nom' => $nom,
@ -1718,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,
@ -1753,7 +1753,7 @@ class MGreffes {
);
return $tabRet;
}
function getListeEtab($siren) {
//POSTDATA=
$tabIdentite=$this->getIdentite($siren, true);
@ -1798,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]));
@ -1813,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]));
} 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]));
@ -1833,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) {
@ -1849,7 +1849,7 @@ class MGreffes {
$numRC2='';
} else
$numRC2=$numRC;
$tabEt[$i]=@array( 'docId' => $docId, //
'nom' => $nom, //
'nomCommercial' => $nomCom, //
@ -1878,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
@ -1922,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`
@ -1949,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);
@ -1962,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
@ -2003,10 +2003,10 @@ $xml");
//echo EOL.'Insertion réponse Infogreffe'.EOL;
}
}
return $xml;
}
/**
* Retourne le résultat du webservice infogreffe.
* @param string $req
@ -2026,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>';
@ -2037,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');
@ -2107,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"/>';
@ -2171,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);
@ -2189,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);
@ -2206,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;
@ -2242,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;
@ -2261,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);
@ -2279,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 **/
@ -2323,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');
@ -2367,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') {
@ -2385,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;
@ -2438,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
@ -2526,7 +2526,7 @@ function getListeActes($siren) {
'vecteurC'=>$vecteurC,
);
}
}*/
}*/
// Greffes et RC
$title = $xpath->query ('num_gest/greffe', $annonce);
$dgre=trim($title->item(0)->nodeValue);
@ -2536,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));
@ -2546,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;
@ -2585,9 +2585,11 @@ function getListeActes($siren) {
if ($title->length==1) //$vecteurC = true;
$tabVecteurs[]='C';
}
if ($date_acte=='') $date=$date_depot; else $date=$date_acte;
$ref="$acte_type-".str_replace('-', '',$acte_date)."-$dgre-$dmil-$dsta-$dchr-$depot_num-$acte_num";
$tabRet[]=array( 'siren' => $siren,
'numRC' => $dmil.'-'.$dsta.'-'.$dchr,
'numGreffe' => $dgre,
@ -2601,6 +2603,7 @@ function getListeActes($siren) {
'acte_pages' =>$acte_pages,
'acte_nature' =>utf8_decode($acte_nature),
'acte_decision' =>utf8_decode($acte_decision),
'ref' =>$ref,
);
$tabInsert=array( 'siren' => $siren,
'numRC' => $dmil.$dsta.$dchr,
@ -2633,9 +2636,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]
@ -2651,7 +2654,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'];
@ -2663,8 +2666,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'=>'',
@ -2685,17 +2688,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'];
@ -2703,7 +2706,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';
@ -2725,7 +2728,7 @@ function getListesProcolVentes() {
$fp=fopen(LOG_PATH.'/infogreffe.log', 'a');
fwrite($fp, $this->body);
fclose($fp);
}
@ -2743,10 +2746,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 **/
@ -2761,15 +2764,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));
@ -2778,7 +2781,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);
@ -2789,7 +2792,7 @@ function getBilansImages($siren, $ref='') {
$tabRet[]=array( 'siren' => $siren,
'numRC' => $dmil.'-'.$dsta.'-'.$dchr,
'numGreffe' => $dgre,
'numGreffe' => $dgre,
'annee' => $mil,
'type' => $typeCpt,
'dateClotureAff' => $millesime,
@ -2814,9 +2817,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;
@ -2829,15 +2832,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'],
@ -2863,7 +2866,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'=>'',
@ -2879,13 +2882,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;
@ -2915,7 +2918,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'];
@ -2926,7 +2929,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'];
@ -2937,7 +2940,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',
@ -2958,7 +2961,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') {
@ -2970,7 +2973,7 @@ function getListeCessions($typeProcedure='rj') {
$nbCessions=trim($matches[1]);
$nbPages=ceil($nbCessions/10);
sleep(1);
/** Liste des entreprises **/
$tabCessions=array();
$nbInsert=$nbDeja=0;
@ -2979,8 +2982,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') {
@ -2988,7 +2991,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;
@ -3019,11 +3022,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));
@ -3067,13 +3070,13 @@ 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();
}
}
/** Declaration d'une anomalie chez Infogreffe
*
*
* @param $siren Siren de l'entreprise concernée
* @param $type Type d'anomalie 'CB10','IMR10','WS10'
* @param $description Description complète de l'anomalie
@ -3081,7 +3084,7 @@ function getListeCessions($typeProcedure='rj') {
function declareAnomalie($siren, $type, $description) {
/*
CB10 https://www.infogreffe.fr/mantis/issues_rss.php?username=SCOREDECISIONS&key=6b42eafa9888f57858599218f57caa17&project_id=37
IMR10 https://www.infogreffe.fr/mantis/issues_rss.php?username=SCOREDECISIONS&key=6b42eafa9888f57858599218f57caa17&project_id=11
IMR10 https://www.infogreffe.fr/mantis/issues_rss.php?username=SCOREDECISIONS&key=6b42eafa9888f57858599218f57caa17&project_id=11
WS10 https://www.infogreffe.fr/mantis/issues_rss.php?username=SCOREDECISIONS&key=6b42eafa9888f57858599218f57caa17&project_id=36
https://www.infogreffe.fr/mantis/view_all_bug_page.php
@ -3098,13 +3101,13 @@ https://www.infogreffe.fr/mantis/csv_export.php
}
$this->cookie=$page['header']['Set-Cookie'];
$this->referer=$url;
$url='https://www.infogreffe.fr/mantis/login.php';
$postData=array('username'=>'SCOREDECISIONS',
'password'=>'scoredecisions09');
$page=getUrl($url, $this->cookie, $postData, $this->referer, false, 'www.infogreffe.fr', false, '', '', 21);
// print_r($page);
$this->referer=$url;
$this->referer=$url;
$this->body=$page['body'];
$this->codeRetour=$page['code'];
if ($this->codeRetour<>'302') {
@ -3115,7 +3118,7 @@ https://www.infogreffe.fr/mantis/csv_export.php
/*
$url='https://www.infogreffe.fr/mantis/'.$page['header']['Location'];
$page=getUrl($url, $this->cookie, '', $this->referer, false, 'www.infogreffe.fr', false, '', '', 21);
$this->referer=$url;
$this->referer=$url;
$this->body=$page['body'];
$this->codeRetour=$page['code'];
if ($this->codeRetour<>'302') {
@ -3125,7 +3128,7 @@ https://www.infogreffe.fr/mantis/csv_export.php
$this->cookie=$page['header']['Set-Cookie'];
/*print_r($page);
die();*/
$url='https://www.infogreffe.fr/mantis/view_all_bug_page.php';
$url='https://www.infogreffe.fr/mantis/csv_export.php';
$page=getUrl($url, $this->cookie, '', $this->referer, false, 'www.infogreffe.fr', false, '', '', 21);

View File

@ -1,14 +1,14 @@
<?
class MLiens {
public $siren=0;
private $iDb;
private $iInsee;
public $tabSirenVisites;
private $tabChars=array('é'=>'é', 'ç'=>'ç','è'=>'è','à '=>'à');
private static $tabFct=array( 'ADM'=>'Administrateur',
'ASS'=>'Associé',
'COG'=>'Co-gérant',
@ -30,15 +30,15 @@ class MLiens {
1600=>'Actes', // S&D : 69642, Associé-Gérant
1700=>'SED',
1800=>'Collecte', // Infolégales
1900=>'Collecte');
1900=>'Collecte');
public function __construct($siren) {
$this->siren=$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
@ -81,7 +81,7 @@ class MLiens {
else $majMin=$lien['MajMin'];
switch ($tabIdentite['FJ']*1) {
case 5488: // Entreprise Unipersonnelle à Responsabilité Limitée
case 5498: // SARL unipersonnelle
case 5498: // SARL unipersonnelle
case 5720: // Société par actions simplifiée à associé unique
$lien['Pmin']=100;
$unique=true;
@ -94,14 +94,17 @@ class MLiens {
$pctTot+=$pctLien;
// On évite d'afficher des totaux de détention > à 100%
if($pctTot>100) $pctLien=0;
if ($lien['dateInsert']>$dateMaj) $dateMaj=$lien['dateInsert'];
if ($lien['dateUpdate']>$dateMaj) $dateMaj=$lien['dateUpdate'];
if ($lien['source']==1800) $libRS=strtoupper(strtr($lien['RaisonSociale'],$this->tabChars));
else $libRS=strtr($lien['RaisonSociale'],$this->tabChars);
$tabRet[]=array( 'Pmin' => number_format($pctLien,2,',',''),
'PminNum' => $pctLien,
'MajMin' => $majMin,
'RaisonSociale' => strtr($lien['RaisonSociale'],$this->tabChars),
'RaisonSociale' => $libRS,
'Pays' => $libPays,
'CodePays' => $codPays,
'Siren' => $lien['Siren2'],
'Actif' => $lien['actif'],
'Source' => $this->tabSources[$source],
@ -111,9 +114,9 @@ class MLiens {
}
$sourcePre=$source;
}
if (count($tabRet)==0) {
switch ($tabIdentite['FJ']*1) {
switch ($tabIdentite['FJ']*1) {
case 7112: // Autorité administrative indépendante
case 7160: // Service déconcentré à compétence nation. D'un ministère (hors Défense)
case 7171: // Service déconcentré de l'État à compétence (inter) régionale
@ -131,9 +134,10 @@ class MLiens {
'MajMin' => '+',
'RaisonSociale' => $tabCC['triNom'],
'Pays' => '',
'CodePays' => 'FRA',
'Siren' => $tabCC['triSiret'],
'Actif' => 1,
'Source' => $this->tabSources[1800],
'Source' => $this->tabSources[1900],
'DateLien' => Wdate::dateT('Ymd','Y-m-d', $tabCC['dateUpdate']),
'DateMaj' => Wdate::dateT('Ymd','Y-m-d', $tabCC['dateUpdate']),
);
@ -141,7 +145,7 @@ class MLiens {
case 7113: // Ministère
case 7120: // Service central d'un ministère
case 7150: // Service du ministère de la Défense
case 7190: // Ecole nationale non dotée de la personnalité morale
// case 7210: // COMMUNE (traité après)
// case 7220: // DEPARTEMENT (traité après)
@ -161,7 +165,7 @@ class MLiens {
// case 7345: // Syndicat intercommunal à vocation multiple (SIVOM)
// case 7346: // Communauté de communes
// case 7347: // Communauté de villes
// case 7348: // Communauté d'agglomération
// case 7348: // Communauté d'agglomération
case 7349: // Autre établissement public local de coopération non spécialisé ou entente
case 7351: // Institution interdépartemental ou entente
case 7352: // Institution interrégionale ou entente
@ -195,9 +199,10 @@ class MLiens {
'MajMin' => '+',
'RaisonSociale' => 'ETAT FRANCAIS',
'Pays' => '',
'CodePays' => 'FRA',
'Siren' => 0,
'Actif' => 1,
'Source' => $this->tabSources[1800],
'Source' => $this->tabSources[1900],
'DateLien' => date('Y-m-').'01',
'DateMaj' => date('Y-m-').'01',
);
@ -212,7 +217,7 @@ class MLiens {
$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']) {
@ -221,15 +226,16 @@ class MLiens {
case 'CU': $typeCC="Communauté urbaine"; break; // CJ=73
case 'SAN': $typeCC="Syndicat d'agglomérations nouvelles"; break; // CJ=73
default: $typeCC='';
}
}
$tabRet[]=array('Pmin' => 0,
'PminNum' => 0,
'MajMin' => '+',
'RaisonSociale' => strtoupper($typeCC.' '.preg_replace('/^(CA|CC|CU|SAN) /Uis', '',$tabCC['libEPCI'])),
'Pays' => '',
'CodePays' => 'FRA',
'Siren' => $tabCC['codEPCI'],
'Actif' => 1,
'Source' => $this->tabSources[1800],
'Source' => $this->tabSources[1900],
'DateLien' => date('Y-m-').'01',
'DateMaj' => date('Y-m-').'01',
);
@ -267,18 +273,19 @@ class MLiens {
'MajMin' => '+',
'RaisonSociale' => 'REGION '.strtoupper($tabCC['NC']),
'Pays' => '',
'CodePays' => 'FRA',
'Siren' => $sirenCom,
'Actif' => 1,
'Source' => $this->tabSources[1800],
'Source' => $this->tabSources[1900],
'DateLien' => date('Y-m-').'01',
'DateMaj' => date('Y-m-').'01',
);
break;
}
}
if (count($tabRet)==0) {
$fj=$tabIdentite['FJ']*1;
$fj=$tabIdentite['FJ']*1;
if ($fj==5498) $strFonctions=",'Gérant'";
else $strFonctions='';
$adresse=end(explode(' ', $tabIdentite['AdresseVoie']));
@ -294,7 +301,7 @@ class MLiens {
$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) {
@ -318,6 +325,7 @@ class MLiens {
'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],
@ -361,7 +369,7 @@ class MLiens {
if (!$this->iDb->insert('liens', $tabInsert1, true))
$errMaj=1016167;
}
/* Insertion de la participation pour l'actionnaire précédent */
$tabInsert2=array_merge($tabUpdate, array( 'ActionPart'=>2),
array( 'Siren1'=> $siren2,
@ -404,10 +412,11 @@ class MLiens {
}
}
}
}
}
/** Si l'entreprise n'a aucun actionnaire mais est majoritairement contrôlée par l'état alors on déclare l'état actionnaire **/
if (count($tabRet)==0) {
$tabNotice=$this->iInsee->getInfosNotice($siren, $nic);
if ($tabNotice['insRECME']*1>0) {
@ -416,14 +425,35 @@ class MLiens {
'MajMin' => '+',
'RaisonSociale' => 'ETAT FRANCAIS',
'Pays' => '',
'CodePays' => 'FRA',
'Siren' => 0,
'Actif' => 1,
'Source' => $this->tabSources[1800],
'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;
}
@ -435,7 +465,7 @@ class MLiens {
public function getParticipations($siren=false, $actifsUniquement=true) {
if (!$siren) $siren=$this->siren;
$tab=$this->iDb->select(
'liens l LEFT JOIN tabPays ON codPays3=Pays',
'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();
@ -444,7 +474,7 @@ class MLiens {
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'];
@ -453,11 +483,14 @@ class MLiens {
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' => strtr($lien['RaisonSociale'],$this->tabChars),
'RaisonSociale' => $libRS,
'Pays' => $lien['libPays'],
'CodePays' => $lien['Pays'],
'Siren' => $lien['Siren2'],
'Actif' => $lien['actif'],
'Source' => $this->tabSources[$source],
@ -467,7 +500,7 @@ class MLiens {
}
$sourcePre=$source;
}
// if (count($tabRet)==0) {
$tabTmp=$this->iInsee->getIdentiteLight($siren);
switch ($tabTmp['FJ']*1) {
@ -487,14 +520,15 @@ class MLiens {
'MajMin' => '+',
'RaisonSociale' => $tabCC['triNom'],
'Pays' => '',
'CodePays' => 'FRA',
'Siren' => $tabCC['triSiret'],
'Actif' => 1,
'Source' => $this->tabSources[1800],
'Source' => $this->tabSources[1900],
'DateLien' => Wdate::dateT('Ymd','Y-m-d', $tabCC['dateUpdate']),
'DateMaj' => Wdate::dateT('Ymd','Y-m-d', $tabCC['dateUpdate']),
);
}
break;
break;
case 7346: // Communaute de communes
case 7348: // Communaute d'agglomeration
//case 'CC': $typeCC="Communauté de communes"; break; // CJ=73
@ -505,7 +539,7 @@ class MLiens {
$dept=substr($tabCom['codeInsee'],0,2);
if ($dept=='2A' || $dept=='2B' || $dept=='20')
$dept='200';
elseif ($dept*1>95)
elseif ($dept*1>95)
$dept=substr($tabCom['codeInsee'],0,3);
else
$dept=$dept.'0';
@ -519,9 +553,10 @@ class MLiens {
'MajMin' => '+',
'RaisonSociale' => 'COMMUNE DE '.strtoupper($tabCom['libCommune']),
'Pays' => '',
'CodePays' => 'FRA',
'Siren' => $sirenCom,
'Actif' => 1,
'Source' => $this->tabSources[1800],
'Source' => $this->tabSources[1900],
'DateLien' => date('Y-m-').'01',
'DateMaj' => date('Y-m-').'01',
);
@ -533,11 +568,11 @@ class MLiens {
// 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';
$deptD=$dept.'000';
$deptF=$dept.'999';
if ($dept*1>95) {
$dept=substr($siren,2,3);
$deptD=$dept.'00';
$deptD=$dept.'00';
$deptF=$dept.'99';
}
$tmp=$this->iDb->select('insee.departements d, insee.insee_tabRegions r',
@ -556,9 +591,10 @@ class MLiens {
'MajMin' => '+',
'RaisonSociale' => 'DEPARTEMENT '.strtoupper($tabCom['libdep']),
'Pays' => '',
'CodePays' => 'FRA',
'Siren' => $sirenCom,
'Actif' => 1,
'Source' => $this->tabSources[1800],
'Source' => $this->tabSources[1900],
'DateLien' => date('Y-m-').'01',
'DateMaj' => date('Y-m-').'01',
);
@ -567,18 +603,41 @@ class MLiens {
}
// }
//@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);
'participations'=>$tabP,
'evenements'=>$tabE);
}
public function getMaisonMereFr($siren, $debug=false, $tabSirenVisites=array()) {
$this->tabSirenVisites=$tabSirenVisites;
$this->tabSirenVisites[]=$siren;
@ -594,8 +653,8 @@ class MLiens {
continue;
}// else
//echo "inconnu".EOL;
if ($debug && $sirenMere>1000) $tabIdentiteA=$this->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;
@ -623,11 +682,11 @@ class MLiens {
}
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) {
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);
//if ($siren*1==692004807) die(print_r($tabP,true));
foreach ($tabP as $i=>$lien) {
$sirenFille=$lien['Siren']*1;
if ($sirenFille>1000) {
@ -658,14 +717,14 @@ class MLiens {
echo "[D]".EOL;
$tabSiren[]=$siren;
}
elseif($sirenFille>100 && ($lien['PminNum']>=$pctMin || $lien['MajMin']=='+') && $appel<=$nbNiveaux) {
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);
$tabSiren=$this->getAllParticipations($sirenFille, $pctMin, $nbNiveaux, $niveauCour, $tabSiren, $sirenIni, $sirenMere, $appel, $actifsUniquement, $format, $tabRet);
}
}
elseif($sirenFille>100 && ($lien['PminNum']<$pctMin || $lien['MajMin']=='-')) {
@ -677,21 +736,96 @@ class MLiens {
$tabSiren[]=$siren;
}
else {
/**1) {
echo "[D]".EOL;
$tabSiren[]=$siren;
}
elseif($sirenFille>100 && ($lien['PminNum']>=$pctMin || $lien['MajMin']=='+') && $niveauCour<=$nbNiveaux) { */
echo "[E]".EOL;// $siren, $sirenFille, ".$lien['PminNum'].">=$pctMin, ".$lien['MajMin'].", $niveauCour<=$nbNiveaux".EOL;
$tabSiren[]=$siren;
}
$tabPart=array( 'siren' => $sirenFille,
'nom' => $nomP,
'pct' => $pct,
'pays' => $libPays,
'filles'=> $tabFilles);
$tabParts[]=$tabPart;
}
$tabRet=$tabParts;
return array_unique($tabSiren);
}
/**
* Retourne l'arborescence pour les groupes
* @param string $siren
* @param int $pctMin
* @param int $nbNiveaux
*/
public function getArborescence($siren, $pctMin=33, $nbNiveaux=10)
{
//Récupération de la maison mère
$sirenMere = $this->getMaisonMereFr($siren);
//Informations de la maison mère
$tabId = $this->iInsee->getIdentiteLight($sirenMere);
$tabSirenDeja = array();
$tabSirenDeja[] = $tabId['Siren'];
//Retour
$tabRet = array(
'name' => $tabId['Nom'],
'siren' => $tabId['Siren'],
'children' => $this->getArborescenceRecursive($sirenMere, $pctMin, 1, $nbNiveaux, $tabSirenDeja),
);
return $tabRet;
}
/**
* Retourne un sous élement de l'arborescende pour les groupes
* @param string $siren
* @param int $pctMin
* @param int $niveau
* @param int $nbNiveaux
* @param array $tabSirenDeja
*/
public function getArborescenceRecursive( $siren, $pctMin=33, $niveau=0, $nbNiveaux=10, $tabSirenDeja=array() )
{
if ( $niveau > $nbNiveaux ) return array();
$niveau++;
$tabRet = array();
$participations = $this->getParticipations($siren);
if ( count($participations)>0 ) {
foreach ( $participations as $item ) {
if ( $item['Pmin'] > $pctMin ) {
//file_put_contents('test.log', $item['Siren']."\n", FILE_APPEND);
$data = array(
'name' => $item['RaisonSociale'],
'siren' => $item['Siren'],
'pmin' => $item['Pmin'],
'pays' => $item['Pays'],
'children' => array(),
);
//Pour éviter d'avoir des boucles infinis
if ( !in_array($item['Siren'], $tabSirenDeja) && intval($item['Siren'])>1000 ){
$tabSirenDeja[] = $item['Siren'];
$data['children'] = $this->getArborescenceRecursive($item['Siren'], $pctMin, $niveau, $nbNiveaux, $tabSirenDeja);
}
$tabRet[] = $data;
}
}
//file_put_contents('test.log', "\n", FILE_APPEND);
}
return $tabRet;
}
/** Recherche d'entreprise par leur actionnaire
**
** @param string $nom Raison sociale / Nom de l'actionnaire (obligatoire)
@ -705,7 +839,7 @@ class MLiens {
** @param bool $pertinence Recherche orthographique stricte sur les noms et prénoms (si true)
** @return Liste des entreprises trouvées
**/
public function rechercheActionnaire($nom, $cpVille='', $siren=0, $pays='', $pctMin=0, $pctMax=100, $deb=0, $nbRep=20, $maxRep=200, $pertinence=false)
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(
@ -714,10 +848,13 @@ class MLiens {
'actNomRS' => join(' ', array($nom, $cpVille)),
'pays' => $pays,
'pctMin' => $pctMin,
'pctMax' => $pctMax,
'pctMax' => $pctMax,
);
$version = defined('SPHINX_ACT_VERSION') ? SPHINX_ACT_VERSION : 1;
require_once 'Metier/sphinx/rechercheFonc.php';
$result = rechercheAct($formR, $deb, $nbRep, $maxRep);
/*
switch($version)
{
case 1:
@ -730,11 +867,12 @@ class MLiens {
$result = $recherche->rechercheAct($formR, $deb, $nbRep, $maxRep);
break;
}
*/
return $result;
}
/** Retourne les informations relatives au groupe du siren donné
** @param string $siren Siren de l'entreprise
** @param string $siren Siren de l'entreprise
**/
public function getInfoGroupe($siren) {
if ($siren<1000) return false;
@ -743,7 +881,7 @@ class MLiens {
"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);
@ -751,7 +889,7 @@ class MLiens {
foreach ($tmp as $tmp2) {
$tabNAf2[$tmp2['codNaf2']]=$tmp2['codNaf1'];
}
$tabNaf2Lib=array( 'A'=>'Agriculture, sylviculture et pêche',
'B'=>'Industries extractives',
'C'=>'Industrie manufacturière',
@ -774,7 +912,7 @@ class MLiens {
'T'=>'Activités des ménages en tant qu\'employeurs ; activités indifférenciées des ménages en tant que producteurs de biens et services pour usage propre',
'U'=>'Activités extra-territoriales',
);
$tabId=$this->iInsee->getIdentiteEntreprise($sirenGrp);
/*
[SiretSiege] => 54205118000066
@ -849,7 +987,7 @@ class MLiens {
@$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) {
@ -873,7 +1011,7 @@ class MLiens {
// $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',
@ -881,9 +1019,8 @@ class MLiens {
if (count($tmp)>0) $tabRet['grpRecme']=1;
else $tabRet['grpRecme']=0;*/
$tabRet['grpNbProcolHisto']=$nbProcol;
return $tabRet;
}
}
?>
}

View File

@ -0,0 +1,362 @@
<?php
class MLiens2
{
/**
* Company Reference id
* @var int
*/
protected $idRef = null;
/**
* Company SIREN
* @var string
*/
protected $siren = null;
/**
* @var Zend_Db
*/
protected $db;
/**
* Array to list id find during list of childrens
* @var array
*/
protected $findId = array();
/**
*
* @param string $id
* @param string $type ref|siren
* @throws SoapFault
*/
public function __construct($id, $type = 'ref')
{
//Load configuration
if (Zend_Registry::isRegistered('config')) {
$c = Zend_Registry::get('config');
} else {
$c = new Zend_Config_Ini(APPLICATION_PATH . '/configs/application.ini');
}
//Connect to the database
try {
$this->db = Zend_Db::factory($c->profil->db->jo);
$this->db->getConnection();
} catch (Zend_Db_Adapter_Exception $e) {
throw new SoapFault('ERR', $e->getMessage());
} catch (Zend_Exception $e) {
throw new SoapFault('ERR', "Application error");
}
if ( $type == 'siren' ) {
$this->siren = $id;
$refM = new Application_Model_JoLiensRef($this->db);
$sql = $refM->select()->where('siren=?', $id);
$result = $refM->fetchRow($sql);
if ( $result !== null ) {
$this->idRef = $result->id;
}
} else {
$this->idRef = $id;
}
}
/**
* Retourne les actionnaires
* @param int $id
* @param boolean $actif
* @return array Tableau d'actionnaires
*/
public function getActionnaires($id = null, $actif = null)
{
if ( null === $id ) {
$id = $this->idRef;
}
$liens = array();
if ( null === $id ) {
return $liens;
}
try {
$sql = $this->db->select()
->from(array('l'=>'liens2'),
array('id', 'idAct', 'PDetention', 'Pvote', 'MajMin', 'idPar',
'dateEffetLien', 'dateInsert'))
->where('idPar=?', $id)
->join(array('r'=>'liensRef'), 'l.idAct=r.id',
array('LPAD(siren, 9, 000000000) AS siren','PpPm', 'RS', 'civilite', 'nom', 'prenom', 'nom_usage',
'naissance_date', 'naissance_dept_pays', 'naissance_lieu', 'nat',
'adresse_num', 'adresse_btq', 'adresse_codvoie', 'adresse_libvoie',
'adresse_comp', 'adresse_cp', 'adresse_ville', 'adresse_pays'
))
->order('PDetention DESC');
//Actif / Inactif
if ( null !== $actif ) {
if ( false === $actif ) {
$sql->where('l.actif=?',0);
} else {
$sql->where('l.actif=?',1);
}
}
$liens = $this->db->fetchAll($sql, null, Zend_Db::FETCH_OBJ);
} catch (Zend_Exception $e) {
throw new SoapFault('ERR', $e->getMessage());
}
return $liens;
}
/**
* Retourne les participations
* @param int $id
* @param boolean $actif
* @return array Tableau des participations
*/
public function getParticipations($id = null, $actif = null)
{
if ( null === $id ) {
$id = $this->idRef;
}
if ( false === $actif ) {
$actif = 0;
} else {
$actif = 1;
}
$liens = array();
if ( null === $id ) {
return $liens;
}
try {
$sql = $this->db->select()
->from(array('l'=>'liens2'),
array('id', 'idAct', 'PDetention', 'Pvote', 'MajMin', 'idPar',
'dateEffetLien', 'dateInsert'))
->where('idAct=?', $id)
->join(array('r'=>'liensRef'), 'l.idPar=r.id',
array('LPAD(siren, 9, 000000000) AS siren','PpPm', 'RS', 'civilite', 'nom', 'prenom', 'nom_usage',
'naissance_date', 'naissance_dept_pays', 'naissance_lieu', 'nat',
'adresse_num', 'adresse_btq', 'adresse_codvoie', 'adresse_libvoie',
'adresse_comp', 'adresse_cp', 'adresse_ville', 'adresse_pays'
))
->order('PDetention DESC');
//Actif / Inactif
if ( null !== $actif ) {
if ( false === $actif ) {
$sql->where('l.actif=?',0);
} else {
$sql->where('l.actif=?',1);
}
}
$liens = $this->db->fetchAll($sql, null, Zend_Db::FETCH_OBJ);
} catch (Zend_Exception $e) {
throw new SoapFault('ERR', $e->getMessage());
}
return $liens;
}
/**
* Fonctions de direction
* @param boolean $actif
* @return Zend_Db_Table_Rowset_Abstract
*/
public function getDirections($actif = null)
{
if ( null === $this->siren ) {
$refM = new Application_Model_JoLiensRef($this->db);
$rows = $refM->find($this->idRef);
$siren = str_pad($rows->current()->siren, 9, '0', STR_PAD_LEFT);
} else {
$siren = $this->siren;
}
$result = array();
if ( null !== $siren && intval($siren) != 0 )
{
$directionsM = new Application_Model_JoRncsDirigeants($this->db);
$sql = $directionsM->select()->from($directionsM, array(
'siren','raisonSociale', 'dirSiren', 'dirRS', 'civilite', 'nom',
'prenom', 'naissance_date', 'naissance_lieu', 'fonction_code', 'fonction_lib'
))->where("typeDir IN ('PM', 'PP')")->where('dirSiren=?', $siren);
//Actif / Inactif
if ( null !== $actif ) {
if ( false === $actif ) {
$sql->where('actif=?',0);
} else {
$sql->where('actif=?',1);
}
}
$sql->order('fonction_code DESC');
$sql->order('raisonSociale ASC');
$result = $directionsM->fetchAll($sql);
}
return $result;
}
/**
* Retourne la maison mère
* @param int $id
* @return int
*/
public function getHead($id = null)
{
if ( null === $id ) {
$id = $this->idRef;
}
//Add ID to the list of known
$this->findId[] = $id;
//Through the list
$liens = $this->getActionnaires($id, true);
//Find the following up entity
if ( count($liens)>0 ) {
foreach ( $liens as $item ) {
//Don't through again and again
if ( in_array($item->idAct, $this->findId) ) {
continue;
}
// Remove Special
if ( $item->idAct <= 1000 ) {
return $id;
}
//Same id
elseif ( $item->idAct == $id ) {
return $id;
}
//PDetention>50
elseif ( $item->PDetention > 50 ) {
return $this->getHead($item->idAct);
}
//MajMin=+
elseif ( $item->MajMin == '+' ) {
return $this->getHead($item->idAct);
}
//--
elseif ( $item->idAct > 1000 ) {
return $item->idAct;
}
}
}
return $id;
}
/**
* Retourne les éléments identitaire présent dans lienRef
* @param string $id
* @return Zend_Db_Table_Rowset_Abstract
*/
public function getIdentity($id = null)
{
if ( null === $id ) {
$id = $this->idRef;
}
$refM = new Application_Model_JoLiensRef($this->db);
$row = $refM->find($id);
if (null !== row) {
return $row->current();
}
}
/**
* Retourne l'arborescence pour les groupes
* @param int $pctMin
* @param int $nbNiveaux
* @return array
*/
public function getTree( $pctMin=33, $nbNiveaux=10 )
{
//Récupération de la maison mère
$id = $this->getHead();
//Informations de la maison mère
$identity = $this->getIdentity($id);
$this->findId = array();
$this->findId[] = $identity->id;
$nom = $identity->RS;
if ( $identity->nom != '') {
$nom = $identity->civilite.' '.$identity->nom.' '.$identity->prenom;
}
//Retour
$tabRet = array (
'id' => $identity->id,
'name' => $nom,
'siren' => str_pad($identity->siren, 9, '0', STR_PAD_LEFT),
'pmin' => $item->PDetention,
'pays' => $identity->adresse_pays,
'children' => $this->getTreeRecursive($identity->id, $pctMin, 1, $nbNiveaux),
);
return $tabRet;
}
/**
* Retourne un sous élement de l'arborescence pour les groupes
* @param int $id
* @param int $pctMin
* @param int $niveau
* @param int $nbNiveaux
* @return array
*/
public function getTreeRecursive( $id, $pctMin=33, $niveau=0, $nbNiveaux=10 )
{
if ( $niveau > $nbNiveaux ) return array();
$niveau++;
$tabRet = array();
$participations = $this->getParticipations($id, true);
if ( count($participations)>0 ) {
foreach ( $participations as $item ) {
if ( $item->PDetention > $pctMin ) {
$identity = $this->getIdentity($item->idPar);
$nom = $identity->RS;
if ( $identity->nom != '') {
$nom = $identity->civilite.' '.$identity->nom.' '.$identity->prenom;
}
$data = array (
'id' => $identity->id,
'name' => $nom,
'siren' => str_pad($identity->siren, 9, '0', STR_PAD_LEFT),
'pmin' => $item->PDetention,
'pays' => $identity->adresse_pays,
'children' => array(),
);
//Pour éviter d'avoir des boucles infinis
if ( !in_array($identity->id, $this->findId) ){
$this->findId[] = $identity->id;
$data['children'] = $this->getTreeRecursive($identity->id, $pctMin, $niveau, $nbNiveaux);
}
$tabRet[] = $data;
}
}
}
return $tabRet;
}
}

View File

@ -24,28 +24,42 @@ function dec2dms($dec) {
return $d.'°'.$m."'".$s.'"';
}
/**/
function ALG0001($phi,$e) {
$temp = ( 1 - ( $e * sin( $phi ) ) ) / ( 1 + ( $e * sin( $phi ) ) );
$L = log ( tan ( (pi()/4) + ($phi/2) ) * pow ($temp, ($e/2) ));
return $L;
}
/** Calcul de la latitude à partir de la latitude isométrique
**/
function ALG0002($L,$e,$epsilon) {
$phi[0] = 2 * atan(exp($L)) - (pi()/2);
$phi[0] = 2 * atan(exp($L)) - (pi()/2);
$i=0;
do
{
$i++;
$temp = ( 1 + ( $e * sin( $phi[$i-1] ) ) ) / ( 1 - ( $e * sin( $phi[$i-1] ) ) );
$phi[$i] = 2 * atan ( pow ($temp, ($e/2)) * exp ($L) ) - pi()/2;
}
while (abs($phi[$i] - $phi[$i - 1]) >= $epsilon);
$i=0;
do {
$i++;
$temp = ( 1 + ( $e * sin( $phi[$i-1] ) ) ) / ( 1 - ( $e * sin( $phi[$i-1] ) ) );
$phi[$i] = 2 * atan ( pow ($temp, ($e/2)) * exp ($L) ) - pi()/2;
}
while (abs($phi[$i] - $phi[$i - 1]) >= $epsilon);
return $phi[$i];
return $phi[$i];
}
/** Transformation de coordonnées en projection conique conforme de Lambert, en coordonnées géographiques
** @param double $X Coordonnée X en projection conique conforme de Lambert du point
** @param double $Y Coordonnée Y en projection conique conforme de Lambert du point
** @param double $n Exposant de la projection
** @param double $c Constante de la projection
** @param double $Xs Coordonnée Xs en projection du pôle
** @param double $Ys Coordonnée Ys en projection du pôle
** @param double $lambdac Longitude de l'origine par rapport au méridien origine
** @param double $e Première excentricité de l'ellipsoïde
** @param double $epsilon Tolérance de convergence
** @return array lambda Longitude par rapport au méridien origine
** phi Latitude
**/
function ALG0004($X,$Y,$n,$c,$Xs,$Ys,$lambdac,$e,$epsilon) {
$R = sqrt( pow(($X - $Xs),2) + pow(($Y - $Ys),2) );
$gamma = atan(($X - $Xs)/($Ys - $Y));
@ -62,6 +76,9 @@ function ALG0004($X,$Y,$n,$c,$Xs,$Ys,$lambdac,$e,$epsilon) {
return $coords;
}
/** Transformation des coordonnées géographiques ellipsoïdales en coordonnées cartésiennes
**
**/
function ALG0009($lambda,$phi,$he,$a,$e) {
$N = ALG0021($phi,$a,$e);
@ -78,7 +95,7 @@ function ALG0009($lambda,$phi,$he,$a,$e) {
return $coords;
}
/**/
function ALG0012($X,$Y,$Z,$a,$e,$epsilon) {
$lambda = atan ($Y/$X);
@ -105,7 +122,19 @@ function ALG0012($X,$Y,$Z,$a,$e,$epsilon) {
return $coords;
}
/** Transformation d'un jeu de 7 paramètres entre 2 systèmes géodésiques
** @param double $Tx Translation suivant l'axe des X (de 1 vers 2)
** @param double $Ty Translation suivant l'axe des Y (de 1 vers 2)
** @param double $Tz Translation suivant l'axe des Z (de 1 vers 2)
** @param double $D Facteur d'échelle de 1 vers 2
** @param double $Rx Angle de rotation autour de l'axe des X en radian (de 1 vers 2)
** @param double $Ry Angle de rotation autour de l'axe des Y en radian (de 1 vers 2)
** @param double $Rz Angle de rotation autour de l'axe des Z en radian (de 1 vers 2)
** @param double $U Vecteur de coordonnées cartésiennes tridimensionnelles dans le système 1 : U=(Ux,Uy,Uz)
** @return array Vecteur de coordonnées cartésiennes tridimensionnelles dans le système 2, V=(Vx,Vy,Vz)
*/
function ALG0013($Tx,$Ty,$Tz,$D,$Rx,$Ry,$Rz,$U) {
$V=array();
$V['X'] = $Tx + $U['X'] * (1 + $D) + $U['Z'] * $Ry - $U['Y'] * $Rz;
$V['Y'] = $Ty + $U['Y'] * (1 + $D) + $U['X'] * $Rz - $U['Z'] * $Rx;
$V['Z'] = $Tz + $U['Z'] * (1 + $D) + $U['Y'] * $Rx - $U['X'] * $Ry;
@ -113,6 +142,10 @@ function ALG0013($Tx,$Ty,$Tz,$D,$Rx,$Ry,$Rz,$U) {
return $V;
}
/** Détermination des paramètres de calcul d'une projection Lambert conique
** dans le cas tangent, avec ou sans facteur d'échelle en fonction des paramètres de définition usuels
** @return array n, C, lambdac, Xs, Ys
**/
function ALG0019($lambda0,$phi0,$k0,$X0,$Y0,$a,$e) {
$lambdac = $lambda0;
$n = sin($phi0);
@ -131,103 +164,101 @@ function ALG0019($lambda0,$phi0,$k0,$X0,$Y0,$a,$e) {
}
/** Calcul de la grande normale de l'ellipsoïde
** @param double $phi Latitude
** @param double $a Demi-grand axe de l'ellipsoïde
** @param double $e Première excentricité de l'ellipsoïde
** @return double
**/
function ALG0021($phi,$a,$e) {
$N = $a/sqrt( 1 - $e * $e * sin($phi) * sin($phi) );
return $N;
}
/** Calcul des constantes d'une projection Lambert conique conforme dans le cas sécant
** @param double $lambda0 Longitude origine en radian par rapport au méridien origine
** @param double $phi0 Latitude origine
** @param double $X0 Coordonnée X en projection du point origine
** @param double $Y0 Coordonnée Y en projection du point origine
** @param double $phi1 Latitude en radian du 1er parallèle automécoïque
** @param double $phi2 Latitude en radian du 2ème parallèle automécoïque
** @param double $a Demi-grand axe de l'ellipsoïde
** @param double $e Première excentricité de l'ellipsoïde
** @return array n, C, lambdac, Xs, Ys
**/
function ALG0054($lambda0,$phi0,$X0,$Y0,$phi1,$phi2,$a,$e) {
$lambdac = $lambda0;
$n = ( (log( (ALG0021($phi2,$a,$e)*cos($phi2))/(ALG0021($phi1,$a,$e)*cos($phi1)) ))/(ALG0001($phi1,$e) - ALG0001($phi2,$e) ));
$C = ((ALG0021($phi1,$a,$e)* cos($phi1))/$n) * exp($n * ALG0001($phi1,$e));
if ($phi0 == (pi()/2))
{
if ($phi0 == (pi()/2)) {
$Xs = $X0;
$Ys = $Y0;
}
else
{
echo ('coucou');
} else {
$Xs = $X0;
$Ys = $Y0 + $C * exp(-1 * $n * ALG0001($phi0,$e));
}
$tab ['e'] = $e;
$tab ['n'] = $n;
$tab ['C'] = $C;
$tab ['lambdac'] = $lambdac;
$tab ['Xs'] = $Xs;
$tab ['Ys'] = $Ys;
$tab=array( 'e' => $e,
'n' => $n,
'C' => $C,
'lambdac' => $lambdac,
'Xs'=> $Xs,
'Ys'=> $Ys);
return $tab;
}
function Lambert2WGS84($X,$Y,$orig='LIIe') {
function Lambert2WGS84($X,$Y,$orig='L93') {
$epsilon = 0.00000000001;
switch ($orig)
{
case 'LII' :
$n = 0.7289686274;
$c = 11745793.39;
$Xs = 600000;
$Ys = 6199695.768;
$lambdac = 0.04079234433; // pour greenwich
$lambdac = 0.04079234433; // pour greenwich
$e = 0.08248325676; // première excentricité de l ellipsoïde Clarke 1880 français
$he = 100;
$a = 6378249.2; // demi-grand axe de l'ellipsoide
$e = 0.08248325676; //(première excentricité de l ellipsoïde Clarke 1880 français)
$he = 100;
$a = 6378249.2;
$Tx = -168;
$Ty = -60;
$Tz = +320;
$D = 0;
$Rx = $Ry = $Rz = 0;
break;
$Tx = -168;
$Ty = -60;
$Tz = +320;
$D = 0;
$Rx = $Ry = $Rz = 0;
case 'L93' :
$n = 0.7256077650;
$c = 11745255.426;
$Xs = 700000;
$Ys = 12655612.050;
$lambdac = 0.04079234433; // pour greenwich
$e = 0.08248325676; //(première excentricité de l ellipsoïde Clarke 1880 français)
$he = 100;
$a = 6378249.2;
$Tx = -168;
$Ty = -60;
$Tz = +320;
$D = 0;
$Rx = $Ry = $Rz = 0;
break;
case 'LIIe' :
default:
$n = 0.7289686274;
$c = 11745793.39;
$Xs = 600000;
$Ys = 8199695.768;
$lambdac = 0.04079234433; // pour greenwich
$e = 0.08248325676; //(première excentricité de l ellipsoïde Clarke 1880 français)
$he = 100;
$a = 6378249.2;
$Tx = -168;
$Ty = -60;
$Tz = +320;
$D = 0;
$Rx = $Ry = $Rz = 0;
$orig=strtoupper($orig);
switch ($orig) {
case 'LI':
case 'L1': $n = 0.7604059656;
$c = 11603796.98;
$Xs = 600000;
$Ys = 5657616.674;
break;
case 'LII':
case 'LIIE':
case 'L2E':
case 'L2': $n = 0.7289686274;
$c = 11745793.39;
$Xs = 600000;
if ($orig=='L2E' || $orig=='LIIE')
$Ys = 8199695.768;
else $Ys = 6199695.768;
break;
case 'LIII':
case 'L3': $n = 0.6959127966;
$c = 11947992.52;
$Xs = 600000;
$Ys = 6791905.085;
break;
case 'LIV':
case 'L4': $n = 0.6712679322;
$c = 12136281.99;
$Xs = 234.358;
$Ys = 7239161.542;
break;
case 'L93':
default: $n = 0.7256077650;
$c = 11745255.426;
$Xs = 700000;
$Ys = 12655612.050;
break;
}
$coords = ALG0004($X,$Y,$n,$c,$Xs,$Ys,$lambdac,$e,$epsilon);
@ -381,6 +412,84 @@ print_r(Lambert2WGS84(591647.56,2426659.65));
print_r(geos2lambert(48.838245134184 ,2.2227849815878));
**/
/** The point-in-polygon algorythm allows you to programmatically check if a particular point is inside a polygon or outside of it. A common way to tackle the problem is to count how many times a line drawn from the point (in any direction) intersects with the polygon boundary. If they intersect an even number of times, then the point is outside.
I used that approach in this PHP code, which doesn't contain detailed comments yet. A few people asked if I could post it anyway, so there it is... I'll try to add some more comment as soon as I have some spare time.
The returned values are:
"vertex" if the point sits exactly on a vertex AND you left true as the value for $pointOnVertex.
"boundary" if the point sits on the boundary. If $pointOnVertex is false, then "boundary" is also returned if the point is on a vertex.
"inside" if the point is inside the polygon.
"outside" if, you guessed it, the point is outside of the polygon.
*/
class pointLocation {
var $pointOnVertex = true; // Check if the point sits exactly on one of the vertices
function pointLocation() {
}
function pointInPolygon($point, $polygon, $pointOnVertex = true) {
$this->pointOnVertex = $pointOnVertex;
// Transform string coordinates into arrays with x and y values
$point = $this->pointStringToCoordinates($point);
$vertices = array();
foreach ($polygon as $vertex) {
$vertices[] = $this->pointStringToCoordinates($vertex);
}
//print_r($vertices);
//die();
// Check if the point sits exactly on a vertex
if ($this->pointOnVertex == true && $this->pointOnVertex($point, $vertices) == true) {
return "vertex";
}
// Check if the point is inside the polygon or on the boundary
$intersections = 0;
$vertices_count = count($vertices);
echo "vertices_count=$vertices_count".EOL;
for ($i=1; $i < $vertices_count; $i++) {
$vertex1 = $vertices[$i-1];
$vertex2 = $vertices[$i];
if ($vertex1['y'] == $vertex2['y'] && $vertex1['y'] == $point['y'] && $point['x'] > min($vertex1['x'], $vertex2['x']) && $point['x'] < max($vertex1['x'], $vertex2['x'])) {
// Check if point is on an horizontal polygon boundary
return "boundary";
}
if ($point['y'] > min($vertex1['y'], $vertex2['y']) && $point['y'] <= max($vertex1['y'], $vertex2['y']) && $point['x'] <= max($vertex1['x'], $vertex2['x']) && $vertex1['y'] != $vertex2['y']) {
$xinters = ($point['y'] - $vertex1['y']) * ($vertex2['x'] - $vertex1['x']) / ($vertex2['y'] - $vertex1['y']) + $vertex1['x'];
if ($xinters == $point['x']) {
// Check if point is on the polygon boundary (other than horizontal)
return "boundary";
}
if ($vertex1['x'] == $vertex2['x'] || $point['x'] <= $xinters) {
$intersections++;
}
}
}
// If the number of edges we passed through is even, then it's in the polygon.
echo "intersections=$intersections".EOL;
if ($intersections % 2 != 0) {
return "inside";
} else {
return "outside";
}
}
function pointOnVertex($point, $vertices) {
foreach($vertices as $vertex) {
if ($point == $vertex) {
return true;
}
}
}
function pointStringToCoordinates($pointString) {
$coordinates = explode(' ', $pointString);
return array('x'=>$coordinates[0], 'y'=>$coordinates[1]);
}
}
class MMap {
@ -400,7 +509,10 @@ class MMap {
public $latitudeDeg= 0; // Latitude en Dégrés
public $longitudeDec= 0; // Longitude en Décimal
public $longitudeDeg= 0; // Longitude en Dégrés
public $altitude = NULL; // Altitude en mètres
public $l93x = NULL; // Lambert 93, coordonnée X
public $l93y = NULL; // Lambert 93, coordonnée Y
public $precision = 0;
public $adresseValidee='';
public $enCache=false;
@ -607,7 +719,7 @@ API keybing = 56D6CBA671C986D3EA11B1B48F97507BE9B46999
$this->codeRetourG=@getTextInHtml($this->body, '<Status>', '<code>', '/code>');
$this->precision=@getTextInHtml($this->body, '<AddressDetails Accuracy', '="', '" ');
$this->adresseValidee=strtoupper(str_replace('&apos;', "'", htmlspecialchars_decode(@getTextInHtml($this->body, '<Placemark', '<address>', '</address>'),ENT_QUOTES)));
$this->adresseValidee=strtoupper(str_replace('&apos;', "'", htmlspecialchars_decode(utf8_decode(@getTextInHtml($this->body, '<Placemark', '<address>', '</address>')),ENT_QUOTES)));
$strTmp=@getTextInHtml($this->body, '<Point><coordinates>', '<coordinates>', '</coordinates>');
$tabTmp=explode(',', $strTmp);
$this->latitudeDec=@$tabTmp[1];
@ -640,24 +752,56 @@ API keybing = 56D6CBA671C986D3EA11B1B48F97507BE9B46999
return false;
}
/** Géocodage d'une adresse
** 0 Unknown location. (Since 2.59)
1 Country level accuracy. (Since 2.59)
2 Region (state, province, prefecture, etc.) level accuracy. (Since 2.59)
3 Sub-region (county, municipality, etc.) level accuracy. (Since 2.59)
4 Town (city, village) level accuracy. (Since 2.59)
5 Post code (zip code) level accuracy. (Since 2.59)
6 Street level accuracy. (Since 2.59)
7 Intersection level accuracy. (Since 2.59)
8 Address level accuracy. (Since 2.59)
**/
function geoCodeAdresse($adrNum, $adrIndRep, $adrTypeVoieCourt, $adrTypeVoieLong, $adrLibVoie, $cp, $ville='', $pays='France', $codeRivoli='') {
$iDb=new WDB();
$tabRep=array();
$adresse=addslashes(trim(preg_replace('/ +/',' ', "$adrNum $adrIndRep $adrTypeVoieLong $adrLibVoie")));
$ville=addslashes($ville);
$ret=$iDb->select( 'zonageXY', 'lat, lon, precis, adresseValidee, dateInsert', "address='$adresse' AND adr_cp='$cp' AND adr_ville='$ville'",false, MYSQL_ASSOC);
$ret=$iDb->select( 'zonageXY', 'lat, lon, l93_x, l93_y, alt, precis, adresseValidee, dateInsert', "address='$adresse' AND adr_cp='$cp' AND adr_ville='$ville'",false, MYSQL_ASSOC);
if (count($ret)>0) {
$zonage=$ret[0];
$this->precision=$zonage['precis']*1;
$this->adresseValidee=strtoupper($zonage['adresseValidee']);
$this->latitudeDec=$zonage['lat']*1;
$this->longitudeDec=$zonage['lon']*1;
$this->l93x=$zonage['l93_x'];
$this->l93y=$zonage['l93_y'];
$this->altitude=$zonage['alt'];
if ($this->altitude==NULL && $this->precision>5) {
if ($this->accesDist) {
$alt=$this->getAltitude($this->latitudeDec,$this->longitudeDec);
$this->altitude=$alt['alt'];
}
}
if ($this->l93x==NULL && $this->precision>5) {
$tmp=geos2lambert93($this->latitudeDec,$this->longitudeDec);
$this->l93x=$tmp['x_93'];
$this->l93y=$tmp['y_93'];
}
if ($this->altitude<>NULL || $this->l93x<>NULL) {
$tabUpdate=array( 'alt'=>$this->altitude,
'l93_x'=>$this->l93x,
'l93_y'=>$this->l93y);
//'dateUpdate'=>DATETIME,
$iDb->update('zonageXY', $tabUpdate, "address='$adresse' AND adr_cp='$cp' AND adr_ville='$ville'");
}
$this->latitudeDeg=dec2dms($this->latitudeDec);
$this->longitudeDeg=dec2dms($this->longitudeDec);
$this->enCache=true;
$ligne='En base : '.print_r($zonage, true);
} else {
} elseif ($this->accesDist) {
$this->enCache=false;
$retM=$retY=false;
if (substr($codeRivoli,0,3)*1==971) $pays='Guadeloupe';
@ -677,12 +821,21 @@ API keybing = 56D6CBA671C986D3EA11B1B48F97507BE9B46999
die("Code Rivoli non géré : '$codeRivoli'".EOL);
$retG=$this->geoCodeAdrCpVilleG($adresse, $cp, $ville, $pays);
/* if ($this->codeRetourG==620 || $this->precision==0)
if ($this->codeRetourG==620)
$retY=$this->geoCodeAdrCpVilleY("$adresse, $cp $ville");*/
if ($this->codeRetourG==620 || $this->precision==0)
/*if ($this->codeRetourG==620)
$retY=$this->geoCodeAdrCpVilleY("$adresse, $cp $ville");
if ($this->codeRetourY==620 || $this->codeRetourY==503 || $this->precision==0)
if ($this->codeRetourY==620 || $this->codeRetourY==503 || $this->precision==0)*/
$retM=$this->geoCodeAdrCpVilleM($adresse, $cp, $ville, $pays);
// On récupère l'altitude
if ($this->precision>5) {
$alt=$this->getAltitude($this->latitudeDec,$this->longitudeDec);
$this->altitude=$alt['alt'];
}
$tmp=geos2lambert93($this->latitudeDec,$this->longitudeDec);
$this->l93x=$tmp['x_93'];
$this->l93y=$tmp['y_93'];
if ($retG || $retY || $retM) {
$adresse=stripslashes(strtoupper(trim(preg_replace('/ +/',' ', "$adrNum $adrIndRep $adrTypeVoieLong $adrLibVoie"))));
@ -698,6 +851,9 @@ API keybing = 56D6CBA671C986D3EA11B1B48F97507BE9B46999
'adresseValidee'=>$this->adresseValidee,
'lat'=>$this->latitudeDec,
'lon'=>$this->longitudeDec,
'l93_x'=>$this->l93x,
'l93_y'=>$this->l93y,
'alt'=>$this->altitude,
'precis'=>$this->precision,
'source'=>$this->geocodeur,
'dateInsert'=>DATETIME,
@ -716,9 +872,7 @@ API keybing = 56D6CBA671C986D3EA11B1B48F97507BE9B46999
$ligne="Erreur : $adrNum, $adrIndRep, $adrTypeVoieCourt, $adrTypeVoieLong, $adrLibVoie, $cp, $ville, $pays, $codeRivoli, ".$this->body;
}
}
/*$fp=fopen(LOG_PATH.'/accesGMap.log', 'a');
fwrite($fp,$ligne.EOL);
fclose($fp);*/
}
/* if (latnorth == 'S') latdir='-'
if (lonwest == 'W') longdir='-'
@ -732,19 +886,27 @@ API keybing = 56D6CBA671C986D3EA11B1B48F97507BE9B46999
if (gmx < 0) gmx=gmx+Math.pow(2,32)*/
/** Retourne la distance en kilomètres entre 2 points à la surface de la terre
** Calcul effectué avec la sphère « GRS80 » de rayon R = 6378,187 km
** Autre sphère possible : « Picard » de rayon R = 6371,598 km
/** Retourne la distance en kilomètres entre 2 coordonnées GPS à la surface de la terre
**
** @param double $latA Latitude du point A en décimal
** @param double $lonA Longitude du point A en décimal
** @param double $latB Latitude du point B en décimal
** @param double $lonB Longitude du point B en décimal
** @param double $latA Latitude du point A en décimal
** @param double $lonA Longitude du point A en décimal
** @param double $latB Latitude du point B en décimal
** @param double $lonB Longitude du point B en décimal
** @param string $sphere Type de sphère
** @return unknown
**/
function distance($latA=0, $lonA=0, $latB=0, $lonB=0) {
//s(AB) = arc cos (sinjA sinjB + cos jA cosjB cosdl)
// avec dl = lB - lA
function distance($latA=0, $lonA=0, $latB=0, $lonB=0, $sphere='GRS80') {
switch ($sphere) {
case 'HAYFORD': $R=6378.388; // Demi grand axe ou Rayon de la sphère International Hayford 1909 en Kms
$f=1/297; // Aplatissement
break;
case 'PICARD': $R=6371.598; // Demi grand axe ou Rayon de la sphère Picard en Kms
break;
case 'GRS80':
default: $R=6378.137; // Demi grand axe ou Rayon de la sphère GRS80 en Kms
$f=1/298.257222101;
break;
}
$a=pi()/180;
$e=$latA*$a;
$f=$lonA*$a;
@ -753,26 +915,107 @@ function distance($latA=0, $lonA=0, $latB=0, $lonB=0) {
$j=acos(cos($e)*cos($g)*cos($f)*cos($h) + cos($e)*sin($f)*cos($g)*sin($h) + sin($e)*sin($g));
return round(6378.187*$j,3); // div par 1.852 ==> résultat en miles nautiques
return round($R*$j,3); // div par 1.852 ==> résultat en miles nautiques
}
/*function distance(lat_a, lon_a, lat_b, lon_b)
{
a = Math.PI / 180;
lat1 = lat_a * a;
lat2 = lat_b * a;
lon1 = lon_a * a;
lon2 = lon_b * a;
t1 = Math.sin(lat1) * Math.sin(lat2);
t2 = Math.cos(lat1) * Math.cos(lat2);
t3 = Math.cos(lon1 - lon2);
t4 = t2 * t3;
t5 = t1 + t4;
rad_dist = Math.atan(-t5/Math.sqrt(-t5 * t5 +1)) + 2 * Math.atan(1);
return (rad_dist * 3437.74677 * 1.1508) * 1.6093470878864446;
/** Retourne la distance en mètres entre 2 points sur une surface plane
** @param double $x1 Coordonnée X du point 1 en décimal
** @param double $y1 Coordonnée Y du point 1 en décimal
** @param double $x2 Coordonnée X du point 2 en décimal
** @param double $y2 Coordonnée Y du point 2 en décimal
** @return double
**/
function distanceLambert($x1,$y1,$x2,$y2) {
return sqrt ( pow($x1-$x2,2) + (pow($y1-$y2,2) ) );
}
/** Retourne l'altitude en mètres d'un point GPS. Shuttle Radar Topography Mission (SRTM) elevation data (resolution 90mx90m)
** @url http://ws.geonames.org/export/web-services.html
** @param double $tabLatLon Latitude du point ou Tableau de Points avec latitudes longitudes array('lat'=>x,'lon'=>y)
** @param double $lon Longitude ou false si tableau
** @return double
**/
function getAltitude($tabLatLon,$lon=false) {
if ($lon) {
/*Elevation - SRTM3
Shuttle Radar Topography Mission (SRTM) elevation data. SRTM consisted of a specially modified radar system that flew onboard the Space Shuttle Endeavour during an 11-day mission in February of 2000. The dataset covers land areas between 60 degrees north and 56 degrees south.
This web service is using SRTM3 data with data points located every 3-arc-second (approximately 90 meters) on a latitude/longitude grid. Documentation : Nasa
Webservice Type : REST
Url : api.geonames.org/srtm3?
Parameters : lat,lng;
sample area: ca 90m x 90m Result : a single number giving the elevation in meters according to srtm3, ocean areas have been masked as "no data" and have been assigned a value of -32768
Example http://api.geonames.org/srtm3?lat=50.01&lng=10.2&username=demo
This service is also available in XML and JSON format :api.geonames.org/srtm3XML?lat=50.01&lng=10.2&username=demo api.geonames.org/srtm3JSON?lat=50.01&lng=10.2&username=demo
The text version of the service also accepts a list of lat/lng for the parameters 'lats' and 'lngs'. On the free server the number of points per call is limited to 20, for the premium service the limit is 2000:
[0] => the daily limit of 30000 credits 78.31.45.206 has been exceeded. Please throttle your requests or use the commercial service
[1] => daily
[2] => 30000
[3] => 78.31.45.206
*/
$url="http://ws.geonames.org/srtm3?lat=$tabLatLon&lng=$lon";
$page=getUrl($url, '', '', '', false, '', '', 3);
$alt=trim($page['body']);
if (preg_match('/the (.*) limit of (.*) credits(.*) has been exceeded\. Please throttle your requests or use the commercial service/Uis', $alt, $matches)) {
print_r($matches);
$alt=NULL;
} elseif ($page['code']<>200 || $alt==-32768) {
if ($page['code']<>200) echo '==========================>'. $page['code']. '<=================================='.EOL;
$alt=NULL;
}
return array('lat'=>$tabLatLon,'lon'=>$lon,'alt'=>$alt);
} else {
$LatLon='';
$Lats='';
$Lons='';
foreach ($tabLatLon as $i=>$latlon) {
$lat=$latlon['lat'];
$lon2=$latlon['lon'];
if ($i>0) {
$LatLon.="%0D%0A";
$Lats.=',';
$Lons.=',';
}
$LatLon.="$lat%2C$lon2";
$Lats.=$lat;
$Lons.=$lon;
}
// http://api.geonames.org/srtm3?lats=50.01,51.01&lngs=10.2,11.2&username=demo
/* $url="http://api.geonames.org/srtm3?lats=$Lats&lng=$Lons&username=demo";
$page=getUrl($url, '', '', '', false, '', '', 3);
$alt=trim($page['body']);
die($alt);
if ($page['code']<>200 || $alt==-32768) {
if ($page['code']<>200) echo '==========================>'. $page['code']. '<=================================='.EOL;
$alt=NULL;
}
return array('lat'=>$tabLatLon,'lon'=>$lon,'alt'=>$alt);
*/
}
$url='http://www.fredorando.fr/Pages/altitude.php';
$post=array('LatLon'=>$LatLon,'qui'=>'');
$page=getUrl($url, '', $post, '', false, '', '', 3);
$body=$page['body'];
$tabRet=false;
if (preg_match('/<BODY>\s+IP\:(?:.*)<br\/>\s+url\:(?:.*)<br\/>(?:.*)<br\/>(?:.*)<br\/>(.*)<br\/>(?:.*)<a href="http/Uis', $body, $matches)) {
$tabRet=array();
$tabTmp=explode('<br />', $matches[1]);
foreach($tabTmp as $i=>$ret) {
$ret2=explode(',',trim($ret));
$alt=$ret2[2];
if ($alt==-32768) $alt=NULL;
$tabRet[$i]=@array('lat'=>$ret2[0],'lon'=>$ret2[1],'alt'=>$alt);
}
unset($tabRet[$i]);
}
if ($lon) return $tabRet[0];
return $tabRet;
}
}
if ( !function_exists('json_decode') ){

File diff suppressed because it is too large Load Diff

View File

@ -5,86 +5,87 @@ class MPrivileges {
private $iDb;
public $tabCodeAR=array(
'00'=>"Surveillance RCS posée/Demande de suppression acceptée/Surveillance PRIV posée : pas d'inscription existante sur le dossier",
'01'=>"Surveillance PRIV posée : inscription existante sur le dossier",
'01'=>"Surveillance PRIV posée : inscription existante sur le dossier",
'02'=>"GAGI,GREFTEL,INTERGREFFE-code 1-surveillance acceptée mais qui n'a pas encore fait l'objet d'un AR",
'03'=>"GAGI,GREFTEL,INTERGREFFE-code 2 - surveillance acceptée avec CREATION d'une fiche débiteur, qui n'a pas fait l'objet d'un AR",
'04'=>"GAGI-surveillance en attente envoyée au GAGI",
'05'=>"Surveillance en attente de validation au greffe",
'06'=>"Erreur de chargement",
'10'=>"Surveillance impossible car société radiée",
'11'=>"Surveillance impossible car société transférée dans un autre greffe",
'12'=>"SIREN inconnu",
'13'=>"Raison sociale erronée",
'14'=>"Adresse erronée",
'15'=>"Surveillance impossible sur un établissement secondaire",
'16'=>"Demande incomplète ou incorrecte",
'17'=>"Surveillance Privilège impossible",
'18'=>"Surveillance impossible par le greffe",
'19'=>"Surveillance RCS impossible",
'20'=>"Cette surveillance concerne un autre Greffe",
'21'=>"Surveillance BILAN impossible car la ste n'est pas tenue de déposer ses Comptes Annuels (ste de droit étranger)",
'22'=>"Plusieurs Bottins (débiteurs) (GAGI)",
'23'=>"Société de fait (GAGI) : Société non enregistrée au Registre du Commerce",
'24'=>"Surveillance impossible car société en liquidation judiciaire",
'25'=>"Greffe inconnu",
'26'=>"Millésime bilan à surveiller incorrect",
'27'=>"Références EXTELIA erronées ou incomplètes (ces reférences sont obligatoires en cas de demande de suppression)",
'28'=>"Surveillance impossible sur un dossier non informatisé (dossier dit non repris ou figé)",
'30'=>"Siren absent (ne concerne que les surveillances de type WebService)",
'31'=>"Surveillance BILAN impossible sur une société non commerciale (statut <> B)",
'50'=>"Ce greffe ne traite pas les surveillances car le groupement de ce greffe n'est pas surveillé",
'51'=>"Etablissement non trouvé",
'52'=>"Code catalogue de la surveillance non renseigné ou incorrect",
'53'=>"le siren est déjà sous surveillance",
'54'=>"DOSSIER AGORA : votre prestation ne comprend pas la couverture de ce groupement",
'55'=>"DOSSIER INTERGREFFE : votre prestation ne comprend pas la couverture de ce groupement de greffes",
'56'=>"Le siren est déjà en attente de validation par le greffe",
'57'=>"Surveillance impossible sur un dossier dit non inscrit au RCS (statut F:artisan)",
'58'=>"Surveillance impossible sur un agent commercial (statut P ou M)",
'88'=>"Rejet temporaire : surveillance sur un greffe absorbé rejetée pendant la phase de rechargement",
'10'=>"Surveillance impossible car société radiée",
'11'=>"Surveillance impossible car société transférée dans un autre greffe",
'12'=>"SIREN inconnu",
'13'=>"Raison sociale erronée",
'14'=>"Adresse erronée",
'15'=>"Surveillance impossible sur un établissement secondaire",
'16'=>"Demande incomplète ou incorrecte",
'17'=>"Surveillance Privilège impossible",
'18'=>"Surveillance impossible par le greffe",
'19'=>"Surveillance RCS impossible",
'20'=>"Cette surveillance concerne un autre Greffe",
'21'=>"Surveillance BILAN impossible car la ste n'est pas tenue de déposer ses Comptes Annuels (ste de droit étranger)",
'22'=>"Plusieurs Bottins (débiteurs) (GAGI)",
'23'=>"Société de fait (GAGI) : Société non enregistrée au Registre du Commerce",
'24'=>"Surveillance impossible car société en liquidation judiciaire",
'25'=>"Greffe inconnu",
'26'=>"Millésime bilan à surveiller incorrect",
'27'=>"Références EXTELIA erronées ou incomplètes (ces reférences sont obligatoires en cas de demande de suppression)",
'28'=>"Surveillance impossible sur un dossier non informatisé (dossier dit non repris ou figé)",
'30'=>"Siren absent (ne concerne que les surveillances de type WebService)",
'31'=>"Surveillance BILAN impossible sur une société non commerciale (statut <> B)",
'50'=>"Ce greffe ne traite pas les surveillances car le groupement de ce greffe n'est pas surveillé",
'51'=>"Etablissement non trouvé",
'52'=>"Code catalogue de la surveillance non renseigné ou incorrect",
'53'=>"le siren est déjà sous surveillance",
'54'=>"DOSSIER AGORA : votre prestation ne comprend pas la couverture de ce groupement",
'55'=>"DOSSIER INTERGREFFE : votre prestation ne comprend pas la couverture de ce groupement de greffes",
'56'=>"Le siren est déjà en attente de validation par le greffe",
'57'=>"Surveillance impossible sur un dossier dit non inscrit au RCS (statut F:artisan)",
'58'=>"Surveillance impossible sur un agent commercial (statut P ou M)",
'59'=>'Surveillance impossible sur une société non RCS ?',
'88'=>"Rejet temporaire : surveillance sur un greffe absorbé rejetée pendant la phase de rechargement",
'99'=>"Surveillance impossible pour raisons à examiner",
);
public $tabTypePriv=array(
'01'=>"NANTISSEMENTS DU FONDS DE COMMERCE",
'02'=>"PRIVILEGES DE VENDEUR ET ACTION RESOLUTOIRE",
'02'=>"PRIVILEGES DE VENDEUR ET ACTION RESOLUTOIRE",
'03'=>"PRIVILEGES DE LA SECURITE SOCIALE ET DES REGIMES COMPLEMENTAIRES",
'04'=>"PRIVILEGES DU TRESOR PUBLIC",
'05'=>"OPERATIONS DE CREDIT-BAIL EN MATIERE MOBILIERE",
'06'=>"PROTETS",
'07'=>"NANTISSEMENTS DE L'OUTILLAGE, MATERIEL ET EQUIPEMENT",
'08'=>"WARRANTS (HOTELIER, PETROLIER, INDUSTRIEL OU AGRICOLE)",
'10'=>"NANTISSEMENTS DE PARTS DE SOCIETE CIVILE",
'17'=>"PUBLICITES DE CONTRATS DE LOCATION",
'18'=>"PUBLICITES DE CLAUSES DE RESERVE DE PROPRIETE",
'19'=>"PRETS ET DELAIS",
'20'=>"DECLARATIONS DE CREANCES",
'21'=>"NANTISSEMENTS JUDICIAIRES",
'23'=>"BIENS INALIENABLES",
'24'=>"HYPOTHEQUES FLUVIALES",
'25'=>"NANTISSEMENTS DU FONDS ARTISANAL",
'27'=>"GAGE SANS DEPOSSESSION",
'28'=>"GAGE DES STOCKS",
'05'=>"OPERATIONS DE CREDIT-BAIL EN MATIERE MOBILIERE",
'06'=>"PROTETS",
'07'=>"NANTISSEMENTS DE L'OUTILLAGE, MATERIEL ET EQUIPEMENT",
'08'=>"WARRANTS (HOTELIER, PETROLIER, INDUSTRIEL OU AGRICOLE)",
'10'=>"NANTISSEMENTS DE PARTS DE SOCIETE CIVILE",
'17'=>"PUBLICITES DE CONTRATS DE LOCATION",
'18'=>"PUBLICITES DE CLAUSES DE RESERVE DE PROPRIETE",
'19'=>"PRETS ET DELAIS",
'20'=>"DECLARATIONS DE CREANCES",
'21'=>"NANTISSEMENTS JUDICIAIRES",
'23'=>"BIENS INALIENABLES",
'24'=>"HYPOTHEQUES FLUVIALES",
'25'=>"NANTISSEMENTS DU FONDS ARTISANAL",
'27'=>"GAGE SANS DEPOSSESSION",
'28'=>"GAGE DES STOCKS",
);
function __construct() {
$this->iDb=new WDB();
}
function getPrivilegesDetail($siren, $tabTypes=array('03','04')) {
$strTypes=implode("','", $tabTypes);
if ($strTypes<>'') $strTypes=" AND i.insType IN ('$strTypes') ";
$fields="i.id, i.dateEven, i.greffe , i.numDebiteur, i.sirenage, i.typeEven, i.dateFraiche, i.codeRev , i.debRaisonSociale , i.debSigle , i.debCiv , i.debNom , i.debPrenom , i.debConjoint , i.debUsage , i.debEnseigne , i.debActivite , i.debFj , i.debFjLib , i.debResidence , i.debNumVoie , i.debTypVoie , i.debLibVoie , i.debAdrComp , i.debCP , i.debVille , i.debPays , i.insType , i.insLib , i.insNum , i.insDate , i.insObjet , i.insMontant , i.insDev , i.insDateEch , i.insDateFin , i.insNanTx , i.insNanTitre , i.insNanOppo , i.insProNat , i.insProHui , i.insProRep , i.insNSCA , i.insNSCParts , i.insNSCSigni , i.creNom , i.creNumVoi, i.creTypVoi, i.creLibVoi, i.creAdrComp1, i.creAdrComp2, i.creCP, i.creVille, i.crePays, i.creAutres, i.radDate, i.radMention, i.radPartiel, i.radPartMt, i.radDev, i.radDiv, i.idFichier, i.dateInsert";
$where ="i.siren=$siren $strTypes AND ( (i.insType='03' AND DATEDIFF(NOW(),i.insDate)<=900) /** Durée de vie PRIV Sécu **/ OR (i.insType='04' AND DATEDIFF(NOW(),i.insDate)<=1460) /** Durée de vie PRIV Trésor **/ )";
$where.=" ORDER BY i.dateFraiche DESC, i.insType ASC, i.insDate ASC;";
$tables="greffes_privileges i";
$iRncs=new MRncs();
$tabRet=array();
$tabPriv=$this->iDb->select($tables, $fields, $where, true, MYSQL_ASSOC);
foreach ($tabPriv as $i=>$priv) {
if ($i>0 && $priv['dateFraiche']<>$dateFraiche) break;
if ($i>0 && $priv['dateFraiche']<>$dateFraiche) break;
$tabRet[]=array(
'numDebiteur' =>$priv['numDebiteur'],
'greffe' =>$priv['greffe'],
@ -116,11 +117,11 @@ class MPrivileges {
'creAutres' =>prepareString($priv['creAutres']),
);
/* debRaisonSociale , debSigle, debEnseigne
debCiv, debNom, debPrenom , debConjoint, debUsage,
debCiv, debNom, debPrenom , debConjoint, debUsage,
debActivite , debFj, debFjLib
debResidence, debNumVoie, debTypVoie, debLibVoie
debAdrComp , debCP, debVille, debPays
insNanTx, insNanTitre, insNanOppo,
insProNat, insProHui, insProRep , insNSCA, insNSCParts, insNSCSigni
*/
@ -128,7 +129,7 @@ class MPrivileges {
}
return $tabRet;
}
function getPrivilegesCumul($siren, $tabTypes=array('03','04')) {
$iRncs=new MRncs();
$tabRet=array();
@ -144,9 +145,9 @@ class MPrivileges {
$tabRet[$priv['insType']]['dateMajSD'] =$priv['dateSD'];
@$tabRet[$priv['insType']]['insCumul']+=$priv['insMontant'];
}
return $tabRet;
}
}

View File

@ -34,7 +34,7 @@ class MRncs {
7800=>array('codeSd'=>'M', 'lib'=>'Mandataire judiciaire'),
9100=>array('codeSd'=>'T', 'lib'=>'Conciliateur'),
);
public $tabDevises=array();
public $tabPays=array();
public $tabTribunaux=array();
@ -50,7 +50,7 @@ class MRncs {
public $cookie='';
public $infoIMR=array();
public $maxDemJour=10;
function __construct() {
$this->iDb=new WDB();
$this->tabDevises=$this->getTabDevisesInpi();
@ -64,19 +64,19 @@ class MRncs {
$codeFonctionDirectionRncs=$codeFonctionDirectionRncs*1;
return $this->tabFctDir[$codeFonctionDirectionRncs]['lib'];
}
public function getCodFctBodaccFctDir($codeFonctionDirectionRncs) {
$codeFonctionDirectionRncs=$codeFonctionDirectionRncs*1;
return $this->tabFctDir[$codeFonctionDirectionRncs]['codeSd'];
}
/** Initialisation du tableau privé des devises Inpi <=> ISO **/
private function getTabDevisesInpi() {
$rep=$this->iDb->select('tabDevises', 'devInpi, devIso', 'devInpi>0', false, MYSQL_ASSOC);
$tabDevises=array();
foreach($rep as $k=>$dev)
$tabDevises[$dev['devInpi']*1]=$dev['devIso'];
return $tabDevises;
}
@ -88,33 +88,33 @@ class MRncs {
public function getDeviseInpi($numDeviseInpi) {
if ($numDeviseInpi*1>0 && isset($this->tabDevises[$numDeviseInpi*1]))
return $this->tabDevises[$numDeviseInpi*1];
else
else
return '';
}
public function getTabJugements() {
$rep=$this->iDb->select('tabJugeRncs', 'codJugement, codEven', '1', false, MYSQL_ASSOC);
$tabJug=array();
foreach($rep as $k=>$dev)
$tabJug[$dev['codJugement']*1]=$dev['codEven'];
return $tabJug;
}
public function getCodeEvenJugementInpi($codJugementInpi) {
if ($codJugementInpi*1>0 && isset($this->tabJugements[$codJugementInpi*1]))
return $this->tabJugements[$codJugementInpi*1];
else
else
return $codJugementInpi;
}
/** Initialisation du tableau privé des pays Inpi <=> ISO **/
private function getTabPaysInpi() {
$rep=$this->iDb->select('tabPays', 'codePaysInpi, codPays', 'codePaysInpi>0', false, MYSQL_ASSOC);
$tabPays=array();
foreach($rep as $k=>$dev)
$tabPays[$dev['codePaysInpi']*1]=$dev['codPays'];
return $tabPays;
}
@ -140,18 +140,18 @@ class MRncs {
}
return $tabMandSD;
}
/** Donne l'id du mandataire en fonction de son libellé INPI
** @param string $strNomPrenom Nom et Prénom du mandataire
** @return int $id Identifiant du mandataire
** @return int $id Identifiant du mandataire
**/
public function getIdMandataireInpi($strNomPrenom) {
if (trim($strNomPrenom)=='') return false;
if (preg_match('/^(.*) (?:Me|Ma.tre) (.*)$/i', $strNomPrenom, $matches)) {
$nomPrenomToFind=strtr($matches[1],'àáâãäåæçèéêëìíîïðñòóôõöùúûüýÿ…‘-\' ', "aaaaaaaceeeeiiiionooooouuuuyy.....");
$nomToFind=strtr($matches[2],'àáâãäåæçèéêëìíîïðñòóôõöùúûüýÿ…‘-\' ', "aaaaaaaceeeeiiiionooooouuuuyy.....");
$nomPrenomToFind=strtr($matches[1],'àáâãäåæçèéêëìíîïðñòóôõöùúûüýÿ…‘-\' ', "aaaaaaaceeeeiiiionooooouuuuyy.....");
$nomToFind=strtr($matches[2],'àáâãäåæçèéêëìíîïðñòóôõöùúûüýÿ…‘-\' ', "aaaaaaaceeeeiiiionooooouuuuyy.....");
} else {
$nomPrenomToFind=strtr($strNomPrenom,'àáâãäåæçèéêëìíîïðñòóôõöùúûüýÿ…‘-\' ', "aaaaaaaceeeeiiiionooooouuuuyy.....");
$nomPrenomToFind=strtr($strNomPrenom,'àáâãäåæçèéêëìíîïðñòóôõöùúûüýÿ…‘-\' ', "aaaaaaaceeeeiiiionooooouuuuyy.....");
$nomToFind='';
}
$id=false;
@ -208,36 +208,36 @@ class MRncs {
if ($strNomPrenom=='ROUSSELOT GEGOUE Marie Adeline') return 361;*/
foreach ($this->tabMandataires as $mand) {
$nomToTest=strtr($mand['nom'],'àáâãäåæçèéêëìíîïðñòóôõöùúûüýÿ…‘-\' ', "aaaaaaaceeeeiiiionooooouuuuyy.....");
$nomToTest=strtr($mand['nom'],'àáâãäåæçèéêëìíîïðñòóôõöùúûüýÿ…‘-\' ', "aaaaaaaceeeeiiiionooooouuuuyy.....");
$tabTmp=preg_split('/( |-)/', $mand['prenom']);
$preToTest=strtr($tabTmp[0],'àáâãäåæçèéêëìíîïðñòóôõöùúûüýÿ…‘-\' ', "aaaaaaaceeeeiiiionooooouuuuyy.....");
$preToTest=strtr($tabTmp[0],'àáâãäåæçèéêëìíîïðñòóôõöùúûüýÿ…‘-\' ', "aaaaaaaceeeeiiiionooooouuuuyy.....");
if (preg_match("/$nomToTest/i", $nomPrenomToFind)) {
//echo "$nomToTest $preToTest TROUVE".EOL;
// Cas des mandataires en SCP
if ($nomToFind<>'' && preg_match("/$nomToTest/i", $nomToFind) && preg_match("/$preToTest/i", $nomToFind)) {
//if (!$id)
//if (!$id)
$id=$mand['id'];
//else return false; // Afin de ne pas renvoyer d'id si plusieurs mandataires trouvés
}
elseif ($nomToFind<>'' && preg_match("/$nomToTest/i", $nomToFind)) {
//if (!$id)
//if (!$id)
$id=$mand['id'];
//else return false; // Afin de ne pas renvoyer d'id si plusieurs mandataires trouvés
}
elseif (!$nomToFind && preg_match("/$preToTest/i", $nomPrenomToFind)) {
//if (!$id)
//if (!$id)
$id=$mand['id'];
//else return false; // Afin de ne pas renvoyer d'id si plusieurs mandataires trouvés
}
} elseif (preg_match("/$nomToTest/i", $nomToFind) && preg_match("/$preToTest/i", $nomToFind)) {
//if (!$id)
//if (!$id)
$id=$mand['id'];
//else return false; // Afin de ne pas renvoyer d'id si plusieurs mandataires trouvés
}
}
return $id;
}
/** Récupération du code ISO du code pays numérique de l'Inpi
**
** @param integer $pays
@ -246,10 +246,10 @@ class MRncs {
public function getPaysInpi($numPays) {
if ($numPays*1>0)
return $this->tabPays[$numPays*1];
else
else
return '';
}
/** Initialisation du tableau privé des codes tribunaux Greffes/Inpi avec le libellé Bodacc **/
private function getTabTribunaux() {
$rep=$this->iDb->select('tribunaux', 'triNumGreffe, triNom, triId, triCode', 'triNumGreffe IS NOT NULL', false, MYSQL_ASSOC);
@ -277,7 +277,7 @@ class MRncs {
$res=$this->iDb->fetch(MYSQL_ASSOC);
return $res['LibNaf'];
}
/** Récupération du libellé du code numérique du tribunal Greffe ou Inpi
**
** @param integer $numTribunal
@ -286,7 +286,7 @@ class MRncs {
public function getLibTribunal($numTribunal) {
if ($numTribunal*1>0)
return $this->tabTribunaux[$numTribunal*1]['Nom'];
else
else
return '';
}
@ -298,7 +298,7 @@ class MRncs {
public function getCodeBodaccTribunal($numTribunal) {
if ($numTribunal*1>0)
return $this->tabTribunaux[$numTribunal*1]['Code'];
else
else
return '';
}
@ -310,10 +310,10 @@ class MRncs {
public function getIdTribunal($numTribunal) {
if ($numTribunal*1>0)
return $this->tabTribunaux[$numTribunal*1]['Id'];
else
else
return '';
}
/** Retourne les informations de l'établissements demandé ou du siège actif ou dernier siège inactif
*
* @param integer $siren Siren de l'entreprise
@ -328,10 +328,10 @@ class MRncs {
$rep=$this->iDb->select('rncs_etab', 'siren, nic, siege, actif, enseigne, nomCommercial, adrNumVoie, adrIndRep, adrLibVoie, adrTypeVoie, adrVoie, cp, commune, adrComp, adresse1, adresse2, adresse3, naf, dateFermeture, flux, DATE(dateUpdate) AS jourUpdate', "siren=$siren $strSql", false, MYSQL_ASSOC);
$entrep=$rep[0];
if ($entrep['jourUpdate']<>'0000-00-00') $dateMaj=$entrep['jourUpdate'];
else $dateMaj=$entrep['flux'];
if (trim($entrep['adresse1'])=='') $adresse1=trim(preg_replace('/ +/',' ', $entrep['adrNumVoie'].' '.strtoupper($entrep['adrIndRep']).' '. strtoupper($entrep['adrLibVoie'])));
else $adresse1=trim(strtoupper($entrep['adresse1']));
if (trim($entrep['adresse2'])=='') $adresse2=trim(strtoupper($entrep['adrComp']));
@ -342,6 +342,7 @@ class MRncs {
'nic' => $entrep['nic'],
'siret' => $entrep['siren'].$entrep['nic'],
'actif' => $entrep['actif'],
'actifEt' => $entrep['actif'],
'siege' => $entrep['siege'],
'enseigne' => strtoupper($entrep['enseigne']),
'nomCommercial' => strtoupper($entrep['nomCommercial']),
@ -349,7 +350,7 @@ class MRncs {
'adrIndRep' => strtoupper($entrep['adrIndRep']),
'adrTypeVoie' => strtoupper($entrep['adrTypeVoie']),
'adrVoie' => strtoupper($entrep['adrVoie']),
'adrComp' => strtoupper($entrep['adrComp']),
'adrComp' => strtoupper($entrep['adrComp']),
'cp' => strtoupper($entrep['cp']),
'commune' => strtoupper($entrep['commune']),
'adresse1' => $adresse1,
@ -368,13 +369,14 @@ class MRncs {
$siren=$siren*1;
$rep=$this->iDb->select('rncs_entrep', 'siren, sirenValide, actif, numGreffe, triCode, triId, numRC, numRC2, raisonSociale, nom, prenom, nomUsage, sigle, dateNaiss, lieuNaiss, sexe, nationalite, pays, naf, cj, capitalMontant, capitalDevise, capitalDevIso, dateImma, dateRad, capitalType, capitalCent, provisoires, flux, DATE(dateUpdate) AS jourUpdate', "siren=$siren", false, MYSQL_ASSOC);
$entrep=$rep[0];
if ($entrep['jourUpdate']<>'0000-00-00') $dateMaj=$entrep['jourUpdate'];
else $dateMaj=$entrep['flux'];
$tabIdentite=array( 'siren' => $entrep['siren'],
'sirenValide' => $entrep['sirenValide'],
'actif' => $entrep['actif'],
'actifEn' => $entrep['actif'],
'numGreffe' => $entrep['numGreffe'],
'triCode' => $entrep['triCode'],
'triId' => $entrep['triId'],
@ -401,14 +403,14 @@ class MRncs {
'provisoires' => $entrep['provisoires'],
'dateMajEnt' => $dateMaj,
);
return $tabIdentite;
}
public function getListeDepots($siren) {
$siren=$siren*1;
$rep=$this->iDb->select('rncs_even e LEFT JOIN tabEvenRncs l ON e.codeEven=l.codeEven',
'e.siren, e.codeInterne, e.dateDepot, e.codeEven, l.libEven, e.flux, DATE(e.dateInsert) AS dateInsert',
'e.siren, e.codeInterne, e.dateDepot, e.codeEven, l.libEven, e.flux, DATE(e.dateInsert) AS dateInsert',
"e.siren=$siren ORDER BY e.dateDepot DESC", false, MYSQL_ASSOC);
$tabDepots=array();
foreach ($rep as $iDepot=>$depot) {
@ -422,12 +424,12 @@ class MRncs {
}
return $tabDepots;
}
public function getListeJugements($siren) {
$siren=$siren*1;
$rep=$this->iDb->select('rncs_jugements j, tabJugeRncs l, tabEvenements e',
'siren, j.dateEffet, j.codeJugement, j.flux, l.libJugement, e.codEven, e.libEven,
adm1id, adm1codeFct, adm1type, adm1nom, adm1adrNum, adm1adrInd, adm1adrType, adm1adrLibVoie, adm1adrVoie, adm1adr1, adm1adr2, adm1adr3, adm1adrCP, adm1adrVille,
adm1id, adm1codeFct, adm1type, adm1nom, adm1adrNum, adm1adrInd, adm1adrType, adm1adrLibVoie, adm1adrVoie, adm1adr1, adm1adr2, adm1adr3, adm1adrCP, adm1adrVille,
adm2id, adm2codeFct, adm2type, adm2nom, adm2adrNum, adm2adrInd, adm2adrType, adm2adrLibVoie, adm2adrVoie, adm2adr1, adm2adr2, adm2adr3, adm2adrCP, adm2adrVille',
"j.siren=$siren AND j.codeJugement=l.codJugement AND l.codEven=e.codEven ORDER BY j.dateEffet DESC", false, MYSQL_ASSOC);
/*adm1adrNum adm1adrInd adm1adrType adm1adrLibVoie adm1adrVoie adm1adr1 adm1adr2 adm1adr3 adm1adrCP adm1adrVille adm2codeFct adm2type adm2id adm2nom adm2adrNum adm2adrInd adm2adrType adm2adrLibVoie adm2adrVoie adm2adr1 adm2adr2 adm2adr3 adm2adrCP adm2adrVille flux dateSuppr dateInsert
@ -451,7 +453,7 @@ class MRncs {
'adm1adrVille' => $depot['adm1adrVille'],
'adm2id' => $depot['adm2id'],
'adm2code' => $depot['adm2codeFct'],
'adm2type' => $depot['adm2type'],
'adm2type' => $depot['adm2type'],
'adm2fonction' => @$this->getLibFctDir($depot['adm2codeFct']),
'adm2nom' => $depot['adm2nom'],
'adm2adrNum' => $depot['adm2adrNum'],
@ -460,21 +462,21 @@ class MRncs {
'adm2adrVoie' => $depot['adm2adrLibVoie'], // @todo : adm1adr1, adm1adr2, adm1adr3,
'adm2adr2' => $depot['adm2adr2'],
'adm2adrCP' => $depot['adm2adrCP'],
'adm2adrVille' => $depot['adm2adrVille'],
'adm2adrVille' => $depot['adm2adrVille'],
);
}
return $tabDepots;
}
public function getEvenements($siren, $nic=0, $type='', $dateDeb='', $dateFin='') {
$tabEven=array( 'p120'=>'Réactivation de l\'entreprise',
'p410'=>'Cessation juridique de l\'entreprise',
'pCAP'=>'Modification du capital social',
'pCAT'=>'Modification du type de capital',
'pCJ' =>'Modification de la forme juridique',
'pIMM'=>'Modification de la date d\'immatriculation',
'pRAD'=>'Modification de la date de radiation',
'pNTR'=>'Modification du greffe d\'enregistrement',
'pCAP'=>'Modification du capital social',
'pCAT'=>'Modification du type de capital',
'pCJ' =>'Modification de la forme juridique',
'pIMM'=>'Modification de la date d\'immatriculation',
'pRAD'=>'Modification de la date de radiation',
'pNTR'=>'Modification du greffe d\'enregistrement',
'pNRC'=>'Modification du numéro du RC',
'pNOM'=>'Modification de la dénomination',
);
@ -484,7 +486,7 @@ class MRncs {
if ($type<>'') $strType=" AND champs='$type' ";
if ($dateDeb<>'') $strDateDeb=" AND flux>='$dateDeb' ";
if ($dateFin<>'') $strDateFin=" AND flux<='$dateFin' ";
$rep=$this->iDb->select('rncs_modifs',
'siren, nic, `table`, champs, valeur, flux, dateInsert',
"siren=$siren $strNic $strType $strDateDeb $strDateFin AND `table`='rncs_entrep' ORDER BY flux DESC", false, MYSQL_ASSOC);
@ -493,16 +495,16 @@ class MRncs {
switch($modif['champs']) {
case 'actif':
if ($modif['valeur']*1==0) $codEve[]='410'; // Cessation
elseif ($modif['valeur']*1==1) $codEve[]='120'; // Réactivation
elseif ($modif['valeur']*1==1) $codEve[]='120'; // Réactivation
break;
case 'raisonSociale': $codEve[]='NOM'; break;
case 'capitalMontant': $codEve[]='CAP'; break;
case 'capitalMontant': $codEve[]='CAP'; break;
case 'capitalType': $codEve[]='CAT'; break;
case 'cj': $codEve[]='CJ'; break;
case 'dateImma': $codEve[]='IMM'; break;
case 'dateRad': $codEve[]='RAD'; break;
case 'numGreffe': $codEve[]='NTR'; break;
case 'numRC2': $codEve[]='NRC'; break;
case 'cj': $codEve[]='CJ'; break;
case 'dateImma': $codEve[]='IMM'; break;
case 'dateRad': $codEve[]='RAD'; break;
case 'numGreffe': $codEve[]='NTR'; break;
case 'numRC2': $codEve[]='NRC'; break;
}
foreach ($codEve as $even)
$tabRet[]=array('codeEven' => 'P'.$even,
@ -551,7 +553,7 @@ class MRncs {
'admadrInd' => $depot['adm1adrInd'],
'admadrType' => $depot['adm1adrType'],
'admadrVoie' => $depot['adm1adrVoie'], // @todo : adm1adr1, adm1adr2, adm1adr3,
'admadr2' => $depot['adm1adr2'],
'admadr2' => $depot['adm1adr2'],
'admadrCP' => $depot['adm1adrCP'],
'admadrVille' => $depot['adm1adrVille'],
);
@ -570,12 +572,12 @@ class MRncs {
'admadrInd' => $depot['adm2adrInd'],
'admadrType' => $depot['adm2adrType'],
'admadrVoie' => $depot['adm2adrVoie'], // @todo : adm1adr1, adm1adr2, adm1adr3,
'admadr2' => $depot['adm2adr2'],
'admadr2' => $depot['adm2adr2'],
'admadrCP' => $depot['adm2adrCP'],
'admadrVille' => $depot['adm2adrVille'],
);
$tabDeja[]=$depot['adm2code'];
}
}
}
if (count($tabDepots)>0) {
$strTypes="IN ('J','K','H','V','N')";
@ -586,7 +588,7 @@ class MRncs {
$forceRecherche=true;
$strDates='';
}
$tabTmp=$this->iDb->select('annonces', 'id, siren, typeEven, dateJugement, dateCessationPaiement, inter1type, inter1id, inter1nom, inter2type, inter2id, inter2nom, inter3type, inter3id, inter3nom, inter4type, inter4id, inter4nom,
dateSource, dateInsert, source, tribunal, raisonSociale',"siren=$siren $strDates AND ( inter1type $strTypes OR inter2type $strTypes OR inter3type $strTypes OR inter4type $strTypes ) AND typeEven BETWEEN 1000 AND 2000 ORDER BY dateJugement DESC", false, MYSQL_ASSOC);
if (isset($tabTmp[0])) {
@ -594,9 +596,9 @@ class MRncs {
$tabRet['dateCessationPaiement']=$depot['dateCessationPaiement'];
for($i=1; $i<4; $i++) {
if ( ($forceRecherche && !in_array($tabTmp['inter'.$i.'type'], $tabDeja)) ||
( $tabTmp['inter'.$i.'type']=='J' || $tabTmp['inter'.$i.'type']=='K' ||
$tabTmp['inter'.$i.'type']=='H' || $tabTmp['inter'.$i.'type']=='V' ||
$tabTmp['inter'.$i.'type']=='N') ) {
( $tabTmp['inter'.$i.'type']=='J' || $tabTmp['inter'.$i.'type']=='K' ||
$tabTmp['inter'.$i.'type']=='H' || $tabTmp['inter'.$i.'type']=='V' ||
$tabTmp['inter'.$i.'type']=='N') ) {
$tabDepots[]=array( 'codEven' => $depot['typeEven'],
'libEven' => $depot['typeEven'],
'dateEffet' => $depot['dateJugement'],
@ -608,8 +610,8 @@ class MRncs {
'admadrNum' => '',
'admadrInd' => '',
'admadrType' => '',
'admadrVoie' => '',
'admadr2' => '',
'admadrVoie' => '',
'admadr2' => '',
'admadrCP' => '',
'admadrVille' => '',
);
@ -626,7 +628,7 @@ class MRncs {
* @param $focerMAJ Forcer la mise à jour même si dossier déjà transmit
*/
public function majDossierIMR($siren, $origineDemande='', $focerMAJ=false) {
$this->infoIMR=array();
if ($siren*1==0) {
$this->libErreur='Siren invalide !';
@ -646,7 +648,7 @@ class MRncs {
$this->codeRetour=$page['code'];
//echo date('YmdHis')." - 1. FIN $url ".$this->codeRetour.EOL;
if ($this->codeRetour<>'400') break;
sleep(1);
sleep(1);
}
$this->body=$page['body'];
if ($this->codeRetour<>'200') {
@ -666,7 +668,7 @@ class MRncs {
//echo date('YmdHis')." - 2. FIN $url ".$this->codeRetour.EOL;
$this->codeRetour=$page['code'];
if ($this->codeRetour<>'400') break;
sleep(1);
sleep(1);
}
$this->body=$page['body'];
if ($this->codeRetour<>'200') {
@ -676,7 +678,7 @@ class MRncs {
}
$this->referer=$url;
sleep(1);
/** Etape de logon **/
$url='http://www.infogreffe.fr/ged-extranet/login.do';
$postData=array('codeClient'=>'0034',
@ -689,7 +691,7 @@ class MRncs {
$this->codeRetour=$page['code'];
//echo date('YmdHis')." - 3. FIN $url ".$this->codeRetour.EOL;
if ($this->codeRetour<>'400') break;
sleep(1);
sleep(1);
}
$this->body=$page['body'];
if ($this->codeRetour<>'200') {
@ -703,7 +705,7 @@ class MRncs {
}
$this->referer=$url;
sleep(1);
/** Page de formulaire de demande de réémission de dossier IMR **/
$url='http://www.infogreffe.fr/ged-extranet/demandeReemissions.do';
while (1) {
@ -712,7 +714,7 @@ class MRncs {
$this->codeRetour=$page['code'];
//echo date('YmdHis')." - 4. FIN $url ".$this->codeRetour.EOL;
if ($this->codeRetour<>'400') break;
sleep(1);
sleep(1);
}
$this->body=$page['body'];
if ($this->codeRetour<>'200') {
@ -722,7 +724,7 @@ class MRncs {
}
$this->referer=$url;
sleep(1);
/** Saisie du siren à contrôler dans le formulaire AJAX adéquat **/
$url='http://www.infogreffe.fr/ged-extranet/rechercheReemissions.do';
$postData=array('siren'=>$siren);
@ -731,9 +733,9 @@ class MRncs {
//echo date('YmdHis')." - 5. Deb $url ".$this->codeRetour.EOL;
$page=getUrl($url, $this->cookie, $postData, $this->referer, false, 'www.infogreffe.fr', false, '', $query_proxy, $query_timeout);
$this->codeRetour=$page['code'];
//echo date('YmdHis')." - 5. FIN $url ".$this->codeRetour.EOL;
//echo date('YmdHis')." - 5. FIN $url ".$this->codeRetour.EOL;
if ($this->codeRetour<>'400') break;
sleep(1);
sleep(1);
}
$this->body=$page['body'];
if ($this->codeRetour<>'200') {
@ -742,11 +744,11 @@ class MRncs {
return false;
}
$this->referer=$url;
// Le retour AJAX est il positif ?
if (preg_match('/<div class="message-erreur">(.*)<\/div>/Uis', $this->body, $matches))
$this->infoIMR['message-erreur']=trim(preg_replace('/ +/',' ',strip_tags($matches[1])));
if (preg_match('/<div class="titreEntreprise">(?:.*)<b>(.*)<\/b>(?:.*)<\/div>/Uis', $this->body, $matches))
$this->infoIMR['titreEntreprise']=trim(preg_replace('/ +/',' ',strip_tags($matches[1])));
@ -755,7 +757,7 @@ class MRncs {
if (preg_match('/<div class="struct-erreur">(?:.*)<b>(.*)<\/b>(?:.*)<\/div>/Uis', $this->body, $matches))
$this->infoIMR['struct-erreur']=trim(preg_replace('/ +/',' ',strtr(strip_tags($matches[1]),"\r\n\t".chr(160),' ')));
if (preg_match('/Cliquez sur le bouton VALIDER pour confirmer votre demande de/', $this->body, $matches))
$this->infoIMR['validation']=true;
else {
@ -769,16 +771,16 @@ class MRncs {
$this->iDb->insert('rncs_demandes', $tabInsert, false);
}
}
if (preg_match('/atteint le nombre maximal de(.*)Veuillez renouveler votre demande demain/',
$this->infoIMR['message-erreur']))
return false;
if ($this->infoIMR['validation'] && $this->infoIMR['message-erreur']=='') {
/** Doit on forcer la maj si l'entreprise a été transmise récemment ? **/
if ($this->infoIMR['struct-erreur']<>'' && !$focerMAJ)
return true;
sleep(1);
/** Validation du siren à réémettre en IMR **/
$url='http://www.infogreffe.fr/ged-extranet/validerDemandeReemission.do';
@ -790,7 +792,7 @@ class MRncs {
$this->codeRetour=$page['code'];
//echo date('YmdHis')." - 6. FIN $url ".$this->codeRetour.EOL;
if ($this->codeRetour<>'400') break;
sleep(1);
sleep(1);
}
$this->body=$page['body'];
$this->codeRetour=$page['code'];
@ -811,11 +813,11 @@ class MRncs {
if ($origineDemande<>'')
$tabInsert['origineDemande']=$origineDemande;
$this->iDb->insert('rncs_demandes', $tabInsert, false);
// Une erreur ?
if ($this->infoIMR['validation-erreur']<>'')
return false;
return true;
}
} else

View File

@ -130,7 +130,7 @@ class classMSigVille {
try {
if (trim($raisonSociale)=='') $raisonSociale='TEST'; // Le RNVP ne fonctionne pas sans la Raison Sociale qui est la 1ère ligne d'adresse
$rep=$this->client->zonage( new SoapParam(strtr("$raisonSociale:$adresse:$cp:$ville",
'¿°ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõöøùúûýýþÿ??',
'¿°ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõöøùúûýýþÿ??',
' aaaaaaaceeeeiiiidnoooooouuuuybsaaaaaaaceeeeiiiidnoooooouuuyybyRr'),'adresse'),
new SoapParam(':','separateur'),
new SoapParam('type=M','options')
@ -141,7 +141,7 @@ class classMSigVille {
/** Découpage des ZFU, CUCS etcs...
**/
$fp=fopen(LOG_PATH.'amabis.log', 'a');
$fp=fopen(LOG_PATH.'/amabis.log', 'a');
fwrite($fp, date('d-m-Y H:i:s').' - '.implode("\n", $rep)."\n============================================================================\n");
fclose($fp);
@ -179,7 +179,7 @@ class classMSigVille {
$tabZones=explode(',',$rep['objdesc']);
foreach ($tabZones as $zone) {
$tabTmp=explode('=',$zone);
if (trim($tabTmp[0])<>'')
if (trim($tabTmp[0])<>'')
$tabRepTmp[$tabTmp[0]]=$tabTmp[1];
}
if (!$debug) {
@ -199,7 +199,7 @@ class classMSigVille {
print_r($fault);
echo $this->client->__getLastRequest()."\n";
echo $this->client->__getLastResponse()."\n";
$fp=fopen(LOG_PATH.'amabis.log', 'a');
$fp=fopen(LOG_PATH.'/amabis.log', 'a');
fwrite($fp, date('d-m-Y H:i:s').' - ERREUR SOAP : Requete = '.$this->client->__getLastRequest()."\n Reponse = ".$this->client->__getLastResponse()."\n============================================================================\n");
fclose($fp);
}
@ -232,7 +232,7 @@ class classMSigVille {
$rep=$this->client->rechtel($query);
$fp=fopen(LOG_PATH.'amabis.log', 'a');
$fp=fopen(LOG_PATH.'/amabis.log', 'a');
fwrite($fp, date('d-m-Y H:i:s')." - $query - ".implode("\n", $rep)."\n============================================================================\n");
fwrite($fp, "Requête : ".$this->client->__getLastRequest()."\n");
fwrite($fp, "Réponse : ".$this->client->__getLastResponse()."\n");

View File

@ -1,22 +1,23 @@
<?
class MTel {
public $body = '';
public $header = '';
public $codeRetour = 0;
public $cookie='';
public $urlBase='http://www.pagespro.com/recherche.php';
public $url='';
public $referer='';
public $enCache=false;
private $accesDistant=false;
public $iDb;
public function __construct($accesDistant=false) {
$this->accesDistant=$accesDistant;
$this->accesDistant=false; // Accès bloqué par "pagespro"
if ($this->accesDistant) {
$this->url=$this->urlBase;
$page=getUrl($this->url,$this->cookie,'',$this->referer, false, '', '', 3);
@ -27,14 +28,14 @@ class MTel {
}
$this->iDb=new WDB('jo');
}
/**
* @todo :
* 1. Faire une fonction qui récupère les Logos
* 2. Envoyer les logos par le WS
* 3. Permettre la recherche par Tel
*/
public function getTel($siret, $nic=0) {
$tabRet=array();
@ -44,7 +45,7 @@ class MTel {
$siren=round($siret/100000)*1;
} else
$siren=$siret*1;
if (strlen($siren)<=9) {
/** Si le siren est de taille < à 9, on ajoute des 0 significatifs **/
switch (strlen($siren)) {
@ -66,7 +67,7 @@ class MTel {
case 4: $nic='0'.$nic; break;
}
}
$strNic='';
if ($nic*1>0) $strNic="AND (nic=$nic OR nic=0)";
$ret=$this->iDb->select('telephonie',
@ -77,9 +78,9 @@ class MTel {
foreach ($ret as $tabTel) {
if ($tabTel['typeTel']=='an8' && $tabTel['infoTel']*1>0) {
$an8=$tabTel['infoTel']*1;
$retTmp=$this->iDb->select('tabAn8', 'libAn8', "codAn8='$an8'", false, MYSQL_ASSOC);
$retTmp=$this->iDb->select('tabAn8', 'libAn8', "codAn8='$an8'", false, MYSQL_ASSOC);
$infoTel=ucfirst(strtolower($retTmp[0]['libAn8']));
} else
} else
$infoTel=$tabTel['infoTel'];
$tabRet[]=array('siren'=>$siren,
'nic'=>$tabTel['nic'],
@ -114,11 +115,11 @@ class MTel {
$this->referer=$this->url;
$this->body=$page['body'];
$this->codeRetour=$page['code'];
$nbResults=0;
if (preg_match('/<b class="total_responses_nr">(.*)réponses<\/b>/Uis', $this->body, $matches))
$nbResults=trim(strtr(strip_tags($matches[1]), array('&nbsp;'=>'','&ndash;'=>'')));
if ($nbResults>0) {
$tabResultsHtml=explode('<div class="results_part1">', $this->body);
for ($i=1; isset($tabResultsHtml[$i]);$i++) {
@ -126,16 +127,16 @@ class MTel {
$body=$tabResultsHtml[$i];
$res['nom']=trim(htm2txt(@getTextInHtml($body, '<div class="results_title">', '_title">', '</div>')));
$res['adresse']=trim(htm2txt(@getTextInHtml($body, '<div class="coordonnees">','<div>','<table id="t_coord_')));
$res['urlSite']=trim(htm2txt(@getTextInHtml($body, '<b class="siteweb">Site Web :</b>&nbsp;', "javascript:SiteURL('", "','")));
$res['urlMail']=trim(htm2txt(@getTextInHtml($body, '<b>E-mail :</b>', "&amp;mail=", "', ")));
$res['urlLogo']=trim(htm2txt(@getTextInHtml($body, '<div class="results_inset_logo">', '" src="', '" border="')));
$res['tefet']=trim(htm2txt(@getTextInHtml($body, '<b>Effectif établ : </b>','</b>','</div>')));
$res['tefet']=trim(htm2txt(@getTextInHtml($body, '<b>Effectif établ : </b>','</b>','</div>')));
$res['siret']=trim(htm2txt(@getTextInHtml($body, '<b>Siret : </b>','</b>','</div>')));
$res['nafet']=trim(htm2txt(strip_tags(@getTextInHtml($body, '<b>Code NAF : </b>','</b>','</div>'))));
$res['domaines']=trim(preg_replace('/ +/', ' ', preg_replace('/\r+|\n+|\s+/',' ',htm2txt(strip_tags(@getTextInHtml($body, '<div class="puce_domaine">','<strong>','</div>'))))));
if ($res['urlSite']<>'') {
@ -154,7 +155,7 @@ class MTel {
'typeTel'=>'web',
'infoTel'=>$res['urlSite'],
'telephone'=>0,
);
);
}
if ($res['urlLogo']<>'') {
$this->iDb->insert('telephonie', array( 'siren'=>$siren,
@ -220,7 +221,7 @@ class MTel {
}
$tabTel=array_values($tabTel);
foreach ($tabTel as $tabT) {
$tabRet[]=array('siren'=>$siren,
'nic'=>substr($res['siret'],-5),
@ -248,7 +249,7 @@ class MTel {
$url="http://www.annuaire.com/societe/-$siren/";
//$page=getUrl($this->url,$this->cookie,'',$this->referer, false, '', '', 3);
$page=getUrl($url,'','','',false,'','',3);
if ($page['code']<>301) return false;
$url2=$page['header']['Location'];
$page=getUrl($url2,'','',$url,false,'','',3);
@ -256,12 +257,12 @@ class MTel {
if (!preg_match('/<a href="http:\/\/www\.annuaire\.com\/inscription\/1\/\?companyid=(.*)&amp;go=next"/Uis', $page['body'], $matches)) {
print_r($page);
die($siren);
}
}
}*/
}
return $tabRet;
}
function getOperateur($tel) {
/*http://www.arcep.fr/index.php?id=interactivenumeros
Données POST:
@ -271,7 +272,7 @@ class MTel {
http://www.arcep.fr/index.php?id=interactivenumeros&CMD=DETAILS_SOC&uid=158757&bloc=017543&cHash=0c29e39859
http://www.arcep.fr/uploads/tx_gsavis/05-0233.pdf
*/
}
}

View File

@ -1,4 +1,213 @@
<?
/** Ratios pour les collectivités **/
global $tabZones2Ratios;
/** Tableau de conversion des communes **/
$tabZones2Ratios=array(
'R01a'=>'R[801]',
'R01b'=>'Rh[801]',
'R01c'=>'Rs[801]',
'R02a'=>'R[802]',
'R02b'=>'Rh[802]',
'R02c'=>'Rs[802]',
'R02d'=>'Rq[802]',
'R02e'=>'Rt[802]',
'R03a'=>'R[803]',
'R03b'=>'Rh[803]',
'R03c'=>'Rs[803]',
'R03d'=>'Rq[803]',
'R03e'=>'Rt[803]',
'R04a'=>'R[804]',
'R04b'=>'Rh[804]',
'R04c'=>'Rs[804]',
'R04d'=>'Rq[804]',
'R04e'=>'Rt[804]',
'R05a'=>'R[805]',
'R05b'=>'Rh[805]',
'R05c'=>'Rs[805]',
'R06a'=>'R[806]',
'R06b'=>'Rh[806]',
'R06c'=>'Rs[806]',
'R06d'=>'Rq[806]',
'R06e'=>'Rt[806]',
'R07a'=>'R[807]',
'R07b'=>'Rh[807]',
'R07c'=>'Rs[807]',
'R07d'=>'Rq[807]',
'R07e'=>'Rt[807]',
'R08a'=>'R[808]',
'R08b'=>'Rh[808]',
'R08c'=>'Rs[808]',
'R08d'=>'Rq[808]',
'R08e'=>'Rt[808]',
'R09a'=>'R[809]',
'R09b'=>'Rh[809]',
'R09c'=>'Rs[809]',
'R09d'=>'Rq[809]',
'R09e'=>'Rt[809]',
'R10a'=>'R[810]',
'R10b'=>'Rh[810]',
'R10c'=>'Rs[810]',
'R10d'=>'Rq[810]',
'R10e'=>'Rt[810]',
'R11a'=>'R[811]',
'R11b'=>'Rh[811]',
'R11c'=>'Rs[811]',
'R12a'=>'R[812]',
'R12b'=>'Rh[812]',
'R12c'=>'Rs[812]',
'R13a'=>'R[813]',
'R13b'=>'Rh[813]',
'R13c'=>'Rs[813]',
'R13d'=>'Rq[813]',
'R13e'=>'Rt[813]',
'R14a'=>'R[814]',
'R14b'=>'Rh[814]',
'R14c'=>'Rs[814]',
'R14d'=>'Rq[814]',
'R14e'=>'Rt[814]',
'R15a'=>'R[815]',
'R15b'=>'Rh[815]',
'R15c'=>'Rs[815]',
'R15d'=>'Rq[815]',
'R15e'=>'Rt[815]',
'R16a'=>'R[816]',
'R16b'=>'Rh[816]',
'R16c'=>'Rs[816]',
'R16d'=>'Rq[816]',
'R16e'=>'Rt[816]',
'R17a'=>'R[817]',
'R17b'=>'Rh[817]',
'R17c'=>'Rs[817]',
'R18a'=>'R[818]',
'R18b'=>'Rh[818]',
'R18c'=>'Rs[818]',
'R18d'=>'Rq[818]',
'R18e'=>'Rt[818]',
'R19a'=>'R[819]',
'R19b'=>'Rh[819]',
'R19c'=>'Rs[819]',
'R19d'=>'Rq[819]',
'R19e'=>'Rt[819]',
'R20a'=>'R[820]',
'R20b'=>'Rh[820]',
'R20c'=>'Rs[820]',
'R20d'=>'Rq[820]',
'R20e'=>'Rt[820]',
'R21a'=>'R[821]',
'R21b'=>'Rh[821]',
'R21c'=>'Rs[821]',
'R21d'=>'Rq[821]',
'R21e'=>'Rt[821]',
'R22a'=>'R[822]',
'R22b'=>'Rh[822]',
'R22c'=>'Rs[822]',
'R23a'=>'R[823]',
'R23b'=>'Rh[823]',
'R23c'=>'Rs[823]',
'R24a'=>'R[824]',
'R24b'=>'Rh[824]',
'R24c'=>'Rs[824]',
'R25a'=>'R[825]',
'R25b'=>'Rh[825]',
'R25c'=>'Rs[825]',
'R26a'=>'R[826]',
'R26b'=>'Rh[826]',
'R26c'=>'Rs[826]',
'R26d'=>'Rq[826]',
'R26e'=>'Rt[826]',
'R27a'=>'R[827]',
'R27b'=>'Rh[827]',
'R27c'=>'Rs[827]',
'R27d'=>'Rq[827]',
'R27e'=>'Rt[827]',
'R28a'=>'R[828]',
'R28b'=>'Rh[828]',
'R28c'=>'Rs[828]',
'R28d'=>'Rq[828]',
'R28e'=>'Rt[828]',
'R29a'=>'R[829]',
'R29b'=>'Rh[829]',
'R29c'=>'Rs[829]',
'R29d'=>'Rq[829]',
'R29e'=>'Rt[829]',
'R30a'=>'R[830]',
'R30b'=>'Rh[830]',
'R30c'=>'Rs[830]',
'R30d'=>'Rq[830]',
'R30e'=>'Rt[830]',
'R31a'=>'R[843]',
'R31b'=>'Rh[843]',
'R31c'=>'Rs[843]',
'R31d'=>'Rq[843]',
'R31e'=>'Rt[843]',
'R32a'=>'R[831]',
'R32b'=>'Rh[831]',
'R32c'=>'Rs[831]',
'R33a'=>'R[832]',
'R33b'=>'Rh[832]',
'R33c'=>'Rs[832]',
'R33d'=>'R[845]',
'R33e'=>'Rh[845]',
'R33f'=>'Rs[845]',
'R34a'=>'R[833]',
'R34b'=>'Rh[833]',
'R34c'=>'Rs[833]',
'R34d'=>'R[846]',
'R34e'=>'Rh[846]',
'R34f'=>'Rs[846]',
'R35a'=>'R[834]',
'R35b'=>'Rh[834]',
'R35c'=>'Rs[834]',
'R35d'=>'R[847]',
'R35e'=>'Rh[847]',
'R35f'=>'Rs[847]',
'R36a'=>'R[835]',
'R36b'=>'Rh[835]',
'R36c'=>'Rs[835]',
'R36d'=>'R[849]',
'R36e'=>'Rh[849]',
'R36f'=>'Rs[849]',
'R37a'=>'R[844]',
'R37b'=>'Rh[844]',
'R37c'=>'Rs[844]',
'R37d'=>'R[848]',
'R37e'=>'Rh[848]',
'R37f'=>'Rs[848]',
'R38a'=>'R[836]',
'R38b'=>'Rh[836]',
'R38c'=>'Rs[836]',
'R38d'=>'Rq[836]',
'R38e'=>'Rt[836]',
'R39a'=>'R[837]',
'R39b'=>'Rh[837]',
'R39c'=>'Rs[837]',
'R39d'=>'Rq[837]',
'R39e'=>'Rt[837]',
'R40a'=>'R[838]',
'R40b'=>'Rh[838]',
'R40c'=>'Rs[838]',
'R40d'=>'Rq[838]',
'R40e'=>'Rt[838]',
'R41a'=>'R[842]',
'R41b'=>'Rh[842]',
'R41c'=>'Rs[842]',
'R41d'=>'Rq[842]',
'R41e'=>'Rt[842]',
'R42a'=>'R[839]',
'R42b'=>'Rh[839]',
'R42c'=>'Rs[839]',
'R42d'=>'Rq[839]',
'R42e'=>'Rt[839]',
'R43a'=>'R[840]',
'R43b'=>'Rh[840]',
'R43c'=>'Rs[840]',
'R43d'=>'Rq[840]',
'R43e'=>'Rt[840]',
'R44a'=>'R[841]',
'R44b'=>'Rh[841]',
'R44c'=>'Rs[841]',
);
function genereCacheRatios() {
$tabMoy=array();
@ -55,25 +264,25 @@
fwrite($fp, ' $numBil=0;' ."\n");
fwrite($fp, ' $numBilType=array();' ."\n");
fwrite($fp, ' foreach ($tabBilans as $millesime=>$bil) {' ."\n");
fwrite($fp, ' $tabTmp=@$mBil->getBilan(substr($millesime,-10), substr($millesime,0,1), @$bil[\'ref\'], $accesPartenaire);' ."\n");
fwrite($fp, ' $tabTmp=@$mBil->getBilan(substr($millesime,-10), substr($millesime,0,1), @$bil[\'ref\'], $accesPartenaire, $nbRatiosMax=5);' ."\n");
fwrite($fp, ' $numBilType[substr($millesime,0,1)]++;' ."\n");
fwrite($fp, ' if (substr($millesime,0,1)==\'S\') {' ."\n");
fwrite($fp, ' if ($numBilType[\'S\']>5) continue;' ."\n");
fwrite($fp, ' if ($numBilType[\'S\']>$nbRatiosMax) continue;' ."\n");
fwrite($fp, ' $tabTmp2=$mBil->bilanSimplifie2Normal($tabTmp);' ."\n");
fwrite($fp, ' $tabBilan[$numBil]=array_merge($tabTmp2, $tabTmp);' ."\n");
fwrite($fp, ' } elseif (substr($millesime,0,1)==\'N\') {' ."\n");
fwrite($fp, ' if ($numBilType[\'N\']>5) continue;' ."\n");
fwrite($fp, ' if ($numBilType[\'N\']>$nbRatiosMax) continue;' ."\n");
fwrite($fp, ' $tabBilan[$numBil]=$tabTmp;' ."\n");
fwrite($fp, ' } elseif (substr($millesime,0,1)==\'C\') {' ."\n");
fwrite($fp, ' if ($numBilType[\'C\']>5) continue;' ."\n");
fwrite($fp, ' if ($numBilType[\'C\']>$nbRatiosMax) continue;' ."\n");
fwrite($fp, ' $tabBilan[$numBil]=$tabTmp;' ."\n");
fwrite($fp, ' } elseif (substr($millesime,0,1)==\'A\') {' ."\n");
fwrite($fp, ' if ($numBilType[\'A\']>5) continue;' ."\n");
fwrite($fp, ' if ($numBilType[\'A\']>$nbRatiosMax) continue;' ."\n");
fwrite($fp, ' $tabBilan[$numBil]=$tabTmp;' ."\n");
fwrite($fp, ' //return(array());' ."\n");
fwrite($fp, ' } elseif (substr($millesime,0,1)==\'B\') {' ."\n");
fwrite($fp, ' if ($numBilType[\'B\']>5) continue;' ."\n");
fwrite($fp, ' if ($numBilType[\'B\']>$nbRatiosMax) continue;' ."\n");
fwrite($fp, ' $tabBilan[$numBil]=$tabTmp;' ."\n");
fwrite($fp, ' //return(array());' ."\n");
fwrite($fp, ' }' ."\n");
@ -90,76 +299,80 @@
$unite=$formule['unite'];
$formule=$formule['formule'];
if (preg_match("/^MOY\(R\[(.*)\],(.*)\)/Ui", $formule, $matches)) {
$tabMoy[$id]=array( 'ratio'=>$matches[1]*1,
'nbExo'=>$matches[2]*1,
);
continue;
}
/** Ratios avec formules à calculer **/
if ($formule['calcul']) {
// Gestion des variables minuscules de 1 à 8 caractères alphanumériques
$formule1=preg_replace('/([a-z]{1,8})/','\$$1', $formule);
// Gestion des postes du BILAN AX, BX, YP, FL1, etc...
$formule1=preg_replace('/\b([A-Z]{2,2}[1-9]{0,1})\b/','\$p[\'$1\']', $formule1);
// Gestion des ratios précédent
$formule1=preg_replace('/\bR\[(.*)\]/U', '\$R['."'\\1'*1".']', $formule1);
// Gestion des valeurs Absolues
$formule1=preg_replace('/\|(.*)\|/U', 'abs($1)', $formule1);
// Gestion de l'inflation pour l'année du bilan
$formule1=preg_replace('/\INFLATION/U', 'getInflation(substr($millesime,-4))', $formule1);
// Ecriture de la formule
$formule1="\$R[$id]=".$formule1.';';
/** fonction ou **/
if (preg_match('/ \$ou (.*)/', $formule1, $matches)) {
$formule1=preg_replace('/ \$ou (.*)/',';', $formule1);
$alternative=$matches[1];
$formule1.="if (\$R[$id]==0) \$R[$id]=$alternative";
}
/** Bornage des résultats en cas de dépassement **/
if (preg_match('/;BORN\((.*)\)/U', $formule1, $matches)) {
$formule1=preg_replace('/(;BORN\(.*\))/U','', $formule1);
$tabBornes=explode(':', $matches[1]);
if (trim($tabBornes[0])<>'') {
$bMin=trim($tabBornes[0])*1;
$formule1.="if (\$R[$id]<$bMin) \$R[$id]=$bMin;";
if (preg_match("/^MOY\(R\[(.*)\],(.*)\)/Ui", $formule, $matches)) {
$tabMoy[$id]=array( 'ratio'=>$matches[1]*1,
'nbExo'=>$matches[2]*1,
);
continue;
}
if (isset($tabBornes[1]) && trim(@$tabBornes[1])<>'') {
$bMax=trim($tabBornes[1])*1;
$formule1.="if (\$R[$id]>$bMax) \$R[$id]=$bMax;";
// Gestion des variables minuscules de 1 à 8 caractères alphanumériques
$formule1=preg_replace('/([a-z]{1,8})/','\$$1', $formule);
// Gestion des postes du BILAN AX, BX, YP, FL1, etc...
$formule1=preg_replace('/\b([A-Z]{2,2}[1-9]{0,1})\b/','\$p[\'$1\']', $formule1);
// Gestion des ratios précédent
$formule1=preg_replace('/\bR\[(.*)\]/U', '\$R['."'\\1'*1".']', $formule1);
// Gestion des valeurs Absolues
$formule1=preg_replace('/\|(.*)\|/U', 'abs($1)', $formule1);
// Gestion de l'inflation pour l'année du bilan
$formule1=preg_replace('/\INFLATION/U', 'getInflation(substr($millesime,-4))', $formule1);
// Ecriture de la formule
$formule1="\$R[$id]=".$formule1.';';
/** fonction ou **/
if (preg_match('/ \$ou (.*)/', $formule1, $matches)) {
$formule1=preg_replace('/ \$ou (.*)/',';', $formule1);
$alternative=$matches[1];
$formule1.="if (\$R[$id]==0) \$R[$id]=$alternative";
}
}
/** Bornage des résultats en cas de dépassement **/
if (preg_match('/;LIM\((.*)\)/U', $formule1, $matches)) {
$formule1=preg_replace('/(;LIM\(.*\))/U','', $formule1);
$bMax=trim($matches[1])*1;
$formule1.="if (\$R[$id]>$bMax) \$R[$id]=$bMax;";
}
/** Mémorisation des formules pour les moyennes **
*
$valeur='( (R'.$matches[1];
for($iMoy=0; $iMoy<$matches[2]; $iMoy++) {
if ($iMoy==1)
$valeur.='+Rp'.$matches[1];
else
$valeur.='+Rp'.$iMoy.$matches[1];
/** Bornage des résultats en cas de dépassement **/
if (preg_match('/;BORN\((.*)\)/U', $formule1, $matches)) {
$formule1=preg_replace('/(;BORN\(.*\))/U','', $formule1);
$tabBornes=explode(':', $matches[1]);
if (trim($tabBornes[0])<>'') {
$bMin=trim($tabBornes[0])*1;
$formule1.="if (\$R[$id]<$bMin) \$R[$id]=$bMin;";
}
if (isset($tabBornes[1]) && trim(@$tabBornes[1])<>'') {
$bMax=trim($tabBornes[1])*1;
$formule1.="if (\$R[$id]>$bMax) \$R[$id]=$bMax;";
}
}
$valeur.=')/'.$matches[2].')';
/** Bornage des résultats en cas de dépassement **/
if (preg_match('/;LIM\((.*)\)/U', $formule1, $matches)) {
$formule1=preg_replace('/(;LIM\(.*\))/U','', $formule1);
$bMax=trim($matches[1])*1;
$formule1.="if (\$R[$id]>$bMax) \$R[$id]=$bMax;";
}
/** Mémorisation des formules pour les moyennes **
*
$valeur='( (R'.$matches[1];
for($iMoy=0; $iMoy<$matches[2]; $iMoy++) {
if ($iMoy==1)
$valeur.='+Rp'.$matches[1];
else
$valeur.='+Rp'.$iMoy.$matches[1];
}
$valeur.=')/'.$matches[2].')';
}
else
$valeur=preg_replace('/([A-Z\_]{1,20})\((.*)\)$/i','substr(\$$1,$2)', $valeur);
*/
$formule2=$formule1;
fwrite($fp, $formule2."\n");
//@eval($formule2);
fwrite($fp, 'if (!isset($R['.$id.'])) $R['.$id.']=\'NS\';'."\n");
if (!isset($R[$id])) $R[$id]='NS';
}
else
$valeur=preg_replace('/([A-Z\_]{1,20})\((.*)\)$/i','substr(\$$1,$2)', $valeur);
*/
$formule2=$formule1;
fwrite($fp, $formule2."\n");
//@eval($formule2);
fwrite($fp, 'if (!isset($R['.$id.'])) $R['.$id.']=\'NS\';'."\n");
if (!isset($R[$id])) $R[$id]='NS';
}
fwrite($fp, "\n".' $tabRatios[$numBil]=$R;'."\n");
@ -194,4 +407,19 @@
return true;
}
/** Conversion des zones pour les collectivités **/
function convertZones($codeR, $zonesDB) {
global $tabZones2Ratios;
foreach($tabZones2Ratios as $oldR=>$newR) {
if (preg_match('/(\D+)\[(\d+)\]/Uis', $newR, $matches) && $matches[1]==$codeR) {
$iRatio=$matches[2];
if ($codeR=='R')
$ret[$iRatio]=$zonesDB[$oldR]*1000;
else
$ret[$iRatio]=$zonesDB[$oldR];
}
}
return $ret;
}
?>

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +1,5 @@
<?php
$tabVar = array(
$tabVar = array(
'ACTIFINSEE',
'ACTIFRNCS',
'ACTISURF',
@ -7,8 +7,8 @@ $tabVar = array(
'ACTIVREG',
'ADRDOM',
'AGE',
'ANNEEp3',
'ANNEEp2',
'ANNEEp3',
'ANNEEp2',
'ANNEEp1',
'ANNEE',
'ANNEE1',
@ -177,7 +177,7 @@ $tabVar = array(
'COTETYPE_MMAA',
'CSFACTO',
'CSFACTO_MMAA',
'DEPARTEMENT',
'DEPARTEMENT',
'DEPARTEMENT_DE',
'DCREN',
'DCREN_AA',
@ -211,6 +211,7 @@ $tabVar = array(
'ENQUETE',
'ENQUETELIM',
'ENQUETEMAXI',
'ENTREP_ALT',
'ETATINSEE',
'ETATINSEE_MMAA',
'EXPLEN',
@ -262,8 +263,8 @@ $tabVar = array(
'MARCHESALp',
'MARCHENBENT',
'MARCHENBENTp',
'MARCHENBENT_DEP',
'MARCHENBENT_VILLE',
'MARCHENBENT_DEP',
'MARCHENBENT_VILLE',
'MARCHEPUBLIC3_NB',
'MARCHEPUBLIC3_MT',
'MARCHEPUBLIC3_POURC',
@ -416,6 +417,11 @@ $tabVar = array(
'SOCIETE_COTE_MARCHE_MERE',
'SOCIETE_COTE_PLACE',
'T',
//TAUXRA[]
//TAUXRAMOY1
//TAUXRAMOY2
//TAUXRAMOY3
//TAUXRA
'TCAEXP',
'TEMOINACT',
'TEMOINACT_MAX',
@ -493,6 +499,38 @@ $tabVar = array(
'TEMOINSTSYNT_MAX',
'TEMOINVUL',
'TEMOINVUL_MAX',
//TEMOINVALBIL
//TEMOINVALBIL_MAX
//TEMOINVALCONC
//TEMOINVALCONC_MAX
//TEMOINVALCR
//TEMOINVALCR_MAX
//TEMOINVALDIAG
//TEMOINVALDIAG_MAX
//TEMOINVALMETH
//TEMOINVALMETH_MAX
//TEMOINVALRET
//TEMOINVALRET_MAX
//TEMOINVALPATR
//TEMOINVALPATR_MAX
//TEMOINVALPOND
//TEMOINVALPOND_MAX
//TEMOINVALPRES
//TEMOINVALPRES_MAX
//TEMOINVALRESV
//TEMOINVALRESV_MAX
//TEMOINVALRETR
//TEMOINVALRETR_MAX
//TEMOINVALTAB
//TEMOINVALTAB_MAX
//TEMOINVALTABS
//TEMOINVALTABS_MAX
//TEMOINVALTABR
//TEMOINVALTABR_MAX
//TEMOINVALMINMAX
//TEMOINVALMINMAX_MAX
//TEMOINVALMAXMIN
//TEMOINVALMAXMIN_MAX
'TEMOINADIZES',
'TEMOINADIZES_MAX',
'TEMOINMRQ',
@ -506,6 +544,41 @@ $tabVar = array(
'TVAINTRA',
'TVAINTRAFACULT',
'TYPEMERE',
//VALCOEFFMINCA => Table baremCA
//VALCOEFFMAXCA => Table baremCA
//VAL319 => Montant EUR
//VAL320 => Montant EUR
//VAL322 => Montant EUR
//VAL598 => Montant EUR
//VAL970 => Montant EUR
//VAL971 => Montant EUR
//VAL974 => Montant EUR
//VAL975 => Montant EUR
//VAL976 => Montant EUR
//VAL977 => Montant EUR
//VAL978 => Montant EUR
//VAL979 => Montant EUR
//VAL980 => Montant EUR
//VAL981 => Montant EUR
//VAL982 => Montant EUR
//VAL983 => Montant EUR
//VAL984 => Montant EUR
//VAL985 => Montant EUR
//VAL986 => Montant EUR
//VAL987 => Montant EUR
//VAL988 => Montant EUR
//VAL989 => Montant EUR
//VAL990 => Montant EUR
//VAL991 => Montant EUR
//VAL992 => Montant EUR
//VAL993 => Montant EUR
//VAL994 => Montant EUR
//VAL995 => Montant EUR
//VAL996 => Montant EUR
//VAL997 => Montant EUR
//VAL998 => Montant EUR
//VAL999 => Montant EUR
'VILLE',
'VENTEMAX_VILLE_MT',
'VENTEMOY_VILLE_MT',
@ -573,12 +646,12 @@ if (!function_exists('unsetGlobals')) {
unset ($regRs);
unset ($Ra);
unset ($Rap);
unset ($Rdiff);
unset ($Rdiff);
unset ($tabRegX);
unset ($Y);
unset ($Yaff);
unset ($PROJECTAUX);
unset ($PROJECCOEF);
unset ($PROJECCOEF);
unset ($idx);
unset ($tabVariables);
}

View File

@ -9,12 +9,6 @@ if (defined('LOCAL') == false) {
define( 'LOCAL', 0);
}
if (LOCAL) {
require_once('../sphinx/api/sphinxapi.php');
} else {
require_once 'Metier/sphinx/sphinxapi.php';
}
// --------------------------------------------------------------------------- //
// Nouvelle sequence
// --------------------------------------------------------------------------- //

View File

@ -7,30 +7,8 @@
if (defined('DEBUG') == false) {
define( 'DEBUG', 0);
}
if (defined('LOCAL') == false) {
define( 'LOCAL', 0);
}
if (LOCAL) {
include_once('../sphinx/api/sphinxapi.php');
include_once('criteresFonc.php');
define('SPHINX_HOST', 'localhost');
define('SPHINX_PORT', 9312);
$pass = '';
$conf = file("../etc/conf/sphinx.conf");
foreach ($conf as $ligne) {
$param = explode('=', $ligne);
if (trim($param[0]) == 'sql_pass') {
$pass = trim($param[1]);
}
}
define('MYSQL_HOST', 'localhost');
define('MYSQL_USER', 'root');
define('MYSQL_PASS', $pass);
} else {
require_once realpath(dirname(__FILE__)).'/sphinxapi.php';
require_once realpath(dirname(__FILE__)).'/criteresFonc.php';
}
require_once realpath(dirname(__FILE__)).'/criteresFonc.php';
$gDatabaseJO = databaseJO();
@ -39,7 +17,7 @@ $gDatabaseJO = databaseJO();
// --------------------------------------------------------------------------- //
function databaseJO()
{
@$db = new mysqli(MYSQL_HOST, MYSQL_USER, MYSQL_PASS, 'jo');
$db = new mysqli(MYSQL_HOST, MYSQL_USER, MYSQL_PASS, 'jo');
if (mysqli_connect_error()) {
println('Ne peut pas se connecter a la base.');
return;
@ -71,11 +49,7 @@ if (DEBUG) {
} else {
function debugln($ln = '')
{
/*
$fp = fopen(LOG_PATH.'/recherchesDebug.log', 'a');
fwrite($fp, $ln.'\n');
fclose($fp);
*/
//file_put_contents(LOG_PATH.'/recherchesDebug.log', $ln."\n", FILE_APPEND);
}
}
@ -123,47 +97,67 @@ function filtreAdresse(&$formR, &$criteres, &$sphinx)
if (empty($formR['cpVille']) == true) {
return;
}
$adressePostale = $formR['cpVille'];
if (preg_match('/[0-9]{5}/',
$adressePostale, $codePostaux) > 0) {
if (strstr($criteres, 'L') != false) {
//If we have a CEDEX
if (preg_match('/^[0-9]{5}\s(.*)\sCEDEX/i', $adressePostale, $codePostaux)) {
$formR['departement'] = '';
$formR['ville'] = $codePostaux[1];
}
//If we have a Code Postal
elseif (preg_match('/[0-9]{5}/', $adressePostale, $codePostaux) > 0)
{
if (strstr($criteres, 'L') != false)
{
debugln("filtre adr_cp='$codePostaux[0]'");
$sphinx->SetFilter('adr_cp', $codePostaux);
} else if (strstr($criteres, 'D') != false) {
}
else if (strstr($criteres, 'D') != false)
{
$departement = substr($codePostaux[0], 0, 2);
if ($departement == 97 ||
$departement == 98) {
if ($departement == 97 || $departement == 98)
{
$departement = substr($codePostaux[0], 0, 3);
}
debugln("filtre adr_dep='$departement'");
$sphinx->SetFilter('adr_dep', array($departement));
}
$formR['ville'] = str_replace($codePostaux[0], '',
$adressePostale);
$formR['ville'] = str_replace($codePostaux[0], '', $adressePostale);
$dep = intval(substr($codePostaux[0], 0, 2));
//Monaco
if ($codePostaux[0] == '98000') {
$formR['departement'] = 99;
$formR['localite'] = 0;
} else if ($dep == 97 ||
$dep == 98) {
//DOM-TOM
} else if ($dep == 97 || $dep == 98) {
$formR['departement'] = substr($codePostaux[0], 0, 3);
$formR['localite'] = substr($codePostaux[0], 3, 2);
} else {
$formR['departement'] = substr($codePostaux[0], 0, 2);
$formR['localite'] = substr($codePostaux[0], 2, 3);
}
} else if (preg_match('/[0-9]{3}/',
$adressePostale, $departements) > 0 ||
preg_match('/[0-9]{2}/',
$adressePostale, $departements) > 0) {
if (strstr($criteres, 'D') != false) {
debugln("filtre adr_dep='$departements[0]'");
$sphinx->SetFilter('adr_dep', $departements);
}
//If we have a Departement
else if (preg_match('/(2[A|B]|[0-9]{2})/', $adressePostale, $departements)
|| preg_match('/([0-9]{3})/', $adressePostale, $departements))
{
$departement = $departements[1];
if ($departement == '2A'){
$departement = 201;
}
$formR['ville'] = str_replace($departements[0], '',
$adressePostale);
$formR['departement'] = $departements[0];
if ($departement == '2B' ) {
$departement = 202;
}
if (strstr($criteres, 'D') != false) {
debugln("filtre adr_dep='$departement'");
$sphinx->SetFilter('adr_dep', array($departement));
}
$formR['ville'] = str_replace($departement, '', $adressePostale);
$formR['departement'] = $departement;
} else {
$formR['ville'] = $adressePostale;
}
@ -263,6 +257,22 @@ function filtreDateNaiss(&$formR, &$criteres, &$sphinx)
}
}
//Filtre sur les actifs
function filtreActif(&$formR, &$criteres, &$sphinx)
{
if ( array_key_exists('actif', $formR) && in_array($formR['actif'], array(0,1)) ) {
$sphinx->setFilter('actif', array($formR['actif']));
}
}
//Filtre sur les sieges
function filtreSiege(&$formR, &$criteres, &$sphinx)
{
if ( array_key_exists('siege', $formR) && $formR['siege']===true ) {
$sphinx->setFilter('siege', array(1));
}
}
// --------------------------------------------------------------------------- //
// Premiere requete Sphinx
// --------------------------------------------------------------------------- //
@ -272,6 +282,8 @@ function filtreDateNaiss(&$formR, &$criteres, &$sphinx)
function premiereRequeteSphinx(&$sphinx, &$index, &$formR, &$criteres,
&$criteresSphinx, &$form2crit, $sirenValide)
{
filtreSiege($formR, $criteres, $sphinx);
filtreActif($formR, $criteres, $sphinx);
filtreSiret ($formR, $criteres, $sphinx);
filtreAdresse($formR, $criteres, $sphinx);
filtreNumero ($formR, $criteres, $sphinx);
@ -302,9 +314,7 @@ function premiereRequeteSphinx(&$sphinx, &$index, &$formR, &$criteres,
}
debugln("requete='$requete_sphinx'");
if (substr($index, 0, 3) == 'ent') {
$sphinx->
SetSortMode(SPH_SORT_EXTENDED,
'sirenValide DESC, rang DESC, actif DESC, siege DESC');
$sphinx->SetSortMode(SPH_SORT_EXTENDED,'sirenValide DESC, actif DESC, siege DESC, rang DESC');
} else if (substr($index, 0, 3) == 'dir') {
$sphinx->SetSortMode(SPH_SORT_EXTENDED, 'actif DESC');
}
@ -319,12 +329,15 @@ function requeteSphinx(&$sphinx, &$index, &$formR, &$criteres,
&$criteresSphinx, &$form2crit, $quorum_actif, $quorum,
$sirenValide)
{
filtreSiege($formR, $criteres, $sphinx);
filtreActif($formR, $criteres, $sphinx);
filtreSiret ($formR, $criteres, $sphinx);
filtreAdresse($formR, $criteres, $sphinx);
filtreNumero ($formR, $criteres, $sphinx);
if ($sirenValide == true) {
$sphinx->SetFilter('sirenValide', array(1));
}
if ($quorum_actif == true) {
foreach ($quorum as $label => $valeur) {
if ($valeur > 1 && strstr($formR[$label], '"') == false) {
@ -425,7 +438,7 @@ function afficheDB(&$resSphinx, &$formR, &$form2crit, $table, &$base2form,
}
if ($formR['type'] == 'ent') {
$requeteDB .=
' ORDER BY sirenValide DESC, rang DESC, actif DESC, siege DESC';
' ORDER BY sirenValide DESC, actif DESC, siege DESC, rang DESC';
} else {
$requeteDB .= ' ORDER BY actif DESC';
}
@ -599,27 +612,41 @@ function clientSphinx(&$formR)
}
}
// Client Sphinx
$sphinx = new SphinxClient();
switch($formR['type'])
{
case 'ent':
$host = SPHINX_ENT_HOST;
$port = SPHINX_ENT_PORT;
$version = defined('SPHINX_ENT_VERSION') ? SPHINX_ENT_VERSION : 1;
break;
case 'dir':
$version = defined('SPHINX_DIR_VERSION') ? SPHINX_DIR_VERSION : 1;
$host = SPHINX_DIR_HOST;
$port = SPHINX_DIR_PORT;
break;
case 'histo':
$version = defined('SPHINX_HISTO_VERSION') ? SPHINX_HISTO_VERSION : 1;
$host = SPHINX_HISTO_HOST;
$port = SPHINX_HISTO_PORT;
break;
case 'act':
case 'act':
$version = defined('SPHINX_ACT_VERSION') ? SPHINX_ACT_VERSION : 1;
$host = SPHINX_ACT_HOST;
$port = SPHINX_ACT_PORT;
break;
}
switch ( $version ) {
case 1:
require_once realpath(dirname(__FILE__)).'/sphinxapi.php';
break;
case 2:
require_once 'sphinxapi/sphinxapi-2.0.2.php';
break;
}
// Client Sphinx
$sphinx = new SphinxClient();
$sphinx->SetServer($host, $port);
$sphinx->SetConnectTimeout(1);
$sphinx->SetRankingMode(SPH_RANK_PROXIMITY_BM25);
@ -701,49 +728,29 @@ function reponse(&$resSphinx, &$resDB, $criteres, $time, $formR, $form2crit,
}
$pertinence_generale *= $num / $tot;
$pertinence_generale = intval($pertinence_generale);
print 'Pertinence generale: '.$pertinence_generale.'<br/>';
//print 'Pertinence generale: '.$pertinence_generale.'<br/>';
}
$decalage = false;
for ($i = 0, $k = 0; $k < $resDB->num_rows || $decalage == true; ++$i) {
if ($decalage == false) {
if ( is_object($resDB) ) {
$resDB->data_seek(0);
for ($i = 0; $i < $resDB->num_rows; $i++) {
$ligne = $resDB->fetch_assoc();
++$k;
} else {
$decalage = false;
}
if ($formR['type']=='dir') {
debugln($ligneDir[$i]['id'].' '.$ligne['id']);
}
if ($formR['type']=='dir' && $ligneDir[$i]['id']!=$ligne['id']) {
for ($j = $i - 1; $j >= 0; --$j) {
if ($ret['reponses'][$j]['id'] == $ligneDir[$i]['id']) {
$ret['reponses'][$i] = $ret['reponses'][$j];
$decalage = true;
break;
}
}
if ($decalage != true) {
debugln('erreur '.$ligneDir[$i]['id'].' != '.$ligne['id']);
}
} else {
//file_put_contents('test.log', "\n".'i = '.$i.print_r($ligne,1), FILE_APPEND);
$ret['reponses'][$i]['id'] = $ligne['id'];
//if ($formR['type'] == 'dir') {
// debugln("$i:$ligne[id]");
//}
$pertinence = $pertinence_generale;
if ($formR['type'] == 'ent') {
if (empty($formR['raisonSociale']) == false) {
$pertinence *= compare($formR['raisonSociale'],
$ligne['raisonSociale']);
}
if (empty($formR['voie']) == false) {
$pertinence *= compare($formR['voie'],
$ligne['adr_typeVoie'].' '.
$ligne['adr_libVoie']);
if (empty($formR['raisonSociale']) == false) {
$pertinence *= compare($formR['raisonSociale'], $ligne['raisonSociale']);
}
if (empty($formR['voie']) == false) {
$pertinence *= compare($formR['voie'], $ligne['adr_typeVoie'].' '.$ligne['adr_libVoie']);
}
if (empty($formR['ville']) == false) {
$pertinence *= compare($formR['ville'],
$ligne['adr_ville']);
$pertinence *= compare($formR['ville'], $ligne['adr_ville']);
}
}
$ret['reponses'][$i]['Pertinence'] = $pertinence;
@ -756,75 +763,41 @@ function reponse(&$resSphinx, &$resDB, $criteres, $time, $formR, $form2crit,
$ret['reponses'][$i]['Sigle'] = $ligne['sigle'];
$ret['reponses'][$i]['Enseigne'] = $ligne['enseigne'];
$ret['reponses'][$i]['Adresse'] =
$ligne['adr_num'].' '.
$ligne['adr_typeVoie'].' '.
$ligne['adr_libVoie'];
$ligne['adr_num'].' '.
$ligne['adr_typeVoie'].' '.
$ligne['adr_libVoie'];
$ret['reponses'][$i]['Adresse2'] = $ligne['adr_comp'];
$ret['reponses'][$i]['CP'] = $ligne['adr_cp'];
$ret['reponses'][$i]['Ville'] = $ligne['adr_ville'];
$ret['reponses'][$i]['Tel'] = $ligne['tel'];
$ret['reponses'][$i]['Fax'] = $ligne['fax'];
$ret['reponses'][$i]['FJ'] = $ligne['cj'];
//$ret['reponses'][$i]['FJLib'] = ;
$ret['reponses'][$i]['Actif'] = $ligne['actif'];
$ret['reponses'][$i]['NafEtab'] = $ligne['ape_etab'];
//$ret['reponses'][$i]['NafEtabLib'] = ;
$ret['reponses'][$i]['NafEnt'] = $ligne['ape_entrep'];
//$ret['reponses'][$i]['NafEntLib'] = ;
}
if ($formR['type']=='dir') {
// Dirigeant
$ret['reponses'][$i]['DirRs'] = '';
$ret['reponses'][$i]['DirNom'] = $ligneDir[$i]['nom'];
$ret['reponses'][$i]['DirPrenom'] = $ligneDir[$i]['prenom'];
$ret['reponses'][$i]['DirNomUsage'] = '';
$ret['reponses'][$i]['DirDateEffet'] = '';
$ret['reponses'][$i]['DirFonction'] = $ligneDir[$i]['fonction_lib'];
$ret['reponses'][$i]['DirDepart'] = '';
} elseif ($formR['type']=='act') {
// Actionnaire
$ret['reponses'][$i]['ActNomRs'] = $ligneDir[$i]['ActNomRs'];
$ret['reponses'][$i]['ActPays'] = $ligneDir[$i]['ActPays'];
$ret['reponses'][$i]['ActDateLien'] = $ligneDir[$i]['ActDateLien'];
$ret['reponses'][$i]['ActActif'] = $ligneDir[$i]['ActActif'];
$ret['reponses'][$i]['ActPmin'] = $ligneDir[$i]['ActPmin'];
}
}
if ($formR['type']=='dir') {
for (; $i < count($ligneDir); ++$i) {
debugln($ligneDir[$i]['id'].' ==> '.$i);
for ($j = $i - 1; $j >= 0; --$j) {
if ($ret['reponses'][$j]['id'] == $ligneDir[$i]['id']) {
$ret['reponses'][$i] = $ret['reponses'][$j];
$ret['reponses'][$i]['DirRs'] = '';
$ret['reponses'][$i]['DirNom'] = $ligneDir[$i]['nom'];
$ret['reponses'][$i]['DirPrenom'] = $ligneDir[$i]['prenom'];
$ret['reponses'][$i]['DirNomUsage'] = '';
$ret['reponses'][$i]['DirDateEffet'] = '';
$ret['reponses'][$i]['DirFonction'] = $ligneDir[$i]['fonction_lib'];
$ret['reponses'][$i]['DirDepart'] = '';
break;
}
}
if ($j < 0) debugln('erreur '.$ligneDir[$i]['id'].' non trouve');
}
} elseif ($formR['type']=='act') {
for (; $i < count($ligneDir); ++$i) {
debugln($ligneDir[$i]['id'].' ==> '.$i);
for ($j = $i - 1; $j >= 0; --$j) {
if ($ret['reponses'][$j]['id'] == $ligneDir[$i]['id']) {
$ret['reponses'][$i] = $ret['reponses'][$j];
$ret['reponses'][$i]['ActNomRs'] = $ligneDir[$i]['ActNomRs'];
$ret['reponses'][$i]['ActPays'] = $ligneDir[$i]['ActPays'];
$ret['reponses'][$i]['ActDateLien'] = $ligneDir[$i]['ActDateLien'];
$ret['reponses'][$i]['ActActif'] = $ligneDir[$i]['ActActif'];
$ret['reponses'][$i]['ActPmin'] = $ligneDir[$i]['ActPmin'];
break;
}
}
if ($j < 0) debugln('erreur '.$ligneDir[$i]['id'].' non trouve');
if ($formR['type']=='dir') {
// Dirigeant
$ret['reponses'][$i]['DirRs'] = '';
$ret['reponses'][$i]['DirNom'] = $ligneDir[$i]['nom'];
$ret['reponses'][$i]['DirPrenom'] = $ligneDir[$i]['prenom'];
$ret['reponses'][$i]['DirNomUsage'] = $ligneDir[$i]['naissance_nom'];
$ret['reponses'][$i]['DirDateNaiss'] = $ligneDir[$i]['naissance_date'];
$ret['reponses'][$i]['DirLieuNaiss'] = $ligneDir[$i]['naissance_lieu'];
$ret['reponses'][$i]['DirDateEffet'] = '';
$ret['reponses'][$i]['DirFonction'] = $ligneDir[$i]['fonction_lib'];
$ret['reponses'][$i]['DirDepart'] = '';
} elseif ($formR['type']=='act') {
// Actionnaire
$ret['reponses'][$i]['ActNomRs'] = $ligneDir[$i]['ActNomRs'];
$ret['reponses'][$i]['ActPays'] = $ligneDir[$i]['ActPays'];
$ret['reponses'][$i]['ActDateLien'] = $ligneDir[$i]['ActDateLien'];
$ret['reponses'][$i]['ActActif'] = $ligneDir[$i]['ActActif'];
$ret['reponses'][$i]['ActPmin'] = $ligneDir[$i]['ActPmin'];
}
}
}
if ($formR['type'] == 'ent') {
$ret['pass'] = $resSphinx['pass'];
}
@ -946,44 +919,48 @@ function rechercheDir(&$formR, $deb, $nbRep, $max)
}
$requeteDB =
'select e.id, d.nom, d.prenom, l.libelle AS fonction_lib '.
// d.rs, d.nomUsage, d.naissance_date, d.naissance_lieu,
' from dirigeants d, etablissements e, bodacc_fonctions l'.
' where d.siren=e.siren and d.fonction_code=l.codeFct AND e.siege=1 and (d.id='.
$resSphinx['matches'][0]['id'];
"SELECT d.nom, d.prenom, d.naissance_nom, d.naissance_date, d.naissance_lieu, l.libelle AS fonction_lib,".
" e.id, CONCAT(e.siren,e.nic) AS siret, e.siren, e.nic, e.siege, e.raisonSociale, e.sigle, e.enseigne,".
" e.adr_num, e.adr_typeVoie, e.adr_libVoie, e.adr_comp, e.adr_cp, e.adr_ville, e.tel, e.fax, e.cj, e.actif, e.ape_etab, e.ape_entrep".
" FROM dirigeants d, etablissements e, bodacc_fonctions l".
" WHERE d.fonction_code=l.codeFct AND d.id IN (".$resSphinx['matches'][0]['id'];
for ($i = 1; $i + $deb < $resSphinx['total'] && $i < $nbRep; ++$i) {
$requeteDB .= ' or d.id='.$resSphinx['matches'][$i]['id'];
$requeteDB .= ",".$resSphinx['matches'][$i]['id'];
}
$requeteDB .= ')';
$requeteDB .= ' GROUP BY d.siren, d.id';
$requeteDB .= ' ORDER BY e.rang DESC, e.actif DESC, e.siege DESC, e.id ASC';
$requeteDB .= ") AND e.id = (";
$requeteDB .= "SELECT tmp.id FROM etablissements tmp ";
$requeteDB .= "WHERE tmp.siren=d.siren ORDER by tmp.actif DESC, tmp.siege DESC LIMIT 1";
$requeteDB .= ")";
//file_put_contents('test.log', $requeteDB);
debugln();
debugln("requeteDB='$requeteDB'");
$resDB = $gDatabaseJO->query($requeteDB);
// Reponse
$ligneDir = array();
$ligne = $resDB->fetch_assoc();
$requeteDB = 'select id, CONCAT(siren,nic) AS siret, siren, nic, siege, '.
'raisonSociale, sigle, enseigne, adr_num, adr_typeVoie, adr_libVoie, '.
'adr_comp, adr_cp, adr_ville, tel, fax, cj, actif, ape_etab, '.
'ape_entrep from etablissements where id='.$ligne['id'];
$ligneDir[0] = array('id' => $ligne['id'],
'nom' => $ligne['nom'],
'prenom' => $ligne['prenom'],
'fonction_lib' => $ligne['fonction_lib']);
for ($i = 1; $i < $resDB->num_rows; ++$i) {
for ($i = 0; $i < $resDB->num_rows; $i++) {
$ligne = $resDB->fetch_assoc();
$requeteDB .= ' or id='.$ligne['id'];
$ligneDir[$i] = array('id' => $ligne['id'],
'nom' => $ligne['nom'],
'prenom' => $ligne['prenom'],
'fonction_lib' => $ligne['fonction_lib']);
$nom = $ligne['nom'];
if ( $ligne['naissance_nom']!='' ) {
$nom.= " nom d'usage ".$ligne['naissance_nom'];
}
$ligneDir[$i] = array(
'id' => $ligne['id'],
'nom' => $nom,
'prenom' => $ligne['prenom'],
'fonction_lib' => $ligne['fonction_lib'],
'naissance_nom'=> $ligne['naissance_nom'],
'naissance_date'=> $ligne['naissance_date'],
'naissance_lieu'=> $ligne['naissance_lieu']
);
}
$requeteDB .= ' ORDER BY rang DESC, actif DESC, siege DESC, id ASC';
debugln();
debugln("requeteDB='$requeteDB'");
$resDB = $gDatabaseJO->query($requeteDB);
return reponse($resSphinx, $resDB, $criteres, $total_time, $formR,
$form2crit, $deb, $ligneDir);
@ -995,29 +972,29 @@ function rechercheDir(&$formR, $deb, $nbRep, $max)
function rechercheHisto($formR, $deb, $nbRep, $max)
{
$gDatabaseJO = databaseJO();
$sphinx = clientSphinx($formR);
$index = 'histo';
$mode = 'SPH_MATCH_EXTENDED';
$pass = 0;
initSphinx($sphinx, $mode, $pass, $deb, $nbRep, $max);
if (!empty($formR['annee1']))
$sphinx->SetFilter('annee1', array(0=>$formR['annee1']));
$sphinx->SetFilter('annee1', array(0=>$formR['annee1']));
$sphinx->SetRankingMode ( SPH_RANK_PROXIMITY_BM25 );
$sphinxreturn = $sphinx->Query($formR['recherche'], $index);
$gDatabaseJO->select_db('histobodacc');
foreach ( $sphinxreturn['matches'] as $doc => $docinfo )
foreach ( $sphinxreturn['matches'] as $doc => $docinfo )
{
$requette = "SELECT Histo as Loc, id, nomFichier, annee1, bod, texte FROM bodacc_cor WHERE id=$doc";
$req = $gDatabaseJO->query($requette);
$req = $gDatabaseJO->query($requette);
$ligne = $req->fetch_assoc();
$etab = $ligne[0];
$tabRet[] = array(
$tabRet[] = array(
'Localisation' => $etab['Loc'],
'id' => $doc,
'Pertinence' => $docinfo['weight'],
@ -1027,8 +1004,8 @@ function rechercheHisto($formR, $deb, $nbRep, $max)
'Texte' => $etab['texte'],
);
}
return array(
return array(
'results' => $tabRet,
'nbRet' => $sphinxreturn['total'],
'nbTot' => $sphinxreturn['total_found'],
@ -1059,15 +1036,15 @@ function constructRequete($formR, $sphinxCriteres)
function rechercheAct($formR, $deb, $nbRep, $max)
{
$gDatabaseJO = databaseJO();
$sphinx = clientSphinx($formR);
$sphinx->SetSortMode(SPH_SORT_EXTENDED, 'actif DESC');
$index = 'act';
$mode = 'SPH_MATCH_EXTENDED2';
$pass = 0;
initSphinx($sphinx, $mode, $pass, $deb, $nbRep, $max);
$Criteres = array('Siren2' => 'siren',
'Req' => 'actNomRS',
'@Pays' => 'pays',
@ -1077,7 +1054,7 @@ function rechercheAct($formR, $deb, $nbRep, $max)
'pays' => 'P',
'pctMax' => 'M'
);
$Requete = constructRequete($formR, $Criteres);
if(!empty($formR['pctMin']))
$sphinx->SetFilterRange('PminNum', $formR['pctMin'], 99);
@ -1085,51 +1062,61 @@ function rechercheAct($formR, $deb, $nbRep, $max)
$sphinx->SetFilterRange('PminNum', $formR['pctMin'], 99);
if(!empty($formR['pctMin']) and !empty($formR['pctMax']))
$sphinx->SetFilterRange('PminNum', $formR['pctMix'], $formR['pctMax']);
$sphinxreturn = $sphinx->Query($Requete, $index);
$criteres = 'NPM';
$requette = 'SELECT l.id AS lienId, l.actif AS lienActif, l.source, l.Pmin, l.PpPm, l.id2, '.
'l.Siren2, l.RaisonSociale, l.Pays, '.
'IF(l.dateUpdate>IF(l.dateInsert>l.dateLien,l.dateInsert,l.dateLien),l.dateUpdate,IF(l.dateInsert>l.dateLien,l.dateInsert,l.dateLien)) AS dateLien, '.
'e.id, CONCAT(siren,nic) AS siret, siren, nic, siege, e.raisonSociale, sigle, '.
'enseigne, adr_num, adr_typeVoie, adr_libVoie, adr_comp, adr_cp, adr_ville, '.
'tel, fax, cj, e.actif, ape_etab, ape_entrep '.
'e.id, CONCAT(e.siren,e.nic) AS siret, e.siren, e.nic, e.siege, e.raisonSociale, e.sigle, e.enseigne, '.
'e.adr_num, e.adr_typeVoie, e.adr_libVoie, e.adr_comp, e.adr_cp, e.adr_ville, e.tel, e.fax, e.cj, e.actif, e.ape_etab, e.ape_entrep ' .
'FROM liens l, etablissements e '.
'WHERE l.Siren1=e.siren AND e.siege=1 AND (';
'WHERE l.Siren1=e.siren AND e.siege=1 AND l.id IN(';
$i = 0;
//file_put_contents('test.log', print_r($sphinxreturn['matches'],1));
foreach($sphinxreturn['matches'] as $id => $element) {
if($i == 0)
$requette.= ' l.id='.$element['id'];
else
$requette.= ' OR l.id='.$element['id'];
if($i > 0) $requette.= ',';
$requette.= $element['id'];
$i++;
}
$requette.= ') GROUP BY l.Siren1, l.id ORDER BY e.rang DESC, e.actif DESC, e.siege DESC, e.id ASC';
$requette.= ') GROUP BY l.Siren1, l.id ORDER BY e.actif DESC, e.siege DESC, e.id ASC';
//file_put_contents('test.log', $requette."\n", FILE_APPEND);
$req = $gDatabaseJO->query($requette);
$requette2 ='SELECT id, CONCAT(siren,nic) AS siret, siren, nic, siege, '.
/*$requette2 ='SELECT id, CONCAT(siren,nic) AS siret, siren, nic, siege, '.
'raisonSociale, sigle, enseigne, adr_num, adr_typeVoie, adr_libVoie, '.
'adr_comp, adr_cp, adr_ville, tel, fax, cj, actif, ape_etab, '.
'ape_entrep FROM etablissements WHERE ';
'ape_entrep FROM etablissements WHERE id IN (';
*/
$ligneAct = array();
for($i = 0; $i < $req->num_rows; $i++) {
$ligne = $req->fetch_assoc();
$ligneAct[$i] = array( 'id' => $ligne['id'],
'ActNomRs' => $ligne['RaisonSociale'],
'ActPays' => $ligne['Pays'],
'ActDateLien'=>$ligne['dateLien'],
'ActActif' => $ligne['actif'],
'ActPmin' => $ligne['Pmin'],
);
if($i == 0) $requette2.= ' id='.$ligne['id'];
else $requette2.= ' OR id='.$ligne['id'];
//file_put_contents('test.log', print_r($ligne,1)."\n", FILE_APPEND);
$ligneAct[$i] = array(
'id' => $ligne['id'],
'ActNomRs' => $ligne['RaisonSociale'],
'ActPays' => $ligne['Pays'],
'ActDateLien'=>$ligne['dateLien'],
'ActActif' => $ligne['actif'],
'ActPmin' => $ligne['Pmin'],
);
if($i > 0) $requette2.= ',';
//$requette2.= $ligne['id'];
}
$requette2.= ' ORDER BY rang DESC, actif DESC, siege DESC, id ASC';
$req = $gDatabaseJO->query($requette2);
//$requette2.= ') ORDER BY actif DESC, siege DESC';
//file_put_contents('test.log', $requette2."\n", FILE_APPEND);
//$req = $gDatabaseJO->query($requette2);
return reponse($sphinxreturn, $req, $criteres, $sphinxreturn['time'], $formR, $form2crit, $deb, $ligneAct);
}
@ -1217,8 +1204,7 @@ function rechercheEnt(&$formR, $deb, $nbRep, $max, $sirenValide = false)
$total_time += $resSphinx['time'];
}
if ($resSphinx['total'] == 0 && isset($formR['departement']) == true) {
debugln('Sans la gestion des mots non significatifs'.
' et sans la localité');
debugln('Sans la gestion des mots non significatifs et sans la localité');
debugln();
$criteres = 'ITSEPD VNR';
$sphinx->resetFilters();
@ -1238,14 +1224,15 @@ function rechercheEnt(&$formR, $deb, $nbRep, $max, $sirenValide = false)
$criteres = 'ITSEPDLVNR';
}
$total_premiere_requete = $resSphinx['total'];
if ($total_premiere_requete == 0 ||
$total_premiere_requete > 500) { // "huit a huit" donne 414
$index = 'ent_mns';
// Requete sans les mots non significatifs
// pour connaitre le nombre de mots trouves pour chaque champ alpha
debugln('Avec la gestion des mots non significatifs'.
' et avec quorum si l\'adresse est complete');
debugln('Avec la gestion des mots non significatifs et avec quorum si l\'adresse est complete');
$raisonSociale = $formR['raisonSociale'];
if ((empty($formR['ville']) == false ||
empty($formR['departement']) == false) &&
@ -1348,8 +1335,7 @@ function rechercheEnt(&$formR, $deb, $nbRep, $max, $sirenValide = false)
}
// Combinaison
$combinaison = nouvelleCombinaison($sequence, $sequencePos,
$pass, $index, $mode);
$combinaison = nouvelleCombinaison($sequence, $sequencePos, $pass, $index, $mode);
if ($combinaison == '') {
debugln('fin des combinaisons');
if (changePass($pass, $mode, $index,
@ -1456,8 +1442,7 @@ function rechercheEnt(&$formR, $deb, $nbRep, $max, $sirenValide = false)
for ($i = 1; $i + $deb < $resSphinx['total'] && $i < $nbRep; ++$i) {
$requeteDB .= ' or id='.$resSphinx['matches'][$i]['id'];
}
$requeteDB .=
' ORDER BY sirenValide DESC, rang DESC, actif DESC, siege DESC';
$requeteDB .= ' ORDER BY sirenValide DESC, actif DESC, siege DESC, rang DESC';
debugln();
debugln("requeteDB='$requeteDB'");

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff