diff --git a/admin/migration/v18Divers.php b/admin/migration/v18Divers.php
index d4b2d05d7377dc4f4db1be739c9e831379fdd987..6a5f81bf991810388f0ce85d39edc817bcef502c 100644
--- a/admin/migration/v18Divers.php
+++ b/admin/migration/v18Divers.php
@@ -27,25 +27,65 @@ class v18Divers extends AbstractMigration
$c = $this->manager->getOseAdmin()->getConsole();
try {
- $c->msg('Suppression de la contrainte TYPE_INTERVENANT_CODE_UN en prévision de sa recréation');
- $bdd->exec("DELETE FROM AFFECTATION_RECHERCHE WHERE structure_id NOT IN (SELECT ID FROM STRUCTURE)");
+ $c->msg('Coupure forcée de la synchronisation sur la table INTERVENANT');
+ $bdd->exec("UPDATE IMPORT_TABLES SET SYNC_ENABLED = 0 WHERE TABLE_NAME = 'INTERVENANT'");
} catch (\Exception $e) {
// rien à faire : la contrainte a déjà du être supprimée
}
+ $this->sauvegardes();
+
try {
$c->msg('Suppression de la contrainte TYPE_INTERVENANT_CODE_UN en prévision de sa recréation');
- $bdd->exec("ALTER TABLE TYPE_INTERVENANT DROP CONSTRAINT TYPE_INTERVENANT_CODE_UN");
+ $bdd->exec("DELETE FROM AFFECTATION_RECHERCHE WHERE structure_id NOT IN (SELECT ID FROM STRUCTURE)");
} catch (\Exception $e) {
// rien à faire : la contrainte a déjà du être supprimée
}
try {
- $c->msg('Coupure forcée de la synchronisation sur la table INTERVENANT');
- $bdd->exec("UPDATE IMPORT_TABLES SET SYNC_ENABLED = 0 WHERE TABLE_NAME = 'INTERVENANT'");
+ $c->msg('Suppression de la contrainte TYPE_INTERVENANT_CODE_UN en prévision de sa recréation');
+ $bdd->exec("ALTER TABLE TYPE_INTERVENANT DROP CONSTRAINT TYPE_INTERVENANT_CODE_UN");
} catch (\Exception $e) {
// rien à faire : la contrainte a déjà du être supprimée
}
}
+
+
+ protected function sauvegardes()
+ {
+ $bdd = $this->manager->getBdd();
+ $c = $this->manager->getOseAdmin()->getConsole();
+
+ $tables = [
+ 'INTERVENANT' => 'SAVE_V18_INTERVENANT',
+ 'INTERVENANT_DOSSIER' => 'SAVE_V18_DOSSIER',
+
+ 'TYPE_PIECE_JOINTE_STATUT' => 'SAVE_V18_TPJS',
+ 'TYPE_INTERVENTION_STATUT' => 'SAVE_V18_TIS',
+
+ 'STATUT_INTERVENANT' => 'SAVE_V18_STATUT',
+ 'STATUT_PRIVILEGE' => 'SAVE_V18_STATUT_PRIVILEGE',
+ 'TYPE_AGREMENT_STATUT' => 'SAVE_V18_TA_STATUT',
+ 'DOSSIER_CHAMP_AUTRE_PAR_STATUT' => 'SAVE_V18_DOSSIER_AUTRE_STATUT',
+ 'STRUCTURE' => 'SAVE_V18_STRUCTURE',
+ 'FONCTION_REFERENTIEL' => 'SAVE_V18_REFERENTIEL',
+ 'PLAFOND_APPLICATION' => 'SAVE_V18_PLAFOND_APP',
+ 'PLAFOND' => 'SAVE_V18_PLAFOND',
+ ];
+
+ foreach ($tables as $table => $saveTable) {
+ if (!$this->manager->hasTable($table) || $this->manager->hasTable($saveTable)) {
+ unset($tables[$table]);
+ }
+ }
+
+ $c->begin('Sauvegarde des anciennes données');
+ foreach ($tables as $table => $saveTable) {
+ $c->msg('"' . $table . '" => "' . $saveTable . '".');
+ $this->manager->sauvegarderTable($table, $saveTable);
+ }
+ $c->end();
+ }
+
}
\ No newline at end of file
diff --git a/admin/migration/v18Plafonds.php b/admin/migration/v18Plafonds.php
index f4a030e46dc12a9fee21b0b997cfbc2eac1c53cc..633ac46b129e7182318880fdd326ae17ce47d41b 100644
--- a/admin/migration/v18Plafonds.php
+++ b/admin/migration/v18Plafonds.php
@@ -26,36 +26,6 @@ class v18Plafonds extends AbstractMigration
$bdd = $this->manager->getBdd();
$c = $this->manager->getOseAdmin()->getConsole();
- if (empty($bdd->table()->get('SAVE_V18_STATUT'))) {
- $this->manager->sauvegarderTable('STATUT_INTERVENANT', 'SAVE_V18_STATUT');
- $c->msg('Anciens statuts "STATUT_INTERVENANT" sauvegardés dans "SAVE_V18_STATUT".');
- }
-
- if (empty($bdd->table()->get('SAVE_V18_STRUCTURE'))) {
- $this->manager->sauvegarderTable('STRUCTURE', 'SAVE_V18_STRUCTURE');
- $c->msg('Anciennes structures "STRUCTURE" sauvegardés dans "SAVE_V18_STRUCTURE".');
- }
-
- if (empty($bdd->table()->get('SAVE_V18_REFERENTIEL'))) {
- $this->manager->sauvegarderTable('FONCTION_REFERENTIEL', 'SAVE_V18_REFERENTIEL');
- $c->msg('Anciennes fonctions référentielles "FONCTION_REFERENTIEL" sauvegardées dans "SAVE_V18_REFERENTIEL".');
- }
-
- if (empty($bdd->table()->get('SAVE_V18_PLAFOND_APP'))) {
- $this->manager->sauvegarderTable('PLAFOND_APPLICATION', 'SAVE_V18_PLAFOND_APP');
- $c->msg('Anciens paramétrages des plafonds "PLAFOND_APPLICATION" sauvegardées dans "SAVE_V18_PLAFOND_APP".');
- }
-
- if (!empty($bdd->table()->get('PLAFOND_APPLICATION'))) {
- $bdd->exec('DROP TABLE PLAFOND_APPLICATION');
- $c->msg('Suppression des anciens paramétrages de plafonds');
- }
-
- if (empty($bdd->table()->get('SAVE_V18_PLAFOND'))) {
- $this->manager->sauvegarderTable('PLAFOND', 'SAVE_V18_PLAFOND');
- $c->msg('Anciens plafonds "PLAFOND" sauvegardées dans "SAVE_V18_PLAFOND".');
- }
-
if (!empty($bdd->table()->get('PLAFOND'))) {
$bdd->exec('DROP TABLE PLAFOND CASCADE CONSTRAINTS');
$c->msg('Suppression des anciens plafonds');
diff --git a/admin/migration/v18Statuts.php b/admin/migration/v18Statuts.php
index dddf93970e7d5df630630f28a65d40ffa15bddb1..248de5091c282172b520714f0c95d48760acd4c7 100644
--- a/admin/migration/v18Statuts.php
+++ b/admin/migration/v18Statuts.php
@@ -130,7 +130,7 @@ class v18Statuts extends AbstractMigration
$c = $this->manager->getOseAdmin()->getConsole();
$c->begin('Préparation à la mise à jour des indicateurs');
- if (empty($bdd->table()->get('TYPE_INDICATEUR'))) {
+ if (!$this->manager->hasTable('TYPE_INDICATEUR')) {
$bdd->exec('ALTER TABLE INDICATEUR ADD (TYPE_INDICATEUR_ID NUMBER)');
$bdd->exec('CREATE TABLE TYPE_INDICATEUR (
ID NUMBER NOT NULL ENABLE,
@@ -152,27 +152,6 @@ class v18Statuts extends AbstractMigration
$c->begin('Mise à jour de la liste des statuts');
- if (empty($bdd->table()->get('SAVE_V18_STATUT'))) {
- $this->manager->sauvegarderTable('STATUT_INTERVENANT', 'SAVE_V18_STATUT');
- $c->msg('Anciens statuts "STATUT_INTERVENANT" sauvegardés dans "SAVE_V18_STATUT".');
- }
-
- if (empty($bdd->table()->get('SAVE_V18_STATUT_PRIVILEGE'))) {
- $this->manager->sauvegarderTable('STATUT_PRIVILEGE', 'SAVE_V18_STATUT_PRIVILEGE');
- $c->msg('Anciens statuts "STATUT_PRIVILEGE" sauvegardés dans "SAVE_V18_STATUT_PRIVILEGE".');
- }
-
- if (empty($bdd->table()->get('SAVE_V18_TA_STATUT'))) {
- $this->manager->sauvegarderTable('TYPE_AGREMENT_STATUT', 'SAVE_V18_TA_STATUT');
- $c->msg('Anciens statuts "TYPE_AGREMENT_STATUT" sauvegardés dans "SAVE_V18_TA_STATUT".');
- }
-
- if (!$this->manager->hasTable('SAVE_V18_DOSSIER_AUTRE_STATUT') && $this->manager->hasTable('DOSSIER_CHAMP_AUTRE_PAR_STATUT')) {
- $this->manager->sauvegarderTable('DOSSIER_CHAMP_AUTRE_PAR_STATUT', 'SAVE_V18_DOSSIER_AUTRE_STATUT');
- $c->msg('Anciens statuts "DOSSIER_CHAMP_AUTRE_PAR_STATUT" sauvegardés dans "SAVE_V18_DOSSIER_AUTRE_STATUT".');
- }
-
-
/* Modifications préalables à faire en BDD */
if (empty($bdd->sequence()->get('STATUT_ID_SEQ'))) {
$bdd->exec('CREATE SEQUENCE STATUT_ID_SEQ INCREMENT BY 1 MINVALUE 1 NOCACHE');
@@ -317,7 +296,7 @@ class v18Statuts extends AbstractMigration
SELECT
max(si.id) id, i.annee_id
FROM
- intervenant i
+ SAVE_V18_INTERVENANT i
JOIN SAVE_V18_STATUT si ON si.id = i.statut_id
GROUP BY
si.code, i.annee_id
@@ -492,7 +471,7 @@ class v18Statuts extends AbstractMigration
osi.id old_statut_id,
nsi.id new_statut_id
FROM
- intervenant i
+ SAVE_V18_INTERVENANT i
JOIN SAVE_V18_STATUT osi ON osi.id = i.statut_id
LEFT JOIN statut nsi ON nsi.code = osi.code AND nsi.annee_id = i.annee_id
WHERE
@@ -542,7 +521,7 @@ class v18Statuts extends AbstractMigration
osi.id old_statut_id,
nsi.id new_statut_id
FROM
- intervenant_dossier d
+ SAVE_V18_DOSSIER d
JOIN intervenant i ON i.id = d.intervenant_id
JOIN SAVE_V18_STATUT osi ON osi.id = d.statut_id
LEFT JOIN statut nsi ON nsi.code = osi.code AND nsi.annee_id = i.annee_id
@@ -581,14 +560,6 @@ class v18Statuts extends AbstractMigration
$c->begin('Application des nouveaux statuts aux paramétrages de PJ');
- if (empty($bdd->table()->get('SAVE_V18_TPJS'))) {
- $this->manager->sauvegarderTable('TYPE_PIECE_JOINTE_STATUT', 'SAVE_V18_TPJS');
- $c->msg('Anciens paramètres "TYPE_PIECE_JOINTE_STATUT" sauvegardés dans "SAVE_V18_TPJS".');
-
- $bdd->exec('DELETE FROM TYPE_PIECE_JOINTE_STATUT');
- $c->msg("Vidage de la table \"TYPE_PIECE_JOINTE_STATUT\" avant d'insérer les nouveaux paramètres");
- }
-
try {
$bdd->exec("ALTER TABLE TYPE_PIECE_JOINTE_STATUT DROP CONSTRAINT TPJS_STATUT_INTERVENANT_FK");
} catch (\Exception $e) {
@@ -598,6 +569,9 @@ class v18Statuts extends AbstractMigration
/* Modifications au niveau de la table TPJS */
$ddl = $bdd->table()->get('TYPE_PIECE_JOINTE_STATUT')['TYPE_PIECE_JOINTE_STATUT'];
if (!isset($ddl['columns']['ANNEE_ID'])) {
+ $bdd->exec('DELETE FROM TYPE_PIECE_JOINTE_STATUT');
+ $c->msg("Vidage de la table \"TYPE_PIECE_JOINTE_STATUT\" avant d'insérer les nouveaux paramètres");
+
$bdd->exec("ALTER TABLE TYPE_PIECE_JOINTE_STATUT ADD(ANNEE_ID NUMBER)");
}
if (!isset($ddl['columns']['NUM_REGLE'])) {
@@ -675,17 +649,12 @@ class v18Statuts extends AbstractMigration
$c->begin('Application des nouveaux statuts aux paramétrages des types d\'intervention');
- if (empty($bdd->table()->get('SAVE_V18_TIS'))) {
- $this->manager->sauvegarderTable('TYPE_INTERVENTION_STATUT', 'SAVE_V18_TIS');
- $c->msg('Anciens paramètres "TYPE_INTERVENTION_STATUT" sauvegardés dans "SAVE_V18_TIS".');
-
- $bdd->exec('DELETE FROM TYPE_INTERVENTION_STATUT');
- $c->msg("Vidage de la table \"TYPE_INTERVENTION_STATUT\" avant d'insérer les nouveaux paramètres");
- }
-
/* Modifications au niveau de la table TIS */
$ddl = $bdd->table()->get('TYPE_INTERVENTION_STATUT')['TYPE_INTERVENTION_STATUT'];
if (!isset($ddl['columns']['ANNEE_ID'])) {
+ $bdd->exec('DELETE FROM TYPE_INTERVENTION_STATUT');
+ $c->msg("Vidage de la table \"TYPE_INTERVENTION_STATUT\" avant d'insérer les nouveaux paramètres");
+
$bdd->exec("ALTER TABLE TYPE_INTERVENTION_STATUT ADD(ANNEE_ID NUMBER)");
}
if (!isset($ddl['columns']['STATUT_ID'])) {
diff --git a/data/ddl_config.php b/data/ddl_config.php
index 2f103d7f370c01246daf436b307f87278012cf1e..ad938b88ab604c740de52c35b58539f1ed55f155 100644
--- a/data/ddl_config.php
+++ b/data/ddl_config.php
@@ -11,6 +11,7 @@ return [
'TBL_SERVICE_SAISIE',
'STATUT_PRIVILEGE',
'TYPE_AGREMENT_STATUT',
+ 'PLAFOND_APPLICATION',
],
],
'materialized-view' => [