Commit 42cae595 authored by Antony Le Courtes's avatar Antony Le Courtes
Browse files

Script migration update des paramètres mission_indemnitees et pj_active de la...

Script migration update des paramètres mission_indemnitees et pj_active de la table statut selon les cas d'utilisation
parent 5ae7e335
Loading
Loading
Loading
Loading
+59 −0
Original line number Diff line number Diff line
<?php





class v23UpdateStatutParamsIndemnitesEtPj extends AbstractMigration
{

    public function description(): string
    {
        return "Mise à jour activation des pièces justificatives et indémnités journalières par statuts";
    }



    public function utile(): bool
    {
        $c   = $this->manager->getOseAdmin()->console();
        $bdd = $this->manager->getBdd();
        if ($this->manager->hasNewColumn('STATUT', 'PJ_ACTIVE') || $this->manager->hasNewColumn('INTERVENANT_DOSSIER', 'SITUATION_MATRIMONIALE_ID')) {
            return true;
        }


        return false;
    }



    public function after()
    {
        $c   = $this->manager->getOseAdmin()->console();
        $bdd = $this->manager->getBdd();
        //On traite d'abord la colonne PJ_ACTIVE
        $this->manager->sauvegarderTable('STATUT', 'SAVE_STATUT');
        //On désactive les pièces justificatives sur les statuts sur lesquels on ne demande aucune pièce
        $c->println("Désactivation des pièces justificatives sur les statuts sur lesquels on ne demande aucune pièce");
        $sqlUpdatePjActive = "UPDATE statut SET PJ_ACTIVE  = 0 WHERE id NOT IN (
                                    SELECT s.id FROM type_piece_jointe_statut tpjs
                                    JOIN statut s ON s.id = tpjs.statut_id 
                                    GROUP BY s.id)";
        $bdd->exec($sqlUpdatePjActive);
        //On désactive les indemnités de fin de contrat sur le statut si on a aucun entrée dans la table prime
        $c->println("Désactivation des indémnités de fin de mission sur les statuts où aucun intervenant n'a encore eu d'indémnités de fin de mission");
        $sqlPrime = "SELECT id FROM prime";
        $primes   = $bdd->select($sqlPrime);
        //Si pas de prime de fin de mission alors on désactive sur l'ensemble des statuts
        if (empty($primes)) {
            $sqlUpdateMission = "UPDATE statut SET MISSION_INDEMNITEES = 0 WHERE id NOT IN (
                                    SELECT s.id FROM mission_prime mp 
                                    JOIN intervenant i ON i.id = mp.intervenant_id 
                                    JOIN statut s ON s.id = i.statut_id
                                    GROUP BY s.id
                                    )";
            $bdd->exec($sqlUpdateMission);
        }
    }
}
 No newline at end of file