Commit 77daf871 authored by Antony Le Courtes's avatar Antony Le Courtes
Browse files

Discipline adaptée venant directement de Octopus

parent 3f7a2fea
Loading
Loading
Loading
Loading
+29 −33
Changes for doc/Connecteurs Import/Octopus/MV_INTERVENANT.sql: 29 added lines, 33 removed lines.
Original line number Diff line number Diff line
@@ -57,6 +57,24 @@ MATERIALIZED VIEW MV_INTERVENANT AS
            JOIN octo.individu_unique@octoprod uni ON uni.c_individu_chaine = aff.individu_id
            WHERE aff.t_principale = 'O'
            AND aff.date_fin + 1 >= (SYSDATE - (365 * 2))
     ),
     --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,
@@ -97,20 +115,15 @@ SELECT DISTINCT
        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,
    cnua.code_cnu_arrange                                          z_discipline_idbis,
    /* 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 +136,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,
@@ -191,31 +206,12 @@ FROM i
    --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
    --On récupére la discipline adaptée directement dans Octopus
         LEFT JOIN cnua cnua ON cnua.individu_id = induni.c_individu_chaine

        (
           ',' || 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
WHERE i.validite_fin >= (SYSDATE - (365 * 2))
--AND indc.id IS NOT NULL --Filtre à activer si on ne veut pas remonter les comptes octopus non activés

--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