Commit 8eb603de authored by Antony Le Courtes's avatar Antony Le Courtes
Browse files

Ajout au module export RH (SIHAM) la possiblité de synchroniser le code...

Ajout au module export RH (SIHAM) la possiblité de synchroniser le code intervenant avec le matricule siham lors d'un renouvellement ou d'une prise en charge.
parent 089768ea
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