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
f992d1f5
Commit
f992d1f5
authored
Nov 10, 2021
by
Laurent Lecluse
Browse files
Options
Downloads
Patches
Plain Diff
#37737
parent
2c48bf5b
No related branches found
No related tags found
No related merge requests found
Changes
3
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
data/ddl/package/FORMULE_UPEC/body.sql
+1001
-0
1001 additions, 0 deletions
data/ddl/package/FORMULE_UPEC/body.sql
data/ddl/package/FORMULE_UPEC/definition.sql
+10
-0
10 additions, 0 deletions
data/ddl/package/FORMULE_UPEC/definition.sql
data/nomenclatures.php
+6
-0
6 additions, 0 deletions
data/nomenclatures.php
with
1017 additions
and
0 deletions
data/ddl/package/FORMULE_UPEC/body.sql
0 → 100644
+
1001
−
0
View file @
f992d1f5
CREATE
OR
REPLACE
PACKAGE
BODY
"FORMULE_UPEC"
AS
decalageLigne
NUMERIC
DEFAULT
0
;
/* Stockage des valeurs intermédiaires */
TYPE
t_cell
IS
RECORD
(
valeur
FLOAT
,
enCalcul
BOOLEAN
DEFAULT
FALSE
);
TYPE
t_cells
IS
TABLE
OF
t_cell
INDEX
BY
PLS_INTEGER
;
TYPE
t_coll
IS
RECORD
(
cells
t_cells
);
TYPE
t_colls
IS
TABLE
OF
t_coll
INDEX
BY
VARCHAR2
(
50
);
feuille
t_colls
;
debugLine
NUMERIC
;
PROCEDURE
dbg
(
val
CLOB
)
IS
BEGIN
ose_formule
.
volumes_horaires
.
items
(
debugLine
).
debug_info
:
=
ose_formule
.
volumes_horaires
.
items
(
debugLine
).
debug_info
||
val
;
END
;
PROCEDURE
dbgi
(
val
CLOB
)
IS
BEGIN
ose_formule
.
intervenant
.
debug_info
:
=
ose_formule
.
intervenant
.
debug_info
||
val
;
END
;
PROCEDURE
dbgDump
(
val
CLOB
)
IS
BEGIN
dbg
(
'<div class="dbg-dump">'
||
val
||
'</div>'
);
END
;
PROCEDURE
dbgCell
(
c
VARCHAR2
,
l
NUMERIC
,
val
FLOAT
)
IS
ligne
NUMERIC
;
BEGIN
ligne
:
=
l
;
IF
l
<>
0
THEN
ligne
:
=
ligne
+
decalageLigne
;
END
IF
;
dbgi
(
'[cell|'
||
c
||
'|'
||
ligne
||
'|'
||
val
);
END
;
PROCEDURE
dbgCalc
(
fncName
VARCHAR2
,
c
VARCHAR2
,
res
FLOAT
)
IS
BEGIN
dbgi
(
'[calc|'
||
fncName
||
'|'
||
c
||
'|'
||
res
);
END
;
FUNCTION
cell
(
c
VARCHAR2
,
l
NUMERIC
DEFAULT
0
)
RETURN
FLOAT
IS
val
FLOAT
;
BEGIN
IF
feuille
.
exists
(
c
)
THEN
IF
feuille
(
c
).
cells
.
exists
(
l
)
THEN
IF
feuille
(
c
).
cells
(
l
).
enCalcul
THEN
raise_application_error
(
-
20001
,
'Dépendance cyclique : la cellule ['
||
c
||
';'
||
l
||
'] est déjà en cours de calcul'
);
END
IF
;
RETURN
feuille
(
c
).
cells
(
l
).
valeur
;
END
IF
;
END
IF
;
feuille
(
c
).
cells
(
l
).
enCalcul
:
=
true
;
val
:
=
calcCell
(
c
,
l
);
IF
ose_formule
.
debug_actif
THEN
dbgCell
(
c
,
l
,
val
);
END
IF
;
feuille
(
c
).
cells
(
l
).
valeur
:
=
val
;
feuille
(
c
).
cells
(
l
).
enCalcul
:
=
false
;
RETURN
val
;
END
;
FUNCTION
mainCell
(
libelle
VARCHAR2
,
c
VARCHAR2
,
l
NUMERIC
)
RETURN
FLOAT
IS
val
FLOAT
;
BEGIN
debugLine
:
=
l
;
val
:
=
cell
(
c
,
l
);
RETURN
val
;
END
;
FUNCTION
calcFnc
(
fncName
VARCHAR2
,
c
VARCHAR2
)
RETURN
FLOAT
IS
val
FLOAT
;
cellRes
FLOAT
;
BEGIN
IF
feuille
.
exists
(
'__'
||
fncName
||
'__'
||
c
||
'__'
)
THEN
IF
feuille
(
'__'
||
fncName
||
'__'
||
c
||
'__'
).
cells
.
exists
(
1
)
THEN
RETURN
feuille
(
'__'
||
fncName
||
'__'
||
c
||
'__'
).
cells
(
1
).
valeur
;
END
IF
;
END
IF
;
CASE
-- Liste des fonctions supportées
WHEN
fncName
=
'total'
THEN
val
:
=
0
;
FOR
l
IN
1
..
ose_formule
.
volumes_horaires
.
length
LOOP
val
:
=
val
+
COALESCE
(
cell
(
c
,
l
),
0
);
END
LOOP
;
WHEN
fncName
=
'max'
THEN
val
:
=
NULL
;
FOR
l
IN
1
..
ose_formule
.
volumes_horaires
.
length
LOOP
cellRes
:
=
cell
(
c
,
l
);
IF
val
IS
NULL
OR
val
<
cellRes
THEN
val
:
=
cellRes
;
END
IF
;
END
LOOP
;
-- fin de la liste des fonctions supportées
ELSE
raise_application_error
(
-
20001
,
'La formule "'
||
fncName
||
'" n
''
existe pas!'
);
END
CASE
;
IF
ose_formule
.
debug_actif
THEN
dbgCalc
(
fncName
,
c
,
val
);
END
IF
;
feuille
(
'__'
||
fncName
||
'__'
||
c
||
'__'
).
cells
(
1
).
valeur
:
=
val
;
RETURN
val
;
END
;
FUNCTION
calcVersion
RETURN
NUMERIC
IS
BEGIN
RETURN
1
;
END
;
FUNCTION
calcCell
(
c
VARCHAR2
,
l
NUMERIC
)
RETURN
FLOAT
IS
vh
ose_formule
.
t_volume_horaire
;
i
ose_formule
.
t_intervenant
;
v
NUMERIC
;
val
FLOAT
;
BEGIN
v
:
=
calcVersion
;
i
:
=
ose_formule
.
intervenant
;
IF
l
>
0
THEN
vh
:
=
ose_formule
.
volumes_horaires
.
items
(
l
);
END
IF
;
CASE
WHEN
c
=
'CM'
AND
v
>=
1
THEN
IF
vh
.
type_intervention_code
=
'CM'
THEN
RETURN
vh
.
heures
;
ELSE
RETURN
0
;
END
IF
;
WHEN
c
=
'TD'
AND
v
>=
1
THEN
IF
vh
.
type_intervention_code
=
'TD'
THEN
RETURN
vh
.
heures
;
ELSE
RETURN
0
;
END
IF
;
WHEN
c
=
'TP'
AND
v
>=
1
THEN
IF
vh
.
type_intervention_code
=
'TP'
THEN
RETURN
vh
.
heures
;
ELSE
RETURN
0
;
END
IF
;
WHEN
c
=
'sCM'
AND
v
>=
1
THEN
RETURN
calcFnc
(
'total'
,
'CM'
);
WHEN
c
=
'sTD'
AND
v
>=
1
THEN
RETURN
calcFnc
(
'total'
,
'TD'
);
WHEN
c
=
'sTP'
AND
v
>=
1
THEN
RETURN
calcFnc
(
'total'
,
'TP'
);
WHEN
c
=
'sHeures'
AND
v
>=
1
THEN
RETURN
cell
(
'sCM'
)
+
cell
(
'sTD'
)
+
cell
(
'sTP'
);
-- =SI(I9=0;2/3;SI(I8="Oui";1 ;SI(SOMME(K26:K35)<=384;1;((384+((SOMME(K26:K35)-384)*(2/3)))/SOMME(K26:K35)))))
-- I8= TP vaut TD
-- I9 = i.heures_service_statutaire
-- I15 = i.service_du
-- I26:I35 = Somme des CM I=CM, J=TD, K=TP
-- K26:K35 = Somme des TP
WHEN
c
=
'tauxTPService'
AND
v
>=
1
THEN
IF
i
.
heures_service_statutaire
=
0
OR
LOWER
(
i
.
param_2
)
=
'oui'
THEN
RETURN
2
/
3
;
ELSE
-- SI(I8="Oui";SI(SOMME(I26:K35)=0;1;(2+(I15/((1,5*SOMME(I26:I35))+SOMME(J26:K35))))/3);SI(SOMME(K26:K35)<=384;1;((384+((SOMME(K26:K35)-384)*(2/3)))/SOMME(K26:K35))))
IF
LOWER
(
i
.
param_1
)
=
'oui'
THEN
RETURN
1
;
ELSE
-- SI(SOMME(K26:K35)<=384;1;((384+((SOMME(K26:K35)-384)*(2/3)))/SOMME(K26:K35)))
IF
cell
(
'sTP'
)
<=
384
THEN
RETURN
1
;
ELSE
--(384+((SOMME(K26:K35)-384)*(2/3)))/SOMME(K26:K35)
RETURN
(
384
+
((
cell
(
'sTP'
)
-
384
)
*
(
2
/
3
)))
/
cell
(
'sTP'
);
END
IF
;
END
IF
;
END
IF
;
-- =SI(I9=0;2/3;SI(I8="Oui";SI(SOMME(I26:K35)=0;1;(2+(I15/((1,5*SOMME(I26:I35))+SOMME(J26:K35))))/3);SI(SOMME(K26:K35)<=384;1;((384+((SOMME(K26:K35)-384)*(2/3)))/SOMME(K26:K35)))))
-- I8= TP vaut TD
-- I9 = i.heures_service_statutaire
-- I15 = i.service_du
-- I26:I35 = Somme des CM I=CM, J=TD, K=TP
-- K26:K35 = Somme des TP
WHEN
c
=
'tauxTPCompl'
AND
v
>=
1
THEN
IF
i
.
heures_service_statutaire
=
0
OR
LOWER
(
i
.
param_2
)
=
'oui'
THEN
RETURN
2
/
3
;
ELSE
-- SI(I8="Oui";SI(SOMME(I26:K35)=0;1;(2+(I15/((1,5*SOMME(I26:I35))+SOMME(J26:K35))))/3);SI(SOMME(K26:K35)<=384;1;((384+((SOMME(K26:K35)-384)*(2/3)))/SOMME(K26:K35))))
IF
LOWER
(
i
.
param_1
)
=
'oui'
THEN
-- SI(SOMME(I26:K35)=0;1;(2+(I15/((1,5*SOMME(I26:I35))+SOMME(J26:K35))))/3);
IF
cell
(
'sHeures'
)
=
0
THEN
RETURN
1
;
ELSE
-- (2+(I15/((1,5*SOMME(I26:I35))+SOMME(J26:K35))))/3
RETURN
(
2
+
(
i
.
service_du
/
((
1
.
5
*
cell
(
'sCM'
))
+
cell
(
'sTD'
)
+
cell
(
'sTP'
))))
/
3
;
END
IF
;
ELSE
-- SI(SOMME(K26:K35)<=384;1;((384+((SOMME(K26:K35)-384)*(2/3)))/SOMME(K26:K35)))
IF
cell
(
'sTP'
)
<=
384
THEN
RETURN
1
;
ELSE
--(384+((SOMME(K26:K35)-384)*(2/3)))/SOMME(K26:K35)
RETURN
(
384
+
((
cell
(
'sTP'
)
-
384
)
*
(
2
/
3
)))
/
cell
(
'sTP'
);
END
IF
;
END
IF
;
END
IF
;
WHEN
c
=
'tauxServiceDu'
AND
v
>=
1
THEN
IF
vh
.
type_intervention_code
=
'TP'
THEN
RETURN
cell
(
'tauxTPService'
);
ELSE
RETURN
vh
.
taux_service_du
;
END
IF
;
WHEN
c
=
'tauxServiceCompl'
AND
v
>=
1
THEN
IF
vh
.
type_intervention_code
=
'TP'
THEN
RETURN
cell
(
'tauxTPCompl'
);
ELSE
RETURN
vh
.
taux_service_compl
;
END
IF
;
-- t11=SI(ET($H26=$I$11;NON($F26));I26;0)
WHEN
c
=
't11'
AND
v
>=
1
THEN
IF
vh
.
volume_horaire_ref_id
IS
NULL
AND
vh
.
structure_is_affectation
AND
NOT
vh
.
taux_fc
=
1
THEN
RETURN
vh
.
heures
;
ELSE
RETURN
0
;
END
IF
;
-- t12=SI(ET($H26<>$I$11;NON($F26));I26;0)
WHEN
c
=
't12'
AND
v
>=
1
THEN
IF
vh
.
volume_horaire_ref_id
IS
NULL
AND
NOT
vh
.
structure_is_affectation
AND
NOT
vh
.
taux_fc
=
1
THEN
RETURN
vh
.
heures
;
ELSE
RETURN
0
;
END
IF
;
-- t13=SI(ET($H26=$I$11;$F26);I26;0)
WHEN
c
=
't13'
AND
v
>=
1
THEN
IF
vh
.
volume_horaire_ref_id
IS
NULL
AND
vh
.
structure_is_affectation
AND
vh
.
taux_fc
=
1
THEN
RETURN
vh
.
heures
;
ELSE
RETURN
0
;
END
IF
;
-- t14=SI(ET($H26<>$I$11;$F26);I26;0)
WHEN
c
=
't14'
AND
v
>=
1
THEN
IF
vh
.
volume_horaire_ref_id
IS
NULL
AND
NOT
vh
.
structure_is_affectation
AND
vh
.
taux_fc
=
1
THEN
RETURN
vh
.
heures
;
ELSE
RETURN
0
;
END
IF
;
-- t15=SI($H38=$I$11;I38;0)
WHEN
c
=
't15'
AND
v
>=
1
THEN
IF
vh
.
volume_horaire_ref_id
IS
NOT
NULL
AND
vh
.
structure_is_affectation
THEN
RETURN
vh
.
heures
;
ELSE
RETURN
0
;
END
IF
;
-- t16=SI(ET($H38<>$I$11;$H38<>$I$2);I38;0)
WHEN
c
=
't16'
AND
v
>=
1
THEN
IF
vh
.
volume_horaire_ref_id
IS
NOT
NULL
AND
NOT
vh
.
structure_is_affectation
AND
NOT
vh
.
structure_is_univ
THEN
RETURN
vh
.
heures
;
ELSE
RETURN
0
;
END
IF
;
-- t17=SI($H38=$I$2;I38;0)
WHEN
c
=
't17'
AND
v
>=
1
THEN
IF
vh
.
volume_horaire_ref_id
IS
NOT
NULL
AND
vh
.
structure_is_univ
THEN
RETURN
vh
.
heures
;
ELSE
RETURN
0
;
END
IF
;
-- t21=I47*I$24
WHEN
c
=
't21'
AND
v
>=
1
THEN
RETURN
cell
(
't11'
,
l
)
*
cell
(
'tauxServiceDu'
,
l
);
-- t22=S47*I$24
WHEN
c
=
't22'
AND
v
>=
1
THEN
RETURN
cell
(
't12'
,
l
)
*
cell
(
'tauxServiceDu'
,
l
);
-- t23=AC47*I$24
WHEN
c
=
't23'
AND
v
>=
1
THEN
RETURN
cell
(
't13'
,
l
)
*
cell
(
'tauxServiceDu'
,
l
);
-- t24=AM47*I$24
WHEN
c
=
't24'
AND
v
>=
1
THEN
RETURN
cell
(
't14'
,
l
)
*
cell
(
'tauxServiceDu'
,
l
);
-- t25=AW47*$R$5
WHEN
c
=
't25'
AND
v
>=
1
THEN
RETURN
cell
(
't15'
,
l
);
-- t26=AY47*$R$5
WHEN
c
=
't26'
AND
v
>=
1
THEN
RETURN
cell
(
't16'
,
l
);
-- t27=BA47*$R$5
WHEN
c
=
't27'
AND
v
>=
1
THEN
RETURN
cell
(
't17'
,
l
);
-- t31=MAX(I15-Q69;0)
WHEN
c
=
't31'
AND
v
>=
1
THEN
RETURN
GREATEST
(
ose_formule
.
intervenant
.
service_du
-
calcFnc
(
'total'
,
't21'
),
0
);
-- t32=MAX(Q71-AA69;0)
WHEN
c
=
't32'
AND
v
>=
1
THEN
RETURN
GREATEST
(
cell
(
't31'
)
-
calcFnc
(
'total'
,
't22'
),
0
);
-- t33=MAX(AA71-AK69;0)
WHEN
c
=
't33'
AND
v
>=
1
THEN
RETURN
GREATEST
(
cell
(
't32'
)
-
calcFnc
(
'total'
,
't23'
),
0
);
-- t34=MAX(AK71-AU69;0)
WHEN
c
=
't34'
AND
v
>=
1
THEN
RETURN
GREATEST
(
cell
(
't33'
)
-
calcFnc
(
'total'
,
't24'
),
0
);
-- t35=MAX(AU71-AW64;0)
WHEN
c
=
't35'
AND
v
>=
1
THEN
RETURN
GREATEST
(
cell
(
't34'
)
-
calcFnc
(
'total'
,
't25'
),
0
);
-- t36=MAX(AW71-AY64;0)
WHEN
c
=
't36'
AND
v
>=
1
THEN
RETURN
GREATEST
(
cell
(
't35'
,
l
)
-
calcFnc
(
'total'
,
't26'
),
0
);
-- t37=MAX(AY71-BA64;0)
WHEN
c
=
't37'
AND
v
>=
1
THEN
RETURN
GREATEST
(
cell
(
't36'
,
l
)
-
calcFnc
(
'total'
,
't27'
),
0
);
-- t41=SI($Q$69<>0;I59/$Q$69;0)
WHEN
c
=
't41'
AND
v
>=
1
THEN
IF
calcFnc
(
'total'
,
't21'
)
<>
0
THEN
RETURN
cell
(
't21'
,
l
)
/
calcFnc
(
'total'
,
't21'
);
ELSE
RETURN
0
;
END
IF
;
-- t42=SI($AA$69<>0;S59/$AA$69;0)
WHEN
c
=
't42'
AND
v
>=
1
THEN
IF
calcFnc
(
'total'
,
't22'
)
<>
0
THEN
RETURN
cell
(
't22'
,
l
)
/
calcFnc
(
'total'
,
't22'
);
ELSE
RETURN
0
;
END
IF
;
-- t43=SI($AK$69<>0;AC59/$AK$69;0)
WHEN
c
=
't43'
AND
v
>=
1
THEN
IF
calcFnc
(
'total'
,
't23'
)
<>
0
THEN
RETURN
cell
(
't23'
,
l
)
/
calcFnc
(
'total'
,
't23'
);
ELSE
RETURN
0
;
END
IF
;
-- t44=SI($AU$69<>0;AM59/$AU$69;0)
WHEN
c
=
't44'
AND
v
>=
1
THEN
IF
calcFnc
(
'total'
,
't24'
)
<>
0
THEN
RETURN
cell
(
't24'
,
l
)
/
calcFnc
(
'total'
,
't24'
);
ELSE
RETURN
0
;
END
IF
;
-- t45=SI($AW$64<>0;AW59/$AW$64;0)
WHEN
c
=
't45'
AND
v
>=
1
THEN
IF
calcFnc
(
'total'
,
't25'
)
<>
0
THEN
RETURN
cell
(
't25'
,
l
)
/
calcFnc
(
'total'
,
't25'
);
ELSE
RETURN
0
;
END
IF
;
-- t46=SI($AY$64<>0;AY59/$AY$64;0)
WHEN
c
=
't46'
AND
v
>=
1
THEN
IF
calcFnc
(
'total'
,
't26'
)
<>
0
THEN
RETURN
cell
(
't26'
,
l
)
/
calcFnc
(
'total'
,
't26'
);
ELSE
RETURN
0
;
END
IF
;
-- t47=SI($BA$64<>0;BA59/$BA$64;0)
WHEN
c
=
't47'
AND
v
>=
1
THEN
IF
calcFnc
(
'total'
,
't27'
)
<>
0
THEN
RETURN
cell
(
't27'
,
l
)
/
calcFnc
(
'total'
,
't27'
);
ELSE
RETURN
0
;
END
IF
;
-- t51=MIN($I$15;$Q$69)*I74
WHEN
c
=
't51'
AND
v
>=
1
THEN
RETURN
LEAST
(
ose_formule
.
intervenant
.
service_du
,
calcFnc
(
'total'
,
't21'
))
*
cell
(
't41'
,
l
);
-- t52=MIN($Q$71;$AA$69)*S74
WHEN
c
=
't52'
AND
v
>=
1
THEN
RETURN
LEAST
(
cell
(
't31'
),
calcFnc
(
'total'
,
't22'
))
*
cell
(
't42'
,
l
);
-- t53=MIN($AA$71;$AK$69)*AC74
WHEN
c
=
't53'
AND
v
>=
1
THEN
RETURN
LEAST
(
cell
(
't32'
),
calcFnc
(
'total'
,
't23'
))
*
cell
(
't43'
,
l
);
-- t54=MIN($AK$71;$AU$69)*AM74
WHEN
c
=
't54'
AND
v
>=
1
THEN
RETURN
LEAST
(
cell
(
't33'
),
calcFnc
(
'total'
,
't24'
))
*
cell
(
't44'
,
l
);
-- t55=MIN($AU$71;$AW$64)*AW74
WHEN
c
=
't55'
AND
v
>=
1
THEN
RETURN
LEAST
(
cell
(
't34'
),
calcFnc
(
'total'
,
't25'
))
*
cell
(
't45'
,
l
);
-- t56=MIN($AW$71;$AY$64)*AY74
WHEN
c
=
't56'
AND
v
>=
1
THEN
RETURN
LEAST
(
cell
(
't35'
),
calcFnc
(
'total'
,
't26'
))
*
cell
(
't46'
,
l
);
-- t57=MIN($AY$71;$BA$64)*BA74
WHEN
c
=
't57'
AND
v
>=
1
THEN
RETURN
LEAST
(
cell
(
't36'
),
calcFnc
(
'total'
,
't27'
))
*
cell
(
't47'
,
l
);
-- t61=I86*$C26
WHEN
c
=
't61'
AND
v
>=
1
THEN
RETURN
cell
(
't51'
,
l
)
*
vh
.
taux_fi
;
-- t62=S86*$C26
WHEN
c
=
't62'
AND
v
>=
1
THEN
RETURN
cell
(
't52'
,
l
)
*
vh
.
taux_fi
;
-- t71=I86*$D26
WHEN
c
=
't71'
AND
v
>=
1
THEN
RETURN
cell
(
't51'
,
l
)
*
vh
.
taux_fa
;
-- t72=S86*$D26
WHEN
c
=
't72'
AND
v
>=
1
THEN
RETURN
cell
(
't52'
,
l
)
*
vh
.
taux_fa
;
-- t81=I86*$E26
WHEN
c
=
't81'
AND
v
>=
1
THEN
RETURN
cell
(
't51'
,
l
)
*
vh
.
taux_fc
;
-- t82=S86*$E26
WHEN
c
=
't82'
AND
v
>=
1
THEN
RETURN
cell
(
't52'
,
l
)
*
vh
.
taux_fc
;
-- t83=AC86*$E26
WHEN
c
=
't83'
AND
v
>=
1
THEN
RETURN
cell
(
't53'
,
l
)
*
vh
.
taux_fc
;
-- t84=AM86*$E26
WHEN
c
=
't84'
AND
v
>=
1
THEN
RETURN
cell
(
't54'
,
l
)
*
vh
.
taux_fc
;
-- t91=SI(I59<>0;I86/I59;0)
WHEN
c
=
't91'
AND
v
>=
1
THEN
IF
cell
(
't21'
,
l
)
<>
0
THEN
RETURN
cell
(
't51'
,
l
)
/
cell
(
't21'
,
l
);
ELSE
RETURN
0
;
END
IF
;
-- t92=SI(S59<>0;S86/S59;0)
WHEN
c
=
't92'
AND
v
>=
1
THEN
IF
cell
(
't22'
,
l
)
<>
0
THEN
RETURN
cell
(
't52'
,
l
)
/
cell
(
't22'
,
l
);
ELSE
RETURN
0
;
END
IF
;
-- t93=SI(AC59<>0;AC86/AC59;0)
WHEN
c
=
't93'
AND
v
>=
1
THEN
IF
cell
(
't23'
,
l
)
<>
0
THEN
RETURN
cell
(
't53'
,
l
)
/
cell
(
't23'
,
l
);
ELSE
RETURN
0
;
END
IF
;
-- t94=SI(AM59<>0;AM86/AM59;0)
WHEN
c
=
't94'
AND
v
>=
1
THEN
IF
cell
(
't24'
,
l
)
<>
0
THEN
RETURN
cell
(
't54'
,
l
)
/
cell
(
't24'
,
l
);
ELSE
RETURN
0
;
END
IF
;
-- t95=SI(AW59<>0;AW86/AW59;0)
WHEN
c
=
't95'
AND
v
>=
1
THEN
IF
cell
(
't25'
,
l
)
<>
0
THEN
RETURN
cell
(
't55'
,
l
)
/
cell
(
't25'
,
l
);
ELSE
RETURN
0
;
END
IF
;
-- t96=SI(AY59<>0;AY86/AY59;0)
WHEN
c
=
't96'
AND
v
>=
1
THEN
IF
cell
(
't26'
,
l
)
<>
0
THEN
RETURN
cell
(
't56'
,
l
)
/
cell
(
't26'
,
l
);
ELSE
RETURN
0
;
END
IF
;
-- t97=SI(BA59<>0;BA86/BA59;0)
WHEN
c
=
't97'
AND
v
>=
1
THEN
IF
cell
(
't27'
,
l
)
<>
0
THEN
RETURN
cell
(
't57'
,
l
)
/
cell
(
't27'
,
l
);
ELSE
RETURN
0
;
END
IF
;
-- t101=SI($BA$71<>0;0;1-I134)
WHEN
c
=
't101'
AND
v
>=
1
THEN
IF
cell
(
't37'
)
<>
0
THEN
RETURN
0
;
ELSE
RETURN
1
-
cell
(
't91'
,
l
);
END
IF
;
-- t102=SI($BA$71<>0;0;1-S134)
WHEN
c
=
't102'
AND
v
>=
1
THEN
IF
cell
(
't37'
)
<>
0
THEN
RETURN
0
;
ELSE
RETURN
1
-
cell
(
't92'
,
l
);
END
IF
;
-- t103=SI($BA$71<>0;0;1-AC134)
WHEN
c
=
't103'
AND
v
>=
1
THEN
IF
cell
(
't37'
)
<>
0
THEN
RETURN
0
;
ELSE
RETURN
1
-
cell
(
't93'
,
l
);
END
IF
;
-- t104=SI($BA$71<>0;0;1-AM134)
WHEN
c
=
't104'
AND
v
>=
1
THEN
IF
cell
(
't37'
)
<>
0
THEN
RETURN
0
;
ELSE
RETURN
1
-
cell
(
't94'
,
l
);
END
IF
;
-- t105=SI($BA$71<>0;0;1-AW134)
WHEN
c
=
't105'
AND
v
>=
1
THEN
IF
cell
(
't37'
)
<>
0
THEN
RETURN
0
;
ELSE
RETURN
1
-
cell
(
't95'
,
l
);
END
IF
;
-- t106=SI($BA$71<>0;0;1-AY134)
WHEN
c
=
't106'
AND
v
>=
1
THEN
IF
cell
(
't37'
)
<>
0
THEN
RETURN
0
;
ELSE
RETURN
1
-
cell
(
't96'
,
l
);
END
IF
;
-- t107=SI($BA$71<>0;0;1-BA134)
WHEN
c
=
't107'
AND
v
>=
1
THEN
IF
cell
(
't37'
)
<>
0
THEN
RETURN
0
;
ELSE
RETURN
1
-
cell
(
't97'
,
l
);
END
IF
;
-- t111=I47*I$25*I146
WHEN
c
=
't111'
AND
v
>=
1
THEN
RETURN
cell
(
't11'
,
l
)
*
cell
(
'tauxServiceCompl'
,
l
)
*
cell
(
't101'
,
l
);
-- t112=S47*I$25*S146
WHEN
c
=
't112'
AND
v
>=
1
THEN
RETURN
cell
(
't12'
,
l
)
*
cell
(
'tauxServiceCompl'
,
l
)
*
cell
(
't102'
,
l
);
-- t113=AC47*I$25*AC146
WHEN
c
=
't113'
AND
v
>=
1
THEN
RETURN
cell
(
't13'
,
l
)
*
cell
(
'tauxServiceCompl'
,
l
)
*
cell
(
't103'
,
l
);
-- t114=AM47*I$25*AM146
WHEN
c
=
't114'
AND
v
>=
1
THEN
RETURN
cell
(
't14'
,
l
)
*
cell
(
'tauxServiceCompl'
,
l
)
*
cell
(
't104'
,
l
);
-- t115=AW47*$R$6*AW146
WHEN
c
=
't115'
AND
v
>=
1
THEN
RETURN
cell
(
't15'
,
l
)
*
cell
(
't105'
,
l
);
-- t116=AY47*$R$6*AY146
WHEN
c
=
't116'
AND
v
>=
1
THEN
RETURN
cell
(
't16'
,
l
)
*
cell
(
't106'
,
l
);
-- t117=BA47*$R$6*BA146
WHEN
c
=
't117'
AND
v
>=
1
THEN
RETURN
cell
(
't17'
,
l
)
*
cell
(
't107'
,
l
);
-- t123=AC158*SI($F26;$G26;1)
WHEN
c
=
't123'
AND
v
>=
1
THEN
IF
vh
.
taux_fc
=
1
THEN
RETURN
cell
(
't113'
,
l
)
*
vh
.
ponderation_service_compl
;
ELSE
RETURN
cell
(
't113'
,
l
);
END
IF
;
-- t124=AM158*SI($F26;$G26;1)
WHEN
c
=
't124'
AND
v
>=
1
THEN
IF
vh
.
taux_fc
=
1
THEN
RETURN
cell
(
't114'
,
l
)
*
vh
.
ponderation_service_compl
;
ELSE
RETURN
cell
(
't114'
,
l
);
END
IF
;
-- t131=I158*$C26
WHEN
c
=
't131'
AND
v
>=
1
THEN
RETURN
cell
(
't111'
,
l
)
*
vh
.
taux_fi
;
-- t132=S158*$C26
WHEN
c
=
't132'
AND
v
>=
1
THEN
RETURN
cell
(
't112'
,
l
)
*
vh
.
taux_fi
;
-- t141=I158*$D26
WHEN
c
=
't141'
AND
v
>=
1
THEN
RETURN
cell
(
't111'
,
l
)
*
vh
.
taux_fa
;
-- t142=S158*$D26
WHEN
c
=
't142'
AND
v
>=
1
THEN
RETURN
cell
(
't112'
,
l
)
*
vh
.
taux_fa
;
-- t151=I158*$E26
WHEN
c
=
't151'
AND
v
>=
1
THEN
RETURN
cell
(
't111'
,
l
)
*
vh
.
taux_fc
;
-- t152=S158*$E26
WHEN
c
=
't152'
AND
v
>=
1
THEN
RETURN
cell
(
't112'
,
l
)
*
vh
.
taux_fc
;
-- t153=SI(AC170=AC158;AC158;0)*$E26
WHEN
c
=
't153'
AND
v
>=
1
THEN
IF
cell
(
't123'
,
l
)
=
cell
(
't113'
,
l
)
THEN
RETURN
cell
(
't113'
,
l
);
ELSE
RETURN
0
;
END
IF
;
-- t154=SI(AM170=AM158;AM158;0)*$E26
WHEN
c
=
't154'
AND
v
>=
1
THEN
IF
cell
(
't124'
,
l
)
=
cell
(
't114'
,
l
)
THEN
RETURN
cell
(
't114'
,
l
);
ELSE
RETURN
0
;
END
IF
;
-- t163=SI(AC170<>AC158;AC170;0)*$E26
WHEN
c
=
't163'
AND
v
>=
1
THEN
IF
cell
(
't123'
,
l
)
<>
cell
(
't113'
,
l
)
THEN
RETURN
cell
(
't123'
,
l
);
ELSE
RETURN
0
;
END
IF
;
-- t164=SI(AM170<>AM158;AM170;0)*$E26
WHEN
c
=
't164'
AND
v
>=
1
THEN
IF
cell
(
't124'
,
l
)
<>
cell
(
't114'
,
l
)
THEN
RETURN
cell
(
't124'
,
l
);
ELSE
RETURN
0
;
END
IF
;
-- rs=SOMME(I98:AU98)
WHEN
c
=
'rs'
AND
v
>=
1
THEN
RETURN
cell
(
't61'
,
l
)
+
cell
(
't62'
,
l
);
-- ss=SOMME(I110:AU110)
WHEN
c
=
'ss'
AND
v
>=
1
THEN
RETURN
cell
(
't71'
,
l
)
+
cell
(
't72'
,
l
);
-- ts=SOMME(I122:AU122)
WHEN
c
=
'ts'
AND
v
>=
1
THEN
RETURN
cell
(
't81'
,
l
)
+
cell
(
't82'
,
l
)
+
cell
(
't83'
,
l
)
+
cell
(
't84'
,
l
);
-- us=SI($I$13="Oui";SOMME(I182:AU182);0)
WHEN
c
=
'us'
AND
v
>=
1
THEN
IF
NOT
ose_formule
.
intervenant
.
depassement_service_du_sans_hc
THEN
RETURN
cell
(
't131'
,
l
)
+
cell
(
't132'
,
l
);
ELSE
RETURN
0
;
END
IF
;
-- vs=SI($I$13="Oui";SOMME(I194:AU194);0)
WHEN
c
=
'vs'
AND
v
>=
1
THEN
IF
NOT
ose_formule
.
intervenant
.
depassement_service_du_sans_hc
THEN
RETURN
cell
(
't141'
,
l
)
+
cell
(
't142'
,
l
);
ELSE
RETURN
0
;
END
IF
;
-- ws=SI($I$13="Oui";SOMME(I206:AU206);0)
WHEN
c
=
'ws'
AND
v
>=
1
THEN
IF
NOT
ose_formule
.
intervenant
.
depassement_service_du_sans_hc
THEN
RETURN
cell
(
't151'
,
l
)
+
cell
(
't152'
,
l
)
+
cell
(
't153'
,
l
)
+
cell
(
't154'
,
l
);
ELSE
RETURN
0
;
END
IF
;
-- xs=SI($I$13="Oui";SOMME(I218:AU218);0)
WHEN
c
=
'xs'
AND
v
>=
1
THEN
IF
NOT
ose_formule
.
intervenant
.
depassement_service_du_sans_hc
THEN
RETURN
cell
(
't163'
,
l
)
+
cell
(
't164'
,
l
);
ELSE
RETURN
0
;
END
IF
;
-- rr=SOMME(AW86:BA86)
WHEN
c
=
'rr'
AND
v
>=
1
THEN
RETURN
cell
(
't55'
,
l
)
+
cell
(
't56'
,
l
)
+
cell
(
't57'
,
l
);
-- ur=SI($I$13="Oui";SOMME(AW158:BA158);0)
WHEN
c
=
'ur'
AND
v
>=
1
THEN
IF
NOT
ose_formule
.
intervenant
.
depassement_service_du_sans_hc
THEN
RETURN
cell
(
't115'
,
l
)
+
cell
(
't116'
,
l
)
+
cell
(
't117'
,
l
);
ELSE
RETURN
0
;
END
IF
;
ELSE
raise_application_error
(
-
20001
,
'La colonne c='
||
c
||
', l='
||
l
||
' n
''
existe pas!'
);
END
CASE
;
END
;
PROCEDURE
CALCUL_RESULTAT
IS
BEGIN
feuille
.
delete
;
IF
ose_formule
.
intervenant
.
depassement_service_du_sans_hc
THEN
-- HC traitées comme du service
ose_formule
.
intervenant
.
service_du
:
=
ose_formule
.
intervenant
.
heures_service_statutaire
+
ose_formule
.
intervenant
.
heures_service_modifie
;
END
IF
;
-- transmission des résultats aux volumes horaires et volumes horaires référentiel
FOR
l
IN
1
..
ose_formule
.
volumes_horaires
.
length
LOOP
ose_formule
.
volumes_horaires
.
items
(
l
).
service_fi
:
=
mainCell
(
'Service FI'
,
'rs'
,
l
);
ose_formule
.
volumes_horaires
.
items
(
l
).
service_fa
:
=
mainCell
(
'Service FA'
,
'ss'
,
l
);
ose_formule
.
volumes_horaires
.
items
(
l
).
service_fc
:
=
mainCell
(
'Service FC'
,
'ts'
,
l
);
ose_formule
.
volumes_horaires
.
items
(
l
).
service_referentiel
:
=
mainCell
(
'Service référentiel'
,
'rr'
,
l
);
ose_formule
.
volumes_horaires
.
items
(
l
).
heures_compl_fi
:
=
mainCell
(
'Heures compl. FI'
,
'us'
,
l
);
ose_formule
.
volumes_horaires
.
items
(
l
).
heures_compl_fa
:
=
mainCell
(
'Heures compl. FA'
,
'vs'
,
l
);
ose_formule
.
volumes_horaires
.
items
(
l
).
heures_compl_fc
:
=
mainCell
(
'Heures compl. FC'
,
'ws'
,
l
);
ose_formule
.
volumes_horaires
.
items
(
l
).
heures_compl_fc_majorees
:
=
mainCell
(
'Heures compl. FC Maj.'
,
'xs'
,
l
);
ose_formule
.
volumes_horaires
.
items
(
l
).
heures_compl_referentiel
:
=
mainCell
(
'Heures compl. référentiel'
,
'ur'
,
l
);
END
LOOP
;
END
;
FUNCTION
INTERVENANT_QUERY
RETURN
CLOB
IS
BEGIN
RETURN
'
SELECT
fi.*,
CASE WHEN si.code IN (
''
ENS_CH
''
,
''
ASS_MI_TPS
''
,
''
ENS_CH_LRU
''
,
''
DOCTOR
''
) THEN
''
oui
''
ELSE
''
non
''
END param_1,
CASE WHEN si.code IN (
''
LECTEUR
''
,
''
ATER
''
) THEN
''
oui
''
ELSE
''
non
''
END param_2,
NULL param_3,
NULL param_4,
NULL param_5
FROM
V_FORMULE_INTERVENANT fi
JOIN intervenant i ON i.id = fi.intervenant_id
JOIN statut_intervenant si ON si.id = i.statut_id
'
;
END
;
FUNCTION
VOLUME_HORAIRE_QUERY
RETURN
CLOB
IS
BEGIN
RETURN
'
SELECT
fvh.*,
NULL param_1,
NULL param_2,
NULL param_3,
NULL param_4,
NULL param_5
FROM
V_FORMULE_VOLUME_HORAIRE fvh
ORDER BY
ordre'
;
END
;
END
FORMULE_UPEC
;
\ No newline at end of file
This diff is collapsed.
Click to expand it.
data/ddl/package/FORMULE_UPEC/definition.sql
0 → 100644
+
10
−
0
View file @
f992d1f5
CREATE
OR
REPLACE
PACKAGE
"FORMULE_UPEC"
AS
PROCEDURE
CALCUL_RESULTAT
;
FUNCTION
calcCell
(
c
VARCHAR2
,
l
NUMERIC
)
RETURN
FLOAT
;
FUNCTION
INTERVENANT_QUERY
RETURN
CLOB
;
FUNCTION
VOLUME_HORAIRE_QUERY
RETURN
CLOB
;
END
FORMULE_UPEC
;
\ No newline at end of file
This diff is collapsed.
Click to expand it.
data/nomenclatures.php
+
6
−
0
View file @
f992d1f5
...
...
@@ -217,6 +217,12 @@ return [
'LIBELLE'
=>
'Université de Caen (version 2021)'
,
'PACKAGE_NAME'
=>
'FORMULE_UNICAEN'
,
],
20
=>
[
'LIBELLE'
=>
'Université Paris-Est Créteil'
,
'PACKAGE_NAME'
=>
'FORMULE_UPEC'
,
'I_PARAM_1_LIBELLE'
=>
'EC/Associé/Docteur'
,
'I_PARAM_2_LIBELLE'
=>
'Lecteur/ATER'
,
],
],
'MODELE_CONTRAT'
=>
[
...
...
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