From 03b6888c148153b956a89f8e3991f732c767cbd7 Mon Sep 17 00:00:00 2001 From: Michael RICOIS Date: Tue, 17 Jan 2012 11:00:02 +0000 Subject: [PATCH] =?UTF-8?q?Ajout=20du=20service=20pour=20v=C3=A9olia,=20si?= =?UTF-8?q?mple=20copier=20coller=20des=20m=C3=A9thodes=20originales,=20is?= =?UTF-8?q?sue=20#0001036?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- library/WsScore/Clients/Clients.ini | 5 + library/WsScore/Clients/Veolia/Versions.ini | 4 + .../Clients/Veolia/v0.1/Entreprise.ini | 12 + .../Clients/Veolia/v0.1/Entreprise.php | 800 +++++++++++ library/WsScore/Clients/Veolia/v0.1/Types.php | 1213 +++++++++++++++++ 5 files changed, 2034 insertions(+) create mode 100644 library/WsScore/Clients/Veolia/Versions.ini create mode 100644 library/WsScore/Clients/Veolia/v0.1/Entreprise.ini create mode 100644 library/WsScore/Clients/Veolia/v0.1/Entreprise.php create mode 100644 library/WsScore/Clients/Veolia/v0.1/Types.php diff --git a/library/WsScore/Clients/Clients.ini b/library/WsScore/Clients/Clients.ini index a91a8dd7..2a7b0ccb 100644 --- a/library/WsScore/Clients/Clients.ini +++ b/library/WsScore/Clients/Clients.ini @@ -2,4 +2,9 @@ actif = true; idClient = 39; user[] = mricois +user[] = ylenaour + +[veolia] +actif = true; +user[] = mricois user[] = ylenaour \ No newline at end of file diff --git a/library/WsScore/Clients/Veolia/Versions.ini b/library/WsScore/Clients/Veolia/Versions.ini new file mode 100644 index 00000000..dbb49070 --- /dev/null +++ b/library/WsScore/Clients/Veolia/Versions.ini @@ -0,0 +1,4 @@ +; Listes des versions des services +[0.1] +actif = true; +defaut = true; \ No newline at end of file diff --git a/library/WsScore/Clients/Veolia/v0.1/Entreprise.ini b/library/WsScore/Clients/Veolia/v0.1/Entreprise.ini new file mode 100644 index 00000000..c9313da0 --- /dev/null +++ b/library/WsScore/Clients/Veolia/v0.1/Entreprise.ini @@ -0,0 +1,12 @@ +Type[] = "Identite" +Type[] = "IdentiteBourse" +Type[] = "IdentiteBilan" +Type[] = "AutreSiren" +Type[] = "AutreSiret" +Type[] = "GeoInfos" +Type[] = "AdresseDomEnt" +Type[] = "SearchEntrepriseReturn" +Type[] = "EntrepriseItem" +Type[] = "EntrepriseCriteres" +Type[] = "SearchReturn" +Type[] = "InfosIris" \ No newline at end of file diff --git a/library/WsScore/Clients/Veolia/v0.1/Entreprise.php b/library/WsScore/Clients/Veolia/v0.1/Entreprise.php new file mode 100644 index 00000000..c8221be9 --- /dev/null +++ b/library/WsScore/Clients/Veolia/v0.1/Entreprise.php @@ -0,0 +1,800 @@ +authenticate(); + + //Initialisation + if (empty($id)) { + $id = 0; + } + $forceVerif = false; + + $tdeb = microtime(1); + $ligne = date('YmdHis').";$siret;Ws->getIdentite Avant ..."; + $fp = fopen(LOG_PATH.'/accesDistant.log', 'a'); + fwrite($fp,$ligne.EOL); + fclose($fp); + debugLog('I',"Identités demandée pour siret $siret (id=$id)",__LINE__,__FILE__, __FUNCTION__, __CLASS__); + + $tabRet = array(); + $siret = trim($siret); + $len = strlen($siret); + $siren = substr($siret,0,9); + if ($len == 14) { + $nic = substr($siret,9,5)*1; + } elseif ($len == 9) { + $nic = 0; + } + + if ($siren*1==0 && $id==0) { + $this->sendError('1010'); + } elseif ($len!=14 && $len!=9) { + $this->sendError('1020'); + } + + debugLog('I', "Avant getIdentiteEntreprise($siren, $nic, $id)", __LINE__, __FILE__, __FUNCTION__, __CLASS__); + $iInsee = new MInsee(); + $entrep = $iInsee->getIdentiteEntreprise($siren, $nic, $id, $forceVerif); + debugLog('I', "Après getIdentiteEntreprise($siren, $nic, $id)", __LINE__, __FILE__, __FUNCTION__, __CLASS__); + $duree = round(microtime(1)-$tdeb,3); + $ligne = date('YmdHis').";$siret;Ws->getIdentite juste apres iInsee->... ($duree s)"; + $fp = fopen(LOG_PATH.'/accesDistant.log', 'a'); + fwrite($fp,$ligne.EOL); + fclose($fp); + if (empty($entrep) || empty($entrep['id']) ) { + debugLog('W', "Siren $siren non présent en base", __LINE__, __FILE__, __FUNCTION__, __CLASS__); + $this->sendError('1020'); + } + + $iBourse = new MBourse($siren); + $bourse = $iBourse->getInfosBourse($siren); + + $identite = new Identite(); + $identite->id = $entrep['id']; + $identite->Siret = $entrep['Siret']; + $identite->SiretSiege = $entrep['SiretSiege']; + $identite->Siege = $entrep['Siege']; + $identite->AncienSiege = $entrep['AncienSiege']; + $identite->AncienSiegeDateFin = $entrep['AncienSiegeDateFin']; + $identite->TribunalCode = prepareString($entrep['Tribunal']); + $identite->TribunalLib = prepareString($entrep['TribunalLib']); + //'NumGreffe' = $entrep['numGreffe'], // Ajouté le 4 08 2009 + $identite->NumRC = $entrep['numRC']; // Ajouté le 4 08 2009 + $identite->Actif = $entrep['Actif']; + $identite->ActifEco = $entrep['ActifEco']; // Etab éco actif, ajout le 28/04/2011 + $identite->ActifEcoDate = $entrep['ActifEcoDate']; // Date si éco inactif et jur actif + $identite->ActifEcoType = $entrep['ActifEcoType']; // vide ou NPAI ou PFER ou ECOF + $identite->EntActiveRCS = $entrep['EntActiveRCS']; + $identite->AutreId = $entrep['AutreId']; + $identite->Source = $entrep['Source']; + $identite->SourceId = $entrep['SourceId']; + $identite->Isin = $entrep['Isin']; + $identite->Nom = prepareString(strtr($entrep['Nom'],'/*',' ')); + $identite->Nom2 = prepareString($entrep['Nom2']); + $identite->NomLong = prepareString($entrep['nomLong']); // Ajouté le 4 08 2009 + $identite->NomCommercial = prepareString($entrep['NomCommercial']); // Ajouté le 16 11 2010 + $identite->Siret = $entrep['Siret']; + $identite->Sigle = prepareString($entrep['Sigle']); + $identite->SigleLong = prepareString($entrep['sigleLong']); // Ajouté le 4 08 2009 + $identite->Enseigne = prepareString($entrep['Enseigne']); + $identite->EnseigneLong = prepareString($entrep['enseigneLong']); // Ajouté le 16 11 2010 + $identite->Adresse = prepareString($entrep['Adresse']); + $identite->Adresse2 = prepareString($entrep['Adresse2']); + $identite->AdresseNum = prepareString($entrep['AdresseNum']); + $identite->AdresseBtq = prepareString($entrep['AdresseBtq']); + $identite->AdresseVoie = prepareString($entrep['AdresseVoie']); + $identite->AdresseRue = prepareString($entrep['AdresseRue']); + $identite->CP = $entrep['CP']; + $identite->Ville = prepareString($entrep['Ville']); + $identite->Pays = prepareString($entrep['Pays']); // Ajouté le 18 02 2008 + $identite->PaysIso2 = $entrep['PaysIso2']; + $identite->AdresseDom = $entrep['AdresseDom']; + + $tabAdresseDomEnt = array(); + if (isset($entrep['AdresseDomEnt']) && count($entrep['AdresseDomEnt'])>0){ + foreach ($entrep['AdresseDomEnt'] as $element){ + $adresseDomEnt = new AdresseDomEnt(); + $adresseDomEnt->siren = $element['siren']; + $adresseDomEnt->nom = $element['nom']; + $tabAdresseDomEnt[] = $adresseDomEnt; + } + } + $identite->AdresseDomEnt = $tabAdresseDomEnt; + + $identite->AdresseDomNb = $entrep['AdresseDomNb']; + $identite->Civilite = $entrep['Civilite']; + $identite->NbEtab = $entrep['NbEtab']; + $identite->Tel = prepareString($entrep['Tel']); + $identite->Fax = prepareString($entrep['Fax']); + $identite->Web = prepareString($entrep['Web']); + $identite->Mail = prepareString($entrep['Mail']); + $identite->GeoLat = $entrep['GeoLat']; + $identite->GeoLon = $entrep['GeoLon']; + $identite->GeoPrecis = $entrep['GeoPrecis']; + + $geoInfos = new GeoInfos(); + $geoInfos->CUCS = $entrep['GeoInfos']['CUCS']; + $geoInfos->NCUCS = $entrep['GeoInfos']['NCUCS']; + $geoInfos->ZRU = $entrep['GeoInfos']['ZRU']; + $geoInfos->NZRU = $entrep['GeoInfos']['NZRU']; + $geoInfos->ZFU = $entrep['GeoInfos']['ZFU']; + $geoInfos->NZFU = $entrep['GeoInfos']['NZFU']; + $geoInfos->ZUS = $entrep['GeoInfos']['ZUS']; + $geoInfos->NZUS = $entrep['GeoInfos']['NZUS']; + $geoInfos->AFR = $entrep['GeoInfos']['AFR']; + $geoInfos->NAFR = $entrep['GeoInfos']['NAFR']; + $geoInfos->ZRR = $entrep['GeoInfos']['ZRR']; + $geoInfos->NZRR = $entrep['GeoInfos']['NZRR']; + $identite->GeoInfos = $geoInfos; + + $identite->TvaNumero = $entrep['TvaNumero']; + $identite->TvaAttribue = $entrep['TvaAttribue']; + $identite->FJ = $entrep['FJ']; + $identite->FJ_Lib = $entrep['FJ_lib']; + $identite->FJ2 = $entrep['FJ2']; // Ajouté le 4 08 2009 + $identite->FJ2_Lib = $entrep['FJ2_Lib']; // Ajouté le 4 08 2009 + $identite->Siren = $entrep['Siren']; + $identite->Nic = $entrep['Nic']; + $identite->NafEnt = $entrep['NafEnt']; + $identite->NafEntLib = $entrep['NafEntLib']; + $identite->NafEtab = $entrep['NafEtab']; + $identite->NafEtabLib = $entrep['NafEtabLib']; + $identite->NaceEtab = $entrep['NaceEtab']; + $identite->NaceEnt = $entrep['NaceEnt']; + $identite->Nafa = $entrep['APRM']; + $identite->NafaLib = prepareString($entrep['APRM_Lib']); + $identite->NumRM = $entrep['NumRM']; + $identite->Activite = $entrep['Activite']; + $identite->Capital = $entrep['Capital']; + $identite->CapitalDev = $entrep['CapitalDev']; + $identite->CapitalLib = $entrep['CapitalLib']; // Ajouté le 18 02 2008 + $identite->CapitalType = prepareString($entrep['CapitalType']); // Ajouté le 4 08 2009 + $identite->DateCreaEt = WDate::dateT('Ymd','Y-m-d',$entrep['DateCreaEt']); + $identite->DateCreaEn = WDate::dateT('Ymd','Y-m-d',$entrep['DateCreaEn']); + $identite->DateClotEt = $entrep['DateClotEt']; //@todo : date + $identite->DateImmat = $entrep['dateImmat']; // Ajouté le 4 08 2009 + $identite->DateRadiation = $entrep['dateRad']; // Ajouté le 4 08 2009 + //'DateMajRCS' = $entrep['DateMajRCS'], // Ajouté le 4 08 2009 + $identite->EffEnTr = $entrep['EffEnTr']; + $identite->EffEnTrLib = $entrep['EffEnTrLib']; + $identite->Effectif = $entrep['Effectif']; + $identite->EffEtTr = $entrep['EffEtTr']; // Ajout le 11 08 2010 + $identite->EffEtTrLib = $entrep['EffEtTrLib']; // Ajout le 11 08 2010 + $identite->EffectifEtab = $entrep['EffectifEtab']; // Ajout le 11 08 2010 + $identite->Dept = $entrep['Dept']; + $identite->codeCommune = prepareString($entrep['codeCommune']); + $identite->AnneeEffEn = $entrep['AnneeEffEn']; + $identite->AnneeEffEt = $entrep['AnneeEffEt']; + $identite->AnneeTCA = $entrep['AnneeTCA']; + $identite->TrancheCA = $entrep['TrancheCA']; + $identite->TrancheCALib = $entrep['TrancheCALib']; + $identite->TrancheCAType = $entrep['TrancheCAType']; + $identite->dir1Code = $entrep['dir1Code']; + $identite->dir1Titre = prepareString($entrep['dir1Titre']); + $identite->dir1NomPrenom = prepareString($entrep['dir1NomPrenom']); + $identite->dir1DateFct = prepareString($entrep['dir1DateFct']); //@todo : date + $identite->dir1DateNaiss = $entrep['dir1DateNaiss']; //@todo : date // Ajouté le 4 08 2009 + $identite->dir1LieuNaiss = prepareString($entrep['dir1LieuNaiss']); // Ajouté le 4 08 2009 + $identite->dir2Code = $entrep['dir2Code']; + $identite->dir2Titre = prepareString($entrep['dir2Titre']); + $identite->dir2NomPrenom = prepareString($entrep['dir2NomPrenom']); + $identite->dir2DateFct = $entrep['dir2DateFct']; //@todo : date + $identite->dir2DateNaiss = prepareString($entrep['dir2DateNaiss']); //@todo : date // Ajouté le 4 08 2009 + $identite->dir2LieuNaiss = prepareString($entrep['dir2LieuNaiss']); // Ajouté le 4 08 2009 + $identite->Rivoli = $entrep['Rivoli']; + + $identite->InfosIris->codIris = $entrep['InfosIris']['codIris']; + $identite->InfosIris->codComIris = $entrep['InfosIris']['codComIris']; + $identite->InfosIris->libIris = prepareString($entrep['InfosIris']['libIris']); + $identite->InfosIris->typIris = prepareString($entrep['InfosIris']['typIris']); + $identite->InfosIris->evoIris = $entrep['InfosIris']['evoIris']; + $identite->InfosIris->trIris = $entrep['InfosIris']['trIris']; + $identite->InfosIris->grdQuartier = $entrep['InfosIris']['grdQuartier']; + $identite->NatureActivite = $entrep['NatureActivite']; // Nature de l'activité + $identite->OrigineCreation = $entrep['OrigineCreation']; // Origine de la création + $identite->TypeExploitation = $entrep['TypeExploitation']; + $identite->Auxiliaire = $entrep['Auxiliaire']; // 1=Auxiliaire / 0=Non auxiliaire + $identite->Saisonnalite = $entrep['Saisonnalite']; // P=Activité permanente / S=Activité saisonnière + $identite->SurfaceMagasin = $entrep['ACTISURF']*1; // 0=N/D, 1=inf. à 300m2,2=300 à 400m2, 3=400 à 2500m2, 4=sup. à 2500m2 + $identite->SituationJuridique = $entrep['SituationJuridique']; + $identite->Bilan->Millesime = $entrep['bilanAnnee']; + $identite->Bilan->Cloture = $entrep['bilanDate']; //@todo : date + $identite->Bilan->Duree = $entrep['bilanMois']; + $identite->Bilan->Devise = $entrep['bilanDevise']; + $identite->Bilan->Capital = $entrep['bilanDA']; + $identite->Bilan->CA = $entrep['bilanFL']; + $identite->Bilan->CAestime = $entrep['bilanFLestime']; + $identite->Bilan->Resultat = prepareString($entrep['bilanHN']); + $identite->Bilan->Effectif = $entrep['bilanYP']; + $identite->Bourse->placeCotation = $bourse['placeCotation']; + $identite->Bourse->nombreTitres = $bourse['nombreTitres']; + $identite->Bourse->capitalisation = $bourse['close']*$bourse['nombreTitres']; + $identite->Bourse->derCoursDate = $bourse['date']; //@todo : date + $identite->Bourse->derCoursCloture = $bourse['close']; //@todo : date + + $tabAutreSiren = array(); + if (isset($entrep['AutreSiren'])) { + $autreSiren = new AutreSiren(); + $autreSiren->siren = $entrep['AutreSiren']['listeSiren']['siren']; + $autreSiren->type = $entrep['AutreSiren']['listeSiren']['type']; + $tabAutreSiren[] = $autreSiren; + } + $identite->AutreSiren = $tabAutreSiren; + + $tabAutreSiret = array(); + if (count($entrep['AutreSiret'])) { + foreach($entrep['AutreSiret'] as $type => $item) { + $autreSiret = new AutreSiret(); + $autreSiret->type = $type; + $autreSiret->siren = $item['siren']; + $autreSiret->nic = $item['nic']; + $autreSiret->apeEtab = $item['apeEtab']; + $autreSiret->codeEve = $item['codeEve']; + $autreSiret->dateEve = $item['dateEve']; + $autreSiret->adrL1 = $item['adrL1']; + $autreSiret->adrL2 = $item['adrL2']; + $autreSiret->adrL3 = $item['adrL3']; + $autreSiret->adrL4 = $item['adrL4']; + $autreSiret->adrL5 = $item['adrL5']; + $autreSiret->adrL6 = $item['adrL6']; + $autreSiret->adrL7 = $item['adrL7']; + $autreSiret->depCom = $item['depCom']; + $autreSiret->rivoli = $item['rivoli']; + $autreSiret->siege = $item['siege']; + $autreSiret->destinat = $item['destinat']; + $autreSiret->typEtab = $item['typeEtab']; + $autreSiret->origine = $item['origine']; + $tabAutreSiret[] = $autreSiret; + } + } + $identite->AutreSiret = $tabAutreSiret; + + $identite->DateMajINSEE = $entrep['DateMajINSEE']; //@todo : date + $identite->DateMajRCS = $entrep['DateMajRCS']; //@todo : date + $identite->DateMajBILAN = $entrep['bilanDateMaj']; //@todo : date + $identite->DateMajANN = $entrep['dateMajANN']; //@todo : date + $identite->DateMajID = $entrep['dateMajIdentite']; //@todo : date + //'importExport' = $entrep['importExport'], + + if (preg_match('/NAF4/i', $this->tabInfoUser['pref'])) + { + $entrep2 = $iInsee->getNaf4($siren, $nic, $id); + $identite->Naf4Ent = $entrep2['apen4']; + $identite->Naf4Etab = $entrep2['apet4']; + $identite->Naf4EntLib = prepareString($entrep2['apen4_lib']); + $identite->Naf4EtabLib = prepareString($entrep2['apet4_lib']); + } + + debugLog('I', 'Etablissement retourné = '. $entrep['Nom'], __LINE__, __FILE__, __FUNCTION__, __CLASS__); + $this->wsLog('identite',$siret,$id); + $duree=round(microtime(1)-$tdeb,3); + $ligne=date('YmdHis').";$siret;Ws->getIdentite APRES ($duree s) !!!"; + $fp=fopen(LOG_PATH.'/accesDistant.log', 'a'); + fwrite($fp,$ligne.EOL); + fclose($fp); + + return $identite; + } + + /** + * Recherche + * @param EntrepriseCriteres $criteres + * @param integer $position Position de parcours des résultats retournées (0 par défaut) + * @param integer $nbRep Nombre de réponses retournées lors d'une requête (20 par défaut) + * @param integer $maxRep Nombre de réponses maximum pouvant être retournées lors d'une requête (200 par défaut) + * @param boolean $pertinence Recherche orthographique stricte sur le nom, l'adresse et la ville (false par défaut) + * @param boolean $avecSiren Seulement les entités sirénées (false par défaut) + * @return SearchEntrepriseReturn + */ + public function searchEntreprise($criteres, $position = 0, $nbRep = 20, $maxRep = 200, $pertinence = false, $avecSiren = false) + { + $this->authenticate(); + + if (empty($position)) { $position = 0;} + if (empty($nbRep)) { $nbRep = 20; } + if (empty($maxRep)) { $maxRep = 200; } + + require_once 'i18n/cleanchar.php'; + + $entCriteres = new EntrepriseCriteres(); + $entCriteres = $criteres; + $identifiant = $entCriteres->identifiant; + $typeId = ''; + + //Detection autour de l'identifiant + if ($identifiant!='') { + $len = strlen($identifiant); + //Numéro WALDEC + if (strtoupper(substr($identifiant,0,1))=='W') { + $typeId = 'W'; + //Code ISIN + } elseif ($len==12){ + $typeId = 'I'; + //TVA Intracommunautaire + } elseif (in_array(substr($identifiant,0,2), + array('AT','BE','BG','CY','CZ','DE','DK','EE','EL','ES', + 'FI','GB','HU','IE','IT','LT','LU','LV','MT','NL','PL', + 'PT','RO','SE','SI','SK'))){ + //"La recherche par numéro de TVA n'est pas encore possible sur ce pays !"; + //Pour la france + } elseif (substr($identifiant,0,2)=='FR') { + $typeId = 'S'; + if ($len==13) $identifiant = substr($identifiant,4,9); + else $identifiant = ''; + //Numéro RC + } elseif (preg_match('/A|B|C|D/i', $identifiant)) { + $typeId = 'R'; + //Siren normal on enleve tout ce qui n'est pas un chiffre + } else { + $typeId = 'S'; + } + } + + $adresse = trim($entCriteres->adresse); + + //Détection Tel/Fax uniquement + if ( empty($typeId) + && empty($entCriteres->raisonSociale) + && empty($adresse) + && empty($entCriteres->codePostal) + && empty($entCriteres->ville) + && empty($entCriteres->naf) ){ + $typeId = 'TEL'; + } + + if (in_array($typeId, array('R', 'W', 'I'))){ + + $O = $this->searchAutreId( + $typeId, + $identifiant, + empty($position) ? 0 : $position, + empty($nbRep) ? 20 : $nbRep, + empty($maxRep) ? 200 : $maxRep, + $entCriteres->codePostal + ); + $output = new SearchEntrepriseReturn(); + $output->nbReponses = $O->nbReponses; + $output->nbReponsesTotal = $O->nbReponsesTotal; + $output->result = $O->result; + return $output; + + } elseif ($typeId == 'S'){ + + $O = $this->searchSiren( + $identifiant, + empty($position) ? 0 : $position, + empty($nbRep) ? 20 : $nbRep, + empty($maxRep) ? 200 : $maxRep, + $entCriteres->codePostal + ); + + $output = new SearchEntrepriseReturn(); + $output->nbReponses = $O->nbReponses; + $output->nbReponsesTotal = $O->nbReponsesTotal; + $output->result = $O->result; + $output->info = $O->info; + return $output; + + } elseif ($typeId == 'TEL'){ + + $O = $this->searchTelFax( + $entCriteres->telFax, + empty($position) ? 0 : $position, + empty($nbRep) ? 20 : $nbRep, + empty($maxRep) ? 200 : $maxRep + ); + + $output = new SearchEntrepriseReturn(); + $output->nbReponses = $O->nbReponses; + $output->nbReponsesTotal = $O->nbReponsesTotal; + $output->result = $O->result; + return $output; + + } else { + + $O = $this->searchNomAdr( + cleanstring($entCriteres->raisonSociale), + cleanstring($entCriteres->adresse), + $entCriteres->codePostal, + cleanstring($entCriteres->ville), + empty($entCriteres->siege) ? false : $entCriteres->siege, + empty($entCriteres->actif) ? false : $entCriteres->actif, + empty($position) ? 0 : $position, + empty($nbRep) ? 20 : $nbRep, + empty($maxRep) ? 200 : $maxRep, + empty($pertinence) ? false : $pertinence, + empty($avecSiren) ? false : $avecSiren, + $entCriteres->naf + ); + + $output = new SearchEntrepriseReturn(); + $output->nbReponses = $O->nbReponses; + $output->nbReponsesTotal = $O->nbReponsesTotal; + $output->result = $O->result; + return $output; + } + } + +/** + * Recherche entreprise par nom et adresse + * @param string $raisonSociale Raison Sociale ou Enseigne ou Sigle + * @param string $adresse Adresse de l'entreprise, du type : 3 rue des Plantes + * @param string $codePostal Code postal (ex: 75014) + * @param string $ville Ville + * @param boolean $siege Limitation de la recherche au sièges (si true) + * @param boolean $actif Limitation aux établissements actifs (si true) + * @param integer $deb Position du curseur dans la liste des réponses (0 par défaut) + * @param integer $nbRep Nombre de réponses retournées au maximum par cette requete (20 par défaut) + * @param integer $maxRep Nombre de réponses recherchées au maximum (200 par défaut) + * @param boolean $pertinence Recherche orthographique stricte sur le nom, l'adresse et la ville (si true) + * @param boolean $avecSiren Ne proposer que les entités sirénées + * @param string $ape_etab + * @return SearchReturn + */ + public function searchNomAdr($raisonSociale, $adresse='', $codePostal='', $ville='', $siege=false, $actif=false, $deb=0, $nbRep=20, $maxRep=200, $pertinence=false, $avecSiren=false, $ape_etab='') + { + $this->authenticate(); + + debugLog('I',"Recherche Entreprise de $raisonSociale, $adresse, $codePostal $ville (Siège=$siege / Max Rep=$nbRep)",__LINE__,__FILE__, __FUNCTION__, __CLASS__); + + if (empty($adresse)) $adresse = ''; + if (empty($codePostal)) $codePostal = ''; + if (empty($ville)) $ville = ''; + if (empty($siege)) $siege = false; + if (empty($actif)) $actif = false; + if (empty($deb)) $deb = 0; + if (empty($nbRep)) $nbRep = 20; + if (empty($maxRep)) $maxRep = 200; + if (empty($pertinence)) $pertinence = false; + if (empty($avecSiren)) $avecSiren = false; + if (empty($ape_etab)) $ape_etab = ''; + + $iInsee = new MInsee(); + $etabs = $iInsee->rechercheEtab($raisonSociale, $adresse, $codePostal, $ville, $siege, $actif, $deb, $nbRep, $maxRep, $pertinence, $avecSiren, $ape_etab); + + $result = new SearchReturn(); + $tabRet = array(); + if (count($etabs['reponses'])) { + foreach ($etabs['reponses'] as $etab) { + $reponse = new EntrepriseItem(); + $reponse->id = $etab['id']; + $reponse->Pertinence = $etab['Pertinence']; + $reponse->Siret = $etab['Siret']; + $reponse->Siege = $etab['Siege']; + $reponse->Nom = strtr($etab['Nom'],'/*',' '); + $reponse->Nom2 = $etab['Nom2']; + $reponse->Sigle = $etab['Sigle']; + $reponse->Enseigne = $etab['Enseigne']; + $reponse->Adresse = $etab['Adresse']; + $reponse->Adresse2 = $etab['Adresse2']; + $reponse->CP = $etab['CP']; + $reponse->Ville = $etab['Ville']; + $reponse->Tel = $etab['Tel']; + $reponse->Fax = $etab['Fax']; + $reponse->FJ = $etab['FJ']; + $reponse->FJLib = $iInsee->getLibelleFJ($etab['FJ']); + $reponse->Siren = $etab['Siren']; + $reponse->Nic = $etab['Nic']; + $reponse->Actif = $etab['Actif']; + $reponse->NafEtab = $etab['NafEtab']; // Etablissement + $reponse->NafEtabLib = $iInsee->getLibelleNaf($etab['NafEtab']); // Etablissement + $reponse->NafEnt = $etab['NafEnt']; // Entreprise + $reponse->NafEntLib = $iInsee->getLibelleNaf($etab['NafEnt']); + + $tabRet[] = $reponse; + } + } + + $fp=@fopen(LOG_PATH.'/recherches.log','a'); + + $siretTrouve = 0; + if ($etabs['nbReponses']==0) { + + $str="NbRep=0, S=$raisonSociale, R=$adresse, L=$codePostal, V=$ville, A=$ape_etab, ($deb, $nbRep, $maxRep, $siege, $actif, $pertinence, $avecSiren), SiretTrouve=$siretTrouve"; + @fwrite($fp, $str.EOL); + @fclose($fp); + debugLog('I', "rechercheEtab : AUCUN RESULTAT, S=$raisonSociale, R=$adresse, L=$codePostal, V=$ville, A=$ape_etab ($siege, $actif, $deb, $nbRep, $maxRep, $pertinence, $avecSiren)", __LINE__, __FILE__, __FUNCTION__, __CLASS__); + + $result->nbReponses = count($tabRet); + $result->nbReponsesTotal = $etabs['nbReponsesTotal']; + $result->result = $tabRet; + + return $result; + + } + + if ($etabs['nbReponses']==1) $siretTrouve=$etabs['reponses'][0]['Siret']; + $str="NbRep=".$etabs['nbReponses'].", S=$raisonSociale, R=$adresse, L=$codePostal, V=$ville, A=$ape_etab, ($deb, $nbRep, $maxRep, $siege, $actif, $pertinence, $avecSiren), SiretTrouve=$siretTrouve"; + @fwrite($fp, $str.EOL); + @fclose($fp); + debugLog('I', "rechercheEtab : ".$etabs['nbReponses']." RESULTATS, S=$raisonSociale, R=$adresse, L=$codePostal, V=$ville, A=$ape_etab ($siege, $actif, $deb, $nbRep, $maxRep, $pertinence, $avecSiren)", __LINE__, __FILE__, __FUNCTION__, __CLASS__); + + $result->nbReponses = $etabs['nbReponses']; + $result->nbReponsesTotal = $etabs['nbReponsesTotal']; + $result->result = $tabRet; + return $result; + } + + /** + * Recherche d'entreprise ou d'établissement par leur identifiant SIREN ou SIRET + * @param string $siret Siren ou Siret de l'entreprise ou de l'établissement sur 9 ou 14 chiffres significatifs + * @param integer $deb Position du curseur dans la liste des réponses (0 par défaut) + * @param integer $nbRep Nombre de réponses retournées au maximum par cette requete (20 par défaut) + * @param integer $maxRep Nombre de réponses recherchées au maximum (200 par défaut) + * @param integer $dep Département + * @return SearchReturn + */ + public function searchSiren($siret, $deb=0, $nbRep=20, $maxRep=200, $dep=0) + { + $this->authenticate(); + + debugLog('I',"Recherche par Siret de $siret (dep=$dep) avec un maximum de $maxRep réponses pour la tranche $deb à $nbRep",__LINE__,__FILE__, __FUNCTION__, __CLASS__); + + if ( strlen($siret)!=14 && strlen($siret)!=9 ){ + debugLog('W', "Siren/Siret $siret incorrect", __LINE__, __FILE__, __FUNCTION__, __CLASS__); + $this->sendError('1010'); + } + + if (empty($deb)) $deb = 0; + if (empty($nbRep)) $nbRep = 20; + if (empty($maxRep)) $maxRep = 200; + if (empty($dep)) $dep = 0; + + $nbReponsesTotal = $nbReponses = 0; + + $siren = substr($siret,0,9); + if (strlen($siret)==14) $nic = substr($siret,9,5); + elseif (strlen($siret)== 9) $nic = ''; + + $iInsee = new MInsee(); + + $rep = $iInsee->getEtablissements($siren, $nic, $deb, $nbRep, $maxRep, $dep); + if (count($rep['reponses'])==0 && $dep>0) { + $rep = $iInsee->getEtablissements($siren, $nic, $deb, $nbRep, $maxRep); + } + $etabs = $rep['reponses']; + $tabRet = array(); + if (count($etabs)>0){ + foreach ($etabs as $nb=>$etab) { + $reponse = new EntrepriseItem(); + $reponse->id = $etab['id']; + $reponse->Pertinence = $etab['Pertinence']; + $reponse->Siret = $etab['Siret']; + $reponse->Siege = $etab['Siege']; + $reponse->Nom = prepareString(strtr($etab['Nom'],'/*',' ')); + $reponse->Nom2 = prepareString($etab['Nom2']); + $reponse->Sigle = prepareString($etab['Sigle']); + $reponse->Enseigne = prepareString($etab['Enseigne']); + $reponse->Adresse = prepareString($etab['Adresse']); + $reponse->Adresse2 = prepareString($etab['Adresse2']); + $reponse->CP = $etab['CP']; + $reponse->Ville = prepareString($etab['Ville']); + $reponse->Tel = $etab['Tel']; + $reponse->Fax = $etab['Fax']; + $reponse->FJ = $etab['FJ']; + $reponse->FJLib = prepareString($etab['FJLib']); + $reponse->Siren = $etab['Siren']; + $reponse->Nic = $etab['Nic']; + $reponse->Actif = $etab['Actif']; + $reponse->NafEtab = $etab['NafEtab']; // Etablissement + $reponse->NafEtabLib = $etab['NafEtabLib']; // Etablissement + $reponse->NafEnt = $etab['NafEnt']; // Entreprise + $reponse->NafEntLib = $etab['NafEntLib']; + $tabRet[] = $reponse; + } + } + $nbReponsesTotal = $rep['nbReponsesTotal']; + $nbReponses = $rep['nbReponses']; + + /** Si le siren est valide, on part chez Infogreffe **/ + if (count($tabRet)==0 && $iInsee->valideSiren($siren)) { + $iGeffes = new MGreffes(); + $etab = $iGeffes->getIdentite($siren); + if ($etab) { + $reponse = new EntrepriseItem(); + $reponse->id = $etab['id']; + $reponse->Pertinence = $etab['Pertinence']; + $reponse->Siret = $etab['Siret']; + $reponse->Siege = $etab['Siege']; + $reponse->Nom = prepareString($etab['Nom']); + $reponse->Nom2 = prepareString($etab['Nom2']); + $reponse->Sigle = prepareString($etab['Sigle']); + $reponse->Enseigne = prepareString($etab['Enseigne']); + $reponse->Adresse = prepareString($etab['Adresse']); + $reponse->Adresse2 = prepareString($etab['Adresse2']); + $reponse->CP = $etab['CP']; + $reponse->Ville = prepareString($etab['Ville']); + $reponse->Tel = $etab['Tel']; + $reponse->Fax = $etab['Fax']; + $reponse->FJ = $etab['FJ']; + $reponse->FJLib = utf8_encode(prepareString(utf8_decode($etab['FJLib']))); + $reponse->Siren = $etab['Siren']; + $reponse->Nic = $etab['Nic']; + $reponse->Actif = $etab['Actif']; + $reponse->NafEtab = $etab['NafEtab']; + $reponse->NafEtabLib = $etab['NafEtabLib']; + $reponse->NafEnt = $etab['NafEnt']; + $reponse->NafEntLib = $etab['NafEntLib']; + + $tabRet[] = $reponse; + $nbReponses = 1; + $nbReponsesTotal = 1; + + } else { + $iDb = new WDB(); + $iDb->insert('siren_inexistants', + array( 'siren'=>$siren, + 'nic'=>$nic, + 'dep'=>$dep, + 'login'=>$this->tabInfoUser['login'], + 'client'=>$this->tabInfoUser['idClient'], + 'dateInsert'=>date('YmdHis'))); + $nbReponses = 0; + $nbReponsesTotal = 0; + } + } + + $output = new SearchReturn(); + $output->nbReponses = $nbReponses; + $output->nbReponsesTotal = $nbReponsesTotal; + $output->result = $tabRet; + $output->info = $rep['info']; + return $output; + } + + /** + * Recherche d'entreprise ou d'établissement par un autre Identifiant + * + * @param string $typeId I=Code Isin, W=N°Waldec (Associations) ou R=N°RC (Registre Greffe) + * @param string $identifiant Identifiant recherché + * @param integer $deb Position du curseur dans la liste des réponses (0 par défaut) + * @param integer $nbRep Nombre de réponses retournées au maximum par cette requete (20 par défaut) + * @param integer $maxRep Nombre de réponses recherchées au maximum (200 par défaut) + * @return SearchReturn + */ + public function searchAutreId($typeId, $identifiant, $deb=0, $nbRep=20, $maxRep=200, $dep=0) + { + $this->authenticate(); + + if (empty($deb)) $deb = 0; + if (empty($nbRep)) $nbRep = 0; + if (empty($maxRep)) $maxRep = 0; + if (empty($dep)) $dep = 0; + + $typeId = substr(trim(strtoupper($typeId)),0,1); + + if ($typeId!='I' && $typeId!='W' && $typeId!='R') { + debugLog('I',"Type d'identifiant $typeId inexistant",__LINE__,__FILE__, __FUNCTION__, __CLASS__); + $this->sendError('1021'); + } + $tabRet = array(); + debugLog('I',"Recherche par identifiant $typeId de $identifiantavec un maximum de $nbRep réponses",__LINE__,__FILE__, __FUNCTION__, __CLASS__); + if ($typeId=='W' || $typeId=='R') + { + $iInsee = new MInsee(); + $rep = $iInsee->getEtablissementsParId('AUTRE', $identifiant, $deb, $nbRep, $maxRep, $dep); + $etabs = $rep['reponses']; + foreach ($etabs as $nb=>$etab) + { + $item = new EntrepriseItem(); + $item->id = $etab['id']; + $item->Pertinence = $etab['Pertinence']; + $item->Siret = $etab['Siret']; + $item->Siege = $etab['Siege']; + $item->Nom = prepareString(strtr($etab['Nom'],'/*',' ')); + $item->Nom2 = prepareString($etab['Nom2']); + $item->Sigle = prepareString($etab['Sigle']); + $item->Enseigne = prepareString($etab['Enseigne']); + $item->Adresse = prepareString($etab['Adresse']); + $item->Adresse2 = prepareString($etab['Adresse2']); + $item->CP = $etab['CP']; + $item->Ville = prepareString($etab['Ville']); + $item->Tel = $etab['Tel']; + $item->Fax = $etab['Fax']; + $item->FJ = $etab['FJ']; + $item->FJLib = prepareString($etab['FJLib']); + $item->Siren = $etab['Siren']; + $item->Nic = $etab['Nic']; + $item->Actif = $etab['Actif']; + $item->NafEtab = $etab['NafEtab']; // Etablissement + $item->NafEtabLib = prepareString($etab['NafEtabLib']); // Etablissement + $item->NafEnt = $etab['NafEnt']; // Entreprise + $item->NafEntLib = prepareString($etab['NafEntLib']); + $tabRet[] = $item; + } + + $output = new SearchReturn(); + $output->nbReponses = $rep['nbReponses']; + $output->nbReponsesTotal = $rep['nbReponsesTotal']; + $output->result = $tabRet; + return $output; + } else { + $iBourse = new MBourse($siren); + $siren = $iBourse->getCodeSiren($identifiant); + return $this->searchSiren($siren, $deb, $nbRep, $maxRep); + } + } + + + /** + * Recherche d'entreprise ou d'établissement par leur TEL FAX + * + * @param string $telFax Téléphone ou fax de l'établissement (ex: 0175438010) + * @param integer $deb Position du curseur dans la liste des réponses (0 par défaut) + * @param integer $nbRep Nombre de réponses retournées au maximum par cette requete (20 par défaut) + * @param integer $maxRep Nombre de réponses recherchées au maximum (200 par défaut) + * @return SearchReturn + */ + public function searchTelFax($telFax, $deb=0, $nbRep=20, $maxRep=200) + { + $this->authenticate(); + + if (empty($deb)) $deb = 0; + if (empty($nbRep)) $nbRep = 0; + if (empty($maxRep)) $maxRep = 0; + + $tabRet = array(); + debugLog('I',"Recherche par Tel/Fax de $telFax avec un maximum de $nbRep réponses",__LINE__,__FILE__, __FUNCTION__, __CLASS__); + //$assocs=$this->iInsee->rechercheEtab($raisonSociale, $adresse, $codePostal, $ville, $siege, $nbRep, $pertinence); + /** @todo A FAIRE **/ + if (strlen($telFax)<10 || strlen($telFax)>14) { + debugLog('W', "Tel/Fax $telFax incorrect", __LINE__, __FILE__, __FUNCTION__, __CLASS__); + $this->sendError('1011'); + } + + $iInsee = new MInsee(); + $rep = $iInsee->getEtablissementsParId('TEL', $telFax, $deb, $nbRep, $maxRep); + $etabs = $rep['reponses']; + foreach ($etabs as $nb=>$etab) + { + $item = new EntrepriseItem(); + $item->id = $etab['id']; + $item->Pertinence = $etab['Pertinence']; + $item->Siret = $etab['Siret']; + $item->Siege = $etab['Siege']; + $item->Nom = prepareString(strtr($etab['Nom'],'/*',' ')); + $item->Nom2 = prepareString($etab['Nom2']); + $item->Sigle = prepareString($etab['Sigle']); + $item->Enseigne = prepareString($etab['Enseigne']); + $item->Adresse = prepareString($etab['Adresse']); + $item->Adresse2 = prepareString($etab['Adresse2']); + $item->CP = $etab['CP']; + $item->Ville = prepareString($etab['Ville']); + $item->Tel = $etab['Tel']; + $item->Fax = $etab['Fax']; + $item->FJ = $etab['FJ']; + $item->FJLib = prepareString($etab['FJLib']); + $item->Siren = $etab['Siren']; + $item->Nic = $etab['Nic']; + $item->Actif = $etab['Actif']; + $item->NafEtab = $etab['NafEtab']; // Etablissement + $item->NafEtabLib = prepareString($etab['NafEtabLib']); // Etablissement + $item->NafEnt = $etab['NafEnt']; // Entreprise + $item->NafEntLib = prepareString($etab['NafEntLib']); + $tabRet[] = $item; + } + + $output = new SearchReturn(); + $output->nbReponses = $rep['nbReponses']; + $output->nbReponsesTotal = $rep['nbReponsesTotal']; + $output->result = $tabRet; + return $output; + } + +} \ No newline at end of file diff --git a/library/WsScore/Clients/Veolia/v0.1/Types.php b/library/WsScore/Clients/Veolia/v0.1/Types.php new file mode 100644 index 00000000..de56ab98 --- /dev/null +++ b/library/WsScore/Clients/Veolia/v0.1/Types.php @@ -0,0 +1,1213 @@ +