Commit f0a6caf5 authored by Laurent Lecluse's avatar Laurent Lecluse
Browse files

Merge branch 'master' of https://git.unicaen.fr/open-source/OSE

parents b1e145eb bee671e0
Loading
Loading
Loading
Loading
+49 −59
Changes for doc/Connecteurs Import/Octopus/MV_INTERVENANT.sql: 49 added lines, 59 removed lines.
Original line number Diff line number Diff line
@@ -9,7 +9,8 @@ MATERIALIZED VIEW MV_INTERVENANT AS
    FROM (
             --Step 1 : On prend tous les individus qui ont ou ont eu un contrat à l'université
             SELECT icto.individu_id                                            code,
                        CASE WHEN icto.code_ose = 'ENS_2ND_DEGRE' THEN 'ENS_2ND_DEG'
                    CASE
                        WHEN icto.code_ose = 'ENS_2ND_DEGRE' THEN 'ENS_2ND_DEG'
                        WHEN icto.code_ose IS NOT NULL THEN icto.code_ose
                        ELSE 'AUTRES' END                                       z_statut_id,
                    icto.id_orig                                                source_code,
@@ -35,9 +36,6 @@ MATERIALIZED VIEW MV_INTERVENANT AS
                 OR (inds.t_vacataire = 'O')
                 OR (inds.t_heberge = 'O'))
               AND inds.c_source IN ('HARP', 'OCTO', 'SIHAM')



         ) t
),

