diff --git a/module/DemandeExterne/src/Controller/DemandeExterneController.php b/module/DemandeExterne/src/Controller/DemandeExterneController.php index 5ddcb6f7f3b7dc2b62bb2fdbb1ffdfb21709f9ed..c225b8076e3ae5eb6d25caa0b13d6625a33e4610 100644 --- a/module/DemandeExterne/src/Controller/DemandeExterneController.php +++ b/module/DemandeExterne/src/Controller/DemandeExterneController.php @@ -84,6 +84,7 @@ class DemandeExterneController extends AbstractActionController } } else { $params['etats'] = DemandeExterneEtats::ETATS_OUVERTS; + $params['historise'] = 0; } $demandes = $this->getDemandeExterneService()->getDemandesExternesWithFiltre($params); @@ -697,12 +698,41 @@ class DemandeExterneController extends AbstractActionController $plafond1 = $this->getParametreService()->getValeurForParametre(DemandeExterneParametres::TYPE, DemandeExterneParametres::PLAFOND_DRH); $plafond2 = $this->getParametreService()->getValeurForParametre(DemandeExterneParametres::TYPE, DemandeExterneParametres::PLAFOND_DGS); + $fromQueries = $this->params()->fromQuery(); + $params = [ + 'agent' => $this->getAgentService()->getAgent($fromQueries['agent-filtre']['id'] ?? null), + 'organisme' => $fromQueries['organisme']['id'] ?? null, + 'etat' => $this->getEtatTypeService()->getEtatType((isset($fromQueries['etat']) && trim($fromQueries['etat']) !== '') ? trim($fromQueries['etat']) : null), + 'historise' => $fromQueries['historise'] ?? null, + 'annee' => $fromQueries['annee'] ?? null, + ]; + $liste = $this->getRequest()->getUri()->getQuery(); + if ($liste and $liste !== '') { + $liste = explode('&', $liste); + foreach ($liste as $item) { + [$key, $value] = explode('=', $item); + if ($key === "gestionnaires" or $key === "etats") { + $params[$key][] = $value; + } + } + } else { + $params['etats'] = DemandeExterneEtats::ETATS_OUVERTS; + $params['historise'] = 0; + } + $demandes = $this->getDemandeExterneService()->getDemandesExternesParapheurs((new DateTime())->format('Y')); + $etats = $this->getEtatTypeService()->getEtatsTypesByCategorieCode(DemandeExterneEtats::TYPE); + $gestionnaires = $this->getUserService()->getUtilisateursByRoleIdAsOptions(FormationRoles::GESTIONNAIRE_FORMATION); return new ViewModel([ 'plafond1' => $plafond1, 'plafond2' => $plafond2, 'demandes' => $demandes, + + + 'etats' => $etats, + 'params' => $params, + 'gestionnaires' => $gestionnaires, ]); } diff --git a/module/DemandeExterne/src/Service/DemandeExterne/DemandeExterneService.php b/module/DemandeExterne/src/Service/DemandeExterne/DemandeExterneService.php index 40675f44b8a6f5b27a70fe6fae0dc821f4ca4c8d..ab54ade38d74397a7f105d1d97b6534c874642d9 100644 --- a/module/DemandeExterne/src/Service/DemandeExterne/DemandeExterneService.php +++ b/module/DemandeExterne/src/Service/DemandeExterne/DemandeExterneService.php @@ -595,7 +595,7 @@ class DemandeExterneService public function getDemandesExternesParapheurs(?int $annee = null, bool $withHisto = false): array { - $types = [ DemandeExterneEtats::ETAT_REJETEE, DemandeExterneEtats::ETAT_TERMINEE, + $types = [ /** DemandeExterneEtats::ETAT_REJETEE, DemandeExterneEtats::ETAT_TERMINEE, **/ DemandeExterneEtats::ETAT_VALIDATION_GESTIONNAIRE, DemandeExterneEtats::ETAT_VALIDATION_RESPONSABLE, DemandeExterneEtats::ETAT_VALIDATION_DRH, DemandeExterneEtats::ETAT_VALIDATION_DGS ]; diff --git a/module/DemandeExterne/src/View/Helper/partial/demande-externe-array.phtml b/module/DemandeExterne/src/View/Helper/partial/demande-externe-array.phtml index 66321c184ec475a23c21fc12eae95f0be805da67..650f631ebc2374ed5d8d75d0bb4934a9654df83e 100644 --- a/module/DemandeExterne/src/View/Helper/partial/demande-externe-array.phtml +++ b/module/DemandeExterne/src/View/Helper/partial/demande-externe-array.phtml @@ -9,9 +9,9 @@ use Random\RandomException; try { $random = random_int(1, 10000000); } catch (RandomException $e) { - throw new RuntimeException("Problème de génération de l'identifiant du tableau",0,$e); + throw new RuntimeException("Problème de génération de l'identifiant du tableau", 0, $e); } -$table_id='demandes_'.$random; +$table_id = 'demandes_' . $random; /** @@ -43,26 +43,33 @@ if (!$displayGestionnaire) $sizeDevis += 2; <table class="table table-condensed table-hover" id="<?php echo $table_id; ?>"> <thead> <tr> - <th class="col-md-2"> Agent</th> - <?php if ($displayGestionnaire) : ?> - <th class="col-md-2"> Gestionnaires</th> - <?php endif; ?> - <th class="col-md-2" data-type="num"> Formation</th> - <th class="col-md-1"> Organisme</th> - <th class="col-md-<?php echo $sizeDevis; ?>"> Devis</th> - <th class="col-md-1"> État</th> - <th class="col-md-2"> Action</th> + <th> Agent</th> + <th> Structure·s d'affectation</th> + <th> Date de la demande</th> + <th> Intitulé de la formation</th> + <th data-type="num"> Période de formation</th> + <th> Organisme</th> + <th> Devis</th> + <th> État</th> + <th style="width:8rem;"> Action</th> </tr> </thead> <tbody> <?php foreach ($demandes as $demande) : ?> + <?php + $agent = $demande->getAgent(); + $affectations = $agent->getAffectationsActifs(); + ?> <tr class=" <?php if ($demande->estHistorise()) echo " historise "; ?> "> - <td> <?php echo $demande->getAgent()->getDenomination(); ?> </td> - <?php if ($displayGestionnaire) : ?> - <td class="gestionnaire"> + <td> + <?php echo $agent->getDenomination(); ?> + <?php if ($displayGestionnaire) : ?> + <small> + <br> <?php if (empty($demande->getGestionnaires())) : ?> Aucun·e gestionnaire <br> <?php else : ?> + Gestionnaire·s : <ul> <?php foreach ($demande->getGestionnaires() as $gestionnaire) : ?> <li> <?php echo $gestionnaire->getDisplayName(); ?> </li> @@ -77,29 +84,40 @@ if (!$displayGestionnaire) $sizeDevis += 2; Renseigner les gestionnaires </a> <?php endif; ?> - </td> - <?php endif; ?> + </small> + <?php endif; ?> + </td> + <td> + <?php foreach ($affectations as $affectation) : ?> + <?php + $structure = $affectation->getStructure(); + $niv2 = $structure->getNiv2(); + ?> + <?php if ($niv2 AND $niv2 !== $structure) : ?> + <?php echo $niv2->getLibelleCourt(); ?> <br> + <?php endif; ?> + <?php echo $structure->getLibelleCourt(); ?> + <?php endforeach; ?> + </td> + <td> <?php echo $demande->getHistoCreation()->format('d/m/Y'); ?> </td> + + <td> <?php echo $demande->getLibelle(); ?> </td> <td data-order="<?php echo $demande->getDebut()?->getTimestamp(); ?>"> - <?php echo $demande->getLibelle(); ?><br> - <?php echo $demande->getPeriode(); ?> <br> - <small> - Demande créée le - <?php echo $demande->getHistoCreation()->format('d/m/Y'); ?> - </small> + <?php echo $demande->getPeriode(); ?> </td> <td> <?php echo $demande->getOrganisme(); ?> </td> <td class="action devis"> Frais pédagogique : <?php echo $demande->getFraisPedagogique(); ?> <br> Frais annexe : <?php echo $demande->getFraisAnnexe(); ?> <br> - <?php if (isset($plafond1) AND $demande->getFraisPedagogique() >= $plafond1) : ?> + <?php if (isset($plafond1) and $demande->getFraisPedagogique() >= $plafond1) : ?> <span class="text-warning"> <span class="icon icon-attention" title="Plafond dépassé ! Nécessite validation de la DRH."></span> DRH </span> <?php endif; ?> - <?php if (isset($plafond2) AND $demande->getFraisPedagogique() >= $plafond2) : ?> + <?php if (isset($plafond2) and $demande->getFraisPedagogique() >= $plafond2) : ?> <span class="text-warning"> <span class="icon icon-attention" title="Plafond dépassé ! Nécessite validation de la DGS."></span> @@ -180,7 +198,7 @@ if (!$displayGestionnaire) $sizeDevis += 2; </td> <td> - <?php echo $this->etatinstance($demande->getEtatActif(), ['display-categorie' => false]); ?> + <?php echo $this->etatinstance($demande->getEtatActif(), ['display-libelle' => true, 'display-categorie' => false]); ?> </td> <td class="action"> <?php if ($canAfficher) : ?> @@ -242,11 +260,11 @@ if (!$displayGestionnaire) $sizeDevis += 2; Transformer </a> <?php else : ?> - <?php /** @see \Formation\Controller\SessionController::afficherAction() */ ?> - <a href="<?php echo $this->url('session/afficher',['session' => $demande->getInscription()->getSession()->getId()],['fragment' => 'inscriptions'], true); ?>"> - <span class="icon icon-voir"></span> - Voir l'inscription - </a> + <?php /** @see \Formation\Controller\SessionController::afficherAction() */ ?> + <a href="<?php echo $this->url('session/afficher', ['session' => $demande->getInscription()->getSession()->getId()], ['fragment' => 'inscriptions'], true); ?>"> + <span class="icon icon-voir"></span> + Voir l'inscription + </a> <?php endif; ?> <?php endif; ?> <?php endif; ?> @@ -292,10 +310,10 @@ if (!$displayGestionnaire) $sizeDevis += 2; paging: false, autoWidth: false, // order: [[1, 'asc']], - // columnDefs: [{ - // "targets": 5, - // "orderable": false - // }], + columnDefs: [{ + "targets": 8, + "orderable": false + }], "language": { "url": "/js/datatables_fr.json", } diff --git a/module/DemandeExterne/view/demande-externe/demande-externe/parapheur.phtml b/module/DemandeExterne/view/demande-externe/demande-externe/parapheur.phtml index 01b4c0aad8f06b7902403f9a8bfce555f1835033..cb597b212d2b5159c8d7f6d706ffb16f9a5a3f39 100644 --- a/module/DemandeExterne/view/demande-externe/demande-externe/parapheur.phtml +++ b/module/DemandeExterne/view/demande-externe/demande-externe/parapheur.phtml @@ -3,10 +3,12 @@ use DemandeExterne\Entity\Db\DemandeExterne; use DemandeExterne\Provider\Etat\DemandeExterneEtats; use DemandeExterne\Provider\Privilege\DemandeexternePrivileges; +use Fichier\Entity\Db\Fichier; /** * @see DemandeExterneController::parapheurAction() * @var DemandeExterne[] $demandes + * @var array $params */ $this->headTitle("Parapheur des formations en attentes"); @@ -20,8 +22,9 @@ $canValiderResponsable = $this->isAllowed(DemandeexternePrivileges::getResourceI $canValiderDrh = $this->isAllowed(DemandeexternePrivileges::getResourceId(DemandeexternePrivileges::DEMANDEEXTERNE_VALIDER_DRH)); $canValiderDgs = $this->isAllowed(DemandeexternePrivileges::getResourceId(DemandeexternePrivileges::DEMANDEEXTERNE_VALIDER_DGS)); -$canRenseignerGestionnaire = $this->isAllowed(DemandeexternePrivileges::getResourceId(DemandeexternePrivileges::DEMANDEEXTERNE_GERER)); - +$canGerer = $this->isAllowed(DemandeexternePrivileges::getResourceId(DemandeexternePrivileges::DEMANDEEXTERNE_GERER)); +$canTelechargerDevis = $canGerer; +$canTeleverserDevis = $canGerer; ?> <h1 class="page-header"> @@ -32,60 +35,170 @@ $canRenseignerGestionnaire = $this->isAllowed(DemandeexternePrivileges::getResou Demandes de formation externe </h2> +<?php //echo $this->partial('partial/filtre', ['etats' => $etats, 'params' => $params, 'gestionnaires' => $gestionnaires], [], true); ?> + <table class="table table-condensed table-hover" id="demandes"> <thead> <tr> - <th class="col-md-3"> Agent</th> - <th class="col-md-3" type="num"> Formation</th> - <th class="col-md-2"> Organisme</th> - <?php if ($canRenseignerGestionnaire) : ?> - <th class="col-md-2"> Gestionnaires</th> - <?php endif; ?> - <th class="col-md-1"> État</th> - <th class="col-md-"> Action</th> + <tr> + <th> Agent</th> + <th> Structure·s d'affectation</th> + <th> Date de la demande</th> + <th> Intitulé de la formation</th> + <th data-type="num"> Période de formation</th> + <th> Organisme</th> + <th> Devis</th> + <th> État</th> + <th style="width:8rem;"> Action</th> </tr> </thead> <tbody> <?php foreach ($demandes as $demande) : ?> <tr class=" <?php if ($demande->estHistorise()) echo " historise "; ?> "> - <td> <?php echo $demande->getAgent()->getDenomination(); ?> </td> - <td data-order="<?php echo $demande->getDebut()->getTimestamp(); ?>"> - <?php echo $demande->getLibelle(); ?> <br> - <?php echo $demande->getPeriode(); ?> <br> - <small> - Demande créée le <?php echo $demande->getHistoCreation()->format('d/m/Y'); ?> - </small> + <?php + $agent = $demande->getAgent(); + $affectations = $agent->getAffectationsActifs(); + ?> + <tr class=" <?php if ($demande->estHistorise()) echo " historise "; ?> "> + <td> + <?php echo $agent->getDenomination(); ?> + <?php if ($canGerer) : ?> + <small> + <br> + <?php if (empty($demande->getGestionnaires())) : ?> + Aucun·e gestionnaire <br> + <?php else : ?> + Gestionnaire·s : + <ul> + <?php foreach ($demande->getGestionnaires() as $gestionnaire) : ?> + <li> <?php echo $gestionnaire->getDisplayName(); ?> </li> + <?php endforeach; ?> + </ul> + <?php endif; ?> + <?php if ($canGerer) : ?> + <?php /** @see DemandeExterneController::selectionnerGestionnairesAction() */ ?> + <a href="<?php echo $this->url('demande-externe/selectionner-gestionnaires', ['demande-externe' => $demande->getId()], [], true); ?>" + class="action primary ajax-modal" data-event="modification" style="font-size:small;"> + <span class="icon icon-gerer"></span> + Renseigner les gestionnaires + </a> + <?php endif; ?> + </small> + <?php endif; ?> </td> - <td> <?php echo $demande->getOrganisme(); ?> </td> - <?php if ($canRenseignerGestionnaire) : ?> <td> - <?php $gestionnaires = $demande->getGestionnaires(); ?> - <?php if (empty($gestionnaires)) : ?> - <span style="color:Sienna;"> - <span class="icon icon-attention"></span> - Aucun·e gestionnaire + <?php foreach ($affectations as $affectation) : ?> + <?php + $structure = $affectation->getStructure(); + $niv2 = $structure->getNiv2(); + ?> + <?php if ($niv2 AND $niv2 !== $structure) : ?> + <?php echo $niv2->getLibelleCourt(); ?> <br> + <?php endif; ?> + <?php echo $structure->getLibelleCourt(); ?> + <?php endforeach; ?> + </td> + <td> <?php echo $demande->getHistoCreation()->format('d/m/Y'); ?> </td> + + <td> <?php echo $demande->getLibelle(); ?> </td> + <td data-order="<?php echo $demande->getDebut()?->getTimestamp(); ?>"> + <?php echo $demande->getPeriode(); ?> + </td> + <td> <?php echo $demande->getOrganisme(); ?> </td> + + <td class="action devis"> + Frais pédagogique : <?php echo $demande->getFraisPedagogique(); ?> <br> + Frais annexe : <?php echo $demande->getFraisAnnexe(); ?> <br> + <?php if (isset($plafond1) and $demande->getFraisPedagogique() >= $plafond1) : ?> + <span class="text-warning"> + <span class="icon icon-attention" + title="Plafond dépassé ! Nécessite validation de la DRH."></span> + DRH </span> + <?php endif; ?> + <?php if (isset($plafond2) and $demande->getFraisPedagogique() >= $plafond2) : ?> + <span class="text-warning"> + <span class="icon icon-attention" + title="Plafond dépassé ! Nécessite validation de la DGS."></span> + </span> DGS + <?php endif; ?> + <br> + <?php if (empty($demande->getDevis())) : ?> + <span class="text-danger"> + <span class="icon icon-attention"></span> + Aucun devis + </span> <br> + <?php else : ?> + <?php /** @var Fichier $devis */ ?> + <?php foreach ($demande->getDevis() as $devis) : ?> + <strong> Devis </strong> + <?php if ($canTelechargerDevis) : ?> + <?php /** @see \Fichier\Controller\FichierController::downloadAction() */ ?> + <a href="<?php echo $this->url('download-fichier', ['fichier' => $devis->getId()], [], true); ?>"> + <?php echo $devis->getNomOriginal(); ?> + </a> + <?php else : ?> + <?php echo $devis->getNomOriginal(); ?> + <?php endif; ?> + <?php if ($canTeleverserDevis && $demande->isEtatActif(DemandeExterneEtats::ETAT_CREATION_EN_COURS)) : ?> + <?php /** @see DemandeExterneController::retirerJustificatifAction() */ ?> + <a href="<?php echo $this->url('demande-externe/retirer-justificatif', ['justificatif' => $devis->getId()], ['query' => ['retour' => $this->url()]], true); ?>"> + <span class="text-danger"> + <span class="icon icon-unchecked"></span> + + </span> + </a> + <?php endif; ?> <br> - <?php else : ?> - Gestionnaires associé·es : - <ul> - <?php foreach ($gestionnaires as $gestionnaire) : ?> - <li> <?php echo $gestionnaire->getDisplayName(); ?> </li> - <?php endforeach; ?> - </ul> - <?php endif; ?> - <?php /** @see DemandeExterneController::selectionnerGestionnairesAction() */ ?> - <a href="<?php echo $this->url('demande-externe/selectionner-gestionnaires', ['demande-externe' => $demande->getId()], [], true); ?>" - class="action primary ajax-modal" data-event="modification" style="font-size:small;"> - <span class="icon icon-gerer"></span> - Renseigner les gestionnaires - </a> + <?php endforeach; ?> + <?php endif; ?> + <?php if ($canTeleverserDevis && $demande->isEtatActif(DemandeExterneEtats::ETAT_CREATION_EN_COURS)) : ?> + <?php /** @see DemandeExterneController::ajouterDevisAction() */ ?> + <a href="<?php echo $this->url('demande-externe/ajouter-devis', ['demande-externe' => $demande->getId()], ['query' => ['retour' => $this->url(null, [], [], true)]], true); ?>" + class="ajax-modal action primary" data-event="modification"> + <span class="icon icon-televerser"></span>Ajouter un devis</a> + <?php endif; ?> + <br> + <?php if (empty($demande->getProgrammes())) : ?> + <span class="text-danger"> + <span class="icon icon-attention"></span> + Aucun programme + </span> <br> + <?php else : ?> + <?php /** @var Fichier $devis */ ?> + <?php foreach ($demande->getProgrammes() as $devis) : ?> + <strong> Programme </strong> + <?php if ($canTelechargerDevis) : ?> + <?php /** @see \Fichier\Controller\FichierController::downloadAction() */ ?> + <a href="<?php echo $this->url('download-fichier', ['fichier' => $devis->getId()], [], true); ?>"> + <?php echo $devis->getNomOriginal(); ?> + </a> + <?php else : ?> + <?php echo $devis->getNomOriginal(); ?> + <?php endif; ?> + <?php if ($canTeleverserDevis && $demande->isEtatActif(DemandeExterneEtats::ETAT_CREATION_EN_COURS)) : ?> + <?php /** @see DemandeExterneController::retirerJustificatifAction() */ ?> + <a href="<?php echo $this->url('demande-externe/retirer-justificatif', ['justificatif' => $devis->getId()], ['query' => ['retour' => $this->url()]], true); ?>"> + <span class="text-danger"> + <span class="icon icon-unchecked"></span> + + </span> + </a> + <?php endif; ?> + <br> + <?php endforeach; ?> + <?php endif; ?> + <?php if ($canTelechargerDevis && $demande->isEtatActif(DemandeExterneEtats::ETAT_CREATION_EN_COURS)) : ?> + <?php /** @see DemandeExterneController::ajouterProgrammeAction() */ ?> + <a href="<?php echo $this->url('demande-externe/ajouter-programme', ['demande-externe' => $demande->getId()], ['query' => ['retour' => $this->url(null, [], [], true)]], true); ?>" + class="ajax-modal action primary" data-event="modification"> + <span class="icon icon-televerser"></span>Ajouter un programme</a> + <?php endif; ?> + </td> - <?php endif; ?> <td> - <?php - echo $this->etatinstance($demande->getEtatActif(), ['display-categorie' => false]); - ?> </td> + <?php echo $this->etatinstance($demande->getEtatActif(), ['display-libelle' => true, 'display-categorie' => false]); ?> + </td> <td class="action"> <?php if ($canAfficher) : ?> <?php /** @see DemandeExterneController::afficherAction() */ ?> @@ -196,9 +309,8 @@ $canRenseignerGestionnaire = $this->isAllowed(DemandeexternePrivileges::getResou $('table#demandes').DataTable({ paging: false, autoWidth: false, - order: [[1, 'asc']], columnDefs: [{ - "targets": 5, + "targets": 8, "orderable": false }], "language": { diff --git a/module/Formation/src/Formation/Controller/PlanDeFormationController.php b/module/Formation/src/Formation/Controller/PlanDeFormationController.php index 0fa96fd616880972cc85b77d4881e97907fac1a5..6bb14dd7b7da46ce954831beb6f64ecc002cfdec 100644 --- a/module/Formation/src/Formation/Controller/PlanDeFormationController.php +++ b/module/Formation/src/Formation/Controller/PlanDeFormationController.php @@ -357,7 +357,7 @@ class PlanDeFormationController extends AbstractActionController } $header = $array[0]; - //TODO detecter column + $axeColumn = array_search("Axe", $header); $formationColumn = array_search("Action", $header); $domaineColumn = array_search("Domaine", $header); diff --git a/module/Formation/src/Formation/Form/PlanDeFormationImportation/PlanDeFormationImportationForm.php b/module/Formation/src/Formation/Form/PlanDeFormationImportation/PlanDeFormationImportationForm.php index 1d21fdbcdc24af32c4b40d9ad8e6942236a5f7a9..22d2a2a551f1d5f3e4afa8346bb1b89cfc90cb72 100644 --- a/module/Formation/src/Formation/Form/PlanDeFormationImportation/PlanDeFormationImportationForm.php +++ b/module/Formation/src/Formation/Form/PlanDeFormationImportation/PlanDeFormationImportationForm.php @@ -4,6 +4,7 @@ namespace Formation\Form\PlanDeFormationImportation; use Formation\Service\PlanDeFormation\PlanDeFormationServiceAwareTrait; use Laminas\Form\Element\Button; +use Laminas\Form\Element\Checkbox; use Laminas\Form\Element\File; use Laminas\Form\Element\Select; use Laminas\Form\Form; @@ -54,22 +55,6 @@ class PlanDeFormationImportationForm extends Form { 'id' => 'mode', ], ]); - //annee -// $this->add([ -// 'type' => Select::class, -// 'name' => 'annee', -// 'options' => [ -// 'label' => 'Année asscocié <span class="icon icon-asterisque" title="Champ obligatoire"></span> :', -// 'label_options' => [ 'disable_html_escape' => true, ], -// 'value_options' => [ -// '' => "Prévisualisation", -// 'import' => "Importation", -// ] -// ], -// 'attributes' => [ -// 'id' => 'annee', -// ], -// ]); //Submit $this->add([ diff --git a/module/Formation/src/Formation/Service/Notification/NotificationService.php b/module/Formation/src/Formation/Service/Notification/NotificationService.php index e5d92002bf2917c2f9bfdef3c2de26862ee26585..07ef2739686723ae52913fab960346976fb218f2 100644 --- a/module/Formation/src/Formation/Service/Notification/NotificationService.php +++ b/module/Formation/src/Formation/Service/Notification/NotificationService.php @@ -443,6 +443,7 @@ class NotificationService $vars = [ 'session' => $session, 'UrlService' => $this->getUrlService(), + 'MacroService' => $this->getMacroService(), ]; $rendu = $this->getRenduService()->generateRenduByTemplateCode(MailTemplates::FORMATION_RAPPEL_AVANT_FORMATION, $vars);