Commit 858d3e87 authored by Laurent Lecluse's avatar Laurent Lecluse
Browse files

DDL

parent 47d47efb
Loading
Loading
Loading
Loading
+244 −4
Original line number Diff line number Diff line
@@ -2160,7 +2160,49 @@ CREATE OR REPLACE PACKAGE BODY "UNICAEN_TBL" AS
          CASE WHEN p.heures > COALESCE(p.PLAFOND,ps.heures,0) + COALESCE(pd.heures, 0) + 0.05 THEN 1 ELSE 0 END depassement
        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,
                i.id                                   intervenant_id,
                fr.service_referentiel + fr.heures_compl_referentiel heures
              FROM
                intervenant                     i
                JOIN etat_volume_horaire      evh ON evh.code = ''saisi''
                JOIN formule_resultat          fr ON fr.intervenant_id = i.id AND fr.etat_volume_horaire_id = evh.id
                JOIN statut                    si ON si.id = i.statut_id
            ) p

            UNION ALL

          SELECT 9 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,
                i.id                      intervenant_id,
                SUM(vh.heures)            heures
              FROM
                volume_horaire vh
                JOIN service s ON s.id = vh.service_id
                JOIN intervenant i ON i.id = s.intervenant_id
                JOIN statut si ON si.id = i.statut_id
              WHERE
                vh.histo_destruction IS NULL
                AND i.histo_destruction IS NULL
                AND vh.motif_non_paiement_id IS NULL
                AND si.code IN (''IMP'')
              GROUP BY
                i.annee_id,
                vh.type_volume_horaire_id,
                i.id,
                i.statut_id
              HAVING
                SUM(vh.heures) >= 0
            ) p

            UNION ALL

          SELECT 10 PLAFOND_ID, NULL PLAFOND, NULL PLAFOND_ETAT_ID, p.* FROM (
            SELECT
                i.annee_id                  annee_id,
                vhm.type_volume_horaire_id  type_volume_horaire_id,
@@ -2175,6 +2217,79 @@ CREATE OR REPLACE PACKAGE BODY "UNICAEN_TBL" AS
              GROUP BY
                i.annee_id, vhm.type_volume_horaire_id, i.id
            ) p

            UNION ALL

          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,
                fr.intervenant_id                   intervenant_id,
                fr.heures_compl_fi + fr.heures_compl_fc + fr.heures_compl_fa + fr.heures_compl_referentiel heures
              FROM
                     intervenant                i
                JOIN statut                    si ON si.id = i.statut_id
                JOIN etat_volume_horaire      evh ON evh.code = ''saisi''
                JOIN formule_resultat          fr ON fr.intervenant_id = i.id AND fr.etat_volume_horaire_id = evh.id
            ) p

            UNION ALL

          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,
                i.id                                   intervenant_id,
                fr.total - fr.heures_compl_fc_majorees heures
              FROM
                intervenant                     i
                JOIN etat_volume_horaire      evh ON evh.code = ''saisi''
                JOIN formule_resultat          fr ON fr.intervenant_id = i.id AND fr.etat_volume_horaire_id = evh.id
                JOIN statut                    si ON si.id = i.statut_id
            ) p

            UNION ALL

          SELECT 3 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,
                i.id                                intervenant_id,
                fr.heures_compl_fc_majorees         heures
                /*ROUND( (COALESCE(si.plafond_hc_remu_fc,0) - COALESCE(i.montant_indemnite_fc,0)) / a.taux_hetd, 2 ) plafond*/

              FROM
                     intervenant                i
                JOIN annee                      a ON a.id = i.annee_id
                JOIN statut                    si ON si.id = i.statut_id
                JOIN etat_volume_horaire      evh ON evh.code = ''saisi''
                JOIN formule_resultat          fr ON fr.intervenant_id = i.id AND fr.etat_volume_horaire_id = evh.id
            ) p

            UNION ALL

          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,
                i.id                      intervenant_id,
                SUM(frvh.heures_compl_fi) heures
              FROM
                intervenant                     i
                JOIN etat_volume_horaire      evh ON evh.code = ''saisi''
                JOIN formule_resultat          fr ON fr.intervenant_id = i.id AND fr.etat_volume_horaire_id = evh.id
                JOIN formule_resultat_vh     frvh ON frvh.formule_resultat_id = fr.id
                JOIN volume_horaire            vh ON vh.id = frvh.volume_horaire_id
                JOIN type_intervention         ti ON ti.id = vh.type_intervention_id
                JOIN statut                    si ON si.id = i.statut_id
              WHERE
                ti.regle_foad = 0
              GROUP BY
                fr.type_volume_horaire_id,
                i.annee_id,
                i.id,
                i.statut_id
            ) p
          ) p
          JOIN intervenant i ON i.id = p.intervenant_id
          LEFT JOIN plafond_statut ps ON ps.plafond_id = p.plafond_id AND ps.statut_id = i.statut_id AND ps.annee_id = i.annee_id AND ps.histo_destruction IS NULL