@@ -50,29 +48,55 @@ MATERIALIZED VIEW MV_INTERVENANT AS
     ),
     --Trouver la structure d'affectation principale de l'intervenant
     structure_principale_individu AS (
         SELECT DISTINCT
            uni.c_individu_chaine,
         SELECT DISTINCT uni.c_individu_chaine,
                         FIRST_VALUE(aff.structure_id) OVER (PARTITION BY uni.c_individu_chaine ORDER BY aff.date_fin DESC)  z_structure_id
         FROM octo.individu_affectation@octoprod aff
                  JOIN octo.individu_unique@octoprod uni ON uni.c_individu_chaine = aff.individu_id
         WHERE aff.t_principale = 'O'
           --AND aff.type_id = 4--Uniquement les affectations d'enseignement
           AND aff.date_fin + 1 >= (SYSDATE - (365 * 2))
     ),
     --Autre façon de trouver les structures d'affectation d'enseignement
     structure_aff_enseigne AS
         (
             -- On prend en priorite l'affectation principale
             -- Si plusieurs, alors c'est celle qui commence le + tard qui est prise en comtpe
             SELECT individu_id,
                    max(structure_id) KEEP (DENSE_RANK  LAST ORDER BY t_principale, date_debut)   structure_id
             FROM octo.individu_affectation@octoprod
             WHERE type_id = 4
               AND date_fin + 1 >= (SYSDATE - (365 * 2))
             GROUP BY individu_id
         ),
     --CNU arrangé
     cnua AS (
         SELECT gra.individu_id                   individu_id,
                nvl(carr.c_cnu, darr.c_cnu)       code_cnu_arrange,
                nvl(carr.lib_long, darr.lib_long) libelle_cnu_arrange,
                nvl(carr.groupe, darr.groupe)     groupe_cnu_arrange
         FROM octo.individu_grade@octoprod gra
                  LEFT JOIN octo.cnu_spec_cnu_adapte@octoprod ccarr ON (gra.cnu_id = ccarr.cnu_id AND
                                                                        (gra.cnu_specialite_id is null OR
                                                                         gra.cnu_specialite_id = ccarr.cnu_specialite_id))
                  LEFT JOIN octo.cnu_adapte@octoprod carr ON (ccarr.cnu_adapte_id = carr.id)
                  LEFT JOIN octo.discipline_cnu_adapte@octoprod dcarr ON (gra.discipline_sec_id = dcarr.discipline_sec_id)
                  LEFT JOIN octo.cnu_adapte@octoprod darr ON (dcarr.cnu_adapte_id = darr.id)
         WHERE sysdate BETWEEN gra.d_debut AND nvl(gra.d_fin, sysdate)
           AND (gra.cnu_id is not null OR gra.discipline_sec_id is not null)
     ),
    /*Individu unique pour avoir qu'un seul individu unique dans l'ordre c_source SIHAM, HARP, APO
    Car individu unique peut avoir plusieurs entrée (Harpége et Apogé par exemple) dans la table individu_unique,
    ce qui fait des doublons en sortie dans la vue. On restreint donc à un seul individu unique avec en priorité celui de SIHAM
    pui HARPEGE puis APOGEE en dernier lieu*/
     induni AS
         (
	   SELECT DISTINCT
   			FIRST_VALUE(c_individu_chaine) OVER (PARTITION BY c_individu_chaine ORDER BY ordre_source) c_individu_chaine,
			FIRST_VALUE(c_source) OVER (PARTITION BY c_individu_chaine ORDER BY ordre_source) c_source,
			FIRST_VALUE(c_src_individu) OVER (PARTITION BY c_individu_chaine ORDER BY ordre_source) c_src_individu FROM (
				SELECT DISTINCT
			   		u.c_individu_chaine,
             SELECT DISTINCT FIRST_VALUE(c_individu_chaine) OVER (PARTITION BY c_individu_chaine ORDER BY ordre_source) c_individu_chaine, FIRST_VALUE(c_source) OVER (PARTITION BY c_individu_chaine ORDER BY ordre_source) c_source, FIRST_VALUE(c_src_individu) OVER (PARTITION BY c_individu_chaine ORDER BY ordre_source) c_src_individu
             FROM (
                      SELECT DISTINCT u.c_individu_chaine,
                                      u.c_source,
                                      u.c_src_individu,
			   		CASE WHEN u.c_source = 'SIHAM' THEN 1
                                      CASE
                                          WHEN u.c_source = 'SIHAM' THEN 1
                                          WHEN u.c_source = 'HARP' THEN 2
                                          WHEN u.c_source = 'OCTO' THEN 3
                                          WHEN u.c_source = 'APO' THEN 4
@@ -91,26 +115,17 @@ SELECT DISTINCT
        ELSE NULL END                                              code_rh,
    indc.ldap_uid                                                  utilisateur_code,
    str.code                                                       z_structure_id,
    /*CASE
        WHEN str2.code <> str.code THEN str2.code
        ELSE NULL
        END                                                      z_structure_id_n2,*/
    i.z_statut_id                                                  z_statut_id,
    grade.c_grade                                                  z_grade_id,
    /* Données nécessaires pour calculer la discipline */
    d.source_code                                                        z_discipline_id,
    --    cnu.c_cnu                                                            z_discipline_id_cnu,
    --  CAST(NULL AS varchar2(255))                                          z_discipline_id_sous_cnu,
    -- cnus.c_cnu_specialite                                                z_discipline_id_spe_cnu,
    --dissec.c_discipline                                                  z_discipline_id_dis2deg,
    COALESCE(cnua.code_cnu_arrange, '00')                          z_discipline_id,
    /* Données identifiantes de base */
    CASE ind.sexe
        WHEN 'M' THEN 'M.'
        ELSE 'Mme'
        END                                                        z_civilite_id,
    initcap(ind.nom_usage)                                               nom_usuel,
    COALESCE(initcap(ind.nom_usage), initcap(ind.nom_famille))     nom_usuel,
    initcap(ind.prenom)                                            prenom,
    ind.d_naissance                                                      date_naissance,
    COALESCE(ind.d_naissance, to_date('01/01/1900', 'dd/mm/YYYY')) date_naissance,
    /* Données identifiantes complémentaires */
    initcap(ind.nom_famille)                                       nom_patronymique,
    ind.ville_de_naissance                                         commune_naissance,
@@ -123,11 +138,13 @@ SELECT DISTINCT
    ind.email_perso                                                email_perso,
    /* Adresse */
    trim(adr.adresse1 ||
        CASE WHEN adr.adresse1 IS NOT NULL
         CASE
             WHEN adr.adresse1 IS NOT NULL
                 AND adr.adresse2 IS NOT NULL
                 THEN CHR(13)
             ELSE '' END || adr.adresse2 ||
        CASE WHEN adr.adresse2 IS NOT NULL
         CASE
             WHEN adr.adresse2 IS NOT NULL
                 AND adr.adresse3 IS NOT NULL
                 THEN CHR(13)
             ELSE '' END || adr.adresse3)                          adresse_precisions,
@@ -169,7 +186,9 @@ FROM i
              ON i.code = induni.c_individu_chaine --AND induni.c_source IN ('HARP', 'OCTO', 'SIHAM'))
         LEFT JOIN octo.individu@octoprod ind ON ind.c_individu_chaine = induni.c_individu_chaine
    --On récupére la structure principale de l'individu
         LEFT JOIN structure_principale_individu spi ON spi.c_individu_chaine = induni.c_individu_chaine
         LEFT JOIN structure_aff_enseigne sae ON sae.individu_id = induni.c_individu_chaine
    --On récupére le code de la structure d'affectation principal de l'individu
         LEFT JOIN v_structure@octoprod str ON str.id = sae.structure_id
    --On récupére le grade de l'individu
         LEFT JOIN octo.individu_grade@octoprod indg ON induni.c_individu_chaine = indg.individu_id
    AND COALESCE(indg.d_fin, to_date('01/01/9999', 'dd/mm/YYYY')) > SYSDATE
@@ -188,35 +207,6 @@ FROM i
    -- On ne prend que les comptes qui ne sont pas étudiants
         LEFT JOIN octo.individu_compte@octoprod indc
                   ON indc.individu_id = induni.c_individu_chaine AND not regexp_like(ldap_uid, 'e[0-9]{8}')
    --On récupére le code de la structure d'affectation principal de l'individu
         LEFT JOIN v_structure@octoprod str ON str.id = spi.z_structure_id
         LEFT JOIN v_structure@octoprod str2 ON str.niv2_id = str2.id
         LEFT JOIN discipline d ON
          d.histo_destruction IS NULL
         AND 1 = CASE WHEN -- si rien n'a été défini
         COALESCE( cnu.c_cnu, cnus.c_cnu_specialite, dissec.c_discipline ) IS NULL
         AND d.source_code = '00'

         THEN 1 WHEN -- si une CNU ou une spécialité a été définie...

         COALESCE( cnu.c_cnu, cnus.c_cnu_specialite ) IS NOT NULL

        THEN CASE WHEN -- alors on teste par les sections CNU et spécialités

        (
           ',' || d.CODES_CORRESP_2 || ',' LIKE '%,' || cnu.c_cnu || ',%'
        OR ',' || d.CODES_CORRESP_2 || ',' LIKE '%,' || cnu.c_cnu || '00,%'
        )
        AND ',' || NVL(d.CODES_CORRESP_3,'000') || ',' LIKE  '%,' || NVL(CASE WHEN d.CODES_CORRESP_3 IS NOT NULL THEN cnus.c_cnu_specialite ELSE NULL END,'000') || ',%'

       THEN 1 ELSE 0 END ELSE CASE WHEN -- sinon on teste par les disciplines du 2nd degré

         dissec.c_discipline IS NOT NULL
         AND ',' || NVL(d.CODES_CORRESP_4,'') || ',' LIKE  '%,' || dissec.c_discipline || ',%'

       THEN 1 ELSE 0 END END -- fin du test
    --On récupére la discipline adaptée directement dans Octopus
         LEFT JOIN cnua cnua ON cnua.individu_id = induni.c_individu_chaine
WHERE i.validite_fin >= (SYSDATE - (365 * 2))
 No newline at end of file
--AND induni.c_individu_chaine = 4251-- Filtre avec code octopus
--AND ind.nom_famille = 'DURANDY'
--AND induni.c_src_individu = 45053-- Filtre avec code harpege
--ORDER BY i.code ASC
 No newline at end of file
+2 −1
Changes for module/Application/src/Application/View/Helper/Intervenant/IntervenantViewHelper.php: 2 added lines, 1 removed line.
Original line number Diff line number Diff line
@@ -72,7 +72,8 @@ class IntervenantViewHelper extends AbstractHtmlElement
            'metier'      => [
                "Type d'intervenant"        => $entity->getStatut()->getTypeIntervenant(),
                "Statut de l'intervenant"   => $entity->getStatut(),
                "N° RH"                   => (($entity->getCodeRh()) ? $entity->getCodeRh() : $entity->getCode()) . (($entity->getSource()->getLibelle() == 'Octopus') ? " <i>(N° Octopus " . $entity->getCode() . ")</i>" : ''),
                "N° {$entity->getSource()}" => $entity->getCode(),
                "N° RH"                     => ($entity->getCodeRh()) ? $entity->getCodeRh() : '<span class="inconnu">(Inconnue)</span>',
                "Affectation principale"    => $entity->getStructure() ?: '<span class="inconnu">(Inconnue)</span>',
            ],
            'divers'      => [