Commit f360bbf2 authored by Alexandre Zvenigorosky's avatar Alexandre Zvenigorosky
Browse files

Merge branch 'Calendaire' of git.unicaen.fr:open-source/OSE into Modulateurs-Statuts

parents 9a8aa307 71781d07
......@@ -3,7 +3,43 @@ title: "Changements intervenus sur OSE"
author: Laurent Lécluse - DSI - Unicaen
...
#OSE 6.3.2 (en développement)
#OSE 7.0 (en développement)
## Corrections de bugs
* La page "Contact" est maintenant personnalisable.
* Le bug empêchant de saisir de nouveaux services depuis la page "Services" est résolu.
* Les filtres portant sur l'export des services (CSV et PDF) refonctionnent.
## Nouveautés
* Synchronisation possible de services et des volumes horaires associés (en vue d'import depuis ADE)
* Possibilité de définir des volumes horaires enseignement et référentiel comme auto-validés.
* Possibilité de déterminer si les heures de service pour un type de formation donné peuvent être comptées dans le service statutaire ou non.
* Possibilité de déterminer si les heures pour une fonction référentielle donnée peuvent être comptées dans le service statutaire ou non.
* Possibilité d'importer des heures d'enseignement depuis ADE.
* Possibilité de basculer OSE en mode calendaire ou en mode semestriel (par défaut) selon qu'on soit en prévisionnel ou en réalisé.
* Le pays "France" peut maintenant être sélectionné dans la configuration globale de l'application
## Notes de mise à jour
* Modifiez la structure de votre base de données en exécutant dans SQL developer le script de mise à jour suivant :
`data/Mises à jour/07.0.sql`
* Ajoutez un paramètre "contact" dans votre fichier de configuration de l'application, rubrique "etablissement"
pour pouvoir définir le contenu de votre page "contact"
* Idem si vous voulez personnaliser l'icône de l'application (paramètre icones dans etablissement du fichier de config).
#OSE 6.3.2
## Corrections de bugs
......@@ -20,6 +56,13 @@ les autres sont tout de même mis à jour.
* Données personnelles : les statuts supprimés étaient toujours disponibles au choix.
* Clôture des services réalisés : les tableaux de bord se mettent à jour automatiquement, ce qui n'était pas le cas avant.
* Lors de la déconnexion, lorsqu'on est cassifié, l'application met complètement fin à la session de
l'utilisateur, ce qui n'était pas le cas avant où on pouvais se reconnecter sans avoir à se ré-authentifier.
* Correction de bug faisant planter la saisie d'un nouveau service depuis la page "Enseignements".
## Nouveautés
* Pièces justificatives : vous avez la possibilité de personnaliser les documents types à télécharger, y compris au moyen d'URLs.
......
......@@ -7,13 +7,10 @@
* @var $sl \Zend\ServiceManager\ServiceLocatorInterface
*/
use Application\Constants;
use Application\Service\PaysService;
/** @var PaysService $cs */
$cs = $sl->get(PaysService::class);
$sql = file_get_contents('data/Query/plafond.sql');
$sql = str_replace('/*i.id*/', 'AND i.id = ' . 51647, $sql) . ' AND tvh.id = ' . 1;
$sql = preg_replace('/--(.*)\n/Uis', "\n", $sql) ;
sqlDump($sql);
$res = $sl->get(Constants::BDD)->getConnection()->fetchAll($sql);
var_dump($res);
\ No newline at end of file
......@@ -10,7 +10,7 @@
"require" : {
"php" : "^7.0",
"unicaen/app" : "1.3.11",
"unicaen/auth" : "1.2.6",
"unicaen/auth" : "1.2.12",
"zendframework/zend-code" : "^2.4",
"zendframework/zend-text" : "^2.4",
"bjyoungblood/bjy-authorize": "dev-master",
......@@ -18,9 +18,6 @@
"zendframework/zend-file" : "^2.4",
"unicaen/code" : "1.1.6",
"unicaen/import" : "1.1.6",
"unicaen/tbl" : "1.0.3",
"doctrine/annotations" : "1.4.0",
"doctrine/common" : "2.7.3"
"unicaen/tbl" : "1.0.3"
}
}
......@@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
"This file is @generated automatically"
],
"content-hash": "b5e5df8654cafe3d20180f129a3f17a2",
"content-hash": "ccb5deae425ff6147097f7b0b332f574",
"packages": [
{
"name": "bjyoungblood/bjy-authorize",
......@@ -1217,7 +1217,7 @@
},
{
"name": "symfony/console",
"version": "v3.3.16",
"version": "v3.3.17",
"source": {
"type": "git",
"url": "https://github.com/symfony/console.git",
......@@ -1285,16 +1285,16 @@
},
{
"name": "symfony/debug",
"version": "v3.4.9",
"version": "v3.4.11",
"source": {
"type": "git",
"url": "https://github.com/symfony/debug.git",
"reference": "1b95888cfd996484527cb41e8952d9a5eaf7454f"
"reference": "b28fd73fefbac341f673f5efd707d539d6a19f68"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/debug/zipball/1b95888cfd996484527cb41e8952d9a5eaf7454f",
"reference": "1b95888cfd996484527cb41e8952d9a5eaf7454f",
"url": "https://api.github.com/repos/symfony/debug/zipball/b28fd73fefbac341f673f5efd707d539d6a19f68",
"reference": "b28fd73fefbac341f673f5efd707d539d6a19f68",
"shasum": ""
},
"require": {
......@@ -1337,7 +1337,7 @@
],
"description": "Symfony Debug Component",
"homepage": "https://symfony.com",
"time": "2018-04-30T16:53:52+00:00"
"time": "2018-05-16T14:03:39+00:00"
},
{
"name": "symfony/polyfill-mbstring",
......@@ -1400,16 +1400,16 @@
},
{
"name": "symfony/process",
"version": "v2.8.39",
"version": "v2.8.41",
"source": {
"type": "git",
"url": "https://github.com/symfony/process.git",
"reference": "ee2c91470ff262b1a00aec27875d38594aa87629"
"reference": "713952f2ccbcc8342ecdbe1cb313d3e2da8aad28"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/process/zipball/ee2c91470ff262b1a00aec27875d38594aa87629",
"reference": "ee2c91470ff262b1a00aec27875d38594aa87629",
"url": "https://api.github.com/repos/symfony/process/zipball/713952f2ccbcc8342ecdbe1cb313d3e2da8aad28",
"reference": "713952f2ccbcc8342ecdbe1cb313d3e2da8aad28",
"shasum": ""
},
"require": {
......@@ -1445,7 +1445,7 @@
],
"description": "Symfony Process Component",
"homepage": "https://symfony.com",
"time": "2018-04-03T05:20:27+00:00"
"time": "2018-05-15T21:17:45+00:00"
},
{
"name": "unicaen/app",
......@@ -1500,11 +1500,11 @@
},
{
"name": "unicaen/auth",
"version": "1.2.6",
"version": "1.2.12",
"source": {
"type": "git",
"url": "https://git.unicaen.fr/lib/unicaen/auth.git",
"reference": "1f7658396139734e9d4c0dfd46bd14011e2b5e8d"
"reference": "b31180acbd4d37661c4ddc7e72695aea503e2ae9"
},
"require": {
"bjyoungblood/bjy-authorize": ">=1.4",
......@@ -1526,7 +1526,7 @@
]
},
"description": "Module d'authentification pour les applications Unicaen",
"time": "2018-04-09T07:41:56+00:00"
"time": "2018-06-06T15:21:30+00:00"
},
{
"name": "unicaen/code",
......
......@@ -47,9 +47,6 @@ return [
/* Message de bienvenue (sur la page d'accueil) */
'messageBienvenue' => 'Bienvenue dans l\'application de saisie des enseignements de l\'université de Caen Normandie.',
/* Mail d'assistance OSE de votre établissement */
'contactAssistance' => 'assistance-ose@unicaen.fr',
/* Page web des mentions légales de votre établissement */
'mentionsLegales' => "http://gest.unicaen.fr/acces-direct/mentions-legales/",
......@@ -58,6 +55,49 @@ return [
/* URL de votre propre feuille de style pour personnaliser OSE */
'css' => null,
/* Contenu de la page de contacts */
'contact' => "<h3>Intervenants</h3>
Contactez votre composante ou bien écrivez à :
<ul>
<li><a href=\"mailto:assistance-ose@unicaen.fr\" title=\"Cliquez pour rédiger un mail à destination de la liste d'échanges dédiée à l'assistance\">assistance-ose@unicaen.fr</a></li>
</ul>
<h3>Gestionnaires</h3>
Postez un message sur la liste d'échanges des gestionnaires :
<ul>
<li><a href=\"mailto:ose@liste.unicaen.fr\" title=\"Cliquez pour rédiger un mail à destination de la liste d'échanges des gestionnaires\">ose@liste.unicaen.fr</a></li>
</ul>",
/* Icônes de l'application (affichées dans les onglets et en icône sur les smartphones */
'icons' => [
[
'type' => 'image/png',
'href' => '//www.unicaen.fr/images/favicon/favicon-16x16.png',
'sizes' => '16x16',
],
[
'type' => 'image/png',
'href' => '//www.unicaen.fr/images/favicon/favicon-32x32.png',
'sizes' => '32x32',
],
[
'type' => 'image/png',
'href' => '//www.unicaen.fr/images/favicon/favicon-96x96.png',
'sizes' => '96x96',
],
[
'type' => 'image/png',
'href' => '//www.unicaen.fr/images/favicon/android-chrome-192x192.png',
'sizes' => '192x192',
],
[
'type' => 'image/png',
'href' => '//www.unicaen.fr/images/favicon/favicon-194x194.png',
'sizes' => '194x194',
],
],
],
......
......@@ -3,9 +3,8 @@ $versionFile = dirname(dirname(__DIR__)).'/VERSION';
if (file_exists($versionFile)){
$version = file_get_contents($versionFile);
}else{
$version = 'inconnue';
$version = AppConfig::getEnv().' (pas de numéro)';
}
$dateVersion = '20/04/2018';
return [
'unicaen-app' => [
......@@ -17,8 +16,8 @@ return [
'nom' => "OSE",
'desc' => "Organisation des Services d'Enseignement",
'version' => $version,
'date' => $dateVersion,
'contact' => ['mail' => AppConfig::get('etablissement','contactAssistance')],
'date' => '31/05/2018',
'contact' => ['mail' => null],
'mentionsLegales' => AppConfig::get('etablissement','mentionsLegales'),
'informatiqueEtLibertes' => AppConfig::get('etablissement','informatiqueEtLibertes'),
],
......
......@@ -29,6 +29,11 @@ $settings = [
'role_entity_class' => 'UnicaenAuth\Entity\Db\Role',
'privilege_entity_class' => 'UnicaenAuth\Entity\Db\Privilege',
/**
* Attribut LDAP utilisé pour le username des utilisateurs
*/
'ldap_username' => strtolower(AppConfig::get('ldap', 'loginAttribute')),
/**
* Activation ou non de l'authentification Shibboleth.
*/
......
......@@ -545,6 +545,8 @@ FROM
-- SRC_DEPARTEMENT
-- Attention : les codes des départements doivent avoir 3 chiffres.
-- Par exemple 014 pour le Calvados, pour Paris 075, etc.
CREATE OR REPLACE FORCE VIEW SRC_DEPARTEMENT AS
WITH harpege_query AS (
SELECT
......
This diff is collapsed.
-- Script de migration de la version 6.3.2 à la 7.0
-- Import ouvert pour les services
ALTER TABLE service ADD (source_id NUMBER(*,0) );
ALTER TABLE service ADD (source_code VARCHAR2(100 CHAR));
ALTER TRIGGER SERVICE_CK DISABLE;
UPDATE service SET source_id = (SELECT id FROM source WHERE code = 'OSE');
UPDATE service SET source_code = id;
ALTER TRIGGER SERVICE_CK ENABLE;
ALTER TABLE service MODIFY ( source_id NOT NULL );
ALTER TABLE service MODIFY ( source_code NOT NULL );
ALTER TABLE service ADD CONSTRAINT service_source_fk FOREIGN KEY ( source_id ) REFERENCES source ( id ) NOT DEFERRABLE;
ALTER TABLE service ADD CONSTRAINT service_source_un UNIQUE ( source_code,histo_destruction );
-- Import possible pour les volumes horaires
ALTER TABLE volume_horaire ADD (source_id NUMBER(*,0) );
UPDATE volume_horaire SET source_id = (SELECT id FROM source WHERE code = 'OSE');
ALTER TABLE volume_horaire ADD (source_code VARCHAR2(100 CHAR));
UPDATE volume_horaire SET source_code = id;
ALTER TABLE volume_horaire MODIFY ( source_id NOT NULL );
ALTER TABLE volume_horaire MODIFY ( source_code NOT NULL );
ALTER TABLE volume_horaire ADD CONSTRAINT volume_horaire_source_fk FOREIGN KEY ( source_id ) REFERENCES source ( id ) NOT DEFERRABLE;
ALTER TABLE volume_horaire ADD CONSTRAINT volume_horaire_source_un UNIQUE ( source_code,histo_destruction );
-- Import ouvert pour les services référentiels
ALTER TABLE service_referentiel ADD (source_id NUMBER(*,0) );
ALTER TABLE service_referentiel ADD (source_code VARCHAR2(100 CHAR));
UPDATE service_referentiel SET source_id = (SELECT id FROM source WHERE code = 'OSE');
UPDATE service_referentiel SET source_code = id;
ALTER TABLE service_referentiel MODIFY ( source_id NOT NULL );
ALTER TABLE service_referentiel MODIFY ( source_code NOT NULL );
ALTER TABLE service_referentiel ADD CONSTRAINT service_referentiel_source_fk FOREIGN KEY ( source_id ) REFERENCES source ( id ) NOT DEFERRABLE;
ALTER TABLE service_referentiel ADD CONSTRAINT service_referentiel_source_un UNIQUE ( source_code,histo_destruction );
-- Import possible pour les volumes horaires référentiels
ALTER TABLE volume_horaire_ref ADD (source_id NUMBER(*,0) );
ALTER TABLE volume_horaire_ref ADD (source_code VARCHAR2(100 CHAR));
ALTER TRIGGER VOLUME_HORAIRE_REF_CK DISABLE;
UPDATE volume_horaire_ref SET source_id = (SELECT id FROM source WHERE code = 'OSE');
UPDATE volume_horaire_ref SET source_code = id;
ALTER TRIGGER VOLUME_HORAIRE_REF_CK ENABLE;
ALTER TABLE volume_horaire_ref MODIFY ( source_id NOT NULL );
ALTER TABLE volume_horaire_ref MODIFY ( source_code NOT NULL );
ALTER TABLE volume_horaire_ref ADD CONSTRAINT volume_horaire_ref_source_fk FOREIGN KEY ( source_id ) REFERENCES source ( id ) NOT DEFERRABLE;
ALTER TABLE volume_horaire_ref ADD CONSTRAINT volume_horaire_ref_source_un UNIQUE ( source_code,histo_destruction );
ALTER TABLE volume_horaire ADD (
auto_validation NUMBER(1) DEFAULT 0 NOT NULL
);
ALTER TABLE volume_horaire_ref ADD (
auto_validation NUMBER(1) DEFAULT 0 NOT NULL
);
ALTER TABLE tbl_validation_enseignement ADD (
auto_validation NUMBER(1) DEFAULT 0 NOT NULL
);
ALTER TABLE tbl_validation_referentiel ADD (
auto_validation NUMBER(1) DEFAULT 0 NOT NULL
);
ALTER TABLE volume_horaire ADD (
horaire_debut DATE
);
ALTER TABLE volume_horaire ADD (
horaire_fin DATE
);
ALTER TABLE volume_horaire_ref ADD (
horaire_debut DATE
);
ALTER TABLE volume_horaire_ref ADD (
horaire_fin DATE
);
ALTER TABLE type_formation ADD (
service_statutaire NUMBER(1) DEFAULT 1 NOT NULL
);
ALTER TABLE fonction_referentiel ADD (
service_statutaire NUMBER(1) DEFAULT 1 NOT NULL
);
INSERT INTO parametre (
id,
nom,
valeur,
description,
histo_creation,
histo_createur_id,
histo_modification,
histo_modificateur_id
) VALUES (
parametre_id_seq.nextval,
'modalite_services_prev_ens',
'semestriel',
'Modalité de gestion des services (prévisionnel, enseignements)',
sysdate,
(select id from utilisateur where username='oseappli'),
sysdate,
(select id from utilisateur where username='oseappli')
);
INSERT INTO parametre (
id,
nom,
valeur,
description,
histo_creation,
histo_createur_id,
histo_modification,
histo_modificateur_id
) VALUES (
parametre_id_seq.nextval,
'modalite_services_real_ref',
'semestriel',
'Modalité de gestion des services (réalisé, référentiel)',
sysdate,
(select id from utilisateur where username='oseappli'),
sysdate,
(select id from utilisateur where username='oseappli')
);
INSERT INTO parametre (
id,
nom,
valeur,
description,
histo_creation,
histo_createur_id,
histo_modification,
histo_modificateur_id
) VALUES (
parametre_id_seq.nextval,
'modalite_services_prev_ref',
'semestriel',
'Modalité de gestion des services (prévisionnel, référentiel)',
sysdate,
(select id from utilisateur where username='oseappli'),
sysdate,
(select id from utilisateur where username='oseappli')
);
INSERT INTO parametre (
id,
nom,
valeur,
description,
histo_creation,
histo_createur_id,
histo_modification,
histo_modificateur_id
) VALUES (
parametre_id_seq.nextval,
'modalite_services_real_ens',
'semestriel',
'Modalité de gestion des services (réalisé, enseignements)',
sysdate,
(select id from utilisateur where username='oseappli'),
sysdate,
(select id from utilisateur where username='oseappli')
);
INSERT INTO parametre (
id,
nom,
valeur,
description,
histo_creation,
histo_createur_id,
histo_modification,
histo_modificateur_id
) VALUES (
parametre_id_seq.nextval,
'pays_france',
null,
'Pays "France"',
sysdate,
(select id from utilisateur where username='oseappli'),
sysdate,
(select id from utilisateur where username='oseappli')
);
INSERT INTO PRIVILEGE (ID, CATEGORIE_ID, CODE, LIBELLE, ORDRE)
SELECT
privilege_id_seq.nextval id,
(SELECT id FROM CATEGORIE_PRIVILEGE WHERE code = t1.c ) CATEGORIE_ID,
t1.p CODE,
t1.l LIBELLE,
(SELECT count(*) FROM PRIVILEGE WHERE categorie_id = (SELECT id FROM CATEGORIE_PRIVILEGE WHERE code = t1.c )) + rownum ORDRE
FROM (
SELECT 'enseignement' c, 'import-intervenant-previsionnel-agenda' p, 'Import service prévisionnel depuis agenda' l FROM dual
UNION ALL SELECT 'enseignement' c, 'import-intervenant-realise-agenda' p, 'Import service réalisé depuis agenda' l FROM dual
) t1;
\ No newline at end of file
SELECT
tas.id,
si.libelle statut_intervenant,
ta.code type_agrement,
tas.obligatoire,
tas.premier_recrutement,
tas.histo_destruction
FROM
type_agrement_statut tas
JOIN type_agrement ta ON ta.id = tas.type_agrement_id
JOIN statut_intervenant si ON si.id = tas.statut_intervenant_id
ORDER BY
statut_intervenant,
type_agrement;
SELECT source_code, libelle FROM statut_intervenant WHERE histo_destruction IS NULL;
INSERT INTO TYPE_AGREMENT_STATUT (
ID,
TYPE_AGREMENT_ID,
STATUT_INTERVENANT_ID,
OBLIGATOIRE,
PREMIER_RECRUTEMENT,
HISTO_CREATION,HISTO_CREATEUR_ID,
HISTO_MODIFICATION,HISTO_MODIFICATEUR_ID
) VALUES (
TYPE_AGREMENT_STATUT_ID_SEQ.NEXTVAL,
(SELECT id FROM type_agrement WHERE code = 'CONSEIL_RESTREINT'), -- CONSEIL_ACADEMIQUE | CONSEIL_RESTREINT
(SELECT id FROM statut_intervenant WHERE source_code = 'INTERMITTENT'),
1, -- OBLIGATOIRE
NULL, -- PREMIER_RECRUTEMENT
sysdate, (SELECT id FROM utilisateur WHERE username='lecluse'),
sysdate, (SELECT id FROM utilisateur WHERE username='lecluse')
);
INSERT INTO TYPE_AGREMENT_STATUT (
ID,
TYPE_AGREMENT_ID,
STATUT_INTERVENANT_ID,
OBLIGATOIRE,
PREMIER_RECRUTEMENT,
HISTO_CREATION,HISTO_CREATEUR_ID,
HISTO_MODIFICATION,HISTO_MODIFICATEUR_ID
) VALUES (
TYPE_AGREMENT_STATUT_ID_SEQ.NEXTVAL,
(SELECT id FROM type_agrement WHERE code = 'CONSEIL_ACADEMIQUE'), -- CONSEIL_ACADEMIQUE | CONSEIL_RESTREINT
(SELECT id FROM statut_intervenant WHERE source_code = 'INTERMITTENT'),
1, -- OBLIGATOIRE
1, -- PREMIER_RECRUTEMENT
sysdate, (SELECT id FROM utilisateur WHERE username='lecluse'),
sysdate, (SELECT id FROM utilisateur WHERE username='lecluse')
);
\ No newline at end of file
BEGIN
DBMS_SCHEDULER.disable(name=>'"OSE"."OSE_SRC_SYNC"');
END;
/
CREATE TABLE MV_INTERVENANT_DEMO
(
CODE VARCHAR2(9 CHAR)
, Z_CIVILITE_ID VARCHAR2(3 CHAR)
, NOM_USUEL VARCHAR2(120 BYTE)
, PRENOM VARCHAR2(60 BYTE)
, NOM_PATRONYMIQUE VARCHAR2(120 BYTE)
, DATE_NAISSANCE DATE
, Z_PAYS_NAISSANCE_ID VARCHAR2(9 BYTE)
, Z_DEP_NAISSANCE_ID VARCHAR2(9 BYTE)
, VILLE_NAISSANCE_CODE_INSEE VARCHAR2(15 BYTE)
, VILLE_NAISSANCE_LIBELLE VARCHAR2(78 BYTE)
, Z_PAYS_NATIONALITE_ID VARCHAR2(9 BYTE)
, TEL_PRO VARCHAR2(33 BYTE)
, TEL_MOBILE VARCHAR2(60 BYTE)
, EMAIL VARCHAR2(4000 BYTE)
, Z_STATUT_ID VARCHAR2(14 CHAR)
, Z_STRUCTURE_ID VARCHAR2(4000 CHAR)
, SOURCE_CODE VARCHAR2(9 CHAR)
, NUMERO_INSEE VARCHAR2(39 BYTE)
, NUMERO_INSEE_CLE VARCHAR2(40 CHAR)
, NUMERO_INSEE_PROVISOIRE NUMBER
, IBAN VARCHAR2(108 BYTE)
, BIC VARCHAR2(36 BYTE)
, Z_GRADE_ID VARCHAR2(4000 CHAR)
, Z_DISCIPLINE_ID_CNU VARCHAR2(6 BYTE)
, Z_DISCIPLINE_ID_SOUS_CNU VARCHAR2(6 BYTE)
, Z_DISCIPLINE_ID_SPE_CNU VARCHAR2(9 BYTE)
, Z_DISCIPLINE_ID_DIS2DEG VARCHAR2(15 BYTE)
, CRITERE_RECHERCHE VARCHAR2(4000 CHAR)
, DATE_FIN DATE
);
insert into MV_INTERVENANT_DEMO select * from mv_intervenant;
CREATE OR REPLACE VIEW SRC_INTERVENANT AS
WITH srci as (
SELECT
i.code,
c.id civilite_id,
i.nom_usuel, i.prenom, i.nom_patronymique,
COALESCE(i.date_naissance,TO_DATE('2099-01-01','YYYY-MM-DD')) date_naissance,