Recherche Entreprise

This commit is contained in:
Michael RICOIS 2016-05-12 15:04:07 +02:00
parent f794a2493f
commit 735cc014ba
3 changed files with 430 additions and 2 deletions

View File

@ -34,6 +34,332 @@ class Search_EntrepriseController extends Zend_Controller_Action
*/
public function listAction()
{
$request = $this->getRequest();
$params = $request->getParams();
$type = $request->getParam('type', '');
$token = $request->getParam('token', null);
$filtre = $request->getParam('filtre', 'tout');
$listParams = array('siret', 'raisonSociale', 'numero', 'voie', 'cpVille', 'telFax', 'naf', 'fj');
$rechercheParams = new Scores_Session_Recherche();
//Si le formulaire a été soumis alors on enregistre en session et on redirige
if ( !empty($type) ) {
//Vérification si au moins un champs a été saisie
$nbField = count($listParams);
foreach($listParams as $key){
if(!empty($params[$key])){
$params[$key] = strip_tags($params[$key]);
} else {
$nbField--;
}
}
if ($nbField==0){
$this->redirect($this->view->url(array()));
}
//Redirection
$token = $rechercheParams->save($type, $params);
$this->redirect($this->view->url(array('token'=>$token)));
}
//On selectionne en session
if (count($rechercheParams->liste())>0){
$recherche = $rechercheParams->get($token);
$type = $recherche['type'];
$params = $recherche['params'];
}
$user = new Scores_Utilisateur();
$this->view->assign('IDENTITE', $user->checkPerm('IDENTITE'));
//Pagination
$page = $request->getParam('page', 1);
if ( $page <= 0 ) $page = 1;
$nbAffichage = $user->getNbRep();
$position = ($page - 1 ) * $nbAffichage;
require_once 'Scores/WsScores.php';
$ws = new WsScores();
// Type de recherche = entreprises
$telFax = trim(preg_replace('/[^0-9]/', '', $params['telFax']));
$naf = trim(preg_replace('/[^0-9A-Z]/i', '', $params['naf']));
// Traitement des données formulaire
$raisonSociale = Scores_Locale_String::cleanutf8($params['raisonSociale']);
$raisonSociale = str_replace(array('(',')', '/'), array('', '', ' '), $raisonSociale);
$numVoie = preg_replace('/[^0-9]/', '', $params['numero']);
if ($numVoie > 9999) {
$numVoie = '';
}
$libVoie = Scores_Locale_String::cleanutf8($params['voie']);
$libVoie = str_replace(array('(',')', '/'), array('', '', ' '), $libVoie);
$cpVille = Scores_Locale_String::cleanutf8($params['cpVille']);
$cpVille = str_replace(array('(',')', '/'), array('', '', ' '), $cpVille);
//( (2[A|B]) | [0-9]{2,5} )
if (preg_match("/^(2[A|B]|[0-9]{2,5})(.*)/i", $cpVille, $matches)) {
$cp = trim($matches[1]);
$ville = trim($matches[2]);
} else {
$cp = '';
$ville = trim($cpVille);
}
$criteres = array();
$criteres['identifiant'] = str_replace(array(' ', '.'), array('',''), trim($params['siret']));
$criteres['raisonSociale'] = $raisonSociale;
$criteres['adresse'] = $numVoie.' '.$libVoie;
$criteres['codePostal']= $cp;
$criteres['ville'] = $ville;
$criteres['telFax'] = $telFax;
$criteres['naf'] = $naf;
$criteres['siege'] = false;
$criteres['fj'] = array_key_exists('fj', $params) ? $params['fj'] : '';
//Affichage du filtre actif/inactif
$filtres = array(
'tout' => array(
'txt'=>'Afficher tous les résultats',
'select'=>'',
'value' => 2,
),
'actif' => array(
'txt'=>'Afficher uniquement les actifs',
'select'=>'',
'value' => 1,
),
'inactif' => array(
'txt'=>'Afficher uniquement les inactifs',
'select'=>'',
'value' => 0,
),
);
$filtres[$filtre]['select'] = ' selected';
$this->view->assign('filtres', $filtres);
$criteres['actif'] = $filtres[$filtre]['value'];
$reponse = $ws->searchEntreprise($criteres, $position);
unset($criteres['actif']);
$this->view->assign('rechCsv', $user->checkPerm('rechcsv'));
$nbReponses = 0;
$nbReponsesTotal = 0;
if (is_object($reponse) && $reponse !== false)
{
$etabs = $reponse->result->item;
$criteresTexte = '';
foreach ($criteres as $value){
if (!empty($value)) $criteresTexte.= $value.' ';
}
$criteresTexte = trim($criteresTexte);
$params['controller'] = 'recherche';
if ($type=='ent'){
$params['action'] = 'entreprise';
} elseif ($type=='dir') {
$params['action'] = 'dirigeant';
} elseif ($type=='act'){
$params['action'] = 'actionnaire';
}
foreach ($params as $key => $param) {
$params[$key] = str_replace('/', ' ', $params[$key]);
}
$criteresLien = $this->view->url($params, 'default', true);
$liste = array();
if (count($etabs)>0) {
foreach($etabs as $i => $etab) {
$item = array();
$item['position'] = ($position)+$i+1;
$item['id'] = $etab->id;
$item['siren'] = $etab->Siren;
$item['siret'] = $etab->Siren.$etab->Nic;
$item['InfoSiret'] = $etab->Siren.' '.$etab->Nic;
$item['InfoNom'] = $etab->Nom;
$item['source'] = $etab->Source;
$item['sourceId'] = $etab->SourceId;
$nomDetail = '';
if ($etab->Nom2<>'' || $etab->Enseigne<>'' || $etab->Sigle<>'') {
$nomDetail.= '<i>';
if ($etab->Nom2!='') $nomDetail.= $etab->Nom2.'<br/>';
if ($etab->Enseigne<>'') $nomDetail.= 'Enseigne : '.$etab->Enseigne.'&nbsp;&nbsp;&nbsp;&nbsp;';
if ($etab->Sigle<>'') $nomDetail.= 'Sigle : '.$etab->Sigle;
$nomDetail.= '</i><br/>';
}
$item['InfoNomDetail'] = $nomDetail;
$item['InfoSiret'] = substr($etab->Siren,0,3).' '.substr($etab->Siren,3,3).' '.substr($etab->Siren,6,3).' '.$etab->Nic;
$infoEtab = '';
if (null !== $etab->Pays && strtolower($etab->Pays)!='france') {
$infoEtab.= "Etablissement à l'étranger";
} else {
if ($etab->Siege==1){
$infoEtab.= '&Eacute;tablissement si&egrave;ge ';
} elseif ($etab->Siege==2) {
$infoEtab.= '&Eacute;tablissement principal ';
} else {
$infoEtab.= '&Eacute;tablissement secondaire ';
}
if ($etab->Actif==1){
$infoEtab.= 'actif';
} else {
$infoEtab.= 'inactif';
}
//Etablissement communiqués par le RCS n'ayant pas de NIC à l'INSEE
if (intval($etab->Nic)==0 || intval($etab->Nic)>=99990) {
$infoEtab.=' provisoire';
}
if ($etab->Siege!=1 || ($etab->Siege==1 && $etab->Actif!=1)) {
$url = $this->view->url(array(
'controller'=>'identite',
'action'=>'fiche',
'id' => $etab->id,
'siret' => $etab->Siren,
), 'default', true);
if ( $user->checkPerm('IDENTITE') ) {
$infoEtab.= ' <a title="Voir la fiche d\'identité du siège de cette entreprise"'.
' href="'.$url.'">(Accès ';
if ($etab->Siege==1) {
$infoEtab.= 'dernier ';
}
$infoEtab.= 'siège)</a>';
}
}
}
$item['InfoEtab'] = $infoEtab;
$adresse = $etab->Adresse;
if ( !empty($etab->Adresse2) ) {
$adresse.= '<br/>'.$etab->Adresse2;
}
if ( !empty($etab->Ville) && intval($etab->CP) > 0) {
$adresse.= '<br/><b>'.$etab->CP." ".$etab->Ville."</b>";
}
if (null !== $etab->Pays) {
$adresse.= '<br/><b>'.$etab->Pays.'</b>';
}
$item['InfoAdresse'] = $adresse;
if ( $etab->Actif!=1 ) {
$item['class'] = 'StyleInfoData';
} else {
$item['class'] = 'StyleInfoDataActif';
}
$forme = '';
if ( trim($etab->FJ)!='' && intval($etab->FJ)!=0 )
{
$forme = '<i>Forme : '.$etab->FJLib.' ('.$etab->FJ.')</i><br/>';
}
$item['InfoForme'] = $forme;
$activite = '';
if (trim($etab->NafEnt)!='')
{
$activite = '<i>Activit&eacute; : '.$etab->NafEntLib.' ('.$etab->NafEnt.')</i><br/>';
}
$item['InfoActivite'] = $activite;
//Affichage accès direct aux pages
$liens = array();
/**
* test en dur clients pour bilans
* @todo client = 34
* @todo client = 60
*/
if ($user->getIdClient()==34 || $user->getIdClient()==60) {
$liens[] = array(
'title' => 'Comptes annuels',
'href' => $this->view->url(array(
'controller'=>'pieces',
'action'=>'bilans',
'siret'=>$etab->Siren.$etab->Nic,
'id'=>$etab->id), 'default', true),
);
$liens[] = array(
'title' => 'Actes et status',
'href' => $this->view->url(array(
'controller'=>'pieces', 'action'=>'actes',
'siret'=>$etab->Siren.$etab->Nic, 'id'=>$etab->id), 'default', true),
);
}
/**
* test en dur clients pour fiche
* @todo client = 60
*/
if ($user->getIdClient()==60) {
$liens[] = array(
'title' => 'Fiche AGS',
'href' => $this->view->url(array(
'controller'=>'identite', 'action'=>'fichepc',
'siret'=>$etab->Siren.$etab->Nic, 'id'=>$etab->id), 'default', true),
);
}
if (count($liens)>0) {
$item['lien'] = $liens;
}
$liste[] = $item;
}
}
} elseif (is_string($reponse)){
$this->forward('index', 'entreprise', 'search', array_merge( $params, array('message' => $reponse)));
} else {
$this->forward('soap', 'error', 'default');
}
$this->view->assign('blockInvestig', $user->checkPerm('INVESTIG'));
$this->view->assign('liste', $liste);
//Calcul pagination
$nbReponses = $reponse->nbReponses;
$nbReponsesTotal = $reponse->nbReponsesTotal;
if ($nbReponses < $nbReponsesTotal) {
$pageTotal = ceil( $nbReponsesTotal / $nbAffichage );
$pageCurrent = $page;
$pagePrev = $page - 1;
if ($pagePrev < 1) {
$pagePrev = 1;
}
$pageNext = $page + 1;
if( $pageNext > $pageTotal ) {
$pageNext = $pageTotal;
}
} else {
$pageTotal = $pageCurrent = 1;
}
$this->view->assign('PageTotal', $pageTotal);
$this->view->assign('PagePrev', $pagePrev);
$this->view->assign('PageNext', $pageNext);
$this->view->assign('PageCurrent', $pageCurrent);
$this->view->assign('nbReponses', empty($nbReponses) ? 0 : $nbReponses);
$this->view->assign('nbReponsesTotal', empty($nbReponsesTotal) ? 0 : $nbReponsesTotal);
$this->view->assign('token', $token);
$this->view->assign('criteresTexte', $criteresTexte);
$this->view->assign('criteresLien', $criteresLien);
$this->view->assign('info', $reponse->info);
}
}

