Commit c3f52d29 authored by Laurent Lecluse's avatar Laurent Lecluse
Browse files

- Modifications du connecteur côté Apogée

  - Suppression des tables tampon ose_groupe_type_formation et ose_type_formation
  - modification requête alimentation de ose_etape
- Suppression de la vue source src_groupe_type_formation : les groupes de type de formation sont maintenant gérés directement dans OSE
- Modification de src_type_formation : la vue va puiser ses données dans la table Apogée `typ_diplome`
- Modification de src_etape : la vue puise dans la table OSE des groupes de type de formation pour détecter si le niveau est pertinent ou non
parent 0a88281c
Loading
Loading
Loading
Loading
Loading
+1 −35
Changes for doc/Connecteurs-Import/Apogée/Apogee-OSE-createTables.sql: 1 added line, 35 removed lines.
Original line number Diff line number Diff line
@@ -3,41 +3,7 @@
-- Auteur : Bruno Bernard bruno.bernard@unicaen.fr
--
--
-- Groupes de types de formations a distinguer dans OSE
-- Ce sont ces regroupements de types de formations qui serviront de filtres dans les interfaces utilisateurs
--
create table ose_groupe_type_formation (
  libelle_long                   varchar2(60)            not null,
  libelle_court                  varchar2(20)            not null,
  ordre                          number(2)    default 99 not null, -- Ordre de classement des groupes de types de formation dans les interfaces utilisateurs
  pertinence_niveau              number(1)    default  0 not null, -- Est-il pertinent de suffixer le libelle court par le niveau relatif de la VET dans le diplome?
  source_code                    varchar2(20)            not null,
  check (pertinence_niveau in (0, 1)),
  primary key (source_code)
  )
;
grant select on ose_groupe_type_formation to ose, ucbn_refer
;
create public synonym ose_groupe_type_formation for apogee.ose_groupe_type_formation
;
--
-- Types de formations
-- Table de correspondance entre les types de formations Apogee et les groupes de types de formations dans OSE
--
create table ose_type_formation (
  libelle_long                   varchar2(40)            not null,
  libelle_court                  varchar2(20)            not null,
  z_groupe_id                    varchar2(20)            not null,
  source_code                    varchar2(2)             not null,
  primary key (source_code),
  constraint ose_tyf_fk_groupe_type_form foreign key (z_groupe_id) references ose_groupe_type_formation (source_code),
  constraint ose_tyf_fk_typ_diplome foreign key (source_code) references typ_diplome (cod_tpd_etb)
  )
;
grant select on ose_type_formation to ose, ucbn_refer
;
create public synonym ose_type_formation for apogee.ose_type_formation
;

--
-- Etapes
-- Une etape OSE est assimilable a une VET Apogee
+5 −88
Changes for doc/Connecteurs-Import/Apogée/Apogee-OSE-export.sql: 5 added lines, 88 removed lines.
Original line number Diff line number Diff line
@@ -7,6 +7,8 @@
-- 04/10/2019 Mise en coherence entre les heures de type EAD et le flag a_distance : s il existe une charge EAD alors a_distance = Oui sinon a_distance = Non
-- 31/03/2021 Exclusion des ELP fictifs en testant le temoin TEM_FICTIF de leur nature et non plus leur code nature
-- 01/06/2021 Alimentation nouvelle table des effectifs par etape par annee et par regime d inscription
-- 22/07/2025 Suppression des tables tampon ose_groupe_type_formation et ose_type_formation, modification requête alimentation de ose_etape

