issue #0001467 : Nouveaux paramètres et correction pour les filtres SIEGE et ACTIF

This commit is contained in:
Michael RICOIS 2012-12-17 13:35:36 +00:00
parent 8d63f63448
commit 39059dadf1
2 changed files with 100 additions and 91 deletions

View File

@ -1488,59 +1488,60 @@ public function rechercheDirOld($nom, $prenom='', $fonction='', $dateNaiss='', $
* @param int $maxRep * @param int $maxRep
* @param int $dep * @param int $dep
* @param int $actif * @param int $actif
* @param int $siege
*/ */
public function getEtablissements($siren, $nic='', $deb=0, $nbRep=20, $maxRep=200, $dep=0, $actif=-1) public function getEtablissements($siren, $nic='', $deb=0, $nbRep=20, $maxRep=200, $dep=0, $actif=-1, $siege=null)
{ {
$this->setTabCodesNaf(); $this->setTabCodesNaf();
$deb=$deb*1; $deb=$deb*1;
$dep=$dep*1; $dep=$dep*1;
$nbRep=$nbRep*1; $nbRep=$nbRep*1;
$limit="LIMIT $deb, $nbRep";
$strInfo = ''; $strInfo = '';
$limit="LIMIT $deb, $nbRep";
$sqlInfo="'Etab' as Loc, e.id, e.source, e.source_id, e.triCode, e.autre_id, e.siren, e.nic, e.siege, ".
"e.raisonSociale, e.enseigne, e.sigle, e.adr_num, e.adr_btq, e.adr_typeVoie, e.adr_libVoie, ".
"e.adr_comp, e.adr_cp, e.adr_ville, e.tel, e.fax, e.cj, e.ape_etab, e.ape_entrep, e.teff_etab, ".
"CONCAT(e.siren, e.nic) as siret, e.actif, e.identite_pre";
$strActif=''; $strActif='';
if (intval($actif)==1) $strActif=' AND e.actif=1 '; if (intval($actif)==1) $strActif=' AND e.actif=1 ';
elseif (intval($actif)==0) $strActif=' AND e.actif=0 '; elseif (intval($actif)==0) $strActif=' AND e.actif=0 ';
$strSiege='';
if ($siege===null) $strSiege='';
elseif ($siege==1) $strSiege=' AND e.siege=1 ';
elseif ($siege==0) $strSiege=' AND e.siege=0 ';
if ($dep>0 && $dep<99999) { if ($dep>0 && $dep<99999) {
if ($dep<96) $strDep='AND adr_cp BETWEEN '.$dep.'000 AND '.$dep.'999'; if ($dep<96) $strDep='AND adr_cp BETWEEN '.$dep.'000 AND '.$dep.'999';
elseif ($dep>9999) $strDep="AND adr_cp BETWEEN $dep AND $dep"; elseif ($dep>9999) $strDep="AND adr_cp BETWEEN $dep AND $dep";
else $strDep='AND adr_cp BETWEEN '.$dep.'00 AND '.$dep.'99'; else $strDep='AND adr_cp BETWEEN '.$dep.'00 AND '.$dep.'99';
$tabTmp=$this->iDb->select('etablissements e', 'count(*)', "siren=$siren $strDep $strActif"); $tabTmp=$this->iDb->select('etablissements e', 'count(*)', "siren=$siren $strDep $strActif $strSiege");
$nbTot=$tabTmp[0][0]; $nbTot=$tabTmp[0][0];
$listeEtab=$this->iDb->select('etablissements e', $listeEtab=$this->iDb->select('etablissements e', $sqlInfo,
"'Etab' as Loc, e.id, e.source, e.source_id, e.triCode, e.autre_id, e.siren, e.nic, e.siege, ". "siren=$siren $strDep $strActif $strSiege ORDER BY e.siege , e.actif DESC $limit", false, MYSQL_ASSOC);
"e.raisonSociale, e.enseigne, e.sigle, e.adr_num, e.adr_btq, e.adr_typeVoie, e.adr_libVoie, ".
"e.adr_comp, e.adr_cp, e.adr_ville, e.tel, e.fax, e.cj, e.ape_etab, e.ape_entrep, e.teff_etab, ".
"CONCAT(e.siren, e.nic) as siret, e.actif, e.identite_pre",
"siren=$siren $strDep $strActif ORDER BY e.siege , e.actif DESC $limit", false, MYSQL_ASSOC);
} elseif ($nic=='') { } elseif ($nic=='') {
$tabTmp=$this->iDb->select('etablissements e', 'count(*)', "siren=$siren $strActif"); $tabTmp=$this->iDb->select('etablissements e', 'count(*)', "siren=$siren $strActif $strSiege");
$nbTot=$tabTmp[0][0]; $nbTot=$tabTmp[0][0];
$listeEtab=$this->iDb->select('etablissements e', $listeEtab=$this->iDb->select('etablissements e', $sqlInfo,
"'Etab' as Loc, e.id, e.source, e.source_id, e.triCode, e.autre_id, e.siren, e.nic, e.siege, ". "e.siren=$siren $strActif $strSiege ORDER BY e.siege DESC, e.actif DESC $limit", false, MYSQL_ASSOC);
"e.raisonSociale, e.enseigne, e.sigle, e.adr_num, e.adr_btq, e.adr_typeVoie, e.adr_libVoie, ".
"e.adr_comp, e.adr_cp, e.adr_ville, e.tel, e.fax, e.cj, e.ape_etab, e.ape_entrep, e.teff_etab, ".
"CONCAT(e.siren, e.nic) as siret, e.actif, e.identite_pre",
"e.siren=$siren $strActif ORDER BY e.siege DESC, e.actif DESC $limit", false, MYSQL_ASSOC);
} else { } else {
$tabTmp=$this->iDb->select('etablissements e', 'count(*)', "siren=$siren AND (nic=$nic OR siege=1) $strActif"); $tabTmp=$this->iDb->select('etablissements e', 'count(*)', "siren=$siren AND (nic=$nic OR siege=1) $strActif $strSiege");
$nbTot=$tabTmp[0][0]; $nbTot=$tabTmp[0][0];
$listeEtab=$this->iDb->select('etablissements e', $listeEtab=$this->iDb->select('etablissements e', $sqlInfo,
"'Etab' as Loc, e.id, e.source, e.source_id, e.triCode, e.autre_id, e.siren, e.nic, e.siege, ". "siren=$siren AND (nic=$nic OR siege=1) $strActif $strSiege ORDER BY e.siege , e.actif DESC $limit", false, MYSQL_ASSOC);
"e.raisonSociale, e.enseigne, e.sigle, e.adr_num, e.adr_btq, e.adr_typeVoie, e.adr_libVoie, ".
"e.adr_comp, e.adr_cp, e.adr_ville, e.tel, e.fax, e.cj, e.ape_etab, e.ape_entrep, e.teff_etab, ".
"CONCAT(e.siren, e.nic) as siret, e.actif, e.identite_pre",
"siren=$siren AND (nic=$nic OR siege=1) $strActif ORDER BY e.siege , e.actif DESC $limit", false, MYSQL_ASSOC);
} }
@ -1552,8 +1553,7 @@ public function rechercheDirOld($nom, $prenom='', $fonction='', $dateNaiss='', $
$listeSiren=array(); $listeSiren=array();
foreach ($liste as $s) { foreach ($liste as $s) {
if (sommeDeControle($s) != 0) { if (sommeDeControle($s) != 0) {
print 'erreur somme de controle sur '.$s. //print 'erreur somme de controle sur '.$s.' ('.sommeDeControle($s).')<br/>';
' ('.sommeDeControle($s).')<br/>';
} else { } else {
$listeSiren[]=$s; $listeSiren[]=$s;
} }
@ -1561,11 +1561,7 @@ public function rechercheDirOld($nom, $prenom='', $fonction='', $dateNaiss='', $
$strSiren=implode(',',$listeSiren); $strSiren=implode(',',$listeSiren);
$tabTmp=$this->iDb->select('etablissements', 'count(*)', "siren IN ($strSiren) AND siege=1"); $tabTmp=$this->iDb->select('etablissements', 'count(*)', "siren IN ($strSiren) AND siege=1");
$nbTot=$tabTmp[0][0]; $nbTot=$tabTmp[0][0];
$listeEtab=$this->iDb->select('etablissements e', $listeEtab=$this->iDb->select('etablissements e', $sqlInfo,
"'Etab' as Loc, e.id, e.source, e.source_id, e.triCode, e.autre_id, e.siren, e.nic, e.siege, ".
"e.raisonSociale, e.enseigne, e.sigle, e.adr_num, e.adr_btq, e.adr_typeVoie, e.adr_libVoie, ".
"e.adr_comp, e.adr_cp, e.adr_ville, e.tel, e.fax, e.cj, e.ape_etab, e.ape_entrep, e.teff_etab, ".
"CONCAT(e.siren, e.nic) as siret, e.actif, e.identite_pre",
"siren IN ($strSiren) AND siege=1 ORDER BY e.rang DESC, e.actif DESC, e.nic ASC $limit", true, MYSQL_ASSOC); "siren IN ($strSiren) AND siege=1 ORDER BY e.rang DESC, e.actif DESC, e.nic ASC $limit", true, MYSQL_ASSOC);
$strInfo='Siren saisi invalide'; $strInfo='Siren saisi invalide';
} }

View File

@ -4,13 +4,6 @@ require_once realpath(dirname(__FILE__)).'/Types.php';
class Entreprise extends WsScore class Entreprise extends WsScore
{ {
public function __construct()
{
parent::__construct();
$this->serviceClient = true;
$this->serviceClientName = 'Vwbank';
$this->serviceName = 'Entreprise';
}
/** /**
* Retourne les informations identitaires de l'entreprise ou de l'établissement demandé * Retourne les informations identitaires de l'entreprise ou de l'établissement demandé
@ -576,8 +569,12 @@ class Entreprise extends WsScore
$nbReponsesTotal = $rep['nbReponsesTotal']; $nbReponsesTotal = $rep['nbReponsesTotal'];
$nbReponses = $rep['nbReponses']; $nbReponses = $rep['nbReponses'];
if (count($tabRet)==0)
{
if ($siege===null || $actif==2)
{
/** Si le siren est valide, on part chez Infogreffe **/ /** Si le siren est valide, on part chez Infogreffe **/
if (count($tabRet)==0 && $iInsee->valideSiren($siren)) { if ($iInsee->valideSiren($siren)) {
$iGeffes = new MGreffes(); $iGeffes = new MGreffes();
$etab = $iGeffes->getIdentite($siren); $etab = $iGeffes->getIdentite($siren);
if ($etab) { if ($etab) {
@ -597,7 +594,7 @@ class Entreprise extends WsScore
$reponse->Tel = $etab['Tel']; $reponse->Tel = $etab['Tel'];
$reponse->Fax = $etab['Fax']; $reponse->Fax = $etab['Fax'];
$reponse->FJ = $etab['FJ']; $reponse->FJ = $etab['FJ'];
$reponse->FJLib = utf8_encode(prepareString(utf8_decode($etab['FJLib']))); $reponse->FJLib = prepareString($etab['FJLib']);
$reponse->Siren = $etab['Siren']; $reponse->Siren = $etab['Siren'];
$reponse->Nic = $etab['Nic']; $reponse->Nic = $etab['Nic'];
$reponse->Actif = $etab['Actif']; $reponse->Actif = $etab['Actif'];
@ -624,6 +621,22 @@ class Entreprise extends WsScore
$rep['info'] = 'Siren inexistant'; $rep['info'] = 'Siren inexistant';
} }
} }
} else {
if ($iInsee->sirenExiste($siren) ) {
$info = 'Aucun ';
if ( $siege == 1 ) $info.= 'siege';
else $info.= 'etablissement';
if ( $actif == 0 ) $info.= ' inactif';
elseif ( $actif == 1) $info.= ' actif';
$rep['info'] = $info;
} else {
$rep['info'] = 'Siren inexistant';
}
}
}
$output = new SearchReturn(); $output = new SearchReturn();
$output->nbReponses = $nbReponses; $output->nbReponses = $nbReponses;