Commit 1887a120 authored by Bertrand Gauthier's avatar Bertrand Gauthier
Browse files

Merge branch 'feature_duplicates_order_by' into test

parents 8efc92d4 f90872c1
Loading
Loading
Loading
Loading
+11 −0
Original line number Diff line number Diff line
Journal des modifications
=========================

12.1.0
------
- Menu Formations : élargissement du nombre de rôles habilités à voir le menu.
- Page 'Mes formations' pour le doctorant : suppression de la colonne 'Etablissement'.
- [FIX] Rapports d'activité : correction du plantage empêchant l'envoi de la notification en cas de validation/avis.
- [FIX] Correction de la config des imports api_import_inscription_administrative et api_import_inscription_administrative_apprenant.
- [FIX] Rapport CSI : rétablissement du bouton de suppression d'un rapport.
- [FIX] Corrections de divers plantages dûs à des valeurs null.
- [FIX] Variable possiblement indéfinie dans le footer de la convention de mise en ligne de la thèse.
- [FIX] Module Admission : plantage lors de la suppression complète d'un dossier.

12.0.0
------
- Autorisation d'inscription et Autorisation de diplomation : envoi vers Pégase.
+3 −2
Original line number Diff line number Diff line
@@ -67,7 +67,7 @@
        "unicaen/privilege": "^6.4",
        "unicaen/console": "^6.0",
        "unicaen/db-anonym": "^4.0",
        "unicaen/db-import": "dev-release_8.0.0",
        "unicaen/db-import": "dev-feature_duplicates_order_by",
        "unicaen/etat": "^6.0",
        "unicaen/evenement": "^6.4",
        "unicaen/faq": "^7.0",
@@ -84,7 +84,8 @@
        "unicaen/sql": "^2.0",
        "unicaen/sygal-api": "dev-master",
        "unicaen/utilisateur": "^6.3",
        "unicaen/avis": "^1.1"
        "unicaen/avis": "^1.1",
        "unicaen/db-import-exemple": "dev-master"
    },
    "minimum-stability": "dev",
    "prefer-stable": true,