--
-- Reinitialisation des tables
--
@@ -24,85 +26,8 @@ delete from ose_etape_effectifs
;
delete from ose_etape
;
delete from ose_type_formation
;
delete from ose_groupe_type_formation
;
--
-- Groupes de types de formations a distinguer dans OSE
-- Ce sont ces regroupements de types de formations qui serviront de filtres dans les interfaces utilisateurs
--
-- A : Libelle long
-- B : Le libelle court, eventuellement suffixe par le niveau relatif de la VET, servira a filtrer les formations (exemples L1 L2 L3 LPro ...)
-- C : Ordre de classement des groupes de types de formation dans les interfaces utilisateurs
-- D : Est-il pertinent de suffixer le libelle court par le niveau relatif de la VET dans le diplome? (0/1)
-- E : Identifiant du groupe de types de formations
--                                             A                                       B                   C  D  E
insert into ose_groupe_type_formation values ('Diplôme Universitaire de Technologie', 'DUT'               ,10,1,'DUT'        );
insert into ose_groupe_type_formation values ('Bachelor Universitaire de Technologie','BUT'               ,11,1,'BUT'        );
insert into ose_groupe_type_formation values ('PACES'                                ,'PACES'             ,21,0,'PACES'      );
insert into ose_groupe_type_formation values ('Etudes de Santé'                      ,'Santé'             ,22,1,'SANTE'      );
insert into ose_groupe_type_formation values ('Thèse d''exercice'                    ,'Thèse d''exercice' ,24,0,'THESE_EXER' );
insert into ose_groupe_type_formation values ('DES'                                  ,'DES'               ,25,0,'DES'        );
insert into ose_groupe_type_formation values ('DESC'                                 ,'DESC'              ,26,0,'DESC'       );
insert into ose_groupe_type_formation values ('Licence'                              ,'L'                 ,30,1,'L'          );
insert into ose_groupe_type_formation values ('Licence professionnelle'              ,'LPro'              ,35,0,'LP'         );
insert into ose_groupe_type_formation values ('Master'                               ,'M'                 ,40,1,'M'          );
insert into ose_groupe_type_formation values ('Diplôme d''ingénieur'                 ,'Ingénieur'         ,45,1,'ING'        );
insert into ose_groupe_type_formation values ('Diplôme d''université'                ,'DU'                ,60,0,'DU'         );
insert into ose_groupe_type_formation values ('Capacité'                             ,'Capacité'          ,70,0,'CAPA'       );
insert into ose_groupe_type_formation values ('Orthophonie'                          ,'Orthophonie'       ,71,0,'ORTHO'      );
insert into ose_groupe_type_formation values ('Maïeutique'                           ,'Maïeutique'        ,72,0,'MAIEUTIQUE' );
insert into ose_groupe_type_formation values ('Autre formation'                      ,'Autre'             ,99,0,'AUTRE'      );
--
-- Types de formations
-- Table de correspondance entre les types de formations Apogee et les groupes de types de formations dans OSE
--
insert into ose_type_formation
with tpd as (
  select
    lib_tpd                                    as libelle_long,  -- Libelle long Apogee
    lic_tpd                                    as libelle_court, -- Libelle court Apogee
    case cod_tpd_etb
      when '15' then 'DUT'
      when '16' then 'DUT'
      when 'BU' then 'BUT'
      when 'M1' then 'PACES'
      when 'M2' then 'SANTE'
      when '87' then 'SANTE'
      when '88' then 'SANTE'
      when '43' then 'THESE_EXER'
      when '45' then 'THESE_EXER'
      when '57' then 'DES'
      when '55' then 'DES'
      when '65' then 'DESC'
      when '23' then 'L'
      when 'AL' then 'L'
      when 'DL' then 'L'
      when 'CP' then 'L'
      when '22' then 'LP'
      when '37' then 'M'
      when '94' then 'M'
      when 'MA' then 'M'
      when 'DM' then 'M'
      when '33' then 'ING'
      when '68' then 'CAPA'
      when '93' then 'ORTHO'
      when '92' then 'MAIEUTIQUE'
      else case when cod_tpd_sis between 'UA' and 'UF' then 'DU'
        else 'AUTRE'
        end
      end                                      as z_groupe_id,   -- Id du groupe de types de formations
    cod_tpd_etb                                as source_code    -- Code type de diplome Apogee
  from typ_diplome
  where tem_en_sve_tpd = 'O'
  and ( eta_ths_hdr_drt is null or ( eta_ths_hdr_drt || tem_sante = 'TO' ) ) -- Exclusion des theses de recherche et HDR (formations sans enseignement)
  and cod_tpd_etb not in ('03')                                              -- Exclusion des auditeurs libres
  )
select tpd.*
from tpd
join ose_groupe_type_formation gtf on gtf.source_code = tpd.z_groupe_id
;


--
-- Etapes
-- Une etape OSE est assimilable a une VET Apogee
@@ -115,13 +40,7 @@ with
      nvl ( vet.lib_web_vet, etp.lib_etp )     as libelle,
      etp.lic_etp                              as libelle_court,
      min ( dip.cod_tpd_etb ) keep ( dense_rank first order by anu.cod_anu, vde.cod_etp, vde.cod_vrs_vet ) as z_type_formation_id,
      -- Determiner si la notion de niveau a du sens pour le type de formation
      min (
        case gtf.pertinence_niveau
          when 0 then null
          else vde.cod_sis_daa_min
          end
                            ) keep ( dense_rank first order by anu.cod_anu, vde.cod_etp, vde.cod_vrs_vet ) as niveau,
      min ( vde.cod_sis_daa_min ) keep ( dense_rank first order by anu.cod_anu, vde.cod_etp, vde.cod_vrs_vet ) as niveau,
      -- Identifiant de la structure dans le referentiel de l etablissement
      str.cod_str                              as z_structure_id,
      -- Reperer les formations dediees aux echanges
@@ -156,8 +75,6 @@ with
    join version_etape             vet on vet.cod_etp = vde.cod_etp and vet.cod_vrs_vet = vde.cod_vrs_vet
    join composante                cmp on cmp.cod_cmp = vet.cod_cmp
    join ucbn_composante_ldap      str on str.cod_cmp = cmp.cod_cmp         -- Recherche du code structure dans le referentiel des structures de l etablissement
    join ose_type_formation        tyf on tyf.source_code = dip.cod_tpd_etb
    join ose_groupe_type_formation gtf on gtf.source_code = tyf.z_groupe_id
    where anu.cod_anu >= to_char ( add_months ( sysdate, -18 ), 'YYYY' )    -- Par convention l annee debute le 1er juillet
    and cmp.cod_tpc! = 'EXT'                                                -- Exclusion des structures exterieures (IFSI, etc.)
    group by
