diff --git a/data/ddl/package/UNICAEN_TBL/body.sql b/data/ddl/package/UNICAEN_TBL/body.sql index f2664826796c67fc3474659170235936cf87fd40..850a067846140e8b119cc75c1d8f885596cf566a 100644 --- a/data/ddl/package/UNICAEN_TBL/body.sql +++ b/data/ddl/package/UNICAEN_TBL/body.sql @@ -416,6 +416,14 @@ CREATE OR REPLACE PACKAGE BODY "UNICAEN_TBL" AS OPEN c FOR ' SELECT + v.ANNEE_ID, + v.ANNEE_AGREMENT, + v.TYPE_AGREMENT_ID, + v.INTERVENANT_ID, + v.CODE_INTERVENANT, + v.STRUCTURE_ID, + v.AGREMENT_ID, + v.DUREE_VIE, CASE WHEN t.ANNEE_ID = v.ANNEE_ID AND COALESCE(t.ANNEE_AGREMENT,0) = COALESCE(v.ANNEE_AGREMENT,0) @@ -425,15 +433,7 @@ CREATE OR REPLACE PACKAGE BODY "UNICAEN_TBL" AS AND COALESCE(t.STRUCTURE_ID,0) = COALESCE(v.STRUCTURE_ID,0) AND COALESCE(t.AGREMENT_ID,0) = COALESCE(v.AGREMENT_ID,0) AND t.DUREE_VIE = v.DUREE_VIE - THEN -1 ELSE t.ID END ID, - v.ANNEE_ID, - v.ANNEE_AGREMENT, - v.TYPE_AGREMENT_ID, - v.INTERVENANT_ID, - v.CODE_INTERVENANT, - v.STRUCTURE_ID, - v.AGREMENT_ID, - v.DUREE_VIE + THEN -1 ELSE t.ID END ID FROM (' || QUERY_APPLY_PARAMS(viewQuery, useParams) || ') v FULL JOIN TBL_AGREMENT t ON @@ -1795,6 +1795,7 @@ CREATE OR REPLACE PACKAGE BODY "UNICAEN_TBL" AS CASE WHEN p.type_volume_horaire_id = 1 THEN ps.plafond_etat_prevu_id WHEN p.type_volume_horaire_id = 2 THEN ps.plafond_etat_realise_id + ELSE COALESCE(p.plafond_etat_id,1) END plafond_etat_id, COALESCE(pd.heures, 0) derogation, CASE WHEN p.heures > COALESCE(p.PLAFOND,ps.heures,0) + COALESCE(pd.heures, 0) + 0.05 THEN 1 ELSE 0 END depassement @@ -1890,12 +1891,13 @@ CREATE OR REPLACE PACKAGE BODY "UNICAEN_TBL" AS CASE WHEN p.type_volume_horaire_id = 1 THEN ps.plafond_etat_prevu_id WHEN p.type_volume_horaire_id = 2 THEN ps.plafond_etat_realise_id + ELSE COALESCE(p.plafond_etat_id,1) END plafond_etat_id, COALESCE(pd.heures, 0) derogation, CASE WHEN p.heures > COALESCE(p.PLAFOND,ps.heures,0) + COALESCE(pd.heures, 0) + 0.05 THEN 1 ELSE 0 END depassement FROM ( - SELECT 4 PLAFOND_ID, NULL PLAFOND, p.* FROM ( + SELECT 4 PLAFOND_ID, NULL PLAFOND, NULL PLAFOND_ETAT_ID, p.* FROM ( SELECT i.annee_id annee_id, fr.type_volume_horaire_id type_volume_horaire_id, @@ -1910,7 +1912,7 @@ CREATE OR REPLACE PACKAGE BODY "UNICAEN_TBL" AS UNION ALL - SELECT 2 PLAFOND_ID, NULL PLAFOND, p.* FROM ( + SELECT 2 PLAFOND_ID, NULL PLAFOND, NULL PLAFOND_ETAT_ID, p.* FROM ( SELECT i.annee_id annee_id, fr.type_volume_horaire_id type_volume_horaire_id, @@ -1925,7 +1927,7 @@ CREATE OR REPLACE PACKAGE BODY "UNICAEN_TBL" AS UNION ALL - SELECT 1 PLAFOND_ID, NULL PLAFOND, p.* FROM ( + SELECT 1 PLAFOND_ID, NULL PLAFOND, NULL PLAFOND_ETAT_ID, p.* FROM ( SELECT i.annee_id annee_id, fr.type_volume_horaire_id type_volume_horaire_id, @@ -1943,7 +1945,7 @@ CREATE OR REPLACE PACKAGE BODY "UNICAEN_TBL" AS UNION ALL - SELECT 5 PLAFOND_ID, NULL PLAFOND, p.* FROM ( + SELECT 5 PLAFOND_ID, NULL PLAFOND, NULL PLAFOND_ETAT_ID, p.* FROM ( SELECT i.annee_id annee_id, fr.type_volume_horaire_id type_volume_horaire_id, @@ -1958,7 +1960,7 @@ CREATE OR REPLACE PACKAGE BODY "UNICAEN_TBL" AS UNION ALL - SELECT 8 PLAFOND_ID, NULL PLAFOND, p.* FROM ( + SELECT 8 PLAFOND_ID, NULL PLAFOND, NULL PLAFOND_ETAT_ID, p.* FROM ( SELECT i.annee_id annee_id, fr.type_volume_horaire_id type_volume_horaire_id, @@ -2065,12 +2067,13 @@ CREATE OR REPLACE PACKAGE BODY "UNICAEN_TBL" AS CASE WHEN p.type_volume_horaire_id = 1 THEN ps.plafond_etat_prevu_id WHEN p.type_volume_horaire_id = 2 THEN ps.plafond_etat_realise_id + ELSE COALESCE(p.plafond_etat_id,1) END plafond_etat_id, COALESCE(pd.heures, 0) derogation, CASE WHEN p.heures > COALESCE(p.PLAFOND,ps.heures,0) + COALESCE(pd.heures, 0) + 0.05 THEN 1 ELSE 0 END depassement FROM ( - SELECT 3 PLAFOND_ID, NULL PLAFOND, p.* FROM ( + SELECT 3 PLAFOND_ID, NULL PLAFOND, NULL PLAFOND_ETAT_ID, p.* FROM ( SELECT i.annee_id annee_id, vhr.type_volume_horaire_id type_volume_horaire_id, @@ -2109,7 +2112,7 @@ CREATE OR REPLACE PACKAGE BODY "UNICAEN_TBL" AS UNION ALL - SELECT 6 PLAFOND_ID, NULL PLAFOND, p.* FROM ( + SELECT 6 PLAFOND_ID, NULL PLAFOND, NULL PLAFOND_ETAT_ID, p.* FROM ( SELECT i.annee_id annee_id, vhr.type_volume_horaire_id type_volume_horaire_id, @@ -2217,12 +2220,13 @@ CREATE OR REPLACE PACKAGE BODY "UNICAEN_TBL" AS CASE WHEN p.type_volume_horaire_id = 1 THEN ps.plafond_etat_prevu_id WHEN p.type_volume_horaire_id = 2 THEN ps.plafond_etat_realise_id + ELSE COALESCE(p.plafond_etat_id,1) END plafond_etat_id, COALESCE(pd.heures, 0) derogation, CASE WHEN p.heures > COALESCE(p.PLAFOND,ps.heures,0) + COALESCE(pd.heures, 0) + 0.05 THEN 1 ELSE 0 END depassement FROM ( - SELECT 7 PLAFOND_ID, NULL PLAFOND, p.* FROM ( + SELECT 7 PLAFOND_ID, NULL PLAFOND, NULL PLAFOND_ETAT_ID, p.* FROM ( SELECT i.annee_id annee_id, vhr.type_volume_horaire_id type_volume_horaire_id, @@ -2242,7 +2246,7 @@ CREATE OR REPLACE PACKAGE BODY "UNICAEN_TBL" AS UNION ALL - SELECT 25 PLAFOND_ID, NULL PLAFOND, p.* FROM ( + SELECT 25 PLAFOND_ID, NULL PLAFOND, NULL PLAFOND_ETAT_ID, p.* FROM ( SELECT i.annee_id annee_id, vh.type_volume_horaire_id type_volume_horaire_id, @@ -2351,6 +2355,7 @@ CREATE OR REPLACE PACKAGE BODY "UNICAEN_TBL" AS CASE WHEN p.type_volume_horaire_id = 1 THEN ps.plafond_etat_prevu_id WHEN p.type_volume_horaire_id = 2 THEN ps.plafond_etat_realise_id + ELSE COALESCE(p.plafond_etat_id,1) END plafond_etat_id, COALESCE(pd.heures, 0) derogation, CASE WHEN p.heures > COALESCE(p.PLAFOND,ps.heures,0) + COALESCE(pd.heures, 0) + 0.05 THEN 1 ELSE 0 END depassement @@ -2404,11 +2409,13 @@ CREATE OR REPLACE PACKAGE BODY "UNICAEN_TBL" AS s.element_pedagogique_id element_pedagogique_id, s.type_intervention_id type_intervention_id, s.heures heures, - COALESCE(c.heures * c.groupes,0) plafond + COALESCE(c.heures * c.groupes,0) plafond, + pe.id plafond_etat_id FROM s JOIN type_intervention ti ON ti.id = s.type_intervention_id JOIN element_pedagogique ep ON ep.id = s.element_pedagogique_id + JOIN plafond_etat pe ON pe.code = ''informatif'' LEFT JOIN c ON c.element_pedagogique_id = s.element_pedagogique_id AND c.type_intervention_id = COALESCE(ti.type_intervention_maquette_id,ti.id) WHERE @@ -2576,33 +2583,33 @@ CREATE OR REPLACE PACKAGE BODY "UNICAEN_TBL" AS CASE WHEN t.ANNEE_ID = v.ANNEE_ID AND t.INTERVENANT_ID = v.INTERVENANT_ID - AND t.ACTIF = v.ACTIF AND t.TYPE_VOLUME_HORAIRE_ID = v.TYPE_VOLUME_HORAIRE_ID + AND t.ACTIF = v.ACTIF AND t.STRUCTURE_ID = v.STRUCTURE_ID - AND t.NBVH = v.NBVH - AND t.VALIDE = v.VALIDE AND COALESCE(t.INTERVENANT_STRUCTURE_ID,0) = COALESCE(v.INTERVENANT_STRUCTURE_ID,0) AND t.SERVICE_REFERENTIEL_ID = v.SERVICE_REFERENTIEL_ID AND t.FONCTION_REFERENTIEL_ID = v.FONCTION_REFERENTIEL_ID AND t.TYPE_INTERVENANT_ID = v.TYPE_INTERVENANT_ID AND t.TYPE_INTERVENANT_CODE = v.TYPE_INTERVENANT_CODE AND t.TYPE_VOLUME_HORAIRE_CODE = v.TYPE_VOLUME_HORAIRE_CODE + AND t.NBVH = v.NBVH AND t.HEURES = v.HEURES + AND t.VALIDE = v.VALIDE THEN -1 ELSE t.ID END ID, v.ANNEE_ID, v.INTERVENANT_ID, - v.ACTIF, v.TYPE_VOLUME_HORAIRE_ID, + v.ACTIF, v.STRUCTURE_ID, - v.NBVH, - v.VALIDE, v.INTERVENANT_STRUCTURE_ID, v.SERVICE_REFERENTIEL_ID, v.FONCTION_REFERENTIEL_ID, v.TYPE_INTERVENANT_ID, v.TYPE_INTERVENANT_CODE, v.TYPE_VOLUME_HORAIRE_CODE, - v.HEURES + v.NBVH, + v.HEURES, + v.VALIDE FROM (' || QUERY_APPLY_PARAMS(viewQuery, useParams) || ') v FULL JOIN TBL_REFERENTIEL t ON @@ -2738,13 +2745,13 @@ CREATE OR REPLACE PACKAGE BODY "UNICAEN_TBL" AS CASE WHEN t.ANNEE_ID = v.ANNEE_ID AND t.INTERVENANT_ID = v.INTERVENANT_ID - AND COALESCE(t.INTERVENANT_STRUCTURE_ID,0) = COALESCE(v.INTERVENANT_STRUCTURE_ID,0) - AND COALESCE(t.STRUCTURE_ID,0) = COALESCE(v.STRUCTURE_ID,0) - AND t.TYPE_INTERVENANT_ID = v.TYPE_INTERVENANT_ID - AND t.TYPE_INTERVENANT_CODE = v.TYPE_INTERVENANT_CODE AND t.ACTIF = v.ACTIF - AND COALESCE(t.ELEMENT_PEDAGOGIQUE_ID,0) = COALESCE(v.ELEMENT_PEDAGOGIQUE_ID,0) AND t.SERVICE_ID = v.SERVICE_ID + AND COALESCE(t.ELEMENT_PEDAGOGIQUE_ID,0) = COALESCE(v.ELEMENT_PEDAGOGIQUE_ID,0) + AND t.TYPE_INTERVENANT_ID = v.TYPE_INTERVENANT_ID + AND t.TYPE_INTERVENANT_CODE = v.TYPE_INTERVENANT_CODE + AND COALESCE(t.STRUCTURE_ID,0) = COALESCE(v.STRUCTURE_ID,0) + AND COALESCE(t.INTERVENANT_STRUCTURE_ID,0) = COALESCE(v.INTERVENANT_STRUCTURE_ID,0) AND COALESCE(t.ELEMENT_PEDAGOGIQUE_PERIODE_ID,0) = COALESCE(v.ELEMENT_PEDAGOGIQUE_PERIODE_ID,0) AND COALESCE(t.ETAPE_ID,0) = COALESCE(v.ETAPE_ID,0) AND COALESCE(t.TYPE_VOLUME_HORAIRE_ID,0) = COALESCE(v.TYPE_VOLUME_HORAIRE_ID,0) @@ -2758,13 +2765,13 @@ CREATE OR REPLACE PACKAGE BODY "UNICAEN_TBL" AS THEN -1 ELSE t.ID END ID, v.ANNEE_ID, v.INTERVENANT_ID, - v.INTERVENANT_STRUCTURE_ID, - v.STRUCTURE_ID, - v.TYPE_INTERVENANT_ID, - v.TYPE_INTERVENANT_CODE, v.ACTIF, - v.ELEMENT_PEDAGOGIQUE_ID, v.SERVICE_ID, + v.ELEMENT_PEDAGOGIQUE_ID, + v.TYPE_INTERVENANT_ID, + v.TYPE_INTERVENANT_CODE, + v.STRUCTURE_ID, + v.INTERVENANT_STRUCTURE_ID, v.ELEMENT_PEDAGOGIQUE_PERIODE_ID, v.ETAPE_ID, v.TYPE_VOLUME_HORAIRE_ID, diff --git a/data/ddl/view/V_EXPORT_PAIEMENT_WINPAIE.sql b/data/ddl/view/V_EXPORT_PAIEMENT_WINPAIE.sql index 5c7ac01e28ea9c92709ddac9483d38f317b66c63..4c9779553acf830afd18b9acf3a6a2c69564642c 100644 --- a/data/ddl/view/V_EXPORT_PAIEMENT_WINPAIE.sql +++ b/data/ddl/view/V_EXPORT_PAIEMENT_WINPAIE.sql @@ -1,5 +1,4 @@ -CREATE -OR REPLACE FORCE VIEW V_EXPORT_PAIEMENT_WINPAIE AS +CREATE OR REPLACE FORCE VIEW V_EXPORT_PAIEMENT_WINPAIE AS SELECT annee_id, type_intervenant_id, structure_id, diff --git a/data/ddl/view/V_INTERVENANT_HISTORIQUE.sql b/data/ddl/view/V_INTERVENANT_HISTORIQUE.sql index 54cddafe1de3b17ea84bdb02a28ddb74c82ba3d5..39a83e1351c1d2cac03d4cab923b8a4a42b9ef71 100644 --- a/data/ddl/view/V_INTERVENANT_HISTORIQUE.sql +++ b/data/ddl/view/V_INTERVENANT_HISTORIQUE.sql @@ -1,5 +1,4 @@ -CREATE -OR REPLACE FORCE VIEW V_INTERVENANT_HISTORIQUE AS +CREATE OR REPLACE FORCE VIEW V_INTERVENANT_HISTORIQUE AS WITH historique AS ( --Initialisation des données personnelles SELECT d.intervenant_id intervenant_id, diff --git a/data/ddl/view/V_TBL_PLAFOND_ELEMENT.sql b/data/ddl/view/V_TBL_PLAFOND_ELEMENT.sql index 2b8ba0b21e71931301d7badee0968a3be44187bb..de3e591e050813bb661df6f32f083198716a02fa 100644 --- a/data/ddl/view/V_TBL_PLAFOND_ELEMENT.sql +++ b/data/ddl/view/V_TBL_PLAFOND_ELEMENT.sql @@ -10,6 +10,7 @@ SELECT CASE WHEN p.type_volume_horaire_id = 1 THEN ps.plafond_etat_prevu_id WHEN p.type_volume_horaire_id = 2 THEN ps.plafond_etat_realise_id + ELSE COALESCE(p.plafond_etat_id,1) END plafond_etat_id, COALESCE(pd.heures, 0) derogation, CASE WHEN p.heures > COALESCE(p.PLAFOND,ps.heures,0) + COALESCE(pd.heures, 0) + 0.05 THEN 1 ELSE 0 END depassement diff --git a/data/ddl/view/V_TBL_PLAFOND_INTERVENANT.sql b/data/ddl/view/V_TBL_PLAFOND_INTERVENANT.sql index 8fd218ab9653b63a7eefdb7b1f01f70430631e5c..98016474b8f53fff088221c306390000e456ca16 100644 --- a/data/ddl/view/V_TBL_PLAFOND_INTERVENANT.sql +++ b/data/ddl/view/V_TBL_PLAFOND_INTERVENANT.sql @@ -9,12 +9,13 @@ SELECT CASE WHEN p.type_volume_horaire_id = 1 THEN ps.plafond_etat_prevu_id WHEN p.type_volume_horaire_id = 2 THEN ps.plafond_etat_realise_id + ELSE COALESCE(p.plafond_etat_id,1) END plafond_etat_id, COALESCE(pd.heures, 0) derogation, CASE WHEN p.heures > COALESCE(p.PLAFOND,ps.heures,0) + COALESCE(pd.heures, 0) + 0.05 THEN 1 ELSE 0 END depassement FROM ( - SELECT 4 PLAFOND_ID, NULL PLAFOND, p.* FROM ( + SELECT 4 PLAFOND_ID, NULL PLAFOND, NULL PLAFOND_ETAT_ID, p.* FROM ( SELECT i.annee_id annee_id, fr.type_volume_horaire_id type_volume_horaire_id, @@ -29,7 +30,7 @@ FROM UNION ALL - SELECT 2 PLAFOND_ID, NULL PLAFOND, p.* FROM ( + SELECT 2 PLAFOND_ID, NULL PLAFOND, NULL PLAFOND_ETAT_ID, p.* FROM ( SELECT i.annee_id annee_id, fr.type_volume_horaire_id type_volume_horaire_id, @@ -44,7 +45,7 @@ FROM UNION ALL - SELECT 1 PLAFOND_ID, NULL PLAFOND, p.* FROM ( + SELECT 1 PLAFOND_ID, NULL PLAFOND, NULL PLAFOND_ETAT_ID, p.* FROM ( SELECT i.annee_id annee_id, fr.type_volume_horaire_id type_volume_horaire_id, @@ -62,7 +63,7 @@ FROM UNION ALL - SELECT 5 PLAFOND_ID, NULL PLAFOND, p.* FROM ( + SELECT 5 PLAFOND_ID, NULL PLAFOND, NULL PLAFOND_ETAT_ID, p.* FROM ( SELECT i.annee_id annee_id, fr.type_volume_horaire_id type_volume_horaire_id, @@ -77,7 +78,7 @@ FROM UNION ALL - SELECT 8 PLAFOND_ID, NULL PLAFOND, p.* FROM ( + SELECT 8 PLAFOND_ID, NULL PLAFOND, NULL PLAFOND_ETAT_ID, p.* FROM ( SELECT i.annee_id annee_id, fr.type_volume_horaire_id type_volume_horaire_id, diff --git a/data/ddl/view/V_TBL_PLAFOND_REFERENTIEL.sql b/data/ddl/view/V_TBL_PLAFOND_REFERENTIEL.sql index 6466238a7d49686894b58baa1d116ec568a7b98f..33bf4bd73f59da13af15c68fff15bf0780359651 100644 --- a/data/ddl/view/V_TBL_PLAFOND_REFERENTIEL.sql +++ b/data/ddl/view/V_TBL_PLAFOND_REFERENTIEL.sql @@ -10,12 +10,13 @@ SELECT CASE WHEN p.type_volume_horaire_id = 1 THEN ps.plafond_etat_prevu_id WHEN p.type_volume_horaire_id = 2 THEN ps.plafond_etat_realise_id + ELSE COALESCE(p.plafond_etat_id,1) END plafond_etat_id, COALESCE(pd.heures, 0) derogation, CASE WHEN p.heures > COALESCE(p.PLAFOND,ps.heures,0) + COALESCE(pd.heures, 0) + 0.05 THEN 1 ELSE 0 END depassement FROM ( - SELECT 3 PLAFOND_ID, NULL PLAFOND, p.* FROM ( + SELECT 3 PLAFOND_ID, NULL PLAFOND, NULL PLAFOND_ETAT_ID, p.* FROM ( SELECT i.annee_id annee_id, vhr.type_volume_horaire_id type_volume_horaire_id, @@ -54,7 +55,7 @@ FROM UNION ALL - SELECT 6 PLAFOND_ID, NULL PLAFOND, p.* FROM ( + SELECT 6 PLAFOND_ID, NULL PLAFOND, NULL PLAFOND_ETAT_ID, p.* FROM ( SELECT i.annee_id annee_id, vhr.type_volume_horaire_id type_volume_horaire_id, diff --git a/data/ddl/view/V_TBL_PLAFOND_STRUCTURE.sql b/data/ddl/view/V_TBL_PLAFOND_STRUCTURE.sql index dc443921ddd1cf945045409d12c2dedbcf3094eb..54af11c006bb8b1da804ae6cc39818fc2693a7ef 100644 --- a/data/ddl/view/V_TBL_PLAFOND_STRUCTURE.sql +++ b/data/ddl/view/V_TBL_PLAFOND_STRUCTURE.sql @@ -10,12 +10,13 @@ SELECT CASE WHEN p.type_volume_horaire_id = 1 THEN ps.plafond_etat_prevu_id WHEN p.type_volume_horaire_id = 2 THEN ps.plafond_etat_realise_id + ELSE COALESCE(p.plafond_etat_id,1) END plafond_etat_id, COALESCE(pd.heures, 0) derogation, CASE WHEN p.heures > COALESCE(p.PLAFOND,ps.heures,0) + COALESCE(pd.heures, 0) + 0.05 THEN 1 ELSE 0 END depassement FROM ( - SELECT 7 PLAFOND_ID, NULL PLAFOND, p.* FROM ( + SELECT 7 PLAFOND_ID, NULL PLAFOND, NULL PLAFOND_ETAT_ID, p.* FROM ( SELECT i.annee_id annee_id, vhr.type_volume_horaire_id type_volume_horaire_id, @@ -35,7 +36,7 @@ FROM UNION ALL - SELECT 25 PLAFOND_ID, NULL PLAFOND, p.* FROM ( + SELECT 25 PLAFOND_ID, NULL PLAFOND, NULL PLAFOND_ETAT_ID, p.* FROM ( SELECT i.annee_id annee_id, vh.type_volume_horaire_id type_volume_horaire_id, diff --git a/data/ddl/view/V_TBL_PLAFOND_VOLUME_HORAIRE.sql b/data/ddl/view/V_TBL_PLAFOND_VOLUME_HORAIRE.sql index 53f181aa69994a03503de7fcef8721af3f0430e3..bc258723fab1fcbe7d3b2d91dacc2c901ec44819 100644 --- a/data/ddl/view/V_TBL_PLAFOND_VOLUME_HORAIRE.sql +++ b/data/ddl/view/V_TBL_PLAFOND_VOLUME_HORAIRE.sql @@ -11,6 +11,7 @@ SELECT CASE WHEN p.type_volume_horaire_id = 1 THEN ps.plafond_etat_prevu_id WHEN p.type_volume_horaire_id = 2 THEN ps.plafond_etat_realise_id + ELSE COALESCE(p.plafond_etat_id,1) END plafond_etat_id, COALESCE(pd.heures, 0) derogation, CASE WHEN p.heures > COALESCE(p.PLAFOND,ps.heures,0) + COALESCE(pd.heures, 0) + 0.05 THEN 1 ELSE 0 END depassement @@ -64,11 +65,13 @@ FROM s.element_pedagogique_id element_pedagogique_id, s.type_intervention_id type_intervention_id, s.heures heures, - COALESCE(c.heures * c.groupes,0) plafond + COALESCE(c.heures * c.groupes,0) plafond, + pe.id plafond_etat_id FROM s JOIN type_intervention ti ON ti.id = s.type_intervention_id JOIN element_pedagogique ep ON ep.id = s.element_pedagogique_id + JOIN plafond_etat pe ON pe.code = 'informatif' LEFT JOIN c ON c.element_pedagogique_id = s.element_pedagogique_id AND c.type_intervention_id = COALESCE(ti.type_intervention_maquette_id,ti.id) WHERE