Commit be516154 authored by Antony Le Courtes's avatar Antony Le Courtes
Browse files

Correction pour filtrer les motifs de modification de service dû lorsqu'elles...

Correction pour filtrer les motifs de modification de service dû lorsqu'elles sont historisées sans impacter les années passés (#67398)
parent 15b6b9df
Loading
Loading
Loading
Loading
Loading
+8 −4
Changes for module/Service/src/Controller/ModificationServiceDuController.php: 8 added lines, 4 removed lines.
Original line number Diff line number Diff line
@@ -29,10 +29,9 @@ class ModificationServiceDuController extends AbstractController

    public function saisirAction()
    {
        $this->em()->getFilters()->enable('historique')->init([
            ModificationServiceDu::class,
            MotifModificationServiceDu::class,
        ]);
        $historiqueFilter = $this->em()->getFilters()->enable('historique');
        $historiqueFilter->enableForEntity(ModificationServiceDu::class);
        $historiqueFilter->disableForEntity(MotifModificationServiceDu::class);


        /** @var Intervenant $intervenant */
@@ -65,8 +64,12 @@ class ModificationServiceDuController extends AbstractController
        /** @var MotifModificationServiceDu[] $mds */
        $mds = $this->getServiceMotifModificationServiceDu()->getList();
        $multiplicateurs = [];
        $motifsObsoletes = [];
        foreach( $mds as $md ){
            $multiplicateurs[$md->getId()] = $md->getMultiplicateur();
            if ($md->getHistoDestruction()) {
                $motifsObsoletes[] = $md->getId();
            }
        }

        $variables = [
@@ -74,6 +77,7 @@ class ModificationServiceDuController extends AbstractController
            'intervenant'     => $intervenant,
            'title'           => "Modifications de service dû",
            'multiplicateurs' => $multiplicateurs,
            'motifsObsoletes' => $motifsObsoletes,
            'canEdit'         => $canEdit,
        ];

+25 −7
Changes for module/Service/view/service/modification-service-du/saisir.phtml: 25 added lines, 7 removed lines.
Original line number Diff line number Diff line
@@ -33,8 +33,20 @@ echo $this->messenger()->addMessagesFromFlashMessenger();
} ?>

<?php
$form->setAttribute('id', $formId = uniqid('form-'))->prepare();
$form->setAttribute('id', $formId = uniqid('form-'));
$modificationServiceDu = $form->get('fs');
$collection = $modificationServiceDu->get('modificationServiceDu');

// Les nouvelles lignes ne doivent proposer que les motifs encore actifs.
$templateMotifElement = $collection->getTargetElement()->get('motif');
$templateOptions = $templateMotifElement->getValueOptions();
foreach ($motifsObsoletes as $motifObsoleteId) {
    unset($templateOptions[$motifObsoleteId]);
}
$templateMotifElement->setValueOptions($templateOptions);

// Le prototype des nouvelles lignes est construit pendant prepare().
$form->prepare();
?>

<?php
@@ -42,7 +54,7 @@ echo $this->form()->openTag($form);

//echo $this->formCollection()->setElementHelper($this->formControlGroup())->render($modificationServiceDu->get('modificationServiceDu'));
echo '<fieldset>' . "\n";
foreach ($modificationServiceDu->get('modificationServiceDu')->getIterator() as $fieldset) {
foreach ($collection->getIterator() as $fieldset) {
    $motif = $fieldset->getObject()->getMotif();
    /* @var $object \Service\Entity\Db\ModificationServiceDu */

@@ -50,13 +62,19 @@ foreach ($modificationServiceDu->get('modificationServiceDu')->getIterator() as
    /* @var $motifElement \Laminas\Form\Element\Select */

    echo '<fieldset><div class="form-group">';

    $options = $motifElement->getValueOptions();
    foreach ($motifsObsoletes as $motifObsoleteId) {
        unset($options[$motifObsoleteId]);
    }

    if ($motif && $motif->getHistoDestruction()) {
        $motifElement->setAttribute('class', $motifElement->getAttribute('class') . ' bg-danger');
        $motifElement->setValueOptions(array_merge($motifElement->getValueOptions(), [$motif->getId() => $motif->getLibelle() . ' (MOTIF OBSOLÈTE)']));
        echo $this->formControlGroup($motifElement);
    } else {
        echo $this->formControlGroup($motifElement);
        $options[$motif->getId()] =
            $motif->getLibelle();
    }
    $motifElement->setValueOptions($options);

    echo $this->formControlGroup($motifElement);

    echo $this->formControlGroup($fieldset->get('heures'));
    echo $this->formControlGroup($fieldset->get('commentaires'));