From ac9a7f6e4f78adcc7d4124f898b4b0e5c62275f2 Mon Sep 17 00:00:00 2001
From: metivier <jean-philippe.metivier@unicaen.fr>
Date: Fri, 17 Jul 2020 09:22:57 +0200
Subject: [PATCH] Gestion des groupe d'application dans l'export des fiches
 metiers

---
 .../Controller/CategorieController.php        |  1 -
 .../Controller/CompetenceController.php       |  3 -
 .../Controller/FicheMetierController.php      | 49 ++++++++-------
 .../FicheMetierControllerFactory.php          |  4 ++
 .../src/Application/Entity/Db/Metier.php      | 27 +++++++-
 .../Export/FicheMetier/fiche-metier-pdf.phtml | 33 +++++++---
 .../View/Helper/partial/fiche-metier.phtml    |  1 -
 .../view/application/fiche-metier/index.phtml | 16 +++++
 .../partial/fiche-metier-bis.phtml            | 62 +++++++++++++++++++
 .../metier/partial/listing-metier.phtml       |  8 ++-
 public/css/app.css                            |  4 ++
 11 files changed, 169 insertions(+), 39 deletions(-)
 create mode 100644 module/Application/view/application/fiche-metier/partial/fiche-metier-bis.phtml

diff --git a/module/Application/src/Application/Controller/CategorieController.php b/module/Application/src/Application/Controller/CategorieController.php
index 2dd26c5d2..02edd56d9 100644
--- a/module/Application/src/Application/Controller/CategorieController.php
+++ b/module/Application/src/Application/Controller/CategorieController.php
@@ -99,7 +99,6 @@ class CategorieController extends AbstractActionController
         if ($request->isPost()) {
             $data = $request->getPost();
             if ($data["reponse"] === "oui") $this->getCategorieService()->delete($categorie);
-            //return $this->redirect()->toRoute('home');
             exit();
         }
 
