216 lines
7.3 KiB
PHP
216 lines
7.3 KiB
PHP
<?php
|
|
require_once realpath(dirname(__FILE__)).'/functions.php';
|
|
require_once realpath(dirname(__FILE__)).'/Types/Types.php';
|
|
|
|
class WsEntreprise
|
|
{
|
|
protected $wsdl = null;
|
|
protected $wsdlOptions = array();
|
|
|
|
function __construct()
|
|
{
|
|
$webservicesConfig = Zend_Registry::get('webservicesConfig')->webservice->scores;
|
|
$wsdl = !empty($webservicesConfig->wsdl) ? $webservicesConfig->wsdl : null ;
|
|
$options = array();
|
|
foreach ($webservicesConfig->options as $optionName => $optionValue){
|
|
$options[$optionName] = $optionValue;
|
|
}
|
|
$options['login'] = $_SERVER['PHP_AUTH_USER'];
|
|
$options['password'] = $_SERVER['PHP_AUTH_PW'];
|
|
|
|
$this->wsdl = $wsdl;
|
|
$this->wsdlOptions = $options;
|
|
}
|
|
|
|
/**
|
|
* Retourne les informations identitaires de l'entreprise ou de l'établissement demandé
|
|
* @param string $siret Siren de l'entreprise ou siret de l'établissement
|
|
* @param int $id Identifiant interne
|
|
* @param boolean $forceVerif
|
|
* @return IdentiteReturnType
|
|
*/
|
|
function getIdentite($siret, $id = 0, $forceVerif = false)
|
|
{
|
|
//Enregistrement des accès à la requête getIdentite
|
|
Zend_Registry::get('WsLogger')->info("getIdentite - ip:".
|
|
$_SERVER['REMOTE_ADDR'].", login:".$_SERVER['PHP_AUTH_USER']);
|
|
|
|
//Connexion aux webservices V1
|
|
try {
|
|
$client = new SoapClient($this->wsdl, $this->wsdlOptions);
|
|
$O = $client->getIdentite($siret, $id, $forceVerif);
|
|
} catch (SoapFault $fault) {
|
|
Zend_Registry::get('WsLogger')->err("getIdentite($siret, $id) - ".serialize($fault));
|
|
}
|
|
//Gestion du retour
|
|
$error = new ErrorType();
|
|
$error = arrayToClass($O['error'], 'ErrorType');
|
|
$result = new IdentiteResultType();
|
|
$result = arrayToClass($O['result'], 'IdentiteResultType');
|
|
$outputParams = new IdentiteReturnType();
|
|
$outputParams->error = $error;
|
|
$outputParams->result = $result;
|
|
return $outputParams;
|
|
}
|
|
|
|
/**
|
|
* Recherche
|
|
* @param string $type Type de la recherche (recherche entreprise : 'ent', recherche dirigeant : 'dir')
|
|
* @param RechercheEntrepriseCriteres $criteres
|
|
* @param int $position Position de parcours des résultats retournées (0 par défaut)
|
|
* @param int $nbRep Nombre de réponses retournées lors d'une requête (20 par défaut)
|
|
* @param int $maxRep Nombre de réponses maximum pouvant être retournées lors d'une requête (200 par défaut)
|
|
* @param bool $pertinence Recherche orthographique stricte sur le nom, l'adresse et la ville (false par défaut)
|
|
* @param bool $avecSiren Seulement les entités sirénées (false par défaut)
|
|
* @return RechercheEntrepriseReturnType
|
|
*/
|
|
function rechercheEntreprise($type, $criteres, $position = 0, $nbRep = 20, $maxRep = 200, $pertinence = false, $avecSiren = false)
|
|
{
|
|
//Enregistrement des accès à la requête getIdentite
|
|
Zend_Registry::get('WsLogger')->info("rechercheEntreprise - ip:".
|
|
$_SERVER['REMOTE_ADDR'].", login:".$_SERVER['PHP_AUTH_USER']);
|
|
switch ($type)
|
|
{
|
|
case 'ent':
|
|
$entCriteres = new CriteresEntreprise();
|
|
$entCriteres = $criteres->elementEntreprise;
|
|
$client = new SoapClient($this->wsdl, $this->wsdlOptions);
|
|
$identifiant = $entCriteres->identifiant;
|
|
$typeId = '';
|
|
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';
|
|
}
|
|
}
|
|
|
|
if (in_array($typeId, array('R', 'W', 'I'))){
|
|
try {
|
|
$O = $client->searchAutreId(
|
|
$typeId,
|
|
$identifiant,
|
|
empty($position) ? 0 : $position,
|
|
empty($nbRep) ? 20 : $nbRep,
|
|
empty($maxRep) ? 200 : $maxRep,
|
|
$entCriteres->codePostal
|
|
);
|
|
} catch (SoapFault $fault) {
|
|
Zend_Registry::get('WsLogger')->err("rechercheEntreprise - ".serialize($criteres));
|
|
}
|
|
} elseif ($typeId == 'S'){
|
|
try {
|
|
$O = $client->searchSiren(
|
|
$identifiant,
|
|
empty($position) ? 0 : $position,
|
|
empty($nbRep) ? 20 : $nbRep,
|
|
empty($maxRep) ? 200 : $maxRep,
|
|
$entCriteres->codePostal
|
|
);
|
|
} catch (SoapFault $fault) {
|
|
Zend_Registry::get('WsLogger')->err("rechercheEntreprise - ".serialize($criteres));
|
|
}
|
|
} else {
|
|
|
|
try {
|
|
$O = $client->searchNomAdr(
|
|
$entCriteres->raisonSociale,
|
|
$entCriteres->adresse,
|
|
$entCriteres->codePostal,
|
|
$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
|
|
);
|
|
} catch (SoapFault $fault) {
|
|
Zend_Registry::get('WsLogger')->err("rechercheEntreprise - ".serialize($criteres));
|
|
}
|
|
}
|
|
|
|
break;
|
|
case 'dir':
|
|
$dirCriteres = new CriteresDirigeant();
|
|
$dirCriteres = $criteres->elementDirigeant;
|
|
$client = new SoapClient($this->wsdl, $this->wsdlOptions);
|
|
try {
|
|
$O = $client->searchDir(
|
|
$dirCriteres->dirNom,
|
|
$dirCriteres->dirPrenom,
|
|
$dirCriteres->dirDateNaiss,
|
|
$dirCriteres->dirVille,
|
|
empty($position) ? 0 : $position,
|
|
empty($nbRep) ? 20 : $nbRep,
|
|
empty($maxRep) ? 200 : $maxRep,
|
|
empty($pertinence) ? false : $pertinence
|
|
);
|
|
} catch (SoapFault $fault) {
|
|
Zend_Registry::get('WsLogger')->err("rechercheEntreprise - ".serialize($criteres));
|
|
}
|
|
break;
|
|
}
|
|
|
|
$error = new ErrorType();
|
|
$error = arrayToClass($O['error'], 'ErrorType');
|
|
$results = new RechercheEntrepriseResult();
|
|
$results = arrayToClass($O['results'], 'RechercheEntrepriseResult');
|
|
$outputParams = new RechercheEntrepriseReturnType();
|
|
$outputParams->error = $error;
|
|
$outputParams->results = $results;
|
|
return $outputParams;
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
* Retourne le status du webservice
|
|
* @return StatusResult
|
|
*/
|
|
function status()
|
|
{
|
|
/* @todo tester les différents éléments qui peuvent conduire
|
|
* à un problème dans les services tel que la connexion à la
|
|
* base de données, l'accès FTP, l'accès HTTP, l'accès système de fichier
|
|
*/
|
|
|
|
//Enregistrement des accès à la requête getIdentite
|
|
Zend_Registry::get('WsLogger')->info("status - ip:".
|
|
$_SERVER['REMOTE_ADDR'].", login:".$_SERVER['PHP_AUTH_USER'].
|
|
", hash:".$_SERVER['PHP_AUTH_PW']);
|
|
|
|
$error = new StatusResult();
|
|
$error->statusCode = 0;
|
|
$error->statusMsg = 'Services disponible (beta)';
|
|
return $error;
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
?>
|