Commit 7efc4d2e authored by Antony Le Courtes's avatar Antony Le Courtes
Browse files

Merge remote-tracking branch 'origin/missions' into missions

parents e1b9daab 6200164e
Loading
Loading
Loading
Loading
+6 −2
Original line number Diff line number Diff line
@@ -12,18 +12,20 @@



# OSE 20 (janvier 2023)
# OSE 20 (fin février 2023)

## Nouveautés

* Les modèles de contrats de travail sont maintenant gérés comme n'importe quel autre état de sortie
* Reconduction de l'offre de formation pour les éléments de OSE porté par un élément synchroniser
* Reconduction de l'offre de formation pour les éléments de OSE portés par un élément synchronisé
* Possibilité de rentrer un taux de charge par statut d'intervenant
* Ajout d'un choix par statut pour "contrat de travail et avenants" pour laisser la possibilité à l'intervenant de télécharger sont contrat en pdf
* Migration technnique vers le framework Bootstrap 5 et modernisation de l'identité visuelle
* Réorganisation du menu "Administration" pour plus de lisibilité
* Filtrage des caractères interdits lors de l'export RH SIHAM (#47267)
* Associer des tags aux services afin de flécher certains financements (#42451)
* Envoyer un email via un indicateur à la fois sur l'email perso et l'email pro de l'intervenant (#48687)
* Nouveaux indicateurs 500 et 505 listant les permanents sans service ni référentiel

## Corrections de bugs

@@ -43,6 +45,8 @@
* Lors de la demande de mise en paiement, pouvoir choisir un EOTP même si son centre de coût parent n'est pas de l'activité attendue (pilotage / enseignement) (#48286)
* Utilisation prioritaire de l'email personnel des données personnelles pour l'envoi d'email via les indicateurs (#48393)
* Meilleure gestion de la casse lors de la recherche d'un employeur (#48543)
* Ajout d'une contrainte d'unicité sur la colonne code de la table type_intervention (#48727)
* Et beaucoup d'autres ...

## Notes de mise à jour

+111 −0
Original line number Diff line number Diff line
<?php





class v20Contrats extends AbstractMigration
{

    public function description(): string
    {
        return "Transformation des modèles de contrats en états de sortie";
    }



    public function utile(): bool
    {
        return $this->manager->hasOld('table', 'MODELE_CONTRAT');
    }



    public function after()
    {
        $c   = $this->manager->getOseAdmin()->getConsole();
        $bdd = $this->manager->getBdd();

        $c->begin("Convertion des contrats de travail en états de sortie");

        $modeles = $bdd->select("SELECT * FROM modele_contrat");

        $etatsSortie = [];
        $statuts     = [];

        $sts = $bdd->select('select distinct code from statut WHERE histo_destruction IS NULL');
        foreach ($sts as $st) {
            $statuts[$st['CODE']] = null;
        }

        foreach ($modeles as $modele) {
            $id       = (int)$modele['ID'];
            $code     = 'CONTRAT_' . $id;
            $libelle  = 'Contrat de travail - ' . $modele['LIBELLE'];
            $statutId = $modele['STATUT_ID'] ? (int)$modele['STATUT_ID'] : null;
            $fichier  = $modele['FICHIER'];
            $requete  = $modele['REQUETE'] ?: 'SELECT * FROM v_contrat_main';

            if ($statutId) {
                $statutCode           = $bdd->select("SELECT code FROM statut WHERE id = $statutId")[0]['CODE'];
                $statuts[$statutCode] = $code;
            } else {
                $statutCode = null;
                foreach ($statuts as $scode => $sc) {
                    if (empty($sc)) {
                        $statuts[$scode] = $code;
                    }
                }
            }

            $etatSortie = [
                'CODE'           => $code,
                'LIBELLE'        => $libelle,
                'FICHIER'        => $fichier,
                'REQUETE'        => $requete,
                'PDF_TRAITEMENT' => '$mainData    = reset($data);
$data        = [];
$exemplaires = [];

for ($i = 1; $i <= 3; $i++) {
    $exemplaire = $mainData[\'exemplaire\' . $i] ?? \'0\';
    if ($exemplaire !== \'0\') {
        $exemplaires[$i] = $exemplaire;
    }
    unset($mainData[\'exemplaire\' . $i]);
}

foreach ($exemplaires as $exemplaire) {
    $newExemplaire               = $mainData;
    $newExemplaire[\'exemplaire\'] = $exemplaire;
    $data[]                      = $newExemplaire;
}

return $data;',
                'CLE'            => 'CONTRAT_ID',
                'BLOC1_NOM'      => 'serviceCode',
                'BLOC1_ZONE'     => 'table:table-row',
                'BLOC1_REQUETE'  => 'SELECT * FROM V_CONTRAT_SERVICES',
            ];

            $etatsSortie[] = $etatSortie;
        }

        $c->msg("Création des nouveaux états");
        foreach ($etatsSortie as $etatSortie) {
            $bdd->getTable('ETAT_SORTIE')->insert($etatSortie);
            foreach ($statuts as $scode => $setat) {
                if ($setat === $etatSortie['CODE']) {
                    $statuts[$scode] = $etatSortie['ID'];
                }
            }
        }

        $c->msg("Configuration des statuts");
        foreach ($statuts as $scode => $modeleId) {
            $bdd->exec("UPDATE STATUT SET contrat_etat_sortie_id = $modeleId WHERE CODE = :code", ['code' => $scode]);
        }

        $c->end("Convertion terminée");
    }
}
 No newline at end of file
+41 −0
Original line number Diff line number Diff line
<?php





class v20Divers extends AbstractMigration
{

    public function description(): string
    {
        return "Transformation des modèles de contrats en états de sortie";
    }



    public function utile(): bool
    {
        return $this->manager->hasNew('table', 'TAG');
    }



    public function before()
    {
        $c   = $this->manager->getOseAdmin()->getConsole();
        $bdd = $this->manager->getBdd();

        $c->begin("Préparation de la migration vers la version 20");

        $bdd->exec("ALTER TABLE TYPE_INTERVENTION DROP CONSTRAINT TYPE_INTERVENTION_CODE_UN");
        $bdd->exec("DROP INDEX TYPE_INTERVENTION_CODE_UN");

        $oseAppliId = $this->manager->getOseAdmin()->getOseAppliId();
        $bdd->exec("UPDATE TYPE_INTERVENTION_STATUT SET HISTO_CREATEUR_ID = $oseAppliId WHERE HISTO_CREATEUR_ID IS NULL");
        $bdd->exec("UPDATE TYPE_INTERVENTION_STATUT SET HISTO_CREATION = SYSDATE WHERE HISTO_CREATION IS NULL");
        $bdd->exec("UPDATE TYPE_INTERVENTION_STATUT SET HISTO_MODIFICATION = SYSDATE WHERE HISTO_MODIFICATION IS NULL");

        $c->end("Préparation terminée");
    }
}
 No newline at end of file
+2 −2
Original line number Diff line number Diff line
@@ -9,13 +9,13 @@
    ],
    "require"     : {
        "php"                    : ">=8.0",
        "unicaen/app"            : "6.0.0",
        "unicaen/app"            : "6.0.1",
        "unicaen/auth"           : "6.0.0",
        "laminas/laminas-file"   : "^2.8",
        "unicaen/code"           : "6.0.5",
        "unicaen/import"         : "6.0.0",
        "unicaen/tbl"            : "6.0.0",
        "unicaen/open-document"  : "6.0.0",
        "unicaen/open-document"  : "6.0.1",
        "unicaen/siham"          : "^2.0",
        "laminas/laminas-cache-storage-adapter-memory": "2.1.x-dev",
        "laminas/laminas-text": "2.10.x-dev"
+25 −24
Original line number Diff line number Diff line
@@ -4,7 +4,7 @@
        "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
        "This file is @generated automatically"
    ],
    "content-hash": "7989c6c2f1d310d9a90814ad60e13366",
    "content-hash": "2a24f58724430278ccdfb7e634b4b21f",
    "packages": [
        {
            "name": "beberlei/assert",
@@ -460,16 +460,16 @@
        },
        {
            "name": "doctrine/dbal",
            "version": "3.5.3",
            "version": "3.6.0",
            "source": {
                "type": "git",
                "url": "https://github.com/doctrine/dbal.git",
                "reference": "88fa7e5189fd5ec6682477044264dc0ed4e3aa1e"
                "reference": "85b98cb23c8af471a67abfe14485da696bcabc2e"
            },
            "dist": {
                "type": "zip",
                "url": "https://api.github.com/repos/doctrine/dbal/zipball/88fa7e5189fd5ec6682477044264dc0ed4e3aa1e",
                "reference": "88fa7e5189fd5ec6682477044264dc0ed4e3aa1e",
                "url": "https://api.github.com/repos/doctrine/dbal/zipball/85b98cb23c8af471a67abfe14485da696bcabc2e",
                "reference": "85b98cb23c8af471a67abfe14485da696bcabc2e",
                "shasum": ""
            },
            "require": {
@@ -482,11 +482,12 @@
                "psr/log": "^1|^2|^3"
            },
            "require-dev": {
                "doctrine/coding-standard": "11.0.0",
                "doctrine/coding-standard": "11.1.0",
                "fig/log-test": "^1",
                "jetbrains/phpstorm-stubs": "2022.3",
                "phpstan/phpstan": "1.9.4",
                "phpstan/phpstan": "1.9.14",
                "phpstan/phpstan-strict-rules": "^1.4",
                "phpunit/phpunit": "9.5.27",
                "phpunit/phpunit": "9.6.3",
                "psalm/plugin-phpunit": "0.18.4",
                "squizlabs/php_codesniffer": "3.7.1",
                "symfony/cache": "^5.4|^6.0",
@@ -551,7 +552,7 @@
            ],
            "support": {
                "issues": "https://github.com/doctrine/dbal/issues",
                "source": "https://github.com/doctrine/dbal/tree/3.5.3"
                "source": "https://github.com/doctrine/dbal/tree/3.6.0"
            },
            "funding": [
                {
@@ -567,7 +568,7 @@
                    "type": "tidelift"
                }
            ],
            "time": "2023-01-12T10:21:44+00:00"
            "time": "2023-02-07T22:52:03+00:00"
        },
        {
            "name": "doctrine/deprecations",
@@ -614,29 +615,29 @@
        },
        {
            "name": "doctrine/doctrine-laminas-hydrator",
            "version": "3.2.0",
            "version": "3.3.0",
            "source": {
                "type": "git",
                "url": "https://github.com/doctrine/doctrine-laminas-hydrator.git",
                "reference": "b76cfa71d5e494a8a71ada4e8ea6454fc0fc56ba"
                "reference": "b41bc66a485f1e2ce4477517d29d1803d0f2cbb4"
            },
            "dist": {
                "type": "zip",
                "url": "https://api.github.com/repos/doctrine/doctrine-laminas-hydrator/zipball/b76cfa71d5e494a8a71ada4e8ea6454fc0fc56ba",
                "reference": "b76cfa71d5e494a8a71ada4e8ea6454fc0fc56ba",
                "url": "https://api.github.com/repos/doctrine/doctrine-laminas-hydrator/zipball/b41bc66a485f1e2ce4477517d29d1803d0f2cbb4",
                "reference": "b41bc66a485f1e2ce4477517d29d1803d0f2cbb4",
                "shasum": ""
            },
            "require": {
                "doctrine/collections": "^1.6.8",
                "doctrine/collections": "^1.8.0 || ^2.0.0",
                "doctrine/inflector": "^2.0.4",
                "doctrine/persistence": "^2.2.3 || ^3.0.0",
                "ext-ctype": "*",
                "laminas/laminas-hydrator": "^4.3.1",
                "laminas/laminas-stdlib": "^3.6.1",
                "php": "^7.4 || ~8.0.0 || ~8.1.0 || ~8.2.0"
                "php": "~8.0.0 || ~8.1.0 || ~8.2.0"
            },
            "require-dev": {
                "doctrine/coding-standard": "^9.0.2",
                "doctrine/coding-standard": "^11.1.0",
                "phpstan/phpstan": "^1.9.2",
                "phpunit/phpunit": "^9.5.26",
                "vimeo/psalm": "^4.30"
@@ -676,7 +677,7 @@
                    "type": "tidelift"
                }
            ],
            "time": "2022-11-18T09:49:57+00:00"
            "time": "2023-02-07T07:28:03+00:00"
        },
        {
            "name": "doctrine/doctrine-module",
@@ -6879,11 +6880,11 @@
        },
        {
            "name": "unicaen/app",
            "version": "6.0.0",
            "version": "6.0.1",
            "source": {
                "type": "git",
                "url": "https://git.unicaen.fr/lib/unicaen/app.git",
                "reference": "61aa9de298574376390767411f037f9ee3c68948"
                "reference": "19335523fd529823d959a3c6cc9eccf3b0dc63b8"
            },
            "require": {
                "beberlei/assert": "^3.3",
@@ -6939,7 +6940,7 @@
                ]
            },
            "description": "Module de base des applications unicaen",
            "time": "2023-01-26T12:51:36+00:00"
            "time": "2023-02-08T15:57:37+00:00"
        },
        {
            "name": "unicaen/auth",
@@ -7137,11 +7138,11 @@
        },
        {
            "name": "unicaen/open-document",
            "version": "6.0.0",
            "version": "6.0.1",
            "source": {
                "type": "git",
                "url": "https://git.unicaen.fr/lib/unicaen/open-document.git",
                "reference": "e82f3990bd9a5c761e01310544236713a3c58535"
                "reference": "3c71e1a7f2289bc5ca774dbc4a0b45bd9382a462"
            },
            "type": "library",
            "autoload": {
@@ -7153,7 +7154,7 @@
                ]
            },
            "description": "Module Unicaen de traitement des fichiers au format OpenDocument",
            "time": "2022-09-16T12:46:10+00:00"
            "time": "2023-02-08T10:58:46+00:00"
        },
        {
            "name": "unicaen/siham",
Loading