+14 −6
Changes for doc/Connecteurs-Import/Apogée/Connecteur.md: 14 added lines, 6 removed lines.
Original line number Diff line number Diff line
# Connecteur Apogée

Le connecteur Apogée permet de synchroniser en import :
  * les étapes (formations) réparties en types de formation et en groupes de types de formation
  * les étapes (formations) réparties en types de formation
  * les éléments pédagogiques ainsi que les chemins pédagogiques (liens étapes / éléments)
  * les volumes horaires d'enseignement, c'est-à-dire les charges d'enseignements renseignées dans Apogée
  * Les effectifs, par élément pédagogique et bientôt par étape
@@ -14,6 +14,19 @@ Le connecteur Apogée est découpé en deux parties.
La première s'installe directement sur Apogée.
La seconde exploite la partie Apogée du connecteur et fournie les vues sources nécessaires pour les opérations de synchronisation. 


## Dernières modifications intervenues

### 22/07/2025

- Modifications du connecteur côté Apogée
  - Suppression des tables tampon ose_groupe_type_formation et ose_type_formation
  - modification requête alimentation de ose_etape
- Suppression de la vue source src_groupe_type_formation : les groupes de type de formation sont maintenant gérés directement dans OSE
- Modification de src_type_formation : la vue va puiser ses données dans la table Apogée `typ_diplome`
- Modification de src_etape : la vue puise dans la table OSE des groupes de type de formation pour détecter si le niveau est pertinent ou non


## Première partie : installation de la partie Apogée du connecteur
[Partie Apogée du connecteur](Apogee-OSE-lisezMoi.md)
  
@@ -63,11 +76,6 @@ Créez ensuite la vue [SRC_ETABLISSEMENT](SRC_ETABLISSEMENT.sql).

[Activez-là, puis tentez une synchronisation](../activer-synchroniser.md).

## Récupération des groupes de types de formation

Créez la vue [SRC_GROUPE_TYPE_FORMATION](SRC_GROUPE_TYPE_FORMATION.sql).

[Activez-là, puis tentez une synchronisation](../activer-synchroniser.md).

## Récupération des types de formation

+2 −1
Changes for doc/Connecteurs-Import/Apogée/SRC_ETAPE.sql: 2 added lines, 1 removed line.
Original line number Diff line number Diff line
@@ -4,7 +4,7 @@ SELECT
  e.libelle                           libelle,
  to_number(e.annee_id)               annee_id,
  tf.id                               type_formation_id,
  to_number(e.niveau)                 niveau,
  CASE WHEN gtf.pertinence_niveau = 0 THEN null ELSE to_number(e.niveau) END niveau,
  e.specifique_echanges               specifique_echanges,
  s.id                                structure_id,
  src.id                              source_id,
@@ -14,6 +14,7 @@ FROM
            ose_etape@apoprod            e
       JOIN source                     src ON src.code       = 'Apogee'
  LEFT JOIN type_formation              tf ON tf.source_code = e.z_type_formation_id
  LEFT JOIN groupe_type_formation      gtf ON gtf.id = tf.groupe_id
  LEFT JOIN SRC_HARPEGE_STRUCTURE_CODES sc ON sc.c_structure = e.z_structure_id
  LEFT JOIN structure                    s ON s.source_code  = sc.c_structure_n2
  LEFT JOIN domaine_fonctionnel         df ON df.source_code = e.domaine_fonctionnel
 No newline at end of file
+11 −7
Changes for doc/Connecteurs-Import/Apogée/SRC_TYPE_FORMATION.sql: 11 added lines, 7 removed lines.
Original line number Diff line number Diff line
CREATE OR REPLACE FORCE VIEW SRC_TYPE_FORMATION AS
SELECT
  tf.libelle_long   libelle_long,
  tf.libelle_court  libelle_court,
  gtf.id            groupe_id,
  s.id              source_id,
  tf.source_code    source_code
  lib_tpd libelle_long,
  lic_tpd libelle_court,
  cod_tpd_etb source_code,
  s.id source_id
FROM
            ose_type_formation@apoprod tf
  typ_diplome@apoprod
    JOIN source s ON s.code = 'Apogee'
  LEFT JOIN groupe_type_formation     gtf ON gtf.source_code = tf.z_groupe_id
 No newline at end of file
WHERE
  tem_en_sve_tpd = 'O'
  -- Exclusion des theses de recherche et HDR (formations sans enseignement)
  AND ( eta_ths_hdr_drt IS NULL OR ( eta_ths_hdr_drt || tem_sante = 'TO' ) )
  -- Exclusion des auditeurs libres
  AND cod_tpd_etb not in ('03')
 No newline at end of file