From 8a9470576f4f0b1024d327c35a6cb3faa125b4f5 Mon Sep 17 00:00:00 2001
From: Antony Le Courtes <antony.lecourtes@unicaen.fr>
Date: Wed, 22 Jul 2020 11:04:56 +0200
Subject: [PATCH] =?UTF-8?q?Forcer=20dur=C3=A9e=20de=20vie=20=C3=A0=201=20s?=
 =?UTF-8?q?i=20case=20'Uniquement=20en=20cas=20de=20changement=20de=20RIB'?=
 =?UTF-8?q?=20est=20coch=C3=A9e=20par=20l'utilisateur=20pour=20=C3=A9viter?=
 =?UTF-8?q?=20les=20mauvais=20param=C3=A9trages=20des=20pi=C3=A8ces=20join?=
 =?UTF-8?q?tes.?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 CHANGELOG.md                                  |  1 +
 .../ModifierTypePieceJointeStatutForm.php     | 50 +++++------
 .../modifier-type-piece-jointe-statut.phtml   | 83 ++++++++++++-------
 3 files changed, 77 insertions(+), 57 deletions(-)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index 7d0171aa06..48dd2e3d43 100755
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -5,6 +5,7 @@
 * Intégration (en cours) de la formule de calcul de Poitiers.
 * Stockage de la date d'envoi par e-mail du contrat
 * Nouvel indicateur 361 permettant de suivre les retours de contrats envoyés par email
+* Piece justificative : forcer la durée de vie à 1 si la case "Uniquement en cas de changement de RIB" est cochée par l'utilisateur pour éviter les mauvais paramétrages des pièces jointes
 
 # OSE 14.8
 
diff --git a/module/Application/src/Application/Form/PieceJointe/ModifierTypePieceJointeStatutForm.php b/module/Application/src/Application/Form/PieceJointe/ModifierTypePieceJointeStatutForm.php
index cd2589952a..28dcaaa4d3 100755
--- a/module/Application/src/Application/Form/PieceJointe/ModifierTypePieceJointeStatutForm.php
+++ b/module/Application/src/Application/Form/PieceJointe/ModifierTypePieceJointeStatutForm.php
@@ -23,7 +23,6 @@ class ModifierTypePieceJointeStatutForm extends AbstractForm
     use TypePieceJointeStatutServiceAwareTrait;
 
 
