From 56ac3e6ec367368afb5a412ee88d50310b87c8f4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Laurent=20L=C3=A9cluse?= <laurent.lecluse@unicaen.fr> Date: Thu, 12 Apr 2018 16:41:20 +0200 Subject: [PATCH] =?UTF-8?q?MAJ=20Doc=20:=20Corrections=20sur=20le=20CRON?= =?UTF-8?q?=20Nouveau=20bug=20corrig=C3=A9=20(export=20services=20sans=20l?= =?UTF-8?q?ibell=C3=A9=20d'=C3=A9tape)=20UnicaenImport=20mis=20=C3=A0=20jo?= =?UTF-8?q?ur?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG | 13 +- composer.json | 2 +- "data/D\303\251ploiement/Changements.pdf" | Bin 168863 -> 169020 bytes .../Proc\303\251dure d'installation.md" | 16 +- .../Proc\303\251dure d'installation.pdf" | Bin 206907 -> 206899 bytes ...roc\303\251dure de mise \303\240 jour.pdf" | Bin 162098 -> 162098 bytes "data/D\303\251ploiement/ose-ddl.sql" | 66 ++++--- "data/Mises \303\240 jour/06.3.sql" | 168 +++++++++++++++++- .../Application/Service/ServiceService.php | 2 +- 9 files changed, 222 insertions(+), 45 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 331897b6bd..bf3aa27c6d 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -11,16 +11,19 @@ author: Laurent Lécluse - DSI - Unicaen * Ajout de la dépendance à BCMath (extension PHP à installer). -* Correction de bug portant sur la validation du numéro INSEE dans les données personnelles. +* Ajout de la dépendance à GD (extension PHP à installer). -* Correction de bug portant sur la recherche d'intervenants (se produisant uniquement avec PHP 7.1). +* La validation du numéro INSEE dans les données personnelles était incorrecte dans certains cas. + +* Recherche d'intervenants inopérante (se produisant uniquement avec PHP 7.1). * Connecteurs : les disciplines remontent aussi pour les intervenants ayant une fin d'affectation en cours d'année. -* Correction de bug empêchant l'affichage de l'interface d'administration des années. +* L'affichage de l'interface d'administration des années ne fonctionnait plus. + +* à l'installation : toutes les tables étaient considérées par défaut comme synchronisées, ce qui n'était pas le cas. -* Correction de bug à l'installation : toutes les tables étaient considérées par défaut comme -synchronisées, ce qui n'était pas le cas. +* Dans l'export CSV des services, le libellé de formation n'apparaissait plus. ## Nouveautés diff --git a/composer.json b/composer.json index 75371dce40..ec3ba225fc 100755 --- a/composer.json +++ b/composer.json @@ -16,7 +16,7 @@ "zf-commons/zfc-user": "0.1.3", "zendframework/zend-file": "^2.4", "unicaen/code": "1.1.5", - "unicaen/import": "1.1.5", + "unicaen/import": "1.1.6", "unicaen/tbl": "1.0.3" } } diff --git "a/data/D\303\251ploiement/Changements.pdf" "b/data/D\303\251ploiement/Changements.pdf" index 83086a140ff7c6994ce315d58a8509f08900e5ea..170d6983eba0924dd39dc4eaf44a0e7f3eec456d 100644 GIT binary patch delta 19940 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ⓈpeQ`0t#@$ycv<j0<-@t(ejH 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 delta 19813 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 diff --git "a/data/D\303\251ploiement/Proc\303\251dure d'installation.md" "b/data/D\303\251ploiement/Proc\303\251dure d'installation.md" index 5457fef6c9..f3d6d47909 100644 --- "a/data/D\303\251ploiement/Proc\303\251dure d'installation.md" +++ "b/data/D\303\251ploiement/Proc\303\251dure d'installation.md" @@ -156,9 +156,9 @@ Dans tous les cas, c'est le script de OSE qui sera appelé. Le script est situé dans le répertoire de OSE, `bin/ose`. Il est suivi de l'action à exécuter, puis éventuellement de paramètres à préciser. -Exemple d'utilisation pour lancer une tâche de synchronisation appelée `principal`: +Exemple d'utilisation pour lancer une tâche de synchronisation appelée `synchro`: ```bash -/usr/bin/php /var/www/ose/bin/ose synchronisation principal +/usr/bin/php /var/www/ose/bin/ose synchronisation synchro ``` | Usage | Fréquence | Action de script | @@ -169,18 +169,18 @@ Exemple d'utilisation pour lancer une tâche de synchronisation appelée `princi | Calcul des tableaux de bord | Deux fois par jour sauf le dimanche (Calcul LONG) | calcul-tableaux-bord | | Calcul des heures complémentaires à l'aide de la formule (calcul LONG) | Les lundi et jeudi à 3h | formule-calcul | -Après la commande, on ajoute `1> /tmp/oselog 2>&1` pour loguer le résultat dans le fichier`/tmp/oselog`. +Après la commande, on ajoute `> /tmp/oselog 2>&1` pour loguer le résultat dans le fichier`/tmp/oselog`. A adapter le cas échéant. Voici un exemple de crontab : ```cron # m h dom mon dow command -0 5-17 * * 1-5 /usr/bin/php /var/www/ose/bin/ose notifier-indicateurs 1> /tmp/oselog 2>&1 -*/15 7-21 * * 1-6 /usr/bin/php /var/www/ose/bin/ose synchronisation job1 1> /tmp/oselog 2>&1 -0 20 * * 1-6 /usr/bin/php /var/www/ose/bin/ose chargens-calcul-effectifs 1> /tmp/oselog 2>&1 -0 6,14 * * 1-6 /usr/bin/php /var/www/ose/bin/ose calcul-tableaux-bord 1> /tmp/oselog 2>&1 -0 3 * * 1,4 /usr/bin/php /var/www/ose/bin/ose formule-calcul 1> /tmp/oselog 2>&1 +0 5-17 * * 1-5 /usr/bin/php /var/www/ose/bin/ose notifier-indicateurs > /tmp/oselog 2>&1 +*/15 7-21 * * 1-6 /usr/bin/php /var/www/ose/bin/ose synchronisation synchro > /tmp/oselog 2>&1 +0 20 * * 1-6 /usr/bin/php /var/www/ose/bin/ose chargens-calcul-effectifs > /tmp/oselog 2>&1 +0 6,14 * * 1-6 /usr/bin/php /var/www/ose/bin/ose calcul-tableaux-bord > /tmp/oselog 2>&1 +0 3 * * 1,4 /usr/bin/php /var/www/ose/bin/ose formule-calcul > /tmp/oselog 2>&1 ``` OSE est maintenant installé. diff --git "a/data/D\303\251ploiement/Proc\303\251dure d'installation.pdf" "b/data/D\303\251ploiement/Proc\303\251dure d'installation.pdf" index 3e53b89d59710eddc41943d817bc151d14f5d6f7..8c5da9e2c5aa52921782c4bdc6151f738d054ea5 100644 GIT binary patch delta 5237 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 QFf+6?=2BI4^>^a}0Nza?EC2ui delta 5173 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 Dk#q&K diff --git "a/data/D\303\251ploiement/Proc\303\251dure de mise \303\240 jour.pdf" "b/data/D\303\251ploiement/Proc\303\251dure de mise \303\240 jour.pdf" index 575ce96a60630a0d747a69e8eeeee378f6199e74..c4be40231e8600502bd81d33b88deb4871782190 100644 GIT binary patch delta 108 zcmdn=iF4B@&W0AoElkC^tY${01{TvRa+%~H%<Z#tnIgEHOq^XUjE#&;TuqEz42(=H f-7Fo=Eu9R^T#bxeo!u<$6l{zMD4A|r!SojZo1+~i delta 108 zcmdn=iF4B@&W0AoElkC^tOmvgMwZhna+%~H%<Z#tnIgEHEKLo~j9i_}U0s}<3{71f fT@5VEOf3xzEKQwFjg4LG6l{zMD4A|r!SojZnsglt diff --git "a/data/D\303\251ploiement/ose-ddl.sql" "b/data/D\303\251ploiement/ose-ddl.sql" index eb8f92ee7c..c10f9d63cf 100755 --- "a/data/D\303\251ploiement/ose-ddl.sql" +++ "b/data/D\303\251ploiement/ose-ddl.sql" @@ -18886,46 +18886,54 @@ INSERT INTO ETAT_VOLUME_HORAIRE(ID, CODE, LIBELLE, ORDRE) VALUES (ETAT_VOLUME_HO -- Table IMPORT_TABLES -INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED, SYNC_JOB, SYNC_HOOK_BEFORE, SYNC_HOOK_AFTER, ORDRE) VALUES (q'[INTERVENANT]', q'[WHERE (IMPORT_ACTION IN ('delete','update','undelete') OR STATUT_ID IN (SELECT si.id FROM statut_intervenant si JOIN type_intervenant ti ON ti.id = si.type_intervenant_id WHERE ti.code = 'P'))]', 0, NULL, q'[UNICAEN_IMPORT.REFRESH_MV('MV_UNICAEN_STRUCTURE_CODES'); +INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED, SYNC_JOB, SYNC_HOOK_BEFORE, SYNC_HOOK_AFTER, ORDRE) VALUES (q'[INTERVENANT]', q'[WHERE ( + IMPORT_ACTION IN ('delete','update','undelete') + OR STATUT_ID IN ( + SELECT si.id + FROM statut_intervenant si + JOIN type_intervenant ti ON ti.id = si.type_intervenant_id + WHERE ti.code = 'P' + ) +)]', 0, q'[synchro]', q'[UNICAEN_IMPORT.REFRESH_MV('MV_UNICAEN_STRUCTURE_CODES'); UNICAEN_IMPORT.REFRESH_MV('MV_INTERVENANT');]', NULL, 12); -INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED, SYNC_JOB, SYNC_HOOK_BEFORE, SYNC_HOOK_AFTER, ORDRE) VALUES (q'[AFFECTATION_RECHERCHE]', q'[WHERE INTERVENANT_ID IS NOT NULL]', 0, NULL, NULL, NULL, 13); -INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED, SYNC_JOB, SYNC_HOOK_BEFORE, SYNC_HOOK_AFTER, ORDRE) VALUES (q'[ADRESSE_INTERVENANT]', q'[WHERE INTERVENANT_ID IS NOT NULL]', 0, q'[test1]', NULL, NULL, 14); +INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED, SYNC_JOB, SYNC_HOOK_BEFORE, SYNC_HOOK_AFTER, ORDRE) VALUES (q'[AFFECTATION_RECHERCHE]', q'[WHERE INTERVENANT_ID IS NOT NULL]', 0, q'[synchro]', NULL, NULL, 13); +INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED, SYNC_JOB, SYNC_HOOK_BEFORE, SYNC_HOOK_AFTER, ORDRE) VALUES (q'[ADRESSE_INTERVENANT]', q'[WHERE INTERVENANT_ID IS NOT NULL]', 0, q'[synchro]', NULL, NULL, 14); INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED, SYNC_JOB, SYNC_HOOK_BEFORE, SYNC_HOOK_AFTER, ORDRE) VALUES (q'[ELEMENT_TAUX_REGIMES]', q'[WHERE IMPORT_ACTION IN ('delete','insert','undelete')]', 0, NULL, NULL, NULL, 20); -INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED, SYNC_JOB, SYNC_HOOK_BEFORE, SYNC_HOOK_AFTER, ORDRE) VALUES (q'[VOLUME_HORAIRE_ENS]', NULL, 0, q'[test1]', NULL, NULL, 22); -INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED, SYNC_JOB, SYNC_HOOK_BEFORE, SYNC_HOOK_AFTER, ORDRE) VALUES (q'[TYPE_MODULATEUR_EP]', NULL, 0, q'[test1]', NULL, NULL, 27); -INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED, SYNC_JOB, SYNC_HOOK_BEFORE, SYNC_HOOK_AFTER, ORDRE) VALUES (q'[TYPE_INTERVENTION_EP]', NULL, 0, q'[test1]', NULL, NULL, 26); -INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED, SYNC_JOB, SYNC_HOOK_BEFORE, SYNC_HOOK_AFTER, ORDRE) VALUES (q'[TYPE_FORMATION]', NULL, 0, q'[test1]', NULL, NULL, 16); -INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED, SYNC_JOB, SYNC_HOOK_BEFORE, SYNC_HOOK_AFTER, ORDRE) VALUES (q'[STRUCTURE]', NULL, 0, q'[test1]', NULL, NULL, 4); -INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED, SYNC_JOB, SYNC_HOOK_BEFORE, SYNC_HOOK_AFTER, ORDRE) VALUES (q'[SCENARIO_LIEN]', NULL, 0, q'[test1]', NULL, NULL, 25); -INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED, SYNC_JOB, SYNC_HOOK_BEFORE, SYNC_HOOK_AFTER, ORDRE) VALUES (q'[PAYS]', NULL, 0, q'[test1]', NULL, NULL, 1); -INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED, SYNC_JOB, SYNC_HOOK_BEFORE, SYNC_HOOK_AFTER, ORDRE) VALUES (q'[NOEUD]', NULL, 0, q'[test1]', NULL, q'[UNICAEN_IMPORT.REFRESH_MV('TBL_NOEUD'); +INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED, SYNC_JOB, SYNC_HOOK_BEFORE, SYNC_HOOK_AFTER, ORDRE) VALUES (q'[VOLUME_HORAIRE_ENS]', NULL, 0, q'[synchro]', NULL, NULL, 22); +INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED, SYNC_JOB, SYNC_HOOK_BEFORE, SYNC_HOOK_AFTER, ORDRE) VALUES (q'[TYPE_MODULATEUR_EP]', NULL, 0, q'[synchro]', NULL, NULL, 27); +INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED, SYNC_JOB, SYNC_HOOK_BEFORE, SYNC_HOOK_AFTER, ORDRE) VALUES (q'[TYPE_INTERVENTION_EP]', NULL, 0, q'[synchro]', NULL, NULL, 26); +INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED, SYNC_JOB, SYNC_HOOK_BEFORE, SYNC_HOOK_AFTER, ORDRE) VALUES (q'[TYPE_FORMATION]', NULL, 0, q'[synchro]', NULL, NULL, 16); +INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED, SYNC_JOB, SYNC_HOOK_BEFORE, SYNC_HOOK_AFTER, ORDRE) VALUES (q'[STRUCTURE]', NULL, 0, q'[synchro]', NULL, NULL, 4); +INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED, SYNC_JOB, SYNC_HOOK_BEFORE, SYNC_HOOK_AFTER, ORDRE) VALUES (q'[SCENARIO_LIEN]', NULL, 0, q'[synchro]', NULL, NULL, 25); +INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED, SYNC_JOB, SYNC_HOOK_BEFORE, SYNC_HOOK_AFTER, ORDRE) VALUES (q'[PAYS]', NULL, 0, q'[synchro]', NULL, NULL, 1); +INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED, SYNC_JOB, SYNC_HOOK_BEFORE, SYNC_HOOK_AFTER, ORDRE) VALUES (q'[NOEUD]', NULL, 0, q'[synchro]', NULL, q'[UNICAEN_IMPORT.REFRESH_MV('TBL_NOEUD'); UNICAEN_TBL.CALCULER('chargens');]', 23); -INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED, SYNC_JOB, SYNC_HOOK_BEFORE, SYNC_HOOK_AFTER, ORDRE) VALUES (q'[LIEN]', NULL, 0, q'[test1]', NULL, NULL, 24); -INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED, SYNC_JOB, SYNC_HOOK_BEFORE, SYNC_HOOK_AFTER, ORDRE) VALUES (q'[GROUPE_TYPE_FORMATION]', NULL, 0, q'[test1]', NULL, NULL, 15); -INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED, SYNC_JOB, SYNC_HOOK_BEFORE, SYNC_HOOK_AFTER, ORDRE) VALUES (q'[GRADE]', NULL, 0, q'[test1]', NULL, NULL, 11); -INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED, SYNC_JOB, SYNC_HOOK_BEFORE, SYNC_HOOK_AFTER, ORDRE) VALUES (q'[ETAPE]', NULL, 0, q'[test1]', NULL, NULL, 17); -INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED, SYNC_JOB, SYNC_HOOK_BEFORE, SYNC_HOOK_AFTER, ORDRE) VALUES (q'[ETABLISSEMENT]', NULL, 0, q'[test1]', NULL, NULL, 3); -INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED, SYNC_JOB, SYNC_HOOK_BEFORE, SYNC_HOOK_AFTER, ORDRE) VALUES (q'[ELEMENT_PEDAGOGIQUE]', NULL, 0, q'[test1]', NULL, NULL, 18); -INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED, SYNC_JOB, SYNC_HOOK_BEFORE, SYNC_HOOK_AFTER, ORDRE) VALUES (q'[EFFECTIFS]', NULL, 0, q'[test1]', NULL, NULL, 19); -INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED, SYNC_JOB, SYNC_HOOK_BEFORE, SYNC_HOOK_AFTER, ORDRE) VALUES (q'[DOMAINE_FONCTIONNEL]', NULL, 0, q'[test1]', NULL, NULL, 6); -INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED, SYNC_JOB, SYNC_HOOK_BEFORE, SYNC_HOOK_AFTER, ORDRE) VALUES (q'[DEPARTEMENT]', NULL, 0, q'[test1]', NULL, NULL, 2); -INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED, SYNC_JOB, SYNC_HOOK_BEFORE, SYNC_HOOK_AFTER, ORDRE) VALUES (q'[CORPS]', NULL, 0, q'[test1]', NULL, NULL, 10); -INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED, SYNC_JOB, SYNC_HOOK_BEFORE, SYNC_HOOK_AFTER, ORDRE) VALUES (q'[CHEMIN_PEDAGOGIQUE]', NULL, 0, NULL, NULL, NULL, 21); -INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED, SYNC_JOB, SYNC_HOOK_BEFORE, SYNC_HOOK_AFTER, ORDRE) VALUES (q'[CENTRE_COUT_STRUCTURE]', NULL, 0, q'[test1]', NULL, NULL, 8); -INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED, SYNC_JOB, SYNC_HOOK_BEFORE, SYNC_HOOK_AFTER, ORDRE) VALUES (q'[CENTRE_COUT]', NULL, 0, q'[test1]', NULL, NULL, 7); -INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED, SYNC_JOB, SYNC_HOOK_BEFORE, SYNC_HOOK_AFTER, ORDRE) VALUES (q'[AFFECTATION]', NULL, 0, q'[test1]', q'[UNICAEN_IMPORT.REFRESH_MV('MV_AFFECTATION'); +INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED, SYNC_JOB, SYNC_HOOK_BEFORE, SYNC_HOOK_AFTER, ORDRE) VALUES (q'[LIEN]', NULL, 0, q'[synchro]', NULL, NULL, 24); +INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED, SYNC_JOB, SYNC_HOOK_BEFORE, SYNC_HOOK_AFTER, ORDRE) VALUES (q'[GROUPE_TYPE_FORMATION]', NULL, 0, q'[synchro]', NULL, NULL, 15); +INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED, SYNC_JOB, SYNC_HOOK_BEFORE, SYNC_HOOK_AFTER, ORDRE) VALUES (q'[GRADE]', NULL, 0, q'[synchro]', NULL, NULL, 11); +INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED, SYNC_JOB, SYNC_HOOK_BEFORE, SYNC_HOOK_AFTER, ORDRE) VALUES (q'[ETAPE]', NULL, 0, q'[synchro]', NULL, NULL, 17); +INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED, SYNC_JOB, SYNC_HOOK_BEFORE, SYNC_HOOK_AFTER, ORDRE) VALUES (q'[ETABLISSEMENT]', NULL, 0, q'[synchro]', NULL, NULL, 3); +INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED, SYNC_JOB, SYNC_HOOK_BEFORE, SYNC_HOOK_AFTER, ORDRE) VALUES (q'[ELEMENT_PEDAGOGIQUE]', NULL, 0, q'[synchro]', NULL, NULL, 18); +INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED, SYNC_JOB, SYNC_HOOK_BEFORE, SYNC_HOOK_AFTER, ORDRE) VALUES (q'[EFFECTIFS]', NULL, 0, q'[synchro]', NULL, NULL, 19); +INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED, SYNC_JOB, SYNC_HOOK_BEFORE, SYNC_HOOK_AFTER, ORDRE) VALUES (q'[DOMAINE_FONCTIONNEL]', NULL, 0, q'[synchro]', NULL, NULL, 6); +INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED, SYNC_JOB, SYNC_HOOK_BEFORE, SYNC_HOOK_AFTER, ORDRE) VALUES (q'[DEPARTEMENT]', NULL, 0, q'[synchro]', NULL, NULL, 2); +INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED, SYNC_JOB, SYNC_HOOK_BEFORE, SYNC_HOOK_AFTER, ORDRE) VALUES (q'[CORPS]', NULL, 0, q'[synchro]', NULL, NULL, 10); +INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED, SYNC_JOB, SYNC_HOOK_BEFORE, SYNC_HOOK_AFTER, ORDRE) VALUES (q'[CHEMIN_PEDAGOGIQUE]', NULL, 0, q'[synchro]', NULL, NULL, 21); +INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED, SYNC_JOB, SYNC_HOOK_BEFORE, SYNC_HOOK_AFTER, ORDRE) VALUES (q'[CENTRE_COUT_STRUCTURE]', NULL, 0, q'[synchro]', NULL, NULL, 8); +INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED, SYNC_JOB, SYNC_HOOK_BEFORE, SYNC_HOOK_AFTER, ORDRE) VALUES (q'[CENTRE_COUT]', NULL, 0, q'[synchro]', NULL, NULL, 7); +INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED, SYNC_JOB, SYNC_HOOK_BEFORE, SYNC_HOOK_AFTER, ORDRE) VALUES (q'[AFFECTATION]', NULL, 0, q'[synchro]', q'[UNICAEN_IMPORT.REFRESH_MV('MV_AFFECTATION'); /* Import automatique des users des nouveaux directeurs */ INSERT INTO utilisateur ( id, display_name, email, password, state, username ) SELECT - utilisateur_id_seq.nextval id, + utilisateur_id_seq.nextval id, aff.* -FROM +FROM (SELECT DISTINCT display_name, email, password, state, username FROM mv_affectation) aff -WHERE +WHERE username not in (select username from utilisateur);]', NULL, 9); -INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED, SYNC_JOB, SYNC_HOOK_BEFORE, SYNC_HOOK_AFTER, ORDRE) VALUES (q'[ADRESSE_STRUCTURE]', NULL, 0, q'[test1]', NULL, NULL, 5); +INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED, SYNC_JOB, SYNC_HOOK_BEFORE, SYNC_HOOK_AFTER, ORDRE) VALUES (q'[ADRESSE_STRUCTURE]', NULL, 0, q'[synchro]', NULL, NULL, 5); -- Table INDICATEUR diff --git "a/data/Mises \303\240 jour/06.3.sql" "b/data/Mises \303\240 jour/06.3.sql" index d13a821996..b874b88059 100644 --- "a/data/Mises \303\240 jour/06.3.sql" +++ "b/data/Mises \303\240 jour/06.3.sql" @@ -19,6 +19,72 @@ ALTER TABLE import_tables ADD ( sync_hook_after VARCHAR2(4000 CHAR) ); +UPDATE import_tables SET ordre = 1 WHERE table_name = 'PAYS'; +UPDATE import_tables SET ordre = 2 WHERE table_name = 'DEPARTEMENT'; +UPDATE import_tables SET ordre = 3 WHERE table_name = 'ETABLISSEMENT'; +UPDATE import_tables SET ordre = 4 WHERE table_name = 'STRUCTURE'; +UPDATE import_tables SET ordre = 5 WHERE table_name = 'ADRESSE_STRUCTURE'; +UPDATE import_tables SET ordre = 6 WHERE table_name = 'DOMAINE_FONCTIONNEL'; +UPDATE import_tables SET ordre = 7 WHERE table_name = 'CENTRE_COUT'; +UPDATE import_tables SET ordre = 8 WHERE table_name = 'CENTRE_COUT_STRUCTURE'; +UPDATE import_tables SET ordre = 9 WHERE table_name = 'AFFECTATION'; +UPDATE import_tables SET ordre = 10 WHERE table_name = 'CORPS'; +UPDATE import_tables SET ordre = 11 WHERE table_name = 'GRADE'; +UPDATE import_tables SET ordre = 12 WHERE table_name = 'INTERVENANT'; +UPDATE import_tables SET ordre = 13 WHERE table_name = 'AFFECTATION_RECHERCHE'; +UPDATE import_tables SET ordre = 14 WHERE table_name = 'ADRESSE_INTERVENANT'; +UPDATE import_tables SET ordre = 15 WHERE table_name = 'GROUPE_TYPE_FORMATION'; +UPDATE import_tables SET ordre = 16 WHERE table_name = 'TYPE_FORMATION'; +UPDATE import_tables SET ordre = 17 WHERE table_name = 'ETAPE'; +UPDATE import_tables SET ordre = 18 WHERE table_name = 'ELEMENT_PEDAGOGIQUE'; +UPDATE import_tables SET ordre = 19 WHERE table_name = 'EFFECTIFS'; +UPDATE import_tables SET ordre = 20 WHERE table_name = 'ELEMENT_TAUX_REGIMES'; +UPDATE import_tables SET ordre = 21 WHERE table_name = 'CHEMIN_PEDAGOGIQUE'; +UPDATE import_tables SET ordre = 22 WHERE table_name = 'VOLUME_HORAIRE_ENS'; +UPDATE import_tables SET ordre = 23 WHERE table_name = 'NOEUD'; +UPDATE import_tables SET ordre = 24 WHERE table_name = 'LIEN'; +UPDATE import_tables SET ordre = 25 WHERE table_name = 'SCENARIO_LIEN'; +UPDATE import_tables SET ordre = 26 WHERE table_name = 'TYPE_INTERVENTION_EP'; +UPDATE import_tables SET ordre = 27 WHERE table_name = 'TYPE_MODULATEUR_EP'; + +UPDATE import_tables SET sync_job = 'synchro' WHERE table_name IN ( +'PAYS','DEPARTEMENT','ETABLISSEMENT','STRUCTURE','ADRESSE_STRUCTURE','DOMAINE_FONCTIONNEL','CENTRE_COUT', +'CENTRE_COUT_STRUCTURE','AFFECTATION','CORPS','GRADE','INTERVENANT','AFFECTATION_RECHERCHE', +'ADRESSE_INTERVENANT','GROUPE_TYPE_FORMATION','TYPE_FORMATION','ETAPE','ELEMENT_PEDAGOGIQUE','EFFECTIFS', +'CHEMIN_PEDAGOGIQUE','VOLUME_HORAIRE_ENS','NOEUD','LIEN','SCENARIO_LIEN','TYPE_INTERVENTION_EP', +'TYPE_MODULATEUR_EP'); + +UPDATE IMPORT_TABLES SET SYNC_HOOK_BEFORE = 'UNICAEN_IMPORT.REFRESH_MV(''MV_AFFECTATION''); +/* Import automatique des users des nouveaux directeurs */ +INSERT INTO utilisateur ( + id, display_name, email, password, state, username +) +SELECT + utilisateur_id_seq.nextval id, + aff.* +FROM + (SELECT DISTINCT display_name, email, password, state, username FROM mv_affectation) aff +WHERE + username not in (select username from utilisateur);' WHERE table_name = 'AFFECTATION'; + +UPDATE IMPORT_TABLES SET SYNC_FILTRE = 'WHERE ( + IMPORT_ACTION IN (''delete'',''update'',''undelete'') + OR STATUT_ID IN ( + SELECT si.id + FROM statut_intervenant si + JOIN type_intervenant ti ON ti.id = si.type_intervenant_id + WHERE ti.code = ''P'' + ) +)', SYNC_HOOK_BEFORE = 'UNICAEN_IMPORT.REFRESH_MV(''MV_UNICAEN_STRUCTURE_CODES''); +UNICAEN_IMPORT.REFRESH_MV(''MV_INTERVENANT'');' WHERE table_name = 'INTERVENANT'; + +UPDATE IMPORT_TABLES SET SYNC_FILTRE = 'WHERE INTERVENANT_ID IS NOT NULL' WHERE table_name IN ('AFFECTATION_RECHERCHE','ADRESSE_INTERVENANT'); + +UPDATE IMPORT_TABLES SET SYNC_FILTRE = 'WHERE IMPORT_ACTION IN (''delete'',''insert'',''undelete'')' WHERE table_name = 'ELEMENT_TAUX_REGIMES'; + +UPDATE IMPORT_TABLES SET SYNC_HOOK_AFTER = 'UNICAEN_IMPORT.REFRESH_MV(''TBL_NOEUD''); +UNICAEN_TBL.CALCULER(''chargens'');' WHERE table_name = 'NOEUD'; + CREATE OR REPLACE FORCE VIEW "V_IMPORT_TAB_COLS" ("TABLE_NAME", "COLUMN_NAME", "DATA_TYPE", "LENGTH", "NULLABLE", "HAS_DEFAULT", "C_TABLE_NAME", "C_COLUMN_NAME", "IMPORT_ACTIF") AS WITH importable_tables (table_name )AS ( @@ -150,4 +216,104 @@ INSERT INTO role_privilege ( SELECT p.id FROM privilege p JOIN categorie_privilege cp ON cp.id = p.categorie_id WHERE cp.code || '/' || p.code = 'import/tables-edition' ) -); \ No newline at end of file +); + +/ + +create or replace PACKAGE UNICAEN_IMPORT AS + + z__SYNC_FILRE__z CLOB DEFAULT ''; + z__IGNORE_UPD_COLS__z CLOB DEFAULT ''; + + PROCEDURE set_current_user(p_current_user IN INTEGER); + FUNCTION get_current_user return INTEGER; + + FUNCTION get_current_annee RETURN INTEGER; + PROCEDURE set_current_annee (p_current_annee INTEGER); + + FUNCTION IN_COLUMN_LIST( VALEUR VARCHAR2, CHAMPS CLOB ) RETURN NUMERIC; + PROCEDURE REFRESH_MV( mview_name varchar2 ); + PROCEDURE SYNC_LOG( message CLOB, table_name VARCHAR2 DEFAULT NULL, source_code VARCHAR2 DEFAULT NULL ); + + PROCEDURE SYNCHRONISATION( table_name VARCHAR2, SYNC_FILRE CLOB DEFAULT '', IGNORE_UPD_COLS CLOB DEFAULT '' ); + + + +END UNICAEN_IMPORT; + +/ + +create or replace PACKAGE BODY UNICAEN_IMPORT AS + + v_current_user INTEGER; + v_current_annee INTEGER; + + + + FUNCTION get_current_user RETURN INTEGER IS + BEGIN + IF v_current_user IS NULL THEN + v_current_user := OSE_PARAMETRE.GET_OSE_USER(); + END IF; + RETURN v_current_user; + END get_current_user; + + PROCEDURE set_current_user (p_current_user INTEGER) is + BEGIN + v_current_user := p_current_user; + END set_current_user; + + + + FUNCTION get_current_annee RETURN INTEGER IS + BEGIN + IF v_current_annee IS NULL THEN + v_current_annee := OSE_PARAMETRE.GET_ANNEE_IMPORT(); + END IF; + RETURN v_current_annee; + END get_current_annee; + + PROCEDURE set_current_annee (p_current_annee INTEGER) IS + BEGIN + v_current_annee := p_current_annee; + END set_current_annee; + + + + PROCEDURE SYNCHRONISATION( table_name VARCHAR2, SYNC_FILRE CLOB DEFAULT '', IGNORE_UPD_COLS CLOB DEFAULT '' ) IS + ok NUMERIC(1); + BEGIN + SELECT COUNT(*) INTO ok FROM import_tables it WHERE it.table_name = SYNCHRONISATION.table_name AND it.sync_enabled = 1 AND rownum = 1; + + IF 1 = ok THEN + z__SYNC_FILRE__z := SYNCHRONISATION.SYNC_FILRE; + z__IGNORE_UPD_COLS__z := SYNCHRONISATION.IGNORE_UPD_COLS; + EXECUTE IMMEDIATE 'BEGIN UNICAEN_IMPORT_AUTOGEN_PROCS__.' || table_name || '(); END;'; + END IF; + END; + + + + PROCEDURE REFRESH_MV( mview_name varchar2 ) IS + BEGIN + DBMS_MVIEW.REFRESH(mview_name, 'C'); + EXCEPTION WHEN OTHERS THEN + SYNC_LOG( SQLERRM, mview_name ); + END; + + + + PROCEDURE SYNC_LOG( message CLOB, table_name VARCHAR2 DEFAULT NULL, source_code VARCHAR2 DEFAULT NULL ) IS + BEGIN + INSERT INTO SYNC_LOG("ID","DATE_SYNC","MESSAGE","TABLE_NAME","SOURCE_CODE") VALUES (SYNC_LOG_ID_SEQ.NEXTVAL, SYSDATE, message,table_name,source_code); + END SYNC_LOG; + + + + FUNCTION IN_COLUMN_LIST( VALEUR VARCHAR2, CHAMPS CLOB ) RETURN NUMERIC IS + BEGIN + IF REGEXP_LIKE(CHAMPS, '(^|,)[ \t\r\n\v\f]*' || VALEUR || '[ \t\r\n\v\f]*(,|$)') THEN RETURN 1; END IF; + RETURN 0; + END; + +END UNICAEN_IMPORT; \ No newline at end of file diff --git a/module/Application/src/Application/Service/ServiceService.php b/module/Application/src/Application/Service/ServiceService.php index 2fc4688504..4230114dc2 100644 --- a/module/Application/src/Application/Service/ServiceService.php +++ b/module/Application/src/Application/Service/ServiceService.php @@ -880,7 +880,7 @@ class ServiceService extends AbstractEntityService 'type-formation-libelle' => $d['TYPE_FORMATION_LIBELLE'], 'etape-niveau' => empty($d['ETAPE_NIVEAU']) ? null : (int)$d['ETAPE_NIVEAU'], 'etape-code' => $d['ETAPE_CODE'], - 'etape-etablissement-libelle' => $d['ETAPE_LIBELLE'] ? $d['ETAPE_LIBELLE'] : $d['SERVICE_REF_FORMATION'] ? $d['SERVICE_REF_FORMATION'] : $d['ETABLISSEMENT_LIBELLE'], + 'etape-etablissement-libelle' => $d['ETAPE_LIBELLE'] ? $d['ETAPE_LIBELLE'] : ($d['SERVICE_REF_FORMATION'] ? $d['SERVICE_REF_FORMATION'] : $d['ETABLISSEMENT_LIBELLE']), 'element-code' => $d['ELEMENT_CODE'], 'element-fonction-libelle' => $d['ELEMENT_LIBELLE'] ? $d['ELEMENT_LIBELLE'] : $d['FONCTION_REFERENTIEL_LIBELLE'], 'element-discipline-code' => $d['ELEMENT_DISCIPLINE_CODE'], -- GitLab