diff --git a/application/modules/search/controllers/DirigeantController.php b/application/modules/search/controllers/DirigeantController.php
index 43acf6ee7..f916bb8a9 100644
--- a/application/modules/search/controllers/DirigeantController.php
+++ b/application/modules/search/controllers/DirigeantController.php
@@ -21,5 +21,312 @@ class Search_DirigeantController extends Zend_Controller_Action
$this->view->assign('form', $form);
}
- public function listAction(){}
+ 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('dirNom', 'dirPrenom', 'dirDateNaissJJ', 'dirDateNaissMM', 'dirDateNaissAAAA', 'dirCpVille');
+ $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 = dirigeants
+ //$dirNom = preg_replace('/[^0-9A-Z]/', ' ', strtoupper($params['dirNom']));
+ //$dirPrenom = preg_replace('/[^0-9A-Z]/', ' ', strtoupper($params['dirPrenom']));
+
+ $dirNom = $params['dirNom'];
+ $dirPrenom = $params['dirPrenom'];
+
+ $dirDateNaissJJ = preg_replace('/[^0-9]/', '', $params['dirDateNaissJJ']);
+ if (intval($dirDateNaissJJ)<0 || intval($dirDateNaissJJ>31)){
+ //die('Jour de naissance incorrect !');
+ }
+ $dirDateNaissMM = preg_replace('/[^0-9]/', '', $params['dirDateNaissMM']);
+ if (intval($dirDateNaissMM)<0 || intval($dirDateNaissMM>31)){
+ //die('Mois de naissance incorrect !');
+ }
+ $dirDateNaissAAAA = preg_replace('/[^0-9]/', '', $params['dirDateNaissAAAA']);
+ $year = date('Y')-18;
+ if (intval($dirDateNaissAAAA)<0 || intval($dirDateNaissAAAA)>$year){
+ //die('Année de naissance incorrecte !');
+ }
+ $dirDateNaiss = $dirDateNaissJJ.'/'.$dirDateNaissMM.'/'.$dirDateNaissAAAA;
+ if ($dirDateNaiss=='//') $dirDateNaiss = '';
+ $dirCpVille = preg_replace('/ +/',' ', preg_replace('/[^0-9A-Z]/', ' ',
+ strtoupper($params['dirCpVille']))
+ );
+ /*
+ if (preg_match('/^([0-9]{2,5})([\D]+)/i', $dirCpVille, $matches))
+ {
+ $dirCp = trim($matches[1]);
+ $dirVille = trim($matches[2]);
+ }
+ else {
+ $dirVille = trim($dirCpVille);
+ }
+ */
+
+ $criteres = array();
+ $criteres['dirNom'] = $dirNom;
+ $criteres['dirPrenom'] = $dirPrenom;
+ $criteres['dirDateNaiss'] = $dirDateNaiss;
+ $criteres['lieuNaiss'] = $dirCpVille;
+
+ $reponse = $ws->searchDir($criteres, $position, $user->getNbRep());
+
+ $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['action'] = 'dirigeant';
+ foreach ($params as $key => $param) {
+ $params[$key] = str_replace('/', ' ', $params[$key]);
+ }
+
+ $criteresLien = $this->view->url($params);
+
+ $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.= '';
+ if ($etab->Nom2!='') $nomDetail.= $etab->Nom2.'
';
+ if ($etab->Enseigne<>'') $nomDetail.= 'Enseigne : '.$etab->Enseigne.' ';
+ if ($etab->Sigle<>'') $nomDetail.= 'Sigle : '.$etab->Sigle;
+ $nomDetail.= '
';
+ }
+ $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.= 'Établissement siège ';
+ } elseif ($etab->Siege==2) {
+ $infoEtab.= 'Établissement principal ';
+ } else {
+ $infoEtab.= 'É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.= ' (Accès ';
+ if ($etab->Siege==1) {
+ $infoEtab.= 'dernier ';
+ }
+ $infoEtab.= 'siège)';
+ }
+ }
+ }
+
+ $item['InfoEtab'] = $infoEtab;
+
+ $adresse = $etab->Adresse;
+ if ( !empty($etab->Adresse2) ) {
+ $adresse.= '
'.$etab->Adresse2;
+ }
+ if ( !empty($etab->Ville) && intval($etab->CP) > 0) {
+ $adresse.= '
'.$etab->CP." ".$etab->Ville."";
+ }
+ if (null !== $etab->Pays) {
+ $adresse.= '
'.$etab->Pays.'';
+ }
+
+ $item['InfoAdresse'] = $adresse;
+
+ if ( $etab->Actif!=1 ) {
+ $item['class'] = 'StyleInfoData';
+ } else {
+ $item['class'] = 'StyleInfoDataActif';
+ }
+
+ $forme = '';
+ if ( trim($etab->FJ)!='' && intval($etab->FJ)!=0 )
+ {
+ $forme = 'Forme : '.$etab->FJLib.' ('.$etab->FJ.')
';
+ }
+ $item['InfoForme'] = $forme;
+
+ $activite = '';
+ if (trim($etab->NafEnt)!='')
+ {
+ $activite = 'Activité : '.$etab->NafEntLib.' ('.$etab->NafEnt.')
';
+ }
+ $item['InfoActivite'] = $activite;
+
+ $item['InfoDirigeant'] = 'Dirigeant recherché : ';
+ if ($etab->DirRs!='') {
+ $item['InfoDirigeant'].= ''.$etab->DirRs.', représenté par ';
+ }
+ $item['InfoDirigeant'].= $etab->DirNom .' '. $etab->DirPrenom;
+ if ( $etab->DirNomUsage != '' && $etab->DirNomUsage != $etab->DirNom) {
+ $item['InfoDirigeant'].= ' ('. $etab->DirNomUsage . ')';
+ }
+ $item['InfoDirigeant'].= ', '.$etab->DirFonction.'
';
+
+ //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('blockDirToEntreprise', true);
+ $this->view->assign('searchDirToEntrepriseTxt', trim($criteres['dirNom'].' '.$criteres['dirPrenom']));
+ $this->view->assign('searchDirToEntrepriseLien', $this->view->url(array('module'=>'search', 'controller'=>'entreprise',
+ 'action'=>'list', 'type'=>'ent', 'raisonSociale'=>trim($criteres['dirNom'].' '.$criteres['dirPrenom']))));
+
+ $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);
+ }
}
\ No newline at end of file
diff --git a/application/modules/search/views/default/scripts/dirigeant/index.phtml b/application/modules/search/views/default/scripts/dirigeant/index.phtml
index 444f18fcc..7f3c36440 100644
--- a/application/modules/search/views/default/scripts/dirigeant/index.phtml
+++ b/application/modules/search/views/default/scripts/dirigeant/index.phtml
@@ -2,7 +2,8 @@