-
     public function init()
     {
         $hydrator = new TypePieceJointeStatutHydrator();
@@ -101,15 +100,17 @@ class ModifierTypePieceJointeStatutForm extends AbstractForm
                 'label' => "Durée de vie de la pièce jointe (en année)",
             ],
             'attributes' => [
-                'min'   => '1',
-                'value' => '1',
+                'min'       => '1',
+                'value'     => '1',
+                'class'     => 'form-control',
+                'info_icon' => "Si vous avez coché 'Uniquement en cas de changement de RIB', la durée de vie sera automatiquement à 1",
             ],
         ]);
 
         $this->add([
-            'type'       => 'Checkbox',
-            'name'       => 'obligatoire-hnp',
-            'options'    => [
+            'type'    => 'Checkbox',
+            'name'    => 'obligatoire-hnp',
+            'options' => [
                 'label' => "Pièce jointe obligatoire même si les heures sont non payables",
             ],
         ]);
@@ -195,10 +196,10 @@ class ModifierTypePieceJointeStatutForm extends AbstractForm
     public function getInputFilterSpecification()
     {
         return [
-            'typePieceJointe'     => [
+            'typePieceJointe' => [
                 'required' => true,
             ],
-            'seuil-hetd'          => [
+            'seuil-hetd'      => [
                 'required'   => false,
                 'validators' => [
                     [
@@ -213,22 +214,22 @@ class ModifierTypePieceJointeStatutForm extends AbstractForm
                     ],
                 ],
             ],
-            'changement-rib'      => [
+            'changement-rib'  => [
                 'required' => true,
             ],
-            'fc'                  => [
+            'fc'              => [
                 'required' => true,
             ],
-            'obligatoire-hnp'      => [
+            'obligatoire-hnp' => [
                 'required' => true,
             ],
-            'annee-debut'         => [
+            'annee-debut'     => [
                 'required' => false,
             ],
-            'annee-fin'           => [
+            'annee-fin'       => [
                 'required' => false,
             ],
-            'duree-vie'           => [
+            'duree-vie'       => [
                 'required' => true,
             ],
         ];
@@ -245,7 +246,6 @@ class TypePieceJointeStatutHydrator implements HydratorInterface
     use AnneeServiceAwareTrait;
 
 
-
     /**
      * Hydrate $object with the provided $data.
      *
@@ -259,7 +259,7 @@ class TypePieceJointeStatutHydrator implements HydratorInterface
         //$object->setPremierRecrutement($data['premier-recrutement']);
         $object->setChangementRIB($data['changement-rib']);
         $object->setObligatoire($data['typePieceJointe']);
-        $object->setSeuilHetd((empty($data['seuil-hetd'])?null:$data['seuil-hetd']));
+        $object->setSeuilHetd((empty($data['seuil-hetd']) ? null : $data['seuil-hetd']));
         if (array_key_exists('annee-debut', $data)) {
             $object->setAnneeDebut($this->getServiceAnnee()->get($data['annee-debut']));
         }
@@ -285,17 +285,17 @@ class TypePieceJointeStatutHydrator implements HydratorInterface
     public function extract($object)
     {
         $data = [
-            'id'                  => $object->getId(),
-            'typePieceJointe'     => $object->getObligatoire(),
+            'id'              => $object->getId(),
+            'typePieceJointe' => $object->getObligatoire(),
             //'premier-recrutement' => $object->getPremierRecrutement(),
-            'seuil-hetd'          => $object->getSeuilHeures(),
+            'seuil-hetd'      => $object->getSeuilHeures(),
             //'premier-recrutement' => $object->getPremierRecrutement(),
-            'changement-rib'      => $object->getChangementRIB(),
-            'fc'                  => $object->getFC(),
-            'duree-vie'           => $object->getDureeVie(),
-            'annee-debut'         => $object->getAnneeDebut() ? $object->getAnneeDebut()->getId() : null,
-            'annee-fin'           => $object->getAnneeFin() ? $object->getAnneeFin()->getId() : null,
-            'obligatoire-hnp'      => $object->isObligatoireHNP(),
+            'changement-rib'  => $object->getChangementRIB(),
+            'fc'              => $object->getFC(),
+            'duree-vie'       => $object->getDureeVie(),
+            'annee-debut'     => $object->getAnneeDebut() ? $object->getAnneeDebut()->getId() : null,
+            'annee-fin'       => $object->getAnneeFin() ? $object->getAnneeFin()->getId() : null,
+            'obligatoire-hnp' => $object->isObligatoireHNP(),
         ];
 
         return $data;
diff --git a/module/Application/view/application/piece-jointe/modifier-type-piece-jointe-statut.phtml b/module/Application/view/application/piece-jointe/modifier-type-piece-jointe-statut.phtml
index 47ef815511..2e2592577a 100755
--- a/module/Application/view/application/piece-jointe/modifier-type-piece-jointe-statut.phtml
+++ b/module/Application/view/application/piece-jointe/modifier-type-piece-jointe-statut.phtml
@@ -21,44 +21,44 @@ echo $this->messenger()->addCurrentMessagesFromFlashMessenger();
 ?>
 
 
-    <div class="row">
-        <div class="col-md-12">
-            <?= $this->formControlGroup($form->get('typePieceJointe')); ?>
-        </div>
+<div class="row">
+    <div class="col-md-12">
+        <?= $this->formControlGroup($form->get('typePieceJointe')); ?>
     </div>
-    <div class="row">
-        <div class="col-md-12">
-            <?= $this->formControlGroup($form->get('changement-rib')); ?>
-        </div>
+</div>
+<div class="row">
+    <div class="col-md-12">
+        <?= $this->formControlGroup($form->get('changement-rib')); ?>
     </div>
-    <div class="row">
-        <div class="col-md-12">
-            <?= $this->formControlGroup($form->get('fc')); ?>
-        </div>
+</div>
+<div class="row">
+    <div class="col-md-12">
+        <?= $this->formControlGroup($form->get('fc')); ?>
     </div>
-    <div class="row">
-        <div class="col-md-12">
-            <?= $this->formControlGroup($form->get('obligatoire-hnp')); ?>
-        </div>
+</div>
+<div class="row">
+    <div class="col-md-12">
+        <?= $this->formControlGroup($form->get('obligatoire-hnp')); ?>
     </div>
-    <div class="row">
-        <div class="col-md-4">
-            <?= $this->formControlGroup($form->get('seuil-hetd')); ?>
-        </div>
-        <div class=col-md-4>
-            <?= $this->formControlGroup($form->get('annee-debut')); ?>
-        </div>
-        <div class=col-md-4>
-            <?= $this->formControlGroup($form->get('annee-fin')); ?>
-        </div>
+</div>
+<div class="row">
+    <div class="col-md-4">
+        <?= $this->formControlGroup($form->get('seuil-hetd')); ?>
     </div>
-    <div class="row">
-        <div class="col-md-4">
-            <?= $this->formControlGroup($form->get('duree-vie')); ?>
-        </div>
-
+    <div class=col-md-4>
+        <?= $this->formControlGroup($form->get('annee-debut')); ?>
+    </div>
+    <div class=col-md-4>
+        <?= $this->formControlGroup($form->get('annee-fin')); ?>
+    </div>
+</div>
+<div class="row">
+    <div class="col-md-4">
+        <?= $this->formControlGroup($form->get('duree-vie')); ?>
     </div>
 
+</div>
+
 <?= $this->formSubmit($form->get('submit')); ?>
 
 <?php if (($canEdit) && ($form->getObject()->getId())) : ?>
@@ -82,4 +82,23 @@ echo $this->messenger()->addCurrentMessagesFromFlashMessenger();
 
 echo $this->formRow($form->get('security'));
 echo $this->formHidden($form->get('id'));
-echo $this->form()->closeTag();
\ No newline at end of file
+echo $this->form()->closeTag();
+
+?>
+
+<script type="text/javascript">
+
+    $(document).ready(function () {
+
+        $("input[name='changement-rib']").change(function () {
+            var dureeVie = $("input[name='duree-vie']")
+            if (this.checked) {
+                dureeVie.val('1');
+                dureeVie.attr('disabled', 'disabled');
+            } else {
+                dureeVie.removeAttr('disabled');
+            }
+        })
+    });
+
+</script>
\ No newline at end of file
-- 
GitLab