From c22b6b325df7416f7ba518be2d28bb5c18689450 Mon Sep 17 00:00:00 2001 From: pwer21c <pwer21c@gmail.com> Date: Tue, 23 Mar 2021 14:02:14 +0100 Subject: [PATCH] =?UTF-8?q?mise=20=C3=A0=20jour=20par=20UP8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Mangue/MV_INTERVENANT.sql | 589 +++++++++++------- 1 file changed, 373 insertions(+), 216 deletions(-) diff --git a/doc/Connecteurs-Import/Mangue/MV_INTERVENANT.sql b/doc/Connecteurs-Import/Mangue/MV_INTERVENANT.sql index f8fda63989..72fe28c374 100644 --- a/doc/Connecteurs-Import/Mangue/MV_INTERVENANT.sql +++ b/doc/Connecteurs-Import/Mangue/MV_INTERVENANT.sql @@ -1,270 +1,427 @@ - CREATE MATERIALIZED VIEW MV_INTERVENANT AS - WITH -i AS ( -SELECT DISTINCT +CREATE MATERIALIZED VIEW MV_INTERVENANT AS +WITH +i AS ( + SELECT -- permet de fusionner les données pour ne conserver qu'une des tuples (code,statut) sans doublons code, - z_statut_id, - FIRST_VALUE(z_discipline_id_cnu) OVER (partition by code, z_statut_id order by validite_fin desc) z_discipline_id_cnu, - FIRST_VALUE(z_discipline_id_sous_cnu) OVER (partition by code, z_statut_id order by validite_fin desc) z_discipline_id_sous_cnu, - FIRST_VALUE(z_discipline_id_spe_cnu) OVER (partition by code, z_statut_id order by validite_fin desc) z_discipline_id_spe_cnu, - FIRST_VALUE(z_discipline_id_dis2deg) OVER (partition by code, z_statut_id order by validite_fin desc) z_discipline_id_dis2deg, - MIN(source_code) OVER (partition by code, z_statut_id) source_code, - MIN(validite_debut) OVER (partition by code, z_statut_id) validite_debut, - MAX(validite_fin) OVER (partition by code, z_statut_id) validite_fin + statut, + MAX(z_discipline_id_cnu) z_discipline_id_cnu, + MAX(z_discipline_id_sous_cnu) z_discipline_id_sous_cnu, + MAX(z_discipline_id_spe_cnu) z_discipline_id_spe_cnu, + MAX(z_discipline_id_dis2deg) z_discipline_id_dis2deg, + MAX(date_fin) date_fin FROM -( -- les CONTRACTUELS + ( + SELECT + i.*, -- permet de ne sélectionner que les données (contrats, etc) se terminant le plus tard possible ou bien sans date de fin + CASE WHEN COUNT(*) OVER (PARTITION BY code,statut) > 1 THEN + CASE WHEN COALESCE(date_fin,SYSDATE) = MAX(COALESCE(date_fin,SYSDATE)) OVER (PARTITION BY code,statut) THEN 1 ELSE 0 END + ELSE 1 END ok2, + COUNT(*) OVER (PARTITION BY code,statut,date_fin) dc + FROM + ( SELECT + i.*, + CASE -- permet de supprimer les données obsolètes ou futures s'il y en a des actuelles (contrat en cours, etc) + WHEN + COUNT(*) OVER (PARTITION BY i.code) > 1 + AND MAX(i.actuel) OVER (PARTITION BY i.code) = 1 + AND i.actuel = 0 + THEN 0 ELSE 1 END ok + FROM + ( +-- les CONTRACTUELS + SELECT ct.no_dossier_pers code, CASE -- lien entre le contrat de travail Mangue et le statut d'intervenant OSE WHEN ct.c_type_contrat_trav IN ('MC','MA') THEN 'ASS_MI_TPS' WHEN ct.c_type_contrat_trav IN ('C3030','C3031','C3032','C3033','C3034','C3035','C3036') THEN 'ATER' WHEN ct.c_type_contrat_trav IN ('C3037','C3038','C3039','C3040','C3041','C3042','C3043') THEN 'ATER_MI_TPS' - WHEN (ct.c_type_contrat_trav IN ('CN322') and cav.c_grade = '6904') THEN 'DOCTOR' - WHEN (ct.c_type_contrat_trav IN ('CN322','COMDOC') and cav.c_grade = '6902') THEN 'NON_AUTORISE' - WHEN ct.c_type_contrat_trav IN ('DO','C0322','CN109','COMDOC') THEN 'DOCTOR' - WHEN (ct.c_type_contrat_trav IN ('C3094','CDI02') and cav.num_quot_recrutement=100) THEN 'ENS_CONTRACT' - WHEN (ct.c_type_contrat_trav IN ('C3094','CDI02') and cav.num_quot_recrutement<100) THEN 'ENS_CONTRACT_50' + WHEN ct.c_type_contrat_trav IN ('DO','CN322','C0322','CN109','COMDOC') THEN 'DOCTOR' + WHEN ct.c_type_contrat_trav IN ('CDI02') THEN 'ENS_CONTRACT' + -- P8 + WHEN (ct.c_type_contrat_trav IN ('C3094','PN') and cav.num_quot_recrutement=100) THEN 'ENS_CONTRACT' + WHEN (ct.c_type_contrat_trav IN ('C3094','PN') and cav.num_quot_recrutement<100) THEN 'ENS_CONTRACT_50' WHEN ct.c_type_contrat_trav IN ('LT','LB','C2046') THEN 'LECTEUR' WHEN ct.c_type_contrat_trav IN ('MB','MP','C2043') THEN 'MAITRE_LANG' - WHEN ct.c_type_contrat_trav IN ('CDI01','C3066','C3097','C6') THEN 'BIATSS' - WHEN (ct.c_type_contrat_trav like 'COMU%' or ct.c_type_contrat_trav IN ('CA','COMCDI','C0701')) THEN 'NON_AUTORISE' - ELSE 'BIATSS' - END z_statut_id, - cnu.c_section_cnu z_discipline_id_cnu, -- cnu = grhum.CNU@dbl_grhum + WHEN ct.c_type_contrat_trav IN ('CDI01','C3066','C3097','C6') THEN 'BIATSS' + -- WHEN (ct.c_type_contrat_trav like 'COMU%' or ct.c_type_contrat_trav IN ('COMCDI','C0701')) THEN 'NON_AUTORISE' + -- à faire confirmer par Véronique pour le C0104 en BIATSS ou NON AUTORISE + WHEN (ct.c_type_contrat_trav like 'COMU%' or ct.c_type_contrat_trav IN ('CA','COMCDI','C0701')) THEN 'NON_AUTORISE' + --ELSE 'AUTRES' (vu avec IL le 31/10/2018) + ELSE 'BIATSS' + END statut, + cnu.c_section_cnu z_discipline_id_cnu, case when cnu.c_sous_section_cnu like '00' then null else cnu.c_sous_section_cnu end z_discipline_id_sous_cnu, - null as z_discipline_id_spe_cnu, - CAV.c_disc_second_degre z_discipline_id_dis2deg, - ct.no_dossier_pers || '-c-' || CAV.no_SEQ_CONTRAT source_code, - COALESCE(CAV.d_deb_contrat_av,to_date('01/01/1900', 'dd/mm/YYYY')) validite_debut, - COALESCE(CAV.d_fin_contrat_av,to_date('01/01/9999', 'dd/mm/YYYY')) validite_fin - FROM - mangue.contrat_avenant@dbl_grhum CAV - JOIN mangue.contrat@dbl_grhum ct ON ct.NO_SEQ_CONTRAT = CAV.NO_SEQ_CONTRAT - JOIN mangue.ULHN_V_DERNIER_CONTRAT@dbl_grhum vd -- Vu ULHN pour n'avoir que le dernier contrat - ON vd.no_seq_contrat = cav.no_seq_contrat AND vd.no_individu = ct.no_dossier_pers - LEFT JOIN grhum.CNU@dbl_grhum cnu ON CAV.no_cnu = cnu.no_cnu - WHERE CAV.d_deb_contrat_av-184 <= SYSDATE - AND CAV.TEM_ANNULATION <> 'O' -UNION ALL --- les TITULAIRES - SELECT - a.no_dossier_pers code, + --cnu.c_sous_section_cnu z_discipline_id_sous_cnu, + null as z_discipline_id_spe_cnu, + CAV.c_disc_second_degre z_discipline_id_dis2deg, + CAV.d_fin_contrat_av date_fin, + CASE WHEN + SYSDATE BETWEEN CAV.d_deb_contrat_av-1 AND COALESCE(CAV.d_fin_contrat_av,SYSDATE)+1 + THEN 1 ELSE 0 END actuel + FROM + mangue.contrat_avenant@COCKTAIL CAV + JOIN mangue.contrat@COCKTAIL ct ON ct.NO_SEQ_CONTRAT = CAV.NO_SEQ_CONTRAT + -- + JOIN mangue.affectation@COCKTAIL a ON a.no_dossier_pers = ct.no_dossier_pers + --ct.no_dossier_pers = CAV.no_dossier_pers AND ct.no_contrat_travail = CAV.no_contrat_travail + LEFT JOIN grhum.CNU@COCKTAIL cnu ON CAV.no_cnu = cnu.no_cnu + WHERE -- on sélectionne les données même 6 mois avant et 6 mois après + -- SYSDATE BETWEEN CAV.d_deb_contrat_av-184 AND COALESCE(CAV.d_fin_contrat_av,SYSDATE)+184 + SYSDATE BETWEEN CAV.d_deb_contrat_av-184 AND COALESCE(CAV.d_fin_contrat_av+184,SYSDATE) + -- !!!! seulement si on ne veut que les avenants en cours (contradictoire avec ci-dessus) + AND CAV.D_DEB_CONTRAT_AV <= SYSDATE + AND ( CAV.D_FIN_CONTRAT_AV IS NULL + --Benouah le 11/07/2019 + -- on ajoute 6 mois apres la fin du contrat + --OR CAV.D_FIN_CONTRAT_AV + 1 >= SYSDATE) + OR CAV.D_FIN_CONTRAT_AV + 545 >= SYSDATE) + -- !!!! + AND CAV.TEM_ANNULATION <> 'O' +-- on ne tient compte que de l'affectation PRINCIPALE en cours + AND ((((A.d_fin_affectation is null) AND (A.d_deb_affectation<=to_date(to_char(sysdate,'dd/mm/yyyy'),'dd/mm/yyyy')) + AND (A.tem_valide='O')) + OR + ((A.d_deb_affectation<=to_date(to_char(sysdate,'dd/mm/yyyy'),'dd/mm/yyyy')) + --Benouah le 11/07/2019 + -- on ajoute 6 mois apres la fin du contrat + --AND (A.d_fin_affectation>=to_date(to_char(sysdate,'dd/mm/yyyy'),'dd/mm/yyyy')) + AND (A.d_fin_affectation+545>=to_date(to_char(sysdate,'dd/mm/yyyy'),'dd/mm/yyyy')) + AND (A.tem_valide='O')) + ) + AND A.tem_principale = 'O' + ) +UNION +-- les TITULAIRES = OK pas de doublons à ce niveau OK + SELECT + a.no_dossier_pers code, CASE -- lien entre le type de population MANGUE et le statut d'intervenant OSE WHEN CA.c_type_population IN ('DA','OA','DC') THEN 'ENS_2ND_DEG' WHEN CA.c_type_population IN ('SA') THEN 'ENS_CH' - WHEN CA.c_type_population IN ('AE','BA','IA','MA') THEN 'BIATSS' - --ELSE 'AUTRES' -- Choix RH ULHN - ELSE 'BIATSS' - END z_statut_id, - cnu.c_section_cnu z_discipline_id_cnu, - case when cnu.c_sous_section_cnu like '00' then null else cnu.c_sous_section_cnu end z_discipline_id_sous_cnu, - null as z_discipline_id_spe_cnu, - psc.c_disc_sd_degre z_discipline_id_dis2deg, - a.no_dossier_pers || '-a-' || a.no_seq_affectation source_code, - COALESCE(a.d_deb_affectation,to_date('01/01/1900', 'dd/mm/YYYY')) validite_debut, - COALESCE(a.d_fin_affectation,to_date('01/01/9999', 'dd/mm/YYYY')) validite_fin - FROM - mangue.affectation@dbl_grhum a - JOIN grhum.individu_ulr@dbl_grhum individu ON individu.no_individu=a.no_dossier_pers - LEFT JOIN mangue.carriere@dbl_grhum CA ON CA.no_dossier_pers = a.no_dossier_pers - LEFT JOIN mangue.carriere_specialisations@dbl_grhum psc ON psc.no_dossier_pers = a.no_dossier_pers + WHEN CA.c_type_population IN ('AE','BA','IA','MA') THEN 'BIATSS' + --ELSE 'AUTRES' (vu avec IL le 31/10/2018) + ELSE 'BIATSS' + END statut, + cnu.c_section_cnu z_discipline_id_cnu, + case when cnu.c_sous_section_cnu like '00' then null else cnu.c_sous_section_cnu end z_discipline_id_sous_cnu, + --cnu.c_sous_section_cnu z_discipline_id_sous_cnu, + null as z_discipline_id_spe_cnu, + psc.c_disc_sd_degre z_discipline_id_dis2deg, + a.d_fin_affectation date_fin, + CASE WHEN + SYSDATE BETWEEN a.d_deb_affectation-1 AND COALESCE(a.d_fin_affectation,SYSDATE)+1 + THEN 1 ELSE 0 END actuel + FROM + MANGUE.affectation@COCKTAIL a + LEFT + JOIN MANGUE.carriere@COCKTAIL CA ON CA.no_dossier_pers = a.no_dossier_pers --AND CA.no_seq_carriere = a.no_seq_carriere (190 individus dont le CA.no_seq_carriere est différent du a.no_seq_carriere !!!) + LEFT JOIN MANGUE.carriere_specialisations@COCKTAIL psc ON psc.no_dossier_pers = a.no_dossier_pers + --AND psc.no_seq_carriere = a.no_seq_carriere AND COALESCE(a.d_fin_affectation,SYSDATE) BETWEEN COALESCE(psc.spec_debut,SYSDATE) AND COALESCE(psc.spec_fin,SYSDATE) - LEFT JOIN grhum.CNU@dbl_grhum cnu ON psc.no_cnu = cnu.no_cnu - -- //////////////// tout ça pke no_seq_carriere pas (ou mal) renseigné dans affectation : - INNER JOIN mangue.element_CARRIERE@dbl_grhum EC ON EC.NO_DOSSIER_PERS = a.no_dossier_pers - INNER JOIN +-- + LEFT JOIN grhum.CNU@COCKTAIL cnu ON psc.no_cnu = cnu.no_cnu + -- //////////////// tout ça pke no_seq_carriere pas (ou mal) renseigné dans affectation + INNER JOIN mangue.element_CARRIERE@COCKTAIL EC + ON EC.NO_DOSSIER_PERS = a.no_dossier_pers + inner join ( - select no_dossier_pers, max(d_effet_element) as maxeffet from mangue.element_CARRIERE@dbl_grhum + select no_dossier_pers, max(d_effet_element) as maxeffet from MANGUE.element_CARRIERE@COCKTAIL WHERE ((d_fin_element IS NULL) OR (d_fin_element >= TO_DATE(TO_CHAR(sysdate,'DD/MM/YYYY'),'DD/MM/YYYY'))) AND d_effet_element <= TO_DATE(TO_CHAR(sysdate,'DD/MM/YYYY'),'DD/MM/YYYY') AND tem_valide = 'O' group by NO_DOSSIER_PERS ) ec2 on ec.no_dossier_pers = ec2.no_dossier_pers and ec.d_effet_element=ec2.maxeffet - AND EC.TEM_PROVISOIRE='N' - AND EC.TEM_VALIDE='O' + AND EC.TEM_PROVISOIRE='N' + AND EC.TEM_VALIDE='O' AND CA.NO_SEQ_CARRIERE = EC.NO_SEQ_CARRIERE - AND CA.D_DEB_CARRIERE <= SYSDATE - AND ( CA.D_FIN_CARRIERE IS NULL - OR CA.D_FIN_CARRIERE + 1 >= SYSDATE) - AND ca.tem_valide = 'O' + AND CA.D_DEB_CARRIERE <= SYSDATE + AND ( CA.D_FIN_CARRIERE IS NULL + OR CA.D_FIN_CARRIERE + 1 >= SYSDATE) + AND ca.tem_valide = 'O' -- on ne tient compte que de l'affectation PRINCIPALE en cours AND ((((A.d_fin_affectation is null) AND (A.d_deb_affectation<=to_date(to_char(sysdate,'dd/mm/yyyy'),'dd/mm/yyyy')) - AND (A.tem_valide='O')) + AND (A.tem_valide='O')) OR ((A.d_deb_affectation<=to_date(to_char(sysdate,'dd/mm/yyyy'),'dd/mm/yyyy')) - AND (A.d_fin_affectation>=to_date(to_char(sysdate,'dd/mm/yyyy'),'dd/mm/yyyy')) - AND (A.tem_valide='O')) + AND (A.d_fin_affectation>=to_date(to_char(sysdate,'dd/mm/yyyy'),'dd/mm/yyyy')) + AND (A.tem_valide='O')) ) AND A.tem_principale = 'O' ) -- \\\\\\\\\\\\\\\\\\\\\ - WHERE a.d_deb_affectation-184 <= SYSDATE - UNION ALL + WHERE -- on sélectionne les données même 6 mois avant et 6 mois après + SYSDATE BETWEEN a.d_deb_affectation-184 AND COALESCE(a.d_fin_affectation,SYSDATE)+184 + + UNION -- ========================== -- les HEBERGES en MAD entrante SELECT distinct cth.no_dossier_pers code, - 'conv_mad' as z_statut_id, - '00' z_discipline_id_cnu, - null as z_discipline_id_sous_cnu, - null as z_discipline_id_spe_cnu, - null as z_discipline_id_dis2deg, - --ch.no_individu || '-h-' || ch.no_seq_chercheur source_code, Caen-Harpege - cth.no_dossier_pers || '-h-' || cth.no_SEQ_AFFECTATION source_code, --=> no_seq est null dans mangue !!! - COALESCE(CTH.D_DEB_CONTRAT_INV,to_date('01/01/1900', 'dd/mm/YYYY')) validite_debut, - COALESCE(CTH.D_FIN_CONTRAT_INV,to_date('01/01/9999', 'dd/mm/YYYY')) validite_fin - FROM mangue.CONTRAT_HEBERGES@dbl_grhum CTH - WHERE CTH.c_type_contrat_trav like 'CN112' -- contrat MAD entrante - AND cth.tem_valide = 'O' - AND CTH.D_DEB_CONTRAT_INV-184 <= SYSDATE - UNION ALL + 'conv_mad' as statut, + '00' z_discipline_id_cnu, + null as z_discipline_id_sous_cnu, + null as z_discipline_id_spe_cnu, + null as z_discipline_id_dis2deg, + CTH.D_FIN_CONTRAT_INV date_fin, + CASE WHEN + SYSDATE BETWEEN CTH.D_DEB_CONTRAT_INV-1 AND COALESCE(CTH.D_FIN_CONTRAT_INV,SYSDATE)+160 + THEN 1 ELSE 0 END actuel + FROM mangue.CONTRAT_HEBERGES@COCKTAIL CTH + where cth.tem_valide = 'O' + --AND (to_date(CTH.D_FIN_CONTRAT_INV)+1 > SYSDATE OR cth.d_fin_contrat_inv IS NULL) + UNION -- =================== --- les VACATAIRES + -- les VACATAIRES -================== SELECT - vac.NO_DOSSIER_PERS code, - CASE -- lien entre la "profession" du vacataire et le statut d'intervenant OSE - WHEN prof.pro_libelle IN ('TITU DE LA FCTION PUBL') THEN 'SALAR_PUBLIC' - WHEN prof.pro_libelle IN ('AGT NON TITU DE LA FCTION PUBL') THEN 'SALAR_PUBLIC_CONT' - WHEN prof.pro_libelle IN ('ACTIVITE SECT PRIVE') THEN 'SALAR_PRIVE' - WHEN prof.pro_libelle IN ('ENSEIG DS ETABL PRIVE') THEN 'SALAR_PUBLIC_PRIV' - WHEN prof.pro_libelle IN ('ACTIV NON SALARIE') THEN 'AUTO_LIBER_INDEP' - WHEN prof.pro_libelle IN ('ETUDIANT 3EME CYCLE') THEN 'SS_ETUD' - WHEN prof.pro_libelle IN ('RETRAITE') THEN 'RETRAITE' - WHEN prof.pro_libelle IN ('BENEVOLE') THEN 'BENEVOLE' - --WHEN prof.pro_libelle IN ('INTERMITTENT DU SPECTACLE') then 'INTERMITTENT_SPECT' correction ULHN 18022021 - WHEN prof.pro_libelle IN ('PROFESSIONNELS DU SPECTACLE') THEN 'PROF_SPECT' - WHEN prof.pro_libelle IN ('AUTEURS, INTERPRETES') THEN 'AUT_INTER' -- ULHN - WHEN prof.pro_libelle IN ('CONFERENCIERS') THEN 'CONFERENCIER' -- ULHN - WHEN prof.pro_libelle IN ('DIRECTION D''ENTREPRISE') THEN 'DIRIGEANT_ENT' - WHEN prof.pro_libelle IN ('RESIDENT ETRANGER') THEN 'SALAR_ETRANGER' + vac.NO_DOSSIER_PERS code, + --'AUTRES' statut, -- pas de statut de défini ici + CASE -- lien entre la "profession" du vacataire et le statut d'intervenant OSE + WHEN prof.pro_libelle IN ('TITU DE LA FCTION PUBL') THEN 'SALAR_PUBLIC' + WHEN prof.pro_libelle IN ('AGT NON TITU DE LA FCTION PUBL') THEN 'SALAR_PUBLIC_CONT' + WHEN prof.pro_libelle IN ('ACTIVITE SECT PRIVE') THEN 'SALAR_PRIVE' + WHEN prof.pro_libelle IN ('ENSEIG DS ETABL PRIVE') THEN 'SALAR_PUBLIC_PRIV' + WHEN prof.pro_libelle IN ('ACTIV NON SALARIE') THEN 'AUTO_LIBER_INDEP' + WHEN prof.pro_libelle IN ('ETUDIANT 3EME CYCLE') then 'SS_ETUD' + WHEN prof.pro_libelle IN ('RETRAITE') then 'RETRAITE' + WHEN prof.pro_libelle IN ('BENEVOLE') then 'BENEVOLE' + WHEN prof.pro_libelle IN ('INTERMITTENT DU SPECTACLE') then 'INTERMITTENT_SPECT' + WHEN prof.pro_libelle IN ('DIRECTION D''ENTREPRISE') then 'DIRIGEANT_ENT' + WHEN prof.pro_libelle IN ('RESIDENT ETRANGER') then 'SALAR_ETRANGER' + WHEN prof.pro_libelle IN ('TRAVAILLEUR INDEPENDANT') then 'TRAV_INDE' ELSE 'AUTRES' - END z_statut_id, --statut_id_contrat_trav, - -- ajout 20190129 : vacataires sans CNU - nvl(cnu.c_section_cnu,'00') z_discipline_id_cnu, - case when cnu.c_sous_section_cnu like '00' then null else cnu.c_sous_section_cnu end z_discipline_id_sous_cnu, - '00' as z_discipline_id_spe_cnu, - '000' as z_discipline_id_dis2deg, - vac.no_dossier_pers || '-v-' || vac.vac_id source_code, - COALESCE(vac.D_DEB_VACATION,to_date('01/01/1900', 'dd/mm/YYYY')) validite_debut, - COALESCE(vac.D_FIN_VACATION,to_date('01/01/9999', 'dd/mm/YYYY')) validite_fin + END + statut, + cnu.c_section_cnu z_discipline_id_cnu, + case when cnu.c_sous_section_cnu like '00' then null else cnu.c_sous_section_cnu end z_discipline_id_sous_cnu, + '00' as z_discipline_id_spe_cnu, + '000' as z_discipline_id_dis2deg, + vac.D_FIN_VACATION date_fin, + CASE WHEN + --SYSDATE BETWEEN vac.D_DEB_VACATION AND vac.D_FIN_VACATION + --benouah le 15/07/2019 + SYSDATE BETWEEN vac.D_DEB_VACATION AND vac.D_FIN_VACATION+545 + THEN 1 ELSE 0 END actuel FROM - MANGUE.VACATAIRES@dbl_grhum vac + MANGUE.VACATAIRES@COCKTAIL vac JOIN - GRHUM.INDIVIDU_ULR@dbl_grhum ind + GRHUM.INDIVIDU_ULR@COCKTAIL ind ON (ind.NO_INDIVIDU=vac.NO_DOSSIER_PERS) - LEFT JOIN grhum.CNU@dbl_grhum cnu ON vac.no_cnu = cnu.no_cnu - LEFT JOIN grhum.PROFESSION@dbl_grhum prof ON vac.pro_code = prof.PRO_CODE + LEFT JOIN grhum.CNU@COCKTAIL cnu ON vac.no_cnu = cnu.no_cnu + LEFT JOIN grhum.PROFESSION@COCKTAIL prof ON vac.pro_code = prof.PRO_CODE WHERE ind.IND_ACTIVITE='VACATAIRE' + -- ************** on ne prend que les vacataires en cours AND vac.tem_valide = 'O' - AND vac.D_DEB_VACATION-184 <= SYSDATE --- fin vacataires -)t -), -- ICI fermeture de la parenthèse WITH i AS --- ******************** POUR TOUS LES INTERVENANTS ******************* - --ATTENTION VU AVEC RH ULHN : on ne prend les infos IBAN QUE pour les vacataires + --benouah le 15/07/2019 + AND SYSDATE BETWEEN vac.D_DEB_VACATION AND vac.D_FIN_VACATION+545 + -- AND SYSDATE BETWEEN vac.D_DEB_VACATION AND vac.D_FIN_VACATION + -- ************** + ) i + ) i WHERE ok = 1 + )i WHERE ok2 = 1 GROUP BY code,statut +), comptes (no_individu, rank_compte, nombre_comptes, IBAN, BIC) AS ( SELECT no_dossier_pers, dense_rank() over(partition by no_dossier_pers order by d_creation) rank_compte, count(*) over(partition by no_dossier_pers) nombre_comptes, decode(ind_activite, 'VACATAIRE', IBAN, null) IBAN, decode(ind_activite, 'VACATAIRE', BIC, null) BIC - FROM GRHUM.V_ULH_INDIVIDU_BANQUE@dbl_grhum + FROM GRHUM.V_ULH_INDIVIDU_BANQUE@COCKTAIL ) - SELECT DISTINCT - /* Code de l'intervenant = numéro GRHUM */ + -- DEMANDE IL 15/10/2018 PAS INSEE NI ADRESSES POPULATION PERSONNELS ULH //// + -- tous les personnels hors vacataires et hébergés (puisque appel à table affectation) + -- NB. l'affectation des vacataires est indiquée dans la table VACATAIRES_AFFECTATION + -- NB. la structure d'affectation des hébergés est trouvée dans la table CONTRAT_HEBERGES + SELECT ltrim(TO_CHAR(individu.no_individu,'99999999')) code, - 'Mangue' z_source_id, - i.source_code source_code, - ltrim(TO_CHAR(individu.no_individu,'99999999')) utilisateur_code, -- supannEmpID - /* Code affiché reprenant le numéro d'individu - Caen 2021 */ - to_char(individu.no_individu) code_rh, - /* Code structure Harpège (il sera plus tard transformé par la vue source en ID de strucutre OSE) Caen 2021 */ - --sc.c_structure_n2 z_structure_id, - /* <=> */ - /* Code structure ULHN */ - uv_aff.struct_pere z_structure_id, - /* Code statut */ - i.z_statut_id z_statut_id, - /* Récupération du grade actuel - fonction ULHN */ - grhum.ulh_ind_grade_en_cours@dbl_grhum (individu.no_individu) z_grade_id, - /* Données nécessaires pour calculer la discipline - caen 2021 */ - d.source_code z_discipline_id, - /* Données identifiantes de base */ - CASE individu.c_civilite WHEN 'M.' THEN 'M.' ELSE 'Mme' END z_civilite_id, - initcap(individu.nom_usuel) nom_usuel, - initcap(individu.prenom) prenom, - individu.d_naissance date_naissance, - /* Données identifiantes complémentaires */ - initcap(individu.nom_patronymique) nom_patronymique, - individu.ville_de_naissance commune_naissance, - individu.c_pays_naissance z_pays_naissance_id, - individu.c_dept_naissance z_departement_naissance_id, - individu.c_pays_nationalite z_pays_nationalite_id, - /* Coordonnées : TEL pour etre sur d avoir un TEL_PRO on prend un des trois - ULHN */ - --tel_prf.no_telephone tel_pro, - COALESCE (tel_prf.no_telephone,tel_prv.no_telephone,tel_mob.no_telephone) tel_pro, - tel_prv.no_telephone tel_perso, - uldap.mail email_pro, - CAST(NULL AS varchar2(255)) email_perso, - /* Adresse ---revision pour nouv connecteur*/ - TRIM(UPPER(uv_ado.ADR_PRECISIONS)) adresse_precisions, - CAST(NULL AS varchar2(10)) adresse_numero, - CAST(NULL AS varchar2(10)) z_adresse_numero_compl_id, - CAST(NULL AS varchar2(10)) z_adresse_voirie_id, - CAST(NULL AS varchar2(10)) adresse_voie, - CAST(NULL AS varchar2(10)) adresse_lieu_dit, - uv_ado.CODE_POSTAL adresse_code_postal, - TRIM(uv_ado.ADRESSE_COMMUNE) adresse_commune, - uv_ado.PAYS z_adresse_pays_id, - /* INSEE */ - TRIM(code_insee.no_insee) || TRIM(TO_CHAR(code_insee.cle_insee)) numero_insee, - CASE WHEN code_insee.no_insee IS NULL THEN NULL ELSE 0 END numero_insee_provisoire, - /* Banque */ - comptes.iban iban, - comptes.bic bic, - 0 rib_hors_sepa, - /* Données complémentaires */ - CAST(NULL AS varchar2(255)) autre_1, - CAST(NULL AS varchar2(255)) autre_2, - CAST(NULL AS varchar2(255)) autre_3, - CAST(NULL AS varchar2(255)) autre_4, - CAST(NULL AS varchar2(255)) autre_5, - /* Employeur */ - CAST(NULL AS varchar2(255)) z_employeur_id, - /* DATES VALIDITE */ - CASE WHEN i.validite_debut = to_date('01/01/1900', 'dd/mm/YYYY') THEN NULL ELSE i.validite_debut END validite_debut, - CASE WHEN i.validite_fin = to_date('01/01/9999', 'dd/mm/YYYY') THEN NULL ELSE i.validite_fin END validite_fin + CASE individu.c_civilite WHEN 'M.' THEN 'M.' ELSE 'Mme' END z_civilite_id, + initcap(individu.nom_usuel) nom_usuel, + initcap(individu.prenom) prenom, + initcap(individu.nom_patronymique) nom_patronymique, + individu.d_naissance date_naissance, + individu.c_pays_naissance z_pays_naissance_id, + + individu.c_dept_naissance z_dep_naissance_id, + 'ZZZZ' as ville_naissance_code_insee, + individu.ville_de_naissance ville_naissance_libelle, + individu.c_pays_nationalite z_pays_nationalite_id, + tel_prf.no_telephone tel_pro, + --tel_prv.no_telephone tel_mobile, + '000' as tel_mobile, + + -- //// + /* null as z_dep_naissance_id, + null as ville_naissance_code_insee, + null as ville_naissance_libelle, + null as z_pays_nationalite_id, + tel_prf.no_telephone tel_pro, + null as tel_mobile, + */ + -- //// + -- ULH_UCBN_LDAP.hid2mail(individu.no_individu) email, + mail.cem_email||'@'||cem_domaine email, + -- + i.statut z_statut_id, + decode(grhum.Trouve_lc_structure_pere@COCKTAIL(s.c_structure),'UP8',S.LC_STRUCTURE,grhum.Trouve_lc_structure_pere@COCKTAIL(s.c_structure)) AS z_structure_id, + --s.LC_structure AS z_structure_id, + ltrim(TO_CHAR(individu.no_individu,'99999999')) source_code, + + code_insee.no_insee numero_insee, + TO_CHAR(code_insee.cle_insee) numero_insee_cle, + CASE WHEN code_insee.no_insee IS NULL THEN NULL ELSE 0 END numero_insee_provisoire, + comptes.iban iban, + comptes.bic bic, + + -- //// + /*null as numero_insee, + null as numero_insee_cle, + null as numero_insee_provisoire, + null as iban, + null as bic, + */ + -- //// + GRHUM.ULH_IND_GRADE_EN_COURS@COCKTAIL(individu.no_individu) as z_grade_id, + i.z_discipline_id_cnu z_discipline_id_cnu, + i.z_discipline_id_sous_cnu z_discipline_id_sous_cnu, + i.z_discipline_id_spe_cnu z_discipline_id_spe_cnu, + i.z_discipline_id_dis2deg z_discipline_id_dis2deg, + utl_raw.cast_to_varchar2((nlssort(to_char(individu.nom_usuel || ' ' || individu.nom_patronymique || ' ' || individu.prenom), 'nls_sort=binary_ai'))) critere_recherche, + i.date_fin FROM i - JOIN grhum.individu_ulr@dbl_grhum individu ON individu.no_individu = i.code - JOIN grhum.ULH_V_STRUCT_AFF_TOUS@dbl_grhum uv_aff ON uv_aff.no_individu = i.code - LEFT JOIN grhum.ulh_ldap@dbl_grhum uldap ON uldap.no_individu = i.code -- TABLE ULH_LDAP ULHN - LEFT JOIN grhum.personne_telephone@dbl_grhum tel_prf ON tel_prf.pers_id = individu.pers_id AND tel_prf.type_no='TEL' AND tel_prf.type_tel='PRF' AND tel_prf.tel_principal='O' - LEFT JOIN grhum.personne_telephone@dbl_grhum tel_prv ON tel_prv.pers_id = individu.pers_id AND tel_prv.type_no='TEL' AND tel_prv.type_tel='PRV' AND tel_prv.tel_principal='O' - LEFT JOIN grhum.personne_telephone@dbl_grhum tel_mob ON tel_mob.pers_id = individu.pers_id AND tel_mob.type_no='MOB' AND tel_mob.type_tel='PRV' AND tel_mob.tel_principal='O' - LEFT JOIN grhum.code_insee@dbl_grhum code_insee ON code_insee.no_dossier_pers = i.code - LEFT JOIN comptes ON comptes.no_individu = i.code AND comptes.rank_compte = comptes.nombre_comptes - --**pour Adresses ***- - LEFT JOIN grhum.ULH_V_ADR_CONN_OSE@dbl_grhum uv_ado ON uv_ado.intervenant_id = i.code - -- Caen 2021 Modifs pour Disciplines : - LEFT JOIN discipline d ON - d.histo_destruction IS NULL - AND 1 = CASE WHEN -- si rien n'a été défini - COALESCE( i.z_discipline_id_cnu, i.z_discipline_id_sous_cnu, i.z_discipline_id_spe_cnu, i.z_discipline_id_dis2deg ) IS NULL - AND d.source_code = '00' - THEN 1 WHEN -- si une CNU ou une spécialité a été définie... - COALESCE( i.z_discipline_id_cnu, i.z_discipline_id_sous_cnu, i.z_discipline_id_spe_cnu ) IS NOT NULL - THEN CASE WHEN -- alors on teste par les sections CNU et spécialités - ( - ',' || d.CODES_CORRESP_2 || ',' LIKE '%,' || i.z_discipline_id_cnu || NVL(i.z_discipline_id_sous_cnu,'') || ',%' - OR ',' || d.CODES_CORRESP_2 || ',' LIKE '%,' || i.z_discipline_id_cnu || NVL(i.z_discipline_id_sous_cnu,'00') || ',%' - ) - AND ',' || NVL(d.CODES_CORRESP_3,'000') || ',' LIKE '%,' || NVL(CASE WHEN d.CODES_CORRESP_3 IS NOT NULL THEN i.z_discipline_id_spe_cnu ELSE NULL END,'000') || ',%' - THEN 1 ELSE 0 END ELSE CASE WHEN -- sinon on teste par les disciplines du 2nd degré - i.z_discipline_id_dis2deg IS NOT NULL - AND ',' || NVL(d.CODES_CORRESP_4,'') || ',' LIKE '%,' || i.z_discipline_id_dis2deg || ',%' - THEN 1 ELSE 0 END END -- fin du test + JOIN grhum.individu_ulr@COCKTAIL individu ON individu.no_individu = i.code + LEFT JOIN grhum.personne_telephone@COCKTAIL tel_prf ON tel_prf.pers_id = individu.pers_id AND tel_prf.type_no='TEL' AND tel_prf.type_tel='PRF' AND tel_prf.tel_principal='O' + LEFT JOIN grhum.personne_telephone@COCKTAIL tel_prv ON tel_prv.pers_id = individu.pers_id AND tel_prv.type_no='MOB' AND tel_prv.type_tel='PRV' AND tel_prv.tel_principal='O' + LEFT JOIN grhum.code_insee@COCKTAIL code_insee ON code_insee.no_dossier_pers = i.code + LEFT JOIN grhum.compte@COCKTAIL compte ON compte.pers_id = individu.pers_id + LEFT JOIN grhum.compte_email@COCKTAIL mail ON mail.cpt_ordre = compte.cpt_ordre + LEFT JOIN comptes ON comptes.no_individu = i.code AND comptes.rank_compte = comptes.nombre_comptes + -- AJOUT !!!!!! + -- pour récup structure_pere + inner JOIN MANGUE.affectation@COCKTAIL A ON (i.code=A.no_dossier_pers) + inner JOIN grhum.structure_ulr@COCKTAIL S ON (A.c_structure=S.c_structure) + INNER join grhum.personnel_ulr@COCKTAIL P on (i.code=P.no_dossier_pers) + where + -- on ne tient compte que de l'affectation PRINCIPALE en cours + A.tem_principale = 'O' + and A.tem_valide='O' + and A.d_deb_affectation<=to_date(to_char(sysdate,'dd/mm/yyyy'),'dd/mm/yyyy') + --and (A.d_fin_affectation is null OR A.d_fin_affectation+184 >=to_date(to_char(sysdate,'dd/mm/yyyy'),'dd/mm/yyyy')) + --Benouahle 15/07/2019 + --and (A.d_fin_affectation is null OR A.d_fin_affectation >=to_date(to_char(sysdate+184, 'dd/mm/yyyy'),'dd/mm/yyyy')) + and (A.d_fin_affectation is null OR A.d_fin_affectation +545>=to_date(to_char(sysdate, 'dd/mm/yyyy'),'dd/mm/yyyy')) +UNION + -- les HEBERGES en MAD entrante +SELECT + ltrim(TO_CHAR(individu.no_individu,'99999999')) code, + CASE individu.c_civilite WHEN 'M.' THEN 'M.' ELSE 'Mme' END z_civilite_id, + initcap(individu.nom_usuel) nom_usuel, + initcap(individu.prenom) prenom, + initcap(individu.nom_patronymique) nom_patronymique, + individu.d_naissance date_naissance, + individu.c_pays_naissance z_pays_naissance_id, + individu.c_dept_naissance z_dep_naissance_id, + 'ZZZZ' as ville_naissance_code_insee, + individu.ville_de_naissance ville_naissance_libelle, + individu.c_pays_nationalite z_pays_nationalite_id, + tel_prf.no_telephone tel_pro, + '000' as tel_mobile, + --tel_prv.no_telephone tel_mobile, + -- !!! attention !!! prendre la 1ère ligne ci-dessous lors du passage en PROD OSE + --ULH_UCBN_LDAP.hid2mail(individu.no_individu) email, + mail.cem_email||'@'||cem_domaine email, + --mel.no_e_mail email, + --CASE individu.ind_activite WHEN 'VACATAIRE' THEN 'ingrid.laignel@univ-lehavre.fr' ELSE ULH_UCBN_LDAP.hid2mail(individu.no_individu) END email, -- -WHERE - i.validite_fin+1 >= (SYSDATE - (365*2)); + i.statut z_statut_id, + -- appel à une fonction renvoyant l'affectation principale du vacataire + decode(grhum.Trouve_lc_structure_pere@COCKTAIL(s.c_structure),'UP8',S.LC_STRUCTURE,grhum.Trouve_lc_structure_pere@COCKTAIL(s.c_structure)) AS z_structure_id, + --S.LC_STRUCTURE AS z_structure_id, + ltrim(TO_CHAR(individu.no_individu,'99999999')) source_code, + individu.ind_no_insee numero_insee, + TO_CHAR(individu.ind_cle_insee) numero_insee_cle, + CASE WHEN individu.ind_no_insee IS NULL THEN NULL ELSE 0 END numero_insee_provisoire, + comptes.iban iban, + comptes.bic bic, + null as z_grade_id, + i.z_discipline_id_cnu z_discipline_id_cnu, + i.z_discipline_id_sous_cnu z_discipline_id_sous_cnu, + i.z_discipline_id_spe_cnu z_discipline_id_spe_cnu, + i.z_discipline_id_dis2deg z_discipline_id_dis2deg, + utl_raw.cast_to_varchar2((nlssort(to_char(individu.nom_usuel || ' ' || individu.nom_patronymique || ' ' || individu.prenom), 'nls_sort=binary_ai'))) critere_recherche, + i.date_fin +FROM + i + JOIN grhum.individu_ulr@COCKTAIL individu ON individu.no_individu = i.code + --LEFT JOIN grhum.individu_e_mail@COCKTAIL individu_e_mail ON individu_e_mail.no_individu = i.code + -- pour les vacataires : règle de saisie donnée aux RH (par IL) : TEL + PRV + JOIN mangue.CONTRAT_HEBERGES@COCKTAIL CTH ON CTH.no_dossier_pers = i.code + inner JOIN grhum.structure_ulr@COCKTAIL S ON (CTH.c_structure=S.c_structure) + LEFT JOIN grhum.personne_telephone@COCKTAIL tel_prf ON tel_prf.pers_id = individu.pers_id AND tel_prf.type_no='TEL' AND tel_prf.type_tel='PRF' AND tel_prf.tel_principal='O' + LEFT JOIN grhum.personne_telephone@COCKTAIL tel_prv ON tel_prv.pers_id = individu.pers_id AND tel_prv.type_no='MOB' AND tel_prv.type_tel='PRV' AND tel_prv.tel_principal='O' + --LEFT JOIN grhum.ulh_v_individu_e_mail@COCKTAIL mel ON mel.no_individu = i.code AND tadr_code='PERSO' AND rpa_valide='O' AND RPA_PRINCIPAL='O' + --LEFT JOIN grhum.code_insee@COCKTAIL code_insee ON code_insee.no_dossier_pers = i.code + LEFT JOIN grhum.compte@COCKTAIL compte ON compte.pers_id = individu.pers_id + LEFT JOIN grhum.compte_email@COCKTAIL mail ON mail.cpt_ordre = compte.cpt_ordre + LEFT JOIN comptes ON comptes.no_individu = i.code AND comptes.rank_compte = comptes.nombre_comptes + --where CTH.c_type_contrat_trav like 'CN112' -- on ne prend QUE les contrats de MAD entrante +-- + UNION + -- les VACATAIRES +SELECT + ltrim(TO_CHAR(individu.no_individu,'99999999')) code, + CASE individu.c_civilite WHEN 'M.' THEN 'M.' ELSE 'Mme' END z_civilite_id, + initcap(individu.nom_usuel) nom_usuel, + initcap(individu.prenom) prenom, + initcap(individu.nom_patronymique) nom_patronymique, + individu.d_naissance date_naissance, + individu.c_pays_naissance z_pays_naissance_id, + individu.c_dept_naissance z_dep_naissance_id, + -- !!!! à mettre en char + -- en fait il y a une erreur dans la fonction ++++ on s'en moque de cette donnée !! + -- CAST (nvl(grhum.ULH_INSEE_COMMUNE@COCKTAIL(ville_de_naissance), '00000') AS VARCHAR2 (10)) ville_naissance_code_insee, + 'ZZZZ' as ville_naissance_code_insee, + individu.ville_de_naissance ville_naissance_libelle, + individu.c_pays_nationalite z_pays_nationalite_id, + tel_prf.no_telephone tel_pro, + -- tel_prv.no_telephone tel_mobile, + '000' as tel_mobile, + -- !!! attention !!! prendre la 1ère ligne ci-dessous lors du passage en PROD OSE + -- ULH_UCBN_LDAP.hid2mail(individu.no_individu) email, + mail.cem_email||'@'||cem_domaine email, + i.statut z_statut_id, + -- appel à une fonction renvoyant l'affectation principale du vacataire + nvl(ULH_AFF_PRINCIPALE_VACATAIRE@COCKTAIL(vac.vac_id),'UNIVERSITE PARIS 8') z_structure_id, + ltrim(TO_CHAR(individu.no_individu,'99999999')) source_code, + code_insee.no_insee numero_insee, + TO_CHAR(code_insee.cle_insee) numero_insee_cle, + CASE WHEN code_insee.no_insee IS NULL THEN NULL ELSE 0 END numero_insee_provisoire, + comptes.iban iban, + comptes.bic bic, + null as z_grade_id, + i.z_discipline_id_cnu z_discipline_id_cnu, + i.z_discipline_id_sous_cnu z_discipline_id_sous_cnu, + i.z_discipline_id_spe_cnu z_discipline_id_spe_cnu, + i.z_discipline_id_dis2deg z_discipline_id_dis2deg, + utl_raw.cast_to_varchar2((nlssort(to_char(individu.nom_usuel || ' ' || individu.nom_patronymique || ' ' || individu.prenom), 'nls_sort=binary_ai'))) critere_recherche, + i.date_fin +FROM + i + JOIN grhum.individu_ulr@COCKTAIL individu ON individu.no_individu = i.code + -- pour les vacataires : règle de saisie donnée aux RH (par IL) : TEL + PRV + -- 22/10/2018 ! on met dans Tél privé !!! + LEFT JOIN grhum.personne_telephone@COCKTAIL tel_prf ON tel_prf.pers_id = individu.pers_id AND tel_prf.type_no='TEL' AND tel_prf.type_tel='PRF' AND tel_prf.tel_principal='O' + LEFT JOIN grhum.personne_telephone@COCKTAIL tel_prv ON tel_prv.pers_id = individu.pers_id AND tel_prv.type_no='TEL' AND tel_prv.type_tel='PRV' AND tel_prv.tel_principal='O' + --LEFT JOIN grhum.ulh_v_individu_e_mail@COCKTAIL mel ON mel.no_individu = i.code AND tadr_code='PERSO' AND rpa_valide='O' AND RPA_PRINCIPAL='O' + LEFT JOIN grhum.compte@COCKTAIL compte ON compte.pers_id = individu.pers_id + LEFT JOIN grhum.compte_email@COCKTAIL mail ON mail.cpt_ordre = compte.cpt_ordre + LEFT JOIN grhum.code_insee@COCKTAIL code_insee ON code_insee.no_dossier_pers = i.code + LEFT JOIN comptes ON comptes.no_individu = i.code AND comptes.rank_compte = comptes.nombre_comptes + LEFT JOIN mangue.vacataires@COCKTAIL VAC ON VAC.no_dossier_pers = i.code + -- on ne prend QUE les VACATAIRES + where individu.ind_activite like 'VACATAIRE' + --**************** + AND vac.tem_valide = 'O' + --Benouah le 15/07/2019 + --AND SYSDATE BETWEEN vac.D_DEB_VACATION AND vac.D_FIN_VACATION + AND SYSDATE BETWEEN vac.D_DEB_VACATION AND vac.D_FIN_VACATION+545 -- GitLab