Commit 8b4e28eb authored by Laurent Lecluse's avatar Laurent Lecluse
Browse files

Modifs de la BDD pour la gestion de durée de vue des agréments

parent d5acc578
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -11,6 +11,7 @@ return [
        'INTERVENANT_ID',
        'STRUCTURE_ID',
        'TO_DELETE',
        'ANNEE_AGREMENT',
    ],
];

+1 −1
Original line number Diff line number Diff line
@@ -9,7 +9,7 @@ return [
    'columns' => [
        'TYPE_AGREMENT_ID',
        'STATUT_INTERVENANT_ID',
        'PREMIER_RECRUTEMENT',
        'HISTO_DESTRUCTION',
    ],
];

+0 −15
Original line number Diff line number Diff line
<?php

//@formatter:off

return [
    'name'    => 'TYPE_AGREMENT_STATUT__UN1',
    'unique'  => TRUE,
    'table'   => 'TYPE_AGREMENT_STATUT',
    'columns' => [
        'TYPE_AGREMENT_ID',
        'STATUT_INTERVENANT_ID',
    ],
];

//@formatter:on
+0 −1
Original line number Diff line number Diff line
@@ -388,7 +388,6 @@ CREATE OR REPLACE PACKAGE BODY OSE_WORKFLOW AS
            WHERE tas.histo_destruction IS NULL
              AND ta.code = e.code
              AND tas.statut_intervenant_id = si.id
              AND (tas.premier_recrutement IS NULL OR NVL(i.premier_recrutement,0) = tas.premier_recrutement)
          ) THEN 1 ELSE 0 END

        WHEN e.code = ''CONTRAT'' THEN
+117 −51
Original line number Diff line number Diff line
@@ -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
      v.VALIDATION_ID,
      v.FICHIER_ID,
      v.PIECE_JOINTE_ID,
      v.DATE_ARCHIVE,
      v.DATE_VALIDITE,
      v.DUREE_VIE,
      v.CODE_INTERVENANT,
      v.DATE_VALIDITE,
      v.DATE_ARCHIVE,
      0

    );
Loading