Commit a962bd94 authored by Laurent Lécluse's avatar Laurent Lécluse
Browse files

Nouvelles modifs pour plus de fiabilité au niveau des taux de mixité.

Mise à jour des filtres pour s'appuyer exclusivement sur l'année d'import minimal de l'ODF.

Suppression du filtre sur ETR
parent 32e89579
......@@ -102,7 +102,8 @@ Créez la vue [SRC_VOLUME_HORAIRE_ENS](SRC_VOLUME_HORAIRE_ENS.sql).
## Récupération des taux de mixité par élément pédagogique
Pour rappel, les taux de mixité permettent de savoir quel pourcentage des effectifs étudiants est en FI, en FC et en FA.
Dans l'exemple proposé ici, les taux de mixité sont calculés à partir des effectifs de l'année précédente.
Dans l'exemple proposé ici, les taux de mixité sont calculés à partir des effectifs
de l'année précédente et au bout de deux mois, ce sont les effectifs de l'année en cours qui sont utilisés.
Nous avons fait ce choix, car des taux de mixité doivent être aussi stables que possibles au cours d'une année : les mises en paiement en dépendent.
Vous trouverez [ici une documentation détaillée](../taux-repartition.md) sur le fonctionnement des taux de mixité.
......
CREATE OR REPLACE FORCE VIEW SRC_ELEMENT_TAUX_REGIMES AS
WITH apogee_query AS (
WITH aetr AS (
SELECT
e.z_element_pedagogique_id z_element_pedagogique_id,
-- à partir de décembre on synchronise avec l'année en cours, avant on se réfère à l'année antérieure
to_number(e.annee_id) + CASE WHEN COALESCE(p.ecart_mois,0) > 2 THEN 0 ELSE 1 END annee_id,
e.effectif_fi effectif_fi,
e.effectif_fc effectif_fc,
e.effectif_fa effectif_fa,
'Apogee' z_source_id,
TO_NUMBER(e.annee_id) + CASE WHEN COALESCE(p.ecart_mois,0) > 2 THEN 0 ELSE 1 END || '-' || e.z_element_pedagogique_id source_code
to_number(e.annee_id) annee_id,
e.effectif_fi effectif_fi,
e.effectif_fc effectif_fc,
e.effectif_fa effectif_fa
FROM
ose_element_effectifs@apoprod e
LEFT JOIN periode p ON p.code = OSE_DIVERS.DATE_TO_PERIODE_CODE(sysdate,TO_NUMBER(e.annee_id))
WHERE
(e.effectif_fi + e.effectif_fc + e.effectif_fa) > 0
)
SELECT
ep.id element_pedagogique_id,
aq.annee_id annee_id,
OSE_DIVERS.CALCUL_TAUX_FI( aq.effectif_fi, aq.effectif_fc, aq.effectif_fa, ep.fi, ep.fc, ep.fa ) taux_fi,
OSE_DIVERS.CALCUL_TAUX_FC( aq.effectif_fi, aq.effectif_fc, aq.effectif_fa, ep.fi, ep.fc, ep.fa ) taux_fc,
OSE_DIVERS.CALCUL_TAUX_FA( aq.effectif_fi, aq.effectif_fc, aq.effectif_fa, ep.fi, ep.fc, ep.fa ) taux_fa,
s.id source_id,
aq.source_code source_code
ep.id element_pedagogique_id,
ep.annee_id annee_id,
OSE_DIVERS.CALCUL_TAUX_FI( COALESCE(aetr.effectif_fi,aetraa.effectif_fi), COALESCE(aetr.effectif_fc,aetraa.effectif_fc), COALESCE(aetr.effectif_fa,aetraa.effectif_fa), ep.fi, ep.fc, ep.fa ) taux_fi,
OSE_DIVERS.CALCUL_TAUX_FC( COALESCE(aetr.effectif_fi,aetraa.effectif_fi), COALESCE(aetr.effectif_fc,aetraa.effectif_fc), COALESCE(aetr.effectif_fa,aetraa.effectif_fa), ep.fi, ep.fc, ep.fa ) taux_fc,
OSE_DIVERS.CALCUL_TAUX_FA( COALESCE(aetr.effectif_fi,aetraa.effectif_fi), COALESCE(aetr.effectif_fc,aetraa.effectif_fc), COALESCE(aetr.effectif_fa,aetraa.effectif_fa), ep.fi, ep.fc, ep.fa ) taux_fa,
s.id source_id,
ep.annee_id || '-' || ep.source_code source_code
FROM
apogee_query aq
JOIN source s ON s.code = aq.z_source_id
JOIN ELEMENT_PEDAGOGIQUE ep ON ep.source_code = aq.z_element_pedagogique_id AND ep.annee_id = aq.annee_id
element_pedagogique ep
JOIN source s ON s.code = 'Apogee'
-- on récupère la période de paiement de l'année universitaire correspondant à la date du jour
LEFT JOIN periode p ON p.code = OSE_DIVERS.DATE_TO_PERIODE_CODE(sysdate,ep.annee_id)
-- taux de mixité depuis Apogée,
-- si on est après le 1er décembre, donc que l'année universitaire est entammée depuis + de 2 mois,
-- alors on prend l'année en cours, sinon on prend les effectifs de l'année antérieure
LEFT JOIN aetr ON aetr.z_element_pedagogique_id = ep.source_code AND aetr.annee_id = ep.annee_id + CASE WHEN COALESCE(p.ecart_mois,0) > 2 THEN 0 ELSE -1 END
-- on récupère dans tous les les effectifs de l'année n-1
LEFT JOIN aetr aetraa ON aetraa.z_element_pedagogique_id = ep.source_code AND aetraa.annee_id = ep.annee_id - 1
-- on récupère les taux de mixité saisis dans OSE, comme ça s'il y en a, on ne fera pas de synchro pour ne pas les écraser
LEFT JOIN element_taux_regimes etr ON etr.element_pedagogique_id = ep.id AND etr.source_id <> s.id AND etr.histo_destruction IS NULL
WHERE
NOT EXISTS( -- on évite de remonter des données issus d'autres sources pour le pas risquer de les écraser!!
SELECT * FROM element_taux_regimes aq_tbl WHERE
aq_tbl.element_pedagogique_id = ep.id
AND aq_tbl.source_id <> s.id
)
-- les éléments pédagogiques doivent être actifs sinon pas de synchro
ep.histo_destruction IS NULL
-- il ne doit pas déjà y en avoir un de présent saisi direct dans OSE
AND etr.id IS NULL
-- pas d'import si pas d'effectifs n ou n-1
AND (aetr.z_element_pedagogique_id IS NOT NULL OR aetraa.z_element_pedagogique_id IS NOT NULL)
\ No newline at end of file
......@@ -632,16 +632,6 @@ rien ne sera modifié dans OSE, sous réserve que vous ayez mis en place les fil
Reste à exploiter ce paramètre pour filtrer les données import ne venant pas de FCA Manager. Bien entendu, les filtres
ci-dessous vous sont fournis à titre indicatif. Il vous revient de les adapter à vos besoins.
- Groupes de type de formation (table GROUPE_TYPE_FORMATION) et types de formation (TYPE_FORMATION)
Un même filtre est appliqué pour ces deux tables. La synchro ne se fait que si l'année d'import comfigurée dans les paramètres
généraux est supérieure à l'année minimale d'import d'ODF.
```sql
JOIN parametre amio ON amio.nom = 'annee_minimale_import_odf'
WHERE OSE_PARAMETRE.GET_ANNEE_IMPORT >= to_number(amio.valeur)
```
- Etapes, éléments, effectifs et noeuds (tables ETAPE, ELEMENT_PEDAGOGIQUE, EFFECTIFS et NOEUD)
Ces tables sont annualisées. On synchronise toutes les données issues de FCA Manager et les autres données si leur année n'est
......@@ -651,8 +641,7 @@ pas inférieure à l'année d'import ou à l'année minimale d'import de l'ODF.
JOIN source ON source.code = 'FCAManager'
JOIN parametre amio ON amio.nom = 'annee_minimale_import_odf'
WHERE
(annee_id >= OSE_PARAMETRE.GET_ANNEE_IMPORT AND annee_id >= to_number(amio.valeur))
OR source_id = source.id
(annee_id >= to_number(amio.valeur) OR source_id = source.id)
```
- Effectifs/étapes (table EFFECTIFS_ETAPE)
......@@ -665,8 +654,7 @@ JOIN source ON source.code = 'FCAManager'
JOIN etape e ON e.id = v_diff_effectifs_etape.etape_id
JOIN parametre amio ON amio.nom = 'annee_minimale_import_odf'
WHERE
(e.annee_id >= OSE_PARAMETRE.GET_ANNEE_IMPORT AND e.annee_id >= to_number(amio.valeur))
OR v_diff_effectifs_etape.source_id = source.id
(e.annee_id >= to_number(amio.valeur) OR v_diff_effectifs_etape.source_id = source.id)
```
- Chemins pédagogiques et volumes horaires d'enseignement (tables CHEMIN_PEDAGOGIQUE et VOLUME_HORAIRE_ENS)
......@@ -679,8 +667,7 @@ JOIN source ON source.code = 'FCAManager'
JOIN parametre amio ON amio.nom = 'annee_minimale_import_odf'
JOIN element_pedagogique ep ON ep.id = element_pedagogique_id
WHERE
(ep.annee_id >= OSE_PARAMETRE.GET_ANNEE_IMPORT AND ep.annee_id >= to_number(amio.valeur))
OR v_diff_chemin_pedagogique.source_id = source.id
(ep.annee_id >= to_number(amio.valeur) OR v_diff_chemin_pedagogique.source_id = source.id)
```
- Liens et scénarios par liens (tables LIEN et SCENARIO_LIEN)
......@@ -692,24 +679,11 @@ universitaire (exemple : `2018_{}MD22ENTB_M.DM240`).
JOIN source ON source.code = 'FCAManager'
JOIN parametre amio ON amio.nom = 'annee_minimale_import_odf'
WHERE
(SUBSTR(source_code,0,4) >= to_char(OSE_PARAMETRE.GET_ANNEE_IMPORT) AND SUBSTR(source_code,0,4) >= amio.valeur)
OR source_id = source.id
(SUBSTR(source_code,0,4) >= amio.valeur OR source_id = source.id)
```
- Taux de répartition FI/A/FC (ELEMENT_TAUX_REGIMES)
Dans OSE, on peut affecter das taux de répartition FI/FA/FC aux éléments pédagogiques. Ceci peut se faire directement dans le
logiciel. On peut aussi, comme ce qui se fait à Caen, pré-calculer ces taux sur la base des effectifs de l'année précédente.
On les initialise une fois sans jamais les mettre à jour (sauf si c'est "forcé" manuellement). Du coup, on fait toutes les
actions d'import sauf `update`.
```sql
JOIN element_pedagogique ep ON ep.id = element_pedagogique_id
JOIN parametre amio ON amio.nom = 'annee_minimale_import_odf'
WHERE IMPORT_ACTION IN ('delete','insert','undelete')
OR (ep.annee_id >= OSE_PARAMETRE.GET_ANNEE_IMPORT AND ep.annee_id >= to_number(amio.valeur))
```
## Traitement automatiques
......
......@@ -39,7 +39,10 @@ Là, une page vous permettra de saisir ces taux pour tout ou partie des élémen
Compte tenu du nombre de données à saisir, il est plus simple de mettre en place un traitement automatique pour renseigner ces informations,
la saisie manuelle pouvant être réservée aux cas particuliers.
A Caen, nous initialisons ces taux de mixité en nous basant sur les effectifs de l’année passée.
A Caen, nous initialisons ces taux de mixité en nous basant sur les effectifs de l’année passée en début d'année universitaire,
puis au 15 décembre, ce sont les effectifs de l'année en cours qui sont utilisés.
Ces données ne sont donc pas synchronisées tous les quarts d'heures comme les autres, mais deux fois par an.
# Architecture
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment