Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
OSE
Manage
Activity
Members
Labels
Plan
Wiki
Redmine
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Locked files
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Container registry
Model registry
Operate
Environments
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Code review analytics
Insights
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
GitLab community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
open-source
OSE
Commits
641c92d7
Commit
641c92d7
authored
Oct 3, 2019
by
Laurent Lecluse
Browse files
Options
Downloads
Plain Diff
Merge branch 'cherry-pick-
3ae4380c
' into 'master'
Doc changement d'années See merge request
!44
parents
8d87abf8
b88b8d76
Branches
Branches containing commit
Tags
Tags containing commit
1 merge request
!44
Doc changement d'années
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
doc/bo.md
+0
-0
0 additions, 0 deletions
doc/bo.md
doc/changement-annee.md
+351
-0
351 additions, 0 deletions
doc/changement-annee.md
with
351 additions
and
0 deletions
bo/
doc.md
→
doc
/bo
.md
+
0
−
0
View file @
641c92d7
File moved
This diff is collapsed.
Click to expand it.
doc/changement-annee.md
0 → 100644
+
351
−
0
View file @
641c92d7
# Changement d'année universitaire
Lors du changement d'année universitaire, il est parfois nécessaire de prolonger une offre de formation
ou bien de transférer des paramétrages de l'année courante vers la future année.
Une interface de configuration sera proposée à terme dans OSE pour réaliser ces tâches.
Pour le moment, le transfert de données d'une année sur l'autre doit se faire par le biais des requêtes fournies ci-dessous.
```
sql
-- Liste des éléments et étapes concernées
WITH
v
AS
(
SELECT
-- année à reverser (=2017 pour 2017/2018)
2018
annee
,
-- Source à dupliquer
'OSE'
source
,
-- Eléments
--NULL elements_codes -- à utiliser si pas de filtre par code
'
CODE.1
CODE.2
AUTRE_CODE
'
elements_codes
-- à utiliser pour ne transférer que certains codes
FROM
dual
)
SELECT
str
.
libelle_court
composante
,
e
.
code
etape_code
,
e
.
libelle
etape_libelle
,
ep
.
code
element_code
,
ep
.
libelle
element_libelle
FROM
v
JOIN
source
s
ON
s
.
code
=
v
.
source
JOIN
element_pedagogique
ep
ON
ep
.
source_id
=
s
.
id
AND
ep
.
annee_id
=
v
.
annee
AND
ep
.
histo_destruction
IS
NULL
JOIN
etape
e
ON
e
.
id
=
ep
.
etape_id
JOIN
structure
str
ON
str
.
id
=
ep
.
structure_id
WHERE
v
.
elements_codes
IS
NULL
OR
'
'
||
v
.
elements_codes
||
'
'
LIKE
'%
'
||
ep
.
code
||
'
%'
ORDER
BY
composante
,
etape_code
,
element_code
;
-- activer l'année
-- MAJ des paramètres généraux
-- Opération à répéter plusieurs fois, tant que des requêtes sont générées, car des dépendances entre données
--
WITH
v
AS
(
SELECT
p
.
*
,
p
.
annee
annee_id
,
u
.
id
utilisateur_id
,
s
.
id
source_id
FROM
(
SELECT
-- année à reverser (=2017 pour 2017/2018)
2018
annee
,
-- Source à dupliquer
'OSE'
source
,
-- Utilisateur créateur
'lecluse'
utilisateur
,
-- filtres (1 ou 0)
1
etapes
,
1
elements
,
1
chemins
,
1
volumes_horaires_ens
,
0
modulateurs
,
0
centres_couts
,
-- Eléments
-- NULL elements_codes -- à utiliser si pas de filtre par code
'
CODE.1
CODE.2
AUTRE_CODE
'
elements_codes
-- à utiliser pour ne transférer que certains codes
FROM
dual
)
p
JOIN
utilisateur
u
ON
u
.
username
=
p
.
utilisateur
JOIN
source
s
ON
s
.
code
=
p
.
source
)
SELECT
*
FROM
(
SELECT
'-- Passage de '
||
v
.
annee_id
||
' à '
||
(
v
.
annee_id
+
1
)
||
' --'
isql
FROM
v
UNION
ALL
SELECT
'------------------------- étapes -------------------------'
isql
FROM
dual
UNION
ALL
SELECT
DISTINCT
CASE
WHEN
e2
.
id
IS
NULL
THEN
'
INSERT INTO etape (
id,
libelle,
type_formation_id,
niveau,
specifique_echanges,
structure_id,
source_id, source_code,
histo_creation, histo_createur_id,
histo_modification, histo_modificateur_id,
domaine_fonctionnel_id,
annee_id,
code
) VALUES (
etape_id_seq.nextval,
q
''
['
||
e
.
libelle
||
']
''
,
'
||
COALESCE
(
to_char
(
e
.
type_formation_id
),
'NULL'
)
||
',
'
||
COALESCE
(
to_char
(
e
.
niveau
),
'NULL'
)
||
',
'
||
COALESCE
(
to_char
(
e
.
specifique_echanges
),
'NULL'
)
||
',
'
||
COALESCE
(
to_char
(
e
.
structure_id
),
'NULL'
)
||
',
'
||
e
.
source_id
||
', q
''
['
||
e
.
source_code
||
']
''
,
SYSDATE, '
||
v
.
utilisateur_id
||
',
SYSDATE, '
||
v
.
utilisateur_id
||
',
'
||
COALESCE
(
to_char
(
e
.
domaine_fonctionnel_id
),
'NULL'
)
||
',
'
||
(
v
.
annee_id
+
1
)
||
',
q
''
['
||
e
.
code
||
']
''
);'
ELSE
'-- CODE '
||
e2
.
code
||
' existant'
END
isql
FROM
v
JOIN
etape
e
ON
e
.
annee_id
=
v
.
annee_id
AND
e
.
source_id
=
v
.
source_id
AND
e
.
histo_destruction
IS
NULL
JOIN
element_pedagogique
ep
ON
ep
.
etape_id
=
e
.
id
AND
ep
.
histo_destruction
IS
NULL
AND
(
v
.
elements_codes
IS
NULL
OR
'
'
||
v
.
elements_codes
||
'
'
LIKE
'%
'
||
ep
.
code
||
'
%'
)
LEFT
JOIN
etape
e2
ON
e2
.
code
=
e
.
code
AND
e2
.
annee_id
=
e
.
annee_id
+
1
AND
e2
.
histo_destruction
IS
NULL
WHERE
v
.
etapes
=
1
UNION
ALL
SELECT
'------------------------- éléments pédagogiques -------------------------'
isql
FROM
dual
UNION
ALL
SELECT
CASE
WHEN
ep2
.
id
IS
NULL
THEN
'
INSERT INTO element_pedagogique (
ID,
CODE,
LIBELLE,
ETAPE_ID,
STRUCTURE_ID,
PERIODE_ID,
TAUX_FI, TAUX_FC, TAUX_FA,
TAUX_FOAD,
FI, FC, FA,
SOURCE_ID, SOURCE_CODE,
HISTO_CREATION, HISTO_CREATEUR_ID,
HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID,
ANNEE_ID,
DISCIPLINE_ID
) VALUES (
element_pedagogique_id_seq.nextval,
q
''
['
||
ep
.
code
||
']
''
,
q
''
['
||
ep
.
libelle
||
']
''
,
'
||
e2
.
id
||
',
'
||
ep
.
structure_id
||
',
'
||
NVL
(
to_char
(
ep
.
periode_id
),
'NULL'
)
||
',
'
||
TRIM
(
TO_CHAR
(
ep
.
taux_fi
,
'999.99'
))
||
', '
||
TRIM
(
TO_CHAR
(
ep
.
taux_fc
,
'999.99'
))
||
', '
||
TRIM
(
TO_CHAR
(
ep
.
taux_fa
,
'999.99'
))
||
',
'
||
TRIM
(
TO_CHAR
(
ep
.
taux_foad
,
'999.99'
))
||
',
'
||
TRIM
(
TO_CHAR
(
ep
.
fi
,
'999.99'
))
||
', '
||
TRIM
(
TO_CHAR
(
ep
.
fc
,
'999.99'
))
||
', '
||
TRIM
(
TO_CHAR
(
ep
.
fa
,
'999.99'
))
||
',
'
||
v
.
source_id
||
', q
''
['
||
ep
.
source_code
||
']
''
,
SYSDATE, '
||
v
.
utilisateur_id
||
',
SYSDATE, '
||
v
.
utilisateur_id
||
',
'
||
(
v
.
annee_id
+
1
)
||
',
'
||
NVL
(
to_char
(
ep
.
discipline_id
),
'NULL'
)
||
'
);
'
ELSE
'-- CODE '
||
ep2
.
code
||
' existant'
END
isql
FROM
v
JOIN
element_pedagogique
ep
ON
ep
.
annee_id
=
v
.
annee_id
AND
ep
.
source_id
=
v
.
source_id
AND
ep
.
histo_destruction
IS
NULL
JOIN
etape
e
ON
e
.
id
=
ep
.
etape_id
JOIN
etape
e2
ON
e2
.
code
=
e
.
code
AND
e2
.
annee_id
=
e
.
annee_id
+
1
AND
e2
.
histo_destruction
IS
NULL
LEFT
JOIN
element_pedagogique
ep2
ON
ep2
.
code
=
ep
.
code
AND
ep2
.
annee_id
=
ep
.
annee_id
+
1
AND
ep2
.
histo_destruction
IS
NULL
WHERE
v
.
elements
=
1
AND
(
v
.
elements_codes
IS
NULL
OR
'
'
||
v
.
elements_codes
||
'
'
LIKE
'%
'
||
ep
.
code
||
'
%'
)
UNION
ALL
SELECT
'------------------------- chemins pédagogiques -------------------------'
isql
FROM
dual
UNION
ALL
SELECT
CASE
WHEN
cp2
.
id
IS
NULL
THEN
'
INSERT INTO chemin_pedagogique(
ID,
ELEMENT_PEDAGOGIQUE_ID,
ETAPE_ID,
ORDRE,
SOURCE_ID, SOURCE_CODE,
HISTO_CREATION, HISTO_CREATEUR_ID,
HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID
) VALUES (
chemin_pedagogique_id_seq.nextval,
'
||
ep2
.
id
||
',
'
||
e2
.
id
||
',
'
||
rownum
||
',
'
||
v
.
source_id
||
', q
''
['
||
e2
.
source_code
||
'_'
||
ep2
.
source_code
||
'_'
||
(
v
.
annee_id
+
1
)
||
']
''
,
SYSDATE, '
||
v
.
utilisateur_id
||
',
SYSDATE, '
||
v
.
utilisateur_id
||
'
);
'
ELSE
'-- chemin d
''
élément CODE '
||
ep2
.
code
||
', étape CODE '
||
e2
.
code
||
' existant'
END
isql
FROM
v
JOIN
chemin_pedagogique
cp
ON
cp
.
source_id
=
v
.
source_id
AND
cp
.
histo_destruction
IS
NULL
JOIN
element_pedagogique
ep
ON
ep
.
id
=
cp
.
element_pedagogique_id
AND
ep
.
annee_id
=
v
.
annee_id
JOIN
etape
e
ON
e
.
id
=
cp
.
etape_id
JOIN
element_pedagogique
ep2
ON
ep2
.
code
=
ep
.
code
AND
ep2
.
annee_id
=
ep
.
annee_id
+
1
AND
ep2
.
histo_destruction
IS
NULL
JOIN
etape
e2
ON
e2
.
code
=
e
.
code
AND
e2
.
annee_id
=
e
.
annee_id
+
1
AND
e2
.
histo_destruction
IS
NULL
LEFT
JOIN
chemin_pedagogique
cp2
ON
cp2
.
etape_id
=
e2
.
id
AND
cp2
.
element_pedagogique_id
=
ep2
.
id
AND
cp2
.
histo_destruction
IS
NULL
WHERE
v
.
chemins
=
1
AND
(
v
.
elements_codes
IS
NULL
OR
'
'
||
v
.
elements_codes
||
'
'
LIKE
'%
'
||
ep
.
code
||
'
%'
)
UNION
ALL
SELECT
'------------------------- volumes_horaire_ens -------------------------'
isql
FROM
dual
UNION
ALL
SELECT
CASE
WHEN
vhe2
.
id
IS
NULL
THEN
'
INSERT INTO volume_horaire_ens (
id,
type_intervention_id,
heures,
source_id, source_code,
histo_creation, histo_createur_id,
histo_modification, histo_modificateur_id,
element_pedagogique_id,
groupes
) VALUES (
volume_horaire_ens_id_seq.nextval,
'
||
vhe
.
type_intervention_id
||
',
'
||
vhe
.
heures
||
',
'
||
v
.
source_id
||
', q
''
['
||
ep2
.
source_code
||
'_'
||
vhe
.
type_intervention_id
||
'_'
||
(
v
.
annee_id
+
1
)
||
']
''
,
SYSDATE, '
||
v
.
utilisateur_id
||
',
SYSDATE, '
||
v
.
utilisateur_id
||
',
'
||
ep2
.
id
||
',
'
||
COALESCE
(
to_char
(
vhe
.
groupes
),
'NULL'
)
||
'
);
'
ELSE
'-- VHE d
''
élément CODE '
||
ep2
.
code
||
', TI ID '
||
vhe
.
type_intervention_id
||
' existant'
END
isql
FROM
v
JOIN
volume_horaire_ens
vhe
ON
vhe
.
source_id
=
v
.
source_id
AND
vhe
.
histo_destruction
IS
NULL
JOIN
element_pedagogique
ep
ON
ep
.
id
=
vhe
.
element_pedagogique_id
AND
ep
.
annee_id
=
v
.
annee_id
JOIN
element_pedagogique
ep2
ON
ep2
.
code
=
ep
.
code
AND
ep2
.
annee_id
=
ep
.
annee_id
+
1
AND
ep2
.
histo_destruction
IS
NULL
LEFT
JOIN
volume_horaire_ens
vhe2
ON
vhe2
.
element_pedagogique_id
=
ep2
.
id
AND
vhe2
.
type_intervention_id
=
vhe
.
type_intervention_id
AND
vhe2
.
histo_destruction
IS
NULL
WHERE
v
.
volumes_horaires_ens
=
1
AND
(
v
.
elements_codes
IS
NULL
OR
'
'
||
v
.
elements_codes
||
'
'
LIKE
'%
'
||
ep
.
code
||
'
%'
)
UNION
ALL
SELECT
'------------------------- modulateurs -------------------------'
isql
FROM
dual
UNION
ALL
SELECT
CASE
WHEN
em2
.
id
IS
NULL
THEN
'
INSERT INTO ELEMENT_MODULATEUR(
ID,
ELEMENT_ID,
MODULATEUR_ID,
HISTO_CREATION, HISTO_CREATEUR_ID,
HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID
)VALUES(
ELEMENT_MODULATEUR_ID_SEQ.NEXTVAL,
'
||
ep2
.
id
||
',
'
||
em
.
modulateur_id
||
',
SYSDATE, '
||
v
.
utilisateur_id
||
',
SYSDATE, '
||
v
.
utilisateur_id
||
'
);'
ELSE
'-- EM d
''
élément CODE '
||
ep2
.
code
||
', Modulateur ID '
||
em
.
modulateur_id
||
' existant'
END
isql
FROM
v
JOIN
element_modulateur
em
ON
em
.
histo_destruction
IS
NULL
JOIN
element_pedagogique
ep
ON
ep
.
id
=
em
.
element_id
AND
ep
.
annee_id
=
v
.
annee_id
JOIN
element_pedagogique
ep2
ON
ep2
.
code
=
ep
.
code
AND
ep2
.
annee_id
=
ep
.
annee_id
+
1
AND
ep2
.
histo_destruction
IS
NULL
LEFT
JOIN
element_modulateur
em2
ON
em2
.
element_id
=
ep2
.
id
AND
em2
.
modulateur_id
=
em
.
modulateur_id
AND
em2
.
histo_destruction
IS
NULL
WHERE
v
.
modulateurs
=
1
AND
(
v
.
elements_codes
IS
NULL
OR
'
'
||
v
.
elements_codes
||
'
'
LIKE
'%
'
||
ep
.
code
||
'
%'
)
UNION
ALL
SELECT
'------------------------- centres de coûts -------------------------'
isql
FROM
dual
UNION
ALL
SELECT
CASE
WHEN
cce2
.
id
IS
NULL
THEN
'
INSERT INTO CENTRE_COUT_EP(
ID,
CENTRE_COUT_ID,
ELEMENT_PEDAGOGIQUE_ID,
TYPE_HEURES_ID,
SOURCE_ID,
SOURCE_CODE,
HISTO_CREATION, HISTO_CREATEUR_ID,
HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID
)VALUES(
CENTRE_COUT_EP_ID_SEQ.NEXTVAL,
'
||
cce
.
centre_cout_id
||
',
'
||
ep2
.
id
||
',
'
||
CCE
.
type_heures_id
||
',
'
||
CCE
.
source_id
||
',
''
N-1toN_
''
|| CENTRE_COUT_EP_ID_SEQ.CURRVAL,
SYSDATE, '
||
v
.
utilisateur_id
||
',
SYSDATE, '
||
v
.
utilisateur_id
||
'
);'
ELSE
'-- EM d
''
élément CODE '
||
ep2
.
code
||
', Centre coûts ID '
||
cce
.
centre_cout_id
||
' existant'
END
isql
FROM
v
JOIN
centre_cout_ep
cce
ON
cce
.
histo_destruction
IS
NULL
JOIN
element_pedagogique
ep
ON
ep
.
id
=
cce
.
element_pedagogique_id
AND
ep
.
annee_id
=
v
.
annee_id
JOIN
element_pedagogique
ep2
ON
ep2
.
code
=
ep
.
code
AND
ep2
.
annee_id
=
ep
.
annee_id
+
1
AND
ep2
.
histo_destruction
IS
NULL
LEFT
JOIN
centre_cout_ep
cce2
ON
cce2
.
centre_cout_id
=
cce
.
centre_cout_id
AND
cce2
.
element_pedagogique_id
=
cce
.
element_pedagogique_id
AND
cce2
.
type_heures_id
=
cce
.
type_heures_id
AND
cce2
.
histo_destruction
IS
NULL
WHERE
v
.
centres_couts
=
1
AND
(
v
.
elements_codes
IS
NULL
OR
'
'
||
v
.
elements_codes
||
'
'
LIKE
'%
'
||
ep
.
code
||
'
%'
)
)
t
```
\ No newline at end of file
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment