Commit 19f48d20 authored by Antony Le Courtes's avatar Antony Le Courtes
Browse files

Merge branch 'alc-export-rh-code-intervenant'

parents ce978681 8eb603de
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -296,6 +296,7 @@ return [
        //définition du connecteur SI RH à utiliser pour le module export RH de OSE
        'actif'      => true,
        'connecteur' => 'siham',
        'sync-code' => true,
    ],


+1 −0
Original line number Diff line number Diff line
@@ -5,6 +5,7 @@ return [
    'export-rh' => [
        'actif'      => AppConfig::get('export-rh', 'actif') ? AppConfig::get('export-rh', 'actif') : false,
        'connecteur' => AppConfig::get('export-rh', 'connecteur') ? AppConfig::get('export-rh', 'connecteur') : '',
        'sync-code'  => AppConfig::get('export-rh', 'sync-code') ? AppConfig::get('export-rh', 'sync-code') : false,
    ],

];
 No newline at end of file
+19 −27
Original line number Diff line number Diff line
@@ -49,7 +49,6 @@ class IntervenantService extends AbstractEntityService
    }



    /**
     * Retourne l'intervenant en fonction des paramètres de route transmis :
     * - soit code:<i>CODE</i>
@@ -88,7 +87,6 @@ class IntervenantService extends AbstractEntityService
    }



    /**
     * Retourne l'intervenant de l'année précédente
     *
@@ -110,7 +108,6 @@ class IntervenantService extends AbstractEntityService
    }



    public function getByCode(string $code): ?Intervenant
    {
        $anneeId = $this->getServiceContext()->getAnnee()->getId();
@@ -124,7 +121,6 @@ class IntervenantService extends AbstractEntityService
    }



    public function getByCodeRh(string $codeRh): ?Intervenant
    {
        $anneeId = $this->getServiceContext()->getAnnee()->getId();
@@ -138,7 +134,6 @@ class IntervenantService extends AbstractEntityService
    }



    /**
     *
     * @param string $sourceCode
@@ -166,7 +161,6 @@ class IntervenantService extends AbstractEntityService
    }



    private function getBones(array $params): array
    {
        $psql = '';
@@ -192,7 +186,6 @@ class IntervenantService extends AbstractEntityService
    }



    private function bestIntervenantByBones(array $bones, ?string $code, ?int $anneeId, ?int $statutId, ?int $structureId): ?Intervenant
    {
        $count = count($bones);
@@ -230,7 +223,6 @@ class IntervenantService extends AbstractEntityService
    }



    public function isImportable(Intervenant $intervenant): bool
    {
        $connection = $this->getEntityManager()->getConnection();
@@ -239,14 +231,13 @@ class IntervenantService extends AbstractEntityService
        $res = $connection->fetchAssociative($sqlEnabled);
        if (false === $res || '0' == $res['SYNC_ENABLED']) return false;

        $sql = "SELECT code FROM SRC_INTERVENANT WHERE code = :code AND annee_id = :annee";
        $sql = "SELECT code FROM src_intervenant WHERE code = :code AND annee_id = :annee";
        $res = $connection->fetchAssociative($sql, ['code' => $intervenant->getCode(), 'annee' => $intervenant->getAnnee()->getId()]);

        return ($res !== false) && isset($res['CODE']) && ($intervenant->getCode() == $res['CODE']);
    }



    private function getIntervenantIdParDefaut(string $code, int $anneeId): ?int
    {
        if (!$code || !$anneeId) return null;
@@ -261,7 +252,6 @@ class IntervenantService extends AbstractEntityService
    }



    /**
     * Permet de définit une fiche intervenant comme celle étant à consulter par défaut
     *
@@ -275,17 +265,17 @@ class IntervenantService extends AbstractEntityService
        if ($definir) {
            $idParDefaut = $this->getIntervenantIdParDefaut($intervenant->getCode(), $intervenant->getAnnee()->getId());
            if ($idParDefaut) {
                $sql = "DELETE FROM INTERVENANT_PAR_DEFAUT WHERE intervenant_id = :id";
                $sql = "DELETE FROM intervenant_par_defaut WHERE intervenant_id = :id";
                $this->getEntityManager()->getConnection()->executeUpdate($sql, ['id' => $idParDefaut]);
            }
            $sql = "INSERT INTO INTERVENANT_PAR_DEFAUT (id, annee_id, intervenant_code, intervenant_id) VALUES (INTERVENANT_PAR_DEFAUT_ID_SEQ.NEXTVAL, :annee, :code, :id)";
            $sql = "INSERT INTO intervenant_par_defaut (id, annee_id, intervenant_code, intervenant_id) VALUES (intervenant_par_defaut_id_seq.nextval, :annee, :code, :id)";
            $this->getEntityManager()->getConnection()->executeUpdate($sql, [
                'annee' => $intervenant->getAnnee()->getId(),
                'code'  => $intervenant->getCode(),
                'id'    => $intervenant->getId(),
            ]);
        } else {
            $sql = "DELETE FROM INTERVENANT_PAR_DEFAUT WHERE annee_id = :annee AND intervenant_code = :code";
            $sql = "DELETE FROM intervenant_par_defaut WHERE annee_id = :annee AND intervenant_code = :code";
            $this->getEntityManager()->getConnection()->executeUpdate($sql, [
                'annee' => $intervenant->getAnnee()->getId(),
                'code'  => $intervenant->getCode(),
@@ -294,7 +284,6 @@ class IntervenantService extends AbstractEntityService
    }



    /**
     * Permet de savoir si oui ou non cette fiche intervenant est définie comme étant celle par défaut.
     *
@@ -308,7 +297,6 @@ class IntervenantService extends AbstractEntityService
    }



    /**
     * Retourne les identifiants des données concernés
     *
@@ -338,7 +326,6 @@ class IntervenantService extends AbstractEntityService
    }



    /**
     * @param $intervenant Intervenant
     *
@@ -355,7 +342,6 @@ class IntervenantService extends AbstractEntityService
    }



    /**
     * Retourne l'alias d'entité courante
     *
@@ -367,7 +353,6 @@ class IntervenantService extends AbstractEntityService
    }



    public function finderByMiseEnPaiement(Structure $structure = null, Periode $periode = null, QueryBuilder $qb = null, $alias = null)
    {
        $serviceMIS = $this->getServiceMiseEnPaiementIntervenantStructure();
@@ -388,7 +373,6 @@ class IntervenantService extends AbstractEntityService
    }



    /**
     * @return Intervenant
     */