diff --git a/module/Application/src/Application/Controller/CompetenceController.php b/module/Application/src/Application/Controller/CompetenceController.php
index f2a2208f5..9bf2bf9be 100644
--- a/module/Application/src/Application/Controller/CompetenceController.php
+++ b/module/Application/src/Application/Controller/CompetenceController.php
@@ -127,7 +127,6 @@ class CompetenceController extends AbstractActionController {
         if ($request->isPost()) {
             $data = $request->getPost();
             if ($data["reponse"] === "oui") $this->getCompetenceService()->delete($competence);
-            //return $this->redirect()->toRoute('competence', [], [], true);
             exit();
         }
 
@@ -229,7 +228,6 @@ class CompetenceController extends AbstractActionController {
         if ($request->isPost()) {
             $data = $request->getPost();
             if ($data["reponse"] === "oui") $this->getCompetenceThemeService()->delete($theme);
-            //return $this->redirect()->toRoute('competence', [], [], true);
             exit();
         }
 
@@ -331,7 +329,6 @@ class CompetenceController extends AbstractActionController {
         if ($request->isPost()) {
             $data = $request->getPost();
             if ($data["reponse"] === "oui") $this->getCompetenceTypeService()->delete($type);
-            //return $this->redirect()->toRoute('competence', [], [], true);
             exit();
         }
 
diff --git a/module/Application/src/Application/Controller/FicheMetierController.php b/module/Application/src/Application/Controller/FicheMetierController.php
index 6e54d75d5..7ab4bb973 100644
--- a/module/Application/src/Application/Controller/FicheMetierController.php
+++ b/module/Application/src/Application/Controller/FicheMetierController.php
@@ -5,7 +5,6 @@ namespace Application\Controller;
 use Application\Entity\Db\Activite;
 use Application\Entity\Db\FicheMetier;
 use Application\Entity\Db\FicheMetierEtat;
-use Application\Entity\Db\ParcoursDeFormation;
 use Application\Form\Activite\ActiviteForm;
 use Application\Form\Activite\ActiviteFormAwareTrait;
 use Application\Form\FicheMetier\ActiviteExistanteForm;
@@ -26,6 +25,7 @@ use Application\Service\Domaine\DomaineServiceAwareTrait;
 use Application\Service\Export\FicheMetier\FicheMetierPdfExporter;
 use Application\Service\FicheMetier\FicheMetierServiceAwareTrait;
 use Application\Service\FicheMetierEtat\FicheMetierEtatServiceAwareTrait;
+use Application\Service\Metier\MetierServiceAwareTrait;
 use Application\Service\ParcoursDeFormation\ParcoursDeFormationServiceAwareTrait;
 use Mpdf\MpdfException;
 use UnicaenApp\Exception\RuntimeException;
@@ -35,7 +35,8 @@ use Zend\Http\Request;
 use Zend\Mvc\Controller\AbstractActionController;
 use Zend\View\Model\ViewModel;
 
-class FicheMetierController extends  AbstractActionController{
+class FicheMetierController extends AbstractActionController
+{
     use DateTimeAwareTrait;
 
     /** Traits associé aux services */
@@ -43,7 +44,9 @@ class FicheMetierController extends  AbstractActionController{
     use DomaineServiceAwareTrait;
     use FicheMetierServiceAwareTrait;
     use FicheMetierEtatServiceAwareTrait;
+    use MetierServiceAwareTrait;
     use ParcoursDeFormationServiceAwareTrait;
+
     /** Traits associé aux formulaires */
     use ActiviteFormAwareTrait;
     use ActiviteExistanteFormAwareTrait;
@@ -72,17 +75,19 @@ class FicheMetierController extends  AbstractActionController{
             $domaine = null;
             $fichesMetiers = $this->getFicheMetierService()->getFichesMetiers();
         } else {
-            $domaine  = $this->getDomaineService()->getDomaine($domaineId);
+            $domaine = $this->getDomaineService()->getDomaine($domaineId);
             $fichesMetiers = $this->getFicheMetierService()->getFicheByDomaine($domaine);
         }
 
         $etats = $this->getFicheMetierEtatService()->getEtats();
+        $metiers = $this->getMetierService()->getMetiers();
 
         return new ViewModel([
-            'domaineSelect'  => $domaine,
+            'domaineSelect' => $domaine,
             'domaines' => $domaines,
-            'fiches'   => $fichesMetiers,
+            'fiches' => $fichesMetiers,
             'etats' => $etats,
+            'metiers' => $metiers,
         ]);
     }
 
@@ -93,7 +98,7 @@ class FicheMetierController extends  AbstractActionController{
         $applications = $this->getFicheMetierService()->getApplicationsDictionnaires($fiche);
 
         return new ViewModel([
-            'title' => 'Visualisation d\'une fiche métier',
+            'title' => "Visualisation d'une fiche métier",
             'fiche' => $fiche,
             'parcours' => $parcours,
             'applications' => $applications,
@@ -126,11 +131,11 @@ class FicheMetierController extends  AbstractActionController{
         ]);
 
         $metier = $fiche->getMetier();
-        $filemane = "PrEECoG_" . $this->getDateTime()->format('YmdHis') ."_". str_replace(" ","_",$metier->getLibelle()).'.pdf';
+        $filemane = "PrEECoG_" . $this->getDateTime()->format('YmdHis') . "_" . str_replace(" ", "_", $metier->getLibelle()) . '.pdf';
         try {
             $exporter->getMpdf()->SetTitle($metier->getLibelle() . " - " . $fiche->getId());
         } catch (MpdfException $e) {
-            throw new RuntimeException("Un problème est surevenu lors du changement de titre par MPDF.", 0 , $e);
+            throw new RuntimeException("Un problème est surevenu lors du changement de titre par MPDF.", 0, $e);
         }
         $exporter->export($filemane);
         exit;
@@ -142,7 +147,7 @@ class FicheMetierController extends  AbstractActionController{
 
         $exporter = new FicheMetierPdfExporter($this->renderer, 'A4');
         $exporter->setVars([]);
-        $filemane = "PrEECoG_" . $this->getDateTime()->format('YmdHis') ."_fiches_metiers.pdf";
+        $filemane = "PrEECoG_" . $this->getDateTime()->format('YmdHis') . "_fiches_metiers.pdf";
         $exporter->exportAll($fiches, $filemane);
         exit;
     }
@@ -181,7 +186,7 @@ class FicheMetierController extends  AbstractActionController{
         if ($fiche !== null) {
             $vm->setTemplate('application/default/confirmation');
             $vm->setVariables([
-                'title' => "Suppression de la fiche de poste  de ". (($fiche AND $fiche->getMetier())?$fiche->getMetier()->getLibelle():"[Aucun métier]"),
+                'title' => "Suppression de la fiche de poste  de " . (($fiche and $fiche->getMetier()) ? $fiche->getMetier()->getLibelle() : "[Aucun métier]"),
                 'text' => "La suppression est définitive êtes-vous sûr&middot;e de vouloir continuer ?",
                 'action' => $this->url()->fromRoute('fiche-metier-type/detruire', ["fiche-metier" => $fiche->getId()], [], true),
             ]);
@@ -197,7 +202,7 @@ class FicheMetierController extends  AbstractActionController{
 
         /** @var LibelleForm $form */
         $form = $this->getLibelleForm();
-        $form->setAttribute('action', $this->url()->fromRoute('fiche-metier-type/ajouter', [], [] , true));
+        $form->setAttribute('action', $this->url()->fromRoute('fiche-metier-type/ajouter', [], [], true));
         $form->bind($fiche);
 
         /** @var Request $request */
@@ -229,7 +234,7 @@ class FicheMetierController extends  AbstractActionController{
 
         /** @var LibelleForm $form */
         $form = $this->getLibelleForm();
-        $form->setAttribute('action', $this->url()->fromRoute('fiche-metier-type/editer-libelle',['id' => $fiche->getId()],[], true));
+        $form->setAttribute('action', $this->url()->fromRoute('fiche-metier-type/editer-libelle', ['id' => $fiche->getId()], [], true));
         $form->bind($fiche);
         /** @var Request $request */
         $request = $this->getRequest();
@@ -258,7 +263,7 @@ class FicheMetierController extends  AbstractActionController{
         $activite = new Activite();
         /** @var ActiviteForm $form */
         $form = $this->getActiviteForm();
-        $form->setAttribute('action', $this->url()->fromRoute('fiche-metier-type/ajouter-nouvelle-activite',['id' => $fiche->getId()],[], true));
+        $form->setAttribute('action', $this->url()->fromRoute('fiche-metier-type/ajouter-nouvelle-activite', ['id' => $fiche->getId()], [], true));
         $form->bind($activite);
 
         /** @var Request $request */
@@ -307,7 +312,7 @@ class FicheMetierController extends  AbstractActionController{
 
         $activites = $this->getActiviteService()->getActivites();
         $options = [];
-        foreach($activites as $activite) {
+        foreach ($activites as $activite) {
             $options[$activite->getId()] = [
                 "title" => $activite->getLibelle(),
                 "description" => $activite->getDescription(),
@@ -337,8 +342,8 @@ class FicheMetierController extends  AbstractActionController{
         $coupleId = $this->params()->fromRoute('id');
         $couple = $this->getActiviteService()->getFicheMetierTypeActivite($coupleId);
 
-        if ($direction === 'up')    $this->getActiviteService()->moveUp($couple);
-        if ($direction === 'down')  $this->getActiviteService()->moveDown($couple);
+        if ($direction === 'up') $this->getActiviteService()->moveUp($couple);
+        if ($direction === 'down') $this->getActiviteService()->moveDown($couple);
 
         $this->getActiviteService()->updateFicheMetierTypeActivite($couple);
 
@@ -401,7 +406,7 @@ class FicheMetierController extends  AbstractActionController{
 
         /** @var SelectionCompetenceForm $form */
         $form = $this->getSelectionCompetenceForm();
-        $form->setAttribute('action', $this->url()->fromRoute('fiche-metier-type/gerer-competences',['fiche' => $fiche->getId()], [], true));
+        $form->setAttribute('action', $this->url()->fromRoute('fiche-metier-type/gerer-competences', ['fiche' => $fiche->getId()], [], true));
         $form->bind($fiche);
 
         /**  @var Request $request */
@@ -414,8 +419,8 @@ class FicheMetierController extends  AbstractActionController{
         $vm = new ViewModel();
         $vm->setTemplate('application/default/default-form');
         $vm->setVariables([
-            'title' => "Gestion des compétences de la fiche métier ". $fiche->getMetier()->getLibelle(),
-            'form'  => $form,
+            'title' => "Gestion des compétences de la fiche métier " . $fiche->getMetier()->getLibelle(),
+            'form' => $form,
         ]);
         return $vm;
     }
@@ -425,7 +430,7 @@ class FicheMetierController extends  AbstractActionController{
         $fiche = $this->getFicheMetierService()->getRequestedFicheMetier($this);
         if ($fiche->hasExpertise()) {
             $fiche->setExpertise(false);
-        } else  {
+        } else {
             $fiche->setExpertise(true);
         }
         $this->getFicheMetierService()->update($fiche);
@@ -456,7 +461,7 @@ class FicheMetierController extends  AbstractActionController{
         $vm = new ViewModel();
         $vm->setTemplate('application/default/default-form');
         $vm->setVariables([
-            'title' => "Changement de l'état de la fiche metier [".$fiche->getMetier()->getLibelle()."]",
+            'title' => "Changement de l'état de la fiche metier [" . $fiche->getMetier()->getLibelle() . "]",
             'form' => $form,
         ]);
         return $vm;
@@ -534,7 +539,7 @@ class FicheMetierController extends  AbstractActionController{
         if ($etat !== null) {
             $vm->setTemplate('application/default/confirmation');
             $vm->setVariables([
-                'title' => "Suppression de l'état [".$etat->getCode()."]",
+                'title' => "Suppression de l'état [" . $etat->getCode() . "]",
                 'text' => "La suppression est définitive êtes-vous sûr&middot;e de vouloir continuer ?",
                 'action' => $this->url()->fromRoute('fiche-metier-type/etat/supprimer', ["etat" => $etat->getId()], [], true),
             ]);
diff --git a/module/Application/src/Application/Controller/FicheMetierControllerFactory.php b/module/Application/src/Application/Controller/FicheMetierControllerFactory.php
index 784a85753..462642cf8 100644
--- a/module/Application/src/Application/Controller/FicheMetierControllerFactory.php
+++ b/module/Application/src/Application/Controller/FicheMetierControllerFactory.php
@@ -15,6 +15,7 @@ use Application\Service\Configuration\ConfigurationService;
 use Application\Service\Domaine\DomaineService;
 use Application\Service\FicheMetier\FicheMetierService;
 use Application\Service\FicheMetierEtat\FicheMetierEtatService;
+use Application\Service\Metier\MetierService;
 use Application\Service\ParcoursDeFormation\ParcoursDeFormationService;
 use Interop\Container\ContainerInterface;
 use Zend\View\Renderer\PhpRenderer;
@@ -29,6 +30,7 @@ class FicheMetierControllerFactory {
          * @var FicheMetierService $ficheMetierService
          * @var FicheMetierEtatService $ficheMetierEtatService
          * @var ConfigurationService $configurationService
+         * @var MetierService $metierService
          * @var ParcoursDeFormationService $parcoursService
          */
         $activiteService = $container->get(ActiviteService::class);
@@ -36,6 +38,7 @@ class FicheMetierControllerFactory {
         $ficheMetierService = $container->get(FicheMetierService::class);
         $ficheMetierEtatService = $container->get(FicheMetierEtatService::class);
         $configurationService = $container->get(ConfigurationService::class);
+        $metierService = $container->get(MetierService::class);
         $parcoursService = $container->get(ParcoursDeFormationService::class);
 
         /**
@@ -69,6 +72,7 @@ class FicheMetierControllerFactory {
         $controller->setFicheMetierService($ficheMetierService);
         $controller->setFicheMetierEtatService($ficheMetierEtatService);
         $controller->setConfigurationService($configurationService);
+        $controller->setMetierService($metierService);
         $controller->setParcoursDeFormationService($parcoursService);
 
         $controller->setLibelleForm($libelleForm);
diff --git a/module/Application/src/Application/Entity/Db/Metier.php b/module/Application/src/Application/Entity/Db/Metier.php
index aeef4a875..8b0a92a52 100644
--- a/module/Application/src/Application/Entity/Db/Metier.php
+++ b/module/Application/src/Application/Entity/Db/Metier.php
@@ -20,7 +20,7 @@ class Metier implements HistoriqueAwareInterface {
     private  $domaines;
     /** @var ArrayCollection (MetierReference) */
     private $references;
-    /** @var ArrayCollection (FicheMetierType) */
+    /** @var ArrayCollection (FicheMetier) */
     private $fichesMetiers;
 
     public function __construct()
@@ -112,4 +112,29 @@ class Metier implements HistoriqueAwareInterface {
         $this->categorie = $categorie;
         return $this;
     }
+
+    /**
+     * @return string
+     */
+    public function generateTooltip()
+    {
+        $html  = '';
+        /** ligne sur le metier **/
+        $html .= '<span class="highlight metier">'.htmlentities($this->getLibelle(),ENT_QUOTES).'</span><br/>';
+        /** lignes sur les domaines du metier **/
+        $html .= '<strong>Domaines</strong> :';
+        $html .= '<ul>';
+        foreach ($this->getDomaines() as $domaine) {
+            $html .= '<li>'.$domaine->getLibelle().'</li>';
+        }
+        $html .= '</ul>';
+        /** ligne sur l'expertise */
+        //TODO statuer sur ce qui est expert ou pas
+        /** ligne sur les refs */
+        $html .= '<strong>Références</strong> :';
+        foreach ($this->getReferences() as $reference) {
+            $html .= '<span class="badge" style="margin:0.25rem;">'.$reference->getReferentiel()->getLibelleCourt().' - '.$reference->getCode().'</span><br/>';
+        }
+        return '<span style="text-align:left;">'.$html.'</span>';
+    }
 }
\ No newline at end of file
diff --git a/module/Application/src/Application/Service/Export/FicheMetier/fiche-metier-pdf.phtml b/module/Application/src/Application/Service/Export/FicheMetier/fiche-metier-pdf.phtml
index 7c8ef8fda..0058a1958 100644
--- a/module/Application/src/Application/Service/Export/FicheMetier/fiche-metier-pdf.phtml
+++ b/module/Application/src/Application/Service/Export/FicheMetier/fiche-metier-pdf.phtml
@@ -193,7 +193,15 @@ foreach ($competences as $competence) {
 
 <?php
 $applications = $fiche->getApplications();
-usort($applications, function (Application $a, Application $b) { return $a->getLibelle() > $b->getLibelle();});
+
+$nogroupe = "zzz";
+$dictionnaire = [];
+foreach ($applications as $application) {
+    $groupe = $application->getGroupe();
+    $libelle = ($groupe !== null)?$groupe->getLibelle():$nogroupe;
+    $dictionnaire[$libelle][] = $application;
+}
+ksort($dictionnaire);
 ?>
 
 <?php if (! empty($applications)) : ?>
@@ -201,15 +209,20 @@ usort($applications, function (Application $a, Application $b) { return $a->getL
         Applications
     </div>
 
-    <table class="activite">
-        <tr>
-            <td>
-                <?php foreach ($applications as $application) : ?>
-                    &ndash; <?php echo $application->getLibelle(); ?> <br/>
-                <?php endforeach; ?>
-            </td>
-        </tr>
-    </table>
+    <?php foreach($dictionnaire as $key => $liste) : ?>
+        <table class="activite">
+            <tr>
+                <th> <?php echo ($key !== $nogroupe)?$key:"Sans groupe ..."; ?> </th>
+            </tr>
+            <tr>
+                <td>
+                    <?php foreach ($liste as $application) : ?>
+                        &ndash; <?php echo $application->getLibelle(); ?> <br/>
+                    <?php endforeach; ?>
+                </td>
+            </tr>
+        </table>
+    <?php endforeach; ?>
 <?php endif; ?>
 
 <?php
diff --git a/module/Application/src/Application/View/Helper/partial/fiche-metier.phtml b/module/Application/src/Application/View/Helper/partial/fiche-metier.phtml
index 31f947dc5..cf4ea7c5f 100644
--- a/module/Application/src/Application/View/Helper/partial/fiche-metier.phtml
+++ b/module/Application/src/Application/View/Helper/partial/fiche-metier.phtml
@@ -353,7 +353,6 @@ $a=1;
             window.location.reload();
         });
     });
-
 </script>
 
 <style>
diff --git a/module/Application/view/application/fiche-metier/index.phtml b/module/Application/view/application/fiche-metier/index.phtml
index 837fb9c73..b9c67e61f 100644
--- a/module/Application/view/application/fiche-metier/index.phtml
+++ b/module/Application/view/application/fiche-metier/index.phtml
@@ -3,6 +3,7 @@
 use Application\Entity\Db\Domaine;
 use Application\Entity\Db\FicheMetier;
 use Application\Entity\Db\FicheMetierEtat;
+use Application\Entity\Db\Metier;
 
 /**
  * @see \Application\Controller\FicheMetierController::indexAction()
@@ -10,6 +11,7 @@ use Application\Entity\Db\FicheMetierEtat;
  * @var Domaine $domaineSelect
  * @var FicheMetier[] $fiches
  * @var FicheMetierEtat[] $etats
+ * @var Metier[] $metiers
  */
 
 $this->headTitle('Index des fiches métiers');
@@ -32,6 +34,15 @@ $this->headTitle('Index des fiches métiers');
             </a>
         </li>
 
+<!--        <li role="metier">-->
+<!--            <a href="#metier" aria-controls="metier" role="tab" data-toggle="tabz">-->
+<!--                Fiches métiers bis &nbsp;-->
+<!--                <span class="badge">-->
+<!--                    --><?php //echo count($metiers); ?>
+<!--                </span>-->
+<!--            </a>-->
+<!--        </li>-->
+
         <li role="etat">
             <a href="#etat" aria-controls="etat" role="tab" data-toggle="tabz">
                 États &nbsp;
@@ -52,6 +63,11 @@ $this->headTitle('Index des fiches métiers');
                 <?php echo $this->partial('partial/fiche-metier.phtml', ['fiches' => $fiches, 'domaines' => $domaines, 'domaineSelect' => $domaineSelect]); ?>
             </div>
 
+            <!-- FAMILLE ---------------------------------------------------------------------------------------------->
+            <div id="metier" class="tab-pane " role="tabpanel">
+                <?php echo $this->partial('partial/fiche-metier-bis.phtml', ['metiers' => $metiers, 'domaines' => $domaines, 'domaineSelect' => $domaineSelect]); ?>
+            </div>
+
             <!-- DOMAINE ---------------------------------------------------------------------------------------------->
             <div id="etat" class="tab-pane " role="tabpanel">
                 <?php echo $this->partial('partial/etat.phtml', ['etats' => $etats]); ?>
diff --git a/module/Application/view/application/fiche-metier/partial/fiche-metier-bis.phtml b/module/Application/view/application/fiche-metier/partial/fiche-metier-bis.phtml
new file mode 100644
index 000000000..10c4f6f44
--- /dev/null
+++ b/module/Application/view/application/fiche-metier/partial/fiche-metier-bis.phtml
@@ -0,0 +1,62 @@
+<?php
+
+use Application\Entity\Db\FicheMetier;
+use Application\Entity\Db\Metier;
+
+/**
+ * @var Metier[] $metiers
+ * @var FicheMetier $fiche
+ */
+
+?>
+
+<table class="datatable table table-condensed">
+    <thead>
+    <tr>
+        <th> Métier </th>
+        <th> Fiche </th>
+        <th> État </th>
+        <th> Action </th>
+    </tr>
+    </thead>
+    <tbody>
+    <?php foreach ($metiers as $metier) : ?>
+        <?php
+            $fiches = $metier->getFichesMetiers();
+            $nbFiche = count($fiches);
+        ?>
+
+            <?php if ($nbFiche === 0) : ?>
+                <tr><td>
+                    <span data-toggle="tooltip" data-html="true" title='<?php echo $metier->generateTooltip(); ?>'>
+                        <?php echo $metier->getLibelle(); ?>
+                    </span>
+                </td><td>
+                    Aucune fiche métier
+                </td><td></td>
+                <td></td>
+                </tr>
+            <?php else : ?>
+                <?php $first = true; ?>
+                <?php foreach ($fiches as $fiche) : ?>
+                    <tr>
+<!--                        --><?php //if ($first) : ?>
+<!--                            <td rowspan="--><?php //echo $nbFiche; ?><!--">-->
+                        <td>
+                                <span data-toggle="tooltip" data-html="true" title='<?php echo $metier->generateTooltip(); ?>'>
+                                    <?php echo $metier->getLibelle(); ?>
+                                </span>
+                            </td>
+<!--                            --><?php //$first = false; ?>
+<!--                        --><?php //else : ?>
+<!--                            <td></td>-->
+<!--                        --><?php //endif; ?>
+                        <td> #<?php echo $fiche->getId(); ?> (Création <?php echo $fiche->getHistoCreation()->format("d/m/Y à H:m:i"); ?>)</td>
+                        <td> <?php echo $this->ficheMetierEtat($fiche->getEtat()); ?></td>
+                        <td></td>
+                    </tr>
+                <?php endforeach; ?>
+            <?php endif; ?>
+    <?php endforeach; ?>
+    </tbody>
+</table>
\ No newline at end of file
diff --git a/module/Application/view/application/metier/partial/listing-metier.phtml b/module/Application/view/application/metier/partial/listing-metier.phtml
index 2113b7163..45f6a2a71 100644
--- a/module/Application/view/application/metier/partial/listing-metier.phtml
+++ b/module/Application/view/application/metier/partial/listing-metier.phtml
@@ -47,7 +47,13 @@ $canEffacer        = $droits["effacer"];
     <tbody>
     <?php foreach($metiers as $metier): ?>
         <tr <?php if ($metier->estHistorise()) echo ' class="historise" '; ?>>
-            <td> <?php echo $metier->getLibelle(); ?> </td>
+            <td>
+                <span title='<?php echo $metier->generateTooltip(); ?>'
+                      data-toggle='tooltip' data-html='true'
+                >
+                    <?php echo $metier->getLibelle(); ?>
+                </span>
+            </td>
             <td>
                 <ul>
                     <?php foreach ($metier->getDomaines() as $domaine) : ?>
diff --git a/public/css/app.css b/public/css/app.css
index 63dc144de..c17471eb9 100644
--- a/public/css/app.css
+++ b/public/css/app.css
@@ -645,4 +645,8 @@ span.highlight.structure {
 
 span.highlight.user {
     color: purple;
+}
+
+span.highlight.metier {
+    color: darkorange;
 }
\ No newline at end of file
-- 
GitLab