Skip to content
Snippets Groups Projects
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
No related branches found
No related tags found
1 merge request!10Modulateurs statuts
Showing
with 327 additions and 837 deletions
...@@ -3,7 +3,43 @@ title: "Changements intervenus sur OSE" ...@@ -3,7 +3,43 @@ title: "Changements intervenus sur OSE"
author: Laurent Lécluse - DSI - Unicaen 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 ## Corrections de bugs
...@@ -20,6 +56,13 @@ les autres sont tout de même mis à jour. ...@@ -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. * 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 ## Nouveautés
* Pièces justificatives : vous avez la possibilité de personnaliser les documents types à télécharger, y compris au moyen d'URLs. * 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 @@ ...@@ -7,13 +7,10 @@
* @var $sl \Zend\ServiceManager\ServiceLocatorInterface * @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 @@ ...@@ -10,7 +10,7 @@
"require" : { "require" : {
"php" : "^7.0", "php" : "^7.0",
"unicaen/app" : "1.3.11", "unicaen/app" : "1.3.11",
"unicaen/auth" : "1.2.6", "unicaen/auth" : "1.2.12",
"zendframework/zend-code" : "^2.4", "zendframework/zend-code" : "^2.4",
"zendframework/zend-text" : "^2.4", "zendframework/zend-text" : "^2.4",
"bjyoungblood/bjy-authorize": "dev-master", "bjyoungblood/bjy-authorize": "dev-master",
...@@ -18,9 +18,6 @@ ...@@ -18,9 +18,6 @@
"zendframework/zend-file" : "^2.4", "zendframework/zend-file" : "^2.4",
"unicaen/code" : "1.1.6", "unicaen/code" : "1.1.6",
"unicaen/import" : "1.1.6", "unicaen/import" : "1.1.6",
"unicaen/tbl" : "1.0.3", "unicaen/tbl" : "1.0.3"
"doctrine/annotations" : "1.4.0",
"doctrine/common" : "2.7.3"
} }
} }
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
"This file is @generated automatically" "This file is @generated automatically"
], ],
"content-hash": "b5e5df8654cafe3d20180f129a3f17a2", "content-hash": "ccb5deae425ff6147097f7b0b332f574",
"packages": [ "packages": [
{ {
"name": "bjyoungblood/bjy-authorize", "name": "bjyoungblood/bjy-authorize",
...@@ -1217,7 +1217,7 @@ ...@@ -1217,7 +1217,7 @@
}, },
{ {
"name": "symfony/console", "name": "symfony/console",
"version": "v3.3.16", "version": "v3.3.17",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/console.git", "url": "https://github.com/symfony/console.git",
...@@ -1285,16 +1285,16 @@ ...@@ -1285,16 +1285,16 @@
}, },
{ {
"name": "symfony/debug", "name": "symfony/debug",
"version": "v3.4.9", "version": "v3.4.11",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/debug.git", "url": "https://github.com/symfony/debug.git",
"reference": "1b95888cfd996484527cb41e8952d9a5eaf7454f" "reference": "b28fd73fefbac341f673f5efd707d539d6a19f68"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/debug/zipball/1b95888cfd996484527cb41e8952d9a5eaf7454f", "url": "https://api.github.com/repos/symfony/debug/zipball/b28fd73fefbac341f673f5efd707d539d6a19f68",
"reference": "1b95888cfd996484527cb41e8952d9a5eaf7454f", "reference": "b28fd73fefbac341f673f5efd707d539d6a19f68",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
...@@ -1337,7 +1337,7 @@ ...@@ -1337,7 +1337,7 @@
], ],
"description": "Symfony Debug Component", "description": "Symfony Debug Component",
"homepage": "https://symfony.com", "homepage": "https://symfony.com",
"time": "2018-04-30T16:53:52+00:00" "time": "2018-05-16T14:03:39+00:00"
}, },
{ {
"name": "symfony/polyfill-mbstring", "name": "symfony/polyfill-mbstring",
...@@ -1400,16 +1400,16 @@ ...@@ -1400,16 +1400,16 @@
}, },
{ {
"name": "symfony/process", "name": "symfony/process",
"version": "v2.8.39", "version": "v2.8.41",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/process.git", "url": "https://github.com/symfony/process.git",
"reference": "ee2c91470ff262b1a00aec27875d38594aa87629" "reference": "713952f2ccbcc8342ecdbe1cb313d3e2da8aad28"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/process/zipball/ee2c91470ff262b1a00aec27875d38594aa87629", "url": "https://api.github.com/repos/symfony/process/zipball/713952f2ccbcc8342ecdbe1cb313d3e2da8aad28",
"reference": "ee2c91470ff262b1a00aec27875d38594aa87629", "reference": "713952f2ccbcc8342ecdbe1cb313d3e2da8aad28",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
...@@ -1445,7 +1445,7 @@ ...@@ -1445,7 +1445,7 @@
], ],
"description": "Symfony Process Component", "description": "Symfony Process Component",
"homepage": "https://symfony.com", "homepage": "https://symfony.com",
"time": "2018-04-03T05:20:27+00:00" "time": "2018-05-15T21:17:45+00:00"
}, },
{ {
"name": "unicaen/app", "name": "unicaen/app",
...@@ -1500,11 +1500,11 @@ ...@@ -1500,11 +1500,11 @@
}, },
{ {
"name": "unicaen/auth", "name": "unicaen/auth",
"version": "1.2.6", "version": "1.2.12",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://git.unicaen.fr/lib/unicaen/auth.git", "url": "https://git.unicaen.fr/lib/unicaen/auth.git",
"reference": "1f7658396139734e9d4c0dfd46bd14011e2b5e8d" "reference": "b31180acbd4d37661c4ddc7e72695aea503e2ae9"
}, },
"require": { "require": {
"bjyoungblood/bjy-authorize": ">=1.4", "bjyoungblood/bjy-authorize": ">=1.4",
...@@ -1526,7 +1526,7 @@ ...@@ -1526,7 +1526,7 @@
] ]
}, },
"description": "Module d'authentification pour les applications Unicaen", "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", "name": "unicaen/code",
......
...@@ -47,9 +47,6 @@ return [ ...@@ -47,9 +47,6 @@ return [
/* Message de bienvenue (sur la page d'accueil) */ /* Message de bienvenue (sur la page d'accueil) */
'messageBienvenue' => 'Bienvenue dans l\'application de saisie des enseignements de l\'université de Caen Normandie.', '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 */ /* Page web des mentions légales de votre établissement */
'mentionsLegales' => "http://gest.unicaen.fr/acces-direct/mentions-legales/", 'mentionsLegales' => "http://gest.unicaen.fr/acces-direct/mentions-legales/",
...@@ -58,6 +55,49 @@ return [ ...@@ -58,6 +55,49 @@ return [
/* URL de votre propre feuille de style pour personnaliser OSE */ /* URL de votre propre feuille de style pour personnaliser OSE */
'css' => null, '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'; ...@@ -3,9 +3,8 @@ $versionFile = dirname(dirname(__DIR__)).'/VERSION';
if (file_exists($versionFile)){ if (file_exists($versionFile)){
$version = file_get_contents($versionFile); $version = file_get_contents($versionFile);
}else{ }else{
$version = 'inconnue'; $version = AppConfig::getEnv().' (pas de numéro)';
} }
$dateVersion = '20/04/2018';
return [ return [
'unicaen-app' => [ 'unicaen-app' => [
...@@ -17,8 +16,8 @@ return [ ...@@ -17,8 +16,8 @@ return [
'nom' => "OSE", 'nom' => "OSE",
'desc' => "Organisation des Services d'Enseignement", 'desc' => "Organisation des Services d'Enseignement",
'version' => $version, 'version' => $version,
'date' => $dateVersion, 'date' => '31/05/2018',
'contact' => ['mail' => AppConfig::get('etablissement','contactAssistance')], 'contact' => ['mail' => null],
'mentionsLegales' => AppConfig::get('etablissement','mentionsLegales'), 'mentionsLegales' => AppConfig::get('etablissement','mentionsLegales'),
'informatiqueEtLibertes' => AppConfig::get('etablissement','informatiqueEtLibertes'), 'informatiqueEtLibertes' => AppConfig::get('etablissement','informatiqueEtLibertes'),
], ],
......
...@@ -29,6 +29,11 @@ $settings = [ ...@@ -29,6 +29,11 @@ $settings = [
'role_entity_class' => 'UnicaenAuth\Entity\Db\Role', 'role_entity_class' => 'UnicaenAuth\Entity\Db\Role',
'privilege_entity_class' => 'UnicaenAuth\Entity\Db\Privilege', '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. * Activation ou non de l'authentification Shibboleth.
*/ */
......
No preview for this file type
...@@ -545,6 +545,8 @@ FROM ...@@ -545,6 +545,8 @@ FROM
-- SRC_DEPARTEMENT -- 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 CREATE OR REPLACE FORCE VIEW SRC_DEPARTEMENT AS
WITH harpege_query AS ( WITH harpege_query AS (
SELECT SELECT
......
No preview for this file type
No preview for this file type
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,
pnaiss.id pays_naissance_id,
dep.id dep_naissance_id,
i.ville_naissance_code_insee, i.ville_naissance_libelle,
pnat.id pays_nationalite_id,
i.tel_pro, i.tel_mobile, i.email,
si.id statut_id, si.source_code statut_code,
NVL(s.structure_niv2_id,s.id) structure_id,
src.id source_id, i.source_code,
i.numero_insee, i.numero_insee_cle, i.numero_insee_provisoire,
i.iban, i.bic,
g.id grade_id,
NVL( d.id, d99.id ) discipline_id,
i.critere_recherche,
COALESCE (si.ordre,99999) ordre,
MIN(COALESCE (si.ordre,99999)) OVER (PARTITION BY i.source_code) min_ordre
FROM
mv_intervenant_demo i
JOIN source src ON src.code = 'Harpege'
LEFT JOIN civilite c ON c.libelle_court = i.z_civilite_id
LEFT JOIN structure s ON s.source_code = i.z_structure_id
LEFT JOIN statut_intervenant si ON si.source_code = i.z_statut_id
LEFT JOIN grade g ON g.source_code = i.z_grade_id
LEFT JOIN pays pnaiss ON pnaiss.source_code = i.z_pays_naissance_id
LEFT JOIN pays pnat ON pnat.source_code = i.z_pays_nationalite_id
LEFT JOIN departement dep ON dep.source_code = i.z_dep_naissance_id
LEFT JOIN discipline d99 ON d99.source_code = '99'
LEFT JOIN discipline d ON
d.histo_destruction IS NULL
AND 1 = CASE WHEN -- si rien n'ac été défini
COALESCE( i.z_discipline_id_cnu, i.z_discipline_id_sous_cnu, i.z_discipline_id_spe_cnu, i.z_discipline_id_dis2deg ) IS NULL
AND d.source_code = '00'
THEN 1 WHEN -- si une CNU ou une spécialité a été définie...
COALESCE( i.z_discipline_id_cnu, i.z_discipline_id_sous_cnu, z_discipline_id_spe_cnu ) IS NOT NULL
THEN CASE WHEN -- alors on teste par les sections CNU et spécialités
(
',' || d.CODES_CORRESP_2 || ',' LIKE '%,' || i.z_discipline_id_cnu || NVL(i.z_discipline_id_sous_cnu,'') || ',%'
OR ',' || d.CODES_CORRESP_2 || ',' LIKE '%,' || i.z_discipline_id_cnu || NVL(i.z_discipline_id_sous_cnu,'00') || ',%'
)
AND ',' || NVL(d.CODES_CORRESP_3,'000') || ',' LIKE '%,' || NVL(CASE WHEN d.CODES_CORRESP_3 IS NOT NULL THEN z_discipline_id_spe_cnu ELSE NULL END,'000') || ',%'
THEN 1 ELSE 0 END ELSE CASE WHEN -- sinon on teste par les disciplines du 2nd degré
i.z_discipline_id_dis2deg IS NOT NULL
AND ',' || NVL(d.CODES_CORRESP_4,'') || ',' LIKE '%,' || i.z_discipline_id_dis2deg || ',%'
THEN 1 ELSE 0 END END -- fin du test
)
SELECT
null id,
i.code code, i.code supann_emp_id,
i.civilite_id,
i.nom_usuel, i.prenom, i.nom_patronymique,
i.date_naissance,
i.pays_naissance_id,
i.dep_naissance_id,
i.ville_naissance_code_insee, i.ville_naissance_libelle,
i.pays_nationalite_id,
i.tel_pro, i.tel_mobile, i.email,
COALESCE(
isai.statut_id,
CASE WHEN i.statut_code = 'AUTRES' AND d.statut_id IS NOT NULL THEN d.statut_id ELSE i.statut_id END
) statut_id,
i. structure_id,
i.source_id, i.source_code,
i.numero_insee, i.numero_insee_cle, i.numero_insee_provisoire,
i.iban, i.bic,
i.grade_id,
i.discipline_id,
unicaen_import.get_current_annee annee_id,
i.critere_recherche
FROM
srci i
LEFT JOIN intervenant i2 ON i2.source_code = i.source_code AND i2.annee_id = unicaen_import.get_current_annee
LEFT JOIN intervenant_saisie isai ON isai.intervenant_id = i2.id
LEFT JOIN dossier d ON d.intervenant_id = i2.id AND d.histo_destruction IS NULL
WHERE
i.ordre = i.min_ordre
UNION ALL
SELECT
null id,
i.code code, i.code supann_emp_id,
i.civilite_id,
i.nom_usuel, i.prenom, i.nom_patronymique,
i.date_naissance,
i.pays_naissance_id,
i.dep_naissance_id,
i.ville_naissance_code_insee, i.ville_naissance_libelle,
i.pays_nationalite_id,
i.tel_pro, i.tel_mobile, i.email,
COALESCE(i2.statut_id,i.statut_id) statut_id,
COALESCE(i2.structure_id,i.structure_id) structure_id,
i.source_id, i.source_code,
i.numero_insee, i.numero_insee_cle, i.numero_insee_provisoire,
i.iban, i.bic,
i.grade_id,
i.discipline_id,
unicaen_import.get_current_annee - 1 annee_id,
i.critere_recherche
FROM
srci i
LEFT JOIN intervenant i2 ON i2.source_code = i.source_code AND i2.annee_id = unicaen_import.get_current_annee - 1
WHERE
i.ordre = i.min_ordre
;
/
begin
unicaen_tbl.ACTIV_TRIGGERS := false;
end;
/
UPDATE intervenant SET
--nom_usuel = ,
--prenom = ,
--nom_patronymique = ,
date_naissance = TO_DATE('2000-01-01', 'yyyy-mm-dd'),
pays_naissance_id = (SELECT id FROM pays WHERE libelle_court = 'FRANCE'),
dep_naissance_id = (SELECT id FROM departement WHERE source_code = '014'),
ville_naissance_code_insee = '14118',
ville_naissance_libelle = 'CAEN',
pays_nationalite_id = (SELECT id FROM pays WHERE libelle_court = 'FRANCE'),
tel_pro = NULL,
tel_mobile = NULL,
email = 'prenom.nom@unicaen.fr',
numero_insee = CASE WHEN civilite_id = (SELECT id FROM civilite WHERE libelle_long = 'Monsieur') THEN '1000114789156' ELSE '2000114789156' END,
numero_insee_cle = CASE WHEN civilite_id = (SELECT id FROM civilite WHERE libelle_long = 'Monsieur') THEN '12' ELSE '59' END,
numero_insee_provisoire = 0,
iban = 'FR7630006000011234567890189',
bic = 'AGRIFRPPXXX'
;
-- penser à anonymiser d'abord les noms-prénoms (cf. script UnicaenCode correspondant) ! ! !
SELECT
'UPDATE dossier SET
nom_usuel = q''[' || i.nom_usuel || ']'',
nom_patronymique = q''[' || i.nom_patronymique || ']'',
prenom = q''[' || i.prenom || ']'',
date_naissance = TO_DATE(''2000-01-01'', ''yyyy-mm-dd''),
dept_naissance_id= ' || dep.id || ',
email_perso = null,
pays_naissance_id= ' || pays.id || ',
numero_insee = ' || i.numero_insee || i.numero_insee_cle || ',
numero_insee_est_provisoire = 0,
adresse = ''1, ESPLANADE DE LA PAIX, 14000, CAEN'',
email = ''prenom.nom@unicaen.fr'',
telephone = null,
rib = ''AGRIFRPPXXX-FR7630006000011234567890189''
WHERE intervenant_id = ' || i.id || ';'
|| '
' usql
FROM
intervenant i
JOIN dossier d ON d.intervenant_id = i.id
JOIN departement dep ON dep.source_code = '014'
JOIN pays ON pays.libelle_court = 'FRANCE';
update adresse_intervenant set
tel_domicile = null,
mention_complementaire=null,
batiment=null,
no_voie='1',
nom_voie='ESPLANADE DE LA PAIX',
localite=null,
code_postal='14000',
ville='CAEN',
pays_code_insee=100,
pays_libelle='FRANCE'
;
update fichier set
contenu = (select contenu from fichier where id=1),
type='application/pdf',
taille=16683,
description=null,
nom='fichier_' || id || '.pdf';
select * from fichier where id = 1;
/
begin
unicaen_tbl.ACTIV_TRIGGERS := true;
end;
/
UPDATE mv_intervenant_demo SET
--nom_usuel = ,
--prenom = ,
--nom_patronymique = ,
date_naissance = TO_DATE('2000-01-01', 'yyyy-mm-dd'),
z_pays_naissance_id = '100',
z_dep_naissance_id = '014',
ville_naissance_code_insee = '14118',
ville_naissance_libelle = 'CAEN',
z_pays_nationalite_id = '100',
tel_pro = NULL,
tel_mobile = NULL,
email = 'prenom.nom@unicaen.fr',
numero_insee = CASE WHEN z_civilite_id = 'M.' THEN '1000114789156' ELSE '2000114789156' END,
numero_insee_cle = CASE WHEN z_civilite_id = 'M.' THEN '12' ELSE '59' END,
numero_insee_provisoire = 0,
iban = 'FR7630006000011234567890189',
bic = 'AGRIFRPPXXX',
critere_recherche = ose_divers.str_reduce( nom_usuel || ' ' || nom_patronymique || ' ' || prenom )
;
/
BEGIN
DBMS_MVIEW.REFRESH('MV_INTERVENANT_RECHERCHE', 'C');
END;
/
WITH ll AS (
select l, rownum rn from (
select 'Acheteur' L FROM DUAL
union select 'Acheteur Informatique Et Télécom' L FROM DUAL
union select 'Actuaire' L FROM DUAL
union select 'Adjoint administratif' L FROM DUAL
union select 'Adjoint administratif territorial' L FROM DUAL
union select 'Adjoint technique de recherche et de formation' L FROM DUAL
union select 'Administrateur base de données' L FROM DUAL
union select 'Administrateur De Bases De Données' L FROM DUAL
union select 'Administrateur de biens' L FROM DUAL
union select 'Administrateur De Réseau' L FROM DUAL
union select 'Administrateur judiciaire' L FROM DUAL
union select 'Affréteur' L FROM DUAL
union select 'Agent administratif et agent des services techniques' L FROM DUAL
union select 'Agent de maintenance en mécanique' L FROM DUAL
union select 'Agent de maîtrise' L FROM DUAL
union select 'Agent de police municipale' L FROM DUAL
union select 'Agent de réservation' L FROM DUAL
union select 'Agent des services techniques de préfecture' L FROM DUAL
union select 'Agent immobilier' L FROM DUAL
union select 'Agent spécialisé de police technique et scientifique' L FROM DUAL
union select 'Agent technique de recherche et de formation' L FROM DUAL
union select 'Aide comptable' L FROM DUAL
union select 'Aide de laboratoire' L FROM DUAL
union select 'Aide médico-psychologique' L FROM DUAL
union select 'Aide soignant' L FROM DUAL
union select 'Aide soignant' L FROM DUAL
union select 'Aide technique de laboratoire' L FROM DUAL
union select 'Ambulancier' L FROM DUAL
union select 'Analyste financier' L FROM DUAL
union select 'Analyste programmeur' L FROM DUAL
union select 'Animateur' L FROM DUAL
union select 'Animateur' L FROM DUAL
union select 'Animateur de club de vacances' L FROM DUAL
union select 'Animateur de formation' L FROM DUAL
union select 'animateur environnement' L FROM DUAL
union select 'Animateur socioculturel' L FROM DUAL
union select 'Antiquaire' L FROM DUAL
union select 'Archéologue' L FROM DUAL
union select 'Architecte' L FROM DUAL
union select 'Architecte De Bases De Données' L FROM DUAL
union select 'Architecte De Réseau' L FROM DUAL
union select 'Architecte Matériel' L FROM DUAL
union select 'Archiviste' L FROM DUAL
union select 'Artiste-peintre' L FROM DUAL
union select 'Assistant de conservation' L FROM DUAL
union select 'Assistant de justice' L FROM DUAL
union select 'Assistant de ressources humaines' L FROM DUAL
union select 'Assistant de service social' L FROM DUAL
union select 'Assistant de service social' L FROM DUAL
union select 'Assistant des bibliothèques' L FROM DUAL
union select 'Assistant ingénieur' L FROM DUAL
union select 'Assistant médico-technique' L FROM DUAL
union select 'Assistant socio-éducatif' L FROM DUAL
union select 'Assistant son' L FROM DUAL
union select 'Assistant vétérinaire' L FROM DUAL
union select 'Assistante de gestion PMI/PME' L FROM DUAL
union select 'Assistante maternelle' L FROM DUAL
union select 'Assistante sociale' L FROM DUAL
union select 'Astronome' L FROM DUAL
union select 'Attaché de conservateur de patrimoine' L FROM DUAL
union select 'Attaché de police' L FROM DUAL
union select 'Attaché de préfecture' L FROM DUAL
union select 'Attaché de presse' L FROM DUAL
union select 'Auditeur Informatique' L FROM DUAL
union select 'Auteur-scénariste multimédia' L FROM DUAL
union select 'Auxiliaire de puériculture' L FROM DUAL
union select 'Auxiliaire de vie sociale' L FROM DUAL
union select 'Auxilliaire de vie' L FROM DUAL
union select 'Avocat' L FROM DUAL
union select 'Barman' L FROM DUAL
union select 'Bibliothécaire' L FROM DUAL
union select 'Bibliothécaire adjoint spécialisé' L FROM DUAL
union select 'Bijoutier joaillier' L FROM DUAL
union select 'Billettiste' L FROM DUAL
union select 'Bio-informaticien' L FROM DUAL
union select 'Biologiste, Vétérinaire, Pharmacien' L FROM DUAL
union select 'Bobinier de la construction électrique' L FROM DUAL
union select 'Boucher' L FROM DUAL
union select 'Boulanger' L FROM DUAL
union select 'Brasseur malteur' L FROM DUAL
union select 'Bronzier' L FROM DUAL
union select 'Bûcheron' L FROM DUAL
union select 'Cadreur' L FROM DUAL
union select 'Capitaine de Sapeur-Pompier' L FROM DUAL
union select 'Carreleur' L FROM DUAL
union select 'Carrossier réparateur' L FROM DUAL
union select 'Caviste' L FROM DUAL
union select 'Charcutier-traiteur' L FROM DUAL
union select 'Chargé de clientèle' L FROM DUAL
union select 'Chargé De Référencement' L FROM DUAL
union select 'Chargé de relations publiques' L FROM DUAL
union select 'Charpentier' L FROM DUAL
union select 'Chaudronnier' L FROM DUAL
union select 'Chef de chantier' L FROM DUAL
union select 'Chef de comptoir' L FROM DUAL
union select 'Chef de fabrication' L FROM DUAL
union select 'Chef de produits voyages' L FROM DUAL
union select 'Chef De Projet - Project Manager' L FROM DUAL
union select 'Chef de projet informatique' L FROM DUAL
union select 'Chef de projet multimedia' L FROM DUAL
union select 'Chef de publicité' L FROM DUAL
union select 'Chef de rayon' L FROM DUAL
union select 'Chef de service de Police municipale' L FROM DUAL
union select 'Chef opérateur' L FROM DUAL
union select 'Chercheur' L FROM DUAL
union select 'Chercheur En Informatique' L FROM DUAL
union select 'Chirurgien-dentiste' L FROM DUAL
union select 'Chocolatier confiseur' L FROM DUAL
union select 'Clerc de notaire' L FROM DUAL
union select 'Coiffeur' L FROM DUAL
union select 'Comédien' L FROM DUAL
union select 'Commis de cuisine' L FROM DUAL
union select 'Commissaire de police' L FROM DUAL
union select 'Commissaire priseur' L FROM DUAL
union select 'comportementaliste' L FROM DUAL
union select 'Comptable' L FROM DUAL
union select 'Concepteur De Jeux Électroniques' L FROM DUAL
union select 'Concepteur rédacteur' L FROM DUAL
union select 'Conducteur' L FROM DUAL
union select 'Conducteur de machine à imprimer simple' L FROM DUAL
union select 'Conducteur de machines' L FROM DUAL
union select 'Conducteur de machines agro' L FROM DUAL
union select 'Conducteur de taxi' L FROM DUAL
union select 'conducteur de train' L FROM DUAL
union select 'Conducteur de travaux' L FROM DUAL
union select 'Conducteur routier' L FROM DUAL
union select 'Conseiller en développement touristique' L FROM DUAL
union select 'Conseiller en économie sociale et familiale' L FROM DUAL
union select 'Conseiller socio-éducatif' L FROM DUAL
union select 'Conseiller territorial des activités physiques et sportives' L FROM DUAL
union select 'Conservateur de bibliothèque' L FROM DUAL
union select 'Conservateur du patrimoine' L FROM DUAL
union select 'Consultant E-Business' L FROM DUAL
union select 'Consultant En Conduite Du Changement' L FROM DUAL
union select 'Consultant En E-Learning' L FROM DUAL
union select 'Consultant En Gestion De La Relation Client' L FROM DUAL
union select 'Consultant En Technologies' L FROM DUAL
union select 'Consultant Erp' L FROM DUAL
union select 'Consultant Fonctionnel' L FROM DUAL
union select 'Consultant Informatique' L FROM DUAL
union select 'Contrôleur aérien' L FROM DUAL
union select 'Contrôleur de gestion' L FROM DUAL
union select 'Contrôleur de travaux' L FROM DUAL
union select 'Contrôleur des services techniques du matériel' L FROM DUAL
union select 'Contrôleur du travail' L FROM DUAL
union select 'Contrôleur en électricité et électronique' L FROM DUAL
union select 'Convoyeur de fonds' L FROM DUAL
union select 'Coordinatrice de crèches' L FROM DUAL
union select 'Correcteur' L FROM DUAL
union select 'Costumier-habilleur' L FROM DUAL
union select 'Couvreur' L FROM DUAL
union select 'Créateur de parfum' L FROM DUAL
union select 'Cuisinier' L FROM DUAL
union select 'Cyberdocumentaliste' L FROM DUAL
union select 'Danseur' L FROM DUAL
union select 'Décorateur-scénographe' L FROM DUAL
union select 'Délégué médical' L FROM DUAL
union select 'Déménageur' L FROM DUAL
union select 'Démographe' L FROM DUAL
union select 'Dépanneur tv électroménager' L FROM DUAL
union select 'Designer automobile' L FROM DUAL
union select 'Dessinateur de presse' L FROM DUAL
union select 'Dessinateur industriel' L FROM DUAL
union select 'Détective privé' L FROM DUAL
union select 'Développeur' L FROM DUAL
union select 'Diététicien' L FROM DUAL
union select 'Directeur artistique' L FROM DUAL
union select 'Directeur Commercial' L FROM DUAL
union select 'Directeur de collection' L FROM DUAL
union select 'Directeur de parc naturel' L FROM DUAL
union select 'Directeur De Projet' L FROM DUAL
union select 'Directeur de ressources humaines' L FROM DUAL
union select 'Directeur des soins' L FROM DUAL
union select 'Directeur Technique' L FROM DUAL
union select 'Docker' L FROM DUAL
union select 'Documentaliste' L FROM DUAL
union select 'Douanier' L FROM DUAL )
)
select
'update fonction_referentiel SET libelle_court = q''[' || ll.l || ']'', libelle_long = q''[' || ll.l || ']'' WHERE id = ' || fr.id || ';' usql
from
fonction_referentiel fr
JOIN ll ON ll.rn = fr.id
ORDER BY rownum;
DELETE FROM indic_modif_dossier;
SELECT
i.annee_id, i.nom_usuel, i.prenom, i.code, si.source_code
FROM
v_diff_intervenant i
JOIN statut_intervenant si ON si.id = i.statut_id
WHERE
import_action = 'insert'
AND si.source_code <> 'AUTRES' AND si.source_code <> 'BIATSS' AND si.source_code <> 'NON_AUTORISE'
AND rownum < 50
AND i.annee_id = 2017
-- activer l'année :
UPDATE ANNEE SET ACTIVE = '1' WHERE ID = 2016;
-- mettre à jour les dates de campagne de saisie
-- maj des paramètres
SELECT
'
INSERT INTO element_pedagogique (
ID,
LIBELLE,
ETAPE_ID,
STRUCTURE_ID,
PERIODE_ID,
TAUX_FI, TAUX_FC, TAUX_FA,
TAUX_FOAD,
FI, FC, FA,
SOURCE_ID, SOURCE_CODE,
HISTO_CREATION, HISTO_CREATEUR_ID,
HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID,
ANNEE_ID,
DISCIPLINE_ID
) VALUES (
element_pedagogique_id_seq.nextval,
q''[' || ep.libelle || ']'',
' || ep.etape_id || ',
' || ep.structure_id || ',
' || NVL(to_char(ep.periode_id), 'NULL') || ',
' || TRIM(TO_CHAR(ep.taux_fi, '999.99')) || ', ' || TRIM(TO_CHAR(ep.taux_fc, '999.99')) || ', ' || TRIM(TO_CHAR(ep.taux_fa, '999.99')) || ',
' || TRIM(TO_CHAR(ep.taux_foad, '999.99')) || ',
' || TRIM(TO_CHAR(ep.fi, '999.99')) || ', ' || TRIM(TO_CHAR(ep.fc, '999.99')) || ', ' || TRIM(TO_CHAR(ep.fa, '999.99')) || ',
' || ep.source_id || ', q''[' || ep.source_code || ']'',
SYSDATE, ' || u.id || ',
SYSDATE, ' || u.id || ',
' || (ep.annee_id + 1) || ',
' || NVL(to_char(ep.discipline_id), 'NULL') || '
);
INSERT INTO chemin_pedagogique(
ID,
ELEMENT_PEDAGOGIQUE_ID,
ETAPE_ID,
ORDRE,
SOURCE_ID, SOURCE_CODE,
HISTO_CREATION, HISTO_CREATEUR_ID,
HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID
) VALUES (
chemin_pedagogique_id_seq.nextval,
element_pedagogique_id_seq.currval,
' || ep.etape_id || ',
' || rownum || ',
' || ep.source_id || ', q''[' || e.source_code || '_' || ep.source_code || '_' || (ep.annee_id + 1) || ']'',
SYSDATE, ' || u.id || ',
SYSDATE, ' || u.id || '
);
' isql
FROM
element_pedagogique ep
JOIN etape e ON e.id = ep.etape_id
JOIN source s ON ep.source_id = s.id AND s.code = 'OSE'
JOIN utilisateur u ON u.username = 'lecluse'
WHERE
ep.annee_id = 2015
AND 1 = ose_divers.comprise_entre( ep.histo_creation, ep.histo_destruction )
;
-- réaliser l'import
-- modulateurs
SELECT
'INSERT INTO ELEMENT_MODULATEUR(
ID,
ELEMENT_ID,
MODULATEUR_ID,
HISTO_CREATION, HISTO_CREATEUR_ID,
HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID
)VALUES(
ELEMENT_MODULATEUR_ID_SEQ.NEXTVAL,
' || ep2.id || ',
' || m.id || ',
SYSDATE, (SELECT id FROM utilisateur WHERE username=''lecluse''),
SYSDATE, (SELECT id FROM utilisateur WHERE username=''lecluse'')
);' isql
FROM
element_modulateur em
JOIN element_pedagogique ep ON ep.id = em.element_id
JOIN element_pedagogique ep2 ON ep2.source_code = ep.source_code
AND ep2.annee_id = ep.annee_id + 1
JOIN modulateur m ON m.id = em.modulateur_id
AND 1 = ose_divers.comprise_entre( m.histo_creation, m.histo_destruction )
JOIN type_modulateur tm ON tm.id = m.type_modulateur_id
AND 1 = ose_divers.comprise_entre( tm.histo_creation, tm.histo_destruction )
JOIN type_modulateur_ep tmep ON tmep.type_modulateur_id = m.type_modulateur_id
AND tmep.element_pedagogique_id = ep2.id
AND 1 = ose_divers.comprise_entre( tmep.histo_creation, tmep.histo_destruction )
WHERE
1 = ose_divers.comprise_entre( em.histo_creation, em.histo_destruction )
AND ep.annee_id = 2015;
-- centres de coûts
SELECT
'INSERT INTO CENTRE_COUT_EP(
ID,
CENTRE_COUT_ID,
ELEMENT_PEDAGOGIQUE_ID,
TYPE_HEURES_ID,
SOURCE_ID,
SOURCE_CODE,
HISTO_CREATION, HISTO_CREATEUR_ID,
HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID
)VALUES(
CENTRE_COUT_EP_ID_SEQ.NEXTVAL,
' || CCE.CENTRE_COUT_ID || ',
' || ep2.id || ',
' || CCE.type_heures_id || ',
' || CCE.source_id || ',
''N-1toN_'' || CENTRE_COUT_EP_ID_SEQ.CURRVAL,
SYSDATE, (SELECT id FROM utilisateur WHERE username=''lecluse''),
SYSDATE, (SELECT id FROM utilisateur WHERE username=''lecluse'')
);' isql
FROM
centre_cout_ep cce
JOIN element_pedagogique ep ON ep.id = CCE.ELEMENT_PEDAGOGIQUE_ID
JOIN element_pedagogique ep2 ON ep2.source_code = ep.source_code
AND ep2.annee_id = ep.annee_id + 1
WHERE
1 = ose_divers.comprise_entre( cce.histo_creation, cce.histo_destruction )
AND ep.annee_id = 2015;
SELECT
'INSERT INTO ELEMENT_MODULATEUR(
ID,
ELEMENT_ID,
MODULATEUR_ID,
HISTO_CREATION, HISTO_CREATEUR_ID,
HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID
)VALUES(
ELEMENT_MODULATEUR_ID_SEQ.NEXTVAL,
' || ep2.id || ',
' || m.id || ',
SYSDATE, (SELECT id FROM utilisateur WHERE username=''lecluse''),
SYSDATE, (SELECT id FROM utilisateur WHERE username=''lecluse'')
);' isql
FROM
element_modulateur em
JOIN element_pedagogique ep ON ep.id = em.element_id
JOIN element_pedagogique ep2 ON ep2.source_code = ep.source_code
AND ep2.annee_id = ep.annee_id + 1
JOIN modulateur m ON m.id = em.modulateur_id
AND 1 = ose_divers.comprise_entre( m.histo_creation, m.histo_destruction )
JOIN type_modulateur tm ON tm.id = m.type_modulateur_id
AND 1 = ose_divers.comprise_entre( tm.histo_creation, tm.histo_destruction )
JOIN type_modulateur_ep tmep ON tmep.type_modulateur_id = m.type_modulateur_id
AND tmep.element_pedagogique_id = ep2.id
AND 1 = ose_divers.comprise_entre( tmep.histo_creation, tmep.histo_destruction )
WHERE
1 = ose_divers.comprise_entre( em.histo_creation, em.histo_destruction )
AND ep.annee_id = 2015;
\ No newline at end of file
SELECT
i.nom_usuel,
i.prenom,
si.libelle
FROM
intervenant i
JOIN statut_intervenant si ON si.id = i.statut_id
JOIN type_intervenant ti ON ti.id = si.type_intervenant_id
JOIN (select intervenant_id from tbl_workflow group by intervenant_id having sum(realisation) = 0) w ON w.intervenant_id = i.id
WHERE
i.annee_id = 2017
AND ti.code = 'E'
--AND si.libelle = 'BIATSS'
;
select intervenant_id from tbl_workflow group by intervenant_id having sum(realisation) = 0
\ No newline at end of file
-- Destruction de toute un schéma de BDD !!! ATTENTION ARCHTUNG CAUTION
SELECT 'DROP TRIGGER ' || trigger_name || ';' dsql
FROM ALL_TRIGGERS WHERE owner='DEPLOY'
UNION SELECT 'ALTER TABLE ' || table_name || ' DROP CONSTRAINT ' || constraint_name || ';' dsql
FROM ALL_CONSTRAINTS WHERE owner='DEPLOY' AND constraint_type = 'R'
UNION SELECT 'DROP SEQUENCE ' || sequence_name || ';' dsql
FROM ALL_SEQUENCES WHERE sequence_owner='DEPLOY'
UNION SELECT 'DROP VIEW ' || view_name || ';' dsql
FROM ALL_VIEWS WHERE owner = 'DEPLOY'
UNION SELECT 'DROP MATERIALIZED VIEW ' || mview_name || ';' dsql
FROM ALL_MVIEWS WHERE owner = 'DEPLOY'
UNION SELECT 'DROP INDEX ' || index_name || ';' dsql
FROM ALL_INDEXES WHERE owner = 'DEPLOY'
UNION SELECT 'DROP PACKAGE ' || object_name || ';' dsql
FROM USER_OBJECTS WHERE object_type = 'PACKAGE'
UNION SELECT 'DROP TABLE ' || table_name || ';' dsql
FROM ALL_TABLES WHERE owner='DEPLOY'
-- répétition pour ne rien oublier!!!
UNION SELECT 'DROP TABLE ' || table_name || ';' dsql
FROM ALL_TABLES WHERE owner='DEPLOY'
-- jobs
--UNION SELECT '
--/
--BEGIN
-- DBMS_SCHEDULER.DROP_JOB(job_name => ''MAJ_ALL_TBL'', defer => false, force => true);
-- DBMS_SCHEDULER.DROP_JOB(job_name => ''OSE_CHARGENS_CALCUL_EFFECTIFS'', defer => false, force => true);
-- DBMS_SCHEDULER.DROP_JOB(job_name => ''OSE_FORMULE_REFRESH'', defer => false, force => true);
-- DBMS_SCHEDULER.DROP_JOB(job_name => ''OSE_SRC_SYNC'', defer => false, force => true);
-- DBMS_SCHEDULER.DROP_JOB(job_name => ''PURGE_EM_NON_FC'', defer => false, force => true);
--END;
--' dsql
--FROM dual
--;
select
ep.id id,
ep.source_code code,
ep.libelle libelle,
e.id etape_id,
cp.etape_id cp_id,
e.libelle etape_libelle
from
element_pedagogique ep
LEFT JOIN chemin_pedagogique cp ON cp.element_pedagogique_id = ep.id AND cp.histo_destruction IS NULL
JOIN etape e ON e.id = ep.etape_id OR e.id = cp.etape_id AND e.histo_destruction IS NULL
WHERE
ep.histo_destruction IS NULL
AND ep.source_id = ose_import.get_source_id('OSE');
order by
code, statut, etape_libelle;
select * from chemin_pedagogique cp where cp.element_pedagogique_id = 16773;
select * from element_pedagogique ep where id = 16773;
select * from etape where id = 1551;
select * from (
select ep.id,
rank() over (partition by ep.id order by cp.ordre) rang,
count(*) over (partition by ep.id) nb_ch,
ep.source_code, ep.libelle, e.libelle libelle_etape, e.niveau, gtf.libelle_court libelle_gtf, tf.libelle_long libelle_tf,
ep.source_code || ' ' || ep.libelle|| ' ' || e.source_code || ' ' || e.libelle || ' ' || gtf.LIBELLE_COURT || ' ' || e.NIVEAU || ' ' || tf.LIBELLE_COURT etape_info
from chemin_pedagogique cp
JOIN element_pedagogique ep ON cp.element_pedagogique_id = ep.id and ep.HISTO_DESTRUCTEUR_ID is null and sysdate between ep.VALIDITE_DEBUT and nvl(ep.VALIDITE_FIN, sysdate)
JOIN etape e ON cp.etape_id = e.id and e.HISTO_DESTRUCTEUR_ID is null and sysdate between e.VALIDITE_DEBUT and nvl( e.VALIDITE_FIN, sysdate)
JOIN TYPE_FORMATION tf on e.TYPE_FORMATION_ID = tf.ID
JOIN GROUPE_TYPE_FORMATION gtf on tf.GROUPE_ID = gtf.ID
JOIN structure s ON ep.structure_id = s.id
where ep.id = 16773
)
where rang = 1
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment