Commit 0754cedc authored by Laurent Lecluse's avatar Laurent Lecluse
Browse files

Merge branch 'master' of https://git.unicaen.fr/open-source/OSE

parents a539fc36 8bdae2b9
Loading
Loading
Loading
Loading
+110 −0
Changes for admin/migration/MigrationDossierPaysNationalite.php: 110 added lines, 0 removed lines.
Original line number Diff line number Diff line
<?php


use BddAdmin\Bdd;

class MigrationDossierPaysNationalite extends AbstractMigration
{
    protected $contexte = self::CONTEXTE_ALL;



    public function description(): string
    {
        return "";
    }



    public function utile(): bool
    {

        if ($this->manager->hasColumn('INTERVENANT_DOSSIER', 'PAYS_NATIONALITE_ID')) {
            //on lance uniquement si on a des dossiers validé dont le pays nationalité est vide et le pays naissance est 'France'
            $sqlNationalite = "
            SELECT d.id FROM intervenant_dossier d
                JOIN intervenant i ON i.id = d.intervenant_id 
                JOIN validation v ON d.intervenant_id = v.intervenant_id AND type_validation_id = 1 AND v.histo_destruction IS NULL 
                WHERE d.pays_nationalite_id IS NULL
                AND d.histo_destruction  IS NULL
                AND d.pays_naissance_id = (SELECT id FROM PAYS WHERE ose_divers.str_reduce(libelle) = 'france'  AND HISTO_DESTRUCTION IS NULL)
            ";

            $result = $this->manager->getBdd()->select($sqlNationalite);

            if (count($result) > 0) {
                return true;
            }
        }

        return false;
    }



    public function action(string $contexte)
    {
        if ($contexte == self::CONTEXTE_PRE) {
            $this->before();
        } else {
            $this->after();
        }
    }



    protected function before()
    {

    }



    protected function after()
    {
        $oa      = $this->manager->getOseAdmin();
        $bdd     = $this->manager->getBdd();
        $console = $this->manager->getOseAdmin()->getConsole();

        $console->println("Remise en conformité des dossiers intervenants déjà validés avec un pays nationalité manquant");

        $sqlNationalite = "
            SELECT d.id FROM intervenant_dossier d
                JOIN intervenant i ON i.id = d.intervenant_id 
                JOIN validation v ON d.intervenant_id = v.intervenant_id AND type_validation_id = 1 AND v.histo_destruction IS NULL 
                WHERE d.pays_nationalite_id IS NULL
                AND d.histo_destruction  IS NULL
                AND d.pays_naissance_id = (SELECT id FROM PAYS WHERE ose_divers.str_reduce(libelle) = 'france'  AND HISTO_DESTRUCTION IS NULL)
        ";

        $result = $bdd->select($sqlNationalite);

        $console->println("PRE TRAITEMENT : Nombre de dossier intervenant validé sans pays nationalité dont le pays naissance est France : " . count($result));
        $console->println("TRAITEMENT : Lancement traitement pour forcer nationalité 'France' pour les naissance en 'France'");


        $sqlUpdateNationalite = "
            UPDATE intervenant_dossier SET pays_nationalite_id = (SELECT id FROM PAYS WHERE ose_divers.str_reduce(libelle) = 'france'  AND HISTO_DESTRUCTION IS NULL)
            WHERE id IN (
                SELECT d.id FROM intervenant_dossier d
                JOIN intervenant i ON i.id = d.intervenant_id
                JOIN validation v ON d.intervenant_id = v.intervenant_id AND type_validation_id = 1 AND v.histo_destruction IS NULL
                WHERE d.pays_nationalite_id IS NULL
                AND d.histo_destruction  IS NULL
                AND d.pays_naissance_id = (SELECT id FROM PAYS WHERE ose_divers.str_reduce(libelle) = 'france'  AND HISTO_DESTRUCTION IS NULL)
            )
        ";

        $bdd->exec($sqlUpdateNationalite);

        $result = $bdd->select($sqlNationalite);

        $console->println("POST TRAITEMENT : Nombre de dossier intervenant validé sans pays nationalité dont le pays naissance est France : " . count($result));

        //on recalcule TBL dossier
        $console->println("Recalcul du TBL DOSSIER");
        $bdd->exec('BEGIN unicaen_tbl.calculer(\'dossier\'); END;');
        //Clear cache car on a modifié les privileges donc les entity en cache ne doivent plus servir
        $oa->run('clear-cache');
    }
}
 No newline at end of file
+7 −0
Changes for data/privileges.php: 7 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -406,5 +406,12 @@ return [
            'employeur-edition'       => 'Édition employeurs',
        ],
    ],
    'nomencalture-rh'    => [
        'libelle'    => 'Nomenclature RH',
        'privileges' => [
            'grade-visualisation' => 'Visualisation grades',
            'grade-edition'       => 'Édition grades',
        ],
    ],

];
 No newline at end of file