@@ -2266,7 +2381,23 @@ CREATE OR REPLACE PACKAGE BODY "UNICAEN_TBL" AS
          CASE WHEN p.heures > COALESCE(p.PLAFOND,ps.heures,0) + COALESCE(pd.heures, 0) + 0.05 THEN 1 ELSE 0 END depassement
        FROM
          (
            SELECT NULL PLAFOND_ID,NULL ANNEE_ID,NULL TYPE_VOLUME_HORAIRE_ID,NULL INTERVENANT_ID,NULL TYPE_MISSION_ID,NULL HEURES,NULL PLAFOND,NULL PLAFOND_ETAT_ID,NULL DEROGATION FROM dual WHERE 0 = 1
          SELECT 14 PLAFOND_ID, NULL PLAFOND, NULL PLAFOND_ETAT_ID, p.* FROM (
            SELECT
                i.annee_id                        annee_id,
                vhm.type_volume_horaire_id        type_volume_horaire_id,
                i.id                              intervenant_id,
                tm.id                             type_mission_id,
                SUM(vhm.heures)                   heures
              FROM
                     mission       m
                JOIN intervenant                i ON i.id = m.intervenant_id
                JOIN type_mission     tm ON tm.id = m.type_mission_id
                JOIN volume_horaire_mission       vhm ON vhm.mission_id = m.id AND vhm.histo_destruction IS NULL
              WHERE
                m.histo_destruction IS NULL
              GROUP BY
                i.annee_id, vhm.type_volume_horaire_id, i.id, tm.id
            ) p
          ) p
          JOIN intervenant i ON i.id = p.intervenant_id
          LEFT JOIN plafond_mission ps ON ps.plafond_id = p.plafond_id AND ps.type_mission_id = p.type_mission_id AND ps.annee_id = i.annee_id AND ps.histo_destruction IS NULL
@@ -2363,7 +2494,42 @@ CREATE OR REPLACE PACKAGE BODY "UNICAEN_TBL" AS
          CASE WHEN p.heures > COALESCE(p.PLAFOND,ps.heures,0) + COALESCE(pd.heures, 0) + 0.05 THEN 1 ELSE 0 END depassement
        FROM
          (
            SELECT NULL PLAFOND_ID,NULL ANNEE_ID,NULL TYPE_VOLUME_HORAIRE_ID,NULL INTERVENANT_ID,NULL FONCTION_REFERENTIEL_ID,NULL HEURES,NULL PLAFOND,NULL PLAFOND_ETAT_ID,NULL DEROGATION FROM dual WHERE 0 = 1
          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,
                i.id                              intervenant_id,
                fr.id                             fonction_referentiel_id,
                SUM(vhr.heures)                   heures
              FROM
                     service_referentiel       sr
                JOIN intervenant                i ON i.id = sr.intervenant_id
                JOIN fonction_referentiel      fr ON fr.id = sr.fonction_id
                JOIN volume_horaire_ref       vhr ON vhr.service_referentiel_id = sr.id AND vhr.histo_destruction IS NULL
              WHERE
                sr.histo_destruction IS NULL
              GROUP BY
                i.annee_id, vhr.type_volume_horaire_id, i.id, fr.id

              UNION ALL

              SELECT
                i.annee_id                 annee_id,
                vhr.type_volume_horaire_id type_volume_horaire_id,
                i.id                       intervenant_id,
                fr.id                      fonction_referentiel_id,
                SUM(vhr.heures)            heures
              FROM
                service_referentiel       sr
                JOIN intervenant i ON i.id = sr.intervenant_id
                JOIN fonction_referentiel      frf ON frf.id = sr.fonction_id
                JOIN fonction_referentiel      fr ON fr.id = frf.parent_id
                JOIN volume_horaire_ref       vhr ON vhr.service_referentiel_id = sr.id AND vhr.histo_destruction IS NULL
              WHERE
                sr.histo_destruction IS NULL
              GROUP BY
                i.annee_id, vhr.type_volume_horaire_id, i.id, fr.id
            ) p
          ) p
          JOIN intervenant i ON i.id = p.intervenant_id
          LEFT JOIN plafond_referentiel ps ON ps.plafond_id = p.plafond_id AND ps.fonction_referentiel_id = p.fonction_referentiel_id AND ps.annee_id = i.annee_id AND ps.histo_destruction IS NULL