@@ -406,7 +390,6 @@ class IntervenantService extends AbstractEntityService
    }



    /**
     * Sauvegarde une entité
     *
@@ -428,7 +411,6 @@ class IntervenantService extends AbstractEntityService
    }



    /**
     *
     * @param QueryBuilder|null $qb
@@ -444,7 +426,6 @@ class IntervenantService extends AbstractEntityService
    }



    /**
     * Filtre par le type d'intervenant
     *
@@ -466,7 +447,6 @@ class IntervenantService extends AbstractEntityService
    }



    /**
     * Supprime (historise par défaut) le service spécifié.
     *
@@ -530,7 +510,6 @@ class IntervenantService extends AbstractEntityService
    }



    public function getSystemeInformationUrl(Intervenant $intervenant): ?string
    {
        if (!$intervenant->getSource()->getImportable()) return null;
@@ -550,7 +529,6 @@ class IntervenantService extends AbstractEntityService
    }



    /**
     * @param string $nom
     * @param string $prenom
@@ -602,7 +580,6 @@ class IntervenantService extends AbstractEntityService
    }



    public function updateExportDate(Intervenant $intervenant): Intervenant
    {
        $date = new \DateTime();
@@ -613,4 +590,19 @@ class IntervenantService extends AbstractEntityService
        return $intervenant;
    }

    public function updateCode(Intervenant $intervenant, $code): Intervenant
    {
        if (!empty($code)) {
            if (empty($intervenant->getExportDate())) {
                $intervenant->setCode($code);
                $this->getEntityManager()->persist($intervenant);
                $this->getEntityManager()->flush();
                //On recalcul les tablaeux de bords de l'intervenant
                $this->getServiceWorkflow()->calculerTableauxBord([], $intervenant);
            }
        }

        return $intervenant;
    }

}
+12 −4
Original line number Diff line number Diff line
@@ -37,11 +37,12 @@ class ExportRhController extends AbstractController
     * @var ExportRhService $exportRhService
     */
    protected $exportRhService;
    protected $config;


    public function __construct(ExportRhService $exportRhService)
    public function __construct(ExportRhService $exportRhService, $config)
    {

        $this->config = $config;
        $this->exportRhService = $exportRhService;
    }

@@ -91,8 +92,6 @@ class ExportRhController extends AbstractController
        $nameConnecteur = '';
        $affectationEnCours = '';
        $contratEnCours = '';


        if (!$intervenant) {
            throw new \LogicException('Intervenant non précisé ou inexistant');
        }
@@ -202,6 +201,10 @@ class ExportRhController extends AbstractController
                    $this->exportRhService->cloreDossier($intervenant);
                    $this->flashMessenger()->addSuccessMessage('La prise en charge s\'est déroulée avec succés et le dossier a été cloturé');
                    $this->getServiceIntervenant()->updateExportDate($intervenant);
                    //On met à jour le code intervenant si l'option est activée
                    if ($this->exportRhService->haveToSyncCode()) {
                        $this->getServiceIntervenant()->updateCode($intervenant, $result);
                    }
                } else {
                    $this->flashMessenger()->addErrorMessage('Probleme prise en charge');
                }
