From 5a536177b696e517a01b0293bfdc0618c552c9b0 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Laurent=20L=C3=A9cluse?= <laurent.lecluse@unicaen.fr>
Date: Thu, 5 May 2022 11:48:09 +0200
Subject: [PATCH] =?UTF-8?q?Correction=20de=20bug=20d'affichage=20de=20d?=
 =?UTF-8?q?=C3=A9tail=20des=20heures=20Certains=20volumes=20horaires=20n'?=
 =?UTF-8?q?=C3=A9taient=20pas=20affich=C3=A9s=20dans=20le=20d=C3=A9tail=20?=
 =?UTF-8?q?des=20services?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../src/View/Helper/VolumeHoraire/Liste.php   | 30 ++++++++++---------
 1 file changed, 16 insertions(+), 14 deletions(-)

diff --git a/module/Application/src/View/Helper/VolumeHoraire/Liste.php b/module/Application/src/View/Helper/VolumeHoraire/Liste.php
index 38b2d0f91f..8c12ef1b79 100755
--- a/module/Application/src/View/Helper/VolumeHoraire/Liste.php
+++ b/module/Application/src/View/Helper/VolumeHoraire/Liste.php
@@ -158,7 +158,15 @@ class Liste extends AbstractViewHelper
         $out      .= "</tr>\n";
         $periodes = $this->getPeriodes();
         foreach ($periodes as $periode) {
-            $vhl               = $this->getVolumeHoraireListe()->setPeriode($periode)->setTypeIntervention(false);
+            $vhl = $this->getVolumeHoraireListe()->createChild()->setPeriode($periode)->setTypeIntervention(false);
+
+            /* Gestion des mauvaises périodes */
+            $forbiddenPeriode = $vhl->getService()?->getElementPedagogique()?->getPeriode() ?? $periode !== $periode;
+            if ($forbiddenPeriode) {
+                $this->hasForbiddenPeriodes = true;
+            }
+
+            /*Listage des motifs de non paiement */
             $motifsNonPaiement = [];
             if ($canViewMNP) {  // découpage par motif de non paiement
                 $motifsNonPaiement = $vhl->getMotifsNonPaiement();
@@ -169,18 +177,13 @@ class Liste extends AbstractViewHelper
             if (empty($motifsNonPaiement)) {
                 $motifsNonPaiement = [0 => false];
             }
+
+            /* Affichage par motif de non paiement */
             foreach ($motifsNonPaiement as $motifNonPaiement) {
-                $readOnly         = $motifNonPaiement instanceof MotifNonPaiement && !$canEditMNP;
-                $forbiddenPeriode = false;
-                if (
-                    $this->getVolumeHoraireListe()->getService()
-                    && $this->getVolumeHoraireListe()->getService()->getElementPedagogique()
-                    && $this->getVolumeHoraireListe()->getService()->getElementPedagogique()->getPeriode()
-                    && $this->getVolumeHoraireListe()->getService()->getElementPedagogique()->getPeriode() !== $periode
-                ) {
-                    $forbiddenPeriode           = true;
-                    $this->hasForbiddenPeriodes = true;
-                }
+                $vhl->setMotifNonPaiement($motifNonPaiement);
+                if ($vhl->getHeures() == 0) continue; // rien à afficher
+
+                $readOnly = $motifNonPaiement instanceof MotifNonPaiement && !$canEditMNP;
                 if ($forbiddenPeriode) {
                     $out .= '<tr class="bg-danger">';
                     $out .= "<td><abbr title=\"La période n'est pas conforme à l'enseignement\">" . $this->renderPeriode($periode) . "</abbr></td>\n";
@@ -190,8 +193,7 @@ class Liste extends AbstractViewHelper
                 }
 
                 foreach ($this->typesIntervention as $typeIntervention) {
-                    $vhl->setMotifNonPaiement($motifNonPaiement)
-                        ->setTypeIntervention($typeIntervention);
+                    $vhl->setTypeIntervention($typeIntervention);
                     if ($vhl->getHeures() == 0) {
                         $class = "heures-empty";
                     } else {
-- 
GitLab