Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
OSE
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Iterations
Wiki
Requirements
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Locked files
Build
Pipelines
Jobs
Pipeline schedules
Test cases
Artifacts
Deploy
Releases
Container registry
Model registry
Operate
Environments
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Code review analytics
Issue analytics
Insights
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
open-source
OSE
Commits
a3232cf2
Commit
a3232cf2
authored
3 years ago
by
Laurent Lecluse
Browse files
Options
Downloads
Patches
Plain Diff
Finalisation du script de migration des paramètres de plafonds
parent
0e7a5a50
Branches
Branches containing commit
Tags
Tags containing commit
No related merge requests found
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
admin/migration/v18Plafonds.php
+426
-1
426 additions, 1 deletion
admin/migration/v18Plafonds.php
with
426 additions
and
1 deletion
admin/migration/v18Plafonds.php
+
426
−
1
View file @
a3232cf2
...
...
@@ -80,7 +80,9 @@ class v18Plafonds extends AbstractMigration
protected
function
after
()
{
$this
->
migrationParamsStructure
();
//$this->migrationParamsReferentiel();
//$this->migrationParamsStatut();
}
...
...
@@ -95,4 +97,427 @@ class v18Plafonds extends AbstractMigration
$c
->
end
(
'Préparation à la migration des indicateurs terminée'
);
}
public
function
migrationParamsStructure
()
{
$bdd
=
$this
->
manager
->
getBdd
();
$c
=
$this
->
manager
->
getOseAdmin
()
->
getConsole
();
$sql
=
"
SELECT
s.id entite_id,
p.id plafond_id,
CASE WHEN tvh.code = 'PREVU' THEN pa.plafond_etat_id ELSE NULL END plafond_etat_prevu_id,
CASE WHEN tvh.code = 'REALISE' THEN pa.plafond_etat_id ELSE NULL END plafond_etat_realise_id,
s.plafond_referentiel heures,
pa.annee_debut_id annee_id,
pa.annee_fin_id annee_fin_id
FROM
save_v18_structure s
JOIN plafond p ON p.numero = 15
JOIN save_v18_plafond_app pa ON pa.plafond_id = p.id
JOIN type_volume_horaire tvh ON tvh.id = pa.type_volume_horaire_id
WHERE
s.histo_destruction IS NULL
AND s.plafond_referentiel IS NOT NULL
AND pa.plafond_etat_id > 1
"
;
$data
=
[];
$qr
=
$bdd
->
select
(
$sql
);
foreach
(
$qr
as
$r
)
{
$anneeDebut
=
(
int
)
$r
[
'ANNEE_ID'
];
$anneeFin
=
(
int
)
$r
[
'ANNEE_FIN_ID'
];
if
(
$anneeFin
==
0
)
$anneeFin
=
2099
;
$plafondId
=
(
int
)
$r
[
'PLAFOND_ID'
];
$entiteId
=
(
int
)
$r
[
'ENTITE_ID'
];
$etatPrevuId
=
$r
[
'PLAFOND_ETAT_PREVU_ID'
]
?
(
int
)
$r
[
'PLAFOND_ETAT_PREVU_ID'
]
:
null
;
$etatRealiseId
=
$r
[
'PLAFOND_ETAT_REALISE_ID'
]
?
(
int
)
$r
[
'PLAFOND_ETAT_REALISE_ID'
]
:
null
;
$heures
=
$r
[
'HEURES'
]
?
(
int
)
$r
[
'HEURES'
]
:
0
;
for
(
$a
=
$anneeDebut
;
$a
<=
$anneeFin
;
$a
++
)
{
if
(
!
isset
(
$data
[
$a
][
$plafondId
][
$entiteId
]))
{
$data
[
$a
][
$plafondId
][
$entiteId
]
=
[
'saisie'
=>
$a
==
$anneeDebut
,
'PLAFOND_ETAT_PREVU_ID'
=>
1
,
// désactivé
'PLAFOND_ETAT_REALISE_ID'
=>
1
,
// désactivé
'HEURES'
=>
0
,
];
}
if
(
$etatPrevuId
!==
null
)
{
$data
[
$a
][
$plafondId
][
$entiteId
][
'PLAFOND_ETAT_PREVU_ID'
]
=
$etatPrevuId
;
}
if
(
$etatRealiseId
!==
null
)
{
$data
[
$a
][
$plafondId
][
$entiteId
][
'PLAFOND_ETAT_REALISE_ID'
]
=
$etatRealiseId
;
}
if
(
$heures
!==
null
)
{
$data
[
$a
][
$plafondId
][
$entiteId
][
'HEURES'
]
=
$heures
;
}
}
}
/* On supprime ce qui a déjà été créé */
$sql
=
"SELECT * FROM PLAFOND_STRUCTURE WHERE histo_destruction IS NULL"
;
$des
=
$bdd
->
select
(
$sql
);
foreach
(
$des
as
$de
)
{
$a
=
(
int
)
$de
[
'ANNEE_ID'
];
$p
=
(
int
)
$de
[
'PLAFOND_ID'
];
$e
=
(
int
)
$de
[
'STRUCTURE_ID'
];
unset
(
$data
[
$a
][
$p
][
$e
]);
}
$inserts
=
[];
foreach
(
$data
as
$anneeId
=>
$data2
)
{
foreach
(
$data2
as
$plafondId
=>
$data3
)
{
foreach
(
$data3
as
$entiteId
=>
$d
)
{
$insert
=
$d
;
$insert
[
'ANNEE_ID'
]
=
$anneeId
;
$insert
[
'PLAFOND_ID'
]
=
$plafondId
;
$insert
[
'ENTITE_ID'
]
=
$entiteId
;
$insert
[
'HISTO_CREATION'
]
=
new
\DateTime
();
$insert
[
'HISTO_CREATEUR_ID'
]
=
$this
->
manager
->
getOseAdmin
()
->
getOseAppliId
();
$insert
[
'HISTO_MODIFICATION'
]
=
new
\DateTime
();
$insert
[
'HISTO_MODIFICATEUR_ID'
]
=
$d
[
'saisie'
]
?
$this
->
manager
->
getOseAdmin
()
->
getOseAppliId
()
:
null
;
unset
(
$insert
[
'saisie'
]);
$inserts
[]
=
$insert
;
}
}
}
$c
->
begin
(
'Convertion des paramètres de plafonds pour les structures'
);
$count
=
count
(
$inserts
);
foreach
(
$inserts
as
$current
=>
$insert
)
{
$insert
[
'STRUCTURE_ID'
]
=
$insert
[
'ENTITE_ID'
];
unset
(
$insert
[
'ENTITE_ID'
]);
$c
->
msg
(
'Ajout du paramètre '
.
(
$current
+
1
)
.
' sur '
.
$count
.
' ...'
,
true
);
$bdd
->
getTable
(
'PLAFOND_STRUCTURE'
)
->
insert
(
$insert
);
}
$c
->
begin
(
'Fin de la convertion des paramètres de plafonds pour les structures'
);
}
public
function
migrationParamsReferentiel
()
{
$bdd
=
$this
->
manager
->
getBdd
();
$c
=
$this
->
manager
->
getOseAdmin
()
->
getConsole
();
$sql
=
"
SELECT
r.id entite_id,
p.id plafond_id,
pa.annee_debut_id annee_id,
CASE WHEN tvh.code = 'PREVU' THEN pa.plafond_etat_id ELSE NULL END plafond_etat_prevu_id,
CASE WHEN tvh.code = 'REALISE' THEN pa.plafond_etat_id ELSE NULL END plafond_etat_realise_id,
r.plafond heures,
pa.annee_fin_id annee_fin_id
FROM
save_v18_referentiel r
JOIN plafond p ON p.numero = 17
JOIN save_v18_plafond_app pa ON pa.plafond_id = p.id
JOIN type_volume_horaire tvh ON tvh.id = pa.type_volume_horaire_id
LEFT JOIN plafond_referentiel pr ON pr.fonction_referentiel_id = r.id AND pr.plafond_id = p.id AND pr.annee_id = pa.annee_debut_id
WHERE
r.histo_destruction IS NULL
AND r.plafond IS NOT NULL
AND pr.id IS NULL
AND pa.plafond_etat_id > 1
"
;
$data
=
[];
$qr
=
$bdd
->
select
(
$sql
);
foreach
(
$qr
as
$r
)
{
$anneeDebut
=
(
int
)
$r
[
'ANNEE_ID'
];
$anneeFin
=
(
int
)
$r
[
'ANNEE_FIN_ID'
];
if
(
$anneeFin
==
0
)
$anneeFin
=
2099
;
$plafondId
=
(
int
)
$r
[
'PLAFOND_ID'
];
$entiteId
=
(
int
)
$r
[
'ENTITE_ID'
];
$etatPrevuId
=
$r
[
'PLAFOND_ETAT_PREVU_ID'
]
?
(
int
)
$r
[
'PLAFOND_ETAT_PREVU_ID'
]
:
null
;
$etatRealiseId
=
$r
[
'PLAFOND_ETAT_REALISE_ID'
]
?
(
int
)
$r
[
'PLAFOND_ETAT_REALISE_ID'
]
:
null
;
$heures
=
$r
[
'HEURES'
]
?
(
int
)
$r
[
'HEURES'
]
:
0
;
for
(
$a
=
$anneeDebut
;
$a
<=
$anneeFin
;
$a
++
)
{
if
(
!
isset
(
$data
[
$a
][
$plafondId
][
$entiteId
]))
{
$data
[
$a
][
$plafondId
][
$entiteId
]
=
[
'saisie'
=>
$a
==
$anneeDebut
,
'PLAFOND_ETAT_PREVU_ID'
=>
1
,
// désactivé
'PLAFOND_ETAT_REALISE_ID'
=>
1
,
// désactivé
'HEURES'
=>
0
,
];
}
if
(
$etatPrevuId
!==
null
)
{
$data
[
$a
][
$plafondId
][
$entiteId
][
'PLAFOND_ETAT_PREVU_ID'
]
=
$etatPrevuId
;
}
if
(
$etatRealiseId
!==
null
)
{
$data
[
$a
][
$plafondId
][
$entiteId
][
'PLAFOND_ETAT_REALISE_ID'
]
=
$etatRealiseId
;
}
if
(
$heures
!==
null
)
{
$data
[
$a
][
$plafondId
][
$entiteId
][
'HEURES'
]
=
$heures
;
}
}
}
/* On supprime ce qui a déjà été créé */
$sql
=
"SELECT * FROM PLAFOND_REFERENTIEL WHERE histo_destruction IS NULL"
;
$des
=
$bdd
->
select
(
$sql
);
foreach
(
$des
as
$de
)
{
$a
=
(
int
)
$de
[
'ANNEE_ID'
];
$p
=
(
int
)
$de
[
'PLAFOND_ID'
];
$e
=
(
int
)
$de
[
'FONCTION_REFERENTIEL_ID'
];
unset
(
$data
[
$a
][
$p
][
$e
]);
}
$inserts
=
[];
foreach
(
$data
as
$anneeId
=>
$data2
)
{
foreach
(
$data2
as
$plafondId
=>
$data3
)
{
foreach
(
$data3
as
$entiteId
=>
$d
)
{
$insert
=
$d
;
$insert
[
'ANNEE_ID'
]
=
$anneeId
;
$insert
[
'PLAFOND_ID'
]
=
$plafondId
;
$insert
[
'ENTITE_ID'
]
=
$entiteId
;
$insert
[
'HISTO_CREATION'
]
=
new
\DateTime
();
$insert
[
'HISTO_CREATEUR_ID'
]
=
$this
->
manager
->
getOseAdmin
()
->
getOseAppliId
();
$insert
[
'HISTO_MODIFICATION'
]
=
new
\DateTime
();
$insert
[
'HISTO_MODIFICATEUR_ID'
]
=
$d
[
'saisie'
]
?
$this
->
manager
->
getOseAdmin
()
->
getOseAppliId
()
:
null
;
unset
(
$insert
[
'saisie'
]);
$inserts
[]
=
$insert
;
}
}
}
$c
->
begin
(
'Convertion des paramètres de plafonds pour les fonctions référentielles'
);
$count
=
count
(
$inserts
);
foreach
(
$inserts
as
$current
=>
$insert
)
{
$insert
[
'FONCTION_REFERENTIEL_ID'
]
=
$insert
[
'ENTITE_ID'
];
unset
(
$insert
[
'ENTITE_ID'
]);
$c
->
msg
(
'Ajout du paramètre '
.
(
$current
+
1
)
.
' sur '
.
$count
.
' ...'
,
true
);
$bdd
->
getTable
(
'PLAFOND_REFERENTIEL'
)
->
insert
(
$insert
);
}
$c
->
begin
(
'Fin de la convertion des paramètres de plafonds pour les fonctions référentielles'
);
}
public
function
migrationParamsStatut
()
{
$bdd
=
$this
->
manager
->
getBdd
();
$c
=
$this
->
manager
->
getOseAdmin
()
->
getConsole
();
$sql
=
"
SELECT
s.code entite_id,
p.id plafond_id,
CASE WHEN tvh.code = 'PREVU' THEN pa.plafond_etat_id ELSE NULL END plafond_etat_prevu_id,
CASE WHEN tvh.code = 'REALISE' THEN pa.plafond_etat_id ELSE NULL END plafond_etat_realise_id,
os.plafond_hc_remu_fc heures,
pa.annee_debut_id annee_id,
pa.annee_fin_id annee_fin_id
FROM
save_v18_statut os
JOIN plafond p ON p.numero = 12
JOIN save_v18_plafond_app pa ON pa.plafond_id = p.id
JOIN statut s ON s.code = os.code AND s.annee_id = pa.annee_debut_id
JOIN type_volume_horaire tvh ON tvh.id = pa.type_volume_horaire_id
LEFT JOIN plafond_statut ps ON ps.statut_id = s.id AND ps.plafond_id = p.id AND ps.annee_id = pa.annee_debut_id
WHERE
os.histo_destruction IS NULL
AND os.plafond_hc_remu_fc IS NOT NULL
AND ps.id IS NULL
AND pa.plafond_etat_id > 1
UNION ALL
SELECT
s.code entite_id,
p.id plafond_id,
CASE WHEN tvh.code = 'PREVU' THEN pa.plafond_etat_id ELSE NULL END plafond_etat_prevu_id,
CASE WHEN tvh.code = 'REALISE' THEN pa.plafond_etat_id ELSE NULL END plafond_etat_realise_id,
os.plafond_referentiel heures,
pa.annee_debut_id annee_id,
pa.annee_fin_id annee_fin_id
FROM
save_v18_statut os
JOIN plafond p ON p.numero = 18
JOIN save_v18_plafond_app pa ON pa.plafond_id = p.id
JOIN statut s ON s.code = os.code AND s.annee_id = pa.annee_debut_id
JOIN type_volume_horaire tvh ON tvh.id = pa.type_volume_horaire_id
LEFT JOIN plafond_statut ps ON ps.statut_id = s.id AND ps.plafond_id = p.id AND ps.annee_id = pa.annee_debut_id
WHERE
os.histo_destruction IS NULL
AND os.plafond_referentiel IS NOT NULL
AND ps.id IS NULL
AND pa.plafond_etat_id > 1
UNION ALL
SELECT
s.code entite_id,
p.id plafond_id,
CASE WHEN tvh.code = 'PREVU' THEN pa.plafond_etat_id ELSE NULL END plafond_etat_prevu_id,
CASE WHEN tvh.code = 'REALISE' THEN pa.plafond_etat_id ELSE NULL END plafond_etat_realise_id,
os.maximum_hetd heures,
pa.annee_debut_id annee_id,
pa.annee_fin_id annee_fin_id
FROM
save_v18_statut os
JOIN plafond p ON p.numero = 11
JOIN save_v18_plafond_app pa ON pa.plafond_id = p.id
JOIN statut s ON s.code = os.code AND s.annee_id = pa.annee_debut_id
JOIN type_volume_horaire tvh ON tvh.id = pa.type_volume_horaire_id
LEFT JOIN plafond_statut ps ON ps.statut_id = s.id AND ps.plafond_id = p.id AND ps.annee_id = pa.annee_debut_id
WHERE
os.histo_destruction IS NULL
AND os.maximum_hetd IS NOT NULL
AND ps.id IS NULL
AND pa.plafond_etat_id > 1
UNION ALL
SELECT
s.code entite_id,
p.id plafond_id,
CASE WHEN tvh.code = 'PREVU' THEN pa.plafond_etat_id ELSE NULL END plafond_etat_prevu_id,
CASE WHEN tvh.code = 'REALISE' THEN pa.plafond_etat_id ELSE NULL END plafond_etat_realise_id,
os.plafond_hc_hors_remu_fc heures,
pa.annee_debut_id annee_id,
pa.annee_fin_id annee_fin_id
FROM
save_v18_statut os
JOIN plafond p ON p.numero = 10
JOIN save_v18_plafond_app pa ON pa.plafond_id = p.id
JOIN statut s ON s.code = os.code AND s.annee_id = pa.annee_debut_id
JOIN type_volume_horaire tvh ON tvh.id = pa.type_volume_horaire_id
LEFT JOIN plafond_statut ps ON ps.statut_id = s.id AND ps.plafond_id = p.id AND ps.annee_id = pa.annee_debut_id
WHERE
os.histo_destruction IS NULL
AND os.plafond_hc_hors_remu_fc IS NOT NULL
AND ps.id IS NULL
AND pa.plafond_etat_id > 1
UNION ALL
SELECT
s.code entite_id,
p.id plafond_id,
CASE WHEN tvh.code = 'PREVU' THEN pa.plafond_etat_id ELSE NULL END plafond_etat_prevu_id,
CASE WHEN tvh.code = 'REALISE' THEN pa.plafond_etat_id ELSE NULL END plafond_etat_realise_id,
os.plafond_hc_fi_hors_ead heures,
pa.annee_debut_id annee_id,
pa.annee_fin_id annee_fin_id
FROM
save_v18_statut os
JOIN plafond p ON p.numero = 13
JOIN save_v18_plafond_app pa ON pa.plafond_id = p.id
JOIN statut s ON s.code = os.code AND s.annee_id = pa.annee_debut_id
JOIN type_volume_horaire tvh ON tvh.id = pa.type_volume_horaire_id
LEFT JOIN plafond_statut ps ON ps.statut_id = s.id AND ps.plafond_id = p.id AND ps.annee_id = pa.annee_debut_id
WHERE
os.histo_destruction IS NULL
AND os.plafond_hc_fi_hors_ead IS NOT NULL
AND ps.id IS NULL
AND pa.plafond_etat_id > 1
"
;
$data
=
[];
$qr
=
$bdd
->
select
(
$sql
);
foreach
(
$qr
as
$r
)
{
$anneeDebut
=
(
int
)
$r
[
'ANNEE_ID'
];
$anneeFin
=
(
int
)
$r
[
'ANNEE_FIN_ID'
];
if
(
$anneeFin
==
0
)
$anneeFin
=
2099
;
$plafondId
=
(
int
)
$r
[
'PLAFOND_ID'
];
$entiteId
=
$r
[
'ENTITE_ID'
];
$etatPrevuId
=
$r
[
'PLAFOND_ETAT_PREVU_ID'
]
?
(
int
)
$r
[
'PLAFOND_ETAT_PREVU_ID'
]
:
null
;
$etatRealiseId
=
$r
[
'PLAFOND_ETAT_REALISE_ID'
]
?
(
int
)
$r
[
'PLAFOND_ETAT_REALISE_ID'
]
:
null
;
$heures
=
$r
[
'HEURES'
]
?
(
int
)
$r
[
'HEURES'
]
:
0
;
for
(
$a
=
$anneeDebut
;
$a
<=
$anneeFin
;
$a
++
)
{
if
(
!
isset
(
$data
[
$a
][
$plafondId
][
$entiteId
]))
{
$data
[
$a
][
$plafondId
][
$entiteId
]
=
[
'saisie'
=>
$a
==
$anneeDebut
,
'PLAFOND_ETAT_PREVU_ID'
=>
1
,
// désactivé
'PLAFOND_ETAT_REALISE_ID'
=>
1
,
// désactivé
'HEURES'
=>
0
,
];
}
if
(
$etatPrevuId
!==
null
)
{
$data
[
$a
][
$plafondId
][
$entiteId
][
'PLAFOND_ETAT_PREVU_ID'
]
=
$etatPrevuId
;
}
if
(
$etatRealiseId
!==
null
)
{
$data
[
$a
][
$plafondId
][
$entiteId
][
'PLAFOND_ETAT_REALISE_ID'
]
=
$etatRealiseId
;
}
if
(
$heures
!==
null
)
{
$data
[
$a
][
$plafondId
][
$entiteId
][
'HEURES'
]
=
$heures
;
}
}
}
/* On supprime ce qui a déjà été créé */
$sql
=
"SELECT * FROM PLAFOND_STATUT WHERE histo_destruction IS NULL"
;
$des
=
$bdd
->
select
(
$sql
);
foreach
(
$des
as
$de
)
{
$a
=
(
int
)
$de
[
'ANNEE_ID'
];
$p
=
(
int
)
$de
[
'PLAFOND_ID'
];
$e
=
(
int
)
$de
[
'STATUT_ID'
];
unset
(
$data
[
$a
][
$p
][
$e
]);
}
/* On récupère les statuts */
$sql
=
"SELECT code, annee_id, id FROM statut WHERE histo_destruction IS NULL"
;
$statuts
=
[];
$rs
=
$bdd
->
select
(
$sql
);
foreach
(
$rs
as
$r
)
{
$statuts
[
$r
[
'CODE'
]][(
int
)
$r
[
'ANNEE_ID'
]]
=
(
int
)
$r
[
'ID'
];
}
$inserts
=
[];
foreach
(
$data
as
$anneeId
=>
$data2
)
{
foreach
(
$data2
as
$plafondId
=>
$data3
)
{
foreach
(
$data3
as
$entiteId
=>
$d
)
{
$statutId
=
$statuts
[
$entiteId
][
$anneeId
]
??
null
;
$insert
=
$d
;
$insert
[
'ANNEE_ID'
]
=
$anneeId
;
$insert
[
'PLAFOND_ID'
]
=
$plafondId
;
$insert
[
'ENTITE_ID'
]
=
$statutId
;
$insert
[
'HISTO_CREATION'
]
=
new
\DateTime
();
$insert
[
'HISTO_CREATEUR_ID'
]
=
$this
->
manager
->
getOseAdmin
()
->
getOseAppliId
();
$insert
[
'HISTO_MODIFICATION'
]
=
new
\DateTime
();
$insert
[
'HISTO_MODIFICATEUR_ID'
]
=
$d
[
'saisie'
]
?
$this
->
manager
->
getOseAdmin
()
->
getOseAppliId
()
:
null
;
unset
(
$insert
[
'saisie'
]);
if
(
$statutId
)
{
$inserts
[]
=
$insert
;
}
}
}
}
$c
->
begin
(
'Convertion des paramètres de plafonds pour les statuts'
);
$count
=
count
(
$inserts
);
foreach
(
$inserts
as
$current
=>
$insert
)
{
$insert
[
'STATUT_ID'
]
=
$insert
[
'ENTITE_ID'
];
unset
(
$insert
[
'ENTITE_ID'
]);
$c
->
msg
(
'Ajout du paramètre '
.
(
$current
+
1
)
.
' sur '
.
$count
.
' ...'
,
true
);
$bdd
->
getTable
(
'PLAFOND_STATUT'
)
->
insert
(
$insert
);
}
$c
->
begin
(
'Fin de la convertion des paramètres de plafonds pour les statuts'
);
}
}
\ 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