View File

@ -11,7 +11,8 @@
<?php }?>
<?php $form = $this->form; ?>
<form class="form-horizontal" name="<?php echo $form->getName()?>" method="<?=$form->getMethod()?>" action="<?=$form->getAction()?>">
<form class="form-horizontal" name="<?=$form->getName()?>" method="post" action="<?=$this->url(array('module'=>'search',
'controller'=>'entreprise','action'=>'list'), 'default', true)?>">
<?=$form->type?>

View File

@ -1 +1,102 @@
<?php
<div id="content">
<div id="recherche-info">
<p class="StyleInfoLib">
<?=$this->nbReponsesTotal?> r&eacute;ponse<?php if ($this->nbReponsesTotal>1){?>s<?php }?>
avec les crit&egrave;res "<a href="<?=$this->criteresLien?>"><?=$this->criteresTexte?></a>".
<?php if ($this->PageTotal!=1) {?>
<?=$this->nbReponses?> r&eacute;sultats affich&eacute;s. Page <?=$this->PageCurrent.'/'.$this->PageTotal.'.';?>
<?php }?>
<?php if ($this->filtres) { ?>
<select name="filtre">
<?php foreach ($this->filtres as $k => $filtre) {?>
<option value="<?=$this->url(array('filtre'=>$k))?>"<?=$filtre['select']?>><?=$filtre['txt']?></option>
<?php }?>
</select>
<script type="text/javascript">
$('select[name=filtre]').change(function(e){
window.location = $(this).val();
});
</script>
<?php }?>
</p>
</div>
<?php if (!empty($this->info)) { ?>
<div style="margin:5px; padding: 0pt 0.7em;" class="ui-state-highlight ui-corner-all">
<p><span style="float: left; margin-right: 0.3em;" class="ui-icon ui-icon-info"></span>
<?=$this->info?></p>
</div>
<?php }?>
<ol>
<?php foreach ( $this->liste as $item ) { ?>
<li style="list-style-type:decimal;" class="<?=$item['class']?>" type="1" value="<?=$item['position']?>">
<b>
<?php if ($this->IDENTITE) {?>
<?php if ($item['source']==7 && !empty($item['sourceId'])) {?>
<a title="Voir les liens inter entreprises de cet établissement" href="<?=$this->url(array('module'=>'legal',
'controller'=>'identite', 'action'=>'liens', 'lienref'=>$item['sourceId']), 'default', true)?>">
<?php } else {?>
<a title="Voir la fiche d'identité de cet établissement" href="<?=$this->url(array('module'=>'legal',
'controller'=>'identite', 'action'=>'fiche', 'id'=>$item['id'], 'siret'=>$item['siret']), 'default', true)?>">
<?php }?>
<?php } else {?>
<a title="Vous n'avez pas les permissions nécessaires pour accèder à la fiche identité" href="#">
<?php }?>
<?=$item['InfoNom']?></a></b><br/>
<?=$item['InfoNomDetail']?>
<b>RCS <?=$item['InfoSiret']?></b>
<br/>
<b><?=$item['InfoEtab']?></b><br/>
<?=$item['InfoAdresse']?><br/>
<?=$item['InfoForme']?>
<?=$item['InfoActivite']?>
<?php if (isset($item['InfoDirigeant'])) { ?>
<?=$item['InfoDirigeant']?>
<?php } elseif(isset($item['InfoActionnaire'])) {?>
<?=$item['InfoActionnaire']?>
<?php }?>
<?php if (isset($item['lien']) && count($item['lien'])>0) {?>
<br/> Liens : <?php foreach($item['lien'] as $lien){?>
<a href="<?=$lien['href']?>"><?=$lien['title']?></a>
<?php }?>
<?php }?>
</li>
<?php }?>
</ol>
<?php if ($this->PageTotal>1) {?>
<div class="paragraph">
<div class="pagination clearfix">
<a class="first" href="<?=$this->url(array('page'=>1, 'token'=> $this->token))?>">&laquo;</a>
<a class="previous" href="<?=$this->url(array('page'=>$this->PagePrev, 'token'=> $this->token))?>">&lsaquo;</a>
<span>Page <?=$this->PageCurrent?>/<?=$this->PageTotal?></span>
<a class="next" href="<?=$this->url(array('page'=>$this->PageNext, 'token'=> $this->token))?>">&rsaquo;</a>
<a class="last" href="<?=$this->url(array('page'=>$this->PageTotal, 'token'=> $this->token))?>">&raquo;</a>
</div>
</div>
<?php }?>
<div class="paragraph">
<?php if ($this->rechCsv) { ?>
<?php foreach ($this->filtres as $k => $filtre) { if ( !empty($filtre['select']) ) break; }?>
<p class="StyleInfoLib">
<a href="<?=$this->url(array('controller'=>'recherche', 'action'=>'csv', 'filtre'=>$k), 'default', true)?>" target="_blank">
Exporter les résultats de la recherche en CSV.</a>
</p>
<?php } ?>
<?php if ($this->blockInvestig) { ?>
<p class="StyleInfoLib">
Si aucun r&eacute;sultat ne correspond &agrave; votre recherche.
<a href="<?=$this->url(array('controller'=>'recherche','action'=>'enquete'), 'default', true)?>">Cliquez-ici.</a>
</p>
<?php }?>
</div>
</div>