@@ -321,7 +321,7 @@ CREATE OR REPLACE PACKAGE BODY "UNICAEN_TBL" AS
tv.*
FROM
(WITH i_s AS (
SELECT DISTINCT
SELECT
fr.intervenant_id,
ep.structure_id
FROM
@@ -334,55 +334,112 @@ CREATE OR REPLACE PACKAGE BODY "UNICAEN_TBL" AS
JOIN element_pedagogique ep ON ep.id = s.element_pedagogique_id
WHERE
frs.total > 0
),
avi AS (
SELECT
i.code code_intervenant,
i.annee_id annee_id,
a.type_agrement_id type_agrement,
a.id agrement_id,
tas.duree_vie duree_vie,
i.annee_id+duree_vie date_validite
FROM intervenant i
JOIN type_agrement_statut tas ON tas.statut_intervenant_id = i.statut_id
JOIN agrement a ON a.intervenant_id = i.id AND tas.type_agrement_id = a.type_agrement_id AND a.histo_destruction IS NULL
)
SELECT DISTINCT "ANNEE_ID","ANNEE_AGREMENT","TYPE_AGREMENT_ID","INTERVENANT_ID","CODE_INTERVENANT","STRUCTURE_ID","OBLIGATOIRE","AGREMENT_ID","DUREE_VIE","RANK" FROM (
SELECT
i.annee_id annee_id,
CASE
WHEN NVL(NVL(a.id, avi.agrement_id),0) = 0
THEN NULL
ELSE NVL(avi.annee_id, i.annee_id) END annee_agrement,
tas.type_agrement_id type_agrement_id,
i.id intervenant_id,
i.code code_intervenant,
null structure_id,
tas.obligatoire obligatoire,
a.id agrement_id
NVL(a.id, avi.agrement_id) agrement_id,
tas.duree_vie duree_vie,
RANK() OVER(
PARTITION BY i.code,i.annee_id ORDER BY
CASE
WHEN NVL(NVL(a.id, avi.agrement_id),0) = 0
THEN NULL
ELSE NVL(avi.annee_id, i.annee_id) END DESC
) rank
FROM
type_agrement ta
JOIN type_agrement_statut tas ON tas.type_agrement_id = ta.id
AND tas.histo_destruction IS NULL
JOIN intervenant i ON i.histo_destruction IS NULL
AND (tas.premier_recrutement IS NULL OR NVL(i.premier_recrutement,0) = tas.premier_recrutement)
-- AND (tas.premier_recrutement IS NULL OR NVL(i.premier_recrutement,0) = tas.premier_recrutement)
AND i.statut_id = tas.statut_intervenant_id
JOIN i_s ON i_s.intervenant_id = i.id
LEFT JOIN agrement a ON a.type_agrement_id = ta.id
AND a.intervenant_id = i.id
AND a.histo_destruction IS NULL
LEFT JOIN avi ON i.code = avi.code_intervenant
AND tas.type_agrement_id = avi.type_agrement
AND i.annee_id < avi.date_validite
AND i.annee_id >= avi.annee_id
WHERE
ta.code = ''CONSEIL_ACADEMIQUE'')
WHERE
ta.code = ''CONSEIL_ACADEMIQUE''
rank = 1
UNION ALL
SELECT DISTINCT "ANNEE_ID","ANNEE_AGREMENT","TYPE_AGREMENT_ID","INTERVENANT_ID","CODE_INTERVENANT","STRUCTURE_ID","OBLIGATOIRE","AGREMENT_ID","DUREE_VIE","RANK" FROM (
SELECT
i.annee_id annee_id,
CASE
WHEN NVL(NVL(a.id, avi.agrement_id),0) = 0
THEN NULL
ELSE NVL(avi.annee_id, i.annee_id) END annee_agrement,
tas.type_agrement_id type_agrement_id,
i.id intervenant_id,
i_s.structure_id structure_id,
i.code code_intervenant,
a.structure_id structure_id,
tas.obligatoire obligatoire,
a.id agrement_id
NVL(a.id, avi.agrement_id) agrement_id,
tas.duree_vie duree_vie,
RANK() OVER(
PARTITION BY i.code,i.annee_id ORDER BY
CASE
WHEN NVL(NVL(a.id, avi.agrement_id),0) = 0
THEN NULL
ELSE NVL(avi.annee_id, i.annee_id) END DESC
) rank
FROM
type_agrement ta
JOIN type_agrement_statut tas ON tas.type_agrement_id = ta.id
AND tas.histo_destruction IS NULL
JOIN intervenant i ON i.histo_destruction IS NULL
AND (tas.premier_recrutement IS NULL OR NVL(i.premier_recrutement,0) = tas.premier_recrutement)
AND i.statut_id = tas.statut_intervenant_id
JOIN i_s ON i_s.intervenant_id = i.id
LEFT JOIN agrement a ON a.type_agrement_id = ta.id
AND a.intervenant_id = i.id
AND a.structure_id = i_s.structure_id
AND a.histo_destruction IS NULL
LEFT JOIN avi ON i.code = avi.code_intervenant
AND tas.type_agrement_id = avi.type_agrement
AND i.annee_id < avi.date_validite
AND i.annee_id >= avi.annee_id
WHERE
ta.code = ''CONSEIL_RESTREINT'') tv
ta.code = ''CONSEIL_RESTREINT'')
WHERE
rank = 1) tv
WHERE
'||conds||'
@@ -390,12 +447,15 @@ CREATE OR REPLACE PACKAGE BODY "UNICAEN_TBL" AS
t.TYPE_AGREMENT_ID = v.TYPE_AGREMENT_ID
AND t.INTERVENANT_ID = v.INTERVENANT_ID
AND COALESCE(t.STRUCTURE_ID,0) = COALESCE(v.STRUCTURE_ID,0)
AND COALESCE(t.ANNEE_AGREMENT,0) = COALESCE(v.ANNEE_AGREMENT,0)
) WHEN MATCHED THEN UPDATE SET
ANNEE_ID = v.ANNEE_ID,
OBLIGATOIRE = v.OBLIGATOIRE,
AGREMENT_ID = v.AGREMENT_ID,
CODE_INTERVENANT = v.CODE_INTERVENANT,
DUREE_VIE = v.DUREE_VIE,
to_delete = 0
WHEN NOT MATCHED THEN INSERT (
@@ -407,6 +467,9 @@ CREATE OR REPLACE PACKAGE BODY "UNICAEN_TBL" AS
STRUCTURE_ID,
OBLIGATOIRE,
AGREMENT_ID,
ANNEE_AGREMENT,
CODE_INTERVENANT,
DUREE_VIE,
TO_DELETE
) VALUES (
@@ -418,6 +481,9 @@ CREATE OR REPLACE PACKAGE BODY "UNICAEN_TBL" AS
v.STRUCTURE_ID,
v.OBLIGATOIRE,
v.AGREMENT_ID,
v.ANNEE_AGREMENT,
v.CODE_INTERVENANT,
v.DUREE_VIE,
0
);
@@ -1538,10 +1604,10 @@ CREATE OR REPLACE PACKAGE BODY "UNICAEN_TBL" AS
ANNEE_ID = v.ANNEE_ID,
PIECE_JOINTE_ID = v.PIECE_JOINTE_ID,
DATE_ARCHIVE = v.DATE_ARCHIVE,
DATE_VALIDITE = v.DATE_VALIDITE,
DUREE_VIE = v.DUREE_VIE,
CODE_INTERVENANT = v.CODE_INTERVENANT,
DATE_VALIDITE = v.DATE_VALIDITE,
DATE_ARCHIVE = v.DATE_ARCHIVE,
to_delete = 0
WHEN NOT MATCHED THEN INSERT (
@@ -1553,10 +1619,10 @@ CREATE OR REPLACE PACKAGE BODY "UNICAEN_TBL" AS
VALIDATION_ID,
FICHIER_ID,
PIECE_JOINTE_ID,
DATE_ARCHIVE,
DATE_VALIDITE,
DUREE_VIE,
CODE_INTERVENANT,
DATE_VALIDITE,
DATE_ARCHIVE,
TO_DELETE
) VALUES (
@@ -1568,10 +1634,10 @@ CREATE OR REPLACE PACKAGE BODY "UNICAEN_TBL" AS