From b3cd2b28653206a5100f73a6ccbc7be6ebe239e7 Mon Sep 17 00:00:00 2001 From: Antony Le Courtes <antony.lecourtes@unicaen.fr> Date: Mon, 18 May 2020 14:25:02 +0200 Subject: [PATCH] Correction bug duplication d'un statut d'intervenant --- CHANGELOG.md | 6 +- .../StatutIntervenantSaisieForm.php | 82 ++++++++++--------- .../statut-intervenant/saisie.phtml | 57 +++++++------ 3 files changed, 79 insertions(+), 66 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ff48009a32..a4101bdf80 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,7 +1,11 @@ -# OSE 14.5 (alpha) +# OSE 14.5 (beta) + +## Nouveautés ## Corrections de bugs +* Corrections coquilles dans l'administration. +* Correction bug sur la duplication d'un statut d'intervenant (ticket #29553) * Lors de l'import de données, l'application ne plante plus si le connecteur INTERVENANT est désactivé # OSE 14.4 diff --git a/module/Application/src/Application/Form/StatutIntervenant/StatutIntervenantSaisieForm.php b/module/Application/src/Application/Form/StatutIntervenant/StatutIntervenantSaisieForm.php index b1f7451384..2ce76d67c1 100755 --- a/module/Application/src/Application/Form/StatutIntervenant/StatutIntervenantSaisieForm.php +++ b/module/Application/src/Application/Form/StatutIntervenant/StatutIntervenantSaisieForm.php @@ -282,6 +282,7 @@ class StatutIntervenantSaisieForm extends AbstractForm */ public function getInputFilterSpecification() { + return [ 'libelle' => [ 'required' => true, @@ -433,51 +434,56 @@ class StatutIntervenantHydrator implements HydratorInterface $object->setMaximumHETD(FloatFromString::run($data['maximum-HETD'])); $object->setDepassementSDSHC($data['depassement-sdshc']); $object->setChargesPatronales(FloatFromString::run($data['charges-patronales']) / 100); - - //Gestion de la durée de vie des agréments par statut d'intervenant - //On récupére les types d'agrement - $qb = $this->getServiceTypeAgrement()->finderByHistorique(); - $typesAgrements = $this->getServiceTypeAgrement()->getList($qb); - //Type agrement par statut d'intervenant - $qb = $this->getServiceTypeAgrementStatut()->finderByStatutIntervenant($object); - $this->getServiceTypeAgrementStatut()->finderByHistorique($qb); - $typesAgrementsStatuts = $this->getServiceTypeAgrementStatut()->getList($qb); - $typesAgrementsStatusByCode = []; - foreach($typesAgrementsStatuts as $tas) + //Uniquement si le statut intervenant existe déjà en base. + if(!empty($data['id'])) { - $typesAgrementsStatusByCode[$tas->getType()->getCode()] = $tas; - } - //On boucle pour faire ensuite de l'insert, update ou delete - foreach($typesAgrements as $ta) - { - if(array_key_exists($ta->getCode(), $data)) + //Gestion de la durée de vie des agréments par statut d'intervenant + //On récupére les types d'agrement + $qb = $this->getServiceTypeAgrement()->finderByHistorique(); + $typesAgrements = $this->getServiceTypeAgrement()->getList($qb); + //Type agrement par statut d'intervenant + $qb = $this->getServiceTypeAgrementStatut()->finderByStatutIntervenant($object); + $this->getServiceTypeAgrementStatut()->finderByHistorique($qb); + $typesAgrementsStatuts = $this->getServiceTypeAgrementStatut()->getList($qb); + $typesAgrementsStatusByCode = []; + foreach($typesAgrementsStatuts as $tas) + { + $typesAgrementsStatusByCode[$tas->getType()->getCode()] = $tas; + } + //On boucle pour faire ensuite de l'insert, update ou delete + foreach($typesAgrements as $ta) { - if(!$data[$ta->getCode()] && array_key_exists($ta->getCode(), $typesAgrementsStatusByCode)) + if(array_key_exists($ta->getCode(), $data)) { - $tasToDelete = $typesAgrementsStatusByCode[$ta->getCode()]; - $object->removeTypeAgrementStatut($tasToDelete); - $this->getServiceTypeAgrementStatut()->delete($tasToDelete); - } - elseif($data[$ta->getCode()] && array_key_exists($ta->getCode(), $typesAgrementsStatusByCode)){ - $tasToUpdate = $typesAgrementsStatusByCode[$ta->getCode()]; - $dureeVie = $data[$ta->getCode().'-DUREE_VIE']; - $tasToUpdate->setDureeVie($dureeVie); - $this->getServiceTypeAgrementStatut()->save($tasToUpdate); - } - elseif($data[$ta->getCode()] && !array_key_exists($ta->getCode(), $typesAgrementsStatusByCode)){ - $dureeVie = $data[$ta->getCode().'-DUREE_VIE']; - $tasToCreate = new TypeAgrementStatut(); - $tasToCreate->setDureeVie($dureeVie); - $tasToCreate->setObligatoire(1); - $tasToCreate->setType($ta); - $tasToCreate->setStatut($object); - $this->getServiceTypeAgrementStatut()->save($tasToCreate); - $object->addTypeAgrementStatut($tasToCreate); - + if(!$data[$ta->getCode()] && array_key_exists($ta->getCode(), $typesAgrementsStatusByCode)) + { + $tasToDelete = $typesAgrementsStatusByCode[$ta->getCode()]; + $object->removeTypeAgrementStatut($tasToDelete); + $this->getServiceTypeAgrementStatut()->delete($tasToDelete); + } + elseif($data[$ta->getCode()] && array_key_exists($ta->getCode(), $typesAgrementsStatusByCode)){ + $tasToUpdate = $typesAgrementsStatusByCode[$ta->getCode()]; + $dureeVie = $data[$ta->getCode().'-DUREE_VIE']; + $tasToUpdate->setDureeVie($dureeVie); + $this->getServiceTypeAgrementStatut()->save($tasToUpdate); + } + elseif($data[$ta->getCode()] && !array_key_exists($ta->getCode(), $typesAgrementsStatusByCode)){ + $dureeVie = $data[$ta->getCode().'-DUREE_VIE']; + $tasToCreate = new TypeAgrementStatut(); + $tasToCreate->setDureeVie($dureeVie); + $tasToCreate->setObligatoire(1); + $tasToCreate->setType($ta); + $tasToCreate->setStatut($object); + $this->getServiceTypeAgrementStatut()->save($tasToCreate); + $object->addTypeAgrementStatut($tasToCreate); + + } } } } + + return $object; } diff --git a/module/Application/view/application/statut-intervenant/saisie.phtml b/module/Application/view/application/statut-intervenant/saisie.phtml index 176b816175..7044fefbd9 100755 --- a/module/Application/view/application/statut-intervenant/saisie.phtml +++ b/module/Application/view/application/statut-intervenant/saisie.phtml @@ -41,6 +41,7 @@ echo $this->form()->openTag($form); ?> <div class="col-md-9"> <div class="row"> <div class="col-md-4"> + <?= $this->formHidden($form->get('id')); ?> <?= $this->formControlGroup($form->get('type-intervenant')); ?> </div> <div class="col-md-8"> @@ -74,33 +75,36 @@ echo $this->form()->openTag($form); ?> <?= $this->formControlGroup($form->get('depassement-sdshc')); ?> <br/> </div> + <!--Uniquement si le statut existe déjà en base (avec un id)--> + <?php if (empty($form->get('id')->getValue())): ?> + <div class="row temoins hidden" > + <?php else: ?> + <div class="row temoins" > + <?php endif; ?> + <fieldset> + <legend style="font-size: 14px;font-weight: 700;">Gestion des agréments pour le statut : </legend> + <table class="table table-bordered"> + <thead > + <th></th> + <th>Activé</th> + <th>Valable pendant</th> + </thead> + <tbody> + <?php foreach($form->getElements() as $element): ?> + <?php if(preg_match('#^CONSEIL[A-Z_]+\b(?!-DUREE_VIE)#', $element->getName())): ?> + + <tr> + <td><?= $this->formLabel($form->get($element->getName())); ?></td> + <td><?= $this->formRadio($form->get($element->getName())); ?></td> + <td><?= $this->formControlGroup($form->get($element->getName() . '-DUREE_VIE')); ?></td> + </tr> + <?php endif; ?> + <?php endforeach;?> + </tbody> + </table> + </fieldset> - <div class="row temoins"> - <fieldset> - <legend style="font-size: 14px;font-weight: 700;">Gestion des agréments pour le statut : </legend> - <table class="table table-bordered"> - <thead > - <th></th> - <th>Activé</th> - <th>Valable pendant</th> - </thead> - <tbody> - <?php foreach($form->getElements() as $element): ?> - <?php if(preg_match('#^CONSEIL[A-Z_]+\b(?!-DUREE_VIE)#', $element->getName())): ?> - - <tr> - <td><?= $this->formLabel($form->get($element->getName())); ?></td> - <td><?= $this->formRadio($form->get($element->getName())); ?></td> - <td><?= $this->formControlGroup($form->get($element->getName() . '-DUREE_VIE')); ?></td> - </tr> - <?php endif; ?> - <?php endforeach;?> - </tbody> - </table> - </fieldset> - - </div> - + </div> <div class="row"> <?= $this->formElement($form->get('security')); ?> <?php if ($canEdit) echo $this->formSubmit($form->get('submit')); ?> @@ -140,7 +144,6 @@ echo $this->form()->openTag($form); ?> <script type="text/javascript"> $(function () { $("body").on("statut-intervenant-clone", function (event, data) { - console.log('toto'); window.location.reload(); }); $(".statut-libelle-<?= $form->get('id')->getValue() ?>").html("<?= $form->get('libelle')->getValue() ?>"); -- GitLab