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

Refactoring date d'effet et de fin de prise en charge dans le cadre des missions étudiants

parent 2a4d1356
Loading
Loading
Loading
Loading
+37 −11
Original line number Diff line number Diff line
@@ -305,6 +305,32 @@ class ContratService extends AbstractEntityService



    public function getFirstContratMission(Intervenant $intervenant): ?Mission
    {
        $dql = " SELECT c,m
            FROM " . Contrat::class . " c
            JOIN c.intervenant i
            JOIN c.mission m
            WHERE c.intervenant = :intervenant
                AND c.dateRetourSigne IS NOT NULL
                AND c.histoDestruction IS NULL
            ORDER BY m.dateDebut ASC
        ";

        $query = $this->getEntityManager()->createQuery($dql);
        $query->setParameter('intervenant', $intervenant);

        $contrat = $query->setMaxResults(1)->getOneOrNullResult();

        if ($contrat) {
            return $contrat->getMission();
        }

        return null;
    }



    public function getContratInitialMission(?Mission $mission)
    {
        $dql = '
+42 −14
Original line number Diff line number Diff line
@@ -3,6 +3,7 @@
namespace ExportRh\Connecteur\Siham;

use Application\Entity\Db\Intervenant;
use Contrat\Service\ContratServiceAwareTrait;
use Dossier\Service\Traits\DossierServiceAwareTrait;
use ExportRh\Connecteur\ConnecteurRhInterface;
use ExportRh\Entity\IntervenantRh;
@@ -23,6 +24,7 @@ class SihamConnecteur implements ConnecteurRhInterface
    use ExportRhServiceAwareTrait;
    use AdresseNumeroComplServiceAwareTrait;
    use VoirieServiceAwareTrait;
    use ContratServiceAwareTrait;

    public Siham $siham;

@@ -70,6 +72,8 @@ class SihamConnecteur implements ConnecteurRhInterface
        $typeAffectation         = (isset($this->siham->getConfig()['type-affectation'])) ? $this->siham->getConfig()['type-affectation'] : ['FUN'];
        $affectations            = [];
        $donneesAdministratives  = $this->recupererDonneesAdministrativesIntervenantRh($intervenant);
        $anneeUniversitaireDebut = $intervenant->getAnnee()->getDateDebut();
        $anneeUniversitaireFin   = $intervenant->getAnnee()->getDateFin();

        if (!empty($donneesAdministratives['listeAffectations']) || !empty($donneesAdministratives->listeAffectations)) {
            $listeAffectations = $donneesAdministratives['listeAffectations'];
@@ -79,7 +83,9 @@ class SihamConnecteur implements ConnecteurRhInterface
                        $dateDebutAffectation = new \DateTime($affectation->dateDebutAffectation);
                        $dateFinAffectation   = new \DateTime($affectation->dateFinAffectation);
                        $currentDate          = new \DateTime();
                        if ($currentDate > $dateDebutAffectation and $currentDate < $dateFinAffectation) {
                        /*Si il y a dejà eu une affectation dans l'année universitaire en cours on la remonte afin que OSE ne propose
                        plus le renouvellement de l'intervenant. Pour un second renouvellement en cours d'année il faudra le faire manuellement*/
                        if ($anneeUniversitaireFin > $dateDebutAffectation and $anneeUniversitaireDebut < $dateFinAffectation) {
                            $affectations[] = $affectation;
                        }
                    }
@@ -90,7 +96,9 @@ class SihamConnecteur implements ConnecteurRhInterface
                    $dateDebutAffectation = new \DateTime($listeAffectations->dateDebutAffectation);
                    $dateFinAffectation   = new \DateTime($listeAffectations->dateFinAffectation);
                    $currentDate          = new \DateTime();
                    if ($currentDate > $dateDebutAffectation and $currentDate < $dateFinAffectation) {
                    /*Si il y a dejà eu une affectation dans l'année universitaire en cours on la remonte afin que OSE ne propose
                        plus le renouvellement de l'intervenant. Pour un second renouvellement en cours d'année il faudra le faire manuellement*/
                    if ($anneeUniversitaireFin > $dateDebutAffectation and $anneeUniversitaireDebut < $dateFinAffectation) {
                        $affectations[] = $listeAffectations;
                    }
                }
@@ -162,6 +170,8 @@ class SihamConnecteur implements ConnecteurRhInterface
    {
        $contrats                = [];
        $donneesAdministratives  = $this->recupererDonneesAdministrativesIntervenantRh($intervenant);
        $anneeUniversitaireDebut = $intervenant->getAnnee()->getDateDebut();
        $anneeUniversitaireFin   = $intervenant->getAnnee()->getDateFin();

        if (!empty($donneesAdministratives['listeContrats']) || !empty($donneesAdministratives->listeContrats)) {
            $listeContrats = (isset($donneesAdministratives['listeContrats']) && is_array($donneesAdministratives['listeContrats'])) ? $donneesAdministratives['listeContrats'] : [$donneesAdministratives['listeContrats']];
@@ -171,7 +181,8 @@ class SihamConnecteur implements ConnecteurRhInterface
                $dateDebutContrat = new \DateTime($contrat->dateDebutContrat);
                $dateFinContrat   = new \DateTime($contrat->dateFinReelleContrat);
                $currentDate      = new \DateTime();
                if ($currentDate > $dateDebutContrat and $currentDate < $dateFinContrat) {

                if ($anneeUniversitaireFin > $dateDebutContrat and $anneeUniversitaireDebut < $dateFinContrat) {
                    $contrats[] = $contrat;
                }
            }
@@ -191,9 +202,18 @@ class SihamConnecteur implements ConnecteurRhInterface
            /* Récupération du dossier de l'intervenant */
            $dossierIntervenant = $this->getServiceDossier()->getByIntervenant($intervenant);

            /*Recherche de la date d'effet à passer selon enseignement ou mission, si mission on prend la première mission de l'année universitaire
            sinon on prend les dates de début et de fin de l'année universitaire*/
            $firstMission = $this->getServiceContrat()->getFirstContratMission($intervenant);
            if (!empty($firstMission)) {
                $dateEffet = $firstMission->getDateDebut()->format('Y-m-d');
                $dateFin   = $firstMission->getDateFin()->format('Y-m-d');
            } else {
                $anneeUniversitaire = $intervenant->getAnnee();
                $dateEffet          = $anneeUniversitaire->getDateDebut()->format('Y-m-d');
                $dateFin            = $anneeUniversitaire->getDateFin()->format('Y-m-d');
            }


            /*CARRIERE*/
            $carriere = [
@@ -469,10 +489,18 @@ class SihamConnecteur implements ConnecteurRhInterface

            /* Récupération du dossier de l'intervenant */
            $dossierIntervenant = $this->getServiceDossier()->getByIntervenant($intervenant);
            $anneeUniversitaire = $intervenant->getAnnee();

            /*Recherche de la date d'effet à passer selon enseignement ou mission, si mission on prend la première mission de l'année universitaire
            sinon on prend les dates de début et de fin de l'année universitaire*/
            $firstMission = $this->getServiceContrat()->getFirstContratMission($intervenant);
            if (!empty($firstMission)) {
                $dateEffet = $firstMission->getDateDebut()->format('Y-m-d');
                $dateFin   = $firstMission->getDateFin()->format('Y-m-d');
            } else {
                $anneeUniversitaire = $intervenant->getAnnee();
                $dateEffet          = $anneeUniversitaire->getDateDebut()->format('Y-m-d');
                $dateFin            = $anneeUniversitaire->getDateFin()->format('Y-m-d');
            }

            /*Formatage du matricule*/

+14 −10
Original line number Diff line number Diff line
@@ -180,11 +180,15 @@ class ExportRhController extends AbstractController
            //On a trouvé un intervenant dans le SI RH
            if (!empty($intervenantRh)) {
                //On regarde si il a une affectation en cours pour l'année courante si oui alors on propose uniquement une synchronisation des données personnelles
                $affectationEnCours = current($this->exportRhService->getAffectationEnCoursIntervenantRh($intervenant));
                $contratEnCours     = current($this->exportRhService->getContratEnCoursIntervenantRh($intervenant));
                $listeAffectations = $this->exportRhService->getAffectationEnCoursIntervenantRh($intervenant);
                //On prend la dernière affectation connue dans SIHAM
                $affectationEnCours = end($listeAffectations);
                $listeContrats      = $this->exportRhService->getContratEnCoursIntervenantRh($intervenant);
                //On prend le dernier contrat connu dans SIHAM
                $contratEnCours = end($listeContrats);

                $renouvellement = true;
                if (!empty($affectationEnCours)) {
                if (!empty($listeAffectations)) {
                    $renouvellement = false;
                }
            } else {
+14 −3
Original line number Diff line number Diff line
@@ -84,8 +84,9 @@ if ($priseEnCharge) {
            ?>
            <!-- BLOC AFFECTATION -->
            <?php if (!empty($affectationEnCours)): ?>

                <div class="card bg-default">
                    <div class="card-header">Affectation <?= $nameConnecteur ?> en cours</div>
                    <div class="card-header">Dernière affectation connue dans <?= $nameConnecteur ?> </div>
                    <div class="card-body">
                        <table class="table">
                            <thead>
@@ -109,6 +110,15 @@ if ($priseEnCharge) {
                                    ?>
                                </td>
                            </tr>
                            <tr>
                                <td>Date fin</td>
                                <td>
                                    <?php
                                    $date = new DateTime($affectationEnCours->dateFinAffectation);
                                    echo $date->format('d-m-Y');
                                    ?>
                                </td>
                            </tr>
                            <tr>
                                <td>Type de rattachement</td>
                                <td><?= $affectationEnCours->libLongTypeRattachement ?></td>
@@ -123,9 +133,10 @@ if ($priseEnCharge) {
                        </table>
                    </div>
                </div>

            <?php else: ?>
                <div class="card bg-default">
                    <div class="card-header">Affectation <?= $nameConnecteur ?> en cours</div>
                    <div class="card-header">Affectation <?= $nameConnecteur ?></div>
                    <div class="card-body" style="text-align:center;">
                        Aucune affectation en cours dans SIHAM
                    </div>
@@ -133,7 +144,7 @@ if ($priseEnCharge) {
            <?php endif; ?>
            <?php if (!empty($contratEnCours)): ?>
                <div class="card bg-default">
                    <div class="card-header">Contrat <?= $nameConnecteur ?> en cours</div>
                    <div class="card-header">Dernier contrat connu dans <?= $nameConnecteur ?></div>
                    <div class="card-body">
                        <table class="table">
                            <thead>