diff --git a/module/Application/src/View/Helper/VolumeHoraire/Liste.php b/module/Application/src/View/Helper/VolumeHoraire/Liste.php index 38b2d0f91fb450baf558a0b5911431ba2d0245c5..8c12ef1b7925c9691e3eb97dcea45a6a6f77d992 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 {