@@ -2460,7 +2626,23 @@ CREATE OR REPLACE PACKAGE BODY "UNICAEN_TBL" AS
          CASE WHEN p.heures > COALESCE(p.PLAFOND,ps.heures,0) + COALESCE(pd.heures, 0) + 0.05 THEN 1 ELSE 0 END depassement
        FROM
          (
            SELECT NULL PLAFOND_ID,NULL ANNEE_ID,NULL TYPE_VOLUME_HORAIRE_ID,NULL INTERVENANT_ID,NULL STRUCTURE_ID,NULL HEURES,NULL PLAFOND,NULL PLAFOND_ETAT_ID,NULL DEROGATION FROM dual WHERE 0 = 1
          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,
                i.id                       intervenant_id,
                s.id                       structure_id,
                SUM(vhr.heures)            heures
              FROM
                service_referentiel       sr
                JOIN intervenant           i ON i.id = sr.intervenant_id
                JOIN structure             s ON s.id = sr.structure_id
                JOIN volume_horaire_ref  vhr ON vhr.service_referentiel_id = sr.id AND vhr.histo_destruction IS NULL
              WHERE
                sr.histo_destruction IS NULL
              GROUP BY
                i.annee_id, vhr.type_volume_horaire_id, i.id, s.id
            ) p
          ) p
          JOIN intervenant i ON i.id = p.intervenant_id
          LEFT JOIN plafond_structure ps ON ps.plafond_id = p.plafond_id AND ps.structure_id = p.structure_id AND ps.annee_id = i.annee_id AND ps.histo_destruction IS NULL
@@ -2554,7 +2736,65 @@ CREATE OR REPLACE PACKAGE BODY "UNICAEN_TBL" AS
          CASE WHEN p.heures > COALESCE(p.PLAFOND,ps.heures,0) + COALESCE(pd.heures, 0) + 0.05 THEN 1 ELSE 0 END depassement
        FROM
          (
            SELECT NULL PLAFOND_ID,NULL ANNEE_ID,NULL TYPE_VOLUME_HORAIRE_ID,NULL INTERVENANT_ID,NULL ELEMENT_PEDAGOGIQUE_ID,NULL TYPE_INTERVENTION_ID,NULL HEURES,NULL PLAFOND,NULL PLAFOND_ETAT_ID,NULL DEROGATION FROM dual WHERE 0 = 1
          SELECT 5 PLAFOND_ID, p.* FROM (
            WITH c AS (
                SELECT
                  vhe.element_pedagogique_id,
                  vhe.type_intervention_id,
                  MAX(vhe.heures) heures,
                  COALESCE( MAX(vhe.groupes), ROUND(SUM(t.groupes),10) ) groupes

                FROM
                  volume_horaire_ens     vhe
                       JOIN parametre p ON p.nom = ''scenario_charges_services''
                  LEFT JOIN tbl_chargens   t ON t.element_pedagogique_id = vhe.element_pedagogique_id
                                            AND t.type_intervention_id = vhe.type_intervention_id
                                            AND t.scenario_id = to_number(p.valeur)
                GROUP BY
                  vhe.element_pedagogique_id,
                  vhe.type_intervention_id
              ), s AS (
                SELECT
                  i.annee_id,
                  vh.type_volume_horaire_id,
                  s.intervenant_id,
                  s.element_pedagogique_id,
                  vh.type_intervention_id,
                  SUM(vh.heures) heures
                FROM
                  volume_horaire vh
                  JOIN service     s ON s.id = vh.service_id
                                    AND s.element_pedagogique_id IS NOT NULL
                                    AND s.histo_destruction IS NULL
                  JOIN intervenant i ON i.id = s.intervenant_id
                                    AND i.histo_destruction IS NULL
                WHERE
                  vh.histo_destruction IS NULL
                GROUP BY
                  i.annee_id,
                  vh.type_volume_horaire_id,
                  s.intervenant_id,
                  s.element_pedagogique_id,
                  vh.type_intervention_id
              )
              SELECT
                s.annee_id                                  annee_id,
                s.type_volume_horaire_id                    type_volume_horaire_id,
                s.intervenant_id                            intervenant_id,
                s.element_pedagogique_id                    element_pedagogique_id,
                s.type_intervention_id                      type_intervention_id,
                s.heures                                    heures,
                COALESCE(c.heures * c.groupes,0)            plafond,
                    2 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
                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
                s.heures - COALESCE(c.heures * c.groupes,0) > 0
            ) p
          ) p
          JOIN intervenant i ON i.id = p.intervenant_id
          LEFT JOIN plafond_statut ps ON 1 = 0