+50 −0
Changes for doc/Connecteurs Import/Octopus/MV_AFFECTATION.sql: 50 added lines, 0 removed lines.
Original line number Diff line number Diff line
CREATE
MATERIALIZED VIEW "OSE"."MV_AFFECTATION" AS
WITH ind_fonction AS(
	SELECT
		ind.nom_usage || ' ' || INITCAP(ind.prenom)            display_name,
		indcom.email                                           email,
		'ldap'											       password,
		1												       state,
		indcom.login     									   username,
		CASE WHEN s.code = 'UNIV' THEN NULL ELSE s.code END    z_structure_id,
		CASE
	      WHEN fon.code LIKE 'D30%' OR fon.code LIKE 'P71%' OR fon.code LIKE 'J60%' THEN 'directeur-composante'
	      WHEN fon.code LIKE 'R00'  OR fon.code LIKE 'R40%' THEN 'responsable-composante'
	      WHEN fon.code LIKE 'R00C' OR fon.code LIKE 'R40%' THEN 'responsable-recherche-labo'
	      WHEN s.code = 'UNIV' AND fon.code = 'P00' OR fon.code LIKE 'P10%' OR fon.code LIKE 'P50%' THEN 'superviseur-etablissement'
	      ELSE NULL
	    END 													z_role_id,
        s.code || '_' || ind.c_individu_chaine || '_' || fon.code   source_code
	FROM octo.individu_fonction@octoprod indfon
	JOIN octo.fonction@octoprod fon ON fon.id = indfon.fonction_id
	JOIN octo.fonction_libelle@octoprod fonlib ON fonlib.fonction_id = fon.id
	JOIN octo.v_structure@octoprod s ON s.id = indfon.structure_id
	JOIN octo.individu@octoprod ind ON ind.c_individu_chaine = indfon.individu_id
	JOIN octo.individu_compte@octoprod indcom ON indcom.individu_id = ind.c_individu_chaine
    AND SYSDATE BETWEEN indfon.date_debut AND COALESCE(indfon.date_fin + 1, SYSDATE)
    AND s.niveau <= 2
    AND s.date_fermeture IS NULL
)
SELECT DISTINCT display_name,
                email,
                password,
                state,
                username,
                z_structure_id,
                z_role_id,
                'Octopus'        z_source_id,
                MIN(source_code) source_code
FROM ind_fonction indfon
WHERE z_role_id IS NOT NULL
GROUP BY display_name,
         email,
         password,
         state,
         username,
         z_structure_id,
         z_role_id;



+26 −0
Changes for doc/Connecteurs Import/Octopus/SRC_AFFECTATION_RECHERCHE.sql: 26 added lines, 0 removed lines.
Original line number Diff line number Diff line
CREATE
OR REPLACE FORCE VIEW SRC_AFFECTATION_RECHERCHE AS
WITH affectation_recherche AS (
 	SELECT
 		indaff.individu_id           z_code,
 		s.structure_recherche_id     z_structure_recherche_id,
 		indaff.id                    source_code
 	from
 		octo.individu_affectation@octoprod indaff
 	    JOIN octo.v_structure@octoprod s ON s.id = indaff.structure_id
 	WHERE
 		indaff.type_id = 3--Uniquement les affectations de type recherche
 		AND SYSDATE BETWEEN indaff.date_debut AND COALESCE(indaff.date_fin + 1, SYSDATE)
 )
SELECT DISTINCT i.id                intervenant_id,
                s.id                structure_id,
                src.id              source_id,
                i.id || '_' || s.id source_code,
                s2.libelle_court    labo_libelle
FROM affectation_recherche affrech
         JOIN source src ON src.code = 'Octopus'
         JOIN intervenant i ON i.code = CAST(affrech.z_code AS varchar(255))
    AND i.annee_id = unicaen_import.get_current_annee
         JOIN octo.structure_recherche@octoprod sr ON sr.id = affrech.z_structure_recherche_id
         JOIN octo.v_structure@octoprod s2 ON sr.structure_id = s2.id
         JOIN structure s ON s2.code = s.source_code;
 No newline at end of file
+7 −0
Changes for doc/Connecteurs Import/Octopus/SRC_HARPEGE_STRUCTURE_CODES.sql: 7 added lines, 0 removed lines.
Original line number Diff line number Diff line
CREATE
OR REPLACE VIEW SRC_HARPEGE_STRUCTURE_CODES AS
SELECT vs.code  c_structure,
       vs2.code c_structure_n2
FROM octo.v_structure@octoprod vs
         JOIN octo.v_structure@octoprod vs2 ON vs.niv2_id = vs2.id
WHERE vs.racine_id = (SELECT id FROM octo.v_structure@octoprod WHERE code = 'UNIV')
 No newline at end of file
Loading