@@ -218,6 +221,7 @@ class ExportRhController extends AbstractController
    public function renouvellementAction()
    {
        try {

            if ($this->getRequest()->isPost()) {
                $intervenant = $this->getEvent()->getParam('intervenant');
                if (!$intervenant) {
@@ -239,6 +243,10 @@ class ExportRhController extends AbstractController
                        $this->exportRhService->cloreDossier($intervenant);
                        $this->flashMessenger()->addSuccessMessage('Le renouvellement s\'est déroulé avec succés et le dossier a été cloturé');
                        $this->getServiceIntervenant()->updateExportDate($intervenant);
                        if ($this->exportRhService->haveToSyncCode()) {
                            $this->getServiceIntervenant()->updateCode($intervenant, $result);
                        }

                    } else {
                        $this->flashMessenger()->addErrorMessage('Un problème est survenu lors de la tentative de renouvellement de l\'intervenant');
                    }
+14 −23
Original line number Diff line number Diff line
@@ -34,7 +34,6 @@ class ExportRhService extends AbstractService
    protected $config;



    public function __construct($connecteur, $config)
    {
        $this->connecteur = $connecteur;
@@ -42,7 +41,6 @@ class ExportRhService extends AbstractService
    }



    public function getListIntervenantRh($nomUsuel, $prenom, $insee)
    {

@@ -62,7 +60,6 @@ class ExportRhService extends AbstractService
    }



    public function getIntervenantRh($intervenant)
    {
        $intervenantRh = $this->connecteur->recupererIntervenantRh($intervenant);
@@ -71,7 +68,6 @@ class ExportRhService extends AbstractService
    }



    public function getDonneesAdministrativeIntervenantRh($intervenant)
    {
        $donneesAdministratives = $this->connecteur->recupererDonneesAdministrativesIntervenantRh($intervenant);
@@ -80,7 +76,6 @@ class ExportRhService extends AbstractService
    }



    public function getAffectationEnCoursIntervenantRh($intervenant)
    {
        $affectation = $this->connecteur->recupererAffectationEnCoursIntervenantRh($intervenant);
@@ -90,7 +85,6 @@ class ExportRhService extends AbstractService
    }



    public function getContratEnCoursIntervenantRh($intervenant)
    {
        $contrat = $this->connecteur->recupererContratEnCoursIntervenantRh($intervenant);
@@ -99,98 +93,84 @@ class ExportRhService extends AbstractService
    }



    public function getListeUO()
    {
        return $this->connecteur->recupererListeUO();
    }



    public function getListePositions()
    {
        return $this->connecteur->recupererListePositions();
    }



    public function getListeEmplois()
    {
        return $this->connecteur->recupererListeEmplois();
    }



    public function getListeStatuts()
    {
        return $this->connecteur->recupererListeStatuts();
    }



    public function getListeModalites()
    {
        return $this->connecteur->recupererListeModalites();
    }



    public function getListContrats()
    {
        return $this->connecteur->recupererListeContrats();
    }



    public function priseEnChargeIntrervenantRh(Intervenant $intervenant, $datas)
    {
        return $this->connecteur->prendreEnChargeIntervenantRh($intervenant, $datas);
    }



    public function renouvellementIntervenantRh(Intervenant $intervenant, $datas)
    {
        return $this->connecteur->renouvellerIntervenantRH($intervenant, $datas);
    }



    public function synchroniserDonneesPersonnellesIntervenantRh(Intervenant $intervenant, $datas)
    {
        return $this->connecteur->synchroniserDonneesPersonnellesIntervenantRh($intervenant, $datas);
    }



    public function cloreDossier(Intervenant $intervenant)
    {
        return $this->connecteur->cloreDossier($intervenant);
    }



    public function getFieldsetConnecteur(): Fieldset
    {
        return $this->connecteur->recupererFormulairePriseEnCharge();
    }



    public function getConnecteurName(): string
    {
        return $this->connecteur->getConnecteurName();
    }



    public function getConnecteur()
    {
        return $this->connecteur;
    }



    public function getAnneeUniversitaireEnCours(): ?Annee
    {
        $annee = $this->getServiceParametres()->get('annee');
@@ -199,15 +179,26 @@ class ExportRhService extends AbstractService
    }



    public function getExcludeStatutOse(): array
    {
        $config = $this->config;
        if (array_key_exists('exclude-statut-ose', $config)) {
            return $config['exclude-statut-ose'];
        $configUnicaenSiham = $config['unicaen-siham'];
        if (array_key_exists('exclude-statut-ose', $configUnicaenSiham)) {
            return $configUnicaenSiham['exclude-statut-ose'];
        }

        return [];
    }

    public function haveToSyncCode(): bool
    {
        $config = $this->config;
        if ($config['export-rh']['sync-code'] === true) {
            return true;
        }

        return false;

    }

}
 No newline at end of file
Loading