+34 −8
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": "0650e30dc5446c0a1e4ddad3af6064ad",
    "content-hash": "91975a3a123eae3e1cce047fe13b8ed5",
    "packages": [
        {
            "name": "apereo/phpcas",
@@ -12788,11 +12788,11 @@
        },
        {
            "name": "unicaen/db-import",
            "version": "dev-release_8.0.0",
            "version": "dev-feature_duplicates_order_by",
            "source": {
                "type": "git",
                "url": "https://git.unicaen.fr/lib/unicaen/db-import.git",
                "reference": "03944fd401ff70a6878f7bc840f32e41fea234d6"
                "reference": "b0b991de50bc0daa44e4bd5c0a19baa85e51b1ad"
            },
            "require": {
                "beberlei/assert": "^3.3",
@@ -12825,7 +12825,31 @@
                }
            },
            "description": "Module d'import entre bases de données",
            "time": "2026-05-04T12:30:27+00:00"
            "time": "2026-06-22T12:58:04+00:00"
        },
        {
            "name": "unicaen/db-import-exemple",
            "version": "dev-master",
            "source": {
                "type": "git",
                "url": "https://git.unicaen.fr/lib/unicaen/db-import-exemple.git",
                "reference": "77f10134cf37a0e1b05854f7037e5fd9a1e28d95"
            },
            "require": {
                "unicaen/db-import": "*"
            },
            "default-branch": true,
            "type": "library",
            "autoload": {
                "psr-4": {
                    "UnicaenDbImportExemple\\": "src/"
                },
                "classmap": [
                    "./Module.php"
                ]
            },
            "description": "Exemple d'utilisation de la bibliothèque unicaen/db-import.",
            "time": "2026-06-15T13:47:09+00:00"
        },
        {
            "name": "unicaen/etat",
@@ -13313,8 +13337,8 @@
            "version": "dev-master",
            "source": {
                "type": "git",
                "url": "https://git.unicaen.fr/open-source/sygal-api.git",
                "reference": "25767439516235eaf946a2eb13ff295ac68ab599"
                "url": "https://git.unicaen.fr/lib/unicaen/sygal-api.git",
                "reference": "d5b8c0d6c97aa1ab5ef6add2fb631c2ab341eaa5"
            },
            "require": {
                "guzzlehttp/guzzle": "^7.0",
@@ -13329,6 +13353,7 @@
            "require-dev": {
                "phpunit/phpunit": "^8.0"
            },
            "default-branch": true,
            "type": "module",
            "autoload": {
                "psr-4": {
@@ -13339,7 +13364,7 @@
                ]
            },
            "description": "API SyGAL",
            "time": "2025-11-13T09:52:31+00:00"
            "time": "2026-06-10T07:44:16+00:00"
        },
        {
            "name": "unicaen/utilisateur",
@@ -16337,7 +16362,8 @@
        "unicaen/authentification": 20,
        "unicaen/db-import": 20,
        "unicaen/pegase-coc-ext-api": 20,
        "unicaen/sygal-api": 20
        "unicaen/sygal-api": 20,
        "unicaen/db-import-exemple": 20
    },
    "prefer-stable": true,
    "prefer-lowest": false,
+4 −4
Original line number Diff line number Diff line
@@ -225,8 +225,8 @@ create index tmp_inscription_administrative_source_code_index
    on tmp_inscription_administrative (source_code);
create index tmp_inscription_administrative_source_id_index
    on tmp_inscription_administrative (source_id);
create unique index tmp_inscription_administrative_unique_index
    on tmp_inscription_administrative (source_id, source_code);
-- create unique index tmp_inscription_administrative_unique_index -- PAS D'INDEX UNIQUE POUR POUVOIR RECEVOIR N FOIS LA MÊME INSCRIPTION
--     on tmp_inscription_administrative (source_id, source_code);
alter table tmp_inscription_administrative
    add constraint tmp_inscription_administrative_source_id_fk
        foreign key (source_id) references source;
@@ -421,8 +421,8 @@ create index tmp_inscription_administrative_apprenant_source_code_index
    on tmp_inscription_administrative_apprenant (source_code);
create index tmp_inscription_administrative_apprenant_source_id_index
    on tmp_inscription_administrative_apprenant (source_id);
create unique index tmp_inscription_administrative_apprenant_unique_index
    on tmp_inscription_administrative_apprenant (source_id, source_code);
-- create unique index tmp_inscription_administrative_apprenant_unique_index -- PAS D'INDEX UNIQUE POUR POUVOIR RECEVOIR N FOIS LA MÊME INSCRIPTION
--     on tmp_inscription_administrative_apprenant (source_id, source_code);
alter table tmp_inscription_administrative_apprenant
    add constraint tmp_inscription_administrative_apprenant_source_id_fk
        foreign key (source_id) references source;
+124 −0
Original line number Diff line number Diff line
--
-- v12.1.0
--

--
-- Suppression des "unique indexes" dans tmp_inscription_administrative et tmp_inscription_administrative_apprenant.
--
--   Nécessaire pour pouvoir suppporter plusieurs envois par Pégase de la même inscription.
--   Il est donc possible d'avoir dans la table plusieures lignes avec les mêmes valeurs de couple (source_id, source_code).
--   La bibliothèque unicaen/db-import a été améliorée pour pouvoir filtrer les lignes dans cette situation (cf. paramètre
--   de config 'duplicates_order_by' dans la source d'une synchro).
--
drop index tmp_inscription_administrative_unique_index;
drop index tmp_inscription_administrative_apprenant_unique_index;

--
-- Modif des vues src_inscription_administrative et src_inscription_administrative_apprenant
-- pour ajouter la colonne 'histo_creation' des tables tmp_*.
--

drop view if exists v_diff_inscription_administrative;
drop view if exists v_diff_inscription_administrative_apprenant;

drop view if exists src_inscription_administrative;
drop view if exists src_inscription_administrative_apprenant;

create view src_inscription_administrative
            (id, histo_creation, source_code, source_id, ecole_doct_id, date_inscription, date_annulation, cesure, chemin,
             code_structure_etablissement_du_chemin, formation, mobilite, origine, principale,
             regime_inscription_libelle, statut_inscription, periode_code, periode_libelle, periode_date_debut,
             periode_date_fin, periode_annee_universitaire)
as
WITH pre AS (SELECT NULL::bigint AS id,
                    tmp.histo_creation,
                    tmp.source_code,
                    src.id       AS source_id,
                    ed.id        AS ecole_doct_id,
                    tmp.date_inscription,
                    tmp.date_annulation,
                    tmp.cesure,
                    tmp.chemin,
                    tmp.code_structure_etablissement_du_chemin,
                    tmp.formation,
                    tmp.mobilite,
                    tmp.origine,
                    tmp.principale,
                    tmp.regime_inscription_libelle,
                    tmp.statut_inscription,
                    tmp.periode_code,
                    tmp.periode_libelle,
                    tmp.periode_date_debut,
                    tmp.periode_date_fin,
                    tmp.periode_annee_universitaire
             FROM tmp_inscription_administrative tmp
                      JOIN source src ON src.id = tmp.source_id
                      LEFT JOIN ecole_doct ed ON ed.source_code::text = tmp.ecole_doct_id::text)
SELECT pre.id,
       pre.histo_creation,
       pre.source_code,
       pre.source_id,
       COALESCE(edsub.to_id, pre.ecole_doct_id) AS ecole_doct_id,
       pre.date_inscription,
       pre.date_annulation,
       pre.cesure,
       pre.chemin,
       pre.code_structure_etablissement_du_chemin,
       pre.formation,
       pre.mobilite,
       pre.origine,
       pre.principale,
       pre.regime_inscription_libelle,
       pre.statut_inscription,
       pre.periode_code,
       pre.periode_libelle,
       pre.periode_date_debut,
       pre.periode_date_fin,
       pre.periode_annee_universitaire
FROM pre
         LEFT JOIN substit_ecole_doct edsub ON edsub.from_id = pre.ecole_doct_id;

create view src_inscription_administrative_apprenant
            (id, histo_creation, source_code, source_id, inscription_administrative_id, code, ine, deuxieme_prenom, genre,
             mail_personnel, mail_urgence, nom_de_naissance, nom_usuel, prenom, prenom_usage, telephone_personnel,
             telephone_urgence, troisieme_prenom, commune_de_naissance, commune_de_naissance_etranger,
             date_d_obtention_de_la_deuxieme_nationalite, date_de_naissance, deuxieme_nationalite,
             libelle_commune_de_naissance, libelle_deuxieme_nationalite, libelle_nationalite, libelle_pays_de_naissance,
             nationalite, pays_de_naissance, haystack)
as
SELECT NULL::bigint                                                                   AS id,
       tmp.histo_creation,
       tmp.source_code,
       src.id                                                                         AS source_id,
       ia.id                                                                          AS inscription_administrative_id,
       tmp.code,
       tmp.ine,
       tmp.deuxieme_prenom,
       tmp.genre,
       tmp.mail_personnel,
       tmp.mail_urgence,
       tmp.nom_de_naissance,
       tmp.nom_usuel,
       tmp.prenom,
       tmp.prenom_usage,
       tmp.telephone_personnel,
       tmp.telephone_urgence,
       tmp.troisieme_prenom,
       tmp.commune_de_naissance,
       tmp.commune_de_naissance_etranger,
       tmp.date_d_obtention_de_la_deuxieme_nationalite,
       tmp.date_de_naissance,
       tmp.deuxieme_nationalite,
       tmp.libelle_commune_de_naissance,
       tmp.libelle_deuxieme_nationalite,
       tmp.libelle_nationalite,
       tmp.libelle_pays_de_naissance,
       tmp.nationalite,
       tmp.pays_de_naissance,
       btrim(str_reduce(array_to_string(
               ARRAY[tmp.code,tmp.ine,tmp.nom_de_naissance,tmp.nom_usuel,tmp.prenom,tmp.deuxieme_prenom,tmp.prenom_usage],
               ' '
                        ))) as haystack
FROM tmp_inscription_administrative_apprenant tmp
         JOIN source src ON src.id = tmp.source_id
         LEFT JOIN inscription_administrative ia ON ia.source_code::text = tmp.inscription_administrative_id::text;
Loading