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

Nouvelles corrections de bugs au niveau du calcul des charges, optimisation &...

Nouvelles corrections de bugs au niveau du calcul des charges, optimisation & suppression d'une vue devenue obsolète
parent 0af1409a
......@@ -358,75 +358,7 @@ CREATE OR REPLACE PACKAGE BODY "UNICAEN_TBL" AS
filter VARCHAR2(150);
viewQuery CLOB;
BEGIN
viewQuery := 'WITH t AS (
SELECT
n.annee_id annee_id,
n.noeud_id noeud_id,
sn.scenario_id scenario_id,
sne.type_heures_id type_heures_id,
ti.id type_intervention_id,
n.element_pedagogique_id element_pedagogique_id,
n.element_pedagogique_etape_id etape_id,
sne.etape_id etape_ens_id,
n.structure_id structure_id,
n.groupe_type_formation_id groupe_type_formation_id,
vhe.heures heures,
vhe.heures * ti.taux_hetd_service hetd,
GREATEST(COALESCE(sns.ouverture, 1),1) ouverture,
GREATEST(COALESCE(sns.dedoublement, snsetp.dedoublement, csdd.dedoublement,1),1) dedoublement,
COALESCE(sns.assiduite,1) assiduite,
sne.effectif*COALESCE(sns.assiduite,1) effectif,
SUM(sne.effectif*COALESCE(sns.assiduite,1))
OVER (PARTITION BY n.noeud_id, sn.scenario_id, ti.id) t_effectif,
AVG(GREATEST(COALESCE(sns.dedoublement, snsetp.dedoublement, csdd.dedoublement,1),1))
OVER (PARTITION BY n.noeud_id, sn.scenario_id, ti.id) t_dedoublement
FROM
scenario_noeud_effectif sne
JOIN etape e ON e.id = sne.etape_id
AND e.histo_destruction IS NULL
JOIN scenario_noeud sn ON sn.id = sne.scenario_noeud_id
AND sn.histo_destruction IS NULL
/*@NOEUD_ID=sn.noeud_id*/
/*@SCENARIO_ID=sn.scenario_id*/
JOIN tbl_noeud n ON n.noeud_id = sn.noeud_id
/*@ANNEE_ID=n.annee_id*/
/*@ELEMENT_PEDAGOGIQUE_ID=n.element_pedagogique_id*/
/*@ETAPE_ID=n.element_pedagogique_etape_id*/
JOIN volume_horaire_ens vhe ON vhe.element_pedagogique_id = n.element_pedagogique_id
AND vhe.histo_destruction IS NULL
AND vhe.heures > 0
JOIN type_intervention ti ON ti.id = vhe.type_intervention_id
LEFT JOIN tbl_noeud netp ON netp.etape_id = e.id
LEFT JOIN scenario_noeud snetp ON snetp.scenario_id = sn.scenario_id
AND snetp.noeud_id = netp.noeud_id
AND snetp.histo_destruction IS NULL
LEFT JOIN scenario_noeud_seuil snsetp ON snsetp.scenario_noeud_id = snetp.id
AND snsetp.type_intervention_id = ti.id
LEFT JOIN tbl_chargens_seuils_def csdd ON csdd.annee_id = n.annee_id
AND csdd.scenario_id = sn.scenario_id
AND csdd.type_intervention_id = ti.id
AND csdd.groupe_type_formation_id = n.groupe_type_formation_id
AND csdd.structure_id = n.structure_id
LEFT JOIN scenario_noeud_seuil sns ON sns.scenario_noeud_id = sn.id
AND sns.type_intervention_id = ti.id
WHERE
1=1
/*@ETAPE_ENS_ID=sne.etape_id*/
)
SELECT
viewQuery := 'SELECT
annee_id,
noeud_id,
scenario_id,
......@@ -443,23 +375,97 @@ CREATE OR REPLACE PACKAGE BODY "UNICAEN_TBL" AS
dedoublement,
assiduite,
effectif,
heures heures_ens,
heures_ens,
--t_effectif,t_dedoublement,
CASE WHEN t_effectif < ouverture THEN 0 ELSE
(CEIL(t_effectif / t_dedoublement) * effectif) / t_effectif
(CEIL(t_effectif / dedoublement) * effectif) / t_effectif
END groupes,
CASE WHEN t_effectif < ouverture THEN 0 ELSE
((CEIL(t_effectif / t_dedoublement) * effectif) / t_effectif) * heures
((CEIL(t_effectif / dedoublement) * effectif) / t_effectif) * heures_ens
END heures,
CASE WHEN t_effectif < ouverture THEN 0 ELSE
((CEIL(t_effectif / t_dedoublement) * effectif) / t_effectif) * hetd
((CEIL(t_effectif / dedoublement) * effectif) / t_effectif) * hetd
END hetd
FROM
t';
(
WITH seuils_perso AS (
SELECT
n.element_pedagogique_id,
n.etape_id,
sn.scenario_id,
sns.type_intervention_id,
sns.ouverture,
sns.dedoublement,
sns.assiduite
FROM
scenario_noeud_seuil sns
JOIN scenario_noeud sn ON sn.id = sns.scenario_noeud_id AND sn.histo_destruction IS NULL
JOIN noeud n ON n.id = sn.noeud_id
WHERE
sns.dedoublement IS NOT NULL
)
SELECT
n.annee_id annee_id,
n.noeud_id noeud_id,
sn.scenario_id scenario_id,
sne.type_heures_id type_heures_id,
ti.id type_intervention_id,
n.element_pedagogique_id element_pedagogique_id,
n.element_pedagogique_etape_id etape_id,
sne.etape_id etape_ens_id,
n.structure_id structure_id,
n.groupe_type_formation_id groupe_type_formation_id,
vhe.heures heures_ens,
vhe.heures * ti.taux_hetd_service hetd,
COALESCE(sep.ouverture, se.ouverture,1) ouverture,
COALESCE(sep.dedoublement, se.dedoublement, sd.dedoublement,1) dedoublement,
COALESCE(sep.assiduite,1) assiduite,
sne.effectif*COALESCE(sep.assiduite,1) effectif,
SUM(sne.effectif*COALESCE(sep.assiduite,1))
OVER (PARTITION BY n.noeud_id, sn.scenario_id, ti.id) t_effectif
FROM
scenario_noeud_effectif sne
JOIN scenario_noeud sn ON sn.id = sne.scenario_noeud_id
AND sn.histo_destruction IS NULL
/*@NOEUD_ID=sn.noeud_id*/
/*@SCENARIO_ID=sn.scenario_id*/
JOIN tbl_noeud n ON n.noeud_id = sn.noeud_id
/*@ANNEE_ID=n.annee_id*/
/*@ELEMENT_PEDAGOGIQUE_ID=n.element_pedagogique_id*/
/*@ETAPE_ID=n.element_pedagogique_etape_id*/
JOIN volume_horaire_ens vhe ON vhe.element_pedagogique_id = n.element_pedagogique_id
AND vhe.histo_destruction IS NULL
AND vhe.heures > 0
JOIN type_intervention ti ON ti.id = vhe.type_intervention_id
LEFT JOIN seuils_perso sep ON sep.element_pedagogique_id = n.element_pedagogique_id
AND sep.scenario_id = sn.scenario_id
AND sep.type_intervention_id = ti.id
LEFT JOIN seuils_perso se ON se.etape_id = n.element_pedagogique_etape_id
AND sep.scenario_id = sn.scenario_id
AND sep.type_intervention_id = ti.id
LEFT JOIN tbl_chargens_seuils_def sd ON sd.annee_id = n.annee_id
AND sd.scenario_id = sn.scenario_id
AND sd.structure_id = n.structure_etape_id
AND sd.groupe_type_formation_id = n.groupe_type_formation_id
AND sd.type_intervention_id = ti.id
WHERE
1=1
/*@ETAPE_ENS_ID=sne.etape_id*/
) t';
IF param IS NULL THEN
filter := '1=1';
......
CREATE OR REPLACE FORCE VIEW V_CHARGENS_SEUILS_DED_DEF AS
WITH seuils_perso AS (
SELECT
n.element_pedagogique_id,
n.etape_id,
sn.scenario_id,
sns.type_intervention_id,
sns.ouverture,
sns.dedoublement,
sns.assiduite
FROM
scenario_noeud_seuil sns
JOIN scenario_noeud sn ON sn.id = sns.scenario_noeud_id AND sn.histo_destruction IS NULL
JOIN noeud n ON n.id = sn.noeud_id
WHERE
sns.dedoublement IS NOT NULL
)
SELECT
n.noeud_id noeud_id,
s.id scenario_id,
ti.id type_intervention_id,
COALESCE(sep.ouverture, se.ouverture) ouverture,
COALESCE(sep.dedoublement, se.dedoublement, sd.dedoublement) dedoublement,
sep.assiduite assiduite
FROM
tbl_noeud n
JOIN scenario s ON s.histo_destruction IS NULL
JOIN type_intervention ti ON ti.histo_destruction IS NULL
LEFT JOIN seuils_perso sep ON sep.element_pedagogique_id = n.element_pedagogique_id
AND sep.scenario_id = s.id
AND sep.type_intervention_id = ti.id
LEFT JOIN seuils_perso se ON se.etape_id = n.element_pedagogique_etape_id
AND sep.scenario_id = s.id
AND sep.type_intervention_id = ti.id
LEFT JOIN tbl_chargens_seuils_def sd ON sd.annee_id = n.annee_id
AND sd.scenario_id = s.id
AND sd.structure_id = n.structure_etape_id
AND sd.groupe_type_formation_id = n.groupe_type_formation_id
AND sd.type_intervention_id = ti.id
\ No newline at end of file
CREATE OR REPLACE FORCE VIEW V_TBL_CHARGENS AS
WITH t AS (
SELECT
n.annee_id annee_id,
n.noeud_id noeud_id,
sn.scenario_id scenario_id,
sne.type_heures_id type_heures_id,
ti.id type_intervention_id,
n.element_pedagogique_id element_pedagogique_id,
n.element_pedagogique_etape_id etape_id,
sne.etape_id etape_ens_id,
n.structure_id structure_id,
n.groupe_type_formation_id groupe_type_formation_id,
vhe.heures heures,
vhe.heures * ti.taux_hetd_service hetd,
GREATEST(COALESCE(sns.ouverture, 1),1) ouverture,
GREATEST(COALESCE(sns.dedoublement, snsetp.dedoublement, csdd.dedoublement,1),1) dedoublement,
COALESCE(sns.assiduite,1) assiduite,
sne.effectif*COALESCE(sns.assiduite,1) effectif,
SUM(sne.effectif*COALESCE(sns.assiduite,1))
OVER (PARTITION BY n.noeud_id, sn.scenario_id, ti.id) t_effectif,
AVG(GREATEST(COALESCE(sns.dedoublement, snsetp.dedoublement, csdd.dedoublement,1),1))
OVER (PARTITION BY n.noeud_id, sn.scenario_id, ti.id) t_dedoublement
FROM
scenario_noeud_effectif sne
JOIN etape e ON e.id = sne.etape_id
AND e.histo_destruction IS NULL
JOIN scenario_noeud sn ON sn.id = sne.scenario_noeud_id
AND sn.histo_destruction IS NULL
/*@NOEUD_ID=sn.noeud_id*/
/*@SCENARIO_ID=sn.scenario_id*/
JOIN tbl_noeud n ON n.noeud_id = sn.noeud_id
/*@ANNEE_ID=n.annee_id*/
/*@ELEMENT_PEDAGOGIQUE_ID=n.element_pedagogique_id*/
/*@ETAPE_ID=n.element_pedagogique_etape_id*/
JOIN volume_horaire_ens vhe ON vhe.element_pedagogique_id = n.element_pedagogique_id
AND vhe.histo_destruction IS NULL
AND vhe.heures > 0
JOIN type_intervention ti ON ti.id = vhe.type_intervention_id
LEFT JOIN scenario_noeud snetp ON snetp.scenario_id = sn.scenario_id
AND snetp.noeud_id = n.noeud_etape_id
AND snetp.histo_destruction IS NULL
LEFT JOIN scenario_noeud_seuil snsetp ON snsetp.scenario_noeud_id = snetp.id
AND snsetp.type_intervention_id = ti.id
LEFT JOIN tbl_chargens_seuils_def csdd ON csdd.annee_id = n.annee_id
AND csdd.scenario_id = sn.scenario_id
AND csdd.type_intervention_id = ti.id
AND csdd.groupe_type_formation_id = n.groupe_type_formation_id
AND csdd.structure_id = n.structure_etape_id
LEFT JOIN scenario_noeud_seuil sns ON sns.scenario_noeud_id = sn.id
AND sns.type_intervention_id = ti.id
WHERE
1=1
/*@ETAPE_ENS_ID=sne.etape_id*/
)
SELECT
annee_id,
noeud_id,
......@@ -82,20 +16,94 @@ SELECT
dedoublement,
assiduite,
effectif,
heures heures_ens,
heures_ens,
--t_effectif,t_dedoublement,
CASE WHEN t_effectif < ouverture THEN 0 ELSE
(CEIL(t_effectif / t_dedoublement) * effectif) / t_effectif
(CEIL(t_effectif / dedoublement) * effectif) / t_effectif
END groupes,
CASE WHEN t_effectif < ouverture THEN 0 ELSE
((CEIL(t_effectif / t_dedoublement) * effectif) / t_effectif) * heures
((CEIL(t_effectif / dedoublement) * effectif) / t_effectif) * heures_ens
END heures,
CASE WHEN t_effectif < ouverture THEN 0 ELSE
((CEIL(t_effectif / t_dedoublement) * effectif) / t_effectif) * hetd
((CEIL(t_effectif / dedoublement) * effectif) / t_effectif) * hetd
END hetd
FROM
t
\ No newline at end of file
(
WITH seuils_perso AS (
SELECT
n.element_pedagogique_id,
n.etape_id,
sn.scenario_id,
sns.type_intervention_id,
sns.ouverture,
sns.dedoublement,
sns.assiduite
FROM
scenario_noeud_seuil sns
JOIN scenario_noeud sn ON sn.id = sns.scenario_noeud_id AND sn.histo_destruction IS NULL
JOIN noeud n ON n.id = sn.noeud_id
WHERE
sns.dedoublement IS NOT NULL
)
SELECT
n.annee_id annee_id,
n.noeud_id noeud_id,
sn.scenario_id scenario_id,
sne.type_heures_id type_heures_id,
ti.id type_intervention_id,
n.element_pedagogique_id element_pedagogique_id,
n.element_pedagogique_etape_id etape_id,
sne.etape_id etape_ens_id,
n.structure_id structure_id,
n.groupe_type_formation_id groupe_type_formation_id,
vhe.heures heures_ens,
vhe.heures * ti.taux_hetd_service hetd,
COALESCE(sep.ouverture, se.ouverture,1) ouverture,
COALESCE(sep.dedoublement, se.dedoublement, sd.dedoublement,1) dedoublement,
COALESCE(sep.assiduite,1) assiduite,
sne.effectif*COALESCE(sep.assiduite,1) effectif,
SUM(sne.effectif*COALESCE(sep.assiduite,1))
OVER (PARTITION BY n.noeud_id, sn.scenario_id, ti.id) t_effectif
FROM
scenario_noeud_effectif sne
JOIN scenario_noeud sn ON sn.id = sne.scenario_noeud_id
AND sn.histo_destruction IS NULL
/*@NOEUD_ID=sn.noeud_id*/
/*@SCENARIO_ID=sn.scenario_id*/
JOIN tbl_noeud n ON n.noeud_id = sn.noeud_id
/*@ANNEE_ID=n.annee_id*/
/*@ELEMENT_PEDAGOGIQUE_ID=n.element_pedagogique_id*/
/*@ETAPE_ID=n.element_pedagogique_etape_id*/
JOIN volume_horaire_ens vhe ON vhe.element_pedagogique_id = n.element_pedagogique_id
AND vhe.histo_destruction IS NULL
AND vhe.heures > 0
JOIN type_intervention ti ON ti.id = vhe.type_intervention_id
LEFT JOIN seuils_perso sep ON sep.element_pedagogique_id = n.element_pedagogique_id
AND sep.scenario_id = sn.scenario_id
AND sep.type_intervention_id = ti.id
LEFT JOIN seuils_perso se ON se.etape_id = n.element_pedagogique_etape_id
AND sep.scenario_id = sn.scenario_id
AND sep.type_intervention_id = ti.id
LEFT JOIN tbl_chargens_seuils_def sd ON sd.annee_id = n.annee_id
AND sd.scenario_id = sn.scenario_id
AND sd.structure_id = n.structure_etape_id
AND sd.groupe_type_formation_id = n.groupe_type_formation_id
AND sd.type_intervention_id = ti.id
WHERE
1=1
/*@ETAPE_ENS_ID=sne.etape_id*/
) t
\ No newline at end of file
......@@ -23,6 +23,7 @@ return [
'includes' => [
'V_INDIC_DIFF_DOSSIER',
'V_MEP_INTERVENANT_STRUCTURE',
'V_CHARGENS_SEUILS_DED_DEF',
],
],
'package' => [
......
......@@ -295,7 +295,7 @@ class NoeudProvider
csdd.type_intervention_id,
csdd.dedoublement
FROM
V_CHARGENS_SEUILS_DED_DEF csdd
tbl_chargens csdd
WHERE
csdd.noeud_id IN (" . $ids . ")
";
......
Markdown is supported
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