Commit f104e6d1 authored by Laurent Lecluse's avatar Laurent Lecluse
Browse files

Correction de bugs pour la remisecen place des agréments du conseil restreint

parent 175c6aa8
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -27,6 +27,8 @@ $actionsDev = [
    "update-ddl"            => "Mise à jour du fichier de définition de la base de données à partir de cette dernière",
    "update-bdd-data"       => "Mise à jour des données de la base de données",
    "update-bdd-privileges" => "Mise à jour des privilèges de la base de données",
    "test"                  => "Script de tests divers",
    "test-migration"        => "Script de test de migration. Paramètres : [before|after nom_du_script_de_migration]",
];

if ((getenv('APPLICATION_ENV') ?: 'dev') == 'dev') {
+24 −0
Original line number Diff line number Diff line
<?php

use BddAdmin\Ddl\Ddl;

$bdd     = $oa->getBdd();
$prepost = $c->getArg()[2];
$action  = $c->getArg()[3];

// Récupération du schéma de référence
$ref = new Ddl();
$ref->loadFromDir($oa->getOseDir() . 'data/ddl');


// Construction de la config de DDL pour filtrer
$filters = require $oa->getOseDir() . 'data/ddl_config.php';
foreach ($ref as $ddlClass => $objects) {
    foreach ($objects as $object => $objectDdl) {
        $filters[$ddlClass]['includes'][] = $object;
    }
}

$mm = new MigrationManager($oa, $bdd);
$mm->initTablesDef($ref, $filters);
$mm->migration($prepost, $action);
 No newline at end of file
+12 −10
Original line number Diff line number Diff line
@@ -37,7 +37,7 @@ class AgrementStructure extends AbstractMigration

    protected function before()
    {
        $this->manager->sauvegarderTable('AGREMENT', 'SAVE_AGREMENT');

    }


@@ -52,6 +52,10 @@ class AgrementStructure extends AbstractMigration
        $console->println("Nouveau calcul du tableau de bord agrement");
        $bdd->exec('BEGIN unicaen_tbl.calculer(\'agrement\'); END;');

        $tacrId = (int)$bdd->select("SELECT id FROM type_agrement WHERE code = 'CONSEIL_RESTREINT'")[0]['ID'];

        $bdd->exec("alter trigger AGREMENT_CK disable");

        //On récupère les agrements de type conseil restreint sans structure
        $agrementsToRecreate = [];
        $sql                 = 'SELECT 
@@ -73,7 +77,7 @@ class AgrementStructure extends AbstractMigration
        $agrements = $bdd->select($sql);
        //Nombre d'agréments concernés
        $nbAgrement = count($agrements);
        $console->println("Il y a $nbAgrement a corrigé");
        $console->println("Il y a $nbAgrement a corriger");
        $nbAgrementCorrige = 0;
        //On commence le traitement de chaque agrément qui pose problème
        foreach ($agrements as $agrement) {
@@ -93,7 +97,7 @@ class AgrementStructure extends AbstractMigration
                                    TBL_AGREMENT ta
                                 WHERE
                                 ta.intervenant_id = $intervenantId
                                 AND ta.type_agrement_id = 1
                                 AND ta.type_agrement_id = $tacrId
                                 AND ta.agrement_id IS NULL";

                $agrements = $bdd->select($sqlAgrement);
@@ -117,7 +121,6 @@ class AgrementStructure extends AbstractMigration
                                        CONTRAT c 
                                    WHERE 
                                        c.intervenant_id = $intervenantId
                                        AND c.type_contrat_id = 1
                                        AND c.histo_destruction IS NULL";

                    $contrats = $bdd->select($sqlContrats);
@@ -140,7 +143,7 @@ class AgrementStructure extends AbstractMigration
                } else {
                    //Sinon je fais un soft delete de l'agrement
                    //on met une date précise pour retrouver facilement
                    $console->println("Suppression de l'agrément id : $agrementId car aucune structure n'a pu être identifié", $console::COLOR_LIGHT_RED);
                    $console->println("Suppression de l'agrément id : $agrementId car aucune structure n'a pu être identifiée", $console::COLOR_LIGHT_RED);
                    $agrementsToRecreate [] = $agrement;
                    $sqlDelete              = "UPDATE 
                                AGREMENT
@@ -156,8 +159,8 @@ class AgrementStructure extends AbstractMigration
        }

        if (!empty($agrementsToRecreate)) {
            $console->println("Seulement $nbAgrementCorrige sur $nbAgrement on été corrigé", $console::COLOR_LIGHT_RED);
            $console->println("Liste des agréments restreints qu'il faut refaire manuellement : ", $console::COLOR_LIGHT_RED);
            $console->println("Seulement $nbAgrementCorrige sur $nbAgrement on été corrigés", $console::COLOR_LIGHT_RED);
            $console->println("Les intervenants suivants nécessitent une intervention manuelle de votre part : il faut saisir à nouveau leurs agréments du conseil restreint : ", $console::COLOR_LIGHT_RED);
            foreach ($agrementsToRecreate as $value) {
                $console->println($value['PRENOM'] . " " . $value['NOM_USUEL'] . " (id : " . $value['INTERVENANT_ID'] . " / code : " . $value['CODE_INTERVENANT'] . ")", $console::COLOR_LIGHT_RED);
            }
@@ -165,6 +168,8 @@ class AgrementStructure extends AbstractMigration
            $console->println("Les $nbAgrement agrements restreints sans structure on été corrigé.", $console::COLOR_LIGHT_GREEN);
        }

        $bdd->exec("alter trigger AGREMENT_CK enable");

        //On recalcule les tableaux de bord agrement et workflow pour tout remettre d'équerre
        $console->println("------------------------------------------------------------------");
        $console->println("Nouveau calcul du tableau de bord agrement");
@@ -173,9 +178,6 @@ class AgrementStructure extends AbstractMigration
        $console->println("Nouveau calcul du tableau de bord workflow");
        $bdd->exec('BEGIN unicaen_tbl.calculer(\'workflow\'); END;');

        //On supprimme la table de sauvegarde temporaire.
        //$this->manager->supprimerSauvegarde('SAVE_AGREMENT');

        $console->println("Terminé");
    }

+1 −1
Original line number Diff line number Diff line
@@ -378,7 +378,7 @@ SELECT DISTINCT "ANNEE_ID","ANNEE_AGREMENT","TYPE_AGREMENT_ID","INTERVENANT_ID",

      JOIN                           i_s ON i_s.intervenant_id = i.id

      JOIN                      avi ON i.code = avi.intervenant_code
      LEFT JOIN                      avi ON i.code = avi.intervenant_code
      									AND avi.type_agrement_id = tas.type_agrement_id
                                        AND i.annee_id < avi.annee_id + tas.duree_vie
                                        AND i.annee_id >= avi.annee_id
+5 −5
Original line number Diff line number Diff line
@@ -57,7 +57,7 @@ SELECT DISTINCT "ANNEE_ID","ANNEE_AGREMENT","TYPE_AGREMENT_ID","INTERVENANT_ID",

      JOIN                           i_s ON i_s.intervenant_id = i.id

      JOIN                      avi ON i.code = avi.intervenant_code
      LEFT JOIN                      avi ON i.code = avi.intervenant_code
      							                		AND avi.type_agrement_id = tas.type_agrement_id
                                        AND i.annee_id < avi.annee_id + tas.duree_vie
                                        AND i.annee_id >= avi.annee_id