Skip to content
Snippets Groups Projects
Commit c22b6b32 authored by pwer21c's avatar pwer21c
Browse files

mise à jour par UP8

parent 46293d85
Branches
Tags 2.0.2
No related merge requests found
CREATE MATERIALIZED VIEW MV_INTERVENANT AS
WITH
i AS (
SELECT DISTINCT
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
(
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
( -- les CONTRACTUELS
(
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 ('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 z_statut_id,
cnu.c_section_cnu z_discipline_id_cnu, -- cnu = grhum.CNU@dbl_grhum
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,
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
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@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
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'
UNION ALL
-- les TITULAIRES
-- 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 'AUTRES' (vu avec IL le 31/10/2018)
ELSE 'BIATSS'
END z_statut_id,
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.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
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@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
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'
......@@ -99,172 +150,278 @@ UNION ALL
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,
'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,
--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
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,
--'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' 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'
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,
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.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
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.d_naissance date_naissance,
individu.c_pays_naissance z_pays_naissance_id,
individu.c_dept_naissance z_departement_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,
/* 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,
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,
/* 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
-- ////
/*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
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
--**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
-- 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
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment