From 14396d3e830e3b8f1061f3dabe206d5d8bbf4149 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Laurent=20L=C3=A9cluse?= <laurent.lecluse@unicaen.fr>
Date: Thu, 31 May 2018 17:28:51 +0200
Subject: [PATCH] Nouvelle DDL

---
 CHANGELOG                                     |     2 +-
 "data/D\303\251ploiement/Changements.pdf"     |   Bin 174116 -> 174245 bytes
 .../Proc\303\251dure d'installation.pdf"      |   Bin 205833 -> 205833 bytes
 ...roc\303\251dure de mise \303\240 jour.pdf" |   Bin 162098 -> 162098 bytes
 "data/D\303\251ploiement/ose-ddl.sql"         | 32050 ++++++++--------
 5 files changed, 16816 insertions(+), 15236 deletions(-)

diff --git a/CHANGELOG b/CHANGELOG
index 9e7a8d3cc0..8bda97c248 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -3,7 +3,7 @@ title: "Changements intervenus sur OSE"
 author: Laurent Lécluse - DSI - Unicaen
 ...
 
-#OSE 6.3.2 (en développement)
+#OSE 6.3.2
 
 ## Corrections de bugs
 
diff --git "a/data/D\303\251ploiement/Changements.pdf" "b/data/D\303\251ploiement/Changements.pdf"
index c91f54dad840b21b269b6e0becc784f7745ae6ff..f20829a5e381ac68506b6cf327159bd7e1c548f9 100644
GIT binary patch
delta 40515
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

delta 40388
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
A=Kufz

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 b8ccc03c7638973361fc68207cf688a2db244861..d642de73486603874df6376bad2965b8348b18a2 100644
GIT binary patch
delta 139
zcmeA?!P9wyr=f+hg=q_OkC3*pp`p2vfq{Xxfswj_fx0G_zHfetOJYf?f`*Hgk%6Iw
zfhkPM_U%H<U-+EeEZm&TObm^T3@t1i&CHyQOpGkdOxz624a}S^oXrjG6l@47+5S$E
HS(*s|-@PJj

delta 139
zcmeA?!P9wyr=f+hg=q_OkC3*JiJ_sXfuXUsfswj_fx0G_zHfetOJYf?f`*Hgk%6Iw
zfhkPM_U%H<U-+C&T`k?rjm<4hUEIu!4Gl~zoh{5wOkB(jjSMW@49p$v6l@47+5S$E
HS(*s|=C&e_

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 a92d24e4d9b906c7a9aec3a208bb0a775e1af8a2..5cfc75932bfa060b33bdef5aa3c953b611aeb74a 100644
GIT binary patch
delta 136
zcmdn=iF4B@&W0AoEldTu+Qx>4=0*kvM%o5O>IMetnq2z6`6(`mC8-J;E>=bch86~<
zFeTe(=Q4$JIU5<9xtKed7+bhFn>afg8k#w~n7J65IvW_8n3_5onb|4W5K=PTw1Vj`
E0M7Ix^#A|>

delta 136
zcmdn=iF4B@&W0AoEldTu+D0aZhNcFFCfWu@>IMetnq2z6`6(`mC8-J;E>=bch86~<
zFeTe(=Q4$JIlH=<Iy;-1Sh_g6xEeUSSh^aznOL|PJG(j>nHZV5x!5V#5K=PTw1Vj`
E0Qu4+1poj5

diff --git "a/data/D\303\251ploiement/ose-ddl.sql" "b/data/D\303\251ploiement/ose-ddl.sql"
index 96a8c501f7..38f542a032 100755
--- "a/data/D\303\251ploiement/ose-ddl.sql"
+++ "b/data/D\303\251ploiement/ose-ddl.sql"
@@ -7,7 +7,7 @@ SET DEFINE OFF;
 
 
 --------------------------------------------------
--- Séquences
+-- sequences
 --------------------------------------------------
 
 -- ADRESSE_INTERVENANT_ID_SEQ
@@ -428,12499 +428,13386 @@ CREATE SEQUENCE WF_ETAPE_DEP_ID_SEQ INCREMENT BY 1 MAXVALUE 99999999999999999999
 CREATE SEQUENCE WF_ETAPE_ID_SEQ INCREMENT BY 1 MAXVALUE 9999999999999999999999999999 MINVALUE 1 NOCACHE;
 
 --------------------------------------------------
--- Tables
+-- tables
 --------------------------------------------------
 
 -- ADRESSE_INTERVENANT
-CREATE TABLE "ADRESSE_INTERVENANT" 
-   (	"ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"TEL_DOMICILE" VARCHAR2(25 CHAR), 
-	"MENTION_COMPLEMENTAIRE" VARCHAR2(50 CHAR), 
-	"BATIMENT" VARCHAR2(60 CHAR), 
-	"NO_VOIE" VARCHAR2(20 CHAR), 
-	"NOM_VOIE" VARCHAR2(120 CHAR), 
-	"LOCALITE" VARCHAR2(120 CHAR), 
-	"CODE_POSTAL" VARCHAR2(15 CHAR), 
-	"VILLE" VARCHAR2(120 CHAR), 
-	"PAYS_CODE_INSEE" VARCHAR2(3 CHAR) NOT NULL ENABLE, 
-	"PAYS_LIBELLE" VARCHAR2(50 CHAR) NOT NULL ENABLE, 
-	"SOURCE_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"SOURCE_CODE" VARCHAR2(100 CHAR), 
-	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_DESTRUCTION" DATE, 
-	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0), 
-	 CONSTRAINT "ADRESSE_INTERVENANT__UN" UNIQUE ("INTERVENANT_ID", "HISTO_DESTRUCTION") ENABLE, 
-	 CONSTRAINT "ADRESSE_INTERVENANT_SOURCE_UN" UNIQUE ("SOURCE_CODE") ENABLE, 
+CREATE TABLE "ADRESSE_INTERVENANT"
+   (	"ID" NUMBER(*,0) NOT NULL ENABLE,
+	"INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"TEL_DOMICILE" VARCHAR2(25 CHAR),
+	"MENTION_COMPLEMENTAIRE" VARCHAR2(50 CHAR),
+	"BATIMENT" VARCHAR2(60 CHAR),
+	"NO_VOIE" VARCHAR2(20 CHAR),
+	"NOM_VOIE" VARCHAR2(120 CHAR),
+	"LOCALITE" VARCHAR2(120 CHAR),
+	"CODE_POSTAL" VARCHAR2(15 CHAR),
+	"VILLE" VARCHAR2(120 CHAR),
+	"PAYS_CODE_INSEE" VARCHAR2(3 CHAR) NOT NULL ENABLE,
+	"PAYS_LIBELLE" VARCHAR2(50 CHAR) NOT NULL ENABLE,
+	"SOURCE_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"SOURCE_CODE" VARCHAR2(100 CHAR),
+	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_DESTRUCTION" DATE,
+	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0),
+	 CONSTRAINT "ADRESSE_INTERVENANT__UN" UNIQUE ("INTERVENANT_ID", "HISTO_DESTRUCTION") ENABLE,
+	 CONSTRAINT "ADRESSE_INTERVENANT_SOURCE_UN" UNIQUE ("SOURCE_CODE") ENABLE,
 	 CONSTRAINT "ADRESSE_INTERVENANT_PK" PRIMARY KEY ("ID") ENABLE
    ) ;
 
 -- ADRESSE_STRUCTURE
-CREATE TABLE "ADRESSE_STRUCTURE" 
-   (	"ID" NUMBER(*,0) CONSTRAINT "NNC_ADRESSE_INTERVENANTV1_ID" NOT NULL ENABLE, 
-	"STRUCTURE_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"PRINCIPALE" NUMBER(1,0), 
-	"TELEPHONE" VARCHAR2(20 CHAR), 
-	"NO_VOIE" VARCHAR2(10 CHAR), 
-	"NOM_VOIE" VARCHAR2(60 CHAR), 
-	"LOCALITE" VARCHAR2(26 CHAR), 
-	"CODE_POSTAL" VARCHAR2(15 CHAR), 
-	"VILLE" VARCHAR2(26 CHAR), 
-	"PAYS_CODE_INSEE" VARCHAR2(3 CHAR), 
-	"PAYS_LIBELLE" VARCHAR2(30 CHAR), 
-	"SOURCE_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"SOURCE_CODE" VARCHAR2(100 CHAR), 
-	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_DESTRUCTION" DATE, 
-	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0), 
-	 CONSTRAINT "ADRESSE_STRUCTURE_SOURCE_UN" UNIQUE ("SOURCE_CODE") ENABLE, 
+CREATE TABLE "ADRESSE_STRUCTURE"
+   (	"ID" NUMBER(*,0) CONSTRAINT "NNC_ADRESSE_INTERVENANTV1_ID" NOT NULL ENABLE,
+	"STRUCTURE_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"PRINCIPALE" NUMBER(1,0),
+	"TELEPHONE" VARCHAR2(20 CHAR),
+	"NO_VOIE" VARCHAR2(10 CHAR),
+	"NOM_VOIE" VARCHAR2(60 CHAR),
+	"LOCALITE" VARCHAR2(26 CHAR),
+	"CODE_POSTAL" VARCHAR2(15 CHAR),
+	"VILLE" VARCHAR2(26 CHAR),
+	"PAYS_CODE_INSEE" VARCHAR2(3 CHAR),
+	"PAYS_LIBELLE" VARCHAR2(30 CHAR),
+	"SOURCE_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"SOURCE_CODE" VARCHAR2(100 CHAR),
+	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_DESTRUCTION" DATE,
+	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0),
+	 CONSTRAINT "ADRESSE_STRUCTURE_SOURCE_UN" UNIQUE ("SOURCE_CODE") ENABLE,
 	 CONSTRAINT "ADRESSE_STRUCTURE_PK" PRIMARY KEY ("ID") ENABLE
    ) ;
 
 -- AFFECTATION
-CREATE TABLE "AFFECTATION" 
-   (	"ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"ROLE_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"STRUCTURE_ID" NUMBER(*,0), 
-	"SOURCE_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"SOURCE_CODE" VARCHAR2(100 CHAR), 
-	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_DESTRUCTION" DATE, 
-	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0), 
-	"UTILISATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	 CONSTRAINT "AFFECTATION_PK" PRIMARY KEY ("ID") ENABLE, 
-	 CONSTRAINT "AFFECTATION_SOURCE_UN" UNIQUE ("SOURCE_CODE") ENABLE, 
+CREATE TABLE "AFFECTATION"
+   (	"ID" NUMBER(*,0) NOT NULL ENABLE,
+	"ROLE_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"STRUCTURE_ID" NUMBER(*,0),
+	"SOURCE_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"SOURCE_CODE" VARCHAR2(100 CHAR),
+	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_DESTRUCTION" DATE,
+	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0),
+	"UTILISATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	 CONSTRAINT "AFFECTATION_PK" PRIMARY KEY ("ID") ENABLE,
+	 CONSTRAINT "AFFECTATION_SOURCE_UN" UNIQUE ("SOURCE_CODE") ENABLE,
 	 CONSTRAINT "AFFECTATION__UN" UNIQUE ("ROLE_ID", "STRUCTURE_ID", "HISTO_DESTRUCTION", "UTILISATEUR_ID") ENABLE
    ) ;
 
 -- AFFECTATION_RECHERCHE
-CREATE TABLE "AFFECTATION_RECHERCHE" 
-   (	"ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"STRUCTURE_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"SOURCE_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"SOURCE_CODE" VARCHAR2(100 CHAR), 
-	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_DESTRUCTION" DATE, 
-	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0), 
-	 CONSTRAINT "AFFECTATION_R_PK" PRIMARY KEY ("ID") ENABLE, 
+CREATE TABLE "AFFECTATION_RECHERCHE"
+   (	"ID" NUMBER(*,0) NOT NULL ENABLE,
+	"INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"STRUCTURE_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"SOURCE_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"SOURCE_CODE" VARCHAR2(100 CHAR),
+	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_DESTRUCTION" DATE,
+	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0),
+	 CONSTRAINT "AFFECTATION_R_PK" PRIMARY KEY ("ID") ENABLE,
 	 CONSTRAINT "AFFECTATION_R_SRC_UN" UNIQUE ("SOURCE_CODE") ENABLE
    ) ;
 
 -- AGREMENT
-CREATE TABLE "AGREMENT" 
-   (	"ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"STRUCTURE_ID" NUMBER, 
-	"INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_DESTRUCTION" DATE, 
-	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0), 
-	"DATE_DECISION" DATE NOT NULL ENABLE, 
-	"TYPE_AGREMENT_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	 CONSTRAINT "AGREMENT__UN" UNIQUE ("TYPE_AGREMENT_ID", "INTERVENANT_ID", "STRUCTURE_ID", "HISTO_DESTRUCTION") ENABLE, 
+CREATE TABLE "AGREMENT"
+   (	"ID" NUMBER(*,0) NOT NULL ENABLE,
+	"STRUCTURE_ID" NUMBER,
+	"INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_DESTRUCTION" DATE,
+	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0),
+	"DATE_DECISION" DATE NOT NULL ENABLE,
+	"TYPE_AGREMENT_ID" NUMBER(*,0) NOT NULL ENABLE,
+	 CONSTRAINT "AGREMENT__UN" UNIQUE ("TYPE_AGREMENT_ID", "INTERVENANT_ID", "STRUCTURE_ID", "HISTO_DESTRUCTION") ENABLE,
 	 CONSTRAINT "AGREMENT_PK" PRIMARY KEY ("ID") ENABLE
    ) ;
 
 -- ANNEE
-CREATE TABLE "ANNEE" 
-   (	"ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"LIBELLE" VARCHAR2(9 CHAR) NOT NULL ENABLE, 
-	"DATE_DEBUT" DATE NOT NULL ENABLE, 
-	"DATE_FIN" DATE NOT NULL ENABLE, 
-	"ACTIVE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, 
-	"TAUX_HETD" FLOAT(126), 
+CREATE TABLE "ANNEE"
+   (	"ID" NUMBER(*,0) NOT NULL ENABLE,
+	"LIBELLE" VARCHAR2(9 CHAR) NOT NULL ENABLE,
+	"DATE_DEBUT" DATE NOT NULL ENABLE,
+	"DATE_FIN" DATE NOT NULL ENABLE,
+	"ACTIVE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE,
+	"TAUX_HETD" FLOAT(126),
 	 CONSTRAINT "ANNEE_PK" PRIMARY KEY ("ID") ENABLE
    ) ;
 
 -- CAMPAGNE_SAISIE
-CREATE TABLE "CAMPAGNE_SAISIE" 
-   (	"ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"TYPE_INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"TYPE_VOLUME_HORAIRE_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"DATE_DEBUT" DATE, 
-	"DATE_FIN" DATE, 
-	"MESSAGE_INTERVENANT" VARCHAR2(300 CHAR) NOT NULL ENABLE, 
-	"MESSAGE_AUTRES" VARCHAR2(300 CHAR), 
-	"ANNEE_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	 CONSTRAINT "CAMPAGNE_PK" PRIMARY KEY ("ID") ENABLE, 
+CREATE TABLE "CAMPAGNE_SAISIE"
+   (	"ID" NUMBER(*,0) NOT NULL ENABLE,
+	"TYPE_INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"TYPE_VOLUME_HORAIRE_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"DATE_DEBUT" DATE,
+	"DATE_FIN" DATE,
+	"MESSAGE_INTERVENANT" VARCHAR2(300 CHAR) NOT NULL ENABLE,
+	"MESSAGE_AUTRES" VARCHAR2(300 CHAR),
+	"ANNEE_ID" NUMBER(*,0) NOT NULL ENABLE,
+	 CONSTRAINT "CAMPAGNE_PK" PRIMARY KEY ("ID") ENABLE,
 	 CONSTRAINT "CAMPAGNE_SAISIE__UN" UNIQUE ("ANNEE_ID", "TYPE_INTERVENANT_ID", "TYPE_VOLUME_HORAIRE_ID") ENABLE
    ) ;
 
 -- CATEGORIE_PRIVILEGE
-CREATE TABLE "CATEGORIE_PRIVILEGE" 
-   (	"ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"CODE" VARCHAR2(150 CHAR) NOT NULL ENABLE, 
-	"LIBELLE" VARCHAR2(200 CHAR) NOT NULL ENABLE, 
-	"ORDRE" NUMBER(*,0), 
-	 CONSTRAINT "CATEGORIE_PRIVILEGE_PK" PRIMARY KEY ("ID") ENABLE, 
+CREATE TABLE "CATEGORIE_PRIVILEGE"
+   (	"ID" NUMBER(*,0) NOT NULL ENABLE,
+	"CODE" VARCHAR2(150 CHAR) NOT NULL ENABLE,
+	"LIBELLE" VARCHAR2(200 CHAR) NOT NULL ENABLE,
+	"ORDRE" NUMBER(*,0),
+	 CONSTRAINT "CATEGORIE_PRIVILEGE_PK" PRIMARY KEY ("ID") ENABLE,
 	 CONSTRAINT "CATEGORIE_PRIVILEGE__UN" UNIQUE ("CODE") ENABLE
    ) ;
 
 -- CC_ACTIVITE
-CREATE TABLE "CC_ACTIVITE" 
-   (	"ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"CODE" VARCHAR2(50 CHAR) NOT NULL ENABLE, 
-	"LIBELLE" VARCHAR2(200 CHAR) NOT NULL ENABLE, 
-	"FI" NUMBER(1,0) NOT NULL ENABLE, 
-	"FA" NUMBER(1,0) NOT NULL ENABLE, 
-	"FC" NUMBER(1,0) NOT NULL ENABLE, 
-	"FC_MAJOREES" NUMBER(1,0) NOT NULL ENABLE, 
-	"REFERENTIEL" NUMBER(1,0) NOT NULL ENABLE, 
-	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_DESTRUCTION" DATE, 
-	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0), 
+CREATE TABLE "CC_ACTIVITE"
+   (	"ID" NUMBER(*,0) NOT NULL ENABLE,
+	"CODE" VARCHAR2(50 CHAR) NOT NULL ENABLE,
+	"LIBELLE" VARCHAR2(200 CHAR) NOT NULL ENABLE,
+	"FI" NUMBER(1,0) NOT NULL ENABLE,
+	"FA" NUMBER(1,0) NOT NULL ENABLE,
+	"FC" NUMBER(1,0) NOT NULL ENABLE,
+	"FC_MAJOREES" NUMBER(1,0) NOT NULL ENABLE,
+	"REFERENTIEL" NUMBER(1,0) NOT NULL ENABLE,
+	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_DESTRUCTION" DATE,
+	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0),
 	 CONSTRAINT "CC_ACTIVITE_PK" PRIMARY KEY ("ID") ENABLE
    ) ;
 
 -- CENTRE_COUT
-CREATE TABLE "CENTRE_COUT" 
-   (	"ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"LIBELLE" VARCHAR2(200 CHAR) NOT NULL ENABLE, 
-	"PARENT_ID" NUMBER(*,0), 
-	"SOURCE_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"SOURCE_CODE" VARCHAR2(100 CHAR) NOT NULL ENABLE, 
-	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_DESTRUCTION" DATE, 
-	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0), 
-	"ACTIVITE_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"TYPE_RESSOURCE_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"UNITE_BUDGETAIRE" VARCHAR2(15 CHAR), 
-	"CODE" VARCHAR2(50 CHAR) NOT NULL ENABLE, 
+CREATE TABLE "CENTRE_COUT"
+   (	"ID" NUMBER(*,0) NOT NULL ENABLE,
+	"LIBELLE" VARCHAR2(200 CHAR) NOT NULL ENABLE,
+	"PARENT_ID" NUMBER(*,0),
+	"SOURCE_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"SOURCE_CODE" VARCHAR2(100 CHAR) NOT NULL ENABLE,
+	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_DESTRUCTION" DATE,
+	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0),
+	"ACTIVITE_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"TYPE_RESSOURCE_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"UNITE_BUDGETAIRE" VARCHAR2(15 CHAR),
+	"CODE" VARCHAR2(50 CHAR) NOT NULL ENABLE,
 	 CONSTRAINT "CENTRE_COUT_PK" PRIMARY KEY ("ID") ENABLE
    ) ;
 
 -- CENTRE_COUT_EP
-CREATE TABLE "CENTRE_COUT_EP" 
-   (	"ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"CENTRE_COUT_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"ELEMENT_PEDAGOGIQUE_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"TYPE_HEURES_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"SOURCE_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"SOURCE_CODE" VARCHAR2(100 CHAR) NOT NULL ENABLE, 
-	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_DESTRUCTION" DATE, 
-	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0), 
-	 CONSTRAINT "CENTRE_COUT_EP_PK" PRIMARY KEY ("ID") ENABLE, 
+CREATE TABLE "CENTRE_COUT_EP"
+   (	"ID" NUMBER(*,0) NOT NULL ENABLE,
+	"CENTRE_COUT_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"ELEMENT_PEDAGOGIQUE_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"TYPE_HEURES_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"SOURCE_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"SOURCE_CODE" VARCHAR2(100 CHAR) NOT NULL ENABLE,
+	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_DESTRUCTION" DATE,
+	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0),
+	 CONSTRAINT "CENTRE_COUT_EP_PK" PRIMARY KEY ("ID") ENABLE,
 	 CONSTRAINT "CENTRE_COUT_EP__UN" UNIQUE ("CENTRE_COUT_ID", "ELEMENT_PEDAGOGIQUE_ID", "TYPE_HEURES_ID", "HISTO_DESTRUCTION") ENABLE
    ) ;
 
 -- CENTRE_COUT_STRUCTURE
-CREATE TABLE "CENTRE_COUT_STRUCTURE" 
-   (	"ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"CENTRE_COUT_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"STRUCTURE_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"SOURCE_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"SOURCE_CODE" VARCHAR2(100 CHAR), 
-	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_DESTRUCTION" DATE, 
-	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0), 
-	"UNITE_BUDGETAIRE" VARCHAR2(15 CHAR), 
-	 CONSTRAINT "CENTRE_COUT_STRUCTURE_PK" PRIMARY KEY ("ID") ENABLE, 
-	 CONSTRAINT "CCS_CC_S__UN" UNIQUE ("CENTRE_COUT_ID", "STRUCTURE_ID", "HISTO_DESTRUCTION") ENABLE, 
+CREATE TABLE "CENTRE_COUT_STRUCTURE"
+   (	"ID" NUMBER(*,0) NOT NULL ENABLE,
+	"CENTRE_COUT_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"STRUCTURE_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"SOURCE_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"SOURCE_CODE" VARCHAR2(100 CHAR),
+	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_DESTRUCTION" DATE,
+	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0),
+	"UNITE_BUDGETAIRE" VARCHAR2(15 CHAR),
+	 CONSTRAINT "CENTRE_COUT_STRUCTURE_PK" PRIMARY KEY ("ID") ENABLE,
+	 CONSTRAINT "CCS_CC_S__UN" UNIQUE ("CENTRE_COUT_ID", "STRUCTURE_ID", "HISTO_DESTRUCTION") ENABLE,
 	 CONSTRAINT "CCS_SOURCE_CODE_UN" UNIQUE ("SOURCE_CODE", "HISTO_DESTRUCTION") ENABLE
    ) ;
 
 -- CHEMIN_PEDAGOGIQUE
-CREATE TABLE "CHEMIN_PEDAGOGIQUE" 
-   (	"ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"ELEMENT_PEDAGOGIQUE_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"ETAPE_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"ORDRE" NUMBER(*,0) NOT NULL ENABLE, 
-	"SOURCE_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"SOURCE_CODE" VARCHAR2(100 CHAR), 
-	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_DESTRUCTION" DATE, 
-	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0), 
-	 CONSTRAINT "CHEMIN_PEDAGOGIQUE__UN" UNIQUE ("ELEMENT_PEDAGOGIQUE_ID", "ETAPE_ID") DISABLE, 
-	 CONSTRAINT "CHEMIN_PEDAGO_SRC_ID_UN" UNIQUE ("SOURCE_CODE") ENABLE, 
+CREATE TABLE "CHEMIN_PEDAGOGIQUE"
+   (	"ID" NUMBER(*,0) NOT NULL ENABLE,
+	"ELEMENT_PEDAGOGIQUE_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"ETAPE_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"ORDRE" NUMBER(*,0) NOT NULL ENABLE,
+	"SOURCE_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"SOURCE_CODE" VARCHAR2(100 CHAR),
+	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_DESTRUCTION" DATE,
+	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0),
+	 CONSTRAINT "CHEMIN_PEDAGOGIQUE__UN" UNIQUE ("ELEMENT_PEDAGOGIQUE_ID", "ETAPE_ID") DISABLE,
+	 CONSTRAINT "CHEMIN_PEDAGO_SRC_ID_UN" UNIQUE ("SOURCE_CODE") ENABLE,
 	 CONSTRAINT "CHEMIN_PEDAGOGIQUE_PK" PRIMARY KEY ("ID") ENABLE
    ) ;
 
 -- CIVILITE
-CREATE TABLE "CIVILITE" 
-   (	"ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"LIBELLE_COURT" VARCHAR2(5 CHAR) NOT NULL ENABLE, 
-	"LIBELLE_LONG" VARCHAR2(15 CHAR) NOT NULL ENABLE, 
-	"SEXE" VARCHAR2(1 CHAR) NOT NULL ENABLE, 
-	 CONSTRAINT "CIVILITE_PK" PRIMARY KEY ("ID") ENABLE, 
+CREATE TABLE "CIVILITE"
+   (	"ID" NUMBER(*,0) NOT NULL ENABLE,
+	"LIBELLE_COURT" VARCHAR2(5 CHAR) NOT NULL ENABLE,
+	"LIBELLE_LONG" VARCHAR2(15 CHAR) NOT NULL ENABLE,
+	"SEXE" VARCHAR2(1 CHAR) NOT NULL ENABLE,
+	 CONSTRAINT "CIVILITE_PK" PRIMARY KEY ("ID") ENABLE,
 	 CONSTRAINT "CIVILITE_LIBELLE_COURT_UN" UNIQUE ("LIBELLE_COURT") ENABLE
    ) ;
 
 -- CONTRAT
-CREATE TABLE "CONTRAT" 
-   (	"ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"TYPE_CONTRAT_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_DESTRUCTION" DATE, 
-	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0), 
-	"STRUCTURE_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"CONTRAT_ID" NUMBER, 
-	"DATE_RETOUR_SIGNE" DATE, 
-	"NUMERO_AVENANT" NUMBER DEFAULT 0 NOT NULL ENABLE, 
-	"VALIDATION_ID" NUMBER(*,0), 
-	"TOTAL_HETD" FLOAT(126), 
-	 CONSTRAINT "CONTRAT_PK" PRIMARY KEY ("ID") ENABLE, 
+CREATE TABLE "CONTRAT"
+   (	"ID" NUMBER(*,0) NOT NULL ENABLE,
+	"TYPE_CONTRAT_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_DESTRUCTION" DATE,
+	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0),
+	"STRUCTURE_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"CONTRAT_ID" NUMBER,
+	"DATE_RETOUR_SIGNE" DATE,
+	"NUMERO_AVENANT" NUMBER DEFAULT 0 NOT NULL ENABLE,
+	"VALIDATION_ID" NUMBER(*,0),
+	"TOTAL_HETD" FLOAT(126),
+	 CONSTRAINT "CONTRAT_PK" PRIMARY KEY ("ID") ENABLE,
 	 CONSTRAINT "CONTRAT_NUMERO_AVENANT_UN" UNIQUE ("INTERVENANT_ID", "STRUCTURE_ID", "NUMERO_AVENANT", "VALIDATION_ID", "HISTO_DESTRUCTION") ENABLE
    ) ;
 
 -- CONTRAT_FICHIER
-CREATE TABLE "CONTRAT_FICHIER" 
-   (	"CONTRAT_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"FICHIER_ID" NUMBER(*,0) NOT NULL ENABLE, 
+CREATE TABLE "CONTRAT_FICHIER"
+   (	"CONTRAT_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"FICHIER_ID" NUMBER(*,0) NOT NULL ENABLE,
 	 CONSTRAINT "CONTRAT_FICHIER_PK" PRIMARY KEY ("CONTRAT_ID", "FICHIER_ID") ENABLE
    ) ;
 
 -- CORPS
-CREATE TABLE "CORPS" 
-   (	"ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"LIBELLE_LONG" VARCHAR2(40 CHAR) NOT NULL ENABLE, 
-	"LIBELLE_COURT" VARCHAR2(20 CHAR) NOT NULL ENABLE, 
-	"SOURCE_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"SOURCE_CODE" VARCHAR2(100 CHAR), 
-	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_DESTRUCTION" DATE, 
-	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0), 
-	 CONSTRAINT "CORPS_SOURCE_UN" UNIQUE ("SOURCE_CODE") ENABLE, 
+CREATE TABLE "CORPS"
+   (	"ID" NUMBER(*,0) NOT NULL ENABLE,
+	"LIBELLE_LONG" VARCHAR2(40 CHAR) NOT NULL ENABLE,
+	"LIBELLE_COURT" VARCHAR2(20 CHAR) NOT NULL ENABLE,
+	"SOURCE_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"SOURCE_CODE" VARCHAR2(100 CHAR),
+	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_DESTRUCTION" DATE,
+	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0),
+	 CONSTRAINT "CORPS_SOURCE_UN" UNIQUE ("SOURCE_CODE") ENABLE,
 	 CONSTRAINT "CORPS_PK" PRIMARY KEY ("ID") ENABLE
    ) ;
 
 -- DEPARTEMENT
-CREATE TABLE "DEPARTEMENT" 
-   (	"ID" NUMBER NOT NULL ENABLE, 
-	"LIBELLE_LONG" VARCHAR2(120 CHAR), 
-	"LIBELLE_COURT" VARCHAR2(60 CHAR), 
-	"SOURCE_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"SOURCE_CODE" VARCHAR2(100 CHAR) NOT NULL ENABLE, 
-	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_DESTRUCTION" DATE, 
-	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0), 
-	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"CODE" VARCHAR2(5 CHAR), 
+CREATE TABLE "DEPARTEMENT"
+   (	"ID" NUMBER NOT NULL ENABLE,
+	"LIBELLE_LONG" VARCHAR2(120 CHAR),
+	"LIBELLE_COURT" VARCHAR2(60 CHAR),
+	"SOURCE_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"SOURCE_CODE" VARCHAR2(100 CHAR) NOT NULL ENABLE,
+	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_DESTRUCTION" DATE,
+	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0),
+	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"CODE" VARCHAR2(5 CHAR),
 	 CONSTRAINT "DEPARTEMENT_PK" PRIMARY KEY ("ID") ENABLE
    ) ;
 
 -- DISCIPLINE
-CREATE TABLE "DISCIPLINE" 
-   (	"ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"LIBELLE_COURT" VARCHAR2(20 CHAR), 
-	"LIBELLE_LONG" VARCHAR2(200 CHAR) NOT NULL ENABLE, 
-	"SOURCE_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"SOURCE_CODE" VARCHAR2(100 CHAR) NOT NULL ENABLE, 
-	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_DESTRUCTION" DATE, 
-	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0), 
-	"CODES_CORRESP_1" VARCHAR2(1000 CHAR), 
-	"CODES_CORRESP_2" VARCHAR2(1000 CHAR), 
-	"CODES_CORRESP_3" VARCHAR2(1000 CHAR), 
-	"CODES_CORRESP_4" VARCHAR2(1000 CHAR), 
-	 CONSTRAINT "DISCIPLINE_SOURCE_UN" UNIQUE ("SOURCE_CODE") ENABLE, 
+CREATE TABLE "DISCIPLINE"
+   (	"ID" NUMBER(*,0) NOT NULL ENABLE,
+	"LIBELLE_COURT" VARCHAR2(20 CHAR),
+	"LIBELLE_LONG" VARCHAR2(200 CHAR) NOT NULL ENABLE,
+	"SOURCE_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"SOURCE_CODE" VARCHAR2(100 CHAR) NOT NULL ENABLE,
+	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_DESTRUCTION" DATE,
+	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0),
+	"CODES_CORRESP_1" VARCHAR2(1000 CHAR),
+	"CODES_CORRESP_2" VARCHAR2(1000 CHAR),
+	"CODES_CORRESP_3" VARCHAR2(1000 CHAR),
+	"CODES_CORRESP_4" VARCHAR2(1000 CHAR),
+	 CONSTRAINT "DISCIPLINE_SOURCE_UN" UNIQUE ("SOURCE_CODE") ENABLE,
 	 CONSTRAINT "DISCIPLINE_PK" PRIMARY KEY ("ID") ENABLE
    ) ;
 
 -- DOMAINE_FONCTIONNEL
-CREATE TABLE "DOMAINE_FONCTIONNEL" 
-   (	"ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"LIBELLE" VARCHAR2(200 CHAR) NOT NULL ENABLE, 
-	"SOURCE_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"SOURCE_CODE" VARCHAR2(100 CHAR) NOT NULL ENABLE, 
-	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_DESTRUCTION" DATE, 
-	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0), 
+CREATE TABLE "DOMAINE_FONCTIONNEL"
+   (	"ID" NUMBER(*,0) NOT NULL ENABLE,
+	"LIBELLE" VARCHAR2(200 CHAR) NOT NULL ENABLE,
+	"SOURCE_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"SOURCE_CODE" VARCHAR2(100 CHAR) NOT NULL ENABLE,
+	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_DESTRUCTION" DATE,
+	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0),
 	 CONSTRAINT "DOMAINE_FONCTIONNEL_PK" PRIMARY KEY ("ID") ENABLE
    ) ;
 
 -- DOSSIER
-CREATE TABLE "DOSSIER" 
-   (	"ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"NOM_USUEL" VARCHAR2(128 CHAR) NOT NULL ENABLE, 
-	"NOM_PATRONYMIQUE" VARCHAR2(128 CHAR), 
-	"PRENOM" VARCHAR2(128 CHAR) NOT NULL ENABLE, 
-	"CIVILITE_ID" NUMBER NOT NULL ENABLE, 
-	"NUMERO_INSEE" VARCHAR2(20 CHAR) NOT NULL ENABLE, 
-	"STATUT_ID" NUMBER NOT NULL ENABLE, 
-	"ADRESSE" VARCHAR2(1024 CHAR) NOT NULL ENABLE, 
-	"EMAIL" VARCHAR2(128 CHAR) NOT NULL ENABLE, 
-	"TELEPHONE" VARCHAR2(20 CHAR), 
-	"PREMIER_RECRUTEMENT" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, 
-	"PERTE_EMPLOI" NUMBER(1,0) DEFAULT NULL, 
-	"RIB" VARCHAR2(50 CHAR) NOT NULL ENABLE, 
-	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_DESTRUCTION" DATE, 
-	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0), 
-	"NUMERO_INSEE_EST_PROVISOIRE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, 
-	"DATE_NAISSANCE" DATE, 
-	"DEPT_NAISSANCE_ID" NUMBER(*,0), 
-	"EMAIL_PERSO" VARCHAR2(128 CHAR), 
-	"PAYS_NAISSANCE_ID" NUMBER(*,0), 
-	"VILLE_NAISSANCE" VARCHAR2(128 CHAR), 
-	"INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	 CONSTRAINT "DOSSIER_UK1" UNIQUE ("HISTO_DESTRUCTION") ENABLE, 
+CREATE TABLE "DOSSIER"
+   (	"ID" NUMBER(*,0) NOT NULL ENABLE,
+	"NOM_USUEL" VARCHAR2(128 CHAR) NOT NULL ENABLE,
+	"NOM_PATRONYMIQUE" VARCHAR2(128 CHAR),
+	"PRENOM" VARCHAR2(128 CHAR) NOT NULL ENABLE,
+	"CIVILITE_ID" NUMBER NOT NULL ENABLE,
+	"NUMERO_INSEE" VARCHAR2(20 CHAR) NOT NULL ENABLE,
+	"STATUT_ID" NUMBER NOT NULL ENABLE,
+	"ADRESSE" VARCHAR2(1024 CHAR) NOT NULL ENABLE,
+	"EMAIL" VARCHAR2(128 CHAR) NOT NULL ENABLE,
+	"TELEPHONE" VARCHAR2(20 CHAR),
+	"PREMIER_RECRUTEMENT" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE,
+	"PERTE_EMPLOI" NUMBER(1,0) DEFAULT NULL,
+	"RIB" VARCHAR2(50 CHAR) NOT NULL ENABLE,
+	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_DESTRUCTION" DATE,
+	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0),
+	"NUMERO_INSEE_EST_PROVISOIRE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE,
+	"DATE_NAISSANCE" DATE,
+	"DEPT_NAISSANCE_ID" NUMBER(*,0),
+	"EMAIL_PERSO" VARCHAR2(128 CHAR),
+	"PAYS_NAISSANCE_ID" NUMBER(*,0),
+	"VILLE_NAISSANCE" VARCHAR2(128 CHAR),
+	"INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE,
+	 CONSTRAINT "DOSSIER_UK1" UNIQUE ("HISTO_DESTRUCTION") ENABLE,
 	 CONSTRAINT "DOSSIER_PK" PRIMARY KEY ("ID") ENABLE
    ) ;
 
 -- DOTATION
-CREATE TABLE "DOTATION" 
-   (	"ID" NUMBER(*,0) CONSTRAINT "NNC_DOTATION_ID" NOT NULL ENABLE, 
-	"ANNEE_ID" NUMBER(*,0) CONSTRAINT "NNC_DOTATION_ANNEE_ID" NOT NULL ENABLE, 
-	"STRUCTURE_ID" NUMBER(*,0) CONSTRAINT "NNC_DOTATION_STRUCTURE_ID" NOT NULL ENABLE, 
-	"HEURES" FLOAT(126) DEFAULT 0 CONSTRAINT "NNC_DOTATION_HEURES" NOT NULL ENABLE, 
-	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_DESTRUCTION" DATE, 
-	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0), 
-	"ANNEE_CIVILE" NUMBER(*,0) NOT NULL ENABLE, 
-	"LIBELLE" VARCHAR2(100 CHAR) NOT NULL ENABLE, 
-	"TYPE_RESSOURCE_ID" NUMBER(*,0) CONSTRAINT "NNC_DOTATION_TYPE_ID" NOT NULL ENABLE, 
-	 CONSTRAINT "DOTATION_PK" PRIMARY KEY ("ID") ENABLE, 
+CREATE TABLE "DOTATION"
+   (	"ID" NUMBER(*,0) CONSTRAINT "NNC_DOTATION_ID" NOT NULL ENABLE,
+	"ANNEE_ID" NUMBER(*,0) CONSTRAINT "NNC_DOTATION_ANNEE_ID" NOT NULL ENABLE,
+	"STRUCTURE_ID" NUMBER(*,0) CONSTRAINT "NNC_DOTATION_STRUCTURE_ID" NOT NULL ENABLE,
+	"HEURES" FLOAT(126) DEFAULT 0 CONSTRAINT "NNC_DOTATION_HEURES" NOT NULL ENABLE,
+	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_DESTRUCTION" DATE,
+	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0),
+	"ANNEE_CIVILE" NUMBER(*,0) NOT NULL ENABLE,
+	"LIBELLE" VARCHAR2(100 CHAR) NOT NULL ENABLE,
+	"TYPE_RESSOURCE_ID" NUMBER(*,0) CONSTRAINT "NNC_DOTATION_TYPE_ID" NOT NULL ENABLE,
+	 CONSTRAINT "DOTATION_PK" PRIMARY KEY ("ID") ENABLE,
 	 CONSTRAINT "DOTATION__UN" UNIQUE ("TYPE_RESSOURCE_ID", "ANNEE_ID", "ANNEE_CIVILE", "STRUCTURE_ID", "LIBELLE", "HISTO_DESTRUCTION") ENABLE
    ) ;
 
 -- EFFECTIFS
-CREATE TABLE "EFFECTIFS" 
-   (	"ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"ELEMENT_PEDAGOGIQUE_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"ANNEE_ID" NUMBER DEFAULT NULL NOT NULL ENABLE, 
-	"FI" NUMBER(*,0) DEFAULT 0 NOT NULL ENABLE, 
-	"FC" NUMBER(*,0) DEFAULT 0 NOT NULL ENABLE, 
-	"FA" NUMBER(*,0) DEFAULT 0 NOT NULL ENABLE, 
-	"SOURCE_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"SOURCE_CODE" VARCHAR2(100 CHAR) NOT NULL ENABLE, 
-	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_DESTRUCTION" DATE, 
-	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0), 
-	 CONSTRAINT "EFFECTIFS_PK" PRIMARY KEY ("ID") ENABLE, 
+CREATE TABLE "EFFECTIFS"
+   (	"ID" NUMBER(*,0) NOT NULL ENABLE,
+	"ELEMENT_PEDAGOGIQUE_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"ANNEE_ID" NUMBER DEFAULT NULL NOT NULL ENABLE,
+	"FI" NUMBER(*,0) DEFAULT 0 NOT NULL ENABLE,
+	"FC" NUMBER(*,0) DEFAULT 0 NOT NULL ENABLE,
+	"FA" NUMBER(*,0) DEFAULT 0 NOT NULL ENABLE,
+	"SOURCE_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"SOURCE_CODE" VARCHAR2(100 CHAR) NOT NULL ENABLE,
+	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_DESTRUCTION" DATE,
+	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0),
+	 CONSTRAINT "EFFECTIFS_PK" PRIMARY KEY ("ID") ENABLE,
 	 CONSTRAINT "EFFECTIFS__UN" UNIQUE ("SOURCE_CODE", "ANNEE_ID") ENABLE
    ) ;
 
 -- ELEMENT_MODULATEUR
-CREATE TABLE "ELEMENT_MODULATEUR" 
-   (	"ID" NUMBER NOT NULL ENABLE, 
-	"ELEMENT_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"MODULATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_DESTRUCTION" DATE, 
-	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0), 
-	 CONSTRAINT "ELEMENT_MODULATEUR__UN" UNIQUE ("ELEMENT_ID", "MODULATEUR_ID", "HISTO_DESTRUCTION") ENABLE, 
+CREATE TABLE "ELEMENT_MODULATEUR"
+   (	"ID" NUMBER NOT NULL ENABLE,
+	"ELEMENT_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"MODULATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_DESTRUCTION" DATE,
+	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0),
+	 CONSTRAINT "ELEMENT_MODULATEUR__UN" UNIQUE ("ELEMENT_ID", "MODULATEUR_ID", "HISTO_DESTRUCTION") ENABLE,
 	 CONSTRAINT "ELEMENT_MODULATEUR_PK" PRIMARY KEY ("ID") ENABLE
    ) ;
 
 -- ELEMENT_PEDAGOGIQUE
-CREATE TABLE "ELEMENT_PEDAGOGIQUE" 
-   (	"ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"LIBELLE" VARCHAR2(200 CHAR) NOT NULL ENABLE, 
-	"ETAPE_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"STRUCTURE_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"PERIODE_ID" NUMBER(*,0), 
-	"TAUX_FOAD" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, 
-	"FI" NUMBER(1,0) DEFAULT 1 NOT NULL ENABLE, 
-	"FC" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, 
-	"FA" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, 
-	"SOURCE_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"SOURCE_CODE" VARCHAR2(100 CHAR) NOT NULL ENABLE, 
-	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_DESTRUCTION" DATE, 
-	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0), 
-	"TAUX_FA" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, 
-	"TAUX_FC" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, 
-	"TAUX_FI" FLOAT(126) DEFAULT 1 NOT NULL ENABLE, 
-	"ANNEE_ID" NUMBER(*,0) DEFAULT NULL NOT NULL ENABLE, 
-	"DISCIPLINE_ID" NUMBER(*,0), 
-	"CODE" VARCHAR2(50 CHAR) NOT NULL ENABLE, 
-	 CONSTRAINT "ELEMENT_PEDAGOGIQUE_PK" PRIMARY KEY ("ID") ENABLE, 
-	 CONSTRAINT "EP_SRC_UN" UNIQUE ("SOURCE_CODE", "ANNEE_ID", "HISTO_DESTRUCTION") ENABLE, 
+CREATE TABLE "ELEMENT_PEDAGOGIQUE"
+   (	"ID" NUMBER(*,0) NOT NULL ENABLE,
+	"LIBELLE" VARCHAR2(200 CHAR) NOT NULL ENABLE,
+	"ETAPE_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"STRUCTURE_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"PERIODE_ID" NUMBER(*,0),
+	"TAUX_FOAD" FLOAT(126) DEFAULT 0 NOT NULL ENABLE,
+	"FI" NUMBER(1,0) DEFAULT 1 NOT NULL ENABLE,
+	"FC" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE,
+	"FA" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE,
+	"SOURCE_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"SOURCE_CODE" VARCHAR2(100 CHAR) NOT NULL ENABLE,
+	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_DESTRUCTION" DATE,
+	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0),
+	"TAUX_FA" FLOAT(126) DEFAULT 0 NOT NULL ENABLE,
+	"TAUX_FC" FLOAT(126) DEFAULT 0 NOT NULL ENABLE,
+	"TAUX_FI" FLOAT(126) DEFAULT 1 NOT NULL ENABLE,
+	"ANNEE_ID" NUMBER(*,0) DEFAULT NULL NOT NULL ENABLE,
+	"DISCIPLINE_ID" NUMBER(*,0),
+	"CODE" VARCHAR2(50 CHAR) NOT NULL ENABLE,
+	 CONSTRAINT "ELEMENT_PEDAGOGIQUE_PK" PRIMARY KEY ("ID") ENABLE,
+	 CONSTRAINT "EP_SRC_UN" UNIQUE ("SOURCE_CODE", "ANNEE_ID", "HISTO_DESTRUCTION") ENABLE,
 	 CONSTRAINT "EP_CODE_UN" UNIQUE ("CODE", "HISTO_DESTRUCTION", "ANNEE_ID") ENABLE
    ) ;
 
 -- ELEMENT_TAUX_REGIMES
-CREATE TABLE "ELEMENT_TAUX_REGIMES" 
-   (	"ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"ELEMENT_PEDAGOGIQUE_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"TAUX_FI" FLOAT(126) NOT NULL ENABLE, 
-	"TAUX_FC" FLOAT(126) NOT NULL ENABLE, 
-	"TAUX_FA" FLOAT(126) NOT NULL ENABLE, 
-	"SOURCE_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"SOURCE_CODE" VARCHAR2(100 CHAR) NOT NULL ENABLE, 
-	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_DESTRUCTION" DATE, 
-	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0), 
-	 CONSTRAINT "ELEMENT_TAUX_REGIMES__UNV1" UNIQUE ("ELEMENT_PEDAGOGIQUE_ID", "HISTO_DESTRUCTION") ENABLE, 
-	 CONSTRAINT "ELEMENT_TAUX_REGIMES_PK" PRIMARY KEY ("ID") ENABLE, 
+CREATE TABLE "ELEMENT_TAUX_REGIMES"
+   (	"ID" NUMBER(*,0) NOT NULL ENABLE,
+	"ELEMENT_PEDAGOGIQUE_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"TAUX_FI" FLOAT(126) NOT NULL ENABLE,
+	"TAUX_FC" FLOAT(126) NOT NULL ENABLE,
+	"TAUX_FA" FLOAT(126) NOT NULL ENABLE,
+	"SOURCE_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"SOURCE_CODE" VARCHAR2(100 CHAR) NOT NULL ENABLE,
+	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_DESTRUCTION" DATE,
+	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0),
+	 CONSTRAINT "ELEMENT_TAUX_REGIMES__UNV1" UNIQUE ("ELEMENT_PEDAGOGIQUE_ID", "HISTO_DESTRUCTION") ENABLE,
+	 CONSTRAINT "ELEMENT_TAUX_REGIMES_PK" PRIMARY KEY ("ID") ENABLE,
 	 CONSTRAINT "ELEMENT_TAUX_REGIMES__UN" UNIQUE ("SOURCE_CODE", "HISTO_DESTRUCTION") ENABLE
    ) ;
 
 -- ETABLISSEMENT
-CREATE TABLE "ETABLISSEMENT" 
-   (	"ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"LIBELLE" VARCHAR2(100 CHAR) NOT NULL ENABLE, 
-	"LOCALISATION" VARCHAR2(60 CHAR), 
-	"DEPARTEMENT" VARCHAR2(3 CHAR), 
-	"SOURCE_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"SOURCE_CODE" VARCHAR2(100 CHAR), 
-	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_DESTRUCTION" DATE, 
-	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0), 
-	 CONSTRAINT "ETABLISSEMENT_SOURCE_ID_UN" UNIQUE ("SOURCE_CODE") ENABLE, 
+CREATE TABLE "ETABLISSEMENT"
+   (	"ID" NUMBER(*,0) NOT NULL ENABLE,
+	"LIBELLE" VARCHAR2(100 CHAR) NOT NULL ENABLE,
+	"LOCALISATION" VARCHAR2(60 CHAR),
+	"DEPARTEMENT" VARCHAR2(3 CHAR),
+	"SOURCE_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"SOURCE_CODE" VARCHAR2(100 CHAR),
+	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_DESTRUCTION" DATE,
+	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0),
+	 CONSTRAINT "ETABLISSEMENT_SOURCE_ID_UN" UNIQUE ("SOURCE_CODE") ENABLE,
 	 CONSTRAINT "ETABLISSEMENT_PK" PRIMARY KEY ("ID") ENABLE
    ) ;
 
 -- ETAPE
-CREATE TABLE "ETAPE" 
-   (	"ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"LIBELLE" VARCHAR2(200 CHAR) NOT NULL ENABLE, 
-	"TYPE_FORMATION_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"NIVEAU" NUMBER(*,0), 
-	"SPECIFIQUE_ECHANGES" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, 
-	"STRUCTURE_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"SOURCE_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"SOURCE_CODE" VARCHAR2(100 CHAR) NOT NULL ENABLE, 
-	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_DESTRUCTION" DATE, 
-	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0), 
-	"DOMAINE_FONCTIONNEL_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"ANNEE_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"CODE" VARCHAR2(50 CHAR) NOT NULL ENABLE, 
-	 CONSTRAINT "ETAPE_PK" PRIMARY KEY ("ID") ENABLE, 
-	 CONSTRAINT "ETAPE_CODE_UN" UNIQUE ("CODE", "ANNEE_ID", "HISTO_DESTRUCTION") ENABLE, 
+CREATE TABLE "ETAPE"
+   (	"ID" NUMBER(*,0) NOT NULL ENABLE,
+	"LIBELLE" VARCHAR2(200 CHAR) NOT NULL ENABLE,
+	"TYPE_FORMATION_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"NIVEAU" NUMBER(*,0),
+	"SPECIFIQUE_ECHANGES" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE,
+	"STRUCTURE_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"SOURCE_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"SOURCE_CODE" VARCHAR2(100 CHAR) NOT NULL ENABLE,
+	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_DESTRUCTION" DATE,
+	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0),
+	"DOMAINE_FONCTIONNEL_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"ANNEE_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"CODE" VARCHAR2(50 CHAR) NOT NULL ENABLE,
+	 CONSTRAINT "ETAPE_PK" PRIMARY KEY ("ID") ENABLE,
+	 CONSTRAINT "ETAPE_CODE_UN" UNIQUE ("CODE", "ANNEE_ID", "HISTO_DESTRUCTION") ENABLE,
 	 CONSTRAINT "ETAPE_SRC_UN" UNIQUE ("SOURCE_CODE", "HISTO_DESTRUCTION", "ANNEE_ID") ENABLE
    ) ;
 
 -- ETAT_VOLUME_HORAIRE
-CREATE TABLE "ETAT_VOLUME_HORAIRE" 
-   (	"ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"CODE" VARCHAR2(30 CHAR) NOT NULL ENABLE, 
-	"LIBELLE" VARCHAR2(80 CHAR) NOT NULL ENABLE, 
-	"ORDRE" NUMBER(*,0) NOT NULL ENABLE, 
-	 CONSTRAINT "ETAT_VOLUME_HORAIRE_PK" PRIMARY KEY ("ID") ENABLE, 
+CREATE TABLE "ETAT_VOLUME_HORAIRE"
+   (	"ID" NUMBER(*,0) NOT NULL ENABLE,
+	"CODE" VARCHAR2(30 CHAR) NOT NULL ENABLE,
+	"LIBELLE" VARCHAR2(80 CHAR) NOT NULL ENABLE,
+	"ORDRE" NUMBER(*,0) NOT NULL ENABLE,
+	 CONSTRAINT "ETAT_VOLUME_HORAIRE_PK" PRIMARY KEY ("ID") ENABLE,
 	 CONSTRAINT "ETAT_VOLUME_HORAIRE__UN" UNIQUE ("CODE") ENABLE
    ) ;
 
 -- FICHIER
-CREATE TABLE "FICHIER" 
-   (	"ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"NOM" VARCHAR2(128 CHAR) NOT NULL ENABLE, 
-	"TYPE" VARCHAR2(128 CHAR) NOT NULL ENABLE, 
-	"TAILLE" NUMBER(*,0) NOT NULL ENABLE, 
-	"CONTENU" BLOB NOT NULL ENABLE, 
-	"DESCRIPTION" VARCHAR2(256 CHAR), 
-	"VALIDATION_ID" NUMBER, 
-	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_DESTRUCTION" DATE, 
-	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0), 
+CREATE TABLE "FICHIER"
+   (	"ID" NUMBER(*,0) NOT NULL ENABLE,
+	"NOM" VARCHAR2(128 CHAR) NOT NULL ENABLE,
+	"TYPE" VARCHAR2(128 CHAR) NOT NULL ENABLE,
+	"TAILLE" NUMBER(*,0) NOT NULL ENABLE,
+	"CONTENU" BLOB NOT NULL ENABLE,
+	"DESCRIPTION" VARCHAR2(256 CHAR),
+	"VALIDATION_ID" NUMBER,
+	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_DESTRUCTION" DATE,
+	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0),
 	 CONSTRAINT "FICHIER_PK" PRIMARY KEY ("ID") ENABLE
    ) ;
 
 -- FONCTION_REFERENTIEL
-CREATE TABLE "FONCTION_REFERENTIEL" 
-   (	"ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"CODE" VARCHAR2(32 CHAR) NOT NULL ENABLE, 
-	"LIBELLE_LONG" VARCHAR2(100 CHAR) NOT NULL ENABLE, 
-	"LIBELLE_COURT" VARCHAR2(40 CHAR) NOT NULL ENABLE, 
-	"PLAFOND" FLOAT(126), 
-	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_DESTRUCTION" DATE, 
-	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0), 
-	"STRUCTURE_ID" NUMBER(*,0) DEFAULT NULL, 
-	"DOMAINE_FONCTIONNEL_ID" NUMBER NOT NULL ENABLE, 
-	"ETAPE_REQUISE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, 
-	 CONSTRAINT "FONCTION_REFERENTIEL_PK" PRIMARY KEY ("ID") ENABLE, 
+CREATE TABLE "FONCTION_REFERENTIEL"
+   (	"ID" NUMBER(*,0) NOT NULL ENABLE,
+	"CODE" VARCHAR2(32 CHAR) NOT NULL ENABLE,
+	"LIBELLE_LONG" VARCHAR2(100 CHAR) NOT NULL ENABLE,
+	"LIBELLE_COURT" VARCHAR2(40 CHAR) NOT NULL ENABLE,
+	"PLAFOND" FLOAT(126),
+	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_DESTRUCTION" DATE,
+	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0),
+	"STRUCTURE_ID" NUMBER(*,0) DEFAULT NULL,
+	"DOMAINE_FONCTIONNEL_ID" NUMBER NOT NULL ENABLE,
+	"ETAPE_REQUISE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE,
+	 CONSTRAINT "FONCTION_REFERENTIEL_PK" PRIMARY KEY ("ID") ENABLE,
 	 CONSTRAINT "FONCTION_REFERENTIEL_CODE_UN" UNIQUE ("CODE") ENABLE
    ) ;
 
 -- FORMULE_RESULTAT
-CREATE TABLE "FORMULE_RESULTAT" 
-   (	"ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"TYPE_VOLUME_HORAIRE_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"ETAT_VOLUME_HORAIRE_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"SERVICE_DU" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, 
-	"HEURES_COMPL_FI" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, 
-	"HEURES_COMPL_FA" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, 
-	"HEURES_COMPL_FC" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, 
-	"HEURES_COMPL_REFERENTIEL" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, 
-	"SOUS_SERVICE" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, 
-	"TO_DELETE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, 
-	"HEURES_COMPL_FC_MAJOREES" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, 
-	"HEURES_COMPL" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, 
-	"SERVICE_FA" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, 
-	"SERVICE_FC" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, 
-	"SERVICE_FI" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, 
-	"SERVICE_REFERENTIEL" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, 
-	"SOLDE" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, 
-	"TOTAL" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, 
-	"TYPE_INTERVENANT_CODE" VARCHAR2(5 CHAR) NOT NULL ENABLE, 
-	 CONSTRAINT "FORMULE_RESULTAT__UN" UNIQUE ("INTERVENANT_ID", "TYPE_VOLUME_HORAIRE_ID", "ETAT_VOLUME_HORAIRE_ID") ENABLE, 
+CREATE TABLE "FORMULE_RESULTAT"
+   (	"ID" NUMBER(*,0) NOT NULL ENABLE,
+	"INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"TYPE_VOLUME_HORAIRE_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"ETAT_VOLUME_HORAIRE_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"SERVICE_DU" FLOAT(126) DEFAULT 0 NOT NULL ENABLE,
+	"HEURES_COMPL_FI" FLOAT(126) DEFAULT 0 NOT NULL ENABLE,
+	"HEURES_COMPL_FA" FLOAT(126) DEFAULT 0 NOT NULL ENABLE,
+	"HEURES_COMPL_FC" FLOAT(126) DEFAULT 0 NOT NULL ENABLE,
+	"HEURES_COMPL_REFERENTIEL" FLOAT(126) DEFAULT 0 NOT NULL ENABLE,
+	"SOUS_SERVICE" FLOAT(126) DEFAULT 0 NOT NULL ENABLE,
+	"TO_DELETE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE,
+	"HEURES_COMPL_FC_MAJOREES" FLOAT(126) DEFAULT 0 NOT NULL ENABLE,
+	"HEURES_COMPL" FLOAT(126) DEFAULT 0 NOT NULL ENABLE,
+	"SERVICE_FA" FLOAT(126) DEFAULT 0 NOT NULL ENABLE,
+	"SERVICE_FC" FLOAT(126) DEFAULT 0 NOT NULL ENABLE,
+	"SERVICE_FI" FLOAT(126) DEFAULT 0 NOT NULL ENABLE,
+	"SERVICE_REFERENTIEL" FLOAT(126) DEFAULT 0 NOT NULL ENABLE,
+	"SOLDE" FLOAT(126) DEFAULT 0 NOT NULL ENABLE,
+	"TOTAL" FLOAT(126) DEFAULT 0 NOT NULL ENABLE,
+	"TYPE_INTERVENANT_CODE" VARCHAR2(5 CHAR) NOT NULL ENABLE,
+	 CONSTRAINT "FORMULE_RESULTAT__UN" UNIQUE ("INTERVENANT_ID", "TYPE_VOLUME_HORAIRE_ID", "ETAT_VOLUME_HORAIRE_ID") ENABLE,
 	 CONSTRAINT "FORMULE_RESULTAT_PK" PRIMARY KEY ("ID") ENABLE
    ) ;
 
 -- FORMULE_RESULTAT_SERVICE
-CREATE TABLE "FORMULE_RESULTAT_SERVICE" 
-   (	"ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"FORMULE_RESULTAT_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"SERVICE_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HEURES_COMPL_FI" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, 
-	"HEURES_COMPL_FA" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, 
-	"HEURES_COMPL_FC" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, 
-	"TO_DELETE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, 
-	"HEURES_COMPL_FC_MAJOREES" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, 
-	"SERVICE_FA" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, 
-	"SERVICE_FC" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, 
-	"SERVICE_FI" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, 
-	"TOTAL" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, 
+CREATE TABLE "FORMULE_RESULTAT_SERVICE"
+   (	"ID" NUMBER(*,0) NOT NULL ENABLE,
+	"FORMULE_RESULTAT_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"SERVICE_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HEURES_COMPL_FI" FLOAT(126) DEFAULT 0 NOT NULL ENABLE,
+	"HEURES_COMPL_FA" FLOAT(126) DEFAULT 0 NOT NULL ENABLE,
+	"HEURES_COMPL_FC" FLOAT(126) DEFAULT 0 NOT NULL ENABLE,
+	"TO_DELETE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE,
+	"HEURES_COMPL_FC_MAJOREES" FLOAT(126) DEFAULT 0 NOT NULL ENABLE,
+	"SERVICE_FA" FLOAT(126) DEFAULT 0 NOT NULL ENABLE,
+	"SERVICE_FC" FLOAT(126) DEFAULT 0 NOT NULL ENABLE,
+	"SERVICE_FI" FLOAT(126) DEFAULT 0 NOT NULL ENABLE,
+	"TOTAL" FLOAT(126) DEFAULT 0 NOT NULL ENABLE,
 	 CONSTRAINT "FORMULE_RESULTAT_SERVICE_PK" PRIMARY KEY ("ID") ENABLE
    ) ;
 
 -- FORMULE_RESULTAT_SERVICE_REF
-CREATE TABLE "FORMULE_RESULTAT_SERVICE_REF" 
-   (	"ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"FORMULE_RESULTAT_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"SERVICE_REFERENTIEL_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HEURES_COMPL_REFERENTIEL" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, 
-	"TO_DELETE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, 
-	"SERVICE_REFERENTIEL" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, 
-	"TOTAL" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, 
+CREATE TABLE "FORMULE_RESULTAT_SERVICE_REF"
+   (	"ID" NUMBER(*,0) NOT NULL ENABLE,
+	"FORMULE_RESULTAT_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"SERVICE_REFERENTIEL_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HEURES_COMPL_REFERENTIEL" FLOAT(126) DEFAULT 0 NOT NULL ENABLE,
+	"TO_DELETE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE,
+	"SERVICE_REFERENTIEL" FLOAT(126) DEFAULT 0 NOT NULL ENABLE,
+	"TOTAL" FLOAT(126) DEFAULT 0 NOT NULL ENABLE,
 	 CONSTRAINT "FRSR_PK" PRIMARY KEY ("ID") ENABLE
    ) ;
 
 -- FORMULE_RESULTAT_VH
-CREATE TABLE "FORMULE_RESULTAT_VH" 
-   (	"ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"FORMULE_RESULTAT_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"VOLUME_HORAIRE_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HEURES_COMPL_FI" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, 
-	"HEURES_COMPL_FA" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, 
-	"HEURES_COMPL_FC" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, 
-	"TO_DELETE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, 
-	"HEURES_COMPL_FC_MAJOREES" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, 
-	"SERVICE_FA" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, 
-	"SERVICE_FC" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, 
-	"SERVICE_FI" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, 
-	"TOTAL" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, 
+CREATE TABLE "FORMULE_RESULTAT_VH"
+   (	"ID" NUMBER(*,0) NOT NULL ENABLE,
+	"FORMULE_RESULTAT_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"VOLUME_HORAIRE_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HEURES_COMPL_FI" FLOAT(126) DEFAULT 0 NOT NULL ENABLE,
+	"HEURES_COMPL_FA" FLOAT(126) DEFAULT 0 NOT NULL ENABLE,
+	"HEURES_COMPL_FC" FLOAT(126) DEFAULT 0 NOT NULL ENABLE,
+	"TO_DELETE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE,
+	"HEURES_COMPL_FC_MAJOREES" FLOAT(126) DEFAULT 0 NOT NULL ENABLE,
+	"SERVICE_FA" FLOAT(126) DEFAULT 0 NOT NULL ENABLE,
+	"SERVICE_FC" FLOAT(126) DEFAULT 0 NOT NULL ENABLE,
+	"SERVICE_FI" FLOAT(126) DEFAULT 0 NOT NULL ENABLE,
+	"TOTAL" FLOAT(126) DEFAULT 0 NOT NULL ENABLE,
 	 CONSTRAINT "FORMULE_RESULTAT_VH_PK" PRIMARY KEY ("ID") ENABLE
    ) ;
 
 -- FORMULE_RESULTAT_VH_REF
-CREATE TABLE "FORMULE_RESULTAT_VH_REF" 
-   (	"ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"FORMULE_RESULTAT_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"VOLUME_HORAIRE_REF_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HEURES_COMPL_REFERENTIEL" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, 
-	"TO_DELETE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, 
-	"SERVICE_REFERENTIEL" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, 
-	"TOTAL" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, 
+CREATE TABLE "FORMULE_RESULTAT_VH_REF"
+   (	"ID" NUMBER(*,0) NOT NULL ENABLE,
+	"FORMULE_RESULTAT_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"VOLUME_HORAIRE_REF_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HEURES_COMPL_REFERENTIEL" FLOAT(126) DEFAULT 0 NOT NULL ENABLE,
+	"TO_DELETE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE,
+	"SERVICE_REFERENTIEL" FLOAT(126) DEFAULT 0 NOT NULL ENABLE,
+	"TOTAL" FLOAT(126) DEFAULT 0 NOT NULL ENABLE,
 	 CONSTRAINT "FORMULE_RESULTAT_VH_REF_PK" PRIMARY KEY ("ID") ENABLE
    ) ;
 
 -- GRADE
-CREATE TABLE "GRADE" 
-   (	"ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"LIBELLE_LONG" VARCHAR2(40 CHAR) NOT NULL ENABLE, 
-	"LIBELLE_COURT" VARCHAR2(20 CHAR) NOT NULL ENABLE, 
-	"ECHELLE" VARCHAR2(10 CHAR), 
-	"CORPS_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"SOURCE_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"SOURCE_CODE" VARCHAR2(100 CHAR), 
-	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_DESTRUCTION" DATE, 
-	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0), 
+CREATE TABLE "GRADE"
+   (	"ID" NUMBER(*,0) NOT NULL ENABLE,
+	"LIBELLE_LONG" VARCHAR2(40 CHAR) NOT NULL ENABLE,
+	"LIBELLE_COURT" VARCHAR2(20 CHAR) NOT NULL ENABLE,
+	"ECHELLE" VARCHAR2(10 CHAR),
+	"CORPS_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"SOURCE_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"SOURCE_CODE" VARCHAR2(100 CHAR),
+	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_DESTRUCTION" DATE,
+	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0),
 	 CONSTRAINT "GRADE_PK" PRIMARY KEY ("ID") ENABLE
    ) ;
 
 -- GROUPE
-CREATE TABLE "GROUPE" 
-   (	"ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"ELEMENT_PEDAGOGIQUE_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"TYPE_INTERVENTION_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"NOMBRE" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_DESTRUCTION" DATE, 
-	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	 CONSTRAINT "GROUPE__UN" UNIQUE ("ELEMENT_PEDAGOGIQUE_ID", "HISTO_DESTRUCTEUR_ID", "TYPE_INTERVENTION_ID") ENABLE, 
+CREATE TABLE "GROUPE"
+   (	"ID" NUMBER(*,0) NOT NULL ENABLE,
+	"ELEMENT_PEDAGOGIQUE_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"TYPE_INTERVENTION_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"NOMBRE" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_DESTRUCTION" DATE,
+	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	 CONSTRAINT "GROUPE__UN" UNIQUE ("ELEMENT_PEDAGOGIQUE_ID", "HISTO_DESTRUCTEUR_ID", "TYPE_INTERVENTION_ID") ENABLE,
 	 CONSTRAINT "GROUPE_PK" PRIMARY KEY ("ID") ENABLE
    ) ;
 
 -- GROUPE_TYPE_FORMATION
-CREATE TABLE "GROUPE_TYPE_FORMATION" 
-   (	"ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"LIBELLE_COURT" VARCHAR2(20 CHAR) NOT NULL ENABLE, 
-	"LIBELLE_LONG" VARCHAR2(50 CHAR) NOT NULL ENABLE, 
-	"ORDRE" NUMBER(*,0) NOT NULL ENABLE, 
-	"PERTINENCE_NIVEAU" NUMBER(1,0) DEFAULT 1 NOT NULL ENABLE, 
-	"SOURCE_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"SOURCE_CODE" VARCHAR2(100 CHAR), 
-	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_DESTRUCTION" DATE, 
-	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0), 
-	 CONSTRAINT "GTYPE_FORMATION_SOURCE_UN" UNIQUE ("SOURCE_CODE") ENABLE, 
+CREATE TABLE "GROUPE_TYPE_FORMATION"
+   (	"ID" NUMBER(*,0) NOT NULL ENABLE,
+	"LIBELLE_COURT" VARCHAR2(20 CHAR) NOT NULL ENABLE,
+	"LIBELLE_LONG" VARCHAR2(50 CHAR) NOT NULL ENABLE,
+	"ORDRE" NUMBER(*,0) NOT NULL ENABLE,
+	"PERTINENCE_NIVEAU" NUMBER(1,0) DEFAULT 1 NOT NULL ENABLE,
+	"SOURCE_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"SOURCE_CODE" VARCHAR2(100 CHAR),
+	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_DESTRUCTION" DATE,
+	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0),
+	 CONSTRAINT "GTYPE_FORMATION_SOURCE_UN" UNIQUE ("SOURCE_CODE") ENABLE,
 	 CONSTRAINT "GROUPE_TYPE_FORMATION_PK" PRIMARY KEY ("ID") ENABLE
    ) ;
 
 -- HISTO_INTERVENANT_SERVICE
-CREATE TABLE "HISTO_INTERVENANT_SERVICE" 
-   (	"ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"TYPE_VOLUME_HORAIRE_ID" NUMBER(*,0), 
-	"REFERENTIEL" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, 
-	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_MODIFICATION" DATE NOT NULL ENABLE, 
-	 CONSTRAINT "HISTO_SERVICE_MODIFICATION_PK" PRIMARY KEY ("ID") ENABLE, 
+CREATE TABLE "HISTO_INTERVENANT_SERVICE"
+   (	"ID" NUMBER(*,0) NOT NULL ENABLE,
+	"INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"TYPE_VOLUME_HORAIRE_ID" NUMBER(*,0),
+	"REFERENTIEL" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE,
+	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_MODIFICATION" DATE NOT NULL ENABLE,
+	 CONSTRAINT "HISTO_SERVICE_MODIFICATION_PK" PRIMARY KEY ("ID") ENABLE,
 	 CONSTRAINT "HISTO_INTERVENANT_SERVICE__UN" UNIQUE ("INTERVENANT_ID", "TYPE_VOLUME_HORAIRE_ID", "REFERENTIEL") ENABLE
    ) ;
 
 -- IMPORT_TABLES
-CREATE TABLE "IMPORT_TABLES" 
-   (	"TABLE_NAME" VARCHAR2(30 CHAR) NOT NULL ENABLE, 
-	"SYNC_FILTRE" VARCHAR2(2000 CHAR), 
-	"SYNC_ENABLED" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, 
-	"SYNC_JOB" VARCHAR2(40 CHAR), 
-	"SYNC_HOOK_BEFORE" VARCHAR2(4000 CHAR), 
-	"SYNC_HOOK_AFTER" VARCHAR2(4000 CHAR), 
-	"ORDRE" NUMBER, 
+CREATE TABLE "IMPORT_TABLES"
+   (	"TABLE_NAME" VARCHAR2(30 CHAR) NOT NULL ENABLE,
+	"SYNC_FILTRE" VARCHAR2(2000 CHAR),
+	"SYNC_ENABLED" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE,
+	"SYNC_JOB" VARCHAR2(40 CHAR),
+	"SYNC_HOOK_BEFORE" VARCHAR2(4000 CHAR),
+	"SYNC_HOOK_AFTER" VARCHAR2(4000 CHAR),
+	"ORDRE" NUMBER,
 	 CONSTRAINT "IMPORT_TABLES_PK" PRIMARY KEY ("TABLE_NAME") ENABLE
    ) ;
 
 -- INDICATEUR
-CREATE TABLE "INDICATEUR" 
-   (	"ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"TYPE" VARCHAR2(64 CHAR) NOT NULL ENABLE, 
-	"ORDRE" NUMBER(*,0) DEFAULT 100 NOT NULL ENABLE, 
-	"ENABLED" NUMBER(1,0) DEFAULT 1 NOT NULL ENABLE, 
-	"NUMERO" NUMBER DEFAULT 0 NOT NULL ENABLE, 
-	"LIBELLE_PLURIEL" VARCHAR2(255 CHAR) NOT NULL ENABLE, 
-	"LIBELLE_SINGULIER" VARCHAR2(255 CHAR) NOT NULL ENABLE, 
-	"MESSAGE" VARCHAR2(800 CHAR), 
-	"ROUTE" VARCHAR2(250 CHAR) NOT NULL ENABLE, 
-	"TEM_DISTINCT" NUMBER(1,0) DEFAULT 1 NOT NULL ENABLE, 
-	"TEM_NOT_STRUCTURE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, 
+CREATE TABLE "INDICATEUR"
+   (	"ID" NUMBER(*,0) NOT NULL ENABLE,
+	"TYPE" VARCHAR2(64 CHAR) NOT NULL ENABLE,
+	"ORDRE" NUMBER(*,0) DEFAULT 100 NOT NULL ENABLE,
+	"ENABLED" NUMBER(1,0) DEFAULT 1 NOT NULL ENABLE,
+	"NUMERO" NUMBER DEFAULT 0 NOT NULL ENABLE,
+	"LIBELLE_PLURIEL" VARCHAR2(255 CHAR) NOT NULL ENABLE,
+	"LIBELLE_SINGULIER" VARCHAR2(255 CHAR) NOT NULL ENABLE,
+	"MESSAGE" VARCHAR2(800 CHAR),
+	"ROUTE" VARCHAR2(250 CHAR) NOT NULL ENABLE,
+	"TEM_DISTINCT" NUMBER(1,0) DEFAULT 1 NOT NULL ENABLE,
+	"TEM_NOT_STRUCTURE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE,
 	 CONSTRAINT "INDICATEUR_PK" PRIMARY KEY ("ID") ENABLE
    ) ;
 
 -- INDIC_MODIF_DOSSIER
-CREATE TABLE "INDIC_MODIF_DOSSIER" 
-   (	"ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"INTERVENANT_ID" NUMBER(*,0), 
-	"ATTR_NAME" VARCHAR2(128 CHAR), 
-	"ATTR_OLD_SOURCE_NAME" VARCHAR2(128 CHAR), 
-	"ATTR_OLD_VALUE" VARCHAR2(1024 CHAR), 
-	"ATTR_NEW_SOURCE_NAME" VARCHAR2(128 CHAR), 
-	"ATTR_NEW_VALUE" VARCHAR2(1024 CHAR), 
-	"EST_CREATION_DOSSIER" NUMBER(*,0) DEFAULT 0 NOT NULL ENABLE, 
-	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_DESTRUCTION" DATE, 
-	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0), 
-	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
+CREATE TABLE "INDIC_MODIF_DOSSIER"
+   (	"ID" NUMBER(*,0) NOT NULL ENABLE,
+	"INTERVENANT_ID" NUMBER(*,0),
+	"ATTR_NAME" VARCHAR2(128 CHAR),
+	"ATTR_OLD_SOURCE_NAME" VARCHAR2(128 CHAR),
+	"ATTR_OLD_VALUE" VARCHAR2(1024 CHAR),
+	"ATTR_NEW_SOURCE_NAME" VARCHAR2(128 CHAR),
+	"ATTR_NEW_VALUE" VARCHAR2(1024 CHAR),
+	"EST_CREATION_DOSSIER" NUMBER(*,0) DEFAULT 0 NOT NULL ENABLE,
+	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_DESTRUCTION" DATE,
+	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0),
+	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
 	 CONSTRAINT "indic_diff_dossier_PK" PRIMARY KEY ("ID") ENABLE
    ) ;
 
 -- INTERVENANT
-CREATE TABLE "INTERVENANT" 
-   (	"ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"CIVILITE_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"NOM_USUEL" VARCHAR2(60 CHAR) NOT NULL ENABLE, 
-	"PRENOM" VARCHAR2(60 CHAR) NOT NULL ENABLE, 
-	"NOM_PATRONYMIQUE" VARCHAR2(60 CHAR) NOT NULL ENABLE, 
-	"DATE_NAISSANCE" DATE NOT NULL ENABLE, 
-	"VILLE_NAISSANCE_CODE_INSEE" VARCHAR2(5 CHAR), 
-	"VILLE_NAISSANCE_LIBELLE" VARCHAR2(60 CHAR), 
-	"TEL_PRO" VARCHAR2(20 CHAR), 
-	"TEL_MOBILE" VARCHAR2(20 CHAR), 
-	"EMAIL" VARCHAR2(255 CHAR), 
-	"STATUT_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"STRUCTURE_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"DISCIPLINE_ID" NUMBER(*,0), 
-	"SOURCE_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"SOURCE_CODE" VARCHAR2(100 CHAR), 
-	"NUMERO_INSEE" VARCHAR2(13 CHAR), 
-	"NUMERO_INSEE_CLE" VARCHAR2(2 CHAR), 
-	"NUMERO_INSEE_PROVISOIRE" NUMBER(1,0), 
-	"IBAN" VARCHAR2(50 CHAR), 
-	"BIC" VARCHAR2(20 CHAR), 
-	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_DESTRUCTION" DATE, 
-	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0), 
-	"PREMIER_RECRUTEMENT" NUMBER(1,0) DEFAULT NULL, 
-	"ANNEE_ID" NUMBER(*,0) DEFAULT NULL NOT NULL ENABLE, 
-	"GRADE_ID" NUMBER(*,0), 
-	"MONTANT_INDEMNITE_FC" FLOAT(126), 
-	"CRITERE_RECHERCHE" VARCHAR2(255 CHAR), 
-	"CODE" VARCHAR2(60 CHAR), 
-	"PAYS_NAISSANCE_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"DEP_NAISSANCE_ID" NUMBER(*,0), 
-	"PAYS_NATIONALITE_ID" NUMBER(*,0), 
-	"UTILISATEUR_CODE" VARCHAR2(60 CHAR), 
-	 CONSTRAINT "INTERVENANT_SOURCE__UN" UNIQUE ("SOURCE_CODE", "ANNEE_ID") ENABLE, 
-	 CONSTRAINT "INTERVENANT_PK" PRIMARY KEY ("ID") ENABLE, 
-	 CONSTRAINT "INTERVENANT_CODE_UN" UNIQUE ("CODE", "ANNEE_ID") ENABLE, 
+CREATE TABLE "INTERVENANT"
+   (	"ID" NUMBER(*,0) NOT NULL ENABLE,
+	"CIVILITE_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"NOM_USUEL" VARCHAR2(60 CHAR) NOT NULL ENABLE,
+	"PRENOM" VARCHAR2(60 CHAR) NOT NULL ENABLE,
+	"NOM_PATRONYMIQUE" VARCHAR2(60 CHAR) NOT NULL ENABLE,
+	"DATE_NAISSANCE" DATE NOT NULL ENABLE,
+	"VILLE_NAISSANCE_CODE_INSEE" VARCHAR2(5 CHAR),
+	"VILLE_NAISSANCE_LIBELLE" VARCHAR2(60 CHAR),
+	"TEL_PRO" VARCHAR2(20 CHAR),
+	"TEL_MOBILE" VARCHAR2(20 CHAR),
+	"EMAIL" VARCHAR2(255 CHAR),
+	"STATUT_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"STRUCTURE_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"DISCIPLINE_ID" NUMBER(*,0),
+	"SOURCE_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"SOURCE_CODE" VARCHAR2(100 CHAR),
+	"NUMERO_INSEE" VARCHAR2(13 CHAR),
+	"NUMERO_INSEE_CLE" VARCHAR2(2 CHAR),
+	"NUMERO_INSEE_PROVISOIRE" NUMBER(1,0),
+	"IBAN" VARCHAR2(50 CHAR),
+	"BIC" VARCHAR2(20 CHAR),
+	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_DESTRUCTION" DATE,
+	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0),
+	"PREMIER_RECRUTEMENT" NUMBER(1,0) DEFAULT NULL,
+	"ANNEE_ID" NUMBER(*,0) DEFAULT NULL NOT NULL ENABLE,
+	"GRADE_ID" NUMBER(*,0),
+	"MONTANT_INDEMNITE_FC" FLOAT(126),
+	"CRITERE_RECHERCHE" VARCHAR2(255 CHAR),
+	"CODE" VARCHAR2(60 CHAR),
+	"PAYS_NAISSANCE_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"DEP_NAISSANCE_ID" NUMBER(*,0),
+	"PAYS_NATIONALITE_ID" NUMBER(*,0),
+	"UTILISATEUR_CODE" VARCHAR2(60 CHAR),
+	 CONSTRAINT "INTERVENANT_SOURCE__UN" UNIQUE ("SOURCE_CODE", "ANNEE_ID") ENABLE,
+	 CONSTRAINT "INTERVENANT_PK" PRIMARY KEY ("ID") ENABLE,
+	 CONSTRAINT "INTERVENANT_CODE_UN" UNIQUE ("CODE", "ANNEE_ID") ENABLE,
 	 CONSTRAINT "INTERVENANT_UTIL_CODE_UN" UNIQUE ("UTILISATEUR_CODE", "ANNEE_ID", "STATUT_ID") ENABLE
    ) ;
 
 -- INTERVENANT_SAISIE
-CREATE TABLE "INTERVENANT_SAISIE" 
-   (	"ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"STATUT_ID" NUMBER(*,0), 
-	 CONSTRAINT "INTERVENANT_SAISIE_PK" PRIMARY KEY ("ID") ENABLE, 
+CREATE TABLE "INTERVENANT_SAISIE"
+   (	"ID" NUMBER(*,0) NOT NULL ENABLE,
+	"INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"STATUT_ID" NUMBER(*,0),
+	 CONSTRAINT "INTERVENANT_SAISIE_PK" PRIMARY KEY ("ID") ENABLE,
 	 CONSTRAINT "INTERVENANT_SAISIE__UN" UNIQUE ("INTERVENANT_ID") ENABLE
    ) ;
 
 -- LIEN
-CREATE TABLE "LIEN" 
-   (	"ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"NOEUD_SUP_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"NOEUD_INF_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"SOURCE_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"SOURCE_CODE" VARCHAR2(100 CHAR) NOT NULL ENABLE, 
-	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_DESTRUCTION" DATE, 
-	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0), 
-	"STRUCTURE_ID" NUMBER(*,0), 
-	 CONSTRAINT "LIEN_PK" PRIMARY KEY ("ID") ENABLE, 
+CREATE TABLE "LIEN"
+   (	"ID" NUMBER(*,0) NOT NULL ENABLE,
+	"NOEUD_SUP_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"NOEUD_INF_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"SOURCE_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"SOURCE_CODE" VARCHAR2(100 CHAR) NOT NULL ENABLE,
+	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_DESTRUCTION" DATE,
+	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0),
+	"STRUCTURE_ID" NUMBER(*,0),
+	 CONSTRAINT "LIEN_PK" PRIMARY KEY ("ID") ENABLE,
 	 CONSTRAINT "LIEN_SRC_UN" UNIQUE ("SOURCE_CODE", "HISTO_DESTRUCTION") ENABLE
    ) ;
 
 -- MISE_EN_PAIEMENT
-CREATE TABLE "MISE_EN_PAIEMENT" 
-   (	"ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"DATE_MISE_EN_PAIEMENT" DATE, 
-	"PERIODE_PAIEMENT_ID" NUMBER(*,0), 
-	"VALIDATION_ID" NUMBER(*,0), 
-	"DATE_VALIDATION" DATE, 
-	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_DESTRUCTION" DATE, 
-	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0), 
-	"CENTRE_COUT_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"FORMULE_RES_SERVICE_ID" NUMBER(*,0), 
-	"FORMULE_RES_SERVICE_REF_ID" NUMBER(*,0), 
-	"HEURES" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, 
-	"TYPE_HEURES_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"DOMAINE_FONCTIONNEL_ID" NUMBER(*,0), 
+CREATE TABLE "MISE_EN_PAIEMENT"
+   (	"ID" NUMBER(*,0) NOT NULL ENABLE,
+	"DATE_MISE_EN_PAIEMENT" DATE,
+	"PERIODE_PAIEMENT_ID" NUMBER(*,0),
+	"VALIDATION_ID" NUMBER(*,0),
+	"DATE_VALIDATION" DATE,
+	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_DESTRUCTION" DATE,
+	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0),
+	"CENTRE_COUT_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"FORMULE_RES_SERVICE_ID" NUMBER(*,0),
+	"FORMULE_RES_SERVICE_REF_ID" NUMBER(*,0),
+	"HEURES" FLOAT(126) DEFAULT 0 NOT NULL ENABLE,
+	"TYPE_HEURES_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"DOMAINE_FONCTIONNEL_ID" NUMBER(*,0),
 	 CONSTRAINT "MISE_EN_PAIEMENT_PK" PRIMARY KEY ("ID") ENABLE
    ) ;
 
 -- MODIFICATION_SERVICE_DU
-CREATE TABLE "MODIFICATION_SERVICE_DU" 
-   (	"ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HEURES" FLOAT(126) NOT NULL ENABLE, 
-	"MOTIF_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"COMMENTAIRES" CLOB, 
-	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_DESTRUCTION" DATE, 
-	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0), 
+CREATE TABLE "MODIFICATION_SERVICE_DU"
+   (	"ID" NUMBER(*,0) NOT NULL ENABLE,
+	"INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HEURES" FLOAT(126) NOT NULL ENABLE,
+	"MOTIF_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"COMMENTAIRES" CLOB,
+	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_DESTRUCTION" DATE,
+	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0),
 	 CONSTRAINT "MODIFICATION_SERVICE_DU_PK" PRIMARY KEY ("ID") ENABLE
    ) ;
 
 -- MODULATEUR
-CREATE TABLE "MODULATEUR" 
-   (	"ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"CODE" VARCHAR2(30 CHAR) NOT NULL ENABLE, 
-	"LIBELLE" VARCHAR2(40 CHAR) NOT NULL ENABLE, 
-	"TYPE_MODULATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"PONDERATION_SERVICE_DU" FLOAT(126) NOT NULL ENABLE, 
-	"PONDERATION_SERVICE_COMPL" FLOAT(126) NOT NULL ENABLE, 
-	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_DESTRUCTION" DATE, 
-	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0), 
-	 CONSTRAINT "MODULATEUR__UN" UNIQUE ("CODE") ENABLE, 
+CREATE TABLE "MODULATEUR"
+   (	"ID" NUMBER(*,0) NOT NULL ENABLE,
+	"CODE" VARCHAR2(30 CHAR) NOT NULL ENABLE,
+	"LIBELLE" VARCHAR2(40 CHAR) NOT NULL ENABLE,
+	"TYPE_MODULATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"PONDERATION_SERVICE_DU" FLOAT(126) NOT NULL ENABLE,
+	"PONDERATION_SERVICE_COMPL" FLOAT(126) NOT NULL ENABLE,
+	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_DESTRUCTION" DATE,
+	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0),
+	 CONSTRAINT "MODULATEUR__UN" UNIQUE ("CODE") ENABLE,
 	 CONSTRAINT "MODULATEUR_PK" PRIMARY KEY ("ID") ENABLE
    ) ;
 
 -- MOTIF_MODIFICATION_SERVICE
-CREATE TABLE "MOTIF_MODIFICATION_SERVICE" 
-   (	"ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"CODE" VARCHAR2(64 CHAR) NOT NULL ENABLE, 
-	"LIBELLE" VARCHAR2(50 CHAR) NOT NULL ENABLE, 
-	"MULTIPLICATEUR" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_DESTRUCTION" DATE, 
-	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0), 
-	"DECHARGE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, 
-	 CONSTRAINT "MOTIF_MODIFICATION_SERVICE_PK" PRIMARY KEY ("ID") ENABLE, 
+CREATE TABLE "MOTIF_MODIFICATION_SERVICE"
+   (	"ID" NUMBER(*,0) NOT NULL ENABLE,
+	"CODE" VARCHAR2(64 CHAR) NOT NULL ENABLE,
+	"LIBELLE" VARCHAR2(50 CHAR) NOT NULL ENABLE,
+	"MULTIPLICATEUR" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_DESTRUCTION" DATE,
+	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0),
+	"DECHARGE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE,
+	 CONSTRAINT "MOTIF_MODIFICATION_SERVICE_PK" PRIMARY KEY ("ID") ENABLE,
 	 CONSTRAINT "MOTIF_MODIFICATION_SERVIC_UK1" UNIQUE ("CODE") ENABLE
    ) ;
 
 -- MOTIF_NON_PAIEMENT
-CREATE TABLE "MOTIF_NON_PAIEMENT" 
-   (	"ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"CODE" VARCHAR2(3 CHAR) NOT NULL ENABLE, 
-	"LIBELLE_COURT" VARCHAR2(50 CHAR) NOT NULL ENABLE, 
-	"LIBELLE_LONG" VARCHAR2(200 CHAR) NOT NULL ENABLE, 
-	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_DESTRUCTION" DATE, 
-	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0), 
+CREATE TABLE "MOTIF_NON_PAIEMENT"
+   (	"ID" NUMBER(*,0) NOT NULL ENABLE,
+	"CODE" VARCHAR2(3 CHAR) NOT NULL ENABLE,
+	"LIBELLE_COURT" VARCHAR2(50 CHAR) NOT NULL ENABLE,
+	"LIBELLE_LONG" VARCHAR2(200 CHAR) NOT NULL ENABLE,
+	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_DESTRUCTION" DATE,
+	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0),
 	 CONSTRAINT "MOTIF_NON_PAIEMENT_PK" PRIMARY KEY ("ID") ENABLE
    ) ;
 
 -- NOEUD
-CREATE TABLE "NOEUD" 
-   (	"ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"CODE" VARCHAR2(50 CHAR) NOT NULL ENABLE, 
-	"LIBELLE" VARCHAR2(255 CHAR) NOT NULL ENABLE, 
-	"LISTE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, 
-	"ANNEE_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"ETAPE_ID" NUMBER(*,0), 
-	"ELEMENT_PEDAGOGIQUE_ID" NUMBER(*,0), 
-	"SOURCE_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"SOURCE_CODE" VARCHAR2(100 CHAR) NOT NULL ENABLE, 
-	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_DESTRUCTION" DATE, 
-	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0), 
-	"STRUCTURE_ID" NUMBER(*,0), 
-	 CONSTRAINT "NOEUD_PK" PRIMARY KEY ("ID") ENABLE, 
+CREATE TABLE "NOEUD"
+   (	"ID" NUMBER(*,0) NOT NULL ENABLE,
+	"CODE" VARCHAR2(50 CHAR) NOT NULL ENABLE,
+	"LIBELLE" VARCHAR2(255 CHAR) NOT NULL ENABLE,
+	"LISTE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE,
+	"ANNEE_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"ETAPE_ID" NUMBER(*,0),
+	"ELEMENT_PEDAGOGIQUE_ID" NUMBER(*,0),
+	"SOURCE_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"SOURCE_CODE" VARCHAR2(100 CHAR) NOT NULL ENABLE,
+	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_DESTRUCTION" DATE,
+	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0),
+	"STRUCTURE_ID" NUMBER(*,0),
+	 CONSTRAINT "NOEUD_PK" PRIMARY KEY ("ID") ENABLE,
 	 CONSTRAINT "NOEUD_SRC_UN" UNIQUE ("SOURCE_CODE", "HISTO_DESTRUCTION") ENABLE
    ) ;
 
 -- NOTIFICATION_INDICATEUR
-CREATE TABLE "NOTIFICATION_INDICATEUR" 
-   (	"ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"INDICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"FREQUENCE" NUMBER(*,0), 
-	"DATE_ABONNEMENT" DATE NOT NULL ENABLE, 
-	"DATE_DERN_NOTIF" DATE, 
-	"AFFECTATION_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"IN_HOME" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, 
-	 CONSTRAINT "NOTIF_INDICATEUR_PK" PRIMARY KEY ("ID") ENABLE, 
+CREATE TABLE "NOTIFICATION_INDICATEUR"
+   (	"ID" NUMBER(*,0) NOT NULL ENABLE,
+	"INDICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"FREQUENCE" NUMBER(*,0),
+	"DATE_ABONNEMENT" DATE NOT NULL ENABLE,
+	"DATE_DERN_NOTIF" DATE,
+	"AFFECTATION_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"IN_HOME" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE,
+	 CONSTRAINT "NOTIF_INDICATEUR_PK" PRIMARY KEY ("ID") ENABLE,
 	 CONSTRAINT "NOTIFICATION_INDICATEUR__UN" UNIQUE ("INDICATEUR_ID", "AFFECTATION_ID") ENABLE
    ) ;
 
 -- PARAMETRE
-CREATE TABLE "PARAMETRE" 
-   (	"ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"NOM" VARCHAR2(50 CHAR) NOT NULL ENABLE, 
-	"VALEUR" CLOB, 
-	"DESCRIPTION" CLOB, 
-	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_DESTRUCTION" DATE, 
-	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0), 
+CREATE TABLE "PARAMETRE"
+   (	"ID" NUMBER(*,0) NOT NULL ENABLE,
+	"NOM" VARCHAR2(50 CHAR) NOT NULL ENABLE,
+	"VALEUR" CLOB,
+	"DESCRIPTION" CLOB,
+	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_DESTRUCTION" DATE,
+	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0),
 	 CONSTRAINT "PARAMETRE_PK" PRIMARY KEY ("ID") ENABLE
    ) ;
 
 -- PAYS
-CREATE TABLE "PAYS" 
-   (	"ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"LIBELLE_LONG" VARCHAR2(120 CHAR) NOT NULL ENABLE, 
-	"LIBELLE_COURT" VARCHAR2(60 CHAR) NOT NULL ENABLE, 
-	"TEMOIN_UE" NUMBER(1,0) NOT NULL ENABLE, 
-	"VALIDITE_DEBUT" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"VALIDITE_FIN" DATE, 
-	"SOURCE_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"SOURCE_CODE" VARCHAR2(100 CHAR) NOT NULL ENABLE, 
-	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_DESTRUCTION" DATE, 
-	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0), 
+CREATE TABLE "PAYS"
+   (	"ID" NUMBER(*,0) NOT NULL ENABLE,
+	"LIBELLE_LONG" VARCHAR2(120 CHAR) NOT NULL ENABLE,
+	"LIBELLE_COURT" VARCHAR2(60 CHAR) NOT NULL ENABLE,
+	"TEMOIN_UE" NUMBER(1,0) NOT NULL ENABLE,
+	"VALIDITE_DEBUT" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"VALIDITE_FIN" DATE,
+	"SOURCE_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"SOURCE_CODE" VARCHAR2(100 CHAR) NOT NULL ENABLE,
+	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_DESTRUCTION" DATE,
+	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0),
 	 CONSTRAINT "PAYS_PK" PRIMARY KEY ("ID") ENABLE
    ) ;
 
 -- PERIMETRE
-CREATE TABLE "PERIMETRE" 
-   (	"ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"CODE" VARCHAR2(30 CHAR) NOT NULL ENABLE, 
-	"LIBELLE" VARCHAR2(150 CHAR) NOT NULL ENABLE, 
-	 CONSTRAINT "PERIMETRE_PK" PRIMARY KEY ("ID") ENABLE, 
-	 CONSTRAINT "PERIMETRE_CODE_UN" UNIQUE ("CODE") ENABLE, 
+CREATE TABLE "PERIMETRE"
+   (	"ID" NUMBER(*,0) NOT NULL ENABLE,
+	"CODE" VARCHAR2(30 CHAR) NOT NULL ENABLE,
+	"LIBELLE" VARCHAR2(150 CHAR) NOT NULL ENABLE,
+	 CONSTRAINT "PERIMETRE_PK" PRIMARY KEY ("ID") ENABLE,
+	 CONSTRAINT "PERIMETRE_CODE_UN" UNIQUE ("CODE") ENABLE,
 	 CONSTRAINT "PERIMETRE_LIBELLE_UN" UNIQUE ("LIBELLE") ENABLE
    ) ;
 
 -- PERIODE
-CREATE TABLE "PERIODE" 
-   (	"ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"CODE" VARCHAR2(3 CHAR) NOT NULL ENABLE, 
-	"LIBELLE_LONG" VARCHAR2(40 CHAR) NOT NULL ENABLE, 
-	"LIBELLE_COURT" VARCHAR2(15 CHAR), 
-	"ORDRE" NUMBER(*,0) NOT NULL ENABLE, 
-	"ENSEIGNEMENT" NUMBER(1,0), 
-	"PAIEMENT" NUMBER(1,0), 
-	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_DESTRUCTION" DATE, 
-	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0), 
-	"ECART_MOIS" NUMBER NOT NULL ENABLE, 
-	"ECART_MOIS_PAIEMENT" NUMBER NOT NULL ENABLE, 
-	 CONSTRAINT "PERIODE__UN" UNIQUE ("CODE") ENABLE, 
+CREATE TABLE "PERIODE"
+   (	"ID" NUMBER(*,0) NOT NULL ENABLE,
+	"CODE" VARCHAR2(3 CHAR) NOT NULL ENABLE,
+	"LIBELLE_LONG" VARCHAR2(40 CHAR) NOT NULL ENABLE,
+	"LIBELLE_COURT" VARCHAR2(15 CHAR),
+	"ORDRE" NUMBER(*,0) NOT NULL ENABLE,
+	"ENSEIGNEMENT" NUMBER(1,0),
+	"PAIEMENT" NUMBER(1,0),
+	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_DESTRUCTION" DATE,
+	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0),
+	"ECART_MOIS" NUMBER NOT NULL ENABLE,
+	"ECART_MOIS_PAIEMENT" NUMBER NOT NULL ENABLE,
+	 CONSTRAINT "PERIODE__UN" UNIQUE ("CODE") ENABLE,
 	 CONSTRAINT "PERIODE_PK" PRIMARY KEY ("ID") ENABLE
    ) ;
 
 -- PIECE_JOINTE
-CREATE TABLE "PIECE_JOINTE" 
-   (	"ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"TYPE_PIECE_JOINTE_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_DESTRUCTION" DATE, 
-	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0), 
-	"VALIDATION_ID" NUMBER(*,0), 
-	"INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	 CONSTRAINT "PIECE_JOINTE_PK" PRIMARY KEY ("ID") ENABLE, 
+CREATE TABLE "PIECE_JOINTE"
+   (	"ID" NUMBER(*,0) NOT NULL ENABLE,
+	"TYPE_PIECE_JOINTE_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_DESTRUCTION" DATE,
+	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0),
+	"VALIDATION_ID" NUMBER(*,0),
+	"INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE,
+	 CONSTRAINT "PIECE_JOINTE_PK" PRIMARY KEY ("ID") ENABLE,
 	 CONSTRAINT "PIECE_JOINTE__UN" UNIQUE ("TYPE_PIECE_JOINTE_ID", "INTERVENANT_ID", "HISTO_DESTRUCTION") ENABLE
    ) ;
 
 -- PIECE_JOINTE_FICHIER
-CREATE TABLE "PIECE_JOINTE_FICHIER" 
-   (	"PIECE_JOINTE_ID" NUMBER NOT NULL ENABLE, 
-	"FICHIER_ID" NUMBER(*,0) NOT NULL ENABLE, 
+CREATE TABLE "PIECE_JOINTE_FICHIER"
+   (	"PIECE_JOINTE_ID" NUMBER NOT NULL ENABLE,
+	"FICHIER_ID" NUMBER(*,0) NOT NULL ENABLE,
 	 CONSTRAINT "PIECE_JOINTE_FICHIER_PK" PRIMARY KEY ("PIECE_JOINTE_ID", "FICHIER_ID") ENABLE
    ) ;
 
 -- PLAFOND
-CREATE TABLE "PLAFOND" 
-   (	"ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"CODE" VARCHAR2(40 CHAR) NOT NULL ENABLE, 
-	"LIBELLE" VARCHAR2(150 CHAR) NOT NULL ENABLE, 
+CREATE TABLE "PLAFOND"
+   (	"ID" NUMBER(*,0) NOT NULL ENABLE,
+	"CODE" VARCHAR2(40 CHAR) NOT NULL ENABLE,
+	"LIBELLE" VARCHAR2(150 CHAR) NOT NULL ENABLE,
 	 CONSTRAINT "PLAFOND_PK" PRIMARY KEY ("ID") ENABLE
    ) ;
 
 -- PLAFOND_APPLICATION
-CREATE TABLE "PLAFOND_APPLICATION" 
-   (	"ID" NUMBER NOT NULL ENABLE, 
-	"PLAFOND_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"PLAFOND_ETAT_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"ANNEE_DEBUT_ID" NUMBER(*,0), 
-	"ANNEE_FIN_ID" NUMBER(*,0), 
-	"TYPE_VOLUME_HORAIRE_ID" NUMBER(*,0) NOT NULL ENABLE, 
+CREATE TABLE "PLAFOND_APPLICATION"
+   (	"ID" NUMBER NOT NULL ENABLE,
+	"PLAFOND_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"PLAFOND_ETAT_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"ANNEE_DEBUT_ID" NUMBER(*,0),
+	"ANNEE_FIN_ID" NUMBER(*,0),
+	"TYPE_VOLUME_HORAIRE_ID" NUMBER(*,0) NOT NULL ENABLE,
 	 CONSTRAINT "PLAFOND_APPLICATION_PK" PRIMARY KEY ("ID") ENABLE
    ) ;
 
 -- PLAFOND_ETAT
-CREATE TABLE "PLAFOND_ETAT" 
-   (	"ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"CODE" VARCHAR2(20 CHAR) NOT NULL ENABLE, 
-	"LIBELLE" VARCHAR2(100 CHAR) NOT NULL ENABLE, 
+CREATE TABLE "PLAFOND_ETAT"
+   (	"ID" NUMBER(*,0) NOT NULL ENABLE,
+	"CODE" VARCHAR2(20 CHAR) NOT NULL ENABLE,
+	"LIBELLE" VARCHAR2(100 CHAR) NOT NULL ENABLE,
 	 CONSTRAINT "PLAFOND_ETAT_PK" PRIMARY KEY ("ID") ENABLE
    ) ;
 
 -- PRIVILEGE
-CREATE TABLE "PRIVILEGE" 
-   (	"ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"CODE" VARCHAR2(150 CHAR) NOT NULL ENABLE, 
-	"LIBELLE" VARCHAR2(200 CHAR) NOT NULL ENABLE, 
-	"CATEGORIE_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"ORDRE" NUMBER(*,0), 
-	 CONSTRAINT "PRIVILEGE_PK" PRIMARY KEY ("ID") ENABLE, 
+CREATE TABLE "PRIVILEGE"
+   (	"ID" NUMBER(*,0) NOT NULL ENABLE,
+	"CODE" VARCHAR2(150 CHAR) NOT NULL ENABLE,
+	"LIBELLE" VARCHAR2(200 CHAR) NOT NULL ENABLE,
+	"CATEGORIE_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"ORDRE" NUMBER(*,0),
+	 CONSTRAINT "PRIVILEGE_PK" PRIMARY KEY ("ID") ENABLE,
 	 CONSTRAINT "PRIVILEGE__UN" UNIQUE ("CATEGORIE_ID", "CODE") ENABLE
    ) ;
 
 -- REGLE_STRUCTURE_VALIDATION
-CREATE TABLE "REGLE_STRUCTURE_VALIDATION" 
-   (	"ID" NUMBER NOT NULL ENABLE, 
-	"TYPE_VOLUME_HORAIRE_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"TYPE_INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"PRIORITE" VARCHAR2(20 CHAR) NOT NULL ENABLE, 
-	"MESSAGE" VARCHAR2(500 CHAR), 
-	 CONSTRAINT "REGLE_STRUCTURE_VALIDATION_PK" PRIMARY KEY ("ID") ENABLE, 
+CREATE TABLE "REGLE_STRUCTURE_VALIDATION"
+   (	"ID" NUMBER NOT NULL ENABLE,
+	"TYPE_VOLUME_HORAIRE_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"TYPE_INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"PRIORITE" VARCHAR2(20 CHAR) NOT NULL ENABLE,
+	"MESSAGE" VARCHAR2(500 CHAR),
+	 CONSTRAINT "REGLE_STRUCTURE_VALIDATION_PK" PRIMARY KEY ("ID") ENABLE,
 	 CONSTRAINT "REGLE_STRUCTURE_VALIDATION__UN" UNIQUE ("TYPE_VOLUME_HORAIRE_ID", "TYPE_INTERVENANT_ID") ENABLE
    ) ;
 
 -- ROLE
-CREATE TABLE "ROLE" 
-   (	"ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_DESTRUCTION" DATE, 
-	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0), 
-	"CODE" VARCHAR2(64 CHAR) NOT NULL ENABLE, 
-	"LIBELLE" VARCHAR2(50 CHAR) NOT NULL ENABLE, 
-	"PERIMETRE_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"PEUT_CHANGER_STRUCTURE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, 
-	 CONSTRAINT "ROLE_CODE_UN" UNIQUE ("CODE") ENABLE, 
+CREATE TABLE "ROLE"
+   (	"ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_DESTRUCTION" DATE,
+	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0),
+	"CODE" VARCHAR2(64 CHAR) NOT NULL ENABLE,
+	"LIBELLE" VARCHAR2(50 CHAR) NOT NULL ENABLE,
+	"PERIMETRE_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"PEUT_CHANGER_STRUCTURE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE,
+	 CONSTRAINT "ROLE_CODE_UN" UNIQUE ("CODE") ENABLE,
 	 CONSTRAINT "ROLE_PK" PRIMARY KEY ("ID") ENABLE
    ) ;
 
 -- ROLE_PRIVILEGE
-CREATE TABLE "ROLE_PRIVILEGE" 
-   (	"ROLE_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"PRIVILEGE_ID" NUMBER(*,0) NOT NULL ENABLE, 
+CREATE TABLE "ROLE_PRIVILEGE"
+   (	"ROLE_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"PRIVILEGE_ID" NUMBER(*,0) NOT NULL ENABLE,
 	 CONSTRAINT "ROLE_PRIVILEGE_PK" PRIMARY KEY ("PRIVILEGE_ID", "ROLE_ID") ENABLE
    ) ;
 
 -- SCENARIO
-CREATE TABLE "SCENARIO" 
-   (	"ID" NUMBER NOT NULL ENABLE, 
-	"LIBELLE" VARCHAR2(200 CHAR) NOT NULL ENABLE, 
-	"STRUCTURE_ID" NUMBER(*,0), 
-	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_DESTRUCTION" DATE, 
-	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0), 
-	"TYPE" NUMBER(2,0) DEFAULT 0 NOT NULL ENABLE, 
+CREATE TABLE "SCENARIO"
+   (	"ID" NUMBER NOT NULL ENABLE,
+	"LIBELLE" VARCHAR2(200 CHAR) NOT NULL ENABLE,
+	"STRUCTURE_ID" NUMBER(*,0),
+	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_DESTRUCTION" DATE,
+	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0),
+	"TYPE" NUMBER(2,0) DEFAULT 0 NOT NULL ENABLE,
 	 CONSTRAINT "SCENARIO_PK" PRIMARY KEY ("ID") ENABLE
    ) ;
 
 -- SCENARIO_LIEN
-CREATE TABLE "SCENARIO_LIEN" 
-   (	"ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"SCENARIO_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"LIEN_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"ACTIF" NUMBER(1,0) DEFAULT 1 NOT NULL ENABLE, 
-	"POIDS" FLOAT(126) DEFAULT 1 NOT NULL ENABLE, 
-	"CHOIX_MINIMUM" NUMBER DEFAULT 0, 
-	"CHOIX_MAXIMUM" NUMBER DEFAULT 0, 
-	"SOURCE_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"SOURCE_CODE" VARCHAR2(100 CHAR) NOT NULL ENABLE, 
-	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_DESTRUCTION" DATE, 
-	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0), 
-	 CONSTRAINT "SCENARIO_LIEN_PK" PRIMARY KEY ("ID") ENABLE, 
-	 CONSTRAINT "SCENARIO_LIEN_SRC_UN" UNIQUE ("SOURCE_CODE", "HISTO_DESTRUCTION") ENABLE, 
+CREATE TABLE "SCENARIO_LIEN"
+   (	"ID" NUMBER(*,0) NOT NULL ENABLE,
+	"SCENARIO_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"LIEN_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"ACTIF" NUMBER(1,0) DEFAULT 1 NOT NULL ENABLE,
+	"POIDS" FLOAT(126) DEFAULT 1 NOT NULL ENABLE,
+	"CHOIX_MINIMUM" NUMBER DEFAULT 0,
+	"CHOIX_MAXIMUM" NUMBER DEFAULT 0,
+	"SOURCE_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"SOURCE_CODE" VARCHAR2(100 CHAR) NOT NULL ENABLE,
+	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_DESTRUCTION" DATE,
+	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0),
+	 CONSTRAINT "SCENARIO_LIEN_PK" PRIMARY KEY ("ID") ENABLE,
+	 CONSTRAINT "SCENARIO_LIEN_SRC_UN" UNIQUE ("SOURCE_CODE", "HISTO_DESTRUCTION") ENABLE,
 	 CONSTRAINT "SCENARIO_LIEN__UN" UNIQUE ("SCENARIO_ID", "LIEN_ID", "HISTO_DESTRUCTION") ENABLE
    ) ;
 
 -- SCENARIO_NOEUD
-CREATE TABLE "SCENARIO_NOEUD" 
-   (	"ID" NUMBER NOT NULL ENABLE, 
-	"SCENARIO_ID" NUMBER NOT NULL ENABLE, 
-	"NOEUD_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"ASSIDUITE" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, 
-	"SOURCE_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"SOURCE_CODE" VARCHAR2(100 CHAR) NOT NULL ENABLE, 
-	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_DESTRUCTION" DATE, 
-	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0), 
-	"HEURES" FLOAT(126), 
-	 CONSTRAINT "SCENARIO_NOEUD_PK" PRIMARY KEY ("ID") ENABLE, 
-	 CONSTRAINT "SCENARIO_NOEUD_SRC_UN" UNIQUE ("SOURCE_CODE", "HISTO_DESTRUCTION") ENABLE, 
+CREATE TABLE "SCENARIO_NOEUD"
+   (	"ID" NUMBER NOT NULL ENABLE,
+	"SCENARIO_ID" NUMBER NOT NULL ENABLE,
+	"NOEUD_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"ASSIDUITE" FLOAT(126) DEFAULT 0 NOT NULL ENABLE,
+	"SOURCE_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"SOURCE_CODE" VARCHAR2(100 CHAR) NOT NULL ENABLE,
+	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_DESTRUCTION" DATE,
+	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0),
+	"HEURES" FLOAT(126),
+	 CONSTRAINT "SCENARIO_NOEUD_PK" PRIMARY KEY ("ID") ENABLE,
+	 CONSTRAINT "SCENARIO_NOEUD_SRC_UN" UNIQUE ("SOURCE_CODE", "HISTO_DESTRUCTION") ENABLE,
 	 CONSTRAINT "SCENARIO_NOEUD__UN" UNIQUE ("SCENARIO_ID", "NOEUD_ID", "HISTO_DESTRUCTION") ENABLE
    ) ;
 
 -- SCENARIO_NOEUD_EFFECTIF
-CREATE TABLE "SCENARIO_NOEUD_EFFECTIF" 
-   (	"ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"SCENARIO_NOEUD_ID" NUMBER NOT NULL ENABLE, 
-	"TYPE_HEURES_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"EFFECTIF" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, 
-	"ETAPE_ID" NUMBER(*,0) NOT NULL ENABLE, 
+CREATE TABLE "SCENARIO_NOEUD_EFFECTIF"
+   (	"ID" NUMBER(*,0) NOT NULL ENABLE,
+	"SCENARIO_NOEUD_ID" NUMBER NOT NULL ENABLE,
+	"TYPE_HEURES_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"EFFECTIF" FLOAT(126) DEFAULT 0 NOT NULL ENABLE,
+	"ETAPE_ID" NUMBER(*,0) NOT NULL ENABLE,
 	 CONSTRAINT "SCENARIO_NOEUD_EFFECTIF_PK" PRIMARY KEY ("ID") ENABLE
    ) ;
 
 -- SCENARIO_NOEUD_SEUIL
-CREATE TABLE "SCENARIO_NOEUD_SEUIL" 
-   (	"ID" NUMBER NOT NULL ENABLE, 
-	"SCENARIO_NOEUD_ID" NUMBER NOT NULL ENABLE, 
-	"TYPE_INTERVENTION_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"OUVERTURE" NUMBER DEFAULT 0, 
-	"DEDOUBLEMENT" NUMBER DEFAULT 0, 
-	"ASSIDUITE" FLOAT(126), 
+CREATE TABLE "SCENARIO_NOEUD_SEUIL"
+   (	"ID" NUMBER NOT NULL ENABLE,
+	"SCENARIO_NOEUD_ID" NUMBER NOT NULL ENABLE,
+	"TYPE_INTERVENTION_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"OUVERTURE" NUMBER DEFAULT 0,
+	"DEDOUBLEMENT" NUMBER DEFAULT 0,
+	"ASSIDUITE" FLOAT(126),
 	 CONSTRAINT "SCENARIO_NOEUD_SEUIL_PK" PRIMARY KEY ("ID") ENABLE
    ) ;
 
 -- SERVICE
-CREATE TABLE "SERVICE" 
-   (	"ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"ELEMENT_PEDAGOGIQUE_ID" NUMBER(*,0), 
-	"ETABLISSEMENT_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_DESTRUCTION" DATE, 
-	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0), 
-	"DESCRIPTION" CLOB, 
-	 CONSTRAINT "SERVICE__UN" UNIQUE ("INTERVENANT_ID", "ELEMENT_PEDAGOGIQUE_ID", "ETABLISSEMENT_ID", "HISTO_DESTRUCTION") ENABLE, 
+CREATE TABLE "SERVICE"
+   (	"ID" NUMBER(*,0) NOT NULL ENABLE,
+	"INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"ELEMENT_PEDAGOGIQUE_ID" NUMBER(*,0),
+	"ETABLISSEMENT_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_DESTRUCTION" DATE,
+	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0),
+	"DESCRIPTION" CLOB,
+	 CONSTRAINT "SERVICE__UN" UNIQUE ("INTERVENANT_ID", "ELEMENT_PEDAGOGIQUE_ID", "ETABLISSEMENT_ID", "HISTO_DESTRUCTION") ENABLE,
 	 CONSTRAINT "SERVICE_PK" PRIMARY KEY ("ID") ENABLE
    ) ;
 
 -- SERVICE_REFERENTIEL
-CREATE TABLE "SERVICE_REFERENTIEL" 
-   (	"ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"FONCTION_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"STRUCTURE_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_DESTRUCTION" DATE, 
-	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0), 
-	"COMMENTAIRES" VARCHAR2(256 CHAR), 
-	"FORMATION" VARCHAR2(256 CHAR), 
+CREATE TABLE "SERVICE_REFERENTIEL"
+   (	"ID" NUMBER(*,0) NOT NULL ENABLE,
+	"FONCTION_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"STRUCTURE_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_DESTRUCTION" DATE,
+	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0),
+	"COMMENTAIRES" VARCHAR2(256 CHAR),
+	"FORMATION" VARCHAR2(256 CHAR),
 	 CONSTRAINT "SERVICE_REFERENTIEL_PK" PRIMARY KEY ("ID") ENABLE
    ) ;
 
 -- SEUIL_CHARGE
-CREATE TABLE "SEUIL_CHARGE" 
-   (	"ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"SCENARIO_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"STRUCTURE_ID" NUMBER(*,0), 
-	"GROUPE_TYPE_FORMATION_ID" NUMBER(*,0), 
-	"TYPE_INTERVENTION_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"DEDOUBLEMENT" NUMBER, 
-	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_CREATEUR_ID" NUMBER NOT NULL ENABLE, 
-	"HISTO_MODIFICATEUR_ID" NUMBER NOT NULL ENABLE, 
-	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_DESTRUCTION" DATE, 
-	"HISTO_DESTRUCTEUR_ID" NUMBER, 
-	"ANNEE_ID" NUMBER(*,0) NOT NULL ENABLE, 
+CREATE TABLE "SEUIL_CHARGE"
+   (	"ID" NUMBER(*,0) NOT NULL ENABLE,
+	"SCENARIO_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"STRUCTURE_ID" NUMBER(*,0),
+	"GROUPE_TYPE_FORMATION_ID" NUMBER(*,0),
+	"TYPE_INTERVENTION_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"DEDOUBLEMENT" NUMBER,
+	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_CREATEUR_ID" NUMBER NOT NULL ENABLE,
+	"HISTO_MODIFICATEUR_ID" NUMBER NOT NULL ENABLE,
+	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_DESTRUCTION" DATE,
+	"HISTO_DESTRUCTEUR_ID" NUMBER,
+	"ANNEE_ID" NUMBER(*,0) NOT NULL ENABLE,
 	 CONSTRAINT "SEUIL_CHARGE_PK" PRIMARY KEY ("ID") ENABLE
    ) ;
 
 -- SOURCE
-CREATE TABLE "SOURCE" 
-   (	"ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"CODE" VARCHAR2(15 CHAR) NOT NULL ENABLE, 
-	"LIBELLE" VARCHAR2(30 CHAR) NOT NULL ENABLE, 
-	"IMPORTABLE" NUMBER(1,0) NOT NULL ENABLE, 
-	 CONSTRAINT "SOURCE_CODE_UN" UNIQUE ("CODE") ENABLE, 
+CREATE TABLE "SOURCE"
+   (	"ID" NUMBER(*,0) NOT NULL ENABLE,
+	"CODE" VARCHAR2(15 CHAR) NOT NULL ENABLE,
+	"LIBELLE" VARCHAR2(30 CHAR) NOT NULL ENABLE,
+	"IMPORTABLE" NUMBER(1,0) NOT NULL ENABLE,
+	 CONSTRAINT "SOURCE_CODE_UN" UNIQUE ("CODE") ENABLE,
 	 CONSTRAINT "SOURCE_PK" PRIMARY KEY ("ID") ENABLE
    ) ;
 
 -- STATUT_INTERVENANT
-CREATE TABLE "STATUT_INTERVENANT" 
-   (	"ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"LIBELLE" VARCHAR2(128 CHAR) NOT NULL ENABLE, 
-	"SERVICE_STATUTAIRE" FLOAT(126) NOT NULL ENABLE, 
-	"DEPASSEMENT" NUMBER(1,0) NOT NULL ENABLE, 
-	"PLAFOND_REFERENTIEL" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, 
-	"MAXIMUM_HETD" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, 
-	"TYPE_INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"SOURCE_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"SOURCE_CODE" VARCHAR2(100 CHAR) NOT NULL ENABLE, 
-	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_DESTRUCTION" DATE, 
-	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0), 
-	"ORDRE" NUMBER(*,0) NOT NULL ENABLE, 
-	"NON_AUTORISE" NUMBER(1,0) NOT NULL ENABLE, 
-	"PEUT_SAISIR_SERVICE" NUMBER(1,0) NOT NULL ENABLE, 
-	"PEUT_CHOISIR_DANS_DOSSIER" NUMBER(1,0) NOT NULL ENABLE, 
-	"PEUT_SAISIR_DOSSIER" NUMBER(1,0) NOT NULL ENABLE, 
-	"PEUT_SAISIR_MOTIF_NON_PAIEMENT" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, 
-	"PEUT_AVOIR_CONTRAT" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, 
-	"PEUT_SAISIR_REFERENTIEL" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, 
-	"PLAFOND_HC_HORS_REMU_FC" FLOAT(126) DEFAULT 9999 NOT NULL ENABLE, 
-	"PLAFOND_HC_REMU_FC" FLOAT(126) DEFAULT 13502 NOT NULL ENABLE, 
-	"DEPASSEMENT_SERVICE_DU_SANS_HC" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, 
-	"PEUT_CLOTURER_SAISIE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, 
-	"TEM_BIATSS" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, 
-	"PEUT_SAISIR_SERVICE_EXT" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, 
-	"TEM_ATV" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, 
-	 CONSTRAINT "STATUT_INTERVENANT__UN" UNIQUE ("SOURCE_CODE") ENABLE, 
-	 CONSTRAINT "STATUT_INTERVENANT_PK" PRIMARY KEY ("ID") ENABLE, 
+CREATE TABLE "STATUT_INTERVENANT"
+   (	"ID" NUMBER(*,0) NOT NULL ENABLE,
+	"LIBELLE" VARCHAR2(128 CHAR) NOT NULL ENABLE,
+	"SERVICE_STATUTAIRE" FLOAT(126) NOT NULL ENABLE,
+	"DEPASSEMENT" NUMBER(1,0) NOT NULL ENABLE,
+	"PLAFOND_REFERENTIEL" FLOAT(126) DEFAULT 0 NOT NULL ENABLE,
+	"MAXIMUM_HETD" FLOAT(126) DEFAULT 0 NOT NULL ENABLE,
+	"TYPE_INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"SOURCE_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"SOURCE_CODE" VARCHAR2(100 CHAR) NOT NULL ENABLE,
+	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_DESTRUCTION" DATE,
+	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0),
+	"ORDRE" NUMBER(*,0) NOT NULL ENABLE,
+	"NON_AUTORISE" NUMBER(1,0) NOT NULL ENABLE,
+	"PEUT_SAISIR_SERVICE" NUMBER(1,0) NOT NULL ENABLE,
+	"PEUT_CHOISIR_DANS_DOSSIER" NUMBER(1,0) NOT NULL ENABLE,
+	"PEUT_SAISIR_DOSSIER" NUMBER(1,0) NOT NULL ENABLE,
+	"PEUT_SAISIR_MOTIF_NON_PAIEMENT" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE,
+	"PEUT_AVOIR_CONTRAT" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE,
+	"PEUT_SAISIR_REFERENTIEL" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE,
+	"PLAFOND_HC_HORS_REMU_FC" FLOAT(126) DEFAULT 9999 NOT NULL ENABLE,
+	"PLAFOND_HC_REMU_FC" FLOAT(126) DEFAULT 13502 NOT NULL ENABLE,
+	"DEPASSEMENT_SERVICE_DU_SANS_HC" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE,
+	"PEUT_CLOTURER_SAISIE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE,
+	"TEM_BIATSS" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE,
+	"PEUT_SAISIR_SERVICE_EXT" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE,
+	"TEM_ATV" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE,
+	 CONSTRAINT "STATUT_INTERVENANT__UN" UNIQUE ("SOURCE_CODE") ENABLE,
+	 CONSTRAINT "STATUT_INTERVENANT_PK" PRIMARY KEY ("ID") ENABLE,
 	 CONSTRAINT "STATUT_INTERVENANT_ODRE_UN" UNIQUE ("HISTO_DESTRUCTION", "ORDRE") ENABLE
    ) ;
 
 -- STATUT_PRIVILEGE
-CREATE TABLE "STATUT_PRIVILEGE" 
-   (	"STATUT_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"PRIVILEGE_ID" NUMBER(*,0) NOT NULL ENABLE, 
+CREATE TABLE "STATUT_PRIVILEGE"
+   (	"STATUT_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"PRIVILEGE_ID" NUMBER(*,0) NOT NULL ENABLE,
 	 CONSTRAINT "STATUT_PRIVILEGE_PK" PRIMARY KEY ("STATUT_ID", "PRIVILEGE_ID") ENABLE
    ) ;
 
 -- STRUCTURE
-CREATE TABLE "STRUCTURE" 
-   (	"ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"LIBELLE_LONG" VARCHAR2(60 CHAR) NOT NULL ENABLE, 
-	"LIBELLE_COURT" VARCHAR2(25 CHAR) NOT NULL ENABLE, 
-	"SOURCE_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"SOURCE_CODE" VARCHAR2(100 CHAR), 
-	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_DESTRUCTION" DATE, 
-	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0), 
-	"CONTACT_PJ" VARCHAR2(255 CHAR), 
-	"AFF_ADRESSE_CONTRAT" NUMBER(1,0) DEFAULT 1 NOT NULL ENABLE, 
-	"ENSEIGNEMENT" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, 
-	"CODE" VARCHAR2(50 CHAR) NOT NULL ENABLE, 
-	 CONSTRAINT "STRUCTURE_PK" PRIMARY KEY ("ID") ENABLE, 
-	 CONSTRAINT "STRUCTURE_CODE_UN" UNIQUE ("CODE", "HISTO_DESTRUCTION") ENABLE, 
+CREATE TABLE "STRUCTURE"
+   (	"ID" NUMBER(*,0) NOT NULL ENABLE,
+	"LIBELLE_LONG" VARCHAR2(60 CHAR) NOT NULL ENABLE,
+	"LIBELLE_COURT" VARCHAR2(25 CHAR) NOT NULL ENABLE,
+	"SOURCE_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"SOURCE_CODE" VARCHAR2(100 CHAR),
+	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_DESTRUCTION" DATE,
+	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0),
+	"CONTACT_PJ" VARCHAR2(255 CHAR),
+	"AFF_ADRESSE_CONTRAT" NUMBER(1,0) DEFAULT 1 NOT NULL ENABLE,
+	"ENSEIGNEMENT" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE,
+	"CODE" VARCHAR2(50 CHAR) NOT NULL ENABLE,
+	 CONSTRAINT "STRUCTURE_PK" PRIMARY KEY ("ID") ENABLE,
+	 CONSTRAINT "STRUCTURE_CODE_UN" UNIQUE ("CODE", "HISTO_DESTRUCTION") ENABLE,
 	 CONSTRAINT "STRUCTURE_SOURCE_CODE_UN" UNIQUE ("SOURCE_CODE", "HISTO_DESTRUCTION") ENABLE
    ) ;
 
 -- SYNC_LOG
-CREATE TABLE "SYNC_LOG" 
-   (	"ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"DATE_SYNC" TIMESTAMP (6) NOT NULL ENABLE, 
-	"MESSAGE" CLOB NOT NULL ENABLE, 
-	"SOURCE_CODE" VARCHAR2(200 CHAR), 
-	"TABLE_NAME" VARCHAR2(30 CHAR), 
+CREATE TABLE "SYNC_LOG"
+   (	"ID" NUMBER(*,0) NOT NULL ENABLE,
+	"DATE_SYNC" TIMESTAMP (6) NOT NULL ENABLE,
+	"MESSAGE" CLOB NOT NULL ENABLE,
+	"SOURCE_CODE" VARCHAR2(200 CHAR),
+	"TABLE_NAME" VARCHAR2(30 CHAR),
 	 CONSTRAINT "SYNC_LOG_PK" PRIMARY KEY ("ID") ENABLE
    ) ;
 
 -- TAUX_HORAIRE_HETD
-CREATE TABLE "TAUX_HORAIRE_HETD" 
-   (	"ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"VALEUR" FLOAT(126) NOT NULL ENABLE, 
-	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_DESTRUCTION" DATE, 
-	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0), 
+CREATE TABLE "TAUX_HORAIRE_HETD"
+   (	"ID" NUMBER(*,0) NOT NULL ENABLE,
+	"VALEUR" FLOAT(126) NOT NULL ENABLE,
+	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_DESTRUCTION" DATE,
+	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0),
 	 CONSTRAINT "TAUX_HORAIRE_HETD_PK" PRIMARY KEY ("ID") ENABLE
    ) ;
 
 -- TBL
-CREATE TABLE "TBL" 
-   (	"TBL_NAME" VARCHAR2(30 CHAR) NOT NULL ENABLE, 
-	"TABLE_NAME" VARCHAR2(30 CHAR), 
-	"VIEW_NAME" VARCHAR2(30 CHAR), 
-	"SEQUENCE_NAME" VARCHAR2(30 CHAR), 
-	"CONSTRAINT_NAME" VARCHAR2(30 CHAR), 
-	"CUSTOM_CALCUL_PROC" VARCHAR2(100 CHAR), 
-	"ORDRE" NUMBER DEFAULT 1 NOT NULL ENABLE, 
+CREATE TABLE "TBL"
+   (	"TBL_NAME" VARCHAR2(30 CHAR) NOT NULL ENABLE,
+	"TABLE_NAME" VARCHAR2(30 CHAR),
+	"VIEW_NAME" VARCHAR2(30 CHAR),
+	"SEQUENCE_NAME" VARCHAR2(30 CHAR),
+	"CONSTRAINT_NAME" VARCHAR2(30 CHAR),
+	"CUSTOM_CALCUL_PROC" VARCHAR2(100 CHAR),
+	"ORDRE" NUMBER DEFAULT 1 NOT NULL ENABLE,
 	 CONSTRAINT "TBL_PK" PRIMARY KEY ("TBL_NAME") ENABLE
    ) ;
 
 -- TBL_AGREMENT
-CREATE TABLE "TBL_AGREMENT" 
-   (	"ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"ANNEE_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"TYPE_AGREMENT_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"STRUCTURE_ID" NUMBER(*,0), 
-	"OBLIGATOIRE" NUMBER(1,0) NOT NULL ENABLE, 
-	"AGREMENT_ID" NUMBER(*,0), 
-	"TO_DELETE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, 
-	 CONSTRAINT "TBL_AGREMENT_PK" PRIMARY KEY ("ID") ENABLE, 
+CREATE TABLE "TBL_AGREMENT"
+   (	"ID" NUMBER(*,0) NOT NULL ENABLE,
+	"ANNEE_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"TYPE_AGREMENT_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"STRUCTURE_ID" NUMBER(*,0),
+	"OBLIGATOIRE" NUMBER(1,0) NOT NULL ENABLE,
+	"AGREMENT_ID" NUMBER(*,0),
+	"TO_DELETE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE,
+	 CONSTRAINT "TBL_AGREMENT_PK" PRIMARY KEY ("ID") ENABLE,
 	 CONSTRAINT "TBL_AGREMENT__UN" UNIQUE ("TYPE_AGREMENT_ID", "INTERVENANT_ID", "STRUCTURE_ID", "TO_DELETE") ENABLE
    ) ;
 ALTER TABLE TBL_AGREMENT NOLOGGING;
 
 -- TBL_CHARGENS
-CREATE TABLE "TBL_CHARGENS" 
-   (	"ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"ANNEE_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"NOEUD_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"SCENARIO_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"TYPE_HEURES_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"TYPE_INTERVENTION_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"ELEMENT_PEDAGOGIQUE_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"ETAPE_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"ETAPE_ENS_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"STRUCTURE_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"GROUPE_TYPE_FORMATION_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"OUVERTURE" FLOAT(126) NOT NULL ENABLE, 
-	"DEDOUBLEMENT" FLOAT(126) NOT NULL ENABLE, 
-	"ASSIDUITE" FLOAT(126) NOT NULL ENABLE, 
-	"EFFECTIF" FLOAT(126) NOT NULL ENABLE, 
-	"HEURES_ENS" FLOAT(126) NOT NULL ENABLE, 
-	"GROUPES" FLOAT(126) NOT NULL ENABLE, 
-	"HEURES" FLOAT(126) NOT NULL ENABLE, 
-	"HETD" FLOAT(126) NOT NULL ENABLE, 
-	"TO_DELETE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, 
-	 CONSTRAINT "TBL_CHARGENS_PK" PRIMARY KEY ("ID") ENABLE, 
+CREATE TABLE "TBL_CHARGENS"
+   (	"ID" NUMBER(*,0) NOT NULL ENABLE,
+	"ANNEE_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"NOEUD_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"SCENARIO_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"TYPE_HEURES_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"TYPE_INTERVENTION_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"ELEMENT_PEDAGOGIQUE_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"ETAPE_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"ETAPE_ENS_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"STRUCTURE_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"GROUPE_TYPE_FORMATION_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"OUVERTURE" FLOAT(126) NOT NULL ENABLE,
+	"DEDOUBLEMENT" FLOAT(126) NOT NULL ENABLE,
+	"ASSIDUITE" FLOAT(126) NOT NULL ENABLE,
+	"EFFECTIF" FLOAT(126) NOT NULL ENABLE,
+	"HEURES_ENS" FLOAT(126) NOT NULL ENABLE,
+	"GROUPES" FLOAT(126) NOT NULL ENABLE,
+	"HEURES" FLOAT(126) NOT NULL ENABLE,
+	"HETD" FLOAT(126) NOT NULL ENABLE,
+	"TO_DELETE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE,
+	 CONSTRAINT "TBL_CHARGENS_PK" PRIMARY KEY ("ID") ENABLE,
 	 CONSTRAINT "TBL_CHARGENS__UN" UNIQUE ("ANNEE_ID", "NOEUD_ID", "SCENARIO_ID", "TYPE_HEURES_ID", "TYPE_INTERVENTION_ID", "ELEMENT_PEDAGOGIQUE_ID", "ETAPE_ID", "ETAPE_ENS_ID", "STRUCTURE_ID", "GROUPE_TYPE_FORMATION_ID") ENABLE
    ) ;
 ALTER TABLE TBL_CHARGENS NOLOGGING;
 
 -- TBL_CHARGENS_SEUILS_DEF
-CREATE TABLE "TBL_CHARGENS_SEUILS_DEF" 
-   (	"ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"ANNEE_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"SCENARIO_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"STRUCTURE_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"GROUPE_TYPE_FORMATION_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"TYPE_INTERVENTION_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"DEDOUBLEMENT" FLOAT(126) NOT NULL ENABLE, 
-	"TO_DELETE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, 
-	 CONSTRAINT "TBL_CHARGENS_SEUILS_DEF_PK" PRIMARY KEY ("ID") ENABLE, 
+CREATE TABLE "TBL_CHARGENS_SEUILS_DEF"
+   (	"ID" NUMBER(*,0) NOT NULL ENABLE,
+	"ANNEE_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"SCENARIO_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"STRUCTURE_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"GROUPE_TYPE_FORMATION_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"TYPE_INTERVENTION_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"DEDOUBLEMENT" FLOAT(126) NOT NULL ENABLE,
+	"TO_DELETE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE,
+	 CONSTRAINT "TBL_CHARGENS_SEUILS_DEF_PK" PRIMARY KEY ("ID") ENABLE,
 	 CONSTRAINT "TBL_CHARGENS_SEUILS_DEF__UN" UNIQUE ("SCENARIO_ID", "TYPE_INTERVENTION_ID", "STRUCTURE_ID", "GROUPE_TYPE_FORMATION_ID", "ANNEE_ID") ENABLE
    ) ;
 ALTER TABLE TBL_CHARGENS_SEUILS_DEF NOLOGGING;
 
 -- TBL_CLOTURE_REALISE
-CREATE TABLE "TBL_CLOTURE_REALISE" 
-   (	"ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"ANNEE_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"PEUT_CLOTURER_SAISIE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, 
-	"CLOTURE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, 
-	"TO_DELETE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, 
-	 CONSTRAINT "TBL_CLOTURE_REALISE__UN" UNIQUE ("INTERVENANT_ID", "TO_DELETE") ENABLE, 
+CREATE TABLE "TBL_CLOTURE_REALISE"
+   (	"ID" NUMBER(*,0) NOT NULL ENABLE,
+	"ANNEE_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"PEUT_CLOTURER_SAISIE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE,
+	"CLOTURE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE,
+	"TO_DELETE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE,
+	 CONSTRAINT "TBL_CLOTURE_REALISE__UN" UNIQUE ("INTERVENANT_ID", "TO_DELETE") ENABLE,
 	 CONSTRAINT "TBL_CLOTURE_REALISE_PK" PRIMARY KEY ("ID") ENABLE
    ) ;
 ALTER TABLE TBL_CLOTURE_REALISE NOLOGGING;
 
 -- TBL_CONTRAT
-CREATE TABLE "TBL_CONTRAT" 
-   (	"ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"ANNEE_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"PEUT_AVOIR_CONTRAT" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, 
-	"STRUCTURE_ID" NUMBER(*,0), 
-	"NBVH" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, 
-	"EDITE" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, 
-	"SIGNE" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, 
-	"TO_DELETE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, 
-	 CONSTRAINT "TBL_CONTRAT__UN" UNIQUE ("INTERVENANT_ID", "STRUCTURE_ID", "TO_DELETE") ENABLE, 
+CREATE TABLE "TBL_CONTRAT"
+   (	"ID" NUMBER(*,0) NOT NULL ENABLE,
+	"ANNEE_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"PEUT_AVOIR_CONTRAT" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE,
+	"STRUCTURE_ID" NUMBER(*,0),
+	"NBVH" FLOAT(126) DEFAULT 0 NOT NULL ENABLE,
+	"EDITE" FLOAT(126) DEFAULT 0 NOT NULL ENABLE,
+	"SIGNE" FLOAT(126) DEFAULT 0 NOT NULL ENABLE,
+	"TO_DELETE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE,
+	 CONSTRAINT "TBL_CONTRAT__UN" UNIQUE ("INTERVENANT_ID", "STRUCTURE_ID", "TO_DELETE") ENABLE,
 	 CONSTRAINT "TBL_CONTRAT_PK" PRIMARY KEY ("ID") ENABLE
    ) ;
 ALTER TABLE TBL_CONTRAT NOLOGGING;
 
 -- TBL_DEMS
-CREATE TABLE "TBL_DEMS" 
-   (	"ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"TBL_NAME" VARCHAR2(30 CHAR) NOT NULL ENABLE, 
-	"C1" VARCHAR2(30 CHAR), 
-	"V1" VARCHAR2(80 CHAR), 
-	"C2" VARCHAR2(30 CHAR), 
-	"V2" VARCHAR2(80 CHAR), 
-	"C3" VARCHAR2(30 CHAR), 
-	"V3" VARCHAR2(80 CHAR), 
-	"C4" VARCHAR2(30 CHAR), 
-	"V4" VARCHAR2(80 CHAR), 
-	"C5" VARCHAR2(30 CHAR), 
-	"V5" VARCHAR2(80 CHAR), 
+CREATE TABLE "TBL_DEMS"
+   (	"ID" NUMBER(*,0) NOT NULL ENABLE,
+	"TBL_NAME" VARCHAR2(30 CHAR) NOT NULL ENABLE,
+	"C1" VARCHAR2(30 CHAR),
+	"V1" VARCHAR2(80 CHAR),
+	"C2" VARCHAR2(30 CHAR),
+	"V2" VARCHAR2(80 CHAR),
+	"C3" VARCHAR2(30 CHAR),
+	"V3" VARCHAR2(80 CHAR),
+	"C4" VARCHAR2(30 CHAR),
+	"V4" VARCHAR2(80 CHAR),
+	"C5" VARCHAR2(30 CHAR),
+	"V5" VARCHAR2(80 CHAR),
 	"SQLCOND" VARCHAR2(3500 CHAR)
    ) ;
 ALTER TABLE TBL_DEMS NOLOGGING;
 
 -- TBL_DMEP_LIQUIDATION
-CREATE TABLE "TBL_DMEP_LIQUIDATION" 
-   (	"ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"ANNEE_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"TYPE_RESSOURCE_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"STRUCTURE_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HEURES" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, 
-	"TO_DELETE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, 
-	 CONSTRAINT "TBL_DMEP_LIQUIDATION_PK" PRIMARY KEY ("ID") ENABLE, 
+CREATE TABLE "TBL_DMEP_LIQUIDATION"
+   (	"ID" NUMBER(*,0) NOT NULL ENABLE,
+	"ANNEE_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"TYPE_RESSOURCE_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"STRUCTURE_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HEURES" FLOAT(126) DEFAULT 0 NOT NULL ENABLE,
+	"TO_DELETE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE,
+	 CONSTRAINT "TBL_DMEP_LIQUIDATION_PK" PRIMARY KEY ("ID") ENABLE,
 	 CONSTRAINT "TBL_DMEP_LIQUIDATION__UN" UNIQUE ("ANNEE_ID", "TYPE_RESSOURCE_ID", "STRUCTURE_ID", "TO_DELETE") ENABLE
    ) ;
 ALTER TABLE TBL_DMEP_LIQUIDATION NOLOGGING;
 
 -- TBL_DOSSIER
-CREATE TABLE "TBL_DOSSIER" 
-   (	"ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"ANNEE_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"PEUT_SAISIR_DOSSIER" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, 
-	"DOSSIER_ID" NUMBER(*,0), 
-	"VALIDATION_ID" NUMBER(*,0), 
-	"TO_DELETE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, 
-	 CONSTRAINT "TBL_DOSSIER__UN" UNIQUE ("INTERVENANT_ID", "TO_DELETE") ENABLE, 
+CREATE TABLE "TBL_DOSSIER"
+   (	"ID" NUMBER(*,0) NOT NULL ENABLE,
+	"ANNEE_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"PEUT_SAISIR_DOSSIER" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE,
+	"DOSSIER_ID" NUMBER(*,0),
+	"VALIDATION_ID" NUMBER(*,0),
+	"TO_DELETE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE,
+	 CONSTRAINT "TBL_DOSSIER__UN" UNIQUE ("INTERVENANT_ID", "TO_DELETE") ENABLE,
 	 CONSTRAINT "TBL_DOSSIER_PK" PRIMARY KEY ("ID") ENABLE
    ) ;
 ALTER TABLE TBL_DOSSIER NOLOGGING;
 
 -- TBL_LIEN
-CREATE TABLE "TBL_LIEN" 
-   (	"ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"LIEN_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"SCENARIO_ID" NUMBER NOT NULL ENABLE, 
-	"SCENARIO_LIEN_ID" NUMBER(*,0), 
-	"NOEUD_SUP_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"NOEUD_INF_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"STRUCTURE_ID" NUMBER(*,0), 
-	"ACTIF" NUMBER(1,0) DEFAULT 1 NOT NULL ENABLE, 
-	"POIDS" NUMBER DEFAULT 1 NOT NULL ENABLE, 
-	"CHOIX_MINIMUM" NUMBER, 
-	"CHOIX_MAXIMUM" NUMBER, 
-	"NB_CHOIX" NUMBER DEFAULT 1 NOT NULL ENABLE, 
-	"TOTAL_POIDS" FLOAT(126) DEFAULT 1 NOT NULL ENABLE, 
-	"TO_DELETE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, 
-	"MAX_POIDS" NUMBER DEFAULT 1 NOT NULL ENABLE, 
+CREATE TABLE "TBL_LIEN"
+   (	"ID" NUMBER(*,0) NOT NULL ENABLE,
+	"LIEN_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"SCENARIO_ID" NUMBER NOT NULL ENABLE,
+	"SCENARIO_LIEN_ID" NUMBER(*,0),
+	"NOEUD_SUP_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"NOEUD_INF_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"STRUCTURE_ID" NUMBER(*,0),
+	"ACTIF" NUMBER(1,0) DEFAULT 1 NOT NULL ENABLE,
+	"POIDS" NUMBER DEFAULT 1 NOT NULL ENABLE,
+	"CHOIX_MINIMUM" NUMBER,
+	"CHOIX_MAXIMUM" NUMBER,
+	"NB_CHOIX" NUMBER DEFAULT 1 NOT NULL ENABLE,
+	"TOTAL_POIDS" FLOAT(126) DEFAULT 1 NOT NULL ENABLE,
+	"TO_DELETE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE,
+	"MAX_POIDS" NUMBER DEFAULT 1 NOT NULL ENABLE,
 	 CONSTRAINT "TBL_LIEN_PK" PRIMARY KEY ("ID") ENABLE
    ) ;
 ALTER TABLE TBL_LIEN NOLOGGING;
 
 -- TBL_PAIEMENT
-CREATE TABLE "TBL_PAIEMENT" 
-   (	"ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"ANNEE_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"STRUCTURE_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"MISE_EN_PAIEMENT_ID" NUMBER(*,0), 
-	"PERIODE_PAIEMENT_ID" NUMBER(*,0), 
-	"TO_DELETE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, 
-	"HEURES_A_PAYER" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, 
-	"HEURES_A_PAYER_POND" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, 
-	"HEURES_DEMANDEES" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, 
-	"HEURES_PAYEES" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, 
-	"FORMULE_RES_SERVICE_ID" NUMBER(*,0), 
-	"FORMULE_RES_SERVICE_REF_ID" NUMBER(*,0), 
-	 CONSTRAINT "TBL_PAIEMENT_PK" PRIMARY KEY ("ID") ENABLE, 
+CREATE TABLE "TBL_PAIEMENT"
+   (	"ID" NUMBER(*,0) NOT NULL ENABLE,
+	"ANNEE_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"STRUCTURE_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"MISE_EN_PAIEMENT_ID" NUMBER(*,0),
+	"PERIODE_PAIEMENT_ID" NUMBER(*,0),
+	"TO_DELETE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE,
+	"HEURES_A_PAYER" FLOAT(126) DEFAULT 0 NOT NULL ENABLE,
+	"HEURES_A_PAYER_POND" FLOAT(126) DEFAULT 0 NOT NULL ENABLE,
+	"HEURES_DEMANDEES" FLOAT(126) DEFAULT 0 NOT NULL ENABLE,
+	"HEURES_PAYEES" FLOAT(126) DEFAULT 0 NOT NULL ENABLE,
+	"FORMULE_RES_SERVICE_ID" NUMBER(*,0),
+	"FORMULE_RES_SERVICE_REF_ID" NUMBER(*,0),
+	 CONSTRAINT "TBL_PAIEMENT_PK" PRIMARY KEY ("ID") ENABLE,
 	 CONSTRAINT "TBL_PAIEMENT__UN" UNIQUE ("INTERVENANT_ID", "TO_DELETE", "MISE_EN_PAIEMENT_ID", "FORMULE_RES_SERVICE_ID", "FORMULE_RES_SERVICE_REF_ID") ENABLE
    ) ;
 ALTER TABLE TBL_PAIEMENT NOLOGGING;
 
 -- TBL_PIECE_JOINTE
-CREATE TABLE "TBL_PIECE_JOINTE" 
-   (	"ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"ANNEE_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"TYPE_PIECE_JOINTE_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"DEMANDEE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, 
-	"FOURNIE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, 
-	"VALIDEE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, 
-	"TO_DELETE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, 
-	"HEURES_POUR_SEUIL" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, 
-	 CONSTRAINT "TBL_PIECE_JOINTE__UN" UNIQUE ("TYPE_PIECE_JOINTE_ID", "INTERVENANT_ID", "TO_DELETE") ENABLE, 
+CREATE TABLE "TBL_PIECE_JOINTE"
+   (	"ID" NUMBER(*,0) NOT NULL ENABLE,
+	"ANNEE_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"TYPE_PIECE_JOINTE_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"DEMANDEE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE,
+	"FOURNIE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE,
+	"VALIDEE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE,
+	"TO_DELETE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE,
+	"HEURES_POUR_SEUIL" FLOAT(126) DEFAULT 0 NOT NULL ENABLE,
+	 CONSTRAINT "TBL_PIECE_JOINTE__UN" UNIQUE ("TYPE_PIECE_JOINTE_ID", "INTERVENANT_ID", "TO_DELETE") ENABLE,
 	 CONSTRAINT "TBL_PIECE_JOINTE_PK" PRIMARY KEY ("ID") ENABLE
    ) ;
 ALTER TABLE TBL_PIECE_JOINTE NOLOGGING;
 
 -- TBL_PIECE_JOINTE_DEMANDE
-CREATE TABLE "TBL_PIECE_JOINTE_DEMANDE" 
-   (	"ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"ANNEE_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"TYPE_PIECE_JOINTE_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"TO_DELETE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, 
-	"HEURES_POUR_SEUIL" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, 
-	 CONSTRAINT "TBL_PIECE_JOINTE_DEMANDE__UN" UNIQUE ("TYPE_PIECE_JOINTE_ID", "INTERVENANT_ID", "TO_DELETE") ENABLE, 
+CREATE TABLE "TBL_PIECE_JOINTE_DEMANDE"
+   (	"ID" NUMBER(*,0) NOT NULL ENABLE,
+	"ANNEE_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"TYPE_PIECE_JOINTE_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"TO_DELETE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE,
+	"HEURES_POUR_SEUIL" FLOAT(126) DEFAULT 0 NOT NULL ENABLE,
+	 CONSTRAINT "TBL_PIECE_JOINTE_DEMANDE__UN" UNIQUE ("TYPE_PIECE_JOINTE_ID", "INTERVENANT_ID", "TO_DELETE") ENABLE,
 	 CONSTRAINT "TBL_PIECE_JOINTE_DEMANDE_PK" PRIMARY KEY ("ID") ENABLE
    ) ;
 ALTER TABLE TBL_PIECE_JOINTE_DEMANDE NOLOGGING;
 
 -- TBL_PIECE_JOINTE_FOURNIE
-CREATE TABLE "TBL_PIECE_JOINTE_FOURNIE" 
-   (	"ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"ANNEE_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"TYPE_PIECE_JOINTE_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"VALIDATION_ID" NUMBER(*,0), 
-	"FICHIER_ID" NUMBER(*,0), 
-	"TO_DELETE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, 
-	"PIECE_JOINTE_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	 CONSTRAINT "TBL_PIECE_JOINTE_FOURNIE_PK" PRIMARY KEY ("ID") ENABLE, 
+CREATE TABLE "TBL_PIECE_JOINTE_FOURNIE"
+   (	"ID" NUMBER(*,0) NOT NULL ENABLE,
+	"ANNEE_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"TYPE_PIECE_JOINTE_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"VALIDATION_ID" NUMBER(*,0),
+	"FICHIER_ID" NUMBER(*,0),
+	"TO_DELETE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE,
+	"PIECE_JOINTE_ID" NUMBER(*,0) NOT NULL ENABLE,
+	 CONSTRAINT "TBL_PIECE_JOINTE_FOURNIE_PK" PRIMARY KEY ("ID") ENABLE,
 	 CONSTRAINT "TBL_PIECE_JOINTE_FOURNIE__UN" UNIQUE ("TYPE_PIECE_JOINTE_ID", "INTERVENANT_ID", "VALIDATION_ID", "FICHIER_ID") ENABLE
    ) ;
 ALTER TABLE TBL_PIECE_JOINTE_FOURNIE NOLOGGING;
 
 -- TBL_SERVICE
-CREATE TABLE "TBL_SERVICE" 
-   (	"ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"ANNEE_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"PEUT_SAISIR_SERVICE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, 
-	"TYPE_VOLUME_HORAIRE_ID" NUMBER(*,0), 
-	"STRUCTURE_ID" NUMBER(*,0), 
-	"NBVH" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, 
-	"VALIDE" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, 
-	"TO_DELETE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, 
-	"ELEMENT_PEDAGOGIQUE_ID" NUMBER(*,0), 
-	"ELEMENT_PEDAGOGIQUE_PERIODE_ID" NUMBER(*,0), 
-	"ETAPE_ID" NUMBER(*,0), 
-	"ELEMENT_PEDAGOGIQUE_HISTO" NUMBER(1,0) DEFAULT 1 NOT NULL ENABLE, 
-	"ETAPE_HISTO" NUMBER(1,0) DEFAULT 1 NOT NULL ENABLE, 
-	"HAS_HEURES_MAUVAISE_PERIODE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, 
-	"SERVICE_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"INTERVENANT_STRUCTURE_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"TYPE_INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"TYPE_INTERVENANT_CODE" VARCHAR2(5 CHAR) NOT NULL ENABLE, 
-	"TYPE_VOLUME_HORAIRE_CODE" VARCHAR2(15 CHAR), 
-	"HEURES" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, 
-	 CONSTRAINT "TBL_SERVICE__UN" UNIQUE ("SERVICE_ID", "TYPE_VOLUME_HORAIRE_ID", "TO_DELETE") ENABLE, 
+CREATE TABLE "TBL_SERVICE"
+   (	"ID" NUMBER(*,0) NOT NULL ENABLE,
+	"ANNEE_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"PEUT_SAISIR_SERVICE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE,
+	"TYPE_VOLUME_HORAIRE_ID" NUMBER(*,0),
+	"STRUCTURE_ID" NUMBER(*,0),
+	"NBVH" FLOAT(126) DEFAULT 0 NOT NULL ENABLE,
+	"VALIDE" FLOAT(126) DEFAULT 0 NOT NULL ENABLE,
+	"TO_DELETE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE,
+	"ELEMENT_PEDAGOGIQUE_ID" NUMBER(*,0),
+	"ELEMENT_PEDAGOGIQUE_PERIODE_ID" NUMBER(*,0),
+	"ETAPE_ID" NUMBER(*,0),
+	"ELEMENT_PEDAGOGIQUE_HISTO" NUMBER(1,0) DEFAULT 1 NOT NULL ENABLE,
+	"ETAPE_HISTO" NUMBER(1,0) DEFAULT 1 NOT NULL ENABLE,
+	"HAS_HEURES_MAUVAISE_PERIODE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE,
+	"SERVICE_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"INTERVENANT_STRUCTURE_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"TYPE_INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"TYPE_INTERVENANT_CODE" VARCHAR2(5 CHAR) NOT NULL ENABLE,
+	"TYPE_VOLUME_HORAIRE_CODE" VARCHAR2(15 CHAR),
+	"HEURES" FLOAT(126) DEFAULT 0 NOT NULL ENABLE,
+	 CONSTRAINT "TBL_SERVICE__UN" UNIQUE ("SERVICE_ID", "TYPE_VOLUME_HORAIRE_ID", "TO_DELETE") ENABLE,
 	 CONSTRAINT "TBL_SERVICE_PK" PRIMARY KEY ("ID") ENABLE
    ) ;
 ALTER TABLE TBL_SERVICE NOLOGGING;
 
 -- TBL_SERVICE_REFERENTIEL
-CREATE TABLE "TBL_SERVICE_REFERENTIEL" 
-   (	"ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"ANNEE_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"PEUT_SAISIR_SERVICE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, 
-	"TYPE_VOLUME_HORAIRE_ID" NUMBER(*,0), 
-	"STRUCTURE_ID" NUMBER(*,0), 
-	"NBVH" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, 
-	"VALIDE" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, 
-	"TO_DELETE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, 
-	 CONSTRAINT "TBL_SERVICE_REFERENTIEL_PK" PRIMARY KEY ("ID") ENABLE, 
+CREATE TABLE "TBL_SERVICE_REFERENTIEL"
+   (	"ID" NUMBER(*,0) NOT NULL ENABLE,
+	"ANNEE_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"PEUT_SAISIR_SERVICE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE,
+	"TYPE_VOLUME_HORAIRE_ID" NUMBER(*,0),
+	"STRUCTURE_ID" NUMBER(*,0),
+	"NBVH" FLOAT(126) DEFAULT 0 NOT NULL ENABLE,
+	"VALIDE" FLOAT(126) DEFAULT 0 NOT NULL ENABLE,
+	"TO_DELETE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE,
+	 CONSTRAINT "TBL_SERVICE_REFERENTIEL_PK" PRIMARY KEY ("ID") ENABLE,
 	 CONSTRAINT "TBL_SERVICE_REFERENTIEL__UN" UNIQUE ("INTERVENANT_ID", "TYPE_VOLUME_HORAIRE_ID", "STRUCTURE_ID", "TO_DELETE") ENABLE
    ) ;
 ALTER TABLE TBL_SERVICE_REFERENTIEL NOLOGGING;
 
 -- TBL_SERVICE_SAISIE
-CREATE TABLE "TBL_SERVICE_SAISIE" 
-   (	"ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"ANNEE_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"PEUT_SAISIR_SERVICE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, 
-	"PEUT_SAISIR_REFERENTIEL" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, 
-	"HEURES_SERVICE_PREV" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, 
-	"HEURES_REFERENTIEL_PREV" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, 
-	"HEURES_SERVICE_REAL" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, 
-	"HEURES_REFERENTIEL_REAL" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, 
-	"TO_DELETE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, 
-	 CONSTRAINT "TBL_SERVICE_SAISIE__UN" UNIQUE ("INTERVENANT_ID", "TO_DELETE") ENABLE, 
+CREATE TABLE "TBL_SERVICE_SAISIE"
+   (	"ID" NUMBER(*,0) NOT NULL ENABLE,
+	"ANNEE_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"PEUT_SAISIR_SERVICE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE,
+	"PEUT_SAISIR_REFERENTIEL" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE,
+	"HEURES_SERVICE_PREV" FLOAT(126) DEFAULT 0 NOT NULL ENABLE,
+	"HEURES_REFERENTIEL_PREV" FLOAT(126) DEFAULT 0 NOT NULL ENABLE,
+	"HEURES_SERVICE_REAL" FLOAT(126) DEFAULT 0 NOT NULL ENABLE,
+	"HEURES_REFERENTIEL_REAL" FLOAT(126) DEFAULT 0 NOT NULL ENABLE,
+	"TO_DELETE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE,
+	 CONSTRAINT "TBL_SERVICE_SAISIE__UN" UNIQUE ("INTERVENANT_ID", "TO_DELETE") ENABLE,
 	 CONSTRAINT "TBL_SERVICE_SAISIE_PK" PRIMARY KEY ("ID") ENABLE
    ) ;
 ALTER TABLE TBL_SERVICE_SAISIE NOLOGGING;
 
 -- TBL_VALIDATION_ENSEIGNEMENT
-CREATE TABLE "TBL_VALIDATION_ENSEIGNEMENT" 
-   (	"ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"ANNEE_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"STRUCTURE_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"TYPE_VOLUME_HORAIRE_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"SERVICE_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"VALIDATION_ID" NUMBER(*,0), 
-	"TO_DELETE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, 
-	"VOLUME_HORAIRE_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	 CONSTRAINT "TBL_VALIDATION_ENSEIGNEMENT_PK" PRIMARY KEY ("ID") ENABLE, 
+CREATE TABLE "TBL_VALIDATION_ENSEIGNEMENT"
+   (	"ID" NUMBER(*,0) NOT NULL ENABLE,
+	"ANNEE_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"STRUCTURE_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"TYPE_VOLUME_HORAIRE_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"SERVICE_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"VALIDATION_ID" NUMBER(*,0),
+	"TO_DELETE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE,
+	"VOLUME_HORAIRE_ID" NUMBER(*,0) NOT NULL ENABLE,
+	 CONSTRAINT "TBL_VALIDATION_ENSEIGNEMENT_PK" PRIMARY KEY ("ID") ENABLE,
 	 CONSTRAINT "TBL_VALIDATION_ENSEIGNEMENT_UN" UNIQUE ("INTERVENANT_ID", "STRUCTURE_ID", "TYPE_VOLUME_HORAIRE_ID", "SERVICE_ID", "VOLUME_HORAIRE_ID", "VALIDATION_ID", "TO_DELETE") ENABLE
    ) ;
 ALTER TABLE TBL_VALIDATION_ENSEIGNEMENT NOLOGGING;
 
 -- TBL_VALIDATION_REFERENTIEL
-CREATE TABLE "TBL_VALIDATION_REFERENTIEL" 
-   (	"ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"ANNEE_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"STRUCTURE_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"TYPE_VOLUME_HORAIRE_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"SERVICE_REFERENTIEL_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"VALIDATION_ID" NUMBER(*,0), 
-	"TO_DELETE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, 
-	"VOLUME_HORAIRE_REF_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	 CONSTRAINT "TBL_VALIDATION_REFERENTIEL_PK" PRIMARY KEY ("ID") ENABLE, 
+CREATE TABLE "TBL_VALIDATION_REFERENTIEL"
+   (	"ID" NUMBER(*,0) NOT NULL ENABLE,
+	"ANNEE_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"STRUCTURE_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"TYPE_VOLUME_HORAIRE_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"SERVICE_REFERENTIEL_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"VALIDATION_ID" NUMBER(*,0),
+	"TO_DELETE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE,
+	"VOLUME_HORAIRE_REF_ID" NUMBER(*,0) NOT NULL ENABLE,
+	 CONSTRAINT "TBL_VALIDATION_REFERENTIEL_PK" PRIMARY KEY ("ID") ENABLE,
 	 CONSTRAINT "TBL_VALIDATION_REFERENTIEL__UN" UNIQUE ("INTERVENANT_ID", "STRUCTURE_ID", "TYPE_VOLUME_HORAIRE_ID", "SERVICE_REFERENTIEL_ID", "VOLUME_HORAIRE_REF_ID", "VALIDATION_ID", "TO_DELETE") ENABLE
    ) ;
 ALTER TABLE TBL_VALIDATION_REFERENTIEL NOLOGGING;
 
 -- TBL_WORKFLOW
-CREATE TABLE "TBL_WORKFLOW" 
-   (	"ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"ETAPE_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"STRUCTURE_ID" NUMBER(*,0) DEFAULT null, 
-	"ATTEIGNABLE" NUMBER(1,0) DEFAULT 1 NOT NULL ENABLE, 
-	"TO_DELETE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, 
-	"REALISATION" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, 
-	"OBJECTIF" FLOAT(126) DEFAULT 1 NOT NULL ENABLE, 
-	"ANNEE_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"TYPE_INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"TYPE_INTERVENANT_CODE" VARCHAR2(5 CHAR) NOT NULL ENABLE, 
-	"ETAPE_CODE" VARCHAR2(50 CHAR) NOT NULL ENABLE, 
-	"STATUT_INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE, 
+CREATE TABLE "TBL_WORKFLOW"
+   (	"ID" NUMBER(*,0) NOT NULL ENABLE,
+	"INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"ETAPE_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"STRUCTURE_ID" NUMBER(*,0) DEFAULT null,
+	"ATTEIGNABLE" NUMBER(1,0) DEFAULT 1 NOT NULL ENABLE,
+	"TO_DELETE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE,
+	"REALISATION" FLOAT(126) DEFAULT 0 NOT NULL ENABLE,
+	"OBJECTIF" FLOAT(126) DEFAULT 1 NOT NULL ENABLE,
+	"ANNEE_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"TYPE_INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"TYPE_INTERVENANT_CODE" VARCHAR2(5 CHAR) NOT NULL ENABLE,
+	"ETAPE_CODE" VARCHAR2(50 CHAR) NOT NULL ENABLE,
+	"STATUT_INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE,
 	 CONSTRAINT "TBL_WORKFLOW_PK" PRIMARY KEY ("ID") ENABLE
    ) ;
 ALTER TABLE TBL_WORKFLOW NOLOGGING;
 
 -- TEST_BUFFER
-CREATE TABLE "TEST_BUFFER" 
-   (	"ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"TABLE_NAME" VARCHAR2(30 CHAR) NOT NULL ENABLE, 
-	"DATA_ID" NUMBER(*,0) NOT NULL ENABLE, 
+CREATE TABLE "TEST_BUFFER"
+   (	"ID" NUMBER(*,0) NOT NULL ENABLE,
+	"TABLE_NAME" VARCHAR2(30 CHAR) NOT NULL ENABLE,
+	"DATA_ID" NUMBER(*,0) NOT NULL ENABLE,
 	 CONSTRAINT "TEST_BUFFER_PK" PRIMARY KEY ("ID") ENABLE
    ) ;
 
 -- TMP_SCENARIO_NOEUD_EFFECTIF
-CREATE GLOBAL TEMPORARY TABLE "TMP_SCENARIO_NOEUD_EFFECTIF" 
-   (	"SCENARIO_NOEUD_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"TYPE_HEURES_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"ETAPE_ID" NUMBER(*,0) NOT NULL ENABLE, 
+CREATE GLOBAL TEMPORARY TABLE "TMP_SCENARIO_NOEUD_EFFECTIF"
+   (	"SCENARIO_NOEUD_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"TYPE_HEURES_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"ETAPE_ID" NUMBER(*,0) NOT NULL ENABLE,
 	"EFFECTIF" FLOAT(126)
    ) ON COMMIT DELETE ROWS ;
 
 -- TYPE_AGREMENT
-CREATE TABLE "TYPE_AGREMENT" 
-   (	"ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"CODE" VARCHAR2(60 CHAR) NOT NULL ENABLE, 
-	"LIBELLE" VARCHAR2(256 CHAR) NOT NULL ENABLE, 
-	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_DESTRUCTION" DATE, 
-	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0), 
-	 CONSTRAINT "TYPE_AGREMENT_PK" PRIMARY KEY ("ID") ENABLE, 
+CREATE TABLE "TYPE_AGREMENT"
+   (	"ID" NUMBER(*,0) NOT NULL ENABLE,
+	"CODE" VARCHAR2(60 CHAR) NOT NULL ENABLE,
+	"LIBELLE" VARCHAR2(256 CHAR) NOT NULL ENABLE,
+	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_DESTRUCTION" DATE,
+	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0),
+	 CONSTRAINT "TYPE_AGREMENT_PK" PRIMARY KEY ("ID") ENABLE,
 	 CONSTRAINT "TYPE_AGREMENT__UN" UNIQUE ("CODE") ENABLE
    ) ;
 
 -- TYPE_AGREMENT_STATUT
-CREATE TABLE "TYPE_AGREMENT_STATUT" 
-   (	"ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"TYPE_AGREMENT_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"STATUT_INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"OBLIGATOIRE" NUMBER(*,0) NOT NULL ENABLE, 
-	"PREMIER_RECRUTEMENT" NUMBER(1,0) DEFAULT NULL, 
-	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_DESTRUCTION" DATE, 
-	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0), 
-	 CONSTRAINT "TYPE_AGREMENT_STATUT_PK" PRIMARY KEY ("ID") ENABLE, 
+CREATE TABLE "TYPE_AGREMENT_STATUT"
+   (	"ID" NUMBER(*,0) NOT NULL ENABLE,
+	"TYPE_AGREMENT_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"STATUT_INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"OBLIGATOIRE" NUMBER(*,0) NOT NULL ENABLE,
+	"PREMIER_RECRUTEMENT" NUMBER(1,0) DEFAULT NULL,
+	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_DESTRUCTION" DATE,
+	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0),
+	 CONSTRAINT "TYPE_AGREMENT_STATUT_PK" PRIMARY KEY ("ID") ENABLE,
 	 CONSTRAINT "TYPE_AGREMENT_STATUT__UN" UNIQUE ("TYPE_AGREMENT_ID", "STATUT_INTERVENANT_ID", "PREMIER_RECRUTEMENT") ENABLE
    ) ;
 
 -- TYPE_CONTRAT
-CREATE TABLE "TYPE_CONTRAT" 
-   (	"ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"CODE" VARCHAR2(15 CHAR) NOT NULL ENABLE, 
-	"LIBELLE" VARCHAR2(60 CHAR) NOT NULL ENABLE, 
-	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_DESTRUCTION" DATE, 
-	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0), 
+CREATE TABLE "TYPE_CONTRAT"
+   (	"ID" NUMBER(*,0) NOT NULL ENABLE,
+	"CODE" VARCHAR2(15 CHAR) NOT NULL ENABLE,
+	"LIBELLE" VARCHAR2(60 CHAR) NOT NULL ENABLE,
+	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_DESTRUCTION" DATE,
+	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0),
 	 CONSTRAINT "TYPE_CONTRAT_PK" PRIMARY KEY ("ID") ENABLE
    ) ;
 
 -- TYPE_DOTATION
-CREATE TABLE "TYPE_DOTATION" 
-   (	"ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"LIBELLE" VARCHAR2(200 CHAR) NOT NULL ENABLE, 
-	"SOURCE_CODE" VARCHAR2(100 CHAR), 
-	"SOURCE_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_DESTRUCTION" DATE, 
-	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0), 
-	"TYPE_RESSOURCE_ID" NUMBER(*,0) NOT NULL ENABLE, 
+CREATE TABLE "TYPE_DOTATION"
+   (	"ID" NUMBER(*,0) NOT NULL ENABLE,
+	"LIBELLE" VARCHAR2(200 CHAR) NOT NULL ENABLE,
+	"SOURCE_CODE" VARCHAR2(100 CHAR),
+	"SOURCE_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_DESTRUCTION" DATE,
+	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0),
+	"TYPE_RESSOURCE_ID" NUMBER(*,0) NOT NULL ENABLE,
 	 CONSTRAINT "TYPE_DOTATION_PK" PRIMARY KEY ("ID") ENABLE
    ) ;
 
 -- TYPE_FORMATION
-CREATE TABLE "TYPE_FORMATION" 
-   (	"ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"LIBELLE_LONG" VARCHAR2(80 CHAR) NOT NULL ENABLE, 
-	"LIBELLE_COURT" VARCHAR2(15 CHAR) NOT NULL ENABLE, 
-	"GROUPE_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"SOURCE_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"SOURCE_CODE" VARCHAR2(100 CHAR), 
-	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_DESTRUCTION" DATE, 
-	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0), 
-	 CONSTRAINT "TYPE_FORMATION__UN" UNIQUE ("SOURCE_CODE") ENABLE, 
+CREATE TABLE "TYPE_FORMATION"
+   (	"ID" NUMBER(*,0) NOT NULL ENABLE,
+	"LIBELLE_LONG" VARCHAR2(80 CHAR) NOT NULL ENABLE,
+	"LIBELLE_COURT" VARCHAR2(15 CHAR) NOT NULL ENABLE,
+	"GROUPE_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"SOURCE_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"SOURCE_CODE" VARCHAR2(100 CHAR),
+	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_DESTRUCTION" DATE,
+	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0),
+	 CONSTRAINT "TYPE_FORMATION__UN" UNIQUE ("SOURCE_CODE") ENABLE,
 	 CONSTRAINT "TYPE_FORMATION_PK" PRIMARY KEY ("ID") ENABLE
    ) ;
 
 -- TYPE_HEURES
-CREATE TABLE "TYPE_HEURES" 
-   (	"ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"CODE" VARCHAR2(20 CHAR) NOT NULL ENABLE, 
-	"LIBELLE_COURT" VARCHAR2(15 CHAR) NOT NULL ENABLE, 
-	"LIBELLE_LONG" VARCHAR2(100 CHAR) NOT NULL ENABLE, 
-	"ORDRE" NUMBER(*,0) NOT NULL ENABLE, 
-	"TYPE_HEURES_ELEMENT_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"ELIGIBLE_CENTRE_COUT_EP" NUMBER(1,0) DEFAULT 1 NOT NULL ENABLE, 
-	"ELIGIBLE_EXTRACTION_PAIE" NUMBER(1,0) DEFAULT 1 NOT NULL ENABLE, 
-	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_DESTRUCTION" DATE, 
-	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0), 
-	"ENSEIGNEMENT" NUMBER(1,0) DEFAULT 1 NOT NULL ENABLE, 
-	 CONSTRAINT "TYPE_HEURES_PK" PRIMARY KEY ("ID") ENABLE, 
+CREATE TABLE "TYPE_HEURES"
+   (	"ID" NUMBER(*,0) NOT NULL ENABLE,
+	"CODE" VARCHAR2(20 CHAR) NOT NULL ENABLE,
+	"LIBELLE_COURT" VARCHAR2(15 CHAR) NOT NULL ENABLE,
+	"LIBELLE_LONG" VARCHAR2(100 CHAR) NOT NULL ENABLE,
+	"ORDRE" NUMBER(*,0) NOT NULL ENABLE,
+	"TYPE_HEURES_ELEMENT_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"ELIGIBLE_CENTRE_COUT_EP" NUMBER(1,0) DEFAULT 1 NOT NULL ENABLE,
+	"ELIGIBLE_EXTRACTION_PAIE" NUMBER(1,0) DEFAULT 1 NOT NULL ENABLE,
+	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_DESTRUCTION" DATE,
+	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0),
+	"ENSEIGNEMENT" NUMBER(1,0) DEFAULT 1 NOT NULL ENABLE,
+	 CONSTRAINT "TYPE_HEURES_PK" PRIMARY KEY ("ID") ENABLE,
 	 CONSTRAINT "TYPE_HEURES_UN" UNIQUE ("CODE") ENABLE
    ) ;
 
 -- TYPE_INTERVENANT
-CREATE TABLE "TYPE_INTERVENANT" 
-   (	"ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"CODE" VARCHAR2(1 CHAR) NOT NULL ENABLE, 
-	"LIBELLE" VARCHAR2(50 CHAR) NOT NULL ENABLE, 
-	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_DESTRUCTION" DATE, 
-	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0), 
-	 CONSTRAINT "TYPE_INTERVENANT_CODE_UN" UNIQUE ("CODE") ENABLE, 
+CREATE TABLE "TYPE_INTERVENANT"
+   (	"ID" NUMBER(*,0) NOT NULL ENABLE,
+	"CODE" VARCHAR2(1 CHAR) NOT NULL ENABLE,
+	"LIBELLE" VARCHAR2(50 CHAR) NOT NULL ENABLE,
+	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_DESTRUCTION" DATE,
+	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0),
+	 CONSTRAINT "TYPE_INTERVENANT_CODE_UN" UNIQUE ("CODE") ENABLE,
 	 CONSTRAINT "TYPE_INTERVENANT_PK" PRIMARY KEY ("ID") ENABLE
    ) ;
 
 -- TYPE_INTERVENTION
-CREATE TABLE "TYPE_INTERVENTION" 
-   (	"ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"CODE" VARCHAR2(10 CHAR) NOT NULL ENABLE, 
-	"LIBELLE" VARCHAR2(60 CHAR) NOT NULL ENABLE, 
-	"ORDRE" NUMBER(*,0) NOT NULL ENABLE, 
-	"TAUX_HETD_SERVICE" FLOAT(126) DEFAULT 1 NOT NULL ENABLE, 
-	"TAUX_HETD_COMPLEMENTAIRE" FLOAT(126) DEFAULT 1 NOT NULL ENABLE, 
-	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_DESTRUCTION" DATE, 
-	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0), 
-	"VISIBLE" NUMBER(1,0) NOT NULL ENABLE, 
-	"ANNEE_DEBUT_ID" NUMBER(*,0), 
-	"ANNEE_FIN_ID" NUMBER(*,0), 
-	"REGLE_FOAD" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, 
-	"REGLE_FC" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, 
-	"TYPE_INTERVENTION_MAQUETTE_ID" NUMBER(*,0), 
+CREATE TABLE "TYPE_INTERVENTION"
+   (	"ID" NUMBER(*,0) NOT NULL ENABLE,
+	"CODE" VARCHAR2(10 CHAR) NOT NULL ENABLE,
+	"LIBELLE" VARCHAR2(60 CHAR) NOT NULL ENABLE,
+	"ORDRE" NUMBER(*,0) NOT NULL ENABLE,
+	"TAUX_HETD_SERVICE" FLOAT(126) DEFAULT 1 NOT NULL ENABLE,
+	"TAUX_HETD_COMPLEMENTAIRE" FLOAT(126) DEFAULT 1 NOT NULL ENABLE,
+	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_DESTRUCTION" DATE,
+	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0),
+	"VISIBLE" NUMBER(1,0) NOT NULL ENABLE,
+	"ANNEE_DEBUT_ID" NUMBER(*,0),
+	"ANNEE_FIN_ID" NUMBER(*,0),
+	"REGLE_FOAD" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE,
+	"REGLE_FC" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE,
+	"TYPE_INTERVENTION_MAQUETTE_ID" NUMBER(*,0),
 	 CONSTRAINT "TYPE_INTERVENTION_PK" PRIMARY KEY ("ID") ENABLE
    ) ;
 
 -- TYPE_INTERVENTION_EP
-CREATE TABLE "TYPE_INTERVENTION_EP" 
-   (	"ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"TYPE_INTERVENTION_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"ELEMENT_PEDAGOGIQUE_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_DESTRUCTION" DATE, 
-	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0), 
-	"SOURCE_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"SOURCE_CODE" VARCHAR2(100 CHAR), 
+CREATE TABLE "TYPE_INTERVENTION_EP"
+   (	"ID" NUMBER(*,0) NOT NULL ENABLE,
+	"TYPE_INTERVENTION_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"ELEMENT_PEDAGOGIQUE_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_DESTRUCTION" DATE,
+	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0),
+	"SOURCE_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"SOURCE_CODE" VARCHAR2(100 CHAR),
 	 CONSTRAINT "TYPE_INTERVENTION_EP_PK" PRIMARY KEY ("ID") ENABLE
    ) ;
 
 -- TYPE_INTERVENTION_STRUCTURE
-CREATE TABLE "TYPE_INTERVENTION_STRUCTURE" 
-   (	"ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"TYPE_INTERVENTION_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"STRUCTURE_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"VISIBLE" NUMBER(1,0) NOT NULL ENABLE, 
-	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_DESTRUCTION" DATE, 
-	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0), 
-	"ANNEE_DEBUT_ID" NUMBER(*,0), 
-	"ANNEE_FIN_ID" NUMBER(*,0), 
+CREATE TABLE "TYPE_INTERVENTION_STRUCTURE"
+   (	"ID" NUMBER(*,0) NOT NULL ENABLE,
+	"TYPE_INTERVENTION_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"STRUCTURE_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"VISIBLE" NUMBER(1,0) NOT NULL ENABLE,
+	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_DESTRUCTION" DATE,
+	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0),
+	"ANNEE_DEBUT_ID" NUMBER(*,0),
+	"ANNEE_FIN_ID" NUMBER(*,0),
 	 CONSTRAINT "TYPE_INTERVENTION_STRUCTURE_PK" PRIMARY KEY ("ID") ENABLE
    ) ;
 
 -- TYPE_MODULATEUR
-CREATE TABLE "TYPE_MODULATEUR" 
-   (	"ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"CODE" VARCHAR2(10 CHAR) NOT NULL ENABLE, 
-	"LIBELLE" VARCHAR2(50 CHAR) NOT NULL ENABLE, 
-	"PUBLIQUE" NUMBER(1,0) NOT NULL ENABLE, 
-	"OBLIGATOIRE" NUMBER(1,0) NOT NULL ENABLE, 
-	"SAISIE_PAR_ENSEIGNANT" NUMBER(1,0) NOT NULL ENABLE, 
-	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_DESTRUCTION" DATE, 
-	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0), 
+CREATE TABLE "TYPE_MODULATEUR"
+   (	"ID" NUMBER(*,0) NOT NULL ENABLE,
+	"CODE" VARCHAR2(10 CHAR) NOT NULL ENABLE,
+	"LIBELLE" VARCHAR2(50 CHAR) NOT NULL ENABLE,
+	"PUBLIQUE" NUMBER(1,0) NOT NULL ENABLE,
+	"OBLIGATOIRE" NUMBER(1,0) NOT NULL ENABLE,
+	"SAISIE_PAR_ENSEIGNANT" NUMBER(1,0) NOT NULL ENABLE,
+	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_DESTRUCTION" DATE,
+	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0),
 	 CONSTRAINT "TYPE_MODULATEUR_PK" PRIMARY KEY ("ID") ENABLE
    ) ;
 
 -- TYPE_MODULATEUR_EP
-CREATE TABLE "TYPE_MODULATEUR_EP" 
-   (	"ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"TYPE_MODULATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"ELEMENT_PEDAGOGIQUE_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"SOURCE_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"SOURCE_CODE" VARCHAR2(100 CHAR) NOT NULL ENABLE, 
-	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_DESTRUCTION" DATE, 
-	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0), 
-	 CONSTRAINT "TYPE_MODULATEUR_EP_PK" PRIMARY KEY ("ID") ENABLE, 
-	 CONSTRAINT "TYPE_MODULATEUR_EP__UN" UNIQUE ("SOURCE_CODE") ENABLE, 
+CREATE TABLE "TYPE_MODULATEUR_EP"
+   (	"ID" NUMBER(*,0) NOT NULL ENABLE,
+	"TYPE_MODULATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"ELEMENT_PEDAGOGIQUE_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"SOURCE_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"SOURCE_CODE" VARCHAR2(100 CHAR) NOT NULL ENABLE,
+	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_DESTRUCTION" DATE,
+	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0),
+	 CONSTRAINT "TYPE_MODULATEUR_EP_PK" PRIMARY KEY ("ID") ENABLE,
+	 CONSTRAINT "TYPE_MODULATEUR_EP__UN" UNIQUE ("SOURCE_CODE") ENABLE,
 	 CONSTRAINT "TYPE_MODULATEUR_EP__UNV1" UNIQUE ("TYPE_MODULATEUR_ID", "ELEMENT_PEDAGOGIQUE_ID") ENABLE
    ) ;
 
 -- TYPE_MODULATEUR_STRUCTURE
-CREATE TABLE "TYPE_MODULATEUR_STRUCTURE" 
-   (	"ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"TYPE_MODULATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"STRUCTURE_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_DESTRUCTION" DATE, 
-	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0), 
-	"ANNEE_DEBUT_ID" NUMBER(*,0), 
-	"ANNEE_FIN_ID" NUMBER(*,0), 
-	 CONSTRAINT "TYPE_MODULATEUR_STRUCTURE_UN" UNIQUE ("TYPE_MODULATEUR_ID", "STRUCTURE_ID") ENABLE, 
+CREATE TABLE "TYPE_MODULATEUR_STRUCTURE"
+   (	"ID" NUMBER(*,0) NOT NULL ENABLE,
+	"TYPE_MODULATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"STRUCTURE_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_DESTRUCTION" DATE,
+	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0),
+	"ANNEE_DEBUT_ID" NUMBER(*,0),
+	"ANNEE_FIN_ID" NUMBER(*,0),
+	 CONSTRAINT "TYPE_MODULATEUR_STRUCTURE_UN" UNIQUE ("TYPE_MODULATEUR_ID", "STRUCTURE_ID") ENABLE,
 	 CONSTRAINT "TYPE_MODULATEUR_STRUCTURE_PK" PRIMARY KEY ("ID") ENABLE
    ) ;
 
 -- TYPE_PIECE_JOINTE
-CREATE TABLE "TYPE_PIECE_JOINTE" 
-   (	"ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"CODE" VARCHAR2(64 CHAR) NOT NULL ENABLE, 
-	"LIBELLE" VARCHAR2(150 CHAR) NOT NULL ENABLE, 
-	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_DESTRUCTION" DATE, 
-	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0), 
-	"URL_MODELE_DOC" VARCHAR2(256 CHAR), 
-	"ORDRE" NUMBER DEFAULT 1 NOT NULL ENABLE, 
+CREATE TABLE "TYPE_PIECE_JOINTE"
+   (	"ID" NUMBER(*,0) NOT NULL ENABLE,
+	"CODE" VARCHAR2(64 CHAR) NOT NULL ENABLE,
+	"LIBELLE" VARCHAR2(150 CHAR) NOT NULL ENABLE,
+	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_DESTRUCTION" DATE,
+	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0),
+	"URL_MODELE_DOC" VARCHAR2(256 CHAR),
+	"ORDRE" NUMBER DEFAULT 1 NOT NULL ENABLE,
 	 CONSTRAINT "TYPE_PIECE_JOINTE_PK" PRIMARY KEY ("ID") ENABLE
    ) ;
 
 -- TYPE_PIECE_JOINTE_STATUT
-CREATE TABLE "TYPE_PIECE_JOINTE_STATUT" 
-   (	"ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"TYPE_PIECE_JOINTE_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"STATUT_INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"OBLIGATOIRE" NUMBER(*,0) NOT NULL ENABLE, 
-	"SEUIL_HETD" NUMBER(*,0), 
-	"PREMIER_RECRUTEMENT" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, 
-	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_DESTRUCTION" DATE, 
-	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0), 
-	"ANNEE_DEBUT_ID" NUMBER(*,0), 
-	"ANNEE_FIN_ID" NUMBER(*,0), 
-	"FC" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, 
-	"CHANGEMENT_RIB" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, 
+CREATE TABLE "TYPE_PIECE_JOINTE_STATUT"
+   (	"ID" NUMBER(*,0) NOT NULL ENABLE,
+	"TYPE_PIECE_JOINTE_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"STATUT_INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"OBLIGATOIRE" NUMBER(*,0) NOT NULL ENABLE,
+	"SEUIL_HETD" NUMBER(*,0),
+	"PREMIER_RECRUTEMENT" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE,
+	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_DESTRUCTION" DATE,
+	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0),
+	"ANNEE_DEBUT_ID" NUMBER(*,0),
+	"ANNEE_FIN_ID" NUMBER(*,0),
+	"FC" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE,
+	"CHANGEMENT_RIB" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE,
 	 CONSTRAINT "TYPE_PIECE_JOINTE_STATUT_PK" PRIMARY KEY ("ID") ENABLE
    ) ;
 
 -- TYPE_RESSOURCE
-CREATE TABLE "TYPE_RESSOURCE" 
-   (	"ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"CODE" VARCHAR2(50 CHAR) NOT NULL ENABLE, 
-	"LIBELLE" VARCHAR2(200 CHAR) NOT NULL ENABLE, 
-	"FI" NUMBER(1,0) NOT NULL ENABLE, 
-	"FA" NUMBER(1,0) NOT NULL ENABLE, 
-	"FC" NUMBER(1,0) NOT NULL ENABLE, 
-	"FC_MAJOREES" NUMBER(1,0) NOT NULL ENABLE, 
-	"REFERENTIEL" NUMBER(1,0) NOT NULL ENABLE, 
-	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_DESTRUCTION" DATE, 
-	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0), 
-	"ETABLISSEMENT" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, 
+CREATE TABLE "TYPE_RESSOURCE"
+   (	"ID" NUMBER(*,0) NOT NULL ENABLE,
+	"CODE" VARCHAR2(50 CHAR) NOT NULL ENABLE,
+	"LIBELLE" VARCHAR2(200 CHAR) NOT NULL ENABLE,
+	"FI" NUMBER(1,0) NOT NULL ENABLE,
+	"FA" NUMBER(1,0) NOT NULL ENABLE,
+	"FC" NUMBER(1,0) NOT NULL ENABLE,
+	"FC_MAJOREES" NUMBER(1,0) NOT NULL ENABLE,
+	"REFERENTIEL" NUMBER(1,0) NOT NULL ENABLE,
+	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_DESTRUCTION" DATE,
+	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0),
+	"ETABLISSEMENT" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE,
 	 CONSTRAINT "TYPE_RESSOURCE_PK" PRIMARY KEY ("ID") ENABLE
    ) ;
 
 -- TYPE_VALIDATION
-CREATE TABLE "TYPE_VALIDATION" 
-   (	"ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"CODE" VARCHAR2(25 CHAR) NOT NULL ENABLE, 
-	"LIBELLE" VARCHAR2(60 CHAR), 
+CREATE TABLE "TYPE_VALIDATION"
+   (	"ID" NUMBER(*,0) NOT NULL ENABLE,
+	"CODE" VARCHAR2(25 CHAR) NOT NULL ENABLE,
+	"LIBELLE" VARCHAR2(60 CHAR),
 	 CONSTRAINT "TYPE_VALIDATION_PK" PRIMARY KEY ("ID") ENABLE
    ) ;
 
 -- TYPE_VOLUME_HORAIRE
-CREATE TABLE "TYPE_VOLUME_HORAIRE" 
-   (	"ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"CODE" VARCHAR2(15 CHAR) NOT NULL ENABLE, 
-	"LIBELLE" VARCHAR2(60 CHAR) NOT NULL ENABLE, 
-	"ORDRE" NUMBER NOT NULL ENABLE, 
-	 CONSTRAINT "TYPE_VOLUME_HORAIRE_PK" PRIMARY KEY ("ID") ENABLE, 
+CREATE TABLE "TYPE_VOLUME_HORAIRE"
+   (	"ID" NUMBER(*,0) NOT NULL ENABLE,
+	"CODE" VARCHAR2(15 CHAR) NOT NULL ENABLE,
+	"LIBELLE" VARCHAR2(60 CHAR) NOT NULL ENABLE,
+	"ORDRE" NUMBER NOT NULL ENABLE,
+	 CONSTRAINT "TYPE_VOLUME_HORAIRE_PK" PRIMARY KEY ("ID") ENABLE,
 	 CONSTRAINT "TYPE_VOLUME_HORAIRE__UN" UNIQUE ("CODE") ENABLE
    ) ;
 
 -- UTILISATEUR
-CREATE TABLE "UTILISATEUR" 
-   (	"ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"USERNAME" VARCHAR2(255 CHAR) NOT NULL ENABLE, 
-	"EMAIL" VARCHAR2(255 CHAR), 
-	"DISPLAY_NAME" VARCHAR2(64 CHAR) NOT NULL ENABLE, 
-	"PASSWORD" VARCHAR2(128 CHAR) NOT NULL ENABLE, 
-	"STATE" NUMBER NOT NULL ENABLE, 
-	"CODE" VARCHAR2(60 CHAR), 
-	 CONSTRAINT "UTILISATEUR_USERNAME_UN" UNIQUE ("USERNAME") ENABLE, 
+CREATE TABLE "UTILISATEUR"
+   (	"ID" NUMBER(*,0) NOT NULL ENABLE,
+	"USERNAME" VARCHAR2(255 CHAR) NOT NULL ENABLE,
+	"EMAIL" VARCHAR2(255 CHAR),
+	"DISPLAY_NAME" VARCHAR2(64 CHAR) NOT NULL ENABLE,
+	"PASSWORD" VARCHAR2(128 CHAR) NOT NULL ENABLE,
+	"STATE" NUMBER NOT NULL ENABLE,
+	"CODE" VARCHAR2(60 CHAR),
+	 CONSTRAINT "UTILISATEUR_USERNAME_UN" UNIQUE ("USERNAME") ENABLE,
 	 CONSTRAINT "UTILISATEUR_PK" PRIMARY KEY ("ID") ENABLE
    ) ;
 
 -- VALIDATION
-CREATE TABLE "VALIDATION" 
-   (	"ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"TYPE_VALIDATION_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"STRUCTURE_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_DESTRUCTION" DATE, 
-	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0), 
+CREATE TABLE "VALIDATION"
+   (	"ID" NUMBER(*,0) NOT NULL ENABLE,
+	"TYPE_VALIDATION_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"STRUCTURE_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_DESTRUCTION" DATE,
+	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0),
 	 CONSTRAINT "VALIDATION_PK" PRIMARY KEY ("ID") ENABLE
    ) ;
 
 -- VALIDATION_VOL_HORAIRE
-CREATE TABLE "VALIDATION_VOL_HORAIRE" 
-   (	"VALIDATION_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"VOLUME_HORAIRE_ID" NUMBER(*,0) NOT NULL ENABLE, 
+CREATE TABLE "VALIDATION_VOL_HORAIRE"
+   (	"VALIDATION_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"VOLUME_HORAIRE_ID" NUMBER(*,0) NOT NULL ENABLE,
 	 CONSTRAINT "VALIDATION_VOL_HORAIRE_PK" PRIMARY KEY ("VALIDATION_ID", "VOLUME_HORAIRE_ID") ENABLE
    ) ;
 
 -- VALIDATION_VOL_HORAIRE_REF
-CREATE TABLE "VALIDATION_VOL_HORAIRE_REF" 
-   (	"VALIDATION_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"VOLUME_HORAIRE_REF_ID" NUMBER(*,0) NOT NULL ENABLE, 
+CREATE TABLE "VALIDATION_VOL_HORAIRE_REF"
+   (	"VALIDATION_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"VOLUME_HORAIRE_REF_ID" NUMBER(*,0) NOT NULL ENABLE,
 	 CONSTRAINT "VALIDATION_VOL_HORAIRE_REF_PK" PRIMARY KEY ("VALIDATION_ID", "VOLUME_HORAIRE_REF_ID") ENABLE
    ) ;
 
+-- VERSION
+CREATE TABLE "VERSION"
+   (	"NUMERO" NUMBER NOT NULL ENABLE,
+	 CONSTRAINT "VERSION_PK" PRIMARY KEY ("NUMERO") ENABLE
+   ) ;
+
 -- VOLUME_HORAIRE
-CREATE TABLE "VOLUME_HORAIRE" 
-   (	"ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"TYPE_VOLUME_HORAIRE_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"SERVICE_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"PERIODE_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"TYPE_INTERVENTION_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HEURES" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, 
-	"MOTIF_NON_PAIEMENT_ID" NUMBER(*,0), 
-	"CONTRAT_ID" NUMBER(*,0), 
-	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_DESTRUCTION" DATE, 
-	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0), 
+CREATE TABLE "VOLUME_HORAIRE"
+   (	"ID" NUMBER(*,0) NOT NULL ENABLE,
+	"TYPE_VOLUME_HORAIRE_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"SERVICE_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"PERIODE_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"TYPE_INTERVENTION_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HEURES" FLOAT(126) DEFAULT 0 NOT NULL ENABLE,
+	"MOTIF_NON_PAIEMENT_ID" NUMBER(*,0),
+	"CONTRAT_ID" NUMBER(*,0),
+	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_DESTRUCTION" DATE,
+	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0),
 	 CONSTRAINT "VOLUME_HORAIRE_PK" PRIMARY KEY ("ID") ENABLE
    ) ;
 
 -- VOLUME_HORAIRE_CHARGE
-CREATE TABLE "VOLUME_HORAIRE_CHARGE" 
-   (	"ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"SCENARIO_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"ELEMENT_PEDAGOGIQUE_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"TYPE_INTERVENTION_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"GROUPES" NUMBER(*,0) DEFAULT 0 NOT NULL ENABLE, 
-	"SOURCE_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"SOURCE_CODE" VARCHAR2(100 CHAR), 
-	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_CREATEUR_ID" NUMBER NOT NULL ENABLE, 
-	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_MODIFICATEUR_ID" NUMBER NOT NULL ENABLE, 
-	"HISTO_DESTRUCTION" DATE, 
-	"HISTO_DESTRUCTEUR_ID" NUMBER, 
-	 CONSTRAINT "VOLUME_HORAIRE_CHARGE_PK" PRIMARY KEY ("ID") ENABLE, 
-	 CONSTRAINT "VHC_HISTO_UN" UNIQUE ("SOURCE_CODE", "HISTO_DESTRUCTION") ENABLE, 
+CREATE TABLE "VOLUME_HORAIRE_CHARGE"
+   (	"ID" NUMBER(*,0) NOT NULL ENABLE,
+	"SCENARIO_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"ELEMENT_PEDAGOGIQUE_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"TYPE_INTERVENTION_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"GROUPES" NUMBER(*,0) DEFAULT 0 NOT NULL ENABLE,
+	"SOURCE_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"SOURCE_CODE" VARCHAR2(100 CHAR),
+	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_CREATEUR_ID" NUMBER NOT NULL ENABLE,
+	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_MODIFICATEUR_ID" NUMBER NOT NULL ENABLE,
+	"HISTO_DESTRUCTION" DATE,
+	"HISTO_DESTRUCTEUR_ID" NUMBER,
+	 CONSTRAINT "VOLUME_HORAIRE_CHARGE_PK" PRIMARY KEY ("ID") ENABLE,
+	 CONSTRAINT "VHC_HISTO_UN" UNIQUE ("SOURCE_CODE", "HISTO_DESTRUCTION") ENABLE,
 	 CONSTRAINT "VOLUME_HORAIRE_CHARGE__UN" UNIQUE ("ELEMENT_PEDAGOGIQUE_ID", "TYPE_INTERVENTION_ID", "HISTO_DESTRUCTION") ENABLE
    ) ;
 
 -- VOLUME_HORAIRE_ENS
-CREATE TABLE "VOLUME_HORAIRE_ENS" 
-   (	"ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"TYPE_INTERVENTION_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HEURES" FLOAT(126) NOT NULL ENABLE, 
-	"SOURCE_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"SOURCE_CODE" VARCHAR2(100 CHAR), 
-	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_DESTRUCTION" DATE, 
-	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0), 
-	"ELEMENT_PEDAGOGIQUE_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"GROUPES" FLOAT(126), 
-	 CONSTRAINT "VOLUME_HORAIRE_ENS_UK1" UNIQUE ("SOURCE_CODE", "HISTO_DESTRUCTION") ENABLE, 
+CREATE TABLE "VOLUME_HORAIRE_ENS"
+   (	"ID" NUMBER(*,0) NOT NULL ENABLE,
+	"TYPE_INTERVENTION_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HEURES" FLOAT(126) NOT NULL ENABLE,
+	"SOURCE_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"SOURCE_CODE" VARCHAR2(100 CHAR),
+	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_DESTRUCTION" DATE,
+	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0),
+	"ELEMENT_PEDAGOGIQUE_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"GROUPES" FLOAT(126),
+	 CONSTRAINT "VOLUME_HORAIRE_ENS_UK1" UNIQUE ("SOURCE_CODE", "HISTO_DESTRUCTION") ENABLE,
 	 CONSTRAINT "VOLUME_HORAIRE_ENS_PK" PRIMARY KEY ("ID") ENABLE
    ) ;
 
 -- VOLUME_HORAIRE_REF
-CREATE TABLE "VOLUME_HORAIRE_REF" 
-   (	"ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"TYPE_VOLUME_HORAIRE_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"SERVICE_REFERENTIEL_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HEURES" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, 
-	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, 
-	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"HISTO_DESTRUCTION" DATE, 
-	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0), 
+CREATE TABLE "VOLUME_HORAIRE_REF"
+   (	"ID" NUMBER(*,0) NOT NULL ENABLE,
+	"TYPE_VOLUME_HORAIRE_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"SERVICE_REFERENTIEL_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HEURES" FLOAT(126) DEFAULT 0 NOT NULL ENABLE,
+	"HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE,
+	"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"HISTO_DESTRUCTION" DATE,
+	"HISTO_DESTRUCTEUR_ID" NUMBER(*,0),
 	 CONSTRAINT "VOLUME_HORAIRE_REF_PK" PRIMARY KEY ("ID") ENABLE
    ) ;
 
 -- WF_DEP_BLOQUANTE
-CREATE TABLE "WF_DEP_BLOQUANTE" 
-   (	"ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"WF_ETAPE_DEP_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"TBL_WORKFLOW_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"TO_DELETE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, 
+CREATE TABLE "WF_DEP_BLOQUANTE"
+   (	"ID" NUMBER(*,0) NOT NULL ENABLE,
+	"WF_ETAPE_DEP_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"TBL_WORKFLOW_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"TO_DELETE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE,
 	 CONSTRAINT "WF_DEPS_BLOQUANTES_PK" PRIMARY KEY ("ID") ENABLE
    ) ;
 
 -- WF_ETAPE
-CREATE TABLE "WF_ETAPE" 
-   (	"ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"CODE" VARCHAR2(64 CHAR) NOT NULL ENABLE, 
-	"ORDRE" NUMBER(*,0) DEFAULT 1 NOT NULL ENABLE, 
-	"DESC_NON_FRANCHIE" VARCHAR2(250 CHAR) NOT NULL ENABLE, 
-	"DESC_SANS_OBJECTIF" VARCHAR2(250 CHAR), 
-	"LIBELLE_AUTRES" VARCHAR2(150 CHAR) NOT NULL ENABLE, 
-	"LIBELLE_INTERVENANT" VARCHAR2(150 CHAR) NOT NULL ENABLE, 
-	"OBLIGATOIRE" NUMBER(1,0) DEFAULT 1 NOT NULL ENABLE, 
-	"ROUTE" VARCHAR2(200 CHAR) NOT NULL ENABLE, 
-	"ROUTE_INTERVENANT" VARCHAR2(200 CHAR), 
-	 CONSTRAINT "WF_ETAPE_CODE_UN" UNIQUE ("CODE") ENABLE, 
-	 CONSTRAINT "WF_ETAPE_ORDRE_UN" UNIQUE ("ORDRE") ENABLE, 
+CREATE TABLE "WF_ETAPE"
+   (	"ID" NUMBER(*,0) NOT NULL ENABLE,
+	"CODE" VARCHAR2(64 CHAR) NOT NULL ENABLE,
+	"ORDRE" NUMBER(*,0) DEFAULT 1 NOT NULL ENABLE,
+	"DESC_NON_FRANCHIE" VARCHAR2(250 CHAR) NOT NULL ENABLE,
+	"DESC_SANS_OBJECTIF" VARCHAR2(250 CHAR),
+	"LIBELLE_AUTRES" VARCHAR2(150 CHAR) NOT NULL ENABLE,
+	"LIBELLE_INTERVENANT" VARCHAR2(150 CHAR) NOT NULL ENABLE,
+	"OBLIGATOIRE" NUMBER(1,0) DEFAULT 1 NOT NULL ENABLE,
+	"ROUTE" VARCHAR2(200 CHAR) NOT NULL ENABLE,
+	"ROUTE_INTERVENANT" VARCHAR2(200 CHAR),
+	 CONSTRAINT "WF_ETAPE_CODE_UN" UNIQUE ("CODE") ENABLE,
+	 CONSTRAINT "WF_ETAPE_ORDRE_UN" UNIQUE ("ORDRE") ENABLE,
 	 CONSTRAINT "WF_ETAPE_PK" PRIMARY KEY ("ID") ENABLE
    ) ;
 
 -- WF_ETAPE_DEP
-CREATE TABLE "WF_ETAPE_DEP" 
-   (	"ETAPE_SUIV_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"ETAPE_PREC_ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"LOCALE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, 
-	"INTEGRALE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, 
-	"PARTIELLE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, 
-	"ID" NUMBER(*,0) NOT NULL ENABLE, 
-	"ACTIVE" NUMBER(1,0) DEFAULT 1 NOT NULL ENABLE, 
-	"TYPE_INTERVENANT_ID" NUMBER(*,0), 
-	"OBLIGATOIRE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, 
-	 CONSTRAINT "WF_ETAPE_DEP_PK" PRIMARY KEY ("ID") ENABLE, 
+CREATE TABLE "WF_ETAPE_DEP"
+   (	"ETAPE_SUIV_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"ETAPE_PREC_ID" NUMBER(*,0) NOT NULL ENABLE,
+	"LOCALE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE,
+	"INTEGRALE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE,
+	"PARTIELLE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE,
+	"ID" NUMBER(*,0) NOT NULL ENABLE,
+	"ACTIVE" NUMBER(1,0) DEFAULT 1 NOT NULL ENABLE,
+	"TYPE_INTERVENANT_ID" NUMBER(*,0),
+	"OBLIGATOIRE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE,
+	 CONSTRAINT "WF_ETAPE_DEP_PK" PRIMARY KEY ("ID") ENABLE,
 	 CONSTRAINT "WF_ETAPE_DEP__UN" UNIQUE ("ETAPE_SUIV_ID", "ETAPE_PREC_ID") ENABLE
    ) ;
 
 --------------------------------------------------
--- Packages
+-- views
 --------------------------------------------------
 
--- OSE_CHARGENS
-CREATE OR REPLACE PACKAGE "OSE_CHARGENS" AS 
-  ENABLE_TRIGGER_EFFECTIFS BOOLEAN DEFAULT TRUE;
+-- V_AGREMENT_EXPORT_CSV
+CREATE OR REPLACE FORCE VIEW "V_AGREMENT_EXPORT_CSV" ("ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID", "ANNEE", "STRUCTURE_LIBELLE", "INTERVENANT_CODE", "INTERVENANT_NOM_USUEL", "INTERVENANT_NOM_PATRONYMIQUE", "INTERVENANT_PRENOM", "INTERVENANT_STATUT_LIBELLE", "PREMIER_RECRUTEMENT", "DISCIPLINE", "HETD_FI", "HETD_FA", "HETD_FC", "HETD_TOTAL", "TYPE_AGREMENT", "AGREE", "DATE_DECISION", "MODIFICATEUR", "DATE_MODIFICATION") AS
+  WITH heures_s AS (
+  SELECT
+    i.id                                      intervenant_id,
+    COALESCE(ep.structure_id,i.structure_id)  structure_id,
+    SUM(frs.service_fi)                       service_fi,
+    SUM(frs.service_fa)                       service_fa,
+    SUM(frs.service_fc)                       service_fc,
+    SUM(frs.heures_compl_fi)                  heures_compl_fi,
+    SUM(frs.heures_compl_fa)                  heures_compl_fa,
+    SUM(frs.heures_compl_fc)                  heures_compl_fc,
+    SUM(frs.heures_compl_fc_majorees)         heures_compl_fc_majorees,
+    SUM(frs.total)                            total
+  FROM
+              formule_resultat_service frs
+         JOIN type_volume_horaire      tvh ON tvh.code = 'PREVU'
+         JOIN etat_volume_horaire      evh ON evh.code = 'valide'
+         JOIN formule_resultat          fr ON fr.id = frs.formule_resultat_id
+                                          AND fr.type_volume_horaire_id = tvh.id
+                                          AND fr.etat_volume_horaire_id = evh.id
+         JOIN intervenant                i ON i.id = fr.intervenant_id
+         JOIN service                    s ON s.id = frs.service_id
+    LEFT JOIN element_pedagogique       ep ON ep.id = s.element_pedagogique_id
+  GROUP BY
+    i.id,
+    ep.structure_id,
+    i.structure_id
+)
+SELECT
+  a.id                                                                        annee_id,
+  i.id                                                                        intervenant_id,
+  s.id                                                                        structure_id,
 
-  TYPE tnoeud_ids IS TABLE OF NUMERIC;
+  a.libelle                                                                   annee,
+  s.libelle_court                                                             structure_libelle,
+  i.code                                                                      intervenant_code,
+  i.nom_usuel                                                                 intervenant_nom_usuel,
+  i.nom_patronymique                                                          intervenant_nom_patronymique,
+  i.prenom                                                                    intervenant_prenom,
 
-  FUNCTION GET_SCENARIO RETURN NUMERIC;
-  PROCEDURE SET_SCENARIO( SCENARIO NUMERIC );
+  si.libelle                                                                  intervenant_statut_libelle,
+  i.premier_recrutement                                                       premier_recrutement,
+  d.libelle_court                                                             discipline,
 
-  FUNCTION GET_NOEUD RETURN NUMERIC;
-  PROCEDURE SET_NOEUD( NOEUD NUMERIC );
+  COALESCE(heures_s.service_fi, fr.service_fi)
+  + COALESCE(heures_s.heures_compl_fi, fr.heures_compl_fi)
+                                                                              hetd_fi,
+  COALESCE(heures_s.service_fa, fr.service_fa)
+  + COALESCE(heures_s.heures_compl_fa, fr.heures_compl_fa)
+                                                                              hetd_fa,
+  COALESCE(heures_s.service_fc, fr.service_fc)
+  + COALESCE(heures_s.heures_compl_fc, fr.heures_compl_fc)
+  + COALESCE(heures_s.heures_compl_fc_majorees, fr.heures_compl_fc_majorees)
+                                                                              hetd_fc,
+  COALESCE(heures_s.total, fr.total)                                          hetd_total,
 
-  FUNCTION CALC_COEF( choix_min NUMERIC, choix_max NUMERIC, poids NUMERIC, max_poids NUMERIC, total_poids NUMERIC, nb_choix NUMERIC ) RETURN FLOAT;
 
-  PROCEDURE DEM_CALC_SUB_EFFECTIF( scenario_noeud_id NUMERIC, type_heures_id NUMERIC, etape_id NUMERIC, effectif FLOAT );
-  PROCEDURE CALC_SUB_EFFECTIF_DEM;
 
-  PROCEDURE CALC_ALL_EFFECTIFS;
 
-  PROCEDURE CALC_EFFECTIF( noeud_id NUMERIC, scenario_id NUMERIC, type_heures_id NUMERIC DEFAULT NULL, etape_id NUMERIC DEFAULT NULL);
-  PROCEDURE CALC_SUB_EFFECTIF2( noeud_id NUMERIC, scenario_id NUMERIC, type_heures_id NUMERIC DEFAULT NULL, etape_id NUMERIC DEFAULT NULL);
+  tagr.libelle                                                                type_agrement,
+  CASE WHEN agr.id IS NULL THEN 0 ELSE 1 END                                  agree,
+  agr.date_decision                                                           date_decision,
+  u.display_name                                                              modificateur,
+  agr.histo_modification                                                      date_modification
+FROM
+            tbl_agrement             ta
+       JOIN intervenant               i ON i.id = ta.intervenant_id
+       JOIN statut_intervenant       si ON si.id = i.statut_id
+       JOIN annee                     a ON a.id = ta.annee_id
+       JOIN type_agrement          tagr ON tagr.id = ta.type_agrement_id
+       JOIN type_volume_horaire     tvh ON tvh.code = 'PREVU'
+       JOIN etat_volume_horaire     evh ON evh.code = 'valide'
 
-  PROCEDURE DUPLIQUER( source_id NUMERIC, destination_id NUMERIC, utilisateur_id NUMERIC, structure_id NUMERIC, noeuds VARCHAR2 DEFAULT '', liens VARCHAR2 DEFAULT '' );
 
-  PROCEDURE CONTROLE_SEUIL( ouverture NUMERIC, dedoublement NUMERIC );
+  LEFT JOIN structure                 s ON s.id = ta.structure_id
+  LEFT JOIN agrement                agr ON agr.id = ta.agrement_id
+  LEFT JOIN utilisateur               u ON u.id = agr.histo_modificateur_id
+  LEFT JOIN discipline                d ON d.id = i.discipline_id
 
-  FUNCTION GET_SCENARIO_NOEUD_ID( scenario_id NUMERIC, noeud_id NUMERIC ) RETURN NUMERIC;
-  FUNCTION CREER_SCENARIO_NOEUD( scenario_id NUMERIC, noeud_id NUMERIC, assiduite FLOAT DEFAULT 1 ) RETURN NUMERIC;
+  LEFT JOIN formule_resultat         fr ON fr.intervenant_id = i.id
+                                       AND fr.type_volume_horaire_id = tvh.id
+                                       AND fr.etat_volume_horaire_id = evh.id
 
-  PROCEDURE ADD_SCENARIO_NOEUD_EFFECTIF( scenario_noeud_id NUMERIC, type_heures_id NUMERIC, etape_id NUMERIC, effectif FLOAT );
+  LEFT JOIN heures_s                    ON heures_s.intervenant_id = i.id
+                                       AND heures_s.structure_id = s.id;
 
-  PROCEDURE INIT_SCENARIO_NOEUD_EFFECTIF( 
-    etape_id NUMERIC, 
-    scenario_id NUMERIC, 
-    type_heures_id NUMERIC, 
-    effectif FLOAT, 
-    surcharge BOOLEAN DEFAULT FALSE 
-  );
+-- V_CENTRE_COUT_STRUCTURE
+CREATE OR REPLACE FORCE VIEW "V_CENTRE_COUT_STRUCTURE" ("CENTRE_COUT_ID", "STRUCTURE_ID") AS
+  SELECT
+  ccs.centre_cout_id,
+  ccs.structure_id
+FROM
+  centre_cout_structure ccs
+WHERE
+  ccs.histo_destruction IS NULL;
 
-  PROCEDURE SET_PRECALC_HEURES_PARAMS( 
-    annee_id                       NUMERIC DEFAULT NULL,
-    structure_id                   NUMERIC DEFAULT NULL,
-    scenario_id                    NUMERIC DEFAULT NULL,
-    type_heures_id                 NUMERIC DEFAULT NULL,
-    etape_id                       NUMERIC DEFAULT NULL,
-    noeud_ids                      tnoeud_ids DEFAULT NULL
-  );
+-- V_CENTRE_COUT_TYPE_HEURES
+CREATE OR REPLACE FORCE VIEW "V_CENTRE_COUT_TYPE_HEURES" ("CENTRE_COUT_ID", "TYPE_HEURES_ID") AS
+  select
+  cc.id centre_cout_id,
+  th.id type_heures_id
+from
+  centre_cout cc
+  join type_ressource  tr on tr.id = cc.type_ressource_id
+  join cc_activite    cca on cca.id = cc.activite_id
+  join type_heures     th on th.code = decode(tr.fi + cca.fi, 2, 'fi', null)
 
-  FUNCTION MATCH_PRECALC_HEURES_PARAMS( 
-    annee_id                       NUMERIC DEFAULT NULL,
-    structure_id                   NUMERIC DEFAULT NULL,
-    scenario_id                    NUMERIC DEFAULT NULL,
-    type_heures_id                 NUMERIC DEFAULT NULL,
-    etape_id                       NUMERIC DEFAULT NULL,
-    noeud_id                       NUMERIC DEFAULT NULL
-  ) RETURN NUMERIC;
+union all
 
+select
+  cc.id centre_cout_id,
+  th.id type_heures_id
+from
+  centre_cout cc
+  join type_ressource  tr on tr.id = cc.type_ressource_id
+  join cc_activite    cca on cca.id = cc.activite_id
+  join type_heures     th on th.code = decode(tr.fc + cca.fc, 2, 'fc', null)
 
-END OSE_CHARGENS;
-/
+union all
 
--- OSE_DIVERS
-CREATE OR REPLACE PACKAGE "OSE_DIVERS" AS 
+select
+  cc.id centre_cout_id,
+  th.id type_heures_id
+from
+  centre_cout cc
+  join type_ressource  tr on tr.id = cc.type_ressource_id
+  join cc_activite    cca on cca.id = cc.activite_id
+  join type_heures     th on th.code = decode(tr.fa + cca.fa, 2, 'fa', null)
 
-  PROCEDURE CALCULER_TABLEAUX_BORD;
+union all
 
-  FUNCTION GET_OSE_UTILISATEUR_ID RETURN NUMERIC;
-  FUNCTION GET_OSE_SOURCE_ID RETURN NUMERIC;
+select
+  cc.id centre_cout_id,
+  th.id type_heures_id
+from
+  centre_cout cc
+  join type_ressource  tr on tr.id = cc.type_ressource_id
+  join cc_activite    cca on cca.id = cc.activite_id
+  join type_heures     th on th.code = decode(tr.referentiel + cca.referentiel, 2, 'referentiel', null)
 
-  FUNCTION INTERVENANT_HAS_PRIVILEGE( intervenant_id NUMERIC, privilege_name VARCHAR2 ) RETURN NUMERIC;
+union all
 
-  FUNCTION implode(i_query VARCHAR2, i_seperator VARCHAR2 DEFAULT ',') RETURN VARCHAR2;
+select
+  cc.id centre_cout_id,
+  th.id type_heures_id
+from
+  centre_cout cc
+  join type_ressource  tr on tr.id = cc.type_ressource_id
+  join cc_activite    cca on cca.id = cc.activite_id
+  join type_heures     th on th.code = decode(tr.fc_majorees + cca.fc_majorees, 2, 'fc_majorees', null);
 
-  PROCEDURE intervenant_horodatage_service( INTERVENANT_ID NUMERIC, TYPE_VOLUME_HORAIRE_ID NUMERIC, REFERENTIEL NUMERIC, HISTO_MODIFICATEUR_ID NUMERIC, HISTO_MODIFICATION DATE );
+-- V_CHARGENS_CALC_EFFECTIF
+CREATE OR REPLACE FORCE VIEW "V_CHARGENS_CALC_EFFECTIF" ("NOEUD_ID", "SCENARIO_ID", "SCENARIO_NOEUD_ID", "TYPE_HEURES_ID", "ETAPE_ID", "EFFECTIF") AS
+  SELECT
+  gl.noeud_inf_id             noeud_id,
+  snsup.scenario_id           scenario_id,
+  sninf.id                    scenario_noeud_id,
+  sne.type_heures_id          type_heures_id,
+  sne.etape_id                etape_id,
+--  sne.effectif                effectif,
+--  slsup.choix_minimum         choix_minimum,
+--  slsup.choix_maximum         choix_maximum,
+--  COALESCE(slinf.poids,1)     poids,
+--  COALESCE(sninf.assiduite,1) assiduite,
+--  MIN(COALESCE(sl.poids,1))   min_poids,
+--  MAX(COALESCE(sl.poids,1))   max_poids,
+--  SUM(COALESCE(sl.poids,1))   total_poids,
+--  COUNT(*)                    nb_choix,
+  OSE_CHARGENS.CALC_COEF(
+    slsup.choix_minimum,
+    slsup.choix_maximum,
+    COALESCE(slinf.poids,1),
+    MAX(COALESCE(sl.poids,1)),
+    SUM(COALESCE(sl.poids,1)),
+    COUNT(*)
+  ) * sne.effectif effectif
+FROM
+            v_chargens_grands_liens  gl
+       JOIN scenario_noeud        snsup ON snsup.noeud_id = gl.noeud_sup_id
+                                       AND snsup.histo_destruction IS NULL
 
-  FUNCTION NIVEAU_FORMATION_ID_CALC( gtf_id NUMERIC, gtf_pertinence_niveau NUMERIC, niveau NUMERIC DEFAULT NULL ) RETURN NUMERIC;
+       JOIN scenario_noeud_effectif sne ON sne.scenario_noeud_id = snsup.id
 
-  FUNCTION STR_REDUCE( str CLOB ) RETURN CLOB;
+  LEFT JOIN scenario_lien         slsup ON slsup.histo_destruction IS NULL
+                                       AND slsup.lien_id = gl.lien_sup_id
+                                       AND slsup.scenario_id = snsup.scenario_id
 
-  FUNCTION STR_FIND( haystack CLOB, needle VARCHAR2 ) RETURN NUMERIC;
+  LEFT JOIN scenario_lien         slinf ON slinf.histo_destruction IS NULL
+                                       AND slinf.lien_id = gl.lien_inf_id
+                                       AND slinf.scenario_id = snsup.scenario_id
 
-  FUNCTION LIKED( haystack CLOB, needle CLOB ) RETURN NUMERIC;
+  LEFT JOIN scenario_noeud        sninf ON sninf.noeud_id = gl.noeud_inf_id
+                                       AND sninf.scenario_id = snsup.scenario_id
+                                       AND sninf.histo_destruction IS NULL
 
-  FUNCTION CALCUL_TAUX_FI( eff_fi FLOAT, eff_fc FLOAT, eff_fa FLOAT, fi NUMERIC, fc NUMERIC, fa NUMERIC, arrondi NUMERIC DEFAULT 15 ) RETURN FLOAT;
+       JOIN lien                      l ON l.noeud_sup_id = gl.noeud_liste_id
+                                       AND l.histo_destruction IS NULL
 
-  FUNCTION CALCUL_TAUX_FC( eff_fi FLOAT, eff_fc FLOAT, eff_fa FLOAT, fi NUMERIC, fc NUMERIC, fa NUMERIC, arrondi NUMERIC DEFAULT 15 ) RETURN FLOAT;
+  LEFT JOIN scenario_lien            sl ON sl.lien_id = l.id
+                                       AND sl.scenario_id = snsup.scenario_id
+                                       AND sl.histo_destruction IS NULL
 
-  FUNCTION CALCUL_TAUX_FA( eff_fi FLOAT, eff_fc FLOAT, eff_fa FLOAT, fi NUMERIC, fc NUMERIC, fa NUMERIC, arrondi NUMERIC DEFAULT 15 ) RETURN FLOAT;
+WHERE
+  (slsup.actif = 1 OR slsup.actif IS NULL)
+  AND (slinf.actif = 1 OR slinf.actif IS NULL)
+  AND (sl.actif = 1 OR sl.actif IS NULL)
+  AND (snsup.scenario_id = 0 OR NULL IS NULL)
+  AND (sne.type_heures_id = 0 OR NULL IS NULL)
+  AND (sne.etape_id = 0 OR NULL IS NULL)
+GROUP BY
+  gl.noeud_sup_id,
+  gl.noeud_inf_id,
+  snsup.scenario_id,
+  sninf.id,
+  sne.type_heures_id,
+  sne.etape_id,
+  sne.effectif,
+  slsup.choix_minimum,
+  slsup.choix_maximum,
+  slinf.poids;
 
-  FUNCTION STRUCTURE_UNIV_GET_ID RETURN NUMERIC;
+-- V_CHARGENS_EXPORT_CSV
+CREATE OR REPLACE FORCE VIEW "V_CHARGENS_EXPORT_CSV" ("ANNEE_ID", "SCENARIO_ID", "STRUCTURE_PORTEUSE_ID", "STRUCTURE_INS_ID", "ANNEE", "STRUCTURE_PORTEUSE_CODE", "STRUCTURE_PORTEUSE_LIBELLE", "ETAPE_PORTEUSE_CODE", "ETAPE_PORTEUSE_LIBELLE", "STRUCTURE_INS_CODE", "STRUCTURE_INS_LIBELLE", "ETAPE_INS_CODE", "ETAPE_INS_LIBELLE", "ELEMENT_CODE", "ELEMENT_LIBELLE", "PERIODE", "DISCIPLINE_CODE", "DISCIPLINE_LIBELLE", "TYPE_HEURES", "TYPE_INTERVENTION", "SEUIL_OUVERTURE", "SEUIL_DEDOUBLEMENT", "ASSIDUITE", "EFFECTIF_ETAPE", "EFFECTIF_ELEMENT", "HEURES_ENS", "GROUPES", "HEURES", "HETD") AS
+  SELECT
+  a.id              annee_id,
+  cph.scenario_id   scenario_id,
+  sp.id             structure_porteuse_id,
+  si.id             structure_ins_id,
 
-  PROCEDURE SYNC_LOG( msg CLOB );
+  a.libelle         annee,
 
-  FUNCTION FORMATTED_RIB (bic VARCHAR2, iban VARCHAR2) RETURN VARCHAR2;
+  sp.source_code    structure_porteuse_code,
+  sp.libelle_court  structure_porteuse_libelle,
+  eport.code        etape_porteuse_code,
+  eport.libelle     etape_porteuse_libelle,
 
-  FUNCTION FORMATTED_ADRESSE(
-    no_voie                VARCHAR2,
-    nom_voie               VARCHAR2,
-    batiment               VARCHAR2,
-    mention_complementaire VARCHAR2,
-    localite               VARCHAR2,
-    code_postal            VARCHAR2,
-    ville                  VARCHAR2,
-    pays_libelle           VARCHAR2)
-  RETURN VARCHAR2;
+  si.source_code    structure_ins_code,
+  si.libelle_court  structure_ins_libelle,
+  eins.code         etape_ins_code,
+  eins.libelle      etape_ins_libelle,
 
-  FUNCTION GET_TRIGGER_BODY( TRIGGER_NAME VARCHAR2 ) RETURN VARCHAR2;
-END OSE_DIVERS;
-/
+  ep.code           element_code,
+  ep.libelle        element_libelle,
+  p.libelle_court   periode,
+  d.source_code     discipline_code,
+  d.libelle_court   discipline_libelle,
+  th.libelle_court  type_heures,
+  ti.code           type_intervention,
 
--- OSE_EVENT
-CREATE OR REPLACE PACKAGE "OSE_EVENT" AS 
-
-  PROCEDURE ON_BEFORE_FORMULE_RES_DELETE( INTERVENANT_ID NUMERIC );
-  PROCEDURE ON_AFTER_FORMULE_CALC( INTERVENANT_ID NUMERIC );
-
-END OSE_EVENT;
-/
-
--- OSE_FORMULE
-CREATE OR REPLACE PACKAGE "OSE_FORMULE" AS 
-
-  PACKAGE_SUJET VARCHAR2(80) DEFAULT 'OSE_FORMULE';
-
-  TYPE t_intervenant IS RECORD (
-    structure_id                   NUMERIC,
-    annee_id                       NUMERIC,
-    heures_decharge                FLOAT DEFAULT 0,
-    heures_service_statutaire      FLOAT DEFAULT 0,
-    heures_service_modifie         FLOAT DEFAULT 0,
-    depassement_service_du_sans_hc FLOAT DEFAULT 0
-  );
+  cph.ouverture     seuil_ouverture,
+  cph.dedoublement  seuil_dedoublement,
+  cph.assiduite     assiduite,
+  sne.effectif      effectif_etape,
+  cph.effectif      effectif_element,
+  cph.heures_ens    heures_ens,
+  cph.groupes       groupes,
+  cph.heures        heures,
+  cph.hetd          hetd
+  FROM
+            tbl_chargens                cph
+       JOIN annee                         a ON a.id = cph.annee_id
+       JOIN structure                    sp ON sp.id = cph.structure_id
+       JOIN etape                     eport ON eport.id = cph.etape_id
+       JOIN etape                      eins ON eins.id = cph.etape_ens_id
+       JOIN structure                    si ON si.id = eins.structure_id
+       JOIN element_pedagogique          ep ON ep.id = cph.element_pedagogique_id
+       JOIN type_heures                  th ON th.id = cph.type_heures_id
+       JOIN type_intervention            ti ON ti.id = cph.type_intervention_id
+  LEFT JOIN periode                       p ON p.id = ep.periode_id
+  LEFT JOIN discipline                    d ON d.id = ep.discipline_id
+  LEFT JOIN noeud                         n ON n.etape_id = eins.id
+                                           AND n.histo_destruction IS NULL
 
-  TYPE t_type_etat_vh IS RECORD (
-    type_volume_horaire_id    NUMERIC,
-    etat_volume_horaire_id    NUMERIC
-  );
-  TYPE t_lst_type_etat_vh   IS TABLE OF t_type_etat_vh INDEX BY PLS_INTEGER;
+  LEFT JOIN scenario_noeud               sn ON sn.noeud_id = n.id
+                                           AND sn.histo_destruction IS NULL
+                                           AND sn.scenario_id = cph.scenario_id
 
-  TYPE t_service_ref IS RECORD (
-    id                        NUMERIC,
-    structure_id              NUMERIC
-  );
-  TYPE t_lst_service_ref      IS TABLE OF t_service_ref INDEX BY PLS_INTEGER;
+  LEFT JOIN scenario_noeud_effectif     sne ON sne.scenario_noeud_id = sn.id
+                                           AND sne.type_heures_id = cph.type_heures_id
+                                           AND sne.etape_id = n.etape_id
+ORDER BY
+  structure_porteuse_code,
+  etape_porteuse_code,
+  structure_ins_code,
+  etape_ins_code,
+  element_code,
+  type_heures,
+  type_intervention;
 
-  TYPE t_service IS RECORD (
-    id                        NUMERIC,
-    taux_fi                   FLOAT   DEFAULT 1,
-    taux_fa                   FLOAT   DEFAULT 0,
-    taux_fc                   FLOAT   DEFAULT 0,
-    ponderation_service_du    FLOAT   DEFAULT 1,
-    ponderation_service_compl FLOAT   DEFAULT 1,
-    structure_aff_id          NUMERIC,
-    structure_ens_id          NUMERIC
-  );
-  TYPE t_lst_service          IS TABLE OF t_service INDEX BY PLS_INTEGER;
+-- V_CHARGENS_GRANDS_LIENS
+CREATE OR REPLACE FORCE VIEW "V_CHARGENS_GRANDS_LIENS" ("NOEUD_SUP_ID", "LIEN_SUP_ID", "NOEUD_LISTE_ID", "LIEN_INF_ID", "NOEUD_INF_ID") AS
+  SELECT
+  nsup.id noeud_sup_id,
+  lsup.id lien_sup_id,
+  nl.id   noeud_liste_id,
+  linf.id lien_inf_id,
+  ninf.id noeud_inf_id
+FROM
+       noeud            nsup
 
-  TYPE t_volume_horaire_ref IS RECORD (
-    id                        NUMERIC,
-    service_referentiel_id    NUMERIC,
-    type_volume_horaire_id    NUMERIC,
-    etat_volume_horaire_id    NUMERIC,
-    etat_volume_horaire_ordre NUMERIC,
-    heures                    FLOAT   DEFAULT 0
-  );
-  TYPE t_lst_volume_horaire_ref   IS TABLE OF t_volume_horaire_ref INDEX BY PLS_INTEGER;
+  JOIN lien             lsup   ON lsup.noeud_sup_id = nsup.id
+                              AND lsup.histo_destruction IS NULL
 
-  TYPE t_volume_horaire IS RECORD (
-    id                        NUMERIC,
-    service_id                NUMERIC,
-    type_volume_horaire_id    NUMERIC,
-    etat_volume_horaire_id    NUMERIC,
-    etat_volume_horaire_ordre NUMERIC,
-    heures                    FLOAT   DEFAULT 0,
-    taux_service_du           FLOAT   DEFAULT 1,
-    taux_service_compl        FLOAT   DEFAULT 1
-  );
-  TYPE t_lst_volume_horaire   IS TABLE OF t_volume_horaire INDEX BY PLS_INTEGER;
+  JOIN noeud              nl   ON nl.liste = 1
+                              AND nl.histo_destruction IS NULL
+                              AND nl.id = lsup.noeud_inf_id
 
+  JOIN lien             linf   ON linf.noeud_sup_id = nl.id
+                              AND linf.histo_destruction IS NULL
 
+  JOIN noeud            ninf   ON ninf.id = linf.noeud_inf_id
+                              AND ninf.histo_destruction IS NULL
+                              AND ninf.liste = 0
+WHERE
+  nsup.histo_destruction IS NULL
+  AND nsup.liste = 0;
 
-  TYPE t_resultat_hetd IS RECORD (
-    service_fi                FLOAT DEFAULT 0,
-    service_fa                FLOAT DEFAULT 0,
-    service_fc                FLOAT DEFAULT 0,
-    heures_compl_fi           FLOAT DEFAULT 0,
-    heures_compl_fa           FLOAT DEFAULT 0,
-    heures_compl_fc           FLOAT DEFAULT 0,
-    heures_compl_fc_majorees  FLOAT DEFAULT 0
-  );
-  TYPE t_lst_resultat_hetd   IS TABLE OF t_resultat_hetd INDEX BY PLS_INTEGER;
+-- V_CHARGENS_PRECALCUL_HEURES
+CREATE OR REPLACE FORCE VIEW "V_CHARGENS_PRECALCUL_HEURES" ("ANNEE_ID", "NOEUD_ID", "SCENARIO_ID", "TYPE_HEURES_ID", "TYPE_INTERVENTION_ID", "ELEMENT_PEDAGOGIQUE_ID", "ETAPE_ID", "ETAPE_ENS_ID", "STRUCTURE_ID", "OUVERTURE", "DEDOUBLEMENT", "ASSIDUITE", "EFFECTIF", "HEURES_ENS", "GROUPES", "HEURES", "HETD") AS
+  WITH t AS (
+SELECT
+  n.annee_id                        annee_id,
+  n.noeud_id                        noeud_id,
+  sn.scenario_id                    scenario_id,
+  sne.type_heures_id                type_heures_id,
+  ti.id                             type_intervention_id,
 
-  TYPE t_resultat_hetd_ref IS RECORD (
-    service_referentiel       FLOAT DEFAULT 0,
-    heures_compl_referentiel  FLOAT DEFAULT 0
-  );
-  TYPE t_lst_resultat_hetd_ref   IS TABLE OF t_resultat_hetd_ref INDEX BY PLS_INTEGER;
+  n.element_pedagogique_id          element_pedagogique_id,
+  n.element_pedagogique_etape_id    etape_id,
+  sne.etape_id                      etape_ens_id,
+  n.structure_id                    structure_id,
 
-  TYPE t_resultat IS RECORD (
-    intervenant_id            NUMERIC,
-    type_volume_horaire_id    NUMERIC,
-    etat_volume_horaire_id    NUMERIC,
-    service_du                FLOAT DEFAULT 0,
-    solde                     FLOAT DEFAULT 0,
-    sous_service              FLOAT DEFAULT 0,
-    heures_compl              FLOAT DEFAULT 0,
-    volume_horaire            t_lst_resultat_hetd,
-    volume_horaire_ref        t_lst_resultat_hetd_ref
-  );
+  vhe.heures                        heures,
+  vhe.heures * ti.taux_hetd_service hetd,
 
-  d_intervenant         t_intervenant;
-  d_type_etat_vh        t_lst_type_etat_vh;
-  d_service_ref         t_lst_service_ref;
-  d_service             t_lst_service;
-  d_volume_horaire_ref  t_lst_volume_horaire_ref;
-  d_volume_horaire      t_lst_volume_horaire;
-  d_resultat            t_resultat;
+  GREATEST(COALESCE(sns.ouverture, 1),1)                                           ouverture,
+  GREATEST(COALESCE(sns.dedoublement, snsetp.dedoublement, csdd.dedoublement,1),1) dedoublement,
+  COALESCE(sns.assiduite,1)                                                        assiduite,
+  sne.effectif*COALESCE(sns.assiduite,1)                                           effectif,
 
-  FUNCTION  GET_INTERVENANT_ID RETURN NUMERIC;
-  FUNCTION  GET_DATE_OBS RETURN DATE;
-  FUNCTION  SET_DATE_OBS( DATE_OBS DATE DEFAULT NULL ) RETURN DATE;
+  SUM(sne.effectif*COALESCE(sns.assiduite,1)) OVER (PARTITION BY n.noeud_id, sn.scenario_id, ti.id) t_effectif
 
-  PROCEDURE SET_DEBUG_LEVEL( DEBUG_LEVEL NUMERIC );
-  FUNCTION GET_DEBUG_LEVEL RETURN NUMERIC;
+FROM
+            scenario_noeud_effectif    sne
+            JOIN etape                        e ON e.id = sne.etape_id
+                                          AND e.histo_destruction IS NULL
 
-  FUNCTION GET_TAUX_HORAIRE_HETD( DATE_OBS DATE DEFAULT NULL ) RETURN FLOAT;
-  PROCEDURE UPDATE_ANNEE_TAUX_HETD;
+       JOIN scenario_noeud              sn ON sn.id = sne.scenario_noeud_id
+                                          AND sn.histo_destruction IS NULL
 
-  PROCEDURE CALCULER( INTERVENANT_ID NUMERIC );
-  PROCEDURE CALCULER_TOUT( ANNEE_ID NUMERIC DEFAULT NULL );        -- mise à jour de TOUTES les données ! ! ! !
-  PROCEDURE CALCULER_TBL( PARAMS UNICAEN_TBL.T_PARAMS );
+       JOIN tbl_noeud                       n ON n.noeud_id = sn.noeud_id
 
-  PROCEDURE SET_INTERVENANT(INTERVENANT_ID NUMERIC DEFAULT NULL);
-  FUNCTION GET_INTERVENANT RETURN NUMERIC;
-  FUNCTION MATCH_INTERVENANT(INTERVENANT_ID NUMERIC DEFAULT NULL) RETURN NUMERIC;
-END OSE_FORMULE;
-/
+       JOIN volume_horaire_ens         vhe ON vhe.element_pedagogique_id = n.element_pedagogique_id
+                                          AND vhe.histo_destruction IS NULL
+                                          AND vhe.heures > 0
 
--- OSE_HISTO
-CREATE OR REPLACE PACKAGE "OSE_HISTO" AS 
+       JOIN type_intervention           ti ON ti.id = vhe.type_intervention_id
 
-  FUNCTION FILTRE( histo_debut NUMERIC, histo_fin NUMERIC ) RETURN NUMERIC;
+  LEFT JOIN tbl_noeud                 netp ON netp.etape_id = e.id
 
-END OSE_HISTO;
-/
+  LEFT JOIN scenario_noeud           snetp ON snetp.scenario_id = sn.scenario_id
+                                          AND snetp.noeud_id = netp.noeud_id
+                                          AND snetp.histo_destruction IS NULL
 
--- OSE_PAIEMENT
-CREATE OR REPLACE PACKAGE "OSE_PAIEMENT" AS 
+  LEFT JOIN scenario_noeud_seuil    snsetp ON snsetp.scenario_noeud_id = snetp.id
+                                          AND snsetp.type_intervention_id = ti.id
 
-  PROCEDURE CHECK_BAD_PAIEMENTS( FORMULE_RES_SERVICE_ID NUMERIC DEFAULT NULL, FORMULE_RES_SERVICE_REF_ID NUMERIC DEFAULT NULL );
+  LEFT JOIN tbl_chargens_seuils_def   csdd ON csdd.annee_id = n.annee_id
+                                          AND csdd.scenario_id = sn.scenario_id
+                                          AND csdd.type_intervention_id = ti.id
+                                          AND csdd.groupe_type_formation_id = n.groupe_type_formation_id
+                                          AND csdd.structure_id = n.structure_id
 
-END OSE_PAIEMENT;
-/
+  LEFT JOIN scenario_noeud_seuil       sns ON sns.scenario_noeud_id = sn.id
+                                          AND sns.type_intervention_id = ti.id
+WHERE
+  1 = OSE_CHARGENS.MATCH_PRECALC_HEURES_PARAMS( n.annee_id, n.structure_id, sn.scenario_id, sne.type_heures_id, sne.etape_id, n.noeud_id )
+)
+SELECT
+  annee_id,
+  noeud_id,
+  scenario_id,
+  type_heures_id,
+  type_intervention_id,
 
--- OSE_PARAMETRE
-CREATE OR REPLACE PACKAGE "OSE_PARAMETRE" AS 
+  element_pedagogique_id,
+  etape_id,
+  etape_ens_id,
+  structure_id,
 
-  function get_etablissement return Numeric;
-  function get_annee return Numeric;
-  function get_annee_import return Numeric;
-  function get_ose_user return Numeric;
-  function get_drh_structure_id return Numeric;
-  function get_date_fin_saisie_permanents RETURN DATE;
-  function get_ddeb_saisie_serv_real RETURN DATE;
-  function get_dfin_saisie_serv_real RETURN DATE;
-  function get_formule_package_name RETURN VARCHAR2;
-  function get_formule_function_name RETURN VARCHAR2;
+  ouverture,
+  dedoublement,
+  assiduite,
+  effectif,
+  heures heures_ens,
+  --t_effectif,
 
-END OSE_PARAMETRE;
-/
+  CASE WHEN t_effectif < ouverture THEN 0 ELSE
+    CEIL( t_effectif / dedoublement ) * effectif / t_effectif
+  END groupes,
 
--- OSE_TEST
-CREATE OR REPLACE PACKAGE "OSE_TEST" AS 
+  CASE WHEN t_effectif < ouverture THEN 0 ELSE
+    CEIL( t_effectif / dedoublement ) * heures * effectif / t_effectif
+  END heures,
 
-  DEBUG_ENABLED BOOLEAN DEFAULT FALSE;
+  CASE WHEN t_effectif < ouverture THEN 0 ELSE
+    CEIL( t_effectif / dedoublement ) * hetd * effectif / t_effectif
+  END  hetd
 
-  -- SET SERVEROUTPUT ON
+FROM
+  t;
 
-  PROCEDURE SHOW_SUCCES;
-
-  PROCEDURE HIDE_SUCCES;
-
-  PROCEDURE ECHO( MSG CLOB );
-
-  PROCEDURE INIT;
-
-  PROCEDURE SHOW_STATS;
-
-  PROCEDURE DEBUT( TEST_NAME CLOB );
-
-  PROCEDURE FIN;
-
-  PROCEDURE ASSERT( condition BOOLEAN, MSG CLOB );
-
-  PROCEDURE HOROINIT;
+-- V_CHARGENS_SEUILS_DED_DEF
+CREATE OR REPLACE FORCE VIEW "V_CHARGENS_SEUILS_DED_DEF" ("NOEUD_ID", "SCENARIO_ID", "TYPE_INTERVENTION_ID", "DEDOUBLEMENT") AS
+  WITH tisc AS (
+  SELECT DISTINCT
+    sc.type_intervention_id,
+    sc.scenario_id
+  FROM
+    seuil_charge sc
+  WHERE
+    sc.histo_destruction IS NULL
+)
+SELECT
+  n.noeud_id noeud_id,
+  tisc.scenario_id,
+  tisc.type_intervention_id,
+  COALESCE(snsetp.dedoublement, tcsd.dedoublement) dedoublement
+FROM
+            tbl_noeud                  n
+       JOIN                         tisc ON 1=1
 
-  PROCEDURE HORODATAGE( msg VARCHAR2 );
+  LEFT JOIN scenario_noeud         snetp ON snetp.noeud_id = n.noeud_etape_id
+                                        AND snetp.scenario_id = tisc.scenario_id
+                                        AND snetp.histo_destruction IS NULL
 
-  FUNCTION GET_STRUCTURE_BY_ID( id NUMERIC ) RETURN structure%rowtype;
+  LEFT JOIN scenario_noeud_seuil  snsetp ON snsetp.scenario_noeud_id = snetp.id
+                                        AND snsetp.type_intervention_id = tisc.type_intervention_id
 
-END OSE_TEST;
-/
+  LEFT JOIN tbl_chargens_seuils_def tcsd ON tcsd.annee_id = n.annee_id
+                                        AND tcsd.scenario_id = tisc.scenario_id
+                                        AND tcsd.groupe_type_formation_id = n.groupe_type_formation_id
+                                        AND tcsd.type_intervention_id = tisc.type_intervention_id
+WHERE
+  COALESCE(snsetp.dedoublement, tcsd.dedoublement)  IS NOT NULL;
 
--- OSE_VALIDATION
-CREATE OR REPLACE PACKAGE "OSE_VALIDATION" AS 
+-- V_CTL_SERVICES_ODF_HISTO
+CREATE OR REPLACE FORCE VIEW "V_CTL_SERVICES_ODF_HISTO" ("PRENOM", "NOM_USUEL", "ELEMENT", "ETAPE", "TYPE_INTERVENTION", "HEURES", "HAS_CONTRAT", "HAS_VALIDATION", "ELEMENT_SUPPRIME", "ETAPE_SUPPRIMEE", "ETABLISSEMENT_SUPPRIME") AS
+  with vh as (
+  SELECT
+    vh.service_id,
+    ti.code type_intervention,
+    SUM(heures) heures,
+    CASE WHEN vh.contrat_id IS NULL THEN 0 ELSE 1 END has_contrat,
+    CASE WHEN (SELECT COUNT(*) FROM validation_vol_horaire vvh WHERE vvh.volume_horaire_id = vh.id) = 1 THEN 1 ELSE 0 END has_validation
+  FROM
+    volume_horaire vh
+    JOIN type_volume_horaire tvh ON tvh.id = vh.type_volume_horaire_id
+    JOIN type_intervention ti ON ti.id = vh.type_intervention_id
+  WHERE
+    vh.histo_destruction IS NULL
+    AND tvh.code = 'PREVU'
+  GROUP BY
+    vh.id, ti.code, vh.service_id, vh.contrat_id
+)
+SELECT
+  i.prenom, i.nom_usuel,
+  ep.source_code "ELEMENT",
+  e.source_code etape,
 
-  FUNCTION can_devalider ( v validation%rowtype ) RETURN varchar2;
+  vh.type_intervention,
+  vh.heures,
+  vh.has_contrat,
+  vh.has_validation,
+  CASE WHEN ep.histo_destruction IS NOT NULL THEN 1 ELSE 0 END element_supprime,
+  CASE WHEN e.histo_destruction IS NOT NULL THEN 1 ELSE 0 END etape_supprimee,
+  CASE WHEN et.histo_destruction IS NOT NULL THEN 1 ELSE 0 END etablissement_supprime
+FROM
+  service s
+  JOIN intervenant i ON i.id = s.intervenant_id
+  LEFT JOIN element_pedagogique ep ON ep.id = s.element_pedagogique_id
+  LEFT JOIN etape e ON e.id = ep.etape_id
+  LEFT JOIN etablissement et ON et.id = s.etablissement_id
+  LEFT JOIN vh ON vh.service_id = s.id
+WHERE
+  s.histo_destruction IS NULL
+  AND (
+    (ep.id IS NOT NULL AND ep.histo_destruction IS NOT NULL)
+    OR
+    (e.id IS NOT NULL AND e.histo_destruction IS NOT NULL)
+    OR
+    (et.id IS NOT NULL AND et.histo_destruction IS NOT NULL)
+  )
+order by
+  nom_usuel, prenom, etape, "ELEMENT", heures;
 
-END OSE_VALIDATION;
-/
+-- V_CTL_VH_MAUVAIS_SEMESTRE
+CREATE OR REPLACE FORCE VIEW "V_CTL_VH_MAUVAIS_SEMESTRE" ("ID", "NOM_USUEL", "PRENOM", "HEURES", "VALIDATION_ID") AS
+  SELECT
+  vh.id,
+  i.nom_usuel, i.prenom,
+  vh.heures,
+  vvh.validation_id
+FROM
+  volume_horaire vh
+  JOIN type_volume_horaire tvh ON tvh.id = vh.type_volume_horaire_id
+  JOIN service s ON s.id = vh.service_id
+  JOIN element_pedagogique ep ON ep.id = s.element_pedagogique_id
+  JOIN intervenant i ON i.id = s.intervenant_id
+  LEFT JOIN VALIDATION_VOL_HORAIRE vvh on VVH.VOLUME_HORAIRE_ID = vh.id
+WHERE
+  tvh.code = 'PREVU'
+  AND ep.periode_id IS NOT NULL
+  AND vh.periode_id <> ep.periode_id
+ORDER BY
+  nom_usuel, prenom, heures;
 
--- OSE_WORKFLOW
-CREATE OR REPLACE PACKAGE "OSE_WORKFLOW" AS 
+-- V_ELEMENT_TYPE_HEURES
+CREATE OR REPLACE FORCE VIEW "V_ELEMENT_TYPE_HEURES" ("ELEMENT_PEDAGOGIQUE_ID", "TYPE_HEURES_ID") AS
+  select ep.id element_pedagogique_id, th.id type_heures_id
+  from element_pedagogique ep
+  join type_heures th on th.code = decode(ep.fi, 1, 'fi', null)
+union all
+  select ep.id element_pedagogique_id, th.id type_heures_id
+  from element_pedagogique ep
+  join type_heures th on th.code = decode(ep.fc, 1, 'fc', null)
+union all
+  select ep.id element_pedagogique_id, th.id type_heures_id
+  from element_pedagogique ep
+  join type_heures th on th.code = decode(ep.fa, 1, 'fa', null);
 
-  PACKAGE_SUJET VARCHAR2(80) DEFAULT 'OSE_WORKFLOW';
+-- V_ELEMENT_TYPE_INTERVENTION
+CREATE OR REPLACE FORCE VIEW "V_ELEMENT_TYPE_INTERVENTION" ("TYPE_INTERVENTION_ID", "ELEMENT_PEDAGOGIQUE_ID") AS
+  SELECT
+  type_intervention_id,
+  element_pedagogique_id
+FROM
+  type_intervention_ep tie
+  JOIN type_intervention ti ON ti.id = tie.type_intervention_id
+WHERE
+  tie.histo_destruction IS NULL
+ORDER BY
+  ti.ordre;
 
-  PROCEDURE CALCULER( INTERVENANT_ID NUMERIC );
-  PROCEDURE CALCULER_TOUT( ANNEE_ID NUMERIC DEFAULT NULL );
-  PROCEDURE CALCULER_TBL( PARAMS UNICAEN_TBL.T_PARAMS );
+-- V_ELEMENT_TYPE_INTERV_POSSIBLE
+CREATE OR REPLACE FORCE VIEW "V_ELEMENT_TYPE_INTERV_POSSIBLE" ("TYPE_INTERVENTION_ID", "ELEMENT_PEDAGOGIQUE_ID") AS
+  SELECT
+  ti.id       type_intervention_id,
+  ep.id       element_pedagogique_id
+FROM
+            element_pedagogique              ep
 
-  PROCEDURE DEP_CHECK( etape_suiv_id NUMERIC, etape_prec_id NUMERIC );
+       JOIN type_intervention                ti ON ep.annee_id BETWEEN COALESCE(ti.annee_debut_id,ep.annee_id) AND COALESCE(ti.annee_fin_id, ep.annee_id)
+                                               AND ti.histo_destruction IS NULL
 
-  PROCEDURE SET_INTERVENANT(INTERVENANT_ID NUMERIC DEFAULT NULL);
-  FUNCTION GET_INTERVENANT RETURN NUMERIC;
-  FUNCTION MATCH_INTERVENANT(INTERVENANT_ID NUMERIC DEFAULT NULL) RETURN NUMERIC;
-END OSE_WORKFLOW;
-/
+  LEFT JOIN type_intervention_structure     tis ON tis.type_intervention_id = ti.id
+                                               AND tis.structure_id = ep.structure_id
+                                               AND ep.annee_id BETWEEN COALESCE(tis.annee_debut_id,ep.annee_id) AND COALESCE(tis.annee_fin_id, ep.annee_id)
+                                               AND tis.histo_destruction IS NULL
+WHERE
+  ep.histo_destruction IS NULL
+  AND COALESCE( tis.visible, ti.visible ) = 1
+  AND (ti.regle_foad = 0 OR ep.taux_foad > 0)
+  AND (ti.regle_fc = 0 OR ep.taux_fc > 0);
 
--- UCBN_LDAP
-CREATE OR REPLACE PACKAGE "UCBN_LDAP" AUTHID CURRENT_USER AS
-  ldap_sess DBMS_LDAP.SESSION := NULL ; -- Ne met a NULL qu'une seule fois par session!!!!
-  last_used NUMBER ;
-  TYPE ARRAY_STR IS VARRAY(64) OF VARCHAR2(256 char);
-  a_multi ARRAY_STR ;
-  FUNCTION version RETURN VARCHAR2 ;
-  FUNCTION get(filtre IN VARCHAR2, attribut IN VARCHAR2, v_multi IN VARCHAR2 DEFAULT 'N', a_multi OUT ARRAY_STR) RETURN VARCHAR2 ;
-  FUNCTION alias2mail(ldap_alias IN VARCHAR2) RETURN VARCHAR2 ;
-  FUNCTION uid2mail(ldap_uid IN VARCHAR2) RETURN VARCHAR2 ;
-  FUNCTION hid2mail(harpege_uid IN NUMBER) RETURN VARCHAR2 ;
-  FUNCTION etu2mail(code_etu IN NUMBER) RETURN VARCHAR2 ;
-  FUNCTION uid2alias(ldap_uid IN VARCHAR2) RETURN VARCHAR2 ;
-  FUNCTION hid2alias(harpege_uid IN NUMBER) RETURN VARCHAR2 ;
-  FUNCTION uid2cn(ldap_uid IN VARCHAR2) RETURN VARCHAR2 ;
-  FUNCTION uid2sn(ldap_uid IN VARCHAR2) RETURN VARCHAR2 ;
-  FUNCTION uid2givenname(ldap_uid IN VARCHAR2) RETURN VARCHAR2 ;
-  FUNCTION uid2gn(ldap_uid IN VARCHAR2) RETURN VARCHAR2 ; -- givenname + sn
-  FUNCTION hidIsPrimaryTeacher(harpege_uid IN NUMBER) RETURN VARCHAR2 ;
-  FUNCTION hidIsTeacher(harpege_uid IN NUMBER) RETURN VARCHAR2 ;
-  FUNCTION ldap_connect RETURN NUMBER ;
-  FUNCTION free RETURN NUMBER ;
-  PROCEDURE getInvites(l_table IN VARCHAR2) ;
-END ucbn_ldap;
-/
+-- V_ELEMENT_TYPE_MODULATEUR
+CREATE OR REPLACE FORCE VIEW "V_ELEMENT_TYPE_MODULATEUR" ("ELEMENT_PEDAGOGIQUE_ID", "TYPE_MODULATEUR_ID") AS
+  SELECT
+  ep.id element_pedagogique_id,
+  tms.type_modulateur_id type_modulateur_id
+FROM
+       element_pedagogique        ep
+  JOIN structure                   s ON s.id = ep.structure_id
+                                    AND s.histo_destruction IS NULL
 
--- UNICAEN_IMPORT
-CREATE OR REPLACE PACKAGE "UNICAEN_IMPORT" AS
+  JOIN type_modulateur_structure tms ON tms.structure_id = s.id
+                                    AND tms.histo_destruction IS NULL
+                                    AND ep.annee_id BETWEEN GREATEST(NVL(tms.annee_debut_id,0),ep.annee_id) AND LEAST(NVL(tms.annee_fin_id,9999),ep.annee_id)
 
-  z__SYNC_FILRE__z CLOB DEFAULT '';
-  z__IGNORE_UPD_COLS__z CLOB DEFAULT '';
+UNION
 
-  PROCEDURE set_current_user(p_current_user IN INTEGER);
-  FUNCTION get_current_user return INTEGER;
+SELECT
+  tm_ep.element_pedagogique_id element_pedagogique_id,
+  tm_ep.type_modulateur_id type_modulateur_id
+FROM
+  type_modulateur_ep tm_ep
+WHERE
+  tm_ep.histo_destruction IS NULL;
 
-  FUNCTION get_current_annee RETURN INTEGER;
-  PROCEDURE set_current_annee (p_current_annee INTEGER);
+-- V_ETAPE_NIVEAU_FORMATION
+CREATE OR REPLACE FORCE VIEW "V_ETAPE_NIVEAU_FORMATION" ("ETAPE_ID", "NIVEAU_FORMATION_ID") AS
+  SELECT
+  e.id etape_id,
+  nf.id niveau_formation_id
+FROM
+  etape e
+  JOIN type_formation tf ON tf.id = e.type_formation_id AND tf.histo_destruction IS NULL
+  JOIN groupe_type_formation gtf ON gtf.id = tf.groupe_id AND gtf.histo_destruction IS NULL
+  JOIN v_niveau_formation nf ON nf.code = gtf.libelle_court || e.niveau
+WHERE
+  e.histo_destruction IS NULL
+  AND gtf.pertinence_niveau = 1
+  AND e.niveau IS NOT NULL;
 
-  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 );
+-- V_ETAPE_TYPE_MODULATEUR
+CREATE OR REPLACE FORCE VIEW "V_ETAPE_TYPE_MODULATEUR" ("TYPE_MODULATEUR_ID", "ETAPE_ID") AS
+  SELECT DISTINCT
+  etm.type_modulateur_id type_modulateur_id,
+  ep.etape_id etape_id
+FROM
+  v_element_type_modulateur etm
+  JOIN element_pedagogique ep ON ep.id = etm.element_pedagogique_id AND ep.histo_destruction IS NULL;
 
-  PROCEDURE SYNCHRONISATION( table_name VARCHAR2, SYNC_FILRE CLOB DEFAULT '', IGNORE_UPD_COLS CLOB DEFAULT '' );
+-- V_ETAT_PAIEMENT
+CREATE OR REPLACE FORCE VIEW "V_ETAT_PAIEMENT" ("PERIODE_PAIEMENT_ID", "STRUCTURE_ID", "INTERVENANT_TYPE_ID", "INTERVENANT_ID", "ANNEE_ID", "CENTRE_COUT_ID", "DOMAINE_FONCTIONNEL_ID", "ETAT", "STRUCTURE_LIBELLE", "DATE_MISE_EN_PAIEMENT", "PERIODE_PAIEMENT_LIBELLE", "INTERVENANT_TYPE", "INTERVENANT_CODE", "INTERVENANT_NOM", "INTERVENANT_NUMERO_INSEE", "CENTRE_COUT_CODE", "CENTRE_COUT_LIBELLE", "DOMAINE_FONCTIONNEL_CODE", "DOMAINE_FONCTIONNEL_LIBELLE", "HETD", "HETD_POURC", "HETD_MONTANT", "REM_FC_D714", "EXERCICE_AA", "EXERCICE_AA_MONTANT", "EXERCICE_AC", "EXERCICE_AC_MONTANT") AS
+  SELECT
+  periode_paiement_id,
+  structure_id,
+  intervenant_type_id,
+  intervenant_id,
+  annee_id,
+  centre_cout_id,
+  domaine_fonctionnel_id,
+  etat,
+  structure_libelle,
+  date_mise_en_paiement,
+  periode_paiement_libelle,
+  intervenant_type,
+  intervenant_code,
+  intervenant_nom,
+  intervenant_numero_insee,
+  centre_cout_code,
+  centre_cout_libelle,
+  domaine_fonctionnel_code,
+  domaine_fonctionnel_libelle,
+  hetd,
+  CASE WHEN pourc_ecart >= 0 THEN
+    CASE WHEN RANK() OVER (PARTITION BY periode_paiement_id, intervenant_id, etat, structure_id ORDER BY CASE WHEN (pourc_ecart >= 0 AND pourc_diff >= 0) OR (pourc_ecart < 0 AND pourc_diff < 0) THEN pourc_diff ELSE -1 END DESC) <= (ABS(pourc_ecart) / 0.001) THEN hetd_pourc + (pourc_ecart / ABS(pourc_ecart) * 0.001) ELSE hetd_pourc END
+  ELSE
+    CASE WHEN RANK() OVER (PARTITION BY periode_paiement_id, intervenant_id, etat, structure_id ORDER BY CASE WHEN (pourc_ecart >= 0 AND pourc_diff >= 0) OR (pourc_ecart < 0 AND pourc_diff < 0) THEN pourc_diff ELSE -1 END) <= (ABS(pourc_ecart) / 0.001) THEN hetd_pourc + (pourc_ecart / ABS(pourc_ecart) * 0.001) ELSE hetd_pourc END
+  END hetd_pourc,
+  hetd_montant,
+  rem_fc_d714,
+  exercice_aa,
+  exercice_aa_montant,
+  exercice_ac,
+  exercice_ac_montant
+FROM
+(
+SELECT
+  dep3.*,
 
+  1-CASE WHEN hetd > 0 THEN SUM( hetd_pourc ) OVER ( PARTITION BY periode_paiement_id, intervenant_id, etat, structure_id) ELSE 0 END pourc_ecart
 
 
-END UNICAEN_IMPORT;
+FROM (
 
-/
-
--- UNICAEN_OSE_FORMULE
-CREATE OR REPLACE PACKAGE "UNICAEN_OSE_FORMULE" AS 
+SELECT
+  periode_paiement_id,
+  structure_id,
+  intervenant_type_id,
+  intervenant_id,
+  annee_id,
+  centre_cout_id,
+  domaine_fonctionnel_id,
+  etat,
+  structure_libelle,
+  date_mise_en_paiement,
+  periode_paiement_libelle,
+  intervenant_type,
+  intervenant_code,
+  intervenant_nom,
+  intervenant_numero_insee,
+  centre_cout_code,
+  centre_cout_libelle,
+  domaine_fonctionnel_code,
+  domaine_fonctionnel_libelle,
+  hetd,
+  ROUND( CASE WHEN hetd > 0 THEN hetd / SUM( hetd ) OVER( PARTITION BY periode_paiement_id, intervenant_id, etat, structure_id) ELSE 0 END, 3 ) hetd_pourc,
+  ROUND( hetd * taux_horaire, 2 ) hetd_montant,
+  ROUND( fc_majorees * taux_horaire, 2 ) rem_fc_d714,
+  exercice_aa,
+  ROUND( exercice_aa * taux_horaire, 2 ) exercice_aa_montant,
+  exercice_ac,
+  ROUND( exercice_ac * taux_horaire, 2 ) exercice_ac_montant,
 
-  PROCEDURE CALCUL_RESULTAT_V2( INTERVENANT_ID NUMERIC, TYPE_VOLUME_HORAIRE_ID NUMERIC, ETAT_VOLUME_HORAIRE_ID NUMERIC );
-  
-  PROCEDURE CALCUL_RESULTAT_V3( INTERVENANT_ID NUMERIC, TYPE_VOLUME_HORAIRE_ID NUMERIC, ETAT_VOLUME_HORAIRE_ID NUMERIC );
 
-  PROCEDURE PURGE_EM_NON_FC;
+  (CASE WHEN hetd > 0 THEN hetd / SUM( hetd ) OVER( PARTITION BY periode_paiement_id, intervenant_id, etat, structure_id) ELSE 0 END)
+  -
+  ROUND( CASE WHEN hetd > 0 THEN hetd / SUM( hetd ) OVER( PARTITION BY periode_paiement_id, intervenant_id, etat, structure_id) ELSE 0 END, 3 ) pourc_diff
 
-END UNICAEN_OSE_FORMULE;
-/
+FROM (
+  WITH dep AS ( -- détails par état de paiement
+  SELECT
+    CASE WHEN th.code = 'fc_majorees' THEN 1 ELSE 0 END                 is_fc_majoree,
+    p.id                                                                periode_paiement_id,
+    s.id                                                                structure_id,
+    i.id                                                                intervenant_id,
+    i.annee_id                                                          annee_id,
+    cc.id                                                               centre_cout_id,
+    df.id                                                               domaine_fonctionnel_id,
+    ti.id                                                               intervenant_type_id,
+    CASE
+        WHEN mep.date_mise_en_paiement IS NULL THEN 'a-mettre-en-paiement'
+        ELSE 'mis-en-paiement'
+    END                                                                 etat,
 
--- UNICAEN_TBL
-CREATE OR REPLACE PACKAGE "UNICAEN_TBL" AS 
+    p.libelle_long || ' ' || to_char( add_months( a.date_debut, p.ecart_mois ), 'yyyy' ) periode_paiement_libelle,
+    mep.date_mise_en_paiement                                           date_mise_en_paiement,
+    s.libelle_court                                                     structure_libelle,
+    ti.libelle                                                          intervenant_type,
+    i.source_code                                                       intervenant_code,
+    i.nom_usuel || ' ' || i.prenom                                      intervenant_nom,
+    TRIM( NVL(i.numero_insee,'') || NVL(TO_CHAR(i.numero_insee_cle,'00'),'') ) intervenant_numero_insee,
+    cc.source_code                                                      centre_cout_code,
+    cc.libelle                                                          centre_cout_libelle,
+    df.source_code                                                      domaine_fonctionnel_code,
+    df.libelle                                                          domaine_fonctionnel_libelle,
+    CASE WHEN th.code = 'fc_majorees' THEN 0 ELSE mep.heures END        hetd,
+    CASE WHEN th.code = 'fc_majorees' THEN mep.heures ELSE 0 END        fc_majorees,
+    mep.heures * 4 / 10                                                 exercice_aa,
+    mep.heures * 6 / 10                                                 exercice_ac,
+    --CASE WHEN th.code = 'fc_majorees' THEN 0 ELSE mep.heures END * 4 / 10                                                 exercice_aa,
+    --CASE WHEN th.code = 'fc_majorees' THEN 0 ELSE mep.heures END * 6 / 10                                                 exercice_ac,
+    OSE_FORMULE.GET_TAUX_HORAIRE_HETD( NVL(mep.date_mise_en_paiement,SYSDATE) )      taux_horaire
+  FROM
+    v_mep_intervenant_structure  mis
+    JOIN mise_en_paiement        mep ON mep.id = mis.mise_en_paiement_id AND mep.histo_destruction IS NULL
+    JOIN type_heures              th ON  th.id = mep.type_heures_id
+    JOIN centre_cout              cc ON  cc.id = mep.centre_cout_id      -- pas d'historique pour les centres de coût, qui devront tout de même apparaitre mais en erreur
+    JOIN intervenant               i ON   i.id = mis.intervenant_id      AND i.histo_destruction IS NULL
+    JOIN annee                     a ON   a.id = i.annee_id
+    JOIN statut_intervenant       si ON  si.id = i.statut_id
+    JOIN type_intervenant         ti ON  ti.id = si.type_intervenant_id
+    JOIN structure                 s ON   s.id = mis.structure_id
+    LEFT JOIN validation           v ON   v.id = mep.validation_id       AND v.histo_destruction IS NULL
+    LEFT JOIN domaine_fonctionnel df ON  df.id = mis.domaine_fonctionnel_id
+    LEFT JOIN periode              p ON   p.id = mep.periode_paiement_id
+  )
+  SELECT
+    periode_paiement_id,
+    structure_id,
+    intervenant_type_id,
+    intervenant_id,
+    annee_id,
+    centre_cout_id,
+    domaine_fonctionnel_id,
+    etat,
+    periode_paiement_libelle,
+    structure_libelle,
+    date_mise_en_paiement,
+    intervenant_type,
+    intervenant_code,
+    intervenant_nom,
+    intervenant_numero_insee,
+    centre_cout_code,
+    centre_cout_libelle,
+    domaine_fonctionnel_code,
+    domaine_fonctionnel_libelle,
+    SUM( hetd ) hetd,
+    SUM( fc_majorees ) fc_majorees,
+    SUM( exercice_aa ) exercice_aa,
+    SUM( exercice_ac ) exercice_ac,
+    taux_horaire
+  FROM
+    dep
+  GROUP BY
+    periode_paiement_id,
+    structure_id,
+    intervenant_type_id,
+    intervenant_id,
+    annee_id,
+    centre_cout_id,
+    domaine_fonctionnel_id,
+    etat,
+    periode_paiement_libelle,
+    structure_libelle,
+    date_mise_en_paiement,
+    intervenant_type,
+    intervenant_code,
+    intervenant_nom,
+    intervenant_numero_insee,
+    centre_cout_code,
+    centre_cout_libelle,
+    domaine_fonctionnel_code,
+    domaine_fonctionnel_libelle,
+    taux_horaire,
+    is_fc_majoree
+)
+dep2
+)
+dep3
+)
+dep4;
 
-  TYPE t_params IS RECORD (
-    c1 VARCHAR2(30), v1 VARCHAR2(80),
-    c2 VARCHAR2(30), v2 VARCHAR2(80),
-    c3 VARCHAR2(30), v3 VARCHAR2(80),
-    c4 VARCHAR2(30), v4 VARCHAR2(80),
-    c5 VARCHAR2(30), v5 VARCHAR2(80),
-    sqlcond CLOB
-  );
+-- V_EXPORT_DEPASS_CHARGES
+CREATE OR REPLACE FORCE VIEW "V_EXPORT_DEPASS_CHARGES" ("ANNEE_ID", "STRUCTURE_ID", "TYPE_INTERVENTION_ID", "ANNEE", "TYPE_VOLUME_HORAIRE_CODE", "INTERVENANT_CODE", "INTERVENANT_NOM", "INTERVENANT_DATE_NAISSANCE", "INTERVENANT_STATUT_LIBELLE", "INTERVENANT_TYPE_CODE", "INTERVENANT_TYPE_LIBELLE", "STRUCTURE_AFF_LIBELLE", "STRUCTURE_ENS_LIBELLE", "GROUPE_TYPE_FORMATION_LIBELLE", "TYPE_FORMATION_LIBELLE", "ETAPE_NIVEAU", "ETAPE_CODE", "ETAPE_LIBELLE", "ELEMENT_CODE", "ELEMENT_LIBELLE", "ELEMENT_TAUX_FI", "ELEMENT_TAUX_FC", "ELEMENT_TAUX_FA", "ELEMENT_SOURCE_LIBELLE", "PERIODE", "TYPE_INTERVENTION_CODE", "HEURES_SERVICE", "SOURCE_CHARGES", "HEURES_CHARGES", "GROUPES_CHARGES", "HEURES_DEPASSEMENT") AS
+  WITH c AS (
+  SELECT
+    vhe.element_pedagogique_id,
+    vhe.type_intervention_id,
+    CASE WHEN MAX(vhe.groupes) IS NULL THEN
+      'Charges OSE' ELSE s.libelle END source,
+    MAX(vhe.heures) heures,
+    COALESCE( MAX(vhe.groupes), ROUND(SUM(t.groupes),10) ) groupes
 
-  ACTIV_TRIGGERS BOOLEAN DEFAULT TRUE;
-  ACTIV_CALCULS  BOOLEAN DEFAULT TRUE;
-  CALCUL_PROC_PARAMS t_params;
+  FROM
+    volume_horaire_ens     vhe
+         JOIN parametre p ON p.nom = 'scenario_charges_services'
+         JOIN source    s ON s.id = vhe.source_id
+    LEFT JOIN tbl_chargens   t ON t.element_pedagogique_id = vhe.element_pedagogique_id
+                              AND t.type_intervention_id = vhe.type_intervention_id
+                              AND t.scenario_id = to_number(p.valeur)
+  WHERE
+    vhe.histo_destruction IS NULL
+  GROUP BY
+    vhe.element_pedagogique_id,
+    vhe.type_intervention_id,
+    s.libelle
+), s AS (
+  SELECT
+    i.annee_id,
+    vh.type_volume_horaire_id,
+    s.intervenant_id,
+    s.element_pedagogique_id,
+    vh.type_intervention_id,
+    SUM(vh.heures) heures
+  FROM
+    volume_horaire vh
+    JOIN service     s ON s.id = vh.service_id
+                      AND s.element_pedagogique_id IS NOT NULL
+                      AND s.histo_destruction IS NULL
+    JOIN intervenant i ON i.id = s.intervenant_id
+                      AND i.histo_destruction IS NULL
+  WHERE
+    vh.histo_destruction IS NULL
+  GROUP BY
+    i.annee_id,
+    vh.type_volume_horaire_id,
+    s.intervenant_id,
+    s.element_pedagogique_id,
+    vh.type_intervention_id
+)
+SELECT
+  s.annee_id                                  annee_id,
+  sens.id                                     structure_id,
+  tiv.id                                      type_intervention_id,
 
-  FUNCTION MAKE_PARAMS(
-    c1 VARCHAR2 DEFAULT NULL, v1 VARCHAR2 DEFAULT NULL,
-    c2 VARCHAR2 DEFAULT NULL, v2 VARCHAR2 DEFAULT NULL,
-    c3 VARCHAR2 DEFAULT NULL, v3 VARCHAR2 DEFAULT NULL,
-    c4 VARCHAR2 DEFAULT NULL, v4 VARCHAR2 DEFAULT NULL,
-    c5 VARCHAR2 DEFAULT NULL, v5 VARCHAR2 DEFAULT NULL,
-    sqlcond CLOB DEFAULT NULL
-  ) RETURN t_params;
+  a.libelle                                   annee,
+  tvh.libelle                                 type_volume_horaire_code,
+  i.source_code                               intervenant_code,
+  i.nom_usuel || ' ' || i.prenom              intervenant_nom,
+  i.date_naissance                            intervenant_date_naissance,
+  si.libelle                                  intervenant_statut_libelle,
 
-  FUNCTION PARAMS_FROM_DEMS( TBL_NAME VARCHAR2 ) RETURN t_params;
-  FUNCTION PARAMS_TO_CONDS ( PARAMS UNICAEN_TBL.T_PARAMS ) RETURN CLOB;
+  ti.code                                     intervenant_type_code,
+  ti.libelle                                  intervenant_type_libelle,
+  CASE WHEN ti.code = 'P' THEN saff.libelle_court ELSE NULL END structure_aff_libelle,
+  sens.libelle_court                          structure_ens_libelle,
 
-  PROCEDURE DEMANDE_CALCUL( TBL_NAME VARCHAR2 );
-  PROCEDURE DEMANDE_CALCUL( TBL_NAME VARCHAR2, CONDS CLOB );
-  PROCEDURE DEMANDE_CALCUL( TBL_NAME VARCHAR2, PARAMS t_params );
+  gtf.libelle_court                           groupe_type_formation_libelle,
+  tf.libelle_court                            type_formation_libelle,
+  etp.niveau                                  etape_niveau,
+  etp.source_code                             etape_code,
+  etp.libelle                                 etape_libelle,
+  ep.source_code                              element_code,
+  ep.libelle                                  element_libelle,
+  ep.taux_fi                                  element_taux_fi,
+  ep.taux_fc                                  element_taux_fc,
+  ep.taux_fa                                  element_taux_fa,
+  src.libelle                                 element_source_libelle,
+  p.libelle_court                             periode,
+  tiv.code                                    type_intervention_code,
+  s.heures                                    heures_service,
+  c.source                                    source_charges,
+  c.heures                                    heures_charges,
+  c.groupes                                   groupes_charges,
+  s.heures - COALESCE(c.heures * c.groupes,0) heures_depassement
+FROM
+                                    s
+       JOIN annee                   a ON a.id = s.annee_id
+       JOIN type_volume_horaire   tvh ON tvh.id = s.type_volume_horaire_id
+       JOIN intervenant             i ON i.id = s.intervenant_id
+       JOIN statut_intervenant     si ON si.id = i.statut_id
+       JOIN type_intervenant       ti ON ti.id = si.type_intervenant_id
+       JOIN element_pedagogique    ep ON ep.id = s.element_pedagogique_id
+       JOIN etape                 etp ON etp.id = ep.etape_id
+       JOIN type_formation         tf ON tf.id = etp.type_formation_id
+       JOIN groupe_type_formation gtf ON gtf.id = tf.groupe_id
+       JOIN structure            saff ON saff.id = i.structure_id
+       JOIN structure            sens ON sens.id = ep.structure_id
+       JOIN source                src ON src.id = ep.source_id
+       JOIN type_intervention     tiv ON tiv.id = s.type_intervention_id
+  LEFT JOIN                         c ON c.element_pedagogique_id = s.element_pedagogique_id
+                                     AND c.type_intervention_id = COALESCE(tiv.type_intervention_maquette_id,tiv.id)
+  LEFT JOIN periode                 p ON p.id = ep.periode_id;
 
-  PROCEDURE CALCULER( TBL_NAME VARCHAR2 );
-  PROCEDURE CALCULER( TBL_NAME VARCHAR2, CONDS CLOB );
-  PROCEDURE CALCULER( TBL_NAME VARCHAR2, PARAMS t_params );
-
-  PROCEDURE ANNULER_DEMANDES;
-  PROCEDURE ANNULER_DEMANDES( TBL_NAME VARCHAR2 );
-  PROCEDURE CALCULER_DEMANDES;
-
-  -- AUTOMATIC GENERATION --
-
-  PROCEDURE C_AGREMENT( PARAMS UNICAEN_TBL.T_PARAMS );
-  PROCEDURE C_CHARGENS( PARAMS UNICAEN_TBL.T_PARAMS );
-  PROCEDURE C_CHARGENS_SEUILS_DEF( PARAMS UNICAEN_TBL.T_PARAMS );
-  PROCEDURE C_CLOTURE_REALISE( PARAMS UNICAEN_TBL.T_PARAMS );
-  PROCEDURE C_CONTRAT( PARAMS UNICAEN_TBL.T_PARAMS );
-  PROCEDURE C_DMEP_LIQUIDATION( PARAMS UNICAEN_TBL.T_PARAMS );
-  PROCEDURE C_DOSSIER( PARAMS UNICAEN_TBL.T_PARAMS );
-  PROCEDURE C_PAIEMENT( PARAMS UNICAEN_TBL.T_PARAMS );
-  PROCEDURE C_PIECE_JOINTE( PARAMS UNICAEN_TBL.T_PARAMS );
-  PROCEDURE C_PIECE_JOINTE_DEMANDE( PARAMS UNICAEN_TBL.T_PARAMS );
-  PROCEDURE C_PIECE_JOINTE_FOURNIE( PARAMS UNICAEN_TBL.T_PARAMS );
-  PROCEDURE C_SERVICE( PARAMS UNICAEN_TBL.T_PARAMS );
-  PROCEDURE C_SERVICE_REFERENTIEL( PARAMS UNICAEN_TBL.T_PARAMS );
-  PROCEDURE C_SERVICE_SAISIE( PARAMS UNICAEN_TBL.T_PARAMS );
-  PROCEDURE C_VALIDATION_ENSEIGNEMENT( PARAMS UNICAEN_TBL.T_PARAMS );
-  PROCEDURE C_VALIDATION_REFERENTIEL( PARAMS UNICAEN_TBL.T_PARAMS );
-
-  -- END OF AUTOMATIC GENERATION --
-
-END UNICAEN_TBL;
-/
-
---------------------------------------------------
--- Vues
---------------------------------------------------
-
--- V_AGREMENT_EXPORT_CSV
-CREATE OR REPLACE FORCE VIEW "V_AGREMENT_EXPORT_CSV" ("ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID", "ANNEE", "STRUCTURE_LIBELLE", "INTERVENANT_CODE", "INTERVENANT_NOM_USUEL", "INTERVENANT_NOM_PATRONYMIQUE", "INTERVENANT_PRENOM", "INTERVENANT_STATUT_LIBELLE", "PREMIER_RECRUTEMENT", "DISCIPLINE", "HETD_FI", "HETD_FA", "HETD_FC", "HETD_TOTAL", "TYPE_AGREMENT", "AGREE", "DATE_DECISION", "MODIFICATEUR", "DATE_MODIFICATION") AS 
-  WITH heures_s AS (
+-- V_EXPORT_DMEP
+CREATE OR REPLACE FORCE VIEW "V_EXPORT_DMEP" ("INTERVENANT_ID", "TYPE_INTERVENANT_ID", "ANNEE_ID", "STRUCTURE_AFF_ID", "STRUCTURE_ENS_ID", "STRUCTURE_ID", "CENTRE_COUT_ID", "ELEMENT_PEDAGOGIQUE_ID", "ETAPE_ID", "TYPE_FORMATION_ID", "GROUPE_TYPE_FORMATION_ID", "STATUT_INTERVENANT_ID", "PERIODE_ID", "INTERVENANT_CODE", "INTERVENANT_NOM", "INTERVENANT_DATE_NAISSANCE", "INTERVENANT_STATUT_LIBELLE", "INTERVENANT_TYPE_CODE", "INTERVENANT_TYPE_LIBELLE", "INTERVENANT_GRADE_CODE", "INTERVENANT_GRADE_LIBELLE", "INTERVENANT_DISCIPLINE_CODE", "INTERVENANT_DISCIPLINE_LIBELLE", "SERVICE_STRUCTURE_AFF_LIBELLE", "SERVICE_STRUCTURE_ENS_LIBELLE", "ETABLISSEMENT_LIBELLE", "GROUPE_TYPE_FORMATION_LIBELLE", "TYPE_FORMATION_LIBELLE", "ETAPE_NIVEAU", "ETAPE_CODE", "ETAPE_LIBELLE", "ELEMENT_CODE", "ELEMENT_LIBELLE", "ELEMENT_DISCIPLINE_CODE", "ELEMENT_DISCIPLINE_LIBELLE", "FONCTION_REFERENTIEL_LIBELLE", "ELEMENT_TAUX_FI", "ELEMENT_TAUX_FC", "ELEMENT_TAUX_FA", "ELEMENT_SOURCE_LIBELLE", "COMMENTAIRES", "ETAT", "TYPE_RESSOURCE_LIBELLE", "CENTRE_COUTS_CODE", "CENTRE_COUTS_LIBELLE", "DOMAINE_FONCTIONNEL_CODE", "DOMAINE_FONCTIONNEL_LIBELLE", "PERIODE_LIBELLE", "DATE_MISE_EN_PAIEMENT", "HEURES_FI", "HEURES_FA", "HEURES_FC", "HEURES_FC_MAJOREES", "HEURES_REFERENTIEL") AS
+  WITH mep AS (
   SELECT
-    i.id                                      intervenant_id,
-    COALESCE(ep.structure_id,i.structure_id)  structure_id,
-    SUM(frs.service_fi)                       service_fi,
-    SUM(frs.service_fa)                       service_fa, 
-    SUM(frs.service_fc)                       service_fc,
-    SUM(frs.heures_compl_fi)                  heures_compl_fi,
-    SUM(frs.heures_compl_fa)                  heures_compl_fa,
-    SUM(frs.heures_compl_fc)                  heures_compl_fc,
-    SUM(frs.heures_compl_fc_majorees)         heures_compl_fc_majorees,
-    SUM(frs.total)                            total
+    frs.service_id,
+    frsr.service_referentiel_id,
+    mep.date_mise_en_paiement,
+    mep.periode_paiement_id,
+    mep.centre_cout_id,
+    mep.domaine_fonctionnel_id,
+
+    sum(case when th.code = 'fi' then mep.heures else 0 end) heures_fi,
+    sum(case when th.code = 'fa' then mep.heures else 0 end) heures_fa,
+    sum(case when th.code = 'fc' then mep.heures else 0 end) heures_fc,
+    sum(case when th.code = 'fc_majorees' then mep.heures else 0 end) heures_fc_majorees,
+    sum(case when th.code = 'referentiel' then mep.heures else 0 end) heures_referentiel
   FROM
-              formule_resultat_service frs
-         JOIN type_volume_horaire      tvh ON tvh.code = 'PREVU'
-         JOIN etat_volume_horaire      evh ON evh.code = 'valide'
-         JOIN formule_resultat          fr ON fr.id = frs.formule_resultat_id
-                                          AND fr.type_volume_horaire_id = tvh.id
-                                          AND fr.etat_volume_horaire_id = evh.id
-         JOIN intervenant                i ON i.id = fr.intervenant_id
-         JOIN service                    s ON s.id = frs.service_id
-    LEFT JOIN element_pedagogique       ep ON ep.id = s.element_pedagogique_id
+              mise_en_paiement              mep
+         JOIN type_heures                    th ON th.id   = mep.type_heures_id
+    LEFT JOIN formule_resultat_service      frs ON frs.id  = mep.formule_res_service_id
+    LEFT JOIN formule_resultat_service_ref frsr ON frsr.id = mep.formule_res_service_ref_id
+  WHERE
+    mep.histo_destruction IS NULL
   GROUP BY
-    i.id, 
-    ep.structure_id, 
-    i.structure_id
+    frs.service_id,
+    frsr.service_referentiel_id,
+    mep.date_mise_en_paiement,
+    mep.periode_paiement_id,
+    mep.centre_cout_id,
+    mep.domaine_fonctionnel_id
 )
 SELECT
-  a.id                                                                        annee_id,
-  i.id                                                                        intervenant_id,
-  s.id                                                                        structure_id,
-  
-  a.libelle                                                                   annee,
-  s.libelle_court                                                             structure_libelle,
-  i.code                                                                      intervenant_code,
-  i.nom_usuel                                                                 intervenant_nom_usuel,
-  i.nom_patronymique                                                          intervenant_nom_patronymique,
-  i.prenom                                                                    intervenant_prenom,
-  
-  si.libelle                                                                  intervenant_statut_libelle,
-  i.premier_recrutement                                                       premier_recrutement,
-  d.libelle_court                                                             discipline,
-  
-  COALESCE(heures_s.service_fi, fr.service_fi) 
-  + COALESCE(heures_s.heures_compl_fi, fr.heures_compl_fi) 
-                                                                              hetd_fi,
-  COALESCE(heures_s.service_fa, fr.service_fa) 
-  + COALESCE(heures_s.heures_compl_fa, fr.heures_compl_fa)          
-                                                                              hetd_fa,
-  COALESCE(heures_s.service_fc, fr.service_fc) 
-  + COALESCE(heures_s.heures_compl_fc, fr.heures_compl_fc) 
-  + COALESCE(heures_s.heures_compl_fc_majorees, fr.heures_compl_fc_majorees) 
-                                                                              hetd_fc,
-  COALESCE(heures_s.total, fr.total)                                          hetd_total,
-  
-  
-  
-  
-  tagr.libelle                                                                type_agrement,
-  CASE WHEN agr.id IS NULL THEN 0 ELSE 1 END                                  agree,
-  agr.date_decision                                                           date_decision,
-  u.display_name                                                              modificateur,
-  agr.histo_modification                                                      date_modification
-FROM
-            tbl_agrement             ta
-       JOIN intervenant               i ON i.id = ta.intervenant_id
-       JOIN statut_intervenant       si ON si.id = i.statut_id
-       JOIN annee                     a ON a.id = ta.annee_id
-       JOIN type_agrement          tagr ON tagr.id = ta.type_agrement_id
-       JOIN type_volume_horaire     tvh ON tvh.code = 'PREVU'
-       JOIN etat_volume_horaire     evh ON evh.code = 'valide'
-  
-  
-  LEFT JOIN structure                 s ON s.id = ta.structure_id
-  LEFT JOIN agrement                agr ON agr.id = ta.agrement_id
-  LEFT JOIN utilisateur               u ON u.id = agr.histo_modificateur_id
-  LEFT JOIN discipline                d ON d.id = i.discipline_id
-  
-  LEFT JOIN formule_resultat         fr ON fr.intervenant_id = i.id 
-                                       AND fr.type_volume_horaire_id = tvh.id
-                                       AND fr.etat_volume_horaire_id = evh.id
-                                       
-  LEFT JOIN heures_s                    ON heures_s.intervenant_id = i.id
-                                       AND heures_s.structure_id = s.id;
-
--- V_CENTRE_COUT_STRUCTURE
-CREATE OR REPLACE FORCE VIEW "V_CENTRE_COUT_STRUCTURE" ("CENTRE_COUT_ID", "STRUCTURE_ID") AS 
-  SELECT
-  ccs.centre_cout_id,
-  ccs.structure_id
-FROM
-  centre_cout_structure ccs
-WHERE
-  ccs.histo_destruction IS NULL;
-
--- V_CENTRE_COUT_TYPE_HEURES
-CREATE OR REPLACE FORCE VIEW "V_CENTRE_COUT_TYPE_HEURES" ("CENTRE_COUT_ID", "TYPE_HEURES_ID") AS 
-  select 
-  cc.id centre_cout_id, 
-  th.id type_heures_id
-from
-  centre_cout cc
-  join type_ressource  tr on tr.id = cc.type_ressource_id
-  join cc_activite    cca on cca.id = cc.activite_id
-  join type_heures     th on th.code = decode(tr.fi + cca.fi, 2, 'fi', null)
-  
-union all
-
-select
-  cc.id centre_cout_id,
-  th.id type_heures_id
-from
-  centre_cout cc
-  join type_ressource  tr on tr.id = cc.type_ressource_id
-  join cc_activite    cca on cca.id = cc.activite_id
-  join type_heures     th on th.code = decode(tr.fc + cca.fc, 2, 'fc', null)
-
-union all
-
-select 
-  cc.id centre_cout_id,
-  th.id type_heures_id
-from
-  centre_cout cc
-  join type_ressource  tr on tr.id = cc.type_ressource_id
-  join cc_activite    cca on cca.id = cc.activite_id
-  join type_heures     th on th.code = decode(tr.fa + cca.fa, 2, 'fa', null)
-
-union all
+  i.id                            intervenant_id,
+  ti.id                           type_intervenant_id,
+  i.annee_id                      annee_id,
+  saff.id                         structure_aff_id,
+  sens.id                         structure_ens_id,
+  NVL(sens.id,saff.id)            structure_id,
+  cc.id                           centre_cout_id,
+  ep.id                           element_pedagogique_id,
+  etp.id                          etape_id,
+  tf.id                           type_formation_id,
+  gtf.id                          groupe_type_formation_id,
+  si.id                           statut_intervenant_id,
+  p.id                            periode_id,
 
-select 
-  cc.id centre_cout_id,
-  th.id type_heures_id
-from
-  centre_cout cc
-  join type_ressource  tr on tr.id = cc.type_ressource_id
-  join cc_activite    cca on cca.id = cc.activite_id
-  join type_heures     th on th.code = decode(tr.referentiel + cca.referentiel, 2, 'referentiel', null)
+  i.source_code                   intervenant_code,
+  i.nom_usuel || ' ' || i.prenom  intervenant_nom,
+  i.date_naissance                intervenant_date_naissance,
+  si.libelle                      intervenant_statut_libelle,
+  ti.code                         intervenant_type_code,
+  ti.libelle                      intervenant_type_libelle,
+  g.source_code                   intervenant_grade_code,
+  g.libelle_court                 intervenant_grade_libelle,
+  di.source_code                  intervenant_discipline_code,
+  di.libelle_court                intervenant_discipline_libelle,
+  saff.libelle_court              service_structure_aff_libelle,
 
-union all
+  sens.libelle_court              service_structure_ens_libelle,
+  etab.libelle                    etablissement_libelle,
+  gtf.libelle_court               groupe_type_formation_libelle,
+  tf.libelle_court                type_formation_libelle,
+  etp.niveau                      etape_niveau,
+  etp.source_code                 etape_code,
+  etp.libelle                     etape_libelle,
+  ep.source_code                  element_code,
+  ep.libelle                      element_libelle,
+  de.source_code                  element_discipline_code,
+  de.libelle_court                element_discipline_libelle,
+  fr.libelle_long                 fonction_referentiel_libelle,
+  ep.taux_fi                      element_taux_fi,
+  ep.taux_fc                      element_taux_fc,
+  ep.taux_fa                      element_taux_fa,
+  src.libelle                     element_source_libelle,
+  COALESCE(to_char(s.description),to_char(sr.commentaires)) commentaires,
 
-select 
-  cc.id centre_cout_id,
-  th.id type_heures_id
-from
-  centre_cout cc
-  join type_ressource  tr on tr.id = cc.type_ressource_id
-  join cc_activite    cca on cca.id = cc.activite_id
-  join type_heures     th on th.code = decode(tr.fc_majorees + cca.fc_majorees, 2, 'fc_majorees', null);
+  CASE
+    WHEN mep.date_mise_en_paiement IS NULL THEN 'a-mettre-en-paiement'
+    ELSE 'mis-en-paiement'
+  END                             etat,
+  tr.libelle                      type_ressource_libelle,
+  cc.source_code                  centre_couts_code,
+  cc.libelle                      centre_couts_libelle,
+  df.source_code                  domaine_fonctionnel_code,
+  df.libelle                      domaine_fonctionnel_libelle,
+  p.libelle_long                  periode_libelle,
+  mep.date_mise_en_paiement       date_mise_en_paiement,
+  mep.heures_fi                   heures_fi,
+  mep.heures_fa                   heures_fa,
+  mep.heures_fc                   heures_fc,
+  mep.heures_fc_majorees          heures_fc_majorees,
+  mep.heures_referentiel          heures_referentiel
+FROM
+              mep
+         JOIN centre_cout               cc ON cc.id   = mep.centre_cout_id
+         JOIN type_ressource            tr ON tr.id   = cc.type_ressource_id
+    LEFT JOIN service                    s ON s.id    = mep.service_id
+    LEFT JOIN element_pedagogique       ep ON ep.id   = s.element_pedagogique_id
+    LEFT JOIN source                   src ON src.id  = ep.source_id OR (ep.source_id IS NULL AND src.code = 'OSE')
+    LEFT JOIN discipline                de ON de.id   = ep.discipline_id
+    LEFT JOIN etape                    etp ON etp.id  = ep.etape_id
+    LEFT JOIN type_formation            tf ON tf.id   = etp.type_formation_id
+    LEFT JOIN groupe_type_formation    gtf ON gtf.id  = tf.groupe_id
+    LEFT JOIN service_referentiel       sr ON sr.id   = mep.service_referentiel_id
+    LEFT JOIN fonction_referentiel      fr ON fr.id   = sr.fonction_id
+         JOIN intervenant                i ON i.id    = NVL( s.intervenant_id, sr.intervenant_id )
+         JOIN statut_intervenant        si ON si.id   = i.statut_id
+         JOIN type_intervenant          ti ON ti.id   = si.type_intervenant_id
+    LEFT JOIN grade                      g ON g.id    = i.grade_id
+    LEFT JOIN discipline                di ON di.id   = i.discipline_id
+    LEFT JOIN structure               saff ON saff.id = i.structure_id AND ti.code = 'P'
+    LEFT JOIN structure               sens ON sens.id = NVL( ep.structure_id, sr.structure_id )
+         JOIN etablissement           etab ON etab.id = NVL( s.etablissement_id, ose_parametre.get_etablissement() )
+    LEFT JOIN periode                    p ON p.id    = mep.periode_paiement_id
+    LEFT JOIN domaine_fonctionnel       df ON df.id   = mep.domaine_fonctionnel_id
+ORDER BY
+  intervenant_nom,
+  service_structure_aff_libelle,
+  service_structure_ens_libelle,
+  etape_libelle,
+  element_libelle;
 
--- V_CHARGENS_CALC_EFFECTIF
-CREATE OR REPLACE FORCE VIEW "V_CHARGENS_CALC_EFFECTIF" ("NOEUD_ID", "SCENARIO_ID", "SCENARIO_NOEUD_ID", "TYPE_HEURES_ID", "ETAPE_ID", "EFFECTIF") AS 
+-- V_EXPORT_PAIEMENT_WINPAIE
+CREATE OR REPLACE FORCE VIEW "V_EXPORT_PAIEMENT_WINPAIE" ("TYPE_INTERVENANT_ID", "ANNEE_ID", "STRUCTURE_ID", "PERIODE_PAIEMENT_ID", "INTERVENANT_ID", "INSEE", "NOM", "CARTE", "CODE_ORIGINE", "RETENUE", "SENS", "MC", "NBU", "MONTANT", "LIBELLE") AS
   SELECT
-  gl.noeud_inf_id             noeud_id,
-  snsup.scenario_id           scenario_id,
-  sninf.id                    scenario_noeud_id,
-  sne.type_heures_id          type_heures_id,
-  sne.etape_id                etape_id,
---  sne.effectif                effectif,
---  slsup.choix_minimum         choix_minimum,
---  slsup.choix_maximum         choix_maximum,
---  COALESCE(slinf.poids,1)     poids,
---  COALESCE(sninf.assiduite,1) assiduite,
---  MIN(COALESCE(sl.poids,1))   min_poids,
---  MAX(COALESCE(sl.poids,1))   max_poids,
---  SUM(COALESCE(sl.poids,1))   total_poids,
---  COUNT(*)                    nb_choix,
-  OSE_CHARGENS.CALC_COEF(
-    slsup.choix_minimum, 
-    slsup.choix_maximum, 
-    COALESCE(slinf.poids,1), 
-    MAX(COALESCE(sl.poids,1)), 
-    SUM(COALESCE(sl.poids,1)), 
-    COUNT(*)
-  ) * sne.effectif effectif
-FROM
-            v_chargens_grands_liens  gl
-       JOIN scenario_noeud        snsup ON snsup.noeud_id = gl.noeud_sup_id 
-                                       AND snsup.histo_destruction IS NULL
-
-       JOIN scenario_noeud_effectif sne ON sne.scenario_noeud_id = snsup.id
-
-  LEFT JOIN scenario_lien         slsup ON slsup.histo_destruction IS NULL 
-                                       AND slsup.lien_id = gl.lien_sup_id
-                                       AND slsup.scenario_id = snsup.scenario_id
+  si.type_intervenant_id type_intervenant_id,
+  i.annee_id,
+  t2.structure_id,
+  t2.periode_paiement_id,
+  i.id intervenant_id,
 
-  LEFT JOIN scenario_lien         slinf ON slinf.histo_destruction IS NULL 
-                                       AND slinf.lien_id = gl.lien_inf_id
-                                       AND slinf.scenario_id = snsup.scenario_id
-                                       
-  LEFT JOIN scenario_noeud        sninf ON sninf.noeud_id = gl.noeud_inf_id
-                                       AND sninf.scenario_id = snsup.scenario_id
-                                       AND sninf.histo_destruction IS NULL
+  NVL(i.numero_insee,'') || TRIM(NVL(TO_CHAR(i.numero_insee_cle,'00'),'')) insee,
+  i.nom_usuel || ',' || i.prenom nom,
+  to_char((SELECT valeur FROM parametre WHERE nom = 'winpaie_carte' AND histo_destruction IS NULL)) carte,
+  t2.code_origine,
+  to_char((SELECT valeur FROM parametre WHERE nom = 'winpaie_retenue' AND histo_destruction IS NULL)) retenue,
+  to_char((SELECT valeur FROM parametre WHERE nom = 'winpaie_sens' AND histo_destruction IS NULL)) sens,
+  to_char((SELECT valeur FROM parametre WHERE nom = 'winpaie_mc' AND histo_destruction IS NULL)) mc,
+  t2.nbu,
+  OSE_FORMULE.GET_TAUX_HORAIRE_HETD( NVL(t2.date_mise_en_paiement,SYSDATE) ) montant,
+  COALESCE(t2.unite_budgetaire,'') || ' ' || to_char(i.annee_id) || ' ' || to_char(i.annee_id+1)
+  /*  || ' ' || to_char(FLOOR(t2.nbu)) || ' H' || CASE
+      WHEN to_char(ROUND( t2.nbu-FLOOR(t2.nbu), 2 )*100,'00') = ' 00' THEN ''
+      ELSE to_char(ROUND( t2.nbu-FLOOR(t2.nbu), 2 )*100,'00') END*/ libelle
+FROM (
+  SELECT
+    structure_id,
+    periode_paiement_id,
+    intervenant_id,
+    code_origine,
+    ROUND( SUM(nbu), 2) nbu,
+    unite_budgetaire,
+    date_mise_en_paiement
+  FROM (
+    WITH mep AS (
+    SELECT
+      -- pour les filtres
+      mep.id,
+      mis.structure_id,
+      mep.periode_paiement_id,
+      mis.intervenant_id,
+      mep.heures,
+      cc.unite_budgetaire,
+      mep.date_mise_en_paiement
+    FROM
+      v_mep_intervenant_structure  mis
+      JOIN mise_en_paiement        mep ON mep.id = mis.mise_en_paiement_id AND mep.histo_destruction IS NULL
+      JOIN centre_cout              cc ON cc.id = mep.centre_cout_id
+      JOIN type_heures              th ON th.id = mep.type_heures_id
+    WHERE
+      mep.date_mise_en_paiement IS NOT NULL
+      AND mep.periode_paiement_id IS NOT NULL
+      AND th.eligible_extraction_paie = 1
+    )
+    SELECT
+      mep.id,
+      mep.structure_id,
+      mep.periode_paiement_id,
+      mep.intervenant_id,
+      2 code_origine,
+      mep.heures * 4 / 10 nbu,
+      mep.unite_budgetaire,
+      mep.date_mise_en_paiement
+    FROM
+      mep
+    WHERE
+      mep.heures * 4 / 10 > 0
 
-       JOIN lien                      l ON l.noeud_sup_id = gl.noeud_liste_id 
-                                       AND l.histo_destruction IS NULL
+    UNION
 
-  LEFT JOIN scenario_lien            sl ON sl.lien_id = l.id 
-                                       AND sl.scenario_id = snsup.scenario_id 
-                                       AND sl.histo_destruction IS NULL
+    SELECT
+      mep.id,
+      mep.structure_id,
+      mep.periode_paiement_id,
+      mep.intervenant_id,
+      1 code_origine,
+      mep.heures * 6 / 10 nbu,
+      mep.unite_budgetaire,
+      mep.date_mise_en_paiement
+    FROM
+      mep
+    WHERE
+      mep.heures * 6 / 10 > 0
+  ) t1
+  GROUP BY
+    structure_id,
+    periode_paiement_id,
+    intervenant_id,
+    code_origine,
+    unite_budgetaire,
+    date_mise_en_paiement
+) t2
+JOIN intervenant i ON i.id = t2.intervenant_id
+JOIN statut_intervenant si ON si.id = i.statut_id
+JOIN structure s ON s.id = t2.structure_id;
 
-WHERE
-  (slsup.actif = 1 OR slsup.actif IS NULL)
-  AND (slinf.actif = 1 OR slinf.actif IS NULL)
-  AND (sl.actif = 1 OR sl.actif IS NULL)
-  AND (snsup.scenario_id = 0 OR NULL IS NULL)
-  AND (sne.type_heures_id = 0 OR NULL IS NULL)
-  AND (sne.etape_id = 0 OR NULL IS NULL)
-GROUP BY
-  gl.noeud_sup_id,
-  gl.noeud_inf_id,
-  snsup.scenario_id,
-  sninf.id,
-  sne.type_heures_id,
-  sne.etape_id,
-  sne.effectif,
-  slsup.choix_minimum,
-  slsup.choix_maximum,
-  slinf.poids;
+-- V_EXPORT_PILOTAGE_ECARTS_ETATS
+CREATE OR REPLACE FORCE VIEW "V_EXPORT_PILOTAGE_ECARTS_ETATS" ("ANNEE_ID", "ANNEE", "ETAT", "TYPE_HEURES_ID", "TYPE_HEURES", "STRUCTURE_ID", "STRUCTURE", "INTERVENANT_ID", "INTERVENANT_TYPE", "INTERVENANT_CODE", "INTERVENANT", "HETD_PAYABLES") AS
+  SELECT
+  t3.annee_id annee_id,
+  t3.annee_id || '-' || (t3.annee_id+1) annee,
+  t3.etat,
+  t3.type_heures_id,
+  t3.type_heures,
+  s.id structure_id,
+  s.libelle_court structure,
+  i.id intervenant_id,
+  ti.libelle intervenant_type,
+  i.source_code intervenant_code,
+  i.prenom || ' ' || i.nom_usuel intervenant,
+  t3.hetd_payables
+FROM
 
--- V_CHARGENS_EXPORT_CSV
-CREATE OR REPLACE FORCE VIEW "V_CHARGENS_EXPORT_CSV" ("ANNEE_ID", "SCENARIO_ID", "STRUCTURE_PORTEUSE_ID", "STRUCTURE_INS_ID", "ANNEE", "STRUCTURE_PORTEUSE_CODE", "STRUCTURE_PORTEUSE_LIBELLE", "ETAPE_PORTEUSE_CODE", "ETAPE_PORTEUSE_LIBELLE", "STRUCTURE_INS_CODE", "STRUCTURE_INS_LIBELLE", "ETAPE_INS_CODE", "ETAPE_INS_LIBELLE", "ELEMENT_CODE", "ELEMENT_LIBELLE", "PERIODE", "DISCIPLINE_CODE", "DISCIPLINE_LIBELLE", "TYPE_HEURES", "TYPE_INTERVENTION", "SEUIL_OUVERTURE", "SEUIL_DEDOUBLEMENT", "ASSIDUITE", "EFFECTIF_ETAPE", "EFFECTIF_ELEMENT", "HEURES_ENS", "GROUPES", "HEURES", "HETD") AS 
+(
+SELECT
+  annee_id,
+  etat,
+  type_heures_id,
+  type_heures,
+  structure_id,
+  intervenant_id,
+  sum(hetd) hetd_payables
+FROM (
   SELECT
-  a.id              annee_id,
-  cph.scenario_id   scenario_id,
-  sp.id             structure_porteuse_id,
-  si.id             structure_ins_id,
+    annee_id,
+    LOWER(tvh.code) || '-' || evh.code etat,
+    10*tvh.ordre + evh.ordre ordre,
+    type_heures_id,
+    type_heures,
+    structure_id,
+    intervenant_id,
+    SUM(hetd) hetd
+  FROM (
+    SELECT
+      i.annee_id,
+      fr.type_volume_horaire_id,
+      fr.etat_volume_horaire_id,
+      th.id type_heures_id,
+      th.code type_heures,
+      COALESCE(ep.structure_id,i.structure_id) structure_id,
+      fr.intervenant_id,
+      SUM(frs.heures_compl_fi) hetd
+    FROM
+           formule_resultat_service  frs
+      JOIN formule_resultat           fr ON fr.id = frs.formule_resultat_id
+      JOIN service                     s ON s.id = frs.service_id
+      JOIN intervenant                 i ON i.id = fr.intervenant_id
+      JOIN type_heures                th ON th.code = 'fi'
+      LEFT JOIN element_pedagogique   ep ON ep.id = s.element_pedagogique_id
+    GROUP BY
+      i.annee_id,
+      fr.type_volume_horaire_id,
+      fr.etat_volume_horaire_id,
+      th.id, th.code,
+      fr.intervenant_id,
+      ep.structure_id,
+      i.structure_id
 
-  a.libelle         annee,
+    UNION ALL
 
-  sp.source_code    structure_porteuse_code,
-  sp.libelle_court  structure_porteuse_libelle,
-  eport.code        etape_porteuse_code,
-  eport.libelle     etape_porteuse_libelle,
-  
-  si.source_code    structure_ins_code,
-  si.libelle_court  structure_ins_libelle,
-  eins.code         etape_ins_code,
-  eins.libelle      etape_ins_libelle,
+    SELECT
+      i.annee_id,
+      fr.type_volume_horaire_id,
+      fr.etat_volume_horaire_id,
+      th.id type_heures_id,
+      th.code type_heures,
+      COALESCE(ep.structure_id,i.structure_id) structure_id,
+      fr.intervenant_id,
+      SUM(frs.heures_compl_fa) hetd
+    FROM
+           formule_resultat_service  frs
+      JOIN formule_resultat           fr ON fr.id = frs.formule_resultat_id
+      JOIN service                     s ON s.id = frs.service_id
+      JOIN intervenant                 i ON i.id = fr.intervenant_id
+      JOIN type_heures                th ON th.code = 'fa'
+      LEFT JOIN element_pedagogique ep ON ep.id = s.element_pedagogique_id
+    GROUP BY
+      i.annee_id,
+      fr.type_volume_horaire_id,
+      fr.etat_volume_horaire_id,
+      th.id, th.code,
+      fr.intervenant_id,
+      ep.structure_id,
+      i.structure_id
 
-  ep.code           element_code,
-  ep.libelle        element_libelle,
-  p.libelle_court   periode,
-  d.source_code     discipline_code,
-  d.libelle_court   discipline_libelle,
-  th.libelle_court  type_heures,
-  ti.code           type_intervention,
+    UNION ALL
 
-  cph.ouverture     seuil_ouverture,
-  cph.dedoublement  seuil_dedoublement,
-  cph.assiduite     assiduite,
-  sne.effectif      effectif_etape,
-  cph.effectif      effectif_element,
-  cph.heures_ens    heures_ens,
-  cph.groupes       groupes,
-  cph.heures        heures,
-  cph.hetd          hetd
-  FROM
-            tbl_chargens                cph
-       JOIN annee                         a ON a.id = cph.annee_id
-       JOIN structure                    sp ON sp.id = cph.structure_id
-       JOIN etape                     eport ON eport.id = cph.etape_id
-       JOIN etape                      eins ON eins.id = cph.etape_ens_id
-       JOIN structure                    si ON si.id = eins.structure_id
-       JOIN element_pedagogique          ep ON ep.id = cph.element_pedagogique_id
-       JOIN type_heures                  th ON th.id = cph.type_heures_id
-       JOIN type_intervention            ti ON ti.id = cph.type_intervention_id
-  LEFT JOIN periode                       p ON p.id = ep.periode_id
-  LEFT JOIN discipline                    d ON d.id = ep.discipline_id
-  LEFT JOIN noeud                         n ON n.etape_id = eins.id 
-                                           AND n.histo_destruction IS NULL
-                                           
-  LEFT JOIN scenario_noeud               sn ON sn.noeud_id = n.id 
-                                           AND sn.histo_destruction IS NULL 
-                                           AND sn.scenario_id = cph.scenario_id
-                                           
-  LEFT JOIN scenario_noeud_effectif     sne ON sne.scenario_noeud_id = sn.id
-                                           AND sne.type_heures_id = cph.type_heures_id
-                                           AND sne.etape_id = n.etape_id
-ORDER BY
-  structure_porteuse_code,
-  etape_porteuse_code,
-  structure_ins_code,
-  etape_ins_code,
-  element_code,
-  type_heures,
-  type_intervention;
+    SELECT
+      i.annee_id,
+      fr.type_volume_horaire_id,
+      fr.etat_volume_horaire_id,
+      th.id type_heures_id,
+      th.code type_heures,
+      COALESCE(ep.structure_id,i.structure_id) structure_id,
+      fr.intervenant_id,
+      SUM(frs.heures_compl_fc) hetd
+    FROM
+           formule_resultat_service  frs
+      JOIN formule_resultat           fr ON fr.id = frs.formule_resultat_id
+      JOIN service                     s ON s.id = frs.service_id
+      JOIN intervenant                 i ON i.id = fr.intervenant_id
+      JOIN type_heures                th ON th.code = 'fc'
+      LEFT JOIN element_pedagogique ep ON ep.id = s.element_pedagogique_id
+    GROUP BY
+      i.annee_id,
+      fr.type_volume_horaire_id,
+      fr.etat_volume_horaire_id,
+      th.id, th.code,
+      fr.intervenant_id,
+      ep.structure_id,
+      i.structure_id
+
+    UNION ALL
+
+    SELECT
+      i.annee_id,
+      fr.type_volume_horaire_id,
+      fr.etat_volume_horaire_id,
+      th.id type_heures_id,
+      th.code type_heures,
+      sr.structure_id,
+      fr.intervenant_id,
+      sum( frsr.heures_compl_referentiel ) hetd
+    FROM
+           formule_resultat_service_ref  frsr
+      JOIN formule_resultat                fr ON fr.id = frsr.formule_resultat_id
+      JOIN service_referentiel             sr ON sr.id = frsr.service_referentiel_id
+      JOIN intervenant                      i ON i.id = fr.intervenant_id
+      JOIN type_heures                th ON th.code = 'referentiel'
+    GROUP BY
+      i.annee_id,
+      fr.type_volume_horaire_id,
+      fr.etat_volume_horaire_id,
+      th.id, th.code,
+      fr.intervenant_id,
+      sr.structure_id
+  ) t1
+    JOIN type_volume_horaire            tvh ON tvh.id = t1.type_volume_horaire_id
+    JOIN etat_volume_horaire            evh ON evh.id = t1.etat_volume_horaire_id
+  GROUP BY
+    annee_id, tvh.code, evh.code, tvh.ordre, evh.ordre, type_heures_id, type_heures, structure_id, intervenant_id
+
+  UNION ALL
 
--- V_CHARGENS_GRANDS_LIENS
-CREATE OR REPLACE FORCE VIEW "V_CHARGENS_GRANDS_LIENS" ("NOEUD_SUP_ID", "LIEN_SUP_ID", "NOEUD_LISTE_ID", "LIEN_INF_ID", "NOEUD_INF_ID") AS 
   SELECT
-  nsup.id noeud_sup_id,
-  lsup.id lien_sup_id,
-  nl.id   noeud_liste_id,
-  linf.id lien_inf_id,
-  ninf.id noeud_inf_id
-FROM
-       noeud            nsup
+    annee_id,
+    etat,
+    ordre,
+    type_heures_id,
+    type_heures,
+    structure_id,
+    intervenant_id,
+    SUM(hetd) hetd
+  FROM (
+    SELECT
+      i.annee_id,
+      'demande-mise-en-paiement' etat,
+      90 ordre,
+      th.id   type_heures_id,
+      th.code type_heures,
+      COALESCE( sr.structure_id, ep.structure_id, i.structure_id ) structure_id,
+      i.id intervenant_id,
+      mep.heures hetd
+    FROM
+                mise_en_paiement              mep
+           JOIN type_heures                    th ON th.id = mep.type_heures_id
+           JOIN centre_cout                    cc ON cc.id = mep.centre_cout_id
+      LEFT JOIN formule_resultat_service      frs ON frs.id = mep.formule_res_service_id
+      LEFT JOIN formule_resultat_service_ref frsr ON frsr.id = mep.formule_res_service_ref_id
+      LEFT JOIN formule_resultat               fr ON fr.id = COALESCE(frs.formule_resultat_id, frsr.formule_resultat_id)
+      LEFT JOIN service                         s ON s.id = frs.service_id
+      LEFT JOIN element_pedagogique            ep ON ep.id = s.element_pedagogique_id
+      LEFT JOIN service_referentiel            sr ON sr.id = frsr.service_referentiel_id
+      LEFT JOIN intervenant                     i ON i.id = fr.intervenant_id
+    WHERE
+      mep.histo_destruction IS NULL
+      AND th.eligible_extraction_paie = 1
 
-  JOIN lien             lsup   ON lsup.noeud_sup_id = nsup.id 
-                              AND lsup.histo_destruction IS NULL
+    UNION ALL
 
-  JOIN noeud              nl   ON nl.liste = 1
-                              AND nl.histo_destruction IS NULL
-                              AND nl.id = lsup.noeud_inf_id
-                                       
-  JOIN lien             linf   ON linf.noeud_sup_id = nl.id 
-                              AND linf.histo_destruction IS NULL
-       
-  JOIN noeud            ninf   ON ninf.id = linf.noeud_inf_id 
-                              AND ninf.histo_destruction IS NULL 
-                              AND ninf.liste = 0
-WHERE
-  nsup.histo_destruction IS NULL
-  AND nsup.liste = 0;
+    SELECT
+      i.annee_id,
+      'mise-en-paiement' etat,
+      91 ordre,
+      th.id type_heures_id,
+      th.code type_heures,
+      COALESCE( sr.structure_id, ep.structure_id, i.structure_id ) structure_id,
+      i.id intervenant_id,
+      mep.heures hetd
+    FROM
+                mise_en_paiement              mep
+           JOIN type_heures                    th ON th.id = mep.type_heures_id
+           JOIN centre_cout                    cc ON cc.id = mep.centre_cout_id
+      LEFT JOIN formule_resultat_service      frs ON frs.id = mep.formule_res_service_id
+      LEFT JOIN formule_resultat_service_ref frsr ON frsr.id = mep.formule_res_service_ref_id
+      LEFT JOIN formule_resultat               fr ON fr.id = COALESCE(frs.formule_resultat_id, frsr.formule_resultat_id)
+      LEFT JOIN service                         s ON s.id = frs.service_id
+      LEFT JOIN element_pedagogique            ep ON ep.id = s.element_pedagogique_id
+      LEFT JOIN service_referentiel            sr ON sr.id = frsr.service_referentiel_id
+      LEFT JOIN intervenant                     i ON i.id = fr.intervenant_id
+    WHERE
+      mep.histo_destruction IS NULL
+      AND th.eligible_extraction_paie = 1
+      AND mep.PERIODE_PAIEMENT_ID IS NOT NULL
+  ) t1
+  GROUP BY
+    annee_id, etat, ordre, type_heures_id, type_heures, structure_id, intervenant_id
+) t2
+GROUP BY
+  annee_id,
+  etat, ordre
+  ,type_heures_id, type_heures
+  ,structure_id
+  ,intervenant_id
+ORDER BY
+  annee_id, ordre
 
--- V_CHARGENS_PRECALCUL_HEURES
-CREATE OR REPLACE FORCE VIEW "V_CHARGENS_PRECALCUL_HEURES" ("ANNEE_ID", "NOEUD_ID", "SCENARIO_ID", "TYPE_HEURES_ID", "TYPE_INTERVENTION_ID", "ELEMENT_PEDAGOGIQUE_ID", "ETAPE_ID", "ETAPE_ENS_ID", "STRUCTURE_ID", "OUVERTURE", "DEDOUBLEMENT", "ASSIDUITE", "EFFECTIF", "HEURES_ENS", "GROUPES", "HEURES", "HETD") AS 
-  WITH t AS (
-SELECT
-  n.annee_id                        annee_id,
-  n.noeud_id                        noeud_id,
-  sn.scenario_id                    scenario_id,
-  sne.type_heures_id                type_heures_id,
-  ti.id                             type_intervention_id,
+) t3
+  JOIN intervenant i ON i.id = t3.intervenant_id
+  JOIN statut_intervenant si ON si.id = i.statut_id
+  JOIN type_intervenant ti ON ti.id = si.type_intervenant_id
+  JOIN structure s ON s.id = t3.structure_id;
 
-  n.element_pedagogique_id          element_pedagogique_id,
-  n.element_pedagogique_etape_id    etape_id,
-  sne.etape_id                      etape_ens_id,
-  n.structure_id                    structure_id,
-  
-  vhe.heures                        heures,
-  vhe.heures * ti.taux_hetd_service hetd,
-  
-  GREATEST(COALESCE(sns.ouverture, 1),1)                                           ouverture,
-  GREATEST(COALESCE(sns.dedoublement, snsetp.dedoublement, csdd.dedoublement,1),1) dedoublement,
-  COALESCE(sns.assiduite,1)                                                        assiduite,
-  sne.effectif*COALESCE(sns.assiduite,1)                                           effectif,
+-- V_EXPORT_SERVICE
+CREATE OR REPLACE FORCE VIEW "V_EXPORT_SERVICE" ("ID", "SERVICE_ID", "INTERVENANT_ID", "TYPE_INTERVENANT_ID", "ANNEE_ID", "SERVICE_DATE_MODIFICATION", "TYPE_VOLUME_HORAIRE_ID", "ETAT_VOLUME_HORAIRE_ID", "ETABLISSEMENT_ID", "STRUCTURE_AFF_ID", "STRUCTURE_ENS_ID", "NIVEAU_FORMATION_ID", "ETAPE_ID", "ELEMENT_PEDAGOGIQUE_ID", "PERIODE_ID", "TYPE_INTERVENTION_ID", "FONCTION_REFERENTIEL_ID", "TYPE_ETAT", "INTERVENANT_CODE", "INTERVENANT_NOM", "INTERVENANT_DATE_NAISSANCE", "INTERVENANT_STATUT_LIBELLE", "INTERVENANT_TYPE_CODE", "INTERVENANT_TYPE_LIBELLE", "INTERVENANT_GRADE_CODE", "INTERVENANT_GRADE_LIBELLE", "INTERVENANT_DISCIPLINE_CODE", "INTERVENANT_DISCIPLINE_LIBELLE", "SERVICE_STRUCTURE_AFF_LIBELLE", "SERVICE_STRUCTURE_ENS_LIBELLE", "ETABLISSEMENT_LIBELLE", "GROUPE_TYPE_FORMATION_LIBELLE", "TYPE_FORMATION_LIBELLE", "ETAPE_NIVEAU", "ETAPE_CODE", "ETAPE_LIBELLE", "ELEMENT_CODE", "ELEMENT_LIBELLE", "ELEMENT_DISCIPLINE_CODE", "ELEMENT_DISCIPLINE_LIBELLE", "FONCTION_REFERENTIEL_LIBELLE", "ELEMENT_TAUX_FI", "ELEMENT_TAUX_FC", "ELEMENT_TAUX_FA", "SERVICE_REF_FORMATION", "COMMENTAIRES", "PERIODE_LIBELLE", "ELEMENT_PONDERATION_COMPL", "ELEMENT_SOURCE_LIBELLE", "HEURES", "HEURES_REF", "HEURES_NON_PAYEES", "SERVICE_STATUTAIRE", "SERVICE_DU_MODIFIE", "SERVICE_FI", "SERVICE_FA", "SERVICE_FC", "SERVICE_REFERENTIEL", "HEURES_COMPL_FI", "HEURES_COMPL_FA", "HEURES_COMPL_FC", "HEURES_COMPL_FC_MAJOREES", "HEURES_COMPL_REFERENTIEL", "TOTAL", "SOLDE", "DATE_CLOTURE_REALISE") AS
+  WITH t AS ( SELECT
+  'vh_' || vh.id                    id,
+  s.id                              service_id,
+  s.intervenant_id                  intervenant_id,
+  vh.type_volume_horaire_id         type_volume_horaire_id,
+  fr.etat_volume_horaire_id         etat_volume_horaire_id,
+  s.element_pedagogique_id          element_pedagogique_id,
+  s.etablissement_id                etablissement_id,
+  NULL                              structure_aff_id,
+  NULL                              structure_ens_id,
+  vh.periode_id                     periode_id,
+  vh.type_intervention_id           type_intervention_id,
+  NULL                              fonction_referentiel_id,
 
-  SUM(sne.effectif*COALESCE(sns.assiduite,1)) OVER (PARTITION BY n.noeud_id, sn.scenario_id, ti.id) t_effectif
+  s.description                     service_description,
 
+  vh.heures                         heures,
+  0                                 heures_ref,
+  0                                 heures_non_payees,
+  frvh.service_fi                   service_fi,
+  frvh.service_fa                   service_fa,
+  frvh.service_fc                   service_fc,
+  0                                 service_referentiel,
+  frvh.heures_compl_fi              heures_compl_fi,
+  frvh.heures_compl_fa              heures_compl_fa,
+  frvh.heures_compl_fc              heures_compl_fc,
+  frvh.heures_compl_fc_majorees     heures_compl_fc_majorees,
+  0                                 heures_compl_referentiel,
+  frvh.total                        total,
+  fr.solde                          solde,
+  NULL                              service_ref_formation,
+  NULL                              commentaires
 FROM
-            scenario_noeud_effectif    sne
-            JOIN etape                        e ON e.id = sne.etape_id
-                                          AND e.histo_destruction IS NULL
-       
-       JOIN scenario_noeud              sn ON sn.id = sne.scenario_noeud_id
-                                          AND sn.histo_destruction IS NULL
-       
-       JOIN tbl_noeud                       n ON n.noeud_id = sn.noeud_id
-                                          
-       JOIN volume_horaire_ens         vhe ON vhe.element_pedagogique_id = n.element_pedagogique_id
-                                          AND vhe.histo_destruction IS NULL 
-                                          AND vhe.heures > 0
+  formule_resultat_vh                frvh
+  JOIN formule_resultat                fr ON fr.id = frvh.formule_resultat_id
+  JOIN volume_horaire                  vh ON vh.id = frvh.volume_horaire_id AND vh.motif_non_paiement_id IS NULL AND vh.histo_destruction IS NULL
+  JOIN service                          s ON s.id = vh.service_id AND s.intervenant_id = fr.intervenant_id AND s.histo_destruction IS NULL
 
-       JOIN type_intervention           ti ON ti.id = vhe.type_intervention_id
+UNION ALL
 
-  LEFT JOIN tbl_noeud                 netp ON netp.etape_id = e.id
-                                          
-  LEFT JOIN scenario_noeud           snetp ON snetp.scenario_id = sn.scenario_id
-                                          AND snetp.noeud_id = netp.noeud_id
-                                          AND snetp.histo_destruction IS NULL
-                                          
-  LEFT JOIN scenario_noeud_seuil    snsetp ON snsetp.scenario_noeud_id = snetp.id
-                                          AND snsetp.type_intervention_id = ti.id
+SELECT
+  'vh_' || vh.id                    id,
+  s.id                              service_id,
+  s.intervenant_id                  intervenant_id,
+  vh.type_volume_horaire_id         type_volume_horaire_id,
+  vhe.etat_volume_horaire_id        etat_volume_horaire_id,
+  s.element_pedagogique_id          element_pedagogique_id,
+  s.etablissement_id                etablissement_id,
+  NULL                              structure_aff_id,
+  NULL                              structure_ens_id,
+  vh.periode_id                     periode_id,
+  vh.type_intervention_id           type_intervention_id,
+  NULL                              fonction_referentiel_id,
 
-  LEFT JOIN tbl_chargens_seuils_def   csdd ON csdd.annee_id = n.annee_id
-                                          AND csdd.scenario_id = sn.scenario_id
-                                          AND csdd.type_intervention_id = ti.id
-                                          AND csdd.groupe_type_formation_id = n.groupe_type_formation_id
-                                          AND csdd.structure_id = n.structure_id
+  s.description                     service_description,
 
-  LEFT JOIN scenario_noeud_seuil       sns ON sns.scenario_noeud_id = sn.id 
-                                          AND sns.type_intervention_id = ti.id
-WHERE
-  1 = OSE_CHARGENS.MATCH_PRECALC_HEURES_PARAMS( n.annee_id, n.structure_id, sn.scenario_id, sne.type_heures_id, sne.etape_id, n.noeud_id )
-)
-SELECT
-  annee_id,
-  noeud_id,
-  scenario_id,
-  type_heures_id,
-  type_intervention_id,
-
-  element_pedagogique_id,
-  etape_id,
-  etape_ens_id,
-  structure_id,
-
-  ouverture,
-  dedoublement,
-  assiduite,
-  effectif,
-  heures heures_ens,
-  --t_effectif,
-
-  CASE WHEN t_effectif < ouverture THEN 0 ELSE
-    CEIL( t_effectif / dedoublement ) * effectif / t_effectif
-  END groupes,
+  vh.heures                         heures,
+  0                                 heures_ref,
+  1                                 heures_non_payees,
+  0                                 service_fi,
+  0                                 service_fa,
+  0                                 service_fc,
+  0                                 service_referentiel,
+  0                                 heures_compl_fi,
+  0                                 heures_compl_fa,
+  0                                 heures_compl_fc,
+  0                                 heures_compl_fc_majorees,
+  0                                 heures_compl_referentiel,
+  0                                 total,
+  fr.solde                          solde,
+  NULL                              service_ref_formation,
+  NULL                              commentaires
+FROM
+  volume_horaire                  vh
+  JOIN service                     s ON s.id = vh.service_id
+  JOIN v_volume_horaire_etat     vhe ON vhe.volume_horaire_id = vh.id
+  JOIN formule_resultat           fr ON fr.intervenant_id = s.intervenant_id AND fr.type_volume_horaire_id = vh.type_volume_horaire_id AND fr.etat_volume_horaire_id = vhe.etat_volume_horaire_id
+WHERE
+  vh.motif_non_paiement_id IS NOT NULL
+  AND vh.histo_destruction IS NULL
+  AND s.histo_destruction IS NULL
 
-  CASE WHEN t_effectif < ouverture THEN 0 ELSE
-    CEIL( t_effectif / dedoublement ) * heures * effectif / t_effectif
-  END heures,
+UNION ALL
 
-  CASE WHEN t_effectif < ouverture THEN 0 ELSE
-    CEIL( t_effectif / dedoublement ) * hetd * effectif / t_effectif
-  END  hetd
+SELECT
+  'vh_ref_' || vhr.id               id,
+  sr.id                             service_id,
+  sr.intervenant_id                 intervenant_id,
+  fr.type_volume_horaire_id         type_volume_horaire_id,
+  fr.etat_volume_horaire_id         etat_volume_horaire_id,
+  NULL                              element_pedagogique_id,
+  OSE_PARAMETRE.GET_ETABLISSEMENT   etablissement_id,
+  NULL                              structure_aff_id,
+  sr.structure_id                   structure_ens_id,
+  NULL                              periode_id,
+  NULL                              type_intervention_id,
+  sr.fonction_id                    fonction_referentiel_id,
 
-FROM
-  t;
+  NULL                              service_description,
 
--- V_CHARGENS_SEUILS_DED_DEF
-CREATE OR REPLACE FORCE VIEW "V_CHARGENS_SEUILS_DED_DEF" ("NOEUD_ID", "SCENARIO_ID", "TYPE_INTERVENTION_ID", "DEDOUBLEMENT") AS 
-  WITH tisc AS (
-  SELECT DISTINCT
-    sc.type_intervention_id,
-    sc.scenario_id
-  FROM
-    seuil_charge sc
-  WHERE
-    sc.histo_destruction IS NULL
-)
-SELECT
-  n.noeud_id noeud_id,
-  tisc.scenario_id,
-  tisc.type_intervention_id,
-  COALESCE(snsetp.dedoublement, tcsd.dedoublement) dedoublement
+  0                                 heures,
+  vhr.heures                        heures_ref,
+  0                                 heures_non_payees,
+  0                                 service_fi,
+  0                                 service_fa,
+  0                                 service_fc,
+  frvr.service_referentiel          service_referentiel,
+  0                                 heures_compl_fi,
+  0                                 heures_compl_fa,
+  0                                 heures_compl_fc,
+  0                                 heures_compl_fc_majorees,
+  frvr.heures_compl_referentiel     heures_compl_referentiel,
+  frvr.total                        total,
+  fr.solde                          solde,
+  sr.formation                      service_ref_formation,
+  sr.commentaires                   commentaires
 FROM
-            tbl_noeud                  n
-       JOIN                         tisc ON 1=1
+  formule_resultat_vh_ref       frvr
+  JOIN formule_resultat           fr ON fr.id = frvr.formule_resultat_id
+  JOIN volume_horaire_ref        vhr ON vhr.id =  frvr.volume_horaire_ref_id
+  JOIN service_referentiel        sr ON sr.id = vhr.service_referentiel_id AND sr.intervenant_id = fr.intervenant_id AND sr.histo_destruction IS NULL
 
-  LEFT JOIN scenario_noeud         snetp ON snetp.noeud_id = n.noeud_etape_id 
-                                        AND snetp.scenario_id = tisc.scenario_id 
-                                        AND snetp.histo_destruction IS NULL
-    
-  LEFT JOIN scenario_noeud_seuil  snsetp ON snsetp.scenario_noeud_id = snetp.id 
-                                        AND snsetp.type_intervention_id = tisc.type_intervention_id
-    
-  LEFT JOIN tbl_chargens_seuils_def tcsd ON tcsd.annee_id = n.annee_id
-                                        AND tcsd.scenario_id = tisc.scenario_id
-                                        AND tcsd.groupe_type_formation_id = n.groupe_type_formation_id
-                                        AND tcsd.type_intervention_id = tisc.type_intervention_id
-WHERE
-  COALESCE(snsetp.dedoublement, tcsd.dedoublement)  IS NOT NULL;
+UNION ALL
 
--- V_CTL_SERVICES_ODF_HISTO
-CREATE OR REPLACE FORCE VIEW "V_CTL_SERVICES_ODF_HISTO" ("PRENOM", "NOM_USUEL", "ELEMENT", "ETAPE", "TYPE_INTERVENTION", "HEURES", "HAS_CONTRAT", "HAS_VALIDATION", "ELEMENT_SUPPRIME", "ETAPE_SUPPRIMEE", "ETABLISSEMENT_SUPPRIME") AS 
-  with vh as (
-  SELECT
-    vh.service_id,
-    ti.code type_intervention,
-    SUM(heures) heures,
-    CASE WHEN vh.contrat_id IS NULL THEN 0 ELSE 1 END has_contrat,
-    CASE WHEN (SELECT COUNT(*) FROM validation_vol_horaire vvh WHERE vvh.volume_horaire_id = vh.id) = 1 THEN 1 ELSE 0 END has_validation
-  FROM
-    volume_horaire vh
-    JOIN type_volume_horaire tvh ON tvh.id = vh.type_volume_horaire_id
-    JOIN type_intervention ti ON ti.id = vh.type_intervention_id
-  WHERE
-    vh.histo_destruction IS NULL
-    AND tvh.code = 'PREVU'
-  GROUP BY
-    vh.id, ti.code, vh.service_id, vh.contrat_id
-)
 SELECT
-  i.prenom, i.nom_usuel,
-  ep.source_code "ELEMENT",
-  e.source_code etape,
-
-  vh.type_intervention,
-  vh.heures,
-  vh.has_contrat,
-  vh.has_validation,
-  CASE WHEN ep.histo_destruction IS NOT NULL THEN 1 ELSE 0 END element_supprime,
-  CASE WHEN e.histo_destruction IS NOT NULL THEN 1 ELSE 0 END etape_supprimee,
-  CASE WHEN et.histo_destruction IS NOT NULL THEN 1 ELSE 0 END etablissement_supprime
-FROM
-  service s
-  JOIN intervenant i ON i.id = s.intervenant_id
-  LEFT JOIN element_pedagogique ep ON ep.id = s.element_pedagogique_id
-  LEFT JOIN etape e ON e.id = ep.etape_id
-  LEFT JOIN etablissement et ON et.id = s.etablissement_id
-  LEFT JOIN vh ON vh.service_id = s.id
-WHERE
-  s.histo_destruction IS NULL
-  AND (
-    (ep.id IS NOT NULL AND ep.histo_destruction IS NOT NULL)
-    OR
-    (e.id IS NOT NULL AND e.histo_destruction IS NOT NULL)
-    OR
-    (et.id IS NOT NULL AND et.histo_destruction IS NOT NULL)
-  )
-order by
-  nom_usuel, prenom, etape, "ELEMENT", heures;
-
--- V_CTL_VH_MAUVAIS_SEMESTRE
-CREATE OR REPLACE FORCE VIEW "V_CTL_VH_MAUVAIS_SEMESTRE" ("ID", "NOM_USUEL", "PRENOM", "HEURES", "VALIDATION_ID") AS 
-  SELECT
-  vh.id,
-  i.nom_usuel, i.prenom,
-  vh.heures,
-  vvh.validation_id
-FROM
-  volume_horaire vh
-  JOIN type_volume_horaire tvh ON tvh.id = vh.type_volume_horaire_id
-  JOIN service s ON s.id = vh.service_id
-  JOIN element_pedagogique ep ON ep.id = s.element_pedagogique_id
-  JOIN intervenant i ON i.id = s.intervenant_id
-  LEFT JOIN VALIDATION_VOL_HORAIRE vvh on VVH.VOLUME_HORAIRE_ID = vh.id
-WHERE
-  tvh.code = 'PREVU'
-  AND ep.periode_id IS NOT NULL
-  AND vh.periode_id <> ep.periode_id
-ORDER BY
-  nom_usuel, prenom, heures;
+  'vh_0_' || i.id                   id,
+  NULL                              service_id,
+  i.id                              intervenant_id,
+  tvh.id                            type_volume_horaire_id,
+  evh.id                            etat_volume_horaire_id,
+  NULL                              element_pedagogique_id,
+  OSE_PARAMETRE.GET_ETABLISSEMENT   etablissement_id,
+  NULL                              structure_aff_id,
+  NULL                              structure_ens_id,
+  NULL                              periode_id,
+  NULL                              type_intervention_id,
+  NULL                              fonction_referentiel_id,
 
--- V_ELEMENT_TYPE_HEURES
-CREATE OR REPLACE FORCE VIEW "V_ELEMENT_TYPE_HEURES" ("ELEMENT_PEDAGOGIQUE_ID", "TYPE_HEURES_ID") AS 
-  select ep.id element_pedagogique_id, th.id type_heures_id
-  from element_pedagogique ep
-  join type_heures th on th.code = decode(ep.fi, 1, 'fi', null)
-union all
-  select ep.id element_pedagogique_id, th.id type_heures_id
-  from element_pedagogique ep
-  join type_heures th on th.code = decode(ep.fc, 1, 'fc', null)
-union all
-  select ep.id element_pedagogique_id, th.id type_heures_id
-  from element_pedagogique ep
-  join type_heures th on th.code = decode(ep.fa, 1, 'fa', null);
+  NULL                              service_description,
 
--- V_ELEMENT_TYPE_INTERVENTION
-CREATE OR REPLACE FORCE VIEW "V_ELEMENT_TYPE_INTERVENTION" ("TYPE_INTERVENTION_ID", "ELEMENT_PEDAGOGIQUE_ID") AS 
-  SELECT 
-  type_intervention_id,
-  element_pedagogique_id
+  0                                 heures,
+  0                                 heures_ref,
+  0                                 heures_non_payees,
+  0                                 service_fi,
+  0                                 service_fa,
+  0                                 service_fc,
+  0                                 service_referentiel,
+  0                                 heures_compl_fi,
+  0                                 heures_compl_fa,
+  0                                 heures_compl_fc,
+  0                                 heures_compl_fc_majorees,
+  NULL                              heures_compl_referentiel,
+  0                                 total,
+  0                                 solde,
+  NULL                              service_ref_formation,
+  NULL                              commentaires
 FROM
-  type_intervention_ep tie
-  JOIN type_intervention ti ON ti.id = tie.type_intervention_id
+  intervenant i
+  JOIN statut_intervenant si ON si.id = i.statut_id
+  JOIN etat_volume_horaire evh ON evh.code IN ('saisi','valide')
+  JOIN type_volume_horaire tvh ON tvh.code IN ('PREVU','REALISE')
+  LEFT JOIN modification_service_du msd ON msd.intervenant_id = i.id AND msd.histo_destruction IS NULL
+  LEFT JOIN motif_modification_service mms ON mms.id = msd.motif_id
 WHERE
-  tie.histo_destruction IS NULL
-ORDER BY
-  ti.ordre;
-
--- V_ELEMENT_TYPE_INTERV_POSSIBLE
-CREATE OR REPLACE FORCE VIEW "V_ELEMENT_TYPE_INTERV_POSSIBLE" ("TYPE_INTERVENTION_ID", "ELEMENT_PEDAGOGIQUE_ID") AS 
-  SELECT
-  ti.id       type_intervention_id,
-  ep.id       element_pedagogique_id
-FROM
-            element_pedagogique              ep
+  i.histo_destruction IS NULL
+  AND si.service_statutaire > 0
+GROUP BY
+  i.id, si.service_statutaire, evh.id, tvh.id
+HAVING
+  si.service_statutaire + SUM(msd.heures * mms.multiplicateur) = 0
 
-       JOIN type_intervention                ti ON ep.annee_id BETWEEN COALESCE(ti.annee_debut_id,ep.annee_id) AND COALESCE(ti.annee_fin_id, ep.annee_id)
-                                               AND ti.histo_destruction IS NULL
 
-  LEFT JOIN type_intervention_structure     tis ON tis.type_intervention_id = ti.id
-                                               AND tis.structure_id = ep.structure_id
-                                               AND ep.annee_id BETWEEN COALESCE(tis.annee_debut_id,ep.annee_id) AND COALESCE(tis.annee_fin_id, ep.annee_id)
-                                               AND tis.histo_destruction IS NULL
-WHERE
-  ep.histo_destruction IS NULL
-  AND COALESCE( tis.visible, ti.visible ) = 1
-  AND (ti.regle_foad = 0 OR ep.taux_foad > 0)
-  AND (ti.regle_fc = 0 OR ep.taux_fc > 0);
-
--- V_ELEMENT_TYPE_MODULATEUR
-CREATE OR REPLACE FORCE VIEW "V_ELEMENT_TYPE_MODULATEUR" ("ELEMENT_PEDAGOGIQUE_ID", "TYPE_MODULATEUR_ID") AS 
-  SELECT
-  ep.id element_pedagogique_id,
-  tms.type_modulateur_id type_modulateur_id
-FROM
-       element_pedagogique        ep
-  JOIN structure                   s ON s.id = ep.structure_id                    
-                                    AND s.histo_destruction IS NULL
-                                    
-  JOIN type_modulateur_structure tms ON tms.structure_id = s.id 
-                                    AND tms.histo_destruction IS NULL
-                                    AND ep.annee_id BETWEEN GREATEST(NVL(tms.annee_debut_id,0),ep.annee_id) AND LEAST(NVL(tms.annee_fin_id,9999),ep.annee_id)
+)
+SELECT
+  t.id                            id,
+  t.service_id                    service_id,
+  i.id                            intervenant_id,
+  ti.id                           type_intervenant_id,
+  i.annee_id                      annee_id,
+  his.histo_modification          service_date_modification,
+  t.type_volume_horaire_id        type_volume_horaire_id,
+  t.etat_volume_horaire_id        etat_volume_horaire_id,
+  etab.id                         etablissement_id,
+  saff.id                         structure_aff_id,
+  sens.id                         structure_ens_id,
+  ose_divers.niveau_formation_id_calc( gtf.id, gtf.pertinence_niveau, etp.niveau ) niveau_formation_id,
+  etp.id                          etape_id,
+  ep.id                           element_pedagogique_id,
+  t.periode_id                    periode_id,
+  t.type_intervention_id          type_intervention_id,
+  t.fonction_referentiel_id       fonction_referentiel_id,
 
-UNION
+  tvh.libelle || ' ' || evh.libelle type_etat,
+  i.source_code                   intervenant_code,
+  i.nom_usuel || ' ' || i.prenom  intervenant_nom,
+  i.date_naissance                intervenant_date_naissance,
+  si.libelle                      intervenant_statut_libelle,
+  ti.code                         intervenant_type_code,
+  ti.libelle                      intervenant_type_libelle,
+  g.source_code                   intervenant_grade_code,
+  g.libelle_court                 intervenant_grade_libelle,
+  di.source_code                  intervenant_discipline_code,
+  di.libelle_court                intervenant_discipline_libelle,
+  saff.libelle_court              service_structure_aff_libelle,
 
-SELECT
-  tm_ep.element_pedagogique_id element_pedagogique_id,
-  tm_ep.type_modulateur_id type_modulateur_id
-FROM
-  type_modulateur_ep tm_ep 
-WHERE
-  tm_ep.histo_destruction IS NULL;
+  sens.libelle_court              service_structure_ens_libelle,
+  etab.libelle                    etablissement_libelle,
+  gtf.libelle_court               groupe_type_formation_libelle,
+  tf.libelle_court                type_formation_libelle,
+  etp.niveau                      etape_niveau,
+  etp.source_code                 etape_code,
+  etp.libelle                     etape_libelle,
+  ep.source_code                  element_code,
+  COALESCE(ep.libelle,to_char(t.service_description)) element_libelle,
+  de.source_code                  element_discipline_code,
+  de.libelle_court                element_discipline_libelle,
+  fr.libelle_long                 fonction_referentiel_libelle,
+  ep.taux_fi                      element_taux_fi,
+  ep.taux_fc                      element_taux_fc,
+  ep.taux_fa                      element_taux_fa,
+  t.service_ref_formation         service_ref_formation,
+  t.commentaires                  commentaires,
+  p.libelle_court                 periode_libelle,
+  CASE WHEN fs.ponderation_service_compl = 1 THEN NULL ELSE fs.ponderation_service_compl END element_ponderation_compl,
+  src.libelle                     element_source_libelle,
 
--- V_ETAPE_NIVEAU_FORMATION
-CREATE OR REPLACE FORCE VIEW "V_ETAPE_NIVEAU_FORMATION" ("ETAPE_ID", "NIVEAU_FORMATION_ID") AS 
-  SELECT
-  e.id etape_id,
-  nf.id niveau_formation_id
-FROM
-  etape e
-  JOIN type_formation tf ON tf.id = e.type_formation_id AND tf.histo_destruction IS NULL
-  JOIN groupe_type_formation gtf ON gtf.id = tf.groupe_id AND gtf.histo_destruction IS NULL
-  JOIN v_niveau_formation nf ON nf.code = gtf.libelle_court || e.niveau
-WHERE
-  e.histo_destruction IS NULL
-  AND gtf.pertinence_niveau = 1
-  AND e.niveau IS NOT NULL;
+  t.heures                        heures,
+  t.heures_ref                    heures_ref,
+  t.heures_non_payees             heures_non_payees,
+  si.service_statutaire           service_statutaire,
+  fsm.heures                      service_du_modifie,
+  t.service_fi                    service_fi,
+  t.service_fa                    service_fa,
+  t.service_fc                    service_fc,
+  t.service_referentiel           service_referentiel,
+  t.heures_compl_fi               heures_compl_fi,
+  t.heures_compl_fa               heures_compl_fa,
+  t.heures_compl_fc               heures_compl_fc,
+  t.heures_compl_fc_majorees      heures_compl_fc_majorees,
+  t.heures_compl_referentiel      heures_compl_referentiel,
+  t.total                         total,
+  t.solde                         solde,
+  v.histo_modification            date_cloture_realise
 
--- V_ETAPE_TYPE_MODULATEUR
-CREATE OR REPLACE FORCE VIEW "V_ETAPE_TYPE_MODULATEUR" ("TYPE_MODULATEUR_ID", "ETAPE_ID") AS 
-  SELECT DISTINCT
-  etm.type_modulateur_id type_modulateur_id,
-  ep.etape_id etape_id
 FROM
-  v_element_type_modulateur etm
-  JOIN element_pedagogique ep ON ep.id = etm.element_pedagogique_id AND ep.histo_destruction IS NULL;
+  t
+  JOIN intervenant                        i ON i.id     = t.intervenant_id AND i.histo_destruction IS NULL
+  JOIN statut_intervenant                si ON si.id    = i.statut_id
+  JOIN type_intervenant                  ti ON ti.id    = si.type_intervenant_id
+  JOIN etablissement                   etab ON etab.id  = t.etablissement_id
+  JOIN type_volume_horaire              tvh ON tvh.id   = t.type_volume_horaire_id
+  JOIN etat_volume_horaire              evh ON evh.id   = t.etat_volume_horaire_id
+  LEFT JOIN histo_intervenant_service   his ON his.intervenant_id = i.id AND his.type_volume_horaire_id = tvh.id AND his.referentiel = 0
+  LEFT JOIN grade                         g ON g.id     = i.grade_id
+  LEFT JOIN discipline                   di ON di.id    = i.discipline_id
+  LEFT JOIN structure                  saff ON saff.id  = i.structure_id AND ti.code = 'P'
+  LEFT JOIN element_pedagogique          ep ON ep.id    = t.element_pedagogique_id
+  LEFT JOIN discipline                   de ON de.id    = ep.discipline_id
+  LEFT JOIN structure                  sens ON sens.id  = NVL(t.structure_ens_id, ep.structure_id)
+  LEFT JOIN periode                       p ON p.id     = t.periode_id
+  LEFT JOIN source                      src ON src.id   = ep.source_id OR (ep.source_id IS NULL AND src.code = 'OSE')
+  LEFT JOIN etape                       etp ON etp.id   = ep.etape_id
+  LEFT JOIN type_formation               tf ON tf.id    = etp.type_formation_id AND tf.histo_destruction IS NULL
+  LEFT JOIN groupe_type_formation       gtf ON gtf.id   = tf.groupe_id AND gtf.histo_destruction IS NULL
+  LEFT JOIN v_formule_service_modifie   fsm ON fsm.intervenant_id = i.id
+  LEFT JOIN v_formule_service            fs ON fs.id    = t.service_id
+  LEFT JOIN fonction_referentiel         fr ON fr.id    = t.fonction_referentiel_id
+  LEFT JOIN type_validation              tv ON tvh.code = 'REALISE' AND tv.code = 'CLOTURE_REALISE'
+  LEFT JOIN validation                    v ON v.intervenant_id = i.id AND v.type_validation_id = tv.id AND v.histo_destruction IS NULL;
 
--- V_ETAT_PAIEMENT
-CREATE OR REPLACE FORCE VIEW "V_ETAT_PAIEMENT" ("PERIODE_PAIEMENT_ID", "STRUCTURE_ID", "INTERVENANT_TYPE_ID", "INTERVENANT_ID", "ANNEE_ID", "CENTRE_COUT_ID", "DOMAINE_FONCTIONNEL_ID", "ETAT", "STRUCTURE_LIBELLE", "DATE_MISE_EN_PAIEMENT", "PERIODE_PAIEMENT_LIBELLE", "INTERVENANT_TYPE", "INTERVENANT_CODE", "INTERVENANT_NOM", "INTERVENANT_NUMERO_INSEE", "CENTRE_COUT_CODE", "CENTRE_COUT_LIBELLE", "DOMAINE_FONCTIONNEL_CODE", "DOMAINE_FONCTIONNEL_LIBELLE", "HETD", "HETD_POURC", "HETD_MONTANT", "REM_FC_D714", "EXERCICE_AA", "EXERCICE_AA_MONTANT", "EXERCICE_AC", "EXERCICE_AC_MONTANT") AS 
+-- V_EXP_HETD_CENTRE_COUT
+CREATE OR REPLACE FORCE VIEW "V_EXP_HETD_CENTRE_COUT" ("TYPE_VOLUME_HORAIRE_ID", "ETAT_VOLUME_HORAIRE_ID", "ANNEE_ID", "INTERVENANT_ID", "STATUT_INTERVENANT_ID", "TYPE_INTERVENANT_ID", "GRADE_ID", "STRUCTURE_ID", "GROUPE_TYPE_FORMATION_ID", "TYPE_FORMATION_ID", "ETAPE_ID", "TYPE_VOLUME_HORAIRE", "ETAT_VOLUME_HORAIRE", "ANNEE", "CODE_INTERVENANT", "INTERVENANT", "STATUT_INTERVENANT", "TYPE_INTERVENANT", "GRADE", "STRUCTURE_ENSEIGNEMENT", "GROUPE_TYPE_FORMATION", "TYPE_FORMATION", "CODE_FORMATION", "TOTAL_HETD", "CENTRE_COUTS", "TOTAL_EUROS") AS
+  WITH t AS (
   SELECT
-  periode_paiement_id,
-  structure_id,
-  intervenant_type_id,
-  intervenant_id, 
-  annee_id, 
-  centre_cout_id, 
-  domaine_fonctionnel_id,
-  etat,
-  structure_libelle,
-  date_mise_en_paiement,
-  periode_paiement_libelle,
-  intervenant_type,
-  intervenant_code,
-  intervenant_nom,
-  intervenant_numero_insee,
-  centre_cout_code,
-  centre_cout_libelle,
-  domaine_fonctionnel_code,
-  domaine_fonctionnel_libelle,
-  hetd,
-  CASE WHEN pourc_ecart >= 0 THEN
-    CASE WHEN RANK() OVER (PARTITION BY periode_paiement_id, intervenant_id, etat, structure_id ORDER BY CASE WHEN (pourc_ecart >= 0 AND pourc_diff >= 0) OR (pourc_ecart < 0 AND pourc_diff < 0) THEN pourc_diff ELSE -1 END DESC) <= (ABS(pourc_ecart) / 0.001) THEN hetd_pourc + (pourc_ecart / ABS(pourc_ecart) * 0.001) ELSE hetd_pourc END
-  ELSE
-    CASE WHEN RANK() OVER (PARTITION BY periode_paiement_id, intervenant_id, etat, structure_id ORDER BY CASE WHEN (pourc_ecart >= 0 AND pourc_diff >= 0) OR (pourc_ecart < 0 AND pourc_diff < 0) THEN pourc_diff ELSE -1 END) <= (ABS(pourc_ecart) / 0.001) THEN hetd_pourc + (pourc_ecart / ABS(pourc_ecart) * 0.001) ELSE hetd_pourc END
-  END hetd_pourc,
-  hetd_montant,
-  rem_fc_d714,
-  exercice_aa,
-  exercice_aa_montant,
-  exercice_ac,
-  exercice_ac_montant 
-FROM
-(
-SELECT
-  dep3.*,
-
-  1-CASE WHEN hetd > 0 THEN SUM( hetd_pourc ) OVER ( PARTITION BY periode_paiement_id, intervenant_id, etat, structure_id) ELSE 0 END pourc_ecart
+    tvh.id                              type_volume_horaire_id,
+    evh.id                              etat_volume_horaire_id,
+    a.id                                annee_id,
+    i.id                                intervenant_id,
+    si.id                               statut_intervenant_id,
+    ti.id                               type_intervenant_id,
+    g.id                                grade_id,
+    str.id                              structure_id,
+    gtf.id                              groupe_type_formation_id,
+    tf.id                               type_formation_id,
+    e.id                                etape_id,
 
+    tvh.code                            type_volume_horaire,
+    evh.code                            etat_volume_horaire,
+    a.libelle                           annee,
+    i.code                              code_intervenant,
+    i.nom_usuel || ' ' || i.prenom      intervenant,
+    si.libelle                          statut_intervenant,
+    ti.libelle                          type_intervenant,
+    g.libelle_long                      grade,
+    str.libelle_court                   structure_enseignement,
+    gtf.libelle_long                    groupe_type_formation,
+    tf.libelle_long                     type_formation,
+    e.source_code                       code_formation,
 
-FROM (
+    CASE WHEN mep.id IS NULL THEN frs.total ELSE mep.heures END
+                                        total_hetd,
 
-SELECT 
-  periode_paiement_id,
-  structure_id,
-  intervenant_type_id,
-  intervenant_id, 
-  annee_id, 
-  centre_cout_id, 
-  domaine_fonctionnel_id,
-  etat,
-  structure_libelle,
-  date_mise_en_paiement,
-  periode_paiement_libelle,
-  intervenant_type,
-  intervenant_code,
-  intervenant_nom,
-  intervenant_numero_insee,
-  centre_cout_code,
-  centre_cout_libelle,
-  domaine_fonctionnel_code,
-  domaine_fonctionnel_libelle,
-  hetd,
-  ROUND( CASE WHEN hetd > 0 THEN hetd / SUM( hetd ) OVER( PARTITION BY periode_paiement_id, intervenant_id, etat, structure_id) ELSE 0 END, 3 ) hetd_pourc,
-  ROUND( hetd * taux_horaire, 2 ) hetd_montant,
-  ROUND( fc_majorees * taux_horaire, 2 ) rem_fc_d714,
-  exercice_aa,
-  ROUND( exercice_aa * taux_horaire, 2 ) exercice_aa_montant,
-  exercice_ac,
-  ROUND( exercice_ac * taux_horaire, 2 ) exercice_ac_montant,
+    cc.source_code || ' ' || cc.libelle centre_couts,
+    OSE_FORMULE.GET_TAUX_HORAIRE_HETD( NVL(mep.date_mise_en_paiement,SYSDATE) ) * CASE WHEN mep.id IS NULL THEN frs.total ELSE mep.heures END
+                                        total_euros
+  FROM
+              formule_resultat_service  frs
+         JOIN formule_resultat           fr ON fr.id = frs.formule_resultat_id
+         JOIN etat_volume_horaire       evh ON evh.id = fr.etat_volume_horaire_id
+         JOIN type_volume_horaire       tvh ON tvh.id = fr.type_volume_horaire_id
+         JOIN intervenant                 i ON i.id = fr.intervenant_id
+         JOIN annee                       a ON a.id = i.annee_id
+         JOIN statut_intervenant         si ON si.id = i.statut_id
+         JOIN type_intervenant           ti ON ti.id = si.type_intervenant_id
+         JOIN service                     s ON s.id = frs.service_id
+    LEFT JOIN grade                       g ON g.id = i.grade_id
+    LEFT JOIN element_pedagogique        ep ON ep.id = s.element_pedagogique_id
+         JOIN structure                 str ON str.id = NVL(ep.structure_id, i.structure_id)
+    LEFT JOIN etape                       e ON e.id = ep.etape_id
+    LEFT JOIN type_formation             tf ON tf.id = e.type_formation_id
+    LEFT JOIN groupe_type_formation     gtf ON gtf.id = tf.groupe_id
+    LEFT JOIN mise_en_paiement          mep ON mep.formule_res_service_id = frs.id
+                                           AND mep.histo_destruction IS NULL
 
+    LEFT JOIN centre_cout                cc ON cc.id = MEP.CENTRE_COUT_ID
 
-  (CASE WHEN hetd > 0 THEN hetd / SUM( hetd ) OVER( PARTITION BY periode_paiement_id, intervenant_id, etat, structure_id) ELSE 0 END)
-  -
-  ROUND( CASE WHEN hetd > 0 THEN hetd / SUM( hetd ) OVER( PARTITION BY periode_paiement_id, intervenant_id, etat, structure_id) ELSE 0 END, 3 ) pourc_diff
+  UNION ALL
 
-FROM (
-  WITH dep AS ( -- détails par état de paiement
   SELECT
-    CASE WHEN th.code = 'fc_majorees' THEN 1 ELSE 0 END                 is_fc_majoree,
-    p.id                                                                periode_paiement_id,
-    s.id                                                                structure_id,
-    i.id                                                                intervenant_id,
-    i.annee_id                                                          annee_id,
-    cc.id                                                               centre_cout_id,
-    df.id                                                               domaine_fonctionnel_id,
-    ti.id                                                               intervenant_type_id,
-    CASE
-        WHEN mep.date_mise_en_paiement IS NULL THEN 'a-mettre-en-paiement'
-        ELSE 'mis-en-paiement'
-    END                                                                 etat,
+    type_volume_horaire_id, etat_volume_horaire_id, annee_id, intervenant_id, statut_intervenant_id, type_intervenant_id,
+    grade_id, structure_id, groupe_type_formation_id, type_formation_id, etape_id,
 
-    p.libelle_long || ' ' || to_char( add_months( a.date_debut, p.ecart_mois ), 'yyyy' ) periode_paiement_libelle,
-    mep.date_mise_en_paiement                                           date_mise_en_paiement,
-    s.libelle_court                                                     structure_libelle,
-    ti.libelle                                                          intervenant_type,
-    i.source_code                                                       intervenant_code,
-    i.nom_usuel || ' ' || i.prenom                                      intervenant_nom,
-    TRIM( NVL(i.numero_insee,'') || NVL(TO_CHAR(i.numero_insee_cle,'00'),'') ) intervenant_numero_insee,
-    cc.source_code                                                      centre_cout_code,
-    cc.libelle                                                          centre_cout_libelle,
-    df.source_code                                                      domaine_fonctionnel_code,
-    df.libelle                                                          domaine_fonctionnel_libelle,
-    CASE WHEN th.code = 'fc_majorees' THEN 0 ELSE mep.heures END        hetd,
-    CASE WHEN th.code = 'fc_majorees' THEN mep.heures ELSE 0 END        fc_majorees,
-    mep.heures * 4 / 10                                                 exercice_aa,
-    mep.heures * 6 / 10                                                 exercice_ac,
-    --CASE WHEN th.code = 'fc_majorees' THEN 0 ELSE mep.heures END * 4 / 10                                                 exercice_aa,
-    --CASE WHEN th.code = 'fc_majorees' THEN 0 ELSE mep.heures END * 6 / 10                                                 exercice_ac,
-    OSE_FORMULE.GET_TAUX_HORAIRE_HETD( NVL(mep.date_mise_en_paiement,SYSDATE) )      taux_horaire
-  FROM
-    v_mep_intervenant_structure  mis
-    JOIN mise_en_paiement        mep ON mep.id = mis.mise_en_paiement_id AND mep.histo_destruction IS NULL
-    JOIN type_heures              th ON  th.id = mep.type_heures_id
-    JOIN centre_cout              cc ON  cc.id = mep.centre_cout_id      -- pas d'historique pour les centres de coût, qui devront tout de même apparaitre mais en erreur
-    JOIN intervenant               i ON   i.id = mis.intervenant_id      AND i.histo_destruction IS NULL
-    JOIN annee                     a ON   a.id = i.annee_id
-    JOIN statut_intervenant       si ON  si.id = i.statut_id
-    JOIN type_intervenant         ti ON  ti.id = si.type_intervenant_id
-    JOIN structure                 s ON   s.id = mis.structure_id
-    LEFT JOIN validation           v ON   v.id = mep.validation_id       AND v.histo_destruction IS NULL
-    LEFT JOIN domaine_fonctionnel df ON  df.id = mis.domaine_fonctionnel_id
-    LEFT JOIN periode              p ON   p.id = mep.periode_paiement_id
-  )
-  SELECT
-    periode_paiement_id,
-    structure_id, 
-    intervenant_type_id,
-    intervenant_id, 
-    annee_id, 
-    centre_cout_id, 
-    domaine_fonctionnel_id, 
-    etat,
-    periode_paiement_libelle,
-    structure_libelle,
-    date_mise_en_paiement,
-    intervenant_type,
-    intervenant_code,
-    intervenant_nom,
-    intervenant_numero_insee,
-    centre_cout_code,
-    centre_cout_libelle,
-    domaine_fonctionnel_code,
-    domaine_fonctionnel_libelle,
-    SUM( hetd ) hetd,
-    SUM( fc_majorees ) fc_majorees,
-    SUM( exercice_aa ) exercice_aa,
-    SUM( exercice_ac ) exercice_ac,
-    taux_horaire
-  FROM
-    dep
-  GROUP BY
-    periode_paiement_id,
-    structure_id, 
-    intervenant_type_id,
-    intervenant_id, 
-    annee_id, 
-    centre_cout_id, 
-    domaine_fonctionnel_id, 
-    etat,
-    periode_paiement_libelle,
-    structure_libelle,
-    date_mise_en_paiement,
-    intervenant_type,
-    intervenant_code,
-    intervenant_nom,
-    intervenant_numero_insee,
-    centre_cout_code,
-    centre_cout_libelle,
-    domaine_fonctionnel_code,
-    domaine_fonctionnel_libelle,
-    taux_horaire,
-    is_fc_majoree
-) 
-dep2
-)
-dep3
-)
-dep4;
-
--- V_EXPORT_DEPASS_CHARGES
-CREATE OR REPLACE FORCE VIEW "V_EXPORT_DEPASS_CHARGES" ("ANNEE_ID", "STRUCTURE_ID", "TYPE_INTERVENTION_ID", "ANNEE", "TYPE_VOLUME_HORAIRE_CODE", "INTERVENANT_CODE", "INTERVENANT_NOM", "INTERVENANT_DATE_NAISSANCE", "INTERVENANT_STATUT_LIBELLE", "INTERVENANT_TYPE_CODE", "INTERVENANT_TYPE_LIBELLE", "STRUCTURE_AFF_LIBELLE", "STRUCTURE_ENS_LIBELLE", "GROUPE_TYPE_FORMATION_LIBELLE", "TYPE_FORMATION_LIBELLE", "ETAPE_NIVEAU", "ETAPE_CODE", "ETAPE_LIBELLE", "ELEMENT_CODE", "ELEMENT_LIBELLE", "ELEMENT_TAUX_FI", "ELEMENT_TAUX_FC", "ELEMENT_TAUX_FA", "ELEMENT_SOURCE_LIBELLE", "PERIODE", "TYPE_INTERVENTION_CODE", "HEURES_SERVICE", "SOURCE_CHARGES", "HEURES_CHARGES", "GROUPES_CHARGES", "HEURES_DEPASSEMENT") AS 
-  WITH c AS ( 
+    type_volume_horaire, etat_volume_horaire, annee, code_intervenant, intervenant, statut_intervenant,
+    type_intervenant, grade, structure_enseignement, groupe_type_formation, type_formation,
+    code_formation, total_hetd, centre_couts,
+    OSE_FORMULE.GET_TAUX_HORAIRE_HETD( SYSDATE ) * total_hetd total_euros
+  FROM (
   SELECT
-    vhe.element_pedagogique_id,
-    vhe.type_intervention_id,
-    CASE WHEN MAX(vhe.groupes) IS NULL THEN 
-      'Charges OSE' ELSE s.libelle END source,
-    MAX(vhe.heures) heures,
-    COALESCE( MAX(vhe.groupes), ROUND(SUM(t.groupes),10) ) groupes
+    tvh.id                              type_volume_horaire_id,
+    evh.id                              etat_volume_horaire_id,
+    a.id                                annee_id,
+    i.id                                intervenant_id,
+    si.id                               statut_intervenant_id,
+    ti.id                               type_intervenant_id,
+    g.id                                grade_id,
+    str.id                              structure_id,
+    gtf.id                              groupe_type_formation_id,
+    tf.id                               type_formation_id,
+    e.id                                etape_id,
 
+    tvh.code                            type_volume_horaire,
+    evh.code                            etat_volume_horaire,
+    a.libelle                           annee,
+    i.code                              code_intervenant,
+    i.nom_usuel || ' ' || i.prenom      intervenant,
+    si.libelle                          statut_intervenant,
+    ti.libelle                          type_intervenant,
+    g.libelle_long                      grade,
+    str.libelle_court                   structure_enseignement,
+    gtf.libelle_long                    groupe_type_formation,
+    tf.libelle_long                     type_formation,
+    e.source_code                       code_formation,
+    frs.total - SUM(mep.heures) OVER (PARTITION BY frs.id) total_hetd,
+    RANK() OVER ( PARTITION BY frs.id ORDER BY mep.id) ordre,
+    null centre_couts
   FROM
-    volume_horaire_ens     vhe
-         JOIN parametre p ON p.nom = 'scenario_charges_services'
-         JOIN source    s ON s.id = vhe.source_id
-    LEFT JOIN tbl_chargens   t ON t.element_pedagogique_id = vhe.element_pedagogique_id 
-                              AND t.type_intervention_id = vhe.type_intervention_id
-                              AND t.scenario_id = to_number(p.valeur)
-  WHERE
-    vhe.histo_destruction IS NULL
-  GROUP BY
-    vhe.element_pedagogique_id,
-    vhe.type_intervention_id,
-    s.libelle
-), s AS (
-  SELECT
-    i.annee_id,
-    vh.type_volume_horaire_id,
-    s.intervenant_id,
-    s.element_pedagogique_id,
-    vh.type_intervention_id,
-    SUM(vh.heures) heures
-  FROM
-    volume_horaire vh
-    JOIN service     s ON s.id = vh.service_id
-                      AND s.element_pedagogique_id IS NOT NULL
-                      AND s.histo_destruction IS NULL
-    JOIN intervenant i ON i.id = s.intervenant_id
-                      AND i.histo_destruction IS NULL
-  WHERE
-    vh.histo_destruction IS NULL
-  GROUP BY
-    i.annee_id,
-    vh.type_volume_horaire_id,
-    s.intervenant_id,
-    s.element_pedagogique_id,
-    vh.type_intervention_id
+              formule_resultat_service  frs
+         JOIN formule_resultat           fr ON fr.id = frs.formule_resultat_id
+         JOIN etat_volume_horaire       evh ON evh.id = fr.etat_volume_horaire_id
+         JOIN type_volume_horaire       tvh ON tvh.id = fr.type_volume_horaire_id
+         JOIN intervenant                 i ON i.id = fr.intervenant_id
+         JOIN annee                       a ON a.id = i.annee_id
+         JOIN statut_intervenant         si ON si.id = i.statut_id
+         JOIN type_intervenant           ti ON ti.id = si.type_intervenant_id
+         JOIN service                     s ON s.id = frs.service_id
+    LEFT JOIN grade                       g ON g.id = i.grade_id
+    LEFT JOIN element_pedagogique        ep ON ep.id = s.element_pedagogique_id
+         JOIN structure                 str ON str.id = NVL(ep.structure_id, i.structure_id)
+    LEFT JOIN etape                       e ON e.id = ep.etape_id
+    LEFT JOIN type_formation             tf ON tf.id = e.type_formation_id
+    LEFT JOIN groupe_type_formation     gtf ON gtf.id = tf.groupe_id
+    LEFT JOIN mise_en_paiement          mep ON mep.formule_res_service_id = frs.id
+                                           AND mep.histo_destruction IS NULL
+  ) t WHERE ordre = 1 AND total_hetd > 0
 )
 SELECT
-  s.annee_id                                  annee_id,
-  sens.id                                     structure_id,
-  tiv.id                                      type_intervention_id,
+  type_volume_horaire_id,
+  etat_volume_horaire_id,
+  annee_id,
+  intervenant_id,
+  statut_intervenant_id,
+  type_intervenant_id,
+  grade_id,
+  structure_id,
+  groupe_type_formation_id,
+  type_formation_id,
+  etape_id,
 
-  a.libelle                                   annee,
-  tvh.libelle                                 type_volume_horaire_code,
-  i.source_code                               intervenant_code,
-  i.nom_usuel || ' ' || i.prenom              intervenant_nom,
-  i.date_naissance                            intervenant_date_naissance,
-  si.libelle                                  intervenant_statut_libelle,
+  type_volume_horaire,
+  etat_volume_horaire,
+  annee,
+  code_intervenant,
+  intervenant,
+  statut_intervenant,
+  type_intervenant,
+  grade,
+  structure_enseignement,
+  groupe_type_formation,
+  type_formation,
+  code_formation,
+  SUM(total_hetd) total_hetd,
+  centre_couts,
+  SUM(total_euros) total_euros
+FROM
+  t
+GROUP BY
+  type_volume_horaire_id,
+  etat_volume_horaire_id,
+  annee_id,
+  intervenant_id,
+  statut_intervenant_id,
+  type_intervenant_id,
+  grade_id,
+  structure_id,
+  groupe_type_formation_id,
+  type_formation_id,
+  etape_id,
 
-  ti.code                                     intervenant_type_code,
-  ti.libelle                                  intervenant_type_libelle,
-  CASE WHEN ti.code = 'P' THEN saff.libelle_court ELSE NULL END structure_aff_libelle,
-  sens.libelle_court                          structure_ens_libelle,
+  type_volume_horaire,
+  etat_volume_horaire,
+  annee,
+  code_intervenant,
+  intervenant,
+  statut_intervenant,
+  type_intervenant,
+  grade,
+  structure_enseignement,
+  groupe_type_formation,
+  type_formation,
+  code_formation,
+  centre_couts;
 
-  gtf.libelle_court                           groupe_type_formation_libelle,
-  tf.libelle_court                            type_formation_libelle,
-  etp.niveau                                  etape_niveau,
-  etp.source_code                             etape_code,
-  etp.libelle                                 etape_libelle,
-  ep.source_code                              element_code,
-  ep.libelle                                  element_libelle,
-  ep.taux_fi                                  element_taux_fi,
-  ep.taux_fc                                  element_taux_fc,
-  ep.taux_fa                                  element_taux_fa,
-  src.libelle                                 element_source_libelle,
-  p.libelle_court                             periode,
-  tiv.code                                    type_intervention_code,
-  s.heures                                    heures_service,
-  c.source                                    source_charges,
-  c.heures                                    heures_charges,
-  c.groupes                                   groupes_charges,
-  s.heures - COALESCE(c.heures * c.groupes,0) heures_depassement
+-- V_FORMULE_INTERVENANT
+CREATE OR REPLACE FORCE VIEW "V_FORMULE_INTERVENANT" ("ID", "ANNEE_ID", "STRUCTURE_ID", "HEURES_SERVICE_STATUTAIRE", "DEPASSEMENT_SERVICE_DU_SANS_HC") AS
+  SELECT
+  i.id,
+  i.annee_id,
+  i.structure_id,
+  si.service_statutaire heures_service_statutaire,
+  si.depassement_service_du_sans_hc
 FROM
-                                    s
-       JOIN annee                   a ON a.id = s.annee_id
-       JOIN type_volume_horaire   tvh ON tvh.id = s.type_volume_horaire_id
-       JOIN intervenant             i ON i.id = s.intervenant_id
-       JOIN statut_intervenant     si ON si.id = i.statut_id
-       JOIN type_intervenant       ti ON ti.id = si.type_intervenant_id
-       JOIN element_pedagogique    ep ON ep.id = s.element_pedagogique_id
-       JOIN etape                 etp ON etp.id = ep.etape_id
-       JOIN type_formation         tf ON tf.id = etp.type_formation_id
-       JOIN groupe_type_formation gtf ON gtf.id = tf.groupe_id
-       JOIN structure            saff ON saff.id = i.structure_id
-       JOIN structure            sens ON sens.id = ep.structure_id
-       JOIN source                src ON src.id = ep.source_id
-       JOIN type_intervention     tiv ON tiv.id = s.type_intervention_id
-  LEFT JOIN                         c ON c.element_pedagogique_id = s.element_pedagogique_id
-                                     AND c.type_intervention_id = COALESCE(tiv.type_intervention_maquette_id,tiv.id)
-  LEFT JOIN periode                 p ON p.id = ep.periode_id;
+  intervenant i
+  JOIN statut_intervenant si ON si.id = i.statut_id
+WHERE
+  i.histo_destruction IS NULL
+  AND i.id = COALESCE( OSE_FORMULE.GET_INTERVENANT_ID, i.id );
 
--- V_EXPORT_DMEP
-CREATE OR REPLACE FORCE VIEW "V_EXPORT_DMEP" ("INTERVENANT_ID", "TYPE_INTERVENANT_ID", "ANNEE_ID", "STRUCTURE_AFF_ID", "STRUCTURE_ENS_ID", "STRUCTURE_ID", "CENTRE_COUT_ID", "ELEMENT_PEDAGOGIQUE_ID", "ETAPE_ID", "TYPE_FORMATION_ID", "GROUPE_TYPE_FORMATION_ID", "STATUT_INTERVENANT_ID", "PERIODE_ID", "INTERVENANT_CODE", "INTERVENANT_NOM", "INTERVENANT_DATE_NAISSANCE", "INTERVENANT_STATUT_LIBELLE", "INTERVENANT_TYPE_CODE", "INTERVENANT_TYPE_LIBELLE", "INTERVENANT_GRADE_CODE", "INTERVENANT_GRADE_LIBELLE", "INTERVENANT_DISCIPLINE_CODE", "INTERVENANT_DISCIPLINE_LIBELLE", "SERVICE_STRUCTURE_AFF_LIBELLE", "SERVICE_STRUCTURE_ENS_LIBELLE", "ETABLISSEMENT_LIBELLE", "GROUPE_TYPE_FORMATION_LIBELLE", "TYPE_FORMATION_LIBELLE", "ETAPE_NIVEAU", "ETAPE_CODE", "ETAPE_LIBELLE", "ELEMENT_CODE", "ELEMENT_LIBELLE", "ELEMENT_DISCIPLINE_CODE", "ELEMENT_DISCIPLINE_LIBELLE", "FONCTION_REFERENTIEL_LIBELLE", "ELEMENT_TAUX_FI", "ELEMENT_TAUX_FC", "ELEMENT_TAUX_FA", "ELEMENT_SOURCE_LIBELLE", "COMMENTAIRES", "ETAT", "TYPE_RESSOURCE_LIBELLE", "CENTRE_COUTS_CODE", "CENTRE_COUTS_LIBELLE", "DOMAINE_FONCTIONNEL_CODE", "DOMAINE_FONCTIONNEL_LIBELLE", "PERIODE_LIBELLE", "DATE_MISE_EN_PAIEMENT", "HEURES_FI", "HEURES_FA", "HEURES_FC", "HEURES_FC_MAJOREES", "HEURES_REFERENTIEL") AS 
-  WITH mep AS (
+-- V_FORMULE_SERVICE
+CREATE OR REPLACE FORCE VIEW "V_FORMULE_SERVICE" ("ID", "INTERVENANT_ID", "TAUX_FI", "TAUX_FA", "TAUX_FC", "STRUCTURE_AFF_ID", "STRUCTURE_ENS_ID", "PONDERATION_SERVICE_DU", "PONDERATION_SERVICE_COMPL") AS
   SELECT
-    frs.service_id,
-    frsr.service_referentiel_id,
-    mep.date_mise_en_paiement,
-    mep.periode_paiement_id,
-    mep.centre_cout_id,
-    mep.domaine_fonctionnel_id,
-  
-    sum(case when th.code = 'fi' then mep.heures else 0 end) heures_fi,
-    sum(case when th.code = 'fa' then mep.heures else 0 end) heures_fa,
-    sum(case when th.code = 'fc' then mep.heures else 0 end) heures_fc,
-    sum(case when th.code = 'fc_majorees' then mep.heures else 0 end) heures_fc_majorees,
-    sum(case when th.code = 'referentiel' then mep.heures else 0 end) heures_referentiel
-  FROM
-              mise_en_paiement              mep
-         JOIN type_heures                    th ON th.id   = mep.type_heures_id
-    LEFT JOIN formule_resultat_service      frs ON frs.id  = mep.formule_res_service_id
-    LEFT JOIN formule_resultat_service_ref frsr ON frsr.id = mep.formule_res_service_ref_id
-  WHERE
-    mep.histo_destruction IS NULL
-  GROUP BY
-    frs.service_id,
-    frsr.service_referentiel_id,
-    mep.date_mise_en_paiement,
-    mep.periode_paiement_id,
-    mep.centre_cout_id,
-    mep.domaine_fonctionnel_id
-)
-SELECT 
-  i.id                            intervenant_id,
-  ti.id                           type_intervenant_id,
-  i.annee_id                      annee_id,
-  saff.id                         structure_aff_id,
-  sens.id                         structure_ens_id,
-  NVL(sens.id,saff.id)            structure_id,
-  cc.id                           centre_cout_id,
-  ep.id                           element_pedagogique_id,
-  etp.id                          etape_id,
-  tf.id                           type_formation_id,
-  gtf.id                          groupe_type_formation_id,
-  si.id                           statut_intervenant_id,
-  p.id                            periode_id,
-    
-  i.source_code                   intervenant_code,
-  i.nom_usuel || ' ' || i.prenom  intervenant_nom,
-  i.date_naissance                intervenant_date_naissance,
-  si.libelle                      intervenant_statut_libelle,
-  ti.code                         intervenant_type_code,
-  ti.libelle                      intervenant_type_libelle,
-  g.source_code                   intervenant_grade_code,
-  g.libelle_court                 intervenant_grade_libelle,
-  di.source_code                  intervenant_discipline_code,
-  di.libelle_court                intervenant_discipline_libelle,
-  saff.libelle_court              service_structure_aff_libelle,
-  
-  sens.libelle_court              service_structure_ens_libelle,
-  etab.libelle                    etablissement_libelle,
-  gtf.libelle_court               groupe_type_formation_libelle,
-  tf.libelle_court                type_formation_libelle,
-  etp.niveau                      etape_niveau,
-  etp.source_code                 etape_code,
-  etp.libelle                     etape_libelle,
-  ep.source_code                  element_code,
-  ep.libelle                      element_libelle,
-  de.source_code                  element_discipline_code,
-  de.libelle_court                element_discipline_libelle,
-  fr.libelle_long                 fonction_referentiel_libelle,
-  ep.taux_fi                      element_taux_fi,
-  ep.taux_fc                      element_taux_fc,
-  ep.taux_fa                      element_taux_fa,
-  src.libelle                     element_source_libelle,
-  COALESCE(to_char(s.description),to_char(sr.commentaires)) commentaires,
-  
-  CASE
-    WHEN mep.date_mise_en_paiement IS NULL THEN 'a-mettre-en-paiement'
-    ELSE 'mis-en-paiement'
-  END                             etat,
-  tr.libelle                      type_ressource_libelle,
-  cc.source_code                  centre_couts_code,
-  cc.libelle                      centre_couts_libelle,
-  df.source_code                  domaine_fonctionnel_code,
-  df.libelle                      domaine_fonctionnel_libelle,
-  p.libelle_long                  periode_libelle,
-  mep.date_mise_en_paiement       date_mise_en_paiement,
-  mep.heures_fi                   heures_fi,
-  mep.heures_fa                   heures_fa,
-  mep.heures_fc                   heures_fc,
-  mep.heures_fc_majorees          heures_fc_majorees,
-  mep.heures_referentiel          heures_referentiel
+  s.id                                                    id,
+  s.intervenant_id                                        intervenant_id,
+  CASE WHEN ep.id IS NOT NULL THEN ep.taux_fi ELSE 1 END  taux_fi,
+  CASE WHEN ep.id IS NOT NULL THEN ep.taux_fa ELSE 0 END  taux_fa,
+  CASE WHEN ep.id IS NOT NULL THEN ep.taux_fc ELSE 0 END  taux_fc,
+  i.structure_id                                          structure_aff_id,
+  ep.structure_id                                         structure_ens_id,
+  NVL( EXP (SUM (LN (m.ponderation_service_du))), 1)      ponderation_service_du,
+  NVL( EXP (SUM (LN (m.ponderation_service_compl))), 1)   ponderation_service_compl
 FROM
-              mep
-         JOIN centre_cout               cc ON cc.id   = mep.centre_cout_id
-         JOIN type_ressource            tr ON tr.id   = cc.type_ressource_id
-    LEFT JOIN service                    s ON s.id    = mep.service_id
-    LEFT JOIN element_pedagogique       ep ON ep.id   = s.element_pedagogique_id
-    LEFT JOIN source                   src ON src.id  = ep.source_id OR (ep.source_id IS NULL AND src.code = 'OSE')
-    LEFT JOIN discipline                de ON de.id   = ep.discipline_id
-    LEFT JOIN etape                    etp ON etp.id  = ep.etape_id
-    LEFT JOIN type_formation            tf ON tf.id   = etp.type_formation_id
-    LEFT JOIN groupe_type_formation    gtf ON gtf.id  = tf.groupe_id
-    LEFT JOIN service_referentiel       sr ON sr.id   = mep.service_referentiel_id
-    LEFT JOIN fonction_referentiel      fr ON fr.id   = sr.fonction_id
-         JOIN intervenant                i ON i.id    = NVL( s.intervenant_id, sr.intervenant_id )
-         JOIN statut_intervenant        si ON si.id   = i.statut_id
-         JOIN type_intervenant          ti ON ti.id   = si.type_intervenant_id
-    LEFT JOIN grade                      g ON g.id    = i.grade_id
-    LEFT JOIN discipline                di ON di.id   = i.discipline_id
-    LEFT JOIN structure               saff ON saff.id = i.structure_id AND ti.code = 'P'
-    LEFT JOIN structure               sens ON sens.id = NVL( ep.structure_id, sr.structure_id )
-         JOIN etablissement           etab ON etab.id = NVL( s.etablissement_id, ose_parametre.get_etablissement() )
-    LEFT JOIN periode                    p ON p.id    = mep.periode_paiement_id
-    LEFT JOIN domaine_fonctionnel       df ON df.id   = mep.domaine_fonctionnel_id
-ORDER BY
-  intervenant_nom,
-  service_structure_aff_libelle, 
-  service_structure_ens_libelle, 
-  etape_libelle, 
-  element_libelle;
+  service s
+  JOIN intervenant i ON i.id = s.intervenant_id
+  LEFT JOIN element_pedagogique ep ON ep.id = s.element_pedagogique_id
+  LEFT JOIN element_modulateur em ON em.element_id = s.element_pedagogique_id
+        AND em.histo_destruction IS NULL
+  LEFT JOIN modulateur         m ON m.id = em.modulateur_id
+WHERE
+  s.histo_destruction IS NULL
+GROUP BY
+  s.id,
+  s.intervenant_id,
+  ep.id,
+  ep.taux_fi, ep.taux_fa, ep.taux_fc,
+  i.structure_id, ep.structure_id;
 
--- V_EXPORT_PAIEMENT_WINPAIE
-CREATE OR REPLACE FORCE VIEW "V_EXPORT_PAIEMENT_WINPAIE" ("TYPE_INTERVENANT_ID", "ANNEE_ID", "STRUCTURE_ID", "PERIODE_PAIEMENT_ID", "INTERVENANT_ID", "INSEE", "NOM", "CARTE", "CODE_ORIGINE", "RETENUE", "SENS", "MC", "NBU", "MONTANT", "LIBELLE") AS 
-  SELECT
-  si.type_intervenant_id type_intervenant_id,
-  i.annee_id,
-  t2.structure_id,
-  t2.periode_paiement_id,
-  i.id intervenant_id,
-  
-  NVL(i.numero_insee,'') || TRIM(NVL(TO_CHAR(i.numero_insee_cle,'00'),'')) insee,
-  i.nom_usuel || ',' || i.prenom nom,
-  to_char((SELECT valeur FROM parametre WHERE nom = 'winpaie_carte' AND histo_destruction IS NULL)) carte,
-  t2.code_origine,
-  to_char((SELECT valeur FROM parametre WHERE nom = 'winpaie_retenue' AND histo_destruction IS NULL)) retenue,
-  to_char((SELECT valeur FROM parametre WHERE nom = 'winpaie_sens' AND histo_destruction IS NULL)) sens,
-  to_char((SELECT valeur FROM parametre WHERE nom = 'winpaie_mc' AND histo_destruction IS NULL)) mc,
-  t2.nbu,
-  OSE_FORMULE.GET_TAUX_HORAIRE_HETD( NVL(t2.date_mise_en_paiement,SYSDATE) ) montant,
-  COALESCE(t2.unite_budgetaire,'') || ' ' || to_char(i.annee_id) || ' ' || to_char(i.annee_id+1) 
-  /*  || ' ' || to_char(FLOOR(t2.nbu)) || ' H' || CASE
-      WHEN to_char(ROUND( t2.nbu-FLOOR(t2.nbu), 2 )*100,'00') = ' 00' THEN '' 
-      ELSE to_char(ROUND( t2.nbu-FLOOR(t2.nbu), 2 )*100,'00') END*/ libelle
-FROM (
+-- V_FORMULE_SERVICE_MODIFIE
+CREATE OR REPLACE FORCE VIEW "V_FORMULE_SERVICE_MODIFIE" ("ID", "INTERVENANT_ID", "HEURES", "HEURES_DECHARGE") AS
   SELECT
-    structure_id,
-    periode_paiement_id,
-    intervenant_id,
-    code_origine,
-    ROUND( SUM(nbu), 2) nbu,
-    unite_budgetaire,
-    date_mise_en_paiement
-  FROM (
-    WITH mep AS (
-    SELECT
-      -- pour les filtres
-      mep.id,
-      mis.structure_id,
-      mep.periode_paiement_id,
-      mis.intervenant_id,
-      mep.heures,
-      cc.unite_budgetaire,
-      mep.date_mise_en_paiement
-    FROM
-      v_mep_intervenant_structure  mis
-      JOIN mise_en_paiement        mep ON mep.id = mis.mise_en_paiement_id AND mep.histo_destruction IS NULL
-      JOIN centre_cout              cc ON cc.id = mep.centre_cout_id
-      JOIN type_heures              th ON th.id = mep.type_heures_id
-    WHERE
-      mep.date_mise_en_paiement IS NOT NULL
-      AND mep.periode_paiement_id IS NOT NULL
-      AND th.eligible_extraction_paie = 1
-    )
-    SELECT
-      mep.id,
-      mep.structure_id,
-      mep.periode_paiement_id,
-      mep.intervenant_id,
-      2 code_origine,
-      mep.heures * 4 / 10 nbu,
-      mep.unite_budgetaire,
-      mep.date_mise_en_paiement
-    FROM
-      mep
-    WHERE
-      mep.heures * 4 / 10 > 0
+  msd.intervenant_id id,
+  msd.intervenant_id,
+  NVL( SUM( msd.heures * mms.multiplicateur ), 0 ) heures,
+  NVL( SUM( msd.heures * mms.multiplicateur * mms.decharge ), 0 ) heures_decharge
+FROM
+  modification_service_du msd
+  JOIN MOTIF_MODIFICATION_SERVICE mms ON
+    mms.id = msd.motif_id
+    AND mms.histo_destruction IS NULL
+  JOIN intervenant i ON i.id = msd.intervenant_id
+WHERE
+  msd.histo_destruction IS NULL
+  AND 1 = ose_divers.intervenant_has_privilege(msd.intervenant_id, 'modif-service-du-association')
+GROUP BY
+  msd.intervenant_id;
 
-    UNION
+-- V_FORMULE_SERVICE_REF
+CREATE OR REPLACE FORCE VIEW "V_FORMULE_SERVICE_REF" ("ID", "INTERVENANT_ID", "STRUCTURE_ID") AS
+  SELECT
+  sr.id             id,
+  sr.intervenant_id intervenant_id,
+  sr.structure_id   structure_id
+FROM
+  service_referentiel sr
+  JOIN intervenant i ON i.id = sr.intervenant_id
+WHERE
+  sr.histo_destruction IS NULL
+  AND i.id = COALESCE( OSE_FORMULE.GET_INTERVENANT_ID, i.id );
 
-    SELECT 
-      mep.id,
-      mep.structure_id,
-      mep.periode_paiement_id,
-      mep.intervenant_id,
-      1 code_origine,
-      mep.heures * 6 / 10 nbu,
-      mep.unite_budgetaire,
-      mep.date_mise_en_paiement
-    FROM
-      mep
-    WHERE
-      mep.heures * 6 / 10 > 0
-  ) t1
-  GROUP BY
-    structure_id,
-    periode_paiement_id,
-    intervenant_id,
-    code_origine,
-    unite_budgetaire,
-    date_mise_en_paiement
-) t2
-JOIN intervenant i ON i.id = t2.intervenant_id
-JOIN statut_intervenant si ON si.id = i.statut_id
-JOIN structure s ON s.id = t2.structure_id;
+-- V_FORMULE_VOLUME_HORAIRE
+CREATE OR REPLACE FORCE VIEW "V_FORMULE_VOLUME_HORAIRE" ("ID", "SERVICE_ID", "INTERVENANT_ID", "TYPE_INTERVENTION_ID", "TYPE_VOLUME_HORAIRE_ID", "ETAT_VOLUME_HORAIRE_ID", "ETAT_VOLUME_HORAIRE_ORDRE", "HEURES", "TAUX_SERVICE_DU", "TAUX_SERVICE_COMPL") AS
+  SELECT
+  vh.id                       id,
+  s.id                        service_id,
+  s.intervenant_id            intervenant_id,
+  ti.id                       type_intervention_id,
+  vh.type_volume_horaire_id   type_volume_horaire_id,
+  evh.id                      etat_volume_horaire_id,
+  evh.ordre                   etat_volume_horaire_ordre,
+  vh.heures                   heures,
+  ti.taux_hetd_service        taux_service_du,
+  ti.taux_hetd_complementaire taux_service_compl
+FROM
+  volume_horaire               vh
+  JOIN service                  s ON s.id     = vh.service_id
+  JOIN type_intervention       ti ON ti.id    = vh.type_intervention_id
+  JOIN v_volume_horaire_etat  vhe ON vhe.volume_horaire_id = vh.id
+  JOIN etat_volume_horaire    evh ON evh.id = vhe.etat_volume_horaire_id
+WHERE
+  vh.histo_destruction IS NULL
+  AND s.histo_destruction IS NULL
+  AND vh.heures <> 0
+  AND vh.motif_non_paiement_id IS NULL
+  AND s.intervenant_id = COALESCE( OSE_FORMULE.GET_INTERVENANT_ID, s.intervenant_id );
 
--- V_EXPORT_PILOTAGE_ECARTS_ETATS
-CREATE OR REPLACE FORCE VIEW "V_EXPORT_PILOTAGE_ECARTS_ETATS" ("ANNEE_ID", "ANNEE", "ETAT", "TYPE_HEURES_ID", "TYPE_HEURES", "STRUCTURE_ID", "STRUCTURE", "INTERVENANT_ID", "INTERVENANT_TYPE", "INTERVENANT_CODE", "INTERVENANT", "HETD_PAYABLES") AS 
-  SELECT 
-  t3.annee_id annee_id,
-  t3.annee_id || '-' || (t3.annee_id+1) annee,
-  t3.etat,
-  t3.type_heures_id,
-  t3.type_heures,
-  s.id structure_id,
-  s.libelle_court structure,
-  i.id intervenant_id,
-  ti.libelle intervenant_type,
-  i.source_code intervenant_code,
-  i.prenom || ' ' || i.nom_usuel intervenant,
-  t3.hetd_payables
+-- V_FORMULE_VOLUME_HORAIRE_REF
+CREATE OR REPLACE FORCE VIEW "V_FORMULE_VOLUME_HORAIRE_REF" ("ID", "SERVICE_REFERENTIEL_ID", "INTERVENANT_ID", "TYPE_VOLUME_HORAIRE_ID", "ETAT_VOLUME_HORAIRE_ID", "ETAT_VOLUME_HORAIRE_ORDRE", "HEURES") AS
+  SELECT
+  vhr.id                      id,
+  sr.id                       service_referentiel_id,
+  sr.intervenant_id           intervenant_id,
+  vhr.type_volume_horaire_id  type_volume_horaire_id,
+  evh.id                      etat_volume_horaire_id,
+  evh.ordre                   etat_volume_horaire_ordre,
+  vhr.heures                  heures
+FROM
+  volume_horaire_ref               vhr
+  JOIN service_referentiel          sr ON sr.id     = vhr.service_referentiel_id
+  JOIN v_volume_horaire_ref_etat  vher ON vher.volume_horaire_ref_id = vhr.id
+  JOIN etat_volume_horaire         evh ON evh.id = vher.etat_volume_horaire_id
+WHERE
+  vhr.histo_destruction IS NULL
+  AND sr.histo_destruction IS NULL
+  AND vhr.heures <> 0
+  AND sr.intervenant_id = COALESCE( OSE_FORMULE.GET_INTERVENANT_ID, sr.intervenant_id );
+
+-- V_FR_SERVICE_CENTRE_COUT
+CREATE OR REPLACE FORCE VIEW "V_FR_SERVICE_CENTRE_COUT" ("FORMULE_RESULTAT_SERVICE_ID", "CENTRE_COUT_ID") AS
+  SELECT
+  frs.id formule_resultat_service_id, cc.id centre_cout_id
 FROM
+  formule_resultat_service   frs
+  JOIN service                 s ON s.id = frs.service_id
+  JOIN element_pedagogique    ep ON ep.id = s.element_pedagogique_id
+  JOIN centre_cout            cc ON cc.histo_destruction IS NULL
+
+  JOIN centre_cout_structure ccs ON ccs.centre_cout_id = cc.id
+                                AND ccs.structure_id = ep.structure_id
+                                AND ccs.histo_destruction IS NULL
+
+  JOIN cc_activite             a ON a.id = cc.activite_id
+                                AND a.histo_destruction IS NULL
+
+  JOIN type_ressource         tr ON tr.id = cc.type_ressource_id
+                                AND tr.histo_destruction IS NULL
+WHERE
+  (
+    (frs.heures_compl_fi > 0 AND tr.fi = 1 AND a.fi = 1 )
+    OR (frs.heures_compl_fa > 0 AND tr.fa = 1 AND a.fa = 1 )
+    OR (frs.heures_compl_fc > 0 AND tr.fc = 1 AND a.fc = 1 )
+    OR (frs.heures_compl_fc_majorees > 0 AND tr.fc_majorees = 1 AND a.fc_majorees = 1 )
+  )
+
+UNION
 
-(
 SELECT
-  annee_id,
-  etat,
-  type_heures_id,
-  type_heures,
-  structure_id,
+  frs.id formule_resultat_service_id, cc.id
+FROM
+  formule_resultat_service   frs
+  JOIN service                 s ON s.id = frs.service_id
+                                AND s.element_pedagogique_id IS NULL
+
+  JOIN intervenant             i ON i.id = s.intervenant_id
+  JOIN centre_cout            cc ON cc.histo_destruction IS NULL
+
+  JOIN centre_cout_structure ccs ON ccs.centre_cout_id = cc.id
+                                AND ccs.structure_id = i.structure_id
+                                AND ccs.histo_destruction IS NULL
+
+  JOIN cc_activite             a ON a.id = cc.activite_id
+                                AND a.histo_destruction IS NULL
+
+  JOIN type_ressource         tr ON tr.id = cc.type_ressource_id
+                                AND tr.histo_destruction IS NULL
+WHERE
+  (
+    (frs.heures_compl_fi > 0 AND tr.fi = 1 AND a.fi = 1 )
+    OR (frs.heures_compl_fa > 0 AND tr.fa = 1 AND a.fa = 1 )
+    OR (frs.heures_compl_fc > 0 AND tr.fc = 1 AND a.fc = 1 )
+    OR (frs.heures_compl_fc_majorees > 0 AND tr.fc_majorees = 1 AND a.fc_majorees = 1 )
+  );
+
+-- V_FR_SERVICE_REF_CENTRE_COUT
+CREATE OR REPLACE FORCE VIEW "V_FR_SERVICE_REF_CENTRE_COUT" ("FORMULE_RESULTAT_SERV_REF_ID", "CENTRE_COUT_ID") AS
+  SELECT
+  frsr.id formule_resultat_serv_ref_id, cc.id
+FROM
+  formule_resultat_service_ref   frsr
+  JOIN service_referentiel    sr ON sr.id = frsr.service_referentiel_id
+  JOIN centre_cout            cc ON cc.histo_destruction IS NULL
+
+  JOIN centre_cout_structure ccs ON ccs.centre_cout_id = cc.id
+                                AND ccs.structure_id = sr.structure_id
+                                AND ccs.histo_destruction IS NULL
+
+  JOIN cc_activite             a ON a.id = cc.activite_id
+                                AND a.histo_destruction IS NULL
+
+  JOIN type_ressource         tr ON tr.id = cc.type_ressource_id
+                                AND tr.histo_destruction IS NULL
+WHERE
+  frsr.heures_compl_referentiel > 0 AND tr.referentiel = 1;
+
+-- V_HAS_DMEP_A_FAIRE
+CREATE OR REPLACE FORCE VIEW "V_HAS_DMEP_A_FAIRE" ("INTERVENANT_ID", "STRUCTURE_ID", "HAS_DMEP_A_FAIRE") AS
+  SELECT
   intervenant_id,
-  sum(hetd) hetd_payables
-FROM (
+  structure_id,
+  CASE WHEN
+    SUM(CASE WHEN heures_dmep > heures_compl THEN heures_compl ELSE heures_dmep END) < SUM(heures_compl)
+  THEN 1 ELSE 0 END has_dmep_a_faire
+FROM
+  (
   SELECT
-    annee_id,
-    LOWER(tvh.code) || '-' || evh.code etat,
-    10*tvh.ordre + evh.ordre ordre,
-    type_heures_id,
-    type_heures,
-    structure_id,
-    intervenant_id,
-    SUM(hetd) hetd
-  FROM (
-    SELECT
-      i.annee_id,
-      fr.type_volume_horaire_id,
-      fr.etat_volume_horaire_id,
-      th.id type_heures_id,
-      th.code type_heures,
-      COALESCE(ep.structure_id,i.structure_id) structure_id,
-      fr.intervenant_id,
-      SUM(frs.heures_compl_fi) hetd
-    FROM
-           formule_resultat_service  frs
-      JOIN formule_resultat           fr ON fr.id = frs.formule_resultat_id
-      JOIN service                     s ON s.id = frs.service_id
-      JOIN intervenant                 i ON i.id = fr.intervenant_id
-      JOIN type_heures                th ON th.code = 'fi'
-      LEFT JOIN element_pedagogique   ep ON ep.id = s.element_pedagogique_id
-    GROUP BY
-      i.annee_id,
-      fr.type_volume_horaire_id,
-      fr.etat_volume_horaire_id,
-      th.id, th.code,
-      fr.intervenant_id,
-      ep.structure_id,
-      i.structure_id
-    
-    UNION ALL
-    
-    SELECT
-      i.annee_id,
-      fr.type_volume_horaire_id,
-      fr.etat_volume_horaire_id,
-      th.id type_heures_id,
-      th.code type_heures,
-      COALESCE(ep.structure_id,i.structure_id) structure_id,
-      fr.intervenant_id,
-      SUM(frs.heures_compl_fa) hetd
-    FROM
-           formule_resultat_service  frs
-      JOIN formule_resultat           fr ON fr.id = frs.formule_resultat_id
-      JOIN service                     s ON s.id = frs.service_id
-      JOIN intervenant                 i ON i.id = fr.intervenant_id
-      JOIN type_heures                th ON th.code = 'fa'
-      LEFT JOIN element_pedagogique ep ON ep.id = s.element_pedagogique_id
-    GROUP BY
-      i.annee_id,
-      fr.type_volume_horaire_id,
-      fr.etat_volume_horaire_id,
-      th.id, th.code,
-      fr.intervenant_id,
-      ep.structure_id,
-      i.structure_id
-      
-    UNION ALL
-      
-    SELECT
-      i.annee_id,
-      fr.type_volume_horaire_id,
-      fr.etat_volume_horaire_id,
-      th.id type_heures_id,
-      th.code type_heures,
-      COALESCE(ep.structure_id,i.structure_id) structure_id,
-      fr.intervenant_id,
-      SUM(frs.heures_compl_fc) hetd
-    FROM
-           formule_resultat_service  frs
-      JOIN formule_resultat           fr ON fr.id = frs.formule_resultat_id
-      JOIN service                     s ON s.id = frs.service_id
-      JOIN intervenant                 i ON i.id = fr.intervenant_id
-      JOIN type_heures                th ON th.code = 'fc'
-      LEFT JOIN element_pedagogique ep ON ep.id = s.element_pedagogique_id
-    GROUP BY
-      i.annee_id,
-      fr.type_volume_horaire_id,
-      fr.etat_volume_horaire_id,
-      th.id, th.code,
-      fr.intervenant_id,
-      ep.structure_id,
-      i.structure_id
-    
-    UNION ALL
-    
+    fr.intervenant_id intervenant_id,
+    NVL( ep.structure_id, i.structure_id ) structure_id,
+    frs.heures_compl_fi + frs.heures_compl_fa + frs.heures_compl_fc + frs.heures_compl_fc_majorees heures_compl,
+    SUM( NVL(mep.heures,0) ) OVER (PARTITION BY frs.id) heures_dmep,
+    SUM( NVL(CASE WHEN mep.periode_paiement_id IS NOT NULL THEN mep.heures ELSE 0 END,0) ) OVER (PARTITION BY frs.id) heures_mep,
+    ROW_NUMBER() OVER (PARTITION BY frs.id ORDER BY 1) index__
+  FROM
+    formule_resultat_service frs
+    JOIN formule_resultat fr ON fr.id = frs.formule_resultat_id
+    JOIN type_volume_horaire tvh ON tvh.id = fr.type_volume_horaire_id AND tvh.code = 'REALISE'
+    JOIN etat_volume_horaire evh ON evh.id = fr.etat_volume_horaire_id AND evh.code = 'valide'
+    JOIN intervenant i on i.id = fr.intervenant_id
+    JOIN service s ON s.id = frs.service_id
+    LEFT JOIN element_pedagogique ep on ep.id = s.element_pedagogique_id
+    LEFT JOIN mise_en_paiement mep ON mep.formule_res_service_id = frs.id AND mep.histo_destruction IS NULL
+
+  UNION
+
     SELECT
-      i.annee_id,
-      fr.type_volume_horaire_id,
-      fr.etat_volume_horaire_id,
-      th.id type_heures_id,
-      th.code type_heures,
-      sr.structure_id,
-      fr.intervenant_id,
-      sum( frsr.heures_compl_referentiel ) hetd
-    FROM
-           formule_resultat_service_ref  frsr
-      JOIN formule_resultat                fr ON fr.id = frsr.formule_resultat_id
-      JOIN service_referentiel             sr ON sr.id = frsr.service_referentiel_id
-      JOIN intervenant                      i ON i.id = fr.intervenant_id
-      JOIN type_heures                th ON th.code = 'referentiel'
-    GROUP BY
-      i.annee_id,
-      fr.type_volume_horaire_id,
-      fr.etat_volume_horaire_id,
-      th.id, th.code,
-      fr.intervenant_id,
-      sr.structure_id
-  ) t1
-    JOIN type_volume_horaire            tvh ON tvh.id = t1.type_volume_horaire_id
-    JOIN etat_volume_horaire            evh ON evh.id = t1.etat_volume_horaire_id
-  GROUP BY
-    annee_id, tvh.code, evh.code, tvh.ordre, evh.ordre, type_heures_id, type_heures, structure_id, intervenant_id
-  
-  UNION ALL
-  
+    fr.intervenant_id intervenant_id,
+    NVL( s.structure_id, i.structure_id ) structure_id,
+    frs.heures_compl_referentiel heures_compl,
+    SUM( NVL(mep.heures,0) ) OVER (PARTITION BY frs.id) heures_dmep,
+    SUM( NVL(CASE WHEN mep.periode_paiement_id IS NOT NULL THEN mep.heures ELSE 0 END,0) ) OVER (PARTITION BY frs.id) heures_mep,
+    ROW_NUMBER() OVER (PARTITION BY frs.id ORDER BY 1) index__
+  FROM
+    formule_resultat_service_ref frs
+    JOIN formule_resultat fr ON fr.id = frs.formule_resultat_id
+    JOIN type_volume_horaire tvh ON tvh.id = fr.type_volume_horaire_id AND tvh.code = 'REALISE'
+    JOIN etat_volume_horaire evh ON evh.id = fr.etat_volume_horaire_id AND evh.code = 'valide'
+    JOIN intervenant i on i.id = fr.intervenant_id
+    JOIN service_referentiel s ON s.id = frs.service_referentiel_id
+    LEFT JOIN mise_en_paiement mep ON mep.formule_res_service_ref_id = frs.id AND mep.histo_destruction IS NULL
+  )mep
+WHERE
+  index__ = 1
+GROUP BY
+  intervenant_id,
+  structure_id;
+
+-- V_HETD_PREV_VAL_STRUCT
+CREATE OR REPLACE FORCE VIEW "V_HETD_PREV_VAL_STRUCT" ("ANNEE_ID", "STRUCTURE_ID", "HEURES") AS
   SELECT
-    annee_id,
-    etat,
-    ordre,
-    type_heures_id,
-    type_heures,
-    structure_id,
-    intervenant_id,
-    SUM(hetd) hetd
-  FROM (
-    SELECT
-      i.annee_id,
-      'demande-mise-en-paiement' etat,
-      90 ordre, 
-      th.id   type_heures_id,
-      th.code type_heures,
-      COALESCE( sr.structure_id, ep.structure_id, i.structure_id ) structure_id,
-      i.id intervenant_id,
-      mep.heures hetd
-    FROM
-                mise_en_paiement              mep 
-           JOIN type_heures                    th ON th.id = mep.type_heures_id
-           JOIN centre_cout                    cc ON cc.id = mep.centre_cout_id
-      LEFT JOIN formule_resultat_service      frs ON frs.id = mep.formule_res_service_id
-      LEFT JOIN formule_resultat_service_ref frsr ON frsr.id = mep.formule_res_service_ref_id
-      LEFT JOIN formule_resultat               fr ON fr.id = COALESCE(frs.formule_resultat_id, frsr.formule_resultat_id)
-      LEFT JOIN service                         s ON s.id = frs.service_id
-      LEFT JOIN element_pedagogique            ep ON ep.id = s.element_pedagogique_id
-      LEFT JOIN service_referentiel            sr ON sr.id = frsr.service_referentiel_id
-      LEFT JOIN intervenant                     i ON i.id = fr.intervenant_id
-    WHERE
-      mep.histo_destruction IS NULL
-      AND th.eligible_extraction_paie = 1
+  annee_id,
+  structure_id,
+  sum(heures) heures
+
+FROM
+(
+SELECT
+  i.annee_id,
+  NVL( ep.structure_id, i.structure_id ) structure_id,
+  frs.total heures
+FROM
+  formule_resultat_service frs
+  JOIN formule_resultat fr ON fr.id = frs.formule_resultat_id
+  JOIN type_volume_horaire tvh ON tvh.id = fr.type_volume_horaire_id
+  JOIN etat_volume_horaire evh ON evh.id = fr.etat_volume_horaire_id
+  JOIN intervenant i ON i.id = fr.intervenant_id
+  JOIN service s ON s.id = frs.service_id
+  LEFT JOIN element_pedagogique ep ON ep.id = s.element_pedagogique_id
+
+WHERE
+  tvh.code = 'PREVU'
+  AND evh.code = 'valide'
+) t1
+
+GROUP BY
+  annee_id, structure_id;
+
+-- V_IMPORT_TAB_COLS
+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 (
+  SELECT
+  t.table_name
+FROM
+  user_tab_cols c
+  join user_tables t on t.table_name = c.table_name
+WHERE
+  c.column_name = 'SOURCE_CODE'
+
+MINUS
+
+SELECT
+  mview_name table_name
+FROM
+  USER_MVIEWS
+), c_values (table_name, column_name, c_table_name, c_column_name) AS (
+SELECT
+  tc.table_name,
+  tc.column_name,
+  pcc.table_name c_table_name,
+  pcc.column_name c_column_name
+FROM
+  user_tab_cols tc
+  JOIN USER_CONS_COLUMNS cc ON cc.table_name = tc.table_name AND cc.column_name = tc.column_name
+  JOIN USER_CONSTRAINTS c ON c.constraint_name = cc.constraint_name
+  JOIN USER_CONSTRAINTS pc ON pc.constraint_name = c.r_constraint_name
+  JOIN USER_CONS_COLUMNS pcc ON pcc.constraint_name = pc.constraint_name
+WHERE
+  c.constraint_type = 'R' AND pc.constraint_type = 'P'
+)
+SELECT
+  tc.table_name,
+  tc.column_name,
+  tc.data_type,
+  CASE WHEN tc.char_length = 0 THEN NULL ELSE tc.char_length END length,
+  CASE WHEN tc.nullable = 'Y' THEN 1 ELSE 0 END nullable,
+  CASE WHEN tc.data_default IS NOT NULL THEN 1 ELSE 0 END has_default,
+  cv.c_table_name,
+  cv.c_column_name,
+  CASE WHEN stc.table_name IS NULL THEN 0 ELSE 1 END AS import_actif
+FROM
+  user_tab_cols tc
+  JOIN importable_tables t ON t.table_name = tc.table_name
+  LEFT JOIN import_tables it ON it.table_name = tc.table_name
+  LEFT JOIN c_values cv ON cv.table_name = tc.table_name AND cv.column_name = tc.column_name
+  LEFT JOIN user_tab_cols stc ON stc.table_name = 'SRC_' || tc.table_name AND stc.column_name = tc.column_name
+WHERE
+  tc.column_name not like 'HISTO_%'
+  AND tc.column_name <> 'ID'
+  AND tc.table_name <> 'SYNC_LOG'
+ORDER BY
+  it.ordre, tc.table_name, tc.column_id;
+
+-- V_INDICATEUR_1010
+CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_1010" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID") AS
+  SELECT rownum id, t."ANNEE_ID",t."INTERVENANT_ID",t."STRUCTURE_ID" FROM
+(
+SELECT DISTINCT
+  w.annee_id,
+  w.intervenant_id,
+  i.structure_id
+FROM
+  tbl_workflow w
+  JOIN tbl_workflow wc ON wc.intervenant_id = w.intervenant_id
+  JOIN intervenant i ON i.id = w.intervenant_id
+WHERE
+  w.etape_code = 'PJ_SAISIE'
+  AND wc.etape_code = 'SERVICE_SAISIE'
+  AND w.type_intervenant_code = 'E'
+  AND wc.realisation > 0
+  AND w.atteignable = 1
+  AND w.objectif > w.realisation
+) t;
+
+-- V_INDICATEUR_1011
+CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_1011" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID") AS
+  SELECT rownum id, t."ANNEE_ID",t."INTERVENANT_ID",t."STRUCTURE_ID" FROM
+(
+SELECT DISTINCT
+  w.annee_id,
+  w.intervenant_id,
+  i.structure_id
+FROM
+  tbl_workflow w
+  JOIN tbl_workflow wc ON wc.intervenant_id = w.intervenant_id
+  JOIN intervenant i ON i.id = w.intervenant_id
+WHERE
+  w.etape_code = 'PJ_SAISIE'
+  AND wc.etape_code = 'SERVICE_SAISIE'
+  AND w.type_intervenant_code = 'P'
+  AND wc.realisation > 0
+  AND w.atteignable = 1
+  AND w.objectif > w.realisation
+) t;
+
+-- V_INDICATEUR_1020
+CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_1020" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID") AS
+  SELECT rownum id, t."ANNEE_ID",t."INTERVENANT_ID",t."STRUCTURE_ID" FROM
+(
+SELECT DISTINCT
+  w.annee_id,
+  w.intervenant_id,
+  i.structure_id
+FROM
+  tbl_workflow w
+  JOIN tbl_workflow wc ON wc.intervenant_id = w.intervenant_id
+  JOIN intervenant i ON i.id = w.intervenant_id
+WHERE
+  w.etape_code = 'PJ_VALIDATION'
+  AND wc.etape_code = 'PJ_SAISIE'
+  AND w.type_intervenant_code = 'E'
+  AND wc.objectif = wc.realisation
+  AND w.atteignable = 1
+  AND w.objectif > w.realisation
+) t;
+
+-- V_INDICATEUR_1021
+CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_1021" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID") AS
+  SELECT rownum id, t."ANNEE_ID",t."INTERVENANT_ID",t."STRUCTURE_ID" FROM
+(
+SELECT DISTINCT
+  w.annee_id,
+  w.intervenant_id,
+  i.structure_id
+FROM
+  tbl_workflow w
+  JOIN tbl_workflow wc ON wc.intervenant_id = w.intervenant_id
+  JOIN intervenant i ON i.id = w.intervenant_id
+WHERE
+  w.etape_code = 'PJ_VALIDATION'
+  AND wc.etape_code = 'PJ_SAISIE'
+  AND w.type_intervenant_code = 'P'
+  AND wc.objectif = wc.realisation
+  AND w.atteignable = 1
+  AND w.objectif > w.realisation
+) t;
+
+-- V_INDICATEUR_110
+CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_110" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID") AS
+  SELECT
+  rownum id,
+  t."ANNEE_ID",t."INTERVENANT_ID",t."STRUCTURE_ID" FROM (
+
+SELECT DISTINCT
+  s.annee_id       annee_id,
+  s.intervenant_id intervenant_id,
+  s.structure_id   structure_id
+FROM
+  tbl_service s
+WHERE
+  s.type_intervenant_code = 'P'
+  AND s.type_volume_horaire_code = 'PREVU'
+  AND s.intervenant_structure_id <> s.structure_id
+  AND s.valide > 0
+  AND s.structure_id IS NOT NULL
+
+) t;
+
+-- V_INDICATEUR_1110
+CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_1110" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID") AS
+  SELECT rownum id, t.ANNEE_ID,t.INTERVENANT_ID,t.STRUCTURE_ID FROM (
+SELECT DISTINCT
+  idc.annee_id,
+  idc.intervenant_id,
+  idc.structure_id
+FROM
+            v_indic_depass_charges  idc
+       JOIN type_volume_horaire     tvh ON tvh.id = idc.type_volume_horaire_id
+  LEFT JOIN periode                 p ON p.id = idc.periode_id
+WHERE
+  (p.code = 'S1' OR p.id IS NULL)
+  AND tvh.code = 'PREVU'
+) t;
+
+-- V_INDICATEUR_1111
+CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_1111" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID") AS
+  SELECT rownum id, t.ANNEE_ID,t.INTERVENANT_ID,t.STRUCTURE_ID FROM (
+SELECT DISTINCT
+  idc.annee_id,
+  idc.intervenant_id,
+  idc.structure_id
+FROM
+            v_indic_depass_charges  idc
+       JOIN type_volume_horaire     tvh ON tvh.id = idc.type_volume_horaire_id
+  LEFT JOIN periode                 p ON p.id = idc.periode_id
+WHERE
+  (p.code = 'S2' OR p.id IS NULL)
+  AND tvh.code = 'PREVU'
+) t;
+
+-- V_INDICATEUR_1120
+CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_1120" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID") AS
+  SELECT rownum id, t.ANNEE_ID,t.INTERVENANT_ID,t.STRUCTURE_ID FROM (
+SELECT DISTINCT
+  idc.annee_id,
+  idc.intervenant_id,
+  idc.structure_id
+FROM
+            v_indic_depass_charges  idc
+       JOIN type_volume_horaire     tvh ON tvh.id = idc.type_volume_horaire_id
+  LEFT JOIN periode                 p ON p.id = idc.periode_id
+WHERE
+  (p.code = 'S1' OR p.id IS NULL)
+  AND tvh.code = 'REALISE'
+) t;
+
+-- V_INDICATEUR_1121
+CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_1121" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID") AS
+  SELECT rownum id, t.ANNEE_ID,t.INTERVENANT_ID,t.STRUCTURE_ID FROM (
+SELECT DISTINCT
+  idc.annee_id,
+  idc.intervenant_id,
+  idc.structure_id
+FROM
+            v_indic_depass_charges  idc
+       JOIN type_volume_horaire     tvh ON tvh.id = idc.type_volume_horaire_id
+  LEFT JOIN periode                 p ON p.id = idc.periode_id
+WHERE
+  (p.code = 'S2' OR p.id IS NULL)
+  AND tvh.code = 'REALISE'
+) t;
+
+-- V_INDICATEUR_120
+CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_120" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID") AS
+  SELECT
+  rownum id,
+  t."ANNEE_ID",t."INTERVENANT_ID",t."STRUCTURE_ID" FROM (
+
+SELECT DISTINCT
+  s.annee_id annee_id,
+  s.intervenant_id intervenant_id,
+  s.structure_id structure_id
+FROM
+  tbl_service s
+WHERE
+  s.type_intervenant_code = 'P'
+  AND s.type_volume_horaire_code = 'PREVU'
+  AND s.intervenant_structure_id <> s.structure_id
+  AND s.valide > 0
+  AND s.structure_id IS NOT NULL
+
+) t;
+
+-- V_INDICATEUR_1210
+CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_1210" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID", "PLAFOND", "HEURES") AS
+  SELECT
+  i.id id,
+  i.annee_id,
+  i.id intervenant_id,
+  i.structure_id,
+  AVG(t.plafond)  plafond,
+  AVG(t.heures)   heures
+FROM
+  (
+  SELECT
+    vhr.type_volume_horaire_id        type_volume_horaire_id,
+    sr.intervenant_id                 intervenant_id,
+    fr.plafond                        plafond,
+    fr.id                             fr_id,
+    SUM(vhr.heures)                   heures
+  FROM
+         service_referentiel       sr
+    JOIN fonction_referentiel      fr ON fr.id = sr.fonction_id
+    JOIN volume_horaire_ref       vhr ON vhr.service_referentiel_id = sr.id AND vhr.histo_destruction IS NULL
+    JOIN type_volume_horaire      tvh ON tvh.id = vhr.type_volume_horaire_id AND tvh.code= 'PREVU'
+  WHERE
+    sr.histo_destruction IS NULL
+  GROUP BY
+    vhr.type_volume_horaire_id,
+    sr.intervenant_id,
+    fr.plafond,
+    fr.id
+  ) t
+  JOIN intervenant i ON i.id = t.intervenant_id
+WHERE
+  t.heures > t.plafond
+  /*i.id*/
+GROUP BY
+  t.type_volume_horaire_id,
+  i.annee_id,
+  i.id,
+  i.structure_id;
+
+-- V_INDICATEUR_1220
+CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_1220" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID", "PLAFOND", "HEURES") AS
+  SELECT
+  i.id id,
+  i.annee_id,
+  i.id intervenant_id,
+  i.structure_id,
+  AVG(t.plafond)  plafond,
+  AVG(t.heures)   heures
+FROM
+  (
+  SELECT
+    vhr.type_volume_horaire_id        type_volume_horaire_id,
+    sr.intervenant_id                 intervenant_id,
+    fr.plafond                        plafond,
+    fr.id                             fr_id,
+    SUM(vhr.heures)                   heures
+  FROM
+         service_referentiel       sr
+    JOIN fonction_referentiel      fr ON fr.id = sr.fonction_id
+    JOIN volume_horaire_ref       vhr ON vhr.service_referentiel_id = sr.id AND vhr.histo_destruction IS NULL
+    JOIN type_volume_horaire      tvh ON tvh.id = vhr.type_volume_horaire_id AND tvh.code= 'REALISE'
+  WHERE
+    sr.histo_destruction IS NULL
+  GROUP BY
+    vhr.type_volume_horaire_id,
+    sr.intervenant_id,
+    fr.plafond,
+    fr.id
+  ) t
+  JOIN intervenant i ON i.id = t.intervenant_id
+WHERE
+  t.heures > t.plafond
+  /*i.id*/
+GROUP BY
+  t.type_volume_horaire_id,
+  i.annee_id,
+  i.id,
+  i.structure_id;
+
+-- V_INDICATEUR_130
+CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_130" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID") AS
+  SELECT
+  rownum id,
+  t."ANNEE_ID",t."INTERVENANT_ID",t."STRUCTURE_ID" FROM (
+
+SELECT DISTINCT
+  s.annee_id annee_id,
+  s.intervenant_id intervenant_id,
+  i.structure_id structure_id
+FROM
+  tbl_service s
+  JOIN intervenant i ON i.id = s.intervenant_id
+  JOIN statut_intervenant si ON si.id = i.statut_id
+WHERE
+  si.tem_biatss = 1
+  AND s.type_volume_horaire_code = 'PREVU'
+  AND s.intervenant_structure_id <> s.structure_id
+  AND s.valide > 0
+  AND s.structure_id IS NOT NULL
+
+) t;
+
+-- V_INDICATEUR_210
+CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_210" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID") AS
+  SELECT
+  rownum id,
+  w.annee_id,
+  w.intervenant_id,
+  w.structure_id
+FROM
+  tbl_workflow w
+WHERE
+  w.atteignable = 1
+  AND w.etape_code = 'CONSEIL_RESTREINT'
+  AND w.objectif > 0
+  AND w.realisation < 1;
+
+-- V_INDICATEUR_220
+CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_220" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID") AS
+  SELECT
+  rownum id,
+  w.annee_id,
+  w.intervenant_id,
+  i.structure_id
+FROM
+  tbl_workflow w
+  JOIN intervenant i ON i.id = w.intervenant_id
+WHERE
+  w.atteignable = 1
+  AND w.etape_code = 'CONSEIL_ACADEMIQUE'
+  AND w.objectif > 0
+  AND w.realisation < 1;
+
+-- V_INDICATEUR_310
+CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_310" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID") AS
+  WITH caok AS (
+  SELECT
+    w.intervenant_id
+  FROM
+    tbl_workflow w
+  WHERE
+    w.objectif > 0
+    AND w.etape_code = 'CONSEIL_ACADEMIQUE'
+    AND w.realisation = w.objectif
+)
+SELECT
+  rownum id,
+  w.annee_id,
+  w.intervenant_id,
+  w.structure_id
+FROM
+  tbl_workflow w
+  JOIN caok ON caok.intervenant_id = w.intervenant_id
+WHERE
+  w.atteignable = 1
+  AND w.etape_code = 'CONTRAT'
+  AND w.objectif > 0
+  AND w.realisation < 1;
+
+-- V_INDICATEUR_320
+CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_320" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID") AS
+  SELECT
+  rownum id,
+  t."ANNEE_ID",t."INTERVENANT_ID",t."STRUCTURE_ID"
+FROM (
+SELECT DISTINCT
+  w.annee_id,
+  w.intervenant_id,
+  w.structure_id
+FROM
+  tbl_workflow w
+  LEFT JOIN tbl_contrat c ON c.INTERVENANT_ID = w.intervenant_id AND w.structure_id = c.structure_id
+WHERE
+  w.atteignable = 1
+  AND w.etape_code = 'CONTRAT'
+  AND w.objectif > 0
+  AND w.realisation = 0
+  AND NVL(c.EDITE,0) <> 1
+) t;
+
+-- V_INDICATEUR_330
+CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_330" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID") AS
+  WITH has_contrat AS (
+  SELECT DISTINCT
+    intervenant_id
+  FROM
+    tbl_contrat
+  WHERE
+    edite > 0
+)
+SELECT
+  rownum id,
+  w.annee_id,
+  w.intervenant_id,
+  w.structure_id
+FROM
+  tbl_workflow w
+  JOIN has_contrat hc ON hc.intervenant_id = w.intervenant_id
+WHERE
+  w.atteignable = 1
+  AND w.etape_code = 'CONTRAT'
+  AND w.objectif > 0
+  AND w.realisation < w.objectif;
+
+-- V_INDICATEUR_340
+CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_340" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID") AS
+  SELECT
+  rownum id,
+  s.annee_id,
+  s.intervenant_id,
+  s.structure_id
+FROM
+  tbl_service s
+  JOIN tbl_workflow w ON w.intervenant_id = s.intervenant_id AND w.structure_id = s.structure_id
+WHERE
+  s.type_intervenant_code = 'V'
+  AND s.type_volume_horaire_code = 'PREVU'
+  AND nbvh <> valide
+  AND w.etape_code = 'CONTRAT'
+  AND w.atteignable = 1
+  AND w.objectif > 0
+  AND w.realisation = w.objectif;
+
+-- V_INDICATEUR_350
+CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_350" ("ID", "INTERVENANT_ID", "ANNEE_ID", "STRUCTURE_ID", "CONTRAT_ID") AS
+  SELECT
+  rownum id,
+  t."INTERVENANT_ID",t."ANNEE_ID",t."STRUCTURE_ID",t."CONTRAT_ID"
+FROM (
+SELECT DISTINCT
+  i.id intervenant_id,
+  i.annee_id annee_id,
+  c.structure_id structure_id,
+  c.id contrat_id
+FROM
+  contrat                c
+  JOIN contrat_fichier  cf ON cf.contrat_id = c.id
+  JOIN fichier           f ON f.id = cf.fichier_id
+                          AND f.histo_destruction IS NULL
+  JOIN intervenant i ON i.id = c.intervenant_id
+WHERE
+  c.histo_destruction IS NULL
+) t;
+
+-- V_INDICATEUR_360
+CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_360" ("ID", "INTERVENANT_ID", "ANNEE_ID", "STRUCTURE_ID", "CONTRAT_ID") AS
+  SELECT
+  rownum id,
+  t."INTERVENANT_ID",t."ANNEE_ID",t."STRUCTURE_ID",t."CONTRAT_ID"
+FROM (
+SELECT DISTINCT
+  i.id intervenant_id,
+  i.annee_id annee_id,
+  c.structure_id structure_id,
+  c.id contrat_id
+FROM
+  contrat                c
+  JOIN intervenant i ON i.id = c.intervenant_id
+  JOIN tbl_workflow w ON w.intervenant_id = i.id AND w.structure_id = c.structure_id AND w.etape_code = 'CONTRAT' AND w.atteignable = 1
+  JOIN validation v ON v.id = c.validation_id AND v.histo_destruction IS NULL
+WHERE
+  c.histo_destruction IS NULL
+  AND c.date_retour_signe IS NULL
+) t;
+
+-- V_INDICATEUR_410
+CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_410" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID") AS
+  SELECT
+  rownum id,
+  d.annee_id,
+  d.intervenant_id,
+  i.structure_id
+FROM
+  tbl_dossier d
+  JOIN intervenant i ON i.id = d.intervenant_id
+WHERE
+  d.dossier_id IS NOT NULL
+  AND d.validation_id IS NULL
+  AND d.peut_saisir_dossier = 1;
+
+-- V_INDICATEUR_420
+CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_420" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID") AS
+  SELECT rownum id, t."ANNEE_ID",t."INTERVENANT_ID",t."STRUCTURE_ID" FROM (
+  SELECT DISTINCT
+    i.annee_id annee_id,
+    i.id intervenant_id,
+    i.structure_id
+  FROM
+    indic_modif_dossier d
+    JOIN intervenant i ON i.id = d.intervenant_id
+  WHERE
+    d.histo_destruction IS NULL
+) t;
+
+-- V_INDICATEUR_510
+CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_510" ("ID", "INTERVENANT_ID", "ANNEE_ID", "STRUCTURE_ID", "ELEMENTS") AS
+  WITH t AS (
+SELECT
+  s.intervenant_id,
+  s.annee_id,
+  s.structure_id,
+  listagg( ep.source_code || ' - ' || ep.libelle, '||') WITHIN GROUP (ORDER BY ep.libelle) elements
+FROM
+  tbl_service s
+  LEFT JOIN element_pedagogique ep ON ep.id = s.element_pedagogique_id
+WHERE
+  (
+    s.has_heures_mauvaise_periode = 1
+    OR s.etape_histo = 0
+    OR s.element_pedagogique_histo = 0
+  )
+  AND s.heures > 0
+GROUP BY
+  s.intervenant_id,
+  s.annee_id,
+  s.structure_id
+)
+SELECT
+  rownum id, t."INTERVENANT_ID",t."ANNEE_ID",t."STRUCTURE_ID", t.elements
+FROM t;
+
+-- V_INDICATEUR_520
+CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_520" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID", "PLAFOND", "HEURES") AS
+  SELECT
+  fr.id id,
+  i.annee_id annee_id,
+  i.id intervenant_id,
+  i.structure_id structure_id,
+  si.plafond_hc_hors_remu_fc plafond,
+  fr.heures_compl_fa + fr.heures_compl_fc + fr.heures_compl_fi + fr.heures_compl_referentiel heures
+FROM
+  formule_resultat fr
+  JOIN type_volume_horaire tvh ON tvh.id = fr.type_volume_horaire_id
+  JOIN etat_volume_horaire evh ON evh.id = fr.etat_volume_horaire_id
+  JOIN intervenant i ON i.id = fr.intervenant_id
+  JOIN statut_intervenant si ON si.id = i.statut_id
+WHERE
+  tvh.code = 'PREVU'
+  AND evh.code = 'saisi'
+  AND si.plafond_hc_hors_remu_fc < fr.heures_compl_fa + fr.heures_compl_fc + fr.heures_compl_fi + fr.heures_compl_referentiel;
+
+-- V_INDICATEUR_530
+CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_530" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID", "PLAFOND", "HEURES") AS
+  SELECT
+  fr.id id,
+  i.annee_id annee_id,
+  i.id intervenant_id,
+  i.structure_id structure_id,
+  si.plafond_hc_hors_remu_fc plafond,
+  fr.heures_compl_fa + fr.heures_compl_fc + fr.heures_compl_fi + fr.heures_compl_referentiel heures
+FROM
+  formule_resultat fr
+  JOIN type_volume_horaire tvh ON tvh.id = fr.type_volume_horaire_id
+  JOIN etat_volume_horaire evh ON evh.id = fr.etat_volume_horaire_id
+  JOIN intervenant i ON i.id = fr.intervenant_id
+  JOIN statut_intervenant si ON si.id = i.statut_id
+WHERE
+  tvh.code = 'REALISE'
+  AND evh.code = 'saisi'
+  AND si.plafond_hc_hors_remu_fc < fr.heures_compl_fa + fr.heures_compl_fc + fr.heures_compl_fi + fr.heures_compl_referentiel;
+
+-- V_INDICATEUR_540
+CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_540" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID", "PLAFOND", "HEURES") AS
+  SELECT
+  rownum                              id,
+  i.annee_id                          annee_id,
+  i.id                                intervenant_id,
+  i.structure_id                      structure_id,
+  ROUND( (COALESCE(si.plafond_hc_remu_fc,0) - COALESCE(i.montant_indemnite_fc,0)) / a.taux_hetd, 2 ) plafond,
+  fr.heures_compl_fc_majorees         heures
+FROM
+       intervenant                i
+  JOIN annee                      a ON a.id = i.annee_id
+  JOIN statut_intervenant        si ON si.id = i.statut_id
+  JOIN etat_volume_horaire      evh ON evh.code = 'saisi'
+  JOIN formule_resultat          fr ON fr.intervenant_id = i.id AND fr.etat_volume_horaire_id = evh.id
+  JOIN type_volume_horaire tvh ON tvh.id = fr.type_volume_horaire_id
+WHERE
+  fr.heures_compl_fc_majorees > ROUND( (COALESCE(si.plafond_hc_remu_fc,0) - COALESCE(i.montant_indemnite_fc,0)) / a.taux_hetd, 2 )
+  AND tvh.code = 'PREVU';
+
+-- V_INDICATEUR_550
+CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_550" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID", "PLAFOND", "HEURES") AS
+  SELECT
+  rownum                              id,
+  i.annee_id                          annee_id,
+  i.id                                intervenant_id,
+  i.structure_id                      structure_id,
+  ROUND( (COALESCE(si.plafond_hc_remu_fc,0) - COALESCE(i.montant_indemnite_fc,0)) / a.taux_hetd, 2 ) plafond,
+  fr.heures_compl_fc_majorees         heures
+FROM
+       intervenant                i
+  JOIN annee                      a ON a.id = i.annee_id
+  JOIN statut_intervenant        si ON si.id = i.statut_id
+  JOIN etat_volume_horaire      evh ON evh.code = 'saisi'
+  JOIN formule_resultat          fr ON fr.intervenant_id = i.id AND fr.etat_volume_horaire_id = evh.id
+  JOIN type_volume_horaire tvh ON tvh.id = fr.type_volume_horaire_id
+WHERE
+  fr.heures_compl_fc_majorees > ROUND( (COALESCE(si.plafond_hc_remu_fc,0) - COALESCE(i.montant_indemnite_fc,0)) / a.taux_hetd, 2 )
+  AND tvh.code = 'REALISE';
+
+-- V_INDICATEUR_560
+CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_560" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID", "PLAFOND", "HEURES") AS
+  SELECT
+  rownum                              id,
+  i.annee_id                          annee_id,
+  i.id                                intervenant_id,
+  i.structure_id                      structure_id,
+  si.maximum_hetd                     plafond,
+  fr.total                            heures
+FROM
+  intervenant                     i
+  JOIN etat_volume_horaire      evh ON evh.code = 'saisi'
+  JOIN formule_resultat          fr ON fr.intervenant_id = i.id AND fr.etat_volume_horaire_id = evh.id
+  JOIN statut_intervenant        si ON si.id = i.statut_id
+  JOIN type_volume_horaire      tvh ON tvh.id = fr.type_volume_horaire_id AND tvh.code= 'PREVU'
+WHERE
+  fr.total > si.maximum_hetd;
+
+-- V_INDICATEUR_570
+CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_570" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID", "PLAFOND", "HEURES") AS
+  SELECT
+  rownum                              id,
+  i.annee_id                          annee_id,
+  i.id                                intervenant_id,
+  i.structure_id                      structure_id,
+  si.maximum_hetd                     plafond,
+  fr.total                            heures
+FROM
+  intervenant                     i
+  JOIN etat_volume_horaire      evh ON evh.code = 'saisi'
+  JOIN formule_resultat          fr ON fr.intervenant_id = i.id AND fr.etat_volume_horaire_id = evh.id
+  JOIN statut_intervenant        si ON si.id = i.statut_id
+  JOIN type_volume_horaire      tvh ON tvh.id = fr.type_volume_horaire_id AND tvh.code= 'REALISE'
+WHERE
+  fr.total > si.maximum_hetd;
+
+-- V_INDICATEUR_610
+CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_610" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID", "STATUT_INTERVENANT_ID") AS
+  SELECT rownum id, t."ANNEE_ID",t."INTERVENANT_ID",t."STRUCTURE_ID",t."STATUT_INTERVENANT_ID" FROM
+(
+SELECT DISTINCT
+  w.annee_id,
+  w.intervenant_id,
+  w.structure_id,
+  w.statut_intervenant_id
+FROM
+  tbl_workflow w
+WHERE
+  w.etape_code = 'SERVICE_VALIDATION'
+  AND w.type_intervenant_code = 'P'
+  AND w.atteignable = 1
+  AND w.objectif > w.realisation
+) t;
+
+-- V_INDICATEUR_620
+CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_620" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID") AS
+  SELECT rownum id, t."ANNEE_ID",t."INTERVENANT_ID",t."STRUCTURE_ID" FROM
+(
+SELECT DISTINCT
+  w.annee_id,
+  w.intervenant_id,
+  w.structure_id
+FROM
+  tbl_workflow w
+WHERE
+  w.etape_code = 'REFERENTIEL_VALIDATION'
+  AND w.type_intervenant_code = 'P'
+  AND w.atteignable = 1
+  AND w.objectif > w.realisation
+) t;
+
+-- V_INDICATEUR_630
+CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_630" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID") AS
+  SELECT rownum id, t."ANNEE_ID",t."INTERVENANT_ID",t."STRUCTURE_ID" FROM
+(
+SELECT DISTINCT
+  w.annee_id,
+  w.intervenant_id,
+  i.structure_id
+FROM
+  tbl_workflow w
+  JOIN intervenant i ON i.id = w.intervenant_id
+WHERE
+  w.etape_code = 'CLOTURE_REALISE'
+  AND w.atteignable = 1
+  AND w.objectif > w.realisation
+) t;
+
+-- V_INDICATEUR_640
+CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_640" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID") AS
+  SELECT rownum id, t."ANNEE_ID",t."INTERVENANT_ID",t."STRUCTURE_ID" FROM
+(
+SELECT DISTINCT
+  w.annee_id,
+  w.intervenant_id,
+  w.structure_id
+FROM
+  tbl_workflow w
+  JOIN tbl_workflow wc ON wc.intervenant_id = w.intervenant_id
+WHERE
+  w.etape_code = 'SERVICE_VALIDATION_REALISE'
+  AND w.objectif > w.realisation
+  AND w.atteignable = 1
+
+  AND wc.etape_code = 'CLOTURE_REALISE'
+  AND wc.objectif = wc.realisation
+) t;
+
+-- V_INDICATEUR_650
+CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_650" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID", "STRUCTURES_CONCERNEES") AS
+  SELECT rownum id, t."ANNEE_ID",t."INTERVENANT_ID",t."STRUCTURE_ID",t."STRUCTURES_CONCERNEES" FROM
+(
+SELECT
+  w.annee_id,
+  w.intervenant_id,
+  i.structure_id,
+  LISTAGG(s.libelle_court, '||') WITHIN GROUP (ORDER BY s.libelle_court) structures_concernees
+FROM
+  tbl_workflow w
+  JOIN tbl_workflow wc ON wc.intervenant_id = w.intervenant_id
+  JOIN intervenant i ON i.id = wc.intervenant_id
+  JOIN structure s ON s.id = w.structure_id
+WHERE
+  w.etape_code = 'SERVICE_VALIDATION_REALISE'
+  AND w.objectif > w.realisation
+  AND w.atteignable = 1
+
+  AND wc.etape_code = 'CLOTURE_REALISE'
+  AND wc.objectif = wc.realisation
+  AND w.structure_id <> i.structure_id
+GROUP BY
+  w.annee_id,
+  w.intervenant_id,
+  i.structure_id
+) t;
+
+-- V_INDICATEUR_660
+CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_660" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID") AS
+  SELECT rownum id, t."ANNEE_ID",t."INTERVENANT_ID",t."STRUCTURE_ID" FROM
+(
+SELECT
+  w.annee_id,
+  w.intervenant_id,
+  i.structure_id
+FROM
+  tbl_workflow w
+  JOIN tbl_workflow wc ON wc.intervenant_id = w.intervenant_id
+  JOIN intervenant i ON i.id = wc.intervenant_id
+  JOIN structure s ON s.id = w.structure_id
+WHERE
+  w.etape_code = 'REFERENTIEL_VALIDATION_REALISE'
+  AND w.objectif > w.realisation
+  AND w.atteignable = 1
+
+  AND wc.etape_code = 'CLOTURE_REALISE'
+  AND wc.objectif = wc.realisation
+  AND w.structure_id = i.structure_id
+GROUP BY
+  w.annee_id,
+  w.intervenant_id,
+  i.structure_id
+) t;
+
+-- V_INDICATEUR_670
+CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_670" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID", "STRUCTURES_CONCERNEES") AS
+  SELECT rownum id, t."ANNEE_ID",t."INTERVENANT_ID",t."STRUCTURE_ID",t."STRUCTURES_CONCERNEES" FROM
+(
+SELECT
+  w.annee_id,
+  w.intervenant_id,
+  i.structure_id,
+  LISTAGG(s.libelle_court, '||') WITHIN GROUP (ORDER BY s.libelle_court) structures_concernees
+FROM
+  tbl_workflow w
+  JOIN tbl_workflow wc ON wc.intervenant_id = w.intervenant_id
+  JOIN intervenant i ON i.id = wc.intervenant_id
+  JOIN structure s ON s.id = w.structure_id
+WHERE
+  w.etape_code = 'REFERENTIEL_VALIDATION_REALISE'
+  AND w.objectif > w.realisation
+  AND w.atteignable = 1
+
+  AND wc.etape_code = 'CLOTURE_REALISE'
+  AND wc.objectif = wc.realisation
+  AND w.structure_id <> i.structure_id
+GROUP BY
+  w.annee_id,
+  w.intervenant_id,
+  i.structure_id
+) t;
+
+-- V_INDICATEUR_680
+CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_680" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID", "PLAFOND", "HEURES") AS
+  SELECT
+  fr.id id,
+  i.annee_id annee_id,
+  i.id intervenant_id,
+  i.structure_id structure_id,
+  si.plafond_referentiel plafond,
+  fr.heures_compl_referentiel heures
+FROM
+  formule_resultat fr
+  JOIN type_volume_horaire tvh ON tvh.id = fr.type_volume_horaire_id
+  JOIN etat_volume_horaire evh ON evh.id = fr.etat_volume_horaire_id
+  JOIN intervenant i ON i.id = fr.intervenant_id
+  JOIN statut_intervenant si ON si.id = i.statut_id
+WHERE
+  tvh.code = 'PREVU'
+  AND evh.code = 'saisi'
+  AND si.plafond_referentiel < fr.service_referentiel + fr.heures_compl_referentiel;
+
+-- V_INDICATEUR_690
+CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_690" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID", "PLAFOND", "HEURES") AS
+  SELECT
+  fr.id id,
+  i.annee_id annee_id,
+  i.id intervenant_id,
+  i.structure_id structure_id,
+  si.plafond_referentiel plafond,
+  fr.heures_compl_referentiel heures
+FROM
+  formule_resultat fr
+  JOIN type_volume_horaire tvh ON tvh.id = fr.type_volume_horaire_id
+  JOIN etat_volume_horaire evh ON evh.id = fr.etat_volume_horaire_id
+  JOIN intervenant i ON i.id = fr.intervenant_id
+  JOIN statut_intervenant si ON si.id = i.statut_id
+WHERE
+  tvh.code = 'REALISE'
+  AND evh.code = 'saisi'
+  AND si.plafond_referentiel < fr.service_referentiel + fr.heures_compl_referentiel;
+
+-- V_INDICATEUR_710
+CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_710" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID") AS
+  SELECT rownum id, t."ANNEE_ID",t."INTERVENANT_ID",t."STRUCTURE_ID" FROM
+(
+SELECT DISTINCT
+  w.annee_id,
+  w.intervenant_id,
+  w.structure_id
+FROM
+  tbl_workflow w
+WHERE
+  w.etape_code = 'SERVICE_VALIDATION'
+  AND w.type_intervenant_code = 'E'
+  AND w.atteignable = 1
+  AND w.objectif > w.realisation
+) t;
+
+-- V_INDICATEUR_720
+CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_720" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID") AS
+  SELECT rownum id, t."ANNEE_ID",t."INTERVENANT_ID",t."STRUCTURE_ID" FROM
+(
+SELECT DISTINCT
+  w.annee_id,
+  w.intervenant_id,
+  w.structure_id
+FROM
+  tbl_workflow w
+WHERE
+  w.etape_code = 'SERVICE_VALIDATION_REALISE'
+  AND w.type_intervenant_code = 'E'
+  AND w.atteignable = 1
+  AND w.objectif > w.realisation
+) t;
+
+-- V_INDICATEUR_810
+CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_810" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID") AS
+  SELECT rownum id, t."ANNEE_ID",t."INTERVENANT_ID",t."STRUCTURE_ID" FROM
+(
+SELECT DISTINCT
+  w.annee_id,
+  w.intervenant_id,
+  w.structure_id
+FROM
+  tbl_workflow w
+WHERE
+  w.etape_code = 'DEMANDE_MEP'
+  AND w.type_intervenant_code = 'P'
+  AND w.atteignable = 1
+  AND w.objectif > w.realisation
+) t;
+
+-- V_INDICATEUR_820
+CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_820" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID") AS
+  SELECT rownum id, t."ANNEE_ID",t."INTERVENANT_ID",t."STRUCTURE_ID" FROM
+(
+SELECT DISTINCT
+  w.annee_id,
+  w.intervenant_id,
+  w.structure_id
+FROM
+  tbl_workflow w
+WHERE
+  w.etape_code = 'SAISIE_MEP'
+  AND w.type_intervenant_code = 'P'
+  AND w.atteignable = 1
+  AND w.objectif > w.realisation
+) t;
+
+-- V_INDICATEUR_910
+CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_910" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID") AS
+  SELECT rownum id, t."ANNEE_ID",t."INTERVENANT_ID",t."STRUCTURE_ID" FROM
+(
+SELECT DISTINCT
+  w.annee_id,
+  w.intervenant_id,
+  w.structure_id
+FROM
+  tbl_workflow w
+WHERE
+  w.etape_code = 'DEMANDE_MEP'
+  AND w.type_intervenant_code = 'E'
+  AND w.atteignable = 1
+  AND w.objectif > w.realisation
+) t;
+
+-- V_INDICATEUR_920
+CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_920" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID") AS
+  SELECT rownum id, t."ANNEE_ID",t."INTERVENANT_ID",t."STRUCTURE_ID" FROM
+(
+SELECT DISTINCT
+  w.annee_id,
+  w.intervenant_id,
+  w.structure_id
+FROM
+  tbl_workflow w
+WHERE
+  w.etape_code = 'SAISIE_MEP'
+  AND w.type_intervenant_code = 'E'
+  AND w.atteignable = 1
+  AND w.objectif > w.realisation
+) t;
+
+-- V_INDIC_ATTENTE_DEMANDE_MEP
+CREATE OR REPLACE FORCE VIEW "V_INDIC_ATTENTE_DEMANDE_MEP" ("ID", "INTERVENANT_ID", "SOURCE_CODE", "CODE", "ANNEE_ID", "STRUCTURE_ID", "TOTAL_HEURES_MEP", "TOTAL_HEURES_COMPL") AS
+  select to_number(i.id||dmep.structure_id) id, i.id intervenant_id, i.source_code, ti.code, i.annee_id, dmep.structure_id, 0 TOTAL_HEURES_MEP, 0 TOTAL_HEURES_COMPL
+  from intervenant i
+  join statut_intervenant si on si.id = i.statut_id
+  join type_intervenant ti on ti.id = si.type_intervenant_id
+  -- l'intervenant doit avoir des heures disponibles pour une demande de MEP
+  join V_HAS_DMEP_A_FAIRE dmep on dmep.intervenant_id = i.id and dmep.has_dmep_a_faire <> 0
+  where (
+    -- un vacataire n'a pas d'autre contrainte
+    ti.code = 'E'
+    or
+    -- mais un permanent doit...
+    (
+      -- avoir sa saisie de service réalisé clôturée
+      exists (
+        select * from validation v
+        join type_validation tv on v.type_validation_id = tv.id and tv.code = 'CLOTURE_REALISE'
+        where v.intervenant_id = i.id and v.histo_destruction IS NULL
+      )
+      -- et tous ses enseignements réalisés validés (toutes composantes d'intervention confondues)
+      and not exists (
+        select * from volume_horaire vh
+        join service s on vh.service_id = s.id and s.histo_destruction IS NULL
+        join type_volume_horaire tvh on vh.type_volume_horaire_id = tvh.id and tvh.code = 'REALISE'
+        left join validation_vol_horaire vvh on vvh.volume_horaire_id = vh.id
+        left join validation v on vvh.validation_id = v.id and v.histo_destruction IS NULL
+        left join type_validation tv on v.type_validation_id = tv.id and tv.code = 'SERVICES_PAR_COMP'
+        where s.intervenant_id = i.id and v.id is null and vh.histo_destruction IS NULL
+      )
+      -- et tout son référentiel réalisé validé (toutes composantes d'intervention confondues)
+      and not exists (
+        select * from volume_horaire_ref vh
+        join service_referentiel s on vh.service_referentiel_id = s.id and s.histo_destruction IS NULL
+        join type_volume_horaire tvh on vh.type_volume_horaire_id = tvh.id and tvh.code = 'REALISE'
+        left join validation_vol_horaire_ref vvh on vvh.volume_horaire_ref_id = vh.id
+        left join validation v on vvh.validation_id = v.id and v.histo_destruction IS NULL
+        left join type_validation tv on v.type_validation_id = tv.id and tv.code = 'SERVICES_PAR_COMP'
+        where s.intervenant_id = i.id and v.id is null and vh.histo_destruction IS NULL
+      )
+    )
+  );
+
+-- V_INDIC_ATTENTE_MEP
+CREATE OR REPLACE FORCE VIEW "V_INDIC_ATTENTE_MEP" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID", "TOTAL_HEURES_MEP") AS
+  with
+  -- total des heures comp ayant fait l'objet d'une *demande* de mise en paiement
+  mep as (
+    select intervenant_id, structure_id, sum(nvl(mep_heures, 0)) total_heures_mep
+    from (
+      -- enseignements
+      select
+        fr.intervenant_id,
+        nvl(ep.structure_id, i.structure_id) structure_id,
+        nvl(mep.heures, 0) mep_heures
+      from mise_en_paiement mep
+      join formule_resultat_service frs on mep.formule_res_service_id = frs.id
+      join formule_resultat fr on frs.formule_resultat_id = fr.id
+      join intervenant i on fr.intervenant_id = i.id
+      join type_volume_horaire tvh on fr.type_volume_horaire_id = tvh.id and tvh.code = 'REALISE'
+      join etat_volume_horaire evh on fr.etat_volume_horaire_id = evh.id and evh.code = 'valide'
+      join service s on frs.service_id = s.id
+      left join element_pedagogique ep on s.element_pedagogique_id = ep.id
+      where mep.histo_destruction IS NULL and mep.date_mise_en_paiement is null -- si date_mise_en_paiement = null, c'est une demande
+      union all
+      -- referentiel
+      select
+        fr.intervenant_id,
+        s.structure_id,
+        nvl(mep.heures, 0) mep_heures
+      from mise_en_paiement mep
+      join formule_resultat_service_ref frs on mep.formule_res_service_ref_id = frs.id
+      join formule_resultat fr on frs.formule_resultat_id = fr.id
+      join intervenant i on fr.intervenant_id = i.id
+      join type_volume_horaire tvh on fr.type_volume_horaire_id = tvh.id and tvh.code = 'REALISE'
+      join etat_volume_horaire evh on fr.etat_volume_horaire_id = evh.id and evh.code = 'valide'
+      join service_referentiel s on frs.service_referentiel_id = s.id
+      where mep.histo_destruction IS NULL and mep.date_mise_en_paiement is null -- si date_mise_en_paiement = null, c'est une demande
+    )
+    group by intervenant_id, structure_id
+  )
+select to_number(intervenant_id||structure_id) id, 2014 annee_id, intervenant_id, structure_id, total_heures_mep from mep;
+
+-- V_INDIC_ATT_VALID_ENS_AUTRE
+CREATE OR REPLACE FORCE VIEW "V_INDIC_ATT_VALID_ENS_AUTRE" ("ID", "INTERVENANT_ID", "STRUCTURE_ID") AS
+  SELECT distinct
+    to_char(v.intervenant_id)||to_char(v.structure_id) as id,
+    v.intervenant_id,
+    v.structure_id
+FROM v_indic_tous_services_valides v
+INNER JOIN intervenant i                    ON V.INTERVENANT_ID = i.id              AND i.HISTO_DESTRUCTION IS NULL
+INNER JOIN TYPE_VOLUME_HORAIRE tvh          ON v.type_volume_horaire_id = tvh.id    AND tvh.code = 'REALISE'
+INNER JOIN VALIDATION clot                  ON clot.intervenant_id = i.id           AND clot.HISTO_DESTRUCTION IS NULL
+INNER JOIN TYPE_VALIDATION tv               ON tv.id = clot.type_validation_id      AND tv.code = 'CLOTURE_REALISE'
+WHERE EXISTS
+    (
+        SELECT s2.ID
+        FROM SERVICE s2
+        INNER JOIN ELEMENT_PEDAGOGIQUE ep2      ON s2.ELEMENT_PEDAGOGIQUE_ID  = ep2.ID  AND ep2.HISTO_DESTRUCTION IS NULL
+        INNER JOIN VOLUME_HORAIRE vh2           ON s2.ID = vh2.SERVICE_ID               AND vh2.HISTO_DESTRUCTION IS NULL
+        LEFT JOIN VALIDATION_VOL_HORAIRE vvh2   ON vh2.ID = vvh2.VOLUME_HORAIRE_ID
+        LEFT JOIN VALIDATION val2               ON val2.ID = vvh2.VALIDATION_ID         AND val2.HISTO_DESTRUCTION IS NULL
+        WHERE
+            s2.INTERVENANT_ID = v.intervenant_id
+            AND s2.HISTO_DESTRUCTION IS NULL
+            AND VH2.TYPE_VOLUME_HORAIRE_ID = V.TYPE_VOLUME_HORAIRE_ID
+            AND ep2.structure_id <> v.structure_id -- autre composante d'intervention que celle qui a tout validé
+            AND val2.ID IS NULL -- au moins un VH non validé
+    );
+
+-- V_INDIC_ATT_VALID_REF_AUTRE
+CREATE OR REPLACE FORCE VIEW "V_INDIC_ATT_VALID_REF_AUTRE" ("ID", "INTERVENANT_ID", "STRUCTURE_ID") AS
+  SELECT distinct
+    to_char(v.intervenant_id)||to_char(v.structure_id) as id,
+    v.intervenant_id,
+    v.structure_id
+FROM v_indic_tous_services_valides v
+INNER JOIN intervenant i                    ON V.INTERVENANT_ID = i.id              AND i.HISTO_DESTRUCTION IS NULL
+INNER JOIN TYPE_VOLUME_HORAIRE tvh          ON v.type_volume_horaire_id = tvh.id    AND tvh.code = 'REALISE'
+INNER JOIN VALIDATION clot                  ON clot.intervenant_id = i.id           AND clot.HISTO_DESTRUCTION IS NULL
+INNER JOIN TYPE_VALIDATION tv               ON tv.id = clot.type_validation_id      AND tv.code = 'CLOTURE_REALISE'
+WHERE EXISTS
+    (
+        SELECT s.ID
+        FROM SERVICE_REFERENTIEL s
+        INNER JOIN FONCTION_REFERENTIEL f       ON S.FONCTION_ID = f.ID                 AND f.HISTO_DESTRUCTION IS NULL
+        INNER JOIN VOLUME_HORAIRE_REF vh        ON s.ID = VH.SERVICE_REFERENTIEL_ID     AND vh.HISTO_DESTRUCTION IS NULL
+        LEFT JOIN VALIDATION_VOL_HORAIRE vvh    ON vh.ID = vvh.VOLUME_HORAIRE_ID
+        LEFT JOIN VALIDATION val                ON val.ID = vvh.VALIDATION_ID           AND val.HISTO_DESTRUCTION IS NULL
+        WHERE
+            s.INTERVENANT_ID = v.intervenant_id
+            AND s.HISTO_DESTRUCTION IS NULL
+            AND VH.TYPE_VOLUME_HORAIRE_ID = V.TYPE_VOLUME_HORAIRE_ID
+            AND s.structure_id <> v.structure_id -- autre composante d'intervention que celle qui a tout validé
+            AND val.ID IS NULL -- au moins un VH non validé
+    );
+
+-- V_INDIC_ATT_VALID_SERVICE
+CREATE OR REPLACE FORCE VIEW "V_INDIC_ATT_VALID_SERVICE" ("ID", "INTERVENANT_ID", "STRUCTURE_ID", "TYPE_VOLUME_HORAIRE_ID") AS
+  select distinct rownum id, i.id intervenant_id, nvl(ep.structure_id, i.structure_id) structure_id, vh.type_volume_horaire_id
+from service s
+join intervenant i on i.id = s.intervenant_id and i.histo_destruction IS NULL
+join volume_horaire vh on vh.service_id = s.id and vh.histo_destruction IS NULL
+join element_pedagogique ep on s.element_pedagogique_id = ep.id and ep.histo_destruction IS NULL
+--join type_volume_horaire tvh on vh.type_volume_horaire_id = tvh.id and tvh.code = 'REALISE'
+left join validation_vol_horaire vvh on vvh.volume_horaire_id = vh.id
+left join validation v on vvh.validation_id = v.id and v.histo_destruction IS NULL
+where v.id is null and s.histo_destruction IS NULL;
+
+-- V_INDIC_ATT_VALID_SERVICE_REF
+CREATE OR REPLACE FORCE VIEW "V_INDIC_ATT_VALID_SERVICE_REF" ("ID", "INTERVENANT_ID", "STRUCTURE_ID", "TYPE_VOLUME_HORAIRE_ID") AS
+  select distinct rownum id, i.id intervenant_id, s.structure_id, vh.type_volume_horaire_id
+from service_referentiel s
+join intervenant i on i.id = s.intervenant_id and i.histo_destruction IS NULL
+join volume_horaire_ref vh on vh.service_referentiel_id = s.id and vh.histo_destruction IS NULL
+join fonction_referentiel f on s.fonction_id = f.id and f.histo_destruction IS NULL
+--join type_volume_horaire tvh on vh.type_volume_horaire_id = tvh.id and tvh.code = 'REALISE'
+left join validation_vol_horaire_ref vvh on vvh.volume_horaire_ref_id = vh.id
+left join validation v on vvh.validation_id = v.id and v.histo_destruction IS NULL
+where v.id is null and s.histo_destruction IS NULL;
+
+-- V_INDIC_DEPASS_CHARGES
+CREATE OR REPLACE FORCE VIEW "V_INDIC_DEPASS_CHARGES" ("ID", "ANNEE_ID", "TYPE_VOLUME_HORAIRE_ID", "INTERVENANT_ID", "STRUCTURE_ID", "ELEMENT_PEDAGOGIQUE_ID", "PERIODE_ID", "TYPE_INTERVENTION_ID", "HEURES") AS
+  WITH c AS (
+  SELECT
+    vhe.element_pedagogique_id,
+    vhe.type_intervention_id,
+    MAX(vhe.heures) heures,
+    COALESCE( MAX(vhe.groupes), ROUND(SUM(t.groupes),10) ) groupes
+
+  FROM
+    volume_horaire_ens     vhe
+         JOIN parametre p ON p.nom = 'scenario_charges_services'
+    LEFT JOIN tbl_chargens   t ON t.element_pedagogique_id = vhe.element_pedagogique_id
+                              AND t.type_intervention_id = vhe.type_intervention_id
+                              AND t.scenario_id = to_number(p.valeur)
+  GROUP BY
+    vhe.element_pedagogique_id,
+    vhe.type_intervention_id
+), s AS (
+  SELECT
+    i.annee_id,
+    vh.type_volume_horaire_id,
+    s.intervenant_id,
+    s.element_pedagogique_id,
+    vh.type_intervention_id,
+    SUM(vh.heures) heures
+  FROM
+    volume_horaire vh
+    JOIN service     s ON s.id = vh.service_id
+                      AND s.element_pedagogique_id IS NOT NULL
+                      AND s.histo_destruction IS NULL
+    JOIN intervenant i ON i.id = s.intervenant_id
+                      AND i.histo_destruction IS NULL
+  WHERE
+    vh.histo_destruction IS NULL
+  GROUP BY
+    i.annee_id,
+    vh.type_volume_horaire_id,
+    s.intervenant_id,
+    s.element_pedagogique_id,
+    vh.type_intervention_id
+)
+SELECT
+  rownum                                      id,
+  s.annee_id                                  annee_id,
+  s.type_volume_horaire_id                    type_volume_horaire_id,
+  s.intervenant_id                            intervenant_id,
+  ep.structure_id                             structure_id,
+  s.element_pedagogique_id                    element_pedagogique_id,
+  ep.periode_id                               periode_id,
+  s.type_intervention_id                      type_intervention_id,
+  s.heures - COALESCE(c.heures * c.groupes,0) heures
+FROM
+            s
+       JOIN type_intervention ti ON ti.id = s.type_intervention_id
+       JOIN element_pedagogique ep ON ep.id = s.element_pedagogique_id
+  LEFT JOIN c ON c.element_pedagogique_id = s.element_pedagogique_id
+             AND c.type_intervention_id = COALESCE(ti.type_intervention_maquette_id,ti.id)
+WHERE
+  s.heures - COALESCE(c.heures * c.groupes,0) > 0;
+
+-- V_INDIC_DEPASS_HC_HORS_REMU_FC
+CREATE OR REPLACE FORCE VIEW "V_INDIC_DEPASS_HC_HORS_REMU_FC" ("ID", "ANNEE_ID", "INTERVENANT_ID", "TYPE_VOLUME_HORAIRE_ID", "STRUCTURE_ID", "TOTAL", "PLAFOND") AS
+  with totaux as (
+  -- totaux HC FI+FA+FC+Ref par intervenant et type de VH
+  select fr.intervenant_id, fr.type_volume_horaire_id, sum(fr.heures_compl_fi + fr.heures_compl_fa + fr.heures_compl_fc + fr.heures_compl_referentiel) total
+  from formule_resultat fr
+  join etat_volume_horaire evh on evh.id = fr.etat_volume_horaire_id and evh.code = 'saisi'
+  group by fr.intervenant_id, fr.type_volume_horaire_id
+),
+depass as (
+  -- totaux HC FI+FA+FC+Ref dépassant le plafond HC par intervenant et type de VH
+  select i.id intervenant_id, t.type_volume_horaire_id, t.total, si.plafond_hc_hors_remu_fc plafond
+  from intervenant i
+  join statut_intervenant si on i.statut_id = si.id and si.plafond_hc_hors_remu_fc is not null
+  join totaux t on t.intervenant_id = i.id
+  where t.total > si.plafond_hc_hors_remu_fc
+),
+str_interv as (
+  -- structures d'intervention distinctes par intervenant et type de VH
+  select distinct s.intervenant_id, vh.type_volume_horaire_id, coalesce(ep.structure_id, i.structure_id) structure_id
+  from service s
+  left join element_pedagogique ep on s.element_pedagogique_id = ep.id and ep.histo_destruction IS NULL
+  join intervenant i on s.intervenant_id = i.id and i.histo_destruction IS NULL
+  join volume_horaire vh on vh.service_id = s.id and vh.histo_destruction IS NULL
+  join v_vol_horaire_etat_multi vhe on vhe.volume_horaire_id = vh.id
+  join etat_volume_horaire evh on vhe.etat_volume_horaire_id = evh.id and evh.code = 'saisi'
+  where s.histo_destruction IS NULL
+)
+select to_number(d.intervenant_id||d.type_volume_horaire_id||str.structure_id) id, 2014 annee_id, d.intervenant_id, d.type_volume_horaire_id, str.structure_id, d.total, d.plafond
+from depass d
+join str_interv str on str.intervenant_id = d.intervenant_id and str.type_volume_horaire_id = d.type_volume_horaire_id;
+
+-- V_INDIC_DEPASS_REF
+CREATE OR REPLACE FORCE VIEW "V_INDIC_DEPASS_REF" ("ID", "ANNEE_ID", "INTERVENANT_ID", "TYPE_VOLUME_HORAIRE_ID", "STRUCTURE_ID", "TOTAL", "PLAFOND") AS
+  with totaux as (
+  select fr.intervenant_id, fr.type_volume_horaire_id, sum(fr.service_referentiel) total
+  from formule_resultat fr
+  join etat_volume_horaire evh on evh.id = fr.etat_volume_horaire_id and evh.code = 'saisi'
+  group by fr.intervenant_id, fr.type_volume_horaire_id
+  having sum(fr.service_referentiel) > 0
+),
+depass as (
+  select i.id intervenant_id, t.type_volume_horaire_id, t.total, si.plafond_referentiel plafond
+  from intervenant i
+  join statut_intervenant si on i.statut_id = si.id and si.plafond_referentiel is not null and si.plafond_referentiel <> 0
+  join totaux t on t.intervenant_id = i.id
+  where t.total > si.plafond_referentiel
+),
+str_interv as (
+  -- structures d'intervention distinctes par intervenant et type de VH
+  select distinct s.intervenant_id, vh.type_volume_horaire_id, s.structure_id
+  from service_referentiel s
+  join volume_horaire_ref vh on vh.service_referentiel_id = s.id and vh.histo_destruction IS NULL
+  join v_vol_horaire_ref_etat_multi vhe on vhe.volume_horaire_ref_id = vh.id
+  join etat_volume_horaire evh on vhe.etat_volume_horaire_id = evh.id and evh.code = 'saisi'
+  where s.histo_destruction IS NULL
+)
+select to_number(d.intervenant_id||d.type_volume_horaire_id||str.structure_id) id, 2014 annee_id, d.intervenant_id, d.type_volume_horaire_id, str.structure_id, d.total, d.plafond
+from depass d
+join str_interv str on str.intervenant_id = d.intervenant_id and str.type_volume_horaire_id = d.type_volume_horaire_id;
+
+-- V_INDIC_DIFF_DOSSIER
+CREATE OR REPLACE FORCE VIEW "V_INDIC_DIFF_DOSSIER" ("ID", "NOM_USUEL", "ADRESSE_DOSSIER", "ADRESSE_IMPORT", "RIB_DOSSIER", "RIB_IMPORT", "NOM_USUEL_DOSSIER", "NOM_USUEL_IMPORT", "PRENOM_DOSSIER", "PRENOM_IMPORT") AS
+  WITH aa AS (
+  SELECT a.*, ose_divers.formatted_adresse(
+      a.NO_VOIE,
+      a.NOM_VOIE,
+      a.BATIMENT,
+      a.MENTION_COMPLEMENTAIRE,
+      a.LOCALITE,
+      a.CODE_POSTAL,
+      a.VILLE,
+      a.PAYS_LIBELLE) to_string FROM adresse_intervenant a
+)
+select
+    i.id,
+    i.nom_usuel,
+    case when d.adresse <> a.to_string                                              then d.adresse                            else null end adresse_dossier,
+    case when d.adresse <> a.to_string                                              then a.to_string                          else null end adresse_import,
+    case when d.rib <> REPLACE(i.BIC || '-' || i.IBAN, ' ')                         then d.rib                                else null end rib_dossier,
+    case when d.rib <> REPLACE(i.BIC || '-' || i.IBAN, ' ')                         then REPLACE(i.BIC || '-' || i.IBAN, ' ') else null end rib_import,
+    case when UPPER(REPLACE(d.nom_usuel, ' ')) <> UPPER(REPLACE(i.nom_usuel, ' '))  then REPLACE(d.nom_usuel, ' ')            else null end nom_usuel_dossier,
+    case when UPPER(REPLACE(d.nom_usuel, ' ')) <> UPPER(REPLACE(i.nom_usuel, ' '))  then REPLACE(i.nom_usuel, ' ')            else null end nom_usuel_import,
+    case when UPPER(REPLACE(d.prenom, ' ')) <> UPPER(REPLACE(i.prenom, ' '))        then REPLACE(d.prenom, ' ')               else null end prenom_dossier,
+    case when UPPER(REPLACE(d.prenom, ' ')) <> UPPER(REPLACE(i.prenom, ' '))        then REPLACE(i.prenom, ' ')               else null end prenom_import
+  from intervenant i
+  join dossier d on d.intervenant_id = i.id
+  left join aa a on a.intervenant_id = i.id;
+
+-- V_INDIC_TOUS_SERVICES_VALIDES
+CREATE OR REPLACE FORCE VIEW "V_INDIC_TOUS_SERVICES_VALIDES" ("INTERVENANT_ID", "STRUCTURE_ID", "TYPE_VOLUME_HORAIRE_ID") AS
+  with struct_ens_non_valides as (
+    -- intervenants et structures d'intervention pour lesquelles des VH d'enseignement NE SONT PAS validés
+    SELECT distinct s.intervenant_id, ep.structure_id, vh.type_volume_horaire_id
+    FROM SERVICE s
+    INNER JOIN ELEMENT_PEDAGOGIQUE ep    ON s.ELEMENT_PEDAGOGIQUE_ID = ep.ID   AND ep.HISTO_DESTRUCTION IS NULL
+    INNER JOIN VOLUME_HORAIRE vh         ON s.ID = vh.SERVICE_ID               AND vh.HISTO_DESTRUCTION IS NULL
+    LEFT JOIN VALIDATION_VOL_HORAIRE vvh ON vvh.volume_horaire_id = vh.id
+    LEFT JOIN VALIDATION val             ON val.ID = vvh.validation_id         AND val.HISTO_DESTRUCTION IS NULL
+    WHERE s.HISTO_DESTRUCTION IS NULL
+    AND val.id is null
+),
+struct_ref_non_valides as (
+    -- intervenants et structures d'intervention pour lesquelles des VH de référentiel NE SONT PAS validés
+    SELECT distinct s.intervenant_id, s.structure_id, vh.type_volume_horaire_id
+    FROM SERVICE_REFERENTIEL s
+    INNER JOIN FONCTION_REFERENTIEL f        ON s.FONCTION_ID = f.ID               AND f.HISTO_DESTRUCTION IS NULL
+    INNER JOIN VOLUME_HORAIRE_REF vh         ON s.ID = VH.SERVICE_REFERENTIEL_ID   AND vh.HISTO_DESTRUCTION IS NULL
+    LEFT JOIN VALIDATION_VOL_HORAIRE_REF vvh ON VVH.VOLUME_HORAIRE_REF_ID = vh.id
+    LEFT JOIN VALIDATION val                 ON val.ID = vvh.validation_id         AND val.HISTO_DESTRUCTION IS NULL
+    WHERE s.HISTO_DESTRUCTION IS NULL
+    AND val.id is null
+)
+-- intervenants et structures d'intervention pour lesquelles tous les VH de référentiel et tous les VH d'enseignement SONT validés
+SELECT distinct s.intervenant_id, ep.structure_id, vh.type_volume_horaire_id
+FROM SERVICE s
+INNER JOIN ELEMENT_PEDAGOGIQUE ep     ON s.ELEMENT_PEDAGOGIQUE_ID = ep.ID   AND ep.HISTO_DESTRUCTION IS NULL
+INNER JOIN VOLUME_HORAIRE vh          ON s.ID = vh.SERVICE_ID               AND vh.HISTO_DESTRUCTION IS NULL
+WHERE not exists (
+    SELECT * from struct_ens_non_valides ens_nv
+    where ens_nv.INTERVENANT_ID = s.intervenant_id and ens_nv.structure_id = ep.structure_id and ens_nv.type_volume_horaire_id = vh.type_volume_horaire_id
+)
+-----
+UNION
+-----
+SELECT distinct s.intervenant_id, s.structure_id, vh.type_volume_horaire_id
+FROM SERVICE_REFERENTIEL s
+INNER JOIN FONCTION_REFERENTIEL f     ON s.FONCTION_ID = f.ID               AND f.HISTO_DESTRUCTION IS NULL
+INNER JOIN VOLUME_HORAIRE_REF vh      ON s.ID = VH.SERVICE_REFERENTIEL_ID   AND vh.HISTO_DESTRUCTION IS NULL
+WHERE s.HISTO_DESTRUCTION IS NULL
+and not exists (
+    SELECT * from struct_ref_non_valides ref_nv
+    where ref_nv.INTERVENANT_ID = s.intervenant_id and ref_nv.structure_id = s.structure_id and ref_nv.type_volume_horaire_id = vh.type_volume_horaire_id
+);
+
+-- V_MEP_INTERVENANT_STRUCTURE
+CREATE OR REPLACE FORCE VIEW "V_MEP_INTERVENANT_STRUCTURE" ("ID", "MISE_EN_PAIEMENT_ID", "INTERVENANT_ID", "STRUCTURE_ID", "PERIODE_PAIEMENT_ID", "DOMAINE_FONCTIONNEL_ID") AS
+  SELECT
+  rownum id,
+  t1."MISE_EN_PAIEMENT_ID",
+  t1."INTERVENANT_ID",
+  t1."STRUCTURE_ID",
+  t1.periode_paiement_id,
+  t1.domaine_fonctionnel_id
+FROM (
+
+SELECT
+  mep.id                   mise_en_paiement_id,
+  fr.intervenant_id        intervenant_id,
+  sr.structure_id          structure_id,
+  mep.periode_paiement_id  periode_paiement_id,
+  COALESCE(mep.domaine_fonctionnel_id, fr.domaine_fonctionnel_id) domaine_fonctionnel_id
+FROM
+  formule_resultat fr
+  JOIN formule_resultat_service_ref frsr ON frsr.formule_resultat_id = fr.id
+  JOIN mise_en_paiement              mep ON mep.formule_res_service_ref_id = frsr.id
+  JOIN centre_cout                    cc ON cc.id = mep.centre_cout_id
+  JOIN service_referentiel            sr ON sr.id = frsr.service_referentiel_id
+  JOIN fonction_referentiel           fr ON fr.id = sr.fonction_id
+UNION
+
+SELECT
+  mep.id                                      mise_en_paiement_id,
+  fr.intervenant_id                           intervenant_id,
+  COALESCE( ep.structure_id, i.structure_id ) structure_id,
+  mep.periode_paiement_id                     periode_paiement_id,
+  COALESCE(
+    mep.domaine_fonctionnel_id,
+    e.domaine_fonctionnel_id,
+    to_number((SELECT valeur FROM parametre WHERE nom = 'domaine_fonctionnel_ens_ext'))
+  ) domaine_fonctionnel_id
+FROM
+  formule_resultat fr
+  JOIN intervenant                       i ON i.id = fr.intervenant_id
+  JOIN formule_resultat_service        frs ON frs.formule_resultat_id = fr.id
+  JOIN mise_en_paiement                mep ON mep.formule_res_service_id = frs.id
+  JOIN centre_cout                      cc ON cc.id = mep.centre_cout_id
+  JOIN service                           s ON s.id = frs.service_id
+  LEFT JOIN element_pedagogique         ep ON ep.id = s.element_pedagogique_id
+  LEFT JOIN etape                        e ON e.id = ep.etape_id
+) t1;
+
+-- V_MODIF_SERVICE_DU_EXPORT_CSV
+CREATE OR REPLACE FORCE VIEW "V_MODIF_SERVICE_DU_EXPORT_CSV" ("ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID", "ANNEE", "STRUCTURE_LIBELLE", "INTERVENANT_CODE", "INTERVENANT_NOM_USUEL", "INTERVENANT_NOM_PATRONYMIQUE", "INTERVENANT_PRENOM", "INTERVENANT_STATUT_LIBELLE", "INTERVENANT_SERVICE_STATUTAIRE", "MOTIF_CODE", "MOTIF_LIBELLE", "HEURES", "COMMENTAIRES", "MODIFICATEUR", "DATE_MODIFICATION") AS
+  SELECT
+  i.annee_id                      annee_id,
+  i.id                            intervenant_id,
+  i.structure_id                  structure_id,
+
+  a.libelle                       annee,
+  s.libelle_court                 structure_libelle,
+
+  i.code                          intervenant_code,
+  i.nom_usuel                     intervenant_nom_usuel,
+  i.nom_patronymique              intervenant_nom_patronymique,
+  i.prenom                        intervenant_prenom,
+  si.libelle                      intervenant_statut_libelle,
+  si.service_statutaire           intervenant_service_statutaire,
+
+  mss.code                        motif_code,
+  mss.libelle                     motif_libelle,
+
+  msd.heures * mss.multiplicateur heures,
+
+  msd.commentaires                commentaires,
+  u.display_name                  modificateur,
+  msd.histo_modification          date_modification
+FROM
+       modification_service_du    msd
+  JOIN intervenant                  i ON i.id = msd.intervenant_id
+  JOIN annee                        a ON a.id = i.annee_id
+  JOIN structure                    s ON s.id = i.structure_id
+  JOIN statut_intervenant          si ON si.id = i.statut_id
+  JOIN motif_modification_service mss ON mss.id = msd.motif_id
+  JOIN utilisateur                  u ON u.id = msd.histo_modificateur_id
+WHERE
+  msd.histo_destruction IS NULL
+  AND i.histo_destruction IS NULL
+ORDER BY
+  annee_id,
+  structure_libelle,
+  intervenant_nom_usuel,
+  motif_libelle,
+  heures;
+
+-- V_NIVEAU_FORMATION
+CREATE OR REPLACE FORCE VIEW "V_NIVEAU_FORMATION" ("ID", "CODE", "LIBELLE_LONG", "NIVEAU", "GROUPE_TYPE_FORMATION_ID") AS
+  SELECT DISTINCT
+  ose_divers.niveau_formation_id_calc( gtf.id, gtf.pertinence_niveau, e.niveau ) id,
+  gtf.libelle_court || e.niveau code,
+  gtf.libelle_long,
+  e.niveau,
+  gtf.id groupe_type_formation_id
+FROM
+  etape e
+  JOIN type_formation tf ON tf.id = e.type_formation_id AND tf.histo_destruction IS NULL
+  JOIN groupe_type_formation gtf ON gtf.id = tf.groupe_id AND gtf.histo_destruction IS NULL
+WHERE
+  e.histo_destruction IS NULL
+  AND ose_divers.niveau_formation_id_calc( gtf.id, gtf.pertinence_niveau, e.niveau ) IS NOT NULL
+ORDER BY
+  gtf.libelle_long, e.niveau;
+
+-- V_PJ_HEURES
+CREATE OR REPLACE FORCE VIEW "V_PJ_HEURES" ("NOM_USUEL", "PRENOM", "INTERVENANT_ID", "SOURCE_CODE", "ANNEE_ID", "CATEG", "TOTAL_HEURES") AS
+  SELECT
+  i.NOM_USUEL,
+  i.PRENOM,
+  i.id intervenant_id,
+  i.SOURCE_CODE,
+  i.annee_id, 'service' categ,
+  sum(vh.HEURES) as total_heures
+from INTERVENANT i
+  join SERVICE s on s.INTERVENANT_ID = i.id      and s.histo_destruction IS NULL
+  join VOLUME_HORAIRE vh on vh.SERVICE_ID = s.id and vh.histo_destruction IS NULL
+  join type_volume_horaire tvh ON TVH.ID = VH.TYPE_VOLUME_HORAIRE_ID AND (tvh.code = 'PREVU')
+  join ELEMENT_PEDAGOGIQUE ep on s.ELEMENT_PEDAGOGIQUE_ID = ep.id        and ep.histo_destruction IS NULL
+  join ETAPE e on ep.ETAPE_ID = e.id and e.histo_destruction IS NULL
+where i.histo_destruction IS NULL
+  group by i.NOM_USUEL, i.PRENOM, i.id, i.SOURCE_CODE, i.annee_id, 'service'
+UNION
+  SELECT i.NOM_USUEL, i.PRENOM, i.id intervenant_id, i.SOURCE_CODE, i.annee_id, 'referentiel' categ, sum(vh.HEURES) as total_heures
+  from INTERVENANT i
+  join service_referentiel s on s.INTERVENANT_ID = i.id                  and s.histo_destruction IS NULL
+  join volume_horaire_ref vh on vh.service_referentiel_id = s.id         and vh.histo_destruction IS NULL
+  join type_volume_horaire tvh ON TVH.ID = VH.TYPE_VOLUME_HORAIRE_ID     AND (tvh.code = 'PREVU')
+  join fonction_referentiel ep on s.fonction_id = ep.id                  and ep.histo_destruction IS NULL
+  where i.histo_destruction IS NULL
+  group by i.NOM_USUEL, i.PRENOM, i.id, i.SOURCE_CODE, i.annee_id, 'referentiel';
+
+-- V_PRIVILEGES_ROLES
+CREATE OR REPLACE FORCE VIEW "V_PRIVILEGES_ROLES" ("PRIVILEGE", "ROLE") AS
+  WITH statuts_roles AS (
+SELECT
+  rp.privilege_id,
+  r.code role
+FROM
+  role_privilege rp
+  JOIN role r ON r.id = rp.role_id AND r.histo_destruction IS NULL
+
+UNION ALL
+
+SELECT
+  sp.privilege_id,
+  'statut/' || s.source_code role
+FROM
+  statut_privilege sp
+  JOIN statut_intervenant s ON s.id = sp.statut_id AND s.histo_destruction IS NULL
+)
+SELECT
+  cp.code || '-' || p.code privilege,
+  sr.role
+FROM
+  privilege p
+  JOIN categorie_privilege cp ON cp.id = p.categorie_id
+  LEFT JOIN statuts_roles sr ON sr.privilege_id = p.id;
+
+-- V_REF_INTERVENANT
+CREATE OR REPLACE FORCE VIEW "V_REF_INTERVENANT" ("C_INTERVENANT") AS
+  SELECT DISTINCT
+  i.source_code C_INTERVENANT
+FROM
+  tbl_service s
+  JOIN intervenant i ON i.id = s.intervenant_id
+  JOIN annee a ON a.id = s.annee_id
+WHERE
+  s.nbvh > 0
+  AND SYSDATE BETWEEN a.date_debut AND a.date_fin;
+
+-- V_SERVICE_NON_VALIDE
+CREATE OR REPLACE FORCE VIEW "V_SERVICE_NON_VALIDE" ("ID", "INTERVENANT_ID", "SERVICE_ID", "VOLUME_HORAIRE_ID", "ELEMENT_PEDAGOGIQUE_ID", "LIBELLE", "HEURES") AS
+  select vh.ID, i.ID as intervenant_id, s.ID as service_id, vh.ID as volume_horaire_id, ep.id as element_pedagogique_id, ep.LIBELLE, vh.HEURES
+  from service s
+  inner join INTERVENANT i on s.INTERVENANT_ID = i.id
+  inner join ELEMENT_PEDAGOGIQUE ep on s.ELEMENT_PEDAGOGIQUE_ID = ep.id and ep.histo_destruction IS NULL
+  inner join VOLUME_HORAIRE vh on vh.SERVICE_ID = s.ID and vh.HISTO_DESTRUCTION is null
+  left join VALIDATION_VOL_HORAIRE vvh on vvh.VOLUME_HORAIRE_ID = vh.ID
+  left join VALIDATION v on vvh.VALIDATION_ID = v.ID
+  left join TYPE_VALIDATION tv on v.TYPE_VALIDATION_ID = tv.ID
+  where (v.ID is null or v.HISTO_DESTRUCTION is not null) and
+  not exists (
+    select * from VALIDATION_VOL_HORAIRE vvh2
+    inner join VALIDATION v2 on vvh2.VALIDATION_ID = v2.ID and v2.histo_destruction IS NULL
+    where vvh2.VOLUME_HORAIRE_ID = vvh.VOLUME_HORAIRE_ID
+  );
+
+-- V_SERVICE_VALIDE
+CREATE OR REPLACE FORCE VIEW "V_SERVICE_VALIDE" ("ID", "INTERVENANT_ID", "SERVICE_ID", "VOLUME_HORAIRE_ID", "ELEMENT_PEDAGOGIQUE_ID", "LIBELLE", "HEURES", "VALIDATION_ID", "CODE") AS
+  select vh.ID, i.ID as intervenant_id, s.ID as service_id, vh.ID as volume_horaire_id, ep.id as element_pedagogique_id, ep.LIBELLE, vh.HEURES, v.ID as validation_id, tv.CODE
+  from service s
+  inner join INTERVENANT i on s.INTERVENANT_ID = i.id
+  left join ELEMENT_PEDAGOGIQUE ep on s.ELEMENT_PEDAGOGIQUE_ID = ep.id and ep.histo_destruction IS NULL -- pas d'EP si intervention hors-UCBN
+  inner join VOLUME_HORAIRE vh on vh.SERVICE_ID = s.ID and vh.histo_destruction IS NULL
+  inner join VALIDATION_VOL_HORAIRE vvh on vvh.VOLUME_HORAIRE_ID = vh.ID
+  inner join VALIDATION v on vvh.VALIDATION_ID = v.ID and v.histo_destruction IS NULL
+  inner join TYPE_VALIDATION tv on v.TYPE_VALIDATION_ID = tv.ID;
+
+-- V_STRUCTURE_TYPE_MODULATEUR
+CREATE OR REPLACE FORCE VIEW "V_STRUCTURE_TYPE_MODULATEUR" ("TYPE_MODULATEUR_ID", "STRUCTURE_ID") AS
+  SELECT DISTINCT
+  etm.type_modulateur_id type_modulateur_id,
+  ep.structure_id structure_id
+FROM
+  v_element_type_modulateur etm
+  JOIN element_pedagogique ep ON ep.id = etm.element_pedagogique_id AND ep.histo_destruction IS NULL;
+
+-- V_TBL_AGREMENT
+CREATE OR REPLACE FORCE VIEW "V_TBL_AGREMENT" ("ANNEE_ID", "TYPE_AGREMENT_ID", "INTERVENANT_ID", "STRUCTURE_ID", "OBLIGATOIRE", "AGREMENT_ID") AS
+  WITH i_s AS (
+  SELECT DISTINCT
+    fr.intervenant_id,
+    ep.structure_id
+  FROM
+    formule_resultat fr
+    JOIN type_volume_horaire  tvh ON tvh.code = 'PREVU' AND tvh.id = fr.type_volume_horaire_id
+    JOIN etat_volume_horaire  evh ON evh.code = 'valide' AND evh.id = fr.etat_volume_horaire_id
+
+    JOIN formule_resultat_service frs ON frs.formule_resultat_id = fr.id
+    JOIN service s ON s.id = frs.service_id
+    JOIN element_pedagogique ep ON ep.id = s.element_pedagogique_id
+  WHERE
+    frs.total > 0
+)
+SELECT
+  i.annee_id              annee_id,
+  tas.type_agrement_id    type_agrement_id,
+  i.id                    intervenant_id,
+  null                    structure_id,
+  tas.obligatoire         obligatoire,
+  a.id                    agrement_id
+FROM
+  type_agrement                  ta
+  JOIN type_agrement_statut      tas ON tas.type_agrement_id = ta.id
+                                    AND tas.histo_destruction IS NULL
+
+  JOIN intervenant                 i ON i.histo_destruction IS NULL
+                                    AND (tas.premier_recrutement IS NULL OR NVL(i.premier_recrutement,0) = tas.premier_recrutement)
+                                    AND i.statut_id = tas.statut_intervenant_id
+
+  LEFT JOIN agrement               a ON a.type_agrement_id = ta.id
+                                    AND a.intervenant_id = i.id
+                                    AND a.histo_destruction IS NULL
+WHERE
+  ta.code = 'CONSEIL_ACADEMIQUE'
+
+UNION ALL
+
+SELECT
+  i.annee_id              annee_id,
+  tas.type_agrement_id    type_agrement_id,
+  i.id                    intervenant_id,
+  i_s.structure_id        structure_id,
+  tas.obligatoire         obligatoire,
+  a.id                    agrement_id
+FROM
+  type_agrement                   ta
+  JOIN type_agrement_statut      tas ON tas.type_agrement_id = ta.id
+                                    AND tas.histo_destruction IS NULL
+
+  JOIN intervenant                 i ON i.histo_destruction IS NULL
+                                    AND (tas.premier_recrutement IS NULL OR NVL(i.premier_recrutement,0) = tas.premier_recrutement)
+                                    AND i.statut_id = tas.statut_intervenant_id
+
+  JOIN                           i_s ON i_s.intervenant_id = i.id
+
+  LEFT JOIN agrement               a ON a.type_agrement_id = ta.id
+                                    AND a.intervenant_id = i.id
+                                    AND a.structure_id = i_s.structure_id
+                                    AND a.histo_destruction IS NULL
+WHERE
+  ta.code = 'CONSEIL_RESTREINT';
+
+-- V_TBL_CHARGENS
+CREATE OR REPLACE FORCE VIEW "V_TBL_CHARGENS" ("ANNEE_ID", "NOEUD_ID", "SCENARIO_ID", "TYPE_HEURES_ID", "TYPE_INTERVENTION_ID", "ELEMENT_PEDAGOGIQUE_ID", "ETAPE_ID", "ETAPE_ENS_ID", "STRUCTURE_ID", "GROUPE_TYPE_FORMATION_ID", "OUVERTURE", "DEDOUBLEMENT", "ASSIDUITE", "EFFECTIF", "HEURES_ENS", "GROUPES", "HEURES", "HETD") AS
+  WITH t AS (
+SELECT
+  n.annee_id                        annee_id,
+  n.noeud_id                        noeud_id,
+  sn.scenario_id                    scenario_id,
+  sne.type_heures_id                type_heures_id,
+  ti.id                             type_intervention_id,
+
+  n.element_pedagogique_id          element_pedagogique_id,
+  n.element_pedagogique_etape_id    etape_id,
+  sne.etape_id                      etape_ens_id,
+  n.structure_id                    structure_id,
+  n.groupe_type_formation_id        groupe_type_formation_id,
+
+  vhe.heures                        heures,
+  vhe.heures * ti.taux_hetd_service hetd,
+
+  GREATEST(COALESCE(sns.ouverture, 1),1)                                           ouverture,
+  GREATEST(COALESCE(sns.dedoublement, snsetp.dedoublement, csdd.dedoublement,1),1) dedoublement,
+  COALESCE(sns.assiduite,1)                                                        assiduite,
+  sne.effectif*COALESCE(sns.assiduite,1)                                           effectif,
+
+  SUM(sne.effectif*COALESCE(sns.assiduite,1)) OVER (PARTITION BY n.noeud_id, sn.scenario_id, ti.id) t_effectif
+
+FROM
+            scenario_noeud_effectif    sne
+       JOIN etape                        e ON e.id = sne.etape_id
+                                          AND e.histo_destruction IS NULL
+
+       JOIN scenario_noeud              sn ON sn.id = sne.scenario_noeud_id
+                                          AND sn.histo_destruction IS NULL
+
+       JOIN tbl_noeud                       n ON n.noeud_id = sn.noeud_id
+
+       JOIN volume_horaire_ens         vhe ON vhe.element_pedagogique_id = n.element_pedagogique_id
+                                          AND vhe.histo_destruction IS NULL
+                                          AND vhe.heures > 0
+
+       JOIN type_intervention           ti ON ti.id = vhe.type_intervention_id
+
+  LEFT JOIN tbl_noeud                 netp ON netp.etape_id = e.id
+
+  LEFT JOIN scenario_noeud           snetp ON snetp.scenario_id = sn.scenario_id
+                                          AND snetp.noeud_id = netp.noeud_id
+                                          AND snetp.histo_destruction IS NULL
+
+  LEFT JOIN scenario_noeud_seuil    snsetp ON snsetp.scenario_noeud_id = snetp.id
+                                          AND snsetp.type_intervention_id = ti.id
+
+  LEFT JOIN tbl_chargens_seuils_def   csdd ON csdd.annee_id = n.annee_id
+                                          AND csdd.scenario_id = sn.scenario_id
+                                          AND csdd.type_intervention_id = ti.id
+                                          AND csdd.groupe_type_formation_id = n.groupe_type_formation_id
+                                          AND csdd.structure_id = n.structure_id
+
+  LEFT JOIN scenario_noeud_seuil       sns ON sns.scenario_noeud_id = sn.id
+                                          AND sns.type_intervention_id = ti.id
+)
+SELECT
+  annee_id,
+  noeud_id,
+  scenario_id,
+  type_heures_id,
+  type_intervention_id,
+
+  element_pedagogique_id,
+  etape_id,
+  etape_ens_id,
+  structure_id,
+  groupe_type_formation_id,
+
+  ouverture,
+  dedoublement,
+  assiduite,
+  effectif,
+  heures heures_ens,
+  --t_effectif,
+
+  CASE WHEN t_effectif < ouverture THEN 0 ELSE
+    CEIL( t_effectif / dedoublement ) * effectif / t_effectif
+  END groupes,
+
+  CASE WHEN t_effectif < ouverture THEN 0 ELSE
+    CEIL( t_effectif / dedoublement ) * heures * effectif / t_effectif
+  END heures,
+
+  CASE WHEN t_effectif < ouverture THEN 0 ELSE
+    CEIL( t_effectif / dedoublement ) * hetd * effectif / t_effectif
+  END  hetd
+
+FROM
+  t;
+
+-- V_TBL_CHARGENS_SEUILS_DEF
+CREATE OR REPLACE FORCE VIEW "V_TBL_CHARGENS_SEUILS_DEF" ("ANNEE_ID", "SCENARIO_ID", "STRUCTURE_ID", "GROUPE_TYPE_FORMATION_ID", "TYPE_INTERVENTION_ID", "DEDOUBLEMENT") AS
+  SELECT
+  sta.annee_id,
+  sta.scenario_id,
+  s.structure_id,
+  gtf.groupe_type_formation_id,
+  sta.type_intervention_id,
+  COALESCE(sc1.dedoublement, sc2.dedoublement, sc3.dedoublement, sc4.dedoublement) dedoublement
+FROM
+  (SELECT DISTINCT scenario_id, type_intervention_id, annee_id FROM seuil_charge WHERE histo_destruction IS NULL) sta
+  JOIN (SELECT DISTINCT structure_id FROM noeud WHERE structure_id IS NOT NULL) s ON 1=1
+  JOIN (SELECT id groupe_type_formation_id FROM groupe_type_formation) gtf ON 1=1
+
+  LEFT JOIN seuil_charge sc1 ON
+    sc1.histo_destruction            IS NULL
+    AND sc1.annee_id                 = sta.annee_id
+    AND sc1.scenario_id              = sta.scenario_id
+    AND sc1.type_intervention_id     = sta.type_intervention_id
+    AND sc1.structure_id             = s.structure_id
+    AND sc1.groupe_type_formation_id = gtf.groupe_type_formation_id
+
+  LEFT JOIN seuil_charge sc2 ON
+    sc2.histo_destruction            IS NULL
+    AND sc2.annee_id                 = sta.annee_id
+    AND sc2.scenario_id              = sta.scenario_id
+    AND sc2.type_intervention_id     = sta.type_intervention_id
+    AND sc2.structure_id             = s.structure_id
+    AND sc2.groupe_type_formation_id IS NULL
+
+  LEFT JOIN seuil_charge sc3 ON
+    sc3.histo_destruction            IS NULL
+    AND sc3.annee_id                 = sta.annee_id
+    AND sc3.scenario_id              = sta.scenario_id
+    AND sc3.type_intervention_id     = sta.type_intervention_id
+    AND sc3.structure_id             IS NULL
+    AND sc3.groupe_type_formation_id = gtf.groupe_type_formation_id
+
+  LEFT JOIN seuil_charge sc4 ON
+    sc4.histo_destruction            IS NULL
+    AND sc4.annee_id                 = sta.annee_id
+    AND sc4.scenario_id              = sta.scenario_id
+    AND sc4.type_intervention_id     = sta.type_intervention_id
+    AND sc4.structure_id             IS NULL
+    AND sc4.groupe_type_formation_id IS NULL
+WHERE
+  COALESCE(sc1.dedoublement, sc2.dedoublement, sc3.dedoublement, sc4.dedoublement, 1) <> 1;
+
+-- V_TBL_CLOTURE_REALISE
+CREATE OR REPLACE FORCE VIEW "V_TBL_CLOTURE_REALISE" ("ANNEE_ID", "INTERVENANT_ID", "PEUT_CLOTURER_SAISIE", "CLOTURE") AS
+  WITH t AS (
+  SELECT
+    i.annee_id              annee_id,
+    i.id                    intervenant_id,
+    si.peut_cloturer_saisie peut_cloturer_saisie,
+    CASE WHEN v.id IS NULL THEN 0 ELSE 1 END cloture
+  FROM
+              intervenant         i
+         JOIN statut_intervenant si ON si.id = i.statut_id
+         JOIN type_validation    tv ON tv.code = 'CLOTURE_REALISE'
+
+    LEFT JOIN validation          v ON v.intervenant_id = i.id
+                                   AND v.type_validation_id = tv.id
+                                   AND v.histo_destruction IS NULL
+
+  WHERE
+    i.histo_destruction IS NULL
+)
+SELECT
+  annee_id,
+  intervenant_id,
+  peut_cloturer_saisie,
+  CASE WHEN sum(cloture) = 0 THEN 0 ELSE 1 END cloture
+FROM
+  t
+GROUP BY
+  annee_id,
+  intervenant_id,
+  peut_cloturer_saisie;
+
+-- V_TBL_CONTRAT
+CREATE OR REPLACE FORCE VIEW "V_TBL_CONTRAT" ("ANNEE_ID", "INTERVENANT_ID", "PEUT_AVOIR_CONTRAT", "STRUCTURE_ID", "NBVH", "EDITE", "SIGNE") AS
+  WITH t AS (
+  SELECT
+    i.annee_id                                                                annee_id,
+    i.id                                                                      intervenant_id,
+    si.peut_avoir_contrat                                                     peut_avoir_contrat,
+    NVL(ep.structure_id, i.structure_id)                                      structure_id,
+    CASE WHEN evh.code IN ('contrat-edite','contrat-signe') THEN 1 ELSE 0 END edite,
+    CASE WHEN evh.code IN ('contrat-signe')                 THEN 1 ELSE 0 END signe
+  FROM
+              intervenant                 i
+
+         JOIN statut_intervenant         si ON si.id = i.statut_id
+
+         JOIN service                     s ON s.intervenant_id = i.id
+                                           AND s.histo_destruction IS NULL
+
+         JOIN type_volume_horaire       tvh ON tvh.code = 'PREVU'
+
+         JOIN volume_horaire             vh ON vh.service_id = s.id
+                                           AND vh.histo_destruction IS NULL
+                                           AND vh.heures <> 0
+                                           AND vh.type_volume_horaire_id = tvh.id
+
+         JOIN v_volume_horaire_etat     vhe ON vhe.volume_horaire_id = vh.id
+
+         JOIN etat_volume_horaire       evh ON evh.id = vhe.etat_volume_horaire_id
+                                           AND evh.code IN ('valide', 'contrat-edite', 'contrat-signe')
+
+         JOIN element_pedagogique        ep ON ep.id = s.element_pedagogique_id
+
+  WHERE
+    i.histo_destruction IS NULL
+    AND NOT (si.peut_avoir_contrat = 0 AND evh.code = 'valide')
+
+  UNION ALL
+
+  SELECT
+    i.annee_id                                                                annee_id,
+    i.id                                                                      intervenant_id,
+    si.peut_avoir_contrat                                                     peut_avoir_contrat,
+    s.structure_id                                                            structure_id,
+    CASE WHEN evh.code IN ('contrat-edite','contrat-signe') THEN 1 ELSE 0 END edite,
+    CASE WHEN evh.code IN ('contrat-signe')                 THEN 1 ELSE 0 END signe
+  FROM
+              intervenant                 i
+
+         JOIN statut_intervenant         si ON si.id = i.statut_id
+
+         JOIN service_referentiel         s ON s.intervenant_id = i.id
+                                           AND s.histo_destruction IS NULL
+
+         JOIN type_volume_horaire       tvh ON tvh.code = 'PREVU'
+
+         JOIN volume_horaire_ref         vh ON vh.service_referentiel_id = s.id
+                                           AND vh.histo_destruction IS NULL
+                                           AND vh.heures <> 0
+                                           AND vh.type_volume_horaire_id = tvh.id
+
+         JOIN v_volume_horaire_ref_etat vhe ON vhe.volume_horaire_ref_id = vh.id
+
+         JOIN etat_volume_horaire       evh ON evh.id = vhe.etat_volume_horaire_id
+                                           AND evh.code IN ('valide', 'contrat-edite', 'contrat-signe')
+
+  WHERE
+    i.histo_destruction IS NULL
+    AND NOT (si.peut_avoir_contrat = 0 AND evh.code = 'valide')
+)
+SELECT
+  annee_id,
+  intervenant_id,
+  peut_avoir_contrat,
+  structure_id,
+  count(*) as nbvh,
+  sum(edite) as edite,
+  sum(signe) as signe
+FROM
+  t
+GROUP BY
+  annee_id,
+  intervenant_id,
+  peut_avoir_contrat,
+  structure_id;
+
+-- V_TBL_DMEP_LIQUIDATION
+CREATE OR REPLACE FORCE VIEW "V_TBL_DMEP_LIQUIDATION" ("ANNEE_ID", "TYPE_RESSOURCE_ID", "STRUCTURE_ID", "HEURES") AS
+  SELECT
+  annee_id,
+  type_ressource_id,
+  structure_id,
+  SUM(heures) heures
+FROM
+(
+  SELECT
+    i.annee_id,
+    cc.type_ressource_id,
+    COALESCE( ep.structure_id, i.structure_id ) structure_id,
+    mep.heures
+  FROM
+              mise_en_paiement         mep
+         JOIN centre_cout               cc ON cc.id = mep.centre_cout_id
+         JOIN formule_resultat_service frs ON frs.id = mep.formule_res_service_id
+         JOIN service                    s ON s.id = frs.service_id
+         JOIN intervenant                i ON i.id = s.intervenant_id
+    LEFT JOIN element_pedagogique       ep ON ep.id = s.element_pedagogique_id
+  WHERE
+    mep.histo_destruction IS NULL
+
+  UNION ALL
+
+  SELECT
+    i.annee_id,
+    cc.type_ressource_id,
+    sr.structure_id structure_id,
+    heures
+  FROM
+              mise_en_paiement              mep
+         JOIN centre_cout                    cc ON cc.id = mep.centre_cout_id
+         JOIN formule_resultat_service_ref frsr ON frsr.id = mep.formule_res_service_ref_id
+         JOIN service_referentiel            sr ON sr.id = frsr.service_referentiel_id
+         JOIN intervenant                     i ON i.id = sr.intervenant_id
+
+  WHERE
+    mep.histo_destruction IS NULL
+
+) t1
+GROUP BY
+  annee_id, type_ressource_id, structure_id;
+
+-- V_TBL_DOSSIER
+CREATE OR REPLACE FORCE VIEW "V_TBL_DOSSIER" ("ANNEE_ID", "INTERVENANT_ID", "PEUT_SAISIR_DOSSIER", "DOSSIER_ID", "VALIDATION_ID") AS
+  SELECT
+  i.annee_id,
+  i.id intervenant_id,
+  si.peut_saisir_dossier,
+  d.id dossier_id,
+  v.id validation_id
+FROM
+            intervenant         i
+       JOIN statut_intervenant si ON si.id = i.statut_id
+  LEFT JOIN dossier             d ON d.intervenant_id = i.id
+                              AND d.histo_destruction IS NULL
+
+       JOIN type_validation tv ON tv.code = 'DONNEES_PERSO_PAR_COMP'
+  LEFT JOIN validation       v ON v.intervenant_id = i.id
+                              AND v.type_validation_id = tv.id
+                              AND v.histo_destruction IS NULL
+WHERE
+  i.histo_destruction IS NULL;
+
+-- V_TBL_LIEN
+CREATE OR REPLACE FORCE VIEW "V_TBL_LIEN" ("LIEN_ID", "SCENARIO_ID", "SCENARIO_LIEN_ID", "NOEUD_SUP_ID", "NOEUD_INF_ID", "STRUCTURE_ID", "ACTIF", "POIDS", "MAX_POIDS", "CHOIX_MAXIMUM", "CHOIX_MINIMUM", "NB_CHOIX", "TOTAL_POIDS") AS
+  SELECT
+  l.id             lien_id,
+  s.id             scenario_id,
+  sl.id            scenario_lien_id,
+  l.noeud_sup_id   noeud_sup_id,
+  l.noeud_inf_id   noeud_inf_id,
+  l.structure_id   structure_id,
+  NVL(sl.actif,1)  actif,
+  NVL(sl.poids,1)  poids,
+  MAX(CASE WHEN 1 = NVL(sl.actif,1) THEN NVL(sl.poids,1) ELSE 0 END) OVER (PARTITION BY l.noeud_sup_id, s.id) max_poids,
+  sl.choix_maximum choix_maximum,
+  sl.choix_minimum choix_minimum,
+
+  SUM(NVL(sl.actif,1)) OVER (PARTITION BY l.noeud_sup_id, s.id) nb_choix,
+  SUM(CASE WHEN 1 = NVL(sl.actif,1) THEN NVL(sl.poids,1) ELSE 0 END) OVER (PARTITION BY l.noeud_sup_id, s.id) total_poids
+
+FROM
+  lien l
+  JOIN scenario s ON s.histo_destruction IS NULL
+  LEFT JOIN scenario_lien sl ON
+    sl.lien_id = l.id
+    AND sl.scenario_id = s.id
+    AND s.histo_destruction IS NULL
+WHERE
+  l.histo_destruction IS NULL;
+
+-- V_TBL_PAIEMENT
+CREATE OR REPLACE FORCE VIEW "V_TBL_PAIEMENT" ("ANNEE_ID", "FORMULE_RES_SERVICE_ID", "FORMULE_RES_SERVICE_REF_ID", "INTERVENANT_ID", "STRUCTURE_ID", "MISE_EN_PAIEMENT_ID", "PERIODE_PAIEMENT_ID", "HEURES_A_PAYER", "HEURES_A_PAYER_POND", "HEURES_DEMANDEES", "HEURES_PAYEES") AS
+  SELECT
+  i.annee_id                                  annee_id,
+  frs.id                                      formule_res_service_id,
+  null                                        formule_res_service_ref_id,
+  i.id                                        intervenant_id,
+  COALESCE( ep.structure_id, i.structure_id ) structure_id,
+  mep.id                                      mise_en_paiement_id,
+  mep.periode_paiement_id                     periode_paiement_id,
+  frs.heures_compl_fi + frs.heures_compl_fc + frs.heures_compl_fa + frs.heures_compl_fc_majorees heures_a_payer,
+  count(*) OVER(PARTITION BY frs.id)          heures_a_payer_pond,
+  NVL(mep.heures,0)                           heures_demandees,
+  CASE WHEN mep.periode_paiement_id IS NULL THEN 0 ELSE mep.heures END heures_payees
+FROM
+            formule_resultat_service        frs
+       JOIN type_volume_horaire             tvh ON tvh.code = 'REALISE'
+       JOIN etat_volume_horaire             evh ON evh.code = 'valide'
+       JOIN formule_resultat                 fr ON fr.id = frs.formule_resultat_id
+                                               AND fr.type_volume_horaire_id = tvh.id
+                                               AND fr.etat_volume_horaire_id = evh.id
+
+       JOIN intervenant                       i ON i.id = fr.intervenant_id
+       JOIN service                           s ON s.id = frs.service_id
+  LEFT JOIN element_pedagogique              ep ON ep.id = s.element_pedagogique_id
+  LEFT JOIN mise_en_paiement                mep ON mep.formule_res_service_id = frs.id
+                                               AND mep.histo_destruction IS NULL
+
+UNION ALL
+
+SELECT
+  i.annee_id                                  annee_id,
+  null                                        formule_res_service_id,
+  frs.id                                      formule_res_service_ref_id,
+  i.id                                        intervenant_id,
+  s.structure_id                              structure_id,
+  mep.id                                      mise_en_paiement_id,
+  mep.periode_paiement_id                     periode_paiement_id,
+  frs.heures_compl_referentiel                heures_a_payer,
+  count(*) OVER(PARTITION BY frs.id)          heures_a_payer_pond,
+  NVL(mep.heures,0)                           heures_demandees,
+  CASE WHEN mep.periode_paiement_id IS NULL THEN 0 ELSE mep.heures END heures_payees
+FROM
+            formule_resultat_service_ref    frs
+       JOIN type_volume_horaire             tvh ON tvh.code = 'REALISE'
+       JOIN etat_volume_horaire             evh ON evh.code = 'valide'
+       JOIN formule_resultat                 fr ON fr.id = frs.formule_resultat_id
+                                               AND fr.type_volume_horaire_id = tvh.id
+                                               AND fr.etat_volume_horaire_id = evh.id
+
+       JOIN intervenant                       i ON i.id = fr.intervenant_id
+       JOIN service_referentiel               s ON s.id = frs.service_referentiel_id
+  LEFT JOIN mise_en_paiement                mep ON mep.formule_res_service_ref_id = frs.id
+                                               AND mep.histo_destruction IS NULL;
+
+-- V_TBL_PIECE_JOINTE
+CREATE OR REPLACE FORCE VIEW "V_TBL_PIECE_JOINTE" ("ANNEE_ID", "TYPE_PIECE_JOINTE_ID", "INTERVENANT_ID", "DEMANDEE", "FOURNIE", "VALIDEE", "HEURES_POUR_SEUIL") AS
+  WITH pjf AS (
+  SELECT
+    pjf.annee_id,
+    pjf.type_piece_jointe_id,
+    pjf.intervenant_id,
+    COUNT(*) count,
+    SUM(CASE WHEN validation_id IS NULL THEN 0 ELSE 1 END) validation,
+    SUM(CASE WHEN fichier_id IS NULL THEN 0 ELSE 1 END) fichier
+  FROM
+    tbl_piece_jointe_fournie pjf
+  GROUP BY
+    pjf.annee_id,
+    pjf.type_piece_jointe_id,
+    pjf.intervenant_id
+)
+SELECT
+  NVL( pjd.annee_id, pjf.annee_id ) annee_id,
+  NVL( pjd.type_piece_jointe_id, pjf.type_piece_jointe_id ) type_piece_jointe_id,
+  NVL( pjd.intervenant_id, pjf.intervenant_id ) intervenant_id,
+  CASE WHEN pjd.intervenant_id IS NULL THEN 0 ELSE 1 END demandee,
+  CASE WHEN pjf.fichier = pjf.count THEN 1 ELSE 0 END fournie,
+  CASE WHEN pjf.validation = pjf.count THEN 1 ELSE 0 END validee,
+  NVL(pjd.heures_pour_seuil,0) heures_pour_seuil
+FROM
+  tbl_piece_jointe_demande pjd
+  FULL JOIN pjf ON pjf.type_piece_jointe_id = pjd.type_piece_jointe_id AND pjf.intervenant_id = pjd.intervenant_id;
+
+-- V_TBL_PIECE_JOINTE_DEMANDE
+CREATE OR REPLACE FORCE VIEW "V_TBL_PIECE_JOINTE_DEMANDE" ("ANNEE_ID", "INTERVENANT_ID", "TYPE_PIECE_JOINTE_ID", "HEURES_POUR_SEUIL") AS
+  WITH i_h AS (
+  SELECT
+    s.intervenant_id,
+    sum(vh.heures) heures,
+    sum(ep.taux_fc) fc
+  FROM
+         service               s
+    JOIN type_volume_horaire tvh ON tvh.code = 'PREVU'
+    JOIN volume_horaire       vh ON vh.service_id = s.id
+                                AND vh.type_volume_horaire_id = tvh.id
+                                AND vh.histo_destruction IS NULL
+    JOIN element_pedagogique ep ON ep.id = s.element_pedagogique_id -- Service sur l'établissement
+  WHERE
+    s.histo_destruction IS NULL
+    AND vh.motif_non_paiement_id IS NULL -- pas de motif de non paiement
+  GROUP BY
+    s.intervenant_id
+)
+SELECT
+  i.annee_id                      annee_id,
+  i.id                            intervenant_id,
+  tpj.id                          type_piece_jointe_id,
+  MAX(COALESCE(i_h.heures, 0))    heures_pour_seuil
+FROM
+            intervenant                 i
+
+  LEFT JOIN dossier                     d ON d.intervenant_id = i.id
+                                         AND d.histo_destruction IS NULL
+
+       JOIN type_piece_jointe_statut tpjs ON tpjs.statut_intervenant_id = i.statut_id
+                                         AND tpjs.histo_destruction IS NULL
+                                         AND i.annee_id BETWEEN COALESCE(tpjs.annee_debut_id,i.annee_id) AND COALESCE(tpjs.annee_fin_id,i.annee_id)
+
+       JOIN type_piece_jointe         tpj ON tpj.id = tpjs.type_piece_jointe_id
+                                         AND tpj.histo_destruction IS NULL
+
+  LEFT JOIN                           i_h ON i_h.intervenant_id = i.id
+WHERE
+  -- Gestion de l'historique
+  i.histo_destruction IS NULL
+
+  -- Seuil HETD
+  AND (COALESCE(i_h.heures,0) > COALESCE(tpjs.seuil_hetd,-1))
+
+  -- En fonction du premier recrutement ou non
+  AND (tpjs.premier_recrutement = 0 OR COALESCE(i.premier_recrutement,0) = 1)
+
+  -- Le RIB n'est demandé QUE s'il est différent!!
+  AND CASE
+        WHEN tpjs.changement_rib = 0 OR d.id IS NULL THEN 1
+        ELSE CASE WHEN replace(i.bic, ' ', '') || '-' || replace(i.iban, ' ', '') = d.rib THEN 0 ELSE 1 END
+      END = 1
+
+  -- Filtre FC
+  AND (tpjs.fc = 0 OR i_h.fc > 0)
+GROUP BY
+  i.annee_id,
+  i.id,
+  tpj.id;
+
+-- V_TBL_PIECE_JOINTE_FOURNIE
+CREATE OR REPLACE FORCE VIEW "V_TBL_PIECE_JOINTE_FOURNIE" ("ANNEE_ID", "TYPE_PIECE_JOINTE_ID", "INTERVENANT_ID", "PIECE_JOINTE_ID", "VALIDATION_ID", "FICHIER_ID") AS
+  SELECT
+  i.annee_id,
+  pj.type_piece_jointe_id,
+  pj.intervenant_id,
+  pj.id piece_jointe_id,
+  v.id validation_id,
+  f.id fichier_id
+FROM
+            piece_jointe          pj
+       JOIN intervenant            i ON i.id = pj.intervenant_id
+                                    AND i.histo_destruction IS NULL
+
+       JOIN piece_jointe_fichier pjf ON pjf.piece_jointe_id = pj.id
+       JOIN fichier                f ON f.id = pjf.fichier_id
+                                    AND f.histo_destruction IS NULL
+
+  LEFT JOIN validation             v ON v.id = pj.validation_id
+                                    AND v.histo_destruction IS NULL
+WHERE
+  pj.histo_destruction IS NULL;
+
+-- V_TBL_SERVICE
+CREATE OR REPLACE FORCE VIEW "V_TBL_SERVICE" ("ANNEE_ID", "INTERVENANT_ID", "INTERVENANT_STRUCTURE_ID", "STRUCTURE_ID", "TYPE_INTERVENANT_ID", "TYPE_INTERVENANT_CODE", "PEUT_SAISIR_SERVICE", "ELEMENT_PEDAGOGIQUE_ID", "SERVICE_ID", "ELEMENT_PEDAGOGIQUE_PERIODE_ID", "ETAPE_ID", "TYPE_VOLUME_HORAIRE_ID", "TYPE_VOLUME_HORAIRE_CODE", "ELEMENT_PEDAGOGIQUE_HISTO", "ETAPE_HISTO", "HAS_HEURES_MAUVAISE_PERIODE", "NBVH", "HEURES", "VALIDE") AS
+  WITH t AS (
+SELECT
+  s.id                                                                                      service_id,
+  s.intervenant_id                                                                          intervenant_id,
+  ep.structure_id                                                                           structure_id,
+  ep.id                                                                                     element_pedagogique_id,
+  ep.periode_id                                                                             element_pedagogique_periode_id,
+  etp.id                                                                                    etape_id,
+
+  vh.type_volume_horaire_id                                                                 type_volume_horaire_id,
+  vh.heures                                                                                 heures,
+  tvh.code                                                                                  type_volume_horaire_code,
+
+  CASE WHEN ep.histo_destruction IS NULL THEN 1 ELSE 0 END                                  element_pedagogique_histo,
+  CASE WHEN etp.histo_destruction IS NULL OR cp.id IS NOT NULL THEN 1 ELSE 0 END            etape_histo,
+
+  CASE WHEN ep.periode_id IS NOT NULL THEN
+    SUM( CASE WHEN vh.periode_id <> ep.periode_id THEN 1 ELSE 0 END ) OVER( PARTITION BY vh.service_id, vh.periode_id, vh.type_volume_horaire_id, vh.type_intervention_id )
+  ELSE 0 END has_heures_mauvaise_periode,
+
+  CASE WHEN v.id IS NULL THEN 0 ELSE 1 END valide
+FROM
+  service                                       s
+  LEFT JOIN element_pedagogique                ep ON ep.id = s.element_pedagogique_id
+  LEFT JOIN etape                             etp ON etp.id = ep.etape_id
+  LEFT JOIN chemin_pedagogique                 cp ON cp.etape_id = etp.id
+                                                 AND cp.element_pedagogique_id = ep.id
+                                                 AND cp.histo_destruction IS NULL
+
+       JOIN volume_horaire                     vh ON vh.service_id = s.id
+                                                 AND vh.histo_destruction IS NULL
+
+       JOIN type_volume_horaire               tvh ON tvh.id = vh.type_volume_horaire_id
+
+  LEFT JOIN validation_vol_horaire            vvh ON vvh.volume_horaire_id = vh.id
+
+  LEFT JOIN validation                          v ON v.id = vvh.validation_id
+                                                 AND v.histo_destruction IS NULL
+WHERE
+  s.histo_destruction IS NULL
+)
+SELECT
+  i.annee_id                                                                                annee_id,
+  i.id                                                                                      intervenant_id,
+  i.structure_id                                                                            intervenant_structure_id,
+  NVL( t.structure_id, i.structure_id )                                                     structure_id,
+  ti.id                                                                                     type_intervenant_id,
+  ti.code                                                                                   type_intervenant_code,
+  si.peut_saisir_service                                                                    peut_saisir_service,
+
+  t.element_pedagogique_id,
+  t.service_id,
+  t.element_pedagogique_periode_id,
+  t.etape_id,
+  t.type_volume_horaire_id,
+  t.type_volume_horaire_code,
+  t.element_pedagogique_histo,
+  t.etape_histo,
+
+  CASE WHEN SUM(t.has_heures_mauvaise_periode) > 0 THEN 1 ELSE 0 END has_heures_mauvaise_periode,
+
+  CASE WHEN type_volume_horaire_id IS NULL THEN 0 ELSE count(*) END nbvh,
+  CASE WHEN type_volume_horaire_id IS NULL THEN 0 ELSE sum(t.heures) END heures,
+  sum(valide) valide
+FROM
+  t
+  JOIN intervenant                              i ON i.id = t.intervenant_id
+  JOIN statut_intervenant                      si ON si.id = i.statut_id
+  JOIN type_intervenant                        ti ON ti.id = si.type_intervenant_id
+GROUP BY
+  i.annee_id,
+  i.id,
+  i.structure_id,
+  t.structure_id,
+  i.structure_id,
+  ti.id,
+  ti.code,
+  si.peut_saisir_service,
+  t.element_pedagogique_id,
+  t.service_id,
+  t.element_pedagogique_periode_id,
+  t.etape_id,
+  t.type_volume_horaire_id,
+  t.type_volume_horaire_code,
+  t.element_pedagogique_histo,
+  t.etape_histo;
+
+-- V_TBL_SERVICE_REFERENTIEL
+CREATE OR REPLACE FORCE VIEW "V_TBL_SERVICE_REFERENTIEL" ("ANNEE_ID", "INTERVENANT_ID", "PEUT_SAISIR_SERVICE", "TYPE_VOLUME_HORAIRE_ID", "STRUCTURE_ID", "NBVH", "VALIDE") AS
+  WITH t AS (
+
+  SELECT
+    i.annee_id,
+    i.id intervenant_id,
+    si.peut_saisir_referentiel peut_saisir_service,
+    vh.type_volume_horaire_id,
+    s.structure_id,
+    CASE WHEN v.id IS NULL THEN 0 ELSE 1 END valide
+  FROM
+              intervenant                     i
+
+         JOIN statut_intervenant          si ON si.id = i.statut_id
+
+    LEFT JOIN service_referentiel          s ON s.intervenant_id = i.id
+                                            AND s.histo_destruction IS NULL
+
+    LEFT JOIN volume_horaire_ref          vh ON vh.service_referentiel_id = s.id
+                                            AND vh.histo_destruction IS NULL
+
+    LEFT JOIN validation_vol_horaire_ref vvh ON vvh.volume_horaire_ref_id = vh.id
+
+    LEFT JOIN validation                   v ON v.id = vvh.validation_id
+                                            AND v.histo_destruction IS NULL
+  WHERE
+    i.histo_destruction IS NULL
+
+)
+SELECT
+  annee_id,
+  intervenant_id,
+  peut_saisir_service,
+  type_volume_horaire_id,
+  structure_id,
+  CASE WHEN type_volume_horaire_id IS NULL THEN 0 ELSE count(*) END nbvh,
+  sum(valide) valide
+FROM
+  t
+WHERE
+  NOT (structure_id IS NOT NULL AND type_volume_horaire_id IS NULL)
+GROUP BY
+  annee_id,
+  intervenant_id,
+  peut_saisir_service,
+  type_volume_horaire_id,
+  structure_id;
+
+-- V_TBL_SERVICE_SAISIE
+CREATE OR REPLACE FORCE VIEW "V_TBL_SERVICE_SAISIE" ("ANNEE_ID", "INTERVENANT_ID", "PEUT_SAISIR_SERVICE", "PEUT_SAISIR_REFERENTIEL", "HEURES_SERVICE_PREV", "HEURES_REFERENTIEL_PREV", "HEURES_SERVICE_REAL", "HEURES_REFERENTIEL_REAL") AS
+  SELECT
+  i.annee_id,
+  i.id intervenant_id,
+  si.peut_saisir_service,
+  si.peut_saisir_referentiel,
+  SUM( CASE WHEN tvhs.code = 'PREVU'   THEN NVL(vh .heures,0) ELSE 0 END ) heures_service_prev,
+  SUM( CASE WHEN tvhs.code = 'PREVU'   THEN NVL(vhr.heures,0) ELSE 0 END ) heures_referentiel_prev,
+  SUM( CASE WHEN tvhs.code = 'REALISE' THEN NVL(vh .heures,0) ELSE 0 END ) heures_service_real,
+  SUM( CASE WHEN tvhs.code = 'REALISE' THEN NVL(vhr.heures,0) ELSE 0 END ) heures_referentiel_real
+FROM
+  intervenant i
+  JOIN statut_intervenant si ON si.id = i.statut_id
+  LEFT JOIN service s ON s.intervenant_id = i.id AND s.histo_destruction IS NULL
+  LEFT JOIN volume_horaire vh ON vh.service_id = s.id AND vh.histo_destruction IS NULL
+  LEFT JOIN type_volume_horaire tvhs ON tvhs.id = vh.type_volume_horaire_id
+
+  LEFT JOIN service_referentiel sr ON sr.intervenant_id = i.id AND sr.histo_destruction IS NULL
+  LEFT JOIN volume_horaire_ref vhr ON vhr.service_referentiel_id = sr.id AND vhr.histo_destruction IS NULL
+  LEFT JOIN type_volume_horaire tvhrs ON tvhrs.id = vhr.type_volume_horaire_id
+WHERE
+  i.histo_destruction IS NULL
+GROUP BY
+  i.annee_id,
+  i.id,
+  si.peut_saisir_service,
+  si.peut_saisir_referentiel;
+
+-- V_TBL_VALIDATION_ENSEIGNEMENT
+CREATE OR REPLACE FORCE VIEW "V_TBL_VALIDATION_ENSEIGNEMENT" ("ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID", "TYPE_VOLUME_HORAIRE_ID", "SERVICE_ID", "VOLUME_HORAIRE_ID", "VALIDATION_ID") AS
+  SELECT DISTINCT
+  i.annee_id,
+  i.id intervenant_id,
+  CASE WHEN rsv.priorite = 'affectation' THEN
+    COALESCE( i.structure_id, ep.structure_id )
+  ELSE
+    COALESCE( ep.structure_id, i.structure_id )
+  END structure_id,
+  vh.type_volume_horaire_id,
+  s.id service_id,
+  vh.id volume_horaire_id,
+  v.id validation_id
+FROM
+  service s
+  JOIN volume_horaire vh ON vh.service_id = s.id AND vh.histo_destruction IS NULL
+  JOIN intervenant i ON i.id = s.intervenant_id AND i.histo_destruction IS NULL
+  JOIN statut_intervenant si ON si.id = i.statut_id
+  JOIN regle_structure_validation rsv ON rsv.type_intervenant_id = si.type_intervenant_id AND rsv.type_volume_horaire_id = vh.type_volume_horaire_id
+  LEFT JOIN element_pedagogique ep ON ep.id = s.element_pedagogique_id
+  LEFT JOIN validation_vol_horaire vvh ON vvh.volume_horaire_id = vh.id
+  LEFT JOIN validation v ON v.id = vvh.validation_id AND v.histo_destruction IS NULL
+WHERE
+  s.histo_destruction IS NULL;
+
+-- V_TBL_VALIDATION_REFERENTIEL
+CREATE OR REPLACE FORCE VIEW "V_TBL_VALIDATION_REFERENTIEL" ("ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID", "TYPE_VOLUME_HORAIRE_ID", "SERVICE_REFERENTIEL_ID", "VOLUME_HORAIRE_REF_ID", "VALIDATION_ID") AS
+  SELECT DISTINCT
+  i.annee_id,
+  i.id intervenant_id,
+  CASE WHEN rsv.priorite = 'affectation' THEN
+    COALESCE( i.structure_id, s.structure_id )
+  ELSE
+    COALESCE( s.structure_id, i.structure_id )
+  END structure_id,
+  vh.type_volume_horaire_id,
+  s.id service_referentiel_id,
+  vh.id volume_horaire_ref_id,
+  v.id validation_id
+FROM
+  service_referentiel s
+  JOIN volume_horaire_ref vh ON vh.service_referentiel_id = s.id AND vh.histo_destruction IS NULL
+  JOIN intervenant i ON i.id = s.intervenant_id AND i.histo_destruction IS NULL
+  JOIN statut_intervenant si ON si.id = i.statut_id
+  JOIN regle_structure_validation rsv ON rsv.type_intervenant_id = si.type_intervenant_id AND rsv.type_volume_horaire_id = vh.type_volume_horaire_id
+  LEFT JOIN validation_vol_horaire_ref vvh ON vvh.volume_horaire_ref_id = vh.id
+  LEFT JOIN validation v ON v.id = vvh.validation_id AND v.histo_destruction IS NULL
+WHERE
+  s.histo_destruction IS NULL;
+
+-- V_TBL_VOLUME_HORAIRE
+CREATE OR REPLACE FORCE VIEW "V_TBL_VOLUME_HORAIRE" ("ANNEE_ID", "INTERVENANT_ID", "INTERVENANT_STRUCTURE_ID", "STRUCTURE_ID", "TYPE_INTERVENANT_ID", "SERVICE_ID", "VOLUME_HORAIRE_ID", "TYPE_INTERVENTION_ID", "MOTIF_NON_PAIEMENT_ID", "VOLUME_HORAIRE_PERIODE_ID", "TYPE_VOLUME_HORAIRE_ID", "ETAT_VOLUME_HORAIRE_ID", "ELEMENT_PEDAGOGIQUE_ID", "ELEMENT_PEDAGOGIQUE_PERIODE_ID", "ETAPE_ID", "TYPE_INTERVENANT_CODE", "TYPE_VOLUME_HORAIRE_CODE", "ETAT_VOLUME_HORAIRE_CODE", "PEUT_SAISIR_SERVICE", "HEURES", "ELEMENT_PEDAGOGIQUE_HISTO", "ETAPE_HISTO", "PERIODE_CORRESP") AS
+  WITH has_cp AS (
+SELECT
+  etape_id
+FROM
+  chemin_pedagogique cp
+WHERE
+  cp.histo_destruction IS NULL
+GROUP BY
+  etape_id
+)
+SELECT
+  i.annee_id                                                                                annee_id,
+  i.id                                                                                      intervenant_id,
+  i.structure_id                                                                            intervenant_structure_id,
+  NVL(ep.structure_id, i.structure_id)                                                      structure_id,
+  ti.id                                                                                     type_intervenant_id,
+  s.id                                                                                      service_id,
+  vh.id                                                                                     volume_horaire_id,
+  vh.type_intervention_id                                                                   type_intervention_id,
+  vh.motif_non_paiement_id                                                                  motif_non_paiement_id,
+  vh.periode_id                                                                             volume_horaire_periode_id,
+  tvh.id                                                                                    type_volume_horaire_id,
+  evh.id                                                                                    etat_volume_horaire_id,
+  ep.id                                                                                     element_pedagogique_id,
+  ep.periode_id                                                                             element_pedagogique_periode_id,
+  etp.id                                                                                    etape_id,
+
+  ti.code                                                                                   type_intervenant_code,
+  tvh.code                                                                                  type_volume_horaire_code,
+  evh.code                                                                                  etat_volume_horaire_code,
+  si.peut_saisir_service                                                                    peut_saisir_service,
+  vh.heures                                                                                 heures,
+
+  CASE WHEN ep.histo_destruction IS NULL THEN 1 ELSE 0 END                                  element_pedagogique_histo,
+  CASE WHEN etp.histo_destruction IS NULL OR has_cp.etape_id IS NOT NULL THEN 1 ELSE 0 END  etape_histo,
+  CASE WHEN ep.periode_id IS NOT NULL AND vh.periode_id <> ep.periode_id THEN 0 ELSE 1 END  periode_corresp
+
+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 service                                  s ON s.intervenant_id = i.id
+                                                 AND s.histo_destruction IS NULL
+  JOIN element_pedagogique                     ep ON ep.id = s.element_pedagogique_id
+  JOIN etape                                  etp ON etp.id = ep.etape_id
+  JOIN volume_horaire                          vh ON vh.service_id = s.id
+                                                 AND vh.histo_destruction IS NULL
+  JOIN type_volume_horaire                    tvh ON tvh.id = vh.type_volume_horaire_id
+  JOIN v_volume_horaire_etat                  vhe ON vhe.volume_horaire_id = vh.id
+  JOIN etat_volume_horaire                    evh ON evh.id = vhe.etat_volume_horaire_id
+  LEFT JOIN has_cp                                ON has_cp.etape_id = etp.id
+WHERE
+  i.histo_destruction IS NULL;
+
+-- V_TBL_WORKFLOW
+CREATE OR REPLACE FORCE VIEW "V_TBL_WORKFLOW" ("ETAPE_CODE", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID", "OBJECTIF", "REALISATION") AS
+  WITH pj AS (
+  SELECT
+    annee_id,
+    intervenant_id,
+    SUM(demandee) demandees,
+    SUM(fournie)  fournies,
+    SUM(validee)  validees
+  FROM
+    tbl_piece_jointe
+  WHERE
+    1 = OSE_WORKFLOW.match_intervenant(intervenant_id)
+    AND demandee > 0
+  GROUP BY
+    annee_id,
+    intervenant_id
+),
+mep AS (
+  SELECT
+    annee_id,
+    intervenant_id,
+    structure_id,
+    SUM(heures_a_payer / heures_a_payer_pond) sap,
+    SUM(heures_demandees) dmep,
+    SUM(heures_payees) mep
+    --COUNT(*)  sap,
+    --SUM(CASE WHEN mise_en_paiement_id IS NULL THEN 0 ELSE 1 END) dmep,
+    --SUM(CASE WHEN periode_paiement_id IS NULL THEN 0 ELSE 1 END) mep
+  FROM
+    tbl_paiement
+  WHERE
+    1 = OSE_WORKFLOW.match_intervenant(intervenant_id)
+  GROUP BY
+    annee_id,
+    intervenant_id,
+    structure_id
+)
+SELECT
+  e.code                                                    etape_code,
+  d.annee_id                                                annee_id,
+  d.intervenant_id                                          intervenant_id,
+  null                                                      structure_id,
+  1                                                         objectif,
+  CASE
+    WHEN e.code = 'DONNEES_PERSO_SAISIE' THEN
+      CASE WHEN d.dossier_id IS NULL THEN 0 ELSE 1 END
+
+    WHEN e.code = 'DONNEES_PERSO_VALIDATION' THEN
+      CASE WHEN d.validation_id IS NULL THEN 0 ELSE 1 END
+
+  END                                                       realisation
+FROM
+  tbl_dossier d
+  JOIN (
+          SELECT 'DONNEES_PERSO_SAISIE'     code FROM dual
+    UNION SELECT 'DONNEES_PERSO_VALIDATION' code FROM dual
+  ) e ON 1=1
+WHERE
+  d. peut_saisir_dossier = 1
+  AND 1 = OSE_WORKFLOW.match_intervenant(d.intervenant_id)
+
+UNION ALL
+
+SELECT
+  e.code                                                    etape_code,
+  tss.annee_id                                              annee_id,
+  tss.intervenant_id                                        intervenant_id,
+  NULL                                                      structure_id,
+  1                                                         objectif,
+  CASE
+    WHEN e.code = 'SERVICE_SAISIE' THEN
+      CASE WHEN tss.heures_service_prev + tss.heures_referentiel_prev > 0 THEN 1 ELSE 0 END
+
+    WHEN e.code = 'SERVICE_SAISIE_REALISE' THEN
+      CASE WHEN tss.heures_service_real + tss.heures_referentiel_real > 0 THEN 1 ELSE 0 END
+
+  END                                                       realisation
+FROM
+  TBL_SERVICE_SAISIE tss
+  JOIN (
+          SELECT 'SERVICE_SAISIE'                 code FROM dual
+    UNION SELECT 'SERVICE_SAISIE_REALISE'         code FROM dual
+  ) e ON 1=1
+WHERE
+  (tss.peut_saisir_service = 1 OR tss.peut_saisir_referentiel = 1)
+  AND 1 = OSE_WORKFLOW.match_intervenant(tss.intervenant_id)
+
+UNION ALL
+
+SELECT
+  CASE
+    WHEN tvh.code = 'PREVU'   THEN 'SERVICE_VALIDATION'
+    WHEN tvh.code = 'REALISE' THEN 'SERVICE_VALIDATION_REALISE'
+  END                                                        etape_code,
+  tve.annee_id                                               annee_id,
+  tve.intervenant_id                                         intervenant_id,
+  tve.structure_id                                           structure_id,
+  COUNT(*)                                                   objectif,
+  SUM(CASE WHEN tve.validation_id IS NOT NULL THEN 1 ELSE 0 END) realisation
+FROM
+  tbl_validation_enseignement tve
+  JOIN type_volume_horaire tvh ON tvh.id = tve.type_volume_horaire_id
+WHERE
+  1 = OSE_WORKFLOW.match_intervenant(tve.intervenant_id)
+GROUP BY
+  tve.annee_id,
+  tve.intervenant_id,
+  tve.structure_id,
+  tvh.code
+
+UNION ALL
+
+SELECT
+  CASE
+    WHEN tvh.code = 'PREVU'   THEN 'REFERENTIEL_VALIDATION'
+    WHEN tvh.code = 'REALISE' THEN 'REFERENTIEL_VALIDATION_REALISE'
+  END                                                        etape_code,
+  tvr.annee_id                                               annee_id,
+  tvr.intervenant_id                                         intervenant_id,
+  tvr.structure_id                                           structure_id,
+  count(*)                                                   objectif,
+  SUM(CASE WHEN tvr.validation_id IS NOT NULL THEN 1 ELSE 0 END) realisation
+FROM
+  tbl_validation_referentiel tvr
+  JOIN type_volume_horaire tvh ON tvh.id = tvr.type_volume_horaire_id
+WHERE
+  1 = OSE_WORKFLOW.match_intervenant(tvr.intervenant_id)
+GROUP BY
+  tvr.annee_id,
+  tvr.intervenant_id,
+  tvr.structure_id,
+  tvh.code
+
+UNION ALL
+
+SELECT
+  e.code                                                    etape_code,
+  pj.annee_id                                               annee_id,
+  pj.intervenant_id                                         intervenant_id,
+  null                                                      structure_id,
+  CASE
+    WHEN e.code = 'PJ_SAISIE' THEN pj.demandees
+    WHEN e.code = 'PJ_VALIDATION' THEN pj.demandees
+  END                                                       objectif,
+  CASE
+    WHEN e.code = 'PJ_SAISIE' THEN pj.fournies
+    WHEN e.code = 'PJ_VALIDATION' THEN pj.validees
+  END                                                       realisation
+FROM
+  pj
+  JOIN (
+          SELECT 'PJ_SAISIE'      code FROM dual
+    UNION SELECT 'PJ_VALIDATION'  code FROM dual
+  ) e ON (
+       (e.code = 'PJ_SAISIE'     AND pj.demandees > 0)
+    OR (e.code = 'PJ_VALIDATION' AND pj.fournies  > 0)
+  )
+
+UNION ALL
+
+SELECT
+  ta.code                                                   etape_code,
+  a.annee_id                                                annee_id,
+  a.intervenant_id                                          intervenant_id,
+  a.structure_id                                            structure_id,
+  1                                                         objectif,
+  CASE WHEN a.agrement_id IS NULL THEN 0 ELSE 1 END         realisation
+FROM
+  tbl_agrement a
+  JOIN type_agrement ta ON ta.id = a.type_agrement_id
+WHERE
+  1 = OSE_WORKFLOW.match_intervenant(a.intervenant_id)
+
+UNION ALL
+
+SELECT
+  'CLOTURE_REALISE'                                         etape_code,
+  c.annee_id                                                annee_id,
+  c.intervenant_id                                          intervenant_id,
+  null                                                      structure_id,
+  1                                                         objectif,
+  c.cloture                                                 realisation
+FROM
+  tbl_cloture_realise c
+WHERE
+  c.peut_cloturer_saisie = 1
+  AND 1 = OSE_WORKFLOW.match_intervenant(c.intervenant_id)
+
+UNION ALL
+
+SELECT
+  e.code                                                    etape_code,
+  mep.annee_id                                              annee_id,
+  mep.intervenant_id                                        intervenant_id,
+  mep.structure_id                                          structure_id,
+  CASE
+    WHEN e.code = 'DEMANDE_MEP' THEN mep.sap
+    WHEN e.code = 'SAISIE_MEP' THEN mep.dmep
+  END                                                       objectif,
+  CASE
+    WHEN e.code = 'DEMANDE_MEP' THEN mep.dmep
+    WHEN e.code = 'SAISIE_MEP' THEN mep.mep
+  END                                                       realisation
+FROM
+  mep
+  JOIN (
+          SELECT 'DEMANDE_MEP'  code FROM dual
+    UNION SELECT 'SAISIE_MEP'   code FROM dual
+  ) e ON (
+       (e.code = 'DEMANDE_MEP' AND mep.sap > 0)
+    OR (e.code = 'SAISIE_MEP'  AND mep.dmep > 0)
+  )
+
+
+UNION ALL
+
+SELECT
+  'CONTRAT'                                                 etape_code,
+  annee_id                                                  annee_id,
+  intervenant_id                                            intervenant_id,
+  structure_id                                              structure_id,
+  nbvh                                                      objectif,
+  edite                                                     realisation
+FROM
+  tbl_contrat c
+WHERE
+  peut_avoir_contrat = 1
+  AND nbvh > 0
+  AND 1 = OSE_WORKFLOW.match_intervenant(c.intervenant_id);
+
+-- V_TOTAL_DEMANDE_MEP_STRUCTURE
+CREATE OR REPLACE FORCE VIEW "V_TOTAL_DEMANDE_MEP_STRUCTURE" ("INTERVENANT_ID", "STRUCTURE_ID", "TOTAL_HEURES_MEP") AS
+  with mep as (
+  -- enseignements
+  select
+    fr.intervenant_id,
+    nvl(ep.structure_id, i.structure_id) structure_id,
+    nvl(mep.heures, 0) mep_heures
+  from mise_en_paiement mep
+  join formule_resultat_service frs on mep.formule_res_service_id = frs.id --and mep.date_mise_en_paiement is null -- date_mise_en_paiement is null <=> demande
+  join formule_resultat fr on frs.formule_resultat_id = fr.id
+  join intervenant i on fr.intervenant_id = i.id
+  join service s on frs.service_id = s.id
+  left join element_pedagogique ep on s.element_pedagogique_id = ep.id and ep.histo_destruction IS NULL
+  where mep.histo_destruction IS NULL
+  union all
+  -- referentiel
+  select
+    fr.intervenant_id,
+    s.structure_id,
+    nvl(mep.heures, 0) mep_heures
+  from mise_en_paiement mep
+  join formule_resultat_service_ref frs on mep.formule_res_service_ref_id = frs.id --and mep.date_mise_en_paiement is null -- date_mise_en_paiement is null <=> demande
+  join formule_resultat fr on frs.formule_resultat_id = fr.id
+  join intervenant i on fr.intervenant_id = i.id
+  join service_referentiel s on frs.service_referentiel_id = s.id
+  where mep.histo_destruction IS NULL
+)
+select intervenant_id, structure_id, sum(nvl(mep_heures, 0)) total_heures_mep from mep
+group by intervenant_id, structure_id;
+
+-- V_VALIDATION_MISE_EN_PAIEMENT
+CREATE OR REPLACE FORCE VIEW "V_VALIDATION_MISE_EN_PAIEMENT" ("VALIDATION_ID", "MISE_EN_PAIEMENT_ID") AS
+  SELECT
+  vvh.validation_id,
+  mep.id mise_en_paiement_id
+FROM
+  validation_vol_horaire vvh
+  JOIN volume_horaire vh ON vh.id = vvh.volume_horaire_id
+  JOIN formule_resultat_service frs ON frs.service_id = vh.service_id
+  JOIN mise_en_paiement mep ON mep.formule_res_service_id = frs.id
+
+UNION
+
+SELECT
+  vvh.validation_id,
+  mep.id mise_en_paiement_id
+FROM
+  validation_vol_horaire_ref vvh
+  JOIN volume_horaire_ref vh ON vh.id = vvh.volume_horaire_ref_id
+  JOIN formule_resultat_service_ref frs ON frs.service_referentiel_id = vh.service_referentiel_id
+  JOIN mise_en_paiement mep ON mep.formule_res_service_ref_id = frs.id;
+
+-- V_VOLUME_HORAIRE_ETAT
+CREATE OR REPLACE FORCE VIEW "V_VOLUME_HORAIRE_ETAT" ("VOLUME_HORAIRE_ID", "ETAT_VOLUME_HORAIRE_ID") AS
+  SELECT
+  vh.id volume_horaire_id,
+  evh.id etat_volume_horaire_id
+FROM
+  volume_horaire vh
+  LEFT JOIN contrat c ON c.id = vh.contrat_id AND c.histo_destruction IS NULL
+  LEFT JOIN validation cv ON cv.id = c.validation_id AND cv.histo_destruction IS NULL
+  JOIN etat_volume_horaire evh ON evh.code = CASE
+    WHEN c.date_retour_signe IS NOT NULL THEN 'contrat-signe'
+    WHEN cv.id IS NOT NULL THEN 'contrat-edite'
+    WHEN EXISTS(
+      SELECT * FROM validation v JOIN validation_vol_horaire vvh ON vvh.validation_id = v.id
+      WHERE vvh.volume_horaire_id = vh.id AND v.histo_destruction IS NULL
+    ) THEN 'valide'
+    ELSE 'saisi'
+    END;
+
+-- V_VOLUME_HORAIRE_REF_ETAT
+CREATE OR REPLACE FORCE VIEW "V_VOLUME_HORAIRE_REF_ETAT" ("VOLUME_HORAIRE_REF_ID", "ETAT_VOLUME_HORAIRE_ID") AS
+  SELECT
+  vhr.id volume_horaire_ref_id,
+  evh.id etat_volume_horaire_id
+FROM
+  volume_horaire_ref vhr
+  JOIN etat_volume_horaire evh ON evh.code = CASE
+    WHEN EXISTS(
+      SELECT * FROM validation v JOIN validation_vol_horaire_ref vvhr ON vvhr.validation_id = v.id
+      WHERE vvhr.volume_horaire_ref_id = vhr.id AND v.histo_destruction IS NULL
+    ) THEN 'valide'
+    ELSE 'saisi'
+  END;
+
+-- V_VOL_HORAIRE_ETAT_MULTI
+CREATE OR REPLACE FORCE VIEW "V_VOL_HORAIRE_ETAT_MULTI" ("VOLUME_HORAIRE_ID", "ETAT_VOLUME_HORAIRE_ID") AS
+  select vh.id VOLUME_HORAIRE_ID, evh.id ETAT_VOLUME_HORAIRE_ID
+  from volume_horaire vh
+  join service s on s.id = vh.service_id and s.histo_destruction IS NULL
+  join etat_volume_horaire evh on evh.code = 'saisi'
+  where vh.histo_destruction IS NULL
+union all
+  select vh.id, evh.id
+  from volume_horaire vh
+  join service s on s.id = vh.service_id and s.histo_destruction IS NULL
+  join etat_volume_horaire evh on evh.code = 'valide'
+  where vh.histo_destruction IS NULL
+  and EXISTS(
+    SELECT * FROM validation v JOIN validation_vol_horaire vvh ON vvh.validation_id = v.id
+    WHERE vvh.volume_horaire_id = vh.id AND v.histo_destruction IS NULL
+  )
+union all
+  select vh.id, evh.id
+  from volume_horaire vh
+  join service s on s.id = vh.service_id and s.histo_destruction IS NULL
+  join contrat c on vh.contrat_id = c.id and c.histo_destruction IS NULL
+  join etat_volume_horaire evh on evh.code = 'contrat-edite'
+  where vh.histo_destruction IS NULL
+union all
+  select vh.id, evh.id
+  from volume_horaire vh
+  join service s on s.id = vh.service_id and s.histo_destruction IS NULL
+  join contrat c on vh.contrat_id = c.id and c.histo_destruction IS NULL and c.date_retour_signe is not null
+  join etat_volume_horaire evh on evh.code = 'contrat-signe'
+  where vh.histo_destruction IS NULL;
+
+-- V_VOL_HORAIRE_REF_ETAT_MULTI
+CREATE OR REPLACE FORCE VIEW "V_VOL_HORAIRE_REF_ETAT_MULTI" ("VOLUME_HORAIRE_REF_ID", "ETAT_VOLUME_HORAIRE_ID") AS
+  select vh.id VOLUME_HORAIRE_REF_ID, evh.id ETAT_VOLUME_HORAIRE_ID
+  from volume_horaire_ref vh
+  join service_referentiel s on s.id = vh.service_referentiel_id and s.histo_destruction IS NULL
+  join etat_volume_horaire evh on evh.code = 'saisi'
+  where vh.histo_destruction IS NULL
+union all
+  select vh.id, evh.id
+  from volume_horaire_ref vh
+  join service_referentiel s on s.id = vh.service_referentiel_id and s.histo_destruction IS NULL
+  join etat_volume_horaire evh on evh.code = 'valide'
+  where vh.histo_destruction IS NULL
+  and EXISTS(
+    SELECT * FROM validation v JOIN validation_vol_horaire_ref vvh ON vvh.validation_id = v.id
+    WHERE vvh.volume_horaire_ref_id = vh.id AND v.histo_destruction IS NULL
+  );
+
+-- V_WORKFLOW_ETAPE_PERTINENTE
+CREATE OR REPLACE FORCE VIEW "V_WORKFLOW_ETAPE_PERTINENTE" ("ANNEE_ID", "INTERVENANT_ID", "ETAPE_CODE") AS
+  WITH peut_pj AS (
+  SELECT DISTINCT
+    statut_intervenant_id,
+    1 tem
+  FROM
+    type_piece_jointe_statut tpjs
+  WHERE
+    tpjs.histo_destruction IS NULL
+),
+peut_agr AS (
+  SELECT
+    tas.statut_intervenant_id,
+    ta.code,
+    tas.premier_recrutement
+  FROM
+    type_agrement_statut tas
+    JOIN type_agrement ta ON ta.id = tas.type_agrement_id
+  WHERE
+    tas.histo_destruction IS NULL
+)
+SELECT
+  i.annee_id annee_id,
+  i.id intervenant_id,
+  e.code etape_code
+FROM
+            intervenant i
+       JOIN statut_intervenant si ON si.id = i.statut_id
+  LEFT JOIN peut_pj ON peut_pj.statut_intervenant_id = si.id
+  LEFT JOIN peut_agr peut_cr ON peut_cr.code = 'CONSEIL_RESTREINT'  AND peut_cr.statut_intervenant_id = si.id AND (peut_cr.premier_recrutement IS NULL OR NVL(i.premier_recrutement,0) = peut_cr.premier_recrutement)
+  LEFT JOIN peut_agr peut_ca ON peut_ca.code = 'CONSEIL_ACADEMIQUE' AND peut_ca.statut_intervenant_id = si.id AND (peut_ca.premier_recrutement IS NULL OR NVL(i.premier_recrutement,0) = peut_ca.premier_recrutement)
+       JOIN wf_etape e ON 1 = CASE e.code
+
+    WHEN 'DONNEES_PERSO_SAISIE' THEN
+      si.peut_saisir_dossier
+
+    WHEN 'SERVICE_SAISIE' THEN
+      CASE WHEN si.peut_saisir_service + si.peut_saisir_referentiel = 0 THEN 0 ELSE 1 END
+
+    WHEN 'PJ_SAISIE' THEN
+      peut_pj.tem
+
+    WHEN 'PJ_VALIDATION' THEN
+      peut_pj.tem
+
+    WHEN 'DONNEES_PERSO_VALIDATION' THEN
+      si.peut_saisir_dossier
+
+    WHEN 'SERVICE_VALIDATION' THEN
+      si.peut_saisir_service
+
+    WHEN 'REFERENTIEL_VALIDATION' THEN
+      si.peut_saisir_referentiel
+
+    WHEN 'CONSEIL_RESTREINT' THEN
+      CASE WHEN peut_cr.code IS NULL THEN 0 ELSE 1 END
+
+    WHEN 'CONSEIL_ACADEMIQUE' THEN
+      CASE WHEN peut_ca.code IS NULL THEN 0 ELSE 1 END
+
+    WHEN 'CONTRAT' THEN
+      si.peut_avoir_contrat
+
+    WHEN 'SERVICE_SAISIE_REALISE' THEN
+      CASE WHEN si.peut_saisir_service + si.peut_saisir_referentiel = 0 THEN 0 ELSE 1 END
+
+    WHEN 'CLOTURE_REALISE' THEN
+      si.peut_cloturer_saisie
+
+    WHEN 'SERVICE_VALIDATION_REALISE' THEN
+      si.peut_saisir_service
+
+    WHEN 'REFERENTIEL_VALIDATION_REALISE' THEN
+      si.peut_saisir_referentiel
+
+    WHEN 'DEMANDE_MEP' THEN
+      CASE WHEN si.peut_saisir_service + si.peut_saisir_referentiel = 0 THEN 0 ELSE 1 END
+
+    WHEN 'SAISIE_MEP' THEN
+      CASE WHEN si.peut_saisir_service + si.peut_saisir_referentiel = 0 THEN 0 ELSE 1 END
+
+  END
+WHERE
+  i.histo_destruction IS NULL;
+
+--------------------------------------------------
+-- mviews
+--------------------------------------------------
+
+-- TBL_NOEUD
+CREATE MATERIALIZED VIEW "TBL_NOEUD" ("NOEUD_ID", "NOEUD_ETAPE_ID", "CODE", "LIBELLE", "ANNEE_ID", "ETAPE_ID", "ELEMENT_PEDAGOGIQUE_ID", "ELEMENT_PEDAGOGIQUE_ETAPE_ID", "STRUCTURE_ID", "GROUPE_TYPE_FORMATION_ID") AS
+SELECT
+  n.id                     noeud_id,
+  en.id                    noeud_etape_id,
+  n.code                   code,
+  n.libelle                libelle,
+  n.annee_id               annee_id,
+  n.etape_id               etape_id,
+  n.element_pedagogique_id element_pedagogique_id,
+  etp.id                   element_pedagogique_etape_id,
+  n.structure_id           structure_id,
+  tf.groupe_id             groupe_type_formation_id
+FROM
+            noeud                n
+  LEFT JOIN element_pedagogique ep ON ep.id = n.element_pedagogique_id
+  LEFT JOIN etape              etp ON etp.id = COALESCE(n.etape_id,ep.etape_id)
+  LEFT JOIN type_formation      tf ON tf.id = etp.type_formation_id
+  LEFT JOIN noeud               en ON en.etape_id = etp.id
+WHERE
+  n.histo_destruction IS NULL;
+
+--------------------------------------------------
+-- constraints
+--------------------------------------------------
+
+-- ADRESSE_INTERVENANT_HCFK
+ALTER TABLE "ADRESSE_INTERVENANT" ADD CONSTRAINT "ADRESSE_INTERVENANT_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- ADRESSE_INTERVENANT_HDFK
+ALTER TABLE "ADRESSE_INTERVENANT" ADD CONSTRAINT "ADRESSE_INTERVENANT_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- ADRESSE_INTERVENANT_HMFK
+ALTER TABLE "ADRESSE_INTERVENANT" ADD CONSTRAINT "ADRESSE_INTERVENANT_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- ADRESSE_INTERVENANT_SOURCE_FK
+ALTER TABLE "ADRESSE_INTERVENANT" ADD CONSTRAINT "ADRESSE_INTERVENANT_SOURCE_FK" FOREIGN KEY ("SOURCE_ID")
+	  REFERENCES "SOURCE" ("ID") ON DELETE CASCADE ENABLE;
+
+-- ADRESSE_STRUCTURE_HCFK
+ALTER TABLE "ADRESSE_STRUCTURE" ADD CONSTRAINT "ADRESSE_STRUCTURE_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- ADRESSE_STRUCTURE_HDFK
+ALTER TABLE "ADRESSE_STRUCTURE" ADD CONSTRAINT "ADRESSE_STRUCTURE_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- ADRESSE_STRUCTURE_HMFK
+ALTER TABLE "ADRESSE_STRUCTURE" ADD CONSTRAINT "ADRESSE_STRUCTURE_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- ADRESSE_STRUCTURE_SOURCE_FK
+ALTER TABLE "ADRESSE_STRUCTURE" ADD CONSTRAINT "ADRESSE_STRUCTURE_SOURCE_FK" FOREIGN KEY ("SOURCE_ID")
+	  REFERENCES "SOURCE" ("ID") ON DELETE CASCADE ENABLE;
+
+-- ADRESSE_STRUCTURE_STRUCTURE_FK
+ALTER TABLE "ADRESSE_STRUCTURE" ADD CONSTRAINT "ADRESSE_STRUCTURE_STRUCTURE_FK" FOREIGN KEY ("STRUCTURE_ID")
+	  REFERENCES "STRUCTURE" ("ID") ON DELETE CASCADE ENABLE;
+
+-- AFFECTATION_HCFK
+ALTER TABLE "AFFECTATION" ADD CONSTRAINT "AFFECTATION_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- AFFECTATION_HDFK
+ALTER TABLE "AFFECTATION" ADD CONSTRAINT "AFFECTATION_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- AFFECTATION_HMFK
+ALTER TABLE "AFFECTATION" ADD CONSTRAINT "AFFECTATION_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- AFFECTATION_ROLE_FK
+ALTER TABLE "AFFECTATION" ADD CONSTRAINT "AFFECTATION_ROLE_FK" FOREIGN KEY ("ROLE_ID")
+	  REFERENCES "ROLE" ("ID") ON DELETE CASCADE ENABLE;
+
+-- AFFECTATION_R_HCFK
+ALTER TABLE "AFFECTATION_RECHERCHE" ADD CONSTRAINT "AFFECTATION_R_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- AFFECTATION_R_HDFK
+ALTER TABLE "AFFECTATION_RECHERCHE" ADD CONSTRAINT "AFFECTATION_R_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- AFFECTATION_R_HMFK
+ALTER TABLE "AFFECTATION_RECHERCHE" ADD CONSTRAINT "AFFECTATION_R_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- AFFECTATION_R_INTERVENANT_FK
+ALTER TABLE "AFFECTATION_RECHERCHE" ADD CONSTRAINT "AFFECTATION_R_INTERVENANT_FK" FOREIGN KEY ("INTERVENANT_ID")
+	  REFERENCES "INTERVENANT" ("ID") ON DELETE CASCADE ENABLE;
+
+-- AFFECTATION_R_SOURCE_FK
+ALTER TABLE "AFFECTATION_RECHERCHE" ADD CONSTRAINT "AFFECTATION_R_SOURCE_FK" FOREIGN KEY ("SOURCE_ID")
+	  REFERENCES "SOURCE" ("ID") ON DELETE CASCADE ENABLE;
+
+-- AFFECTATION_R_STRUCTURE_FK
+ALTER TABLE "AFFECTATION_RECHERCHE" ADD CONSTRAINT "AFFECTATION_R_STRUCTURE_FK" FOREIGN KEY ("STRUCTURE_ID")
+	  REFERENCES "STRUCTURE" ("ID") ENABLE;
+
+-- AFFECTATION_SOURCE_FK
+ALTER TABLE "AFFECTATION" ADD CONSTRAINT "AFFECTATION_SOURCE_FK" FOREIGN KEY ("SOURCE_ID")
+	  REFERENCES "SOURCE" ("ID") ENABLE;
+
+-- AFFECTATION_STRUCTURE_FK
+ALTER TABLE "AFFECTATION" ADD CONSTRAINT "AFFECTATION_STRUCTURE_FK" FOREIGN KEY ("STRUCTURE_ID")
+	  REFERENCES "STRUCTURE" ("ID") ENABLE;
+
+-- AFFECTATION_UTILISATEUR_FK
+ALTER TABLE "AFFECTATION" ADD CONSTRAINT "AFFECTATION_UTILISATEUR_FK" FOREIGN KEY ("UTILISATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- AGREMENTS_STRUCTURES_FK
+ALTER TABLE "AGREMENT" ADD CONSTRAINT "AGREMENTS_STRUCTURES_FK" FOREIGN KEY ("STRUCTURE_ID")
+	  REFERENCES "STRUCTURE" ("ID") ENABLE;
+
+-- AGREMENT_HCFK
+ALTER TABLE "AGREMENT" ADD CONSTRAINT "AGREMENT_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- AGREMENT_HDFK
+ALTER TABLE "AGREMENT" ADD CONSTRAINT "AGREMENT_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- AGREMENT_HMFK
+ALTER TABLE "AGREMENT" ADD CONSTRAINT "AGREMENT_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- AGREMENT_INTERVENANT_FK
+ALTER TABLE "AGREMENT" ADD CONSTRAINT "AGREMENT_INTERVENANT_FK" FOREIGN KEY ("INTERVENANT_ID")
+	  REFERENCES "INTERVENANT" ("ID") ON DELETE CASCADE ENABLE;
+
+-- AGREMENT_TYPE_AGREMENT_FK
+ALTER TABLE "AGREMENT" ADD CONSTRAINT "AGREMENT_TYPE_AGREMENT_FK" FOREIGN KEY ("TYPE_AGREMENT_ID")
+	  REFERENCES "TYPE_AGREMENT" ("ID") ON DELETE CASCADE ENABLE;
+
+-- AII_FK
+ALTER TABLE "ADRESSE_INTERVENANT" ADD CONSTRAINT "AII_FK" FOREIGN KEY ("INTERVENANT_ID")
+	  REFERENCES "INTERVENANT" ("ID") ON DELETE CASCADE ENABLE;
+
+-- CAMPAGNE_SAISIE_ANNEE_FK
+ALTER TABLE "CAMPAGNE_SAISIE" ADD CONSTRAINT "CAMPAGNE_SAISIE_ANNEE_FK" FOREIGN KEY ("ANNEE_ID")
+	  REFERENCES "ANNEE" ("ID") ENABLE;
+
+-- CCEP_CENTRE_COUT_FK
+ALTER TABLE "CENTRE_COUT_EP" ADD CONSTRAINT "CCEP_CENTRE_COUT_FK" FOREIGN KEY ("CENTRE_COUT_ID")
+	  REFERENCES "CENTRE_COUT" ("ID") ON DELETE CASCADE ENABLE;
+
+-- CCEP_ELEMENT_PEDAGOGIQUE_FK
+ALTER TABLE "CENTRE_COUT_EP" ADD CONSTRAINT "CCEP_ELEMENT_PEDAGOGIQUE_FK" FOREIGN KEY ("ELEMENT_PEDAGOGIQUE_ID")
+	  REFERENCES "ELEMENT_PEDAGOGIQUE" ("ID") ON DELETE CASCADE ENABLE;
+
+-- CCEP_SOURCE_FK
+ALTER TABLE "CENTRE_COUT_EP" ADD CONSTRAINT "CCEP_SOURCE_FK" FOREIGN KEY ("SOURCE_ID")
+	  REFERENCES "SOURCE" ("ID") ON DELETE CASCADE ENABLE;
+
+-- CCEP_TYPE_HEURES_FK
+ALTER TABLE "CENTRE_COUT_EP" ADD CONSTRAINT "CCEP_TYPE_HEURES_FK" FOREIGN KEY ("TYPE_HEURES_ID")
+	  REFERENCES "TYPE_HEURES" ("ID") ON DELETE CASCADE ENABLE;
+
+-- CCS_CENTRE_COUT_FK
+ALTER TABLE "CENTRE_COUT_STRUCTURE" ADD CONSTRAINT "CCS_CENTRE_COUT_FK" FOREIGN KEY ("CENTRE_COUT_ID")
+	  REFERENCES "CENTRE_COUT" ("ID") ON DELETE CASCADE ENABLE;
+
+-- CCS_SOURCE_FK
+ALTER TABLE "CENTRE_COUT_STRUCTURE" ADD CONSTRAINT "CCS_SOURCE_FK" FOREIGN KEY ("SOURCE_ID")
+	  REFERENCES "SOURCE" ("ID") ENABLE;
+
+-- CCS_STRUCTURE_FK
+ALTER TABLE "CENTRE_COUT_STRUCTURE" ADD CONSTRAINT "CCS_STRUCTURE_FK" FOREIGN KEY ("STRUCTURE_ID")
+	  REFERENCES "STRUCTURE" ("ID") ON DELETE CASCADE ENABLE;
+
+-- CC_ACTIVITE_HCFK
+ALTER TABLE "CC_ACTIVITE" ADD CONSTRAINT "CC_ACTIVITE_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- CC_ACTIVITE_HDFK
+ALTER TABLE "CC_ACTIVITE" ADD CONSTRAINT "CC_ACTIVITE_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- CC_ACTIVITE_HMFK
+ALTER TABLE "CC_ACTIVITE" ADD CONSTRAINT "CC_ACTIVITE_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- CENTRE_COUT_ACTIVITE_FK
+ALTER TABLE "CENTRE_COUT" ADD CONSTRAINT "CENTRE_COUT_ACTIVITE_FK" FOREIGN KEY ("ACTIVITE_ID")
+	  REFERENCES "CC_ACTIVITE" ("ID") ON DELETE CASCADE ENABLE;
+
+-- CENTRE_COUT_CENTRE_COUT_FK
+ALTER TABLE "CENTRE_COUT" ADD CONSTRAINT "CENTRE_COUT_CENTRE_COUT_FK" FOREIGN KEY ("PARENT_ID")
+	  REFERENCES "CENTRE_COUT" ("ID") ON DELETE CASCADE ENABLE;
+
+-- CENTRE_COUT_EP_HCFK
+ALTER TABLE "CENTRE_COUT_EP" ADD CONSTRAINT "CENTRE_COUT_EP_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- CENTRE_COUT_EP_HDFK
+ALTER TABLE "CENTRE_COUT_EP" ADD CONSTRAINT "CENTRE_COUT_EP_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- CENTRE_COUT_EP_HMFK
+ALTER TABLE "CENTRE_COUT_EP" ADD CONSTRAINT "CENTRE_COUT_EP_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- CENTRE_COUT_HCFK
+ALTER TABLE "CENTRE_COUT" ADD CONSTRAINT "CENTRE_COUT_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- CENTRE_COUT_HDFK
+ALTER TABLE "CENTRE_COUT" ADD CONSTRAINT "CENTRE_COUT_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- CENTRE_COUT_HMFK
+ALTER TABLE "CENTRE_COUT" ADD CONSTRAINT "CENTRE_COUT_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- CENTRE_COUT_SOURCE_FK
+ALTER TABLE "CENTRE_COUT" ADD CONSTRAINT "CENTRE_COUT_SOURCE_FK" FOREIGN KEY ("SOURCE_ID")
+	  REFERENCES "SOURCE" ("ID") ON DELETE CASCADE ENABLE;
+
+-- CENTRE_COUT_STRUCTURE_HCFK
+ALTER TABLE "CENTRE_COUT_STRUCTURE" ADD CONSTRAINT "CENTRE_COUT_STRUCTURE_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- CENTRE_COUT_STRUCTURE_HDFK
+ALTER TABLE "CENTRE_COUT_STRUCTURE" ADD CONSTRAINT "CENTRE_COUT_STRUCTURE_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- CENTRE_COUT_STRUCTURE_HMFK
+ALTER TABLE "CENTRE_COUT_STRUCTURE" ADD CONSTRAINT "CENTRE_COUT_STRUCTURE_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- CENTRE_COUT_TYPE_RESSOURCE_FK
+ALTER TABLE "CENTRE_COUT" ADD CONSTRAINT "CENTRE_COUT_TYPE_RESSOURCE_FK" FOREIGN KEY ("TYPE_RESSOURCE_ID")
+	  REFERENCES "TYPE_RESSOURCE" ("ID") ON DELETE CASCADE ENABLE;
+
+-- CHEMIN_PEDAGOGIQUE_ETAPE_FK
+ALTER TABLE "CHEMIN_PEDAGOGIQUE" ADD CONSTRAINT "CHEMIN_PEDAGOGIQUE_ETAPE_FK" FOREIGN KEY ("ETAPE_ID")
+	  REFERENCES "ETAPE" ("ID") ON DELETE CASCADE ENABLE;
+
+-- CHEMIN_PEDAGOGIQUE_HCFK
+ALTER TABLE "CHEMIN_PEDAGOGIQUE" ADD CONSTRAINT "CHEMIN_PEDAGOGIQUE_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- CHEMIN_PEDAGOGIQUE_HDFK
+ALTER TABLE "CHEMIN_PEDAGOGIQUE" ADD CONSTRAINT "CHEMIN_PEDAGOGIQUE_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- CHEMIN_PEDAGOGIQUE_HMFK
+ALTER TABLE "CHEMIN_PEDAGOGIQUE" ADD CONSTRAINT "CHEMIN_PEDAGOGIQUE_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- CHEMIN_PEDAGOGIQUE_SOURCE_FK
+ALTER TABLE "CHEMIN_PEDAGOGIQUE" ADD CONSTRAINT "CHEMIN_PEDAGOGIQUE_SOURCE_FK" FOREIGN KEY ("SOURCE_ID")
+	  REFERENCES "SOURCE" ("ID") ON DELETE CASCADE ENABLE;
+
+-- CONTRAT_CONTRAT_FK
+ALTER TABLE "CONTRAT" ADD CONSTRAINT "CONTRAT_CONTRAT_FK" FOREIGN KEY ("CONTRAT_ID")
+	  REFERENCES "CONTRAT" ("ID") ON DELETE CASCADE ENABLE;
+
+-- CONTRAT_FICHIER_FFK
+ALTER TABLE "CONTRAT_FICHIER" ADD CONSTRAINT "CONTRAT_FICHIER_FFK" FOREIGN KEY ("FICHIER_ID")
+	  REFERENCES "FICHIER" ("ID") ON DELETE CASCADE ENABLE;
+
+-- CONTRAT_FICHIER_cFK
+ALTER TABLE "CONTRAT_FICHIER" ADD CONSTRAINT "CONTRAT_FICHIER_cFK" FOREIGN KEY ("CONTRAT_ID")
+	  REFERENCES "CONTRAT" ("ID") ON DELETE CASCADE ENABLE;
+
+-- CONTRAT_HCFK
+ALTER TABLE "CONTRAT" ADD CONSTRAINT "CONTRAT_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- CONTRAT_HDFK
+ALTER TABLE "CONTRAT" ADD CONSTRAINT "CONTRAT_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- CONTRAT_HMFK
+ALTER TABLE "CONTRAT" ADD CONSTRAINT "CONTRAT_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- CONTRAT_INTERVENANT_FK
+ALTER TABLE "CONTRAT" ADD CONSTRAINT "CONTRAT_INTERVENANT_FK" FOREIGN KEY ("INTERVENANT_ID")
+	  REFERENCES "INTERVENANT" ("ID") ON DELETE CASCADE ENABLE;
+
+-- CONTRAT_STRUCTURE_FK
+ALTER TABLE "CONTRAT" ADD CONSTRAINT "CONTRAT_STRUCTURE_FK" FOREIGN KEY ("STRUCTURE_ID")
+	  REFERENCES "STRUCTURE" ("ID") ENABLE;
+
+-- CONTRAT_TYPE_CONTRAT_FK
+ALTER TABLE "CONTRAT" ADD CONSTRAINT "CONTRAT_TYPE_CONTRAT_FK" FOREIGN KEY ("TYPE_CONTRAT_ID")
+	  REFERENCES "TYPE_CONTRAT" ("ID") ENABLE;
+
+-- CONTRAT_VALIDATION_FK
+ALTER TABLE "CONTRAT" ADD CONSTRAINT "CONTRAT_VALIDATION_FK" FOREIGN KEY ("VALIDATION_ID")
+	  REFERENCES "VALIDATION" ("ID") ON DELETE SET NULL ENABLE;
+
+-- CORPS_HCFK
+ALTER TABLE "CORPS" ADD CONSTRAINT "CORPS_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- CORPS_HDFK
+ALTER TABLE "CORPS" ADD CONSTRAINT "CORPS_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- CORPS_HMFK
+ALTER TABLE "CORPS" ADD CONSTRAINT "CORPS_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- CORPS_SOURCE_FK
+ALTER TABLE "CORPS" ADD CONSTRAINT "CORPS_SOURCE_FK" FOREIGN KEY ("SOURCE_ID")
+	  REFERENCES "SOURCE" ("ID") ON DELETE CASCADE ENABLE;
+
+-- CPEP_FK
+ALTER TABLE "CHEMIN_PEDAGOGIQUE" ADD CONSTRAINT "CPEP_FK" FOREIGN KEY ("ELEMENT_PEDAGOGIQUE_ID")
+	  REFERENCES "ELEMENT_PEDAGOGIQUE" ("ID") ON DELETE CASCADE ENABLE;
+
+-- CS_TYPE_INTERVENANT_FK
+ALTER TABLE "CAMPAGNE_SAISIE" ADD CONSTRAINT "CS_TYPE_INTERVENANT_FK" FOREIGN KEY ("TYPE_INTERVENANT_ID")
+	  REFERENCES "TYPE_INTERVENANT" ("ID") ENABLE;
+
+-- CS_TYPE_VOLUME_HORAIRE_FK
+ALTER TABLE "CAMPAGNE_SAISIE" ADD CONSTRAINT "CS_TYPE_VOLUME_HORAIRE_FK" FOREIGN KEY ("TYPE_VOLUME_HORAIRE_ID")
+	  REFERENCES "TYPE_VOLUME_HORAIRE" ("ID") ENABLE;
+
+-- DEPARTEMENT_HCFK
+ALTER TABLE "DEPARTEMENT" ADD CONSTRAINT "DEPARTEMENT_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- DEPARTEMENT_HDFK
+ALTER TABLE "DEPARTEMENT" ADD CONSTRAINT "DEPARTEMENT_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- DEPARTEMENT_HMFK
+ALTER TABLE "DEPARTEMENT" ADD CONSTRAINT "DEPARTEMENT_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- DEPARTEMENT_SOURCE_FK
+ALTER TABLE "DEPARTEMENT" ADD CONSTRAINT "DEPARTEMENT_SOURCE_FK" FOREIGN KEY ("SOURCE_ID")
+	  REFERENCES "SOURCE" ("ID") ON DELETE CASCADE ENABLE;
+
+-- DISCIPLINE_HCFK
+ALTER TABLE "DISCIPLINE" ADD CONSTRAINT "DISCIPLINE_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- DISCIPLINE_HDFK
+ALTER TABLE "DISCIPLINE" ADD CONSTRAINT "DISCIPLINE_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- DISCIPLINE_HMFK
+ALTER TABLE "DISCIPLINE" ADD CONSTRAINT "DISCIPLINE_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- DISCIPLINE_SOURCE_FK
+ALTER TABLE "DISCIPLINE" ADD CONSTRAINT "DISCIPLINE_SOURCE_FK" FOREIGN KEY ("SOURCE_ID")
+	  REFERENCES "SOURCE" ("ID") ENABLE;
+
+-- DOMAINE_FONCTIONNEL_HCFK
+ALTER TABLE "DOMAINE_FONCTIONNEL" ADD CONSTRAINT "DOMAINE_FONCTIONNEL_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- DOMAINE_FONCTIONNEL_HDFK
+ALTER TABLE "DOMAINE_FONCTIONNEL" ADD CONSTRAINT "DOMAINE_FONCTIONNEL_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- DOMAINE_FONCTIONNEL_HMFK
+ALTER TABLE "DOMAINE_FONCTIONNEL" ADD CONSTRAINT "DOMAINE_FONCTIONNEL_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- DOMAINE_FONCTIONNEL_SOURCE_FK
+ALTER TABLE "DOMAINE_FONCTIONNEL" ADD CONSTRAINT "DOMAINE_FONCTIONNEL_SOURCE_FK" FOREIGN KEY ("SOURCE_ID")
+	  REFERENCES "SOURCE" ("ID") ON DELETE CASCADE ENABLE;
+
+-- DOSSIER_D_FK
+ALTER TABLE "DOSSIER" ADD CONSTRAINT "DOSSIER_D_FK" FOREIGN KEY ("DEPT_NAISSANCE_ID")
+	  REFERENCES "DEPARTEMENT" ("ID") ENABLE;
+
+-- DOSSIER_HCFK
+ALTER TABLE "DOSSIER" ADD CONSTRAINT "DOSSIER_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- DOSSIER_HDFK
+ALTER TABLE "DOSSIER" ADD CONSTRAINT "DOSSIER_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- DOSSIER_HMFK
+ALTER TABLE "DOSSIER" ADD CONSTRAINT "DOSSIER_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- DOSSIER_INTERVENANT_FK
+ALTER TABLE "DOSSIER" ADD CONSTRAINT "DOSSIER_INTERVENANT_FK" FOREIGN KEY ("INTERVENANT_ID")
+	  REFERENCES "INTERVENANT" ("ID") ENABLE;
+
+-- DOSSIER_P_FK
+ALTER TABLE "DOSSIER" ADD CONSTRAINT "DOSSIER_P_FK" FOREIGN KEY ("PAYS_NAISSANCE_ID")
+	  REFERENCES "PAYS" ("ID") ENABLE;
+
+-- DOTATION_ANNEE_FK
+ALTER TABLE "DOTATION" ADD CONSTRAINT "DOTATION_ANNEE_FK" FOREIGN KEY ("ANNEE_ID")
+	  REFERENCES "ANNEE" ("ID") ON DELETE CASCADE ENABLE;
+
+-- DOTATION_HCFK
+ALTER TABLE "DOTATION" ADD CONSTRAINT "DOTATION_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- DOTATION_HDFK
+ALTER TABLE "DOTATION" ADD CONSTRAINT "DOTATION_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- DOTATION_HMFK
+ALTER TABLE "DOTATION" ADD CONSTRAINT "DOTATION_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- DOTATION_STRUCTURE_FK
+ALTER TABLE "DOTATION" ADD CONSTRAINT "DOTATION_STRUCTURE_FK" FOREIGN KEY ("STRUCTURE_ID")
+	  REFERENCES "STRUCTURE" ("ID") ON DELETE CASCADE ENABLE;
+
+-- DOTATION_TYPE_RESSOURCE_FK
+ALTER TABLE "DOTATION" ADD CONSTRAINT "DOTATION_TYPE_RESSOURCE_FK" FOREIGN KEY ("TYPE_RESSOURCE_ID")
+	  REFERENCES "TYPE_RESSOURCE" ("ID") ENABLE;
+
+-- DS_MDS_FK
+ALTER TABLE "MODIFICATION_SERVICE_DU" ADD CONSTRAINT "DS_MDS_FK" FOREIGN KEY ("MOTIF_ID")
+	  REFERENCES "MOTIF_MODIFICATION_SERVICE" ("ID") ENABLE;
+
+-- EFFECTIFS_ELEMENT_FK
+ALTER TABLE "EFFECTIFS" ADD CONSTRAINT "EFFECTIFS_ELEMENT_FK" FOREIGN KEY ("ELEMENT_PEDAGOGIQUE_ID")
+	  REFERENCES "ELEMENT_PEDAGOGIQUE" ("ID") ON DELETE CASCADE ENABLE;
+
+-- EFFECTIFS_FK
+ALTER TABLE "EFFECTIFS" ADD CONSTRAINT "EFFECTIFS_FK" FOREIGN KEY ("ANNEE_ID")
+	  REFERENCES "ANNEE" ("ID") ENABLE;
+
+-- EFFECTIFS_HCFK
+ALTER TABLE "EFFECTIFS" ADD CONSTRAINT "EFFECTIFS_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- EFFECTIFS_HDFK
+ALTER TABLE "EFFECTIFS" ADD CONSTRAINT "EFFECTIFS_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- EFFECTIFS_HMFK
+ALTER TABLE "EFFECTIFS" ADD CONSTRAINT "EFFECTIFS_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- EFFECTIFS_SOURCE_FK
+ALTER TABLE "EFFECTIFS" ADD CONSTRAINT "EFFECTIFS_SOURCE_FK" FOREIGN KEY ("SOURCE_ID")
+	  REFERENCES "SOURCE" ("ID") ON DELETE CASCADE ENABLE;
+
+-- ELEMENT_MODULATEUR_HCFK
+ALTER TABLE "ELEMENT_MODULATEUR" ADD CONSTRAINT "ELEMENT_MODULATEUR_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- ELEMENT_MODULATEUR_HDFK
+ALTER TABLE "ELEMENT_MODULATEUR" ADD CONSTRAINT "ELEMENT_MODULATEUR_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- ELEMENT_MODULATEUR_HMFK
+ALTER TABLE "ELEMENT_MODULATEUR" ADD CONSTRAINT "ELEMENT_MODULATEUR_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- ELEMENT_PEDAGOGIQUE_ANNEE_FK
+ALTER TABLE "ELEMENT_PEDAGOGIQUE" ADD CONSTRAINT "ELEMENT_PEDAGOGIQUE_ANNEE_FK" FOREIGN KEY ("ANNEE_ID")
+	  REFERENCES "ANNEE" ("ID") ENABLE;
+
+-- ELEMENT_PEDAGOGIQUE_ETAPE_FK
+ALTER TABLE "ELEMENT_PEDAGOGIQUE" ADD CONSTRAINT "ELEMENT_PEDAGOGIQUE_ETAPE_FK" FOREIGN KEY ("ETAPE_ID")
+	  REFERENCES "ETAPE" ("ID") ENABLE;
+
+-- ELEMENT_PEDAGOGIQUE_HCFK
+ALTER TABLE "ELEMENT_PEDAGOGIQUE" ADD CONSTRAINT "ELEMENT_PEDAGOGIQUE_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- ELEMENT_PEDAGOGIQUE_HDFK
+ALTER TABLE "ELEMENT_PEDAGOGIQUE" ADD CONSTRAINT "ELEMENT_PEDAGOGIQUE_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- ELEMENT_PEDAGOGIQUE_HMFK
+ALTER TABLE "ELEMENT_PEDAGOGIQUE" ADD CONSTRAINT "ELEMENT_PEDAGOGIQUE_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- ELEMENT_PEDAGOGIQUE_PERIODE_FK
+ALTER TABLE "ELEMENT_PEDAGOGIQUE" ADD CONSTRAINT "ELEMENT_PEDAGOGIQUE_PERIODE_FK" FOREIGN KEY ("PERIODE_ID")
+	  REFERENCES "PERIODE" ("ID") ENABLE;
+
+-- ELEMENT_PEDAGOGIQUE_SOURCE_FK
+ALTER TABLE "ELEMENT_PEDAGOGIQUE" ADD CONSTRAINT "ELEMENT_PEDAGOGIQUE_SOURCE_FK" FOREIGN KEY ("SOURCE_ID")
+	  REFERENCES "SOURCE" ("ID") ON DELETE CASCADE ENABLE;
+
+-- ELEMENT_TAUX_REGIMES_HCFK
+ALTER TABLE "ELEMENT_TAUX_REGIMES" ADD CONSTRAINT "ELEMENT_TAUX_REGIMES_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- ELEMENT_TAUX_REGIMES_HDFK
+ALTER TABLE "ELEMENT_TAUX_REGIMES" ADD CONSTRAINT "ELEMENT_TAUX_REGIMES_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- ELEMENT_TAUX_REGIMES_HMFK
+ALTER TABLE "ELEMENT_TAUX_REGIMES" ADD CONSTRAINT "ELEMENT_TAUX_REGIMES_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- EM_ELEMENT_PEDAGOGIQUE_FK
+ALTER TABLE "ELEMENT_MODULATEUR" ADD CONSTRAINT "EM_ELEMENT_PEDAGOGIQUE_FK" FOREIGN KEY ("ELEMENT_ID")
+	  REFERENCES "ELEMENT_PEDAGOGIQUE" ("ID") ON DELETE CASCADE ENABLE;
+
+-- EM_MODULATEUR_FK
+ALTER TABLE "ELEMENT_MODULATEUR" ADD CONSTRAINT "EM_MODULATEUR_FK" FOREIGN KEY ("MODULATEUR_ID")
+	  REFERENCES "MODULATEUR" ("ID") ENABLE;
+
+-- EPS_FK
+ALTER TABLE "ELEMENT_PEDAGOGIQUE" ADD CONSTRAINT "EPS_FK" FOREIGN KEY ("STRUCTURE_ID")
+	  REFERENCES "STRUCTURE" ("ID") ENABLE;
+
+-- EP_DISCIPLINE_FK
+ALTER TABLE "ELEMENT_PEDAGOGIQUE" ADD CONSTRAINT "EP_DISCIPLINE_FK" FOREIGN KEY ("DISCIPLINE_ID")
+	  REFERENCES "DISCIPLINE" ("ID") ENABLE;
+
+-- ETABLISSEMENT_HCFK
+ALTER TABLE "ETABLISSEMENT" ADD CONSTRAINT "ETABLISSEMENT_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- ETABLISSEMENT_HDFK
+ALTER TABLE "ETABLISSEMENT" ADD CONSTRAINT "ETABLISSEMENT_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- ETABLISSEMENT_HMFK
+ALTER TABLE "ETABLISSEMENT" ADD CONSTRAINT "ETABLISSEMENT_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- ETABLISSEMENT_SOURCE_FK
+ALTER TABLE "ETABLISSEMENT" ADD CONSTRAINT "ETABLISSEMENT_SOURCE_FK" FOREIGN KEY ("SOURCE_ID")
+	  REFERENCES "SOURCE" ("ID") ON DELETE CASCADE ENABLE;
+
+-- ETAPE_ANNEE_FK
+ALTER TABLE "ETAPE" ADD CONSTRAINT "ETAPE_ANNEE_FK" FOREIGN KEY ("ANNEE_ID")
+	  REFERENCES "ANNEE" ("ID") ENABLE;
+
+-- ETAPE_DOMAINE_FONCTIONNEL_FK
+ALTER TABLE "ETAPE" ADD CONSTRAINT "ETAPE_DOMAINE_FONCTIONNEL_FK" FOREIGN KEY ("DOMAINE_FONCTIONNEL_ID")
+	  REFERENCES "DOMAINE_FONCTIONNEL" ("ID") ENABLE;
+
+-- ETAPE_HCFK
+ALTER TABLE "ETAPE" ADD CONSTRAINT "ETAPE_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- ETAPE_HDFK
+ALTER TABLE "ETAPE" ADD CONSTRAINT "ETAPE_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- ETAPE_HMFK
+ALTER TABLE "ETAPE" ADD CONSTRAINT "ETAPE_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- ETAPE_SOURCE_FK
+ALTER TABLE "ETAPE" ADD CONSTRAINT "ETAPE_SOURCE_FK" FOREIGN KEY ("SOURCE_ID")
+	  REFERENCES "SOURCE" ("ID") ON DELETE CASCADE ENABLE;
+
+-- ETAPE_STRUCTURE_FK
+ALTER TABLE "ETAPE" ADD CONSTRAINT "ETAPE_STRUCTURE_FK" FOREIGN KEY ("STRUCTURE_ID")
+	  REFERENCES "STRUCTURE" ("ID") ENABLE;
+
+-- ETAPE_TYPE_FORMATION_FK
+ALTER TABLE "ETAPE" ADD CONSTRAINT "ETAPE_TYPE_FORMATION_FK" FOREIGN KEY ("TYPE_FORMATION_ID")
+	  REFERENCES "TYPE_FORMATION" ("ID") ENABLE;
+
+-- ETR_ELEMENT_FK
+ALTER TABLE "ELEMENT_TAUX_REGIMES" ADD CONSTRAINT "ETR_ELEMENT_FK" FOREIGN KEY ("ELEMENT_PEDAGOGIQUE_ID")
+	  REFERENCES "ELEMENT_PEDAGOGIQUE" ("ID") ON DELETE CASCADE ENABLE;
+
+-- ETR_SOURCE_FK
+ALTER TABLE "ELEMENT_TAUX_REGIMES" ADD CONSTRAINT "ETR_SOURCE_FK" FOREIGN KEY ("SOURCE_ID")
+	  REFERENCES "SOURCE" ("ID") ENABLE;
+
+-- FICHIER_HCFK
+ALTER TABLE "FICHIER" ADD CONSTRAINT "FICHIER_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- FICHIER_HDFK
+ALTER TABLE "FICHIER" ADD CONSTRAINT "FICHIER_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- FICHIER_HMFK
+ALTER TABLE "FICHIER" ADD CONSTRAINT "FICHIER_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- FICHIER_VALID_FK
+ALTER TABLE "FICHIER" ADD CONSTRAINT "FICHIER_VALID_FK" FOREIGN KEY ("VALIDATION_ID")
+	  REFERENCES "VALIDATION" ("ID") ON DELETE SET NULL ENABLE;
+
+-- FONCTION_REFERENTIEL_HCFK
+ALTER TABLE "FONCTION_REFERENTIEL" ADD CONSTRAINT "FONCTION_REFERENTIEL_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- FONCTION_REFERENTIEL_HDFK
+ALTER TABLE "FONCTION_REFERENTIEL" ADD CONSTRAINT "FONCTION_REFERENTIEL_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- FONCTION_REFERENTIEL_HMFK
+ALTER TABLE "FONCTION_REFERENTIEL" ADD CONSTRAINT "FONCTION_REFERENTIEL_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- FONCTION_REFERENTIEL_SFK
+ALTER TABLE "FONCTION_REFERENTIEL" ADD CONSTRAINT "FONCTION_REFERENTIEL_SFK" FOREIGN KEY ("STRUCTURE_ID")
+	  REFERENCES "STRUCTURE" ("ID") ENABLE;
+
+-- FONC_REF_DOMAINE_FONCT_FK
+ALTER TABLE "FONCTION_REFERENTIEL" ADD CONSTRAINT "FONC_REF_DOMAINE_FONCT_FK" FOREIGN KEY ("DOMAINE_FONCTIONNEL_ID")
+	  REFERENCES "DOMAINE_FONCTIONNEL" ("ID") ENABLE;
+
+-- FRES_ETAT_VOLUME_HORAIRE_FK
+ALTER TABLE "FORMULE_RESULTAT" ADD CONSTRAINT "FRES_ETAT_VOLUME_HORAIRE_FK" FOREIGN KEY ("ETAT_VOLUME_HORAIRE_ID")
+	  REFERENCES "ETAT_VOLUME_HORAIRE" ("ID") ON DELETE CASCADE ENABLE;
+
+-- FRES_INTERVENANT_FK
+ALTER TABLE "FORMULE_RESULTAT" ADD CONSTRAINT "FRES_INTERVENANT_FK" FOREIGN KEY ("INTERVENANT_ID")
+	  REFERENCES "INTERVENANT" ("ID") ON DELETE CASCADE ENABLE;
+
+-- FRES_TYPE_VOLUME_HORAIRE_FK
+ALTER TABLE "FORMULE_RESULTAT" ADD CONSTRAINT "FRES_TYPE_VOLUME_HORAIRE_FK" FOREIGN KEY ("TYPE_VOLUME_HORAIRE_ID")
+	  REFERENCES "TYPE_VOLUME_HORAIRE" ("ID") ON DELETE CASCADE ENABLE;
+
+-- FRR_FORMULE_RESULTAT_FK
+ALTER TABLE "FORMULE_RESULTAT_SERVICE_REF" ADD CONSTRAINT "FRR_FORMULE_RESULTAT_FK" FOREIGN KEY ("FORMULE_RESULTAT_ID")
+	  REFERENCES "FORMULE_RESULTAT" ("ID") ON DELETE CASCADE ENABLE;
+
+-- FRSR_SERVICE_REFERENTIEL_FK
+ALTER TABLE "FORMULE_RESULTAT_SERVICE_REF" ADD CONSTRAINT "FRSR_SERVICE_REFERENTIEL_FK" FOREIGN KEY ("SERVICE_REFERENTIEL_ID")
+	  REFERENCES "SERVICE_REFERENTIEL" ("ID") ON DELETE CASCADE ENABLE;
+
+-- FRS_FORMULE_RESULTAT_FK
+ALTER TABLE "FORMULE_RESULTAT_SERVICE" ADD CONSTRAINT "FRS_FORMULE_RESULTAT_FK" FOREIGN KEY ("FORMULE_RESULTAT_ID")
+	  REFERENCES "FORMULE_RESULTAT" ("ID") ON DELETE CASCADE ENABLE;
+
+-- FRS_SERVICE_FK
+ALTER TABLE "FORMULE_RESULTAT_SERVICE" ADD CONSTRAINT "FRS_SERVICE_FK" FOREIGN KEY ("SERVICE_ID")
+	  REFERENCES "SERVICE" ("ID") ON DELETE CASCADE ENABLE;
+
+-- FRVHR_FORMULE_RESULTAT_FK
+ALTER TABLE "FORMULE_RESULTAT_VH_REF" ADD CONSTRAINT "FRVHR_FORMULE_RESULTAT_FK" FOREIGN KEY ("FORMULE_RESULTAT_ID")
+	  REFERENCES "FORMULE_RESULTAT" ("ID") ON DELETE CASCADE ENABLE;
+
+-- FRVHR_VOLUME_HORAIRE_REF_FK
+ALTER TABLE "FORMULE_RESULTAT_VH_REF" ADD CONSTRAINT "FRVHR_VOLUME_HORAIRE_REF_FK" FOREIGN KEY ("VOLUME_HORAIRE_REF_ID")
+	  REFERENCES "VOLUME_HORAIRE_REF" ("ID") ON DELETE CASCADE ENABLE;
+
+-- FRVH_FORMULE_RESULTAT_FK
+ALTER TABLE "FORMULE_RESULTAT_VH" ADD CONSTRAINT "FRVH_FORMULE_RESULTAT_FK" FOREIGN KEY ("FORMULE_RESULTAT_ID")
+	  REFERENCES "FORMULE_RESULTAT" ("ID") ON DELETE CASCADE ENABLE;
+
+-- FRVH_VOLUME_HORAIRE_FK
+ALTER TABLE "FORMULE_RESULTAT_VH" ADD CONSTRAINT "FRVH_VOLUME_HORAIRE_FK" FOREIGN KEY ("VOLUME_HORAIRE_ID")
+	  REFERENCES "VOLUME_HORAIRE" ("ID") ON DELETE CASCADE ENABLE;
+
+-- GRADE_CORPS_FK
+ALTER TABLE "GRADE" ADD CONSTRAINT "GRADE_CORPS_FK" FOREIGN KEY ("CORPS_ID")
+	  REFERENCES "CORPS" ("ID") ENABLE;
+
+-- GRADE_HCFK
+ALTER TABLE "GRADE" ADD CONSTRAINT "GRADE_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- GRADE_HDFK
+ALTER TABLE "GRADE" ADD CONSTRAINT "GRADE_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- GRADE_HMFK
+ALTER TABLE "GRADE" ADD CONSTRAINT "GRADE_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- GRADE_SOURCE_FK
+ALTER TABLE "GRADE" ADD CONSTRAINT "GRADE_SOURCE_FK" FOREIGN KEY ("SOURCE_ID")
+	  REFERENCES "SOURCE" ("ID") ENABLE;
+
+-- GROUPE_ELEMENT_PEDAGOGIQUE_FK
+ALTER TABLE "GROUPE" ADD CONSTRAINT "GROUPE_ELEMENT_PEDAGOGIQUE_FK" FOREIGN KEY ("ELEMENT_PEDAGOGIQUE_ID")
+	  REFERENCES "ELEMENT_PEDAGOGIQUE" ("ID") ON DELETE CASCADE ENABLE;
+
+-- GROUPE_HCFK
+ALTER TABLE "GROUPE" ADD CONSTRAINT "GROUPE_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- GROUPE_HDFK
+ALTER TABLE "GROUPE" ADD CONSTRAINT "GROUPE_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- GROUPE_HMFK
+ALTER TABLE "GROUPE" ADD CONSTRAINT "GROUPE_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- GROUPE_TYPE_FORMATION_HCFK
+ALTER TABLE "GROUPE_TYPE_FORMATION" ADD CONSTRAINT "GROUPE_TYPE_FORMATION_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- GROUPE_TYPE_FORMATION_HDFK
+ALTER TABLE "GROUPE_TYPE_FORMATION" ADD CONSTRAINT "GROUPE_TYPE_FORMATION_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- GROUPE_TYPE_FORMATION_HMFK
+ALTER TABLE "GROUPE_TYPE_FORMATION" ADD CONSTRAINT "GROUPE_TYPE_FORMATION_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- GROUPE_TYPE_INTERVENTION_FK
+ALTER TABLE "GROUPE" ADD CONSTRAINT "GROUPE_TYPE_INTERVENTION_FK" FOREIGN KEY ("TYPE_INTERVENTION_ID")
+	  REFERENCES "TYPE_INTERVENTION" ("ID") ENABLE;
+
+-- GTYPE_FORMATION_SOURCE_FK
+ALTER TABLE "GROUPE_TYPE_FORMATION" ADD CONSTRAINT "GTYPE_FORMATION_SOURCE_FK" FOREIGN KEY ("SOURCE_ID")
+	  REFERENCES "SOURCE" ("ID") ON DELETE CASCADE ENABLE;
+
+-- HSM_INTERVENANT_FK
+ALTER TABLE "HISTO_INTERVENANT_SERVICE" ADD CONSTRAINT "HSM_INTERVENANT_FK" FOREIGN KEY ("INTERVENANT_ID")
+	  REFERENCES "INTERVENANT" ("ID") ON DELETE CASCADE ENABLE;
+
+-- HSM_TYPE_VOLUME_HORAIRE_FK
+ALTER TABLE "HISTO_INTERVENANT_SERVICE" ADD CONSTRAINT "HSM_TYPE_VOLUME_HORAIRE_FK" FOREIGN KEY ("TYPE_VOLUME_HORAIRE_ID")
+	  REFERENCES "TYPE_VOLUME_HORAIRE" ("ID") ON DELETE CASCADE ENABLE;
+
+-- HSM_UTILISATEUR_FK
+ALTER TABLE "HISTO_INTERVENANT_SERVICE" ADD CONSTRAINT "HSM_UTILISATEUR_FK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ON DELETE CASCADE ENABLE;
+
+-- INDIC_MODIF_DOSSIER_HCFK
+ALTER TABLE "INDIC_MODIF_DOSSIER" ADD CONSTRAINT "INDIC_MODIF_DOSSIER_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- INDIC_MODIF_DOSSIER_HDFK
+ALTER TABLE "INDIC_MODIF_DOSSIER" ADD CONSTRAINT "INDIC_MODIF_DOSSIER_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- INDIC_MODIF_DOSSIER_HMFK
+ALTER TABLE "INDIC_MODIF_DOSSIER" ADD CONSTRAINT "INDIC_MODIF_DOSSIER_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- INTERVENANTS_CIVILITES_FK
+ALTER TABLE "INTERVENANT" ADD CONSTRAINT "INTERVENANTS_CIVILITES_FK" FOREIGN KEY ("CIVILITE_ID")
+	  REFERENCES "CIVILITE" ("ID") ENABLE;
+
+-- INTERVENANT_ANNEE_FK
+ALTER TABLE "INTERVENANT" ADD CONSTRAINT "INTERVENANT_ANNEE_FK" FOREIGN KEY ("ANNEE_ID")
+	  REFERENCES "ANNEE" ("ID") ENABLE;
+
+-- INTERVENANT_DEPARTEMENT_FK
+ALTER TABLE "INTERVENANT" ADD CONSTRAINT "INTERVENANT_DEPARTEMENT_FK" FOREIGN KEY ("DEP_NAISSANCE_ID")
+	  REFERENCES "DEPARTEMENT" ("ID") ENABLE;
+
+-- INTERVENANT_DISCIPLINE_FK
+ALTER TABLE "INTERVENANT" ADD CONSTRAINT "INTERVENANT_DISCIPLINE_FK" FOREIGN KEY ("DISCIPLINE_ID")
+	  REFERENCES "DISCIPLINE" ("ID") ENABLE;
+
+-- INTERVENANT_GRADE_FK
+ALTER TABLE "INTERVENANT" ADD CONSTRAINT "INTERVENANT_GRADE_FK" FOREIGN KEY ("GRADE_ID")
+	  REFERENCES "GRADE" ("ID") ENABLE;
+
+-- INTERVENANT_HCFK
+ALTER TABLE "INTERVENANT" ADD CONSTRAINT "INTERVENANT_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- INTERVENANT_HDFK
+ALTER TABLE "INTERVENANT" ADD CONSTRAINT "INTERVENANT_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- INTERVENANT_HMFK
+ALTER TABLE "INTERVENANT" ADD CONSTRAINT "INTERVENANT_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- INTERVENANT_PAYS_NAISS_FK
+ALTER TABLE "INTERVENANT" ADD CONSTRAINT "INTERVENANT_PAYS_NAISS_FK" FOREIGN KEY ("PAYS_NAISSANCE_ID")
+	  REFERENCES "PAYS" ("ID") ENABLE;
+
+-- INTERVENANT_PAYS_NAT_FK
+ALTER TABLE "INTERVENANT" ADD CONSTRAINT "INTERVENANT_PAYS_NAT_FK" FOREIGN KEY ("PAYS_NATIONALITE_ID")
+	  REFERENCES "PAYS" ("ID") ENABLE;
+
+-- INTERVENANT_SAISIE_INTERV_FK
+ALTER TABLE "INTERVENANT_SAISIE" ADD CONSTRAINT "INTERVENANT_SAISIE_INTERV_FK" FOREIGN KEY ("INTERVENANT_ID")
+	  REFERENCES "INTERVENANT" ("ID") ON DELETE CASCADE ENABLE;
+
+-- INTERVENANT_SOURCE_FK
+ALTER TABLE "INTERVENANT" ADD CONSTRAINT "INTERVENANT_SOURCE_FK" FOREIGN KEY ("SOURCE_ID")
+	  REFERENCES "SOURCE" ("ID") ON DELETE CASCADE ENABLE;
+
+-- INTERVENANT_STATUT_FK
+ALTER TABLE "INTERVENANT" ADD CONSTRAINT "INTERVENANT_STATUT_FK" FOREIGN KEY ("STATUT_ID")
+	  REFERENCES "STATUT_INTERVENANT" ("ID") ENABLE;
+
+-- INTERVENANT_STRUCTURE_FK
+ALTER TABLE "INTERVENANT" ADD CONSTRAINT "INTERVENANT_STRUCTURE_FK" FOREIGN KEY ("STRUCTURE_ID")
+	  REFERENCES "STRUCTURE" ("ID") ENABLE;
+
+-- IS_STATUT_INTERVENANT_FK
+ALTER TABLE "INTERVENANT_SAISIE" ADD CONSTRAINT "IS_STATUT_INTERVENANT_FK" FOREIGN KEY ("STATUT_ID")
+	  REFERENCES "STATUT_INTERVENANT" ("ID") ENABLE;
+
+-- LIEN_HCFK
+ALTER TABLE "LIEN" ADD CONSTRAINT "LIEN_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- LIEN_HDFK
+ALTER TABLE "LIEN" ADD CONSTRAINT "LIEN_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- LIEN_HMFK
+ALTER TABLE "LIEN" ADD CONSTRAINT "LIEN_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- LIEN_NOEUD_INF_FK
+ALTER TABLE "LIEN" ADD CONSTRAINT "LIEN_NOEUD_INF_FK" FOREIGN KEY ("NOEUD_INF_ID")
+	  REFERENCES "NOEUD" ("ID") ON DELETE CASCADE ENABLE;
+
+-- LIEN_NOEUD_SUP_FK
+ALTER TABLE "LIEN" ADD CONSTRAINT "LIEN_NOEUD_SUP_FK" FOREIGN KEY ("NOEUD_SUP_ID")
+	  REFERENCES "NOEUD" ("ID") ON DELETE CASCADE ENABLE;
+
+-- LIEN_SOURCE_FK
+ALTER TABLE "LIEN" ADD CONSTRAINT "LIEN_SOURCE_FK" FOREIGN KEY ("SOURCE_ID")
+	  REFERENCES "SOURCE" ("ID") ENABLE;
+
+-- LIEN_STRUCTURE_FK
+ALTER TABLE "LIEN" ADD CONSTRAINT "LIEN_STRUCTURE_FK" FOREIGN KEY ("STRUCTURE_ID")
+	  REFERENCES "STRUCTURE" ("ID") ENABLE;
+
+-- MEP_CENTRE_COUT_FK
+ALTER TABLE "MISE_EN_PAIEMENT" ADD CONSTRAINT "MEP_CENTRE_COUT_FK" FOREIGN KEY ("CENTRE_COUT_ID")
+	  REFERENCES "CENTRE_COUT" ("ID") ON DELETE CASCADE ENABLE;
+
+-- MEP_DOMAINE_FONCTIONNEL_FK
+ALTER TABLE "MISE_EN_PAIEMENT" ADD CONSTRAINT "MEP_DOMAINE_FONCTIONNEL_FK" FOREIGN KEY ("DOMAINE_FONCTIONNEL_ID")
+	  REFERENCES "DOMAINE_FONCTIONNEL" ("ID") ENABLE;
+
+-- MEP_FR_SERVICE_FK
+ALTER TABLE "MISE_EN_PAIEMENT" ADD CONSTRAINT "MEP_FR_SERVICE_FK" FOREIGN KEY ("FORMULE_RES_SERVICE_ID")
+	  REFERENCES "FORMULE_RESULTAT_SERVICE" ("ID") ENABLE;
+
+-- MEP_FR_SERVICE_REF_FK
+ALTER TABLE "MISE_EN_PAIEMENT" ADD CONSTRAINT "MEP_FR_SERVICE_REF_FK" FOREIGN KEY ("FORMULE_RES_SERVICE_REF_ID")
+	  REFERENCES "FORMULE_RESULTAT_SERVICE_REF" ("ID") ENABLE;
+
+-- MEP_TYPE_HEURES_FK
+ALTER TABLE "MISE_EN_PAIEMENT" ADD CONSTRAINT "MEP_TYPE_HEURES_FK" FOREIGN KEY ("TYPE_HEURES_ID")
+	  REFERENCES "TYPE_HEURES" ("ID") ON DELETE CASCADE ENABLE;
+
+-- MISE_EN_PAIEMENT_HCFK
+ALTER TABLE "MISE_EN_PAIEMENT" ADD CONSTRAINT "MISE_EN_PAIEMENT_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- MISE_EN_PAIEMENT_HDFK
+ALTER TABLE "MISE_EN_PAIEMENT" ADD CONSTRAINT "MISE_EN_PAIEMENT_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- MISE_EN_PAIEMENT_HMFK
+ALTER TABLE "MISE_EN_PAIEMENT" ADD CONSTRAINT "MISE_EN_PAIEMENT_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- MISE_EN_PAIEMENT_PERIODE_FK
+ALTER TABLE "MISE_EN_PAIEMENT" ADD CONSTRAINT "MISE_EN_PAIEMENT_PERIODE_FK" FOREIGN KEY ("PERIODE_PAIEMENT_ID")
+	  REFERENCES "PERIODE" ("ID") ENABLE;
+
+-- MISE_EN_PAIEMENT_VALIDATION_FK
+ALTER TABLE "MISE_EN_PAIEMENT" ADD CONSTRAINT "MISE_EN_PAIEMENT_VALIDATION_FK" FOREIGN KEY ("VALIDATION_ID")
+	  REFERENCES "VALIDATION" ("ID") ON DELETE CASCADE ENABLE;
+
+-- MODIFICATION_SERVICE_DU_HCFK
+ALTER TABLE "MODIFICATION_SERVICE_DU" ADD CONSTRAINT "MODIFICATION_SERVICE_DU_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- MODIFICATION_SERVICE_DU_HDFK
+ALTER TABLE "MODIFICATION_SERVICE_DU" ADD CONSTRAINT "MODIFICATION_SERVICE_DU_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- MODIFICATION_SERVICE_DU_HMFK
+ALTER TABLE "MODIFICATION_SERVICE_DU" ADD CONSTRAINT "MODIFICATION_SERVICE_DU_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- MODULATEUR_HCFK
+ALTER TABLE "MODULATEUR" ADD CONSTRAINT "MODULATEUR_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- MODULATEUR_HDFK
+ALTER TABLE "MODULATEUR" ADD CONSTRAINT "MODULATEUR_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- MODULATEUR_HMFK
+ALTER TABLE "MODULATEUR" ADD CONSTRAINT "MODULATEUR_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- MODULATEUR_TYPE_MODULATEUR_FK
+ALTER TABLE "MODULATEUR" ADD CONSTRAINT "MODULATEUR_TYPE_MODULATEUR_FK" FOREIGN KEY ("TYPE_MODULATEUR_ID")
+	  REFERENCES "TYPE_MODULATEUR" ("ID") ON DELETE CASCADE ENABLE;
+
+-- MOTIF_MODIFICATION_SERVIC_HCFK
+ALTER TABLE "MOTIF_MODIFICATION_SERVICE" ADD CONSTRAINT "MOTIF_MODIFICATION_SERVIC_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- MOTIF_MODIFICATION_SERVIC_HDFK
+ALTER TABLE "MOTIF_MODIFICATION_SERVICE" ADD CONSTRAINT "MOTIF_MODIFICATION_SERVIC_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- MOTIF_MODIFICATION_SERVIC_HMFK
+ALTER TABLE "MOTIF_MODIFICATION_SERVICE" ADD CONSTRAINT "MOTIF_MODIFICATION_SERVIC_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- MOTIF_NON_PAIEMENT_HCFK
+ALTER TABLE "MOTIF_NON_PAIEMENT" ADD CONSTRAINT "MOTIF_NON_PAIEMENT_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- MOTIF_NON_PAIEMENT_HDFK
+ALTER TABLE "MOTIF_NON_PAIEMENT" ADD CONSTRAINT "MOTIF_NON_PAIEMENT_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- MOTIF_NON_PAIEMENT_HMFK
+ALTER TABLE "MOTIF_NON_PAIEMENT" ADD CONSTRAINT "MOTIF_NON_PAIEMENT_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- MSD_INTERVENANT_FK
+ALTER TABLE "MODIFICATION_SERVICE_DU" ADD CONSTRAINT "MSD_INTERVENANT_FK" FOREIGN KEY ("INTERVENANT_ID")
+	  REFERENCES "INTERVENANT" ("ID") ON DELETE CASCADE ENABLE;
+
+-- NOEUD_ANNEE_FK
+ALTER TABLE "NOEUD" ADD CONSTRAINT "NOEUD_ANNEE_FK" FOREIGN KEY ("ANNEE_ID")
+	  REFERENCES "ANNEE" ("ID") ENABLE;
+
+-- NOEUD_ELEMENT_PEDAGOGIQUE_FK
+ALTER TABLE "NOEUD" ADD CONSTRAINT "NOEUD_ELEMENT_PEDAGOGIQUE_FK" FOREIGN KEY ("ELEMENT_PEDAGOGIQUE_ID")
+	  REFERENCES "ELEMENT_PEDAGOGIQUE" ("ID") ON DELETE CASCADE ENABLE;
+
+-- NOEUD_ETAPE_FK
+ALTER TABLE "NOEUD" ADD CONSTRAINT "NOEUD_ETAPE_FK" FOREIGN KEY ("ETAPE_ID")
+	  REFERENCES "ETAPE" ("ID") ON DELETE CASCADE ENABLE;
+
+-- NOEUD_HCFK
+ALTER TABLE "NOEUD" ADD CONSTRAINT "NOEUD_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- NOEUD_HDFK
+ALTER TABLE "NOEUD" ADD CONSTRAINT "NOEUD_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- NOEUD_HMFK
+ALTER TABLE "NOEUD" ADD CONSTRAINT "NOEUD_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- NOEUD_SOURCE_FK
+ALTER TABLE "NOEUD" ADD CONSTRAINT "NOEUD_SOURCE_FK" FOREIGN KEY ("SOURCE_ID")
+	  REFERENCES "SOURCE" ("ID") ENABLE;
+
+-- NOEUD_STRUCTURE_FK
+ALTER TABLE "NOEUD" ADD CONSTRAINT "NOEUD_STRUCTURE_FK" FOREIGN KEY ("STRUCTURE_ID")
+	  REFERENCES "STRUCTURE" ("ID") ENABLE;
+
+-- NOTIF_INDICATEUR_IFK
+ALTER TABLE "NOTIFICATION_INDICATEUR" ADD CONSTRAINT "NOTIF_INDICATEUR_IFK" FOREIGN KEY ("INDICATEUR_ID")
+	  REFERENCES "INDICATEUR" ("ID") ON DELETE CASCADE ENABLE;
+
+-- PARAMETRE_HCFK
+ALTER TABLE "PARAMETRE" ADD CONSTRAINT "PARAMETRE_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- PARAMETRE_HDFK
+ALTER TABLE "PARAMETRE" ADD CONSTRAINT "PARAMETRE_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- PARAMETRE_HMFK
+ALTER TABLE "PARAMETRE" ADD CONSTRAINT "PARAMETRE_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- PAYS_HCFK
+ALTER TABLE "PAYS" ADD CONSTRAINT "PAYS_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- PAYS_HDFK
+ALTER TABLE "PAYS" ADD CONSTRAINT "PAYS_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- PAYS_HMFK
+ALTER TABLE "PAYS" ADD CONSTRAINT "PAYS_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- PAYS_SOURCE_FK
+ALTER TABLE "PAYS" ADD CONSTRAINT "PAYS_SOURCE_FK" FOREIGN KEY ("SOURCE_ID")
+	  REFERENCES "SOURCE" ("ID") ON DELETE CASCADE ENABLE;
+
+-- PERIODE_HCFK
+ALTER TABLE "PERIODE" ADD CONSTRAINT "PERIODE_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- PERIODE_HDFK
+ALTER TABLE "PERIODE" ADD CONSTRAINT "PERIODE_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- PERIODE_HMFK
+ALTER TABLE "PERIODE" ADD CONSTRAINT "PERIODE_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- PIECE_JOINTE_FICHIER_FFK
+ALTER TABLE "PIECE_JOINTE_FICHIER" ADD CONSTRAINT "PIECE_JOINTE_FICHIER_FFK" FOREIGN KEY ("FICHIER_ID")
+	  REFERENCES "FICHIER" ("ID") ENABLE;
+
+-- PIECE_JOINTE_FICHIER_PJFK
+ALTER TABLE "PIECE_JOINTE_FICHIER" ADD CONSTRAINT "PIECE_JOINTE_FICHIER_PJFK" FOREIGN KEY ("PIECE_JOINTE_ID")
+	  REFERENCES "PIECE_JOINTE" ("ID") ON DELETE CASCADE ENABLE;
+
+-- PIECE_JOINTE_HCFK
+ALTER TABLE "PIECE_JOINTE" ADD CONSTRAINT "PIECE_JOINTE_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- PIECE_JOINTE_HDFK
+ALTER TABLE "PIECE_JOINTE" ADD CONSTRAINT "PIECE_JOINTE_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- PIECE_JOINTE_HMFK
+ALTER TABLE "PIECE_JOINTE" ADD CONSTRAINT "PIECE_JOINTE_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- PIECE_JOINTE_INTERVENANT_FK
+ALTER TABLE "PIECE_JOINTE" ADD CONSTRAINT "PIECE_JOINTE_INTERVENANT_FK" FOREIGN KEY ("INTERVENANT_ID")
+	  REFERENCES "INTERVENANT" ("ID") ENABLE;
+
+-- PIECE_JOINTE_VFK
+ALTER TABLE "PIECE_JOINTE" ADD CONSTRAINT "PIECE_JOINTE_VFK" FOREIGN KEY ("VALIDATION_ID")
+	  REFERENCES "VALIDATION" ("ID") ON DELETE SET NULL ENABLE;
+
+-- PJ_TYPE_PIECE_JOINTE_FK
+ALTER TABLE "PIECE_JOINTE" ADD CONSTRAINT "PJ_TYPE_PIECE_JOINTE_FK" FOREIGN KEY ("TYPE_PIECE_JOINTE_ID")
+	  REFERENCES "TYPE_PIECE_JOINTE" ("ID") ON DELETE CASCADE ENABLE;
+
+-- PLAFONDAPP_ANNEE_DFK
+ALTER TABLE "PLAFOND_APPLICATION" ADD CONSTRAINT "PLAFONDAPP_ANNEE_DFK" FOREIGN KEY ("ANNEE_DEBUT_ID")
+	  REFERENCES "ANNEE" ("ID") ENABLE;
+
+-- PLAFONDAPP_ANNEE_FFK
+ALTER TABLE "PLAFOND_APPLICATION" ADD CONSTRAINT "PLAFONDAPP_ANNEE_FFK" FOREIGN KEY ("ANNEE_FIN_ID")
+	  REFERENCES "ANNEE" ("ID") ENABLE;
+
+-- PLAFONDAPP_PLAFOND_ETAT_FK
+ALTER TABLE "PLAFOND_APPLICATION" ADD CONSTRAINT "PLAFONDAPP_PLAFOND_ETAT_FK" FOREIGN KEY ("PLAFOND_ETAT_ID")
+	  REFERENCES "PLAFOND_ETAT" ("ID") ON DELETE CASCADE ENABLE;
+
+-- PLAFONDAPP_PLAFOND_FK
+ALTER TABLE "PLAFOND_APPLICATION" ADD CONSTRAINT "PLAFONDAPP_PLAFOND_FK" FOREIGN KEY ("PLAFOND_ID")
+	  REFERENCES "PLAFOND" ("ID") ON DELETE CASCADE ENABLE;
+
+-- PLAFONDAPP_TVH_FK
+ALTER TABLE "PLAFOND_APPLICATION" ADD CONSTRAINT "PLAFONDAPP_TVH_FK" FOREIGN KEY ("TYPE_VOLUME_HORAIRE_ID")
+	  REFERENCES "TYPE_VOLUME_HORAIRE" ("ID") ON DELETE CASCADE ENABLE;
+
+-- PRIVILEGE_CATEGORIE_FK
+ALTER TABLE "PRIVILEGE" ADD CONSTRAINT "PRIVILEGE_CATEGORIE_FK" FOREIGN KEY ("CATEGORIE_ID")
+	  REFERENCES "CATEGORIE_PRIVILEGE" ("ID") ON DELETE CASCADE ENABLE;
+
+-- ROLE_HCFK
+ALTER TABLE "ROLE" ADD CONSTRAINT "ROLE_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- ROLE_HDFK
+ALTER TABLE "ROLE" ADD CONSTRAINT "ROLE_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- ROLE_HMFK
+ALTER TABLE "ROLE" ADD CONSTRAINT "ROLE_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- ROLE_PERIMETRE_FK
+ALTER TABLE "ROLE" ADD CONSTRAINT "ROLE_PERIMETRE_FK" FOREIGN KEY ("PERIMETRE_ID")
+	  REFERENCES "PERIMETRE" ("ID") ENABLE;
+
+-- ROLE_PRIVILEGE_PRIVILEGE_FK
+ALTER TABLE "ROLE_PRIVILEGE" ADD CONSTRAINT "ROLE_PRIVILEGE_PRIVILEGE_FK" FOREIGN KEY ("PRIVILEGE_ID")
+	  REFERENCES "PRIVILEGE" ("ID") ON DELETE CASCADE ENABLE;
+
+-- ROLE_PRIVILEGE_ROLE_FK
+ALTER TABLE "ROLE_PRIVILEGE" ADD CONSTRAINT "ROLE_PRIVILEGE_ROLE_FK" FOREIGN KEY ("ROLE_ID")
+	  REFERENCES "ROLE" ("ID") ON DELETE CASCADE ENABLE;
+
+-- RSV_TYPE_INTERVENANT_FK
+ALTER TABLE "REGLE_STRUCTURE_VALIDATION" ADD CONSTRAINT "RSV_TYPE_INTERVENANT_FK" FOREIGN KEY ("TYPE_INTERVENANT_ID")
+	  REFERENCES "TYPE_INTERVENANT" ("ID") ENABLE;
+
+-- RSV_TYPE_VOLUME_HORAIRE_FK
+ALTER TABLE "REGLE_STRUCTURE_VALIDATION" ADD CONSTRAINT "RSV_TYPE_VOLUME_HORAIRE_FK" FOREIGN KEY ("TYPE_VOLUME_HORAIRE_ID")
+	  REFERENCES "TYPE_VOLUME_HORAIRE" ("ID") ENABLE;
+
+-- SCENARIO_HCFK
+ALTER TABLE "SCENARIO" ADD CONSTRAINT "SCENARIO_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- SCENARIO_HDFK
+ALTER TABLE "SCENARIO" ADD CONSTRAINT "SCENARIO_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- SCENARIO_HMFK
+ALTER TABLE "SCENARIO" ADD CONSTRAINT "SCENARIO_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- SCENARIO_LIEN_HCFK
+ALTER TABLE "SCENARIO_LIEN" ADD CONSTRAINT "SCENARIO_LIEN_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- SCENARIO_LIEN_HDFK
+ALTER TABLE "SCENARIO_LIEN" ADD CONSTRAINT "SCENARIO_LIEN_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- SCENARIO_LIEN_HMFK
+ALTER TABLE "SCENARIO_LIEN" ADD CONSTRAINT "SCENARIO_LIEN_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- SCENARIO_LIEN_LIEN_FK
+ALTER TABLE "SCENARIO_LIEN" ADD CONSTRAINT "SCENARIO_LIEN_LIEN_FK" FOREIGN KEY ("LIEN_ID")
+	  REFERENCES "LIEN" ("ID") ON DELETE CASCADE ENABLE;
+
+-- SCENARIO_LIEN_SCENARIO_FK
+ALTER TABLE "SCENARIO_LIEN" ADD CONSTRAINT "SCENARIO_LIEN_SCENARIO_FK" FOREIGN KEY ("SCENARIO_ID")
+	  REFERENCES "SCENARIO" ("ID") ON DELETE CASCADE ENABLE;
+
+-- SCENARIO_LIEN_SOURCE_FK
+ALTER TABLE "SCENARIO_LIEN" ADD CONSTRAINT "SCENARIO_LIEN_SOURCE_FK" FOREIGN KEY ("SOURCE_ID")
+	  REFERENCES "SOURCE" ("ID") ENABLE;
+
+-- SCENARIO_NOEUD_HCFK
+ALTER TABLE "SCENARIO_NOEUD" ADD CONSTRAINT "SCENARIO_NOEUD_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- SCENARIO_NOEUD_HDFK
+ALTER TABLE "SCENARIO_NOEUD" ADD CONSTRAINT "SCENARIO_NOEUD_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- SCENARIO_NOEUD_HMFK
+ALTER TABLE "SCENARIO_NOEUD" ADD CONSTRAINT "SCENARIO_NOEUD_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- SCENARIO_NOEUD_NOEUD_FK
+ALTER TABLE "SCENARIO_NOEUD" ADD CONSTRAINT "SCENARIO_NOEUD_NOEUD_FK" FOREIGN KEY ("NOEUD_ID")
+	  REFERENCES "NOEUD" ("ID") ON DELETE CASCADE ENABLE;
+
+-- SCENARIO_NOEUD_SCENARIO_FK
+ALTER TABLE "SCENARIO_NOEUD" ADD CONSTRAINT "SCENARIO_NOEUD_SCENARIO_FK" FOREIGN KEY ("SCENARIO_ID")
+	  REFERENCES "SCENARIO" ("ID") ON DELETE CASCADE ENABLE;
+
+-- SCENARIO_NOEUD_SOURCE_FK
+ALTER TABLE "SCENARIO_NOEUD" ADD CONSTRAINT "SCENARIO_NOEUD_SOURCE_FK" FOREIGN KEY ("SOURCE_ID")
+	  REFERENCES "SOURCE" ("ID") ENABLE;
+
+-- SCENARIO_STRUCTURE_FK
+ALTER TABLE "SCENARIO" ADD CONSTRAINT "SCENARIO_STRUCTURE_FK" FOREIGN KEY ("STRUCTURE_ID")
+	  REFERENCES "STRUCTURE" ("ID") ENABLE;
+
+-- SERVICE_ELEMENT_PEDAGOGIQUE_FK
+ALTER TABLE "SERVICE" ADD CONSTRAINT "SERVICE_ELEMENT_PEDAGOGIQUE_FK" FOREIGN KEY ("ELEMENT_PEDAGOGIQUE_ID")
+	  REFERENCES "ELEMENT_PEDAGOGIQUE" ("ID") ENABLE;
+
+-- SERVICE_ETABLISSEMENT_FK
+ALTER TABLE "SERVICE" ADD CONSTRAINT "SERVICE_ETABLISSEMENT_FK" FOREIGN KEY ("ETABLISSEMENT_ID")
+	  REFERENCES "ETABLISSEMENT" ("ID") ENABLE;
+
+-- SERVICE_HCFK
+ALTER TABLE "SERVICE" ADD CONSTRAINT "SERVICE_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- SERVICE_HDFK
+ALTER TABLE "SERVICE" ADD CONSTRAINT "SERVICE_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- SERVICE_HMFK
+ALTER TABLE "SERVICE" ADD CONSTRAINT "SERVICE_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- SERVICE_INTERVENANT_FK
+ALTER TABLE "SERVICE" ADD CONSTRAINT "SERVICE_INTERVENANT_FK" FOREIGN KEY ("INTERVENANT_ID")
+	  REFERENCES "INTERVENANT" ("ID") ENABLE;
+
+-- SERVICE_REFERENTIEL_HCFK
+ALTER TABLE "SERVICE_REFERENTIEL" ADD CONSTRAINT "SERVICE_REFERENTIEL_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- SERVICE_REFERENTIEL_HDFK
+ALTER TABLE "SERVICE_REFERENTIEL" ADD CONSTRAINT "SERVICE_REFERENTIEL_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- SERVICE_REFERENTIEL_HMFK
+ALTER TABLE "SERVICE_REFERENTIEL" ADD CONSTRAINT "SERVICE_REFERENTIEL_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- SEUIL_CHARGE_ANNEE_FK
+ALTER TABLE "SEUIL_CHARGE" ADD CONSTRAINT "SEUIL_CHARGE_ANNEE_FK" FOREIGN KEY ("ANNEE_ID")
+	  REFERENCES "ANNEE" ("ID") ENABLE;
+
+-- SEUIL_CH_GT_FORMATION_FK
+ALTER TABLE "SEUIL_CHARGE" ADD CONSTRAINT "SEUIL_CH_GT_FORMATION_FK" FOREIGN KEY ("GROUPE_TYPE_FORMATION_ID")
+	  REFERENCES "GROUPE_TYPE_FORMATION" ("ID") ENABLE;
+
+-- SEUIL_CH_SCENARIO_FK
+ALTER TABLE "SEUIL_CHARGE" ADD CONSTRAINT "SEUIL_CH_SCENARIO_FK" FOREIGN KEY ("SCENARIO_ID")
+	  REFERENCES "SCENARIO" ("ID") ENABLE;
+
+-- SEUIL_CH_STRUCTURE_FK
+ALTER TABLE "SEUIL_CHARGE" ADD CONSTRAINT "SEUIL_CH_STRUCTURE_FK" FOREIGN KEY ("STRUCTURE_ID")
+	  REFERENCES "STRUCTURE" ("ID") ENABLE;
+
+-- SEUIL_CH_TYPE_INTERVENTION_FK
+ALTER TABLE "SEUIL_CHARGE" ADD CONSTRAINT "SEUIL_CH_TYPE_INTERVENTION_FK" FOREIGN KEY ("TYPE_INTERVENTION_ID")
+	  REFERENCES "TYPE_INTERVENTION" ("ID") ENABLE;
+
+-- SEUIL_CH_UTILISATEUR_HCFK
+ALTER TABLE "SEUIL_CHARGE" ADD CONSTRAINT "SEUIL_CH_UTILISATEUR_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- SEUIL_CH_UTILISATEUR_HDFK
+ALTER TABLE "SEUIL_CHARGE" ADD CONSTRAINT "SEUIL_CH_UTILISATEUR_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- SEUIL_CH_UTILISATEUR_HMFK
+ALTER TABLE "SEUIL_CHARGE" ADD CONSTRAINT "SEUIL_CH_UTILISATEUR_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- SNE_ETAPE_FK
+ALTER TABLE "SCENARIO_NOEUD_EFFECTIF" ADD CONSTRAINT "SNE_ETAPE_FK" FOREIGN KEY ("ETAPE_ID")
+	  REFERENCES "ETAPE" ("ID") ENABLE;
+
+-- SNE_SCENARIO_NOEUD_FK
+ALTER TABLE "SCENARIO_NOEUD_EFFECTIF" ADD CONSTRAINT "SNE_SCENARIO_NOEUD_FK" FOREIGN KEY ("SCENARIO_NOEUD_ID")
+	  REFERENCES "SCENARIO_NOEUD" ("ID") ON DELETE CASCADE ENABLE;
+
+-- SNE_TYPE_HEURES_FK
+ALTER TABLE "SCENARIO_NOEUD_EFFECTIF" ADD CONSTRAINT "SNE_TYPE_HEURES_FK" FOREIGN KEY ("TYPE_HEURES_ID")
+	  REFERENCES "TYPE_HEURES" ("ID") ON DELETE CASCADE ENABLE;
+
+-- SNS_SCENARIO_NOEUD_FK
+ALTER TABLE "SCENARIO_NOEUD_SEUIL" ADD CONSTRAINT "SNS_SCENARIO_NOEUD_FK" FOREIGN KEY ("SCENARIO_NOEUD_ID")
+	  REFERENCES "SCENARIO_NOEUD" ("ID") ON DELETE CASCADE ENABLE;
+
+-- SNS_TYPE_INTERVENTION_FK
+ALTER TABLE "SCENARIO_NOEUD_SEUIL" ADD CONSTRAINT "SNS_TYPE_INTERVENTION_FK" FOREIGN KEY ("TYPE_INTERVENTION_ID")
+	  REFERENCES "TYPE_INTERVENTION" ("ID") ON DELETE CASCADE ENABLE;
+
+-- SRFR_FK
+ALTER TABLE "SERVICE_REFERENTIEL" ADD CONSTRAINT "SRFR_FK" FOREIGN KEY ("FONCTION_ID")
+	  REFERENCES "FONCTION_REFERENTIEL" ("ID") ENABLE;
+
+-- SR_INTERVENANT_FK
+ALTER TABLE "SERVICE_REFERENTIEL" ADD CONSTRAINT "SR_INTERVENANT_FK" FOREIGN KEY ("INTERVENANT_ID")
+	  REFERENCES "INTERVENANT" ("ID") ON DELETE CASCADE ENABLE;
+
+-- SR_STRUCTURE_FK
+ALTER TABLE "SERVICE_REFERENTIEL" ADD CONSTRAINT "SR_STRUCTURE_FK" FOREIGN KEY ("STRUCTURE_ID")
+	  REFERENCES "STRUCTURE" ("ID") ENABLE;
+
+-- STATUT_INTERVENANT_HCFK
+ALTER TABLE "STATUT_INTERVENANT" ADD CONSTRAINT "STATUT_INTERVENANT_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- STATUT_INTERVENANT_HDFK
+ALTER TABLE "STATUT_INTERVENANT" ADD CONSTRAINT "STATUT_INTERVENANT_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- STATUT_INTERVENANT_HMFK
+ALTER TABLE "STATUT_INTERVENANT" ADD CONSTRAINT "STATUT_INTERVENANT_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- STATUT_INTERVENANT_SOURCE_FK
+ALTER TABLE "STATUT_INTERVENANT" ADD CONSTRAINT "STATUT_INTERVENANT_SOURCE_FK" FOREIGN KEY ("SOURCE_ID")
+	  REFERENCES "SOURCE" ("ID") ON DELETE CASCADE ENABLE;
+
+-- STATUT_INTERVENANT_TYPE_FK
+ALTER TABLE "STATUT_INTERVENANT" ADD CONSTRAINT "STATUT_INTERVENANT_TYPE_FK" FOREIGN KEY ("TYPE_INTERVENANT_ID")
+	  REFERENCES "TYPE_INTERVENANT" ("ID") ENABLE;
+
+-- STAT_PRIV_PRIVILEGE_FK
+ALTER TABLE "STATUT_PRIVILEGE" ADD CONSTRAINT "STAT_PRIV_PRIVILEGE_FK" FOREIGN KEY ("PRIVILEGE_ID")
+	  REFERENCES "PRIVILEGE" ("ID") ON DELETE CASCADE ENABLE;
+
+-- STAT_PRIV_STATUT_FK
+ALTER TABLE "STATUT_PRIVILEGE" ADD CONSTRAINT "STAT_PRIV_STATUT_FK" FOREIGN KEY ("STATUT_ID")
+	  REFERENCES "STATUT_INTERVENANT" ("ID") ON DELETE CASCADE ENABLE;
+
+-- STRUCTURE_HCFK
+ALTER TABLE "STRUCTURE" ADD CONSTRAINT "STRUCTURE_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- STRUCTURE_HDFK
+ALTER TABLE "STRUCTURE" ADD CONSTRAINT "STRUCTURE_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- STRUCTURE_HMFK
+ALTER TABLE "STRUCTURE" ADD CONSTRAINT "STRUCTURE_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- STRUCTURE_SOURCE_FK
+ALTER TABLE "STRUCTURE" ADD CONSTRAINT "STRUCTURE_SOURCE_FK" FOREIGN KEY ("SOURCE_ID")
+	  REFERENCES "SOURCE" ("ID") ON DELETE CASCADE ENABLE;
+
+-- TAS_STATUT_INTERVENANT_FK
+ALTER TABLE "TYPE_AGREMENT_STATUT" ADD CONSTRAINT "TAS_STATUT_INTERVENANT_FK" FOREIGN KEY ("STATUT_INTERVENANT_ID")
+	  REFERENCES "STATUT_INTERVENANT" ("ID") ON DELETE CASCADE ENABLE;
+
+-- TAS_TYPE_AGREMENT_FK
+ALTER TABLE "TYPE_AGREMENT_STATUT" ADD CONSTRAINT "TAS_TYPE_AGREMENT_FK" FOREIGN KEY ("TYPE_AGREMENT_ID")
+	  REFERENCES "TYPE_AGREMENT" ("ID") ON DELETE CASCADE ENABLE;
+
+-- TAUX_HORAIRE_HETD_HCFK
+ALTER TABLE "TAUX_HORAIRE_HETD" ADD CONSTRAINT "TAUX_HORAIRE_HETD_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- TAUX_HORAIRE_HETD_HDFK
+ALTER TABLE "TAUX_HORAIRE_HETD" ADD CONSTRAINT "TAUX_HORAIRE_HETD_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- TAUX_HORAIRE_HETD_HMFK
+ALTER TABLE "TAUX_HORAIRE_HETD" ADD CONSTRAINT "TAUX_HORAIRE_HETD_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- TBCH_ANNEE_FK
+ALTER TABLE "TBL_CHARGENS" ADD CONSTRAINT "TBCH_ANNEE_FK" FOREIGN KEY ("ANNEE_ID")
+	  REFERENCES "ANNEE" ("ID") ON DELETE CASCADE ENABLE;
+
+-- TBCH_ELEMENT_PEDAGOGIQUE_FK
+ALTER TABLE "TBL_CHARGENS" ADD CONSTRAINT "TBCH_ELEMENT_PEDAGOGIQUE_FK" FOREIGN KEY ("ELEMENT_PEDAGOGIQUE_ID")
+	  REFERENCES "ELEMENT_PEDAGOGIQUE" ("ID") ON DELETE CASCADE ENABLE;
+
+-- TBCH_ETAPE_FK
+ALTER TABLE "TBL_CHARGENS" ADD CONSTRAINT "TBCH_ETAPE_FK" FOREIGN KEY ("ETAPE_ID")
+	  REFERENCES "ETAPE" ("ID") ON DELETE CASCADE ENABLE;
+
+-- TBCH_ETAPE_FKV1
+ALTER TABLE "TBL_CHARGENS" ADD CONSTRAINT "TBCH_ETAPE_FKV1" FOREIGN KEY ("ETAPE_ENS_ID")
+	  REFERENCES "ETAPE" ("ID") ON DELETE CASCADE ENABLE;
+
+-- TBCH_GROUPE_TYPE_FORMATION_FK
+ALTER TABLE "TBL_CHARGENS" ADD CONSTRAINT "TBCH_GROUPE_TYPE_FORMATION_FK" FOREIGN KEY ("GROUPE_TYPE_FORMATION_ID")
+	  REFERENCES "GROUPE_TYPE_FORMATION" ("ID") ON DELETE CASCADE ENABLE;
+
+-- TBCH_NOEUD_FK
+ALTER TABLE "TBL_CHARGENS" ADD CONSTRAINT "TBCH_NOEUD_FK" FOREIGN KEY ("NOEUD_ID")
+	  REFERENCES "NOEUD" ("ID") ON DELETE CASCADE ENABLE;
+
+-- TBCH_SCENARIO_FK
+ALTER TABLE "TBL_CHARGENS" ADD CONSTRAINT "TBCH_SCENARIO_FK" FOREIGN KEY ("SCENARIO_ID")
+	  REFERENCES "SCENARIO" ("ID") ON DELETE CASCADE ENABLE;
+
+-- TBCH_STRUCTURE_FK
+ALTER TABLE "TBL_CHARGENS" ADD CONSTRAINT "TBCH_STRUCTURE_FK" FOREIGN KEY ("STRUCTURE_ID")
+	  REFERENCES "STRUCTURE" ("ID") ON DELETE CASCADE ENABLE;
+
+-- TBCH_TYPE_HEURES_FK
+ALTER TABLE "TBL_CHARGENS" ADD CONSTRAINT "TBCH_TYPE_HEURES_FK" FOREIGN KEY ("TYPE_HEURES_ID")
+	  REFERENCES "TYPE_HEURES" ("ID") ON DELETE CASCADE ENABLE;
+
+-- TBCH_TYPE_INTERVENTION_FK
+ALTER TABLE "TBL_CHARGENS" ADD CONSTRAINT "TBCH_TYPE_INTERVENTION_FK" FOREIGN KEY ("TYPE_INTERVENTION_ID")
+	  REFERENCES "TYPE_INTERVENTION" ("ID") ON DELETE CASCADE ENABLE;
+
+-- TBL_AGR_AGREMENT_FK
+ALTER TABLE "TBL_AGREMENT" ADD CONSTRAINT "TBL_AGR_AGREMENT_FK" FOREIGN KEY ("AGREMENT_ID")
+	  REFERENCES "AGREMENT" ("ID") ON DELETE CASCADE ENABLE;
+
+-- TBL_AGR_ANNEE_FK
+ALTER TABLE "TBL_AGREMENT" ADD CONSTRAINT "TBL_AGR_ANNEE_FK" FOREIGN KEY ("ANNEE_ID")
+	  REFERENCES "ANNEE" ("ID") ON DELETE CASCADE ENABLE;
+
+-- TBL_AGR_INTERVENANT_FK
+ALTER TABLE "TBL_AGREMENT" ADD CONSTRAINT "TBL_AGR_INTERVENANT_FK" FOREIGN KEY ("INTERVENANT_ID")
+	  REFERENCES "INTERVENANT" ("ID") ON DELETE CASCADE ENABLE;
+
+-- TBL_AGR_STRUCTURE_FK
+ALTER TABLE "TBL_AGREMENT" ADD CONSTRAINT "TBL_AGR_STRUCTURE_FK" FOREIGN KEY ("STRUCTURE_ID")
+	  REFERENCES "STRUCTURE" ("ID") ON DELETE CASCADE ENABLE;
+
+-- TBL_AGR_TYPE_AGREMENT_FK
+ALTER TABLE "TBL_AGREMENT" ADD CONSTRAINT "TBL_AGR_TYPE_AGREMENT_FK" FOREIGN KEY ("TYPE_AGREMENT_ID")
+	  REFERENCES "TYPE_AGREMENT" ("ID") ON DELETE CASCADE ENABLE;
+
+-- TBL_CLOTURE_REALISE_ANNEE_FK
+ALTER TABLE "TBL_CLOTURE_REALISE" ADD CONSTRAINT "TBL_CLOTURE_REALISE_ANNEE_FK" FOREIGN KEY ("ANNEE_ID")
+	  REFERENCES "ANNEE" ("ID") ON DELETE CASCADE ENABLE;
+
+-- TBL_CLO_REAL_INTERVENANT_FK
+ALTER TABLE "TBL_CLOTURE_REALISE" ADD CONSTRAINT "TBL_CLO_REAL_INTERVENANT_FK" FOREIGN KEY ("INTERVENANT_ID")
+	  REFERENCES "INTERVENANT" ("ID") ON DELETE CASCADE ENABLE;
+
+-- TBL_CONTRAT_ANNEE_FK
+ALTER TABLE "TBL_CONTRAT" ADD CONSTRAINT "TBL_CONTRAT_ANNEE_FK" FOREIGN KEY ("ANNEE_ID")
+	  REFERENCES "ANNEE" ("ID") ON DELETE CASCADE ENABLE;
+
+-- TBL_CONTRAT_INTERVENANT_FK
+ALTER TABLE "TBL_CONTRAT" ADD CONSTRAINT "TBL_CONTRAT_INTERVENANT_FK" FOREIGN KEY ("INTERVENANT_ID")
+	  REFERENCES "INTERVENANT" ("ID") ON DELETE CASCADE ENABLE;
+
+-- TBL_CONTRAT_STRUCTURE_FK
+ALTER TABLE "TBL_CONTRAT" ADD CONSTRAINT "TBL_CONTRAT_STRUCTURE_FK" FOREIGN KEY ("STRUCTURE_ID")
+	  REFERENCES "STRUCTURE" ("ID") ON DELETE CASCADE ENABLE;
+
+-- TBL_CSD_ANNEE_FK
+ALTER TABLE "TBL_CHARGENS_SEUILS_DEF" ADD CONSTRAINT "TBL_CSD_ANNEE_FK" FOREIGN KEY ("ANNEE_ID")
+	  REFERENCES "ANNEE" ("ID") ENABLE;
+
+-- TBL_CSD_GTF_FK
+ALTER TABLE "TBL_CHARGENS_SEUILS_DEF" ADD CONSTRAINT "TBL_CSD_GTF_FK" FOREIGN KEY ("GROUPE_TYPE_FORMATION_ID")
+	  REFERENCES "GROUPE_TYPE_FORMATION" ("ID") ENABLE;
+
+-- TBL_CSD_SCENARIO_FK
+ALTER TABLE "TBL_CHARGENS_SEUILS_DEF" ADD CONSTRAINT "TBL_CSD_SCENARIO_FK" FOREIGN KEY ("SCENARIO_ID")
+	  REFERENCES "SCENARIO" ("ID") ENABLE;
+
+-- TBL_CSD_STRUCTURE_FK
+ALTER TABLE "TBL_CHARGENS_SEUILS_DEF" ADD CONSTRAINT "TBL_CSD_STRUCTURE_FK" FOREIGN KEY ("STRUCTURE_ID")
+	  REFERENCES "STRUCTURE" ("ID") ENABLE;
+
+-- TBL_CSD_TYPE_INTERVENTION_FK
+ALTER TABLE "TBL_CHARGENS_SEUILS_DEF" ADD CONSTRAINT "TBL_CSD_TYPE_INTERVENTION_FK" FOREIGN KEY ("TYPE_INTERVENTION_ID")
+	  REFERENCES "TYPE_INTERVENTION" ("ID") ENABLE;
+
+-- TBL_DEMS_TBL_FK
+ALTER TABLE "TBL_DEMS" ADD CONSTRAINT "TBL_DEMS_TBL_FK" FOREIGN KEY ("TBL_NAME")
+	  REFERENCES "TBL" ("TBL_NAME") ON DELETE CASCADE ENABLE;
+
+-- TBL_DMLIQ_ANNEE_FK
+ALTER TABLE "TBL_DMEP_LIQUIDATION" ADD CONSTRAINT "TBL_DMLIQ_ANNEE_FK" FOREIGN KEY ("ANNEE_ID")
+	  REFERENCES "ANNEE" ("ID") ON DELETE CASCADE ENABLE;
+
+-- TBL_DMLIQ_STRUCTURE_FK
+ALTER TABLE "TBL_DMEP_LIQUIDATION" ADD CONSTRAINT "TBL_DMLIQ_STRUCTURE_FK" FOREIGN KEY ("STRUCTURE_ID")
+	  REFERENCES "STRUCTURE" ("ID") ON DELETE CASCADE ENABLE;
+
+-- TBL_DMLIQ_TYPE_RESSOURCE_FK
+ALTER TABLE "TBL_DMEP_LIQUIDATION" ADD CONSTRAINT "TBL_DMLIQ_TYPE_RESSOURCE_FK" FOREIGN KEY ("TYPE_RESSOURCE_ID")
+	  REFERENCES "TYPE_RESSOURCE" ("ID") ON DELETE CASCADE ENABLE;
+
+-- TBL_DOSSIER_ANNEE_FK
+ALTER TABLE "TBL_DOSSIER" ADD CONSTRAINT "TBL_DOSSIER_ANNEE_FK" FOREIGN KEY ("ANNEE_ID")
+	  REFERENCES "ANNEE" ("ID") ON DELETE CASCADE ENABLE;
+
+-- TBL_DOSSIER_DOSSIER_FK
+ALTER TABLE "TBL_DOSSIER" ADD CONSTRAINT "TBL_DOSSIER_DOSSIER_FK" FOREIGN KEY ("DOSSIER_ID")
+	  REFERENCES "DOSSIER" ("ID") ON DELETE CASCADE ENABLE;
+
+-- TBL_DOSSIER_INTERVENANT_FK
+ALTER TABLE "TBL_DOSSIER" ADD CONSTRAINT "TBL_DOSSIER_INTERVENANT_FK" FOREIGN KEY ("INTERVENANT_ID")
+	  REFERENCES "INTERVENANT" ("ID") ON DELETE CASCADE ENABLE;
+
+-- TBL_DOSSIER_VALIDATION_FK
+ALTER TABLE "TBL_DOSSIER" ADD CONSTRAINT "TBL_DOSSIER_VALIDATION_FK" FOREIGN KEY ("VALIDATION_ID")
+	  REFERENCES "VALIDATION" ("ID") ON DELETE CASCADE ENABLE;
+
+-- TBL_LIEN_LIEN_FK
+ALTER TABLE "TBL_LIEN" ADD CONSTRAINT "TBL_LIEN_LIEN_FK" FOREIGN KEY ("LIEN_ID")
+	  REFERENCES "LIEN" ("ID") ENABLE;
+
+-- TBL_LIEN_NOEUD_INF_FK
+ALTER TABLE "TBL_LIEN" ADD CONSTRAINT "TBL_LIEN_NOEUD_INF_FK" FOREIGN KEY ("NOEUD_INF_ID")
+	  REFERENCES "NOEUD" ("ID") ENABLE;
+
+-- TBL_LIEN_NOEUD_SUP_FK
+ALTER TABLE "TBL_LIEN" ADD CONSTRAINT "TBL_LIEN_NOEUD_SUP_FK" FOREIGN KEY ("NOEUD_SUP_ID")
+	  REFERENCES "NOEUD" ("ID") ENABLE;
+
+-- TBL_LIEN_SCENARIO_FK
+ALTER TABLE "TBL_LIEN" ADD CONSTRAINT "TBL_LIEN_SCENARIO_FK" FOREIGN KEY ("SCENARIO_ID")
+	  REFERENCES "SCENARIO" ("ID") ENABLE;
+
+-- TBL_LIEN_SCENARIO_LIEN_FK
+ALTER TABLE "TBL_LIEN" ADD CONSTRAINT "TBL_LIEN_SCENARIO_LIEN_FK" FOREIGN KEY ("SCENARIO_LIEN_ID")
+	  REFERENCES "SCENARIO_LIEN" ("ID") ENABLE;
+
+-- TBL_LIEN_STRUCTURE_FK
+ALTER TABLE "TBL_LIEN" ADD CONSTRAINT "TBL_LIEN_STRUCTURE_FK" FOREIGN KEY ("STRUCTURE_ID")
+	  REFERENCES "STRUCTURE" ("ID") ENABLE;
+
+-- TBL_PAIEMENT_ANNEE_FK
+ALTER TABLE "TBL_PAIEMENT" ADD CONSTRAINT "TBL_PAIEMENT_ANNEE_FK" FOREIGN KEY ("ANNEE_ID")
+	  REFERENCES "ANNEE" ("ID") ON DELETE CASCADE ENABLE;
+
+-- TBL_PAIEMENT_FRSR_FK
+ALTER TABLE "TBL_PAIEMENT" ADD CONSTRAINT "TBL_PAIEMENT_FRSR_FK" FOREIGN KEY ("FORMULE_RES_SERVICE_REF_ID")
+	  REFERENCES "FORMULE_RESULTAT_SERVICE_REF" ("ID") ON DELETE CASCADE ENABLE;
+
+-- TBL_PAIEMENT_FRS_FK
+ALTER TABLE "TBL_PAIEMENT" ADD CONSTRAINT "TBL_PAIEMENT_FRS_FK" FOREIGN KEY ("FORMULE_RES_SERVICE_ID")
+	  REFERENCES "FORMULE_RESULTAT_SERVICE" ("ID") ON DELETE CASCADE ENABLE;
+
+-- TBL_PAIEMENT_INTERVENANT_FK
+ALTER TABLE "TBL_PAIEMENT" ADD CONSTRAINT "TBL_PAIEMENT_INTERVENANT_FK" FOREIGN KEY ("INTERVENANT_ID")
+	  REFERENCES "INTERVENANT" ("ID") ON DELETE CASCADE ENABLE;
+
+-- TBL_PAIEMENT_MEP_FK
+ALTER TABLE "TBL_PAIEMENT" ADD CONSTRAINT "TBL_PAIEMENT_MEP_FK" FOREIGN KEY ("MISE_EN_PAIEMENT_ID")
+	  REFERENCES "MISE_EN_PAIEMENT" ("ID") ON DELETE CASCADE ENABLE;
+
+-- TBL_PAIEMENT_PERIODE_FK
+ALTER TABLE "TBL_PAIEMENT" ADD CONSTRAINT "TBL_PAIEMENT_PERIODE_FK" FOREIGN KEY ("PERIODE_PAIEMENT_ID")
+	  REFERENCES "PERIODE" ("ID") ON DELETE CASCADE ENABLE;
+
+-- TBL_PAIEMENT_STRUCTURE_FK
+ALTER TABLE "TBL_PAIEMENT" ADD CONSTRAINT "TBL_PAIEMENT_STRUCTURE_FK" FOREIGN KEY ("STRUCTURE_ID")
+	  REFERENCES "STRUCTURE" ("ID") ON DELETE CASCADE ENABLE;
+
+-- TBL_PIECE_JOINTE_ANNEE_FK
+ALTER TABLE "TBL_PIECE_JOINTE" ADD CONSTRAINT "TBL_PIECE_JOINTE_ANNEE_FK" FOREIGN KEY ("ANNEE_ID")
+	  REFERENCES "ANNEE" ("ID") ON DELETE CASCADE ENABLE;
+
+-- TBL_PJD_ANNEE_FK
+ALTER TABLE "TBL_PIECE_JOINTE_DEMANDE" ADD CONSTRAINT "TBL_PJD_ANNEE_FK" FOREIGN KEY ("ANNEE_ID")
+	  REFERENCES "ANNEE" ("ID") ON DELETE CASCADE ENABLE;
+
+-- TBL_PJD_INTERVENANT_FK
+ALTER TABLE "TBL_PIECE_JOINTE_DEMANDE" ADD CONSTRAINT "TBL_PJD_INTERVENANT_FK" FOREIGN KEY ("INTERVENANT_ID")
+	  REFERENCES "INTERVENANT" ("ID") ON DELETE CASCADE ENABLE;
+
+-- TBL_PJD_TYPE_PIECE_JOINTE_FK
+ALTER TABLE "TBL_PIECE_JOINTE_DEMANDE" ADD CONSTRAINT "TBL_PJD_TYPE_PIECE_JOINTE_FK" FOREIGN KEY ("TYPE_PIECE_JOINTE_ID")
+	  REFERENCES "TYPE_PIECE_JOINTE" ("ID") ON DELETE CASCADE ENABLE;
+
+-- TBL_PJF_ANNEE_FK
+ALTER TABLE "TBL_PIECE_JOINTE_FOURNIE" ADD CONSTRAINT "TBL_PJF_ANNEE_FK" FOREIGN KEY ("ANNEE_ID")
+	  REFERENCES "ANNEE" ("ID") ON DELETE CASCADE ENABLE;
+
+-- TBL_PJF_FICHIER_FK
+ALTER TABLE "TBL_PIECE_JOINTE_FOURNIE" ADD CONSTRAINT "TBL_PJF_FICHIER_FK" FOREIGN KEY ("FICHIER_ID")
+	  REFERENCES "FICHIER" ("ID") ON DELETE CASCADE ENABLE;
+
+-- TBL_PJF_INTERVENANT_FK
+ALTER TABLE "TBL_PIECE_JOINTE_FOURNIE" ADD CONSTRAINT "TBL_PJF_INTERVENANT_FK" FOREIGN KEY ("INTERVENANT_ID")
+	  REFERENCES "INTERVENANT" ("ID") ON DELETE CASCADE ENABLE;
+
+-- TBL_PJF_PIECE_JOINTE_FK
+ALTER TABLE "TBL_PIECE_JOINTE_FOURNIE" ADD CONSTRAINT "TBL_PJF_PIECE_JOINTE_FK" FOREIGN KEY ("PIECE_JOINTE_ID")
+	  REFERENCES "PIECE_JOINTE" ("ID") ON DELETE CASCADE ENABLE;
+
+-- TBL_PJF_TYPE_PIECE_JOINTE_FK
+ALTER TABLE "TBL_PIECE_JOINTE_FOURNIE" ADD CONSTRAINT "TBL_PJF_TYPE_PIECE_JOINTE_FK" FOREIGN KEY ("TYPE_PIECE_JOINTE_ID")
+	  REFERENCES "TYPE_PIECE_JOINTE" ("ID") ON DELETE CASCADE ENABLE;
+
+-- TBL_PJF_VALIDATION_FK
+ALTER TABLE "TBL_PIECE_JOINTE_FOURNIE" ADD CONSTRAINT "TBL_PJF_VALIDATION_FK" FOREIGN KEY ("VALIDATION_ID")
+	  REFERENCES "VALIDATION" ("ID") ON DELETE CASCADE ENABLE;
+
+-- TBL_PJ_INTERVENANT_FK
+ALTER TABLE "TBL_PIECE_JOINTE" ADD CONSTRAINT "TBL_PJ_INTERVENANT_FK" FOREIGN KEY ("INTERVENANT_ID")
+	  REFERENCES "INTERVENANT" ("ID") ON DELETE CASCADE ENABLE;
+
+-- TBL_PJ_TYPE_PIECE_JOINTE_FK
+ALTER TABLE "TBL_PIECE_JOINTE" ADD CONSTRAINT "TBL_PJ_TYPE_PIECE_JOINTE_FK" FOREIGN KEY ("TYPE_PIECE_JOINTE_ID")
+	  REFERENCES "TYPE_PIECE_JOINTE" ("ID") ON DELETE CASCADE ENABLE;
+
+-- TBL_SERVICE_ANNEE_FK
+ALTER TABLE "TBL_SERVICE" ADD CONSTRAINT "TBL_SERVICE_ANNEE_FK" FOREIGN KEY ("ANNEE_ID")
+	  REFERENCES "ANNEE" ("ID") ON DELETE CASCADE ENABLE;
+
+-- TBL_SERVICE_ELEMENT_FK
+ALTER TABLE "TBL_SERVICE" ADD CONSTRAINT "TBL_SERVICE_ELEMENT_FK" FOREIGN KEY ("ELEMENT_PEDAGOGIQUE_ID")
+	  REFERENCES "ELEMENT_PEDAGOGIQUE" ("ID") ON DELETE CASCADE ENABLE;
+
+-- TBL_SERVICE_ETAPE_FK
+ALTER TABLE "TBL_SERVICE" ADD CONSTRAINT "TBL_SERVICE_ETAPE_FK" FOREIGN KEY ("ETAPE_ID")
+	  REFERENCES "ETAPE" ("ID") ON DELETE CASCADE ENABLE;
+
+-- TBL_SERVICE_INTERVENANT_FK
+ALTER TABLE "TBL_SERVICE" ADD CONSTRAINT "TBL_SERVICE_INTERVENANT_FK" FOREIGN KEY ("INTERVENANT_ID")
+	  REFERENCES "INTERVENANT" ("ID") ON DELETE CASCADE ENABLE;
+
+-- TBL_SERVICE_PERIODE_EP_FK
+ALTER TABLE "TBL_SERVICE" ADD CONSTRAINT "TBL_SERVICE_PERIODE_EP_FK" FOREIGN KEY ("ELEMENT_PEDAGOGIQUE_PERIODE_ID")
+	  REFERENCES "PERIODE" ("ID") ON DELETE CASCADE ENABLE;
+
+-- TBL_SERVICE_REF_ANNEE_FK
+ALTER TABLE "TBL_SERVICE_REFERENTIEL" ADD CONSTRAINT "TBL_SERVICE_REF_ANNEE_FK" FOREIGN KEY ("ANNEE_ID")
+	  REFERENCES "ANNEE" ("ID") ON DELETE CASCADE ENABLE;
+
+-- TBL_SERVICE_REF_INTERVENANT_FK
+ALTER TABLE "TBL_SERVICE_REFERENTIEL" ADD CONSTRAINT "TBL_SERVICE_REF_INTERVENANT_FK" FOREIGN KEY ("INTERVENANT_ID")
+	  REFERENCES "INTERVENANT" ("ID") ON DELETE CASCADE ENABLE;
+
+-- TBL_SERVICE_REF_STRUCTURE_FK
+ALTER TABLE "TBL_SERVICE_REFERENTIEL" ADD CONSTRAINT "TBL_SERVICE_REF_STRUCTURE_FK" FOREIGN KEY ("STRUCTURE_ID")
+	  REFERENCES "STRUCTURE" ("ID") ON DELETE CASCADE ENABLE;
+
+-- TBL_SERVICE_REF_TVH_FK
+ALTER TABLE "TBL_SERVICE_REFERENTIEL" ADD CONSTRAINT "TBL_SERVICE_REF_TVH_FK" FOREIGN KEY ("TYPE_VOLUME_HORAIRE_ID")
+	  REFERENCES "TYPE_VOLUME_HORAIRE" ("ID") ON DELETE CASCADE ENABLE;
+
+-- TBL_SERVICE_SAISIE_ANNEE_FK
+ALTER TABLE "TBL_SERVICE_SAISIE" ADD CONSTRAINT "TBL_SERVICE_SAISIE_ANNEE_FK" FOREIGN KEY ("ANNEE_ID")
+	  REFERENCES "ANNEE" ("ID") ON DELETE CASCADE ENABLE;
+
+-- TBL_SERVICE_SERVICE_FK
+ALTER TABLE "TBL_SERVICE" ADD CONSTRAINT "TBL_SERVICE_SERVICE_FK" FOREIGN KEY ("SERVICE_ID")
+	  REFERENCES "SERVICE" ("ID") ON DELETE CASCADE ENABLE;
+
+-- TBL_SERVICE_STRUCTURE_FK
+ALTER TABLE "TBL_SERVICE" ADD CONSTRAINT "TBL_SERVICE_STRUCTURE_FK" FOREIGN KEY ("STRUCTURE_ID")
+	  REFERENCES "STRUCTURE" ("ID") ON DELETE CASCADE ENABLE;
+
+-- TBL_SERVICE_STRUCTURE_FKV1
+ALTER TABLE "TBL_SERVICE" ADD CONSTRAINT "TBL_SERVICE_STRUCTURE_FKV1" FOREIGN KEY ("INTERVENANT_STRUCTURE_ID")
+	  REFERENCES "STRUCTURE" ("ID") ON DELETE CASCADE ENABLE;
+
+-- TBL_SERVICE_TINTERVENANT_FK
+ALTER TABLE "TBL_SERVICE" ADD CONSTRAINT "TBL_SERVICE_TINTERVENANT_FK" FOREIGN KEY ("TYPE_INTERVENANT_ID")
+	  REFERENCES "TYPE_INTERVENANT" ("ID") ON DELETE CASCADE ENABLE;
+
+-- TBL_SERVICE_TVH_FK
+ALTER TABLE "TBL_SERVICE" ADD CONSTRAINT "TBL_SERVICE_TVH_FK" FOREIGN KEY ("TYPE_VOLUME_HORAIRE_ID")
+	  REFERENCES "TYPE_VOLUME_HORAIRE" ("ID") ON DELETE CASCADE ENABLE;
+
+-- TBL_SRV_SAISIE_INTERVENANT_FK
+ALTER TABLE "TBL_SERVICE_SAISIE" ADD CONSTRAINT "TBL_SRV_SAISIE_INTERVENANT_FK" FOREIGN KEY ("INTERVENANT_ID")
+	  REFERENCES "INTERVENANT" ("ID") ON DELETE CASCADE ENABLE;
+
+-- TBL_WORKFLOW_ANNEE_FK
+ALTER TABLE "TBL_WORKFLOW" ADD CONSTRAINT "TBL_WORKFLOW_ANNEE_FK" FOREIGN KEY ("ANNEE_ID")
+	  REFERENCES "ANNEE" ("ID") ON DELETE CASCADE ENABLE;
+
+-- TBL_WORKFLOW_EFK
+ALTER TABLE "TBL_WORKFLOW" ADD CONSTRAINT "TBL_WORKFLOW_EFK" FOREIGN KEY ("ETAPE_ID")
+	  REFERENCES "WF_ETAPE" ("ID") ON DELETE CASCADE ENABLE;
+
+-- TBL_WORKFLOW_IFK
+ALTER TABLE "TBL_WORKFLOW" ADD CONSTRAINT "TBL_WORKFLOW_IFK" FOREIGN KEY ("INTERVENANT_ID")
+	  REFERENCES "INTERVENANT" ("ID") ON DELETE CASCADE ENABLE;
+
+-- TBL_WORKFLOW_SFK
+ALTER TABLE "TBL_WORKFLOW" ADD CONSTRAINT "TBL_WORKFLOW_SFK" FOREIGN KEY ("STRUCTURE_ID")
+	  REFERENCES "STRUCTURE" ("ID") ON DELETE CASCADE ENABLE;
+
+-- TBL_WORKFLOW_STATUT_FK
+ALTER TABLE "TBL_WORKFLOW" ADD CONSTRAINT "TBL_WORKFLOW_STATUT_FK" FOREIGN KEY ("STATUT_INTERVENANT_ID")
+	  REFERENCES "STATUT_INTERVENANT" ("ID") ON DELETE CASCADE ENABLE;
+
+-- TBL_WORKFLOW_TINTERVENANT_FK
+ALTER TABLE "TBL_WORKFLOW" ADD CONSTRAINT "TBL_WORKFLOW_TINTERVENANT_FK" FOREIGN KEY ("TYPE_INTERVENANT_ID")
+	  REFERENCES "TYPE_INTERVENANT" ("ID") ON DELETE CASCADE ENABLE;
+
+-- TD_TYPE_RESSOURCE_FK
+ALTER TABLE "TYPE_DOTATION" ADD CONSTRAINT "TD_TYPE_RESSOURCE_FK" FOREIGN KEY ("TYPE_RESSOURCE_ID")
+	  REFERENCES "TYPE_RESSOURCE" ("ID") ENABLE;
+
+-- TIEP_ELEMENT_PEDAGOGIQUE_FK
+ALTER TABLE "TYPE_INTERVENTION_EP" ADD CONSTRAINT "TIEP_ELEMENT_PEDAGOGIQUE_FK" FOREIGN KEY ("ELEMENT_PEDAGOGIQUE_ID")
+	  REFERENCES "ELEMENT_PEDAGOGIQUE" ("ID") ON DELETE CASCADE ENABLE;
+
+-- TIEP_TYPE_INTERVENTION_FK
+ALTER TABLE "TYPE_INTERVENTION_EP" ADD CONSTRAINT "TIEP_TYPE_INTERVENTION_FK" FOREIGN KEY ("TYPE_INTERVENTION_ID")
+	  REFERENCES "TYPE_INTERVENTION" ("ID") ON DELETE CASCADE ENABLE;
+
+-- TIS_ANNEE_DEBUT_FK
+ALTER TABLE "TYPE_INTERVENTION_STRUCTURE" ADD CONSTRAINT "TIS_ANNEE_DEBUT_FK" FOREIGN KEY ("ANNEE_DEBUT_ID")
+	  REFERENCES "ANNEE" ("ID") ENABLE;
+
+-- TIS_ANNEE_FIN_FK
+ALTER TABLE "TYPE_INTERVENTION_STRUCTURE" ADD CONSTRAINT "TIS_ANNEE_FIN_FK" FOREIGN KEY ("ANNEE_FIN_ID")
+	  REFERENCES "ANNEE" ("ID") ENABLE;
+
+-- TIS_STRUCTURE_FK
+ALTER TABLE "TYPE_INTERVENTION_STRUCTURE" ADD CONSTRAINT "TIS_STRUCTURE_FK" FOREIGN KEY ("STRUCTURE_ID")
+	  REFERENCES "STRUCTURE" ("ID") ON DELETE CASCADE ENABLE;
+
+-- TIS_TYPE_INTERVENTION_FK
+ALTER TABLE "TYPE_INTERVENTION_STRUCTURE" ADD CONSTRAINT "TIS_TYPE_INTERVENTION_FK" FOREIGN KEY ("TYPE_INTERVENTION_ID")
+	  REFERENCES "TYPE_INTERVENTION" ("ID") ON DELETE CASCADE ENABLE;
+
+-- TI_TYPE_INTERVENTION_FK
+ALTER TABLE "TYPE_INTERVENTION" ADD CONSTRAINT "TI_TYPE_INTERVENTION_FK" FOREIGN KEY ("TYPE_INTERVENTION_MAQUETTE_ID")
+	  REFERENCES "TYPE_INTERVENTION" ("ID") ENABLE;
+
+-- TME_ELEMENT_PEDAGOGIQUE_FK
+ALTER TABLE "TYPE_MODULATEUR_EP" ADD CONSTRAINT "TME_ELEMENT_PEDAGOGIQUE_FK" FOREIGN KEY ("ELEMENT_PEDAGOGIQUE_ID")
+	  REFERENCES "ELEMENT_PEDAGOGIQUE" ("ID") ON DELETE CASCADE ENABLE;
+
+-- TME_SOURCE_FK
+ALTER TABLE "TYPE_MODULATEUR_EP" ADD CONSTRAINT "TME_SOURCE_FK" FOREIGN KEY ("SOURCE_ID")
+	  REFERENCES "SOURCE" ("ID") ON DELETE CASCADE ENABLE;
+
+-- TME_TYPE_MODULATEUR_FK
+ALTER TABLE "TYPE_MODULATEUR_EP" ADD CONSTRAINT "TME_TYPE_MODULATEUR_FK" FOREIGN KEY ("TYPE_MODULATEUR_ID")
+	  REFERENCES "TYPE_MODULATEUR" ("ID") ON DELETE CASCADE ENABLE;
+
+-- TMS_ANNEE_DEBUT_FK
+ALTER TABLE "TYPE_MODULATEUR_STRUCTURE" ADD CONSTRAINT "TMS_ANNEE_DEBUT_FK" FOREIGN KEY ("ANNEE_DEBUT_ID")
+	  REFERENCES "ANNEE" ("ID") ENABLE;
+
+-- TMS_ANNEE_FIN_FK
+ALTER TABLE "TYPE_MODULATEUR_STRUCTURE" ADD CONSTRAINT "TMS_ANNEE_FIN_FK" FOREIGN KEY ("ANNEE_FIN_ID")
+	  REFERENCES "ANNEE" ("ID") ENABLE;
+
+-- TMS_STRUCTURE_FK
+ALTER TABLE "TYPE_MODULATEUR_STRUCTURE" ADD CONSTRAINT "TMS_STRUCTURE_FK" FOREIGN KEY ("STRUCTURE_ID")
+	  REFERENCES "STRUCTURE" ("ID") ENABLE;
+
+-- TMS_TYPE_MODUL_FK
+ALTER TABLE "TYPE_MODULATEUR_STRUCTURE" ADD CONSTRAINT "TMS_TYPE_MODUL_FK" FOREIGN KEY ("TYPE_MODULATEUR_ID")
+	  REFERENCES "TYPE_MODULATEUR" ("ID") ON DELETE CASCADE ENABLE;
+
+-- TPJS_ANNEE_DEB_FK
+ALTER TABLE "TYPE_PIECE_JOINTE_STATUT" ADD CONSTRAINT "TPJS_ANNEE_DEB_FK" FOREIGN KEY ("ANNEE_DEBUT_ID")
+	  REFERENCES "ANNEE" ("ID") ON DELETE CASCADE ENABLE;
+
+-- TPJS_ANNEE_FIN_FK
+ALTER TABLE "TYPE_PIECE_JOINTE_STATUT" ADD CONSTRAINT "TPJS_ANNEE_FIN_FK" FOREIGN KEY ("ANNEE_FIN_ID")
+	  REFERENCES "ANNEE" ("ID") ON DELETE CASCADE ENABLE;
+
+-- TPJS_STATUT_INTERVENANT_FK
+ALTER TABLE "TYPE_PIECE_JOINTE_STATUT" ADD CONSTRAINT "TPJS_STATUT_INTERVENANT_FK" FOREIGN KEY ("STATUT_INTERVENANT_ID")
+	  REFERENCES "STATUT_INTERVENANT" ("ID") ON DELETE CASCADE ENABLE;
+
+-- TPJS_TYPE_PIECE_JOINTE_FK
+ALTER TABLE "TYPE_PIECE_JOINTE_STATUT" ADD CONSTRAINT "TPJS_TYPE_PIECE_JOINTE_FK" FOREIGN KEY ("TYPE_PIECE_JOINTE_ID")
+	  REFERENCES "TYPE_PIECE_JOINTE" ("ID") ON DELETE CASCADE ENABLE;
+
+-- TVE_ANNEE_FK
+ALTER TABLE "TBL_VALIDATION_ENSEIGNEMENT" ADD CONSTRAINT "TVE_ANNEE_FK" FOREIGN KEY ("ANNEE_ID")
+	  REFERENCES "ANNEE" ("ID") ON DELETE CASCADE ENABLE;
+
+-- TVE_INTERVENANT_FK
+ALTER TABLE "TBL_VALIDATION_ENSEIGNEMENT" ADD CONSTRAINT "TVE_INTERVENANT_FK" FOREIGN KEY ("INTERVENANT_ID")
+	  REFERENCES "INTERVENANT" ("ID") ON DELETE CASCADE ENABLE;
+
+-- TVE_SERVICE_FK
+ALTER TABLE "TBL_VALIDATION_ENSEIGNEMENT" ADD CONSTRAINT "TVE_SERVICE_FK" FOREIGN KEY ("SERVICE_ID")
+	  REFERENCES "SERVICE" ("ID") ON DELETE CASCADE ENABLE;
+
+-- TVE_STRUCTURE_FK
+ALTER TABLE "TBL_VALIDATION_ENSEIGNEMENT" ADD CONSTRAINT "TVE_STRUCTURE_FK" FOREIGN KEY ("STRUCTURE_ID")
+	  REFERENCES "STRUCTURE" ("ID") ON DELETE CASCADE ENABLE;
+
+-- TVE_TYPE_VOLUME_HORAIRE_FK
+ALTER TABLE "TBL_VALIDATION_ENSEIGNEMENT" ADD CONSTRAINT "TVE_TYPE_VOLUME_HORAIRE_FK" FOREIGN KEY ("TYPE_VOLUME_HORAIRE_ID")
+	  REFERENCES "TYPE_VOLUME_HORAIRE" ("ID") ON DELETE CASCADE ENABLE;
+
+-- TVE_VALIDATION_FK
+ALTER TABLE "TBL_VALIDATION_ENSEIGNEMENT" ADD CONSTRAINT "TVE_VALIDATION_FK" FOREIGN KEY ("VALIDATION_ID")
+	  REFERENCES "VALIDATION" ("ID") ON DELETE CASCADE ENABLE;
+
+-- TVE_VOLUME_HORAIRE_FK
+ALTER TABLE "TBL_VALIDATION_ENSEIGNEMENT" ADD CONSTRAINT "TVE_VOLUME_HORAIRE_FK" FOREIGN KEY ("VOLUME_HORAIRE_ID")
+	  REFERENCES "VOLUME_HORAIRE" ("ID") ON DELETE CASCADE ENABLE;
+
+-- TVR_ANNEE_FK
+ALTER TABLE "TBL_VALIDATION_REFERENTIEL" ADD CONSTRAINT "TVR_ANNEE_FK" FOREIGN KEY ("ANNEE_ID")
+	  REFERENCES "ANNEE" ("ID") ON DELETE CASCADE ENABLE;
+
+-- TVR_INTERVENANT_FK
+ALTER TABLE "TBL_VALIDATION_REFERENTIEL" ADD CONSTRAINT "TVR_INTERVENANT_FK" FOREIGN KEY ("INTERVENANT_ID")
+	  REFERENCES "INTERVENANT" ("ID") ON DELETE CASCADE ENABLE;
+
+-- TVR_SERVICE_REFERENTIEL_FK
+ALTER TABLE "TBL_VALIDATION_REFERENTIEL" ADD CONSTRAINT "TVR_SERVICE_REFERENTIEL_FK" FOREIGN KEY ("SERVICE_REFERENTIEL_ID")
+	  REFERENCES "SERVICE_REFERENTIEL" ("ID") ON DELETE CASCADE ENABLE;
+
+-- TVR_STRUCTURE_FK
+ALTER TABLE "TBL_VALIDATION_REFERENTIEL" ADD CONSTRAINT "TVR_STRUCTURE_FK" FOREIGN KEY ("STRUCTURE_ID")
+	  REFERENCES "STRUCTURE" ("ID") ON DELETE CASCADE ENABLE;
+
+-- TVR_TYPE_VOLUME_HORAIRE_FK
+ALTER TABLE "TBL_VALIDATION_REFERENTIEL" ADD CONSTRAINT "TVR_TYPE_VOLUME_HORAIRE_FK" FOREIGN KEY ("TYPE_VOLUME_HORAIRE_ID")
+	  REFERENCES "TYPE_VOLUME_HORAIRE" ("ID") ON DELETE CASCADE ENABLE;
+
+-- TVR_VALIDATION_FK
+ALTER TABLE "TBL_VALIDATION_REFERENTIEL" ADD CONSTRAINT "TVR_VALIDATION_FK" FOREIGN KEY ("VALIDATION_ID")
+	  REFERENCES "VALIDATION" ("ID") ON DELETE CASCADE ENABLE;
+
+-- TVR_VOLUME_HORAIRE_REF_FK
+ALTER TABLE "TBL_VALIDATION_REFERENTIEL" ADD CONSTRAINT "TVR_VOLUME_HORAIRE_REF_FK" FOREIGN KEY ("VOLUME_HORAIRE_REF_ID")
+	  REFERENCES "VOLUME_HORAIRE_REF" ("ID") ON DELETE CASCADE ENABLE;
+
+-- TYPE_AGREMENT_HCFK
+ALTER TABLE "TYPE_AGREMENT" ADD CONSTRAINT "TYPE_AGREMENT_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- TYPE_AGREMENT_HDFK
+ALTER TABLE "TYPE_AGREMENT" ADD CONSTRAINT "TYPE_AGREMENT_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- TYPE_AGREMENT_HMFK
+ALTER TABLE "TYPE_AGREMENT" ADD CONSTRAINT "TYPE_AGREMENT_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- TYPE_AGREMENT_STATUT_HCFK
+ALTER TABLE "TYPE_AGREMENT_STATUT" ADD CONSTRAINT "TYPE_AGREMENT_STATUT_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- TYPE_AGREMENT_STATUT_HDFK
+ALTER TABLE "TYPE_AGREMENT_STATUT" ADD CONSTRAINT "TYPE_AGREMENT_STATUT_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- TYPE_AGREMENT_STATUT_HMFK
+ALTER TABLE "TYPE_AGREMENT_STATUT" ADD CONSTRAINT "TYPE_AGREMENT_STATUT_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- TYPE_CONTRAT_HCFK
+ALTER TABLE "TYPE_CONTRAT" ADD CONSTRAINT "TYPE_CONTRAT_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- TYPE_CONTRAT_HDFK
+ALTER TABLE "TYPE_CONTRAT" ADD CONSTRAINT "TYPE_CONTRAT_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- TYPE_CONTRAT_HMFK
+ALTER TABLE "TYPE_CONTRAT" ADD CONSTRAINT "TYPE_CONTRAT_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- TYPE_DOTATION_HCFK
+ALTER TABLE "TYPE_DOTATION" ADD CONSTRAINT "TYPE_DOTATION_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- TYPE_DOTATION_HDFK
+ALTER TABLE "TYPE_DOTATION" ADD CONSTRAINT "TYPE_DOTATION_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- TYPE_DOTATION_HMFK
+ALTER TABLE "TYPE_DOTATION" ADD CONSTRAINT "TYPE_DOTATION_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- TYPE_DOTATION_SOURCE_FK
+ALTER TABLE "TYPE_DOTATION" ADD CONSTRAINT "TYPE_DOTATION_SOURCE_FK" FOREIGN KEY ("SOURCE_ID")
+	  REFERENCES "SOURCE" ("ID") ON DELETE CASCADE ENABLE;
+
+-- TYPE_FORMATION_GROUPE_FK
+ALTER TABLE "TYPE_FORMATION" ADD CONSTRAINT "TYPE_FORMATION_GROUPE_FK" FOREIGN KEY ("GROUPE_ID")
+	  REFERENCES "GROUPE_TYPE_FORMATION" ("ID") ENABLE;
+
+-- TYPE_FORMATION_HCFK
+ALTER TABLE "TYPE_FORMATION" ADD CONSTRAINT "TYPE_FORMATION_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- TYPE_FORMATION_HDFK
+ALTER TABLE "TYPE_FORMATION" ADD CONSTRAINT "TYPE_FORMATION_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- TYPE_FORMATION_HMFK
+ALTER TABLE "TYPE_FORMATION" ADD CONSTRAINT "TYPE_FORMATION_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- TYPE_FORMATION_SOURCE_FK
+ALTER TABLE "TYPE_FORMATION" ADD CONSTRAINT "TYPE_FORMATION_SOURCE_FK" FOREIGN KEY ("SOURCE_ID")
+	  REFERENCES "SOURCE" ("ID") ENABLE;
+
+-- TYPE_HEURES_HCFK
+ALTER TABLE "TYPE_HEURES" ADD CONSTRAINT "TYPE_HEURES_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- TYPE_HEURES_HDFK
+ALTER TABLE "TYPE_HEURES" ADD CONSTRAINT "TYPE_HEURES_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- TYPE_HEURES_HMFK
+ALTER TABLE "TYPE_HEURES" ADD CONSTRAINT "TYPE_HEURES_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- TYPE_HEURES_TYPE_HEURES_FK
+ALTER TABLE "TYPE_HEURES" ADD CONSTRAINT "TYPE_HEURES_TYPE_HEURES_FK" FOREIGN KEY ("TYPE_HEURES_ELEMENT_ID")
+	  REFERENCES "TYPE_HEURES" ("ID") ON DELETE CASCADE ENABLE;
+
+-- TYPE_INTERVENANT_HCFK
+ALTER TABLE "TYPE_INTERVENANT" ADD CONSTRAINT "TYPE_INTERVENANT_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- TYPE_INTERVENANT_HDFK
+ALTER TABLE "TYPE_INTERVENANT" ADD CONSTRAINT "TYPE_INTERVENANT_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- TYPE_INTERVENANT_HMFK
+ALTER TABLE "TYPE_INTERVENANT" ADD CONSTRAINT "TYPE_INTERVENANT_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- TYPE_INTERVENTION_ANNEE_FK
+ALTER TABLE "TYPE_INTERVENTION" ADD CONSTRAINT "TYPE_INTERVENTION_ANNEE_FK" FOREIGN KEY ("ANNEE_DEBUT_ID")
+	  REFERENCES "ANNEE" ("ID") ENABLE;
+
+-- TYPE_INTERVENTION_ANNEE_FKV1
+ALTER TABLE "TYPE_INTERVENTION" ADD CONSTRAINT "TYPE_INTERVENTION_ANNEE_FKV1" FOREIGN KEY ("ANNEE_FIN_ID")
+	  REFERENCES "ANNEE" ("ID") ENABLE;
+
+-- TYPE_INTERVENTION_EP_HCFK
+ALTER TABLE "TYPE_INTERVENTION_EP" ADD CONSTRAINT "TYPE_INTERVENTION_EP_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- TYPE_INTERVENTION_EP_HDFK
+ALTER TABLE "TYPE_INTERVENTION_EP" ADD CONSTRAINT "TYPE_INTERVENTION_EP_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- TYPE_INTERVENTION_EP_HMFK
+ALTER TABLE "TYPE_INTERVENTION_EP" ADD CONSTRAINT "TYPE_INTERVENTION_EP_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- TYPE_INTERVENTION_EP_SOURCE_FK
+ALTER TABLE "TYPE_INTERVENTION_EP" ADD CONSTRAINT "TYPE_INTERVENTION_EP_SOURCE_FK" FOREIGN KEY ("SOURCE_ID")
+	  REFERENCES "SOURCE" ("ID") ON DELETE CASCADE ENABLE;
+
+-- TYPE_INTERVENTION_HCFK
+ALTER TABLE "TYPE_INTERVENTION" ADD CONSTRAINT "TYPE_INTERVENTION_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
 
-    UNION ALL
+-- TYPE_INTERVENTION_HDFK
+ALTER TABLE "TYPE_INTERVENTION" ADD CONSTRAINT "TYPE_INTERVENTION_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
 
-    SELECT
-      i.annee_id,
-      'mise-en-paiement' etat,
-      91 ordre,
-      th.id type_heures_id,
-      th.code type_heures,
-      COALESCE( sr.structure_id, ep.structure_id, i.structure_id ) structure_id,
-      i.id intervenant_id,
-      mep.heures hetd     
-    FROM
-                mise_en_paiement              mep 
-           JOIN type_heures                    th ON th.id = mep.type_heures_id
-           JOIN centre_cout                    cc ON cc.id = mep.centre_cout_id
-      LEFT JOIN formule_resultat_service      frs ON frs.id = mep.formule_res_service_id
-      LEFT JOIN formule_resultat_service_ref frsr ON frsr.id = mep.formule_res_service_ref_id
-      LEFT JOIN formule_resultat               fr ON fr.id = COALESCE(frs.formule_resultat_id, frsr.formule_resultat_id)
-      LEFT JOIN service                         s ON s.id = frs.service_id
-      LEFT JOIN element_pedagogique            ep ON ep.id = s.element_pedagogique_id
-      LEFT JOIN service_referentiel            sr ON sr.id = frsr.service_referentiel_id
-      LEFT JOIN intervenant                     i ON i.id = fr.intervenant_id
-    WHERE
-      mep.histo_destruction IS NULL
-      AND th.eligible_extraction_paie = 1
-      AND mep.PERIODE_PAIEMENT_ID IS NOT NULL
-  ) t1
-  GROUP BY
-    annee_id, etat, ordre, type_heures_id, type_heures, structure_id, intervenant_id
-) t2
-GROUP BY
-  annee_id, 
-  etat, ordre
-  ,type_heures_id, type_heures
-  ,structure_id
-  ,intervenant_id
-ORDER BY
-  annee_id, ordre
-  
-) t3
-  JOIN intervenant i ON i.id = t3.intervenant_id
-  JOIN statut_intervenant si ON si.id = i.statut_id
-  JOIN type_intervenant ti ON ti.id = si.type_intervenant_id
-  JOIN structure s ON s.id = t3.structure_id;
+-- TYPE_INTERVENTION_HMFK
+ALTER TABLE "TYPE_INTERVENTION" ADD CONSTRAINT "TYPE_INTERVENTION_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
 
--- V_EXPORT_SERVICE
-CREATE OR REPLACE FORCE VIEW "V_EXPORT_SERVICE" ("ID", "SERVICE_ID", "INTERVENANT_ID", "TYPE_INTERVENANT_ID", "ANNEE_ID", "SERVICE_DATE_MODIFICATION", "TYPE_VOLUME_HORAIRE_ID", "ETAT_VOLUME_HORAIRE_ID", "ETABLISSEMENT_ID", "STRUCTURE_AFF_ID", "STRUCTURE_ENS_ID", "NIVEAU_FORMATION_ID", "ETAPE_ID", "ELEMENT_PEDAGOGIQUE_ID", "PERIODE_ID", "TYPE_INTERVENTION_ID", "FONCTION_REFERENTIEL_ID", "TYPE_ETAT", "INTERVENANT_CODE", "INTERVENANT_NOM", "INTERVENANT_DATE_NAISSANCE", "INTERVENANT_STATUT_LIBELLE", "INTERVENANT_TYPE_CODE", "INTERVENANT_TYPE_LIBELLE", "INTERVENANT_GRADE_CODE", "INTERVENANT_GRADE_LIBELLE", "INTERVENANT_DISCIPLINE_CODE", "INTERVENANT_DISCIPLINE_LIBELLE", "SERVICE_STRUCTURE_AFF_LIBELLE", "SERVICE_STRUCTURE_ENS_LIBELLE", "ETABLISSEMENT_LIBELLE", "GROUPE_TYPE_FORMATION_LIBELLE", "TYPE_FORMATION_LIBELLE", "ETAPE_NIVEAU", "ETAPE_CODE", "ETAPE_LIBELLE", "ELEMENT_CODE", "ELEMENT_LIBELLE", "ELEMENT_DISCIPLINE_CODE", "ELEMENT_DISCIPLINE_LIBELLE", "FONCTION_REFERENTIEL_LIBELLE", "ELEMENT_TAUX_FI", "ELEMENT_TAUX_FC", "ELEMENT_TAUX_FA", "SERVICE_REF_FORMATION", "COMMENTAIRES", "PERIODE_LIBELLE", "ELEMENT_PONDERATION_COMPL", "ELEMENT_SOURCE_LIBELLE", "HEURES", "HEURES_REF", "HEURES_NON_PAYEES", "SERVICE_STATUTAIRE", "SERVICE_DU_MODIFIE", "SERVICE_FI", "SERVICE_FA", "SERVICE_FC", "SERVICE_REFERENTIEL", "HEURES_COMPL_FI", "HEURES_COMPL_FA", "HEURES_COMPL_FC", "HEURES_COMPL_FC_MAJOREES", "HEURES_COMPL_REFERENTIEL", "TOTAL", "SOLDE", "DATE_CLOTURE_REALISE") AS 
-  WITH t AS ( SELECT
-  'vh_' || vh.id                    id,
-  s.id                              service_id,
-  s.intervenant_id                  intervenant_id,
-  vh.type_volume_horaire_id         type_volume_horaire_id,
-  fr.etat_volume_horaire_id         etat_volume_horaire_id,
-  s.element_pedagogique_id          element_pedagogique_id,
-  s.etablissement_id                etablissement_id,
-  NULL                              structure_aff_id,
-  NULL                              structure_ens_id,
-  vh.periode_id                     periode_id,
-  vh.type_intervention_id           type_intervention_id,
-  NULL                              fonction_referentiel_id,
+-- TYPE_INTERVENTION_STRUCTU_HCFK
+ALTER TABLE "TYPE_INTERVENTION_STRUCTURE" ADD CONSTRAINT "TYPE_INTERVENTION_STRUCTU_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
 
-  s.description                     service_description,
+-- TYPE_INTERVENTION_STRUCTU_HDFK
+ALTER TABLE "TYPE_INTERVENTION_STRUCTURE" ADD CONSTRAINT "TYPE_INTERVENTION_STRUCTU_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
 
-  vh.heures                         heures,
-  0                                 heures_ref,
-  0                                 heures_non_payees,
-  frvh.service_fi                   service_fi,
-  frvh.service_fa                   service_fa,
-  frvh.service_fc                   service_fc,
-  0                                 service_referentiel,
-  frvh.heures_compl_fi              heures_compl_fi,
-  frvh.heures_compl_fa              heures_compl_fa,
-  frvh.heures_compl_fc              heures_compl_fc,
-  frvh.heures_compl_fc_majorees     heures_compl_fc_majorees,
-  0                                 heures_compl_referentiel,
-  frvh.total                        total,
-  fr.solde                          solde,
-  NULL                              service_ref_formation,
-  NULL                              commentaires
-FROM
-  formule_resultat_vh                frvh
-  JOIN formule_resultat                fr ON fr.id = frvh.formule_resultat_id
-  JOIN volume_horaire                  vh ON vh.id = frvh.volume_horaire_id AND vh.motif_non_paiement_id IS NULL AND vh.histo_destruction IS NULL
-  JOIN service                          s ON s.id = vh.service_id AND s.intervenant_id = fr.intervenant_id AND s.histo_destruction IS NULL
+-- TYPE_INTERVENTION_STRUCTU_HMFK
+ALTER TABLE "TYPE_INTERVENTION_STRUCTURE" ADD CONSTRAINT "TYPE_INTERVENTION_STRUCTU_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
 
-UNION ALL
+-- TYPE_MODULATEUR_EP_HCFK
+ALTER TABLE "TYPE_MODULATEUR_EP" ADD CONSTRAINT "TYPE_MODULATEUR_EP_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
 
-SELECT
-  'vh_' || vh.id                    id,
-  s.id                              service_id,
-  s.intervenant_id                  intervenant_id,
-  vh.type_volume_horaire_id         type_volume_horaire_id,
-  vhe.etat_volume_horaire_id        etat_volume_horaire_id,
-  s.element_pedagogique_id          element_pedagogique_id,
-  s.etablissement_id                etablissement_id,
-  NULL                              structure_aff_id,
-  NULL                              structure_ens_id,
-  vh.periode_id                     periode_id,
-  vh.type_intervention_id           type_intervention_id,
-  NULL                              fonction_referentiel_id,
+-- TYPE_MODULATEUR_EP_HDFK
+ALTER TABLE "TYPE_MODULATEUR_EP" ADD CONSTRAINT "TYPE_MODULATEUR_EP_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
 
-  s.description                     service_description,
+-- TYPE_MODULATEUR_EP_HMFK
+ALTER TABLE "TYPE_MODULATEUR_EP" ADD CONSTRAINT "TYPE_MODULATEUR_EP_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
 
-  vh.heures                         heures,
-  0                                 heures_ref,
-  1                                 heures_non_payees,
-  0                                 service_fi,
-  0                                 service_fa,
-  0                                 service_fc,
-  0                                 service_referentiel,
-  0                                 heures_compl_fi,
-  0                                 heures_compl_fa,
-  0                                 heures_compl_fc,
-  0                                 heures_compl_fc_majorees,
-  0                                 heures_compl_referentiel,
-  0                                 total,
-  fr.solde                          solde,
-  NULL                              service_ref_formation,
-  NULL                              commentaires 
-FROM
-  volume_horaire                  vh
-  JOIN service                     s ON s.id = vh.service_id
-  JOIN v_volume_horaire_etat     vhe ON vhe.volume_horaire_id = vh.id
-  JOIN formule_resultat           fr ON fr.intervenant_id = s.intervenant_id AND fr.type_volume_horaire_id = vh.type_volume_horaire_id AND fr.etat_volume_horaire_id = vhe.etat_volume_horaire_id
-WHERE
-  vh.motif_non_paiement_id IS NOT NULL
-  AND vh.histo_destruction IS NULL
-  AND s.histo_destruction IS NULL
+-- TYPE_MODULATEUR_HCFK
+ALTER TABLE "TYPE_MODULATEUR" ADD CONSTRAINT "TYPE_MODULATEUR_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
 
-UNION ALL
+-- TYPE_MODULATEUR_HDFK
+ALTER TABLE "TYPE_MODULATEUR" ADD CONSTRAINT "TYPE_MODULATEUR_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
 
-SELECT
-  'vh_ref_' || vhr.id               id,
-  sr.id                             service_id,
-  sr.intervenant_id                 intervenant_id,
-  fr.type_volume_horaire_id         type_volume_horaire_id,
-  fr.etat_volume_horaire_id         etat_volume_horaire_id,
-  NULL                              element_pedagogique_id,
-  OSE_PARAMETRE.GET_ETABLISSEMENT   etablissement_id,
-  NULL                              structure_aff_id,
-  sr.structure_id                   structure_ens_id,
-  NULL                              periode_id,
-  NULL                              type_intervention_id,
-  sr.fonction_id                    fonction_referentiel_id,
-  
-  NULL                              service_description,
-  
-  0                                 heures,
-  vhr.heures                        heures_ref,
-  0                                 heures_non_payees,
-  0                                 service_fi,
-  0                                 service_fa,
-  0                                 service_fc,
-  frvr.service_referentiel          service_referentiel,
-  0                                 heures_compl_fi,
-  0                                 heures_compl_fa,
-  0                                 heures_compl_fc,
-  0                                 heures_compl_fc_majorees,
-  frvr.heures_compl_referentiel     heures_compl_referentiel,
-  frvr.total                        total,
-  fr.solde                          solde,
-  sr.formation                      service_ref_formation,
-  sr.commentaires                   commentaires
-FROM
-  formule_resultat_vh_ref       frvr
-  JOIN formule_resultat           fr ON fr.id = frvr.formule_resultat_id
-  JOIN volume_horaire_ref        vhr ON vhr.id =  frvr.volume_horaire_ref_id
-  JOIN service_referentiel        sr ON sr.id = vhr.service_referentiel_id AND sr.intervenant_id = fr.intervenant_id AND sr.histo_destruction IS NULL
-  
-UNION ALL
+-- TYPE_MODULATEUR_HMFK
+ALTER TABLE "TYPE_MODULATEUR" ADD CONSTRAINT "TYPE_MODULATEUR_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
 
-SELECT
-  'vh_0_' || i.id                   id,
-  NULL                              service_id,
-  i.id                              intervenant_id,
-  tvh.id                            type_volume_horaire_id,
-  evh.id                            etat_volume_horaire_id,
-  NULL                              element_pedagogique_id,
-  OSE_PARAMETRE.GET_ETABLISSEMENT   etablissement_id,
-  NULL                              structure_aff_id,
-  NULL                              structure_ens_id,
-  NULL                              periode_id,
-  NULL                              type_intervention_id,
-  NULL                              fonction_referentiel_id,
-  
-  NULL                              service_description,
-  
-  0                                 heures,
-  0                                 heures_ref,
-  0                                 heures_non_payees,
-  0                                 service_fi,
-  0                                 service_fa,
-  0                                 service_fc,
-  0                                 service_referentiel,
-  0                                 heures_compl_fi,
-  0                                 heures_compl_fa,
-  0                                 heures_compl_fc,
-  0                                 heures_compl_fc_majorees,
-  NULL                              heures_compl_referentiel,
-  0                                 total,
-  0                                 solde,
-  NULL                              service_ref_formation,
-  NULL                              commentaires
-FROM
-  intervenant i
-  JOIN statut_intervenant si ON si.id = i.statut_id
-  JOIN etat_volume_horaire evh ON evh.code IN ('saisi','valide')
-  JOIN type_volume_horaire tvh ON tvh.code IN ('PREVU','REALISE')
-  LEFT JOIN modification_service_du msd ON msd.intervenant_id = i.id AND msd.histo_destruction IS NULL
-  LEFT JOIN motif_modification_service mms ON mms.id = msd.motif_id
-WHERE
-  i.histo_destruction IS NULL
-  AND si.service_statutaire > 0
-GROUP BY
-  i.id, si.service_statutaire, evh.id, tvh.id
-HAVING 
-  si.service_statutaire + SUM(msd.heures * mms.multiplicateur) = 0
+-- TYPE_MODULATEUR_STRUCTURE_HCFK
+ALTER TABLE "TYPE_MODULATEUR_STRUCTURE" ADD CONSTRAINT "TYPE_MODULATEUR_STRUCTURE_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- TYPE_MODULATEUR_STRUCTURE_HDFK
+ALTER TABLE "TYPE_MODULATEUR_STRUCTURE" ADD CONSTRAINT "TYPE_MODULATEUR_STRUCTURE_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- TYPE_MODULATEUR_STRUCTURE_HMFK
+ALTER TABLE "TYPE_MODULATEUR_STRUCTURE" ADD CONSTRAINT "TYPE_MODULATEUR_STRUCTURE_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- TYPE_PIECE_JOINTE_HCFK
+ALTER TABLE "TYPE_PIECE_JOINTE" ADD CONSTRAINT "TYPE_PIECE_JOINTE_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- TYPE_PIECE_JOINTE_HDFK
+ALTER TABLE "TYPE_PIECE_JOINTE" ADD CONSTRAINT "TYPE_PIECE_JOINTE_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- TYPE_PIECE_JOINTE_HMFK
+ALTER TABLE "TYPE_PIECE_JOINTE" ADD CONSTRAINT "TYPE_PIECE_JOINTE_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- TYPE_PIECE_JOINTE_STATUT_HCFK
+ALTER TABLE "TYPE_PIECE_JOINTE_STATUT" ADD CONSTRAINT "TYPE_PIECE_JOINTE_STATUT_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
 
+-- TYPE_PIECE_JOINTE_STATUT_HDFK
+ALTER TABLE "TYPE_PIECE_JOINTE_STATUT" ADD CONSTRAINT "TYPE_PIECE_JOINTE_STATUT_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
 
-)
-SELECT
-  t.id                            id,
-  t.service_id                    service_id,
-  i.id                            intervenant_id,
-  ti.id                           type_intervenant_id,  
-  i.annee_id                      annee_id,
-  his.histo_modification          service_date_modification,
-  t.type_volume_horaire_id        type_volume_horaire_id,
-  t.etat_volume_horaire_id        etat_volume_horaire_id,
-  etab.id                         etablissement_id,
-  saff.id                         structure_aff_id,
-  sens.id                         structure_ens_id,
-  ose_divers.niveau_formation_id_calc( gtf.id, gtf.pertinence_niveau, etp.niveau ) niveau_formation_id,
-  etp.id                          etape_id,
-  ep.id                           element_pedagogique_id,
-  t.periode_id                    periode_id,
-  t.type_intervention_id          type_intervention_id,
-  t.fonction_referentiel_id       fonction_referentiel_id,
-  
-  tvh.libelle || ' ' || evh.libelle type_etat,
-  i.source_code                   intervenant_code,
-  i.nom_usuel || ' ' || i.prenom  intervenant_nom,
-  i.date_naissance                intervenant_date_naissance,
-  si.libelle                      intervenant_statut_libelle,
-  ti.code                         intervenant_type_code,
-  ti.libelle                      intervenant_type_libelle,
-  g.source_code                   intervenant_grade_code,
-  g.libelle_court                 intervenant_grade_libelle,
-  di.source_code                  intervenant_discipline_code,
-  di.libelle_court                intervenant_discipline_libelle,
-  saff.libelle_court              service_structure_aff_libelle,
+-- TYPE_PIECE_JOINTE_STATUT_HMFK
+ALTER TABLE "TYPE_PIECE_JOINTE_STATUT" ADD CONSTRAINT "TYPE_PIECE_JOINTE_STATUT_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
 
-  sens.libelle_court              service_structure_ens_libelle,
-  etab.libelle                    etablissement_libelle,
-  gtf.libelle_court               groupe_type_formation_libelle,
-  tf.libelle_court                type_formation_libelle,
-  etp.niveau                      etape_niveau,
-  etp.source_code                 etape_code,
-  etp.libelle                     etape_libelle,
-  ep.source_code                  element_code,
-  COALESCE(ep.libelle,to_char(t.service_description)) element_libelle,
-  de.source_code                  element_discipline_code,
-  de.libelle_court                element_discipline_libelle,
-  fr.libelle_long                 fonction_referentiel_libelle,
-  ep.taux_fi                      element_taux_fi,
-  ep.taux_fc                      element_taux_fc,
-  ep.taux_fa                      element_taux_fa,
-  t.service_ref_formation         service_ref_formation,
-  t.commentaires                  commentaires,
-  p.libelle_court                 periode_libelle,
-  CASE WHEN fs.ponderation_service_compl = 1 THEN NULL ELSE fs.ponderation_service_compl END element_ponderation_compl,
-  src.libelle                     element_source_libelle,
-  
-  t.heures                        heures,
-  t.heures_ref                    heures_ref,
-  t.heures_non_payees             heures_non_payees,
-  si.service_statutaire           service_statutaire,
-  fsm.heures                      service_du_modifie,
-  t.service_fi                    service_fi,
-  t.service_fa                    service_fa,
-  t.service_fc                    service_fc,
-  t.service_referentiel           service_referentiel,
-  t.heures_compl_fi               heures_compl_fi,
-  t.heures_compl_fa               heures_compl_fa,
-  t.heures_compl_fc               heures_compl_fc,
-  t.heures_compl_fc_majorees      heures_compl_fc_majorees,
-  t.heures_compl_referentiel      heures_compl_referentiel,
-  t.total                         total,
-  t.solde                         solde,
-  v.histo_modification            date_cloture_realise
+-- TYPE_RESSOURCE_HCFK
+ALTER TABLE "TYPE_RESSOURCE" ADD CONSTRAINT "TYPE_RESSOURCE_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
 
-FROM
-  t
-  JOIN intervenant                        i ON i.id     = t.intervenant_id AND i.histo_destruction IS NULL
-  JOIN statut_intervenant                si ON si.id    = i.statut_id            
-  JOIN type_intervenant                  ti ON ti.id    = si.type_intervenant_id 
-  JOIN etablissement                   etab ON etab.id  = t.etablissement_id
-  JOIN type_volume_horaire              tvh ON tvh.id   = t.type_volume_horaire_id
-  JOIN etat_volume_horaire              evh ON evh.id   = t.etat_volume_horaire_id
-  LEFT JOIN histo_intervenant_service   his ON his.intervenant_id = i.id AND his.type_volume_horaire_id = tvh.id AND his.referentiel = 0
-  LEFT JOIN grade                         g ON g.id     = i.grade_id
-  LEFT JOIN discipline                   di ON di.id    = i.discipline_id
-  LEFT JOIN structure                  saff ON saff.id  = i.structure_id AND ti.code = 'P'
-  LEFT JOIN element_pedagogique          ep ON ep.id    = t.element_pedagogique_id
-  LEFT JOIN discipline                   de ON de.id    = ep.discipline_id
-  LEFT JOIN structure                  sens ON sens.id  = NVL(t.structure_ens_id, ep.structure_id)
-  LEFT JOIN periode                       p ON p.id     = t.periode_id
-  LEFT JOIN source                      src ON src.id   = ep.source_id OR (ep.source_id IS NULL AND src.code = 'OSE')
-  LEFT JOIN etape                       etp ON etp.id   = ep.etape_id
-  LEFT JOIN type_formation               tf ON tf.id    = etp.type_formation_id AND tf.histo_destruction IS NULL
-  LEFT JOIN groupe_type_formation       gtf ON gtf.id   = tf.groupe_id AND gtf.histo_destruction IS NULL
-  LEFT JOIN v_formule_service_modifie   fsm ON fsm.intervenant_id = i.id
-  LEFT JOIN v_formule_service            fs ON fs.id    = t.service_id
-  LEFT JOIN fonction_referentiel         fr ON fr.id    = t.fonction_referentiel_id
-  LEFT JOIN type_validation              tv ON tvh.code = 'REALISE' AND tv.code = 'CLOTURE_REALISE'
-  LEFT JOIN validation                    v ON v.intervenant_id = i.id AND v.type_validation_id = tv.id AND v.histo_destruction IS NULL;
+-- TYPE_RESSOURCE_HDFK
+ALTER TABLE "TYPE_RESSOURCE" ADD CONSTRAINT "TYPE_RESSOURCE_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
 
--- V_EXP_HETD_CENTRE_COUT
-CREATE OR REPLACE FORCE VIEW "V_EXP_HETD_CENTRE_COUT" ("TYPE_VOLUME_HORAIRE_ID", "ETAT_VOLUME_HORAIRE_ID", "ANNEE_ID", "INTERVENANT_ID", "STATUT_INTERVENANT_ID", "TYPE_INTERVENANT_ID", "GRADE_ID", "STRUCTURE_ID", "GROUPE_TYPE_FORMATION_ID", "TYPE_FORMATION_ID", "ETAPE_ID", "TYPE_VOLUME_HORAIRE", "ETAT_VOLUME_HORAIRE", "ANNEE", "CODE_INTERVENANT", "INTERVENANT", "STATUT_INTERVENANT", "TYPE_INTERVENANT", "GRADE", "STRUCTURE_ENSEIGNEMENT", "GROUPE_TYPE_FORMATION", "TYPE_FORMATION", "CODE_FORMATION", "TOTAL_HETD", "CENTRE_COUTS", "TOTAL_EUROS") AS 
-  WITH t AS (
-  SELECT
-    tvh.id                              type_volume_horaire_id,
-    evh.id                              etat_volume_horaire_id,
-    a.id                                annee_id,
-    i.id                                intervenant_id,
-    si.id                               statut_intervenant_id,
-    ti.id                               type_intervenant_id,
-    g.id                                grade_id,
-    str.id                              structure_id,
-    gtf.id                              groupe_type_formation_id,
-    tf.id                               type_formation_id,
-    e.id                                etape_id,
-    
-    tvh.code                            type_volume_horaire,
-    evh.code                            etat_volume_horaire,
-    a.libelle                           annee,
-    i.code                              code_intervenant,
-    i.nom_usuel || ' ' || i.prenom      intervenant,
-    si.libelle                          statut_intervenant,
-    ti.libelle                          type_intervenant,
-    g.libelle_long                      grade,
-    str.libelle_court                   structure_enseignement,
-    gtf.libelle_long                    groupe_type_formation,
-    tf.libelle_long                     type_formation,
-    e.source_code                       code_formation,
+-- TYPE_RESSOURCE_HMFK
+ALTER TABLE "TYPE_RESSOURCE" ADD CONSTRAINT "TYPE_RESSOURCE_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
 
-    CASE WHEN mep.id IS NULL THEN frs.total ELSE mep.heures END
-                                        total_hetd,
+-- VALIDATION_HCFK
+ALTER TABLE "VALIDATION" ADD CONSTRAINT "VALIDATION_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
 
-    cc.source_code || ' ' || cc.libelle centre_couts,
-    OSE_FORMULE.GET_TAUX_HORAIRE_HETD( NVL(mep.date_mise_en_paiement,SYSDATE) ) * CASE WHEN mep.id IS NULL THEN frs.total ELSE mep.heures END
-                                        total_euros
-  FROM
-              formule_resultat_service  frs
-         JOIN formule_resultat           fr ON fr.id = frs.formule_resultat_id
-         JOIN etat_volume_horaire       evh ON evh.id = fr.etat_volume_horaire_id
-         JOIN type_volume_horaire       tvh ON tvh.id = fr.type_volume_horaire_id
-         JOIN intervenant                 i ON i.id = fr.intervenant_id
-         JOIN annee                       a ON a.id = i.annee_id
-         JOIN statut_intervenant         si ON si.id = i.statut_id
-         JOIN type_intervenant           ti ON ti.id = si.type_intervenant_id
-         JOIN service                     s ON s.id = frs.service_id
-    LEFT JOIN grade                       g ON g.id = i.grade_id
-    LEFT JOIN element_pedagogique        ep ON ep.id = s.element_pedagogique_id
-         JOIN structure                 str ON str.id = NVL(ep.structure_id, i.structure_id)
-    LEFT JOIN etape                       e ON e.id = ep.etape_id
-    LEFT JOIN type_formation             tf ON tf.id = e.type_formation_id
-    LEFT JOIN groupe_type_formation     gtf ON gtf.id = tf.groupe_id
-    LEFT JOIN mise_en_paiement          mep ON mep.formule_res_service_id = frs.id
-                                           AND mep.histo_destruction IS NULL
+-- VALIDATION_HDFK
+ALTER TABLE "VALIDATION" ADD CONSTRAINT "VALIDATION_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
 
-    LEFT JOIN centre_cout                cc ON cc.id = MEP.CENTRE_COUT_ID
+-- VALIDATION_HMFK
+ALTER TABLE "VALIDATION" ADD CONSTRAINT "VALIDATION_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
 
-  UNION ALL
+-- VALIDATION_INTERVENANT_FK
+ALTER TABLE "VALIDATION" ADD CONSTRAINT "VALIDATION_INTERVENANT_FK" FOREIGN KEY ("INTERVENANT_ID")
+	  REFERENCES "INTERVENANT" ("ID") ON DELETE CASCADE ENABLE;
 
-  SELECT
-    type_volume_horaire_id, etat_volume_horaire_id, annee_id, intervenant_id, statut_intervenant_id, type_intervenant_id, 
-    grade_id, structure_id, groupe_type_formation_id, type_formation_id, etape_id,
-    
-    type_volume_horaire, etat_volume_horaire, annee, code_intervenant, intervenant, statut_intervenant, 
-    type_intervenant, grade, structure_enseignement, groupe_type_formation, type_formation,
-    code_formation, total_hetd, centre_couts, 
-    OSE_FORMULE.GET_TAUX_HORAIRE_HETD( SYSDATE ) * total_hetd total_euros
-  FROM (
-  SELECT
-    tvh.id                              type_volume_horaire_id,
-    evh.id                              etat_volume_horaire_id,
-    a.id                                annee_id,
-    i.id                                intervenant_id,
-    si.id                               statut_intervenant_id,
-    ti.id                               type_intervenant_id,
-    g.id                                grade_id,
-    str.id                              structure_id,
-    gtf.id                              groupe_type_formation_id,
-    tf.id                               type_formation_id,
-    e.id                                etape_id,
-  
-    tvh.code                            type_volume_horaire,
-    evh.code                            etat_volume_horaire,
-    a.libelle                           annee,
-    i.code                              code_intervenant,
-    i.nom_usuel || ' ' || i.prenom      intervenant,
-    si.libelle                          statut_intervenant,
-    ti.libelle                          type_intervenant,
-    g.libelle_long                      grade,
-    str.libelle_court                   structure_enseignement,
-    gtf.libelle_long                    groupe_type_formation,
-    tf.libelle_long                     type_formation,
-    e.source_code                       code_formation,
-    frs.total - SUM(mep.heures) OVER (PARTITION BY frs.id) total_hetd,
-    RANK() OVER ( PARTITION BY frs.id ORDER BY mep.id) ordre,
-    null centre_couts
-  FROM
-              formule_resultat_service  frs
-         JOIN formule_resultat           fr ON fr.id = frs.formule_resultat_id
-         JOIN etat_volume_horaire       evh ON evh.id = fr.etat_volume_horaire_id
-         JOIN type_volume_horaire       tvh ON tvh.id = fr.type_volume_horaire_id
-         JOIN intervenant                 i ON i.id = fr.intervenant_id
-         JOIN annee                       a ON a.id = i.annee_id
-         JOIN statut_intervenant         si ON si.id = i.statut_id
-         JOIN type_intervenant           ti ON ti.id = si.type_intervenant_id
-         JOIN service                     s ON s.id = frs.service_id
-    LEFT JOIN grade                       g ON g.id = i.grade_id
-    LEFT JOIN element_pedagogique        ep ON ep.id = s.element_pedagogique_id
-         JOIN structure                 str ON str.id = NVL(ep.structure_id, i.structure_id)
-    LEFT JOIN etape                       e ON e.id = ep.etape_id
-    LEFT JOIN type_formation             tf ON tf.id = e.type_formation_id
-    LEFT JOIN groupe_type_formation     gtf ON gtf.id = tf.groupe_id
-    LEFT JOIN mise_en_paiement          mep ON mep.formule_res_service_id = frs.id
-                                           AND mep.histo_destruction IS NULL
-  ) t WHERE ordre = 1 AND total_hetd > 0
-)
-SELECT
-  type_volume_horaire_id,
-  etat_volume_horaire_id,
-  annee_id,
-  intervenant_id,
-  statut_intervenant_id,
-  type_intervenant_id,
-  grade_id,
-  structure_id,
-  groupe_type_formation_id,
-  type_formation_id,
-  etape_id,
+-- VALIDATION_STRUCTURE_FK
+ALTER TABLE "VALIDATION" ADD CONSTRAINT "VALIDATION_STRUCTURE_FK" FOREIGN KEY ("STRUCTURE_ID")
+	  REFERENCES "STRUCTURE" ("ID") ON DELETE CASCADE ENABLE;
+
+-- VALIDATION_TYPE_VALIDATION_FK
+ALTER TABLE "VALIDATION" ADD CONSTRAINT "VALIDATION_TYPE_VALIDATION_FK" FOREIGN KEY ("TYPE_VALIDATION_ID")
+	  REFERENCES "TYPE_VALIDATION" ("ID") ON DELETE CASCADE ENABLE;
+
+-- VHC_ELEMENT_PEDAGOGIQUE_FK
+ALTER TABLE "VOLUME_HORAIRE_CHARGE" ADD CONSTRAINT "VHC_ELEMENT_PEDAGOGIQUE_FK" FOREIGN KEY ("ELEMENT_PEDAGOGIQUE_ID")
+	  REFERENCES "ELEMENT_PEDAGOGIQUE" ("ID") ENABLE;
+
+-- VHC_SCENARIO_FK
+ALTER TABLE "VOLUME_HORAIRE_CHARGE" ADD CONSTRAINT "VHC_SCENARIO_FK" FOREIGN KEY ("SCENARIO_ID")
+	  REFERENCES "SCENARIO" ("ID") ON DELETE CASCADE ENABLE;
+
+-- VHC_SOURCE_FK
+ALTER TABLE "VOLUME_HORAIRE_CHARGE" ADD CONSTRAINT "VHC_SOURCE_FK" FOREIGN KEY ("SOURCE_ID")
+	  REFERENCES "SOURCE" ("ID") ENABLE;
+
+-- VHC_TYPE_INTERVENTION_FK
+ALTER TABLE "VOLUME_HORAIRE_CHARGE" ADD CONSTRAINT "VHC_TYPE_INTERVENTION_FK" FOREIGN KEY ("TYPE_INTERVENTION_ID")
+	  REFERENCES "TYPE_INTERVENTION" ("ID") ENABLE;
 
-  type_volume_horaire,
-  etat_volume_horaire,
-  annee,
-  code_intervenant,
-  intervenant,
-  statut_intervenant,
-  type_intervenant,
-  grade,
-  structure_enseignement,
-  groupe_type_formation,
-  type_formation,
-  code_formation,
-  SUM(total_hetd) total_hetd,
-  centre_couts,
-  SUM(total_euros) total_euros
-FROM
-  t
-GROUP BY
-  type_volume_horaire_id,
-  etat_volume_horaire_id,
-  annee_id,
-  intervenant_id,
-  statut_intervenant_id,
-  type_intervenant_id,
-  grade_id,
-  structure_id,
-  groupe_type_formation_id,
-  type_formation_id,
-  etape_id,
+-- VHENS_ELEMENT_PEDAGOGIQUE_FK
+ALTER TABLE "VOLUME_HORAIRE_ENS" ADD CONSTRAINT "VHENS_ELEMENT_PEDAGOGIQUE_FK" FOREIGN KEY ("ELEMENT_PEDAGOGIQUE_ID")
+	  REFERENCES "ELEMENT_PEDAGOGIQUE" ("ID") ENABLE;
 
-  type_volume_horaire,
-  etat_volume_horaire,
-  annee,
-  code_intervenant,
-  intervenant,
-  statut_intervenant,
-  type_intervenant,
-  grade,
-  structure_enseignement,
-  groupe_type_formation,
-  type_formation,
-  code_formation,
-  centre_couts;
+-- VHENS_TYPE_INTERVENTION_FK
+ALTER TABLE "VOLUME_HORAIRE_ENS" ADD CONSTRAINT "VHENS_TYPE_INTERVENTION_FK" FOREIGN KEY ("TYPE_INTERVENTION_ID")
+	  REFERENCES "TYPE_INTERVENTION" ("ID") ON DELETE CASCADE ENABLE;
 
--- V_FORMULE_INTERVENANT
-CREATE OR REPLACE FORCE VIEW "V_FORMULE_INTERVENANT" ("ID", "ANNEE_ID", "STRUCTURE_ID", "HEURES_SERVICE_STATUTAIRE", "DEPASSEMENT_SERVICE_DU_SANS_HC") AS 
-  SELECT
-  i.id,
-  i.annee_id,
-  i.structure_id,
-  si.service_statutaire heures_service_statutaire,
-  si.depassement_service_du_sans_hc
-FROM
-  intervenant i
-  JOIN statut_intervenant si ON si.id = i.statut_id
-WHERE
-  i.histo_destruction IS NULL
-  AND i.id = COALESCE( OSE_FORMULE.GET_INTERVENANT_ID, i.id );
+-- VHIT_FK
+ALTER TABLE "VOLUME_HORAIRE" ADD CONSTRAINT "VHIT_FK" FOREIGN KEY ("TYPE_INTERVENTION_ID")
+	  REFERENCES "TYPE_INTERVENTION" ("ID") ENABLE;
 
--- V_FORMULE_SERVICE
-CREATE OR REPLACE FORCE VIEW "V_FORMULE_SERVICE" ("ID", "INTERVENANT_ID", "TAUX_FI", "TAUX_FA", "TAUX_FC", "STRUCTURE_AFF_ID", "STRUCTURE_ENS_ID", "PONDERATION_SERVICE_DU", "PONDERATION_SERVICE_COMPL") AS 
-  SELECT
-  s.id                                                    id,
-  s.intervenant_id                                        intervenant_id,
-  CASE WHEN ep.id IS NOT NULL THEN ep.taux_fi ELSE 1 END  taux_fi,
-  CASE WHEN ep.id IS NOT NULL THEN ep.taux_fa ELSE 0 END  taux_fa,
-  CASE WHEN ep.id IS NOT NULL THEN ep.taux_fc ELSE 0 END  taux_fc,
-  i.structure_id                                          structure_aff_id,
-  ep.structure_id                                         structure_ens_id,
-  NVL( EXP (SUM (LN (m.ponderation_service_du))), 1)      ponderation_service_du,
-  NVL( EXP (SUM (LN (m.ponderation_service_compl))), 1)   ponderation_service_compl
-FROM
-  service s
-  JOIN intervenant i ON i.id = s.intervenant_id
-  LEFT JOIN element_pedagogique ep ON ep.id = s.element_pedagogique_id
-  LEFT JOIN element_modulateur em ON em.element_id = s.element_pedagogique_id
-        AND em.histo_destruction IS NULL
-  LEFT JOIN modulateur         m ON m.id = em.modulateur_id
-WHERE
-  s.histo_destruction IS NULL
-GROUP BY
-  s.id,
-  s.intervenant_id,
-  ep.id,
-  ep.taux_fi, ep.taux_fa, ep.taux_fc,
-  i.structure_id, ep.structure_id;
+-- VHMNP_FK
+ALTER TABLE "VOLUME_HORAIRE" ADD CONSTRAINT "VHMNP_FK" FOREIGN KEY ("MOTIF_NON_PAIEMENT_ID")
+	  REFERENCES "MOTIF_NON_PAIEMENT" ("ID") ENABLE;
 
--- V_FORMULE_SERVICE_MODIFIE
-CREATE OR REPLACE FORCE VIEW "V_FORMULE_SERVICE_MODIFIE" ("ID", "INTERVENANT_ID", "HEURES", "HEURES_DECHARGE") AS 
-  SELECT
-  msd.intervenant_id id,
-  msd.intervenant_id,
-  NVL( SUM( msd.heures * mms.multiplicateur ), 0 ) heures,
-  NVL( SUM( msd.heures * mms.multiplicateur * mms.decharge ), 0 ) heures_decharge
-FROM
-  modification_service_du msd
-  JOIN MOTIF_MODIFICATION_SERVICE mms ON 
-    mms.id = msd.motif_id
-    AND mms.histo_destruction IS NULL
-  JOIN intervenant i ON i.id = msd.intervenant_id
-WHERE
-  msd.histo_destruction IS NULL
-  AND 1 = ose_divers.intervenant_has_privilege(msd.intervenant_id, 'modif-service-du-association')
-GROUP BY
-  msd.intervenant_id;
+-- VHR_SERVICE_REFERENTIEL_FK
+ALTER TABLE "VOLUME_HORAIRE_REF" ADD CONSTRAINT "VHR_SERVICE_REFERENTIEL_FK" FOREIGN KEY ("SERVICE_REFERENTIEL_ID")
+	  REFERENCES "SERVICE_REFERENTIEL" ("ID") ENABLE;
 
--- V_FORMULE_SERVICE_REF
-CREATE OR REPLACE FORCE VIEW "V_FORMULE_SERVICE_REF" ("ID", "INTERVENANT_ID", "STRUCTURE_ID") AS 
-  SELECT
-  sr.id             id,
-  sr.intervenant_id intervenant_id,
-  sr.structure_id   structure_id
-FROM
-  service_referentiel sr
-  JOIN intervenant i ON i.id = sr.intervenant_id
-WHERE
-  sr.histo_destruction IS NULL
-  AND i.id = COALESCE( OSE_FORMULE.GET_INTERVENANT_ID, i.id );
+-- VHR_TYPE_VOLUME_HORAIRE_FK
+ALTER TABLE "VOLUME_HORAIRE_REF" ADD CONSTRAINT "VHR_TYPE_VOLUME_HORAIRE_FK" FOREIGN KEY ("TYPE_VOLUME_HORAIRE_ID")
+	  REFERENCES "TYPE_VOLUME_HORAIRE" ("ID") ENABLE;
 
--- V_FORMULE_VOLUME_HORAIRE
-CREATE OR REPLACE FORCE VIEW "V_FORMULE_VOLUME_HORAIRE" ("ID", "SERVICE_ID", "INTERVENANT_ID", "TYPE_INTERVENTION_ID", "TYPE_VOLUME_HORAIRE_ID", "ETAT_VOLUME_HORAIRE_ID", "ETAT_VOLUME_HORAIRE_ORDRE", "HEURES", "TAUX_SERVICE_DU", "TAUX_SERVICE_COMPL") AS 
-  SELECT
-  vh.id                       id,
-  s.id                        service_id,
-  s.intervenant_id            intervenant_id,
-  ti.id                       type_intervention_id,
-  vh.type_volume_horaire_id   type_volume_horaire_id,
-  evh.id                      etat_volume_horaire_id,
-  evh.ordre                   etat_volume_horaire_ordre,
-  vh.heures                   heures,
-  ti.taux_hetd_service        taux_service_du,
-  ti.taux_hetd_complementaire taux_service_compl
-FROM
-  volume_horaire               vh
-  JOIN service                  s ON s.id     = vh.service_id
-  JOIN type_intervention       ti ON ti.id    = vh.type_intervention_id
-  JOIN v_volume_horaire_etat  vhe ON vhe.volume_horaire_id = vh.id
-  JOIN etat_volume_horaire    evh ON evh.id = vhe.etat_volume_horaire_id
-WHERE
-  vh.histo_destruction IS NULL
-  AND s.histo_destruction IS NULL
-  AND vh.heures <> 0
-  AND vh.motif_non_paiement_id IS NULL
-  AND s.intervenant_id = COALESCE( OSE_FORMULE.GET_INTERVENANT_ID, s.intervenant_id );
+-- VH_PERIODE_FK
+ALTER TABLE "VOLUME_HORAIRE" ADD CONSTRAINT "VH_PERIODE_FK" FOREIGN KEY ("PERIODE_ID")
+	  REFERENCES "PERIODE" ("ID") ENABLE;
 
--- V_FORMULE_VOLUME_HORAIRE_REF
-CREATE OR REPLACE FORCE VIEW "V_FORMULE_VOLUME_HORAIRE_REF" ("ID", "SERVICE_REFERENTIEL_ID", "INTERVENANT_ID", "TYPE_VOLUME_HORAIRE_ID", "ETAT_VOLUME_HORAIRE_ID", "ETAT_VOLUME_HORAIRE_ORDRE", "HEURES") AS 
-  SELECT
-  vhr.id                      id,
-  sr.id                       service_referentiel_id,
-  sr.intervenant_id           intervenant_id,
-  vhr.type_volume_horaire_id  type_volume_horaire_id,
-  evh.id                      etat_volume_horaire_id,
-  evh.ordre                   etat_volume_horaire_ordre,
-  vhr.heures                  heures
-FROM
-  volume_horaire_ref               vhr
-  JOIN service_referentiel          sr ON sr.id     = vhr.service_referentiel_id
-  JOIN v_volume_horaire_ref_etat  vher ON vher.volume_horaire_ref_id = vhr.id
-  JOIN etat_volume_horaire         evh ON evh.id = vher.etat_volume_horaire_id
-WHERE
-  vhr.histo_destruction IS NULL
-  AND sr.histo_destruction IS NULL
-  AND vhr.heures <> 0
-  AND sr.intervenant_id = COALESCE( OSE_FORMULE.GET_INTERVENANT_ID, sr.intervenant_id );
+-- VH_TYPE_VOLUME_HORAIRE_FK
+ALTER TABLE "VOLUME_HORAIRE" ADD CONSTRAINT "VH_TYPE_VOLUME_HORAIRE_FK" FOREIGN KEY ("TYPE_VOLUME_HORAIRE_ID")
+	  REFERENCES "TYPE_VOLUME_HORAIRE" ("ID") ENABLE;
 
--- V_FR_SERVICE_CENTRE_COUT
-CREATE OR REPLACE FORCE VIEW "V_FR_SERVICE_CENTRE_COUT" ("FORMULE_RESULTAT_SERVICE_ID", "CENTRE_COUT_ID") AS 
-  SELECT
-  frs.id formule_resultat_service_id, cc.id centre_cout_id
-FROM
-  formule_resultat_service   frs
-  JOIN service                 s ON s.id = frs.service_id
-  JOIN element_pedagogique    ep ON ep.id = s.element_pedagogique_id
-  JOIN centre_cout            cc ON cc.histo_destruction IS NULL
-                                
-  JOIN centre_cout_structure ccs ON ccs.centre_cout_id = cc.id 
-                                AND ccs.structure_id = ep.structure_id 
-                                AND ccs.histo_destruction IS NULL
-                                
-  JOIN cc_activite             a ON a.id = cc.activite_id 
-                                AND a.histo_destruction IS NULL
-                                
-  JOIN type_ressource         tr ON tr.id = cc.type_ressource_id 
-                                AND tr.histo_destruction IS NULL
-WHERE
-  (
-    (frs.heures_compl_fi > 0 AND tr.fi = 1 AND a.fi = 1 )
-    OR (frs.heures_compl_fa > 0 AND tr.fa = 1 AND a.fa = 1 )
-    OR (frs.heures_compl_fc > 0 AND tr.fc = 1 AND a.fc = 1 )
-    OR (frs.heures_compl_fc_majorees > 0 AND tr.fc_majorees = 1 AND a.fc_majorees = 1 )
-  )
+-- VOLUMES_HORAIRES_SERVICES_FK
+ALTER TABLE "VOLUME_HORAIRE" ADD CONSTRAINT "VOLUMES_HORAIRES_SERVICES_FK" FOREIGN KEY ("SERVICE_ID")
+	  REFERENCES "SERVICE" ("ID") ENABLE;
+
+-- VOLUME_HORAIRE_CHARGE_HCFK
+ALTER TABLE "VOLUME_HORAIRE_CHARGE" ADD CONSTRAINT "VOLUME_HORAIRE_CHARGE_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- VOLUME_HORAIRE_CHARGE_HDFK
+ALTER TABLE "VOLUME_HORAIRE_CHARGE" ADD CONSTRAINT "VOLUME_HORAIRE_CHARGE_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- VOLUME_HORAIRE_CHARGE_HMFK
+ALTER TABLE "VOLUME_HORAIRE_CHARGE" ADD CONSTRAINT "VOLUME_HORAIRE_CHARGE_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- VOLUME_HORAIRE_CONTRAT_FK
+ALTER TABLE "VOLUME_HORAIRE" ADD CONSTRAINT "VOLUME_HORAIRE_CONTRAT_FK" FOREIGN KEY ("CONTRAT_ID")
+	  REFERENCES "CONTRAT" ("ID") ENABLE;
+
+-- VOLUME_HORAIRE_ENS_HCFK
+ALTER TABLE "VOLUME_HORAIRE_ENS" ADD CONSTRAINT "VOLUME_HORAIRE_ENS_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- VOLUME_HORAIRE_ENS_HDFK
+ALTER TABLE "VOLUME_HORAIRE_ENS" ADD CONSTRAINT "VOLUME_HORAIRE_ENS_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- VOLUME_HORAIRE_ENS_HMFK
+ALTER TABLE "VOLUME_HORAIRE_ENS" ADD CONSTRAINT "VOLUME_HORAIRE_ENS_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- VOLUME_HORAIRE_ENS_SOURCE_FK
+ALTER TABLE "VOLUME_HORAIRE_ENS" ADD CONSTRAINT "VOLUME_HORAIRE_ENS_SOURCE_FK" FOREIGN KEY ("SOURCE_ID")
+	  REFERENCES "SOURCE" ("ID") ON DELETE CASCADE ENABLE;
+
+-- VOLUME_HORAIRE_HCFK
+ALTER TABLE "VOLUME_HORAIRE" ADD CONSTRAINT "VOLUME_HORAIRE_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- VOLUME_HORAIRE_HDFK
+ALTER TABLE "VOLUME_HORAIRE" ADD CONSTRAINT "VOLUME_HORAIRE_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- VOLUME_HORAIRE_HMFK
+ALTER TABLE "VOLUME_HORAIRE" ADD CONSTRAINT "VOLUME_HORAIRE_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- VOLUME_HORAIRE_REF_HCFK
+ALTER TABLE "VOLUME_HORAIRE_REF" ADD CONSTRAINT "VOLUME_HORAIRE_REF_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- VOLUME_HORAIRE_REF_HDFK
+ALTER TABLE "VOLUME_HORAIRE_REF" ADD CONSTRAINT "VOLUME_HORAIRE_REF_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- VOLUME_HORAIRE_REF_HMFK
+ALTER TABLE "VOLUME_HORAIRE_REF" ADD CONSTRAINT "VOLUME_HORAIRE_REF_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
+	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+
+-- VVHR_VALIDATION_FK
+ALTER TABLE "VALIDATION_VOL_HORAIRE_REF" ADD CONSTRAINT "VVHR_VALIDATION_FK" FOREIGN KEY ("VALIDATION_ID")
+	  REFERENCES "VALIDATION" ("ID") ON DELETE CASCADE ENABLE;
 
-UNION
+-- VVHR_VOLUME_HORAIRE_REF_FK
+ALTER TABLE "VALIDATION_VOL_HORAIRE_REF" ADD CONSTRAINT "VVHR_VOLUME_HORAIRE_REF_FK" FOREIGN KEY ("VOLUME_HORAIRE_REF_ID")
+	  REFERENCES "VOLUME_HORAIRE_REF" ("ID") ON DELETE CASCADE ENABLE;
 
-SELECT
-  frs.id formule_resultat_service_id, cc.id
-FROM
-  formule_resultat_service   frs
-  JOIN service                 s ON s.id = frs.service_id 
-                                AND s.element_pedagogique_id IS NULL
-                                
-  JOIN intervenant             i ON i.id = s.intervenant_id
-  JOIN centre_cout            cc ON cc.histo_destruction IS NULL
-  
-  JOIN centre_cout_structure ccs ON ccs.centre_cout_id = cc.id 
-                                AND ccs.structure_id = i.structure_id 
-                                AND ccs.histo_destruction IS NULL
-                                
-  JOIN cc_activite             a ON a.id = cc.activite_id 
-                                AND a.histo_destruction IS NULL
-                                
-  JOIN type_ressource         tr ON tr.id = cc.type_ressource_id 
-                                AND tr.histo_destruction IS NULL
-WHERE
-  (
-    (frs.heures_compl_fi > 0 AND tr.fi = 1 AND a.fi = 1 )
-    OR (frs.heures_compl_fa > 0 AND tr.fa = 1 AND a.fa = 1 )
-    OR (frs.heures_compl_fc > 0 AND tr.fc = 1 AND a.fc = 1 )
-    OR (frs.heures_compl_fc_majorees > 0 AND tr.fc_majorees = 1 AND a.fc_majorees = 1 )
-  );
+-- VVH_VALIDATION_FK
+ALTER TABLE "VALIDATION_VOL_HORAIRE" ADD CONSTRAINT "VVH_VALIDATION_FK" FOREIGN KEY ("VALIDATION_ID")
+	  REFERENCES "VALIDATION" ("ID") ON DELETE CASCADE ENABLE;
 
--- V_FR_SERVICE_REF_CENTRE_COUT
-CREATE OR REPLACE FORCE VIEW "V_FR_SERVICE_REF_CENTRE_COUT" ("FORMULE_RESULTAT_SERV_REF_ID", "CENTRE_COUT_ID") AS 
-  SELECT
-  frsr.id formule_resultat_serv_ref_id, cc.id
-FROM
-  formule_resultat_service_ref   frsr
-  JOIN service_referentiel    sr ON sr.id = frsr.service_referentiel_id
-  JOIN centre_cout            cc ON cc.histo_destruction IS NULL
-                                
-  JOIN centre_cout_structure ccs ON ccs.centre_cout_id = cc.id 
-                                AND ccs.structure_id = sr.structure_id 
-                                AND ccs.histo_destruction IS NULL
-                                
-  JOIN cc_activite             a ON a.id = cc.activite_id 
-                                AND a.histo_destruction IS NULL
-                                
-  JOIN type_ressource         tr ON tr.id = cc.type_ressource_id 
-                                AND tr.histo_destruction IS NULL
-WHERE
-  frsr.heures_compl_referentiel > 0 AND tr.referentiel = 1;
+-- VVH_VOLUME_HORAIRE_FK
+ALTER TABLE "VALIDATION_VOL_HORAIRE" ADD CONSTRAINT "VVH_VOLUME_HORAIRE_FK" FOREIGN KEY ("VOLUME_HORAIRE_ID")
+	  REFERENCES "VOLUME_HORAIRE" ("ID") ON DELETE CASCADE ENABLE;
 
--- V_HAS_DMEP_A_FAIRE
-CREATE OR REPLACE FORCE VIEW "V_HAS_DMEP_A_FAIRE" ("INTERVENANT_ID", "STRUCTURE_ID", "HAS_DMEP_A_FAIRE") AS 
-  SELECT 
-  intervenant_id,
-  structure_id,
-  CASE WHEN
-    SUM(CASE WHEN heures_dmep > heures_compl THEN heures_compl ELSE heures_dmep END) < SUM(heures_compl)
-  THEN 1 ELSE 0 END has_dmep_a_faire
-FROM
-  (
-  SELECT
-    fr.intervenant_id intervenant_id,
-    NVL( ep.structure_id, i.structure_id ) structure_id,
-    frs.heures_compl_fi + frs.heures_compl_fa + frs.heures_compl_fc + frs.heures_compl_fc_majorees heures_compl,
-    SUM( NVL(mep.heures,0) ) OVER (PARTITION BY frs.id) heures_dmep,
-    SUM( NVL(CASE WHEN mep.periode_paiement_id IS NOT NULL THEN mep.heures ELSE 0 END,0) ) OVER (PARTITION BY frs.id) heures_mep,
-    ROW_NUMBER() OVER (PARTITION BY frs.id ORDER BY 1) index__
-  FROM
-    formule_resultat_service frs
-    JOIN formule_resultat fr ON fr.id = frs.formule_resultat_id
-    JOIN type_volume_horaire tvh ON tvh.id = fr.type_volume_horaire_id AND tvh.code = 'REALISE'
-    JOIN etat_volume_horaire evh ON evh.id = fr.etat_volume_horaire_id AND evh.code = 'valide'
-    JOIN intervenant i on i.id = fr.intervenant_id
-    JOIN service s ON s.id = frs.service_id
-    LEFT JOIN element_pedagogique ep on ep.id = s.element_pedagogique_id
-    LEFT JOIN mise_en_paiement mep ON mep.formule_res_service_id = frs.id AND mep.histo_destruction IS NULL
+-- WE_PREC_WE_FK
+ALTER TABLE "WF_ETAPE_DEP" ADD CONSTRAINT "WE_PREC_WE_FK" FOREIGN KEY ("ETAPE_PREC_ID")
+	  REFERENCES "WF_ETAPE" ("ID") ON DELETE CASCADE ENABLE;
 
-  UNION 
+-- WE_SUIV_WE_FK
+ALTER TABLE "WF_ETAPE_DEP" ADD CONSTRAINT "WE_SUIV_WE_FK" FOREIGN KEY ("ETAPE_SUIV_ID")
+	  REFERENCES "WF_ETAPE" ("ID") ON DELETE CASCADE ENABLE;
 
-    SELECT
-    fr.intervenant_id intervenant_id,
-    NVL( s.structure_id, i.structure_id ) structure_id,
-    frs.heures_compl_referentiel heures_compl,
-    SUM( NVL(mep.heures,0) ) OVER (PARTITION BY frs.id) heures_dmep,
-    SUM( NVL(CASE WHEN mep.periode_paiement_id IS NOT NULL THEN mep.heures ELSE 0 END,0) ) OVER (PARTITION BY frs.id) heures_mep,
-    ROW_NUMBER() OVER (PARTITION BY frs.id ORDER BY 1) index__
-  FROM
-    formule_resultat_service_ref frs
-    JOIN formule_resultat fr ON fr.id = frs.formule_resultat_id
-    JOIN type_volume_horaire tvh ON tvh.id = fr.type_volume_horaire_id AND tvh.code = 'REALISE'
-    JOIN etat_volume_horaire evh ON evh.id = fr.etat_volume_horaire_id AND evh.code = 'valide'
-    JOIN intervenant i on i.id = fr.intervenant_id
-    JOIN service_referentiel s ON s.id = frs.service_referentiel_id
-    LEFT JOIN mise_en_paiement mep ON mep.formule_res_service_ref_id = frs.id AND mep.histo_destruction IS NULL
-  )mep
-WHERE
-  index__ = 1
-GROUP BY
-  intervenant_id,
-  structure_id;
+-- WE_TYPE_INTERVENANT_FK
+ALTER TABLE "WF_ETAPE_DEP" ADD CONSTRAINT "WE_TYPE_INTERVENANT_FK" FOREIGN KEY ("TYPE_INTERVENANT_ID")
+	  REFERENCES "TYPE_INTERVENANT" ("ID") ON DELETE CASCADE ENABLE;
 
--- V_HETD_PREV_VAL_STRUCT
-CREATE OR REPLACE FORCE VIEW "V_HETD_PREV_VAL_STRUCT" ("ANNEE_ID", "STRUCTURE_ID", "HEURES") AS 
-  SELECT
-  annee_id,
-  structure_id,
-  sum(heures) heures
+-- WF_DB_ETAPE_DEP_FK
+ALTER TABLE "WF_DEP_BLOQUANTE" ADD CONSTRAINT "WF_DB_ETAPE_DEP_FK" FOREIGN KEY ("WF_ETAPE_DEP_ID")
+	  REFERENCES "WF_ETAPE_DEP" ("ID") ON DELETE CASCADE ENABLE;
 
-FROM 
-(
-SELECT
-  i.annee_id,
-  NVL( ep.structure_id, i.structure_id ) structure_id,
-  frs.total heures
-FROM
-  formule_resultat_service frs
-  JOIN formule_resultat fr ON fr.id = frs.formule_resultat_id
-  JOIN type_volume_horaire tvh ON tvh.id = fr.type_volume_horaire_id
-  JOIN etat_volume_horaire evh ON evh.id = fr.etat_volume_horaire_id
-  JOIN intervenant i ON i.id = fr.intervenant_id
-  JOIN service s ON s.id = frs.service_id
-  LEFT JOIN element_pedagogique ep ON ep.id = s.element_pedagogique_id
+-- WF_DB_TBL_WORKFLOW_FK
+ALTER TABLE "WF_DEP_BLOQUANTE" ADD CONSTRAINT "WF_DB_TBL_WORKFLOW_FK" FOREIGN KEY ("TBL_WORKFLOW_ID")
+	  REFERENCES "TBL_WORKFLOW" ("ID") ON DELETE CASCADE ENABLE;
 
-WHERE
-  tvh.code = 'PREVU'
-  AND evh.code = 'valide'
-) t1
+-- indic_diff_dossier_INT_FK
+ALTER TABLE "INDIC_MODIF_DOSSIER" ADD CONSTRAINT "indic_diff_dossier_INT_FK" FOREIGN KEY ("INTERVENANT_ID")
+	  REFERENCES "INTERVENANT" ("ID") ON DELETE CASCADE ENABLE;
 
-GROUP BY
-  annee_id, structure_id;
+--------------------------------------------------
+-- indexes
+--------------------------------------------------
 
--- V_IMPORT_TAB_COLS
-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 (
-  SELECT
-  t.table_name
-FROM
-  user_tab_cols c
-  join user_tables t on t.table_name = c.table_name
-WHERE
-  c.column_name = 'SOURCE_CODE'
+-- ADRESSE_INTERVENANT_HCFK_IDX
+CREATE INDEX "ADRESSE_INTERVENANT_HCFK_IDX" ON "ADRESSE_INTERVENANT" ("HISTO_CREATEUR_ID");
 
-MINUS
+-- ADRESSE_INTERVENANT_HDFK_IDX
+CREATE INDEX "ADRESSE_INTERVENANT_HDFK_IDX" ON "ADRESSE_INTERVENANT" ("HISTO_DESTRUCTEUR_ID");
 
-SELECT
-  mview_name table_name
-FROM
-  USER_MVIEWS
-), c_values (table_name, column_name, c_table_name, c_column_name) AS (
-SELECT
-  tc.table_name,
-  tc.column_name,
-  pcc.table_name c_table_name,
-  pcc.column_name c_column_name
-FROM
-  user_tab_cols tc
-  JOIN USER_CONS_COLUMNS cc ON cc.table_name = tc.table_name AND cc.column_name = tc.column_name
-  JOIN USER_CONSTRAINTS c ON c.constraint_name = cc.constraint_name
-  JOIN USER_CONSTRAINTS pc ON pc.constraint_name = c.r_constraint_name
-  JOIN USER_CONS_COLUMNS pcc ON pcc.constraint_name = pc.constraint_name
-WHERE
-  c.constraint_type = 'R' AND pc.constraint_type = 'P'
-)
-SELECT
-  tc.table_name,
-  tc.column_name,
-  tc.data_type,
-  CASE WHEN tc.char_length = 0 THEN NULL ELSE tc.char_length END length,
-  CASE WHEN tc.nullable = 'Y' THEN 1 ELSE 0 END nullable,
-  CASE WHEN tc.data_default IS NOT NULL THEN 1 ELSE 0 END has_default,
-  cv.c_table_name,
-  cv.c_column_name,
-  CASE WHEN stc.table_name IS NULL THEN 0 ELSE 1 END AS import_actif
-FROM
-  user_tab_cols tc
-  JOIN importable_tables t ON t.table_name = tc.table_name
-  LEFT JOIN import_tables it ON it.table_name = tc.table_name
-  LEFT JOIN c_values cv ON cv.table_name = tc.table_name AND cv.column_name = tc.column_name
-  LEFT JOIN user_tab_cols stc ON stc.table_name = 'SRC_' || tc.table_name AND stc.column_name = tc.column_name
-WHERE
-  tc.column_name not like 'HISTO_%'
-  AND tc.column_name <> 'ID'
-  AND tc.table_name <> 'SYNC_LOG'
-ORDER BY
-  it.ordre, tc.table_name, tc.column_id;
+-- ADRESSE_INTERVENANT_HMFK_IDX
+CREATE INDEX "ADRESSE_INTERVENANT_HMFK_IDX" ON "ADRESSE_INTERVENANT" ("HISTO_MODIFICATEUR_ID");
 
--- V_INDICATEUR_1010
-CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_1010" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID") AS 
-  SELECT rownum id, t."ANNEE_ID",t."INTERVENANT_ID",t."STRUCTURE_ID" FROM
-(
-SELECT DISTINCT
-  w.annee_id,
-  w.intervenant_id,
-  i.structure_id
-FROM
-  tbl_workflow w
-  JOIN tbl_workflow wc ON wc.intervenant_id = w.intervenant_id
-  JOIN intervenant i ON i.id = w.intervenant_id
-WHERE
-  w.etape_code = 'PJ_SAISIE'
-  AND wc.etape_code = 'SERVICE_SAISIE'
-  AND w.type_intervenant_code = 'E'
-  AND wc.realisation > 0
-  AND w.atteignable = 1
-  AND w.objectif > w.realisation
-) t;
+-- ADRESSE_INTERVENANT_PK
+CREATE UNIQUE INDEX "ADRESSE_INTERVENANT_PK" ON "ADRESSE_INTERVENANT" ("ID");
 
--- V_INDICATEUR_1011
-CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_1011" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID") AS 
-  SELECT rownum id, t."ANNEE_ID",t."INTERVENANT_ID",t."STRUCTURE_ID" FROM
-(
-SELECT DISTINCT
-  w.annee_id,
-  w.intervenant_id,
-  i.structure_id
-FROM
-  tbl_workflow w
-  JOIN tbl_workflow wc ON wc.intervenant_id = w.intervenant_id
-  JOIN intervenant i ON i.id = w.intervenant_id
-WHERE
-  w.etape_code = 'PJ_SAISIE'
-  AND wc.etape_code = 'SERVICE_SAISIE'
-  AND w.type_intervenant_code = 'P'
-  AND wc.realisation > 0
-  AND w.atteignable = 1
-  AND w.objectif > w.realisation
-) t;
+-- ADRESSE_INTERVENANT_SOURCE_UN
+CREATE UNIQUE INDEX "ADRESSE_INTERVENANT_SOURCE_UN" ON "ADRESSE_INTERVENANT" ("SOURCE_CODE");
 
--- V_INDICATEUR_1020
-CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_1020" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID") AS 
-  SELECT rownum id, t."ANNEE_ID",t."INTERVENANT_ID",t."STRUCTURE_ID" FROM
-(
-SELECT DISTINCT
-  w.annee_id,
-  w.intervenant_id,
-  i.structure_id
-FROM
-  tbl_workflow w
-  JOIN tbl_workflow wc ON wc.intervenant_id = w.intervenant_id
-  JOIN intervenant i ON i.id = w.intervenant_id
-WHERE
-  w.etape_code = 'PJ_VALIDATION'
-  AND wc.etape_code = 'PJ_SAISIE'
-  AND w.type_intervenant_code = 'E'
-  AND wc.objectif = wc.realisation
-  AND w.atteignable = 1
-  AND w.objectif > w.realisation
-) t;
+-- ADRESSE_INTERVENANT__UN
+CREATE UNIQUE INDEX "ADRESSE_INTERVENANT__UN" ON "ADRESSE_INTERVENANT" ("INTERVENANT_ID", "HISTO_DESTRUCTION");
 
--- V_INDICATEUR_1021
-CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_1021" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID") AS 
-  SELECT rownum id, t."ANNEE_ID",t."INTERVENANT_ID",t."STRUCTURE_ID" FROM
-(
-SELECT DISTINCT
-  w.annee_id,
-  w.intervenant_id,
-  i.structure_id
-FROM
-  tbl_workflow w
-  JOIN tbl_workflow wc ON wc.intervenant_id = w.intervenant_id
-  JOIN intervenant i ON i.id = w.intervenant_id
-WHERE
-  w.etape_code = 'PJ_VALIDATION'
-  AND wc.etape_code = 'PJ_SAISIE'
-  AND w.type_intervenant_code = 'P'
-  AND wc.objectif = wc.realisation
-  AND w.atteignable = 1
-  AND w.objectif > w.realisation
-) t;
+-- ADRESSE_STRUCTURE_HCFK_IDX
+CREATE INDEX "ADRESSE_STRUCTURE_HCFK_IDX" ON "ADRESSE_STRUCTURE" ("HISTO_CREATEUR_ID");
+
+-- ADRESSE_STRUCTURE_HDFK_IDX
+CREATE INDEX "ADRESSE_STRUCTURE_HDFK_IDX" ON "ADRESSE_STRUCTURE" ("HISTO_DESTRUCTEUR_ID");
 
--- V_INDICATEUR_110
-CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_110" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID") AS 
-  SELECT 
-  rownum id, 
-  t."ANNEE_ID",t."INTERVENANT_ID",t."STRUCTURE_ID" FROM (
+-- ADRESSE_STRUCTURE_HMFK_IDX
+CREATE INDEX "ADRESSE_STRUCTURE_HMFK_IDX" ON "ADRESSE_STRUCTURE" ("HISTO_MODIFICATEUR_ID");
 
-SELECT DISTINCT
-  s.annee_id       annee_id,
-  s.intervenant_id intervenant_id,
-  s.structure_id   structure_id
-FROM
-  tbl_service s
-WHERE
-  s.type_intervenant_code = 'P'
-  AND s.type_volume_horaire_code = 'PREVU'
-  AND s.intervenant_structure_id <> s.structure_id
-  AND s.valide > 0
-  AND s.structure_id IS NOT NULL
+-- ADRESSE_STRUCTURE_PK
+CREATE UNIQUE INDEX "ADRESSE_STRUCTURE_PK" ON "ADRESSE_STRUCTURE" ("ID");
 
-) t;
+-- ADRESSE_STRUCTURE_SOURCE_UN
+CREATE UNIQUE INDEX "ADRESSE_STRUCTURE_SOURCE_UN" ON "ADRESSE_STRUCTURE" ("SOURCE_CODE");
 
--- V_INDICATEUR_1110
-CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_1110" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID") AS 
-  SELECT rownum id, t.ANNEE_ID,t.INTERVENANT_ID,t.STRUCTURE_ID FROM (
-SELECT DISTINCT
-  idc.annee_id,
-  idc.intervenant_id,
-  idc.structure_id
-FROM
-            v_indic_depass_charges  idc
-       JOIN type_volume_horaire     tvh ON tvh.id = idc.type_volume_horaire_id
-  LEFT JOIN periode                 p ON p.id = idc.periode_id
-WHERE
-  (p.code = 'S1' OR p.id IS NULL)
-  AND tvh.code = 'PREVU'
-) t;
+-- AFFECTATION_HCFK_IDX
+CREATE INDEX "AFFECTATION_HCFK_IDX" ON "AFFECTATION" ("HISTO_CREATEUR_ID");
 
--- V_INDICATEUR_1111
-CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_1111" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID") AS 
-  SELECT rownum id, t.ANNEE_ID,t.INTERVENANT_ID,t.STRUCTURE_ID FROM (
-SELECT DISTINCT
-  idc.annee_id,
-  idc.intervenant_id,
-  idc.structure_id
-FROM
-            v_indic_depass_charges  idc
-       JOIN type_volume_horaire     tvh ON tvh.id = idc.type_volume_horaire_id
-  LEFT JOIN periode                 p ON p.id = idc.periode_id
-WHERE
-  (p.code = 'S2' OR p.id IS NULL)
-  AND tvh.code = 'PREVU'
-) t;
+-- AFFECTATION_HDFK_IDX
+CREATE INDEX "AFFECTATION_HDFK_IDX" ON "AFFECTATION" ("HISTO_DESTRUCTEUR_ID");
 
--- V_INDICATEUR_1120
-CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_1120" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID") AS 
-  SELECT rownum id, t.ANNEE_ID,t.INTERVENANT_ID,t.STRUCTURE_ID FROM (
-SELECT DISTINCT
-  idc.annee_id,
-  idc.intervenant_id,
-  idc.structure_id
-FROM
-            v_indic_depass_charges  idc
-       JOIN type_volume_horaire     tvh ON tvh.id = idc.type_volume_horaire_id
-  LEFT JOIN periode                 p ON p.id = idc.periode_id
-WHERE
-  (p.code = 'S1' OR p.id IS NULL)
-  AND tvh.code = 'REALISE'
-) t;
+-- AFFECTATION_HMFK_IDX
+CREATE INDEX "AFFECTATION_HMFK_IDX" ON "AFFECTATION" ("HISTO_MODIFICATEUR_ID");
 
--- V_INDICATEUR_1121
-CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_1121" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID") AS 
-  SELECT rownum id, t.ANNEE_ID,t.INTERVENANT_ID,t.STRUCTURE_ID FROM (
-SELECT DISTINCT
-  idc.annee_id,
-  idc.intervenant_id,
-  idc.structure_id
-FROM
-            v_indic_depass_charges  idc
-       JOIN type_volume_horaire     tvh ON tvh.id = idc.type_volume_horaire_id
-  LEFT JOIN periode                 p ON p.id = idc.periode_id
-WHERE
-  (p.code = 'S2' OR p.id IS NULL)
-  AND tvh.code = 'REALISE'
-) t;
+-- AFFECTATION_PK
+CREATE UNIQUE INDEX "AFFECTATION_PK" ON "AFFECTATION" ("ID");
 
--- V_INDICATEUR_120
-CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_120" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID") AS 
-  SELECT 
-  rownum id, 
-  t."ANNEE_ID",t."INTERVENANT_ID",t."STRUCTURE_ID" FROM (
+-- AFFECTATION_ROLE_FK_IDX
+CREATE INDEX "AFFECTATION_ROLE_FK_IDX" ON "AFFECTATION" ("ROLE_ID");
 
-SELECT DISTINCT
-  s.annee_id annee_id,
-  s.intervenant_id intervenant_id,
-  s.structure_id structure_id
-FROM
-  tbl_service s
-WHERE
-  s.type_intervenant_code = 'P'
-  AND s.type_volume_horaire_code = 'PREVU'
-  AND s.intervenant_structure_id <> s.structure_id
-  AND s.valide > 0
-  AND s.structure_id IS NOT NULL
+-- AFFECTATION_R_HCFK_IDX
+CREATE INDEX "AFFECTATION_R_HCFK_IDX" ON "AFFECTATION_RECHERCHE" ("HISTO_CREATEUR_ID");
 
-) t;
+-- AFFECTATION_R_HDFK_IDX
+CREATE INDEX "AFFECTATION_R_HDFK_IDX" ON "AFFECTATION_RECHERCHE" ("HISTO_DESTRUCTEUR_ID");
 
--- V_INDICATEUR_1210
-CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_1210" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID", "PLAFOND", "HEURES") AS 
-  SELECT
-  i.id id,
-  i.annee_id,
-  i.id intervenant_id,
-  i.structure_id,
-  AVG(t.plafond)  plafond,
-  AVG(t.heures)   heures
-FROM
-  (
-  SELECT
-    vhr.type_volume_horaire_id        type_volume_horaire_id,
-    sr.intervenant_id                 intervenant_id,
-    fr.plafond                        plafond,
-    fr.id                             fr_id,
-    SUM(vhr.heures)                   heures
-  FROM
-         service_referentiel       sr
-    JOIN fonction_referentiel      fr ON fr.id = sr.fonction_id
-    JOIN volume_horaire_ref       vhr ON vhr.service_referentiel_id = sr.id AND vhr.histo_destruction IS NULL
-    JOIN type_volume_horaire      tvh ON tvh.id = vhr.type_volume_horaire_id AND tvh.code= 'PREVU'
-  WHERE
-    sr.histo_destruction IS NULL
-  GROUP BY
-    vhr.type_volume_horaire_id,
-    sr.intervenant_id,
-    fr.plafond,
-    fr.id
-  ) t
-  JOIN intervenant i ON i.id = t.intervenant_id
-WHERE
-  t.heures > t.plafond
-  /*i.id*/
-GROUP BY
-  t.type_volume_horaire_id,
-  i.annee_id,
-  i.id,
-  i.structure_id;
+-- AFFECTATION_R_HMFK_IDX
+CREATE INDEX "AFFECTATION_R_HMFK_IDX" ON "AFFECTATION_RECHERCHE" ("HISTO_MODIFICATEUR_ID");
 
--- V_INDICATEUR_1220
-CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_1220" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID", "PLAFOND", "HEURES") AS 
-  SELECT
-  i.id id,
-  i.annee_id,
-  i.id intervenant_id,
-  i.structure_id,
-  AVG(t.plafond)  plafond,
-  AVG(t.heures)   heures
-FROM
-  (
-  SELECT
-    vhr.type_volume_horaire_id        type_volume_horaire_id,
-    sr.intervenant_id                 intervenant_id,
-    fr.plafond                        plafond,
-    fr.id                             fr_id,
-    SUM(vhr.heures)                   heures
-  FROM
-         service_referentiel       sr
-    JOIN fonction_referentiel      fr ON fr.id = sr.fonction_id
-    JOIN volume_horaire_ref       vhr ON vhr.service_referentiel_id = sr.id AND vhr.histo_destruction IS NULL
-    JOIN type_volume_horaire      tvh ON tvh.id = vhr.type_volume_horaire_id AND tvh.code= 'REALISE'
-  WHERE
-    sr.histo_destruction IS NULL
-  GROUP BY
-    vhr.type_volume_horaire_id,
-    sr.intervenant_id,
-    fr.plafond,
-    fr.id
-  ) t
-  JOIN intervenant i ON i.id = t.intervenant_id
-WHERE
-  t.heures > t.plafond
-  /*i.id*/
-GROUP BY
-  t.type_volume_horaire_id,
-  i.annee_id,
-  i.id,
-  i.structure_id;
+-- AFFECTATION_R_PK
+CREATE UNIQUE INDEX "AFFECTATION_R_PK" ON "AFFECTATION_RECHERCHE" ("ID");
 
--- V_INDICATEUR_130
-CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_130" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID") AS 
-  SELECT 
-  rownum id, 
-  t."ANNEE_ID",t."INTERVENANT_ID",t."STRUCTURE_ID" FROM (
+-- AFFECTATION_R_SOURCE_FK_IDX
+CREATE INDEX "AFFECTATION_R_SOURCE_FK_IDX" ON "AFFECTATION_RECHERCHE" ("SOURCE_ID");
 
-SELECT DISTINCT
-  s.annee_id annee_id,
-  s.intervenant_id intervenant_id,
-  i.structure_id structure_id
-FROM
-  tbl_service s
-  JOIN intervenant i ON i.id = s.intervenant_id
-  JOIN statut_intervenant si ON si.id = i.statut_id
-WHERE
-  si.tem_biatss = 1
-  AND s.type_volume_horaire_code = 'PREVU'
-  AND s.intervenant_structure_id <> s.structure_id
-  AND s.valide > 0
-  AND s.structure_id IS NOT NULL
+-- AFFECTATION_R_SRC_UN
+CREATE UNIQUE INDEX "AFFECTATION_R_SRC_UN" ON "AFFECTATION_RECHERCHE" ("SOURCE_CODE");
 
-) t;
+-- AFFECTATION_R_STRUCTURE_FK_IDX
+CREATE INDEX "AFFECTATION_R_STRUCTURE_FK_IDX" ON "AFFECTATION_RECHERCHE" ("STRUCTURE_ID");
 
--- V_INDICATEUR_210
-CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_210" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID") AS 
-  SELECT
-  rownum id,
-  w.annee_id,
-  w.intervenant_id,
-  w.structure_id
-FROM 
-  tbl_workflow w
-WHERE
-  w.atteignable = 1
-  AND w.etape_code = 'CONSEIL_RESTREINT'
-  AND w.objectif > 0
-  AND w.realisation < 1;
+-- AFFECTATION_SOURCE_FK_IDX
+CREATE INDEX "AFFECTATION_SOURCE_FK_IDX" ON "AFFECTATION" ("SOURCE_ID");
 
--- V_INDICATEUR_220
-CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_220" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID") AS 
-  SELECT
-  rownum id,
-  w.annee_id,
-  w.intervenant_id,
-  i.structure_id
-FROM 
-  tbl_workflow w
-  JOIN intervenant i ON i.id = w.intervenant_id
-WHERE
-  w.atteignable = 1
-  AND w.etape_code = 'CONSEIL_ACADEMIQUE'
-  AND w.objectif > 0
-  AND w.realisation < 1;
+-- AFFECTATION_SOURCE_UN
+CREATE UNIQUE INDEX "AFFECTATION_SOURCE_UN" ON "AFFECTATION" ("SOURCE_CODE");
 
--- V_INDICATEUR_310
-CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_310" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID") AS 
-  WITH caok AS (
-  SELECT
-    w.intervenant_id
-  FROM 
-    tbl_workflow w
-  WHERE
-    w.objectif > 0
-    AND w.etape_code = 'CONSEIL_ACADEMIQUE'
-    AND w.realisation = w.objectif
-)
-SELECT
-  rownum id,
-  w.annee_id,
-  w.intervenant_id,
-  w.structure_id
-FROM 
-  tbl_workflow w
-  JOIN caok ON caok.intervenant_id = w.intervenant_id
-WHERE
-  w.atteignable = 1
-  AND w.etape_code = 'CONTRAT'
-  AND w.objectif > 0
-  AND w.realisation < 1;
+-- AFFECTATION_STRUCTURE_FK_IDX
+CREATE INDEX "AFFECTATION_STRUCTURE_FK_IDX" ON "AFFECTATION" ("STRUCTURE_ID");
 
--- V_INDICATEUR_320
-CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_320" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID") AS 
-  SELECT
-  rownum id,
-  t."ANNEE_ID",t."INTERVENANT_ID",t."STRUCTURE_ID"
-FROM (
-SELECT DISTINCT
-  w.annee_id,
-  w.intervenant_id,
-  w.structure_id
-FROM 
-  tbl_workflow w
-  LEFT JOIN tbl_contrat c ON c.INTERVENANT_ID = w.intervenant_id AND w.structure_id = c.structure_id
-WHERE
-  w.atteignable = 1
-  AND w.etape_code = 'CONTRAT'
-  AND w.objectif > 0
-  AND w.realisation = 0
-  AND NVL(c.EDITE,0) <> 1
-) t;
+-- AFFECTATION__UN
+CREATE UNIQUE INDEX "AFFECTATION__UN" ON "AFFECTATION" ("ROLE_ID", "STRUCTURE_ID", "HISTO_DESTRUCTION", "UTILISATEUR_ID");
+
+-- AGREMENT_HCFK_IDX
+CREATE INDEX "AGREMENT_HCFK_IDX" ON "AGREMENT" ("HISTO_CREATEUR_ID");
+
+-- AGREMENT_HDFK_IDX
+CREATE INDEX "AGREMENT_HDFK_IDX" ON "AGREMENT" ("HISTO_DESTRUCTEUR_ID");
+
+-- AGREMENT_HMFK_IDX
+CREATE INDEX "AGREMENT_HMFK_IDX" ON "AGREMENT" ("HISTO_MODIFICATEUR_ID");
+
+-- AGREMENT_INTERVENANT_FK_IDX
+CREATE INDEX "AGREMENT_INTERVENANT_FK_IDX" ON "AGREMENT" ("INTERVENANT_ID");
+
+-- AGREMENT_PK
+CREATE UNIQUE INDEX "AGREMENT_PK" ON "AGREMENT" ("ID");
+
+-- AGREMENT_STRUCTURE_FK_IDX
+CREATE INDEX "AGREMENT_STRUCTURE_FK_IDX" ON "AGREMENT" ("STRUCTURE_ID");
+
+-- AGREMENT_TYPE_AGREMENT_FK_IDX
+CREATE INDEX "AGREMENT_TYPE_AGREMENT_FK_IDX" ON "AGREMENT" ("TYPE_AGREMENT_ID");
+
+-- AGREMENT__UN
+CREATE UNIQUE INDEX "AGREMENT__UN" ON "AGREMENT" ("TYPE_AGREMENT_ID", "INTERVENANT_ID", "STRUCTURE_ID", "HISTO_DESTRUCTION");
+
+-- AII_FK_IDX
+CREATE INDEX "AII_FK_IDX" ON "ADRESSE_INTERVENANT" ("INTERVENANT_ID");
+
+-- AI_SOURCE_FK_IDX
+CREATE INDEX "AI_SOURCE_FK_IDX" ON "ADRESSE_INTERVENANT" ("SOURCE_ID");
+
+-- ANNEE_PK
+CREATE UNIQUE INDEX "ANNEE_PK" ON "ANNEE" ("ID");
+
+-- AR_INTERVENANT_FK_IDX
+CREATE INDEX "AR_INTERVENANT_FK_IDX" ON "AFFECTATION_RECHERCHE" ("INTERVENANT_ID");
 
--- V_INDICATEUR_330
-CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_330" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID") AS 
-  WITH has_contrat AS (
-  SELECT DISTINCT
-    intervenant_id
-  FROM
-    tbl_contrat
-  WHERE
-    edite > 0
-)
-SELECT
-  rownum id,
-  w.annee_id,
-  w.intervenant_id,
-  w.structure_id
-FROM 
-  tbl_workflow w
-  JOIN has_contrat hc ON hc.intervenant_id = w.intervenant_id
-WHERE
-  w.atteignable = 1
-  AND w.etape_code = 'CONTRAT'
-  AND w.objectif > 0
-  AND w.realisation < w.objectif;
+-- AS_SOURCE_FK_IDX
+CREATE INDEX "AS_SOURCE_FK_IDX" ON "ADRESSE_STRUCTURE" ("SOURCE_ID");
 
--- V_INDICATEUR_340
-CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_340" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID") AS 
-  SELECT
-  rownum id,
-  s.annee_id,
-  s.intervenant_id,
-  s.structure_id
-FROM
-  tbl_service s
-  JOIN tbl_workflow w ON w.intervenant_id = s.intervenant_id AND w.structure_id = s.structure_id
-WHERE
-  s.type_intervenant_code = 'V'
-  AND s.type_volume_horaire_code = 'PREVU'
-  AND nbvh <> valide
-  AND w.etape_code = 'CONTRAT'
-  AND w.atteignable = 1
-  AND w.objectif > 0
-  AND w.realisation = w.objectif;
+-- AS_STRUCTURE_FK_IDX
+CREATE INDEX "AS_STRUCTURE_FK_IDX" ON "ADRESSE_STRUCTURE" ("STRUCTURE_ID");
 
--- V_INDICATEUR_350
-CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_350" ("ID", "INTERVENANT_ID", "ANNEE_ID", "STRUCTURE_ID", "CONTRAT_ID") AS 
-  SELECT
-  rownum id,
-  t."INTERVENANT_ID",t."ANNEE_ID",t."STRUCTURE_ID",t."CONTRAT_ID"
-FROM (
-SELECT DISTINCT
-  i.id intervenant_id,
-  i.annee_id annee_id,
-  c.structure_id structure_id,
-  c.id contrat_id
-FROM
-  contrat                c
-  JOIN contrat_fichier  cf ON cf.contrat_id = c.id
-  JOIN fichier           f ON f.id = cf.fichier_id
-                          AND f.histo_destruction IS NULL
-  JOIN intervenant i ON i.id = c.intervenant_id
-WHERE
-  c.histo_destruction IS NULL
-) t;
+-- CAMPAGNE_PK_IDX
+CREATE UNIQUE INDEX "CAMPAGNE_PK_IDX" ON "CAMPAGNE_SAISIE" ("ID");
 
--- V_INDICATEUR_360
-CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_360" ("ID", "INTERVENANT_ID", "ANNEE_ID", "STRUCTURE_ID", "CONTRAT_ID") AS 
-  SELECT
-  rownum id,
-  t."INTERVENANT_ID",t."ANNEE_ID",t."STRUCTURE_ID",t."CONTRAT_ID"
-FROM (
-SELECT DISTINCT
-  i.id intervenant_id,
-  i.annee_id annee_id,
-  c.structure_id structure_id,
-  c.id contrat_id
-FROM
-  contrat                c
-  JOIN intervenant i ON i.id = c.intervenant_id
-  JOIN tbl_workflow w ON w.intervenant_id = i.id AND w.structure_id = c.structure_id AND w.etape_code = 'CONTRAT' AND w.atteignable = 1
-  JOIN validation v ON v.id = c.validation_id AND v.histo_destruction IS NULL
-WHERE
-  c.histo_destruction IS NULL
-  AND c.date_retour_signe IS NULL
-) t;
+-- CAMPAGNE_SAISIE_ANNEE_FK_IDX
+CREATE INDEX "CAMPAGNE_SAISIE_ANNEE_FK_IDX" ON "CAMPAGNE_SAISIE" ("ANNEE_ID");
 
--- V_INDICATEUR_410
-CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_410" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID") AS 
-  SELECT
-  rownum id,
-  d.annee_id,
-  d.intervenant_id,
-  i.structure_id
-FROM
-  tbl_dossier d
-  JOIN intervenant i ON i.id = d.intervenant_id
-WHERE
-  d.dossier_id IS NOT NULL
-  AND d.validation_id IS NULL
-  AND d.peut_saisir_dossier = 1;
+-- CAMPAGNE_SAISIE__UN_IDX
+CREATE UNIQUE INDEX "CAMPAGNE_SAISIE__UN_IDX" ON "CAMPAGNE_SAISIE" ("ANNEE_ID", "TYPE_INTERVENANT_ID", "TYPE_VOLUME_HORAIRE_ID");
 
--- V_INDICATEUR_420
-CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_420" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID") AS 
-  SELECT rownum id, t."ANNEE_ID",t."INTERVENANT_ID",t."STRUCTURE_ID" FROM (
-  SELECT DISTINCT
-    i.annee_id annee_id,
-    i.id intervenant_id,
-    i.structure_id
-  FROM
-    indic_modif_dossier d
-    JOIN intervenant i ON i.id = d.intervenant_id
-  WHERE
-    d.histo_destruction IS NULL
-) t;
+-- CATEGORIE_PRIVILEGE_PK
+CREATE UNIQUE INDEX "CATEGORIE_PRIVILEGE_PK" ON "CATEGORIE_PRIVILEGE" ("ID");
 
--- V_INDICATEUR_510
-CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_510" ("ID", "INTERVENANT_ID", "ANNEE_ID", "STRUCTURE_ID", "ELEMENTS") AS 
-  WITH t AS (
-SELECT
-  s.intervenant_id,
-  s.annee_id,
-  s.structure_id,
-  listagg( ep.source_code || ' - ' || ep.libelle, '||') WITHIN GROUP (ORDER BY ep.libelle) elements
-FROM
-  tbl_service s
-  LEFT JOIN element_pedagogique ep ON ep.id = s.element_pedagogique_id
-WHERE
-  (
-    s.has_heures_mauvaise_periode = 1
-    OR s.etape_histo = 0
-    OR s.element_pedagogique_histo = 0
-  )
-  AND s.heures > 0
-GROUP BY
-  s.intervenant_id,
-  s.annee_id,
-  s.structure_id
-)
-SELECT
-  rownum id, t."INTERVENANT_ID",t."ANNEE_ID",t."STRUCTURE_ID", t.elements
-FROM t;
+-- CATEGORIE_PRIVILEGE__UN
+CREATE UNIQUE INDEX "CATEGORIE_PRIVILEGE__UN" ON "CATEGORIE_PRIVILEGE" ("CODE");
 
--- V_INDICATEUR_520
-CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_520" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID", "PLAFOND", "HEURES") AS 
-  SELECT
-  fr.id id,
-  i.annee_id annee_id,
-  i.id intervenant_id,
-  i.structure_id structure_id,
-  si.plafond_hc_hors_remu_fc plafond,
-  fr.heures_compl_fa + fr.heures_compl_fc + fr.heures_compl_fi + fr.heures_compl_referentiel heures
-FROM
-  formule_resultat fr
-  JOIN type_volume_horaire tvh ON tvh.id = fr.type_volume_horaire_id
-  JOIN etat_volume_horaire evh ON evh.id = fr.etat_volume_horaire_id
-  JOIN intervenant i ON i.id = fr.intervenant_id
-  JOIN statut_intervenant si ON si.id = i.statut_id
-WHERE
-  tvh.code = 'PREVU'
-  AND evh.code = 'saisi'
-  AND si.plafond_hc_hors_remu_fc < fr.heures_compl_fa + fr.heures_compl_fc + fr.heures_compl_fi + fr.heures_compl_referentiel;
+-- CCEP_CENTRE_COUT_FK_IDX
+CREATE INDEX "CCEP_CENTRE_COUT_FK_IDX" ON "CENTRE_COUT_EP" ("CENTRE_COUT_ID");
 
--- V_INDICATEUR_530
-CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_530" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID", "PLAFOND", "HEURES") AS 
-  SELECT
-  fr.id id,
-  i.annee_id annee_id,
-  i.id intervenant_id,
-  i.structure_id structure_id,
-  si.plafond_hc_hors_remu_fc plafond,
-  fr.heures_compl_fa + fr.heures_compl_fc + fr.heures_compl_fi + fr.heures_compl_referentiel heures
-FROM
-  formule_resultat fr
-  JOIN type_volume_horaire tvh ON tvh.id = fr.type_volume_horaire_id
-  JOIN etat_volume_horaire evh ON evh.id = fr.etat_volume_horaire_id
-  JOIN intervenant i ON i.id = fr.intervenant_id
-  JOIN statut_intervenant si ON si.id = i.statut_id
-WHERE
-  tvh.code = 'REALISE'
-  AND evh.code = 'saisi'
-  AND si.plafond_hc_hors_remu_fc < fr.heures_compl_fa + fr.heures_compl_fc + fr.heures_compl_fi + fr.heures_compl_referentiel;
+-- CCEP_EP_FK_IDX
+CREATE INDEX "CCEP_EP_FK_IDX" ON "CENTRE_COUT_EP" ("ELEMENT_PEDAGOGIQUE_ID");
 
--- V_INDICATEUR_540
-CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_540" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID", "PLAFOND", "HEURES") AS 
-  SELECT
-  rownum                              id,
-  i.annee_id                          annee_id,
-  i.id                                intervenant_id,
-  i.structure_id                      structure_id,
-  ROUND( (COALESCE(si.plafond_hc_remu_fc,0) - COALESCE(i.montant_indemnite_fc,0)) / a.taux_hetd, 2 ) plafond,
-  fr.heures_compl_fc_majorees         heures
-FROM
-       intervenant                i
-  JOIN annee                      a ON a.id = i.annee_id
-  JOIN statut_intervenant        si ON si.id = i.statut_id
-  JOIN etat_volume_horaire      evh ON evh.code = 'saisi'
-  JOIN formule_resultat          fr ON fr.intervenant_id = i.id AND fr.etat_volume_horaire_id = evh.id
-  JOIN type_volume_horaire tvh ON tvh.id = fr.type_volume_horaire_id
-WHERE
-  fr.heures_compl_fc_majorees > ROUND( (COALESCE(si.plafond_hc_remu_fc,0) - COALESCE(i.montant_indemnite_fc,0)) / a.taux_hetd, 2 )
-  AND tvh.code = 'PREVU';
+-- CCEP_SOURCE_FK_IDX
+CREATE INDEX "CCEP_SOURCE_FK_IDX" ON "CENTRE_COUT_EP" ("SOURCE_ID");
 
--- V_INDICATEUR_550
-CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_550" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID", "PLAFOND", "HEURES") AS 
-  SELECT
-  rownum                              id,
-  i.annee_id                          annee_id,
-  i.id                                intervenant_id,
-  i.structure_id                      structure_id,
-  ROUND( (COALESCE(si.plafond_hc_remu_fc,0) - COALESCE(i.montant_indemnite_fc,0)) / a.taux_hetd, 2 ) plafond,
-  fr.heures_compl_fc_majorees         heures
-FROM
-       intervenant                i
-  JOIN annee                      a ON a.id = i.annee_id
-  JOIN statut_intervenant        si ON si.id = i.statut_id
-  JOIN etat_volume_horaire      evh ON evh.code = 'saisi'
-  JOIN formule_resultat          fr ON fr.intervenant_id = i.id AND fr.etat_volume_horaire_id = evh.id
-  JOIN type_volume_horaire tvh ON tvh.id = fr.type_volume_horaire_id
-WHERE
-  fr.heures_compl_fc_majorees > ROUND( (COALESCE(si.plafond_hc_remu_fc,0) - COALESCE(i.montant_indemnite_fc,0)) / a.taux_hetd, 2 )
-  AND tvh.code = 'REALISE';
+-- CCEP_TYPE_HEURES_FK_IDX
+CREATE INDEX "CCEP_TYPE_HEURES_FK_IDX" ON "CENTRE_COUT_EP" ("TYPE_HEURES_ID");
 
--- V_INDICATEUR_560
-CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_560" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID", "PLAFOND", "HEURES") AS 
-  SELECT
-  rownum                              id,
-  i.annee_id                          annee_id,
-  i.id                                intervenant_id,
-  i.structure_id                      structure_id,
-  si.maximum_hetd                     plafond,
-  fr.total                            heures
-FROM
-  intervenant                     i
-  JOIN etat_volume_horaire      evh ON evh.code = 'saisi'
-  JOIN formule_resultat          fr ON fr.intervenant_id = i.id AND fr.etat_volume_horaire_id = evh.id
-  JOIN statut_intervenant        si ON si.id = i.statut_id
-  JOIN type_volume_horaire      tvh ON tvh.id = fr.type_volume_horaire_id AND tvh.code= 'PREVU'
-WHERE
-  fr.total > si.maximum_hetd;
+-- CCS_CC_S__UN_IDX
+CREATE UNIQUE INDEX "CCS_CC_S__UN_IDX" ON "CENTRE_COUT_STRUCTURE" ("CENTRE_COUT_ID", "STRUCTURE_ID", "HISTO_DESTRUCTION");
 
--- V_INDICATEUR_570
-CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_570" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID", "PLAFOND", "HEURES") AS 
-  SELECT
-  rownum                              id,
-  i.annee_id                          annee_id,
-  i.id                                intervenant_id,
-  i.structure_id                      structure_id,
-  si.maximum_hetd                     plafond,
-  fr.total                            heures
-FROM
-  intervenant                     i
-  JOIN etat_volume_horaire      evh ON evh.code = 'saisi'
-  JOIN formule_resultat          fr ON fr.intervenant_id = i.id AND fr.etat_volume_horaire_id = evh.id
-  JOIN statut_intervenant        si ON si.id = i.statut_id
-  JOIN type_volume_horaire      tvh ON tvh.id = fr.type_volume_horaire_id AND tvh.code= 'REALISE'
-WHERE
-  fr.total > si.maximum_hetd;
+-- CCS_CENTRE_COUT_FK_IDX
+CREATE INDEX "CCS_CENTRE_COUT_FK_IDX" ON "CENTRE_COUT_STRUCTURE" ("CENTRE_COUT_ID");
 
--- V_INDICATEUR_610
-CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_610" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID", "STATUT_INTERVENANT_ID") AS 
-  SELECT rownum id, t."ANNEE_ID",t."INTERVENANT_ID",t."STRUCTURE_ID",t."STATUT_INTERVENANT_ID" FROM
-(
-SELECT DISTINCT
-  w.annee_id,
-  w.intervenant_id,
-  w.structure_id,
-  w.statut_intervenant_id
-FROM
-  tbl_workflow w
-WHERE
-  w.etape_code = 'SERVICE_VALIDATION'
-  AND w.type_intervenant_code = 'P'
-  AND w.atteignable = 1
-  AND w.objectif > w.realisation
-) t;
+-- CCS_SOURCE_CODE_UN_IDX
+CREATE UNIQUE INDEX "CCS_SOURCE_CODE_UN_IDX" ON "CENTRE_COUT_STRUCTURE" ("SOURCE_CODE", "HISTO_DESTRUCTION");
+
+-- CCS_STRUCTURE_FK_IDX
+CREATE INDEX "CCS_STRUCTURE_FK_IDX" ON "CENTRE_COUT_STRUCTURE" ("STRUCTURE_ID");
+
+-- CC_ACTIVITE_FA
+CREATE INDEX "CC_ACTIVITE_FA" ON "CC_ACTIVITE" ("FA");
+
+-- CC_ACTIVITE_FC
+CREATE INDEX "CC_ACTIVITE_FC" ON "CC_ACTIVITE" ("FC");
+
+-- CC_ACTIVITE_FI
+CREATE INDEX "CC_ACTIVITE_FI" ON "CC_ACTIVITE" ("FI");
+
+-- CC_ACTIVITE_HCFK_IDX
+CREATE INDEX "CC_ACTIVITE_HCFK_IDX" ON "CC_ACTIVITE" ("HISTO_CREATEUR_ID");
+
+-- CC_ACTIVITE_HDFK_IDX
+CREATE INDEX "CC_ACTIVITE_HDFK_IDX" ON "CC_ACTIVITE" ("HISTO_DESTRUCTEUR_ID");
+
+-- CC_ACTIVITE_HMFK_IDX
+CREATE INDEX "CC_ACTIVITE_HMFK_IDX" ON "CC_ACTIVITE" ("HISTO_MODIFICATEUR_ID");
+
+-- CC_ACTIVITE_PK
+CREATE UNIQUE INDEX "CC_ACTIVITE_PK" ON "CC_ACTIVITE" ("ID");
+
+-- CC_ACTIVITE_REF
+CREATE INDEX "CC_ACTIVITE_REF" ON "CC_ACTIVITE" ("REFERENTIEL");
+
+-- CC_TYPE_RESSOURCE_FK_IDX
+CREATE INDEX "CC_TYPE_RESSOURCE_FK_IDX" ON "CENTRE_COUT" ("TYPE_RESSOURCE_ID");
 
--- V_INDICATEUR_620
-CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_620" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID") AS 
-  SELECT rownum id, t."ANNEE_ID",t."INTERVENANT_ID",t."STRUCTURE_ID" FROM
-(
-SELECT DISTINCT
-  w.annee_id,
-  w.intervenant_id,
-  w.structure_id
-FROM
-  tbl_workflow w
-WHERE
-  w.etape_code = 'REFERENTIEL_VALIDATION'
-  AND w.type_intervenant_code = 'P'
-  AND w.atteignable = 1
-  AND w.objectif > w.realisation
-) t;
+-- CENTRE_COUT_ACTIVITE_FK_IDX
+CREATE INDEX "CENTRE_COUT_ACTIVITE_FK_IDX" ON "CENTRE_COUT" ("ACTIVITE_ID");
 
--- V_INDICATEUR_630
-CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_630" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID") AS 
-  SELECT rownum id, t."ANNEE_ID",t."INTERVENANT_ID",t."STRUCTURE_ID" FROM
-(
-SELECT DISTINCT
-  w.annee_id,
-  w.intervenant_id,
-  i.structure_id
-FROM
-  tbl_workflow w
-  JOIN intervenant i ON i.id = w.intervenant_id
-WHERE
-  w.etape_code = 'CLOTURE_REALISE'
-  AND w.atteignable = 1
-  AND w.objectif > w.realisation
-) t;
+-- CENTRE_COUT_CENTRE_COUT_FK_IDX
+CREATE INDEX "CENTRE_COUT_CENTRE_COUT_FK_IDX" ON "CENTRE_COUT" ("PARENT_ID");
 
--- V_INDICATEUR_640
-CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_640" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID") AS 
-  SELECT rownum id, t."ANNEE_ID",t."INTERVENANT_ID",t."STRUCTURE_ID" FROM
-(
-SELECT DISTINCT
-  w.annee_id,
-  w.intervenant_id,
-  w.structure_id
-FROM
-  tbl_workflow w
-  JOIN tbl_workflow wc ON wc.intervenant_id = w.intervenant_id
-WHERE
-  w.etape_code = 'SERVICE_VALIDATION_REALISE'
-  AND w.objectif > w.realisation
-  AND w.atteignable = 1
-  
-  AND wc.etape_code = 'CLOTURE_REALISE'
-  AND wc.objectif = wc.realisation
-) t;
+-- CENTRE_COUT_EP_HCFK_IDX
+CREATE INDEX "CENTRE_COUT_EP_HCFK_IDX" ON "CENTRE_COUT_EP" ("HISTO_CREATEUR_ID");
 
--- V_INDICATEUR_650
-CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_650" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID", "STRUCTURES_CONCERNEES") AS 
-  SELECT rownum id, t."ANNEE_ID",t."INTERVENANT_ID",t."STRUCTURE_ID",t."STRUCTURES_CONCERNEES" FROM
-(
-SELECT
-  w.annee_id,
-  w.intervenant_id,
-  i.structure_id,
-  LISTAGG(s.libelle_court, '||') WITHIN GROUP (ORDER BY s.libelle_court) structures_concernees
-FROM
-  tbl_workflow w
-  JOIN tbl_workflow wc ON wc.intervenant_id = w.intervenant_id
-  JOIN intervenant i ON i.id = wc.intervenant_id
-  JOIN structure s ON s.id = w.structure_id
-WHERE
-  w.etape_code = 'SERVICE_VALIDATION_REALISE'
-  AND w.objectif > w.realisation
-  AND w.atteignable = 1
-  
-  AND wc.etape_code = 'CLOTURE_REALISE'
-  AND wc.objectif = wc.realisation
-  AND w.structure_id <> i.structure_id
-GROUP BY
-  w.annee_id,
-  w.intervenant_id,
-  i.structure_id
-) t;
+-- CENTRE_COUT_EP_HDFK_IDX
+CREATE INDEX "CENTRE_COUT_EP_HDFK_IDX" ON "CENTRE_COUT_EP" ("HISTO_DESTRUCTEUR_ID");
 
--- V_INDICATEUR_660
-CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_660" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID") AS 
-  SELECT rownum id, t."ANNEE_ID",t."INTERVENANT_ID",t."STRUCTURE_ID" FROM
-(
-SELECT
-  w.annee_id,
-  w.intervenant_id,
-  i.structure_id
-FROM
-  tbl_workflow w
-  JOIN tbl_workflow wc ON wc.intervenant_id = w.intervenant_id
-  JOIN intervenant i ON i.id = wc.intervenant_id
-  JOIN structure s ON s.id = w.structure_id
-WHERE
-  w.etape_code = 'REFERENTIEL_VALIDATION_REALISE'
-  AND w.objectif > w.realisation
-  AND w.atteignable = 1
-  
-  AND wc.etape_code = 'CLOTURE_REALISE'
-  AND wc.objectif = wc.realisation
-  AND w.structure_id = i.structure_id
-GROUP BY
-  w.annee_id,
-  w.intervenant_id,
-  i.structure_id
-) t;
+-- CENTRE_COUT_EP_HMFK_IDX
+CREATE INDEX "CENTRE_COUT_EP_HMFK_IDX" ON "CENTRE_COUT_EP" ("HISTO_MODIFICATEUR_ID");
 
--- V_INDICATEUR_670
-CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_670" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID", "STRUCTURES_CONCERNEES") AS 
-  SELECT rownum id, t."ANNEE_ID",t."INTERVENANT_ID",t."STRUCTURE_ID",t."STRUCTURES_CONCERNEES" FROM
-(
-SELECT
-  w.annee_id,
-  w.intervenant_id,
-  i.structure_id,
-  LISTAGG(s.libelle_court, '||') WITHIN GROUP (ORDER BY s.libelle_court) structures_concernees
-FROM
-  tbl_workflow w
-  JOIN tbl_workflow wc ON wc.intervenant_id = w.intervenant_id
-  JOIN intervenant i ON i.id = wc.intervenant_id
-  JOIN structure s ON s.id = w.structure_id
-WHERE
-  w.etape_code = 'REFERENTIEL_VALIDATION_REALISE'
-  AND w.objectif > w.realisation
-  AND w.atteignable = 1
-  
-  AND wc.etape_code = 'CLOTURE_REALISE'
-  AND wc.objectif = wc.realisation
-  AND w.structure_id <> i.structure_id
-GROUP BY
-  w.annee_id,
-  w.intervenant_id,
-  i.structure_id
-) t;
+-- CENTRE_COUT_EP_PK
+CREATE UNIQUE INDEX "CENTRE_COUT_EP_PK" ON "CENTRE_COUT_EP" ("ID");
 
--- V_INDICATEUR_680
-CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_680" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID", "PLAFOND", "HEURES") AS 
-  SELECT
-  fr.id id,
-  i.annee_id annee_id,
-  i.id intervenant_id,
-  i.structure_id structure_id,
-  si.plafond_referentiel plafond,
-  fr.heures_compl_referentiel heures
-FROM
-  formule_resultat fr
-  JOIN type_volume_horaire tvh ON tvh.id = fr.type_volume_horaire_id
-  JOIN etat_volume_horaire evh ON evh.id = fr.etat_volume_horaire_id
-  JOIN intervenant i ON i.id = fr.intervenant_id
-  JOIN statut_intervenant si ON si.id = i.statut_id
-WHERE
-  tvh.code = 'PREVU'
-  AND evh.code = 'saisi'
-  AND si.plafond_referentiel < fr.service_referentiel + fr.heures_compl_referentiel;
+-- CENTRE_COUT_EP__UN
+CREATE UNIQUE INDEX "CENTRE_COUT_EP__UN" ON "CENTRE_COUT_EP" ("CENTRE_COUT_ID", "ELEMENT_PEDAGOGIQUE_ID", "TYPE_HEURES_ID", "HISTO_DESTRUCTION");
 
--- V_INDICATEUR_690
-CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_690" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID", "PLAFOND", "HEURES") AS 
-  SELECT
-  fr.id id,
-  i.annee_id annee_id,
-  i.id intervenant_id,
-  i.structure_id structure_id,
-  si.plafond_referentiel plafond,
-  fr.heures_compl_referentiel heures
-FROM
-  formule_resultat fr
-  JOIN type_volume_horaire tvh ON tvh.id = fr.type_volume_horaire_id
-  JOIN etat_volume_horaire evh ON evh.id = fr.etat_volume_horaire_id
-  JOIN intervenant i ON i.id = fr.intervenant_id
-  JOIN statut_intervenant si ON si.id = i.statut_id
-WHERE
-  tvh.code = 'REALISE'
-  AND evh.code = 'saisi'
-  AND si.plafond_referentiel < fr.service_referentiel + fr.heures_compl_referentiel;
+-- CENTRE_COUT_HCFK_IDX
+CREATE INDEX "CENTRE_COUT_HCFK_IDX" ON "CENTRE_COUT" ("HISTO_CREATEUR_ID");
 
--- V_INDICATEUR_710
-CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_710" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID") AS 
-  SELECT rownum id, t."ANNEE_ID",t."INTERVENANT_ID",t."STRUCTURE_ID" FROM
-(
-SELECT DISTINCT
-  w.annee_id,
-  w.intervenant_id,
-  w.structure_id
-FROM
-  tbl_workflow w
-WHERE
-  w.etape_code = 'SERVICE_VALIDATION'
-  AND w.type_intervenant_code = 'E'
-  AND w.atteignable = 1
-  AND w.objectif > w.realisation
-) t;
+-- CENTRE_COUT_HDFK_IDX
+CREATE INDEX "CENTRE_COUT_HDFK_IDX" ON "CENTRE_COUT" ("HISTO_DESTRUCTEUR_ID");
 
--- V_INDICATEUR_720
-CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_720" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID") AS 
-  SELECT rownum id, t."ANNEE_ID",t."INTERVENANT_ID",t."STRUCTURE_ID" FROM
-(
-SELECT DISTINCT
-  w.annee_id,
-  w.intervenant_id,
-  w.structure_id
-FROM
-  tbl_workflow w
-WHERE
-  w.etape_code = 'SERVICE_VALIDATION_REALISE'
-  AND w.type_intervenant_code = 'E'
-  AND w.atteignable = 1
-  AND w.objectif > w.realisation
-) t;
+-- CENTRE_COUT_HMFK_IDX
+CREATE INDEX "CENTRE_COUT_HMFK_IDX" ON "CENTRE_COUT" ("HISTO_MODIFICATEUR_ID");
 
--- V_INDICATEUR_810
-CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_810" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID") AS 
-  SELECT rownum id, t."ANNEE_ID",t."INTERVENANT_ID",t."STRUCTURE_ID" FROM
-(
-SELECT DISTINCT
-  w.annee_id,
-  w.intervenant_id,
-  w.structure_id
-FROM
-  tbl_workflow w
-WHERE
-  w.etape_code = 'DEMANDE_MEP'
-  AND w.type_intervenant_code = 'P'
-  AND w.atteignable = 1
-  AND w.objectif > w.realisation
-) t;
+-- CENTRE_COUT_PK
+CREATE UNIQUE INDEX "CENTRE_COUT_PK" ON "CENTRE_COUT" ("ID");
 
--- V_INDICATEUR_820
-CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_820" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID") AS 
-  SELECT rownum id, t."ANNEE_ID",t."INTERVENANT_ID",t."STRUCTURE_ID" FROM
-(
-SELECT DISTINCT
-  w.annee_id,
-  w.intervenant_id,
-  w.structure_id
-FROM
-  tbl_workflow w
-WHERE
-  w.etape_code = 'SAISIE_MEP'
-  AND w.type_intervenant_code = 'P'
-  AND w.atteignable = 1
-  AND w.objectif > w.realisation
-) t;
+-- CENTRE_COUT_SOURCE_FK_IDX
+CREATE INDEX "CENTRE_COUT_SOURCE_FK_IDX" ON "CENTRE_COUT" ("SOURCE_ID");
 
--- V_INDICATEUR_910
-CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_910" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID") AS 
-  SELECT rownum id, t."ANNEE_ID",t."INTERVENANT_ID",t."STRUCTURE_ID" FROM
-(
-SELECT DISTINCT
-  w.annee_id,
-  w.intervenant_id,
-  w.structure_id
-FROM
-  tbl_workflow w
-WHERE
-  w.etape_code = 'DEMANDE_MEP'
-  AND w.type_intervenant_code = 'E'
-  AND w.atteignable = 1
-  AND w.objectif > w.realisation
-) t;
+-- CENTRE_COUT_STRUCTURE_HCFK_IDX
+CREATE INDEX "CENTRE_COUT_STRUCTURE_HCFK_IDX" ON "CENTRE_COUT_STRUCTURE" ("HISTO_CREATEUR_ID");
 
--- V_INDICATEUR_920
-CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_920" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID") AS 
-  SELECT rownum id, t."ANNEE_ID",t."INTERVENANT_ID",t."STRUCTURE_ID" FROM
-(
-SELECT DISTINCT
-  w.annee_id,
-  w.intervenant_id,
-  w.structure_id
-FROM
-  tbl_workflow w
-WHERE
-  w.etape_code = 'SAISIE_MEP'
-  AND w.type_intervenant_code = 'E'
-  AND w.atteignable = 1
-  AND w.objectif > w.realisation
-) t;
+-- CENTRE_COUT_STRUCTURE_HDFK_IDX
+CREATE INDEX "CENTRE_COUT_STRUCTURE_HDFK_IDX" ON "CENTRE_COUT_STRUCTURE" ("HISTO_DESTRUCTEUR_ID");
+
+-- CENTRE_COUT_STRUCTURE_HMFK_IDX
+CREATE INDEX "CENTRE_COUT_STRUCTURE_HMFK_IDX" ON "CENTRE_COUT_STRUCTURE" ("HISTO_MODIFICATEUR_ID");
+
+-- CENTRE_COUT_STRUCTURE_PK_IDX
+CREATE UNIQUE INDEX "CENTRE_COUT_STRUCTURE_PK_IDX" ON "CENTRE_COUT_STRUCTURE" ("ID");
+
+-- CHEMIN_PEDAGOGIQUE_HCFK_IDX
+CREATE INDEX "CHEMIN_PEDAGOGIQUE_HCFK_IDX" ON "CHEMIN_PEDAGOGIQUE" ("HISTO_CREATEUR_ID");
+
+-- CHEMIN_PEDAGOGIQUE_HDFK_IDX
+CREATE INDEX "CHEMIN_PEDAGOGIQUE_HDFK_IDX" ON "CHEMIN_PEDAGOGIQUE" ("HISTO_DESTRUCTEUR_ID");
+
+-- CHEMIN_PEDAGOGIQUE_HMFK_IDX
+CREATE INDEX "CHEMIN_PEDAGOGIQUE_HMFK_IDX" ON "CHEMIN_PEDAGOGIQUE" ("HISTO_MODIFICATEUR_ID");
+
+-- CHEMIN_PEDAGOGIQUE_PK
+CREATE UNIQUE INDEX "CHEMIN_PEDAGOGIQUE_PK" ON "CHEMIN_PEDAGOGIQUE" ("ID");
+
+-- CHEMIN_PEDAGO_SRC_ID_UN
+CREATE UNIQUE INDEX "CHEMIN_PEDAGO_SRC_ID_UN" ON "CHEMIN_PEDAGOGIQUE" ("SOURCE_CODE");
+
+-- CIVILITE_LIBELLE_COURT_UN
+CREATE UNIQUE INDEX "CIVILITE_LIBELLE_COURT_UN" ON "CIVILITE" ("LIBELLE_COURT");
+
+-- CIVILITE_PK
+CREATE UNIQUE INDEX "CIVILITE_PK" ON "CIVILITE" ("ID");
 
--- V_INDIC_ATTENTE_DEMANDE_MEP
-CREATE OR REPLACE FORCE VIEW "V_INDIC_ATTENTE_DEMANDE_MEP" ("ID", "INTERVENANT_ID", "SOURCE_CODE", "CODE", "ANNEE_ID", "STRUCTURE_ID", "TOTAL_HEURES_MEP", "TOTAL_HEURES_COMPL") AS 
-  select to_number(i.id||dmep.structure_id) id, i.id intervenant_id, i.source_code, ti.code, i.annee_id, dmep.structure_id, 0 TOTAL_HEURES_MEP, 0 TOTAL_HEURES_COMPL
-  from intervenant i
-  join statut_intervenant si on si.id = i.statut_id
-  join type_intervenant ti on ti.id = si.type_intervenant_id
-  -- l'intervenant doit avoir des heures disponibles pour une demande de MEP
-  join V_HAS_DMEP_A_FAIRE dmep on dmep.intervenant_id = i.id and dmep.has_dmep_a_faire <> 0
-  where (
-    -- un vacataire n'a pas d'autre contrainte
-    ti.code = 'E' 
-    or 
-    -- mais un permanent doit...
-    (
-      -- avoir sa saisie de service réalisé clôturée
-      exists (
-        select * from validation v
-        join type_validation tv on v.type_validation_id = tv.id and tv.code = 'CLOTURE_REALISE' 
-        where v.intervenant_id = i.id and v.histo_destruction IS NULL
-      )
-      -- et tous ses enseignements réalisés validés (toutes composantes d'intervention confondues)
-      and not exists (
-        select * from volume_horaire vh
-        join service s on vh.service_id = s.id and s.histo_destruction IS NULL
-        join type_volume_horaire tvh on vh.type_volume_horaire_id = tvh.id and tvh.code = 'REALISE'
-        left join validation_vol_horaire vvh on vvh.volume_horaire_id = vh.id
-        left join validation v on vvh.validation_id = v.id and v.histo_destruction IS NULL
-        left join type_validation tv on v.type_validation_id = tv.id and tv.code = 'SERVICES_PAR_COMP' 
-        where s.intervenant_id = i.id and v.id is null and vh.histo_destruction IS NULL
-      )
-      -- et tout son référentiel réalisé validé (toutes composantes d'intervention confondues)
-      and not exists (
-        select * from volume_horaire_ref vh
-        join service_referentiel s on vh.service_referentiel_id = s.id and s.histo_destruction IS NULL
-        join type_volume_horaire tvh on vh.type_volume_horaire_id = tvh.id and tvh.code = 'REALISE'
-        left join validation_vol_horaire_ref vvh on vvh.volume_horaire_ref_id = vh.id
-        left join validation v on vvh.validation_id = v.id and v.histo_destruction IS NULL
-        left join type_validation tv on v.type_validation_id = tv.id and tv.code = 'SERVICES_PAR_COMP' 
-        where s.intervenant_id = i.id and v.id is null and vh.histo_destruction IS NULL
-      )
-    )
-  );
+-- CONTRAT_CONTRAT_FK_IDX
+CREATE INDEX "CONTRAT_CONTRAT_FK_IDX" ON "CONTRAT" ("CONTRAT_ID");
 
--- V_INDIC_ATTENTE_MEP
-CREATE OR REPLACE FORCE VIEW "V_INDIC_ATTENTE_MEP" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID", "TOTAL_HEURES_MEP") AS 
-  with 
-  -- total des heures comp ayant fait l'objet d'une *demande* de mise en paiement
-  mep as (
-    select intervenant_id, structure_id, sum(nvl(mep_heures, 0)) total_heures_mep
-    from (
-      -- enseignements
-      select 
-        fr.intervenant_id, 
-        nvl(ep.structure_id, i.structure_id) structure_id, 
-        nvl(mep.heures, 0) mep_heures
-      from mise_en_paiement mep
-      join formule_resultat_service frs on mep.formule_res_service_id = frs.id
-      join formule_resultat fr on frs.formule_resultat_id = fr.id
-      join intervenant i on fr.intervenant_id = i.id
-      join type_volume_horaire tvh on fr.type_volume_horaire_id = tvh.id and tvh.code = 'REALISE'
-      join etat_volume_horaire evh on fr.etat_volume_horaire_id = evh.id and evh.code = 'valide'
-      join service s on frs.service_id = s.id
-      left join element_pedagogique ep on s.element_pedagogique_id = ep.id
-      where mep.histo_destruction IS NULL and mep.date_mise_en_paiement is null -- si date_mise_en_paiement = null, c'est une demande
-      union all
-      -- referentiel
-      select 
-        fr.intervenant_id, 
-        s.structure_id,
-        nvl(mep.heures, 0) mep_heures
-      from mise_en_paiement mep
-      join formule_resultat_service_ref frs on mep.formule_res_service_ref_id = frs.id
-      join formule_resultat fr on frs.formule_resultat_id = fr.id
-      join intervenant i on fr.intervenant_id = i.id
-      join type_volume_horaire tvh on fr.type_volume_horaire_id = tvh.id and tvh.code = 'REALISE'
-      join etat_volume_horaire evh on fr.etat_volume_horaire_id = evh.id and evh.code = 'valide'
-      join service_referentiel s on frs.service_referentiel_id = s.id
-      where mep.histo_destruction IS NULL and mep.date_mise_en_paiement is null -- si date_mise_en_paiement = null, c'est une demande
-    )
-    group by intervenant_id, structure_id
-  )
-select to_number(intervenant_id||structure_id) id, 2014 annee_id, intervenant_id, structure_id, total_heures_mep from mep;
+-- CONTRAT_FICHIER_FFK_IDX
+CREATE INDEX "CONTRAT_FICHIER_FFK_IDX" ON "CONTRAT_FICHIER" ("FICHIER_ID");
 
--- V_INDIC_ATT_VALID_ENS_AUTRE
-CREATE OR REPLACE FORCE VIEW "V_INDIC_ATT_VALID_ENS_AUTRE" ("ID", "INTERVENANT_ID", "STRUCTURE_ID") AS 
-  SELECT distinct 
-    to_char(v.intervenant_id)||to_char(v.structure_id) as id,
-    v.intervenant_id,
-    v.structure_id
-FROM v_indic_tous_services_valides v
-INNER JOIN intervenant i                    ON V.INTERVENANT_ID = i.id              AND i.HISTO_DESTRUCTION IS NULL
-INNER JOIN TYPE_VOLUME_HORAIRE tvh          ON v.type_volume_horaire_id = tvh.id    AND tvh.code = 'REALISE'
-INNER JOIN VALIDATION clot                  ON clot.intervenant_id = i.id           AND clot.HISTO_DESTRUCTION IS NULL
-INNER JOIN TYPE_VALIDATION tv               ON tv.id = clot.type_validation_id      AND tv.code = 'CLOTURE_REALISE'
-WHERE EXISTS
-    (
-        SELECT s2.ID 
-        FROM SERVICE s2
-        INNER JOIN ELEMENT_PEDAGOGIQUE ep2      ON s2.ELEMENT_PEDAGOGIQUE_ID  = ep2.ID  AND ep2.HISTO_DESTRUCTION IS NULL
-        INNER JOIN VOLUME_HORAIRE vh2           ON s2.ID = vh2.SERVICE_ID               AND vh2.HISTO_DESTRUCTION IS NULL
-        LEFT JOIN VALIDATION_VOL_HORAIRE vvh2   ON vh2.ID = vvh2.VOLUME_HORAIRE_ID
-        LEFT JOIN VALIDATION val2               ON val2.ID = vvh2.VALIDATION_ID         AND val2.HISTO_DESTRUCTION IS NULL
-        WHERE 
-            s2.INTERVENANT_ID = v.intervenant_id
-            AND s2.HISTO_DESTRUCTION IS NULL
-            AND VH2.TYPE_VOLUME_HORAIRE_ID = V.TYPE_VOLUME_HORAIRE_ID
-            AND ep2.structure_id <> v.structure_id -- autre composante d'intervention que celle qui a tout validé
-            AND val2.ID IS NULL -- au moins un VH non validé
-    );
+-- CONTRAT_FICHIER_FK
+CREATE INDEX "CONTRAT_FICHIER_FK" ON "CONTRAT_FICHIER" ("CONTRAT_ID");
 
--- V_INDIC_ATT_VALID_REF_AUTRE
-CREATE OR REPLACE FORCE VIEW "V_INDIC_ATT_VALID_REF_AUTRE" ("ID", "INTERVENANT_ID", "STRUCTURE_ID") AS 
-  SELECT distinct 
-    to_char(v.intervenant_id)||to_char(v.structure_id) as id,
-    v.intervenant_id,
-    v.structure_id
-FROM v_indic_tous_services_valides v
-INNER JOIN intervenant i                    ON V.INTERVENANT_ID = i.id              AND i.HISTO_DESTRUCTION IS NULL
-INNER JOIN TYPE_VOLUME_HORAIRE tvh          ON v.type_volume_horaire_id = tvh.id    AND tvh.code = 'REALISE'
-INNER JOIN VALIDATION clot                  ON clot.intervenant_id = i.id           AND clot.HISTO_DESTRUCTION IS NULL
-INNER JOIN TYPE_VALIDATION tv               ON tv.id = clot.type_validation_id      AND tv.code = 'CLOTURE_REALISE'
-WHERE EXISTS
-    (
-        SELECT s.ID 
-        FROM SERVICE_REFERENTIEL s
-        INNER JOIN FONCTION_REFERENTIEL f       ON S.FONCTION_ID = f.ID                 AND f.HISTO_DESTRUCTION IS NULL
-        INNER JOIN VOLUME_HORAIRE_REF vh        ON s.ID = VH.SERVICE_REFERENTIEL_ID     AND vh.HISTO_DESTRUCTION IS NULL
-        LEFT JOIN VALIDATION_VOL_HORAIRE vvh    ON vh.ID = vvh.VOLUME_HORAIRE_ID
-        LEFT JOIN VALIDATION val                ON val.ID = vvh.VALIDATION_ID           AND val.HISTO_DESTRUCTION IS NULL
-        WHERE 
-            s.INTERVENANT_ID = v.intervenant_id
-            AND s.HISTO_DESTRUCTION IS NULL
-            AND VH.TYPE_VOLUME_HORAIRE_ID = V.TYPE_VOLUME_HORAIRE_ID
-            AND s.structure_id <> v.structure_id -- autre composante d'intervention que celle qui a tout validé
-            AND val.ID IS NULL -- au moins un VH non validé
-    );
+-- CONTRAT_FICHIER_PK
+CREATE UNIQUE INDEX "CONTRAT_FICHIER_PK" ON "CONTRAT_FICHIER" ("CONTRAT_ID", "FICHIER_ID");
 
--- V_INDIC_ATT_VALID_SERVICE
-CREATE OR REPLACE FORCE VIEW "V_INDIC_ATT_VALID_SERVICE" ("ID", "INTERVENANT_ID", "STRUCTURE_ID", "TYPE_VOLUME_HORAIRE_ID") AS 
-  select distinct rownum id, i.id intervenant_id, nvl(ep.structure_id, i.structure_id) structure_id, vh.type_volume_horaire_id
-from service s 
-join intervenant i on i.id = s.intervenant_id and i.histo_destruction IS NULL
-join volume_horaire vh on vh.service_id = s.id and vh.histo_destruction IS NULL
-join element_pedagogique ep on s.element_pedagogique_id = ep.id and ep.histo_destruction IS NULL
---join type_volume_horaire tvh on vh.type_volume_horaire_id = tvh.id and tvh.code = 'REALISE'
-left join validation_vol_horaire vvh on vvh.volume_horaire_id = vh.id
-left join validation v on vvh.validation_id = v.id and v.histo_destruction IS NULL
-where v.id is null and s.histo_destruction IS NULL;
+-- CONTRAT_HCFK_IDX
+CREATE INDEX "CONTRAT_HCFK_IDX" ON "CONTRAT" ("HISTO_CREATEUR_ID");
 
--- V_INDIC_ATT_VALID_SERVICE_REF
-CREATE OR REPLACE FORCE VIEW "V_INDIC_ATT_VALID_SERVICE_REF" ("ID", "INTERVENANT_ID", "STRUCTURE_ID", "TYPE_VOLUME_HORAIRE_ID") AS 
-  select distinct rownum id, i.id intervenant_id, s.structure_id, vh.type_volume_horaire_id
-from service_referentiel s 
-join intervenant i on i.id = s.intervenant_id and i.histo_destruction IS NULL
-join volume_horaire_ref vh on vh.service_referentiel_id = s.id and vh.histo_destruction IS NULL
-join fonction_referentiel f on s.fonction_id = f.id and f.histo_destruction IS NULL
---join type_volume_horaire tvh on vh.type_volume_horaire_id = tvh.id and tvh.code = 'REALISE'
-left join validation_vol_horaire_ref vvh on vvh.volume_horaire_ref_id = vh.id
-left join validation v on vvh.validation_id = v.id and v.histo_destruction IS NULL
-where v.id is null and s.histo_destruction IS NULL;
+-- CONTRAT_HDFK_IDX
+CREATE INDEX "CONTRAT_HDFK_IDX" ON "CONTRAT" ("HISTO_DESTRUCTEUR_ID");
 
--- V_INDIC_DEPASS_CHARGES
-CREATE OR REPLACE FORCE VIEW "V_INDIC_DEPASS_CHARGES" ("ID", "ANNEE_ID", "TYPE_VOLUME_HORAIRE_ID", "INTERVENANT_ID", "STRUCTURE_ID", "ELEMENT_PEDAGOGIQUE_ID", "PERIODE_ID", "TYPE_INTERVENTION_ID", "HEURES") AS 
-  WITH c AS ( 
-  SELECT
-    vhe.element_pedagogique_id,
-    vhe.type_intervention_id,
-    MAX(vhe.heures) heures,
-    COALESCE( MAX(vhe.groupes), ROUND(SUM(t.groupes),10) ) groupes
+-- CONTRAT_HMFK_IDX
+CREATE INDEX "CONTRAT_HMFK_IDX" ON "CONTRAT" ("HISTO_MODIFICATEUR_ID");
 
-  FROM
-    volume_horaire_ens     vhe
-         JOIN parametre p ON p.nom = 'scenario_charges_services'
-    LEFT JOIN tbl_chargens   t ON t.element_pedagogique_id = vhe.element_pedagogique_id 
-                              AND t.type_intervention_id = vhe.type_intervention_id
-                              AND t.scenario_id = to_number(p.valeur)
-  GROUP BY
-    vhe.element_pedagogique_id,
-    vhe.type_intervention_id
-), s AS (
-  SELECT
-    i.annee_id,
-    vh.type_volume_horaire_id,
-    s.intervenant_id,
-    s.element_pedagogique_id,
-    vh.type_intervention_id,
-    SUM(vh.heures) heures
-  FROM
-    volume_horaire vh
-    JOIN service     s ON s.id = vh.service_id
-                      AND s.element_pedagogique_id IS NOT NULL
-                      AND s.histo_destruction IS NULL
-    JOIN intervenant i ON i.id = s.intervenant_id
-                      AND i.histo_destruction IS NULL
-  WHERE
-    vh.histo_destruction IS NULL
-  GROUP BY
-    i.annee_id,
-    vh.type_volume_horaire_id,
-    s.intervenant_id,
-    s.element_pedagogique_id,
-    vh.type_intervention_id
-)
-SELECT
-  rownum                                      id,
-  s.annee_id                                  annee_id,
-  s.type_volume_horaire_id                    type_volume_horaire_id,
-  s.intervenant_id                            intervenant_id,
-  ep.structure_id                             structure_id,
-  s.element_pedagogique_id                    element_pedagogique_id,
-  ep.periode_id                               periode_id,
-  s.type_intervention_id                      type_intervention_id,
-  s.heures - COALESCE(c.heures * c.groupes,0) heures
-FROM
-            s
-       JOIN type_intervention ti ON ti.id = s.type_intervention_id
-       JOIN element_pedagogique ep ON ep.id = s.element_pedagogique_id
-  LEFT JOIN c ON c.element_pedagogique_id = s.element_pedagogique_id
-             AND c.type_intervention_id = COALESCE(ti.type_intervention_maquette_id,ti.id)
-WHERE
-  s.heures - COALESCE(c.heures * c.groupes,0) > 0;
+-- CONTRAT_INTERVENANT_FK_IDX
+CREATE INDEX "CONTRAT_INTERVENANT_FK_IDX" ON "CONTRAT" ("INTERVENANT_ID");
 
--- V_INDIC_DEPASS_HC_HORS_REMU_FC
-CREATE OR REPLACE FORCE VIEW "V_INDIC_DEPASS_HC_HORS_REMU_FC" ("ID", "ANNEE_ID", "INTERVENANT_ID", "TYPE_VOLUME_HORAIRE_ID", "STRUCTURE_ID", "TOTAL", "PLAFOND") AS 
-  with totaux as (
-  -- totaux HC FI+FA+FC+Ref par intervenant et type de VH
-  select fr.intervenant_id, fr.type_volume_horaire_id, sum(fr.heures_compl_fi + fr.heures_compl_fa + fr.heures_compl_fc + fr.heures_compl_referentiel) total
-  from formule_resultat fr
-  join etat_volume_horaire evh on evh.id = fr.etat_volume_horaire_id and evh.code = 'saisi'
-  group by fr.intervenant_id, fr.type_volume_horaire_id
-),
-depass as (
-  -- totaux HC FI+FA+FC+Ref dépassant le plafond HC par intervenant et type de VH
-  select i.id intervenant_id, t.type_volume_horaire_id, t.total, si.plafond_hc_hors_remu_fc plafond
-  from intervenant i
-  join statut_intervenant si on i.statut_id = si.id and si.plafond_hc_hors_remu_fc is not null
-  join totaux t on t.intervenant_id = i.id
-  where t.total > si.plafond_hc_hors_remu_fc
-),
-str_interv as (
-  -- structures d'intervention distinctes par intervenant et type de VH
-  select distinct s.intervenant_id, vh.type_volume_horaire_id, coalesce(ep.structure_id, i.structure_id) structure_id
-  from service s
-  left join element_pedagogique ep on s.element_pedagogique_id = ep.id and ep.histo_destruction IS NULL
-  join intervenant i on s.intervenant_id = i.id and i.histo_destruction IS NULL
-  join volume_horaire vh on vh.service_id = s.id and vh.histo_destruction IS NULL
-  join v_vol_horaire_etat_multi vhe on vhe.volume_horaire_id = vh.id
-  join etat_volume_horaire evh on vhe.etat_volume_horaire_id = evh.id and evh.code = 'saisi'
-  where s.histo_destruction IS NULL
-)
-select to_number(d.intervenant_id||d.type_volume_horaire_id||str.structure_id) id, 2014 annee_id, d.intervenant_id, d.type_volume_horaire_id, str.structure_id, d.total, d.plafond
-from depass d
-join str_interv str on str.intervenant_id = d.intervenant_id and str.type_volume_horaire_id = d.type_volume_horaire_id;
+-- CONTRAT_NUMERO_AVENANT_UN
+CREATE UNIQUE INDEX "CONTRAT_NUMERO_AVENANT_UN" ON "CONTRAT" ("INTERVENANT_ID", "STRUCTURE_ID", "NUMERO_AVENANT", "VALIDATION_ID", "HISTO_DESTRUCTION");
 
--- V_INDIC_DEPASS_REF
-CREATE OR REPLACE FORCE VIEW "V_INDIC_DEPASS_REF" ("ID", "ANNEE_ID", "INTERVENANT_ID", "TYPE_VOLUME_HORAIRE_ID", "STRUCTURE_ID", "TOTAL", "PLAFOND") AS 
-  with totaux as (
-  select fr.intervenant_id, fr.type_volume_horaire_id, sum(fr.service_referentiel) total
-  from formule_resultat fr
-  join etat_volume_horaire evh on evh.id = fr.etat_volume_horaire_id and evh.code = 'saisi'
-  group by fr.intervenant_id, fr.type_volume_horaire_id
-  having sum(fr.service_referentiel) > 0
-),
-depass as (
-  select i.id intervenant_id, t.type_volume_horaire_id, t.total, si.plafond_referentiel plafond
-  from intervenant i
-  join statut_intervenant si on i.statut_id = si.id and si.plafond_referentiel is not null and si.plafond_referentiel <> 0
-  join totaux t on t.intervenant_id = i.id
-  where t.total > si.plafond_referentiel
-),
-str_interv as (
-  -- structures d'intervention distinctes par intervenant et type de VH
-  select distinct s.intervenant_id, vh.type_volume_horaire_id, s.structure_id
-  from service_referentiel s
-  join volume_horaire_ref vh on vh.service_referentiel_id = s.id and vh.histo_destruction IS NULL
-  join v_vol_horaire_ref_etat_multi vhe on vhe.volume_horaire_ref_id = vh.id
-  join etat_volume_horaire evh on vhe.etat_volume_horaire_id = evh.id and evh.code = 'saisi'
-  where s.histo_destruction IS NULL
-)
-select to_number(d.intervenant_id||d.type_volume_horaire_id||str.structure_id) id, 2014 annee_id, d.intervenant_id, d.type_volume_horaire_id, str.structure_id, d.total, d.plafond
-from depass d
-join str_interv str on str.intervenant_id = d.intervenant_id and str.type_volume_horaire_id = d.type_volume_horaire_id;
+-- CONTRAT_PK
+CREATE UNIQUE INDEX "CONTRAT_PK" ON "CONTRAT" ("ID");
+
+-- CONTRAT_STRUCTURE_FK_IDX
+CREATE INDEX "CONTRAT_STRUCTURE_FK_IDX" ON "CONTRAT" ("STRUCTURE_ID");
+
+-- CONTRAT_TYPE_CONTRAT_FK_IDX
+CREATE INDEX "CONTRAT_TYPE_CONTRAT_FK_IDX" ON "CONTRAT" ("TYPE_CONTRAT_ID");
+
+-- CONTRAT_VALIDATION_FK_IDX
+CREATE INDEX "CONTRAT_VALIDATION_FK_IDX" ON "CONTRAT" ("VALIDATION_ID");
+
+-- CORPS_HCFK_IDX
+CREATE INDEX "CORPS_HCFK_IDX" ON "CORPS" ("HISTO_CREATEUR_ID");
+
+-- CORPS_HDFK_IDX
+CREATE INDEX "CORPS_HDFK_IDX" ON "CORPS" ("HISTO_DESTRUCTEUR_ID");
+
+-- CORPS_HMFK_IDX
+CREATE INDEX "CORPS_HMFK_IDX" ON "CORPS" ("HISTO_MODIFICATEUR_ID");
+
+-- CORPS_PK
+CREATE UNIQUE INDEX "CORPS_PK" ON "CORPS" ("ID");
+
+-- CORPS_SOURCE_FK_IDX
+CREATE INDEX "CORPS_SOURCE_FK_IDX" ON "CORPS" ("SOURCE_ID");
+
+-- CORPS_SOURCE_UN
+CREATE UNIQUE INDEX "CORPS_SOURCE_UN" ON "CORPS" ("SOURCE_CODE");
+
+-- CPEP_FK_IDX
+CREATE INDEX "CPEP_FK_IDX" ON "CHEMIN_PEDAGOGIQUE" ("ELEMENT_PEDAGOGIQUE_ID");
+
+-- CP_ETAPE_FK_IDX
+CREATE INDEX "CP_ETAPE_FK_IDX" ON "CHEMIN_PEDAGOGIQUE" ("ETAPE_ID");
+
+-- CP_SOURCE_FK_IDX
+CREATE INDEX "CP_SOURCE_FK_IDX" ON "CHEMIN_PEDAGOGIQUE" ("SOURCE_ID");
+
+-- CS_TYPE_INTERVENANT_FK_IDX
+CREATE INDEX "CS_TYPE_INTERVENANT_FK_IDX" ON "CAMPAGNE_SAISIE" ("TYPE_INTERVENANT_ID");
 
--- V_INDIC_DIFF_DOSSIER
-CREATE OR REPLACE FORCE VIEW "V_INDIC_DIFF_DOSSIER" ("ID", "NOM_USUEL", "ADRESSE_DOSSIER", "ADRESSE_IMPORT", "RIB_DOSSIER", "RIB_IMPORT", "NOM_USUEL_DOSSIER", "NOM_USUEL_IMPORT", "PRENOM_DOSSIER", "PRENOM_IMPORT") AS 
-  WITH aa AS (
-  SELECT a.*, ose_divers.formatted_adresse(
-      a.NO_VOIE,
-      a.NOM_VOIE,
-      a.BATIMENT,
-      a.MENTION_COMPLEMENTAIRE,
-      a.LOCALITE,
-      a.CODE_POSTAL,
-      a.VILLE,
-      a.PAYS_LIBELLE) to_string FROM adresse_intervenant a
-)
-select 
-    i.id,
-    i.nom_usuel,
-    case when d.adresse <> a.to_string                                              then d.adresse                            else null end adresse_dossier,
-    case when d.adresse <> a.to_string                                              then a.to_string                          else null end adresse_import,
-    case when d.rib <> REPLACE(i.BIC || '-' || i.IBAN, ' ')                         then d.rib                                else null end rib_dossier,
-    case when d.rib <> REPLACE(i.BIC || '-' || i.IBAN, ' ')                         then REPLACE(i.BIC || '-' || i.IBAN, ' ') else null end rib_import,
-    case when UPPER(REPLACE(d.nom_usuel, ' ')) <> UPPER(REPLACE(i.nom_usuel, ' '))  then REPLACE(d.nom_usuel, ' ')            else null end nom_usuel_dossier,
-    case when UPPER(REPLACE(d.nom_usuel, ' ')) <> UPPER(REPLACE(i.nom_usuel, ' '))  then REPLACE(i.nom_usuel, ' ')            else null end nom_usuel_import,
-    case when UPPER(REPLACE(d.prenom, ' ')) <> UPPER(REPLACE(i.prenom, ' '))        then REPLACE(d.prenom, ' ')               else null end prenom_dossier,
-    case when UPPER(REPLACE(d.prenom, ' ')) <> UPPER(REPLACE(i.prenom, ' '))        then REPLACE(i.prenom, ' ')               else null end prenom_import
-  from intervenant i
-  join dossier d on d.intervenant_id = i.id
-  left join aa a on a.intervenant_id = i.id;
+-- CS_TYPE_VOLUME_HORAIRE_FK_IDX
+CREATE INDEX "CS_TYPE_VOLUME_HORAIRE_FK_IDX" ON "CAMPAGNE_SAISIE" ("TYPE_VOLUME_HORAIRE_ID");
 
--- V_INDIC_TOUS_SERVICES_VALIDES
-CREATE OR REPLACE FORCE VIEW "V_INDIC_TOUS_SERVICES_VALIDES" ("INTERVENANT_ID", "STRUCTURE_ID", "TYPE_VOLUME_HORAIRE_ID") AS 
-  with struct_ens_non_valides as (
-    -- intervenants et structures d'intervention pour lesquelles des VH d'enseignement NE SONT PAS validés
-    SELECT distinct s.intervenant_id, ep.structure_id, vh.type_volume_horaire_id
-    FROM SERVICE s
-    INNER JOIN ELEMENT_PEDAGOGIQUE ep    ON s.ELEMENT_PEDAGOGIQUE_ID = ep.ID   AND ep.HISTO_DESTRUCTION IS NULL
-    INNER JOIN VOLUME_HORAIRE vh         ON s.ID = vh.SERVICE_ID               AND vh.HISTO_DESTRUCTION IS NULL
-    LEFT JOIN VALIDATION_VOL_HORAIRE vvh ON vvh.volume_horaire_id = vh.id 
-    LEFT JOIN VALIDATION val             ON val.ID = vvh.validation_id         AND val.HISTO_DESTRUCTION IS NULL
-    WHERE s.HISTO_DESTRUCTION IS NULL
-    AND val.id is null
-),
-struct_ref_non_valides as (
-    -- intervenants et structures d'intervention pour lesquelles des VH de référentiel NE SONT PAS validés
-    SELECT distinct s.intervenant_id, s.structure_id, vh.type_volume_horaire_id
-    FROM SERVICE_REFERENTIEL s
-    INNER JOIN FONCTION_REFERENTIEL f        ON s.FONCTION_ID = f.ID               AND f.HISTO_DESTRUCTION IS NULL
-    INNER JOIN VOLUME_HORAIRE_REF vh         ON s.ID = VH.SERVICE_REFERENTIEL_ID   AND vh.HISTO_DESTRUCTION IS NULL
-    LEFT JOIN VALIDATION_VOL_HORAIRE_REF vvh ON VVH.VOLUME_HORAIRE_REF_ID = vh.id 
-    LEFT JOIN VALIDATION val                 ON val.ID = vvh.validation_id         AND val.HISTO_DESTRUCTION IS NULL
-    WHERE s.HISTO_DESTRUCTION IS NULL
-    AND val.id is null
-)
--- intervenants et structures d'intervention pour lesquelles tous les VH de référentiel et tous les VH d'enseignement SONT validés
-SELECT distinct s.intervenant_id, ep.structure_id, vh.type_volume_horaire_id
-FROM SERVICE s
-INNER JOIN ELEMENT_PEDAGOGIQUE ep     ON s.ELEMENT_PEDAGOGIQUE_ID = ep.ID   AND ep.HISTO_DESTRUCTION IS NULL
-INNER JOIN VOLUME_HORAIRE vh          ON s.ID = vh.SERVICE_ID               AND vh.HISTO_DESTRUCTION IS NULL
-WHERE not exists (
-    SELECT * from struct_ens_non_valides ens_nv 
-    where ens_nv.INTERVENANT_ID = s.intervenant_id and ens_nv.structure_id = ep.structure_id and ens_nv.type_volume_horaire_id = vh.type_volume_horaire_id
-)
------
-UNION
------
-SELECT distinct s.intervenant_id, s.structure_id, vh.type_volume_horaire_id
-FROM SERVICE_REFERENTIEL s
-INNER JOIN FONCTION_REFERENTIEL f     ON s.FONCTION_ID = f.ID               AND f.HISTO_DESTRUCTION IS NULL
-INNER JOIN VOLUME_HORAIRE_REF vh      ON s.ID = VH.SERVICE_REFERENTIEL_ID   AND vh.HISTO_DESTRUCTION IS NULL
-WHERE s.HISTO_DESTRUCTION IS NULL
-and not exists (
-    SELECT * from struct_ref_non_valides ref_nv 
-    where ref_nv.INTERVENANT_ID = s.intervenant_id and ref_nv.structure_id = s.structure_id and ref_nv.type_volume_horaire_id = vh.type_volume_horaire_id
-);
+-- DEPARTEMENT_HCFK_IDX
+CREATE INDEX "DEPARTEMENT_HCFK_IDX" ON "DEPARTEMENT" ("HISTO_CREATEUR_ID");
 
--- V_INTERVENANT_RECHERCHE
-CREATE OR REPLACE FORCE VIEW "V_INTERVENANT_RECHERCHE" ("ID", "SOURCE_CODE", "NOM_USUEL", "NOM_PATRONYMIQUE", "PRENOM", "DATE_NAISSANCE", "STRUCTURE", "CIVILITE", "CRITERE", "ANNEE_ID") AS 
-  SELECT
-  i.id,
-  i.source_code,
-  i.nom_usuel,
-  i.nom_patronymique,
-  i.prenom,
-  i.date_naissance,
-  s.libelle_court structure,
-  c.libelle_long civilite,
-  i.critere_recherche critere,
-  i.annee_id
-FROM
-  intervenant i
-  JOIN structure s ON s.id = i.structure_id
-  JOIN civilite c ON c.id = i.civilite_id
-WHERE
-  i.histo_destruction IS NULL
-  
-UNION ALL
+-- DEPARTEMENT_HDFK_IDX
+CREATE INDEX "DEPARTEMENT_HDFK_IDX" ON "DEPARTEMENT" ("HISTO_DESTRUCTEUR_ID");
 
-SELECT
-  null id,
-  i.source_code,
-  i.nom_usuel,
-  i.nom_patronymique,
-  i.prenom,
-  i.date_naissance,
-  s.libelle_court structure,
-  c.libelle_long civilite,
-  i.critere_recherche critere,
-  i.annee_id
-FROM
-  src_intervenant i
-  JOIN structure s ON s.id = i.structure_id
-  JOIN civilite c ON c.id = i.civilite_id;
+-- DEPARTEMENT_HMFK_IDX
+CREATE INDEX "DEPARTEMENT_HMFK_IDX" ON "DEPARTEMENT" ("HISTO_MODIFICATEUR_ID");
 
--- V_MEP_INTERVENANT_STRUCTURE
-CREATE OR REPLACE FORCE VIEW "V_MEP_INTERVENANT_STRUCTURE" ("ID", "MISE_EN_PAIEMENT_ID", "INTERVENANT_ID", "STRUCTURE_ID", "PERIODE_PAIEMENT_ID", "DOMAINE_FONCTIONNEL_ID") AS 
-  SELECT
-  rownum id, 
-  t1."MISE_EN_PAIEMENT_ID",
-  t1."INTERVENANT_ID",
-  t1."STRUCTURE_ID", 
-  t1.periode_paiement_id, 
-  t1.domaine_fonctionnel_id
-FROM (
+-- DEPARTEMENT_PK
+CREATE UNIQUE INDEX "DEPARTEMENT_PK" ON "DEPARTEMENT" ("ID");
 
-SELECT
-  mep.id                   mise_en_paiement_id,
-  fr.intervenant_id        intervenant_id,
-  sr.structure_id          structure_id,
-  mep.periode_paiement_id  periode_paiement_id,
-  COALESCE(mep.domaine_fonctionnel_id, fr.domaine_fonctionnel_id) domaine_fonctionnel_id
-FROM
-  formule_resultat fr
-  JOIN formule_resultat_service_ref frsr ON frsr.formule_resultat_id = fr.id
-  JOIN mise_en_paiement              mep ON mep.formule_res_service_ref_id = frsr.id
-  JOIN centre_cout                    cc ON cc.id = mep.centre_cout_id
-  JOIN service_referentiel            sr ON sr.id = frsr.service_referentiel_id
-  JOIN fonction_referentiel           fr ON fr.id = sr.fonction_id
-UNION
+-- DEPARTEMENT_SOURCE_FK_IDX
+CREATE INDEX "DEPARTEMENT_SOURCE_FK_IDX" ON "DEPARTEMENT" ("SOURCE_ID");
 
-SELECT
-  mep.id                                      mise_en_paiement_id,
-  fr.intervenant_id                           intervenant_id,
-  COALESCE( ep.structure_id, i.structure_id ) structure_id,
-  mep.periode_paiement_id                     periode_paiement_id,
-  COALESCE(
-    mep.domaine_fonctionnel_id, 
-    e.domaine_fonctionnel_id, 
-    to_number((SELECT valeur FROM parametre WHERE nom = 'domaine_fonctionnel_ens_ext'))
-  ) domaine_fonctionnel_id
-FROM
-  formule_resultat fr
-  JOIN intervenant                       i ON i.id = fr.intervenant_id
-  JOIN formule_resultat_service        frs ON frs.formule_resultat_id = fr.id
-  JOIN mise_en_paiement                mep ON mep.formule_res_service_id = frs.id
-  JOIN centre_cout                      cc ON cc.id = mep.centre_cout_id
-  JOIN service                           s ON s.id = frs.service_id
-  LEFT JOIN element_pedagogique         ep ON ep.id = s.element_pedagogique_id
-  LEFT JOIN etape                        e ON e.id = ep.etape_id
-) t1;
+-- DF_SOURCE_FK_IDX
+CREATE INDEX "DF_SOURCE_FK_IDX" ON "DOMAINE_FONCTIONNEL" ("SOURCE_ID");
 
--- V_MODIF_SERVICE_DU_EXPORT_CSV
-CREATE OR REPLACE FORCE VIEW "V_MODIF_SERVICE_DU_EXPORT_CSV" ("ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID", "ANNEE", "STRUCTURE_LIBELLE", "INTERVENANT_CODE", "INTERVENANT_NOM_USUEL", "INTERVENANT_NOM_PATRONYMIQUE", "INTERVENANT_PRENOM", "INTERVENANT_STATUT_LIBELLE", "INTERVENANT_SERVICE_STATUTAIRE", "MOTIF_CODE", "MOTIF_LIBELLE", "HEURES", "COMMENTAIRES", "MODIFICATEUR", "DATE_MODIFICATION") AS 
-  SELECT
-  i.annee_id                      annee_id,
-  i.id                            intervenant_id,
-  i.structure_id                  structure_id,
-  
-  a.libelle                       annee,
-  s.libelle_court                 structure_libelle,
-  
-  i.code                          intervenant_code,
-  i.nom_usuel                     intervenant_nom_usuel,
-  i.nom_patronymique              intervenant_nom_patronymique,
-  i.prenom                        intervenant_prenom,
-  si.libelle                      intervenant_statut_libelle,
-  si.service_statutaire           intervenant_service_statutaire,
-  
-  mss.code                        motif_code,
-  mss.libelle                     motif_libelle,
-  
-  msd.heures * mss.multiplicateur heures,
-  
-  msd.commentaires                commentaires,
-  u.display_name                  modificateur,
-  msd.histo_modification          date_modification
-FROM
-       modification_service_du    msd
-  JOIN intervenant                  i ON i.id = msd.intervenant_id
-  JOIN annee                        a ON a.id = i.annee_id
-  JOIN structure                    s ON s.id = i.structure_id
-  JOIN statut_intervenant          si ON si.id = i.statut_id
-  JOIN motif_modification_service mss ON mss.id = msd.motif_id
-  JOIN utilisateur                  u ON u.id = msd.histo_modificateur_id
-WHERE
-  msd.histo_destruction IS NULL
-  AND i.histo_destruction IS NULL
-ORDER BY
-  annee_id,
-  structure_libelle,
-  intervenant_nom_usuel,
-  motif_libelle,
-  heures;
+-- DISCIPLINE_HCFK_IDX
+CREATE INDEX "DISCIPLINE_HCFK_IDX" ON "DISCIPLINE" ("HISTO_CREATEUR_ID");
 
--- V_NIVEAU_FORMATION
-CREATE OR REPLACE FORCE VIEW "V_NIVEAU_FORMATION" ("ID", "CODE", "LIBELLE_LONG", "NIVEAU", "GROUPE_TYPE_FORMATION_ID") AS 
-  SELECT DISTINCT
-  ose_divers.niveau_formation_id_calc( gtf.id, gtf.pertinence_niveau, e.niveau ) id,
-  gtf.libelle_court || e.niveau code,
-  gtf.libelle_long,
-  e.niveau,
-  gtf.id groupe_type_formation_id
-FROM
-  etape e
-  JOIN type_formation tf ON tf.id = e.type_formation_id AND tf.histo_destruction IS NULL
-  JOIN groupe_type_formation gtf ON gtf.id = tf.groupe_id AND gtf.histo_destruction IS NULL
-WHERE
-  e.histo_destruction IS NULL
-  AND ose_divers.niveau_formation_id_calc( gtf.id, gtf.pertinence_niveau, e.niveau ) IS NOT NULL
-ORDER BY
-  gtf.libelle_long, e.niveau;
+-- DISCIPLINE_HDFK_IDX
+CREATE INDEX "DISCIPLINE_HDFK_IDX" ON "DISCIPLINE" ("HISTO_DESTRUCTEUR_ID");
 
--- V_PJ_HEURES
-CREATE OR REPLACE FORCE VIEW "V_PJ_HEURES" ("NOM_USUEL", "PRENOM", "INTERVENANT_ID", "SOURCE_CODE", "ANNEE_ID", "CATEG", "TOTAL_HEURES") AS 
-  SELECT
-  i.NOM_USUEL,
-  i.PRENOM,
-  i.id intervenant_id,
-  i.SOURCE_CODE,
-  i.annee_id, 'service' categ,
-  sum(vh.HEURES) as total_heures
-from INTERVENANT i 
-  join SERVICE s on s.INTERVENANT_ID = i.id      and s.histo_destruction IS NULL
-  join VOLUME_HORAIRE vh on vh.SERVICE_ID = s.id and vh.histo_destruction IS NULL
-  join type_volume_horaire tvh ON TVH.ID = VH.TYPE_VOLUME_HORAIRE_ID AND (tvh.code = 'PREVU')
-  join ELEMENT_PEDAGOGIQUE ep on s.ELEMENT_PEDAGOGIQUE_ID = ep.id        and ep.histo_destruction IS NULL
-  join ETAPE e on ep.ETAPE_ID = e.id and e.histo_destruction IS NULL
-where i.histo_destruction IS NULL
-  group by i.NOM_USUEL, i.PRENOM, i.id, i.SOURCE_CODE, i.annee_id, 'service'
-UNION
-  SELECT i.NOM_USUEL, i.PRENOM, i.id intervenant_id, i.SOURCE_CODE, i.annee_id, 'referentiel' categ, sum(vh.HEURES) as total_heures
-  from INTERVENANT i 
-  join service_referentiel s on s.INTERVENANT_ID = i.id                  and s.histo_destruction IS NULL
-  join volume_horaire_ref vh on vh.service_referentiel_id = s.id         and vh.histo_destruction IS NULL
-  join type_volume_horaire tvh ON TVH.ID = VH.TYPE_VOLUME_HORAIRE_ID     AND (tvh.code = 'PREVU')
-  join fonction_referentiel ep on s.fonction_id = ep.id                  and ep.histo_destruction IS NULL
-  where i.histo_destruction IS NULL
-  group by i.NOM_USUEL, i.PRENOM, i.id, i.SOURCE_CODE, i.annee_id, 'referentiel';
+-- DISCIPLINE_HMFK_IDX
+CREATE INDEX "DISCIPLINE_HMFK_IDX" ON "DISCIPLINE" ("HISTO_MODIFICATEUR_ID");
 
--- V_PRIVILEGES_ROLES
-CREATE OR REPLACE FORCE VIEW "V_PRIVILEGES_ROLES" ("PRIVILEGE", "ROLE") AS 
-  WITH statuts_roles AS (
-SELECT
-  rp.privilege_id,
-  r.code role
-FROM
-  role_privilege rp
-  JOIN role r ON r.id = rp.role_id AND r.histo_destruction IS NULL
+-- DISCIPLINE_PK
+CREATE UNIQUE INDEX "DISCIPLINE_PK" ON "DISCIPLINE" ("ID");
 
-UNION ALL
+-- DISCIPLINE_SOURCE_FK_IDX
+CREATE INDEX "DISCIPLINE_SOURCE_FK_IDX" ON "DISCIPLINE" ("SOURCE_ID");
 
-SELECT
-  sp.privilege_id,
-  'statut/' || s.source_code role
-FROM
-  statut_privilege sp
-  JOIN statut_intervenant s ON s.id = sp.statut_id AND s.histo_destruction IS NULL
-)
-SELECT
-  cp.code || '-' || p.code privilege,
-  sr.role
-FROM
-  privilege p
-  JOIN categorie_privilege cp ON cp.id = p.categorie_id
-  LEFT JOIN statuts_roles sr ON sr.privilege_id = p.id;
+-- DISCIPLINE_SOURCE_UN
+CREATE UNIQUE INDEX "DISCIPLINE_SOURCE_UN" ON "DISCIPLINE" ("SOURCE_CODE");
 
--- V_REF_INTERVENANT
-CREATE OR REPLACE FORCE VIEW "V_REF_INTERVENANT" ("C_INTERVENANT") AS 
-  SELECT DISTINCT
-  i.source_code C_INTERVENANT
-FROM
-  tbl_service s
-  JOIN intervenant i ON i.id = s.intervenant_id
-  JOIN annee a ON a.id = s.annee_id
-WHERE
-  s.nbvh > 0
-  AND SYSDATE BETWEEN a.date_debut AND a.date_fin;
+-- DOMAINE_FONCTIONNEL_HCFK_IDX
+CREATE INDEX "DOMAINE_FONCTIONNEL_HCFK_IDX" ON "DOMAINE_FONCTIONNEL" ("HISTO_CREATEUR_ID");
 
--- V_SERVICE_NON_VALIDE
-CREATE OR REPLACE FORCE VIEW "V_SERVICE_NON_VALIDE" ("ID", "INTERVENANT_ID", "SERVICE_ID", "VOLUME_HORAIRE_ID", "ELEMENT_PEDAGOGIQUE_ID", "LIBELLE", "HEURES") AS 
-  select vh.ID, i.ID as intervenant_id, s.ID as service_id, vh.ID as volume_horaire_id, ep.id as element_pedagogique_id, ep.LIBELLE, vh.HEURES
-  from service s
-  inner join INTERVENANT i on s.INTERVENANT_ID = i.id
-  inner join ELEMENT_PEDAGOGIQUE ep on s.ELEMENT_PEDAGOGIQUE_ID = ep.id and ep.histo_destruction IS NULL
-  inner join VOLUME_HORAIRE vh on vh.SERVICE_ID = s.ID and vh.HISTO_DESTRUCTION is null
-  left join VALIDATION_VOL_HORAIRE vvh on vvh.VOLUME_HORAIRE_ID = vh.ID
-  left join VALIDATION v on vvh.VALIDATION_ID = v.ID
-  left join TYPE_VALIDATION tv on v.TYPE_VALIDATION_ID = tv.ID
-  where (v.ID is null or v.HISTO_DESTRUCTION is not null) and
-  not exists (
-    select * from VALIDATION_VOL_HORAIRE vvh2
-    inner join VALIDATION v2 on vvh2.VALIDATION_ID = v2.ID and v2.histo_destruction IS NULL
-    where vvh2.VOLUME_HORAIRE_ID = vvh.VOLUME_HORAIRE_ID
-  );
+-- DOMAINE_FONCTIONNEL_HDFK_IDX
+CREATE INDEX "DOMAINE_FONCTIONNEL_HDFK_IDX" ON "DOMAINE_FONCTIONNEL" ("HISTO_DESTRUCTEUR_ID");
 
--- V_SERVICE_VALIDE
-CREATE OR REPLACE FORCE VIEW "V_SERVICE_VALIDE" ("ID", "INTERVENANT_ID", "SERVICE_ID", "VOLUME_HORAIRE_ID", "ELEMENT_PEDAGOGIQUE_ID", "LIBELLE", "HEURES", "VALIDATION_ID", "CODE") AS 
-  select vh.ID, i.ID as intervenant_id, s.ID as service_id, vh.ID as volume_horaire_id, ep.id as element_pedagogique_id, ep.LIBELLE, vh.HEURES, v.ID as validation_id, tv.CODE
-  from service s
-  inner join INTERVENANT i on s.INTERVENANT_ID = i.id
-  left join ELEMENT_PEDAGOGIQUE ep on s.ELEMENT_PEDAGOGIQUE_ID = ep.id and ep.histo_destruction IS NULL -- pas d'EP si intervention hors-UCBN
-  inner join VOLUME_HORAIRE vh on vh.SERVICE_ID = s.ID and vh.histo_destruction IS NULL
-  inner join VALIDATION_VOL_HORAIRE vvh on vvh.VOLUME_HORAIRE_ID = vh.ID
-  inner join VALIDATION v on vvh.VALIDATION_ID = v.ID and v.histo_destruction IS NULL
-  inner join TYPE_VALIDATION tv on v.TYPE_VALIDATION_ID = tv.ID;
+-- DOMAINE_FONCTIONNEL_HMFK_IDX
+CREATE INDEX "DOMAINE_FONCTIONNEL_HMFK_IDX" ON "DOMAINE_FONCTIONNEL" ("HISTO_MODIFICATEUR_ID");
 
--- V_STRUCTURE_TYPE_MODULATEUR
-CREATE OR REPLACE FORCE VIEW "V_STRUCTURE_TYPE_MODULATEUR" ("TYPE_MODULATEUR_ID", "STRUCTURE_ID") AS 
-  SELECT DISTINCT
-  etm.type_modulateur_id type_modulateur_id,
-  ep.structure_id structure_id
-FROM
-  v_element_type_modulateur etm
-  JOIN element_pedagogique ep ON ep.id = etm.element_pedagogique_id AND ep.histo_destruction IS NULL;
+-- DOMAINE_FONCTIONNEL_PK
+CREATE UNIQUE INDEX "DOMAINE_FONCTIONNEL_PK" ON "DOMAINE_FONCTIONNEL" ("ID");
+
+-- DOSSIER_D_FK
+CREATE INDEX "DOSSIER_D_FK" ON "DOSSIER" ("DEPT_NAISSANCE_ID");
+
+-- DOSSIER_HCFK_IDX
+CREATE INDEX "DOSSIER_HCFK_IDX" ON "DOSSIER" ("HISTO_CREATEUR_ID");
 
--- V_TBL_AGREMENT
-CREATE OR REPLACE FORCE VIEW "V_TBL_AGREMENT" ("ANNEE_ID", "TYPE_AGREMENT_ID", "INTERVENANT_ID", "STRUCTURE_ID", "OBLIGATOIRE", "AGREMENT_ID") AS 
-  WITH i_s AS (
-  SELECT DISTINCT
-    fr.intervenant_id,
-    ep.structure_id
-  FROM
-    formule_resultat fr
-    JOIN type_volume_horaire  tvh ON tvh.code = 'PREVU' AND tvh.id = fr.type_volume_horaire_id
-    JOIN etat_volume_horaire  evh ON evh.code = 'valide' AND evh.id = fr.etat_volume_horaire_id
+-- DOSSIER_HDFK_IDX
+CREATE INDEX "DOSSIER_HDFK_IDX" ON "DOSSIER" ("HISTO_DESTRUCTEUR_ID");
 
-    JOIN formule_resultat_service frs ON frs.formule_resultat_id = fr.id
-    JOIN service s ON s.id = frs.service_id
-    JOIN element_pedagogique ep ON ep.id = s.element_pedagogique_id
-  WHERE
-    frs.total > 0
-)
-SELECT
-  i.annee_id              annee_id,
-  tas.type_agrement_id    type_agrement_id,
-  i.id                    intervenant_id,
-  null                    structure_id,
-  tas.obligatoire         obligatoire,
-  a.id                    agrement_id
-FROM
-  type_agrement                  ta
-  JOIN type_agrement_statut      tas ON tas.type_agrement_id = ta.id
-                                    AND tas.histo_destruction IS NULL
-                               
-  JOIN intervenant                 i ON i.histo_destruction IS NULL
-                                    AND (tas.premier_recrutement IS NULL OR NVL(i.premier_recrutement,0) = tas.premier_recrutement)
-                                    AND i.statut_id = tas.statut_intervenant_id
-                            
-  LEFT JOIN agrement               a ON a.type_agrement_id = ta.id 
-                                    AND a.intervenant_id = i.id
-                                    AND a.histo_destruction IS NULL
-WHERE
-  ta.code = 'CONSEIL_ACADEMIQUE'
+-- DOSSIER_HMFK_IDX
+CREATE INDEX "DOSSIER_HMFK_IDX" ON "DOSSIER" ("HISTO_MODIFICATEUR_ID");
 
-UNION ALL
+-- DOSSIER_INTERVENANT_FK_IDX
+CREATE INDEX "DOSSIER_INTERVENANT_FK_IDX" ON "DOSSIER" ("INTERVENANT_ID");
 
-SELECT
-  i.annee_id              annee_id,
-  tas.type_agrement_id    type_agrement_id,
-  i.id                    intervenant_id,
-  i_s.structure_id        structure_id,
-  tas.obligatoire         obligatoire,
-  a.id                    agrement_id
-FROM
-  type_agrement                   ta
-  JOIN type_agrement_statut      tas ON tas.type_agrement_id = ta.id
-                                    AND tas.histo_destruction IS NULL
+-- DOSSIER_PK
+CREATE UNIQUE INDEX "DOSSIER_PK" ON "DOSSIER" ("ID");
 
-  JOIN intervenant                 i ON i.histo_destruction IS NULL
-                                    AND (tas.premier_recrutement IS NULL OR NVL(i.premier_recrutement,0) = tas.premier_recrutement)
-                                    AND i.statut_id = tas.statut_intervenant_id
+-- DOSSIER_P_FK
+CREATE INDEX "DOSSIER_P_FK" ON "DOSSIER" ("PAYS_NAISSANCE_ID");
 
-  JOIN                           i_s ON i_s.intervenant_id = i.id
+-- DOSSIER_UK1
+CREATE UNIQUE INDEX "DOSSIER_UK1" ON "DOSSIER" ("HISTO_DESTRUCTION");
 
-  LEFT JOIN agrement               a ON a.type_agrement_id = ta.id 
-                                    AND a.intervenant_id = i.id
-                                    AND a.structure_id = i_s.structure_id
-                                    AND a.histo_destruction IS NULL
-WHERE
-  ta.code = 'CONSEIL_RESTREINT';
+-- DOTATION_ANNEE_FK_IDX
+CREATE INDEX "DOTATION_ANNEE_FK_IDX" ON "DOTATION" ("ANNEE_ID");
 
--- V_TBL_CHARGENS
-CREATE OR REPLACE FORCE VIEW "V_TBL_CHARGENS" ("ANNEE_ID", "NOEUD_ID", "SCENARIO_ID", "TYPE_HEURES_ID", "TYPE_INTERVENTION_ID", "ELEMENT_PEDAGOGIQUE_ID", "ETAPE_ID", "ETAPE_ENS_ID", "STRUCTURE_ID", "GROUPE_TYPE_FORMATION_ID", "OUVERTURE", "DEDOUBLEMENT", "ASSIDUITE", "EFFECTIF", "HEURES_ENS", "GROUPES", "HEURES", "HETD") AS 
-  WITH t AS (
-SELECT
-  n.annee_id                        annee_id,
-  n.noeud_id                        noeud_id,
-  sn.scenario_id                    scenario_id,
-  sne.type_heures_id                type_heures_id,
-  ti.id                             type_intervention_id,
+-- DOTATION_HCFK_IDX
+CREATE INDEX "DOTATION_HCFK_IDX" ON "DOTATION" ("HISTO_CREATEUR_ID");
 
-  n.element_pedagogique_id          element_pedagogique_id,
-  n.element_pedagogique_etape_id    etape_id,
-  sne.etape_id                      etape_ens_id,
-  n.structure_id                    structure_id,
-  n.groupe_type_formation_id        groupe_type_formation_id,
+-- DOTATION_HDFK_IDX
+CREATE INDEX "DOTATION_HDFK_IDX" ON "DOTATION" ("HISTO_DESTRUCTEUR_ID");
 
-  vhe.heures                        heures,
-  vhe.heures * ti.taux_hetd_service hetd,
+-- DOTATION_HMFK_IDX
+CREATE INDEX "DOTATION_HMFK_IDX" ON "DOTATION" ("HISTO_MODIFICATEUR_ID");
 
-  GREATEST(COALESCE(sns.ouverture, 1),1)                                           ouverture,
-  GREATEST(COALESCE(sns.dedoublement, snsetp.dedoublement, csdd.dedoublement,1),1) dedoublement,
-  COALESCE(sns.assiduite,1)                                                        assiduite,
-  sne.effectif*COALESCE(sns.assiduite,1)                                           effectif,
+-- DOTATION_PK
+CREATE UNIQUE INDEX "DOTATION_PK" ON "DOTATION" ("ID");
 
-  SUM(sne.effectif*COALESCE(sns.assiduite,1)) OVER (PARTITION BY n.noeud_id, sn.scenario_id, ti.id) t_effectif
+-- DOTATION_STRUCTURE_FK_IDX
+CREATE INDEX "DOTATION_STRUCTURE_FK_IDX" ON "DOTATION" ("STRUCTURE_ID");
 
-FROM
-            scenario_noeud_effectif    sne
-       JOIN etape                        e ON e.id = sne.etape_id
-                                          AND e.histo_destruction IS NULL
-       
-       JOIN scenario_noeud              sn ON sn.id = sne.scenario_noeud_id
-                                          AND sn.histo_destruction IS NULL
-       
-       JOIN tbl_noeud                       n ON n.noeud_id = sn.noeud_id
-                                          
-       JOIN volume_horaire_ens         vhe ON vhe.element_pedagogique_id = n.element_pedagogique_id
-                                          AND vhe.histo_destruction IS NULL 
-                                          AND vhe.heures > 0
+-- DOTATION_TYPE_DOTATION_FK_IDX
+CREATE INDEX "DOTATION_TYPE_DOTATION_FK_IDX" ON "DOTATION" ("TYPE_RESSOURCE_ID");
 
-       JOIN type_intervention           ti ON ti.id = vhe.type_intervention_id
+-- DOTATION__UN
+CREATE UNIQUE INDEX "DOTATION__UN" ON "DOTATION" ("TYPE_RESSOURCE_ID", "ANNEE_ID", "ANNEE_CIVILE", "STRUCTURE_ID", "LIBELLE", "HISTO_DESTRUCTION");
 
-  LEFT JOIN tbl_noeud                 netp ON netp.etape_id = e.id
-                                          
-  LEFT JOIN scenario_noeud           snetp ON snetp.scenario_id = sn.scenario_id
-                                          AND snetp.noeud_id = netp.noeud_id
-                                          AND snetp.histo_destruction IS NULL
-                                          
-  LEFT JOIN scenario_noeud_seuil    snsetp ON snsetp.scenario_noeud_id = snetp.id
-                                          AND snsetp.type_intervention_id = ti.id
+-- DS_MDS_FK_IDX
+CREATE INDEX "DS_MDS_FK_IDX" ON "MODIFICATION_SERVICE_DU" ("MOTIF_ID");
 
-  LEFT JOIN tbl_chargens_seuils_def   csdd ON csdd.annee_id = n.annee_id
-                                          AND csdd.scenario_id = sn.scenario_id
-                                          AND csdd.type_intervention_id = ti.id
-                                          AND csdd.groupe_type_formation_id = n.groupe_type_formation_id
-                                          AND csdd.structure_id = n.structure_id
+-- EFFECTIFS_ELEMENT_FK_IDX
+CREATE INDEX "EFFECTIFS_ELEMENT_FK_IDX" ON "EFFECTIFS" ("ELEMENT_PEDAGOGIQUE_ID");
 
-  LEFT JOIN scenario_noeud_seuil       sns ON sns.scenario_noeud_id = sn.id 
-                                          AND sns.type_intervention_id = ti.id
-)
-SELECT
-  annee_id,
-  noeud_id,
-  scenario_id,
-  type_heures_id,
-  type_intervention_id,
+-- EFFECTIFS_FK
+CREATE INDEX "EFFECTIFS_FK" ON "EFFECTIFS" ("ANNEE_ID");
 
-  element_pedagogique_id,
-  etape_id,
-  etape_ens_id,
-  structure_id,
-  groupe_type_formation_id,
+-- EFFECTIFS_HCFK_IDX
+CREATE INDEX "EFFECTIFS_HCFK_IDX" ON "EFFECTIFS" ("HISTO_CREATEUR_ID");
 
-  ouverture,
-  dedoublement,
-  assiduite,
-  effectif,
-  heures heures_ens,
-  --t_effectif,
+-- EFFECTIFS_HDFK_IDX
+CREATE INDEX "EFFECTIFS_HDFK_IDX" ON "EFFECTIFS" ("HISTO_DESTRUCTEUR_ID");
 
-  CASE WHEN t_effectif < ouverture THEN 0 ELSE
-    CEIL( t_effectif / dedoublement ) * effectif / t_effectif
-  END groupes,
+-- EFFECTIFS_HMFK_IDX
+CREATE INDEX "EFFECTIFS_HMFK_IDX" ON "EFFECTIFS" ("HISTO_MODIFICATEUR_ID");
 
-  CASE WHEN t_effectif < ouverture THEN 0 ELSE
-    CEIL( t_effectif / dedoublement ) * heures * effectif / t_effectif
-  END heures,
+-- EFFECTIFS_PK
+CREATE UNIQUE INDEX "EFFECTIFS_PK" ON "EFFECTIFS" ("ID");
 
-  CASE WHEN t_effectif < ouverture THEN 0 ELSE
-    CEIL( t_effectif / dedoublement ) * hetd * effectif / t_effectif
-  END  hetd
+-- EFFECTIFS_SOURCE_FK_IDX
+CREATE INDEX "EFFECTIFS_SOURCE_FK_IDX" ON "EFFECTIFS" ("SOURCE_ID");
 
-FROM
-  t;
+-- EFFECTIFS__UN
+CREATE UNIQUE INDEX "EFFECTIFS__UN" ON "EFFECTIFS" ("SOURCE_CODE", "ANNEE_ID");
 
--- V_TBL_CHARGENS_SEUILS_DEF
-CREATE OR REPLACE FORCE VIEW "V_TBL_CHARGENS_SEUILS_DEF" ("ANNEE_ID", "SCENARIO_ID", "STRUCTURE_ID", "GROUPE_TYPE_FORMATION_ID", "TYPE_INTERVENTION_ID", "DEDOUBLEMENT") AS 
-  SELECT
-  sta.annee_id,
-  sta.scenario_id,
-  s.structure_id,
-  gtf.groupe_type_formation_id,
-  sta.type_intervention_id,
-  COALESCE(sc1.dedoublement, sc2.dedoublement, sc3.dedoublement, sc4.dedoublement) dedoublement
-FROM
-  (SELECT DISTINCT scenario_id, type_intervention_id, annee_id FROM seuil_charge WHERE histo_destruction IS NULL) sta
-  JOIN (SELECT DISTINCT structure_id FROM noeud WHERE structure_id IS NOT NULL) s ON 1=1
-  JOIN (SELECT id groupe_type_formation_id FROM groupe_type_formation) gtf ON 1=1
-  
-  LEFT JOIN seuil_charge sc1 ON 
-    sc1.histo_destruction            IS NULL
-    AND sc1.annee_id                 = sta.annee_id
-    AND sc1.scenario_id              = sta.scenario_id
-    AND sc1.type_intervention_id     = sta.type_intervention_id
-    AND sc1.structure_id             = s.structure_id
-    AND sc1.groupe_type_formation_id = gtf.groupe_type_formation_id
-    
-  LEFT JOIN seuil_charge sc2 ON 
-    sc2.histo_destruction            IS NULL
-    AND sc2.annee_id                 = sta.annee_id
-    AND sc2.scenario_id              = sta.scenario_id
-    AND sc2.type_intervention_id     = sta.type_intervention_id
-    AND sc2.structure_id             = s.structure_id
-    AND sc2.groupe_type_formation_id IS NULL
-    
-  LEFT JOIN seuil_charge sc3 ON 
-    sc3.histo_destruction            IS NULL
-    AND sc3.annee_id                 = sta.annee_id
-    AND sc3.scenario_id              = sta.scenario_id
-    AND sc3.type_intervention_id     = sta.type_intervention_id
-    AND sc3.structure_id             IS NULL
-    AND sc3.groupe_type_formation_id = gtf.groupe_type_formation_id
-    
-  LEFT JOIN seuil_charge sc4 ON 
-    sc4.histo_destruction            IS NULL
-    AND sc4.annee_id                 = sta.annee_id
-    AND sc4.scenario_id              = sta.scenario_id
-    AND sc4.type_intervention_id     = sta.type_intervention_id
-    AND sc4.structure_id             IS NULL
-    AND sc4.groupe_type_formation_id IS NULL
-WHERE
-  COALESCE(sc1.dedoublement, sc2.dedoublement, sc3.dedoublement, sc4.dedoublement, 1) <> 1;
+-- ELEMENT_MODULATEUR_HCFK_IDX
+CREATE INDEX "ELEMENT_MODULATEUR_HCFK_IDX" ON "ELEMENT_MODULATEUR" ("HISTO_CREATEUR_ID");
 
--- V_TBL_CLOTURE_REALISE
-CREATE OR REPLACE FORCE VIEW "V_TBL_CLOTURE_REALISE" ("ANNEE_ID", "INTERVENANT_ID", "PEUT_CLOTURER_SAISIE", "CLOTURE") AS 
-  WITH t AS (
-  SELECT
-    i.annee_id              annee_id,
-    i.id                    intervenant_id,
-    si.peut_cloturer_saisie peut_cloturer_saisie,
-    CASE WHEN v.id IS NULL THEN 0 ELSE 1 END cloture
-  FROM
-              intervenant         i
-         JOIN statut_intervenant si ON si.id = i.statut_id
-         JOIN type_validation    tv ON tv.code = 'CLOTURE_REALISE'
-         
-    LEFT JOIN validation          v ON v.intervenant_id = i.id
-                                   AND v.type_validation_id = tv.id
-                                   AND v.histo_destruction IS NULL
+-- ELEMENT_MODULATEUR_HDFK_IDX
+CREATE INDEX "ELEMENT_MODULATEUR_HDFK_IDX" ON "ELEMENT_MODULATEUR" ("HISTO_DESTRUCTEUR_ID");
 
-  WHERE
-    i.histo_destruction IS NULL
-)
-SELECT
-  annee_id,
-  intervenant_id,
-  peut_cloturer_saisie,
-  CASE WHEN sum(cloture) = 0 THEN 0 ELSE 1 END cloture
-FROM 
-  t
-GROUP BY
-  annee_id,
-  intervenant_id,
-  peut_cloturer_saisie;
+-- ELEMENT_MODULATEUR_HMFK_IDX
+CREATE INDEX "ELEMENT_MODULATEUR_HMFK_IDX" ON "ELEMENT_MODULATEUR" ("HISTO_MODIFICATEUR_ID");
 
--- V_TBL_CONTRAT
-CREATE OR REPLACE FORCE VIEW "V_TBL_CONTRAT" ("ANNEE_ID", "INTERVENANT_ID", "PEUT_AVOIR_CONTRAT", "STRUCTURE_ID", "NBVH", "EDITE", "SIGNE") AS 
-  WITH t AS (
-  SELECT 
-    i.annee_id                                                                annee_id,
-    i.id                                                                      intervenant_id,
-    si.peut_avoir_contrat                                                     peut_avoir_contrat,
-    NVL(ep.structure_id, i.structure_id)                                      structure_id,
-    CASE WHEN evh.code IN ('contrat-edite','contrat-signe') THEN 1 ELSE 0 END edite,
-    CASE WHEN evh.code IN ('contrat-signe')                 THEN 1 ELSE 0 END signe
-  FROM
-              intervenant                 i
-              
-         JOIN statut_intervenant         si ON si.id = i.statut_id
-         
-         JOIN service                     s ON s.intervenant_id = i.id
-                                           AND s.histo_destruction IS NULL
-         
-         JOIN type_volume_horaire       tvh ON tvh.code = 'PREVU'
-         
-         JOIN volume_horaire             vh ON vh.service_id = s.id
-                                           AND vh.histo_destruction IS NULL
-                                           AND vh.heures <> 0
-                                           AND vh.type_volume_horaire_id = tvh.id
-    
-         JOIN v_volume_horaire_etat     vhe ON vhe.volume_horaire_id = vh.id
-         
-         JOIN etat_volume_horaire       evh ON evh.id = vhe.etat_volume_horaire_id
-                                           AND evh.code IN ('valide', 'contrat-edite', 'contrat-signe')
-  
-         JOIN element_pedagogique        ep ON ep.id = s.element_pedagogique_id
-    
-  WHERE
-    i.histo_destruction IS NULL
-    AND NOT (si.peut_avoir_contrat = 0 AND evh.code = 'valide')
-    
-  UNION ALL
-  
-  SELECT 
-    i.annee_id                                                                annee_id,
-    i.id                                                                      intervenant_id,
-    si.peut_avoir_contrat                                                     peut_avoir_contrat,
-    s.structure_id                                                            structure_id,
-    CASE WHEN evh.code IN ('contrat-edite','contrat-signe') THEN 1 ELSE 0 END edite,
-    CASE WHEN evh.code IN ('contrat-signe')                 THEN 1 ELSE 0 END signe
-  FROM
-              intervenant                 i
-              
-         JOIN statut_intervenant         si ON si.id = i.statut_id
-         
-         JOIN service_referentiel         s ON s.intervenant_id = i.id
-                                           AND s.histo_destruction IS NULL
-         
-         JOIN type_volume_horaire       tvh ON tvh.code = 'PREVU'
-         
-         JOIN volume_horaire_ref         vh ON vh.service_referentiel_id = s.id
-                                           AND vh.histo_destruction IS NULL
-                                           AND vh.heures <> 0
-                                           AND vh.type_volume_horaire_id = tvh.id
-    
-         JOIN v_volume_horaire_ref_etat vhe ON vhe.volume_horaire_ref_id = vh.id
-         
-         JOIN etat_volume_horaire       evh ON evh.id = vhe.etat_volume_horaire_id
-                                           AND evh.code IN ('valide', 'contrat-edite', 'contrat-signe')
-  
-  WHERE
-    i.histo_destruction IS NULL
-    AND NOT (si.peut_avoir_contrat = 0 AND evh.code = 'valide')
-)
-SELECT
-  annee_id,
-  intervenant_id,
-  peut_avoir_contrat,
-  structure_id,
-  count(*) as nbvh,
-  sum(edite) as edite,
-  sum(signe) as signe
-FROM
-  t
-GROUP BY
-  annee_id,
-  intervenant_id,
-  peut_avoir_contrat,
-  structure_id;
+-- ELEMENT_MODULATEUR_PK
+CREATE UNIQUE INDEX "ELEMENT_MODULATEUR_PK" ON "ELEMENT_MODULATEUR" ("ID");
 
--- V_TBL_DMEP_LIQUIDATION
-CREATE OR REPLACE FORCE VIEW "V_TBL_DMEP_LIQUIDATION" ("ANNEE_ID", "TYPE_RESSOURCE_ID", "STRUCTURE_ID", "HEURES") AS 
-  SELECT
-  annee_id,
-  type_ressource_id,
-  structure_id,
-  SUM(heures) heures
-FROM
-(
-  SELECT
-    i.annee_id,
-    cc.type_ressource_id,
-    COALESCE( ep.structure_id, i.structure_id ) structure_id,
-    mep.heures
-  FROM
-              mise_en_paiement         mep
-         JOIN centre_cout               cc ON cc.id = mep.centre_cout_id
-         JOIN formule_resultat_service frs ON frs.id = mep.formule_res_service_id
-         JOIN service                    s ON s.id = frs.service_id
-         JOIN intervenant                i ON i.id = s.intervenant_id
-    LEFT JOIN element_pedagogique       ep ON ep.id = s.element_pedagogique_id
-  WHERE
-    mep.histo_destruction IS NULL
-    
-  UNION ALL
-  
-  SELECT
-    i.annee_id,
-    cc.type_ressource_id,
-    sr.structure_id structure_id,
-    heures
-  FROM
-              mise_en_paiement              mep
-         JOIN centre_cout                    cc ON cc.id = mep.centre_cout_id
-         JOIN formule_resultat_service_ref frsr ON frsr.id = mep.formule_res_service_ref_id
-         JOIN service_referentiel            sr ON sr.id = frsr.service_referentiel_id
-         JOIN intervenant                     i ON i.id = sr.intervenant_id
-    
-  WHERE
-    mep.histo_destruction IS NULL
+-- ELEMENT_MODULATEUR__UN
+CREATE UNIQUE INDEX "ELEMENT_MODULATEUR__UN" ON "ELEMENT_MODULATEUR" ("ELEMENT_ID", "MODULATEUR_ID", "HISTO_DESTRUCTION");
 
-) t1
-GROUP BY
-  annee_id, type_ressource_id, structure_id;
+-- ELEMENT_PEDAGOGIQUE_HCFK_IDX
+CREATE INDEX "ELEMENT_PEDAGOGIQUE_HCFK_IDX" ON "ELEMENT_PEDAGOGIQUE" ("HISTO_CREATEUR_ID");
 
--- V_TBL_DOSSIER
-CREATE OR REPLACE FORCE VIEW "V_TBL_DOSSIER" ("ANNEE_ID", "INTERVENANT_ID", "PEUT_SAISIR_DOSSIER", "DOSSIER_ID", "VALIDATION_ID") AS 
-  SELECT
-  i.annee_id,
-  i.id intervenant_id,
-  si.peut_saisir_dossier,
-  d.id dossier_id,
-  v.id validation_id
-FROM
-            intervenant         i
-       JOIN statut_intervenant si ON si.id = i.statut_id
-  LEFT JOIN dossier             d ON d.intervenant_id = i.id
-                              AND d.histo_destruction IS NULL
-  
-       JOIN type_validation tv ON tv.code = 'DONNEES_PERSO_PAR_COMP'
-  LEFT JOIN validation       v ON v.intervenant_id = i.id
-                              AND v.type_validation_id = tv.id
-                              AND v.histo_destruction IS NULL
-WHERE
-  i.histo_destruction IS NULL;
+-- ELEMENT_PEDAGOGIQUE_HDFK_IDX
+CREATE INDEX "ELEMENT_PEDAGOGIQUE_HDFK_IDX" ON "ELEMENT_PEDAGOGIQUE" ("HISTO_DESTRUCTEUR_ID");
 
--- V_TBL_LIEN
-CREATE OR REPLACE FORCE VIEW "V_TBL_LIEN" ("LIEN_ID", "SCENARIO_ID", "SCENARIO_LIEN_ID", "NOEUD_SUP_ID", "NOEUD_INF_ID", "STRUCTURE_ID", "ACTIF", "POIDS", "MAX_POIDS", "CHOIX_MAXIMUM", "CHOIX_MINIMUM", "NB_CHOIX", "TOTAL_POIDS") AS 
-  SELECT
-  l.id             lien_id,
-  s.id             scenario_id,
-  sl.id            scenario_lien_id,
-  l.noeud_sup_id   noeud_sup_id,
-  l.noeud_inf_id   noeud_inf_id,
-  l.structure_id   structure_id,
-  NVL(sl.actif,1)  actif,
-  NVL(sl.poids,1)  poids,
-  MAX(CASE WHEN 1 = NVL(sl.actif,1) THEN NVL(sl.poids,1) ELSE 0 END) OVER (PARTITION BY l.noeud_sup_id, s.id) max_poids,
-  sl.choix_maximum choix_maximum,
-  sl.choix_minimum choix_minimum,
+-- ELEMENT_PEDAGOGIQUE_HMFK_IDX
+CREATE INDEX "ELEMENT_PEDAGOGIQUE_HMFK_IDX" ON "ELEMENT_PEDAGOGIQUE" ("HISTO_MODIFICATEUR_ID");
 
-  SUM(NVL(sl.actif,1)) OVER (PARTITION BY l.noeud_sup_id, s.id) nb_choix,
-  SUM(CASE WHEN 1 = NVL(sl.actif,1) THEN NVL(sl.poids,1) ELSE 0 END) OVER (PARTITION BY l.noeud_sup_id, s.id) total_poids
+-- ELEMENT_PEDAGOGIQUE_PK
+CREATE UNIQUE INDEX "ELEMENT_PEDAGOGIQUE_PK" ON "ELEMENT_PEDAGOGIQUE" ("ID");
 
-FROM
-  lien l
-  JOIN scenario s ON s.histo_destruction IS NULL
-  LEFT JOIN scenario_lien sl ON 
-    sl.lien_id = l.id 
-    AND sl.scenario_id = s.id
-    AND s.histo_destruction IS NULL
-WHERE
-  l.histo_destruction IS NULL;
+-- ELEMENT_TAUX_REGIMES_HCFK_IDX
+CREATE INDEX "ELEMENT_TAUX_REGIMES_HCFK_IDX" ON "ELEMENT_TAUX_REGIMES" ("HISTO_CREATEUR_ID");
 
--- V_TBL_PAIEMENT
-CREATE OR REPLACE FORCE VIEW "V_TBL_PAIEMENT" ("ANNEE_ID", "FORMULE_RES_SERVICE_ID", "FORMULE_RES_SERVICE_REF_ID", "INTERVENANT_ID", "STRUCTURE_ID", "MISE_EN_PAIEMENT_ID", "PERIODE_PAIEMENT_ID", "HEURES_A_PAYER", "HEURES_A_PAYER_POND", "HEURES_DEMANDEES", "HEURES_PAYEES") AS 
-  SELECT
-  i.annee_id                                  annee_id,
-  frs.id                                      formule_res_service_id,
-  null                                        formule_res_service_ref_id,
-  i.id                                        intervenant_id,
-  COALESCE( ep.structure_id, i.structure_id ) structure_id,
-  mep.id                                      mise_en_paiement_id,
-  mep.periode_paiement_id                     periode_paiement_id,
-  frs.heures_compl_fi + frs.heures_compl_fc + frs.heures_compl_fa + frs.heures_compl_fc_majorees heures_a_payer,
-  count(*) OVER(PARTITION BY frs.id)          heures_a_payer_pond,
-  NVL(mep.heures,0)                           heures_demandees,
-  CASE WHEN mep.periode_paiement_id IS NULL THEN 0 ELSE mep.heures END heures_payees
-FROM
-            formule_resultat_service        frs
-       JOIN type_volume_horaire             tvh ON tvh.code = 'REALISE'
-       JOIN etat_volume_horaire             evh ON evh.code = 'valide'
-       JOIN formule_resultat                 fr ON fr.id = frs.formule_resultat_id
-                                               AND fr.type_volume_horaire_id = tvh.id
-                                               AND fr.etat_volume_horaire_id = evh.id
+-- ELEMENT_TAUX_REGIMES_HDFK_IDX
+CREATE INDEX "ELEMENT_TAUX_REGIMES_HDFK_IDX" ON "ELEMENT_TAUX_REGIMES" ("HISTO_DESTRUCTEUR_ID");
 
-       JOIN intervenant                       i ON i.id = fr.intervenant_id  
-       JOIN service                           s ON s.id = frs.service_id
-  LEFT JOIN element_pedagogique              ep ON ep.id = s.element_pedagogique_id
-  LEFT JOIN mise_en_paiement                mep ON mep.formule_res_service_id = frs.id
-                                               AND mep.histo_destruction IS NULL
+-- ELEMENT_TAUX_REGIMES_HMFK_IDX
+CREATE INDEX "ELEMENT_TAUX_REGIMES_HMFK_IDX" ON "ELEMENT_TAUX_REGIMES" ("HISTO_MODIFICATEUR_ID");
 
-UNION ALL
+-- ELEMENT_TAUX_REGIMES_PK
+CREATE UNIQUE INDEX "ELEMENT_TAUX_REGIMES_PK" ON "ELEMENT_TAUX_REGIMES" ("ID");
 
-SELECT
-  i.annee_id                                  annee_id,
-  null                                        formule_res_service_id,
-  frs.id                                      formule_res_service_ref_id,
-  i.id                                        intervenant_id,
-  s.structure_id                              structure_id,
-  mep.id                                      mise_en_paiement_id,
-  mep.periode_paiement_id                     periode_paiement_id,
-  frs.heures_compl_referentiel                heures_a_payer,
-  count(*) OVER(PARTITION BY frs.id)          heures_a_payer_pond,
-  NVL(mep.heures,0)                           heures_demandees,
-  CASE WHEN mep.periode_paiement_id IS NULL THEN 0 ELSE mep.heures END heures_payees
-FROM
-            formule_resultat_service_ref    frs
-       JOIN type_volume_horaire             tvh ON tvh.code = 'REALISE'
-       JOIN etat_volume_horaire             evh ON evh.code = 'valide'
-       JOIN formule_resultat                 fr ON fr.id = frs.formule_resultat_id
-                                               AND fr.type_volume_horaire_id = tvh.id
-                                               AND fr.etat_volume_horaire_id = evh.id
+-- ELEMENT_TAUX_REGIMES__UN
+CREATE UNIQUE INDEX "ELEMENT_TAUX_REGIMES__UN" ON "ELEMENT_TAUX_REGIMES" ("SOURCE_CODE", "HISTO_DESTRUCTION");
 
-       JOIN intervenant                       i ON i.id = fr.intervenant_id  
-       JOIN service_referentiel               s ON s.id = frs.service_referentiel_id
-  LEFT JOIN mise_en_paiement                mep ON mep.formule_res_service_ref_id = frs.id
-                                               AND mep.histo_destruction IS NULL;
+-- ELEMENT_TAUX_REGIMES__UNV1
+CREATE UNIQUE INDEX "ELEMENT_TAUX_REGIMES__UNV1" ON "ELEMENT_TAUX_REGIMES" ("ELEMENT_PEDAGOGIQUE_ID", "HISTO_DESTRUCTION");
 
--- V_TBL_PIECE_JOINTE
-CREATE OR REPLACE FORCE VIEW "V_TBL_PIECE_JOINTE" ("ANNEE_ID", "TYPE_PIECE_JOINTE_ID", "INTERVENANT_ID", "DEMANDEE", "FOURNIE", "VALIDEE", "HEURES_POUR_SEUIL") AS 
-  WITH pjf AS (
-  SELECT
-    pjf.annee_id,
-    pjf.type_piece_jointe_id,
-    pjf.intervenant_id,
-    COUNT(*) count,
-    SUM(CASE WHEN validation_id IS NULL THEN 0 ELSE 1 END) validation,
-    SUM(CASE WHEN fichier_id IS NULL THEN 0 ELSE 1 END) fichier
-  FROM
-    tbl_piece_jointe_fournie pjf
-  GROUP BY
-    pjf.annee_id,
-    pjf.type_piece_jointe_id,
-    pjf.intervenant_id
-)
-SELECT
-  NVL( pjd.annee_id, pjf.annee_id ) annee_id,
-  NVL( pjd.type_piece_jointe_id, pjf.type_piece_jointe_id ) type_piece_jointe_id,
-  NVL( pjd.intervenant_id, pjf.intervenant_id ) intervenant_id,
-  CASE WHEN pjd.intervenant_id IS NULL THEN 0 ELSE 1 END demandee,
-  CASE WHEN pjf.fichier = pjf.count THEN 1 ELSE 0 END fournie,
-  CASE WHEN pjf.validation = pjf.count THEN 1 ELSE 0 END validee,
-  NVL(pjd.heures_pour_seuil,0) heures_pour_seuil
-FROM
-  tbl_piece_jointe_demande pjd
-  FULL JOIN pjf ON pjf.type_piece_jointe_id = pjd.type_piece_jointe_id AND pjf.intervenant_id = pjd.intervenant_id;
+-- EM_ELEMENT_PEDAGOGIQUE_FK_IDX
+CREATE INDEX "EM_ELEMENT_PEDAGOGIQUE_FK_IDX" ON "ELEMENT_MODULATEUR" ("ELEMENT_ID");
 
--- V_TBL_PIECE_JOINTE_DEMANDE
-CREATE OR REPLACE FORCE VIEW "V_TBL_PIECE_JOINTE_DEMANDE" ("ANNEE_ID", "INTERVENANT_ID", "TYPE_PIECE_JOINTE_ID", "HEURES_POUR_SEUIL") AS 
-  WITH i_h AS (
-  SELECT
-    s.intervenant_id,
-    sum(vh.heures) heures,
-    sum(ep.taux_fc) fc
-  FROM
-         service               s
-    JOIN type_volume_horaire tvh ON tvh.code = 'PREVU'
-    JOIN volume_horaire       vh ON vh.service_id = s.id 
-                                AND vh.type_volume_horaire_id = tvh.id
-                                AND vh.histo_destruction IS NULL
-    JOIN element_pedagogique ep ON ep.id = s.element_pedagogique_id -- Service sur l'établissement
-  WHERE
-    s.histo_destruction IS NULL
-    AND vh.motif_non_paiement_id IS NULL -- pas de motif de non paiement
-  GROUP BY
-    s.intervenant_id
-)
-SELECT
-  i.annee_id                      annee_id,
-  i.id                            intervenant_id,
-  tpj.id                          type_piece_jointe_id,
-  MAX(COALESCE(i_h.heures, 0))    heures_pour_seuil
-FROM
-            intervenant                 i
+-- EM_MODULATEUR_FK_IDX
+CREATE INDEX "EM_MODULATEUR_FK_IDX" ON "ELEMENT_MODULATEUR" ("MODULATEUR_ID");
 
-  LEFT JOIN dossier                     d ON d.intervenant_id = i.id
-                                         AND d.histo_destruction IS NULL
-                                        
-       JOIN type_piece_jointe_statut tpjs ON tpjs.statut_intervenant_id = i.statut_id
-                                         AND tpjs.histo_destruction IS NULL
-                                         AND i.annee_id BETWEEN COALESCE(tpjs.annee_debut_id,i.annee_id) AND COALESCE(tpjs.annee_fin_id,i.annee_id)
-                                         
-       JOIN type_piece_jointe         tpj ON tpj.id = tpjs.type_piece_jointe_id
-                                         AND tpj.histo_destruction IS NULL
-                                         
-  LEFT JOIN                           i_h ON i_h.intervenant_id = i.id
-WHERE
-  -- Gestion de l'historique
-  i.histo_destruction IS NULL
+-- EPS_FK_IDX
+CREATE INDEX "EPS_FK_IDX" ON "ELEMENT_PEDAGOGIQUE" ("STRUCTURE_ID");
 
-  -- Seuil HETD
-  AND (COALESCE(i_h.heures,0) > COALESCE(tpjs.seuil_hetd,-1))
+-- EP_ANNEE_FK_IDX
+CREATE INDEX "EP_ANNEE_FK_IDX" ON "ELEMENT_PEDAGOGIQUE" ("ANNEE_ID");
 
-  -- En fonction du premier recrutement ou non
-  AND (tpjs.premier_recrutement = 0 OR COALESCE(i.premier_recrutement,0) = 1)
+-- EP_CODE_UN
+CREATE UNIQUE INDEX "EP_CODE_UN" ON "ELEMENT_PEDAGOGIQUE" ("CODE", "HISTO_DESTRUCTION", "ANNEE_ID");
 
-  -- Le RIB n'est demandé QUE s'il est différent!!  
-  AND CASE 
-        WHEN tpjs.changement_rib = 0 OR d.id IS NULL THEN 1
-        ELSE CASE WHEN replace(i.bic, ' ', '') || '-' || replace(i.iban, ' ', '') = d.rib THEN 0 ELSE 1 END
-      END = 1
+-- EP_CODE__UN
+CREATE UNIQUE INDEX "EP_CODE__UN" ON "ELEMENT_PEDAGOGIQUE" ("SOURCE_CODE", "ANNEE_ID");
 
-  -- Filtre FC
-  AND (tpjs.fc = 0 OR i_h.fc > 0)
-GROUP BY
-  i.annee_id,
-  i.id,
-  tpj.id;
+-- EP_DISCIPLINE_FK_IDX
+CREATE INDEX "EP_DISCIPLINE_FK_IDX" ON "ELEMENT_PEDAGOGIQUE" ("DISCIPLINE_ID");
 
--- V_TBL_PIECE_JOINTE_FOURNIE
-CREATE OR REPLACE FORCE VIEW "V_TBL_PIECE_JOINTE_FOURNIE" ("ANNEE_ID", "TYPE_PIECE_JOINTE_ID", "INTERVENANT_ID", "PIECE_JOINTE_ID", "VALIDATION_ID", "FICHIER_ID") AS 
-  SELECT 
-  i.annee_id,
-  pj.type_piece_jointe_id,
-  pj.intervenant_id,
-  pj.id piece_jointe_id,
-  v.id validation_id,
-  f.id fichier_id
-FROM
-            piece_jointe          pj
-       JOIN intervenant            i ON i.id = pj.intervenant_id
-                                    AND i.histo_destruction IS NULL
-       
-       JOIN piece_jointe_fichier pjf ON pjf.piece_jointe_id = pj.id
-       JOIN fichier                f ON f.id = pjf.fichier_id
-                                    AND f.histo_destruction IS NULL
-                                    
-  LEFT JOIN validation             v ON v.id = pj.validation_id
-                                    AND v.histo_destruction IS NULL
-WHERE
-  pj.histo_destruction IS NULL;
+-- EP_ETAPE_FK_IDX
+CREATE INDEX "EP_ETAPE_FK_IDX" ON "ELEMENT_PEDAGOGIQUE" ("ETAPE_ID");
 
--- V_TBL_SERVICE
-CREATE OR REPLACE FORCE VIEW "V_TBL_SERVICE" ("ANNEE_ID", "INTERVENANT_ID", "INTERVENANT_STRUCTURE_ID", "STRUCTURE_ID", "TYPE_INTERVENANT_ID", "TYPE_INTERVENANT_CODE", "PEUT_SAISIR_SERVICE", "ELEMENT_PEDAGOGIQUE_ID", "SERVICE_ID", "ELEMENT_PEDAGOGIQUE_PERIODE_ID", "ETAPE_ID", "TYPE_VOLUME_HORAIRE_ID", "TYPE_VOLUME_HORAIRE_CODE", "ELEMENT_PEDAGOGIQUE_HISTO", "ETAPE_HISTO", "HAS_HEURES_MAUVAISE_PERIODE", "NBVH", "HEURES", "VALIDE") AS 
-  WITH t AS (
-SELECT
-  s.id                                                                                      service_id,
-  s.intervenant_id                                                                          intervenant_id,
-  ep.structure_id                                                                           structure_id,
-  ep.id                                                                                     element_pedagogique_id,
-  ep.periode_id                                                                             element_pedagogique_periode_id,
-  etp.id                                                                                    etape_id,
+-- EP_PERIODE_FK_IDX
+CREATE INDEX "EP_PERIODE_FK_IDX" ON "ELEMENT_PEDAGOGIQUE" ("PERIODE_ID");
 
-  vh.type_volume_horaire_id                                                                 type_volume_horaire_id,
-  vh.heures                                                                                 heures,
-  tvh.code                                                                                  type_volume_horaire_code,
+-- EP_SOURCE_FK_IDX
+CREATE INDEX "EP_SOURCE_FK_IDX" ON "ELEMENT_PEDAGOGIQUE" ("SOURCE_ID");
 
-  CASE WHEN ep.histo_destruction IS NULL THEN 1 ELSE 0 END                                  element_pedagogique_histo,
-  CASE WHEN etp.histo_destruction IS NULL OR cp.id IS NOT NULL THEN 1 ELSE 0 END            etape_histo,
+-- EP_SRC_UN
+CREATE UNIQUE INDEX "EP_SRC_UN" ON "ELEMENT_PEDAGOGIQUE" ("SOURCE_CODE", "ANNEE_ID", "HISTO_DESTRUCTION");
 
-  CASE WHEN ep.periode_id IS NOT NULL THEN
-    SUM( CASE WHEN vh.periode_id <> ep.periode_id THEN 1 ELSE 0 END ) OVER( PARTITION BY vh.service_id, vh.periode_id, vh.type_volume_horaire_id, vh.type_intervention_id )
-  ELSE 0 END has_heures_mauvaise_periode,
+-- ETABLISSEMENT_HCFK_IDX
+CREATE INDEX "ETABLISSEMENT_HCFK_IDX" ON "ETABLISSEMENT" ("HISTO_CREATEUR_ID");
 
-  CASE WHEN v.id IS NULL THEN 0 ELSE 1 END valide
-FROM
-  service                                       s
-  LEFT JOIN element_pedagogique                ep ON ep.id = s.element_pedagogique_id
-  LEFT JOIN etape                             etp ON etp.id = ep.etape_id
-  LEFT JOIN chemin_pedagogique                 cp ON cp.etape_id = etp.id
-                                                 AND cp.element_pedagogique_id = ep.id
-                                                 AND cp.histo_destruction IS NULL
+-- ETABLISSEMENT_HDFK_IDX
+CREATE INDEX "ETABLISSEMENT_HDFK_IDX" ON "ETABLISSEMENT" ("HISTO_DESTRUCTEUR_ID");
 
-       JOIN volume_horaire                     vh ON vh.service_id = s.id
-                                                 AND vh.histo_destruction IS NULL
+-- ETABLISSEMENT_HMFK_IDX
+CREATE INDEX "ETABLISSEMENT_HMFK_IDX" ON "ETABLISSEMENT" ("HISTO_MODIFICATEUR_ID");
 
-       JOIN type_volume_horaire               tvh ON tvh.id = vh.type_volume_horaire_id
+-- ETABLISSEMENT_PK
+CREATE UNIQUE INDEX "ETABLISSEMENT_PK" ON "ETABLISSEMENT" ("ID");
 
-  LEFT JOIN validation_vol_horaire            vvh ON vvh.volume_horaire_id = vh.id
+-- ETABLISSEMENT_SOURCE_FK_IDX
+CREATE INDEX "ETABLISSEMENT_SOURCE_FK_IDX" ON "ETABLISSEMENT" ("SOURCE_ID");
+
+-- ETABLISSEMENT_SOURCE_ID_UN
+CREATE UNIQUE INDEX "ETABLISSEMENT_SOURCE_ID_UN" ON "ETABLISSEMENT" ("SOURCE_CODE");
+
+-- ETAPE_ANNEE_IDX
+CREATE INDEX "ETAPE_ANNEE_IDX" ON "ETAPE" ("ANNEE_ID");
+
+-- ETAPE_CODE_UN
+CREATE UNIQUE INDEX "ETAPE_CODE_UN" ON "ETAPE" ("CODE", "ANNEE_ID", "HISTO_DESTRUCTION");
+
+-- ETAPE_DF_FK_IDX
+CREATE INDEX "ETAPE_DF_FK_IDX" ON "ETAPE" ("DOMAINE_FONCTIONNEL_ID");
+
+-- ETAPE_HCFK_IDX
+CREATE INDEX "ETAPE_HCFK_IDX" ON "ETAPE" ("HISTO_CREATEUR_ID");
+
+-- ETAPE_HDFK_IDX
+CREATE INDEX "ETAPE_HDFK_IDX" ON "ETAPE" ("HISTO_DESTRUCTEUR_ID");
+
+-- ETAPE_HMFK_IDX
+CREATE INDEX "ETAPE_HMFK_IDX" ON "ETAPE" ("HISTO_MODIFICATEUR_ID");
 
-  LEFT JOIN validation                          v ON v.id = vvh.validation_id
-                                                 AND v.histo_destruction IS NULL
-WHERE
-  s.histo_destruction IS NULL
-)
-SELECT
-  i.annee_id                                                                                annee_id,
-  i.id                                                                                      intervenant_id,
-  i.structure_id                                                                            intervenant_structure_id,
-  NVL( t.structure_id, i.structure_id )                                                     structure_id,
-  ti.id                                                                                     type_intervenant_id,
-  ti.code                                                                                   type_intervenant_code,  
-  si.peut_saisir_service                                                                    peut_saisir_service,  
+-- ETAPE_PK
+CREATE UNIQUE INDEX "ETAPE_PK" ON "ETAPE" ("ID");
 
-  t.element_pedagogique_id,
-  t.service_id,
-  t.element_pedagogique_periode_id,
-  t.etape_id,
-  t.type_volume_horaire_id,
-  t.type_volume_horaire_code,
-  t.element_pedagogique_histo,
-  t.etape_histo,
+-- ETAPE_SOURCE_FK_IDX
+CREATE INDEX "ETAPE_SOURCE_FK_IDX" ON "ETAPE" ("SOURCE_ID");
 
-  CASE WHEN SUM(t.has_heures_mauvaise_periode) > 0 THEN 1 ELSE 0 END has_heures_mauvaise_periode,
+-- ETAPE_SRC_UN
+CREATE UNIQUE INDEX "ETAPE_SRC_UN" ON "ETAPE" ("SOURCE_CODE", "HISTO_DESTRUCTION", "ANNEE_ID");
 
-  CASE WHEN type_volume_horaire_id IS NULL THEN 0 ELSE count(*) END nbvh,
-  CASE WHEN type_volume_horaire_id IS NULL THEN 0 ELSE sum(t.heures) END heures,
-  sum(valide) valide
-FROM
-  t
-  JOIN intervenant                              i ON i.id = t.intervenant_id
-  JOIN statut_intervenant                      si ON si.id = i.statut_id
-  JOIN type_intervenant                        ti ON ti.id = si.type_intervenant_id
-GROUP BY
-  i.annee_id,
-  i.id,
-  i.structure_id,
-  t.structure_id,
-  i.structure_id,
-  ti.id,
-  ti.code,
-  si.peut_saisir_service,
-  t.element_pedagogique_id,
-  t.service_id,
-  t.element_pedagogique_periode_id,
-  t.etape_id,
-  t.type_volume_horaire_id,
-  t.type_volume_horaire_code,
-  t.element_pedagogique_histo,
-  t.etape_histo;
+-- ETAPE_STRUCTURE_FK_IDX
+CREATE INDEX "ETAPE_STRUCTURE_FK_IDX" ON "ETAPE" ("STRUCTURE_ID");
 
--- V_TBL_SERVICE_REFERENTIEL
-CREATE OR REPLACE FORCE VIEW "V_TBL_SERVICE_REFERENTIEL" ("ANNEE_ID", "INTERVENANT_ID", "PEUT_SAISIR_SERVICE", "TYPE_VOLUME_HORAIRE_ID", "STRUCTURE_ID", "NBVH", "VALIDE") AS 
-  WITH t AS (
+-- ETAPE_TYPE_FORMATION_FK_IDX
+CREATE INDEX "ETAPE_TYPE_FORMATION_FK_IDX" ON "ETAPE" ("TYPE_FORMATION_ID");
 
-  SELECT
-    i.annee_id,
-    i.id intervenant_id,
-    si.peut_saisir_referentiel peut_saisir_service,
-    vh.type_volume_horaire_id,
-    s.structure_id,
-    CASE WHEN v.id IS NULL THEN 0 ELSE 1 END valide
-  FROM
-              intervenant                     i
-              
-         JOIN statut_intervenant          si ON si.id = i.statut_id
-              
-    LEFT JOIN service_referentiel          s ON s.intervenant_id = i.id
-                                            AND s.histo_destruction IS NULL
-                                        
-    LEFT JOIN volume_horaire_ref          vh ON vh.service_referentiel_id = s.id 
-                                            AND vh.histo_destruction IS NULL
-                                        
-    LEFT JOIN validation_vol_horaire_ref vvh ON vvh.volume_horaire_ref_id = vh.id
-    
-    LEFT JOIN validation                   v ON v.id = vvh.validation_id
-                                            AND v.histo_destruction IS NULL
-  WHERE
-    i.histo_destruction IS NULL
+-- ETAT_VOLUME_HORAIRE_PK
+CREATE UNIQUE INDEX "ETAT_VOLUME_HORAIRE_PK" ON "ETAT_VOLUME_HORAIRE" ("ID");
 
-)  
-SELECT
-  annee_id,
-  intervenant_id,
-  peut_saisir_service,
-  type_volume_horaire_id,
-  structure_id,
-  CASE WHEN type_volume_horaire_id IS NULL THEN 0 ELSE count(*) END nbvh,
-  sum(valide) valide
-FROM
-  t
-WHERE 
-  NOT (structure_id IS NOT NULL AND type_volume_horaire_id IS NULL)
-GROUP BY
-  annee_id,
-  intervenant_id,
-  peut_saisir_service,
-  type_volume_horaire_id,
-  structure_id;
+-- ETAT_VOLUME_HORAIRE__UN
+CREATE UNIQUE INDEX "ETAT_VOLUME_HORAIRE__UN" ON "ETAT_VOLUME_HORAIRE" ("CODE");
 
--- V_TBL_SERVICE_SAISIE
-CREATE OR REPLACE FORCE VIEW "V_TBL_SERVICE_SAISIE" ("ANNEE_ID", "INTERVENANT_ID", "PEUT_SAISIR_SERVICE", "PEUT_SAISIR_REFERENTIEL", "HEURES_SERVICE_PREV", "HEURES_REFERENTIEL_PREV", "HEURES_SERVICE_REAL", "HEURES_REFERENTIEL_REAL") AS 
-  SELECT
-  i.annee_id,
-  i.id intervenant_id,
-  si.peut_saisir_service,
-  si.peut_saisir_referentiel,
-  SUM( CASE WHEN tvhs.code = 'PREVU'   THEN NVL(vh .heures,0) ELSE 0 END ) heures_service_prev,
-  SUM( CASE WHEN tvhs.code = 'PREVU'   THEN NVL(vhr.heures,0) ELSE 0 END ) heures_referentiel_prev,
-  SUM( CASE WHEN tvhs.code = 'REALISE' THEN NVL(vh .heures,0) ELSE 0 END ) heures_service_real,
-  SUM( CASE WHEN tvhs.code = 'REALISE' THEN NVL(vhr.heures,0) ELSE 0 END ) heures_referentiel_real
-FROM
-  intervenant i
-  JOIN statut_intervenant si ON si.id = i.statut_id
-  LEFT JOIN service s ON s.intervenant_id = i.id AND s.histo_destruction IS NULL
-  LEFT JOIN volume_horaire vh ON vh.service_id = s.id AND vh.histo_destruction IS NULL
-  LEFT JOIN type_volume_horaire tvhs ON tvhs.id = vh.type_volume_horaire_id
+-- ETR_ELEMENT_FK_IDX
+CREATE INDEX "ETR_ELEMENT_FK_IDX" ON "ELEMENT_TAUX_REGIMES" ("ELEMENT_PEDAGOGIQUE_ID");
 
-  LEFT JOIN service_referentiel sr ON sr.intervenant_id = i.id AND sr.histo_destruction IS NULL
-  LEFT JOIN volume_horaire_ref vhr ON vhr.service_referentiel_id = sr.id AND vhr.histo_destruction IS NULL
-  LEFT JOIN type_volume_horaire tvhrs ON tvhrs.id = vhr.type_volume_horaire_id
-WHERE
-  i.histo_destruction IS NULL
-GROUP BY
-  i.annee_id,
-  i.id,
-  si.peut_saisir_service,
-  si.peut_saisir_referentiel;
+-- ETR_SOURCE_FK_IDX
+CREATE INDEX "ETR_SOURCE_FK_IDX" ON "ELEMENT_TAUX_REGIMES" ("SOURCE_ID");
 
--- V_TBL_VALIDATION_ENSEIGNEMENT
-CREATE OR REPLACE FORCE VIEW "V_TBL_VALIDATION_ENSEIGNEMENT" ("ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID", "TYPE_VOLUME_HORAIRE_ID", "SERVICE_ID", "VOLUME_HORAIRE_ID", "VALIDATION_ID") AS 
-  SELECT DISTINCT
-  i.annee_id,
-  i.id intervenant_id,
-  CASE WHEN rsv.priorite = 'affectation' THEN
-    COALESCE( i.structure_id, ep.structure_id )
-  ELSE
-    COALESCE( ep.structure_id, i.structure_id )
-  END structure_id,
-  vh.type_volume_horaire_id,
-  s.id service_id,
-  vh.id volume_horaire_id,
-  v.id validation_id
-FROM
-  service s
-  JOIN volume_horaire vh ON vh.service_id = s.id AND vh.histo_destruction IS NULL
-  JOIN intervenant i ON i.id = s.intervenant_id AND i.histo_destruction IS NULL
-  JOIN statut_intervenant si ON si.id = i.statut_id
-  JOIN regle_structure_validation rsv ON rsv.type_intervenant_id = si.type_intervenant_id AND rsv.type_volume_horaire_id = vh.type_volume_horaire_id
-  LEFT JOIN element_pedagogique ep ON ep.id = s.element_pedagogique_id
-  LEFT JOIN validation_vol_horaire vvh ON vvh.volume_horaire_id = vh.id
-  LEFT JOIN validation v ON v.id = vvh.validation_id AND v.histo_destruction IS NULL
-WHERE
-  s.histo_destruction IS NULL;
+-- FICHIER_HCFK_IDX
+CREATE INDEX "FICHIER_HCFK_IDX" ON "FICHIER" ("HISTO_CREATEUR_ID");
 
--- V_TBL_VALIDATION_REFERENTIEL
-CREATE OR REPLACE FORCE VIEW "V_TBL_VALIDATION_REFERENTIEL" ("ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID", "TYPE_VOLUME_HORAIRE_ID", "SERVICE_REFERENTIEL_ID", "VOLUME_HORAIRE_REF_ID", "VALIDATION_ID") AS 
-  SELECT DISTINCT
-  i.annee_id,
-  i.id intervenant_id,
-  CASE WHEN rsv.priorite = 'affectation' THEN
-    COALESCE( i.structure_id, s.structure_id )
-  ELSE
-    COALESCE( s.structure_id, i.structure_id )
-  END structure_id,
-  vh.type_volume_horaire_id,
-  s.id service_referentiel_id,
-  vh.id volume_horaire_ref_id,
-  v.id validation_id
-FROM
-  service_referentiel s
-  JOIN volume_horaire_ref vh ON vh.service_referentiel_id = s.id AND vh.histo_destruction IS NULL
-  JOIN intervenant i ON i.id = s.intervenant_id AND i.histo_destruction IS NULL
-  JOIN statut_intervenant si ON si.id = i.statut_id
-  JOIN regle_structure_validation rsv ON rsv.type_intervenant_id = si.type_intervenant_id AND rsv.type_volume_horaire_id = vh.type_volume_horaire_id
-  LEFT JOIN validation_vol_horaire_ref vvh ON vvh.volume_horaire_ref_id = vh.id
-  LEFT JOIN validation v ON v.id = vvh.validation_id AND v.histo_destruction IS NULL
-WHERE
-  s.histo_destruction IS NULL;
+-- FICHIER_HDFK_IDX
+CREATE INDEX "FICHIER_HDFK_IDX" ON "FICHIER" ("HISTO_DESTRUCTEUR_ID");
 
--- V_TBL_VOLUME_HORAIRE
-CREATE OR REPLACE FORCE VIEW "V_TBL_VOLUME_HORAIRE" ("ANNEE_ID", "INTERVENANT_ID", "INTERVENANT_STRUCTURE_ID", "STRUCTURE_ID", "TYPE_INTERVENANT_ID", "SERVICE_ID", "VOLUME_HORAIRE_ID", "TYPE_INTERVENTION_ID", "MOTIF_NON_PAIEMENT_ID", "VOLUME_HORAIRE_PERIODE_ID", "TYPE_VOLUME_HORAIRE_ID", "ETAT_VOLUME_HORAIRE_ID", "ELEMENT_PEDAGOGIQUE_ID", "ELEMENT_PEDAGOGIQUE_PERIODE_ID", "ETAPE_ID", "TYPE_INTERVENANT_CODE", "TYPE_VOLUME_HORAIRE_CODE", "ETAT_VOLUME_HORAIRE_CODE", "PEUT_SAISIR_SERVICE", "HEURES", "ELEMENT_PEDAGOGIQUE_HISTO", "ETAPE_HISTO", "PERIODE_CORRESP") AS 
-  WITH has_cp AS (
-SELECT
-  etape_id
-FROM
-  chemin_pedagogique cp
-WHERE
-  cp.histo_destruction IS NULL
-GROUP BY
-  etape_id
-)
-SELECT
-  i.annee_id                                                                                annee_id,
-  i.id                                                                                      intervenant_id,
-  i.structure_id                                                                            intervenant_structure_id,
-  NVL(ep.structure_id, i.structure_id)                                                      structure_id,
-  ti.id                                                                                     type_intervenant_id,
-  s.id                                                                                      service_id,
-  vh.id                                                                                     volume_horaire_id,
-  vh.type_intervention_id                                                                   type_intervention_id,
-  vh.motif_non_paiement_id                                                                  motif_non_paiement_id,
-  vh.periode_id                                                                             volume_horaire_periode_id,
-  tvh.id                                                                                    type_volume_horaire_id,
-  evh.id                                                                                    etat_volume_horaire_id,
-  ep.id                                                                                     element_pedagogique_id,
-  ep.periode_id                                                                             element_pedagogique_periode_id,
-  etp.id                                                                                    etape_id,
+-- FICHIER_HMFK_IDX
+CREATE INDEX "FICHIER_HMFK_IDX" ON "FICHIER" ("HISTO_MODIFICATEUR_ID");
 
-  ti.code                                                                                   type_intervenant_code,  
-  tvh.code                                                                                  type_volume_horaire_code,
-  evh.code                                                                                  etat_volume_horaire_code,
-  si.peut_saisir_service                                                                    peut_saisir_service,
-  vh.heures                                                                                 heures,
+-- FICHIER_PK
+CREATE UNIQUE INDEX "FICHIER_PK" ON "FICHIER" ("ID");
 
-  CASE WHEN ep.histo_destruction IS NULL THEN 1 ELSE 0 END                                  element_pedagogique_histo,
-  CASE WHEN etp.histo_destruction IS NULL OR has_cp.etape_id IS NOT NULL THEN 1 ELSE 0 END  etape_histo,
-  CASE WHEN ep.periode_id IS NOT NULL AND vh.periode_id <> ep.periode_id THEN 0 ELSE 1 END  periode_corresp
+-- FICHIER_VALID_FK_IDX
+CREATE INDEX "FICHIER_VALID_FK_IDX" ON "FICHIER" ("VALIDATION_ID");
 
-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 service                                  s ON s.intervenant_id = i.id 
-                                                 AND s.histo_destruction IS NULL
-  JOIN element_pedagogique                     ep ON ep.id = s.element_pedagogique_id
-  JOIN etape                                  etp ON etp.id = ep.etape_id
-  JOIN volume_horaire                          vh ON vh.service_id = s.id 
-                                                 AND vh.histo_destruction IS NULL
-  JOIN type_volume_horaire                    tvh ON tvh.id = vh.type_volume_horaire_id
-  JOIN v_volume_horaire_etat                  vhe ON vhe.volume_horaire_id = vh.id
-  JOIN etat_volume_horaire                    evh ON evh.id = vhe.etat_volume_horaire_id
-  LEFT JOIN has_cp                                ON has_cp.etape_id = etp.id
-WHERE
-  i.histo_destruction IS NULL;
+-- FONCTION_REFERENTIEL_CODE_UN
+CREATE UNIQUE INDEX "FONCTION_REFERENTIEL_CODE_UN" ON "FONCTION_REFERENTIEL" ("CODE");
 
--- V_TBL_WORKFLOW
-CREATE OR REPLACE FORCE VIEW "V_TBL_WORKFLOW" ("ETAPE_CODE", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID", "OBJECTIF", "REALISATION") AS 
-  WITH pj AS (
-  SELECT 
-    annee_id,
-    intervenant_id,
-    SUM(demandee) demandees,
-    SUM(fournie)  fournies,
-    SUM(validee)  validees
-  FROM 
-    tbl_piece_jointe
-  WHERE 
-    1 = OSE_WORKFLOW.match_intervenant(intervenant_id)
-    AND demandee > 0
-  GROUP BY
-    annee_id,
-    intervenant_id
-),
-mep AS (
-  SELECT
-    annee_id,
-    intervenant_id,
-    structure_id,
-    SUM(heures_a_payer / heures_a_payer_pond) sap,
-    SUM(heures_demandees) dmep,
-    SUM(heures_payees) mep
-    --COUNT(*)  sap,
-    --SUM(CASE WHEN mise_en_paiement_id IS NULL THEN 0 ELSE 1 END) dmep,
-    --SUM(CASE WHEN periode_paiement_id IS NULL THEN 0 ELSE 1 END) mep
-  FROM
-    tbl_paiement
-  WHERE
-    1 = OSE_WORKFLOW.match_intervenant(intervenant_id)
-  GROUP BY
-    annee_id,
-    intervenant_id,
-    structure_id
-)
-SELECT
-  e.code                                                    etape_code,
-  d.annee_id                                                annee_id,
-  d.intervenant_id                                          intervenant_id,
-  null                                                      structure_id,
-  1                                                         objectif,
-  CASE
-    WHEN e.code = 'DONNEES_PERSO_SAISIE' THEN
-      CASE WHEN d.dossier_id IS NULL THEN 0 ELSE 1 END
-      
-    WHEN e.code = 'DONNEES_PERSO_VALIDATION' THEN
-      CASE WHEN d.validation_id IS NULL THEN 0 ELSE 1 END
-      
-  END                                                       realisation
-FROM
-  tbl_dossier d
-  JOIN (       
-          SELECT 'DONNEES_PERSO_SAISIE'     code FROM dual 
-    UNION SELECT 'DONNEES_PERSO_VALIDATION' code FROM dual
-  ) e ON 1=1
-WHERE
-  d. peut_saisir_dossier = 1
-  AND 1 = OSE_WORKFLOW.match_intervenant(d.intervenant_id)
+-- FONCTION_REFERENTIEL_HCFK_IDX
+CREATE INDEX "FONCTION_REFERENTIEL_HCFK_IDX" ON "FONCTION_REFERENTIEL" ("HISTO_CREATEUR_ID");
 
-UNION ALL  
+-- FONCTION_REFERENTIEL_HDFK_IDX
+CREATE INDEX "FONCTION_REFERENTIEL_HDFK_IDX" ON "FONCTION_REFERENTIEL" ("HISTO_DESTRUCTEUR_ID");
 
-SELECT
-  e.code                                                    etape_code,
-  tss.annee_id                                              annee_id,
-  tss.intervenant_id                                        intervenant_id,
-  NULL                                                      structure_id,
-  1                                                         objectif,
-  CASE
-    WHEN e.code = 'SERVICE_SAISIE' THEN
-      CASE WHEN tss.heures_service_prev + tss.heures_referentiel_prev > 0 THEN 1 ELSE 0 END
+-- FONCTION_REFERENTIEL_HMFK_IDX
+CREATE INDEX "FONCTION_REFERENTIEL_HMFK_IDX" ON "FONCTION_REFERENTIEL" ("HISTO_MODIFICATEUR_ID");
 
-    WHEN e.code = 'SERVICE_SAISIE_REALISE' THEN
-      CASE WHEN tss.heures_service_real + tss.heures_referentiel_real > 0 THEN 1 ELSE 0 END
+-- FONCTION_REFERENTIEL_PK
+CREATE UNIQUE INDEX "FONCTION_REFERENTIEL_PK" ON "FONCTION_REFERENTIEL" ("ID");
 
-  END                                                       realisation
-FROM
-  TBL_SERVICE_SAISIE tss
-  JOIN (       
-          SELECT 'SERVICE_SAISIE'                 code FROM dual
-    UNION SELECT 'SERVICE_SAISIE_REALISE'         code FROM dual
-  ) e ON 1=1
-WHERE
-  (tss.peut_saisir_service = 1 OR tss.peut_saisir_referentiel = 1)
-  AND 1 = OSE_WORKFLOW.match_intervenant(tss.intervenant_id)
-  
-UNION ALL
+-- FONCTION_REFERENTIEL_SFK_IDX
+CREATE INDEX "FONCTION_REFERENTIEL_SFK_IDX" ON "FONCTION_REFERENTIEL" ("STRUCTURE_ID");
 
-SELECT
-  CASE 
-    WHEN tvh.code = 'PREVU'   THEN 'SERVICE_VALIDATION' 
-    WHEN tvh.code = 'REALISE' THEN 'SERVICE_VALIDATION_REALISE'
-  END                                                        etape_code,
-  tve.annee_id                                               annee_id,
-  tve.intervenant_id                                         intervenant_id,
-  tve.structure_id                                           structure_id,
-  COUNT(*)                                                   objectif,
-  SUM(CASE WHEN tve.validation_id IS NOT NULL THEN 1 ELSE 0 END) realisation
-FROM
-  tbl_validation_enseignement tve
-  JOIN type_volume_horaire tvh ON tvh.id = tve.type_volume_horaire_id
-WHERE
-  1 = OSE_WORKFLOW.match_intervenant(tve.intervenant_id)
-GROUP BY
-  tve.annee_id,
-  tve.intervenant_id,
-  tve.structure_id,
-  tvh.code
+-- FONC_REF_DOMAINE_FONCT_FK_IDX
+CREATE INDEX "FONC_REF_DOMAINE_FONCT_FK_IDX" ON "FONCTION_REFERENTIEL" ("DOMAINE_FONCTIONNEL_ID");
 
-UNION ALL
+-- FORMULE_RESULTAT_PK
+CREATE UNIQUE INDEX "FORMULE_RESULTAT_PK" ON "FORMULE_RESULTAT" ("ID");
 
-SELECT
-  CASE 
-    WHEN tvh.code = 'PREVU'   THEN 'REFERENTIEL_VALIDATION' 
-    WHEN tvh.code = 'REALISE' THEN 'REFERENTIEL_VALIDATION_REALISE'
-  END                                                        etape_code,
-  tvr.annee_id                                               annee_id,
-  tvr.intervenant_id                                         intervenant_id,
-  tvr.structure_id                                           structure_id,
-  count(*)                                                   objectif,
-  SUM(CASE WHEN tvr.validation_id IS NOT NULL THEN 1 ELSE 0 END) realisation
-FROM
-  tbl_validation_referentiel tvr
-  JOIN type_volume_horaire tvh ON tvh.id = tvr.type_volume_horaire_id
-WHERE
-  1 = OSE_WORKFLOW.match_intervenant(tvr.intervenant_id)
-GROUP BY
-  tvr.annee_id,
-  tvr.intervenant_id,
-  tvr.structure_id,
-  tvh.code
+-- FORMULE_RESULTAT_SERVICE_PK
+CREATE UNIQUE INDEX "FORMULE_RESULTAT_SERVICE_PK" ON "FORMULE_RESULTAT_SERVICE" ("ID");
 
-UNION ALL
+-- FORMULE_RESULTAT_TYPE_INT_IDX
+CREATE INDEX "FORMULE_RESULTAT_TYPE_INT_IDX" ON "FORMULE_RESULTAT" ("TYPE_INTERVENANT_CODE");
 
-SELECT
-  e.code                                                    etape_code,
-  pj.annee_id                                               annee_id,
-  pj.intervenant_id                                         intervenant_id,
-  null                                                      structure_id,
-  CASE
-    WHEN e.code = 'PJ_SAISIE' THEN pj.demandees
-    WHEN e.code = 'PJ_VALIDATION' THEN pj.demandees
-  END                                                       objectif,
-  CASE
-    WHEN e.code = 'PJ_SAISIE' THEN pj.fournies
-    WHEN e.code = 'PJ_VALIDATION' THEN pj.validees
-  END                                                       realisation
-FROM
-  pj
-  JOIN (       
-          SELECT 'PJ_SAISIE'      code FROM dual 
-    UNION SELECT 'PJ_VALIDATION'  code FROM dual
-  ) e ON (
-       (e.code = 'PJ_SAISIE'     AND pj.demandees > 0)
-    OR (e.code = 'PJ_VALIDATION' AND pj.fournies  > 0)
-  )
-  
-UNION ALL
+-- FORMULE_RESULTAT_VH_PK
+CREATE UNIQUE INDEX "FORMULE_RESULTAT_VH_PK" ON "FORMULE_RESULTAT_VH" ("ID");
 
-SELECT
-  ta.code                                                   etape_code,
-  a.annee_id                                                annee_id,
-  a.intervenant_id                                          intervenant_id,
-  a.structure_id                                            structure_id,
-  1                                                         objectif,
-  CASE WHEN a.agrement_id IS NULL THEN 0 ELSE 1 END         realisation
-FROM 
-  tbl_agrement a
-  JOIN type_agrement ta ON ta.id = a.type_agrement_id
-WHERE
-  1 = OSE_WORKFLOW.match_intervenant(a.intervenant_id)
-  
-UNION ALL
+-- FORMULE_RESULTAT_VH_REF_PK
+CREATE UNIQUE INDEX "FORMULE_RESULTAT_VH_REF_PK" ON "FORMULE_RESULTAT_VH_REF" ("ID");
 
-SELECT 
-  'CLOTURE_REALISE'                                         etape_code,
-  c.annee_id                                                annee_id,
-  c.intervenant_id                                          intervenant_id,
-  null                                                      structure_id,
-  1                                                         objectif,
-  c.cloture                                                 realisation
-FROM
-  tbl_cloture_realise c
-WHERE 
-  c.peut_cloturer_saisie = 1
-  AND 1 = OSE_WORKFLOW.match_intervenant(c.intervenant_id)
+-- FORMULE_RESULTAT__UN
+CREATE UNIQUE INDEX "FORMULE_RESULTAT__UN" ON "FORMULE_RESULTAT" ("INTERVENANT_ID", "TYPE_VOLUME_HORAIRE_ID", "ETAT_VOLUME_HORAIRE_ID");
 
-UNION ALL
+-- FRES_EVH_FK_IDX
+CREATE INDEX "FRES_EVH_FK_IDX" ON "FORMULE_RESULTAT" ("ETAT_VOLUME_HORAIRE_ID");
 
-SELECT
-  e.code                                                    etape_code,
-  mep.annee_id                                              annee_id,
-  mep.intervenant_id                                        intervenant_id,
-  mep.structure_id                                          structure_id,
-  CASE
-    WHEN e.code = 'DEMANDE_MEP' THEN mep.sap
-    WHEN e.code = 'SAISIE_MEP' THEN mep.dmep
-  END                                                       objectif,
-  CASE
-    WHEN e.code = 'DEMANDE_MEP' THEN mep.dmep
-    WHEN e.code = 'SAISIE_MEP' THEN mep.mep
-  END                                                       realisation
-FROM
-  mep
-  JOIN (       
-          SELECT 'DEMANDE_MEP'  code FROM dual 
-    UNION SELECT 'SAISIE_MEP'   code FROM dual
-  ) e ON (
-       (e.code = 'DEMANDE_MEP' AND mep.sap > 0)
-    OR (e.code = 'SAISIE_MEP'  AND mep.dmep > 0)
-  )
-  
-  
-UNION ALL
+-- FRES_INTERVENANT_FK_IDX
+CREATE INDEX "FRES_INTERVENANT_FK_IDX" ON "FORMULE_RESULTAT" ("INTERVENANT_ID");
 
-SELECT
-  'CONTRAT'                                                 etape_code,
-  annee_id                                                  annee_id,
-  intervenant_id                                            intervenant_id,
-  structure_id                                              structure_id,
-  nbvh                                                      objectif,
-  edite                                                     realisation
-FROM 
-  tbl_contrat c
-WHERE
-  peut_avoir_contrat = 1
-  AND nbvh > 0
-  AND 1 = OSE_WORKFLOW.match_intervenant(c.intervenant_id);
+-- FRES_TVH_FK_IDX
+CREATE INDEX "FRES_TVH_FK_IDX" ON "FORMULE_RESULTAT" ("TYPE_VOLUME_HORAIRE_ID");
 
--- V_TOTAL_DEMANDE_MEP_STRUCTURE
-CREATE OR REPLACE FORCE VIEW "V_TOTAL_DEMANDE_MEP_STRUCTURE" ("INTERVENANT_ID", "STRUCTURE_ID", "TOTAL_HEURES_MEP") AS 
-  with mep as (
-  -- enseignements
-  select 
-    fr.intervenant_id, 
-    nvl(ep.structure_id, i.structure_id) structure_id, 
-    nvl(mep.heures, 0) mep_heures
-  from mise_en_paiement mep
-  join formule_resultat_service frs on mep.formule_res_service_id = frs.id --and mep.date_mise_en_paiement is null -- date_mise_en_paiement is null <=> demande
-  join formule_resultat fr on frs.formule_resultat_id = fr.id
-  join intervenant i on fr.intervenant_id = i.id
-  join service s on frs.service_id = s.id
-  left join element_pedagogique ep on s.element_pedagogique_id = ep.id and ep.histo_destruction IS NULL
-  where mep.histo_destruction IS NULL
-  union all
-  -- referentiel
-  select 
-    fr.intervenant_id, 
-    s.structure_id,
-    nvl(mep.heures, 0) mep_heures
-  from mise_en_paiement mep
-  join formule_resultat_service_ref frs on mep.formule_res_service_ref_id = frs.id --and mep.date_mise_en_paiement is null -- date_mise_en_paiement is null <=> demande
-  join formule_resultat fr on frs.formule_resultat_id = fr.id
-  join intervenant i on fr.intervenant_id = i.id
-  join service_referentiel s on frs.service_referentiel_id = s.id
-  where mep.histo_destruction IS NULL
-)
-select intervenant_id, structure_id, sum(nvl(mep_heures, 0)) total_heures_mep from mep
-group by intervenant_id, structure_id;
+-- FRR_FORMULE_RESULTAT_FK_IDX
+CREATE INDEX "FRR_FORMULE_RESULTAT_FK_IDX" ON "FORMULE_RESULTAT_SERVICE_REF" ("FORMULE_RESULTAT_ID");
 
--- V_VALIDATION_MISE_EN_PAIEMENT
-CREATE OR REPLACE FORCE VIEW "V_VALIDATION_MISE_EN_PAIEMENT" ("VALIDATION_ID", "MISE_EN_PAIEMENT_ID") AS 
-  SELECT
-  vvh.validation_id,
-  mep.id mise_en_paiement_id
-FROM
-  validation_vol_horaire vvh
-  JOIN volume_horaire vh ON vh.id = vvh.volume_horaire_id
-  JOIN formule_resultat_service frs ON frs.service_id = vh.service_id
-  JOIN mise_en_paiement mep ON mep.formule_res_service_id = frs.id
-  
-UNION
+-- FRSR_PK
+CREATE UNIQUE INDEX "FRSR_PK" ON "FORMULE_RESULTAT_SERVICE_REF" ("ID");
 
-SELECT
-  vvh.validation_id,
-  mep.id mise_en_paiement_id
-FROM
-  validation_vol_horaire_ref vvh
-  JOIN volume_horaire_ref vh ON vh.id = vvh.volume_horaire_ref_id
-  JOIN formule_resultat_service_ref frs ON frs.service_referentiel_id = vh.service_referentiel_id
-  JOIN mise_en_paiement mep ON mep.formule_res_service_ref_id = frs.id;
+-- FRSR_SR_FK_IDX
+CREATE INDEX "FRSR_SR_FK_IDX" ON "FORMULE_RESULTAT_SERVICE_REF" ("SERVICE_REFERENTIEL_ID");
 
--- V_VOLUME_HORAIRE_ETAT
-CREATE OR REPLACE FORCE VIEW "V_VOLUME_HORAIRE_ETAT" ("VOLUME_HORAIRE_ID", "ETAT_VOLUME_HORAIRE_ID") AS 
-  SELECT 
-  vh.id volume_horaire_id,
-  evh.id etat_volume_horaire_id
-FROM
-  volume_horaire vh
-  LEFT JOIN contrat c ON c.id = vh.contrat_id AND c.histo_destruction IS NULL
-  LEFT JOIN validation cv ON cv.id = c.validation_id AND cv.histo_destruction IS NULL
-  JOIN etat_volume_horaire evh ON evh.code = CASE
-    WHEN c.date_retour_signe IS NOT NULL THEN 'contrat-signe'
-    WHEN cv.id IS NOT NULL THEN 'contrat-edite'
-    WHEN EXISTS(
-      SELECT * FROM validation v JOIN validation_vol_horaire vvh ON vvh.validation_id = v.id
-      WHERE vvh.volume_horaire_id = vh.id AND v.histo_destruction IS NULL
-    ) THEN 'valide'
-    ELSE 'saisi'
-    END;
+-- FRS_FORMULE_RESULTAT_FK_IDX
+CREATE INDEX "FRS_FORMULE_RESULTAT_FK_IDX" ON "FORMULE_RESULTAT_SERVICE" ("FORMULE_RESULTAT_ID");
 
--- V_VOLUME_HORAIRE_REF_ETAT
-CREATE OR REPLACE FORCE VIEW "V_VOLUME_HORAIRE_REF_ETAT" ("VOLUME_HORAIRE_REF_ID", "ETAT_VOLUME_HORAIRE_ID") AS 
-  SELECT 
-  vhr.id volume_horaire_ref_id,
-  evh.id etat_volume_horaire_id
-FROM
-  volume_horaire_ref vhr
-  JOIN etat_volume_horaire evh ON evh.code = CASE
-    WHEN EXISTS(
-      SELECT * FROM validation v JOIN validation_vol_horaire_ref vvhr ON vvhr.validation_id = v.id
-      WHERE vvhr.volume_horaire_ref_id = vhr.id AND v.histo_destruction IS NULL
-    ) THEN 'valide'
-    ELSE 'saisi'
-  END;
+-- FRS_SERVICE_FK_IDX
+CREATE INDEX "FRS_SERVICE_FK_IDX" ON "FORMULE_RESULTAT_SERVICE" ("SERVICE_ID");
+
+-- FRVHR_FORMULE_RESULTAT_FK_IDX
+CREATE INDEX "FRVHR_FORMULE_RESULTAT_FK_IDX" ON "FORMULE_RESULTAT_VH_REF" ("FORMULE_RESULTAT_ID");
+
+-- FRVHR_VHR_FK_IDX
+CREATE INDEX "FRVHR_VHR_FK_IDX" ON "FORMULE_RESULTAT_VH_REF" ("VOLUME_HORAIRE_REF_ID");
+
+-- FRVH_FORMULE_RESULTAT_FK_IDX
+CREATE INDEX "FRVH_FORMULE_RESULTAT_FK_IDX" ON "FORMULE_RESULTAT_VH" ("FORMULE_RESULTAT_ID");
+
+-- FRVH_VOLUME_HORAIRE_FK_IDX
+CREATE INDEX "FRVH_VOLUME_HORAIRE_FK_IDX" ON "FORMULE_RESULTAT_VH" ("VOLUME_HORAIRE_ID");
+
+-- GRADE_CORPS_FK_IDX
+CREATE INDEX "GRADE_CORPS_FK_IDX" ON "GRADE" ("CORPS_ID");
+
+-- GRADE_HCFK_IDX
+CREATE INDEX "GRADE_HCFK_IDX" ON "GRADE" ("HISTO_CREATEUR_ID");
+
+-- GRADE_HDFK_IDX
+CREATE INDEX "GRADE_HDFK_IDX" ON "GRADE" ("HISTO_DESTRUCTEUR_ID");
+
+-- GRADE_HMFK_IDX
+CREATE INDEX "GRADE_HMFK_IDX" ON "GRADE" ("HISTO_MODIFICATEUR_ID");
+
+-- GRADE_PK
+CREATE UNIQUE INDEX "GRADE_PK" ON "GRADE" ("ID");
+
+-- GROUPE_EP_FK_IDX
+CREATE INDEX "GROUPE_EP_FK_IDX" ON "GROUPE" ("ELEMENT_PEDAGOGIQUE_ID");
+
+-- GROUPE_HCFK_IDX
+CREATE INDEX "GROUPE_HCFK_IDX" ON "GROUPE" ("HISTO_CREATEUR_ID");
+
+-- GROUPE_HDFK_IDX
+CREATE INDEX "GROUPE_HDFK_IDX" ON "GROUPE" ("HISTO_DESTRUCTEUR_ID");
+
+-- GROUPE_HMFK_IDX
+CREATE INDEX "GROUPE_HMFK_IDX" ON "GROUPE" ("HISTO_MODIFICATEUR_ID");
+
+-- GROUPE_PK
+CREATE UNIQUE INDEX "GROUPE_PK" ON "GROUPE" ("ID");
+
+-- GROUPE_TI_FK_IDX
+CREATE INDEX "GROUPE_TI_FK_IDX" ON "GROUPE" ("TYPE_INTERVENTION_ID");
+
+-- GROUPE_TYPE_FORMATION_HCFK_IDX
+CREATE INDEX "GROUPE_TYPE_FORMATION_HCFK_IDX" ON "GROUPE_TYPE_FORMATION" ("HISTO_CREATEUR_ID");
+
+-- GROUPE_TYPE_FORMATION_HDFK_IDX
+CREATE INDEX "GROUPE_TYPE_FORMATION_HDFK_IDX" ON "GROUPE_TYPE_FORMATION" ("HISTO_DESTRUCTEUR_ID");
+
+-- GROUPE_TYPE_FORMATION_HMFK_IDX
+CREATE INDEX "GROUPE_TYPE_FORMATION_HMFK_IDX" ON "GROUPE_TYPE_FORMATION" ("HISTO_MODIFICATEUR_ID");
+
+-- GROUPE_TYPE_FORMATION_PK
+CREATE UNIQUE INDEX "GROUPE_TYPE_FORMATION_PK" ON "GROUPE_TYPE_FORMATION" ("ID");
+
+-- GROUPE__UN
+CREATE UNIQUE INDEX "GROUPE__UN" ON "GROUPE" ("ELEMENT_PEDAGOGIQUE_ID", "HISTO_DESTRUCTEUR_ID", "TYPE_INTERVENTION_ID");
+
+-- GTYPE_FORMATION_SOURCE_FK_IDX
+CREATE INDEX "GTYPE_FORMATION_SOURCE_FK_IDX" ON "GROUPE_TYPE_FORMATION" ("SOURCE_ID");
+
+-- GTYPE_FORMATION_SOURCE_UN
+CREATE UNIQUE INDEX "GTYPE_FORMATION_SOURCE_UN" ON "GROUPE_TYPE_FORMATION" ("SOURCE_CODE");
+
+-- HISTO_INTERVENANT_SERVICE__UN
+CREATE UNIQUE INDEX "HISTO_INTERVENANT_SERVICE__UN" ON "HISTO_INTERVENANT_SERVICE" ("INTERVENANT_ID", "TYPE_VOLUME_HORAIRE_ID", "REFERENTIEL");
+
+-- HISTO_SERVICE_MODIFICATION_PK
+CREATE UNIQUE INDEX "HISTO_SERVICE_MODIFICATION_PK" ON "HISTO_INTERVENANT_SERVICE" ("ID");
+
+-- HSM_INTERVENANT_FK_IDX
+CREATE INDEX "HSM_INTERVENANT_FK_IDX" ON "HISTO_INTERVENANT_SERVICE" ("INTERVENANT_ID");
+
+-- HSM_TYPE_VOLUME_HORAIRE_FK_IDX
+CREATE INDEX "HSM_TYPE_VOLUME_HORAIRE_FK_IDX" ON "HISTO_INTERVENANT_SERVICE" ("TYPE_VOLUME_HORAIRE_ID");
+
+-- HSM_UTILISATEUR_FK_IDX
+CREATE INDEX "HSM_UTILISATEUR_FK_IDX" ON "HISTO_INTERVENANT_SERVICE" ("HISTO_MODIFICATEUR_ID");
+
+-- IMPORT_TABLES_PK
+CREATE UNIQUE INDEX "IMPORT_TABLES_PK" ON "IMPORT_TABLES" ("TABLE_NAME");
+
+-- INDICATEUR_PK
+CREATE UNIQUE INDEX "INDICATEUR_PK" ON "INDICATEUR" ("ID");
+
+-- INDIC_DIFF_DOSSIER_INT_FK_IDX
+CREATE INDEX "INDIC_DIFF_DOSSIER_INT_FK_IDX" ON "INDIC_MODIF_DOSSIER" ("INTERVENANT_ID");
+
+-- INDIC_MODIF_DOSSIER_HCFK_IDX
+CREATE INDEX "INDIC_MODIF_DOSSIER_HCFK_IDX" ON "INDIC_MODIF_DOSSIER" ("HISTO_CREATEUR_ID");
+
+-- INDIC_MODIF_DOSSIER_HDFK_IDX
+CREATE INDEX "INDIC_MODIF_DOSSIER_HDFK_IDX" ON "INDIC_MODIF_DOSSIER" ("HISTO_DESTRUCTEUR_ID");
+
+-- INDIC_MODIF_DOSSIER_HMFK_IDX
+CREATE INDEX "INDIC_MODIF_DOSSIER_HMFK_IDX" ON "INDIC_MODIF_DOSSIER" ("HISTO_MODIFICATEUR_ID");
+
+-- INDIC_MODIF_DOSSIER_PK
+CREATE UNIQUE INDEX "INDIC_MODIF_DOSSIER_PK" ON "INDIC_MODIF_DOSSIER" ("ID");
+
+-- INTERVENANTS_CIVILITES_FK_IDX
+CREATE INDEX "INTERVENANTS_CIVILITES_FK_IDX" ON "INTERVENANT" ("CIVILITE_ID");
+
+-- INTERVENANT_ANNEE_FK_IDX
+CREATE INDEX "INTERVENANT_ANNEE_FK_IDX" ON "INTERVENANT" ("ANNEE_ID");
+
+-- INTERVENANT_CODE_UN
+CREATE UNIQUE INDEX "INTERVENANT_CODE_UN" ON "INTERVENANT" ("CODE", "ANNEE_ID");
+
+-- INTERVENANT_DEP_NAISSANCE_IDX
+CREATE INDEX "INTERVENANT_DEP_NAISSANCE_IDX" ON "INTERVENANT" ("DEP_NAISSANCE_ID");
+
+-- INTERVENANT_DISCIPLINE_FK_IDX
+CREATE INDEX "INTERVENANT_DISCIPLINE_FK_IDX" ON "INTERVENANT" ("DISCIPLINE_ID");
+
+-- INTERVENANT_GRADE_FK_IDX
+CREATE INDEX "INTERVENANT_GRADE_FK_IDX" ON "INTERVENANT" ("GRADE_ID");
+
+-- INTERVENANT_HCFK_IDX
+CREATE INDEX "INTERVENANT_HCFK_IDX" ON "INTERVENANT" ("HISTO_CREATEUR_ID");
+
+-- INTERVENANT_HDFK_IDX
+CREATE INDEX "INTERVENANT_HDFK_IDX" ON "INTERVENANT" ("HISTO_DESTRUCTEUR_ID");
+
+-- INTERVENANT_HMFK_IDX
+CREATE INDEX "INTERVENANT_HMFK_IDX" ON "INTERVENANT" ("HISTO_MODIFICATEUR_ID");
+
+-- INTERVENANT_NOM_PATRO_IDX
+CREATE INDEX "INTERVENANT_NOM_PATRO_IDX" ON "INTERVENANT" ("NOM_PATRONYMIQUE");
+
+-- INTERVENANT_NOM_USUEL_IDX
+CREATE INDEX "INTERVENANT_NOM_USUEL_IDX" ON "INTERVENANT" ("NOM_USUEL");
+
+-- INTERVENANT_PAYS_NAISSANCE_IDX
+CREATE INDEX "INTERVENANT_PAYS_NAISSANCE_IDX" ON "INTERVENANT" ("PAYS_NAISSANCE_ID");
+
+-- INTERVENANT_PAYS_NAT_IDX
+CREATE INDEX "INTERVENANT_PAYS_NAT_IDX" ON "INTERVENANT" ("PAYS_NATIONALITE_ID");
+
+-- INTERVENANT_PK
+CREATE UNIQUE INDEX "INTERVENANT_PK" ON "INTERVENANT" ("ID");
+
+-- INTERVENANT_PRENOM_IDX
+CREATE INDEX "INTERVENANT_PRENOM_IDX" ON "INTERVENANT" ("PRENOM");
+
+-- INTERVENANT_RECHERCHE_IDX
+CREATE INDEX "INTERVENANT_RECHERCHE_IDX" ON "INTERVENANT" ("CRITERE_RECHERCHE");
 
--- V_VOL_HORAIRE_ETAT_MULTI
-CREATE OR REPLACE FORCE VIEW "V_VOL_HORAIRE_ETAT_MULTI" ("VOLUME_HORAIRE_ID", "ETAT_VOLUME_HORAIRE_ID") AS 
-  select vh.id VOLUME_HORAIRE_ID, evh.id ETAT_VOLUME_HORAIRE_ID
-  from volume_horaire vh 
-  join service s on s.id = vh.service_id and s.histo_destruction IS NULL
-  join etat_volume_horaire evh on evh.code = 'saisi' 
-  where vh.histo_destruction IS NULL
-union all
-  select vh.id, evh.id
-  from volume_horaire vh 
-  join service s on s.id = vh.service_id and s.histo_destruction IS NULL
-  join etat_volume_horaire evh on evh.code = 'valide' 
-  where vh.histo_destruction IS NULL
-  and EXISTS(
-    SELECT * FROM validation v JOIN validation_vol_horaire vvh ON vvh.validation_id = v.id
-    WHERE vvh.volume_horaire_id = vh.id AND v.histo_destruction IS NULL
-  )
-union all
-  select vh.id, evh.id
-  from volume_horaire vh 
-  join service s on s.id = vh.service_id and s.histo_destruction IS NULL
-  join contrat c on vh.contrat_id = c.id and c.histo_destruction IS NULL
-  join etat_volume_horaire evh on evh.code = 'contrat-edite' 
-  where vh.histo_destruction IS NULL
-union all
-  select vh.id, evh.id
-  from volume_horaire vh 
-  join service s on s.id = vh.service_id and s.histo_destruction IS NULL
-  join contrat c on vh.contrat_id = c.id and c.histo_destruction IS NULL and c.date_retour_signe is not null
-  join etat_volume_horaire evh on evh.code = 'contrat-signe' 
-  where vh.histo_destruction IS NULL;
+-- INTERVENANT_SAISIE_PK
+CREATE UNIQUE INDEX "INTERVENANT_SAISIE_PK" ON "INTERVENANT_SAISIE" ("ID");
 
--- V_VOL_HORAIRE_REF_ETAT_MULTI
-CREATE OR REPLACE FORCE VIEW "V_VOL_HORAIRE_REF_ETAT_MULTI" ("VOLUME_HORAIRE_REF_ID", "ETAT_VOLUME_HORAIRE_ID") AS 
-  select vh.id VOLUME_HORAIRE_REF_ID, evh.id ETAT_VOLUME_HORAIRE_ID
-  from volume_horaire_ref vh 
-  join service_referentiel s on s.id = vh.service_referentiel_id and s.histo_destruction IS NULL
-  join etat_volume_horaire evh on evh.code = 'saisi' 
-  where vh.histo_destruction IS NULL
-union all
-  select vh.id, evh.id
-  from volume_horaire_ref vh 
-  join service_referentiel s on s.id = vh.service_referentiel_id and s.histo_destruction IS NULL
-  join etat_volume_horaire evh on evh.code = 'valide' 
-  where vh.histo_destruction IS NULL
-  and EXISTS(
-    SELECT * FROM validation v JOIN validation_vol_horaire_ref vvh ON vvh.validation_id = v.id
-    WHERE vvh.volume_horaire_ref_id = vh.id AND v.histo_destruction IS NULL
-  );
+-- INTERVENANT_SAISIE_STT_IDX
+CREATE INDEX "INTERVENANT_SAISIE_STT_IDX" ON "INTERVENANT_SAISIE" ("STATUT_ID");
 
--- V_WORKFLOW_ETAPE_PERTINENTE
-CREATE OR REPLACE FORCE VIEW "V_WORKFLOW_ETAPE_PERTINENTE" ("ANNEE_ID", "INTERVENANT_ID", "ETAPE_CODE") AS 
-  WITH peut_pj AS (
-  SELECT DISTINCT 
-    statut_intervenant_id,
-    1 tem
-  FROM
-    type_piece_jointe_statut tpjs
-  WHERE
-    tpjs.histo_destruction IS NULL
-),
-peut_agr AS (
-  SELECT
-    tas.statut_intervenant_id,
-    ta.code,
-    tas.premier_recrutement
-  FROM
-    type_agrement_statut tas
-    JOIN type_agrement ta ON ta.id = tas.type_agrement_id
-  WHERE
-    tas.histo_destruction IS NULL
-)
-SELECT
-  i.annee_id annee_id,
-  i.id intervenant_id,
-  e.code etape_code
-FROM
-            intervenant i
-       JOIN statut_intervenant si ON si.id = i.statut_id
-  LEFT JOIN peut_pj ON peut_pj.statut_intervenant_id = si.id
-  LEFT JOIN peut_agr peut_cr ON peut_cr.code = 'CONSEIL_RESTREINT'  AND peut_cr.statut_intervenant_id = si.id AND (peut_cr.premier_recrutement IS NULL OR NVL(i.premier_recrutement,0) = peut_cr.premier_recrutement)
-  LEFT JOIN peut_agr peut_ca ON peut_ca.code = 'CONSEIL_ACADEMIQUE' AND peut_ca.statut_intervenant_id = si.id AND (peut_ca.premier_recrutement IS NULL OR NVL(i.premier_recrutement,0) = peut_ca.premier_recrutement)
-       JOIN wf_etape e ON 1 = CASE e.code
+-- INTERVENANT_SAISIE__UN
+CREATE UNIQUE INDEX "INTERVENANT_SAISIE__UN" ON "INTERVENANT_SAISIE" ("INTERVENANT_ID");
 
-    WHEN 'DONNEES_PERSO_SAISIE' THEN
-      si.peut_saisir_dossier
+-- INTERVENANT_SOURCE_CODE_IDX
+CREATE INDEX "INTERVENANT_SOURCE_CODE_IDX" ON "INTERVENANT" ("SOURCE_CODE");
 
-    WHEN 'SERVICE_SAISIE' THEN
-      CASE WHEN si.peut_saisir_service + si.peut_saisir_referentiel = 0 THEN 0 ELSE 1 END
+-- INTERVENANT_SOURCE_FK_IDX
+CREATE INDEX "INTERVENANT_SOURCE_FK_IDX" ON "INTERVENANT" ("SOURCE_ID");
 
-    WHEN 'PJ_SAISIE' THEN
-      peut_pj.tem
+-- INTERVENANT_SOURCE__UN
+CREATE UNIQUE INDEX "INTERVENANT_SOURCE__UN" ON "INTERVENANT" ("SOURCE_CODE", "ANNEE_ID");
 
-    WHEN 'PJ_VALIDATION' THEN
-      peut_pj.tem
+-- INTERVENANT_STATUT_FK_IDX
+CREATE INDEX "INTERVENANT_STATUT_FK_IDX" ON "INTERVENANT" ("STATUT_ID");
 
-    WHEN 'DONNEES_PERSO_VALIDATION' THEN
-      si.peut_saisir_dossier
+-- INTERVENANT_STRUCTURE_FK_IDX
+CREATE INDEX "INTERVENANT_STRUCTURE_FK_IDX" ON "INTERVENANT" ("STRUCTURE_ID");
 
-    WHEN 'SERVICE_VALIDATION' THEN
-      si.peut_saisir_service
+-- INTERVENANT_UTIL_CODE_UN
+CREATE UNIQUE INDEX "INTERVENANT_UTIL_CODE_UN" ON "INTERVENANT" ("UTILISATEUR_CODE", "ANNEE_ID", "STATUT_ID");
 
-    WHEN 'REFERENTIEL_VALIDATION' THEN
-      si.peut_saisir_referentiel
+-- LIEN_HISTO_CREATEUR_IDX
+CREATE INDEX "LIEN_HISTO_CREATEUR_IDX" ON "LIEN" ("HISTO_CREATEUR_ID");
 
-    WHEN 'CONSEIL_RESTREINT' THEN
-      CASE WHEN peut_cr.code IS NULL THEN 0 ELSE 1 END
+-- LIEN_HISTO_DESTRUCTEUR_IDX
+CREATE INDEX "LIEN_HISTO_DESTRUCTEUR_IDX" ON "LIEN" ("HISTO_DESTRUCTEUR_ID");
 
-    WHEN 'CONSEIL_ACADEMIQUE' THEN
-      CASE WHEN peut_ca.code IS NULL THEN 0 ELSE 1 END
+-- LIEN_HISTO_MODIFICATEUR_IDX
+CREATE INDEX "LIEN_HISTO_MODIFICATEUR_IDX" ON "LIEN" ("HISTO_MODIFICATEUR_ID");
 
-    WHEN 'CONTRAT' THEN
-      si.peut_avoir_contrat
+-- LIEN_NOEUD_INF_IDX
+CREATE INDEX "LIEN_NOEUD_INF_IDX" ON "LIEN" ("NOEUD_INF_ID");
 
-    WHEN 'SERVICE_SAISIE_REALISE' THEN
-      CASE WHEN si.peut_saisir_service + si.peut_saisir_referentiel = 0 THEN 0 ELSE 1 END
+-- LIEN_NOEUD_SUP_IDX
+CREATE INDEX "LIEN_NOEUD_SUP_IDX" ON "LIEN" ("NOEUD_SUP_ID");
 
-    WHEN 'CLOTURE_REALISE' THEN
-      si.peut_cloturer_saisie
+-- LIEN_PK
+CREATE UNIQUE INDEX "LIEN_PK" ON "LIEN" ("ID");
 
-    WHEN 'SERVICE_VALIDATION_REALISE' THEN
-      si.peut_saisir_service
+-- LIEN_SOURCE_IDX
+CREATE INDEX "LIEN_SOURCE_IDX" ON "LIEN" ("SOURCE_ID");
 
-    WHEN 'REFERENTIEL_VALIDATION_REALISE' THEN
-      si.peut_saisir_referentiel
+-- LIEN_SRC_UN
+CREATE UNIQUE INDEX "LIEN_SRC_UN" ON "LIEN" ("SOURCE_CODE", "HISTO_DESTRUCTION");
 
-    WHEN 'DEMANDE_MEP' THEN
-      CASE WHEN si.peut_saisir_service + si.peut_saisir_referentiel = 0 THEN 0 ELSE 1 END
+-- LIEN_STRUCTURE_IDX
+CREATE INDEX "LIEN_STRUCTURE_IDX" ON "LIEN" ("STRUCTURE_ID");
 
-    WHEN 'SAISIE_MEP' THEN
-      CASE WHEN si.peut_saisir_service + si.peut_saisir_referentiel = 0 THEN 0 ELSE 1 END
+-- MEP_CENTRE_COUT_FK_IDX
+CREATE INDEX "MEP_CENTRE_COUT_FK_IDX" ON "MISE_EN_PAIEMENT" ("CENTRE_COUT_ID");
 
-  END
-WHERE
-  i.histo_destruction IS NULL;
+-- MEP_DOMAINE_FONCTIONNEL_FK_IDX
+CREATE INDEX "MEP_DOMAINE_FONCTIONNEL_FK_IDX" ON "MISE_EN_PAIEMENT" ("DOMAINE_FONCTIONNEL_ID");
 
---------------------------------------------------
--- Vues matérialisées
---------------------------------------------------
+-- MEP_FR_SERVICE_FK_IDX
+CREATE INDEX "MEP_FR_SERVICE_FK_IDX" ON "MISE_EN_PAIEMENT" ("FORMULE_RES_SERVICE_ID");
 
--- TBL_NOEUD
-CREATE MATERIALIZED VIEW "TBL_NOEUD" ("NOEUD_ID", "NOEUD_ETAPE_ID", "CODE", "LIBELLE", "ANNEE_ID", "ETAPE_ID", "ELEMENT_PEDAGOGIQUE_ID", "ELEMENT_PEDAGOGIQUE_ETAPE_ID", "STRUCTURE_ID", "GROUPE_TYPE_FORMATION_ID") AS
-SELECT
-  n.id                     noeud_id,
-  en.id                    noeud_etape_id,
-  n.code                   code,
-  n.libelle                libelle,
-  n.annee_id               annee_id,
-  n.etape_id               etape_id,
-  n.element_pedagogique_id element_pedagogique_id,
-  etp.id                   element_pedagogique_etape_id,
-  n.structure_id           structure_id,
-  tf.groupe_id             groupe_type_formation_id
-FROM
-            noeud                n
-  LEFT JOIN element_pedagogique ep ON ep.id = n.element_pedagogique_id
-  LEFT JOIN etape              etp ON etp.id = COALESCE(n.etape_id,ep.etape_id)
-  LEFT JOIN type_formation      tf ON tf.id = etp.type_formation_id
-  LEFT JOIN noeud               en ON en.etape_id = etp.id
-WHERE
-  n.histo_destruction IS NULL;
+-- MEP_FR_SERVICE_REF_FK_IDX
+CREATE INDEX "MEP_FR_SERVICE_REF_FK_IDX" ON "MISE_EN_PAIEMENT" ("FORMULE_RES_SERVICE_REF_ID");
 
---------------------------------------------------
--- Packages Bodies
---------------------------------------------------
+-- MEP_PERIODE_FK_IDX
+CREATE INDEX "MEP_PERIODE_FK_IDX" ON "MISE_EN_PAIEMENT" ("PERIODE_PAIEMENT_ID");
 
--- OSE_CHARGENS
-CREATE OR REPLACE PACKAGE BODY "OSE_CHARGENS" AS
-  SCENARIO NUMERIC;
-  NOEUD NUMERIC;
-  old_enable BOOLEAN DEFAULT TRUE;
+-- MEP_TYPE_HEURES_FK_IDX
+CREATE INDEX "MEP_TYPE_HEURES_FK_IDX" ON "MISE_EN_PAIEMENT" ("TYPE_HEURES_ID");
 
-  TYPE T_PRECALC_HEURES_PARAMS IS RECORD (
-    annee_id                       NUMERIC DEFAULT NULL,
-    structure_id                   NUMERIC DEFAULT NULL,
-    scenario_id                    NUMERIC DEFAULT NULL,
-    type_heures_id                 NUMERIC DEFAULT NULL,
-    etape_id                       NUMERIC DEFAULT NULL,
-    noeud_ids                      tnoeud_ids DEFAULT NULL
-  );
+-- MEP_VALIDATION_FK_IDX
+CREATE INDEX "MEP_VALIDATION_FK_IDX" ON "MISE_EN_PAIEMENT" ("VALIDATION_ID");
 
-  PRECALC_HEURES_PARAMS T_PRECALC_HEURES_PARAMS;
+-- MISE_EN_PAIEMENT_HCFK_IDX
+CREATE INDEX "MISE_EN_PAIEMENT_HCFK_IDX" ON "MISE_EN_PAIEMENT" ("HISTO_CREATEUR_ID");
 
+-- MISE_EN_PAIEMENT_HDFK_IDX
+CREATE INDEX "MISE_EN_PAIEMENT_HDFK_IDX" ON "MISE_EN_PAIEMENT" ("HISTO_DESTRUCTEUR_ID");
 
-  FUNCTION GET_SCENARIO RETURN NUMERIC IS
-  BEGIN
-    RETURN OSE_CHARGENS.SCENARIO;
-  END;
+-- MISE_EN_PAIEMENT_HMFK_IDX
+CREATE INDEX "MISE_EN_PAIEMENT_HMFK_IDX" ON "MISE_EN_PAIEMENT" ("HISTO_MODIFICATEUR_ID");
 
-  PROCEDURE SET_SCENARIO( SCENARIO NUMERIC ) IS
-  BEGIN
-    OSE_CHARGENS.SCENARIO := SET_SCENARIO.SCENARIO;
-  END;
+-- MISE_EN_PAIEMENT_PK
+CREATE UNIQUE INDEX "MISE_EN_PAIEMENT_PK" ON "MISE_EN_PAIEMENT" ("ID");
 
+-- MMSD_HCFK_IDX
+CREATE INDEX "MMSD_HCFK_IDX" ON "MOTIF_MODIFICATION_SERVICE" ("HISTO_CREATEUR_ID");
 
+-- MMSD_HDFK_IDX
+CREATE INDEX "MMSD_HDFK_IDX" ON "MOTIF_MODIFICATION_SERVICE" ("HISTO_DESTRUCTEUR_ID");
 
-  FUNCTION GET_NOEUD RETURN NUMERIC IS
-  BEGIN
-    RETURN OSE_CHARGENS.NOEUD;
-  END;
+-- MMSD_HMFK_IDX
+CREATE INDEX "MMSD_HMFK_IDX" ON "MOTIF_MODIFICATION_SERVICE" ("HISTO_MODIFICATEUR_ID");
 
-  PROCEDURE SET_NOEUD( NOEUD NUMERIC ) IS
-  BEGIN
-    OSE_CHARGENS.NOEUD := SET_NOEUD.NOEUD;
-  END;
+-- MODIFICATION_SERVICE_DU_PK
+CREATE UNIQUE INDEX "MODIFICATION_SERVICE_DU_PK" ON "MODIFICATION_SERVICE_DU" ("ID");
 
+-- MODULATEUR_HCFK_IDX
+CREATE INDEX "MODULATEUR_HCFK_IDX" ON "MODULATEUR" ("HISTO_CREATEUR_ID");
 
+-- MODULATEUR_HDFK_IDX
+CREATE INDEX "MODULATEUR_HDFK_IDX" ON "MODULATEUR" ("HISTO_DESTRUCTEUR_ID");
 
+-- MODULATEUR_HMFK_IDX
+CREATE INDEX "MODULATEUR_HMFK_IDX" ON "MODULATEUR" ("HISTO_MODIFICATEUR_ID");
 
+-- MODULATEUR_PK
+CREATE UNIQUE INDEX "MODULATEUR_PK" ON "MODULATEUR" ("ID");
 
-  FUNCTION CALC_COEF( choix_min NUMERIC, choix_max NUMERIC, poids NUMERIC, max_poids NUMERIC, total_poids NUMERIC, nb_choix NUMERIC ) RETURN FLOAT IS
-    cmin NUMERIC;
-    cmax NUMERIC;
-    coef_choix FLOAT;
-    coef_poids FLOAT;
-    max_coef_poids FLOAT;
-    correcteur FLOAT DEFAULT 1;
-    res FLOAT;
-  BEGIN
-    cmin := choix_min;
-    cmax := choix_max;
+-- MODULATEUR_TM_FK_IDX
+CREATE INDEX "MODULATEUR_TM_FK_IDX" ON "MODULATEUR" ("TYPE_MODULATEUR_ID");
 
-    IF total_poids = 0 THEN RETURN 0; END IF;
+-- MODULATEUR__UN
+CREATE UNIQUE INDEX "MODULATEUR__UN" ON "MODULATEUR" ("CODE");
 
-    IF cmax IS NULL OR cmax > nb_choix THEN
-      cmax := nb_choix;
-    END IF;
-    IF cmin IS NULL THEN
-      cmin := nb_choix;
-    ELSIF cmin > cmax THEN
-      cmin := cmax;
-    END IF;
+-- MOTIF_MODIFICATION_SERVICE_PK
+CREATE UNIQUE INDEX "MOTIF_MODIFICATION_SERVICE_PK" ON "MOTIF_MODIFICATION_SERVICE" ("ID");
 
-      coef_choix := (cmin + cmax) / 2 / nb_choix;
+-- MOTIF_MODIFICATION_SERVIC_UK1
+CREATE UNIQUE INDEX "MOTIF_MODIFICATION_SERVIC_UK1" ON "MOTIF_MODIFICATION_SERVICE" ("CODE");
 
-      coef_poids := poids / total_poids;
+-- MOTIF_NON_PAIEMENT_HCFK_IDX
+CREATE INDEX "MOTIF_NON_PAIEMENT_HCFK_IDX" ON "MOTIF_NON_PAIEMENT" ("HISTO_CREATEUR_ID");
 
-      max_coef_poids := max_poids / total_poids;
+-- MOTIF_NON_PAIEMENT_HDFK_IDX
+CREATE INDEX "MOTIF_NON_PAIEMENT_HDFK_IDX" ON "MOTIF_NON_PAIEMENT" ("HISTO_DESTRUCTEUR_ID");
 
-      IF (coef_choix * nb_choix * max_coef_poids) <= 1 THEN
-        res := coef_choix * nb_choix * coef_poids;
-      ELSE
-        correcteur := 1;
-        res := coef_choix * nb_choix * (coef_poids + (((1/nb_choix)-coef_poids)*correcteur));
-      END IF;
+-- MOTIF_NON_PAIEMENT_HMFK_IDX
+CREATE INDEX "MOTIF_NON_PAIEMENT_HMFK_IDX" ON "MOTIF_NON_PAIEMENT" ("HISTO_MODIFICATEUR_ID");
 
-      --ose_test.echo('choix_min= ' || cmin || ', choix_max= ' || cmax || ', poids = ' || poids || ', max_poids = ' || max_poids || ', total_poids = ' || total_poids || ', nb_choix = ' || nb_choix || ', RES = ' || res);
-      RETURN res;
-  END;
+-- MOTIF_NON_PAIEMENT_PK
+CREATE UNIQUE INDEX "MOTIF_NON_PAIEMENT_PK" ON "MOTIF_NON_PAIEMENT" ("ID");
 
+-- MSD_HCFK_IDX
+CREATE INDEX "MSD_HCFK_IDX" ON "MODIFICATION_SERVICE_DU" ("HISTO_CREATEUR_ID");
 
-  PROCEDURE DEM_CALC_SUB_EFFECTIF( scenario_noeud_id NUMERIC, type_heures_id NUMERIC, etape_id NUMERIC, effectif FLOAT ) IS
-  BEGIN
-    INSERT INTO TMP_scenario_noeud_effectif(
-      scenario_noeud_id, type_heures_id, etape_id, effectif
-    ) VALUES(
-      scenario_noeud_id, type_heures_id, etape_id, effectif
-    );
-  END;
+-- MSD_HDFK_IDX
+CREATE INDEX "MSD_HDFK_IDX" ON "MODIFICATION_SERVICE_DU" ("HISTO_DESTRUCTEUR_ID");
 
+-- MSD_HMFK_IDX
+CREATE INDEX "MSD_HMFK_IDX" ON "MODIFICATION_SERVICE_DU" ("HISTO_MODIFICATEUR_ID");
 
+-- MSD_INTERVENANT_FK_IDX
+CREATE INDEX "MSD_INTERVENANT_FK_IDX" ON "MODIFICATION_SERVICE_DU" ("INTERVENANT_ID");
 
-  PROCEDURE CALC_SUB_EFFECTIF_DEM IS
-  BEGIN
-    DELETE FROM TMP_scenario_noeud_effectif;
-  END;
+-- NOEUD_ANNEE_IDX
+CREATE INDEX "NOEUD_ANNEE_IDX" ON "NOEUD" ("ANNEE_ID");
 
+-- NOEUD_EP_IDX
+CREATE INDEX "NOEUD_EP_IDX" ON "NOEUD" ("ELEMENT_PEDAGOGIQUE_ID");
 
-  PROCEDURE CALC_ALL_EFFECTIFS IS
-  BEGIN
-    FOR p IN (
+-- NOEUD_ETAPE_IDX
+CREATE INDEX "NOEUD_ETAPE_IDX" ON "NOEUD" ("ETAPE_ID");
 
-      SELECT 
-        sn.noeud_id,
-        sn.scenario_id,
-        sne.type_heures_id,
-        sne.etape_id
-      FROM 
-        scenario_noeud_effectif sne
-        JOIN scenario_noeud sn ON sn.id = sne.scenario_noeud_id
-        JOIN noeud n ON n.id = sn.noeud_id
-      WHERE
-        n.etape_id IS NOT NULL
+-- NOEUD_HISTO_CREATEUR_IDX
+CREATE INDEX "NOEUD_HISTO_CREATEUR_IDX" ON "NOEUD" ("HISTO_CREATEUR_ID");
 
-    ) LOOP
+-- NOEUD_HISTO_DESTRUCTEUR_IDX
+CREATE INDEX "NOEUD_HISTO_DESTRUCTEUR_IDX" ON "NOEUD" ("HISTO_DESTRUCTEUR_ID");
 
-      CALC_SUB_EFFECTIF2( p.noeud_id, p.scenario_id, p.type_heures_id, p.etape_id );
-    END LOOP;
+-- NOEUD_HISTO_MODIFICATEUR_IDX
+CREATE INDEX "NOEUD_HISTO_MODIFICATEUR_IDX" ON "NOEUD" ("HISTO_MODIFICATEUR_ID");
 
-  END;
+-- NOEUD_PK
+CREATE UNIQUE INDEX "NOEUD_PK" ON "NOEUD" ("ID");
 
+-- NOEUD_SOURCE_IDX
+CREATE INDEX "NOEUD_SOURCE_IDX" ON "NOEUD" ("SOURCE_ID");
 
+-- NOEUD_SRC_UN
+CREATE UNIQUE INDEX "NOEUD_SRC_UN" ON "NOEUD" ("SOURCE_CODE", "HISTO_DESTRUCTION");
 
-  PROCEDURE CALC_EFFECTIF( 
-    noeud_id       NUMERIC,
-    scenario_id    NUMERIC,
-    type_heures_id NUMERIC DEFAULT NULL,
-    etape_id       NUMERIC DEFAULT NULL
-  ) IS
-    snid  NUMERIC;
-  BEGIN
-    UPDATE scenario_noeud_effectif SET effectif = 0 
-    WHERE 
-      scenario_noeud_id = (
-        SELECT id FROM scenario_noeud WHERE noeud_id = CALC_EFFECTIF.noeud_id AND scenario_id = CALC_EFFECTIF.scenario_id
-      )
-      AND (type_heures_id = CALC_EFFECTIF.type_heures_id OR CALC_EFFECTIF.type_heures_id IS NULL)
-      AND (etape_id = CALC_EFFECTIF.etape_id OR CALC_EFFECTIF.etape_id IS NULL)
-    ;
+-- NOEUD_STRUCTURE_IDX
+CREATE INDEX "NOEUD_STRUCTURE_IDX" ON "NOEUD" ("STRUCTURE_ID");
 
-    FOR p IN (
+-- NOTIFICATION_INDICATEUR__UN
+CREATE UNIQUE INDEX "NOTIFICATION_INDICATEUR__UN" ON "NOTIFICATION_INDICATEUR" ("INDICATEUR_ID", "AFFECTATION_ID");
 
-      SELECT 
-        * 
-      FROM 
-        v_chargens_calc_effectif cce
-      WHERE 
-        cce.noeud_id = CALC_EFFECTIF.noeud_id
-        AND cce.scenario_id = CALC_EFFECTIF.scenario_id
-        AND (cce.type_heures_id = CALC_EFFECTIF.type_heures_id OR CALC_EFFECTIF.type_heures_id IS NULL)
-        AND (cce.etape_id = CALC_EFFECTIF.etape_id OR CALC_EFFECTIF.etape_id IS NULL)
+-- NOTIF_INDICATEUR_AFK_IDX
+CREATE INDEX "NOTIF_INDICATEUR_AFK_IDX" ON "NOTIFICATION_INDICATEUR" ("AFFECTATION_ID");
 
-    ) LOOP
-      snid := OSE_CHARGENS.GET_SCENARIO_NOEUD_ID( p.scenario_id, p.noeud_id );
-      IF snid IS NULL THEN
-        snid := OSE_CHARGENS.CREER_SCENARIO_NOEUD( p.scenario_id, p.noeud_id );
-      END IF;
-      ADD_SCENARIO_NOEUD_EFFECTIF( snid, p.type_heures_id, p.etape_id, p.effectif );
-    END LOOP;
-    CALC_SUB_EFFECTIF2( noeud_id, scenario_id, type_heures_id, etape_id );
-  END;
+-- NOTIF_INDICATEUR_IFK_IDX
+CREATE INDEX "NOTIF_INDICATEUR_IFK_IDX" ON "NOTIFICATION_INDICATEUR" ("INDICATEUR_ID");
 
+-- NOTIF_INDICATEUR_PK
+CREATE UNIQUE INDEX "NOTIF_INDICATEUR_PK" ON "NOTIFICATION_INDICATEUR" ("ID");
 
+-- PARAMETRE_HCFK_IDX
+CREATE INDEX "PARAMETRE_HCFK_IDX" ON "PARAMETRE" ("HISTO_CREATEUR_ID");
 
-  PROCEDURE CALC_SUB_EFFECTIF2( noeud_id NUMERIC, scenario_id NUMERIC, type_heures_id NUMERIC DEFAULT NULL, etape_id NUMERIC DEFAULT NULL) IS
-  BEGIN
-    FOR p IN (
+-- PARAMETRE_HDFK_IDX
+CREATE INDEX "PARAMETRE_HDFK_IDX" ON "PARAMETRE" ("HISTO_DESTRUCTEUR_ID");
 
-      SELECT * 
-      FROM   V_CHARGENS_GRANDS_LIENS cgl 
-      WHERE  cgl.noeud_sup_id = CALC_SUB_EFFECTIF2.noeud_id
+-- PARAMETRE_HMFK_IDX
+CREATE INDEX "PARAMETRE_HMFK_IDX" ON "PARAMETRE" ("HISTO_MODIFICATEUR_ID");
 
-    ) LOOP
-      CALC_EFFECTIF( p.noeud_inf_id, scenario_id, type_heures_id, etape_id );
-    END LOOP;
-  END;
+-- PARAMETRE_PK
+CREATE UNIQUE INDEX "PARAMETRE_PK" ON "PARAMETRE" ("ID");
+
+-- PAYS_HCFK_IDX
+CREATE INDEX "PAYS_HCFK_IDX" ON "PAYS" ("HISTO_CREATEUR_ID");
+
+-- PAYS_HDFK_IDX
+CREATE INDEX "PAYS_HDFK_IDX" ON "PAYS" ("HISTO_DESTRUCTEUR_ID");
+
+-- PAYS_HMFK_IDX
+CREATE INDEX "PAYS_HMFK_IDX" ON "PAYS" ("HISTO_MODIFICATEUR_ID");
+
+-- PAYS_PK
+CREATE UNIQUE INDEX "PAYS_PK" ON "PAYS" ("ID");
+
+-- PAYS_SOURCE_FK_IDX
+CREATE INDEX "PAYS_SOURCE_FK_IDX" ON "PAYS" ("SOURCE_ID");
 
+-- PERIMETRE_CODE_UN
+CREATE UNIQUE INDEX "PERIMETRE_CODE_UN" ON "PERIMETRE" ("CODE");
 
+-- PERIMETRE_LIBELLE_UN
+CREATE UNIQUE INDEX "PERIMETRE_LIBELLE_UN" ON "PERIMETRE" ("LIBELLE");
 
-  PROCEDURE DUPLIQUER( source_id NUMERIC, destination_id NUMERIC, utilisateur_id NUMERIC, structure_id NUMERIC, noeuds VARCHAR2 DEFAULT '', liens VARCHAR2 DEFAULT '' ) IS
-  BEGIN
+-- PERIMETRE_PK
+CREATE UNIQUE INDEX "PERIMETRE_PK" ON "PERIMETRE" ("ID");
 
-    /* Destruction de tous les liens antérieurs de la destination */
-    DELETE FROM 
-      scenario_lien 
-    WHERE 
-      scenario_id = DUPLIQUER.destination_id 
-      AND histo_destruction IS NULL
-      AND (DUPLIQUER.LIENS IS NULL OR DUPLIQUER.LIENS LIKE '%,' || lien_id || ',%' )
-      AND (DUPLIQUER.STRUCTURE_ID IS NULL OR lien_id IN (
-        SELECT id FROM lien WHERE lien.structure_id = DUPLIQUER.STRUCTURE_ID
-      ))
-    ;
+-- PERIODE_HCFK_IDX
+CREATE INDEX "PERIODE_HCFK_IDX" ON "PERIODE" ("HISTO_CREATEUR_ID");
 
-    /* Duplication des liens */
-    INSERT INTO scenario_lien (
-      id, 
-      scenario_id, lien_id, 
-      actif, poids, 
-      choix_minimum, choix_maximum, 
-      source_id, source_code, 
-      histo_creation, histo_createur_id,
-      histo_modification, histo_modificateur_id
-    ) SELECT
-      scenario_lien_id_seq.nextval,
-      DUPLIQUER.destination_id, sl.lien_id,
-      sl.actif, sl.poids,
-      sl.choix_minimum, sl.choix_maximum,
-      source.id, 'dupli_' || sl.id || '_' || sl.lien_id || '_' || trunc(dbms_random.value(1,10000000000000)),
-      sysdate, DUPLIQUER.utilisateur_id,
-      sysdate, DUPLIQUER.utilisateur_id
-    FROM
-      scenario_lien sl
-      JOIN lien l ON l.id = sl.lien_id
-      JOIN source ON source.code = 'OSE'
-    WHERE
-      sl.scenario_id = DUPLIQUER.source_id
-      AND sl.histo_destruction IS NULL
-      AND (DUPLIQUER.LIENS IS NULL OR DUPLIQUER.LIENS LIKE '%,' || lien_id || ',%' )
-      AND (DUPLIQUER.STRUCTURE_ID IS NULL OR l.structure_id = DUPLIQUER.STRUCTURE_ID)
-    ;
+-- PERIODE_HDFK_IDX
+CREATE INDEX "PERIODE_HDFK_IDX" ON "PERIODE" ("HISTO_DESTRUCTEUR_ID");
 
+-- PERIODE_HMFK_IDX
+CREATE INDEX "PERIODE_HMFK_IDX" ON "PERIODE" ("HISTO_MODIFICATEUR_ID");
 
-    /* Destruction de tous les noeuds antérieurs de la destination */
-    DELETE FROM 
-      scenario_noeud
-    WHERE 
-      scenario_id = DUPLIQUER.destination_id 
-      AND histo_destruction IS NULL
-      AND (DUPLIQUER.NOEUDS IS NULL OR DUPLIQUER.NOEUDS LIKE '%,' || noeud_id || ',%' )
-      AND (DUPLIQUER.STRUCTURE_ID IS NULL OR scenario_noeud.noeud_id IN (
-        SELECT id FROM noeud WHERE noeud.structure_id = DUPLIQUER.STRUCTURE_ID
-      ))
-    ;
+-- PERIODE_PK
+CREATE UNIQUE INDEX "PERIODE_PK" ON "PERIODE" ("ID");
 
-    /* Duplication des noeuds */
-    INSERT INTO scenario_noeud (
-      id, 
-      scenario_id, noeud_id, 
-      assiduite, 
-      source_id, source_code, 
-      histo_creation, histo_createur_id,
-      histo_modification, histo_modificateur_id
-    ) SELECT
-      scenario_noeud_id_seq.nextval,
-      DUPLIQUER.destination_id, sn.noeud_id,
-      sn.assiduite,
-      source.id, 'dupli_' || sn.id || '_' || sn.noeud_id || '_' || trunc(dbms_random.value(1,10000000000000)),
-      sysdate, DUPLIQUER.utilisateur_id,
-      sysdate, DUPLIQUER.utilisateur_id
-    FROM
-      scenario_noeud sn
-      JOIN noeud n ON n.id = sn.noeud_id
-      JOIN source ON source.code = 'OSE'
-    WHERE
-      sn.scenario_id = DUPLIQUER.source_id
-      AND sn.histo_destruction IS NULL
-      AND (DUPLIQUER.NOEUDS IS NULL OR DUPLIQUER.NOEUDS LIKE '%,' || noeud_id || ',%' )
-      AND (DUPLIQUER.STRUCTURE_ID IS NULL OR n.structure_id = DUPLIQUER.STRUCTURE_ID)
-    ;
+-- PERIODE__UN
+CREATE UNIQUE INDEX "PERIODE__UN" ON "PERIODE" ("CODE");
 
-    /* Duplication des effectifs */
-    INSERT INTO scenario_noeud_effectif (
-      id,
-      scenario_noeud_id,
-      type_heures_id,
-      effectif,
-      etape_id
-    ) SELECT
-      scenario_noeud_effectif_id_seq.nextval,
-      sn_dst.id,
-      sne.type_heures_id,
-      sne.effectif,
-      sne.etape_id
-    FROM
-      scenario_noeud_effectif sne
-      JOIN scenario_noeud sn_src ON sn_src.id = sne.scenario_noeud_id
-      JOIN scenario_noeud sn_dst ON sn_dst.scenario_id = DUPLIQUER.destination_id AND sn_dst.noeud_id = sn_src.noeud_id
-      JOIN noeud n ON n.id = sn_src.noeud_id
-    WHERE
-      sn_src.scenario_id = DUPLIQUER.source_id
-      AND sn_src.histo_destruction IS NULL
-      AND (DUPLIQUER.NOEUDS IS NULL OR DUPLIQUER.NOEUDS LIKE '%,' || sn_src.noeud_id || ',%' )
-      AND (DUPLIQUER.STRUCTURE_ID IS NULL OR n.structure_id = DUPLIQUER.STRUCTURE_ID)
-    ;
+-- PIECE_JOINTE_FICHIER_FFK_IDX
+CREATE INDEX "PIECE_JOINTE_FICHIER_FFK_IDX" ON "PIECE_JOINTE_FICHIER" ("FICHIER_ID");
 
-    /* Duplication des seuils */
-    INSERT INTO scenario_noeud_seuil (
-      id,
-      scenario_noeud_id,
-      type_intervention_id,
-      ouverture,
-      dedoublement
-    ) SELECT
-      scenario_noeud_seuil_id_seq.nextval,
-      sn_dst.id,
-      sns.type_intervention_id,
-      sns.ouverture,
-      sns.dedoublement
-    FROM
-      scenario_noeud_seuil sns
-      JOIN scenario_noeud sn_src ON sn_src.id = sns.scenario_noeud_id
-      JOIN scenario_noeud sn_dst ON sn_dst.scenario_id = DUPLIQUER.destination_id AND sn_dst.noeud_id = sn_src.noeud_id
-      JOIN noeud n ON n.id = sn_src.noeud_id
-    WHERE
-      sn_src.scenario_id = DUPLIQUER.source_id
-      AND sn_src.histo_destruction IS NULL
-      AND (DUPLIQUER.NOEUDS IS NULL OR DUPLIQUER.NOEUDS LIKE '%,' || sn_src.noeud_id || ',%' )
-      AND (DUPLIQUER.STRUCTURE_ID IS NULL OR n.structure_id = DUPLIQUER.STRUCTURE_ID)
-    ;
-  END;
+-- PIECE_JOINTE_FICHIER_PJFK_IDX
+CREATE INDEX "PIECE_JOINTE_FICHIER_PJFK_IDX" ON "PIECE_JOINTE_FICHIER" ("PIECE_JOINTE_ID");
 
+-- PIECE_JOINTE_FICHIER_PK
+CREATE UNIQUE INDEX "PIECE_JOINTE_FICHIER_PK" ON "PIECE_JOINTE_FICHIER" ("PIECE_JOINTE_ID", "FICHIER_ID");
 
+-- PIECE_JOINTE_HCFK_IDX
+CREATE INDEX "PIECE_JOINTE_HCFK_IDX" ON "PIECE_JOINTE" ("HISTO_CREATEUR_ID");
 
-  PROCEDURE CONTROLE_SEUIL( ouverture NUMERIC, dedoublement NUMERIC ) IS
-  BEGIN
-    IF ouverture IS NOT NULL THEN
-      IF ouverture < 1 THEN
-        raise_application_error(-20101, 'Le seuil d''ouverture doit être supérieur ou égal à 1');
-      END IF;
-    END IF;
+-- PIECE_JOINTE_HDFK_IDX
+CREATE INDEX "PIECE_JOINTE_HDFK_IDX" ON "PIECE_JOINTE" ("HISTO_DESTRUCTEUR_ID");
 
-    IF dedoublement IS NOT NULL THEN
-      IF dedoublement < 1 THEN
-        raise_application_error(-20101, 'Le seuil de dédoublement doit être supérieur ou égal à 1');
-      END IF;
-    END IF;
+-- PIECE_JOINTE_HMFK_IDX
+CREATE INDEX "PIECE_JOINTE_HMFK_IDX" ON "PIECE_JOINTE" ("HISTO_MODIFICATEUR_ID");
 
-    IF ouverture IS NOT NULL AND dedoublement IS NOT NULL THEN
-      IF dedoublement < ouverture THEN
-        raise_application_error(-20101, 'Le seuil de dédoublement doit être supérieur ou égal au seuil d''ouverture');
-      END IF;
-    END IF;
-  END;
+-- PIECE_JOINTE_PK
+CREATE UNIQUE INDEX "PIECE_JOINTE_PK" ON "PIECE_JOINTE" ("ID");
 
+-- PIECE_JOINTE_VFK_IDX
+CREATE INDEX "PIECE_JOINTE_VFK_IDX" ON "PIECE_JOINTE" ("VALIDATION_ID");
 
-  FUNCTION CREER_SCENARIO_NOEUD( scenario_id NUMERIC, noeud_id NUMERIC, assiduite FLOAT DEFAULT 1 ) RETURN NUMERIC IS
-    new_id NUMERIC;
-  BEGIN
-    new_id := SCENARIO_NOEUD_ID_SEQ.NEXTVAL;
---ose_test.echo(scenario_id || '-' || noeud_id);
-    INSERT INTO SCENARIO_NOEUD(
-      ID,
-      SCENARIO_ID,
-      NOEUD_ID,
-      ASSIDUITE,
-      SOURCE_ID,
-      SOURCE_CODE,
-      HEURES,
-      HISTO_CREATION,
-      HISTO_CREATEUR_ID,
-      HISTO_MODIFICATION,
-      HISTO_MODIFICATEUR_ID
-    ) VALUES (
-      new_id,
-      CREER_SCENARIO_NOEUD.scenario_id,
-      CREER_SCENARIO_NOEUD.noeud_id,
-      CREER_SCENARIO_NOEUD.assiduite,
-      OSE_DIVERS.GET_OSE_SOURCE_ID,
-      'OSE_NEW_SN_' || new_id,
-      null,
-      SYSDATE,
-      OSE_DIVERS.GET_OSE_UTILISATEUR_ID,
-      SYSDATE,
-      OSE_DIVERS.GET_OSE_UTILISATEUR_ID
-    );
-    RETURN new_id;
-  END;
+-- PIECE_JOINTE__UN
+CREATE UNIQUE INDEX "PIECE_JOINTE__UN" ON "PIECE_JOINTE" ("TYPE_PIECE_JOINTE_ID", "INTERVENANT_ID", "HISTO_DESTRUCTION");
 
+-- PJ_DOSSIER_FK_IDX
+CREATE INDEX "PJ_DOSSIER_FK_IDX" ON "PIECE_JOINTE" ("INTERVENANT_ID");
 
-  FUNCTION GET_SCENARIO_NOEUD_ID(scenario_id NUMERIC, noeud_id NUMERIC) RETURN NUMERIC IS
-    res NUMERIC;
-  BEGIN
-    SELECT
-      sn.id INTO res
-    FROM
-      scenario_noeud sn
-    WHERE
-      sn.noeud_id = GET_SCENARIO_NOEUD_ID.noeud_id
-      AND sn.scenario_id = GET_SCENARIO_NOEUD_ID.scenario_id
-      AND sn.histo_destruction IS NULL;
+-- PJ_TYPE_PIECE_JOINTE_FK_IDX
+CREATE INDEX "PJ_TYPE_PIECE_JOINTE_FK_IDX" ON "PIECE_JOINTE" ("TYPE_PIECE_JOINTE_ID");
 
-    RETURN res;
+-- PLAFOND_APPLICATION_PK
+CREATE UNIQUE INDEX "PLAFOND_APPLICATION_PK" ON "PLAFOND_APPLICATION" ("ID");
 
-  EXCEPTION WHEN NO_DATA_FOUND THEN
-    RETURN NULL;
-  END;
+-- PLAFOND_ETAT_PK
+CREATE UNIQUE INDEX "PLAFOND_ETAT_PK" ON "PLAFOND_ETAT" ("ID");
 
+-- PLAFOND_PK
+CREATE UNIQUE INDEX "PLAFOND_PK" ON "PLAFOND" ("ID");
 
-  PROCEDURE ADD_SCENARIO_NOEUD_EFFECTIF( scenario_noeud_id NUMERIC, type_heures_id NUMERIC, etape_id NUMERIC, effectif FLOAT ) IS
-    old_enable BOOLEAN;
-  BEGIN
-    old_enable := ose_chargens.ENABLE_TRIGGER_EFFECTIFS;
-    ose_chargens.ENABLE_TRIGGER_EFFECTIFS := false;
+-- PRIVILEGE_CATEGORIE_FK_IDX
+CREATE INDEX "PRIVILEGE_CATEGORIE_FK_IDX" ON "PRIVILEGE" ("CATEGORIE_ID");
 
-    MERGE INTO scenario_noeud_effectif sne USING dual ON (
+-- PRIVILEGE_PK
+CREATE UNIQUE INDEX "PRIVILEGE_PK" ON "PRIVILEGE" ("ID");
 
-          sne.scenario_noeud_id = ADD_SCENARIO_NOEUD_EFFECTIF.scenario_noeud_id
-      AND sne.type_heures_id = ADD_SCENARIO_NOEUD_EFFECTIF.type_heures_id
-      AND sne.etape_id = ADD_SCENARIO_NOEUD_EFFECTIF.etape_id
+-- PRIVILEGE__UN
+CREATE UNIQUE INDEX "PRIVILEGE__UN" ON "PRIVILEGE" ("CATEGORIE_ID", "CODE");
 
-    ) WHEN MATCHED THEN UPDATE SET
+-- REGLE_STRUCTURE_VALIDATION_PK
+CREATE UNIQUE INDEX "REGLE_STRUCTURE_VALIDATION_PK" ON "REGLE_STRUCTURE_VALIDATION" ("ID");
 
-      effectif = effectif + ADD_SCENARIO_NOEUD_EFFECTIF.effectif
+-- REGLE_STRUCTURE_VALIDATION__UN
+CREATE UNIQUE INDEX "REGLE_STRUCTURE_VALIDATION__UN" ON "REGLE_STRUCTURE_VALIDATION" ("TYPE_VOLUME_HORAIRE_ID", "TYPE_INTERVENANT_ID");
 
-    WHEN NOT MATCHED THEN INSERT (
+-- ROLE_CODE_UN
+CREATE UNIQUE INDEX "ROLE_CODE_UN" ON "ROLE" ("CODE");
 
-      ID,
-      SCENARIO_NOEUD_ID,
-      TYPE_HEURES_ID,
-      ETAPE_ID,
-      EFFECTIF
+-- ROLE_HCFK_IDX
+CREATE INDEX "ROLE_HCFK_IDX" ON "ROLE" ("HISTO_CREATEUR_ID");
 
-    ) VALUES (
+-- ROLE_HDFK_IDX
+CREATE INDEX "ROLE_HDFK_IDX" ON "ROLE" ("HISTO_DESTRUCTEUR_ID");
 
-      SCENARIO_NOEUD_EFFECTIF_ID_SEQ.NEXTVAL,
-      ADD_SCENARIO_NOEUD_EFFECTIF.scenario_noeud_id,
-      ADD_SCENARIO_NOEUD_EFFECTIF.type_heures_id,
-      ADD_SCENARIO_NOEUD_EFFECTIF.etape_id,
-      ADD_SCENARIO_NOEUD_EFFECTIF.effectif
+-- ROLE_HMFK_IDX
+CREATE INDEX "ROLE_HMFK_IDX" ON "ROLE" ("HISTO_MODIFICATEUR_ID");
 
-    );
+-- ROLE_PERIMETRE_FK_IDX
+CREATE INDEX "ROLE_PERIMETRE_FK_IDX" ON "ROLE" ("PERIMETRE_ID");
 
-    DELETE FROM scenario_noeud_effectif WHERE effectif = 0;
+-- ROLE_PK
+CREATE UNIQUE INDEX "ROLE_PK" ON "ROLE" ("ID");
 
-    ose_chargens.ENABLE_TRIGGER_EFFECTIFS := old_enable;
-  END;
+-- ROLE_PRIVILEGE_PK
+CREATE UNIQUE INDEX "ROLE_PRIVILEGE_PK" ON "ROLE_PRIVILEGE" ("PRIVILEGE_ID", "ROLE_ID");
 
+-- ROLE_PRIVILEGE_ROLE_FK_IDX
+CREATE INDEX "ROLE_PRIVILEGE_ROLE_FK_IDX" ON "ROLE_PRIVILEGE" ("ROLE_ID");
 
+-- RP_PRIVILEGE_FK_IDX
+CREATE INDEX "RP_PRIVILEGE_FK_IDX" ON "ROLE_PRIVILEGE" ("PRIVILEGE_ID");
 
-  PROCEDURE INIT_SCENARIO_NOEUD_EFFECTIF( 
-    etape_id NUMERIC, 
-    scenario_id NUMERIC, 
-    type_heures_id NUMERIC, 
-    effectif FLOAT, 
-    surcharge BOOLEAN DEFAULT FALSE 
-  ) IS
-    noeud_id NUMERIC;
-    scenario_noeud_id NUMERIC;
-    scenario_noeud_effectif_id NUMERIC;
-  BEGIN
-    SELECT 
-      n.id, sn.id, sne.id
-    INTO 
-      noeud_id, scenario_noeud_id, scenario_noeud_effectif_id
-    FROM 
-                noeud                     n
-      LEFT JOIN scenario_noeud           sn ON sn.noeud_id = n.id
-                                           AND sn.histo_destruction IS NULL
-                                           AND sn.scenario_id = INIT_SCENARIO_NOEUD_EFFECTIF.scenario_id
+-- RSV_TYPE_INTERVENANT_FK_IDX
+CREATE INDEX "RSV_TYPE_INTERVENANT_FK_IDX" ON "REGLE_STRUCTURE_VALIDATION" ("TYPE_INTERVENANT_ID");
 
-      LEFT JOIN scenario_noeud_effectif sne ON sne.scenario_noeud_id = sn.id
-                                           AND sne.type_heures_id = INIT_SCENARIO_NOEUD_EFFECTIF.type_heures_id
-    WHERE 
-      n.etape_id = INIT_SCENARIO_NOEUD_EFFECTIF.etape_id 
-      AND n.histo_destruction IS NULL
-    ;
+-- RSV_TYPE_VOLUME_HORAIRE_FK_IDX
+CREATE INDEX "RSV_TYPE_VOLUME_HORAIRE_FK_IDX" ON "REGLE_STRUCTURE_VALIDATION" ("TYPE_VOLUME_HORAIRE_ID");
 
-    IF noeud_id IS NULL THEN RETURN; END IF;
+-- SCENARIO_HC_IDX
+CREATE INDEX "SCENARIO_HC_IDX" ON "SCENARIO" ("HISTO_CREATEUR_ID");
 
-    IF scenario_noeud_id IS NULL THEN
-      scenario_noeud_id := CREER_SCENARIO_NOEUD( scenario_id, noeud_id );
-    END IF;
+-- SCENARIO_HD_IDX
+CREATE INDEX "SCENARIO_HD_IDX" ON "SCENARIO" ("HISTO_DESTRUCTEUR_ID");
 
-    IF scenario_noeud_effectif_id IS NULL THEN
-      scenario_noeud_effectif_id := SCENARIO_NOEUD_EFFECTIF_ID_SEQ.NEXTVAL;
-      INSERT INTO scenario_noeud_effectif (
-        id, 
-        scenario_noeud_id, 
-        type_heures_id, 
-        effectif, 
-        etape_id
-      ) VALUES (
-        scenario_noeud_effectif_id,
-        scenario_noeud_id,
-        INIT_SCENARIO_NOEUD_EFFECTIF.type_heures_id,
-        INIT_SCENARIO_NOEUD_EFFECTIF.effectif,
-        INIT_SCENARIO_NOEUD_EFFECTIF.etape_id
-      );
-    ELSIF surcharge THEN
-      UPDATE scenario_noeud_effectif SET effectif = INIT_SCENARIO_NOEUD_EFFECTIF.effectif WHERE id = scenario_noeud_effectif_id;
-    END IF;
+-- SCENARIO_HM_IDX
+CREATE INDEX "SCENARIO_HM_IDX" ON "SCENARIO" ("HISTO_MODIFICATEUR_ID");
 
-    CALC_SUB_EFFECTIF2( noeud_id, scenario_id, type_heures_id, etape_id );
+-- SCENARIO_LIEN_HC_IDX
+CREATE INDEX "SCENARIO_LIEN_HC_IDX" ON "SCENARIO_LIEN" ("HISTO_CREATEUR_ID");
 
-  EXCEPTION WHEN NO_DATA_FOUND THEN
-    RETURN;
-  END;
+-- SCENARIO_LIEN_HD_IDX
+CREATE INDEX "SCENARIO_LIEN_HD_IDX" ON "SCENARIO_LIEN" ("HISTO_DESTRUCTEUR_ID");
 
+-- SCENARIO_LIEN_HM_IDX
+CREATE INDEX "SCENARIO_LIEN_HM_IDX" ON "SCENARIO_LIEN" ("HISTO_MODIFICATEUR_ID");
 
+-- SCENARIO_LIEN_LIEN_IDX
+CREATE INDEX "SCENARIO_LIEN_LIEN_IDX" ON "SCENARIO_LIEN" ("LIEN_ID");
 
-  PROCEDURE SET_PRECALC_HEURES_PARAMS( 
-    annee_id                       NUMERIC DEFAULT NULL,
-    structure_id                   NUMERIC DEFAULT NULL,
-    scenario_id                    NUMERIC DEFAULT NULL,
-    type_heures_id                 NUMERIC DEFAULT NULL,
-    etape_id                       NUMERIC DEFAULT NULL,
-    noeud_ids                      tnoeud_ids DEFAULT NULL
-  ) IS
-  BEGIN
-    PRECALC_HEURES_PARAMS.ANNEE_ID       := ANNEE_ID;
-    PRECALC_HEURES_PARAMS.STRUCTURE_ID   := STRUCTURE_ID;
-    PRECALC_HEURES_PARAMS.SCENARIO_ID    := SCENARIO_ID;
-    PRECALC_HEURES_PARAMS.TYPE_HEURES_ID := TYPE_HEURES_ID;
-    PRECALC_HEURES_PARAMS.ETAPE_ID       := ETAPE_ID;
-    PRECALC_HEURES_PARAMS.NOEUD_IDS      := noeud_ids;
-  END;
+-- SCENARIO_LIEN_PK
+CREATE UNIQUE INDEX "SCENARIO_LIEN_PK" ON "SCENARIO_LIEN" ("ID");
+
+-- SCENARIO_LIEN_SCENARIO_IDX
+CREATE INDEX "SCENARIO_LIEN_SCENARIO_IDX" ON "SCENARIO_LIEN" ("SCENARIO_ID");
+
+-- SCENARIO_LIEN_SOURCE_IDX
+CREATE INDEX "SCENARIO_LIEN_SOURCE_IDX" ON "SCENARIO_LIEN" ("SOURCE_ID");
+
+-- SCENARIO_LIEN_SRC_UN
+CREATE UNIQUE INDEX "SCENARIO_LIEN_SRC_UN" ON "SCENARIO_LIEN" ("SOURCE_CODE", "HISTO_DESTRUCTION");
 
+-- SCENARIO_LIEN__UN
+CREATE UNIQUE INDEX "SCENARIO_LIEN__UN" ON "SCENARIO_LIEN" ("SCENARIO_ID", "LIEN_ID", "HISTO_DESTRUCTION");
 
+-- SCENARIO_NOEUD_EFFECTIF_PK
+CREATE UNIQUE INDEX "SCENARIO_NOEUD_EFFECTIF_PK" ON "SCENARIO_NOEUD_EFFECTIF" ("ID");
 
-  FUNCTION MATCH_PRECALC_HEURES_PARAMS( 
-    annee_id                       NUMERIC DEFAULT NULL,
-    structure_id                   NUMERIC DEFAULT NULL,
-    scenario_id                    NUMERIC DEFAULT NULL,
-    type_heures_id                 NUMERIC DEFAULT NULL,
-    etape_id                       NUMERIC DEFAULT NULL,
-    noeud_id                       NUMERIC DEFAULT NULL
-  ) RETURN NUMERIC IS
-  BEGIN
+-- SCENARIO_NOEUD_EFFECTIF_SN_IDX
+CREATE INDEX "SCENARIO_NOEUD_EFFECTIF_SN_IDX" ON "SCENARIO_NOEUD_EFFECTIF" ("SCENARIO_NOEUD_ID");
 
-    IF PRECALC_HEURES_PARAMS.noeud_ids IS NOT NULL THEN
-      IF NOT (noeud_id MEMBER OF PRECALC_HEURES_PARAMS.noeud_ids) THEN
-        RETURN 0;
-      END IF;
-    END IF;
+-- SCENARIO_NOEUD_EFFECTIF_TH_IDX
+CREATE INDEX "SCENARIO_NOEUD_EFFECTIF_TH_IDX" ON "SCENARIO_NOEUD_EFFECTIF" ("TYPE_HEURES_ID");
 
-    IF annee_id <> COALESCE(PRECALC_HEURES_PARAMS.annee_id, annee_id) THEN
-      RETURN 0;
-    END IF;
+-- SCENARIO_NOEUD_EFF_ETP_IDX
+CREATE INDEX "SCENARIO_NOEUD_EFF_ETP_IDX" ON "SCENARIO_NOEUD_EFFECTIF" ("ETAPE_ID");
 
-    IF structure_id <> COALESCE(PRECALC_HEURES_PARAMS.structure_id, structure_id) THEN
-      RETURN 0;
-    END IF;
+-- SCENARIO_NOEUD_HC_IDX
+CREATE INDEX "SCENARIO_NOEUD_HC_IDX" ON "SCENARIO_NOEUD" ("HISTO_CREATEUR_ID");
 
-    IF scenario_id <> COALESCE(PRECALC_HEURES_PARAMS.scenario_id, scenario_id) THEN
-      RETURN 0;
-    END IF;
+-- SCENARIO_NOEUD_HD_IDX
+CREATE INDEX "SCENARIO_NOEUD_HD_IDX" ON "SCENARIO_NOEUD" ("HISTO_DESTRUCTEUR_ID");
 
-    IF type_heures_id <> COALESCE(PRECALC_HEURES_PARAMS.type_heures_id, type_heures_id) THEN
-      RETURN 0;
-    END IF;
+-- SCENARIO_NOEUD_HM_IDX
+CREATE INDEX "SCENARIO_NOEUD_HM_IDX" ON "SCENARIO_NOEUD" ("HISTO_MODIFICATEUR_ID");
 
-    IF etape_id <> COALESCE(PRECALC_HEURES_PARAMS.etape_id, etape_id) THEN
-      RETURN 0;
-    END IF;
+-- SCENARIO_NOEUD_NOEUD_IDX
+CREATE INDEX "SCENARIO_NOEUD_NOEUD_IDX" ON "SCENARIO_NOEUD" ("NOEUD_ID");
 
-    RETURN 1;
-  END;
+-- SCENARIO_NOEUD_PK
+CREATE UNIQUE INDEX "SCENARIO_NOEUD_PK" ON "SCENARIO_NOEUD" ("ID");
 
+-- SCENARIO_NOEUD_SCENARIO_IDX
+CREATE INDEX "SCENARIO_NOEUD_SCENARIO_IDX" ON "SCENARIO_NOEUD" ("SCENARIO_ID");
 
-  FUNCTION GET_PRECALC_HEURES_ANNEE RETURN NUMERIC IS
-  BEGIN
-    RETURN PRECALC_HEURES_PARAMS.ANNEE_ID;
-  END;
+-- SCENARIO_NOEUD_SEUIL_PK
+CREATE UNIQUE INDEX "SCENARIO_NOEUD_SEUIL_PK" ON "SCENARIO_NOEUD_SEUIL" ("ID");
 
+-- SCENARIO_NOEUD_SEUIL_SN_IDX
+CREATE INDEX "SCENARIO_NOEUD_SEUIL_SN_IDX" ON "SCENARIO_NOEUD_SEUIL" ("SCENARIO_NOEUD_ID");
 
+-- SCENARIO_NOEUD_SEUIL_TI_IDX
+CREATE INDEX "SCENARIO_NOEUD_SEUIL_TI_IDX" ON "SCENARIO_NOEUD_SEUIL" ("TYPE_INTERVENTION_ID");
 
-  FUNCTION GET_PRECALC_HEURES_STRUCTURE RETURN NUMERIC IS
-  BEGIN
-    RETURN PRECALC_HEURES_PARAMS.STRUCTURE_ID;
-  END;
+-- SCENARIO_NOEUD_SOURCE_IDX
+CREATE INDEX "SCENARIO_NOEUD_SOURCE_IDX" ON "SCENARIO_NOEUD" ("SOURCE_ID");
 
+-- SCENARIO_NOEUD_SRC_UN
+CREATE UNIQUE INDEX "SCENARIO_NOEUD_SRC_UN" ON "SCENARIO_NOEUD" ("SOURCE_CODE", "HISTO_DESTRUCTION");
 
+-- SCENARIO_NOEUD__UN
+CREATE UNIQUE INDEX "SCENARIO_NOEUD__UN" ON "SCENARIO_NOEUD" ("SCENARIO_ID", "NOEUD_ID", "HISTO_DESTRUCTION");
 
-  FUNCTION GET_PRECALC_HEURES_SCENARIO RETURN NUMERIC IS
-  BEGIN
-    RETURN PRECALC_HEURES_PARAMS.SCENARIO_ID;
-  END;
+-- SCENARIO_PK
+CREATE UNIQUE INDEX "SCENARIO_PK" ON "SCENARIO" ("ID");
 
+-- SCENARIO_STRUCTURE_IDX
+CREATE INDEX "SCENARIO_STRUCTURE_IDX" ON "SCENARIO" ("STRUCTURE_ID");
 
+-- SERVICE_ETABLISSEMENT_FK_IDX
+CREATE INDEX "SERVICE_ETABLISSEMENT_FK_IDX" ON "SERVICE" ("ETABLISSEMENT_ID");
 
-  FUNCTION GET_PRECALC_HEURES_TYPE_HEURES RETURN NUMERIC IS
-  BEGIN
-    RETURN PRECALC_HEURES_PARAMS.TYPE_HEURES_ID;
-  END;
+-- SERVICE_HCFK_IDX
+CREATE INDEX "SERVICE_HCFK_IDX" ON "SERVICE" ("HISTO_CREATEUR_ID");
 
+-- SERVICE_HDFK_IDX
+CREATE INDEX "SERVICE_HDFK_IDX" ON "SERVICE" ("HISTO_DESTRUCTEUR_ID");
 
+-- SERVICE_HMFK_IDX
+CREATE INDEX "SERVICE_HMFK_IDX" ON "SERVICE" ("HISTO_MODIFICATEUR_ID");
 
-  FUNCTION GET_PRECALC_HEURES_ETAPE RETURN NUMERIC IS
-  BEGIN
-    RETURN PRECALC_HEURES_PARAMS.ETAPE_ID;
-  END;
+-- SERVICE_INTERVENANT_FK_IDX
+CREATE INDEX "SERVICE_INTERVENANT_FK_IDX" ON "SERVICE" ("INTERVENANT_ID");
 
---  FUNCTION GET_PRECALC_HEURES_NOEUD RETURN NUMERIC IS
---  BEGIN
+-- SERVICE_PK
+CREATE UNIQUE INDEX "SERVICE_PK" ON "SERVICE" ("ID");
 
---  END;
+-- SERVICE_REFERENTIEL_HCFK_IDX
+CREATE INDEX "SERVICE_REFERENTIEL_HCFK_IDX" ON "SERVICE_REFERENTIEL" ("HISTO_CREATEUR_ID");
 
-END OSE_CHARGENS;
-/
+-- SERVICE_REFERENTIEL_HDFK_IDX
+CREATE INDEX "SERVICE_REFERENTIEL_HDFK_IDX" ON "SERVICE_REFERENTIEL" ("HISTO_DESTRUCTEUR_ID");
 
--- OSE_DIVERS
-CREATE OR REPLACE PACKAGE BODY "OSE_DIVERS" AS
-  OSE_UTILISATEUR_ID NUMERIC;
-  OSE_SOURCE_ID NUMERIC;
+-- SERVICE_REFERENTIEL_HMFK_IDX
+CREATE INDEX "SERVICE_REFERENTIEL_HMFK_IDX" ON "SERVICE_REFERENTIEL" ("HISTO_MODIFICATEUR_ID");
 
+-- SERVICE_REFERENTIEL_PK
+CREATE UNIQUE INDEX "SERVICE_REFERENTIEL_PK" ON "SERVICE_REFERENTIEL" ("ID");
 
+-- SERVICE__UN
+CREATE UNIQUE INDEX "SERVICE__UN" ON "SERVICE" ("INTERVENANT_ID", "ELEMENT_PEDAGOGIQUE_ID", "ETABLISSEMENT_ID", "HISTO_DESTRUCTION");
 
+-- SEUIL_CHARGE_ANNEE_IDX
+CREATE INDEX "SEUIL_CHARGE_ANNEE_IDX" ON "SEUIL_CHARGE" ("ANNEE_ID");
 
-PROCEDURE CALCULER_TABLEAUX_BORD IS
-BEGIN
-  FOR d IN (
-    SELECT tbl_name
-    FROM tbl
-    WHERE tbl_name <> 'formule' -- TROP LONG !!
-    ORDER BY ordre
-  )
-  LOOP
-    UNICAEN_TBL.CALCULER(d.tbl_name);
-    dbms_output.put_line('Calcul du tableau de bord "' || d.tbl_name || '" effectué');
-    COMMIT;
-  END LOOP;
-END;
+-- SEUIL_CHARGE_GTF_IDX
+CREATE INDEX "SEUIL_CHARGE_GTF_IDX" ON "SEUIL_CHARGE" ("GROUPE_TYPE_FORMATION_ID");
 
+-- SEUIL_CHARGE_HC_IDX
+CREATE INDEX "SEUIL_CHARGE_HC_IDX" ON "SEUIL_CHARGE" ("HISTO_CREATEUR_ID");
 
+-- SEUIL_CHARGE_HD_IDX
+CREATE INDEX "SEUIL_CHARGE_HD_IDX" ON "SEUIL_CHARGE" ("HISTO_DESTRUCTEUR_ID");
 
-FUNCTION GET_OSE_UTILISATEUR_ID RETURN NUMERIC IS
-BEGIN
-  IF OSE_DIVERS.OSE_UTILISATEUR_ID IS NULL THEN
-    SELECT
-      to_number(valeur) INTO OSE_DIVERS.OSE_UTILISATEUR_ID
-    FROM
-      parametre
-    WHERE
-      nom = 'oseuser';
-  END IF;
+-- SEUIL_CHARGE_HM_IDX
+CREATE INDEX "SEUIL_CHARGE_HM_IDX" ON "SEUIL_CHARGE" ("HISTO_MODIFICATEUR_ID");
 
-  RETURN OSE_DIVERS.OSE_UTILISATEUR_ID;
-END;
+-- SEUIL_CHARGE_PK
+CREATE UNIQUE INDEX "SEUIL_CHARGE_PK" ON "SEUIL_CHARGE" ("ID");
 
+-- SEUIL_CHARGE_SCENARIO_IDX
+CREATE INDEX "SEUIL_CHARGE_SCENARIO_IDX" ON "SEUIL_CHARGE" ("SCENARIO_ID");
 
+-- SEUIL_CHARGE_STRUCTURE_IDX
+CREATE INDEX "SEUIL_CHARGE_STRUCTURE_IDX" ON "SEUIL_CHARGE" ("STRUCTURE_ID");
 
-FUNCTION GET_OSE_SOURCE_ID RETURN NUMERIC IS
-BEGIN
-  IF OSE_DIVERS.OSE_SOURCE_ID IS NULL THEN
-    SELECT
-      id INTO OSE_DIVERS.OSE_SOURCE_ID
-    FROM
-      source
-    WHERE
-      code = 'OSE';
-  END IF;
+-- SEUIL_CHARGE_TI_IDX
+CREATE INDEX "SEUIL_CHARGE_TI_IDX" ON "SEUIL_CHARGE" ("TYPE_INTERVENTION_ID");
 
-  RETURN OSE_DIVERS.OSE_SOURCE_ID;
-END;
+-- SI_SOURCE_FK_IDX
+CREATE INDEX "SI_SOURCE_FK_IDX" ON "STATUT_INTERVENANT" ("SOURCE_ID");
 
+-- SOURCE_CODE_UN
+CREATE UNIQUE INDEX "SOURCE_CODE_UN" ON "SOURCE" ("CODE");
 
+-- SOURCE_PK
+CREATE UNIQUE INDEX "SOURCE_PK" ON "SOURCE" ("ID");
 
-FUNCTION INTERVENANT_HAS_PRIVILEGE( intervenant_id NUMERIC, privilege_name VARCHAR2 ) RETURN NUMERIC IS
-  statut statut_intervenant%rowtype;
-  itype  type_intervenant%rowtype;
-  res NUMERIC;
-BEGIN
-  res := 1;
-  SELECT si.* INTO statut FROM statut_intervenant si JOIN intervenant i ON i.statut_id = si.id WHERE i.id = intervenant_id;
-  SELECT ti.* INTO itype  FROM type_intervenant ti WHERE ti.id = statut.type_intervenant_id;
+-- SRFR_FK_IDX
+CREATE INDEX "SRFR_FK_IDX" ON "SERVICE_REFERENTIEL" ("FONCTION_ID");
 
-  /* DEPRECATED */
-  IF 'saisie_service' = privilege_name THEN
-    res := statut.peut_saisir_service;
-    RETURN res;
-  ELSIF 'saisie_service_exterieur' = privilege_name THEN
-    --IF INTERVENANT_HAS_PRIVILEGE( intervenant_id, 'saisie_service' ) = 0 OR itype.code = 'E' THEN -- cascade
-    IF itype.code = 'E' THEN
-      res := 0;
-    END IF;
-    RETURN res;
-  ELSIF 'saisie_service_referentiel' = privilege_name THEN
-    IF itype.code = 'E' THEN
-      res := 0;
-    END IF;
-    RETURN res;
-  ELSIF 'saisie_service_referentiel_autre_structure' = privilege_name THEN
-    res := 1;
-    RETURN res;
-  ELSIF 'saisie_motif_non_paiement' = privilege_name THEN
-    res := statut.peut_saisir_motif_non_paiement;
-    RETURN res;
-  END IF;
-  /* FIN DE DEPRECATED */
+-- SR_INTERVENANT_FK_IDX
+CREATE INDEX "SR_INTERVENANT_FK_IDX" ON "SERVICE_REFERENTIEL" ("INTERVENANT_ID");
 
-  SELECT
-    count(*)
-  INTO
-    res
-  FROM
-    intervenant i
-    JOIN statut_privilege sp ON sp.statut_id = i.statut_id
-    JOIN privilege p ON p.id = sp.privilege_id
-    JOIN categorie_privilege cp ON cp.id = p.categorie_id
-  WHERE
-    i.id = INTERVENANT_HAS_PRIVILEGE.intervenant_id
-    AND cp.code || '-' || p.code = privilege_name;
+-- SR_STRUCTURE_FK_IDX
+CREATE INDEX "SR_STRUCTURE_FK_IDX" ON "SERVICE_REFERENTIEL" ("STRUCTURE_ID");
 
-  RETURN res;
-END;
+-- STATUT_INTERVENANT_HCFK_IDX
+CREATE INDEX "STATUT_INTERVENANT_HCFK_IDX" ON "STATUT_INTERVENANT" ("HISTO_CREATEUR_ID");
 
-FUNCTION implode(i_query VARCHAR2, i_seperator VARCHAR2 DEFAULT ',') RETURN VARCHAR2 AS
-  l_return CLOB:='';
-  l_temp CLOB;
-  TYPE r_cursor is REF CURSOR;
-  rc r_cursor;
-BEGIN
-  OPEN rc FOR i_query;
-  LOOP
-    FETCH rc INTO L_TEMP;
-    EXIT WHEN RC%NOTFOUND;
-    l_return:=l_return||L_TEMP||i_seperator;
-  END LOOP;
-  RETURN RTRIM(l_return,i_seperator);
-END;
+-- STATUT_INTERVENANT_HDFK_IDX
+CREATE INDEX "STATUT_INTERVENANT_HDFK_IDX" ON "STATUT_INTERVENANT" ("HISTO_DESTRUCTEUR_ID");
 
-PROCEDURE intervenant_horodatage_service( INTERVENANT_ID NUMERIC, TYPE_VOLUME_HORAIRE_ID NUMERIC, REFERENTIEL NUMERIC, HISTO_MODIFICATEUR_ID NUMERIC, HISTO_MODIFICATION DATE ) AS
-BEGIN
-    MERGE INTO histo_intervenant_service his USING dual ON (
+-- STATUT_INTERVENANT_HMFK_IDX
+CREATE INDEX "STATUT_INTERVENANT_HMFK_IDX" ON "STATUT_INTERVENANT" ("HISTO_MODIFICATEUR_ID");
 
-          his.INTERVENANT_ID                = intervenant_horodatage_service.INTERVENANT_ID
-      AND NVL(his.TYPE_VOLUME_HORAIRE_ID,0) = NVL(intervenant_horodatage_service.TYPE_VOLUME_HORAIRE_ID,0)
-      AND his.REFERENTIEL                   = intervenant_horodatage_service.REFERENTIEL
+-- STATUT_INTERVENANT_ODRE_UN
+CREATE UNIQUE INDEX "STATUT_INTERVENANT_ODRE_UN" ON "STATUT_INTERVENANT" ("HISTO_DESTRUCTION", "ORDRE");
 
-    ) WHEN MATCHED THEN UPDATE SET
+-- STATUT_INTERVENANT_PK
+CREATE UNIQUE INDEX "STATUT_INTERVENANT_PK" ON "STATUT_INTERVENANT" ("ID");
 
-      HISTO_MODIFICATEUR_ID = intervenant_horodatage_service.HISTO_MODIFICATEUR_ID,
-      HISTO_MODIFICATION = intervenant_horodatage_service.HISTO_MODIFICATION
+-- STATUT_INTERVENANT_TYPE_FK_IDX
+CREATE INDEX "STATUT_INTERVENANT_TYPE_FK_IDX" ON "STATUT_INTERVENANT" ("TYPE_INTERVENANT_ID");
 
-    WHEN NOT MATCHED THEN INSERT (
+-- STATUT_INTERVENANT__UN
+CREATE UNIQUE INDEX "STATUT_INTERVENANT__UN" ON "STATUT_INTERVENANT" ("SOURCE_CODE");
 
-      ID,
-      INTERVENANT_ID,
-      TYPE_VOLUME_HORAIRE_ID,
-      REFERENTIEL,
-      HISTO_MODIFICATEUR_ID,
-      HISTO_MODIFICATION
-    ) VALUES (
-      HISTO_INTERVENANT_SERVI_ID_SEQ.NEXTVAL,
-      intervenant_horodatage_service.INTERVENANT_ID,
-      intervenant_horodatage_service.TYPE_VOLUME_HORAIRE_ID,
-      intervenant_horodatage_service.REFERENTIEL,
-      intervenant_horodatage_service.HISTO_MODIFICATEUR_ID,
-      intervenant_horodatage_service.HISTO_MODIFICATION
+-- STATUT_PRIVILEGE_PK
+CREATE UNIQUE INDEX "STATUT_PRIVILEGE_PK" ON "STATUT_PRIVILEGE" ("STATUT_ID", "PRIVILEGE_ID");
 
-    );
-END;
+-- STAT_PRIV_PRIVILEGE_FK_IDX
+CREATE INDEX "STAT_PRIV_PRIVILEGE_FK_IDX" ON "STATUT_PRIVILEGE" ("PRIVILEGE_ID");
 
+-- STAT_PRIV_STATUT_FK_IDX
+CREATE INDEX "STAT_PRIV_STATUT_FK_IDX" ON "STATUT_PRIVILEGE" ("STATUT_ID");
 
-FUNCTION NIVEAU_FORMATION_ID_CALC( gtf_id NUMERIC, gtf_pertinence_niveau NUMERIC, niveau NUMERIC DEFAULT NULL ) RETURN NUMERIC AS
-BEGIN
-  IF 1 <> gtf_pertinence_niveau OR niveau IS NULL OR niveau < 1 OR gtf_id < 1 THEN RETURN NULL; END IF;
-  RETURN gtf_id * 256 + niveau;
-END;
+-- STRUCTURE_CODE_UN
+CREATE UNIQUE INDEX "STRUCTURE_CODE_UN" ON "STRUCTURE" ("CODE", "HISTO_DESTRUCTION");
 
-FUNCTION STR_REDUCE( str CLOB ) RETURN CLOB IS
-BEGIN
-  RETURN utl_raw.cast_to_varchar2((nlssort(str, 'nls_sort=binary_ai')));
-END;
+-- STRUCTURE_HCFK_IDX
+CREATE INDEX "STRUCTURE_HCFK_IDX" ON "STRUCTURE" ("HISTO_CREATEUR_ID");
 
-FUNCTION STR_FIND( haystack CLOB, needle VARCHAR2 ) RETURN NUMERIC IS
-BEGIN
-  IF STR_REDUCE( haystack ) LIKE STR_REDUCE( '%' || needle || '%' ) THEN RETURN 1; END IF;
-  RETURN 0;
-END;
+-- STRUCTURE_HDFK_IDX
+CREATE INDEX "STRUCTURE_HDFK_IDX" ON "STRUCTURE" ("HISTO_DESTRUCTEUR_ID");
 
-FUNCTION LIKED( haystack CLOB, needle CLOB ) RETURN NUMERIC IS
-BEGIN
-  RETURN CASE WHEN STR_REDUCE(haystack) LIKE STR_REDUCE(needle) THEN 1 ELSE 0 END;
-END;
+-- STRUCTURE_HMFK_IDX
+CREATE INDEX "STRUCTURE_HMFK_IDX" ON "STRUCTURE" ("HISTO_MODIFICATEUR_ID");
 
-PROCEDURE DO_NOTHING IS
-BEGIN
-  RETURN;
-END;
+-- STRUCTURE_PK
+CREATE UNIQUE INDEX "STRUCTURE_PK" ON "STRUCTURE" ("ID");
 
-PROCEDURE CALCUL_TAUX( eff_fi FLOAT, eff_fc FLOAT, eff_fa FLOAT, fi NUMERIC, fc NUMERIC, fa NUMERIC, r_fi OUT FLOAT, r_fc OUT FLOAT, r_fa OUT FLOAT, arrondi NUMERIC DEFAULT 15 ) IS
-  nt FLOAT;
-  bi FLOAT;
-  bc FLOAT;
-  ba FLOAT;
-  reste FLOAT;
-BEGIN
-  bi := eff_fi * fi;
-  bc := eff_fc * fc;
-  ba := eff_fa * fa;
-  nt := bi + bc + ba;
+-- STRUCTURE_SOURCE_CODE_UN
+CREATE UNIQUE INDEX "STRUCTURE_SOURCE_CODE_UN" ON "STRUCTURE" ("SOURCE_CODE", "HISTO_DESTRUCTION");
 
-  IF nt = 0 THEN -- au cas ou, alors on ne prend plus en compte les effectifs!!
-    bi := fi;
-    bc := fc;
-    ba := fa;
-    nt := bi + bc + ba;
-  END IF;
+-- SYNC_LOG_PK
+CREATE UNIQUE INDEX "SYNC_LOG_PK" ON "SYNC_LOG" ("ID");
 
-  IF nt = 0 THEN -- toujours au cas ou...
-    bi := 1;
-    bc := 0;
-    ba := 0;
-    nt := bi + bc + ba;
-  END IF;
+-- S_ELEMENT_PEDAGOGIQUE_FK_IDX
+CREATE INDEX "S_ELEMENT_PEDAGOGIQUE_FK_IDX" ON "SERVICE" ("ELEMENT_PEDAGOGIQUE_ID");
 
-  -- Calcul
-  r_fi := bi / nt;
-  r_fc := bc / nt;
-  r_fa := ba / nt;
+-- TAS_STATUT_INTERVENANT_FK_IDX
+CREATE INDEX "TAS_STATUT_INTERVENANT_FK_IDX" ON "TYPE_AGREMENT_STATUT" ("STATUT_INTERVENANT_ID");
 
-  -- Arrondis
-  r_fi := ROUND( r_fi, arrondi );
-  r_fc := ROUND( r_fc, arrondi );
-  r_fa := ROUND( r_fa, arrondi );
+-- TAS_TYPE_AGREMENT_FK_IDX
+CREATE INDEX "TAS_TYPE_AGREMENT_FK_IDX" ON "TYPE_AGREMENT_STATUT" ("TYPE_AGREMENT_ID");
 
-  -- détermination du reste
-  reste := 1 - r_fi - r_fc - r_fa;
+-- TAUX_HORAIRE_HETD_HCFK_IDX
+CREATE INDEX "TAUX_HORAIRE_HETD_HCFK_IDX" ON "TAUX_HORAIRE_HETD" ("HISTO_CREATEUR_ID");
 
-  -- répartition éventuelle du reste
-  IF reste <> 0 THEN
-    IF r_fi > 0 THEN r_fi := r_fi + reste;
-    ELSIF r_fc > 0 THEN r_fc := r_fc + reste;
-    ELSE r_fa := r_fa + reste; END IF;
-  END IF;
+-- TAUX_HORAIRE_HETD_HDFK_IDX
+CREATE INDEX "TAUX_HORAIRE_HETD_HDFK_IDX" ON "TAUX_HORAIRE_HETD" ("HISTO_DESTRUCTEUR_ID");
 
-END;
+-- TAUX_HORAIRE_HETD_HMFK_IDX
+CREATE INDEX "TAUX_HORAIRE_HETD_HMFK_IDX" ON "TAUX_HORAIRE_HETD" ("HISTO_MODIFICATEUR_ID");
 
+-- TAUX_HORAIRE_HETD_PK
+CREATE UNIQUE INDEX "TAUX_HORAIRE_HETD_PK" ON "TAUX_HORAIRE_HETD" ("ID");
 
-FUNCTION CALCUL_TAUX_FI( eff_fi FLOAT, eff_fc FLOAT, eff_fa FLOAT, fi NUMERIC, fc NUMERIC, fa NUMERIC, arrondi NUMERIC DEFAULT 15 ) RETURN FLOAT IS
-  ri FLOAT;
-  rc FLOAT;
-  ra FLOAT;
-BEGIN
-  CALCUL_TAUX( eff_fi, eff_fc, eff_fa, fi, fc, fa, ri, rc, ra, arrondi );
-  RETURN ri;
-END;
+-- TBL_AGREMENT_PK_IDX
+CREATE UNIQUE INDEX "TBL_AGREMENT_PK_IDX" ON "TBL_AGREMENT" ("ID");
+
+-- TBL_AGREMENT__UN_IDX
+CREATE UNIQUE INDEX "TBL_AGREMENT__UN_IDX" ON "TBL_AGREMENT" ("TYPE_AGREMENT_ID", "INTERVENANT_ID", "STRUCTURE_ID", "TO_DELETE");
+
+-- TBL_AGR_AGREMENT_FK_IDX
+CREATE INDEX "TBL_AGR_AGREMENT_FK_IDX" ON "TBL_AGREMENT" ("AGREMENT_ID");
+
+-- TBL_AGR_ANNEE_FK_IDX
+CREATE INDEX "TBL_AGR_ANNEE_FK_IDX" ON "TBL_AGREMENT" ("ANNEE_ID");
+
+-- TBL_AGR_INTERVENANT_FK_IDX
+CREATE INDEX "TBL_AGR_INTERVENANT_FK_IDX" ON "TBL_AGREMENT" ("INTERVENANT_ID");
+
+-- TBL_AGR_STRUCTURE_FK_IDX
+CREATE INDEX "TBL_AGR_STRUCTURE_FK_IDX" ON "TBL_AGREMENT" ("STRUCTURE_ID");
 
-FUNCTION CALCUL_TAUX_FC( eff_fi FLOAT, eff_fc FLOAT, eff_fa FLOAT, fi NUMERIC, fc NUMERIC, fa NUMERIC, arrondi NUMERIC DEFAULT 15 ) RETURN FLOAT IS
-  ri FLOAT;
-  rc FLOAT;
-  ra FLOAT;
-BEGIN
-  CALCUL_TAUX( eff_fi, eff_fc, eff_fa, fi, fc, fa, ri, rc, ra, arrondi );
-  RETURN rc;
-END;
+-- TBL_AGR_TYPE_AGREMENT_FK_IDX
+CREATE INDEX "TBL_AGR_TYPE_AGREMENT_FK_IDX" ON "TBL_AGREMENT" ("TYPE_AGREMENT_ID");
 
-FUNCTION CALCUL_TAUX_FA( eff_fi FLOAT, eff_fc FLOAT, eff_fa FLOAT, fi NUMERIC, fc NUMERIC, fa NUMERIC, arrondi NUMERIC DEFAULT 15 ) RETURN FLOAT IS
-  ri FLOAT;
-  rc FLOAT;
-  ra FLOAT;
-BEGIN
-  CALCUL_TAUX( eff_fi, eff_fc, eff_fa, fi, fc, fa, ri, rc, ra, arrondi );
-  RETURN ra;
-END;
+-- TBL_CHARGENS_PK
+CREATE UNIQUE INDEX "TBL_CHARGENS_PK" ON "TBL_CHARGENS" ("ID");
 
-FUNCTION STRUCTURE_UNIV_GET_ID RETURN NUMERIC IS
-  res NUMERIC;
-BEGIN
-  SELECT id INTO res FROM structure WHERE source_code = 'UNIV';
-  RETURN res;
-END;
+-- TBL_CHARGENS_SEUILS_DEF_PK
+CREATE UNIQUE INDEX "TBL_CHARGENS_SEUILS_DEF_PK" ON "TBL_CHARGENS_SEUILS_DEF" ("ID");
 
-PROCEDURE SYNC_LOG( msg CLOB ) IS
-BEGIN
-  INSERT INTO SYNC_LOG( id, date_sync, message ) VALUES ( sync_log_id_seq.nextval, systimestamp, msg );
-END;
+-- TBL_CHARGENS_SEUILS_DEF__UN
+CREATE UNIQUE INDEX "TBL_CHARGENS_SEUILS_DEF__UN" ON "TBL_CHARGENS_SEUILS_DEF" ("SCENARIO_ID", "TYPE_INTERVENTION_ID", "STRUCTURE_ID", "GROUPE_TYPE_FORMATION_ID", "ANNEE_ID");
 
-FUNCTION FORMATTED_RIB (bic VARCHAR2, iban VARCHAR2) RETURN VARCHAR2 IS
-BEGIN
-  if bic is null and iban is null then
-    return null;
-  end if;
-  RETURN regexp_replace(bic, '[[:space:]]+', '') || '-' || regexp_replace(iban, '[[:space:]]+', '');
-END;
+-- TBL_CHARGENS__UN
+CREATE UNIQUE INDEX "TBL_CHARGENS__UN" ON "TBL_CHARGENS" ("ANNEE_ID", "NOEUD_ID", "SCENARIO_ID", "TYPE_HEURES_ID", "TYPE_INTERVENTION_ID", "ELEMENT_PEDAGOGIQUE_ID", "ETAPE_ID", "ETAPE_ENS_ID", "STRUCTURE_ID", "GROUPE_TYPE_FORMATION_ID");
 
-FUNCTION FORMATTED_ADRESSE(
-    no_voie                VARCHAR2,
-    nom_voie               VARCHAR2,
-    batiment               VARCHAR2,
-    mention_complementaire VARCHAR2,
-    localite               VARCHAR2,
-    code_postal            VARCHAR2,
-    ville                  VARCHAR2,
-    pays_libelle           VARCHAR2)
-  RETURN VARCHAR2
-IS
-BEGIN
-  return
-    -- concaténation des éléments non null séparés par ', '
-    trim(trim(',' FROM REPLACE(', ' || NVL(no_voie,'#') || ', ' || NVL(nom_voie,'#') || ', ' || NVL(batiment,'#') || ', ' || NVL(mention_complementaire,'#'), ', #', ''))) ||
-    -- saut de ligne complet
-    chr(13) || chr(10) ||
-    -- concaténation des éléments non null séparés par ', '
-    trim(trim(',' FROM REPLACE(', ' || NVL(localite,'#') || ', ' || NVL(code_postal,'#') || ', ' || NVL(ville,'#') || ', ' || NVL(pays_libelle,'#'), ', #', '')));
-END;
+-- TBL_CLOTURE_REALISE_ANN_FK_IDX
+CREATE INDEX "TBL_CLOTURE_REALISE_ANN_FK_IDX" ON "TBL_CLOTURE_REALISE" ("ANNEE_ID");
 
+-- TBL_CLOTURE_REALISE_PK_IDX
+CREATE UNIQUE INDEX "TBL_CLOTURE_REALISE_PK_IDX" ON "TBL_CLOTURE_REALISE" ("ID");
 
+-- TBL_CLOTURE_REALISE__UN_IDX
+CREATE UNIQUE INDEX "TBL_CLOTURE_REALISE__UN_IDX" ON "TBL_CLOTURE_REALISE" ("INTERVENANT_ID", "TO_DELETE");
 
-FUNCTION GET_TRIGGER_BODY( TRIGGER_NAME VARCHAR2 ) RETURN VARCHAR2 IS
-  vlong long;
-BEGIN
-  SELECT trigger_body INTO vlong FROM all_triggers WHERE trigger_name = GET_TRIGGER_BODY.TRIGGER_NAME;
+-- TBL_CONTRAT_ANNEE_FK_IDX
+CREATE INDEX "TBL_CONTRAT_ANNEE_FK_IDX" ON "TBL_CONTRAT" ("ANNEE_ID");
 
-  RETURN substr(vlong, 1, 32767);
-END;
+-- TBL_CONTRAT_INTERVENANT_FK_IDX
+CREATE INDEX "TBL_CONTRAT_INTERVENANT_FK_IDX" ON "TBL_CONTRAT" ("INTERVENANT_ID");
 
-END OSE_DIVERS;
-/
+-- TBL_CONTRAT_PK_IDX
+CREATE UNIQUE INDEX "TBL_CONTRAT_PK_IDX" ON "TBL_CONTRAT" ("ID");
 
--- OSE_EVENT
-CREATE OR REPLACE PACKAGE BODY "OSE_EVENT" AS
+-- TBL_CONTRAT_STRUCTURE_FK_IDX
+CREATE INDEX "TBL_CONTRAT_STRUCTURE_FK_IDX" ON "TBL_CONTRAT" ("STRUCTURE_ID");
 
-  PROCEDURE ON_BEFORE_FORMULE_RES_DELETE( INTERVENANT_ID NUMERIC ) IS
-  BEGIN
+-- TBL_CONTRAT__UN_IDX
+CREATE UNIQUE INDEX "TBL_CONTRAT__UN_IDX" ON "TBL_CONTRAT" ("INTERVENANT_ID", "STRUCTURE_ID", "TO_DELETE");
 
-    -- recherche des services à payer prêts à être supprimés pour cet intervenant et check
-    FOR sap IN (
-      SELECT
-        frs.id
-      FROM 
-        FORMULE_RESULTAT_SERVICE frs
-        JOIN FORMULE_RESULTAT fr ON fr.id = frs.formule_resultat_id AND fr.intervenant_id = ON_BEFORE_FORMULE_RES_DELETE.intervenant_id
-        JOIN TYPE_VOLUME_HORAIRE tvh ON tvh.id = fr.type_volume_horaire_id AND tvh.code = 'REALISE'
-        JOIN ETAT_VOLUME_HORAIRE evh ON evh.id = fr.etat_volume_horaire_id AND evh.code = 'valide'
-      WHERE
-        frs.TO_DELETE = 1
-    )
-    LOOP
-      OSE_PAIEMENT.CHECK_BAD_PAIEMENTS( sap.id );
-    END LOOP;
+-- TBL_CSD_ANNEE_IDX
+CREATE INDEX "TBL_CSD_ANNEE_IDX" ON "TBL_CHARGENS_SEUILS_DEF" ("ANNEE_ID");
 
-    FOR sap IN (
-      SELECT
-        frs.id
-      FROM 
-        FORMULE_RESULTAT_SERVICE_REF frs
-        JOIN FORMULE_RESULTAT fr ON fr.id = frs.formule_resultat_id AND fr.intervenant_id = ON_BEFORE_FORMULE_RES_DELETE.intervenant_id
-        JOIN TYPE_VOLUME_HORAIRE tvh ON tvh.id = fr.type_volume_horaire_id AND tvh.code = 'REALISE'
-        JOIN ETAT_VOLUME_HORAIRE evh ON evh.id = fr.etat_volume_horaire_id AND evh.code = 'valide'
-      WHERE
-        frs.TO_DELETE = 1
-    )
-    LOOP
-      OSE_PAIEMENT.CHECK_BAD_PAIEMENTS( null, sap.id );
-    END LOOP;
+-- TBL_CSD_GTF_IDX
+CREATE INDEX "TBL_CSD_GTF_IDX" ON "TBL_CHARGENS_SEUILS_DEF" ("GROUPE_TYPE_FORMATION_ID");
 
-    DELETE FROM MISE_EN_PAIEMENT WHERE histo_destruction IS NOT NULL AND
-      formule_res_service_id IN (
-        SELECT frs.id 
-        FROM 
-          formule_resultat_service frs 
-          JOIN formule_resultat fr ON fr.id = frs.formule_resultat_id
-        WHERE 
-          frs.to_delete = 1 
-          AND fr.intervenant_id = ON_BEFORE_FORMULE_RES_DELETE.INTERVENANT_ID
-      );
+-- TBL_CSD_SCENARIO_IDX
+CREATE INDEX "TBL_CSD_SCENARIO_IDX" ON "TBL_CHARGENS_SEUILS_DEF" ("SCENARIO_ID");
 
-    DELETE FROM MISE_EN_PAIEMENT WHERE histo_destruction IS NOT NULL AND
-      formule_res_service_ref_id IN (
-        SELECT frsr.id 
-        FROM 
-          formule_resultat_service_ref frsr
-          JOIN formule_resultat fr ON fr.id = frsr.formule_resultat_id
-        WHERE 
-          frsr.to_delete = 1 
-          AND fr.intervenant_id = ON_BEFORE_FORMULE_RES_DELETE.INTERVENANT_ID
-      );
-  END;
+-- TBL_CSD_STRUCTURE_IDX
+CREATE INDEX "TBL_CSD_STRUCTURE_IDX" ON "TBL_CHARGENS_SEUILS_DEF" ("STRUCTURE_ID");
 
+-- TBL_CSD_TYPE_INTERVENTION_IDX
+CREATE INDEX "TBL_CSD_TYPE_INTERVENTION_IDX" ON "TBL_CHARGENS_SEUILS_DEF" ("TYPE_INTERVENTION_ID");
 
+-- TBL_DEMS_TBL_NAME_IDX
+CREATE INDEX "TBL_DEMS_TBL_NAME_IDX" ON "TBL_DEMS" ("TBL_NAME");
 
-  PROCEDURE ON_AFTER_FORMULE_CALC( INTERVENANT_ID NUMERIC ) IS
-    p unicaen_tbl.t_params;
-  BEGIN
-    p := UNICAEN_TBL.make_params('INTERVENANT_ID', ON_AFTER_FORMULE_CALC.intervenant_id);
+-- TBL_DMEP_LIQUIDATION_PK_IDX
+CREATE UNIQUE INDEX "TBL_DMEP_LIQUIDATION_PK_IDX" ON "TBL_DMEP_LIQUIDATION" ("ID");
 
-    UNICAEN_TBL.CALCULER( 'agrement', p );
-    UNICAEN_TBL.CALCULER( 'paiement', p );
-    UNICAEN_TBL.CALCULER( 'workflow', p );
-  END;
+-- TBL_DMEP_LIQUIDATION__UN_IDX
+CREATE UNIQUE INDEX "TBL_DMEP_LIQUIDATION__UN_IDX" ON "TBL_DMEP_LIQUIDATION" ("ANNEE_ID", "TYPE_RESSOURCE_ID", "STRUCTURE_ID", "TO_DELETE");
 
-END OSE_EVENT;
-/
+-- TBL_DMLIQ_ANNEE_FK_IDX
+CREATE INDEX "TBL_DMLIQ_ANNEE_FK_IDX" ON "TBL_DMEP_LIQUIDATION" ("ANNEE_ID");
 
--- OSE_FORMULE
-CREATE OR REPLACE PACKAGE BODY "OSE_FORMULE" AS
+-- TBL_DMLIQ_STRUCTURE_FK_IDX
+CREATE INDEX "TBL_DMLIQ_STRUCTURE_FK_IDX" ON "TBL_DMEP_LIQUIDATION" ("STRUCTURE_ID");
 
-  v_date_obs DATE;
-  debug_level NUMERIC DEFAULT 0;
-  d_all_volume_horaire_ref  t_lst_volume_horaire_ref;
-  d_all_volume_horaire      t_lst_volume_horaire;
-  arrondi NUMERIC DEFAULT 2;
+-- TBL_DMLIQ_TYPE_RESSOUR_FK
+CREATE INDEX "TBL_DMLIQ_TYPE_RESSOUR_FK" ON "TBL_DMEP_LIQUIDATION" ("TYPE_RESSOURCE_ID");
 
-  INTERVENANT_ID NUMERIC DEFAULT NULL;
+-- TBL_DOSSIER_ANNEE_FK_IDX
+CREATE INDEX "TBL_DOSSIER_ANNEE_FK_IDX" ON "TBL_DOSSIER" ("ANNEE_ID");
 
-  FUNCTION GET_INTERVENANT_ID RETURN NUMERIC IS
-  BEGIN
-    RETURN INTERVENANT_ID;
-  END;
+-- TBL_DOSSIER_DOSSIER_FK_IDX
+CREATE INDEX "TBL_DOSSIER_DOSSIER_FK_IDX" ON "TBL_DOSSIER" ("DOSSIER_ID");
 
-  FUNCTION GET_DATE_OBS RETURN DATE AS
-  BEGIN
-    RETURN COALESCE( v_date_obs, SYSDATE );
-  END;
+-- TBL_DOSSIER_PK_IDX
+CREATE UNIQUE INDEX "TBL_DOSSIER_PK_IDX" ON "TBL_DOSSIER" ("ID");
 
-  FUNCTION SET_DATE_OBS( DATE_OBS DATE DEFAULT NULL ) RETURN DATE IS
-  BEGIN
-    v_date_obs := DATE_OBS;
-    RETURN v_date_obs;
-  END;
+-- TBL_DOSSIER_VALIDATION_FK_IDX
+CREATE INDEX "TBL_DOSSIER_VALIDATION_FK_IDX" ON "TBL_DOSSIER" ("VALIDATION_ID");
 
-  PROCEDURE SET_DEBUG_LEVEL( DEBUG_LEVEL NUMERIC ) IS
-  BEGIN
-    ose_formule.debug_level := SET_DEBUG_LEVEL.DEBUG_LEVEL;
-  END;
+-- TBL_DOSSIER__UN_IDX
+CREATE UNIQUE INDEX "TBL_DOSSIER__UN_IDX" ON "TBL_DOSSIER" ("INTERVENANT_ID", "TO_DELETE");
 
-  FUNCTION GET_DEBUG_LEVEL RETURN NUMERIC IS
-  BEGIN
-    RETURN ose_formule.debug_level;
-  END;
+-- TBL_LIEN_ACTIF_IDX
+CREATE INDEX "TBL_LIEN_ACTIF_IDX" ON "TBL_LIEN" ("ACTIF");
 
-  FUNCTION GET_TAUX_HORAIRE_HETD( DATE_OBS DATE DEFAULT NULL ) RETURN FLOAT IS
-    taux_hetd FLOAT;
-  BEGIN
-    SELECT valeur INTO taux_hetd 
-    FROM taux_horaire_hetd t 
-    WHERE 
-      DATE_OBS BETWEEN t.histo_creation AND COALESCE(t.histo_destruction,GREATEST(SYSDATE,DATE_OBS))
-      AND rownum = 1
-    ORDER BY
-      histo_creation DESC;
-    RETURN taux_hetd;
-  END;
+-- TBL_LIEN_LIEN_IDX
+CREATE INDEX "TBL_LIEN_LIEN_IDX" ON "TBL_LIEN" ("LIEN_ID");
 
-  PROCEDURE UPDATE_ANNEE_TAUX_HETD IS
-  BEGIN
-    UPDATE annee SET taux_hetd = GET_TAUX_HORAIRE_HETD(date_fin);
-  END;
+-- TBL_LIEN_NOEUD_INF_IDX
+CREATE INDEX "TBL_LIEN_NOEUD_INF_IDX" ON "TBL_LIEN" ("NOEUD_INF_ID");
 
+-- TBL_LIEN_NOEUD_SUP_IDX
+CREATE INDEX "TBL_LIEN_NOEUD_SUP_IDX" ON "TBL_LIEN" ("NOEUD_SUP_ID");
 
+-- TBL_LIEN_PK
+CREATE UNIQUE INDEX "TBL_LIEN_PK" ON "TBL_LIEN" ("ID");
 
-  PROCEDURE CALCULER_TOUT( ANNEE_ID NUMERIC DEFAULT NULL ) IS
-    a_id NUMERIC;
-  BEGIN
-    a_id := NVL(CALCULER_TOUT.ANNEE_ID, OSE_PARAMETRE.GET_ANNEE);
-    FOR mp IN (
-      SELECT DISTINCT
-        intervenant_id 
-      FROM 
-        service s
-        JOIN intervenant i ON i.id = s.intervenant_id
-      WHERE
-        s.histo_destruction IS NULL
-        AND i.annee_id = a_id
+-- TBL_LIEN_SCENARIO_IDX
+CREATE INDEX "TBL_LIEN_SCENARIO_IDX" ON "TBL_LIEN" ("SCENARIO_ID");
 
-      UNION
+-- TBL_LIEN_SCENARIO_LIEN_IDX
+CREATE INDEX "TBL_LIEN_SCENARIO_LIEN_IDX" ON "TBL_LIEN" ("SCENARIO_LIEN_ID");
 
-      SELECT DISTINCT
-        intervenant_id
-      FROM
-        service_referentiel sr
-        JOIN intervenant i ON i.id = sr.intervenant_id
-      WHERE
-        sr.histo_destruction IS NULL
-        AND i.annee_id = a_id
+-- TBL_LIEN_STRUCTURE_IDX
+CREATE INDEX "TBL_LIEN_STRUCTURE_IDX" ON "TBL_LIEN" ("STRUCTURE_ID");
 
-    )
-    LOOP
-      CALCULER( mp.intervenant_id );
-    END LOOP;
-  END;
+-- TBL_PAIEMENT_ANNEE_FK_IDX
+CREATE INDEX "TBL_PAIEMENT_ANNEE_FK_IDX" ON "TBL_PAIEMENT" ("ANNEE_ID");
 
+-- TBL_PAIEMENT_FRSR_FK_IDX
+CREATE INDEX "TBL_PAIEMENT_FRSR_FK_IDX" ON "TBL_PAIEMENT" ("FORMULE_RES_SERVICE_REF_ID");
 
+-- TBL_PAIEMENT_FRS_FK_IDX
+CREATE INDEX "TBL_PAIEMENT_FRS_FK_IDX" ON "TBL_PAIEMENT" ("FORMULE_RES_SERVICE_ID");
 
-  FUNCTION ENREGISTRER_RESULTAT( fr formule_resultat%rowtype ) RETURN NUMERIC IS
-    id NUMERIC;
-    ti_code VARCHAR(5);
-  BEGIN
+-- TBL_PAIEMENT_INTERV_FK_IDX
+CREATE INDEX "TBL_PAIEMENT_INTERV_FK_IDX" ON "TBL_PAIEMENT" ("INTERVENANT_ID");
 
-    SELECT
-      ti.code INTO ti_code 
-    FROM 
-      type_intervenant        ti 
-      JOIN statut_intervenant si ON si.type_intervenant_id = ti.id 
-      JOIN intervenant         i ON i.statut_id = si.id 
-    WHERE 
-      i.id = fr.intervenant_id;
+-- TBL_PAIEMENT_MEP_FK_IDX
+CREATE INDEX "TBL_PAIEMENT_MEP_FK_IDX" ON "TBL_PAIEMENT" ("MISE_EN_PAIEMENT_ID");
 
+-- TBL_PAIEMENT_PERIODE_FK_IDX
+CREATE INDEX "TBL_PAIEMENT_PERIODE_FK_IDX" ON "TBL_PAIEMENT" ("PERIODE_PAIEMENT_ID");
 
+-- TBL_PAIEMENT_PK_IDX
+CREATE UNIQUE INDEX "TBL_PAIEMENT_PK_IDX" ON "TBL_PAIEMENT" ("ID");
 
-    MERGE INTO formule_resultat tfr USING dual ON (
+-- TBL_PAIEMENT_STRUCTURE_FK_IDX
+CREATE INDEX "TBL_PAIEMENT_STRUCTURE_FK_IDX" ON "TBL_PAIEMENT" ("STRUCTURE_ID");
 
-          tfr.intervenant_id         = fr.intervenant_id
-      AND tfr.type_volume_horaire_id = fr.type_volume_horaire_id
-      AND tfr.etat_volume_horaire_id = fr.etat_volume_horaire_id
+-- TBL_PAIEMENT__UN
+CREATE UNIQUE INDEX "TBL_PAIEMENT__UN" ON "TBL_PAIEMENT" ("INTERVENANT_ID", "TO_DELETE", "MISE_EN_PAIEMENT_ID", "FORMULE_RES_SERVICE_ID", "FORMULE_RES_SERVICE_REF_ID");
 
-    ) WHEN MATCHED THEN UPDATE SET
+-- TBL_PIECE_JOINTE_ANNEE_FK_IDX
+CREATE INDEX "TBL_PIECE_JOINTE_ANNEE_FK_IDX" ON "TBL_PIECE_JOINTE" ("ANNEE_ID");
 
-      service_du                     = ROUND( fr.service_du, arrondi ),
-      service_fi                     = ROUND( fr.service_fi, arrondi ),
-      service_fa                     = ROUND( fr.service_fa, arrondi ),
-      service_fc                     = ROUND( fr.service_fc, arrondi ),
-      service_referentiel            = ROUND( fr.service_referentiel, arrondi ),
-      heures_compl_fi                = ROUND( fr.heures_compl_fi, arrondi ),
-      heures_compl_fa                = ROUND( fr.heures_compl_fa, arrondi ),
-      heures_compl_fc                = ROUND( fr.heures_compl_fc, arrondi ),
-      heures_compl_fc_majorees       = ROUND( fr.heures_compl_fc_majorees, arrondi ),
-      heures_compl_referentiel       = ROUND( fr.heures_compl_referentiel, arrondi ),
-      total                          = ROUND( fr.total, arrondi ),
-      solde                          = ROUND( fr.solde, arrondi ),
-      sous_service                   = ROUND( fr.sous_service, arrondi ),
-      heures_compl                   = ROUND( fr.heures_compl, arrondi ),
-      to_delete                      = 0
+-- TBL_PIECE_JOINTE_PK_IDX
+CREATE UNIQUE INDEX "TBL_PIECE_JOINTE_PK_IDX" ON "TBL_PIECE_JOINTE" ("ID");
 
-    WHEN NOT MATCHED THEN INSERT (
+-- TBL_PIECE_JOINTE__UN_IDX
+CREATE UNIQUE INDEX "TBL_PIECE_JOINTE__UN_IDX" ON "TBL_PIECE_JOINTE" ("TYPE_PIECE_JOINTE_ID", "INTERVENANT_ID", "TO_DELETE");
 
-      ID,
-      INTERVENANT_ID,
-      TYPE_VOLUME_HORAIRE_ID,
-      ETAT_VOLUME_HORAIRE_ID,
-      SERVICE_DU,
-      SERVICE_FI,
-      SERVICE_FA,
-      SERVICE_FC,
-      SERVICE_REFERENTIEL,
-      HEURES_COMPL_FI,
-      HEURES_COMPL_FA,
-      HEURES_COMPL_FC,
-      HEURES_COMPL_FC_majorees,
-      HEURES_COMPL_REFERENTIEL,
-      TOTAL,
-      SOLDE,
-      SOUS_SERVICE,
-      HEURES_COMPL,
-      TO_DELETE,
-      type_intervenant_code
+-- TBL_PJD_ANNEE_FK_IDX
+CREATE INDEX "TBL_PJD_ANNEE_FK_IDX" ON "TBL_PIECE_JOINTE_DEMANDE" ("ANNEE_ID");
 
-    ) VALUES (
+-- TBL_PJD_INTERVENANT_FK_IDX
+CREATE INDEX "TBL_PJD_INTERVENANT_FK_IDX" ON "TBL_PIECE_JOINTE_DEMANDE" ("INTERVENANT_ID");
 
-      FORMULE_RESULTAT_ID_SEQ.NEXTVAL,
-      fr.intervenant_id,
-      fr.type_volume_horaire_id,
-      fr.etat_volume_horaire_id,
-      ROUND( fr.service_du, arrondi ),
-      ROUND( fr.service_fi, arrondi ),
-      ROUND( fr.service_fa, arrondi ),
-      ROUND( fr.service_fc, arrondi ),
-      ROUND( fr.service_referentiel, arrondi ),
-      ROUND( fr.heures_compl_fi, arrondi ),
-      ROUND( fr.heures_compl_fa, arrondi ),
-      ROUND( fr.heures_compl_fc, arrondi ),
-      ROUND( fr.heures_compl_fc_majorees, arrondi ),
-      ROUND( fr.heures_compl_referentiel, arrondi ),
-      ROUND( fr.total, arrondi ),
-      ROUND( fr.solde, arrondi ),
-      ROUND( fr.sous_service, arrondi ),
-      ROUND( fr.heures_compl, arrondi ),
-      0,
-      ti_code
-    );
+-- TBL_PJD_PK_IDX
+CREATE UNIQUE INDEX "TBL_PJD_PK_IDX" ON "TBL_PIECE_JOINTE_DEMANDE" ("ID");
+
+-- TBL_PJD_TPJ_FK_IDX
+CREATE INDEX "TBL_PJD_TPJ_FK_IDX" ON "TBL_PIECE_JOINTE_DEMANDE" ("TYPE_PIECE_JOINTE_ID");
+
+-- TBL_PJD_UN_IDX
+CREATE UNIQUE INDEX "TBL_PJD_UN_IDX" ON "TBL_PIECE_JOINTE_DEMANDE" ("TYPE_PIECE_JOINTE_ID", "INTERVENANT_ID", "TO_DELETE");
+
+-- TBL_PJF_ANNEE_FK_IDX
+CREATE INDEX "TBL_PJF_ANNEE_FK_IDX" ON "TBL_PIECE_JOINTE_FOURNIE" ("ANNEE_ID");
+
+-- TBL_PJF_FICHIER_FK_IDX
+CREATE INDEX "TBL_PJF_FICHIER_FK_IDX" ON "TBL_PIECE_JOINTE_FOURNIE" ("FICHIER_ID");
+
+-- TBL_PJF_INTERVENANT_FK_IDX
+CREATE INDEX "TBL_PJF_INTERVENANT_FK_IDX" ON "TBL_PIECE_JOINTE_FOURNIE" ("INTERVENANT_ID");
+
+-- TBL_PJF_PIECE_JOINTE_FK_IDX
+CREATE INDEX "TBL_PJF_PIECE_JOINTE_FK_IDX" ON "TBL_PIECE_JOINTE_FOURNIE" ("PIECE_JOINTE_ID");
 
-    SELECT id INTO id FROM formule_resultat tfr WHERE
-          tfr.intervenant_id         = fr.intervenant_id
-      AND tfr.type_volume_horaire_id = fr.type_volume_horaire_id
-      AND tfr.etat_volume_horaire_id = fr.etat_volume_horaire_id;
-    RETURN id;
-  END;
+-- TBL_PJF_PK_IDX
+CREATE UNIQUE INDEX "TBL_PJF_PK_IDX" ON "TBL_PIECE_JOINTE_FOURNIE" ("ID");
 
+-- TBL_PJF_TPJ_FK_IDX
+CREATE INDEX "TBL_PJF_TPJ_FK_IDX" ON "TBL_PIECE_JOINTE_FOURNIE" ("TYPE_PIECE_JOINTE_ID");
 
-  FUNCTION ENREGISTRER_RESULTAT_SERVICE( fs formule_resultat_service%rowtype ) RETURN NUMERIC IS
-    id NUMERIC;
-  BEGIN
-    MERGE INTO formule_resultat_service tfs USING dual ON (
+-- TBL_PJF_UN_IDX
+CREATE UNIQUE INDEX "TBL_PJF_UN_IDX" ON "TBL_PIECE_JOINTE_FOURNIE" ("TYPE_PIECE_JOINTE_ID", "INTERVENANT_ID", "VALIDATION_ID", "FICHIER_ID");
 
-          tfs.formule_resultat_id    = fs.formule_resultat_id
-      AND tfs.service_id             = fs.service_id
+-- TBL_PJF_VALIDATION_FK_IDX
+CREATE INDEX "TBL_PJF_VALIDATION_FK_IDX" ON "TBL_PIECE_JOINTE_FOURNIE" ("VALIDATION_ID");
 
-    ) WHEN MATCHED THEN UPDATE SET
+-- TBL_PJ_INTERVENANT_FK_IDX
+CREATE INDEX "TBL_PJ_INTERVENANT_FK_IDX" ON "TBL_PIECE_JOINTE" ("INTERVENANT_ID");
 
-      service_fi                     = ROUND( fs.service_fi, arrondi ),
-      service_fa                     = ROUND( fs.service_fa, arrondi ),
-      service_fc                     = ROUND( fs.service_fc, arrondi ),
-      heures_compl_fi                = ROUND( fs.heures_compl_fi, arrondi ),
-      heures_compl_fa                = ROUND( fs.heures_compl_fa, arrondi ),
-      heures_compl_fc                = ROUND( fs.heures_compl_fc, arrondi ),
-      heures_compl_fc_majorees       = ROUND( fs.heures_compl_fc_majorees, arrondi ),
-      total                          = ROUND( fs.total, arrondi ),
-      TO_DELETE                      = 0
+-- TBL_PJ_TPJ_FK_IDX
+CREATE INDEX "TBL_PJ_TPJ_FK_IDX" ON "TBL_PIECE_JOINTE" ("TYPE_PIECE_JOINTE_ID");
 
-    WHEN NOT MATCHED THEN INSERT (
+-- TBL_PK
+CREATE UNIQUE INDEX "TBL_PK" ON "TBL" ("TBL_NAME");
 
-      ID,
-      FORMULE_RESULTAT_ID,
-      SERVICE_ID,
-      SERVICE_FI,
-      SERVICE_FA,
-      SERVICE_FC,
-      HEURES_COMPL_FI,
-      HEURES_COMPL_FA,
-      HEURES_COMPL_FC,
-      HEURES_COMPL_FC_majorees,
-      TOTAL,
-      TO_DELETE
+-- TBL_SERVICE_ANNEE_FK_IDX
+CREATE INDEX "TBL_SERVICE_ANNEE_FK_IDX" ON "TBL_SERVICE" ("ANNEE_ID");
 
-    ) VALUES (
+-- TBL_SERVICE_ELEMENT_FK_IDX
+CREATE INDEX "TBL_SERVICE_ELEMENT_FK_IDX" ON "TBL_SERVICE" ("ELEMENT_PEDAGOGIQUE_ID");
 
-      FORMULE_RESULTAT_SERVIC_ID_SEQ.NEXTVAL,
-      fs.formule_resultat_id,
-      fs.service_id,
-      ROUND( fs.service_fi, arrondi ),
-      ROUND( fs.service_fa, arrondi ),
-      ROUND( fs.service_fc, arrondi ),
-      ROUND( fs.heures_compl_fi, arrondi ),
-      ROUND( fs.heures_compl_fa, arrondi ),
-      ROUND( fs.heures_compl_fc, arrondi ),
-      ROUND( fs.heures_compl_fc_majorees, arrondi ),
-      ROUND( fs.total, arrondi ),
-      0
+-- TBL_SERVICE_ETAPE_FK_IDX
+CREATE INDEX "TBL_SERVICE_ETAPE_FK_IDX" ON "TBL_SERVICE" ("ETAPE_ID");
 
-    );
+-- TBL_SERVICE_INTERVENANT_FK_IDX
+CREATE INDEX "TBL_SERVICE_INTERVENANT_FK_IDX" ON "TBL_SERVICE" ("INTERVENANT_ID");
 
-    SELECT id INTO id FROM formule_resultat_service tfs WHERE
-          tfs.formule_resultat_id    = fs.formule_resultat_id
-      AND tfs.service_id             = fs.service_id;
-    RETURN id;
-  END;
+-- TBL_SERVICE_PERIODE_EP_FK_IDX
+CREATE INDEX "TBL_SERVICE_PERIODE_EP_FK_IDX" ON "TBL_SERVICE" ("ELEMENT_PEDAGOGIQUE_PERIODE_ID");
 
+-- TBL_SERVICE_PK_IDX
+CREATE UNIQUE INDEX "TBL_SERVICE_PK_IDX" ON "TBL_SERVICE" ("ID");
 
-  FUNCTION ENREGISTRER_RESULTAT_VH( fvh formule_resultat_vh%rowtype ) RETURN NUMERIC IS
-    id NUMERIC;
-  BEGIN
-    MERGE INTO formule_resultat_vh tfvh USING dual ON (
+-- TBL_SERVICE_REFERENTIEL_PK_IDX
+CREATE UNIQUE INDEX "TBL_SERVICE_REFERENTIEL_PK_IDX" ON "TBL_SERVICE_REFERENTIEL" ("ID");
 
-          tfvh.formule_resultat_id    = fvh.formule_resultat_id
-      AND tfvh.volume_horaire_id      = fvh.volume_horaire_id
+-- TBL_SERVICE_REFERENTIEL_UN_IDX
+CREATE UNIQUE INDEX "TBL_SERVICE_REFERENTIEL_UN_IDX" ON "TBL_SERVICE_REFERENTIEL" ("INTERVENANT_ID", "TYPE_VOLUME_HORAIRE_ID", "STRUCTURE_ID", "TO_DELETE");
 
-    ) WHEN MATCHED THEN UPDATE SET
+-- TBL_SERVICE_REF_ANNEE_FK_IDX
+CREATE INDEX "TBL_SERVICE_REF_ANNEE_FK_IDX" ON "TBL_SERVICE_REFERENTIEL" ("ANNEE_ID");
 
-      service_fi                     = ROUND( fvh.service_fi, arrondi ),
-      service_fa                     = ROUND( fvh.service_fa, arrondi ),
-      service_fc                     = ROUND( fvh.service_fc, arrondi ),
-      heures_compl_fi                = ROUND( fvh.heures_compl_fi, arrondi ),
-      heures_compl_fa                = ROUND( fvh.heures_compl_fa, arrondi ),
-      heures_compl_fc                = ROUND( fvh.heures_compl_fc, arrondi ),
-      heures_compl_fc_majorees       = ROUND( fvh.heures_compl_fc_majorees, arrondi ),
-      total                          = ROUND( fvh.total, arrondi ),
-      TO_DELETE                      = 0
+-- TBL_SERVICE_REF_INTERVENANT_FK
+CREATE INDEX "TBL_SERVICE_REF_INTERVENANT_FK" ON "TBL_SERVICE_REFERENTIEL" ("INTERVENANT_ID");
 
-    WHEN NOT MATCHED THEN INSERT (
+-- TBL_SERVICE_REF_STRUCTU_FK_IDX
+CREATE INDEX "TBL_SERVICE_REF_STRUCTU_FK_IDX" ON "TBL_SERVICE_REFERENTIEL" ("STRUCTURE_ID");
 
-      ID,
-      FORMULE_RESULTAT_ID,
-      VOLUME_HORAIRE_ID,
-      SERVICE_FI,
-      SERVICE_FA,
-      SERVICE_FC,
-      HEURES_COMPL_FI,
-      HEURES_COMPL_FA,
-      HEURES_COMPL_FC,
-      HEURES_COMPL_FC_MAJOREES,
-      TOTAL,
-      TO_DELETE
+-- TBL_SERVICE_REF_TVH_FK_IDX
+CREATE INDEX "TBL_SERVICE_REF_TVH_FK_IDX" ON "TBL_SERVICE_REFERENTIEL" ("TYPE_VOLUME_HORAIRE_ID");
 
-    ) VALUES (
+-- TBL_SERVICE_SAISIE_ANNEE_FK
+CREATE INDEX "TBL_SERVICE_SAISIE_ANNEE_FK" ON "TBL_SERVICE_SAISIE" ("ANNEE_ID");
 
-      FORMULE_RESULTAT_VH_ID_SEQ.NEXTVAL,
-      fvh.formule_resultat_id,
-      fvh.volume_horaire_id,
-      ROUND( fvh.service_fi, arrondi ),
-      ROUND( fvh.service_fa, arrondi ),
-      ROUND( fvh.service_fc, arrondi ),
-      ROUND( fvh.heures_compl_fi, arrondi ),
-      ROUND( fvh.heures_compl_fa, arrondi ),
-      ROUND( fvh.heures_compl_fc, arrondi ),
-      ROUND( fvh.heures_compl_fc_majorees, arrondi ),
-      ROUND( fvh.total, arrondi ),
-      0
+-- TBL_SERVICE_SAISIE_PK_IDX
+CREATE UNIQUE INDEX "TBL_SERVICE_SAISIE_PK_IDX" ON "TBL_SERVICE_SAISIE" ("ID");
 
-    );
+-- TBL_SERVICE_SAISIE_UN_IDX
+CREATE UNIQUE INDEX "TBL_SERVICE_SAISIE_UN_IDX" ON "TBL_SERVICE_SAISIE" ("INTERVENANT_ID", "TO_DELETE");
 
-    SELECT id INTO id FROM formule_resultat_vh tfvh WHERE
-          tfvh.formule_resultat_id    = fvh.formule_resultat_id
-      AND tfvh.volume_horaire_id      = fvh.volume_horaire_id;
-    RETURN id;
-  END;
+-- TBL_SERVICE_SERVICE_FK_IDX
+CREATE INDEX "TBL_SERVICE_SERVICE_FK_IDX" ON "TBL_SERVICE" ("SERVICE_ID");
 
+-- TBL_SERVICE_STRUCTURE_FKV1_IDX
+CREATE INDEX "TBL_SERVICE_STRUCTURE_FKV1_IDX" ON "TBL_SERVICE" ("INTERVENANT_STRUCTURE_ID");
 
-  FUNCTION ENREGISTRER_RESULTAT_SERV_REF( fr formule_resultat_service_ref%rowtype ) RETURN NUMERIC IS
-    id NUMERIC;
-  BEGIN
-    MERGE INTO formule_resultat_service_ref tfr USING dual ON (
+-- TBL_SERVICE_STRUCTURE_FK_IDX
+CREATE INDEX "TBL_SERVICE_STRUCTURE_FK_IDX" ON "TBL_SERVICE" ("STRUCTURE_ID");
 
-          tfr.formule_resultat_id    = fr.formule_resultat_id
-      AND tfr.service_referentiel_id = fr.service_referentiel_id
+-- TBL_SERVICE_TINTERV_FK_IDX
+CREATE INDEX "TBL_SERVICE_TINTERV_FK_IDX" ON "TBL_SERVICE" ("TYPE_INTERVENANT_ID");
 
-    ) WHEN MATCHED THEN UPDATE SET
+-- TBL_SERVICE_TVH_FK_IDX
+CREATE INDEX "TBL_SERVICE_TVH_FK_IDX" ON "TBL_SERVICE" ("TYPE_VOLUME_HORAIRE_ID");
 
-      service_referentiel            = ROUND( fr.service_referentiel, arrondi ),
-      heures_compl_referentiel       = ROUND( fr.heures_compl_referentiel, arrondi ),
-      TO_DELETE                      = 0
+-- TBL_SERVICE_TVH_IDX_IDX
+CREATE INDEX "TBL_SERVICE_TVH_IDX_IDX" ON "TBL_SERVICE" ("TYPE_VOLUME_HORAIRE_CODE");
 
-    WHEN NOT MATCHED THEN INSERT (
+-- TBL_SERVICE_TYPE_INT_IDX
+CREATE INDEX "TBL_SERVICE_TYPE_INT_IDX" ON "TBL_SERVICE" ("TYPE_INTERVENANT_CODE");
 
-      ID,
-      FORMULE_RESULTAT_ID,
-      SERVICE_REFERENTIEL_ID,
-      SERVICE_REFERENTIEL,
-      HEURES_COMPL_REFERENTIEL,
-      TOTAL,
-      TO_DELETE
+-- TBL_SERVICE__UN_IDX
+CREATE UNIQUE INDEX "TBL_SERVICE__UN_IDX" ON "TBL_SERVICE" ("SERVICE_ID", "TYPE_VOLUME_HORAIRE_ID", "TO_DELETE");
 
-    ) VALUES (
+-- TBL_VALIDATION_ENSEIGNEMENT_PK
+CREATE UNIQUE INDEX "TBL_VALIDATION_ENSEIGNEMENT_PK" ON "TBL_VALIDATION_ENSEIGNEMENT" ("ID");
 
-      FORMULE_RESULTAT_SERVIC_ID_SEQ.NEXTVAL,
-      fr.formule_resultat_id,
-      fr.service_referentiel_id,
-      ROUND( fr.service_referentiel, arrondi ),
-      ROUND( fr.heures_compl_referentiel, arrondi ),
-      fr.total,
-      0
+-- TBL_VALIDATION_ENSEIGNEMENT_UN
+CREATE UNIQUE INDEX "TBL_VALIDATION_ENSEIGNEMENT_UN" ON "TBL_VALIDATION_ENSEIGNEMENT" ("INTERVENANT_ID", "STRUCTURE_ID", "TYPE_VOLUME_HORAIRE_ID", "SERVICE_ID", "VOLUME_HORAIRE_ID", "VALIDATION_ID", "TO_DELETE");
 
-    );
+-- TBL_VALIDATION_REFERENTIEL_PK
+CREATE UNIQUE INDEX "TBL_VALIDATION_REFERENTIEL_PK" ON "TBL_VALIDATION_REFERENTIEL" ("ID");
 
-    SELECT id INTO id FROM formule_resultat_service_ref tfr WHERE
-          tfr.formule_resultat_id    = fr.formule_resultat_id
-      AND tfr.service_referentiel_id = fr.service_referentiel_id;
+-- TBL_VALIDATION_REFERENTIEL__UN
+CREATE UNIQUE INDEX "TBL_VALIDATION_REFERENTIEL__UN" ON "TBL_VALIDATION_REFERENTIEL" ("INTERVENANT_ID", "STRUCTURE_ID", "TYPE_VOLUME_HORAIRE_ID", "SERVICE_REFERENTIEL_ID", "VOLUME_HORAIRE_REF_ID", "VALIDATION_ID", "TO_DELETE");
 
-    RETURN id;
-  END;
+-- TBL_WORKFLOW_ANNEE_FK_IDX
+CREATE INDEX "TBL_WORKFLOW_ANNEE_FK_IDX" ON "TBL_WORKFLOW" ("ANNEE_ID");
 
+-- TBL_WORKFLOW_EFK_IDX
+CREATE INDEX "TBL_WORKFLOW_EFK_IDX" ON "TBL_WORKFLOW" ("ETAPE_ID");
 
-  FUNCTION ENREGISTRER_RESULTAT_VH_REF( fvh formule_resultat_vh_ref%rowtype ) RETURN NUMERIC IS
-    id NUMERIC;
-  BEGIN
-    MERGE INTO formule_resultat_vh_ref tfvh USING dual ON (
+-- TBL_WORKFLOW_ETAPE_IDX
+CREATE INDEX "TBL_WORKFLOW_ETAPE_IDX" ON "TBL_WORKFLOW" ("ETAPE_CODE");
 
-          tfvh.formule_resultat_id    = fvh.formule_resultat_id
-      AND tfvh.volume_horaire_ref_id      = fvh.volume_horaire_ref_id
+-- TBL_WORKFLOW_IFK_IDX
+CREATE INDEX "TBL_WORKFLOW_IFK_IDX" ON "TBL_WORKFLOW" ("INTERVENANT_ID");
 
-    ) WHEN MATCHED THEN UPDATE SET
+-- TBL_WORKFLOW_PK_IDX
+CREATE UNIQUE INDEX "TBL_WORKFLOW_PK_IDX" ON "TBL_WORKFLOW" ("ID");
 
-      service_referentiel            = ROUND( fvh.service_referentiel, arrondi ),
-      heures_compl_referentiel       = ROUND( fvh.heures_compl_referentiel, arrondi ),
-      total                          = fvh.total,
-      TO_DELETE                      = 0
+-- TBL_WORKFLOW_SFK_IDX
+CREATE INDEX "TBL_WORKFLOW_SFK_IDX" ON "TBL_WORKFLOW" ("STRUCTURE_ID");
 
-    WHEN NOT MATCHED THEN INSERT (
+-- TBL_WORKFLOW_TINTERV_FK_IDX
+CREATE INDEX "TBL_WORKFLOW_TINTERV_FK_IDX" ON "TBL_WORKFLOW" ("TYPE_INTERVENANT_ID");
 
-      ID,
-      FORMULE_RESULTAT_ID,
-      VOLUME_HORAIRE_REF_ID,
-      SERVICE_REFERENTIEL,
-      HEURES_COMPL_REFERENTIEL,
-      TOTAL,
-      TO_DELETE
+-- TBL_WORKFLOW_TYPE_INT_IDX
+CREATE INDEX "TBL_WORKFLOW_TYPE_INT_IDX" ON "TBL_WORKFLOW" ("TYPE_INTERVENANT_CODE");
 
-    ) VALUES (
+-- TD_TYPE_RESSOURCE_FK_IDX
+CREATE INDEX "TD_TYPE_RESSOURCE_FK_IDX" ON "TYPE_DOTATION" ("TYPE_RESSOURCE_ID");
 
-      FORMULE_RESULTAT_VH_ID_SEQ.NEXTVAL,
-      fvh.formule_resultat_id,
-      fvh.volume_horaire_ref_id,
-      ROUND( fvh.service_referentiel, arrondi ),
-      ROUND( fvh.heures_compl_referentiel, arrondi ),
-      fvh.total,
-      0
+-- TEST_BUFFER_PK
+CREATE UNIQUE INDEX "TEST_BUFFER_PK" ON "TEST_BUFFER" ("ID");
 
-    );
+-- TIEP_EP_FK_IDX
+CREATE INDEX "TIEP_EP_FK_IDX" ON "TYPE_INTERVENTION_EP" ("ELEMENT_PEDAGOGIQUE_ID");
 
-    SELECT id INTO id FROM formule_resultat_vh_ref tfvh WHERE
-          tfvh.formule_resultat_id    = fvh.formule_resultat_id
-      AND tfvh.volume_horaire_ref_id  = fvh.volume_horaire_ref_id;
-    RETURN id;
-  END;
+-- TIEP_SOURCE_FK_IDX
+CREATE INDEX "TIEP_SOURCE_FK_IDX" ON "TYPE_INTERVENTION_EP" ("SOURCE_ID");
 
+-- TIEP_TYPE_INTERVENTION_FK_IDX
+CREATE INDEX "TIEP_TYPE_INTERVENTION_FK_IDX" ON "TYPE_INTERVENTION_EP" ("TYPE_INTERVENTION_ID");
 
-  PROCEDURE POPULATE_INTERVENANT( INTERVENANT_ID NUMERIC, d_intervenant OUT t_intervenant ) IS
-  BEGIN
-    SELECT
-      structure_id,
-      annee_id,
-      heures_service_statutaire,
-      depassement_service_du_sans_hc
-    INTO
-      d_intervenant.structure_id,
-      d_intervenant.annee_id,
-      d_intervenant.heures_service_statutaire,
-      d_intervenant.depassement_service_du_sans_hc
-    FROM
-      v_formule_intervenant fi
-    WHERE
-      fi.id = POPULATE_INTERVENANT.INTERVENANT_ID;
+-- TIS_ANNEE_DEBUT_FK_IDX
+CREATE INDEX "TIS_ANNEE_DEBUT_FK_IDX" ON "TYPE_INTERVENTION_STRUCTURE" ("ANNEE_DEBUT_ID");
 
-    SELECT
-      NVL( SUM(heures), 0),
-      NVL( SUM(heures_decharge), 0)
-    INTO
-      d_intervenant.heures_service_modifie,
-      d_intervenant.heures_decharge
-    FROM
-      v_formule_service_modifie fsm
-    WHERE
-      fsm.intervenant_id = POPULATE_INTERVENANT.INTERVENANT_ID;
+-- TIS_ANNEE_FIN_FK_IDX
+CREATE INDEX "TIS_ANNEE_FIN_FK_IDX" ON "TYPE_INTERVENTION_STRUCTURE" ("ANNEE_FIN_ID");
 
-  EXCEPTION WHEN NO_DATA_FOUND THEN
-    d_intervenant.structure_id := null;
-    d_intervenant.annee_id := null;
-    d_intervenant.heures_service_statutaire := 0;
-    d_intervenant.depassement_service_du_sans_hc := 0;
-    d_intervenant.heures_service_modifie := 0;
-    d_intervenant.heures_decharge := 0;
-  END;
+-- TIS_HCFK_IDX
+CREATE INDEX "TIS_HCFK_IDX" ON "TYPE_INTERVENTION_STRUCTURE" ("HISTO_CREATEUR_ID");
 
+-- TIS_HDFK_IDX
+CREATE INDEX "TIS_HDFK_IDX" ON "TYPE_INTERVENTION_STRUCTURE" ("HISTO_DESTRUCTEUR_ID");
 
-  PROCEDURE POPULATE_SERVICE_REF( INTERVENANT_ID NUMERIC, d_service_ref OUT t_lst_service_ref ) IS
-    i PLS_INTEGER;
-  BEGIN
-    d_service_ref.delete;
+-- TIS_HMFK_IDX
+CREATE INDEX "TIS_HMFK_IDX" ON "TYPE_INTERVENTION_STRUCTURE" ("HISTO_MODIFICATEUR_ID");
 
-    FOR d IN (
-      SELECT
-        fr.id,
-        fr.structure_id
-      FROM
-        v_formule_service_ref fr
-      WHERE
-        fr.intervenant_id = POPULATE_SERVICE_REF.INTERVENANT_ID
-    ) LOOP
-      d_service_ref( d.id ).id           := d.id;
-      d_service_ref( d.id ).structure_id := d.structure_id;
-    END LOOP;
-  END;
+-- TIS_STRUCTURE_FK_IDX
+CREATE INDEX "TIS_STRUCTURE_FK_IDX" ON "TYPE_INTERVENTION_STRUCTURE" ("STRUCTURE_ID");
 
+-- TIS_TYPE_INTERVENTION_FK_IDX
+CREATE INDEX "TIS_TYPE_INTERVENTION_FK_IDX" ON "TYPE_INTERVENTION_STRUCTURE" ("TYPE_INTERVENTION_ID");
 
-  PROCEDURE POPULATE_SERVICE( INTERVENANT_ID NUMERIC, d_service OUT t_lst_service ) IS
-  BEGIN
-    d_service.delete;
+-- TME_ELEMENT_PEDAGOGIQUE_FK_IDX
+CREATE INDEX "TME_ELEMENT_PEDAGOGIQUE_FK_IDX" ON "TYPE_MODULATEUR_EP" ("ELEMENT_PEDAGOGIQUE_ID");
 
-    FOR d IN (
-      SELECT
-        id,
-        taux_fi,
-        taux_fa,
-        taux_fc,
-        structure_aff_id,
-        structure_ens_id,
-        ponderation_service_du,
-        ponderation_service_compl
-      FROM
-        v_formule_service fs
-      WHERE
-        fs.intervenant_id = POPULATE_SERVICE.INTERVENANT_ID
-    ) LOOP
-      d_service( d.id ).id                        := d.id;
-      d_service( d.id ).taux_fi                   := d.taux_fi;
-      d_service( d.id ).taux_fa                   := d.taux_fa;
-      d_service( d.id ).taux_fc                   := d.taux_fc;
-      d_service( d.id ).ponderation_service_du    := d.ponderation_service_du;
-      d_service( d.id ).ponderation_service_compl := d.ponderation_service_compl;
-      d_service( d.id ).structure_aff_id          := d.structure_aff_id;
-      d_service( d.id ).structure_ens_id          := d.structure_ens_id;
-    END LOOP;
-  END;
+-- TME_SOURCE_FK_IDX
+CREATE INDEX "TME_SOURCE_FK_IDX" ON "TYPE_MODULATEUR_EP" ("SOURCE_ID");
 
-  PROCEDURE POPULATE_VOLUME_HORAIRE_REF( INTERVENANT_ID NUMERIC, d_volume_horaire_ref OUT t_lst_volume_horaire_ref ) IS
-  BEGIN
-    d_volume_horaire_ref.delete;
+-- TME_TYPE_MODULATEUR_FK_IDX
+CREATE INDEX "TME_TYPE_MODULATEUR_FK_IDX" ON "TYPE_MODULATEUR_EP" ("TYPE_MODULATEUR_ID");
+
+-- TMS_ANNEE_DEBUT_FK_IDX
+CREATE INDEX "TMS_ANNEE_DEBUT_FK_IDX" ON "TYPE_MODULATEUR_STRUCTURE" ("ANNEE_DEBUT_ID");
+
+-- TMS_ANNEE_FIN_FK_IDX
+CREATE INDEX "TMS_ANNEE_FIN_FK_IDX" ON "TYPE_MODULATEUR_STRUCTURE" ("ANNEE_FIN_ID");
+
+-- TMS_HCFK_IDX
+CREATE INDEX "TMS_HCFK_IDX" ON "TYPE_MODULATEUR_STRUCTURE" ("HISTO_CREATEUR_ID");
+
+-- TMS_HDFK_IDX
+CREATE INDEX "TMS_HDFK_IDX" ON "TYPE_MODULATEUR_STRUCTURE" ("HISTO_DESTRUCTEUR_ID");
+
+-- TMS_HMFK_IDX
+CREATE INDEX "TMS_HMFK_IDX" ON "TYPE_MODULATEUR_STRUCTURE" ("HISTO_MODIFICATEUR_ID");
 
-    FOR d IN (
-      SELECT
-        id,
-        service_referentiel_id,
-        heures,
-        fvh.type_volume_horaire_id,
-        fvh.etat_volume_horaire_id,
-        fvh.etat_volume_horaire_ordre
-      FROM
-        v_formule_volume_horaire_ref fvh
-      WHERE
-        fvh.intervenant_id                = POPULATE_VOLUME_HORAIRE_REF.INTERVENANT_ID
-    ) LOOP
-      d_volume_horaire_ref( d.id ).id                        := d.id;
-      d_volume_horaire_ref( d.id ).service_referentiel_id    := d.service_referentiel_id;
-      d_volume_horaire_ref( d.id ).heures                    := d.heures;
-      d_volume_horaire_ref( d.id ).type_volume_horaire_id    := d.type_volume_horaire_id;
-      d_volume_horaire_ref( d.id ).etat_volume_horaire_id    := d.etat_volume_horaire_id;
-      d_volume_horaire_ref( d.id ).etat_volume_horaire_ordre := d.etat_volume_horaire_ordre;
-    END LOOP;
-  END;
+-- TMS_STRUCTURE_FK_IDX
+CREATE INDEX "TMS_STRUCTURE_FK_IDX" ON "TYPE_MODULATEUR_STRUCTURE" ("STRUCTURE_ID");
 
-  PROCEDURE POPULATE_VOLUME_HORAIRE( INTERVENANT_ID NUMERIC, d_volume_horaire OUT t_lst_volume_horaire ) IS
-  BEGIN
-    d_volume_horaire.delete;
+-- TMS_TYPE_MODUL_FK_IDX
+CREATE INDEX "TMS_TYPE_MODUL_FK_IDX" ON "TYPE_MODULATEUR_STRUCTURE" ("TYPE_MODULATEUR_ID");
 
-    FOR d IN (
-      SELECT
-        id,
-        service_id,
-        heures,
-        taux_service_du,
-        taux_service_compl,
-        fvh.type_volume_horaire_id,
-        fvh.etat_volume_horaire_id,
-        fvh.etat_volume_horaire_ordre
-      FROM
-        v_formule_volume_horaire fvh
-      WHERE
-        fvh.intervenant_id                = POPULATE_VOLUME_HORAIRE.INTERVENANT_ID
-    ) LOOP
-      d_volume_horaire( d.id ).id                        := d.id;
-      d_volume_horaire( d.id ).service_id                := d.service_id;
-      d_volume_horaire( d.id ).heures                    := d.heures;
-      d_volume_horaire( d.id ).taux_service_du           := d.taux_service_du;
-      d_volume_horaire( d.id ).taux_service_compl        := d.taux_service_compl;
-      d_volume_horaire( d.id ).type_volume_horaire_id    := d.type_volume_horaire_id;
-      d_volume_horaire( d.id ).etat_volume_horaire_id    := d.etat_volume_horaire_id;
-      d_volume_horaire( d.id ).etat_volume_horaire_ordre := d.etat_volume_horaire_ordre;
-    END LOOP;
-  END;
+-- TPJS_ANNEE_DEBUT_IDX
+CREATE INDEX "TPJS_ANNEE_DEBUT_IDX" ON "TYPE_PIECE_JOINTE_STATUT" ("ANNEE_DEBUT_ID");
 
+-- TPJS_ANNEE_FIN_IDX
+CREATE INDEX "TPJS_ANNEE_FIN_IDX" ON "TYPE_PIECE_JOINTE_STATUT" ("ANNEE_FIN_ID");
 
-  PROCEDURE POPULATE_TYPE_ETAT_VH( d_volume_horaire t_lst_volume_horaire, d_volume_horaire_ref t_lst_volume_horaire_ref, d_type_etat_vh OUT t_lst_type_etat_vh ) IS
-    TYPE t_ordres IS TABLE OF NUMERIC INDEX BY PLS_INTEGER;
+-- TPJS_HCFK_IDX
+CREATE INDEX "TPJS_HCFK_IDX" ON "TYPE_PIECE_JOINTE_STATUT" ("HISTO_CREATEUR_ID");
 
-    ordres_found t_ordres;
-    ordres_exists t_ordres;
-    type_volume_horaire_id PLS_INTEGER;
-    etat_volume_horaire_ordre PLS_INTEGER;
-    id PLS_INTEGER;
-  BEGIN
-    d_type_etat_vh.delete;
+-- TPJS_HDFK_IDX
+CREATE INDEX "TPJS_HDFK_IDX" ON "TYPE_PIECE_JOINTE_STATUT" ("HISTO_DESTRUCTEUR_ID");
 
-    -- récupération des ID et ordres de volumes horaires
-    FOR evh IN (
-      SELECT   id, ordre
-      FROM     etat_volume_horaire evh
-      ORDER BY ordre
-    ) LOOP
-      ordres_exists( evh.ordre ) := evh.id;
-    END LOOP;
+-- TPJS_HMFK_IDX
+CREATE INDEX "TPJS_HMFK_IDX" ON "TYPE_PIECE_JOINTE_STATUT" ("HISTO_MODIFICATEUR_ID");
 
-    -- récupération des ordres maximum par type d'intervention
-    id := d_volume_horaire.FIRST;
-    LOOP EXIT WHEN id IS NULL;
-      IF NOT ordres_found.EXISTS(d_volume_horaire(id).type_volume_horaire_id) THEN
-        ordres_found( d_volume_horaire(id).type_volume_horaire_id ) := d_volume_horaire(id).etat_volume_horaire_ordre;
-      ELSIF ordres_found( d_volume_horaire(id).type_volume_horaire_id ) < d_volume_horaire(id).etat_volume_horaire_ordre THEN
-        ordres_found( d_volume_horaire(id).type_volume_horaire_id ) := d_volume_horaire(id).etat_volume_horaire_ordre;
-      END IF;
-      id := d_volume_horaire.NEXT(id);
-    END LOOP;
+-- TPJS_STATUT_INTERVENANT_FK_IDX
+CREATE INDEX "TPJS_STATUT_INTERVENANT_FK_IDX" ON "TYPE_PIECE_JOINTE_STATUT" ("STATUT_INTERVENANT_ID");
 
-    id := d_volume_horaire_ref.FIRST;
-    LOOP EXIT WHEN id IS NULL;
-      IF NOT ordres_found.EXISTS(d_volume_horaire_ref(id).type_volume_horaire_id) THEN
-        ordres_found( d_volume_horaire_ref(id).type_volume_horaire_id ) := d_volume_horaire_ref(id).etat_volume_horaire_ordre;
-      ELSIF ordres_found( d_volume_horaire_ref(id).type_volume_horaire_id ) < d_volume_horaire_ref(id).etat_volume_horaire_ordre THEN
-        ordres_found( d_volume_horaire_ref(id).type_volume_horaire_id ) := d_volume_horaire_ref(id).etat_volume_horaire_ordre;
-      END IF;
-      id := d_volume_horaire_ref.NEXT(id);
-    END LOOP;
+-- TPJS_TYPE_PIECE_JOINTE_FK_IDX
+CREATE INDEX "TPJS_TYPE_PIECE_JOINTE_FK_IDX" ON "TYPE_PIECE_JOINTE_STATUT" ("TYPE_PIECE_JOINTE_ID");
 
-    -- peuplement des t_lst_type_etat_vh
-    type_volume_horaire_id := ordres_found.FIRST;
-    LOOP EXIT WHEN type_volume_horaire_id IS NULL;
-      etat_volume_horaire_ordre := ordres_exists.FIRST;
-      LOOP EXIT WHEN etat_volume_horaire_ordre IS NULL;
-        IF etat_volume_horaire_ordre <= ordres_found(type_volume_horaire_id) THEN
-          d_type_etat_vh( type_volume_horaire_id + 100000 * etat_volume_horaire_ordre ).type_volume_horaire_id := type_volume_horaire_id;
-          d_type_etat_vh( type_volume_horaire_id + 100000 * etat_volume_horaire_ordre ).etat_volume_horaire_id := ordres_exists( etat_volume_horaire_ordre );
-        END IF;
-        etat_volume_horaire_ordre := ordres_exists.NEXT(etat_volume_horaire_ordre);
-      END LOOP;
+-- TVE_ANNEE_FK_IDX
+CREATE INDEX "TVE_ANNEE_FK_IDX" ON "TBL_VALIDATION_ENSEIGNEMENT" ("ANNEE_ID");
 
-      type_volume_horaire_id := ordres_found.NEXT(type_volume_horaire_id);
-    END LOOP;
+-- TVE_INTERVENANT_FK_IDX
+CREATE INDEX "TVE_INTERVENANT_FK_IDX" ON "TBL_VALIDATION_ENSEIGNEMENT" ("INTERVENANT_ID");
 
-  END;
+-- TVE_SERVICE_FK_IDX
+CREATE INDEX "TVE_SERVICE_FK_IDX" ON "TBL_VALIDATION_ENSEIGNEMENT" ("SERVICE_ID");
 
+-- TVE_STRUCTURE_FK_IDX
+CREATE INDEX "TVE_STRUCTURE_FK_IDX" ON "TBL_VALIDATION_ENSEIGNEMENT" ("STRUCTURE_ID");
 
-  PROCEDURE POPULATE( INTERVENANT_ID NUMERIC ) IS
-  BEGIN
-    OSE_FORMULE.INTERVENANT_ID := POPULATE.INTERVENANT_ID;
+-- TVE_TYPE_VOLUME_HORAIRE_FK_IDX
+CREATE INDEX "TVE_TYPE_VOLUME_HORAIRE_FK_IDX" ON "TBL_VALIDATION_ENSEIGNEMENT" ("TYPE_VOLUME_HORAIRE_ID");
 
-    POPULATE_INTERVENANT    ( INTERVENANT_ID, d_intervenant );
-    IF d_intervenant.heures_service_statutaire IS NOT NULL THEN -- sinon rien n'est à faire!!
-      POPULATE_SERVICE_REF        ( INTERVENANT_ID, d_service_ref         );
-      POPULATE_SERVICE            ( INTERVENANT_ID, d_service             );
-      POPULATE_VOLUME_HORAIRE_REF ( INTERVENANT_ID, d_all_volume_horaire_ref  );
-      POPULATE_VOLUME_HORAIRE     ( INTERVENANT_ID, d_all_volume_horaire      );
-      POPULATE_TYPE_ETAT_VH       ( d_all_volume_horaire, d_all_volume_horaire_ref, d_type_etat_vh );
-    END IF;
-  END;
+-- TVE_VALIDATION_FK_IDX
+CREATE INDEX "TVE_VALIDATION_FK_IDX" ON "TBL_VALIDATION_ENSEIGNEMENT" ("VALIDATION_ID");
 
+-- TVE_VOLUME_HORAIRE_FK_IDX
+CREATE INDEX "TVE_VOLUME_HORAIRE_FK_IDX" ON "TBL_VALIDATION_ENSEIGNEMENT" ("VOLUME_HORAIRE_ID");
 
-  PROCEDURE POPULATE_FILTER( TYPE_VOLUME_HORAIRE_ID NUMERIC, ETAT_VOLUME_HORAIRE_ID NUMERIC ) IS
-    EVH_ORDRE NUMERIC;
-    id PLS_INTEGER;
-  BEGIN
-    d_volume_horaire.delete;
-    d_volume_horaire_ref.delete;
+-- TVR_ANNEE_FK_IDX
+CREATE INDEX "TVR_ANNEE_FK_IDX" ON "TBL_VALIDATION_REFERENTIEL" ("ANNEE_ID");
 
-    SELECT ordre INTO EVH_ORDRE FROM etat_volume_horaire WHERE ID = ETAT_VOLUME_HORAIRE_ID;
+-- TVR_INTERVENANT_FK_IDX
+CREATE INDEX "TVR_INTERVENANT_FK_IDX" ON "TBL_VALIDATION_REFERENTIEL" ("INTERVENANT_ID");
 
-    id := d_all_volume_horaire.FIRST;
-    LOOP EXIT WHEN id IS NULL;
-      IF
-        d_all_volume_horaire(id).type_volume_horaire_id = TYPE_VOLUME_HORAIRE_ID
-        AND d_all_volume_horaire(id).etat_volume_horaire_ordre >= EVH_ORDRE 
-      THEN
-        d_volume_horaire(id) := d_all_volume_horaire(id);
-      END IF;
-      id := d_all_volume_horaire.NEXT(id);
-    END LOOP;
+-- TVR_SERVICE_REFERENTIEL_FK_IDX
+CREATE INDEX "TVR_SERVICE_REFERENTIEL_FK_IDX" ON "TBL_VALIDATION_REFERENTIEL" ("SERVICE_REFERENTIEL_ID");
 
-    id := d_all_volume_horaire_ref.FIRST;
-    LOOP EXIT WHEN id IS NULL;
-      IF
-        d_all_volume_horaire_ref(id).type_volume_horaire_id = TYPE_VOLUME_HORAIRE_ID
-        AND d_all_volume_horaire_ref(id).etat_volume_horaire_ordre >= EVH_ORDRE 
-      THEN
-        d_volume_horaire_ref(id) := d_all_volume_horaire_ref(id);
-      END IF;
-      id := d_all_volume_horaire_ref.NEXT(id);
-    END LOOP;
-  END;
+-- TVR_STRUCTURE_FK_IDX
+CREATE INDEX "TVR_STRUCTURE_FK_IDX" ON "TBL_VALIDATION_REFERENTIEL" ("STRUCTURE_ID");
 
+-- TVR_TYPE_VOLUME_HORAIRE_FK_IDX
+CREATE INDEX "TVR_TYPE_VOLUME_HORAIRE_FK_IDX" ON "TBL_VALIDATION_REFERENTIEL" ("TYPE_VOLUME_HORAIRE_ID");
 
-  PROCEDURE INIT_RESULTAT ( INTERVENANT_ID NUMERIC, TYPE_VOLUME_HORAIRE_ID NUMERIC, ETAT_VOLUME_HORAIRE_ID NUMERIC ) IS
-  BEGIN
-    d_resultat.intervenant_id         := INTERVENANT_ID;
-    d_resultat.type_volume_horaire_id := TYPE_VOLUME_HORAIRE_ID;
-    d_resultat.etat_volume_horaire_id := ETAT_VOLUME_HORAIRE_ID;
-    d_resultat.service_du             := 0;
-    d_resultat.solde                  := 0;
-    d_resultat.sous_service           := 0;
-    d_resultat.heures_compl           := 0;
-    d_resultat.volume_horaire.delete;
-    d_resultat.volume_horaire_ref.delete;
-  END;
+-- TVR_VALIDATION_FK_IDX
+CREATE INDEX "TVR_VALIDATION_FK_IDX" ON "TBL_VALIDATION_REFERENTIEL" ("VALIDATION_ID");
 
+-- TVR_VOLUME_HORAIRE_REF_FK_IDX
+CREATE INDEX "TVR_VOLUME_HORAIRE_REF_FK_IDX" ON "TBL_VALIDATION_REFERENTIEL" ("VOLUME_HORAIRE_REF_ID");
 
-  PROCEDURE CALC_RESULTAT IS
-    function_name VARCHAR2(30);
-    package_name VARCHAR2(30);
-  BEGIN
-    package_name  := OSE_PARAMETRE.GET_FORMULE_PACKAGE_NAME;
-    function_name := OSE_PARAMETRE.GET_FORMULE_FUNCTION_NAME;
+-- TYPE_AGREMENT_HCFK_IDX
+CREATE INDEX "TYPE_AGREMENT_HCFK_IDX" ON "TYPE_AGREMENT" ("HISTO_CREATEUR_ID");
 
-    EXECUTE IMMEDIATE 
-      'BEGIN ' || package_name || '.' || function_name || '( :1, :2, :3 ); END;'
-    USING
-      d_resultat.intervenant_id, d_resultat.type_volume_horaire_id, d_resultat.etat_volume_horaire_id;
+-- TYPE_AGREMENT_HDFK_IDX
+CREATE INDEX "TYPE_AGREMENT_HDFK_IDX" ON "TYPE_AGREMENT" ("HISTO_DESTRUCTEUR_ID");
 
-  END;
+-- TYPE_AGREMENT_HMFK_IDX
+CREATE INDEX "TYPE_AGREMENT_HMFK_IDX" ON "TYPE_AGREMENT" ("HISTO_MODIFICATEUR_ID");
 
+-- TYPE_AGREMENT_PK
+CREATE UNIQUE INDEX "TYPE_AGREMENT_PK" ON "TYPE_AGREMENT" ("ID");
 
-  PROCEDURE SAVE_RESULTAT IS
-    res             t_resultat_hetd;
-    res_ref         t_resultat_hetd_ref;
-    res_service     t_lst_resultat_hetd;
-    res_service_ref t_lst_resultat_hetd_ref;
-    id              PLS_INTEGER;
-    sid             PLS_INTEGER;
-    fr              formule_resultat%rowtype;
-    frs             formule_resultat_service%rowtype;
-    frsr            formule_resultat_service_ref%rowtype;
-    frvh            formule_resultat_vh%rowtype;
-    frvhr           formule_resultat_vh_ref%rowtype;
-    dev_null        PLS_INTEGER;
-  BEGIN
-    -- Calcul des données pour les services et le résultat global
-    fr.service_fi := 0;
-    fr.service_fa := 0;
-    fr.service_fc := 0;
-    fr.service_referentiel := 0;
-    fr.heures_compl_fi := 0;
-    fr.heures_compl_fa := 0;
-    fr.heures_compl_fc := 0;
-    fr.heures_compl_fc_majorees := 0;
-    fr.heures_compl_referentiel := 0;
+-- TYPE_AGREMENT_STATUT_HCFK_IDX
+CREATE INDEX "TYPE_AGREMENT_STATUT_HCFK_IDX" ON "TYPE_AGREMENT_STATUT" ("HISTO_CREATEUR_ID");
 
-    id := d_resultat.volume_horaire.FIRST;
-    LOOP EXIT WHEN id IS NULL;
-      sid := d_volume_horaire(id).service_id;
-      IF NOT res_service.exists(sid) THEN res_service(sid).service_fi := 0; END IF;
+-- TYPE_AGREMENT_STATUT_HDFK_IDX
+CREATE INDEX "TYPE_AGREMENT_STATUT_HDFK_IDX" ON "TYPE_AGREMENT_STATUT" ("HISTO_DESTRUCTEUR_ID");
 
-      res_service(sid).service_fi               := res_service(sid).service_fi               + d_resultat.volume_horaire(id).service_fi;
-      res_service(sid).service_fa               := res_service(sid).service_fa               + d_resultat.volume_horaire(id).service_fa;
-      res_service(sid).service_fc               := res_service(sid).service_fc               + d_resultat.volume_horaire(id).service_fc;
-      res_service(sid).heures_compl_fi          := res_service(sid).heures_compl_fi          + d_resultat.volume_horaire(id).heures_compl_fi;
-      res_service(sid).heures_compl_fa          := res_service(sid).heures_compl_fa          + d_resultat.volume_horaire(id).heures_compl_fa;
-      res_service(sid).heures_compl_fc          := res_service(sid).heures_compl_fc          + d_resultat.volume_horaire(id).heures_compl_fc;
-      res_service(sid).heures_compl_fc_majorees := res_service(sid).heures_compl_fc_majorees + d_resultat.volume_horaire(id).heures_compl_fc_majorees;
+-- TYPE_AGREMENT_STATUT_HMFK_IDX
+CREATE INDEX "TYPE_AGREMENT_STATUT_HMFK_IDX" ON "TYPE_AGREMENT_STATUT" ("HISTO_MODIFICATEUR_ID");
 
-      fr.service_fi                             := fr.service_fi                             + d_resultat.volume_horaire(id).service_fi;
-      fr.service_fa                             := fr.service_fa                             + d_resultat.volume_horaire(id).service_fa;
-      fr.service_fc                             := fr.service_fc                             + d_resultat.volume_horaire(id).service_fc;
-      fr.heures_compl_fi                        := fr.heures_compl_fi                        + d_resultat.volume_horaire(id).heures_compl_fi;
-      fr.heures_compl_fa                        := fr.heures_compl_fa                        + d_resultat.volume_horaire(id).heures_compl_fa;
-      fr.heures_compl_fc                        := fr.heures_compl_fc                        + d_resultat.volume_horaire(id).heures_compl_fc;
-      fr.heures_compl_fc_majorees               := fr.heures_compl_fc_majorees               + d_resultat.volume_horaire(id).heures_compl_fc_majorees;
-      id := d_resultat.volume_horaire.NEXT(id);
-    END LOOP;
+-- TYPE_AGREMENT_STATUT_PK
+CREATE UNIQUE INDEX "TYPE_AGREMENT_STATUT_PK" ON "TYPE_AGREMENT_STATUT" ("ID");
 
-    id := d_resultat.volume_horaire_ref.FIRST;
-    LOOP EXIT WHEN id IS NULL;
-      sid := d_volume_horaire_ref(id).service_referentiel_id;
-      IF NOT res_service_ref.exists(sid) THEN res_service_ref(sid).service_referentiel := 0; END IF;
+-- TYPE_AGREMENT_STATUT__UN
+CREATE UNIQUE INDEX "TYPE_AGREMENT_STATUT__UN" ON "TYPE_AGREMENT_STATUT" ("TYPE_AGREMENT_ID", "STATUT_INTERVENANT_ID", "PREMIER_RECRUTEMENT");
 
-      res_service_ref(sid).service_referentiel      := res_service_ref(sid).service_referentiel      + d_resultat.volume_horaire_ref(id).service_referentiel;
-      res_service_ref(sid).heures_compl_referentiel := res_service_ref(sid).heures_compl_referentiel + d_resultat.volume_horaire_ref(id).heures_compl_referentiel;
+-- TYPE_AGREMENT__UN
+CREATE UNIQUE INDEX "TYPE_AGREMENT__UN" ON "TYPE_AGREMENT" ("CODE");
 
-      fr.service_referentiel                        := fr.service_referentiel                        + d_resultat.volume_horaire_ref(id).service_referentiel;
-      fr.heures_compl_referentiel                   := fr.heures_compl_referentiel                   + d_resultat.volume_horaire_ref(id).heures_compl_referentiel;
-      id := d_resultat.volume_horaire_ref.NEXT(id);
-    END LOOP;
+-- TYPE_CONTRAT_HCFK_IDX
+CREATE INDEX "TYPE_CONTRAT_HCFK_IDX" ON "TYPE_CONTRAT" ("HISTO_CREATEUR_ID");
 
-    -- Sauvegarde du résultat global
-    fr.id                       := NULL;
-    fr.intervenant_id           := d_resultat.intervenant_id;
-    fr.type_volume_horaire_id   := d_resultat.type_volume_horaire_id;
-    fr.etat_volume_horaire_id   := d_resultat.etat_volume_horaire_id;
-    fr.service_du               := d_resultat.service_du;
-    fr.total                    := fr.service_fi
-                                 + fr.service_fa
-                                 + fr.service_fc
-                                 + fr.service_referentiel
-                                 + fr.heures_compl_fi
-                                 + fr.heures_compl_fa
-                                 + fr.heures_compl_fc
-                                 + fr.heures_compl_fc_majorees
-                                 + fr.heures_compl_referentiel;
-    fr.solde                    := d_resultat.solde;
-    fr.sous_service             := d_resultat.sous_service;
-    fr.heures_compl             := d_resultat.heures_compl;
-    fr.id := OSE_FORMULE.ENREGISTRER_RESULTAT( fr );
+-- TYPE_CONTRAT_HDFK_IDX
+CREATE INDEX "TYPE_CONTRAT_HDFK_IDX" ON "TYPE_CONTRAT" ("HISTO_DESTRUCTEUR_ID");
 
-    -- sauvegarde des services
-    id := res_service.FIRST;
-    LOOP EXIT WHEN id IS NULL;
-      frs.id                       := NULL;
-      frs.formule_resultat_id      := fr.id;
-      frs.service_id               := id;
-      frs.service_fi               := res_service(id).service_fi;
-      frs.service_fa               := res_service(id).service_fa;
-      frs.service_fc               := res_service(id).service_fc;
-      frs.heures_compl_fi          := res_service(id).heures_compl_fi;
-      frs.heures_compl_fa          := res_service(id).heures_compl_fa;
-      frs.heures_compl_fc          := res_service(id).heures_compl_fc;
-      frs.heures_compl_fc_majorees := res_service(id).heures_compl_fc_majorees;
-      frs.total                    := frs.service_fi
-                                    + frs.service_fa
-                                    + frs.service_fc
-                                    + frs.heures_compl_fi
-                                    + frs.heures_compl_fa
-                                    + frs.heures_compl_fc
-                                    + frs.heures_compl_fc_majorees;
-      dev_null := OSE_FORMULE.ENREGISTRER_RESULTAT_SERVICE( frs );
-      id := res_service.NEXT(id);
-    END LOOP;
+-- TYPE_CONTRAT_HMFK_IDX
+CREATE INDEX "TYPE_CONTRAT_HMFK_IDX" ON "TYPE_CONTRAT" ("HISTO_MODIFICATEUR_ID");
+
+-- TYPE_CONTRAT_PK
+CREATE UNIQUE INDEX "TYPE_CONTRAT_PK" ON "TYPE_CONTRAT" ("ID");
 
-    -- sauvegarde des services référentiels
-    id := res_service_ref.FIRST;
-    LOOP EXIT WHEN id IS NULL;
-      frsr.id                       := NULL;
-      frsr.formule_resultat_id      := fr.id;
-      frsr.service_referentiel_id   := id;
-      frsr.service_referentiel      := res_service_ref(id).service_referentiel;
-      frsr.heures_compl_referentiel := res_service_ref(id).heures_compl_referentiel;
-      frsr.total                    := res_service_ref(id).service_referentiel
-                                     + res_service_ref(id).heures_compl_referentiel;
-      dev_null := OSE_FORMULE.ENREGISTRER_RESULTAT_SERV_REF( frsr );
-      id := res_service_ref.NEXT(id);
-    END LOOP;
+-- TYPE_DOTATION_HCFK_IDX
+CREATE INDEX "TYPE_DOTATION_HCFK_IDX" ON "TYPE_DOTATION" ("HISTO_CREATEUR_ID");
 
-    -- sauvegarde des volumes horaires
-    id := d_resultat.volume_horaire.FIRST;
-    LOOP EXIT WHEN id IS NULL;
-      frvh.id                        := NULL;
-      frvh.formule_resultat_id       := fr.id;
-      frvh.volume_horaire_id         := id;
-      frvh.service_fi                := d_resultat.volume_horaire(id).service_fi;
-      frvh.service_fa                := d_resultat.volume_horaire(id).service_fa;
-      frvh.service_fc                := d_resultat.volume_horaire(id).service_fc;
-      frvh.heures_compl_fi           := d_resultat.volume_horaire(id).heures_compl_fi;
-      frvh.heures_compl_fa           := d_resultat.volume_horaire(id).heures_compl_fa;
-      frvh.heures_compl_fc           := d_resultat.volume_horaire(id).heures_compl_fc;
-      frvh.heures_compl_fc_majorees  := d_resultat.volume_horaire(id).heures_compl_fc_majorees;
-      frvh.total                     := frvh.service_fi
-                                      + frvh.service_fa
-                                      + frvh.service_fc
-                                      + frvh.heures_compl_fi
-                                      + frvh.heures_compl_fa
-                                      + frvh.heures_compl_fc
-                                      + frvh.heures_compl_fc_majorees;
-      dev_null := OSE_FORMULE.ENREGISTRER_RESULTAT_VH( frvh );
-      id := d_resultat.volume_horaire.NEXT(id);
-    END LOOP;
+-- TYPE_DOTATION_HDFK_IDX
+CREATE INDEX "TYPE_DOTATION_HDFK_IDX" ON "TYPE_DOTATION" ("HISTO_DESTRUCTEUR_ID");
 
-    -- sauvegarde des volumes horaires référentiels
-    id := d_resultat.volume_horaire_ref.FIRST;
-    LOOP EXIT WHEN id IS NULL;
-      frvhr.id                       := NULL;
-      frvhr.formule_resultat_id      := fr.id;
-      frvhr.volume_horaire_ref_id    := id;
-      frvhr.service_referentiel      := d_resultat.volume_horaire_ref(id).service_referentiel;
-      frvhr.heures_compl_referentiel := d_resultat.volume_horaire_ref(id).heures_compl_referentiel;
-      frvhr.total                    := frvhr.service_referentiel
-                                      + frvhr.heures_compl_referentiel;
-      dev_null := OSE_FORMULE.ENREGISTRER_RESULTAT_VH_REF( frvhr );
-      id := d_resultat.volume_horaire_ref.NEXT(id);
-    END LOOP;
-  END;
+-- TYPE_DOTATION_HMFK_IDX
+CREATE INDEX "TYPE_DOTATION_HMFK_IDX" ON "TYPE_DOTATION" ("HISTO_MODIFICATEUR_ID");
 
-  PROCEDURE DEBUG_INTERVENANT IS
-  BEGIN
-    ose_test.echo('d_intervenant');
-    ose_test.echo('      .structure_id                   = ' || d_intervenant.structure_id || ' (' || ose_test.get_structure_by_id(d_intervenant.structure_id).libelle_court || ')' );
-    ose_test.echo('      .heures_service_statutaire      = ' || d_intervenant.heures_service_statutaire );
-    ose_test.echo('      .heures_service_modifie         = ' || d_intervenant.heures_service_modifie );
-    ose_test.echo('      .depassement_service_du_sans_hc = ' || d_intervenant.depassement_service_du_sans_hc );
-    ose_test.echo('');
-  END;
+-- TYPE_DOTATION_PK
+CREATE UNIQUE INDEX "TYPE_DOTATION_PK" ON "TYPE_DOTATION" ("ID");
 
-  PROCEDURE DEBUG_SERVICE( SERVICE_ID PLS_INTEGER ) IS
-  BEGIN
-    ose_test.echo('d_service(' || SERVICE_ID || ')' );
-    ose_test.echo('      .taux_fi                   = ' || d_service(SERVICE_ID).taux_fi );
-    ose_test.echo('      .taux_fa                   = ' || d_service(SERVICE_ID).taux_fa );
-    ose_test.echo('      .taux_fc                   = ' || d_service(SERVICE_ID).taux_fc );
-    ose_test.echo('      .ponderation_service_du    = ' || d_service(SERVICE_ID).ponderation_service_du );
-    ose_test.echo('      .ponderation_service_compl = ' || d_service(SERVICE_ID).ponderation_service_compl );
-    ose_test.echo('      .structure_aff_id          = ' || d_service(SERVICE_ID).structure_aff_id || ' (' || ose_test.get_structure_by_id(d_service(SERVICE_ID).structure_aff_id).libelle_court || ')' );
-    ose_test.echo('      .structure_ens_id          = ' || d_service(SERVICE_ID).structure_ens_id || ' (' || CASE WHEN d_service(SERVICE_ID).structure_ens_id IS NOT NULL THEN ose_test.get_structure_by_id(d_service(SERVICE_ID).structure_ens_id).libelle_court ELSE 'null' END || ')' );
-    ose_test.echo('');
-  END;
+-- TYPE_DOTATION_SOURCE_FK_IDX
+CREATE INDEX "TYPE_DOTATION_SOURCE_FK_IDX" ON "TYPE_DOTATION" ("SOURCE_ID");
 
-  PROCEDURE DEBUG_SERVICE_REF( SERVICE_REF_ID PLS_INTEGER ) IS
-  BEGIN
-    ose_test.echo('d_service_ref(' || SERVICE_REF_ID || ')' );
-    ose_test.echo('      .structure_id          = ' || d_service_ref(SERVICE_REF_ID).structure_id || ' (' || ose_test.get_structure_by_id(d_service_ref(SERVICE_REF_ID).structure_id).libelle_court || ')' );
-    ose_test.echo('');
-  END;
+-- TYPE_FORMATION_GROUPE_FK_IDX
+CREATE INDEX "TYPE_FORMATION_GROUPE_FK_IDX" ON "TYPE_FORMATION" ("GROUPE_ID");
 
-  PROCEDURE DEBUG_VOLUME_HORAIRE( VH_ID PLS_INTEGER ) IS
-  BEGIN
-    ose_test.echo('d_volume_horaire(' || VH_ID || ')' );
-    ose_test.echo('      .service_id                = ' || d_volume_horaire(VH_ID).service_id );
-    ose_test.echo('      .type_volume_horaire_id    = ' || d_volume_horaire(VH_ID).type_volume_horaire_id );
-    ose_test.echo('      .etat_volume_horaire_id    = ' || d_volume_horaire(VH_ID).etat_volume_horaire_id );
-    ose_test.echo('      .etat_volume_horaire_ordre = ' || d_volume_horaire(VH_ID).etat_volume_horaire_ordre );
-    ose_test.echo('      .heures                    = ' || d_volume_horaire(VH_ID).heures );
-    ose_test.echo('      .taux_service_du           = ' || d_volume_horaire(VH_ID).taux_service_du );
-    ose_test.echo('      .taux_service_compl        = ' || d_volume_horaire(VH_ID).taux_service_compl );
-    ose_test.echo('');
-  END;
+-- TYPE_FORMATION_HCFK_IDX
+CREATE INDEX "TYPE_FORMATION_HCFK_IDX" ON "TYPE_FORMATION" ("HISTO_CREATEUR_ID");
 
-  PROCEDURE DEBUG_VOLUME_HORAIRE_REF( VH_REF_ID PLS_INTEGER ) IS
-  BEGIN
-    ose_test.echo('d_volume_horaire_ref(' || VH_REF_ID || ')' );
-    ose_test.echo('      .service_referentiel_id    = ' || d_volume_horaire_ref(VH_REF_ID).service_referentiel_id );
-    ose_test.echo('      .type_volume_horaire_id    = ' || d_volume_horaire_ref(VH_REF_ID).type_volume_horaire_id );
-    ose_test.echo('      .etat_volume_horaire_id    = ' || d_volume_horaire_ref(VH_REF_ID).etat_volume_horaire_id );
-    ose_test.echo('      .etat_volume_horaire_ordre = ' || d_volume_horaire_ref(VH_REF_ID).etat_volume_horaire_ordre );
-    ose_test.echo('      .heures                    = ' || d_volume_horaire_ref(VH_REF_ID).heures );
-    ose_test.echo('');
-  END;
+-- TYPE_FORMATION_HDFK_IDX
+CREATE INDEX "TYPE_FORMATION_HDFK_IDX" ON "TYPE_FORMATION" ("HISTO_DESTRUCTEUR_ID");
 
-  PROCEDURE DEBUG_RESULTAT IS
-  BEGIN
-    ose_test.echo('d_resultat' );
-    ose_test.echo('      .service_du   = ' || d_resultat.service_du );
-    ose_test.echo('      .solde        = ' || d_resultat.solde );
-    ose_test.echo('      .sous_service = ' || d_resultat.sous_service );
-    ose_test.echo('      .heures_compl = ' || d_resultat.heures_compl );
-    ose_test.echo('');
-  END;
+-- TYPE_FORMATION_HMFK_IDX
+CREATE INDEX "TYPE_FORMATION_HMFK_IDX" ON "TYPE_FORMATION" ("HISTO_MODIFICATEUR_ID");
 
-  PROCEDURE DEBUG_RESULTAT_VH( VH_ID PLS_INTEGER ) IS
-  BEGIN
-    ose_test.echo('d_resultat.volume_horaire(' || VH_ID || ')' );
-    ose_test.echo('      .service_fi                = ' || d_resultat.volume_horaire(VH_ID).service_fi );
-    ose_test.echo('      .service_fa                = ' || d_resultat.volume_horaire(VH_ID).service_fa );
-    ose_test.echo('      .service_fc                = ' || d_resultat.volume_horaire(VH_ID).service_fc );
-    ose_test.echo('      .heures_compl_fi           = ' || d_resultat.volume_horaire(VH_ID).heures_compl_fi );
-    ose_test.echo('      .heures_compl_fa           = ' || d_resultat.volume_horaire(VH_ID).heures_compl_fa );
-    ose_test.echo('      .heures_compl_fc           = ' || d_resultat.volume_horaire(VH_ID).heures_compl_fc );
-    ose_test.echo('      .heures_compl_fc_majorees  = ' || d_resultat.volume_horaire(VH_ID).heures_compl_fc_majorees );
-    ose_test.echo('');
-  END;
+-- TYPE_FORMATION_PK
+CREATE UNIQUE INDEX "TYPE_FORMATION_PK" ON "TYPE_FORMATION" ("ID");
 
-  PROCEDURE DEBUG_RESULTAT_VH_REF( VH_REF_ID PLS_INTEGER ) IS
-  BEGIN
-    ose_test.echo('d_resultat.volume_horaire_ref(' || VH_REF_ID || ')' );
-    ose_test.echo('      .service_referentiel                = ' || d_resultat.volume_horaire_ref(VH_REF_ID).service_referentiel );
-    ose_test.echo('      .heures_compl_referentiel           = ' || d_resultat.volume_horaire_ref(VH_REF_ID).heures_compl_referentiel );
-    ose_test.echo('');
-  END;
+-- TYPE_FORMATION_SOURCE_FK_IDX
+CREATE INDEX "TYPE_FORMATION_SOURCE_FK_IDX" ON "TYPE_FORMATION" ("SOURCE_ID");
 
-  PROCEDURE DEBUG_ALL( INTERVENANT_ID NUMERIC, TYPE_VOLUME_HORAIRE_ID NUMERIC, ETAT_VOLUME_HORAIRE_ID NUMERIC ) IS
-    id  PLS_INTEGER;
-    i   intervenant%rowtype;
-    a   annee%rowtype;
-    tvh type_volume_horaire%rowtype;
-    evh etat_volume_horaire%rowtype;
-  BEGIN
-    IF GET_DEBUG_LEVEL >= 1 THEN
-      SELECT * INTO   i FROM intervenant         WHERE id = INTERVENANT_ID;
-      SELECT * INTO   a FROM annee               WHERE id = i.annee_id;
-      SELECT * INTO tvh FROM type_volume_horaire WHERE id = TYPE_VOLUME_HORAIRE_ID;
-      SELECT * INTO evh FROM etat_volume_horaire WHERE id = ETAT_VOLUME_HORAIRE_ID;
+-- TYPE_FORMATION__UN
+CREATE UNIQUE INDEX "TYPE_FORMATION__UN" ON "TYPE_FORMATION" ("SOURCE_CODE");
 
-      ose_test.echo('');
-      ose_test.echo('---------------------------------------------------------------------');
-      ose_test.echo('Intervenant: ' || INTERVENANT_ID || ' : ' || i.prenom || ' ' || i.nom_usuel || ' (n° harp. ' || i.source_code || ')' );
-      ose_test.echo(
-                  'Année: ' || a.libelle
-               || ', type ' || tvh.libelle
-               || ', état ' || evh.libelle
-      );
-      ose_test.echo('');
-    END IF;
-    IF GET_DEBUG_LEVEL >= 2 THEN
-      DEBUG_INTERVENANT;
-    END IF;
+-- TYPE_HEURES_HCFK_IDX
+CREATE INDEX "TYPE_HEURES_HCFK_IDX" ON "TYPE_HEURES" ("HISTO_CREATEUR_ID");
 
-    IF GET_DEBUG_LEVEL >= 5 THEN     
-      id := d_service.FIRST;
-      LOOP EXIT WHEN id IS NULL;
-        DEBUG_SERVICE( id ); 
-        id := d_service.NEXT(id);
-      END LOOP;
+-- TYPE_HEURES_HDFK_IDX
+CREATE INDEX "TYPE_HEURES_HDFK_IDX" ON "TYPE_HEURES" ("HISTO_DESTRUCTEUR_ID");
 
-      id := d_service_ref.FIRST;
-      LOOP EXIT WHEN id IS NULL;
-        DEBUG_SERVICE_REF( id ); 
-        id := d_service_ref.NEXT(id);
-      END LOOP;
-    END IF;
+-- TYPE_HEURES_HMFK_IDX
+CREATE INDEX "TYPE_HEURES_HMFK_IDX" ON "TYPE_HEURES" ("HISTO_MODIFICATEUR_ID");
 
-    IF GET_DEBUG_LEVEL >= 6 THEN     
-      id := d_volume_horaire.FIRST;
-      LOOP EXIT WHEN id IS NULL;
-        DEBUG_VOLUME_HORAIRE( id ); 
-        id := d_volume_horaire.NEXT(id);
-      END LOOP;
+-- TYPE_HEURES_PK
+CREATE UNIQUE INDEX "TYPE_HEURES_PK" ON "TYPE_HEURES" ("ID");
 
-      id := d_volume_horaire_ref.FIRST;
-      LOOP EXIT WHEN id IS NULL;
-        DEBUG_VOLUME_HORAIRE_REF( id ); 
-        id := d_volume_horaire_ref.NEXT(id);
-      END LOOP;
-    END IF;
+-- TYPE_HEURES_TYPE_HEURES_FK_IDX
+CREATE INDEX "TYPE_HEURES_TYPE_HEURES_FK_IDX" ON "TYPE_HEURES" ("TYPE_HEURES_ELEMENT_ID");
 
-    IF GET_DEBUG_LEVEL >= 3 THEN
-      DEBUG_RESULTAT;
-    END IF;
+-- TYPE_HEURES_UN
+CREATE UNIQUE INDEX "TYPE_HEURES_UN" ON "TYPE_HEURES" ("CODE");
 
-    IF GET_DEBUG_LEVEL >= 4 THEN
-      id := d_resultat.volume_horaire.FIRST;
-      LOOP EXIT WHEN id IS NULL;
-        DEBUG_RESULTAT_VH( id ); 
-        id := d_resultat.volume_horaire.NEXT(id);
-      END LOOP;
+-- TYPE_INTERVENANT_CODE_UN
+CREATE UNIQUE INDEX "TYPE_INTERVENANT_CODE_UN" ON "TYPE_INTERVENANT" ("CODE");
 
-      id := d_resultat.volume_horaire_ref.FIRST;
-      LOOP EXIT WHEN id IS NULL;
-        DEBUG_RESULTAT_VH_REF( id ); 
-        id := d_resultat.volume_horaire_ref.NEXT(id);
-      END LOOP;
-    END IF;
-  END;
+-- TYPE_INTERVENANT_HCFK_IDX
+CREATE INDEX "TYPE_INTERVENANT_HCFK_IDX" ON "TYPE_INTERVENANT" ("HISTO_CREATEUR_ID");
 
+-- TYPE_INTERVENANT_HDFK_IDX
+CREATE INDEX "TYPE_INTERVENANT_HDFK_IDX" ON "TYPE_INTERVENANT" ("HISTO_DESTRUCTEUR_ID");
 
+-- TYPE_INTERVENANT_HMFK_IDX
+CREATE INDEX "TYPE_INTERVENANT_HMFK_IDX" ON "TYPE_INTERVENANT" ("HISTO_MODIFICATEUR_ID");
 
-  PROCEDURE CALCULER( INTERVENANT_ID NUMERIC ) IS
-    id PLS_INTEGER;
-    found BOOLEAN;
-    function_name VARCHAR2(30);
-    package_name VARCHAR2(30);
-  BEGIN
-    package_name  := OSE_PARAMETRE.GET_FORMULE_PACKAGE_NAME;
-    function_name := OSE_PARAMETRE.GET_FORMULE_FUNCTION_NAME;
+-- TYPE_INTERVENANT_PK
+CREATE UNIQUE INDEX "TYPE_INTERVENANT_PK" ON "TYPE_INTERVENANT" ("ID");
 
-    -- détection de suppression des lignes de résultat obsolètes
-    UPDATE formule_resultat SET TO_DELETE = 1 WHERE intervenant_id = CALCULER.INTERVENANT_ID;
-    UPDATE FORMULE_RESULTAT_SERVICE_REF SET TO_DELETE = 1 WHERE formule_resultat_id IN (SELECT id FROM formule_resultat WHERE intervenant_id = CALCULER.INTERVENANT_ID);
-    UPDATE FORMULE_RESULTAT_SERVICE     SET TO_DELETE = 1 WHERE formule_resultat_id IN (SELECT id FROM formule_resultat WHERE intervenant_id = CALCULER.INTERVENANT_ID);
-    UPDATE FORMULE_RESULTAT_VH_REF      SET TO_DELETE = 1 WHERE formule_resultat_id IN (SELECT id FROM formule_resultat WHERE intervenant_id = CALCULER.INTERVENANT_ID);
-    UPDATE FORMULE_RESULTAT_VH          SET TO_DELETE = 1 WHERE formule_resultat_id IN (SELECT id FROM formule_resultat WHERE intervenant_id = CALCULER.INTERVENANT_ID);
+-- TYPE_INTERVENTION_EP_HCFK_IDX
+CREATE INDEX "TYPE_INTERVENTION_EP_HCFK_IDX" ON "TYPE_INTERVENTION_EP" ("HISTO_CREATEUR_ID");
 
-    POPULATE( INTERVENANT_ID );
-    IF d_intervenant.heures_service_statutaire IS NOT NULL THEN -- sinon rien n'est à faire!!
-      -- lancement du calcul sur les nouvelles lignes ou sur les lignes existantes
-      id := d_type_etat_vh.FIRST;
-      LOOP EXIT WHEN id IS NULL;
-        POPULATE_FILTER( d_type_etat_vh(id).type_volume_horaire_id, d_type_etat_vh(id).etat_volume_horaire_id );
-        DEBUG_ALL( INTERVENANT_ID, d_type_etat_vh(id).type_volume_horaire_id, d_type_etat_vh(id).etat_volume_horaire_id );
-        OSE_FORMULE.INIT_RESULTAT( INTERVENANT_ID, d_type_etat_vh(id).type_volume_horaire_id, d_type_etat_vh(id).etat_volume_horaire_id );
-        OSE_FORMULE.CALC_RESULTAT;
-        OSE_FORMULE.SAVE_RESULTAT;
-        id := d_type_etat_vh.NEXT(id);
-      END LOOP;
-    END IF;
+-- TYPE_INTERVENTION_EP_HDFK_IDX
+CREATE INDEX "TYPE_INTERVENTION_EP_HDFK_IDX" ON "TYPE_INTERVENTION_EP" ("HISTO_DESTRUCTEUR_ID");
 
-    -- suppression des données devenues obsolètes
-    OSE_EVENT.ON_BEFORE_FORMULE_RES_DELETE( CALCULER.INTERVENANT_ID );
+-- TYPE_INTERVENTION_EP_HMFK_IDX
+CREATE INDEX "TYPE_INTERVENTION_EP_HMFK_IDX" ON "TYPE_INTERVENTION_EP" ("HISTO_MODIFICATEUR_ID");
 
-    DELETE FROM FORMULE_RESULTAT_SERVICE_REF WHERE TO_DELETE = 1 AND formule_resultat_id IN (SELECT id FROM formule_resultat WHERE intervenant_id = CALCULER.INTERVENANT_ID);
-    DELETE FROM FORMULE_RESULTAT_SERVICE WHERE TO_DELETE = 1 AND formule_resultat_id IN (SELECT id FROM formule_resultat WHERE intervenant_id = CALCULER.INTERVENANT_ID);
-    DELETE FROM FORMULE_RESULTAT_VH_REF WHERE TO_DELETE = 1 AND formule_resultat_id IN (SELECT id FROM formule_resultat WHERE intervenant_id = CALCULER.INTERVENANT_ID);
-    DELETE FROM FORMULE_RESULTAT_VH WHERE TO_DELETE = 1 AND formule_resultat_id IN (SELECT id FROM formule_resultat WHERE intervenant_id = CALCULER.INTERVENANT_ID);
-    DELETE FROM FORMULE_RESULTAT WHERE TO_DELETE = 1 AND intervenant_id = CALCULER.INTERVENANT_ID;
+-- TYPE_INTERVENTION_EP_PK
+CREATE UNIQUE INDEX "TYPE_INTERVENTION_EP_PK" ON "TYPE_INTERVENTION_EP" ("ID");
 
-    OSE_EVENT.ON_AFTER_FORMULE_CALC( CALCULER.INTERVENANT_ID );
-  END;
+-- TYPE_INTERVENTION_HCFK_IDX
+CREATE INDEX "TYPE_INTERVENTION_HCFK_IDX" ON "TYPE_INTERVENTION" ("HISTO_CREATEUR_ID");
 
+-- TYPE_INTERVENTION_HDFK_IDX
+CREATE INDEX "TYPE_INTERVENTION_HDFK_IDX" ON "TYPE_INTERVENTION" ("HISTO_DESTRUCTEUR_ID");
 
+-- TYPE_INTERVENTION_HMFK_IDX
+CREATE INDEX "TYPE_INTERVENTION_HMFK_IDX" ON "TYPE_INTERVENTION" ("HISTO_MODIFICATEUR_ID");
 
-  PROCEDURE CALCULER_TBL( PARAMS UNICAEN_TBL.T_PARAMS ) IS
-    intervenant_id NUMERIC;
-    TYPE r_cursor IS REF CURSOR;
-    diff_cur r_cursor;
-  BEGIN
-    OPEN diff_cur FOR 'WITH interv AS (SELECT id intervenant_id, intervenant.* FROM intervenant)
-    SELECT intervenant_id FROM interv WHERE ' || unicaen_tbl.PARAMS_TO_CONDS( params );
-    LOOP
-      FETCH diff_cur INTO intervenant_id; EXIT WHEN diff_cur%NOTFOUND;
-      BEGIN
-        CALCULER( intervenant_id );
-      END;
-    END LOOP;
-    CLOSE diff_cur;
-  END; 
+-- TYPE_INTERVENTION_PK
+CREATE UNIQUE INDEX "TYPE_INTERVENTION_PK" ON "TYPE_INTERVENTION" ("ID");
 
+-- TYPE_INTERVENTION_STRUCTURE_PK
+CREATE UNIQUE INDEX "TYPE_INTERVENTION_STRUCTURE_PK" ON "TYPE_INTERVENTION_STRUCTURE" ("ID");
 
+-- TYPE_INTERV_ANNEE_DEBUT_IDX
+CREATE INDEX "TYPE_INTERV_ANNEE_DEBUT_IDX" ON "TYPE_INTERVENTION" ("ANNEE_DEBUT_ID");
 
-  FUNCTION GET_INTERVENANT RETURN NUMERIC IS
-  BEGIN
-    RETURN OSE_FORMULE.INTERVENANT_ID;
-  END;
+-- TYPE_INTERV_ANNEE_FIN_IDX
+CREATE INDEX "TYPE_INTERV_ANNEE_FIN_IDX" ON "TYPE_INTERVENTION" ("ANNEE_FIN_ID");
 
-  PROCEDURE SET_INTERVENANT( INTERVENANT_ID NUMERIC DEFAULT NULL) IS
-  BEGIN
-    IF SET_INTERVENANT.INTERVENANT_ID = -1 THEN
-      OSE_FORMULE.INTERVENANT_ID := NULL;
-    ELSE
-      OSE_FORMULE.INTERVENANT_ID := SET_INTERVENANT.INTERVENANT_ID;
-    END IF;
-  END;
+-- TYPE_MODULATEUR_EP_HCFK_IDX
+CREATE INDEX "TYPE_MODULATEUR_EP_HCFK_IDX" ON "TYPE_MODULATEUR_EP" ("HISTO_CREATEUR_ID");
+
+-- TYPE_MODULATEUR_EP_HDFK_IDX
+CREATE INDEX "TYPE_MODULATEUR_EP_HDFK_IDX" ON "TYPE_MODULATEUR_EP" ("HISTO_DESTRUCTEUR_ID");
+
+-- TYPE_MODULATEUR_EP_HMFK_IDX
+CREATE INDEX "TYPE_MODULATEUR_EP_HMFK_IDX" ON "TYPE_MODULATEUR_EP" ("HISTO_MODIFICATEUR_ID");
+
+-- TYPE_MODULATEUR_EP_PK
+CREATE UNIQUE INDEX "TYPE_MODULATEUR_EP_PK" ON "TYPE_MODULATEUR_EP" ("ID");
+
+-- TYPE_MODULATEUR_EP__UN
+CREATE UNIQUE INDEX "TYPE_MODULATEUR_EP__UN" ON "TYPE_MODULATEUR_EP" ("SOURCE_CODE");
+
+-- TYPE_MODULATEUR_EP__UNV1
+CREATE UNIQUE INDEX "TYPE_MODULATEUR_EP__UNV1" ON "TYPE_MODULATEUR_EP" ("TYPE_MODULATEUR_ID", "ELEMENT_PEDAGOGIQUE_ID");
+
+-- TYPE_MODULATEUR_HCFK_IDX
+CREATE INDEX "TYPE_MODULATEUR_HCFK_IDX" ON "TYPE_MODULATEUR" ("HISTO_CREATEUR_ID");
+
+-- TYPE_MODULATEUR_HDFK_IDX
+CREATE INDEX "TYPE_MODULATEUR_HDFK_IDX" ON "TYPE_MODULATEUR" ("HISTO_DESTRUCTEUR_ID");
+
+-- TYPE_MODULATEUR_HMFK_IDX
+CREATE INDEX "TYPE_MODULATEUR_HMFK_IDX" ON "TYPE_MODULATEUR" ("HISTO_MODIFICATEUR_ID");
+
+-- TYPE_MODULATEUR_PK
+CREATE UNIQUE INDEX "TYPE_MODULATEUR_PK" ON "TYPE_MODULATEUR" ("ID");
+
+-- TYPE_MODULATEUR_STRUCTURE_PK
+CREATE UNIQUE INDEX "TYPE_MODULATEUR_STRUCTURE_PK" ON "TYPE_MODULATEUR_STRUCTURE" ("ID");
 
-  FUNCTION MATCH_INTERVENANT(INTERVENANT_ID NUMERIC DEFAULT NULL) RETURN NUMERIC IS
-  BEGIN
-    IF OSE_FORMULE.INTERVENANT_ID IS NULL OR OSE_FORMULE.INTERVENANT_ID = MATCH_INTERVENANT.INTERVENANT_ID THEN
-      RETURN 1;
-    ELSE
-      RETURN 0;
-    END IF;
-  END;
-END OSE_FORMULE;
-/
+-- TYPE_MODULATEUR_STRUCTURE_UN
+CREATE UNIQUE INDEX "TYPE_MODULATEUR_STRUCTURE_UN" ON "TYPE_MODULATEUR_STRUCTURE" ("TYPE_MODULATEUR_ID", "STRUCTURE_ID");
 
--- OSE_HISTO
-CREATE OR REPLACE PACKAGE BODY "OSE_HISTO" AS 
+-- TYPE_PIECE_JOINTE_HCFK_IDX
+CREATE INDEX "TYPE_PIECE_JOINTE_HCFK_IDX" ON "TYPE_PIECE_JOINTE" ("HISTO_CREATEUR_ID");
 
-  FUNCTION FILTRE( histo_debut NUMERIC, histo_fin NUMERIC ) RETURN NUMERIC IS
-  BEGIN
-    RETURN 1;
-  END;
+-- TYPE_PIECE_JOINTE_HDFK_IDX
+CREATE INDEX "TYPE_PIECE_JOINTE_HDFK_IDX" ON "TYPE_PIECE_JOINTE" ("HISTO_DESTRUCTEUR_ID");
 
-END OSE_HISTO;
-/
+-- TYPE_PIECE_JOINTE_HMFK_IDX
+CREATE INDEX "TYPE_PIECE_JOINTE_HMFK_IDX" ON "TYPE_PIECE_JOINTE" ("HISTO_MODIFICATEUR_ID");
 
--- OSE_PAIEMENT
-CREATE OR REPLACE PACKAGE BODY "OSE_PAIEMENT" AS
-  
-  PROCEDURE CHECK_BAD_PAIEMENTS( FORMULE_RES_SERVICE_ID NUMERIC DEFAULT NULL, FORMULE_RES_SERVICE_REF_ID NUMERIC DEFAULT NULL ) IS
-    cc NUMERIC;
-  BEGIN
-    SELECT count(*) INTO cc 
-    FROM mise_en_paiement mep 
-    WHERE
-      mep.histo_destruction IS NULL
-      AND mep.formule_res_service_id = NVL( CHECK_BAD_PAIEMENTS.FORMULE_RES_SERVICE_ID, mep.formule_res_service_id )
-      AND mep.formule_res_service_ref_id = NVL( CHECK_BAD_PAIEMENTS.FORMULE_RES_SERVICE_REF_ID, mep.formule_res_service_ref_id )
-  ;
+-- TYPE_PIECE_JOINTE_PK
+CREATE UNIQUE INDEX "TYPE_PIECE_JOINTE_PK" ON "TYPE_PIECE_JOINTE" ("ID");
 
-    IF (cc > 0) THEN
-      raise_application_error(-20101, 'Il est impossible d''effectuer cette action : des demandes de mise en paiement ont été saisies et ne peuvent pas être modifiées');
-    ELSE
-      DELETE FROM mise_en_paiement WHERE 
-        histo_destruction IS NOT NULL
-        AND formule_res_service_id = NVL( CHECK_BAD_PAIEMENTS.FORMULE_RES_SERVICE_ID, formule_res_service_id )
-        AND formule_res_service_ref_id = NVL( CHECK_BAD_PAIEMENTS.FORMULE_RES_SERVICE_REF_ID, formule_res_service_ref_id )
-      ;
-    END IF;
-  END;
+-- TYPE_PIECE_JOINTE_STATUT_PK
+CREATE UNIQUE INDEX "TYPE_PIECE_JOINTE_STATUT_PK" ON "TYPE_PIECE_JOINTE_STATUT" ("ID");
 
-END OSE_PAIEMENT;
-/
+-- TYPE_RESSOURCE_FA
+CREATE INDEX "TYPE_RESSOURCE_FA" ON "TYPE_RESSOURCE" ("FA");
 
--- OSE_PARAMETRE
-CREATE OR REPLACE PACKAGE BODY "OSE_PARAMETRE" AS
+-- TYPE_RESSOURCE_FC
+CREATE INDEX "TYPE_RESSOURCE_FC" ON "TYPE_RESSOURCE" ("FC");
 
-  cache_ose_user NUMERIC;
-  cache_annee_id NUMERIC;
+-- TYPE_RESSOURCE_FI
+CREATE INDEX "TYPE_RESSOURCE_FI" ON "TYPE_RESSOURCE" ("FI");
 
-  function get_etablissement return Numeric AS
-    etab_id numeric;
-  BEGIN
-    select to_number(valeur) into etab_id from parametre where nom = 'etablissement';
-    RETURN etab_id;
-  END get_etablissement;
+-- TYPE_RESSOURCE_HCFK_IDX
+CREATE INDEX "TYPE_RESSOURCE_HCFK_IDX" ON "TYPE_RESSOURCE" ("HISTO_CREATEUR_ID");
 
-  function get_annee return Numeric AS
-    annee_id numeric;
-  BEGIN
-    IF cache_annee_id IS NOT NULL THEN RETURN cache_annee_id; END IF;
-    select to_number(valeur) into annee_id from parametre where nom = 'annee';
-    cache_annee_id := annee_id;
-    RETURN cache_annee_id;
-  END get_annee;
+-- TYPE_RESSOURCE_HDFK_IDX
+CREATE INDEX "TYPE_RESSOURCE_HDFK_IDX" ON "TYPE_RESSOURCE" ("HISTO_DESTRUCTEUR_ID");
 
-  FUNCTION get_annee_import RETURN NUMERIC AS
-    annee_id NUMERIC;
-  BEGIN
-    SELECT to_number(valeur) INTO annee_id FROM parametre WHERE nom = 'annee_import';
-    RETURN annee_id;
-  END get_annee_import;
+-- TYPE_RESSOURCE_HMFK_IDX
+CREATE INDEX "TYPE_RESSOURCE_HMFK_IDX" ON "TYPE_RESSOURCE" ("HISTO_MODIFICATEUR_ID");
 
-  function get_ose_user return Numeric AS
-    ose_user_id numeric;
-  BEGIN
-    IF cache_ose_user IS NOT NULL THEN RETURN cache_ose_user; END IF;
-    select to_number(valeur) into ose_user_id from parametre where nom = 'oseuser';
-    cache_ose_user := ose_user_id;
-    RETURN cache_ose_user;
-  END get_ose_user;
+-- TYPE_RESSOURCE_PK
+CREATE UNIQUE INDEX "TYPE_RESSOURCE_PK" ON "TYPE_RESSOURCE" ("ID");
 
-  function get_drh_structure_id return Numeric AS
-    drh_structure_id numeric;
-  BEGIN
-    select to_number(valeur) into drh_structure_id from parametre where nom = 'drh_structure_id';
-    RETURN drh_structure_id;
-  END get_drh_structure_id;
+-- TYPE_RESSOURCE_REF
+CREATE INDEX "TYPE_RESSOURCE_REF" ON "TYPE_RESSOURCE" ("REFERENTIEL");
 
-  FUNCTION get_date_fin_saisie_permanents RETURN DATE IS
-    date_fin_saisie_permanents date;
-  BEGIN
-    select TO_DATE(valeur, 'dd/mm/yyyy') into date_fin_saisie_permanents from parametre where nom = 'date_fin_saisie_permanents';
-    RETURN date_fin_saisie_permanents;
-  END;
+-- TYPE_VALIDATION_PK
+CREATE UNIQUE INDEX "TYPE_VALIDATION_PK" ON "TYPE_VALIDATION" ("ID");
 
-  FUNCTION get_ddeb_saisie_serv_real RETURN DATE IS
-    val date;
-  BEGIN
-    select TO_DATE(valeur, 'dd/mm/yyyy') into val from parametre where nom = 'date_debut_saisie_services_realises';
-    RETURN val;
-  END;
-  
-  FUNCTION get_dfin_saisie_serv_real RETURN DATE IS
-    val date;
-  BEGIN
-    select TO_DATE(valeur, 'dd/mm/yyyy') into val from parametre where nom = 'date_fin_saisie_services_realises';
-    RETURN val;
-  END;
+-- TYPE_VOLUME_HORAIRE_PK
+CREATE UNIQUE INDEX "TYPE_VOLUME_HORAIRE_PK" ON "TYPE_VOLUME_HORAIRE" ("ID");
 
-  FUNCTION get_formule_package_name RETURN VARCHAR2 IS
-    formule_package_name VARCHAR2(30);
-  BEGIN
-    SELECT valeur INTO formule_package_name FROM parametre WHERE nom = 'formule_package_name';
-    RETURN formule_package_name;
-  END;
-  
-  FUNCTION get_formule_function_name RETURN VARCHAR2 IS
-    formule_function_name VARCHAR2(30);
-  BEGIN
-    SELECT valeur INTO formule_function_name FROM parametre WHERE nom = 'formule_function_name';
-    RETURN formule_function_name;
-  END;
+-- TYPE_VOLUME_HORAIRE__UN
+CREATE UNIQUE INDEX "TYPE_VOLUME_HORAIRE__UN" ON "TYPE_VOLUME_HORAIRE" ("CODE");
 
-END OSE_PARAMETRE;
-/
+-- UTILISATEUR_PK
+CREATE UNIQUE INDEX "UTILISATEUR_PK" ON "UTILISATEUR" ("ID");
 
--- OSE_TEST
-CREATE OR REPLACE PACKAGE BODY "OSE_TEST" AS
-  TYPE OUT_LIST IS TABLE OF CLOB;
-  HTS TIMESTAMP;
+-- UTILISATEUR_USERNAME_UN
+CREATE UNIQUE INDEX "UTILISATEUR_USERNAME_UN" ON "UTILISATEUR" ("USERNAME");
 
-  SUCCES_SHOWN BOOLEAN DEFAULT TRUE;
-  T_SUCCES_COUNT NUMERIC DEFAULT 0;
-  T_ECHECS_COUNT NUMERIC DEFAULT 0;
-  A_SUCCES_COUNT NUMERIC DEFAULT 0;
-  A_ECHECS_COUNT NUMERIC DEFAULT 0;
-  CURRENT_TEST CLOB;
-  CURRENT_TEST_OUTPUT_BUFFER OUT_LIST := OUT_LIST();
-  CURRENT_TEST_OUTPUT_BUFFER_ERR BOOLEAN;
+-- VALIDATION_HCFK_IDX
+CREATE INDEX "VALIDATION_HCFK_IDX" ON "VALIDATION" ("HISTO_CREATEUR_ID");
 
-  PROCEDURE SHOW_SUCCES IS
-  BEGIN
-    SUCCES_SHOWN := true;
-  END SHOW_SUCCES;
+-- VALIDATION_HDFK_IDX
+CREATE INDEX "VALIDATION_HDFK_IDX" ON "VALIDATION" ("HISTO_DESTRUCTEUR_ID");
 
-  PROCEDURE HIDE_SUCCES IS
-  BEGIN
-    SUCCES_SHOWN := false;
-  END HIDE_SUCCES;
+-- VALIDATION_HMFK_IDX
+CREATE INDEX "VALIDATION_HMFK_IDX" ON "VALIDATION" ("HISTO_MODIFICATEUR_ID");
 
-  PROCEDURE DEBUT( TEST_NAME CLOB ) IS
-  BEGIN
-    CURRENT_TEST := TEST_NAME;
-    CURRENT_TEST_OUTPUT_BUFFER_ERR := FALSE;
-    echo (' '); echo('TEST ' || TEST_NAME || ' >>>>>>>>>>' );
-  END;
+-- VALIDATION_INTERVENANT_FK_IDX
+CREATE INDEX "VALIDATION_INTERVENANT_FK_IDX" ON "VALIDATION" ("INTERVENANT_ID");
 
-  PROCEDURE FIN IS
-    TEST_NAME CLOB;
-  BEGIN
-    IF CURRENT_TEST_OUTPUT_BUFFER_ERR THEN
-      T_ECHECS_COUNT := T_ECHECS_COUNT + 1;
-      echo('>>>>>>>>>> FIN DU TEST ' || CURRENT_TEST ); echo (' ');
-      CURRENT_TEST := NULL;
+-- VALIDATION_PK
+CREATE UNIQUE INDEX "VALIDATION_PK" ON "VALIDATION" ("ID");
 
-      FOR i IN 1 .. CURRENT_TEST_OUTPUT_BUFFER.COUNT LOOP
-        echo( CURRENT_TEST_OUTPUT_BUFFER(i) );
-      END LOOP;
-    ELSE
-      T_SUCCES_COUNT := T_SUCCES_COUNT + 1;
-      TEST_NAME := CURRENT_TEST;
-      CURRENT_TEST := NULL;
-      echo('SUCCÈS DU TEST : ' || TEST_NAME );
-    END IF;
-    CURRENT_TEST_OUTPUT_BUFFER.DELETE; -- clear buffer
-  END;
+-- VALIDATION_STRUCTURE_FK_IDX
+CREATE INDEX "VALIDATION_STRUCTURE_FK_IDX" ON "VALIDATION" ("STRUCTURE_ID");
 
-  PROCEDURE ECHO( MSG CLOB ) IS
-  BEGIN
-    IF CURRENT_TEST IS NULL THEN
-      dbms_output.put_line(MSG);
-    ELSE
-      CURRENT_TEST_OUTPUT_BUFFER.EXTEND;
-      CURRENT_TEST_OUTPUT_BUFFER (CURRENT_TEST_OUTPUT_BUFFER.LAST) := MSG;
-    END IF;
-  END;
+-- VALIDATION_TYPE_VALIDATION_FK
+CREATE INDEX "VALIDATION_TYPE_VALIDATION_FK" ON "VALIDATION" ("TYPE_VALIDATION_ID");
 
-  PROCEDURE INIT IS
-  BEGIN
-    T_SUCCES_COUNT  := 0;
-    T_ECHECS_COUNT  := 0;
-    A_SUCCES_COUNT  := 0;
-    A_ECHECS_COUNT  := 0;
-    CURRENT_TEST    := NULL;
-  END INIT;
+-- VALIDATION_VOL_HORAIRE_PK
+CREATE UNIQUE INDEX "VALIDATION_VOL_HORAIRE_PK" ON "VALIDATION_VOL_HORAIRE" ("VALIDATION_ID", "VOLUME_HORAIRE_ID");
 
-  PROCEDURE SHOW_STATS IS
-  BEGIN
-    echo ( ' ' );
-    echo ( '********************************* STATISTIQUES *********************************' );
-    echo ( ' ' );
-    echo ( '   - nombre de tests passés avec succès :       ' || T_SUCCES_COUNT );
-    echo ( '   - nombre de tests ayant échoué :             ' || T_ECHECS_COUNT );
-    echo ( ' ' );
-    echo ( '   - nombre d''assertions passés avec succès :   ' || A_SUCCES_COUNT );
-    echo ( '   - nombre d''assertions ayant échoué :         ' || A_ECHECS_COUNT );
-    echo ( ' ' );
-    echo ( '********************************************************************************' );
-    echo ( ' ' );
-  END;
+-- VALIDATION_VOL_HORAIRE_REF_PK
+CREATE UNIQUE INDEX "VALIDATION_VOL_HORAIRE_REF_PK" ON "VALIDATION_VOL_HORAIRE_REF" ("VALIDATION_ID", "VOLUME_HORAIRE_REF_ID");
 
-  PROCEDURE ASSERT( condition BOOLEAN, MSG CLOB ) IS
-  BEGIN
-    IF condition THEN
-      A_SUCCES_COUNT := A_SUCCES_COUNT + 1;
-      IF SUCCES_SHOWN THEN
-        ECHO('        SUCCÈS : ' || MSG );
-      END IF;
-    ELSE
-      A_ECHECS_COUNT := A_ECHECS_COUNT + 1;
-      CURRENT_TEST_OUTPUT_BUFFER_ERR := TRUE;
-      ECHO('        ** ECHEC ** : ' || MSG );
-    END IF;
-  END;
+-- VERSION_PK
+CREATE UNIQUE INDEX "VERSION_PK" ON "VERSION" ("NUMERO");
 
-  PROCEDURE HOROINIT IS
-  BEGIN
-    HTS := systimestamp;
-  END;
+-- VHC_HISTO_UN
+CREATE UNIQUE INDEX "VHC_HISTO_UN" ON "VOLUME_HORAIRE_CHARGE" ("SOURCE_CODE", "HISTO_DESTRUCTION");
 
-  PROCEDURE HORODATAGE( msg VARCHAR2 ) IS
-    diff INTERVAL DAY(9) TO SECOND(3);
-  BEGIN
-    IF HTS IS NULL THEN
-      HTS := systimestamp;
-      RETURN;
-    END IF;
+-- VHENS_EP_FK_IDX
+CREATE INDEX "VHENS_EP_FK_IDX" ON "VOLUME_HORAIRE_ENS" ("ELEMENT_PEDAGOGIQUE_ID");
 
-    diff := systimestamp - HTS;
-    HTS := systimestamp;
+-- VHENS_TYPE_INTERVENTION_FK_IDX
+CREATE INDEX "VHENS_TYPE_INTERVENTION_FK_IDX" ON "VOLUME_HORAIRE_ENS" ("TYPE_INTERVENTION_ID");
 
-    echo(msg || ' (' || diff || ')');
-  END;
+-- VHE_SOURCE_FK_IDX
+CREATE INDEX "VHE_SOURCE_FK_IDX" ON "VOLUME_HORAIRE_ENS" ("SOURCE_ID");
 
-  FUNCTION GET_STRUCTURE_BY_ID( id NUMERIC ) RETURN structure%rowtype IS
-    res structure%rowtype;
-  BEGIN
-    IF ID IS NULL THEN RETURN res; END IF;
-    SELECT * INTO res FROM structure WHERE id = GET_STRUCTURE_BY_ID.id;
-    RETURN res;
-  END;
+-- VHIT_FK_IDX
+CREATE INDEX "VHIT_FK_IDX" ON "VOLUME_HORAIRE" ("TYPE_INTERVENTION_ID");
 
-END OSE_TEST;
-/
+-- VHMNP_FK_IDX
+CREATE INDEX "VHMNP_FK_IDX" ON "VOLUME_HORAIRE" ("MOTIF_NON_PAIEMENT_ID");
 
--- OSE_VALIDATION
-CREATE OR REPLACE PACKAGE BODY "OSE_VALIDATION" AS
+-- VHR_SERVICE_REFERENTIEL_FK_IDX
+CREATE INDEX "VHR_SERVICE_REFERENTIEL_FK_IDX" ON "VOLUME_HORAIRE_REF" ("SERVICE_REFERENTIEL_ID");
 
-  FUNCTION can_devalider ( v validation%rowtype ) RETURN varchar2 IS
-    tv type_validation%rowtype;
-    nb NUMERIC;
-    result varchar2(500) default null;
-  BEGIN
+-- VHR_TYPE_VOLUME_HORAIRE_FK_IDX
+CREATE INDEX "VHR_TYPE_VOLUME_HORAIRE_FK_IDX" ON "VOLUME_HORAIRE_REF" ("TYPE_VOLUME_HORAIRE_ID");
 
-    SELECT * INTO tv FROM type_validation WHERE id = v.type_validation_id;
+-- VH_PERIODE_FK_IDX
+CREATE INDEX "VH_PERIODE_FK_IDX" ON "VOLUME_HORAIRE" ("PERIODE_ID");
 
-    IF tv.code = 'SERVICES_PAR_COMP' THEN
+-- VH_SERVICES_FK_IDX
+CREATE INDEX "VH_SERVICES_FK_IDX" ON "VOLUME_HORAIRE" ("SERVICE_ID");
 
-      SELECT
-        SUM(CASE WHEN c.id IS NOT NULL THEN 1 ELSE 0 END) INTO nb
-      FROM
-        validation_vol_horaire vvh
-        JOIN volume_horaire vh ON vh.id = vvh.volume_horaire_id
-        LEFT JOIN contrat c ON c.id = vh.contrat_id AND c.histo_destruction IS NULL
-      WHERE
-        vvh.validation_id = v.id;
+-- VH_TYPE_VOLUME_HORAIRE_FK_IDX
+CREATE INDEX "VH_TYPE_VOLUME_HORAIRE_FK_IDX" ON "VOLUME_HORAIRE" ("TYPE_VOLUME_HORAIRE_ID");
 
-      -- Si des volumes horaires ont déjà fait l'objet de contrats alors pas de dévalidation possible des heures
-      IF nb > 0 THEN
-        result := 'La dévalidation est impossible car des contrats ont déjà été édités sur la base de ces heures.';
-      END IF;
+-- VOLUME_HORAIRE_CHARGE_HC_IDX
+CREATE INDEX "VOLUME_HORAIRE_CHARGE_HC_IDX" ON "VOLUME_HORAIRE_CHARGE" ("HISTO_CREATEUR_ID");
 
-    END IF;
+-- VOLUME_HORAIRE_CHARGE_HD_IDX
+CREATE INDEX "VOLUME_HORAIRE_CHARGE_HD_IDX" ON "VOLUME_HORAIRE_CHARGE" ("HISTO_DESTRUCTEUR_ID");
 
-    IF tv.code = 'CLOTURE_REALISE' THEN
+-- VOLUME_HORAIRE_CHARGE_HM_IDX
+CREATE INDEX "VOLUME_HORAIRE_CHARGE_HM_IDX" ON "VOLUME_HORAIRE_CHARGE" ("HISTO_MODIFICATEUR_ID");
 
-      SELECT
-        COUNT(*) INTO nb
-      FROM
-        tbl_paiement p
-      WHERE
-        p.periode_paiement_id IS NOT NULL
-        AND p.intervenant_id = v.intervenant_id
-        AND ROWNUM = 1;
+-- VOLUME_HORAIRE_CHARGE_PK
+CREATE UNIQUE INDEX "VOLUME_HORAIRE_CHARGE_PK" ON "VOLUME_HORAIRE_CHARGE" ("ID");
+
+-- VOLUME_HORAIRE_CHARGE_SC_IDX
+CREATE INDEX "VOLUME_HORAIRE_CHARGE_SC_IDX" ON "VOLUME_HORAIRE_CHARGE" ("SCENARIO_ID");
+
+-- VOLUME_HORAIRE_CHARGE_SRC_IDX
+CREATE INDEX "VOLUME_HORAIRE_CHARGE_SRC_IDX" ON "VOLUME_HORAIRE_CHARGE" ("SOURCE_ID");
+
+-- VOLUME_HORAIRE_CHARGE_TI_IDX
+CREATE INDEX "VOLUME_HORAIRE_CHARGE_TI_IDX" ON "VOLUME_HORAIRE_CHARGE" ("TYPE_INTERVENTION_ID");
+
+-- VOLUME_HORAIRE_CHARGE__UN
+CREATE UNIQUE INDEX "VOLUME_HORAIRE_CHARGE__UN" ON "VOLUME_HORAIRE_CHARGE" ("ELEMENT_PEDAGOGIQUE_ID", "TYPE_INTERVENTION_ID", "HISTO_DESTRUCTION");
 
-      IF nb > 0 THEN
-        result := 'La suppression de la clôture des services réalisés est impossible car des heures ont été payées ou bien le paiement a été demandé.';
-      END IF;
+-- VOLUME_HORAIRE_CONTRAT_FK_IDX
+CREATE INDEX "VOLUME_HORAIRE_CONTRAT_FK_IDX" ON "VOLUME_HORAIRE" ("CONTRAT_ID");
 
-    END IF;
+-- VOLUME_HORAIRE_ENS_HCFK_IDX
+CREATE INDEX "VOLUME_HORAIRE_ENS_HCFK_IDX" ON "VOLUME_HORAIRE_ENS" ("HISTO_CREATEUR_ID");
 
-    RETURN result;
-  END;
+-- VOLUME_HORAIRE_ENS_HDFK_IDX
+CREATE INDEX "VOLUME_HORAIRE_ENS_HDFK_IDX" ON "VOLUME_HORAIRE_ENS" ("HISTO_DESTRUCTEUR_ID");
 
-END OSE_VALIDATION;
-/
+-- VOLUME_HORAIRE_ENS_HMFK_IDX
+CREATE INDEX "VOLUME_HORAIRE_ENS_HMFK_IDX" ON "VOLUME_HORAIRE_ENS" ("HISTO_MODIFICATEUR_ID");
 
--- OSE_WORKFLOW
-CREATE OR REPLACE PACKAGE BODY "OSE_WORKFLOW" AS
-  INTERVENANT_ID NUMERIC DEFAULT NULL;
+-- VOLUME_HORAIRE_ENS_PK
+CREATE UNIQUE INDEX "VOLUME_HORAIRE_ENS_PK" ON "VOLUME_HORAIRE_ENS" ("ID");
 
-  TYPE t_workflow IS TABLE OF tbl_workflow%rowtype INDEX BY PLS_INTEGER;
+-- VOLUME_HORAIRE_ENS_UK1
+CREATE UNIQUE INDEX "VOLUME_HORAIRE_ENS_UK1" ON "VOLUME_HORAIRE_ENS" ("SOURCE_CODE", "HISTO_DESTRUCTION");
 
-  TYPE t_dep IS TABLE OF wf_etape_dep%rowtype INDEX BY PLS_INTEGER;
-  TYPE t_deps IS TABLE OF t_dep INDEX BY PLS_INTEGER;
-  TYPE t_deps_bloquantes IS TABLE OF wf_dep_bloquante%rowtype INDEX BY PLS_INTEGER;
+-- VOLUME_HORAIRE_HCFK_IDX
+CREATE INDEX "VOLUME_HORAIRE_HCFK_IDX" ON "VOLUME_HORAIRE" ("HISTO_CREATEUR_ID");
 
-  -- propre au calcul courant ! !
-  etapes          t_workflow;
-  deps            t_deps;
-  deps_initialized boolean default false;
-  deps_bloquantes t_deps_bloquantes;
-  deps_bloquantes_index PLS_INTEGER DEFAULT 1;
+-- VOLUME_HORAIRE_HDFK_IDX
+CREATE INDEX "VOLUME_HORAIRE_HDFK_IDX" ON "VOLUME_HORAIRE" ("HISTO_DESTRUCTEUR_ID");
 
+-- VOLUME_HORAIRE_HEURES_IDX
+CREATE INDEX "VOLUME_HORAIRE_HEURES_IDX" ON "VOLUME_HORAIRE" ("HEURES");
 
+-- VOLUME_HORAIRE_HMFK_IDX
+CREATE INDEX "VOLUME_HORAIRE_HMFK_IDX" ON "VOLUME_HORAIRE" ("HISTO_MODIFICATEUR_ID");
 
+-- VOLUME_HORAIRE_PK
+CREATE UNIQUE INDEX "VOLUME_HORAIRE_PK" ON "VOLUME_HORAIRE" ("ID");
 
-  FUNCTION ETAPE_FRANCHIE( etape tbl_workflow%rowtype, need_done boolean default false ) RETURN FLOAT IS
-    res FLOAT DEFAULT 0;
-  BEGIN
-    IF etape.objectif = 0 THEN 
-      IF need_done THEN RETURN 0; ELSE RETURN 1; END IF;
-    END IF;
+-- VOLUME_HORAIRE_REF_HCFK_IDX
+CREATE INDEX "VOLUME_HORAIRE_REF_HCFK_IDX" ON "VOLUME_HORAIRE_REF" ("HISTO_CREATEUR_ID");
 
-    IF etape.atteignable = 0 THEN RETURN 0; END IF;
+-- VOLUME_HORAIRE_REF_HDFK_IDX
+CREATE INDEX "VOLUME_HORAIRE_REF_HDFK_IDX" ON "VOLUME_HORAIRE_REF" ("HISTO_DESTRUCTEUR_ID");
 
-    IF etape.objectif > 0 THEN
-      res := etape.realisation / etape.objectif;
-    END IF;
+-- VOLUME_HORAIRE_REF_HMFK_IDX
+CREATE INDEX "VOLUME_HORAIRE_REF_HMFK_IDX" ON "VOLUME_HORAIRE_REF" ("HISTO_MODIFICATEUR_ID");
 
-    IF res > 1 THEN 
-      res := 1; 
-    END IF;
+-- VOLUME_HORAIRE_REF_PK
+CREATE UNIQUE INDEX "VOLUME_HORAIRE_REF_PK" ON "VOLUME_HORAIRE_REF" ("ID");
 
-    RETURN res;
-  END;
+-- VVHR_VALIDATION_FK_IDX
+CREATE INDEX "VVHR_VALIDATION_FK_IDX" ON "VALIDATION_VOL_HORAIRE_REF" ("VALIDATION_ID");
 
+-- VVHR_VOLUME_HORAIRE_REF_FK_IDX
+CREATE INDEX "VVHR_VOLUME_HORAIRE_REF_FK_IDX" ON "VALIDATION_VOL_HORAIRE_REF" ("VOLUME_HORAIRE_REF_ID");
 
+-- VVH_VALIDATION_FK_IDX
+CREATE INDEX "VVH_VALIDATION_FK_IDX" ON "VALIDATION_VOL_HORAIRE" ("VALIDATION_ID");
 
-  PROCEDURE POPULATE_ETAPES( INTERVENANT_ID NUMERIC ) IS
-    i NUMERIC DEFAULT 0;
-  BEGIN
-    etapes.delete; -- initialisation
+-- VVH_VOLUME_HORAIRE_FK_IDX
+CREATE INDEX "VVH_VOLUME_HORAIRE_FK_IDX" ON "VALIDATION_VOL_HORAIRE" ("VOLUME_HORAIRE_ID");
 
-    FOR wie IN (
-      SELECT
-        wep.annee_id                                          annee_id,
-        e.id                                                  etape_id,
-        w.structure_id                                        structure_id,
-        ROUND(COALESCE(w.objectif,0),2)                       objectif,
-        CASE WHEN w.intervenant_id IS NULL THEN 0 ELSE 1 END  atteignable,
-        ROUND(COALESCE(w.realisation,0),2)                    realisation,
-        wep.etape_code                                        etape_code,
-        si.id                                                 statut_intervenant_id,
-        ti.id                                                 type_intervenant_id,
-        ti.code                                               type_intervenant_code
-      FROM
-        v_workflow_etape_pertinente wep
-        JOIN wf_etape                 e ON e.code = wep.etape_code
-        JOIN intervenant              i ON i.id = wep.intervenant_id
-        JOIN statut_intervenant      si ON si.id = i.statut_id
-        JOIN type_intervenant        ti ON ti.id = si.type_intervenant_id
-        LEFT JOIN v_tbl_workflow      w ON w.intervenant_id = wep.intervenant_id AND w.etape_code = wep.etape_code
-      WHERE
-        wep.intervenant_id = POPULATE_ETAPES.INTERVENANT_ID
-        AND (e.obligatoire = 1 OR w.intervenant_id IS NOT NULL)
-      ORDER BY
-        e.ordre
-    ) LOOP
-      etapes( i ).annee_id              := wie.annee_id;
-      etapes( i ).intervenant_id        := intervenant_id;
-      etapes( i ).etape_id              := wie.etape_id;
-      etapes( i ).structure_id          := wie.structure_id;
-      etapes( i ).atteignable           := wie.atteignable;
-      etapes( i ).objectif              := wie.objectif;
-      etapes( i ).realisation           := wie.realisation;
-      etapes( i ).etape_code            := wie.etape_code;
-      etapes( i ).statut_intervenant_id := wie.statut_intervenant_id;
-      etapes( i ).type_intervenant_id   := wie.type_intervenant_id;
-      etapes( i ).type_intervenant_code := wie.type_intervenant_code;
-      i := i + 1;
-    END LOOP;
-  END;
+-- WE_PREC_WE_FK_IDX
+CREATE INDEX "WE_PREC_WE_FK_IDX" ON "WF_ETAPE_DEP" ("ETAPE_PREC_ID");
 
+-- WE_SUIV_WE_FK_IDX
+CREATE INDEX "WE_SUIV_WE_FK_IDX" ON "WF_ETAPE_DEP" ("ETAPE_SUIV_ID");
 
+-- WE_TYPE_INTERVENANT_FK_IDX
+CREATE INDEX "WE_TYPE_INTERVENANT_FK_IDX" ON "WF_ETAPE_DEP" ("TYPE_INTERVENANT_ID");
 
-  -- peuple l'arbre des dépendances entre étapes de workflow
-  PROCEDURE POPULATE_DEPS( INTERVENANT_ID NUMERIC ) IS
-    s PLS_INTEGER; -- index de l'étape suivante
-    p PLS_INTEGER; -- index de l'étape précédente
-  BEGIN
-    IF deps_initialized THEN RETURN; END IF;
+-- WF_DB_ETAPE_DEP_FK_IDX
+CREATE INDEX "WF_DB_ETAPE_DEP_FK_IDX" ON "WF_DEP_BLOQUANTE" ("WF_ETAPE_DEP_ID");
 
-    FOR d IN (
-      SELECT
-        wed.*
-      FROM
-        wf_etape_dep wed
-        JOIN intervenant i ON i.id = POPULATE_DEPS.INTERVENANT_ID
-        JOIN statut_intervenant si ON si.id = i.statut_id
-      WHERE
-        active = 1
-        AND wed.type_intervenant_id IS NULL OR wed.type_intervenant_id = si.type_intervenant_id
-    ) LOOP
-      deps(d.etape_suiv_id)(d.etape_prec_id) := d;
-    END LOOP;
+-- WF_DB_TBL_WORKFLOW_FK_IDX
+CREATE INDEX "WF_DB_TBL_WORKFLOW_FK_IDX" ON "WF_DEP_BLOQUANTE" ("TBL_WORKFLOW_ID");
 
-    deps_initialized := true;
-  END;
+-- WF_DEPS_BLOQUANTES_PK_IDX
+CREATE UNIQUE INDEX "WF_DEPS_BLOQUANTES_PK_IDX" ON "WF_DEP_BLOQUANTE" ("ID");
 
+-- WF_ETAPE_CODE_UN
+CREATE UNIQUE INDEX "WF_ETAPE_CODE_UN" ON "WF_ETAPE" ("CODE");
 
+-- WF_ETAPE_DEP_PK
+CREATE UNIQUE INDEX "WF_ETAPE_DEP_PK" ON "WF_ETAPE_DEP" ("ID");
 
-  PROCEDURE ADD_DEP_BLOQUANTE( wf_etape_dep_id NUMERIC, tbl_workflow_id NUMERIC ) IS
-  BEGIN
-    deps_bloquantes_index := deps_bloquantes_index + 1;
-    deps_bloquantes(deps_bloquantes_index).wf_etape_dep_id := wf_etape_dep_id;
-    deps_bloquantes(deps_bloquantes_index).tbl_workflow_id := tbl_workflow_id;
-  END;
+-- WF_ETAPE_DEP_PK_IDX
+CREATE UNIQUE INDEX "WF_ETAPE_DEP_PK_IDX" ON "WF_ETAPE_DEP" ("ETAPE_PREC_ID", "ETAPE_SUIV_ID");
 
+-- WF_ETAPE_DEP__UN_IDX
+CREATE UNIQUE INDEX "WF_ETAPE_DEP__UN_IDX" ON "WF_ETAPE_DEP" ("ETAPE_SUIV_ID", "ETAPE_PREC_ID");
 
+-- WF_ETAPE_ORDRE_UN
+CREATE UNIQUE INDEX "WF_ETAPE_ORDRE_UN" ON "WF_ETAPE" ("ORDRE");
 
-  PROCEDURE CALCUL_ATTEIGNABLE( s PLS_INTEGER, d wf_etape_dep%rowtype ) IS
-    count_tested PLS_INTEGER DEFAULT 0;
-    count_na     PLS_INTEGER DEFAULT 0;
-    p PLS_INTEGER; -- index de l'étape précédente
-  BEGIN
+-- WF_ETAPE_PK
+CREATE UNIQUE INDEX "WF_ETAPE_PK" ON "WF_ETAPE" ("ID");
 
-    p := etapes.FIRST;
-    LOOP EXIT WHEN p IS NULL;
-      IF etapes(p).etape_id = d.etape_prec_id THEN
-        -- on restreint en fonction du périmètre visé :
-        --  - si la dépendance n'est pas locale alors on teste
-        --  - si les structures aussi bien de l'étape testée que de l'étape dépendante sont nulles alors on teste aussi car elles sont "universelles"
-        --  - si les structures sont équivalentes alors on teste, sinon elles ne sont pas dans le périmètre local
-        IF
-          (d.locale = 0) 
-          OR etapes(s).structure_id IS NULL 
-          OR etapes(p).structure_id IS NULL 
-          OR etapes(s).structure_id = etapes(p).structure_id 
-        THEN
-          count_tested := count_tested + 1;
+--------------------------------------------------
+-- triggers
+--------------------------------------------------
 
-          -- on teste le type de franchissement désiré et si ce n'est pas bon alors on déclare l'étape courante non atteignable
+-- AFFECTATION_RECHERCHE_CK
+CREATE OR REPLACE TRIGGER "AFFECTATION_RECHERCHE_CK"
+  BEFORE INSERT OR UPDATE ON "AFFECTATION_RECHERCHE"
+  REFERENCING FOR EACH ROW
+  DECLARE
+  pragma autonomous_transaction;
+  rows_found integer;
+BEGIN
 
-          --  - idem si on a besoin d'une dépendance partiellement franchie est qu'elle ne l'est pas
-          IF d.partielle = 1 THEN
-            IF ETAPE_FRANCHIE(etapes(p), d.obligatoire=1) = 0 THEN -- si le franchissement est totalement inexistant
-              count_na := count_na + 1;
-            END IF;
-          --  - si on a besoin d'une dépendance complètement franchie est qu'elle ne l'est pas alors ce n'est pas atteignable  
-          ELSE
-            IF ETAPE_FRANCHIE(etapes(p), d.obligatoire=1) < 1 THEN
-              count_na := count_na + 1;
-            END IF;
-          END IF;
-        END IF;
+  if :NEW.histo_destruction IS NOT NULL THEN RETURN; END IF; -- pas de check si c'est pour une historicisation
 
-      END IF;
-      p := etapes.next(p);
-    END LOOP;
+  select
+    count(*) into rows_found
+  from
+    affectation_recherche
+  where
+    intervenant_id = :new.intervenant_id
+    AND structure_id = :new.structure_id
+    AND histo_destruction IS NULL
+    AND id <> :NEW.id;
 
-    -- on applique le résultat uniquement si des étapes dépendantes ont été trouvées
-    IF count_tested > 0 THEN
+  if rows_found > 0 THEN
+    raise_application_error(-20101, 'Un enseignant (id=' || :NEW.intervenant_id || ') ne peut pas avoir plusieurs affectations de recherche pour une même structure');
+  END IF;
 
-      -- si les étapes dépendantes ont été intégralement franchies
-      IF d.integrale = 1 THEN
-        -- si l'intégralité des étapes est atteignable = NON si au moins une ne l'est pas
-        IF count_na > 0 THEN
-          etapes(s).atteignable := 0;
-          ADD_DEP_BLOQUANTE( d.id, s );
-        END IF;
+END;
 
-      -- sinon...
-      ELSE
-        -- si au moins une étape est atteignable = NON si toutes ne sont pas atteignables
-        IF count_tested = count_na THEN 
-          etapes(s).atteignable := 0;
-          ADD_DEP_BLOQUANTE( d.id, s );
-        END IF;
-      END IF;
-    END IF;
-  END;
 
+/
+ALTER TRIGGER "AFFECTATION_RECHERCHE_CK" ENABLE;
 
+-- AGREMENT_CK
+CREATE OR REPLACE TRIGGER "AGREMENT_CK"
+  BEFORE UPDATE ON "AGREMENT"
+  REFERENCING FOR EACH ROW
+  DECLARE
+  contrat_found INTEGER;
+BEGIN
 
-  -- calcule si les étapes sont atteignables ou non
-  PROCEDURE CALCUL_ATTEIGNABLES IS
-    e PLS_INTEGER; -- index de l'étape courante
-    d PLS_INTEGER; -- ID de l'étape précédante
-  BEGIN
-    deps_bloquantes.delete;
-    e := etapes.FIRST;
-    LOOP EXIT WHEN e IS NULL;
-      IF deps.exists(etapes(e).etape_id) THEN -- s'il n'y a aucune dépendance alors pas de test!!
-        d := deps(etapes(e).etape_id).FIRST;
-        LOOP EXIT WHEN d IS NULL;
+  SELECT
+    COUNT(*) INTO contrat_found
+  FROM
+    contrat c
+  WHERE
+    c.INTERVENANT_ID = :NEW.intervenant_id
+    AND c.structure_id = NVL(:NEW.structure_id,c.structure_id)
+    AND c.histo_destruction IS NULL
+    AND ROWNUM = 1;
 
-          CALCUL_ATTEIGNABLE(e, deps(etapes(e).etape_id)(d));
+  IF
+    1 = contrat_found
+    AND :NEW.histo_destruction IS NOT NULL AND :OLD.histo_destruction IS NULL
+  THEN
 
-          d := deps(etapes(e).etape_id).next(d);
-        END LOOP;
-      END IF;
-      e := etapes.next(e);
-    END LOOP;
-  END;
+    IF :NEW.structure_id IS NULL THEN
+      raise_application_error(-20101, 'Cet agrément ne peut pas être supprimé car un contrat a été signé.');
+    ELSE
+      raise_application_error(-20101, 'Cet agrément ne peut pas être supprimé car un contrat a été signé dans la même composante.');
+    END IF;
+  END IF;
 
+END;
 
 
-  FUNCTION ENREGISTRER_ETAPE( e tbl_workflow%rowtype ) RETURN NUMERIC IS
-    n_etape_id NUMERIC;
+/
+ALTER TRIGGER "AGREMENT_CK" ENABLE;
+
+-- CALC_TAUX_HETD_ANNEES
+CREATE OR REPLACE TRIGGER "CALC_TAUX_HETD_ANNEES"
+AFTER INSERT OR UPDATE OR DELETE ON "TAUX_HORAIRE_HETD"
+BEGIN
+  OSE_FORMULE.UPDATE_ANNEE_TAUX_HETD;
+END;
+
+/
+ALTER TRIGGER "CALC_TAUX_HETD_ANNEES" ENABLE;
+
+-- CHARGENS_MAJ_EFFECTIFS
+CREATE OR REPLACE TRIGGER "CHARGENS_MAJ_EFFECTIFS"
+  AFTER INSERT OR DELETE OR UPDATE ON "SCENARIO_NOEUD_EFFECTIF"
+  REFERENCING FOR EACH ROW
   BEGIN
+RETURN;
+  return;
+  IF NOT ose_chargens.ENABLE_TRIGGER_EFFECTIFS THEN RETURN; END IF;
+  IF DELETING THEN
+    ose_chargens.DEM_CALC_SUB_EFFECTIF( :OLD.scenario_noeud_id, :OLD.type_heures_id, :OLD.etape_id, 0 );
+  ELSE
+    ose_chargens.DEM_CALC_SUB_EFFECTIF( :NEW.scenario_noeud_id, :NEW.type_heures_id, :NEW.etape_id, :NEW.effectif );
+  END IF;
 
-    MERGE INTO tbl_workflow w USING dual ON (
+END;
 
-          w.intervenant_id      = e.intervenant_id
-      AND w.etape_id            = e.etape_id
-      AND NVL(w.structure_id,0) = NVL(e.structure_id,0)
 
-    ) WHEN MATCHED THEN UPDATE SET
+/
+ALTER TRIGGER "CHARGENS_MAJ_EFFECTIFS" ENABLE;
 
-      atteignable                  = e.atteignable,
-      objectif                     = e.objectif,
-      realisation                  = e.realisation,
-      etape_code                   = e.etape_code,
-      statut_intervenant_id        = e.statut_intervenant_id,
-      type_intervenant_id          = e.type_intervenant_id,
-      type_intervenant_code        = e.type_intervenant_code,
-      to_delete                    = 0
+-- ELEMENT_PEDAGOGIQUE_CK
+CREATE OR REPLACE TRIGGER "ELEMENT_PEDAGOGIQUE_CK"
+  BEFORE INSERT OR UPDATE ON "ELEMENT_PEDAGOGIQUE"
+  REFERENCING FOR EACH ROW
+  DECLARE
+  enseignement INTEGER;
+  source_id INTEGER;
+BEGIN
+  SELECT id INTO source_id FROM source WHERE code = 'OSE';
 
-    WHEN NOT MATCHED THEN INSERT (
+  IF :NEW.source_id <> source_id THEN RETURN; END IF; -- impossible de checker car l'UPD par import se fait champ par champ...
 
-      id,
-      annee_id,
-      intervenant_id,
-      etape_id,
-      structure_id,
-      atteignable,
-      objectif,
-      realisation,
-      etape_code,
-      statut_intervenant_id,
-      type_intervenant_id,
-      type_intervenant_code,
-      to_delete
+  IF :NEW.fi = 0 AND :NEW.fc = 0 AND :NEW.fa = 0 THEN
+    raise_application_error(-20101, 'Un enseignement doit obligatoirement être au moins en FI, FC ou FA');
+  END IF;
 
-    ) VALUES (
+  IF 1 <> ROUND(:NEW.taux_fi + :NEW.taux_fc + :NEW.taux_fa, 2) THEN
+    raise_application_error( -20101, 'Le total des taux FI, FC et FA n''est pas égal à 100%');
+  END IF;
 
-      TBL_WORKFLOW_ID_SEQ.NEXTVAL,
-      e.annee_id,
-      e.intervenant_id,
-      e.etape_id,
-      e.structure_id,
-      e.atteignable,
-      e.objectif,
-      e.realisation,
-      e.etape_code,
-      e.statut_intervenant_id,
-      e.type_intervenant_id,
-      e.type_intervenant_code,
-      0
+  IF :NEW.fi = 0 AND :NEW.taux_fi > 0 THEN
+    raise_application_error( -20101, 'Le taux FI doit être à 0 puisque la formation n''est pas dispensée en FI');
+  END IF;
 
-    );
+  IF :NEW.fa = 0 AND :NEW.taux_fa > 0 THEN
+    raise_application_error( -20101, 'Le taux FA doit être à 0 puisque la formation n''est pas dispensée en FA');
+  END IF;
 
-    SELECT w.id INTO n_etape_id FROM tbl_workflow w WHERE
-      w.intervenant_id          = e.intervenant_id
-      AND w.etape_id            = e.etape_id
-      AND NVL(w.structure_id,0) = NVL(e.structure_id,0)
-    ;
+  IF :NEW.fc = 0 AND :NEW.taux_fc > 0 THEN
+    raise_application_error( -20101, 'Le taux FC doit être à 0 puisque la formation n''est pas dispensée en FC');
+  END IF;
 
-    RETURN n_etape_id;
-  END;
+  IF :NEW.periode_id IS NOT NULL THEN
+    SELECT p.enseignement
+    INTO enseignement
+    FROM periode p
+    WHERE p.id	     = :NEW.periode_id;
+    IF enseignement <> 1 THEN
+      raise_application_error(-20101, 'Cette période n''est pas appliquable à cet élément pédagogique.');
+    END IF;
+  END IF;
 
+END;
 
+/
+ALTER TRIGGER "ELEMENT_PEDAGOGIQUE_CK" ENABLE;
 
-  PROCEDURE ENREGISTRER_DEP_BLOQUANTE( db wf_dep_bloquante%rowtype ) IS
+-- F_CONTRAT
+CREATE OR REPLACE TRIGGER "F_CONTRAT"
+  AFTER DELETE OR UPDATE OF INTERVENANT_ID, STRUCTURE_ID, VALIDATION_ID, DATE_RETOUR_SIGNE, HISTO_CREATION, HISTO_DESTRUCTION ON "CONTRAT"
+  REFERENCING FOR EACH ROW
   BEGIN
-    MERGE INTO wf_dep_bloquante wdb USING dual ON (
 
-          wdb.wf_etape_dep_id   = db.wf_etape_dep_id
-      AND wdb.tbl_workflow_id   = db.tbl_workflow_id
+  IF NOT UNICAEN_TBL.ACTIV_TRIGGERS THEN RETURN; END IF;
 
-    ) WHEN MATCHED THEN UPDATE SET
+  FOR p IN (
 
-      to_delete                 = 0
+    SELECT DISTINCT
+      s.intervenant_id
+    FROM
+      volume_horaire vh
+      JOIN service s ON s.id = vh.service_id AND s.histo_destruction IS NULL
+    WHERE
+      vh.histo_destruction IS NULL
+      AND (vh.contrat_id = :OLD.id OR vh.contrat_id = :NEW.id)
 
-    WHEN NOT MATCHED THEN INSERT (
+  ) LOOP
 
-      id,
-      wf_etape_dep_id,
-      tbl_workflow_id,
-      to_delete
+    UNICAEN_TBL.DEMANDE_CALCUL('formule', UNICAEN_TBL.make_params('INTERVENANT_ID', p.intervenant_id) );
 
-    ) VALUES (
+  END LOOP;
 
-      WF_DEP_BLOQUANTE_ID_SEQ.NEXTVAL,
-      db.wf_etape_dep_id,
-      db.tbl_workflow_id,
-      0
+END;
 
-    );  
-  END;
+/
+ALTER TRIGGER "F_CONTRAT" ENABLE;
+
+-- F_CONTRAT_S
+CREATE OR REPLACE TRIGGER "F_CONTRAT_S"
+  AFTER DELETE OR UPDATE ON "CONTRAT"
+  BEGIN
+  UNICAEN_TBL.CALCULER_DEMANDES;
+END;
 
 
+/
+ALTER TRIGGER "F_CONTRAT_S" ENABLE;
 
-  PROCEDURE ENREGISTRER( INTERVENANT_ID NUMERIC ) IS
-    i PLS_INTEGER;
+-- F_ELEMENT_MODULATEUR
+CREATE OR REPLACE TRIGGER "F_ELEMENT_MODULATEUR"
+  AFTER INSERT OR DELETE OR UPDATE ON "ELEMENT_MODULATEUR"
+  REFERENCING FOR EACH ROW
   BEGIN
 
-    UPDATE tbl_workflow SET to_delete = 1 WHERE intervenant_id = ENREGISTRER.INTERVENANT_ID;
-    UPDATE wf_dep_bloquante SET to_delete = 1 WHERE tbl_workflow_id IN (SELECT id FROM tbl_workflow WHERE intervenant_id = ENREGISTRER.INTERVENANT_ID);
-
-    i := etapes.FIRST;
-    LOOP EXIT WHEN i IS NULL;
-      etapes(i).id := ENREGISTRER_ETAPE( etapes(i) );
-      i := etapes.NEXT(i);
-    END LOOP;
+  IF NOT UNICAEN_TBL.ACTIV_TRIGGERS THEN RETURN; END IF;
 
-    i := deps_bloquantes.FIRST;
-    LOOP EXIT WHEN i IS NULL;
-      deps_bloquantes(i).tbl_workflow_id := etapes(deps_bloquantes(i).tbl_workflow_id).id;
-      ENREGISTRER_DEP_BLOQUANTE( deps_bloquantes(i) );
-      i := deps_bloquantes.NEXT(i);
-    END LOOP;
+  FOR p IN (
 
-    DELETE FROM tbl_workflow WHERE TO_DELETE = 1 AND intervenant_id = ENREGISTRER.INTERVENANT_ID;
-    DELETE FROM wf_dep_bloquante WHERE TO_DELETE = 1;
-  END;
+    SELECT DISTINCT
+      s.intervenant_id
+    FROM
+      service s
+    WHERE
+      s.histo_destruction IS NULL
+      AND (s.element_pedagogique_id = :OLD.element_id OR s.element_pedagogique_id = :NEW.element_id)
 
+  ) LOOP
 
+    UNICAEN_TBL.DEMANDE_CALCUL('formule', UNICAEN_TBL.make_params('INTERVENANT_ID', p.intervenant_id) );
 
-  PROCEDURE DEP_CHECK( etape_suiv_id NUMERIC, etape_prec_id NUMERIC ) IS
-    eso NUMERIC;
-    epo NUMERIC;
-  BEGIN
-    SELECT ordre INTO eso FROM wf_etape WHERE id = etape_suiv_id;
-    SELECT ordre INTO epo FROM wf_etape WHERE id = etape_prec_id;
+  END LOOP;
 
-    IF eso < epo THEN
-      raise_application_error(-20101, 'Une étape de Workflow ne peut dépendre d''une étape située en aval');
-    END IF;
-    IF eso = epo THEN
-      raise_application_error(-20101, 'Une étape de Workflow ne peut dépendre d''elle-même');
-    END IF;
-  END;
+END;
 
 
+/
+ALTER TRIGGER "F_ELEMENT_MODULATEUR" ENABLE;
 
-  PROCEDURE DEBUG_CALCUL( INTERVENANT_ID NUMERIC ) IS
-    i PLS_INTEGER;
-    d PLS_INTEGER;
-    dep_desc VARCHAR2(200);
+-- F_ELEMENT_MODULATEUR_S
+CREATE OR REPLACE TRIGGER "F_ELEMENT_MODULATEUR_S"
+  AFTER INSERT OR DELETE OR UPDATE ON "ELEMENT_MODULATEUR"
   BEGIN
-    ose_test.echo('');
-    ose_test.echo('-- DEBUG WORKFLOW ETAPE INTERVENANT_ID='|| INTERVENANT_ID ||' --');
-    i := etapes.FIRST;
-    LOOP EXIT WHEN i IS NULL;
-      /*ose_test.echo(
-               'etape='       || RPAD( ose_test.get_wf_etape_by_id(etapes(i).etape_id).code, 30, ' ' )
-          || ', structure='   || RPAD( NVL(ose_test.get_structure_by_id(etapes(i).structure_id).libelle_court,' '), 20, ' ' )
-          || ', ' || CASE WHEN etapes(i).atteignable=1 THEN 'atteignable' ELSE 'na' END
-          || ', objectif= ' || ROUND(etapes(i).objectif)
-          || ', realisation= ' || ROUND(etapes(i).realisation)
-      );*/
+  UNICAEN_TBL.CALCULER_DEMANDES;
+END;
 
-      d := deps_bloquantes.FIRST;
-      LOOP EXIT WHEN d IS NULL;
-        IF deps_bloquantes(d).tbl_workflow_id = i THEN
 
-          SELECT
-            we.desc_non_franchie INTO dep_desc
-          FROM
-            wf_etape_dep wed
-            JOIN wf_etape we ON we.id = wed.etape_prec_id
-          WHERE
-            wed.id = deps_bloquantes(d).wf_etape_dep_id;
+/
+ALTER TRIGGER "F_ELEMENT_MODULATEUR_S" ENABLE;
 
-          ose_test.echo('    CAUSE =' || dep_desc);
-        END IF;
-        d := deps_bloquantes.NEXT(d);
-      END LOOP;
+-- F_ELEMENT_PEDAGOGIQUE
+CREATE OR REPLACE TRIGGER "F_ELEMENT_PEDAGOGIQUE"
+  AFTER DELETE OR UPDATE OF ID, STRUCTURE_ID, PERIODE_ID, TAUX_FI, TAUX_FC, TAUX_FA, TAUX_FOAD, FI, FC, FA, HISTO_CREATION, HISTO_DESTRUCTION, ANNEE_ID ON "ELEMENT_PEDAGOGIQUE"
+  REFERENCING FOR EACH ROW
+  BEGIN
 
-      i := etapes.NEXT(i);
-    END LOOP;
-    ose_test.echo('');
-  END;
+  IF NOT UNICAEN_TBL.ACTIV_TRIGGERS THEN RETURN; END IF;
 
+  FOR p IN
+    ( SELECT DISTINCT s.intervenant_id
+    FROM service s
+    WHERE (s.element_pedagogique_id = :NEW.id
+    OR s.element_pedagogique_id     = :OLD.id)
+    AND s.histo_destruction IS NULL
+    ) LOOP UNICAEN_TBL.DEMANDE_CALCUL('formule', UNICAEN_TBL.make_params('INTERVENANT_ID', p.intervenant_id) );
+END LOOP;
+END;
 
+/
+ALTER TRIGGER "F_ELEMENT_PEDAGOGIQUE" ENABLE;
 
-  -- calcul du workflow pour un intervenant
-  PROCEDURE CALCULER( INTERVENANT_ID NUMERIC ) IS
+-- F_ELEMENT_PEDAGOGIQUE_S
+CREATE OR REPLACE TRIGGER "F_ELEMENT_PEDAGOGIQUE_S"
+  AFTER DELETE OR UPDATE ON "ELEMENT_PEDAGOGIQUE"
   BEGIN
-    set_intervenant(intervenant_id);
-    POPULATE_ETAPES( INTERVENANT_ID );
-    POPULATE_DEPS( INTERVENANT_ID );
-    CALCUL_ATTEIGNABLES;
-    IF OSE_TEST.DEBUG_ENABLED THEN
-      DEBUG_CALCUL( INTERVENANT_ID );
-    END IF;
-    ENREGISTRER( INTERVENANT_ID );
-    set_intervenant();
-  END;
+  UNICAEN_TBL.CALCULER_DEMANDES;
+END;
 
 
+/
+ALTER TRIGGER "F_ELEMENT_PEDAGOGIQUE_S" ENABLE;
 
-  PROCEDURE CALCULER_TOUT( ANNEE_ID NUMERIC DEFAULT NULL ) IS
+-- F_INTERVENANT
+CREATE OR REPLACE TRIGGER "F_INTERVENANT"
+  AFTER UPDATE OF ID, DATE_NAISSANCE, STATUT_ID, STRUCTURE_ID, HISTO_CREATION, HISTO_DESTRUCTION, PREMIER_RECRUTEMENT, ANNEE_ID ON "INTERVENANT"
+  REFERENCING FOR EACH ROW
   BEGIN
-    FOR mp IN (
-      SELECT
-        id intervenant_id
-      FROM 
-        intervenant i
-      WHERE
-        i.histo_destruction IS NULL
-        AND (CALCULER_TOUT.ANNEE_ID IS NULL OR i.annee_id = CALCULER_TOUT.ANNEE_ID)
-    )
-    LOOP
-      CALCULER( mp.intervenant_id );
-    END LOOP;
-  END;
 
+  IF NOT UNICAEN_TBL.ACTIV_TRIGGERS THEN RETURN; END IF;
+
+  FOR p IN (
 
+    SELECT DISTINCT
+      fr.intervenant_id
+    FROM
+      formule_resultat fr
+    WHERE
+      fr.intervenant_id = :NEW.id OR fr.intervenant_id = :OLD.id
 
-  PROCEDURE CALCULER_TBL( PARAMS UNICAEN_TBL.T_PARAMS ) IS
-    intervenant_id NUMERIC;
-    TYPE r_cursor IS REF CURSOR;
-    diff_cur r_cursor;
-  BEGIN
-    OPEN diff_cur FOR 'WITH interv AS (SELECT id intervenant_id, intervenant.* FROM intervenant)
-    SELECT intervenant_id FROM interv WHERE ' || unicaen_tbl.PARAMS_TO_CONDS( params );
-    LOOP
-      FETCH diff_cur INTO intervenant_id; EXIT WHEN diff_cur%NOTFOUND;
-      BEGIN
-        CALCULER( intervenant_id );
-      END;
-    END LOOP;
-    CLOSE diff_cur;
-  END;  
+  ) LOOP
 
+    UNICAEN_TBL.DEMANDE_CALCUL('formule', UNICAEN_TBL.make_params('INTERVENANT_ID', p.intervenant_id) );
 
+  END LOOP;
 
-  FUNCTION GET_INTERVENANT RETURN NUMERIC IS
-  BEGIN
-    RETURN OSE_WORKFLOW.INTERVENANT_ID;
-  END;
+END;
 
-  PROCEDURE SET_INTERVENANT( INTERVENANT_ID NUMERIC DEFAULT NULL) IS
-  BEGIN
-    IF SET_INTERVENANT.INTERVENANT_ID = -1 THEN
-      OSE_WORKFLOW.INTERVENANT_ID := NULL;
-    ELSE
-      OSE_WORKFLOW.INTERVENANT_ID := SET_INTERVENANT.INTERVENANT_ID;
-    END IF;
-  END;
 
-  FUNCTION MATCH_INTERVENANT(INTERVENANT_ID NUMERIC DEFAULT NULL) RETURN NUMERIC IS
-  BEGIN
-    IF OSE_WORKFLOW.INTERVENANT_ID IS NULL OR OSE_WORKFLOW.INTERVENANT_ID = MATCH_INTERVENANT.INTERVENANT_ID THEN
-      RETURN 1;
-    ELSE
-      RETURN 0;
-    END IF;
-  END;
-END OSE_WORKFLOW;
 /
+ALTER TRIGGER "F_INTERVENANT" ENABLE;
 
--- UCBN_LDAP
-CREATE OR REPLACE PACKAGE BODY "UCBN_LDAP" AS
+-- F_INTERVENANT_S
+CREATE OR REPLACE TRIGGER "F_INTERVENANT_S"
+  AFTER UPDATE ON "INTERVENANT"
+  BEGIN
+  UNICAEN_TBL.CALCULER_DEMANDES;
+END;
 
---===================================================================
---===================================================================
--- version()
---===================================================================
-FUNCTION version RETURN VARCHAR2 IS
-BEGIN
-  RETURN ' 0.7.1 (2017-05-16) ';
-END version;
 
+/
+ALTER TRIGGER "F_INTERVENANT_S" ENABLE;
 
---===================================================================
---===================================================================
--- free()
---===================================================================
-FUNCTION free RETURN NUMBER IS
-  l_retval PLS_INTEGER ;
-BEGIN
+-- F_MODIF_SERVICE_DU
+CREATE OR REPLACE TRIGGER "F_MODIF_SERVICE_DU"
+  AFTER INSERT OR DELETE OR UPDATE ON "MODIFICATION_SERVICE_DU"
+  REFERENCING FOR EACH ROW
   BEGIN
-    l_retval := DBMS_LDAP.unbind_s(ld => ldap_sess);
-    RETURN l_retval ;
-  EXCEPTION
-    WHEN DBMS_LDAP.INVALID_SESSION THEN
-    RETURN NULL ;
-  END;
-END free ;
 
+  IF NOT UNICAEN_TBL.ACTIV_TRIGGERS THEN RETURN; END IF;
+
+  IF DELETING OR UPDATING THEN
+    UNICAEN_TBL.DEMANDE_CALCUL('formule', UNICAEN_TBL.make_params('INTERVENANT_ID', :OLD.intervenant_id) );
+  END IF;
+  IF INSERTING OR UPDATING THEN
+    UNICAEN_TBL.DEMANDE_CALCUL('formule', UNICAEN_TBL.make_params('INTERVENANT_ID', :NEW.intervenant_id) );
+  END IF;
 
---===================================================================
---===================================================================
--- ldap_connect()
---===================================================================
-FUNCTION ldap_connect RETURN NUMBER IS
-  ldap_host   VARCHAR2(256 char) := 'ldap.unicaen.fr';
-  ldap_port   VARCHAR2(3 char)   := '389';
-  ldap_user   VARCHAR2(256 char) := 'uid=oracle-ldap,ou=system,dc=unicaen,dc=fr' ;
-  ldap_passwd VARCHAR2(30 char)  := 'HBHOe2CQgrAI' ;
-  ldap_base   VARCHAR2(256 char) := 'ou=people,dc=unicaen,dc=fr';
+END;
 
-  l_retval  PLS_INTEGER ;
 
-  resultat  VARCHAR2(1024 char) := NULL ;
+/
+ALTER TRIGGER "F_MODIF_SERVICE_DU" ENABLE;
 
-BEGIN
-  -- Ouverture de connexion
+-- F_MODIF_SERVICE_DU_S
+CREATE OR REPLACE TRIGGER "F_MODIF_SERVICE_DU_S"
+  AFTER INSERT OR DELETE OR UPDATE ON "MODIFICATION_SERVICE_DU"
   BEGIN
-  ldap_sess := DBMS_LDAP.init(hostname => ldap_host,
-                              portnum  => ldap_port) ;
-  EXCEPTION
-    WHEN DBMS_LDAP.INIT_FAILED THEN
-      RETURN 1 ;
-  END;
+    UNICAEN_TBL.CALCULER_DEMANDES;
+END;
 
 
-  -- Authentification
+/
+ALTER TRIGGER "F_MODIF_SERVICE_DU_S" ENABLE;
+
+-- F_MODULATEUR
+CREATE OR REPLACE TRIGGER "F_MODULATEUR"
+  AFTER DELETE OR UPDATE ON "MODULATEUR"
+  REFERENCING FOR EACH ROW
   BEGIN
-  l_retval := DBMS_LDAP.simple_bind_s(ld     => ldap_sess,
-                                      dn     => ldap_user,
-                                      passwd => ldap_passwd) ;
-  EXCEPTION
-    WHEN DBMS_LDAP.GENERAL_ERROR THEN
-      l_retval := DBMS_LDAP.unbind_s(ld => ldap_sess);
-      RETURN 2 ;
-    WHEN DBMS_LDAP.INVALID_SESSION THEN
-      l_retval := DBMS_LDAP.unbind_s(ld => ldap_sess);
-      RETURN 2 ;
-  END;
-  RETURN 0 ;
-END ldap_connect;
 
+  IF NOT UNICAEN_TBL.ACTIV_TRIGGERS THEN RETURN; END IF;
 
+  FOR p IN (
 
+    SELECT DISTINCT
+      s.intervenant_id
+    FROM
+      service s
+      JOIN element_modulateur em ON
+        em.element_id   = s.element_pedagogique_id
+        AND em.histo_destruction IS NULL
+    WHERE
+      s.histo_destruction IS NULL
+      AND (em.modulateur_id = :OLD.id OR em.modulateur_id = :NEW.id)
 
+  ) LOOP
 
+    UNICAEN_TBL.DEMANDE_CALCUL('formule', UNICAEN_TBL.make_params('INTERVENANT_ID', p.intervenant_id) );
 
---===================================================================
---===================================================================
--- get(filtre, attribut)
---===================================================================
-FUNCTION get(filtre IN VARCHAR2, attribut IN VARCHAR2, v_multi IN VARCHAR2 DEFAULT 'N', a_multi OUT ARRAY_STR) RETURN VARCHAR2 IS
-  ldap_base   VARCHAR2(256 char) := 'ou=people,dc=unicaen,dc=fr';
-  l_retval  PLS_INTEGER ;
-  l_attrs   DBMS_LDAP.string_collection ;
-  l_message DBMS_LDAP.message ;
-  l_entry   DBMS_LDAP.message ;
-  l_attr_name VARCHAR2(256 char) ;
-  l_ber_element  DBMS_LDAP.ber_element;
-  l_vals         DBMS_LDAP.string_collection;
+  END LOOP;
+END;
 
-  i         PLS_INTEGER ;
-  nb_res    PLS_INTEGER ;
-  probleme  EXCEPTION ;
-  resultat  VARCHAR2(1024 char) := NULL ;
 
-  elapsed_since_used NUMBER ;
+/
+ALTER TRIGGER "F_MODULATEUR" ENABLE;
 
-BEGIN
+-- F_MODULATEUR_S
+CREATE OR REPLACE TRIGGER "F_MODULATEUR_S"
+  AFTER DELETE OR UPDATE ON "MODULATEUR"
+  BEGIN
+    UNICAEN_TBL.CALCULER_DEMANDES;
+END;
 
-  -- On regarde depuis combien de temps la session n'a pas ete utilisee
-  elapsed_since_used:= to_number( to_char( SYSDATE,'yyyymmddhh24miss' ) ) - last_used ;
-  last_used := to_number( to_char( SYSDATE,'yyyymmddhh24miss' ) ) ;
-
-  -- Si c'est trop vieux, on se reconnecte
-  IF elapsed_since_used > 10 THEN
-    l_retval := free() ;
-  END IF ;
-
-  -- Si on n'est pas connecte:
-  IF ldap_sess IS NULL THEN
-    DBMS_OUTPUT.PUT_LINE('Reconnexion au serveur LDAP...');
-    l_retval := ldap_connect() ;
-    CASE l_retval
-      WHEN 1 THEN RETURN '#Err 0010';
-      WHEN 2 THEN RETURN '#Err 0011';
-      ELSE NULL;
-    END CASE;
-  END IF ;
-
-  -- On cherche le mail seulement
-  l_attrs(1) := attribut ;
-  BEGIN
-  l_retval := DBMS_LDAP.search_s(ld       => ldap_sess,
-                                 base     => ldap_base,
-                                 scope    => DBMS_LDAP.SCOPE_SUBTREE,
-                                 filter   => filtre,
-                                 attrs    => l_attrs,
-                                 attronly => 0,
-                                 res      => l_message) ;
-  EXCEPTION
-    WHEN DBMS_LDAP.GENERAL_ERROR THEN
-      DBMS_OUTPUT.PUT_LINE('Erreur: '||SQLERRM);
-      RETURN '#Err 0020' ;
-    WHEN DBMS_LDAP.INVALID_SESSION THEN
-      RETURN '#Err 0021' ;
-    WHEN DBMS_LDAP.invalid_search_scope THEN
-      RETURN '#Err 0022' ;
-  END;
 
+/
+ALTER TRIGGER "F_MODULATEUR_S" ENABLE;
 
+-- F_MOTIF_MODIFICATION_SERVICE
+CREATE OR REPLACE TRIGGER "F_MOTIF_MODIFICATION_SERVICE"
+  AFTER DELETE OR UPDATE ON "MOTIF_MODIFICATION_SERVICE"
+  REFERENCING FOR EACH ROW
   BEGIN
-  nb_res := DBMS_LDAP.count_entries(ld => ldap_sess, msg => l_message) ;
-  EXCEPTION
-    WHEN DBMS_LDAP.INVALID_SESSION THEN
-      RETURN '#Err 0030' ;
-    WHEN DBMS_LDAP.INVALID_MESSAGE THEN
-      RETURN '#Err 0031' ;
-    WHEN DBMS_LDAP.count_entry_error THEN
-      RETURN '#Err 0032' ;
-  END;
 
-  IF nb_res < 1 THEN
-    -- Pas besoin de fermer la connexion puisqu'on en utilise qu'une...
-    -- l_retval := DBMS_LDAP.unbind_s(ld => ldap_sess);
-    -- RETURN '#Err 0033'; -- On retourne NULL depuis la 0.4.1
-    RETURN NULL ;
-  END IF;
+  IF NOT UNICAEN_TBL.ACTIV_TRIGGERS THEN RETURN; END IF;
 
-  -- Les entrees retournees
-  BEGIN
-  l_entry := DBMS_LDAP.first_entry(ld => ldap_sess, msg => l_message);
+  FOR p IN (
 
-  EXCEPTION
-    WHEN DBMS_LDAP.INVALID_SESSION THEN
-      RETURN '#Err 0034' ;
-    WHEN DBMS_LDAP.INVALID_MESSAGE THEN
-      RETURN '#Err 0035' ;
-  END;
+    SELECT DISTINCT
+      intervenant_id
+    FROM
+      modification_service_du msd
+    WHERE
+      msd.histo_destruction IS NULL
+      AND (msd.motif_id = :NEW.id OR msd.motif_id = :OLD.id)
 
+  ) LOOP
 
-  WHILE l_entry IS NOT NULL LOOP
-    -- Tous les attributs de l'entree:
-    BEGIN
-    l_attr_name := DBMS_LDAP.first_attribute(ld        => ldap_sess,
-                                             ldapentry => l_entry,
-                                             ber_elem  => l_ber_element);
-    EXCEPTION
-      WHEN DBMS_LDAP.INVALID_SESSION THEN
-        RETURN '#Err 0040' ;
-      WHEN DBMS_LDAP.INVALID_MESSAGE THEN
-        RETURN '#Err 0041' ;
-    END;
+    UNICAEN_TBL.DEMANDE_CALCUL('formule', UNICAEN_TBL.make_params('INTERVENANT_ID', p.intervenant_id) );
 
-    WHILE l_attr_name IS NOT NULL LOOP
-      -- Les valeurs de cet attribut
-      BEGIN
-      l_vals := DBMS_LDAP.get_values (ld        => ldap_sess,
-                                      ldapentry => l_entry,
-                                      attr      => l_attr_name);
-      EXCEPTION
-        WHEN DBMS_LDAP.INVALID_SESSION THEN
-          RETURN '#Err 0044' ;
-        WHEN DBMS_LDAP.INVALID_MESSAGE THEN
-          RETURN '#Err 0045' ;
-      END;
+  END LOOP;
 
-      -- Si le nom de l'attribut ne correspond pas a l'attribut demande, next.
-      -- C'est pour empecher le retour de "supannAutreMail" quand on demande "mail" par exemple.
-      IF l_attr_name = attribut THEN
-        -- On ne retourne que la premiere valeur si mono-value
-        -- Sinon, on retourne le tableau a_multi
-        IF v_multi = 'N' THEN
-          resultat := l_vals(l_vals.FIRST) ;
-        ELSE
-          a_multi := ARRAY_STR() ; -- Initialisation du tableau
-          i := 0 ; -- tableau commence a 1 (d'ou i++ a l'entree du FOR)
-          FOR v IN l_vals.FIRST .. l_vals.LAST LOOP
-            i := i + 1 ;
-            a_multi.extend ;
-            a_multi(i) := l_vals(v) ;
-          END LOOP ;
-          resultat := '#Err Multi-value: '||i ;
-        END IF;
-      END IF;
+END;
 
-      EXIT WHEN resultat IS NOT NULL ;
 
-      -- Attribut suivant
-      BEGIN
-      l_attr_name := DBMS_LDAP.next_attribute(ld        => ldap_sess,
-                                              ldapentry => l_entry,
-                                              ber_elem  => l_ber_element);
-      EXCEPTION
-        WHEN DBMS_LDAP.INVALID_SESSION THEN
-          RETURN '#Err 0042' ;
-        WHEN DBMS_LDAP.INVALID_MESSAGE THEN
-          RETURN '#Err 0043' ;
-      END;
+/
+ALTER TRIGGER "F_MOTIF_MODIFICATION_SERVICE" ENABLE;
 
-    END LOOP ; -- LOOP Fin des attributs
-    IF l_ber_element IS NOT NULL THEN
-      DBMS_LDAP.ber_free(l_ber_element, 0) ;
-    END IF ;
-    EXIT WHEN resultat IS NOT NULL ;
-    BEGIN
-    l_entry := DBMS_LDAP.next_entry(ld  => ldap_sess,
-                                    msg => l_entry);
-    EXCEPTION
-      WHEN DBMS_LDAP.INVALID_SESSION THEN
-        RETURN '#Err 0036' ;
-      WHEN DBMS_LDAP.INVALID_MESSAGE THEN
-        RETURN '#Err 0037' ;
-    END;
-  END LOOP ; -- LOOP Fin des entrees
+-- F_MOTIF_MODIFICATION_SERVICE_S
+CREATE OR REPLACE TRIGGER "F_MOTIF_MODIFICATION_SERVICE_S"
+  AFTER DELETE OR UPDATE ON "MOTIF_MODIFICATION_SERVICE"
+  BEGIN
+  UNICAEN_TBL.CALCULER_DEMANDES;
+END;
 
-  -- Liberation de la memoire
-  --l_retval := DBMS_LDAP.msgfree(l_message) ;
-  IF l_entry IS NOT NULL THEN
-    l_retval := DBMS_LDAP.msgfree(l_entry) ;
-  END IF ;
 
-  -- Pas de deconnexion (on la reutilisera)
-  --l_retval := DBMS_LDAP.unbind_s(ld => l_session);
-  --DBMS_OUTPUT.PUT_LINE('L_RETVAL: ' || l_retval);
+/
+ALTER TRIGGER "F_MOTIF_MODIFICATION_SERVICE_S" ENABLE;
 
-  RETURN resultat ;
+-- F_STATUT_INTERVENANT
+CREATE OR REPLACE TRIGGER "F_STATUT_INTERVENANT"
+  AFTER UPDATE OF SERVICE_STATUTAIRE, DEPASSEMENT, TYPE_INTERVENANT_ID, NON_AUTORISE ON "STATUT_INTERVENANT"
+  REFERENCING FOR EACH ROW
+  BEGIN
 
-END get ;
+  IF NOT UNICAEN_TBL.ACTIV_TRIGGERS THEN RETURN; END IF;
 
+  FOR p IN (
 
+    SELECT DISTINCT
+      fr.intervenant_id
+    FROM
+      intervenant i
+      JOIN formule_resultat fr ON fr.intervenant_id = i.id
+    WHERE
+      (i.statut_id = :NEW.id OR i.statut_id = :OLD.id)
+      AND i.histo_destruction IS NULL
 
---===================================================================
---===================================================================
--- alias2mail(alias)
---===================================================================
-FUNCTION alias2mail(ldap_alias IN VARCHAR2) RETURN VARCHAR2 IS
-BEGIN
-  RETURN get('supannAliasLogin='||ldap_alias, 'mail', 'N', a_multi) ;
-END alias2mail;
-
---===================================================================
---===================================================================
--- uid2mail(ldap_uid)
---===================================================================
-FUNCTION uid2mail(ldap_uid IN VARCHAR2) RETURN VARCHAR2 IS
-BEGIN
-  RETURN get('uid='||ldap_uid, 'mail', 'N', a_multi) ;
-END uid2mail;
+  ) LOOP
 
+    UNICAEN_TBL.DEMANDE_CALCUL('formule', UNICAEN_TBL.make_params('INTERVENANT_ID', p.intervenant_id) );
 
---===================================================================
---===================================================================
--- hid2mail(harpege_uid)
---===================================================================
-FUNCTION hid2mail(harpege_uid IN NUMBER) RETURN VARCHAR2 IS
-BEGIN
-  RETURN get('uid=p'||to_char(harpege_uid,'FM00000000'), 'mail', 'N', a_multi) ;
-END hid2mail;
+  END LOOP;
+END;
 
 
---===================================================================
---===================================================================
--- etu2mail(code_etu)
---===================================================================
-FUNCTION etu2mail(code_etu IN NUMBER) RETURN VARCHAR2 IS
-BEGIN
-  RETURN get('uid=e'||to_char(code_etu,'FM00000000'), 'mail', 'N', a_multi) ;
-END etu2mail;
+/
+ALTER TRIGGER "F_STATUT_INTERVENANT" ENABLE;
 
+-- F_STATUT_INTERVENANT_S
+CREATE OR REPLACE TRIGGER "F_STATUT_INTERVENANT_S"
+  AFTER UPDATE ON "STATUT_INTERVENANT"
+  BEGIN
+  UNICAEN_TBL.CALCULER_DEMANDES;
+END;
 
---===================================================================
---===================================================================
--- uid2alias(ldap_uid)
---===================================================================
-FUNCTION uid2alias(ldap_uid IN VARCHAR2) RETURN VARCHAR2 IS
-BEGIN
-  RETURN get('uid='||ldap_uid, 'supannAliasLogin', 'N', a_multi) ;
-END uid2alias;
-
---===================================================================
---===================================================================
--- hid2alias(harpege_uid)
---===================================================================
-FUNCTION hid2alias(harpege_uid IN NUMBER) RETURN VARCHAR2 IS
-BEGIN
-  RETURN get('uid=p'||to_char(harpege_uid,'FM00000000'), 'supannAliasLogin', 'N', a_multi) ;
-END hid2alias;
 
+/
+ALTER TRIGGER "F_STATUT_INTERVENANT_S" ENABLE;
 
---===================================================================
---===================================================================
--- uid2cn(ldap_uid)
---===================================================================
-FUNCTION uid2cn(ldap_uid IN VARCHAR2) RETURN VARCHAR2 IS
-BEGIN
-  RETURN get('uid='||ldap_uid, 'cn', 'N', a_multi) ;
-END uid2cn;
+-- F_TYPE_INTERVENTION
+CREATE OR REPLACE TRIGGER "F_TYPE_INTERVENTION"
+  AFTER UPDATE OF TAUX_HETD_SERVICE, TAUX_HETD_COMPLEMENTAIRE ON "TYPE_INTERVENTION"
+  REFERENCING FOR EACH ROW
+  BEGIN
 
+  IF NOT UNICAEN_TBL.ACTIV_TRIGGERS THEN RETURN; END IF;
 
---===================================================================
---===================================================================
--- uid2sn(ldap_uid)
---===================================================================
-FUNCTION uid2sn(ldap_uid IN VARCHAR2) RETURN VARCHAR2 IS
-BEGIN
-  RETURN get('uid='||ldap_uid, 'sn', 'N', a_multi) ;
-END uid2sn;
-
---===================================================================
---===================================================================
--- uid2givenname(ldap_uid)
---===================================================================
-FUNCTION uid2givenname(ldap_uid IN VARCHAR2) RETURN VARCHAR2 IS
-BEGIN
-  RETURN get('uid='||ldap_uid, 'givenname', 'N', a_multi) ;
-END uid2givenname;
-
---===================================================================
---===================================================================
--- uid2gn(ldap_uid)
---===================================================================
-FUNCTION uid2gn(ldap_uid IN VARCHAR2) RETURN VARCHAR2 IS
-BEGIN
-  RETURN get('uid='||ldap_uid, 'givenname', 'N', a_multi)||' '||get('uid='||ldap_uid, 'sn', 'N', a_multi) ;
-END uid2gn;
+  FOR p IN (
+
+    SELECT DISTINCT
+      s.intervenant_id
+    FROM
+      volume_horaire vh
+      JOIN service s ON s.id = vh.service_id AND s.histo_destruction IS NULL
+    WHERE
+      vh.histo_destruction IS NULL
+      AND (vh.type_intervention_id = :NEW.id OR vh.type_intervention_id = :OLD.id)
 
+  ) LOOP
 
+    UNICAEN_TBL.DEMANDE_CALCUL('formule', UNICAEN_TBL.make_params('INTERVENANT_ID', p.intervenant_id) );
 
---===================================================================
---===================================================================
--- hidIsPrimaryTeacher(harpege_uid)
---
--- Verifie eduPersonPrimaryAffiliation
---===================================================================
-FUNCTION hidIsPrimaryTeacher(harpege_uid IN NUMBER) RETURN VARCHAR2 IS
-  l_resultat VARCHAR2(1024 char) := NULL ;
-  isTeacher VARCHAR2(1) := 'N' ;
-BEGIN
-  l_resultat := get('uid=p'||to_char(harpege_uid,'FM00000000'), 'eduPersonPrimaryAffiliation', 'N', a_multi) ;
+  END LOOP;
+END;
 
-  IF l_resultat IS NULL THEN
-    RETURN NULL ;
-  END IF ;
 
-  IF SUBSTR( l_resultat, 1, 4 ) = '#Err' THEN
-    RETURN l_resultat ;
-  END IF ;
+/
+ALTER TRIGGER "F_TYPE_INTERVENTION" ENABLE;
 
-  IF l_resultat = 'teacher' THEN
-    isTeacher := 'O' ;
-  END IF ;
+-- F_TYPE_INTERVENTION_S
+CREATE OR REPLACE TRIGGER "F_TYPE_INTERVENTION_S"
+  AFTER UPDATE ON "TYPE_INTERVENTION"
+  BEGIN
+  UNICAEN_TBL.CALCULER_DEMANDES;
+END;
 
-  RETURN isTeacher ;
 
-END hidIsPrimaryTeacher;
+/
+ALTER TRIGGER "F_TYPE_INTERVENTION_S" ENABLE;
 
+-- INDIC_TRG_MODIF_DOSSIER
+CREATE OR REPLACE TRIGGER "INDIC_TRG_MODIF_DOSSIER"
+  AFTER INSERT OR UPDATE OF NOM_USUEL, NOM_PATRONYMIQUE, PRENOM, CIVILITE_ID, ADRESSE, RIB, DATE_NAISSANCE ON "DOSSIER"
 
---===================================================================
---===================================================================
--- hidIsTeacher(harpege_uid)
---
--- Retourne NULL si non trouve,
---             O si flag teacher ou faculty
---             N si pas ce flag.
---===================================================================
-FUNCTION hidIsTeacher(harpege_uid IN NUMBER) RETURN VARCHAR2 IS
-  l_resultat VARCHAR2(1024 char) := NULL ;
-  isTeacher VARCHAR2(1) := 'N' ;
-BEGIN
-  l_resultat := get('uid=p'||to_char(harpege_uid,'FM00000000'), 'eduPersonAffiliation', 'Y', a_multi) ;
-  -- ici, l_resultat ne contient que '#Err Multi-value: i'
-
-  -- On verifie qu'on a bien obtenu des resultats
-  IF l_resultat IS NULL OR SUBSTR( l_resultat, 1, 18) != '#Err Multi-value: ' THEN
-    RETURN l_resultat ;
-  END IF ;
-
-  -- Le Nombre de resultats
-  IF a_multi.count = 0 THEN
-    RETURN NULL ;
-  END IF ;
-
-  FOR i IN 1 .. a_multi.count LOOP
-    IF a_multi(i)='teacher' THEN
-      isTeacher := 'O' ;
-    END IF ;
-  END LOOP ;
-
-  RETURN isTeacher ;
-
-END hidIsTeacher;
-
-
---===================================================================
---===================================================================
--- getInvites()
---
--- Reprend la fonction "get" mais ecrit les resultats dans une table
---===================================================================
-PROCEDURE getInvites(l_table IN VARCHAR2) IS
-  -- Les valeurs qu'on recherche
-  l_uid VARCHAR2(10 char) ;
-  l_ucbnstatus VARCHAR2(12 char) ;
-  l_login VARCHAR2(32 char) ;
-  l_nom_usuel VARCHAR2(128 char) ;
-  l_prenom VARCHAR2(128 char) ;
-  l_d_naissance VARCHAR2(8 char) ;
-  l_d_fin_insc VARCHAR2(8 char) ;
-  l_affectation VARCHAR2(8 char) ;
-  l_parrain_dn VARCHAR2(64 char) ;
-
-  -- Les variables pour le requetage LDAP
-  ldap_base   VARCHAR2(256 char) := 'ou=people,dc=unicaen,dc=fr';
-  ldap_filtre VARCHAR2(256 char) ;
-  l_retval  PLS_INTEGER ;
-  l_attrs   DBMS_LDAP.string_collection ;
-  l_message DBMS_LDAP.message ;
-  l_entry   DBMS_LDAP.message ;
-  l_attr_name VARCHAR2(256 char) ;
-  l_ber_element  DBMS_LDAP.ber_element;
-  l_vals         DBMS_LDAP.string_collection;
-
-  i         PLS_INTEGER ;
-  nb_res    PLS_INTEGER ;
-  probleme  EXCEPTION ;
-  resultat  VARCHAR2(1024 char) := NULL ;
-  requete   VARCHAR2(4000 char) ;
-
-  elapsed_since_used NUMBER ;
+  FOR EACH ROW
+/**
+ * But : mettre à jour la liste des PJ attendues.
+ */
+DECLARE
+  i integer := 1;
+  intervenantId NUMERIC;
+  found integer;
+  estCreationDossier integer;
+  type array_t is table of varchar2(1024);
+
+  attrNames     array_t := array_t();
+  attrOldVals   array_t := array_t();
+  attrNewVals   array_t := array_t();
 
+  -- valeurs importées (format texte) :
+  impSourceName source.libelle%type;
+  impNomUsuel   indic_modif_dossier.ATTR_NEW_VALUE%type;
+  impNomPatro   indic_modif_dossier.ATTR_NEW_VALUE%type;
+  impPrenom     indic_modif_dossier.ATTR_NEW_VALUE%type;
+  impCivilite   indic_modif_dossier.ATTR_NEW_VALUE%type;
+  impDateNaiss  indic_modif_dossier.ATTR_NEW_VALUE%type;
+  impAdresse    indic_modif_dossier.ATTR_NEW_VALUE%type;
+  impRib        indic_modif_dossier.ATTR_NEW_VALUE%type;
+  -- anciennes valeurs dans le dossier (format texte) :
+  oldSourceName source.libelle%type;
+  oldNomUsuel   indic_modif_dossier.ATTR_NEW_VALUE%type;
+  oldNomPatro   indic_modif_dossier.ATTR_NEW_VALUE%type;
+  oldPrenom     indic_modif_dossier.ATTR_NEW_VALUE%type;
+  oldCivilite   indic_modif_dossier.ATTR_NEW_VALUE%type;
+  oldDateNaiss  indic_modif_dossier.ATTR_NEW_VALUE%type;
+  oldAdresse    indic_modif_dossier.ATTR_NEW_VALUE%type;
+  oldRib        indic_modif_dossier.ATTR_NEW_VALUE%type;
+  -- nouvelles valeurs dans le dossier (format texte) :
+  newSourceName source.libelle%type;
+  newNomUsuel   indic_modif_dossier.ATTR_NEW_VALUE%type;
+  newNomPatro   indic_modif_dossier.ATTR_NEW_VALUE%type;
+  newPrenom     indic_modif_dossier.ATTR_NEW_VALUE%type;
+  newCivilite   indic_modif_dossier.ATTR_NEW_VALUE%type;
+  newDateNaiss  indic_modif_dossier.ATTR_NEW_VALUE%type;
+  newAdresse    indic_modif_dossier.ATTR_NEW_VALUE%type;
+  newRib        indic_modif_dossier.ATTR_NEW_VALUE%type;
 BEGIN
-  -- On fabrique le filtre a partir de la date en cours:
-  ldap_filtre := '(&(|(ucbnStatus=LECTEUR_SCD)(ucbnStatus=APPRENANT)(ucbnStatus=INVITE))(dateFinInscription>='||to_char(SYSDATE,'YYYYMMDD')||'))' ;
-
-  -- On regarde depuis combien de temps la session n'a pas ete utilisee
-  elapsed_since_used:= to_number( to_char( SYSDATE,'yyyymmddhh24miss' ) ) - last_used ;
-  last_used := to_number( to_char( SYSDATE,'yyyymmddhh24miss' ) ) ;
-
-  -- Si c'est trop vieux, on se reconnecte
-  IF elapsed_since_used > 10 THEN
-    l_retval := free() ;
-  END IF ;
-
-  -- Si on n'est pas connecte:
-  IF ldap_sess IS NULL THEN
-    DBMS_OUTPUT.PUT_LINE('Reconnexion au serveur LDAP...');
-    l_retval := ldap_connect() ;
-    CASE l_retval
-      WHEN 1 THEN DBMS_OUTPUT.PUT_LINE('#Err 0010') ;
-      WHEN 2 THEN DBMS_OUTPUT.PUT_LINE('#Err 0011') ;
-      ELSE NULL;
-    END CASE;
-  END IF ;
-
-  -- Les attributs LDAP qu'on recherche:
-  l_attrs(1) := 'uid' ;
-  l_attrs(2) := 'sn' ;
-  l_attrs(3) := 'givenName' ;
-  l_attrs(4) := 'dateDeNaissance' ;
-  l_attrs(5) := 'dateFinInscription' ;
-  l_attrs(6) := 'supannAliasLogin' ;
-  l_attrs(7) := 'supannEntiteAffectation' ;
-  l_attrs(8) := 'ucbnStatus' ;
-  l_attrs(9) := 'supannParrainDN' ;
-  BEGIN
-  l_retval := DBMS_LDAP.search_s(ld       => ldap_sess,
-                                 base     => ldap_base,
-                                 scope    => DBMS_LDAP.SCOPE_SUBTREE,
-                                 filter   => ldap_filtre,
-                                 attrs    => l_attrs,
-                                 attronly => 0,
-                                 res      => l_message) ;
-  EXCEPTION
-    WHEN DBMS_LDAP.GENERAL_ERROR THEN
-      DBMS_OUTPUT.PUT_LINE('Erreur: '||SQLERRM);
-      DBMS_OUTPUT.PUT_LINE('#Err 0020') ;
-    WHEN DBMS_LDAP.INVALID_SESSION THEN
-      DBMS_OUTPUT.PUT_LINE('#Err 0021') ;
-    WHEN DBMS_LDAP.invalid_search_scope THEN
-      DBMS_OUTPUT.PUT_LINE('#Err 0022') ;
-  END;
-
-  BEGIN
-  nb_res := DBMS_LDAP.count_entries(ld => ldap_sess, msg => l_message) ;
-  EXCEPTION
-    WHEN DBMS_LDAP.INVALID_SESSION THEN
-      DBMS_OUTPUT.PUT_LINE('#Err 0030') ;
-    WHEN DBMS_LDAP.INVALID_MESSAGE THEN
-      DBMS_OUTPUT.PUT_LINE('#Err 0031') ;
-    WHEN DBMS_LDAP.count_entry_error THEN
-      DBMS_OUTPUT.PUT_LINE('#Err 0032') ;
-  END;
-
-  IF nb_res < 1 THEN
-    -- Pas besoin de fermer la connexion puisqu'on en utilise qu'une...
-    -- l_retval := DBMS_LDAP.unbind_s(ld => ldap_sess);
-    -- RETURN '#Err 0033'; -- On retourne NULL depuis la 0.4.1
-    DBMS_OUTPUT.PUT_LINE('#Err 0033') ;
-  END IF;
-
-  -- Les entrees retournees
-  BEGIN
-  l_entry := DBMS_LDAP.first_entry(ld => ldap_sess, msg => l_message);
-
-  EXCEPTION
-    WHEN DBMS_LDAP.INVALID_SESSION THEN
-      DBMS_OUTPUT.PUT_LINE('#Err 0034') ;
-    WHEN DBMS_LDAP.INVALID_MESSAGE THEN
-      DBMS_OUTPUT.PUT_LINE('#Err 0035') ;
-  END;
+  --
+  -- Témoin indiquant s'il s'agit d'une création de dossier (insert).
+  --
+  estCreationDossier := case when inserting then 1 else 0 end;
 
+  --
+  -- Fetch source OSE.
+  --
+  select s.libelle into newSourceName from source s where s.code = 'OSE';
 
-  WHILE l_entry IS NOT NULL LOOP
-    -- Tous les attributs de l'entree:
-    BEGIN
-    l_attr_name := DBMS_LDAP.first_attribute(ld        => ldap_sess,
-                                             ldapentry => l_entry,
-                                             ber_elem  => l_ber_element);
-    EXCEPTION
-      WHEN DBMS_LDAP.INVALID_SESSION THEN
-        DBMS_OUTPUT.PUT_LINE('#Err 0040') ;
-      WHEN DBMS_LDAP.INVALID_MESSAGE THEN
-        DBMS_OUTPUT.PUT_LINE('#Err 0041') ;
-    END;
+  --
+  -- Fetch et formattage texte des valeurs importées.
+  --
+  select
+      i.id,
+      s.libelle,
+      nvl(i.NOM_USUEL, '(Aucun)'),
+      nvl(i.NOM_PATRONYMIQUE, '(Aucun)'),
+      nvl(i.PRENOM, '(Aucun)'),
+      nvl(c.libelle_court, '(Aucune)'),
+      nvl(to_char(i.DATE_NAISSANCE, 'DD/MM/YYYY'), '(Aucune)'),
+      nvl(ose_divers.formatted_rib(i.bic, i.iban), '(Aucun)'),
+      case when a.id is not null
+        then ose_divers.formatted_adresse(a.NO_VOIE, a.NOM_VOIE, a.BATIMENT, a.MENTION_COMPLEMENTAIRE, a.LOCALITE, a.CODE_POSTAL, a.VILLE, a.PAYS_LIBELLE)
+        else '(Aucune)'
+      end
+    into
+      intervenantId,
+      oldSourceName,
+      impNomUsuel,
+      impNomPatro,
+      impPrenom,
+      impCivilite,
+      impDateNaiss,
+      impRib,
+      impAdresse
+    from intervenant i
+    join source s on s.id = i.source_id
+    left join civilite c on c.id = i.civilite_id
+    left join adresse_intervenant a on a.intervenant_id = i.id
+    where i.id = :NEW.intervenant_id;
 
-    WHILE l_attr_name IS NOT NULL LOOP
-      -- Les valeurs de cet attribut
-      BEGIN
-      l_vals := DBMS_LDAP.get_values (ld        => ldap_sess,
-                                      ldapentry => l_entry,
-                                      attr      => l_attr_name);
-      EXCEPTION
-        WHEN DBMS_LDAP.INVALID_SESSION THEN
-          DBMS_OUTPUT.PUT_LINE('#Err 0044') ;
-        WHEN DBMS_LDAP.INVALID_MESSAGE THEN
-          DBMS_OUTPUT.PUT_LINE('#Err 0045') ;
-      END;
+  --
+  -- Anciennes valeurs dans le cas d'une création de dossier : ce sont les valeurs importées.
+  --
+  if (1 = estCreationDossier) then
+    --dbms_output.put_line('inserting');
+    oldNomUsuel  := impNomUsuel;
+    oldNomPatro  := impNomPatro;
+    oldPrenom    := impPrenom;
+    oldCivilite  := impCivilite;
+    oldDateNaiss := impDateNaiss;
+    oldAdresse   := impAdresse;
+    oldRib       := impRib;
+  --
+  -- Anciennes valeurs dans le cas d'une mise à jour du dossier.
+  --
+  else
+    --dbms_output.put_line('updating');
+    oldNomUsuel     := trim(:OLD.NOM_USUEL);
+    oldNomPatro     := trim(:OLD.NOM_PATRONYMIQUE);
+    oldPrenom       := trim(:OLD.PRENOM);
+    oldDateNaiss    := case when :OLD.DATE_NAISSANCE is null then '(Aucune)' else to_char(:OLD.DATE_NAISSANCE, 'DD/MM/YYYY') end;
+    oldAdresse      := trim(:OLD.ADRESSE);
+    oldRib          := trim(:OLD.RIB);
+    if :OLD.CIVILITE_ID is not null then
+      select c.libelle_court into oldCivilite from civilite c where c.id = :OLD.CIVILITE_ID;
+    else
+      oldCivilite := '(Aucune)';
+    end if;
+    select s.libelle into oldSourceName from source s where s.code = 'OSE';
+  end if;
 
-      -- On ne retourne que la premiere valeur
-      CASE
-        WHEN l_attr_name = 'uid' THEN l_uid := l_vals(l_vals.FIRST) ;
-        WHEN l_attr_name = 'ucbnStatus' THEN l_ucbnstatus := l_vals(l_vals.FIRST) ;
-        WHEN l_attr_name = 'supannAliasLogin' THEN l_login := l_vals(l_vals.FIRST) ;
-        WHEN l_attr_name = 'sn' THEN l_nom_usuel := l_vals(l_vals.FIRST) ;
-        WHEN l_attr_name = 'givenName' THEN l_prenom := l_vals(l_vals.FIRST) ;
-        WHEN l_attr_name = 'dateDeNaissance' THEN l_d_naissance := l_vals(l_vals.FIRST) ;
-        WHEN l_attr_name = 'dateFinInscription' THEN l_d_fin_insc := l_vals(l_vals.FIRST) ;
-        WHEN l_attr_name = 'supannEntiteAffectation' THEN l_affectation := SUBSTR( l_vals(l_vals.FIRST), 4 ) ;
-        WHEN l_attr_name = 'supannParrainDN' THEN l_parrain_dn := l_vals(l_vals.FIRST) ;
-      END CASE ;
-
-      -- Attribut suivant
-      BEGIN
-      l_attr_name := DBMS_LDAP.next_attribute(ld        => ldap_sess,
-                                              ldapentry => l_entry,
-                                              ber_elem  => l_ber_element);
-      EXCEPTION
-        WHEN DBMS_LDAP.INVALID_SESSION THEN
-          DBMS_OUTPUT.PUT_LINE('#Err 0042') ;
-        WHEN DBMS_LDAP.INVALID_MESSAGE THEN
-          DBMS_OUTPUT.PUT_LINE('#Err 0043') ;
-      END;
-    END LOOP ; -- LOOP Fin des attributs
-
-    -- On insere les valeurs dans la table
-    dbms_output.put_line('uid= '||l_uid||' ('||l_affectation||')    fin: '||l_d_fin_insc) ;
-    requete := 'SELECT count(*) FROM '||l_table||' WHERE ldap_uid= :l_uid' ;
-    EXECUTE IMMEDIATE requete INTO nb_res USING l_uid ;
-    IF nb_res = 0 THEN
-      -- un INSERT
-      requete := 'INSERT INTO '||l_table||'(ucbnstatus, login, nom_usuel, prenom, d_naissance, d_fin_insc, affectation, parrain_dn, ldap_uid) VALUES ' ;
-      requete := requete||'(:l_ucbnstatus, :l_login, :l_nom_usuel, :l_prenom, to_date(:l_d_naissance,''YYYYMMDD''), to_date(:l_d_fin_insc,''YYYYMMDD''), :l_affectation, :l_parrain_dn, :l_uid )' ;
-      dbms_output.put_line('req= '||requete) ;
-    ELSE
-      -- un UPDATE
-      requete := 'UPDATE '||l_table||' SET ' ;
-      requete := requete||'ucbnstatus=:l_ucbnstatus, login=:l_login, nom_usuel=:l_nom_usuel, prenom=:l_prenom, d_naissance=to_date(:l_d_naissance,''YYYYMMDD''), ' ;
-      requete := requete||'d_fin_insc=to_date(:l_d_fin_insc,''YYYYMMDD''), affectation=:l_affectation, parrain_dn=:l_parrain_dn ' ;
-      requete := requete||'WHERE ldap_uid=:l_uid' ;
-      dbms_output.put_line('req= '||requete) ;
-    END IF ;
-    -- Execution de la mise a jour de la table:
-    -- Attention, les variables sont bindees selon l'ordre, pas le nom !!!!
-    -- http://docs.oracle.com/cd/E11882_01/appdev.112/e25519/dynamic.htm#LNPLS631
-    EXECUTE IMMEDIATE requete USING l_ucbnstatus, l_login, l_nom_usuel, l_prenom, l_d_naissance, l_d_fin_insc, l_affectation, l_parrain_dn, l_uid ;
-
-    IF l_ber_element IS NOT NULL THEN
-      DBMS_LDAP.ber_free(l_ber_element, 0) ;
-    END IF ;
-
-    BEGIN
-    l_entry := DBMS_LDAP.next_entry(ld  => ldap_sess,
-                                    msg => l_entry);
-    EXCEPTION
-      WHEN DBMS_LDAP.INVALID_SESSION THEN
-        DBMS_OUTPUT.PUT_LINE('#Err 0036') ;
-      WHEN DBMS_LDAP.INVALID_MESSAGE THEN
-        DBMS_OUTPUT.PUT_LINE('#Err 0037') ;
-    END;
+  --
+  -- Nouvelles valeurs saisies.
+  --
+  newNomUsuel   := trim(:NEW.NOM_USUEL);
+  newNomPatro   := trim(:NEW.NOM_PATRONYMIQUE);
+  newPrenom     := trim(:NEW.PRENOM);
+  newDateNaiss  := case when :NEW.DATE_NAISSANCE is null then '(Aucune)' else to_char(:NEW.DATE_NAISSANCE, 'DD/MM/YYYY') end;
+  newAdresse    := trim(:NEW.ADRESSE);
+  newRib        := trim(:NEW.RIB);
+  if :NEW.CIVILITE_ID is not null then
+    select c.libelle_court into newCivilite from civilite c where c.id = :NEW.CIVILITE_ID;
+  else
+    newCivilite := '(Aucune)';
+  end if;
 
-  END LOOP ; -- LOOP Fin des entrees
+  --
+  -- Détection des différences.
+  --
+  if newNomUsuel <> oldNomUsuel then
+    --dbms_output.put_line('NOM_USUEL ' || sourceLib || ' = ' || oldNomUsuel || ' --> NOM_USUEL OSE = ' || :NEW.NOM_USUEL);
+    attrNames.extend(1);
+    attrOldVals.extend(1);
+    attrNewVals.extend(1);
+    attrNames(i)   := 'Nom usuel';
+    attrOldVals(i) := oldNomUsuel;
+    attrNewVals(i) := newNomUsuel;
+    i := i + 1;
+  end if;
+  if newNomPatro <> oldNomPatro then
+    --dbms_output.put_line('NOM_PATRONYMIQUE ' || sourceLib || ' = ' || oldNomPatro || ' --> NOM_PATRONYMIQUE OSE = ' || :NEW.NOM_PATRONYMIQUE);
+    attrNames.extend(1);
+    attrOldVals.extend(1);
+    attrNewVals.extend(1);
+    attrNames(i)   := 'Nom de naissance';
+    attrOldVals(i) := oldNomPatro;
+    attrNewVals(i) := newNomPatro;
+    i := i + 1;
+  end if;
+  if newPrenom <> oldPrenom then
+    --dbms_output.put_line('PRENOM ' || sourceLib || ' = ' || oldPrenom || ' --> PRENOM OSE = ' || :NEW.PRENOM);
+    attrNames.extend(1);
+    attrOldVals.extend(1);
+    attrNewVals.extend(1);
+    attrNames(i)   := 'Prénom';
+    attrOldVals(i) := oldPrenom;
+    attrNewVals(i) := newPrenom;
+    i := i + 1;
+  end if;
+  if newCivilite <> oldCivilite then
+    --dbms_output.put_line('CIVILITE_ID ' || sourceLib || ' = ' || oldCivilite || ' --> CIVILITE_ID OSE = ' || :NEW.CIVILITE_ID);
+    attrNames.extend(1);
+    attrOldVals.extend(1);
+    attrNewVals.extend(1);
+    attrNames(i)   := 'Civilité';
+    attrOldVals(i) := oldCivilite;
+    attrNewVals(i) := newCivilite;
+    i := i + 1;
+  end if;
+  if newDateNaiss <> oldDateNaiss then
+    --dbms_output.put_line('DATE_NAISSANCE ' || sourceLib || ' = ' || oldDateNaiss || ' --> DATE_NAISSANCE OSE = ' || :NEW.DATE_NAISSANCE);
+    attrNames.extend(1);
+    attrOldVals.extend(1);
+    attrNewVals.extend(1);
+    attrNames(i)   := 'Date de naissance';
+    attrOldVals(i) := oldDateNaiss;
+    attrNewVals(i) := newDateNaiss;
+    i := i + 1;
+  end if;
+  if newAdresse <> oldAdresse then
+    --dbms_output.put_line('ADRESSE ' || sourceLib || ' = ' || oldAdresse || ' --> ADRESSE OSE = ' || :NEW.ADRESSE);
+    attrNames.extend(1);
+    attrOldVals.extend(1);
+    attrNewVals.extend(1);
+    attrNames(i)   := 'Adresse postale';
+    attrOldVals(i) := oldAdresse;
+    attrNewVals(i) := newAdresse;
+    i := i + 1;
+  end if;
+  if oldRib is null or newRib <> oldRib then
+    --dbms_output.put_line('RIB ' || sourceLib || ' = ' || oldRib || ' --> RIB OSE = ' || :NEW.RIB);
+    attrNames.extend(1);
+    attrOldVals.extend(1);
+    attrNewVals.extend(1);
+    attrNames(i)   := 'RIB';
+    attrOldVals(i) := oldRib;
+    attrNewVals(i) := newRib;
+    i := i + 1;
+  end if;
 
-  -- Liberation de la memoire
-  IF l_entry IS NOT NULL THEN
-    l_retval := DBMS_LDAP.msgfree(l_entry) ;
-  END IF ;
+  --
+  -- Enregistrement des différences.
+  --
+  for i in 1 .. attrNames.count loop
+    --dbms_output.put_line(attrNames(i) || ' ' || oldSourceName || ' = ' || attrOldVals(i) || ' --> ' || attrNames(i) || ' ' || newSourceName || ' = ' || attrNewVals(i));
 
-  -- Pas de deconnexion (on la reutilisera)
-  -- Par contre on COMMIT :
-  commit ;
+    -- vérification que la même modif n'est pas déjà consignée
+    select count(*) into found from indic_modif_dossier
+      where INTERVENANT_ID = intervenantId
+      and ATTR_NAME = attrNames(i)
+      and ATTR_OLD_VALUE = to_char(attrOldVals(i))
+      and ATTR_NEW_VALUE = to_char(attrNewVals(i));
+    if found > 0 then
+      continue;
+    end if;
 
-END getInvites ;
+    insert into INDIC_MODIF_DOSSIER(
+      id,
+      INTERVENANT_ID,
+      ATTR_NAME,
+      ATTR_OLD_SOURCE_NAME,
+      ATTR_OLD_VALUE,
+      ATTR_NEW_SOURCE_NAME,
+      ATTR_NEW_VALUE,
+      EST_CREATION_DOSSIER, -- témoin indiquant s'il s'agit d'une création ou d'une modification de dossier
+      HISTO_CREATION,       -- NB: date de modification du dossier
+      HISTO_CREATEUR_ID,    -- NB: auteur de la modification du dossier
+      HISTO_MODIFICATION,
+      HISTO_MODIFICATEUR_ID
+    )
+    values (
+      indic_modif_dossier_id_seq.nextval,
+      intervenantId,
+      attrNames(i),
+      oldSourceName,
+      to_char(attrOldVals(i)),
+      newSourceName,
+      to_char(attrNewVals(i)),
+      estCreationDossier,
+      :NEW.HISTO_MODIFICATION,
+      :NEW.HISTO_MODIFICATEUR_ID,
+      :NEW.HISTO_MODIFICATION,
+      :NEW.HISTO_MODIFICATEUR_ID
+    );
+  end loop;
 
+END;
 
-END ucbn_ldap ;
 /
+ALTER TRIGGER "INDIC_TRG_MODIF_DOSSIER" ENABLE;
 
--- 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
+-- INTERVENANT_HORO_SERVICE
+CREATE OR REPLACE TRIGGER "INTERVENANT_HORO_SERVICE"
+  AFTER INSERT OR DELETE OR UPDATE ON "SERVICE"
+  REFERENCING FOR EACH ROW
   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;
+  IF DELETING THEN
 
+    ose_divers.intervenant_horodatage_service(
+      :OLD.intervenant_id,
+      null,
+      0,
+      :OLD.histo_modificateur_id,
+      :OLD.histo_modification
+    );
 
+  ELSE
 
-  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;
+    ose_divers.intervenant_horodatage_service(
+      :NEW.intervenant_id,
+      null,
+      0,
+      :NEW.histo_modificateur_id,
+      :NEW.histo_modification
+    );
 
-    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;
+  END IF;
 
+END;
 
+/
+ALTER TRIGGER "INTERVENANT_HORO_SERVICE" ENABLE;
 
-  PROCEDURE REFRESH_MV( mview_name varchar2 ) IS
+-- INTERVENANT_HORO_SERVICE_REF
+CREATE OR REPLACE TRIGGER "INTERVENANT_HORO_SERVICE_REF"
+  AFTER INSERT OR DELETE OR UPDATE ON "SERVICE_REFERENTIEL"
+  REFERENCING FOR EACH ROW
   BEGIN
-    DBMS_MVIEW.REFRESH(mview_name, 'C');
-  EXCEPTION WHEN OTHERS THEN
-    SYNC_LOG( SQLERRM, mview_name );
-  END;
 
+  IF DELETING THEN
 
+    ose_divers.intervenant_horodatage_service(
+      :OLD.intervenant_id,
+      null,
+      1,
+      :OLD.histo_modificateur_id,
+      :OLD.histo_modification
+    );
 
-  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;
+  ELSE
 
+    ose_divers.intervenant_horodatage_service(
+      :NEW.intervenant_id,
+      null,
+      1,
+      :NEW.histo_modificateur_id,
+      :NEW.histo_modification
+    );
 
+  END IF;
 
-  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;
 
-END UNICAEN_IMPORT;
 /
+ALTER TRIGGER "INTERVENANT_HORO_SERVICE_REF" ENABLE;
 
--- UNICAEN_OSE_FORMULE
-CREATE OR REPLACE PACKAGE BODY "UNICAEN_OSE_FORMULE" AS
+-- INTERVENANT_HORO_VH
+CREATE OR REPLACE TRIGGER "INTERVENANT_HORO_VH"
+  AFTER INSERT OR DELETE OR UPDATE ON "VOLUME_HORAIRE"
+  REFERENCING FOR EACH ROW
+  DECLARE
+  intervenant_id NUMERIC;
+BEGIN
 
-  /* Stockage des valeurs intermédiaires */
-  TYPE t_valeurs IS TABLE OF FLOAT INDEX BY PLS_INTEGER;
-  TYPE t_tableau IS RECORD (
-    valeurs t_valeurs,
-    total   FLOAT DEFAULT 0
-  );  
-  TYPE t_tableaux       IS TABLE OF t_tableau INDEX BY PLS_INTEGER;
-  t                     t_tableaux;
-  current_id            PLS_INTEGER;
 
-  /* Accès au stockage des valeurs intermédiaires */
-  -- Initialisation des tableaux de valeurs intermédiaires
-  PROCEDURE V_INIT IS
-  BEGIN
-    t.delete;
-  END;
 
-  -- Setter d'une valeur intermédiaire au niveau case
-  PROCEDURE SV( tab_index PLS_INTEGER, id PLS_INTEGER, val FLOAT ) IS
-  BEGIN
-    t(tab_index).valeurs(id) := val;
-    t(tab_index).total       := t(tab_index).total + val;
-  END;
+  IF DELETING THEN
+    SELECT s.intervenant_id INTO intervenant_id FROM service s WHERE s.id = :OLD.service_id;
 
-  -- Setter d'une valeur intermédiaire au niveau tableau
-  PROCEDURE SV( tab_index PLS_INTEGER, val FLOAT ) IS
-  BEGIN
-    t(tab_index).total      := val;
-  END;
+    ose_divers.intervenant_horodatage_service(
+      intervenant_id,
+      :OLD.type_volume_horaire_id,
+      0,
+      :OLD.histo_modificateur_id,
+      :OLD.histo_modification
+    );
 
-  -- Getter d'une valeur intermédiaire, au niveau case
-  FUNCTION GV( tab_index PLS_INTEGER, id PLS_INTEGER DEFAULT NULL ) RETURN FLOAT IS
-  BEGIN
-    IF NOT t.exists(tab_index) THEN RETURN 0; END IF;
-    IF NOT t(tab_index).valeurs.exists( NVL(id,current_id) ) THEN RETURN 0; END IF;
-    RETURN t(tab_index).valeurs( NVL(id,current_id) );
-  END;
+  ELSE
+    SELECT s.intervenant_id INTO intervenant_id FROM service s WHERE s.id = :NEW.service_id;
 
-  -- Getter d'une valeur intermédiaire, au niveau tableau
-  FUNCTION GT( tab_index PLS_INTEGER ) RETURN FLOAT IS
-  BEGIN 
-    IF NOT t.exists(tab_index) THEN RETURN 0; END IF;
-    RETURN t(tab_index).total;
-  END;
+    ose_divers.intervenant_horodatage_service(
+      intervenant_id,
+      :NEW.type_volume_horaire_id,
+      0,
+      :NEW.histo_modificateur_id,
+      :NEW.histo_modification
+    );
 
+  END IF;
 
-  /* Débogage des valeurs intermédiaires */
-  PROCEDURE DEBUG_TAB( tab_index PLS_INTEGER ) IS
-    id PLS_INTEGER;
-  BEGIN
-    ose_test.echo( 'Tableau numéro ' || tab_index );
+END;
 
-    id := ose_formule.d_service.FIRST;
-    LOOP EXIT WHEN id IS NULL;
-      dbms_output.put( 'Service id=' || lpad(id,6,' ') || ', data = ' );
+/
+ALTER TRIGGER "INTERVENANT_HORO_VH" ENABLE;
 
-      current_id := ose_formule.d_volume_horaire.FIRST;
-      LOOP EXIT WHEN current_id IS NULL;
-        dbms_output.put( lpad(gv(tab_index),10,' ') || ' | ' );
-        current_id := ose_formule.d_volume_horaire.NEXT(current_id);
-      END LOOP;
-      dbms_output.new_line;
-      id := ose_formule.d_service.NEXT(id);
-    END LOOP;
+-- INTERVENANT_HORO_VH_REF
+CREATE OR REPLACE TRIGGER "INTERVENANT_HORO_VH_REF"
+  AFTER INSERT OR DELETE OR UPDATE ON "VOLUME_HORAIRE_REF"
+  REFERENCING FOR EACH ROW
+  DECLARE
+  intervenant_id NUMERIC;
+BEGIN
 
-    ose_test.echo( 'TOTAL = ' || LPAD(gt(tab_index), 10, ' ') );
-  END;
 
 
+  IF DELETING THEN
+    SELECT s.intervenant_id INTO intervenant_id FROM service_referentiel s WHERE s.id = :OLD.service_referentiel_id;
 
-  /* Calcul des valeurs intermédiaires */
-  FUNCTION C2_11( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS
-    s  ose_formule.t_service;
-  BEGIN
-    s  := ose_formule.d_service( vh.service_id );
+    ose_divers.intervenant_horodatage_service(
+      intervenant_id,
+      :OLD.type_volume_horaire_id,
+      1,
+      :OLD.histo_modificateur_id,
+      :OLD.histo_modification
+    );
 
-    IF NVL(s.structure_ens_id,0) = NVL(s.structure_aff_id,0) AND s.taux_fc < 1 THEN
-      RETURN vh.heures;
-    ELSE
-      RETURN 0;
-    END IF;
-  END;
+  ELSE
+    SELECT s.intervenant_id INTO intervenant_id FROM service_referentiel s WHERE s.id = :NEW.service_referentiel_id;
 
-  FUNCTION C3_11( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS
-    s  ose_formule.t_service;
-  BEGIN
-    s  := ose_formule.d_service( vh.service_id );
+    ose_divers.intervenant_horodatage_service(
+      intervenant_id,
+      :NEW.type_volume_horaire_id,
+      1,
+      :NEW.histo_modificateur_id,
+      :NEW.histo_modification
+    );
 
-    IF NVL(s.structure_ens_id,0) = NVL(s.structure_aff_id,0) THEN
-      RETURN vh.heures * (s.taux_fi + s.taux_fa);
-    ELSE
-      RETURN 0;
-    END IF;
-  END;
+  END IF;
 
-  FUNCTION C2_12( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS
-    s  ose_formule.t_service;
-  BEGIN
-    s  := ose_formule.d_service( vh.service_id );
+END;
 
-    IF NVL(s.structure_ens_id,0) <> NVL(s.structure_aff_id,0) AND s.taux_fc < 1 THEN
-      RETURN vh.heures;
-    ELSE
-      RETURN 0;
-    END IF;
-  END;
+/
+ALTER TRIGGER "INTERVENANT_HORO_VH_REF" ENABLE;
 
-  FUNCTION C3_12( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS
-    s  ose_formule.t_service;
+-- INTERVENANT_RECHERCHE
+CREATE OR REPLACE TRIGGER "INTERVENANT_RECHERCHE"
+  BEFORE INSERT OR UPDATE OF NOM_USUEL, PRENOM, NOM_PATRONYMIQUE ON "INTERVENANT"
+  REFERENCING FOR EACH ROW
   BEGIN
-    s  := ose_formule.d_service( vh.service_id );
 
-    IF NVL(s.structure_ens_id,0) <> NVL(s.structure_aff_id,0) THEN
-      RETURN vh.heures * (s.taux_fi + s.taux_fa);
-    ELSE
-      RETURN 0;
-    END IF;
-  END;
+  :NEW.critere_recherche := ose_divers.str_reduce( :NEW.nom_usuel || ' ' || :NEW.nom_patronymique || ' ' || :NEW.prenom );
 
-  FUNCTION C2_13( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS
-    s  ose_formule.t_service;
-  BEGIN
-    s  := ose_formule.d_service( vh.service_id );
+END;
 
-    IF NVL(s.structure_ens_id,0) = NVL(s.structure_aff_id,0) AND s.taux_fc = 1 THEN
-      RETURN vh.heures;
-    ELSE
-      RETURN 0;
-    END IF;
-  END;
+/
+ALTER TRIGGER "INTERVENANT_RECHERCHE" ENABLE;
 
-  FUNCTION C3_13( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS
-    s  ose_formule.t_service;
-  BEGIN
-    s  := ose_formule.d_service( vh.service_id );
+-- MISE_EN_PAIEMENT_CK
+CREATE OR REPLACE TRIGGER "MISE_EN_PAIEMENT_CK"
+  BEFORE INSERT OR UPDATE ON "MISE_EN_PAIEMENT"
+  REFERENCING FOR EACH ROW
+  DECLARE
+  has_validation NUMERIC;
+  has_mise_en_paiement NUMERIC;
+BEGIN
 
-    IF NVL(s.structure_ens_id,0) = NVL(s.structure_aff_id,0) THEN
-      RETURN vh.heures * s.taux_fc;
-    ELSE
-      RETURN 0;
-    END IF;
-  END;
+  /* Initialisation des conditions */
+  SELECT COUNT(*) INTO has_validation FROM validation v WHERE
+    v.id = :NEW.validation_id
+    AND v.histo_destruction IS NULL;
 
-  FUNCTION C2_14( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS
-    s  ose_formule.t_service;
-  BEGIN
-    s  := ose_formule.d_service( vh.service_id );
+  IF :NEW.date_mise_en_paiement IS NULL THEN
+    has_mise_en_paiement := 0;
+  ELSE
+    has_mise_en_paiement := 1;
+  END IF;
+
+  /* Mise en place des contraintes */
+  IF :NEW.formule_res_service_id IS NULL AND :NEW.formule_res_service_ref_id IS NULL THEN
+    raise_application_error(-20101, 'La mise en paiement ne correspond à aucun service ou service référentiel.');
+  END IF;
+
+  IF 1 = has_validation AND :NEW.date_validation IS NULL THEN
+    raise_application_error(-20101, 'La validation de la mise en paiement numéro ' || :NEW.id || ' est bien renseignée mais la date de validation n''est pas précisée.');
+  END IF;
+
+  IF :NEW.periode_paiement_id IS NOT NULL AND :NEW.date_mise_en_paiement IS NULL THEN
+    raise_application_error(-20101, 'La mise en paiement numéro ' || :NEW.id || ' est bien effectuée mais la date de mise en paiement n''est pas précisée.');
+  END IF;
+
+--  IF 0 = has_validation AND 1 = has_mise_en_paiement THEN
+--    raise_application_error(-20101, 'La demande de mise en paiement numéro ' || :NEW.id || ' ne peut faire l''objet d''une mise en paiement tant qu''elle n''est pas validée.');
+--  END IF;
 
-    IF NVL(s.structure_ens_id,0) <> NVL(s.structure_aff_id,0) AND s.taux_fc = 1 THEN
-      RETURN vh.heures;
-    ELSE
-      RETURN 0;
-    END IF;
-  END;  
+  IF
+    :OLD.validation_id IS NOT NULL AND :OLD.histo_destruction IS NULL
+    AND 1 = has_validation AND :NEW.histo_destruction IS NOT NULL
+  THEN
+    raise_application_error(-20101, 'Il est impossible de supprimer une mise en paiement validée.');
+  END IF;
+END;
 
-  FUNCTION C3_14( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS
-    s  ose_formule.t_service;
-  BEGIN
-    s  := ose_formule.d_service( vh.service_id );
 
-    IF NVL(s.structure_ens_id,0) <> NVL(s.structure_aff_id,0) THEN
-      RETURN vh.heures * s.taux_fc;
-    ELSE
-      RETURN 0;
-    END IF;
-  END;  
+/
+ALTER TRIGGER "MISE_EN_PAIEMENT_CK" ENABLE;
 
-  FUNCTION C2_15( fr ose_formule.t_volume_horaire_ref ) RETURN FLOAT IS
-    f ose_formule.t_service_ref;
-  BEGIN
-    f := ose_formule.d_service_ref( fr.service_referentiel_id );
+-- MISE_EN_PAIEMENT_DEL_CK
+CREATE OR REPLACE TRIGGER "MISE_EN_PAIEMENT_DEL_CK"
+  BEFORE DELETE ON "MISE_EN_PAIEMENT"
+  REFERENCING FOR EACH ROW
+  DECLARE
+  has_validation NUMERIC;
+BEGIN
 
-    IF NVL(ose_formule.d_intervenant.structure_id,0) = NVL(f.structure_id,0) THEN
-      RETURN fr.heures;
-    ELSE
-      RETURN 0;
-    END IF;
-  END;
+  /* Initialisation des conditions */
+  SELECT COUNT(*) INTO has_validation FROM validation v WHERE
+    v.id = :NEW.validation_id
+    AND v.histo_destruction IS NULL;
 
-  FUNCTION C2_16( fr ose_formule.t_volume_horaire_ref ) RETURN FLOAT IS
-    f ose_formule.t_service_ref;
-  BEGIN
-    f := ose_formule.d_service_ref( fr.service_referentiel_id );
+  /* Mise en place des contraintes */
+  IF
+    1 = has_validation AND :OLD.histo_destruction IS NOT NULL
+  THEN
+    raise_application_error(-20101, 'Il est impossible de supprimer une mise en paiement validée.');
+  END IF;
+END;
 
-    IF NVL(ose_formule.d_intervenant.structure_id,0) <> NVL(f.structure_id,0) AND NVL(f.structure_id,0) <> ose_divers.STRUCTURE_UNIV_GET_ID THEN
-      RETURN fr.heures;
-    ELSE
-      RETURN 0;
-    END IF;
-  END;
 
-  FUNCTION C2_17( fr ose_formule.t_volume_horaire_ref ) RETURN FLOAT IS
-    f ose_formule.t_service_ref;
-  BEGIN
-    f := ose_formule.d_service_ref( fr.service_referentiel_id );
+/
+ALTER TRIGGER "MISE_EN_PAIEMENT_DEL_CK" ENABLE;
 
-    IF NVL(f.structure_id,0) = ose_divers.STRUCTURE_UNIV_GET_ID THEN
-      RETURN fr.heures;
-    ELSE
-      RETURN 0;
-    END IF;
-  END;
+-- SERVICE_CK
+CREATE OR REPLACE TRIGGER "SERVICE_CK"
+  BEFORE INSERT OR UPDATE ON "SERVICE"
+  REFERENCING FOR EACH ROW
+  DECLARE
+  etablissement integer;
+  res integer;
+BEGIN
 
-  FUNCTION C2_21( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS
-  BEGIN
-    RETURN gv(11) * vh.taux_service_du;
-  END;
+  etablissement := OSE_PARAMETRE.GET_ETABLISSEMENT();
 
-  FUNCTION C2_22( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS
-  BEGIN
-    RETURN gv(12) * vh.taux_service_du;
-  END;
+  IF :NEW.etablissement_id = etablissement AND :NEW.element_pedagogique_id IS NULL THEN
+    raise_application_error(-20101, 'Un enseignement doit obligatoirement être renseigné si le service est réalisé en interne.');
+  END IF;
 
-  FUNCTION C2_23( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS
-  BEGIN
-    RETURN gv(13) * vh.taux_service_du;
-  END;
 
-  FUNCTION C2_24( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS
-  BEGIN
-    RETURN gv(14) * vh.taux_service_du;
-  END;
+  IF :NEW.etablissement_id <> etablissement AND OSE_DIVERS.INTERVENANT_HAS_PRIVILEGE(:NEW.intervenant_id, 'saisie_service_exterieur') = 0 THEN
+    raise_application_error(-20101, 'Les intervenants vacataires n''ont pas la possibilité de renseigner des enseignements pris à l''extérieur.');
+  END IF;
 
-  FUNCTION C2_25( fr ose_formule.t_volume_horaire_ref ) RETURN FLOAT IS
-  BEGIN
-    RETURN gv(15);
-  END;
+  IF :NEW.intervenant_id IS NOT NULL AND :NEW.element_pedagogique_id IS NOT NULL THEN
+    SELECT
+      count(*) INTO res
+    FROM
+      intervenant i,
+      element_pedagogique ep
+    WHERE
+          i.id        = :NEW.intervenant_id
+      AND ep.id       = :NEW.element_pedagogique_id
+      AND ep.annee_id = i.annee_id
+    ;
 
-  FUNCTION C2_26( fr ose_formule.t_volume_horaire_ref ) RETURN FLOAT IS
-  BEGIN
-    RETURN gv(16);
-  END;
+    IF 0 = res THEN -- années non concomitantes
+      raise_application_error(-20101, 'L''année de l''intervenant ne correspond pas à l''année de l''élément pédagogique.');
+    END IF;
+  END IF;
 
-  FUNCTION C2_27( fr ose_formule.t_volume_horaire_ref ) RETURN FLOAT IS
-  BEGIN
-    RETURN gv(17);
-  END;
+END;
 
-  FUNCTION C2_31 RETURN FLOAT IS
-  BEGIN
-    RETURN GREATEST( ose_formule.d_resultat.service_du - gt(21), 0 );
-  END;
+/
+ALTER TRIGGER "SERVICE_CK" ENABLE;
 
-  FUNCTION C2_32 RETURN FLOAT IS
-  BEGIN
-    RETURN GREATEST( gt(31) - gt(22), 0 );
-  END;
+-- SERVICE_HISTO_CK
+CREATE OR REPLACE TRIGGER "SERVICE_HISTO_CK"
+  BEFORE UPDATE OF intervenant_id, element_pedagogique_id, etablissement_id ON "SERVICE"
+  REFERENCING FOR EACH ROW
+  DECLARE
+  has_validation integer;
+BEGIN
+  SELECT COUNT(*) INTO has_validation
+  FROM
+    VALIDATION_VOL_HORAIRE vvh
+    JOIN validation v ON v.id = VVH.VALIDATION_ID
+    JOIN volume_horaire vh ON vh.id = VVH.VOLUME_HORAIRE_ID
+  WHERE
+    V.HISTO_DESTRUCTION IS NULL
+    AND vh.service_ID = :NEW.ID;
 
-  FUNCTION C2_33 RETURN FLOAT IS
-  BEGIN
-    RETURN GREATEST( gt(32) - gt(23), 0 );
-  END;
+  IF 0 <> has_validation THEN
+    raise_application_error(-20101, 'Il est impossible de modifier ou supprimer un service dont des heures ont déjà été validées.');
+  END IF;
 
-  FUNCTION C2_34 RETURN FLOAT IS
-  BEGIN
-    RETURN GREATEST( gt(33) - gt(24), 0 );
-  END;
+END;
 
-  FUNCTION C2_35 RETURN FLOAT IS
-  BEGIN
-    RETURN GREATEST( gt(34) - gt(25), 0 );
-  END;
+/
+ALTER TRIGGER "SERVICE_HISTO_CK" ENABLE;
 
-  FUNCTION C2_36 RETURN FLOAT IS
+-- SERVICE_HISTO_CK_S
+CREATE OR REPLACE TRIGGER "SERVICE_HISTO_CK_S"
+  AFTER UPDATE ON "SERVICE"
   BEGIN
-    RETURN GREATEST( gt(35) - gt(26), 0 );
-  END;
+ -- En cas de restauration d'un service, on ne restaure pas les historiques de volumes horaires pour ne pas récussiter d'éventuels volume horaires indésirables car préalablement supprimés
+ FOR s IN (
 
-  FUNCTION C2_37 RETURN FLOAT IS
-  BEGIN
-    RETURN GREATEST( gt(36) - gt(27), 0 );
-  END;
+    SELECT *
+    FROM
+      service s
+    WHERE
+      s.histo_destruction IS NOT NULL AND s.histo_destruction > SYSDATE - 1
 
-  FUNCTION C2_41( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS
-  BEGIN
-    IF gt(21) <> 0 THEN
-      RETURN gv(21) / gt(21);
-    ELSE
-      RETURN 0;
-    END IF;
-  END;
+  ) LOOP
 
-  FUNCTION C2_42( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS
-  BEGIN
-    IF gt(22) <> 0 THEN
-      RETURN gv(22) / gt(22);
-    ELSE
-      RETURN 0;
-    END IF;
-  END;
+    UPDATE VOLUME_HORAIRE SET histo_destruction = s.histo_destruction, histo_destructeur_id = s.histo_destructeur_id WHERE service_id = s.id AND VOLUME_HORAIRE.histo_destruction IS NULL;
 
-  FUNCTION C2_43( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS
-  BEGIN
-    IF gt(23) <> 0 THEN
-      RETURN gv(23) / gt(23);
-    ELSE
-      RETURN 0;
-    END IF;
-  END;
+  END LOOP;
 
-  FUNCTION C2_44( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS
-  BEGIN
-    IF gt(24) <> 0 THEN
-      RETURN gv(24) / gt(24);
-    ELSE
-      RETURN 0;
-    END IF;
-  END;
+END;
 
-  FUNCTION C2_45( fr ose_formule.t_volume_horaire_ref ) RETURN FLOAT IS
-  BEGIN
-    IF gt(25) <> 0 THEN
-      RETURN gv(25) / gt(25);
-    ELSE
-      RETURN 0;
-    END IF;
-  END;
+/
+ALTER TRIGGER "SERVICE_HISTO_CK_S" ENABLE;
 
-  FUNCTION C2_46( fr ose_formule.t_volume_horaire_ref ) RETURN FLOAT IS
-  BEGIN
-    IF gt(26) <> 0 THEN
-      RETURN gv(26) / gt(26);
-    ELSE
-      RETURN 0;
-    END IF;
-  END;
+-- SERVICE_REFERENTIEL_HISTO_CK
+CREATE OR REPLACE TRIGGER "SERVICE_REFERENTIEL_HISTO_CK"
+  BEFORE UPDATE OF FONCTION_ID, INTERVENANT_ID, STRUCTURE_ID, HISTO_DESTRUCTION ON "SERVICE_REFERENTIEL"
+  REFERENCING FOR EACH ROW
+  DECLARE
+  has_validation integer;
+BEGIN
+  SELECT COUNT(*) INTO has_validation
+  FROM
+    VALIDATION_VOL_HORAIRE_REF vvh
+    JOIN validation v ON v.id = VVH.VALIDATION_ID
+    JOIN volume_horaire_ref vh ON vh.id = vvh.volume_horaire_ref_id
+  WHERE
+    V.HISTO_DESTRUCTION IS NULL
+    AND vh.service_referentiel_id = :OLD.ID;
+
+  IF 0 <> has_validation THEN
+    raise_application_error(-20101, 'Il est impossible de modifier ou supprimer du référentiel dont des heures ont déjà été validées.');
+  END IF;
 
-  FUNCTION C2_47( fr ose_formule.t_volume_horaire_ref ) RETURN FLOAT IS
-  BEGIN
-    IF gt(27) <> 0 THEN
-      RETURN gv(27) / gt(27);
-    ELSE
-      RETURN 0;
-    END IF;
-  END;
+END;
 
-  FUNCTION C2_51( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS
-  BEGIN
-    RETURN LEAST( ose_formule.d_resultat.service_du, gt(21) ) * gv(41);
-  END;
+/
+ALTER TRIGGER "SERVICE_REFERENTIEL_HISTO_CK" ENABLE;
 
-  FUNCTION C2_52( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS
+-- T_CRG_ETAPE
+CREATE OR REPLACE TRIGGER "T_CRG_ETAPE"
+  AFTER INSERT OR DELETE OR UPDATE OF HISTO_DESTRUCTION ON "ETAPE"
+  REFERENCING FOR EACH ROW
   BEGIN
-    RETURN LEAST( gt(31), gt(22) ) * gv(42);
-  END;
+  IF NOT UNICAEN_TBL.ACTIV_TRIGGERS THEN RETURN; END IF;
 
-  FUNCTION C2_53( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS
-  BEGIN
-    RETURN LEAST( gt(32), gt(23) ) * gv(43);
-  END;
+  IF DELETING THEN
+    UNICAEN_TBL.DEMANDE_CALCUL( 'chargens', 'etape_id = ' || :OLD.id || ' OR etape_ens_id = ' || :OLD.id );
+  ELSE
+    UNICAEN_TBL.DEMANDE_CALCUL( 'chargens', 'etape_id = ' || :NEW.id || ' OR etape_ens_id = ' || :NEW.id );
+  END IF;
 
-  FUNCTION C2_54( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS
-  BEGIN
-    RETURN LEAST( gt(33), gt(24) ) * gv(44);
-  END;
+END;
 
-  FUNCTION C2_55( fr ose_formule.t_volume_horaire_ref ) RETURN FLOAT IS
-  BEGIN
-    RETURN LEAST( gt(34), gt(25) ) * gv(45);
-  END;
 
-  FUNCTION C2_56( fr ose_formule.t_volume_horaire_ref ) RETURN FLOAT IS
-  BEGIN
-    RETURN LEAST( gt(35), gt(26) ) * gv(46);
-  END;
+/
+ALTER TRIGGER "T_CRG_ETAPE" ENABLE;
 
-  FUNCTION C2_57( fr ose_formule.t_volume_horaire_ref ) RETURN FLOAT IS
+-- T_CRG_ETAPE_S
+CREATE OR REPLACE TRIGGER "T_CRG_ETAPE_S"
+  AFTER INSERT OR DELETE OR UPDATE ON "ETAPE"
   BEGIN
-    RETURN LEAST( gt(36), gt(27) ) * gv(47);
-  END;  
+  UNICAEN_TBL.CALCULER_DEMANDES;
+END;
 
-  FUNCTION C2_61( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS
-    s  ose_formule.t_service;
-  BEGIN
-    s  := ose_formule.d_service( vh.service_id );
 
-    RETURN gv(51) * s.taux_fi;
-  END;
+/
+ALTER TRIGGER "T_CRG_ETAPE_S" ENABLE;
 
-  FUNCTION C3_61( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS
-    s  ose_formule.t_service;
+-- T_CRG_SCENARIO_NOEUD
+CREATE OR REPLACE TRIGGER "T_CRG_SCENARIO_NOEUD"
+  AFTER INSERT OR DELETE OR UPDATE OF SCENARIO_ID, NOEUD_ID, HISTO_DESTRUCTION ON "SCENARIO_NOEUD"
+  REFERENCING FOR EACH ROW
   BEGIN
-    s  := ose_formule.d_service( vh.service_id );
+  IF NOT UNICAEN_TBL.ACTIV_TRIGGERS THEN RETURN; END IF;
 
-    IF s.taux_fi + s.taux_fa > 0 THEN
-      RETURN gv(51) / (s.taux_fi + s.taux_fa) * s.taux_fi;
-    ELSE
-      RETURN 0;
-    END IF;
-  END;
+  IF DELETING THEN
+    UNICAEN_TBL.DEMANDE_CALCUL( 'chargens', unicaen_tbl.make_params('noeud_id', :OLD.noeud_id, 'scenario_id', :OLD.scenario_id ) );
+  ELSE
+    UNICAEN_TBL.DEMANDE_CALCUL( 'chargens', unicaen_tbl.make_params('noeud_id', :NEW.noeud_id, 'scenario_id', :NEW.scenario_id ) );
+  END IF;
 
-  FUNCTION C2_62( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS
-    s  ose_formule.t_service;
-  BEGIN
-    s  := ose_formule.d_service( vh.service_id );
+END;
 
-    RETURN gv(52) * s.taux_fi;
-  END;
 
-  FUNCTION C3_62( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS
-    s  ose_formule.t_service;
+/
+ALTER TRIGGER "T_CRG_SCENARIO_NOEUD" ENABLE;
+
+-- T_CRG_SCENARIO_NOEUD_EFFECTIF
+CREATE OR REPLACE TRIGGER "T_CRG_SCENARIO_NOEUD_EFFECTIF"
+  AFTER INSERT OR DELETE OR UPDATE OF SCENARIO_NOEUD_ID, TYPE_HEURES_ID, EFFECTIF, ETAPE_ID ON "SCENARIO_NOEUD_EFFECTIF"
+  REFERENCING FOR EACH ROW
   BEGIN
-    s  := ose_formule.d_service( vh.service_id );
+  IF NOT UNICAEN_TBL.ACTIV_TRIGGERS THEN RETURN; END IF;
 
-    IF s.taux_fi + s.taux_fa > 0 THEN
-      RETURN gv(52) / (s.taux_fi + s.taux_fa) * s.taux_fi;
-    ELSE
-      RETURN 0;
+  FOR p IN (
+
+    SELECT
+      sn.noeud_id, sn.scenario_id, n.etape_id
+    FROM
+      scenario_noeud sn
+      JOIN noeud n ON n.id = sn.noeud_id
+    WHERE
+      sn.id = :OLD.scenario_noeud_id OR sn.id = :NEW.scenario_noeud_id
+
+  ) LOOP
+
+    IF p.etape_id IS NOT NULL THEN
+      UNICAEN_TBL.DEMANDE_CALCUL( 'chargens', unicaen_tbl.make_params('etape_ens_id', p.etape_id, 'scenario_id', p.scenario_id ) );
     END IF;
-  END;
+    UNICAEN_TBL.DEMANDE_CALCUL( 'chargens', unicaen_tbl.make_params('noeud_id', p.noeud_id, 'scenario_id', p.scenario_id ) );
 
-  FUNCTION C2_71( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS
-    s  ose_formule.t_service;
-  BEGIN
-    s  := ose_formule.d_service( vh.service_id );
+  END LOOP;
 
-    RETURN gv(51) * s.taux_fa;
-  END;
+END;
 
-  FUNCTION C3_71( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS
-    s  ose_formule.t_service;
-  BEGIN
-    s  := ose_formule.d_service( vh.service_id );
 
-    IF s.taux_fi + s.taux_fa > 0 THEN
-      RETURN gv(51) / (s.taux_fi + s.taux_fa) * s.taux_fa;
-    ELSE
-      RETURN 0;
-    END IF;
-  END;
+/
+ALTER TRIGGER "T_CRG_SCENARIO_NOEUD_EFFECTIF" ENABLE;
 
-  FUNCTION C2_72( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS
-    s  ose_formule.t_service;
+-- T_CRG_SCENARIO_NOEUD_SEUIL
+CREATE OR REPLACE TRIGGER "T_CRG_SCENARIO_NOEUD_SEUIL"
+  AFTER INSERT OR DELETE OR UPDATE OF SCENARIO_NOEUD_ID, TYPE_INTERVENTION_ID, OUVERTURE, DEDOUBLEMENT, ASSIDUITE ON "SCENARIO_NOEUD_SEUIL"
+  REFERENCING FOR EACH ROW
   BEGIN
-    s  := ose_formule.d_service( vh.service_id );
+  IF NOT UNICAEN_TBL.ACTIV_TRIGGERS THEN RETURN; END IF;
 
-    RETURN gv(52) * s.taux_fa;
-  END;
+  FOR p IN (
 
-  FUNCTION C3_72( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS
-    s  ose_formule.t_service;
-  BEGIN
-    s  := ose_formule.d_service( vh.service_id );
+    SELECT
+      sn.noeud_id, sn.scenario_id, n.etape_id
+    FROM
+      scenario_noeud sn
+      JOIN noeud n ON n.id = sn.noeud_id
+    WHERE
+      sn.id = :OLD.scenario_noeud_id OR sn.id = :NEW.scenario_noeud_id
 
-    IF s.taux_fi + s.taux_fa > 0 THEN
-      RETURN gv(52) / (s.taux_fi + s.taux_fa) * s.taux_fa;
-    ELSE
-      RETURN 0;
+  ) LOOP
+
+    IF p.etape_id IS NOT NULL THEN
+      UNICAEN_TBL.DEMANDE_CALCUL( 'chargens', unicaen_tbl.make_params('etape_ens_id', p.etape_id, 'scenario_id', p.scenario_id ) );
     END IF;
-  END;
+    UNICAEN_TBL.DEMANDE_CALCUL( 'chargens', unicaen_tbl.make_params('noeud_id', p.noeud_id, 'scenario_id', p.scenario_id ) );
 
-  FUNCTION C2_81( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS
-    s  ose_formule.t_service;
-  BEGIN
-    s  := ose_formule.d_service( vh.service_id );
+  END LOOP;
 
-    RETURN gv(51) * s.taux_fc;
-  END;
+END;
 
-  FUNCTION C2_82( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS
-    s  ose_formule.t_service;
-  BEGIN
-    s  := ose_formule.d_service( vh.service_id );
 
-    RETURN gv(52) * s.taux_fc;
-  END;
+/
+ALTER TRIGGER "T_CRG_SCENARIO_NOEUD_SEUIL" ENABLE;
 
-  FUNCTION C2_83( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS
-    s  ose_formule.t_service;
+-- T_CRG_TYPE_INTERVENTION
+CREATE OR REPLACE TRIGGER "T_CRG_TYPE_INTERVENTION"
+  AFTER INSERT OR DELETE OR UPDATE ON "TYPE_INTERVENTION"
   BEGIN
-    s  := ose_formule.d_service( vh.service_id );
+  UNICAEN_TBL.CALCULER_DEMANDES;
+END;
 
-    RETURN gv(53) * s.taux_fc;
-  END;
 
-  FUNCTION C3_83( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS
-  BEGIN
-    RETURN gv(53);
-  END;
+/
+ALTER TRIGGER "T_CRG_TYPE_INTERVENTION" ENABLE;
 
-  FUNCTION C2_84( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS
-    s  ose_formule.t_service;
+-- T_CRG_VOLUME_HORAIRE_ENS
+CREATE OR REPLACE TRIGGER "T_CRG_VOLUME_HORAIRE_ENS"
+  AFTER INSERT OR DELETE OR UPDATE OF ELEMENT_PEDAGOGIQUE_ID, TYPE_INTERVENTION_ID, HEURES, HISTO_DESTRUCTION ON "VOLUME_HORAIRE_ENS"
+  REFERENCING FOR EACH ROW
   BEGIN
-    s  := ose_formule.d_service( vh.service_id );
+  IF NOT UNICAEN_TBL.ACTIV_TRIGGERS THEN RETURN; END IF;
 
-    RETURN gv(54) * s.taux_fc;
-  END;
+  IF DELETING THEN
+    UNICAEN_TBL.DEMANDE_CALCUL( 'chargens', unicaen_tbl.make_params('element_pedagogique_id', :OLD.element_pedagogique_id ) );
+  ELSE
+    UNICAEN_TBL.DEMANDE_CALCUL( 'chargens', unicaen_tbl.make_params('element_pedagogique_id', :NEW.element_pedagogique_id ) );
+  END IF;
 
-  FUNCTION C3_84( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS
-  BEGIN
-    RETURN gv(54);
-  END;
+END;
 
-  FUNCTION C2_91( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS
-  BEGIN
-    IF gv(21) <> 0 THEN
-      RETURN gv(51) / gv(21);
-    ELSE
-      RETURN 0;
-    END IF;
-  END;
+/
+ALTER TRIGGER "T_CRG_VOLUME_HORAIRE_ENS" ENABLE;
 
-  FUNCTION C2_92( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS
-  BEGIN
-    IF gv(22) <> 0 THEN
-      RETURN gv(52) / gv(22);
-    ELSE
-      RETURN 0;
-    END IF;
-  END;
+-- VALIDATION_CK
+CREATE OR REPLACE TRIGGER "VALIDATION_CK"
+  BEFORE DELETE OR UPDATE OF HISTO_DESTRUCTION, HISTO_DESTRUCTEUR_ID ON "VALIDATION"
+  REFERENCING FOR EACH ROW
+  DECLARE
+  v validation%rowtype;
+  err varchar2(500) default null;
+  pragma autonomous_transaction;
+BEGIN
+
+  IF deleting THEN
+    v.id                  := :OLD.id;
+    v.type_validation_id  := :OLD.type_validation_id;
+    v.intervenant_id      := :OLD.intervenant_id;
+    v.structure_id        := :OLD.structure_id;
+
+
+  ELSIF :OLD.histo_destruction IS NULL AND :NEW.histo_destruction IS NOT NULL THEN
+
+    v.id                  := :NEW.id;
+    v.type_validation_id  := :NEW.type_validation_id;
+    v.intervenant_id      := :NEW.intervenant_id;
+    v.structure_id        := :NEW.structure_id;
 
-  FUNCTION C2_93( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS
-  BEGIN
-    IF gv(23) <> 0 THEN
-      RETURN gv(53) / gv(23);
-    ELSE
-      RETURN 0;
-    END IF;
-  END;
+  END IF;
 
-  FUNCTION C2_94( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS
-  BEGIN
-    IF gv(24) <> 0 THEN
-      RETURN gv(54) / gv(24);
-    ELSE
-      RETURN 0;
-    END IF;
-  END;
+  err := ose_validation.can_devalider( v );
 
-  FUNCTION C2_95( fr ose_formule.t_volume_horaire_ref ) RETURN FLOAT IS
-  BEGIN
-    IF gv(25) <> 0 THEN
-      RETURN gv(55) / gv(25);
-    ELSE
-      RETURN 0;
-    END IF;
-  END;
+  IF err is not null THEN
+    raise_application_error(-20101, err);
+  END IF;
 
-  FUNCTION C2_96( fr ose_formule.t_volume_horaire_ref ) RETURN FLOAT IS
-  BEGIN
-    IF gv(26) <> 0 THEN
-      RETURN gv(56) / gv(26);
-    ELSE
-      RETURN 0;
-    END IF;
-  END;
+END;
 
-  FUNCTION C2_97( fr ose_formule.t_volume_horaire_ref ) RETURN FLOAT IS
-  BEGIN
-    IF gv(27) <> 0 THEN
-      RETURN gv(57) / gv(27);
-    ELSE
-      RETURN 0;
-    END IF;
-  END;
+/
+ALTER TRIGGER "VALIDATION_CK" ENABLE;
 
-  FUNCTION C2_101( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS
-  BEGIN
-    IF gt(37) <> 0 THEN
-      RETURN 0;
-    ELSE
-      RETURN 1 - gv(91);
-    END IF;
-  END;
+-- VALIDATION_VOL_HORAIRE_CK
+CREATE OR REPLACE TRIGGER "VALIDATION_VOL_HORAIRE_CK"
+  BEFORE INSERT OR DELETE OR UPDATE ON "VALIDATION_VOL_HORAIRE"
+  REFERENCING FOR EACH ROW
+  DECLARE
+  contrat_blinde NUMERIC;
+  donnee_historisee NUMERIC;
+  pragma autonomous_transaction;
+BEGIN
 
-  FUNCTION C2_102( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS
-  BEGIN
-    IF gt(37) <> 0 THEN
-      RETURN 0;
-    ELSE
-      RETURN 1 - gv(92);
-    END IF;
-  END;
+  if updating or deleting then
 
-  FUNCTION C2_103( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS
-  BEGIN
-    IF gt(37) <> 0 THEN
-      RETURN 0;
-    ELSE
-      RETURN 1 - gv(93);
-    END IF;
-  END;
+    SELECT count(*) INTO contrat_blinde
+    FROM volume_horaire vh
+    JOIN contrat c ON c.id = vh.contrat_id AND c.histo_destruction IS NULL
+    WHERE vh.id = :OLD.volume_horaire_id;
 
-  FUNCTION C2_104( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS
-  BEGIN
-    IF gt(37) <> 0 THEN
-      RETURN 0;
-    ELSE
-      RETURN 1 - gv(94);
+    -- Si des volumes horaires ont déjà fait l'objet de contrats alors pas de dévalidation possible des heures
+    IF contrat_blinde = 1 THEN
+      raise_application_error(-20101, 'La dévalidation est impossible car un contrat a déjà été édité sur la base de ces heures.');
     END IF;
-  END;
 
-  FUNCTION C2_105( fr ose_formule.t_volume_horaire_ref ) RETURN FLOAT IS
-  BEGIN
-    IF gt(37) <> 0 THEN
-      RETURN 0;
-    ELSE
-      RETURN 1 - gv(95);
-    END IF;
-  END;
+  else
 
-  FUNCTION C2_106( fr ose_formule.t_volume_horaire_ref ) RETURN FLOAT IS
-  BEGIN
-    IF gt(37) <> 0 THEN
-      RETURN 0;
-    ELSE
-      RETURN 1 - gv(96);
-    END IF;
-  END;
+    -- si on en trouve un service, EP, étape ou VH historisé, problème
+    select count(*) into donnee_historisee
+    from service s
+    join element_pedagogique ep on s.element_pedagogique_id = ep.id
+    --join etape e on ep.etape_id = e.id
+    join volume_horaire vh on vh.service_id = s.id
+    where
+      vh.id = :NEW.volume_horaire_id
+      AND (
+        s.histo_destructeur_id is not null
+        or ep.histo_destructeur_id is not null
+        --or e.histo_destructeur_id is not null
+        or (vh.histo_destructeur_id is not null)
+      )
+      AND vh.heures > 0;
 
-  FUNCTION C2_107( fr ose_formule.t_volume_horaire_ref ) RETURN FLOAT IS
-  BEGIN
-    IF gt(37) <> 0 THEN
-      RETURN 0;
-    ELSE
-      RETURN 1 - gv(97);
+    IF donnee_historisee > 0 THEN
+      raise_application_error(-20101, :NEW.volume_horaire_id || ' La validation est impossible car elle porte sur des données historisées (supprimées).');
     END IF;
-  END;
 
-  FUNCTION C2_111( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS
-  BEGIN
-    RETURN gv(11) * vh.taux_service_compl * gv(101);
-  END;
+  end if;
 
-  FUNCTION C2_112( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS
-  BEGIN
-    RETURN gv(12) * vh.taux_service_compl * gv(102);
-  END;
+END;
 
-  FUNCTION C2_113( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS
-  BEGIN
-    RETURN gv(13) * vh.taux_service_compl * gv(103);
-  END;
 
-  FUNCTION C2_114( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS
-  BEGIN
-    RETURN gv(14) * vh.taux_service_compl * gv(104);
-  END;
+/
+ALTER TRIGGER "VALIDATION_VOL_HORAIRE_CK" ENABLE;
 
-  FUNCTION C2_115( fr ose_formule.t_volume_horaire_ref ) RETURN FLOAT IS
+-- VOLUME_HORAIRE_CK
+CREATE OR REPLACE TRIGGER "VOLUME_HORAIRE_CK"
+  BEFORE INSERT OR UPDATE ON "VOLUME_HORAIRE"
+  REFERENCING FOR EACH ROW
+  DECLARE
+    has_validation NUMERIC;
+    modified       BOOLEAN;
+    intervenant_id NUMERIC;
   BEGIN
-    RETURN gv(15) * gv(105);
-  END;
+    IF :OLD.motif_non_paiement_id IS NULL AND :NEW.motif_non_paiement_id IS NOT NULL THEN
+      SELECT s.intervenant_id INTO intervenant_id FROM service s WHERE s.id = :NEW.service_id;
+      IF 0 = ose_divers.intervenant_has_privilege( intervenant_id, 'saisie_motif_non_paiement') THEN
+        raise_application_error(-20101, 'Il est impossible d''associer un motif de non paiement à cet intervenant.');
+      END IF;
+    END IF;
 
-  FUNCTION C2_116( fr ose_formule.t_volume_horaire_ref ) RETURN FLOAT IS
-  BEGIN
-    RETURN gv(16) * gv(106);
-  END;
+    IF :NEW.motif_non_paiement_id IS NOT NULL AND :NEW.contrat_id IS NOT NULL THEN
+      raise_application_error(-20101, 'Les heures ayant un motif de non paiement ne peuvent faire l''objet d''une contractualisation');
+    END IF;
 
-  FUNCTION C2_117( fr ose_formule.t_volume_horaire_ref ) RETURN FLOAT IS
-  BEGIN
-    RETURN gv(17) * gv(107);
-  END;
+    modified :=
+      NVL(:NEW.id,0) <> NVL(:OLD.id,0)
+      OR NVL(:NEW.type_volume_horaire_id,0) <> NVL(:OLD.type_volume_horaire_id,0)
+      OR NVL(:NEW.service_id,0) <> NVL(:OLD.service_id,0)
+      OR NVL(:NEW.periode_id,0) <> NVL(:OLD.periode_id,0)
+      OR NVL(:NEW.type_intervention_id,0) <> NVL(:OLD.type_intervention_id,0)
+      OR NVL(:NEW.heures,0) <> NVL(:OLD.heures,0)
+      OR NVL(:NEW.motif_non_paiement_id,0) <> NVL(:OLD.motif_non_paiement_id,0)
+      OR NVL(:NEW.histo_creation,SYSDATE) <> NVL(:OLD.histo_creation,SYSDATE)
+      OR NVL(:NEW.histo_createur_id,0) <> NVL(:OLD.histo_createur_id,0)
+      OR NVL(:NEW.histo_destruction,SYSDATE) <> NVL(:OLD.histo_destruction,SYSDATE)
+      OR NVL(:NEW.histo_destructeur_id,0) <> NVL(:OLD.histo_destructeur_id,0);
 
-  FUNCTION C2_123( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS
-    s  ose_formule.t_service;
-  BEGIN
-    s  := ose_formule.d_service( vh.service_id );
+    SELECT
+      COUNT(*)
+    INTO
+      has_validation
+    FROM
+      VALIDATION_VOL_HORAIRE vvh
+      JOIN validation v ON v.id = VVH.VALIDATION_ID
+    WHERE
+      V.HISTO_DESTRUCTION IS NULL
+      AND vvh.VOLUME_HORAIRE_ID  = :NEW.ID;
 
-    IF s.taux_fc = 1 THEN
-      RETURN gv(113) * s.ponderation_service_compl;
-    ELSE
-      RETURN gv(113);
+    IF modified AND 0 <> has_validation THEN
+      raise_application_error(-20101, 'Il est impossible de modifier des heures déjà validées.');
     END IF;
   END;
 
-  FUNCTION C3_123( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS
-    s  ose_formule.t_service;
-  BEGIN
-    s  := ose_formule.d_service( vh.service_id );
+/
+ALTER TRIGGER "VOLUME_HORAIRE_CK" ENABLE;
 
-    IF s.taux_fc > 0 THEN
-      RETURN gv(113) * s.ponderation_service_compl;
-    ELSE
-      RETURN gv(113);
-    END IF;
-  END;
+-- VOLUME_HORAIRE_DEL_CK
+CREATE OR REPLACE TRIGGER "VOLUME_HORAIRE_DEL_CK"
+  BEFORE DELETE ON "VOLUME_HORAIRE"
+  REFERENCING FOR EACH ROW
+  DECLARE
+  has_validation INTEGER;
+  pragma autonomous_transaction;
+BEGIN
 
-  FUNCTION C2_124( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS
-    s  ose_formule.t_service;
-  BEGIN
-    s  := ose_formule.d_service( vh.service_id );
+  SELECT COUNT(*) INTO has_validation
+  FROM
+    VALIDATION_VOL_HORAIRE vvh
+    JOIN validation v ON v.id = VVH.VALIDATION_ID
+  WHERE
+    V.HISTO_DESTRUCTION IS NULL
+    AND vvh.VOLUME_HORAIRE_ID = :OLD.ID;
 
-    IF s.taux_fc = 1 THEN
-      RETURN gv(114) * s.ponderation_service_compl;
-    ELSE
-      RETURN gv(114);
-    END IF;    
-  END;
+  IF 0 <> has_validation THEN
+    raise_application_error(-20101, 'Il est impossible de supprimer des heures déjà validées.');
+  END IF;
 
-  FUNCTION C3_124( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS
-    s  ose_formule.t_service;
+END;
+
+/
+ALTER TRIGGER "VOLUME_HORAIRE_DEL_CK" ENABLE;
+
+-- VOLUME_HORAIRE_REF_CK
+CREATE OR REPLACE TRIGGER "VOLUME_HORAIRE_REF_CK"
+  BEFORE UPDATE ON "VOLUME_HORAIRE_REF"
+  REFERENCING FOR EACH ROW
+  DECLARE
+    has_validation NUMERIC;
   BEGIN
-    s  := ose_formule.d_service( vh.service_id );
 
-    IF s.taux_fc > 0 THEN
-      RETURN gv(114) * s.ponderation_service_compl;
-    ELSE
-      RETURN gv(114);
-    END IF;
-  END;
+  SELECT
+    COUNT(*)
+  INTO
+    has_validation
+  FROM
+    VALIDATION_VOL_HORAIRE_REF vvh
+    JOIN validation v ON v.id = VVH.VALIDATION_ID
+  WHERE
+    V.HISTO_DESTRUCTION IS NULL
+    AND vvh.VOLUME_HORAIRE_REF_ID  = :NEW.ID;
 
-  FUNCTION C2_131( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS
-    s  ose_formule.t_service;
-  BEGIN
-    s  := ose_formule.d_service( vh.service_id );
+  IF 0 <> has_validation THEN
+    raise_application_error(-20101, 'Il est impossible de modifier des heures référentiel déjà validées.');
+  END IF;
+END;
 
-    RETURN gv(111) * s.taux_fi;
-  END;
+/
+ALTER TRIGGER "VOLUME_HORAIRE_REF_CK" ENABLE;
 
-  FUNCTION C3_131( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS
-    s  ose_formule.t_service;
+-- VOLUME_HORAIRE_REF_DEL_CK
+CREATE OR REPLACE TRIGGER "VOLUME_HORAIRE_REF_DEL_CK"
+  BEFORE DELETE ON "VOLUME_HORAIRE_REF"
+  REFERENCING FOR EACH ROW
+  DECLARE has_validation INTEGER;
+  pragma autonomous_transaction;
   BEGIN
-    s  := ose_formule.d_service( vh.service_id );
-
-    IF s.taux_fi + s.taux_fa > 0 THEN
-      RETURN gv(111) / (s.taux_fi + s.taux_fa) * s.taux_fi;
-    ELSE
-      RETURN 0;
+    SELECT COUNT(*)
+    INTO has_validation
+    FROM VALIDATION_VOL_HORAIRE_REF vvh
+    JOIN validation v
+    ON v.id                    = VVH.VALIDATION_ID
+    WHERE V.HISTO_DESTRUCTION IS NULL
+    AND vvh.VOLUME_HORAIRE_REF_ID  = :OLD.ID;
+    IF 0                      <> has_validation THEN
+      raise_application_error(-20101, 'Il est impossible de supprimer des heures référentiel déjà validées.');
     END IF;
   END;
 
-  FUNCTION C2_132( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS
-    s  ose_formule.t_service;
-  BEGIN
-    s  := ose_formule.d_service( vh.service_id );
+/
+ALTER TRIGGER "VOLUME_HORAIRE_REF_DEL_CK" ENABLE;
 
-    RETURN gv(112) * s.taux_fi;
-  END;
+-- WF_ETAPE_DEP_CK
+CREATE OR REPLACE TRIGGER "WF_ETAPE_DEP_CK"
+  BEFORE INSERT OR UPDATE ON "WF_ETAPE_DEP"
+  REFERENCING FOR EACH ROW
+BEGIN
 
-  FUNCTION C3_132( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS
-    s  ose_formule.t_service;
-  BEGIN
-    s  := ose_formule.d_service( vh.service_id );
+  OSE_WORKFLOW.DEP_CHECK( :new.etape_suiv_id, :new.etape_prec_id );
 
-    IF s.taux_fi + s.taux_fa > 0 THEN
-      RETURN gv(112) / (s.taux_fi + s.taux_fa) * s.taux_fi;
-    ELSE
-      RETURN 0;
-    END IF;
-  END;
+END;
 
-  FUNCTION C2_141( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS
-    s  ose_formule.t_service;
-  BEGIN
-    s  := ose_formule.d_service( vh.service_id );
+/
+ALTER TRIGGER "WF_ETAPE_DEP_CK" ENABLE;
 
-    RETURN gv(111) * s.taux_fa;
-  END;
+--------------------------------------------------
+-- packages
+--------------------------------------------------
 
-  FUNCTION C3_141( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS
-    s  ose_formule.t_service;
-  BEGIN
-    s  := ose_formule.d_service( vh.service_id );
+-- OSE_CHARGENS
+CREATE OR REPLACE PACKAGE "OSE_CHARGENS" AS
+  ENABLE_TRIGGER_EFFECTIFS BOOLEAN DEFAULT TRUE;
 
-    IF s.taux_fi + s.taux_fa > 0 THEN
-      RETURN gv(111) / (s.taux_fi + s.taux_fa) * s.taux_fa;
-    ELSE
-      RETURN 0;
-    END IF;
-  END;
+  TYPE tnoeud_ids IS TABLE OF NUMERIC;
 
-  FUNCTION C2_142( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS
-    s  ose_formule.t_service;
-  BEGIN
-    s  := ose_formule.d_service( vh.service_id );
+  FUNCTION GET_SCENARIO RETURN NUMERIC;
+  PROCEDURE SET_SCENARIO( SCENARIO NUMERIC );
 
-    RETURN gv(112) * s.taux_fa;
-  END;
+  FUNCTION GET_NOEUD RETURN NUMERIC;
+  PROCEDURE SET_NOEUD( NOEUD NUMERIC );
 
-  FUNCTION C3_142( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS
-    s  ose_formule.t_service;
-  BEGIN
-    s  := ose_formule.d_service( vh.service_id );
+  FUNCTION CALC_COEF( choix_min NUMERIC, choix_max NUMERIC, poids NUMERIC, max_poids NUMERIC, total_poids NUMERIC, nb_choix NUMERIC ) RETURN FLOAT;
 
-    IF s.taux_fi + s.taux_fa > 0 THEN
-      RETURN gv(112) / (s.taux_fi + s.taux_fa) * s.taux_fa;
-    ELSE
-      RETURN 0;
-    END IF;
-  END;
+  PROCEDURE DEM_CALC_SUB_EFFECTIF( scenario_noeud_id NUMERIC, type_heures_id NUMERIC, etape_id NUMERIC, effectif FLOAT );
+  PROCEDURE CALC_SUB_EFFECTIF_DEM;
 
-  FUNCTION C2_151( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS
-    s  ose_formule.t_service;
-  BEGIN
-    s  := ose_formule.d_service( vh.service_id );
+  PROCEDURE CALC_ALL_EFFECTIFS;
 
-    RETURN gv(111) * s.taux_fc;
-  END;
+  PROCEDURE CALC_EFFECTIF( noeud_id NUMERIC, scenario_id NUMERIC, type_heures_id NUMERIC DEFAULT NULL, etape_id NUMERIC DEFAULT NULL);
+  PROCEDURE CALC_SUB_EFFECTIF2( noeud_id NUMERIC, scenario_id NUMERIC, type_heures_id NUMERIC DEFAULT NULL, etape_id NUMERIC DEFAULT NULL);
 
-  FUNCTION C2_152( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS
-    s  ose_formule.t_service;
-  BEGIN
-    s  := ose_formule.d_service( vh.service_id );
+  PROCEDURE DUPLIQUER( source_id NUMERIC, destination_id NUMERIC, utilisateur_id NUMERIC, structure_id NUMERIC, noeuds VARCHAR2 DEFAULT '', liens VARCHAR2 DEFAULT '' );
 
-    RETURN gv(112) * s.taux_fc;
-  END;
+  PROCEDURE CONTROLE_SEUIL( ouverture NUMERIC, dedoublement NUMERIC );
 
-  FUNCTION C2_153( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS
-    s  ose_formule.t_service;
-  BEGIN
-    s  := ose_formule.d_service( vh.service_id );
+  FUNCTION GET_SCENARIO_NOEUD_ID( scenario_id NUMERIC, noeud_id NUMERIC ) RETURN NUMERIC;
+  FUNCTION CREER_SCENARIO_NOEUD( scenario_id NUMERIC, noeud_id NUMERIC, assiduite FLOAT DEFAULT 1 ) RETURN NUMERIC;
 
-    IF gv(123) = gv(113) THEN
-      RETURN gv(113) * s.taux_fc;
-    ELSE
-      RETURN 0;
-    END IF;
-  END;
+  PROCEDURE ADD_SCENARIO_NOEUD_EFFECTIF( scenario_noeud_id NUMERIC, type_heures_id NUMERIC, etape_id NUMERIC, effectif FLOAT );
 
-  FUNCTION C3_153( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS
-    s  ose_formule.t_service;
-  BEGIN
-    s  := ose_formule.d_service( vh.service_id );
+  PROCEDURE INIT_SCENARIO_NOEUD_EFFECTIF(
+    etape_id NUMERIC,
+    scenario_id NUMERIC,
+    type_heures_id NUMERIC,
+    effectif FLOAT,
+    surcharge BOOLEAN DEFAULT FALSE
+  );
 
-    IF gv(123) = gv(113) THEN
-      RETURN gv(113);
-    ELSE
-      RETURN 0;
-    END IF;
-  END;
+  PROCEDURE SET_PRECALC_HEURES_PARAMS(
+    annee_id                       NUMERIC DEFAULT NULL,
+    structure_id                   NUMERIC DEFAULT NULL,
+    scenario_id                    NUMERIC DEFAULT NULL,
+    type_heures_id                 NUMERIC DEFAULT NULL,
+    etape_id                       NUMERIC DEFAULT NULL,
+    noeud_ids                      tnoeud_ids DEFAULT NULL
+  );
 
-  FUNCTION C2_154( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS
-    s  ose_formule.t_service;
-  BEGIN
-    s  := ose_formule.d_service( vh.service_id );
+  FUNCTION MATCH_PRECALC_HEURES_PARAMS(
+    annee_id                       NUMERIC DEFAULT NULL,
+    structure_id                   NUMERIC DEFAULT NULL,
+    scenario_id                    NUMERIC DEFAULT NULL,
+    type_heures_id                 NUMERIC DEFAULT NULL,
+    etape_id                       NUMERIC DEFAULT NULL,
+    noeud_id                       NUMERIC DEFAULT NULL
+  ) RETURN NUMERIC;
 
-    IF gv(124) = gv(114) THEN
-      RETURN gv(114) * s.taux_fc;
-    ELSE
-      RETURN 0;
-    END IF;
-  END;
 
-  FUNCTION C3_154( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS
-    s  ose_formule.t_service;
-  BEGIN
-    s  := ose_formule.d_service( vh.service_id );
+END OSE_CHARGENS;
+/
 
-    IF gv(124) = gv(114) THEN
-      RETURN gv(114);
-    ELSE
-      RETURN 0;
-    END IF;
-  END;
+-- OSE_DIVERS
+CREATE OR REPLACE PACKAGE "OSE_DIVERS" AS
 
-  FUNCTION C2_163( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS
-    s  ose_formule.t_service;
-  BEGIN
-    s  := ose_formule.d_service( vh.service_id );
+  PROCEDURE CALCULER_TABLEAUX_BORD;
 
-    IF gv(123) <> gv(113) THEN
-      RETURN gv(123) * s.taux_fc;
-    ELSE
-      RETURN 0;
-    END IF;
-  END;
+  FUNCTION GET_OSE_UTILISATEUR_ID RETURN NUMERIC;
+  FUNCTION GET_OSE_SOURCE_ID RETURN NUMERIC;
 
-  FUNCTION C3_163( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS
-    s  ose_formule.t_service;
-  BEGIN
-    s  := ose_formule.d_service( vh.service_id );
+  FUNCTION INTERVENANT_HAS_PRIVILEGE( intervenant_id NUMERIC, privilege_name VARCHAR2 ) RETURN NUMERIC;
 
-    IF gv(123) <> gv(113) THEN
-      RETURN gv(123);
-    ELSE
-      RETURN 0;
-    END IF;
-  END;
+  FUNCTION implode(i_query VARCHAR2, i_seperator VARCHAR2 DEFAULT ',') RETURN VARCHAR2;
 
-  FUNCTION C2_164( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS
-    s  ose_formule.t_service;
-  BEGIN
-    s  := ose_formule.d_service( vh.service_id );
+  PROCEDURE intervenant_horodatage_service( INTERVENANT_ID NUMERIC, TYPE_VOLUME_HORAIRE_ID NUMERIC, REFERENTIEL NUMERIC, HISTO_MODIFICATEUR_ID NUMERIC, HISTO_MODIFICATION DATE );
 
-    IF gv(124) <> gv(114) THEN
-      RETURN gv(124) * s.taux_fc;
-    ELSE
-      RETURN 0;
-    END IF;
-  END;
+  FUNCTION NIVEAU_FORMATION_ID_CALC( gtf_id NUMERIC, gtf_pertinence_niveau NUMERIC, niveau NUMERIC DEFAULT NULL ) RETURN NUMERIC;
 
-  FUNCTION C3_164( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS
-    s  ose_formule.t_service;
-  BEGIN
-    s  := ose_formule.d_service( vh.service_id );
+  FUNCTION STR_REDUCE( str CLOB ) RETURN CLOB;
 
-    IF gv(124) <> gv(114) THEN
-      RETURN gv(124);
-    ELSE
-      RETURN 0;
-    END IF;
-  END;
+  FUNCTION STR_FIND( haystack CLOB, needle VARCHAR2 ) RETURN NUMERIC;
+
+  FUNCTION LIKED( haystack CLOB, needle CLOB ) RETURN NUMERIC;
+
+  FUNCTION CALCUL_TAUX_FI( eff_fi FLOAT, eff_fc FLOAT, eff_fa FLOAT, fi NUMERIC, fc NUMERIC, fa NUMERIC, arrondi NUMERIC DEFAULT 15 ) RETURN FLOAT;
 
+  FUNCTION CALCUL_TAUX_FC( eff_fi FLOAT, eff_fc FLOAT, eff_fa FLOAT, fi NUMERIC, fc NUMERIC, fa NUMERIC, arrondi NUMERIC DEFAULT 15 ) RETURN FLOAT;
 
+  FUNCTION CALCUL_TAUX_FA( eff_fi FLOAT, eff_fc FLOAT, eff_fa FLOAT, fi NUMERIC, fc NUMERIC, fa NUMERIC, arrondi NUMERIC DEFAULT 15 ) RETURN FLOAT;
 
+  FUNCTION STRUCTURE_UNIV_GET_ID RETURN NUMERIC;
 
+  PROCEDURE SYNC_LOG( msg CLOB );
 
+  FUNCTION FORMATTED_RIB (bic VARCHAR2, iban VARCHAR2) RETURN VARCHAR2;
 
+  FUNCTION FORMATTED_ADRESSE(
+    no_voie                VARCHAR2,
+    nom_voie               VARCHAR2,
+    batiment               VARCHAR2,
+    mention_complementaire VARCHAR2,
+    localite               VARCHAR2,
+    code_postal            VARCHAR2,
+    ville                  VARCHAR2,
+    pays_libelle           VARCHAR2)
+  RETURN VARCHAR2;
 
+  FUNCTION GET_TRIGGER_BODY( TRIGGER_NAME VARCHAR2 ) RETURN VARCHAR2;
+END OSE_DIVERS;
+/
 
+-- OSE_EVENT
+CREATE OR REPLACE PACKAGE "OSE_EVENT" AS
 
+  PROCEDURE ON_BEFORE_FORMULE_RES_DELETE( INTERVENANT_ID NUMERIC );
+  PROCEDURE ON_AFTER_FORMULE_CALC( INTERVENANT_ID NUMERIC );
 
-  PROCEDURE CALCUL_RESULTAT_V2( INTERVENANT_ID NUMERIC, TYPE_VOLUME_HORAIRE_ID NUMERIC, ETAT_VOLUME_HORAIRE_ID NUMERIC ) IS
-    current_tableau           PLS_INTEGER;
-    id                        PLS_INTEGER;
-    val                       FLOAT;
-    TYPE t_liste_tableaux   IS VARRAY (100) OF PLS_INTEGER;
-    liste_tableaux            t_liste_tableaux;
-    resultat_total            FLOAT;
-    res                       FLOAT;
-    vh                        ose_formule.t_volume_horaire;
-    vhr                       ose_formule.t_volume_horaire_ref;
-  BEGIN
-    V_INIT;
+END OSE_EVENT;
+/
 
-    ose_formule.d_resultat.service_du := CASE
-      WHEN ose_formule.d_intervenant.depassement_service_du_sans_hc = 1 -- HC traitées comme du service
-        OR ose_formule.d_intervenant.heures_decharge < 0 -- s'il y a une décharge => aucune HC     
+-- OSE_FORMULE
+CREATE OR REPLACE PACKAGE "OSE_FORMULE" AS
 
-      THEN 9999 
-      ELSE ose_formule.d_intervenant.heures_service_statutaire + ose_formule.d_intervenant.heures_service_modifie
-    END;
+  PACKAGE_SUJET VARCHAR2(80) DEFAULT 'OSE_FORMULE';
 
-    liste_tableaux := t_liste_tableaux(
-       11,  12,  13,  14,  15,  16,  17,
-       21,  22,  23,  24,  25,  26,  27,
-       31,  32,  33,  34,  35,  36,  37,
-       41,  42,  43,  44,  45,  46,  47,
-       51,  52,  53,  54,  55,  56,  57,
-       61,  62,
-       71,  72,
-       81,  82,  83,  84,       
-       91,  92,  93,  94,  95,  96,  97,
-      101, 102, 103, 104, 105, 106, 107,
-      111, 112, 113, 114, 115, 116, 117,
-                123, 124,
-      131, 132,
-      141, 142,
-      151, 152, 153, 154,
-                163, 164
-    );
+  TYPE t_intervenant IS RECORD (
+    structure_id                   NUMERIC,
+    annee_id                       NUMERIC,
+    heures_decharge                FLOAT DEFAULT 0,
+    heures_service_statutaire      FLOAT DEFAULT 0,
+    heures_service_modifie         FLOAT DEFAULT 0,
+    depassement_service_du_sans_hc FLOAT DEFAULT 0
+  );
 
-    FOR i IN liste_tableaux.FIRST .. liste_tableaux.LAST
-    LOOP
-      current_tableau := liste_tableaux(i);
+  TYPE t_type_etat_vh IS RECORD (
+    type_volume_horaire_id    NUMERIC,
+    etat_volume_horaire_id    NUMERIC
+  );
+  TYPE t_lst_type_etat_vh   IS TABLE OF t_type_etat_vh INDEX BY PLS_INTEGER;
 
-      IF current_tableau IN ( -- calcul pour les volumes horaires des services
-         11,  12,  13,  14,
-         21,  22,  23,  24,
-         41,  42,  43,  44,
-         51,  52,  53,  54,
-         61,  62,
-         71,  72,
-         81,  82,  83,  84,
-         91,  92,  93,  94,
-        101, 102, 103, 104,
-        111, 112, 113, 114,
-                  123, 124,
-        131, 132,
-        141, 142,
-        151, 152, 153, 154,
-                  163, 164
-      ) THEN
+  TYPE t_service_ref IS RECORD (
+    id                        NUMERIC,
+    structure_id              NUMERIC
+  );
+  TYPE t_lst_service_ref      IS TABLE OF t_service_ref INDEX BY PLS_INTEGER;
 
-        current_id := ose_formule.d_volume_horaire.FIRST;
-        LOOP EXIT WHEN current_id IS NULL;
-          vh := ose_formule.d_volume_horaire(current_id);
-          res := CASE current_tableau
-            WHEN  11 THEN  C2_11 (vh) WHEN  12 THEN  C2_12 (vh) WHEN  13 THEN  C2_13 (vh) WHEN  14 THEN  C2_14 (vh)
-            WHEN  21 THEN  C2_21 (vh) WHEN  22 THEN  C2_22 (vh) WHEN  23 THEN  C2_23 (vh) WHEN  24 THEN  C2_24 (vh)
-            WHEN  41 THEN  C2_41 (vh) WHEN  42 THEN  C2_42 (vh) WHEN  43 THEN  C2_43 (vh) WHEN  44 THEN  C2_44 (vh)
-            WHEN  51 THEN  C2_51 (vh) WHEN  52 THEN  C2_52 (vh) WHEN  53 THEN  C2_53 (vh) WHEN  54 THEN  C2_54 (vh)
-            WHEN  61 THEN  C2_61 (vh) WHEN  62 THEN  C2_62 (vh)
-            WHEN  71 THEN  C2_71 (vh) WHEN  72 THEN  C2_72 (vh)
-            WHEN  81 THEN  C2_81 (vh) WHEN  82 THEN  C2_82 (vh) WHEN  83 THEN  C2_83 (vh) WHEN  84 THEN  C2_84 (vh)
-            WHEN  91 THEN  C2_91 (vh) WHEN  92 THEN  C2_92 (vh) WHEN  93 THEN  C2_93 (vh) WHEN  94 THEN  C2_94 (vh)
-            WHEN 101 THEN C2_101 (vh) WHEN 102 THEN C2_102 (vh) WHEN 103 THEN C2_103 (vh) WHEN 104 THEN C2_104 (vh)
-            WHEN 111 THEN C2_111 (vh) WHEN 112 THEN C2_112 (vh) WHEN 113 THEN C2_113 (vh) WHEN 114 THEN C2_114 (vh)
-                                                              WHEN 123 THEN C2_123 (vh) WHEN 124 THEN C2_124 (vh)
-            WHEN 131 THEN C2_131 (vh) WHEN 132 THEN C2_132 (vh)
-            WHEN 141 THEN C2_141 (vh) WHEN 142 THEN C2_142 (vh)
-            WHEN 151 THEN C2_151 (vh) WHEN 152 THEN C2_152 (vh) WHEN 153 THEN C2_153 (vh) WHEN 154 THEN C2_154 (vh)
-                                                              WHEN 163 THEN C2_163 (vh) WHEN 164 THEN C2_164 (vh)
-          END;
-          SV( current_tableau, current_id, res );
-          current_id := ose_formule.d_volume_horaire.NEXT(current_id);
-        END LOOP;
+  TYPE t_service IS RECORD (
+    id                        NUMERIC,
+    taux_fi                   FLOAT   DEFAULT 1,
+    taux_fa                   FLOAT   DEFAULT 0,
+    taux_fc                   FLOAT   DEFAULT 0,
+    ponderation_service_du    FLOAT   DEFAULT 1,
+    ponderation_service_compl FLOAT   DEFAULT 1,
+    structure_aff_id          NUMERIC,
+    structure_ens_id          NUMERIC
+  );
+  TYPE t_lst_service          IS TABLE OF t_service INDEX BY PLS_INTEGER;
 
-      ELSIF current_tableau IN ( -- calcul des services restants dus
-        31, 32, 33, 34, 35, 36, 37
-      ) THEN
+  TYPE t_volume_horaire_ref IS RECORD (
+    id                        NUMERIC,
+    service_referentiel_id    NUMERIC,
+    type_volume_horaire_id    NUMERIC,
+    etat_volume_horaire_id    NUMERIC,
+    etat_volume_horaire_ordre NUMERIC,
+    heures                    FLOAT   DEFAULT 0
+  );
+  TYPE t_lst_volume_horaire_ref   IS TABLE OF t_volume_horaire_ref INDEX BY PLS_INTEGER;
 
-        res := CASE current_tableau
-          WHEN 31 THEN C2_31  WHEN 32 THEN C2_32  WHEN 33 THEN C2_33
-          WHEN 34 THEN C2_34  WHEN 35 THEN C2_35  WHEN 36 THEN C2_36
-          WHEN 37 THEN C2_37
-        END;
-        SV( current_tableau, res );
+  TYPE t_volume_horaire IS RECORD (
+    id                        NUMERIC,
+    service_id                NUMERIC,
+    type_volume_horaire_id    NUMERIC,
+    etat_volume_horaire_id    NUMERIC,
+    etat_volume_horaire_ordre NUMERIC,
+    heures                    FLOAT   DEFAULT 0,
+    taux_service_du           FLOAT   DEFAULT 1,
+    taux_service_compl        FLOAT   DEFAULT 1
+  );
+  TYPE t_lst_volume_horaire   IS TABLE OF t_volume_horaire INDEX BY PLS_INTEGER;
 
-      ELSIF current_tableau IN ( -- tableaux de calcul des volumes horaires référentiels
-         15,  16,  17,
-         25,  26,  27,
-         45,  46,  47,
-         55,  56,  57,     
-         95,  96,  97,
-        105, 106, 107,
-        115, 116, 117
-      ) THEN  
 
-        current_id := ose_formule.d_volume_horaire_ref.FIRST;
-        LOOP EXIT WHEN current_id IS NULL;
-          vhr := ose_formule.d_volume_horaire_ref(current_id);
-          res := CASE current_tableau
-            WHEN  15 THEN  C2_15 (vhr)  WHEN  16 THEN  C2_16 (vhr)  WHEN  17 THEN  C2_17 (vhr)
-            WHEN  25 THEN  C2_25 (vhr)  WHEN  26 THEN  C2_26 (vhr)  WHEN  27 THEN  C2_27 (vhr)
-            WHEN  45 THEN  C2_45 (vhr)  WHEN  46 THEN  C2_46 (vhr)  WHEN  47 THEN  C2_47 (vhr)
-            WHEN  55 THEN  C2_55 (vhr)  WHEN  56 THEN  C2_56 (vhr)  WHEN  57 THEN  C2_57 (vhr)
-            WHEN  95 THEN  C2_95 (vhr)  WHEN  96 THEN  C2_96 (vhr)  WHEN  97 THEN  C2_97 (vhr)
-            WHEN 105 THEN C2_105 (vhr)  WHEN 106 THEN C2_106 (vhr)  WHEN 107 THEN C2_107 (vhr)
-            WHEN 115 THEN C2_115 (vhr)  WHEN 116 THEN C2_116 (vhr)  WHEN 117 THEN C2_117 (vhr)
-          END;
-          SV(current_tableau, current_id, res);
-          current_id := ose_formule.d_volume_horaire_ref.NEXT(current_id);
-        END LOOP;
 
-      END IF;
-    END LOOP;
+  TYPE t_resultat_hetd IS RECORD (
+    service_fi                FLOAT DEFAULT 0,
+    service_fa                FLOAT DEFAULT 0,
+    service_fc                FLOAT DEFAULT 0,
+    heures_compl_fi           FLOAT DEFAULT 0,
+    heures_compl_fa           FLOAT DEFAULT 0,
+    heures_compl_fc           FLOAT DEFAULT 0,
+    heures_compl_fc_majorees  FLOAT DEFAULT 0
+  );
+  TYPE t_lst_resultat_hetd   IS TABLE OF t_resultat_hetd INDEX BY PLS_INTEGER;
 
-    resultat_total :=                                         gt( 55) + gt( 56) + gt( 57)
-                    + gt( 61) + gt( 62)
-                    + gt( 71) + gt( 72)
-                    + gt( 81) + gt( 82) + gt( 83) + gt( 84)
-                                                            + gt(115) + gt(116) + gt(117)                                       
-                    + gt(131) + gt(132)
-                    + gt(141) + gt(142)
-                    + gt(151) + gt(152) + gt(153) + gt(154)
-                                        + gt(163) + gt(164);
+  TYPE t_resultat_hetd_ref IS RECORD (
+    service_referentiel       FLOAT DEFAULT 0,
+    heures_compl_referentiel  FLOAT DEFAULT 0
+  );
+  TYPE t_lst_resultat_hetd_ref   IS TABLE OF t_resultat_hetd_ref INDEX BY PLS_INTEGER;
 
-    ose_formule.d_resultat.service_du := CASE
-      WHEN ose_formule.d_intervenant.depassement_service_du_sans_hc = 1 OR ose_formule.d_intervenant.heures_decharge < 0
-      THEN GREATEST(resultat_total, ose_formule.d_intervenant.heures_service_statutaire + ose_formule.d_intervenant.heures_service_modifie)
-      ELSE ose_formule.d_intervenant.heures_service_statutaire + ose_formule.d_intervenant.heures_service_modifie
-    END;
-    ose_formule.d_resultat.solde                    := resultat_total - ose_formule.d_resultat.service_du;
-    IF ose_formule.d_resultat.solde >= 0 THEN
-      ose_formule.d_resultat.sous_service           := 0;
-      ose_formule.d_resultat.heures_compl           := ose_formule.d_resultat.solde;
-    ELSE
-      ose_formule.d_resultat.sous_service           := ose_formule.d_resultat.solde * -1;
-      ose_formule.d_resultat.heures_compl           := 0;
-    END IF;
+  TYPE t_resultat IS RECORD (
+    intervenant_id            NUMERIC,
+    type_volume_horaire_id    NUMERIC,
+    etat_volume_horaire_id    NUMERIC,
+    service_du                FLOAT DEFAULT 0,
+    solde                     FLOAT DEFAULT 0,
+    sous_service              FLOAT DEFAULT 0,
+    heures_compl              FLOAT DEFAULT 0,
+    volume_horaire            t_lst_resultat_hetd,
+    volume_horaire_ref        t_lst_resultat_hetd_ref
+  );
 
-     -- répartition des résultats par volumes horaires
-    current_id := ose_formule.d_volume_horaire.FIRST;
-    LOOP EXIT WHEN current_id IS NULL;
-      ose_formule.d_resultat.volume_horaire(current_id).service_fi               := gv( 61) + gv( 62);
-      ose_formule.d_resultat.volume_horaire(current_id).service_fa               := gv( 71) + gv( 72);
-      ose_formule.d_resultat.volume_horaire(current_id).service_fc               := gv( 81) + gv( 82) + gv( 83) + gv( 84);
-      ose_formule.d_resultat.volume_horaire(current_id).heures_compl_fi          := gv(131) + gv(132);
-      ose_formule.d_resultat.volume_horaire(current_id).heures_compl_fa          := gv(141) + gv(142);
-      ose_formule.d_resultat.volume_horaire(current_id).heures_compl_fc          := gv(151) + gv(152) + gv(153) + gv(154);
-      ose_formule.d_resultat.volume_horaire(current_id).heures_compl_fc_majorees :=                     gv(163) + gv(164);
-      current_id := ose_formule.d_volume_horaire.NEXT(current_id); 
-    END LOOP;
+  d_intervenant         t_intervenant;
+  d_type_etat_vh        t_lst_type_etat_vh;
+  d_service_ref         t_lst_service_ref;
+  d_service             t_lst_service;
+  d_volume_horaire_ref  t_lst_volume_horaire_ref;
+  d_volume_horaire      t_lst_volume_horaire;
+  d_resultat            t_resultat;
 
-    -- répartition des résultats par volumes horaires référentiel
-    current_id := ose_formule.d_volume_horaire_ref.FIRST;
-    LOOP EXIT WHEN current_id IS NULL;
-      ose_formule.d_resultat.volume_horaire_ref(current_id).service_referentiel      := gv(55) + gv(56) + gv(57);
-      ose_formule.d_resultat.volume_horaire_ref(current_id).heures_compl_referentiel := gv(115) + gv(116) + gv(117);
-      current_id := ose_formule.d_volume_horaire_ref.NEXT(current_id); 
-    END LOOP;
+  FUNCTION  GET_INTERVENANT_ID RETURN NUMERIC;
+  FUNCTION  GET_DATE_OBS RETURN DATE;
+  FUNCTION  SET_DATE_OBS( DATE_OBS DATE DEFAULT NULL ) RETURN DATE;
 
-  END;
+  PROCEDURE SET_DEBUG_LEVEL( DEBUG_LEVEL NUMERIC );
+  FUNCTION GET_DEBUG_LEVEL RETURN NUMERIC;
 
+  FUNCTION GET_TAUX_HORAIRE_HETD( DATE_OBS DATE DEFAULT NULL ) RETURN FLOAT;
+  PROCEDURE UPDATE_ANNEE_TAUX_HETD;
 
+  PROCEDURE CALCULER( INTERVENANT_ID NUMERIC );
+  PROCEDURE CALCULER_TOUT( ANNEE_ID NUMERIC DEFAULT NULL );        -- mise à jour de TOUTES les données ! ! ! !
+  PROCEDURE CALCULER_TBL( PARAMS UNICAEN_TBL.T_PARAMS );
 
+  PROCEDURE SET_INTERVENANT(INTERVENANT_ID NUMERIC DEFAULT NULL);
+  FUNCTION GET_INTERVENANT RETURN NUMERIC;
+  FUNCTION MATCH_INTERVENANT(INTERVENANT_ID NUMERIC DEFAULT NULL) RETURN NUMERIC;
+END OSE_FORMULE;
+/
 
+-- OSE_HISTO
+CREATE OR REPLACE PACKAGE "OSE_HISTO" AS
 
+  FUNCTION FILTRE( histo_debut NUMERIC, histo_fin NUMERIC ) RETURN NUMERIC;
 
+END OSE_HISTO;
+/
 
+-- OSE_PAIEMENT
+CREATE OR REPLACE PACKAGE "OSE_PAIEMENT" AS
 
+  PROCEDURE CHECK_BAD_PAIEMENTS( FORMULE_RES_SERVICE_ID NUMERIC DEFAULT NULL, FORMULE_RES_SERVICE_REF_ID NUMERIC DEFAULT NULL );
 
+END OSE_PAIEMENT;
+/
 
+-- OSE_PARAMETRE
+CREATE OR REPLACE PACKAGE "OSE_PARAMETRE" AS
 
+  function get_etablissement return Numeric;
+  function get_annee return Numeric;
+  function get_annee_import return Numeric;
+  function get_ose_user return Numeric;
+  function get_drh_structure_id return Numeric;
+  function get_date_fin_saisie_permanents RETURN DATE;
+  function get_ddeb_saisie_serv_real RETURN DATE;
+  function get_dfin_saisie_serv_real RETURN DATE;
+  function get_formule_package_name RETURN VARCHAR2;
+  function get_formule_function_name RETURN VARCHAR2;
 
+END OSE_PARAMETRE;
+/
 
+-- OSE_TEST
+CREATE OR REPLACE PACKAGE "OSE_TEST" AS
 
-  PROCEDURE CALCUL_RESULTAT_V3( INTERVENANT_ID NUMERIC, TYPE_VOLUME_HORAIRE_ID NUMERIC, ETAT_VOLUME_HORAIRE_ID NUMERIC ) IS
-    current_tableau           PLS_INTEGER;
-    id                        PLS_INTEGER;
-    val                       FLOAT;
-    TYPE t_liste_tableaux   IS VARRAY (100) OF PLS_INTEGER;
-    liste_tableaux            t_liste_tableaux;
-    resultat_total            FLOAT;
-    res                       FLOAT;
-    vh                        ose_formule.t_volume_horaire;
-    vhr                       ose_formule.t_volume_horaire_ref;
-  BEGIN
+  DEBUG_ENABLED BOOLEAN DEFAULT FALSE;
 
-    -- si l'année est antérieure à 2016/2017 alors on utilise la V2!!
-    IF ose_formule.d_intervenant.annee_id < 2016 THEN
-      CALCUL_RESULTAT_V2( INTERVENANT_ID, TYPE_VOLUME_HORAIRE_ID, ETAT_VOLUME_HORAIRE_ID );
-      RETURN;
-    END IF;
+  -- SET SERVEROUTPUT ON
 
-    V_INIT;
+  PROCEDURE SHOW_SUCCES;
 
-    ose_formule.d_resultat.service_du := CASE
-      WHEN ose_formule.d_intervenant.depassement_service_du_sans_hc = 1 -- HC traitées comme du service
-        OR ose_formule.d_intervenant.heures_decharge < 0 -- s'il y a une décharge => aucune HC     
+  PROCEDURE HIDE_SUCCES;
 
-      THEN 9999 
-      ELSE ose_formule.d_intervenant.heures_service_statutaire + ose_formule.d_intervenant.heures_service_modifie
-    END;
+  PROCEDURE ECHO( MSG CLOB );
 
-    liste_tableaux := t_liste_tableaux(
-       11,  12,  13,  14,  15,  16,  17,
-       21,  22,  23,  24,  25,  26,  27,
-       31,  32,  33,  34,  35,  36,  37,
-       41,  42,  43,  44,  45,  46,  47,
-       51,  52,  53,  54,  55,  56,  57,
-       61,  62,
-       71,  72,
-       81,  82,  83,  84,       
-       91,  92,  93,  94,  95,  96,  97,
-      101, 102, 103, 104, 105, 106, 107,
-      111, 112, 113, 114, 115, 116, 117,
-                123, 124,
-      131, 132,
-      141, 142,
-      151, 152, 153, 154,
-                163, 164
-    );
+  PROCEDURE INIT;
 
-    FOR i IN liste_tableaux.FIRST .. liste_tableaux.LAST
-    LOOP
-      current_tableau := liste_tableaux(i);
+  PROCEDURE SHOW_STATS;
 
-      IF current_tableau IN ( -- calcul pour les volumes horaires des services
-         11,  12,  13,  14,
-         21,  22,  23,  24,
-         41,  42,  43,  44,
-         51,  52,  53,  54,
-         61,  62,
-         71,  72,
-         81,  82,  83,  84,
-         91,  92,  93,  94,
-        101, 102, 103, 104,
-        111, 112, 113, 114,
-                  123, 124,
-        131, 132,
-        141, 142,
-        151, 152, 153, 154,
-                  163, 164
-      ) THEN
+  PROCEDURE DEBUT( TEST_NAME CLOB );
 
-        current_id := ose_formule.d_volume_horaire.FIRST;
-        LOOP EXIT WHEN current_id IS NULL;
-          vh := ose_formule.d_volume_horaire(current_id);
-          res := CASE current_tableau
-            WHEN  11 THEN  C3_11 (vh) WHEN  12 THEN  C3_12 (vh) WHEN  13 THEN  C3_13 (vh) WHEN  14 THEN  C3_14 (vh)
-            WHEN  21 THEN  C2_21 (vh) WHEN  22 THEN  C2_22 (vh) WHEN  23 THEN  C2_23 (vh) WHEN  24 THEN  C2_24 (vh)
-            WHEN  41 THEN  C2_41 (vh) WHEN  42 THEN  C2_42 (vh) WHEN  43 THEN  C2_43 (vh) WHEN  44 THEN  C2_44 (vh)
-            WHEN  51 THEN  C2_51 (vh) WHEN  52 THEN  C2_52 (vh) WHEN  53 THEN  C2_53 (vh) WHEN  54 THEN  C2_54 (vh)
-            WHEN  61 THEN  C3_61 (vh) WHEN  62 THEN  C3_62 (vh)
-            WHEN  71 THEN  C3_71 (vh) WHEN  72 THEN  C3_72 (vh)
-                                                                WHEN  83 THEN  C3_83 (vh) WHEN  84 THEN  C3_84 (vh)
-            WHEN  91 THEN  C2_91 (vh) WHEN  92 THEN  C2_92 (vh) WHEN  93 THEN  C2_93 (vh) WHEN  94 THEN  C2_94 (vh)
-            WHEN 101 THEN C2_101 (vh) WHEN 102 THEN C2_102 (vh) WHEN 103 THEN C2_103 (vh) WHEN 104 THEN C2_104 (vh)
-            WHEN 111 THEN C2_111 (vh) WHEN 112 THEN C2_112 (vh) WHEN 113 THEN C2_113 (vh) WHEN 114 THEN C2_114 (vh)
-                                                                WHEN 123 THEN C3_123 (vh) WHEN 124 THEN C3_124 (vh)
-            WHEN 131 THEN C3_131 (vh) WHEN 132 THEN C3_132 (vh)
-            WHEN 141 THEN C3_141 (vh) WHEN 142 THEN C3_142 (vh)
-                                                                WHEN 153 THEN C3_153 (vh) WHEN 154 THEN C3_154 (vh)
-                                                                WHEN 163 THEN C3_163 (vh) WHEN 164 THEN C3_164 (vh)
-          END;
-          SV( current_tableau, current_id, res );
-          current_id := ose_formule.d_volume_horaire.NEXT(current_id);
-        END LOOP;
+  PROCEDURE FIN;
 
-      ELSIF current_tableau IN ( -- calcul des services restants dus
-        31, 32, 33, 34, 35, 36, 37
-      ) THEN
+  PROCEDURE ASSERT( condition BOOLEAN, MSG CLOB );
 
-        res := CASE current_tableau
-          WHEN 31 THEN C2_31  WHEN 32 THEN C2_32  WHEN 33 THEN C2_33
-          WHEN 34 THEN C2_34  WHEN 35 THEN C2_35  WHEN 36 THEN C2_36
-          WHEN 37 THEN C2_37
-        END;
-        SV( current_tableau, res );
+  PROCEDURE HOROINIT;
 
-      ELSIF current_tableau IN ( -- tableaux de calcul des volumes horaires référentiels
-         15,  16,  17,
-         25,  26,  27,
-         45,  46,  47,
-         55,  56,  57,     
-         95,  96,  97,
-        105, 106, 107,
-        115, 116, 117
-      ) THEN  
+  PROCEDURE HORODATAGE( msg VARCHAR2 );
 
-        current_id := ose_formule.d_volume_horaire_ref.FIRST;
-        LOOP EXIT WHEN current_id IS NULL;
-          vhr := ose_formule.d_volume_horaire_ref(current_id);
-          res := CASE current_tableau
-            WHEN  15 THEN  C2_15 (vhr)  WHEN  16 THEN  C2_16 (vhr)  WHEN  17 THEN  C2_17 (vhr)
-            WHEN  25 THEN  C2_25 (vhr)  WHEN  26 THEN  C2_26 (vhr)  WHEN  27 THEN  C2_27 (vhr)
-            WHEN  45 THEN  C2_45 (vhr)  WHEN  46 THEN  C2_46 (vhr)  WHEN  47 THEN  C2_47 (vhr)
-            WHEN  55 THEN  C2_55 (vhr)  WHEN  56 THEN  C2_56 (vhr)  WHEN  57 THEN  C2_57 (vhr)
-            WHEN  95 THEN  C2_95 (vhr)  WHEN  96 THEN  C2_96 (vhr)  WHEN  97 THEN  C2_97 (vhr)
-            WHEN 105 THEN C2_105 (vhr)  WHEN 106 THEN C2_106 (vhr)  WHEN 107 THEN C2_107 (vhr)
-            WHEN 115 THEN C2_115 (vhr)  WHEN 116 THEN C2_116 (vhr)  WHEN 117 THEN C2_117 (vhr)
-          END;
-          SV(current_tableau, current_id, res);
-          current_id := ose_formule.d_volume_horaire_ref.NEXT(current_id);
-        END LOOP;
+  FUNCTION GET_STRUCTURE_BY_ID( id NUMERIC ) RETURN structure%rowtype;
 
-      END IF;
-    END LOOP;
+END OSE_TEST;
+/
 
-    resultat_total :=                                         gt( 55) + gt( 56) + gt( 57)
-                    + gt( 61) + gt( 62)
-                    + gt( 71) + gt( 72)
-                    + gt( 83) + gt( 84)
-                                                            + gt(115) + gt(116) + gt(117)                                       
-                    + gt(131) + gt(132)
-                    + gt(141) + gt(142)
-                    + gt(153) + gt(154)
-                                        + gt(163) + gt(164);
+-- OSE_VALIDATION
+CREATE OR REPLACE PACKAGE "OSE_VALIDATION" AS
 
-    ose_formule.d_resultat.service_du := CASE
-      WHEN ose_formule.d_intervenant.depassement_service_du_sans_hc = 1 OR ose_formule.d_intervenant.heures_decharge < 0
-      THEN GREATEST(resultat_total, ose_formule.d_intervenant.heures_service_statutaire + ose_formule.d_intervenant.heures_service_modifie)
-      ELSE ose_formule.d_intervenant.heures_service_statutaire + ose_formule.d_intervenant.heures_service_modifie
-    END;
-    ose_formule.d_resultat.solde                    := resultat_total - ose_formule.d_resultat.service_du;
-    IF ose_formule.d_resultat.solde >= 0 THEN
-      ose_formule.d_resultat.sous_service           := 0;
-      ose_formule.d_resultat.heures_compl           := ose_formule.d_resultat.solde;
-    ELSE
-      ose_formule.d_resultat.sous_service           := ose_formule.d_resultat.solde * -1;
-      ose_formule.d_resultat.heures_compl           := 0;
-    END IF;
+  FUNCTION can_devalider ( v validation%rowtype ) RETURN varchar2;
 
-     -- répartition des résultats par volumes horaires
-    current_id := ose_formule.d_volume_horaire.FIRST;
-    LOOP EXIT WHEN current_id IS NULL;
-      ose_formule.d_resultat.volume_horaire(current_id).service_fi               := gv( 61) + gv( 62);
-      ose_formule.d_resultat.volume_horaire(current_id).service_fa               := gv( 71) + gv( 72);
-      ose_formule.d_resultat.volume_horaire(current_id).service_fc               := gv( 83) + gv( 84);
-      ose_formule.d_resultat.volume_horaire(current_id).heures_compl_fi          := gv(131) + gv(132);
-      ose_formule.d_resultat.volume_horaire(current_id).heures_compl_fa          := gv(141) + gv(142);
-      ose_formule.d_resultat.volume_horaire(current_id).heures_compl_fc          := gv(153) + gv(154);
-      ose_formule.d_resultat.volume_horaire(current_id).heures_compl_fc_majorees := gv(163) + gv(164);
-      current_id := ose_formule.d_volume_horaire.NEXT(current_id); 
-    END LOOP;
+END OSE_VALIDATION;
+/
 
-    -- répartition des résultats par volumes horaires référentiel
-    current_id := ose_formule.d_volume_horaire_ref.FIRST;
-    LOOP EXIT WHEN current_id IS NULL;
-      ose_formule.d_resultat.volume_horaire_ref(current_id).service_referentiel      := gv(55) + gv(56) + gv(57);
-      ose_formule.d_resultat.volume_horaire_ref(current_id).heures_compl_referentiel := gv(115) + gv(116) + gv(117);
-      current_id := ose_formule.d_volume_horaire_ref.NEXT(current_id); 
-    END LOOP;
+-- OSE_WORKFLOW
+CREATE OR REPLACE PACKAGE "OSE_WORKFLOW" AS
 
-  END;
+  PACKAGE_SUJET VARCHAR2(80) DEFAULT 'OSE_WORKFLOW';
+
+  PROCEDURE CALCULER( INTERVENANT_ID NUMERIC );
+  PROCEDURE CALCULER_TOUT( ANNEE_ID NUMERIC DEFAULT NULL );
+  PROCEDURE CALCULER_TBL( PARAMS UNICAEN_TBL.T_PARAMS );
 
+  PROCEDURE DEP_CHECK( etape_suiv_id NUMERIC, etape_prec_id NUMERIC );
 
+  PROCEDURE SET_INTERVENANT(INTERVENANT_ID NUMERIC DEFAULT NULL);
+  FUNCTION GET_INTERVENANT RETURN NUMERIC;
+  FUNCTION MATCH_INTERVENANT(INTERVENANT_ID NUMERIC DEFAULT NULL) RETURN NUMERIC;
+END OSE_WORKFLOW;
+/
 
+-- UNICAEN_IMPORT
+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;
 
+/
 
+-- UNICAEN_OSE_FORMULE
+CREATE OR REPLACE PACKAGE "UNICAEN_OSE_FORMULE" AS
 
+  PROCEDURE CALCUL_RESULTAT_V2( INTERVENANT_ID NUMERIC, TYPE_VOLUME_HORAIRE_ID NUMERIC, ETAT_VOLUME_HORAIRE_ID NUMERIC );
 
-  PROCEDURE PURGE_EM_NON_FC IS
-  BEGIN
-    FOR em IN (
-      SELECT
-        em.id
-      FROM 
-        ELEMENT_MODULATEUR em
-        JOIN element_pedagogique ep ON ep.id = em.element_id AND ep.histo_destruction IS NULL
-      WHERE
-        em.histo_destruction IS NULL
-        AND ep.taux_fc < 1
-    ) LOOP
-      UPDATE
-        element_modulateur
-      SET
-        histo_destruction = SYSDATE,
-        histo_destructeur_id = ose_parametre.get_ose_user 
-      WHERE
-        id = em.id
-      ;
-    END LOOP;
-  END;
+  PROCEDURE CALCUL_RESULTAT_V3( INTERVENANT_ID NUMERIC, TYPE_VOLUME_HORAIRE_ID NUMERIC, ETAT_VOLUME_HORAIRE_ID NUMERIC );
+
+  PROCEDURE PURGE_EM_NON_FC;
 
 END UNICAEN_OSE_FORMULE;
 /
 
 -- UNICAEN_TBL
-CREATE OR REPLACE PACKAGE BODY "UNICAEN_TBL" AS 
+CREATE OR REPLACE PACKAGE "UNICAEN_TBL" AS
+
+  TYPE t_params IS RECORD (
+    c1 VARCHAR2(30), v1 VARCHAR2(80),
+    c2 VARCHAR2(30), v2 VARCHAR2(80),
+    c3 VARCHAR2(30), v3 VARCHAR2(80),
+    c4 VARCHAR2(30), v4 VARCHAR2(80),
+    c5 VARCHAR2(30), v5 VARCHAR2(80),
+    sqlcond CLOB
+  );
+
+  ACTIV_TRIGGERS BOOLEAN DEFAULT TRUE;
+  ACTIV_CALCULS  BOOLEAN DEFAULT TRUE;
+  CALCUL_PROC_PARAMS t_params;
 
   FUNCTION MAKE_PARAMS(
     c1 VARCHAR2 DEFAULT NULL, v1 VARCHAR2 DEFAULT NULL,
@@ -12929,5743 +13816,6414 @@ CREATE OR REPLACE PACKAGE BODY "UNICAEN_TBL" AS
     c4 VARCHAR2 DEFAULT NULL, v4 VARCHAR2 DEFAULT NULL,
     c5 VARCHAR2 DEFAULT NULL, v5 VARCHAR2 DEFAULT NULL,
     sqlcond CLOB DEFAULT NULL
-  ) RETURN t_params IS
-    params t_params;
-  BEGIN
-    IF c1 IS NOT NULL THEN
-      params.c1 := c1;
-      params.v1 := v1;
-    END IF;
-    IF c2 IS NOT NULL THEN
-      params.c2 := c2;
-      params.v2 := v2;
-    END IF;
-    IF c3 IS NOT NULL THEN
-      params.c3 := c3;
-      params.v3 := v3;
-    END IF;
-    IF c4 IS NOT NULL THEN
-      params.c4 := c4;
-      params.v4 := v4;
-    END IF;
-    IF c5 IS NOT NULL THEN
-      params.c5 := c5;
-      params.v5 := v5;
-    END IF;
-    params.sqlcond := sqlcond;
+  ) RETURN t_params;
 
-    RETURN params;
-  END;
+  FUNCTION PARAMS_FROM_DEMS( TBL_NAME VARCHAR2 ) RETURN t_params;
+  FUNCTION PARAMS_TO_CONDS ( PARAMS UNICAEN_TBL.T_PARAMS ) RETURN CLOB;
+
+  PROCEDURE DEMANDE_CALCUL( TBL_NAME VARCHAR2 );
+  PROCEDURE DEMANDE_CALCUL( TBL_NAME VARCHAR2, CONDS CLOB );
+  PROCEDURE DEMANDE_CALCUL( TBL_NAME VARCHAR2, PARAMS t_params );
 
+  PROCEDURE CALCULER( TBL_NAME VARCHAR2 );
+  PROCEDURE CALCULER( TBL_NAME VARCHAR2, CONDS CLOB );
+  PROCEDURE CALCULER( TBL_NAME VARCHAR2, PARAMS t_params );
 
+  PROCEDURE ANNULER_DEMANDES;
+  PROCEDURE ANNULER_DEMANDES( TBL_NAME VARCHAR2 );
+  PROCEDURE CALCULER_DEMANDES;
 
-  PROCEDURE DEMANDE_CALCUL( TBL_NAME VARCHAR2 ) IS
-    p t_params;
-  BEGIN
-    DEMANDE_CALCUL( tbl_name, p );
-  END;
+  -- AUTOMATIC GENERATION --
+
+  PROCEDURE C_AGREMENT( PARAMS UNICAEN_TBL.T_PARAMS );
+  PROCEDURE C_CHARGENS( PARAMS UNICAEN_TBL.T_PARAMS );
+  PROCEDURE C_CHARGENS_SEUILS_DEF( PARAMS UNICAEN_TBL.T_PARAMS );
+  PROCEDURE C_CLOTURE_REALISE( PARAMS UNICAEN_TBL.T_PARAMS );
+  PROCEDURE C_CONTRAT( PARAMS UNICAEN_TBL.T_PARAMS );
+  PROCEDURE C_DMEP_LIQUIDATION( PARAMS UNICAEN_TBL.T_PARAMS );
+  PROCEDURE C_DOSSIER( PARAMS UNICAEN_TBL.T_PARAMS );
+  PROCEDURE C_PAIEMENT( PARAMS UNICAEN_TBL.T_PARAMS );
+  PROCEDURE C_PIECE_JOINTE( PARAMS UNICAEN_TBL.T_PARAMS );
+  PROCEDURE C_PIECE_JOINTE_DEMANDE( PARAMS UNICAEN_TBL.T_PARAMS );
+  PROCEDURE C_PIECE_JOINTE_FOURNIE( PARAMS UNICAEN_TBL.T_PARAMS );
+  PROCEDURE C_SERVICE( PARAMS UNICAEN_TBL.T_PARAMS );
+  PROCEDURE C_SERVICE_REFERENTIEL( PARAMS UNICAEN_TBL.T_PARAMS );
+  PROCEDURE C_SERVICE_SAISIE( PARAMS UNICAEN_TBL.T_PARAMS );
+  PROCEDURE C_VALIDATION_ENSEIGNEMENT( PARAMS UNICAEN_TBL.T_PARAMS );
+  PROCEDURE C_VALIDATION_REFERENTIEL( PARAMS UNICAEN_TBL.T_PARAMS );
+
+  -- END OF AUTOMATIC GENERATION --
 
+END UNICAEN_TBL;
+/
 
+-- OSE_CHARGENS
+CREATE OR REPLACE PACKAGE BODY "OSE_CHARGENS" AS
+  SCENARIO NUMERIC;
+  NOEUD NUMERIC;
+  old_enable BOOLEAN DEFAULT TRUE;
 
-  PROCEDURE DEMANDE_CALCUL( TBL_NAME VARCHAR2, CONDS CLOB ) IS
-    p t_params;
+  TYPE T_PRECALC_HEURES_PARAMS IS RECORD (
+    annee_id                       NUMERIC DEFAULT NULL,
+    structure_id                   NUMERIC DEFAULT NULL,
+    scenario_id                    NUMERIC DEFAULT NULL,
+    type_heures_id                 NUMERIC DEFAULT NULL,
+    etape_id                       NUMERIC DEFAULT NULL,
+    noeud_ids                      tnoeud_ids DEFAULT NULL
+  );
+
+  PRECALC_HEURES_PARAMS T_PRECALC_HEURES_PARAMS;
+
+
+  FUNCTION GET_SCENARIO RETURN NUMERIC IS
   BEGIN
-    p.sqlcond := CONDS;
-    DEMANDE_CALCUL( tbl_name, p );
+    RETURN OSE_CHARGENS.SCENARIO;
   END;
 
+  PROCEDURE SET_SCENARIO( SCENARIO NUMERIC ) IS
+  BEGIN
+    OSE_CHARGENS.SCENARIO := SET_SCENARIO.SCENARIO;
+  END;
 
 
-  PROCEDURE DEMANDE_CALCUL( TBL_NAME VARCHAR2, PARAMS t_params ) IS
+
+  FUNCTION GET_NOEUD RETURN NUMERIC IS
   BEGIN
-    INSERT INTO tbl_dems (
-      ID, 
-      TBL_NAME,
-      c1, v1,
-      c2, v2,
-      c3, v3,
-      c4, v4,
-      c5, v5,
-      sqlcond
-    ) VALUES (
-      TBL_DEMS_ID_SEQ.NEXTVAL, 
-      TBL_NAME,
-      PARAMS.c1, PARAMS.v1,
-      PARAMS.c2, PARAMS.v2,
-      PARAMS.c3, PARAMS.v3,
-      PARAMS.c4, PARAMS.v4,
-      PARAMS.c5, PARAMS.v5,
-      PARAMS.sqlcond
-    );
+    RETURN OSE_CHARGENS.NOEUD;
   END;
 
+  PROCEDURE SET_NOEUD( NOEUD NUMERIC ) IS
+  BEGIN
+    OSE_CHARGENS.NOEUD := SET_NOEUD.NOEUD;
+  END;
 
 
-  FUNCTION PARAMS_FROM_DEMS( TBL_NAME VARCHAR2 ) RETURN t_params IS
-    res t_params;
-    conds CLOB := '';
-    cond CLOB;
-  BEGIN
-    FOR d IN (
-      SELECT *
-      FROM   tbl_dems
-      WHERE  tbl_name = PARAMS_FROM_DEMS.TBL_NAME
-    )
-    LOOP
 
-      cond := '';
 
-      IF d.c1 IS NOT NULL THEN 
-        IF cond IS NOT NULL THEN cond := cond || ' AND '; END IF; 
-        IF d.v1 IS NULL THEN
-          cond := cond || d.c1 || ' IS NULL';
-        ELSE
-          cond := cond || d.c1 || '=' || d.v1; 
-        END IF;
-      END IF;
 
-      IF d.c2 IS NOT NULL THEN 
-        IF cond IS NOT NULL THEN cond := cond || ' AND '; END IF; 
-        IF d.v2 IS NULL THEN
-          cond := cond || d.c2 || ' IS NULL';
-        ELSE
-          cond := cond || d.c2 || '=' || d.v2;
-        END IF;
-      END IF;
+  FUNCTION CALC_COEF( choix_min NUMERIC, choix_max NUMERIC, poids NUMERIC, max_poids NUMERIC, total_poids NUMERIC, nb_choix NUMERIC ) RETURN FLOAT IS
+    cmin NUMERIC;
+    cmax NUMERIC;
+    coef_choix FLOAT;
+    coef_poids FLOAT;
+    max_coef_poids FLOAT;
+    correcteur FLOAT DEFAULT 1;
+    res FLOAT;
+  BEGIN
+    cmin := choix_min;
+    cmax := choix_max;
 
-      IF d.c3 IS NOT NULL THEN 
-        IF cond IS NOT NULL THEN cond := cond || ' AND '; END IF; 
-        IF d.v3 IS NULL THEN
-          cond := cond || d.c3 || ' IS NULL';
-        ELSE
-          cond := cond || d.c3 || '=' || d.v3; 
-        END IF;
-      END IF;
+    IF total_poids = 0 THEN RETURN 0; END IF;
 
-      IF d.c4 IS NOT NULL THEN 
-        IF cond IS NOT NULL THEN cond := cond || ' AND '; END IF; 
-        IF d.v4 IS NULL THEN
-          cond := cond || d.c4 || ' IS NULL';
-        ELSE
-          cond := cond || d.c4 || '=' || d.v4; 
-        END IF;
-      END IF;
+    IF cmax IS NULL OR cmax > nb_choix THEN
+      cmax := nb_choix;
+    END IF;
+    IF cmin IS NULL THEN
+      cmin := nb_choix;
+    ELSIF cmin > cmax THEN
+      cmin := cmax;
+    END IF;
 
-      IF d.c5 IS NOT NULL THEN 
-        IF cond IS NOT NULL THEN cond := cond || ' AND '; END IF; 
-        IF d.v5 IS NULL THEN
-          cond := cond || d.c5 || ' IS NULL';
-        ELSE
-          cond := cond || d.c5 || '=' || d.v5;
-        END IF;
-      END IF;
+      coef_choix := (cmin + cmax) / 2 / nb_choix;
 
-      IF d.sqlcond IS NOT NULL THEN 
-        IF cond IS NOT NULL THEN cond := cond || ' AND '; END IF; 
-        cond := cond || '(' || d.sqlcond || ')';
-      END IF;
+      coef_poids := poids / total_poids;
 
-      IF conds IS NOT NULL THEN 
-        conds := conds || ' OR ';
+      max_coef_poids := max_poids / total_poids;
+
+      IF (coef_choix * nb_choix * max_coef_poids) <= 1 THEN
+        res := coef_choix * nb_choix * coef_poids;
+      ELSE
+        correcteur := 1;
+        res := coef_choix * nb_choix * (coef_poids + (((1/nb_choix)-coef_poids)*correcteur));
       END IF;
-      conds := conds || '(' || cond || ')';
-    END LOOP;
 
-    res.sqlcond := conds;
-    DELETE FROM tbl_dems WHERE tbl_name = PARAMS_FROM_DEMS.TBL_NAME;
-    RETURN res;
+      --ose_test.echo('choix_min= ' || cmin || ', choix_max= ' || cmax || ', poids = ' || poids || ', max_poids = ' || max_poids || ', total_poids = ' || total_poids || ', nb_choix = ' || nb_choix || ', RES = ' || res);
+      RETURN res;
   END;
 
 
-
-  FUNCTION PARAMS_TO_CONDS ( PARAMS UNICAEN_TBL.T_PARAMS ) RETURN CLOB IS
-    cond CLOB;
+  PROCEDURE DEM_CALC_SUB_EFFECTIF( scenario_noeud_id NUMERIC, type_heures_id NUMERIC, etape_id NUMERIC, effectif FLOAT ) IS
   BEGIN
-    IF params.c1 IS NOT NULL THEN 
-        IF params.v1 IS NULL THEN
-          cond := cond || params.c1 || ' IS NULL';
-        ELSE
-          cond := cond || params.c1 || '=' || params.v1; 
-        END IF;
-      END IF;
+    INSERT INTO TMP_scenario_noeud_effectif(
+      scenario_noeud_id, type_heures_id, etape_id, effectif
+    ) VALUES(
+      scenario_noeud_id, type_heures_id, etape_id, effectif
+    );
+  END;
 
-      IF params.c2 IS NOT NULL THEN 
-        IF cond IS NOT NULL THEN cond := cond || ' AND '; END IF; 
-        IF params.v2 IS NULL THEN
-          cond := cond || params.c2 || ' IS NULL';
-        ELSE
-          cond := cond || params.c2 || '=' || params.v2;
-        END IF;
-      END IF;
 
-      IF params.c3 IS NOT NULL THEN 
-        IF cond IS NOT NULL THEN cond := cond || ' AND '; END IF; 
-        IF params.v3 IS NULL THEN
-          cond := cond || params.c3 || ' IS NULL';
-        ELSE
-          cond := cond || params.c3 || '=' || params.v3; 
-        END IF;
-      END IF;
 
-      IF params.c4 IS NOT NULL THEN 
-        IF cond IS NOT NULL THEN cond := cond || ' AND '; END IF; 
-        IF params.v4 IS NULL THEN
-          cond := cond || params.c4 || ' IS NULL';
-        ELSE
-          cond := cond || params.c4 || '=' || params.v4; 
-        END IF;
-      END IF;
+  PROCEDURE CALC_SUB_EFFECTIF_DEM IS
+  BEGIN
+    DELETE FROM TMP_scenario_noeud_effectif;
+  END;
 
-      IF params.c5 IS NOT NULL THEN 
-        IF cond IS NOT NULL THEN cond := cond || ' AND '; END IF; 
-        IF params.v5 IS NULL THEN
-          cond := cond || params.c5 || ' IS NULL';
-        ELSE
-          cond := cond || params.c5 || '=' || params.v5;
-        END IF;
-      END IF;
 
-      IF params.sqlcond IS NOT NULL THEN 
-        IF cond IS NOT NULL THEN cond := cond || ' AND '; END IF; 
-        cond := cond || '(' || params.sqlcond || ')';
-      END IF;
+  PROCEDURE CALC_ALL_EFFECTIFS IS
+  BEGIN
+    FOR p IN (
+
+      SELECT
+        sn.noeud_id,
+        sn.scenario_id,
+        sne.type_heures_id,
+        sne.etape_id
+      FROM
+        scenario_noeud_effectif sne
+        JOIN scenario_noeud sn ON sn.id = sne.scenario_noeud_id
+        JOIN noeud n ON n.id = sn.noeud_id
+      WHERE
+        n.etape_id IS NOT NULL
 
-      IF cond IS NULL THEN cond := '1=1'; END IF;
+    ) LOOP
+
+      CALC_SUB_EFFECTIF2( p.noeud_id, p.scenario_id, p.type_heures_id, p.etape_id );
+    END LOOP;
 
-      RETURN cond;
   END;
 
 
 
-  PROCEDURE CALCULER( TBL_NAME VARCHAR2 ) IS
-    p t_params;
+  PROCEDURE CALC_EFFECTIF(
+    noeud_id       NUMERIC,
+    scenario_id    NUMERIC,
+    type_heures_id NUMERIC DEFAULT NULL,
+    etape_id       NUMERIC DEFAULT NULL
+  ) IS
+    snid  NUMERIC;
   BEGIN
-    ANNULER_DEMANDES( TBL_NAME );
-    CALCULER(TBL_NAME, p);
-  END;
+    UPDATE scenario_noeud_effectif SET effectif = 0
+    WHERE
+      scenario_noeud_id = (
+        SELECT id FROM scenario_noeud WHERE noeud_id = CALC_EFFECTIF.noeud_id AND scenario_id = CALC_EFFECTIF.scenario_id
+      )
+      AND (type_heures_id = CALC_EFFECTIF.type_heures_id OR CALC_EFFECTIF.type_heures_id IS NULL)
+      AND (etape_id = CALC_EFFECTIF.etape_id OR CALC_EFFECTIF.etape_id IS NULL)
+    ;
 
+    FOR p IN (
 
+      SELECT
+        *
+      FROM
+        v_chargens_calc_effectif cce
+      WHERE
+        cce.noeud_id = CALC_EFFECTIF.noeud_id
+        AND cce.scenario_id = CALC_EFFECTIF.scenario_id
+        AND (cce.type_heures_id = CALC_EFFECTIF.type_heures_id OR CALC_EFFECTIF.type_heures_id IS NULL)
+        AND (cce.etape_id = CALC_EFFECTIF.etape_id OR CALC_EFFECTIF.etape_id IS NULL)
 
-  PROCEDURE CALCULER( TBL_NAME VARCHAR2, CONDS CLOB ) IS
-    p t_params;
-  BEGIN
-    p.sqlcond := CONDS;
-    CALCULER(TBL_NAME, p);
+    ) LOOP
+      snid := OSE_CHARGENS.GET_SCENARIO_NOEUD_ID( p.scenario_id, p.noeud_id );
+      IF snid IS NULL THEN
+        snid := OSE_CHARGENS.CREER_SCENARIO_NOEUD( p.scenario_id, p.noeud_id );
+      END IF;
+      ADD_SCENARIO_NOEUD_EFFECTIF( snid, p.type_heures_id, p.etape_id, p.effectif );
+    END LOOP;
+    CALC_SUB_EFFECTIF2( noeud_id, scenario_id, type_heures_id, etape_id );
   END;
 
 
 
-  PROCEDURE CALCULER( TBL_NAME VARCHAR2, PARAMS t_params ) IS
-    calcul_proc varchar2(30);
+  PROCEDURE CALC_SUB_EFFECTIF2( noeud_id NUMERIC, scenario_id NUMERIC, type_heures_id NUMERIC DEFAULT NULL, etape_id NUMERIC DEFAULT NULL) IS
   BEGIN
-    IF NOT UNICAEN_TBL.ACTIV_CALCULS THEN RETURN; END IF;
-
-    SELECT custom_calcul_proc INTO calcul_proc FROM tbl WHERE tbl_name = CALCULER.TBL_NAME;
+    FOR p IN (
 
-    UNICAEN_TBL.CALCUL_PROC_PARAMS := PARAMS;
-    IF calcul_proc IS NOT NULL THEN
-      EXECUTE IMMEDIATE 
-        'BEGIN ' || calcul_proc || '(UNICAEN_TBL.CALCUL_PROC_PARAMS); END;'
-      ;
-    ELSE
-      EXECUTE IMMEDIATE 
-        'BEGIN UNICAEN_TBL.C_' || TBL_NAME || '(UNICAEN_TBL.CALCUL_PROC_PARAMS); END;'
-      ;
-    END IF;
+      SELECT *
+      FROM   V_CHARGENS_GRANDS_LIENS cgl
+      WHERE  cgl.noeud_sup_id = CALC_SUB_EFFECTIF2.noeud_id
 
+    ) LOOP
+      CALC_EFFECTIF( p.noeud_inf_id, scenario_id, type_heures_id, etape_id );
+    END LOOP;
   END;
 
 
 
-  PROCEDURE ANNULER_DEMANDES IS
+  PROCEDURE DUPLIQUER( source_id NUMERIC, destination_id NUMERIC, utilisateur_id NUMERIC, structure_id NUMERIC, noeuds VARCHAR2 DEFAULT '', liens VARCHAR2 DEFAULT '' ) IS
   BEGIN
-    DELETE FROM tbl_dems;
-  END;
 
+    /* Destruction de tous les liens antérieurs de la destination */
+    DELETE FROM
+      scenario_lien
+    WHERE
+      scenario_id = DUPLIQUER.destination_id
+      AND histo_destruction IS NULL
+      AND (DUPLIQUER.LIENS IS NULL OR DUPLIQUER.LIENS LIKE '%,' || lien_id || ',%' )
+      AND (DUPLIQUER.STRUCTURE_ID IS NULL OR lien_id IN (
+        SELECT id FROM lien WHERE lien.structure_id = DUPLIQUER.STRUCTURE_ID
+      ))
+    ;
 
+    /* Duplication des liens */
+    INSERT INTO scenario_lien (
+      id,
+      scenario_id, lien_id,
+      actif, poids,
+      choix_minimum, choix_maximum,
+      source_id, source_code,
+      histo_creation, histo_createur_id,
+      histo_modification, histo_modificateur_id
+    ) SELECT
+      scenario_lien_id_seq.nextval,
+      DUPLIQUER.destination_id, sl.lien_id,
+      sl.actif, sl.poids,
+      sl.choix_minimum, sl.choix_maximum,
+      source.id, 'dupli_' || sl.id || '_' || sl.lien_id || '_' || trunc(dbms_random.value(1,10000000000000)),
+      sysdate, DUPLIQUER.utilisateur_id,
+      sysdate, DUPLIQUER.utilisateur_id
+    FROM
+      scenario_lien sl
+      JOIN lien l ON l.id = sl.lien_id
+      JOIN source ON source.code = 'OSE'
+    WHERE
+      sl.scenario_id = DUPLIQUER.source_id
+      AND sl.histo_destruction IS NULL
+      AND (DUPLIQUER.LIENS IS NULL OR DUPLIQUER.LIENS LIKE '%,' || lien_id || ',%' )
+      AND (DUPLIQUER.STRUCTURE_ID IS NULL OR l.structure_id = DUPLIQUER.STRUCTURE_ID)
+    ;
 
-  PROCEDURE ANNULER_DEMANDES( TBL_NAME VARCHAR2 ) IS
-  BEGIN
-    DELETE FROM tbl_dems WHERE tbl_name = ANNULER_DEMANDES.tbl_name;
-  END;
 
+    /* Destruction de tous les noeuds antérieurs de la destination */
+    DELETE FROM
+      scenario_noeud
+    WHERE
+      scenario_id = DUPLIQUER.destination_id
+      AND histo_destruction IS NULL
+      AND (DUPLIQUER.NOEUDS IS NULL OR DUPLIQUER.NOEUDS LIKE '%,' || noeud_id || ',%' )
+      AND (DUPLIQUER.STRUCTURE_ID IS NULL OR scenario_noeud.noeud_id IN (
+        SELECT id FROM noeud WHERE noeud.structure_id = DUPLIQUER.STRUCTURE_ID
+      ))
+    ;
 
+    /* Duplication des noeuds */
+    INSERT INTO scenario_noeud (
+      id,
+      scenario_id, noeud_id,
+      assiduite,
+      source_id, source_code,
+      histo_creation, histo_createur_id,
+      histo_modification, histo_modificateur_id
+    ) SELECT
+      scenario_noeud_id_seq.nextval,
+      DUPLIQUER.destination_id, sn.noeud_id,
+      sn.assiduite,
+      source.id, 'dupli_' || sn.id || '_' || sn.noeud_id || '_' || trunc(dbms_random.value(1,10000000000000)),
+      sysdate, DUPLIQUER.utilisateur_id,
+      sysdate, DUPLIQUER.utilisateur_id
+    FROM
+      scenario_noeud sn
+      JOIN noeud n ON n.id = sn.noeud_id
+      JOIN source ON source.code = 'OSE'
+    WHERE
+      sn.scenario_id = DUPLIQUER.source_id
+      AND sn.histo_destruction IS NULL
+      AND (DUPLIQUER.NOEUDS IS NULL OR DUPLIQUER.NOEUDS LIKE '%,' || noeud_id || ',%' )
+      AND (DUPLIQUER.STRUCTURE_ID IS NULL OR n.structure_id = DUPLIQUER.STRUCTURE_ID)
+    ;
 
-  FUNCTION HAS_DEMANDES RETURN BOOLEAN IS
-    has_dems NUMERIC;
-  BEGIN
-    SELECT count(*) INTO has_dems from tbl_dems where rownum = 1;
+    /* Duplication des effectifs */
+    INSERT INTO scenario_noeud_effectif (
+      id,
+      scenario_noeud_id,
+      type_heures_id,
+      effectif,
+      etape_id
+    ) SELECT
+      scenario_noeud_effectif_id_seq.nextval,
+      sn_dst.id,
+      sne.type_heures_id,
+      sne.effectif,
+      sne.etape_id
+    FROM
+      scenario_noeud_effectif sne
+      JOIN scenario_noeud sn_src ON sn_src.id = sne.scenario_noeud_id
+      JOIN scenario_noeud sn_dst ON sn_dst.scenario_id = DUPLIQUER.destination_id AND sn_dst.noeud_id = sn_src.noeud_id
+      JOIN noeud n ON n.id = sn_src.noeud_id
+    WHERE
+      sn_src.scenario_id = DUPLIQUER.source_id
+      AND sn_src.histo_destruction IS NULL
+      AND (DUPLIQUER.NOEUDS IS NULL OR DUPLIQUER.NOEUDS LIKE '%,' || sn_src.noeud_id || ',%' )
+      AND (DUPLIQUER.STRUCTURE_ID IS NULL OR n.structure_id = DUPLIQUER.STRUCTURE_ID)
+    ;
 
-    RETURN has_dems = 1;
+    /* Duplication des seuils */
+    INSERT INTO scenario_noeud_seuil (
+      id,
+      scenario_noeud_id,
+      type_intervention_id,
+      ouverture,
+      dedoublement
+    ) SELECT
+      scenario_noeud_seuil_id_seq.nextval,
+      sn_dst.id,
+      sns.type_intervention_id,
+      sns.ouverture,
+      sns.dedoublement
+    FROM
+      scenario_noeud_seuil sns
+      JOIN scenario_noeud sn_src ON sn_src.id = sns.scenario_noeud_id
+      JOIN scenario_noeud sn_dst ON sn_dst.scenario_id = DUPLIQUER.destination_id AND sn_dst.noeud_id = sn_src.noeud_id
+      JOIN noeud n ON n.id = sn_src.noeud_id
+    WHERE
+      sn_src.scenario_id = DUPLIQUER.source_id
+      AND sn_src.histo_destruction IS NULL
+      AND (DUPLIQUER.NOEUDS IS NULL OR DUPLIQUER.NOEUDS LIKE '%,' || sn_src.noeud_id || ',%' )
+      AND (DUPLIQUER.STRUCTURE_ID IS NULL OR n.structure_id = DUPLIQUER.STRUCTURE_ID)
+    ;
   END;
 
 
 
-  PROCEDURE CALCULER_DEMANDES IS
-    dems t_params;
+  PROCEDURE CONTROLE_SEUIL( ouverture NUMERIC, dedoublement NUMERIC ) IS
   BEGIN
-    FOR d IN (
-      SELECT DISTINCT tbl_name FROM tbl_dems
-    ) LOOP
-      dems := PARAMS_FROM_DEMS( d.tbl_name );
-      calculer( d.tbl_name, dems );
-    END LOOP;
+    IF ouverture IS NOT NULL THEN
+      IF ouverture < 1 THEN
+        raise_application_error(-20101, 'Le seuil d''ouverture doit être supérieur ou égal à 1');
+      END IF;
+    END IF;
 
-    IF HAS_DEMANDES THEN -- pour les boucles !!
-      CALCULER_DEMANDES;
+    IF dedoublement IS NOT NULL THEN
+      IF dedoublement < 1 THEN
+        raise_application_error(-20101, 'Le seuil de dédoublement doit être supérieur ou égal à 1');
+      END IF;
+    END IF;
+
+    IF ouverture IS NOT NULL AND dedoublement IS NOT NULL THEN
+      IF dedoublement < ouverture THEN
+        raise_application_error(-20101, 'Le seuil de dédoublement doit être supérieur ou égal au seuil d''ouverture');
+      END IF;
     END IF;
   END;
 
 
-
-  -- AUTOMATIC GENERATION --
-
-  PROCEDURE C_AGREMENT( PARAMS UNICAEN_TBL.T_PARAMS ) IS
-    conds CLOB;    
+  FUNCTION CREER_SCENARIO_NOEUD( scenario_id NUMERIC, noeud_id NUMERIC, assiduite FLOAT DEFAULT 1 ) RETURN NUMERIC IS
+    new_id NUMERIC;
+  BEGIN
+    new_id := SCENARIO_NOEUD_ID_SEQ.NEXTVAL;
+--ose_test.echo(scenario_id || '-' || noeud_id);
+    INSERT INTO SCENARIO_NOEUD(
+      ID,
+      SCENARIO_ID,
+      NOEUD_ID,
+      ASSIDUITE,
+      SOURCE_ID,
+      SOURCE_CODE,
+      HEURES,
+      HISTO_CREATION,
+      HISTO_CREATEUR_ID,
+      HISTO_MODIFICATION,
+      HISTO_MODIFICATEUR_ID
+    ) VALUES (
+      new_id,
+      CREER_SCENARIO_NOEUD.scenario_id,
+      CREER_SCENARIO_NOEUD.noeud_id,
+      CREER_SCENARIO_NOEUD.assiduite,
+      OSE_DIVERS.GET_OSE_SOURCE_ID,
+      'OSE_NEW_SN_' || new_id,
+      null,
+      SYSDATE,
+      OSE_DIVERS.GET_OSE_UTILISATEUR_ID,
+      SYSDATE,
+      OSE_DIVERS.GET_OSE_UTILISATEUR_ID
+    );
+    RETURN new_id;
+  END;
+
+
+  FUNCTION GET_SCENARIO_NOEUD_ID(scenario_id NUMERIC, noeud_id NUMERIC) RETURN NUMERIC IS
+    res NUMERIC;
   BEGIN
-    conds := params_to_conds( params );
+    SELECT
+      sn.id INTO res
+    FROM
+      scenario_noeud sn
+    WHERE
+      sn.noeud_id = GET_SCENARIO_NOEUD_ID.noeud_id
+      AND sn.scenario_id = GET_SCENARIO_NOEUD_ID.scenario_id
+      AND sn.histo_destruction IS NULL;
 
-    EXECUTE IMMEDIATE 'BEGIN
+    RETURN res;
 
-    UPDATE TBL_AGREMENT SET to_delete = 1 WHERE ' || conds || ';
+  EXCEPTION WHEN NO_DATA_FOUND THEN
+    RETURN NULL;
+  END;
 
-    MERGE INTO 
-      TBL_AGREMENT t 
-    USING (
 
-      SELECT
-        tv.*
-      FROM
-        (WITH i_s AS (
-          SELECT DISTINCT
-            fr.intervenant_id,
-            ep.structure_id
-          FROM
-            formule_resultat fr
-            JOIN type_volume_horaire  tvh ON tvh.code = ''PREVU'' AND tvh.id = fr.type_volume_horaire_id
-            JOIN etat_volume_horaire  evh ON evh.code = ''valide'' AND evh.id = fr.etat_volume_horaire_id
-        
-            JOIN formule_resultat_service frs ON frs.formule_resultat_id = fr.id
-            JOIN service s ON s.id = frs.service_id
-            JOIN element_pedagogique ep ON ep.id = s.element_pedagogique_id
-          WHERE
-            frs.total > 0
-        )
-        SELECT
-          i.annee_id              annee_id,
-          tas.type_agrement_id    type_agrement_id,
-          i.id                    intervenant_id,
-          null                    structure_id,
-          tas.obligatoire         obligatoire,
-          a.id                    agrement_id
-        FROM
-          type_agrement                  ta
-          JOIN type_agrement_statut      tas ON tas.type_agrement_id = ta.id
-                                            AND tas.histo_destruction IS NULL
-                                       
-          JOIN intervenant                 i ON i.histo_destruction IS NULL
-                                            AND (tas.premier_recrutement IS NULL OR NVL(i.premier_recrutement,0) = tas.premier_recrutement)
-                                            AND i.statut_id = tas.statut_intervenant_id
-                                    
-          LEFT JOIN agrement               a ON a.type_agrement_id = ta.id 
-                                            AND a.intervenant_id = i.id
-                                            AND a.histo_destruction IS NULL
-        WHERE
-          ta.code = ''CONSEIL_ACADEMIQUE''
-        
-        UNION ALL
-        
-        SELECT
-          i.annee_id              annee_id,
-          tas.type_agrement_id    type_agrement_id,
-          i.id                    intervenant_id,
-          i_s.structure_id        structure_id,
-          tas.obligatoire         obligatoire,
-          a.id                    agrement_id
-        FROM
-          type_agrement                   ta
-          JOIN type_agrement_statut      tas ON tas.type_agrement_id = ta.id
-                                            AND tas.histo_destruction IS NULL
-        
-          JOIN intervenant                 i ON i.histo_destruction IS NULL
-                                            AND (tas.premier_recrutement IS NULL OR NVL(i.premier_recrutement,0) = tas.premier_recrutement)
-                                            AND i.statut_id = tas.statut_intervenant_id
-        
-          JOIN                           i_s ON i_s.intervenant_id = i.id
-        
-          LEFT JOIN agrement               a ON a.type_agrement_id = ta.id 
-                                            AND a.intervenant_id = i.id
-                                            AND a.structure_id = i_s.structure_id
-                                            AND a.histo_destruction IS NULL
-        WHERE
-          ta.code = ''CONSEIL_RESTREINT'') tv
-      WHERE
-        ' || conds || '
+  PROCEDURE ADD_SCENARIO_NOEUD_EFFECTIF( scenario_noeud_id NUMERIC, type_heures_id NUMERIC, etape_id NUMERIC, effectif FLOAT ) IS
+    old_enable BOOLEAN;
+  BEGIN
+    old_enable := ose_chargens.ENABLE_TRIGGER_EFFECTIFS;
+    ose_chargens.ENABLE_TRIGGER_EFFECTIFS := false;
 
-    ) v ON (
-            t.TYPE_AGREMENT_ID = v.TYPE_AGREMENT_ID
-        AND t.INTERVENANT_ID   = v.INTERVENANT_ID
-        AND COALESCE(t.STRUCTURE_ID,0) = COALESCE(v.STRUCTURE_ID,0)
+    MERGE INTO scenario_noeud_effectif sne USING dual ON (
+
+          sne.scenario_noeud_id = ADD_SCENARIO_NOEUD_EFFECTIF.scenario_noeud_id
+      AND sne.type_heures_id = ADD_SCENARIO_NOEUD_EFFECTIF.type_heures_id
+      AND sne.etape_id = ADD_SCENARIO_NOEUD_EFFECTIF.etape_id
 
     ) WHEN MATCHED THEN UPDATE SET
 
-      ANNEE_ID         = v.ANNEE_ID,
-      OBLIGATOIRE      = v.OBLIGATOIRE,
-      AGREMENT_ID      = v.AGREMENT_ID,
-      to_delete = 0
+      effectif = effectif + ADD_SCENARIO_NOEUD_EFFECTIF.effectif
 
     WHEN NOT MATCHED THEN INSERT (
 
       ID,
-      ANNEE_ID,
-      TYPE_AGREMENT_ID,
-      INTERVENANT_ID,
-      STRUCTURE_ID,
-      OBLIGATOIRE,
-      AGREMENT_ID,
-      TO_DELETE
+      SCENARIO_NOEUD_ID,
+      TYPE_HEURES_ID,
+      ETAPE_ID,
+      EFFECTIF
 
     ) VALUES (
 
-      TBL_AGREMENT_ID_SEQ.NEXTVAL,
-      v.ANNEE_ID,
-      v.TYPE_AGREMENT_ID,
-      v.INTERVENANT_ID,
-      v.STRUCTURE_ID,
-      v.OBLIGATOIRE,
-      v.AGREMENT_ID,
-      0
+      SCENARIO_NOEUD_EFFECTIF_ID_SEQ.NEXTVAL,
+      ADD_SCENARIO_NOEUD_EFFECTIF.scenario_noeud_id,
+      ADD_SCENARIO_NOEUD_EFFECTIF.type_heures_id,
+      ADD_SCENARIO_NOEUD_EFFECTIF.etape_id,
+      ADD_SCENARIO_NOEUD_EFFECTIF.effectif
 
     );
 
-    DELETE TBL_AGREMENT WHERE to_delete = 1 AND ' || conds || ';
-
-    END;';
+    DELETE FROM scenario_noeud_effectif WHERE effectif = 0;
 
+    ose_chargens.ENABLE_TRIGGER_EFFECTIFS := old_enable;
   END;
 
 
 
-  PROCEDURE C_CHARGENS( PARAMS UNICAEN_TBL.T_PARAMS ) IS
-    conds CLOB;    
+  PROCEDURE INIT_SCENARIO_NOEUD_EFFECTIF(
+    etape_id NUMERIC,
+    scenario_id NUMERIC,
+    type_heures_id NUMERIC,
+    effectif FLOAT,
+    surcharge BOOLEAN DEFAULT FALSE
+  ) IS
+    noeud_id NUMERIC;
+    scenario_noeud_id NUMERIC;
+    scenario_noeud_effectif_id NUMERIC;
   BEGIN
-    conds := params_to_conds( params );
+    SELECT
+      n.id, sn.id, sne.id
+    INTO
+      noeud_id, scenario_noeud_id, scenario_noeud_effectif_id
+    FROM
+                noeud                     n
+      LEFT JOIN scenario_noeud           sn ON sn.noeud_id = n.id
+                                           AND sn.histo_destruction IS NULL
+                                           AND sn.scenario_id = INIT_SCENARIO_NOEUD_EFFECTIF.scenario_id
 
-    EXECUTE IMMEDIATE 'BEGIN
+      LEFT JOIN scenario_noeud_effectif sne ON sne.scenario_noeud_id = sn.id
+                                           AND sne.type_heures_id = INIT_SCENARIO_NOEUD_EFFECTIF.type_heures_id
+    WHERE
+      n.etape_id = INIT_SCENARIO_NOEUD_EFFECTIF.etape_id
+      AND n.histo_destruction IS NULL
+    ;
 
-    UPDATE TBL_CHARGENS SET to_delete = 1 WHERE ' || conds || ';
+    IF noeud_id IS NULL THEN RETURN; END IF;
 
-    MERGE INTO 
-      TBL_CHARGENS t 
-    USING (
+    IF scenario_noeud_id IS NULL THEN
+      scenario_noeud_id := CREER_SCENARIO_NOEUD( scenario_id, noeud_id );
+    END IF;
 
-      SELECT
-        tv.*
-      FROM
-        (WITH t AS (
-        SELECT
-          n.annee_id                        annee_id,
-          n.noeud_id                        noeud_id,
-          sn.scenario_id                    scenario_id,
-          sne.type_heures_id                type_heures_id,
-          ti.id                             type_intervention_id,
-        
-          n.element_pedagogique_id          element_pedagogique_id,
-          n.element_pedagogique_etape_id    etape_id,
-          sne.etape_id                      etape_ens_id,
-          n.structure_id                    structure_id,
-          n.groupe_type_formation_id        groupe_type_formation_id,
-        
-          vhe.heures                        heures,
-          vhe.heures * ti.taux_hetd_service hetd,
-        
-          GREATEST(COALESCE(sns.ouverture, 1),1)                                           ouverture,
-          GREATEST(COALESCE(sns.dedoublement, snsetp.dedoublement, csdd.dedoublement,1),1) dedoublement,
-          COALESCE(sns.assiduite,1)                                                        assiduite,
-          sne.effectif*COALESCE(sns.assiduite,1)                                           effectif,
-        
-          SUM(sne.effectif*COALESCE(sns.assiduite,1)) OVER (PARTITION BY n.noeud_id, sn.scenario_id, ti.id) t_effectif
-        
-        FROM
-                    scenario_noeud_effectif    sne
-               JOIN etape                        e ON e.id = sne.etape_id
-                                                  AND e.histo_destruction IS NULL
-               
-               JOIN scenario_noeud              sn ON sn.id = sne.scenario_noeud_id
-                                                  AND sn.histo_destruction IS NULL
-               
-               JOIN tbl_noeud                       n ON n.noeud_id = sn.noeud_id
-                                                  
-               JOIN volume_horaire_ens         vhe ON vhe.element_pedagogique_id = n.element_pedagogique_id
-                                                  AND vhe.histo_destruction IS NULL 
-                                                  AND vhe.heures > 0
-        
-               JOIN type_intervention           ti ON ti.id = vhe.type_intervention_id
-        
-          LEFT JOIN tbl_noeud                 netp ON netp.etape_id = e.id
-                                                  
-          LEFT JOIN scenario_noeud           snetp ON snetp.scenario_id = sn.scenario_id
-                                                  AND snetp.noeud_id = netp.noeud_id
-                                                  AND snetp.histo_destruction IS NULL
-                                                  
-          LEFT JOIN scenario_noeud_seuil    snsetp ON snsetp.scenario_noeud_id = snetp.id
-                                                  AND snsetp.type_intervention_id = ti.id
-        
-          LEFT JOIN tbl_chargens_seuils_def   csdd ON csdd.annee_id = n.annee_id
-                                                  AND csdd.scenario_id = sn.scenario_id
-                                                  AND csdd.type_intervention_id = ti.id
-                                                  AND csdd.groupe_type_formation_id = n.groupe_type_formation_id
-                                                  AND csdd.structure_id = n.structure_id
-        
-          LEFT JOIN scenario_noeud_seuil       sns ON sns.scenario_noeud_id = sn.id 
-                                                  AND sns.type_intervention_id = ti.id
-        )
-        SELECT
-          annee_id,
-          noeud_id,
-          scenario_id,
-          type_heures_id,
-          type_intervention_id,
-        
-          element_pedagogique_id,
-          etape_id,
-          etape_ens_id,
-          structure_id,
-          groupe_type_formation_id,
-        
-          ouverture,
-          dedoublement,
-          assiduite,
-          effectif,
-          heures heures_ens,
-          --t_effectif,
-        
-          CASE WHEN t_effectif < ouverture THEN 0 ELSE
-            CEIL( t_effectif / dedoublement ) * effectif / t_effectif
-          END groupes,
-        
-          CASE WHEN t_effectif < ouverture THEN 0 ELSE
-            CEIL( t_effectif / dedoublement ) * heures * effectif / t_effectif
-          END heures,
-        
-          CASE WHEN t_effectif < ouverture THEN 0 ELSE
-            CEIL( t_effectif / dedoublement ) * hetd * effectif / t_effectif
-          END  hetd
-        
-        FROM
-          t) tv
-      WHERE
-        ' || conds || '
+    IF scenario_noeud_effectif_id IS NULL THEN
+      scenario_noeud_effectif_id := SCENARIO_NOEUD_EFFECTIF_ID_SEQ.NEXTVAL;
+      INSERT INTO scenario_noeud_effectif (
+        id,
+        scenario_noeud_id,
+        type_heures_id,
+        effectif,
+        etape_id
+      ) VALUES (
+        scenario_noeud_effectif_id,
+        scenario_noeud_id,
+        INIT_SCENARIO_NOEUD_EFFECTIF.type_heures_id,
+        INIT_SCENARIO_NOEUD_EFFECTIF.effectif,
+        INIT_SCENARIO_NOEUD_EFFECTIF.etape_id
+      );
+    ELSIF surcharge THEN
+      UPDATE scenario_noeud_effectif SET effectif = INIT_SCENARIO_NOEUD_EFFECTIF.effectif WHERE id = scenario_noeud_effectif_id;
+    END IF;
+
+    CALC_SUB_EFFECTIF2( noeud_id, scenario_id, type_heures_id, etape_id );
+
+  EXCEPTION WHEN NO_DATA_FOUND THEN
+    RETURN;
+  END;
 
-    ) v ON (
-            t.ANNEE_ID                 = v.ANNEE_ID
-        AND t.NOEUD_ID                 = v.NOEUD_ID
-        AND t.SCENARIO_ID              = v.SCENARIO_ID
-        AND t.TYPE_HEURES_ID           = v.TYPE_HEURES_ID
-        AND t.TYPE_INTERVENTION_ID     = v.TYPE_INTERVENTION_ID
-        AND t.ELEMENT_PEDAGOGIQUE_ID   = v.ELEMENT_PEDAGOGIQUE_ID
-        AND t.ETAPE_ID                 = v.ETAPE_ID
-        AND t.ETAPE_ENS_ID             = v.ETAPE_ENS_ID
-        AND t.STRUCTURE_ID             = v.STRUCTURE_ID
-        AND t.GROUPE_TYPE_FORMATION_ID = v.GROUPE_TYPE_FORMATION_ID
 
-    ) WHEN MATCHED THEN UPDATE SET
 
-      OUVERTURE                = v.OUVERTURE,
-      DEDOUBLEMENT             = v.DEDOUBLEMENT,
-      ASSIDUITE                = v.ASSIDUITE,
-      EFFECTIF                 = v.EFFECTIF,
-      HEURES_ENS               = v.HEURES_ENS,
-      GROUPES                  = v.GROUPES,
-      HEURES                   = v.HEURES,
-      HETD                     = v.HETD,
-      to_delete = 0
+  PROCEDURE SET_PRECALC_HEURES_PARAMS(
+    annee_id                       NUMERIC DEFAULT NULL,
+    structure_id                   NUMERIC DEFAULT NULL,
+    scenario_id                    NUMERIC DEFAULT NULL,
+    type_heures_id                 NUMERIC DEFAULT NULL,
+    etape_id                       NUMERIC DEFAULT NULL,
+    noeud_ids                      tnoeud_ids DEFAULT NULL
+  ) IS
+  BEGIN
+    PRECALC_HEURES_PARAMS.ANNEE_ID       := ANNEE_ID;
+    PRECALC_HEURES_PARAMS.STRUCTURE_ID   := STRUCTURE_ID;
+    PRECALC_HEURES_PARAMS.SCENARIO_ID    := SCENARIO_ID;
+    PRECALC_HEURES_PARAMS.TYPE_HEURES_ID := TYPE_HEURES_ID;
+    PRECALC_HEURES_PARAMS.ETAPE_ID       := ETAPE_ID;
+    PRECALC_HEURES_PARAMS.NOEUD_IDS      := noeud_ids;
+  END;
 
-    WHEN NOT MATCHED THEN INSERT (
 
-      ID,
-      ANNEE_ID,
-      NOEUD_ID,
-      SCENARIO_ID,
-      TYPE_HEURES_ID,
-      TYPE_INTERVENTION_ID,
-      ELEMENT_PEDAGOGIQUE_ID,
-      ETAPE_ID,
-      ETAPE_ENS_ID,
-      STRUCTURE_ID,
-      GROUPE_TYPE_FORMATION_ID,
-      OUVERTURE,
-      DEDOUBLEMENT,
-      ASSIDUITE,
-      EFFECTIF,
-      HEURES_ENS,
-      GROUPES,
-      HEURES,
-      HETD,
-      TO_DELETE
 
-    ) VALUES (
+  FUNCTION MATCH_PRECALC_HEURES_PARAMS(
+    annee_id                       NUMERIC DEFAULT NULL,
+    structure_id                   NUMERIC DEFAULT NULL,
+    scenario_id                    NUMERIC DEFAULT NULL,
+    type_heures_id                 NUMERIC DEFAULT NULL,
+    etape_id                       NUMERIC DEFAULT NULL,
+    noeud_id                       NUMERIC DEFAULT NULL
+  ) RETURN NUMERIC IS
+  BEGIN
 
-      TBL_CHARGENS_ID_SEQ.NEXTVAL,
-      v.ANNEE_ID,
-      v.NOEUD_ID,
-      v.SCENARIO_ID,
-      v.TYPE_HEURES_ID,
-      v.TYPE_INTERVENTION_ID,
-      v.ELEMENT_PEDAGOGIQUE_ID,
-      v.ETAPE_ID,
-      v.ETAPE_ENS_ID,
-      v.STRUCTURE_ID,
-      v.GROUPE_TYPE_FORMATION_ID,
-      v.OUVERTURE,
-      v.DEDOUBLEMENT,
-      v.ASSIDUITE,
-      v.EFFECTIF,
-      v.HEURES_ENS,
-      v.GROUPES,
-      v.HEURES,
-      v.HETD,
-      0
+    IF PRECALC_HEURES_PARAMS.noeud_ids IS NOT NULL THEN
+      IF NOT (noeud_id MEMBER OF PRECALC_HEURES_PARAMS.noeud_ids) THEN
+        RETURN 0;
+      END IF;
+    END IF;
 
-    );
+    IF annee_id <> COALESCE(PRECALC_HEURES_PARAMS.annee_id, annee_id) THEN
+      RETURN 0;
+    END IF;
 
-    DELETE TBL_CHARGENS WHERE to_delete = 1 AND ' || conds || ';
+    IF structure_id <> COALESCE(PRECALC_HEURES_PARAMS.structure_id, structure_id) THEN
+      RETURN 0;
+    END IF;
 
-    END;';
+    IF scenario_id <> COALESCE(PRECALC_HEURES_PARAMS.scenario_id, scenario_id) THEN
+      RETURN 0;
+    END IF;
+
+    IF type_heures_id <> COALESCE(PRECALC_HEURES_PARAMS.type_heures_id, type_heures_id) THEN
+      RETURN 0;
+    END IF;
+
+    IF etape_id <> COALESCE(PRECALC_HEURES_PARAMS.etape_id, etape_id) THEN
+      RETURN 0;
+    END IF;
 
+    RETURN 1;
   END;
 
 
+  FUNCTION GET_PRECALC_HEURES_ANNEE RETURN NUMERIC IS
+  BEGIN
+    RETURN PRECALC_HEURES_PARAMS.ANNEE_ID;
+  END;
+
 
-  PROCEDURE C_CHARGENS_SEUILS_DEF( PARAMS UNICAEN_TBL.T_PARAMS ) IS
-    conds CLOB;    
+
+  FUNCTION GET_PRECALC_HEURES_STRUCTURE RETURN NUMERIC IS
   BEGIN
-    conds := params_to_conds( params );
+    RETURN PRECALC_HEURES_PARAMS.STRUCTURE_ID;
+  END;
 
-    EXECUTE IMMEDIATE 'BEGIN
 
-    UPDATE TBL_CHARGENS_SEUILS_DEF SET to_delete = 1 WHERE ' || conds || ';
 
-    MERGE INTO 
-      TBL_CHARGENS_SEUILS_DEF t 
-    USING (
+  FUNCTION GET_PRECALC_HEURES_SCENARIO RETURN NUMERIC IS
+  BEGIN
+    RETURN PRECALC_HEURES_PARAMS.SCENARIO_ID;
+  END;
 
-      SELECT
-        tv.*
-      FROM
-        (SELECT
-          sta.annee_id,
-          sta.scenario_id,
-          s.structure_id,
-          gtf.groupe_type_formation_id,
-          sta.type_intervention_id,
-          COALESCE(sc1.dedoublement, sc2.dedoublement, sc3.dedoublement, sc4.dedoublement) dedoublement
-        FROM
-          (SELECT DISTINCT scenario_id, type_intervention_id, annee_id FROM seuil_charge WHERE histo_destruction IS NULL) sta
-          JOIN (SELECT DISTINCT structure_id FROM noeud WHERE structure_id IS NOT NULL) s ON 1=1
-          JOIN (SELECT id groupe_type_formation_id FROM groupe_type_formation) gtf ON 1=1
-          
-          LEFT JOIN seuil_charge sc1 ON 
-            sc1.histo_destruction            IS NULL
-            AND sc1.annee_id                 = sta.annee_id
-            AND sc1.scenario_id              = sta.scenario_id
-            AND sc1.type_intervention_id     = sta.type_intervention_id
-            AND sc1.structure_id             = s.structure_id
-            AND sc1.groupe_type_formation_id = gtf.groupe_type_formation_id
-            
-          LEFT JOIN seuil_charge sc2 ON 
-            sc2.histo_destruction            IS NULL
-            AND sc2.annee_id                 = sta.annee_id
-            AND sc2.scenario_id              = sta.scenario_id
-            AND sc2.type_intervention_id     = sta.type_intervention_id
-            AND sc2.structure_id             = s.structure_id
-            AND sc2.groupe_type_formation_id IS NULL
-            
-          LEFT JOIN seuil_charge sc3 ON 
-            sc3.histo_destruction            IS NULL
-            AND sc3.annee_id                 = sta.annee_id
-            AND sc3.scenario_id              = sta.scenario_id
-            AND sc3.type_intervention_id     = sta.type_intervention_id
-            AND sc3.structure_id             IS NULL
-            AND sc3.groupe_type_formation_id = gtf.groupe_type_formation_id
-            
-          LEFT JOIN seuil_charge sc4 ON 
-            sc4.histo_destruction            IS NULL
-            AND sc4.annee_id                 = sta.annee_id
-            AND sc4.scenario_id              = sta.scenario_id
-            AND sc4.type_intervention_id     = sta.type_intervention_id
-            AND sc4.structure_id             IS NULL
-            AND sc4.groupe_type_formation_id IS NULL
-        WHERE
-          COALESCE(sc1.dedoublement, sc2.dedoublement, sc3.dedoublement, sc4.dedoublement, 1) <> 1) tv
-      WHERE
-        ' || conds || '
 
-    ) v ON (
-            t.ANNEE_ID                 = v.ANNEE_ID
-        AND t.SCENARIO_ID              = v.SCENARIO_ID
-        AND t.STRUCTURE_ID             = v.STRUCTURE_ID
-        AND t.GROUPE_TYPE_FORMATION_ID = v.GROUPE_TYPE_FORMATION_ID
-        AND t.TYPE_INTERVENTION_ID     = v.TYPE_INTERVENTION_ID
 
-    ) WHEN MATCHED THEN UPDATE SET
+  FUNCTION GET_PRECALC_HEURES_TYPE_HEURES RETURN NUMERIC IS
+  BEGIN
+    RETURN PRECALC_HEURES_PARAMS.TYPE_HEURES_ID;
+  END;
 
-      DEDOUBLEMENT             = v.DEDOUBLEMENT,
-      to_delete = 0
 
-    WHEN NOT MATCHED THEN INSERT (
 
-      ID,
-      ANNEE_ID,
-      SCENARIO_ID,
-      STRUCTURE_ID,
-      GROUPE_TYPE_FORMATION_ID,
-      TYPE_INTERVENTION_ID,
-      DEDOUBLEMENT,
-      TO_DELETE
+  FUNCTION GET_PRECALC_HEURES_ETAPE RETURN NUMERIC IS
+  BEGIN
+    RETURN PRECALC_HEURES_PARAMS.ETAPE_ID;
+  END;
 
-    ) VALUES (
+--  FUNCTION GET_PRECALC_HEURES_NOEUD RETURN NUMERIC IS
+--  BEGIN
+
+--  END;
+
+END OSE_CHARGENS;
+/
+
+-- OSE_DIVERS
+CREATE OR REPLACE PACKAGE BODY "OSE_DIVERS" AS
+  OSE_UTILISATEUR_ID NUMERIC;
+  OSE_SOURCE_ID NUMERIC;
+
+
+
+
+PROCEDURE CALCULER_TABLEAUX_BORD IS
+BEGIN
+  FOR d IN (
+    SELECT tbl_name
+    FROM tbl
+    WHERE tbl_name <> 'formule' -- TROP LONG !!
+    ORDER BY ordre
+  )
+  LOOP
+    UNICAEN_TBL.CALCULER(d.tbl_name);
+    dbms_output.put_line('Calcul du tableau de bord "' || d.tbl_name || '" effectué');
+    COMMIT;
+  END LOOP;
+END;
+
+
+
+FUNCTION GET_OSE_UTILISATEUR_ID RETURN NUMERIC IS
+BEGIN
+  IF OSE_DIVERS.OSE_UTILISATEUR_ID IS NULL THEN
+    SELECT
+      to_number(valeur) INTO OSE_DIVERS.OSE_UTILISATEUR_ID
+    FROM
+      parametre
+    WHERE
+      nom = 'oseuser';
+  END IF;
+
+  RETURN OSE_DIVERS.OSE_UTILISATEUR_ID;
+END;
 
-      TBL_CHARGENS_SEUILS_DEF_ID_SEQ.NEXTVAL,
-      v.ANNEE_ID,
-      v.SCENARIO_ID,
-      v.STRUCTURE_ID,
-      v.GROUPE_TYPE_FORMATION_ID,
-      v.TYPE_INTERVENTION_ID,
-      v.DEDOUBLEMENT,
-      0
 
-    );
 
-    DELETE TBL_CHARGENS_SEUILS_DEF WHERE to_delete = 1 AND ' || conds || ';
+FUNCTION GET_OSE_SOURCE_ID RETURN NUMERIC IS
+BEGIN
+  IF OSE_DIVERS.OSE_SOURCE_ID IS NULL THEN
+    SELECT
+      id INTO OSE_DIVERS.OSE_SOURCE_ID
+    FROM
+      source
+    WHERE
+      code = 'OSE';
+  END IF;
 
-    END;';
+  RETURN OSE_DIVERS.OSE_SOURCE_ID;
+END;
 
-  END;
 
 
+FUNCTION INTERVENANT_HAS_PRIVILEGE( intervenant_id NUMERIC, privilege_name VARCHAR2 ) RETURN NUMERIC IS
+  statut statut_intervenant%rowtype;
+  itype  type_intervenant%rowtype;
+  res NUMERIC;
+BEGIN
+  res := 1;
+  SELECT si.* INTO statut FROM statut_intervenant si JOIN intervenant i ON i.statut_id = si.id WHERE i.id = intervenant_id;
+  SELECT ti.* INTO itype  FROM type_intervenant ti WHERE ti.id = statut.type_intervenant_id;
 
-  PROCEDURE C_CLOTURE_REALISE( PARAMS UNICAEN_TBL.T_PARAMS ) IS
-    conds CLOB;    
-  BEGIN
-    conds := params_to_conds( params );
+  /* DEPRECATED */
+  IF 'saisie_service' = privilege_name THEN
+    res := statut.peut_saisir_service;
+    RETURN res;
+  ELSIF 'saisie_service_exterieur' = privilege_name THEN
+    --IF INTERVENANT_HAS_PRIVILEGE( intervenant_id, 'saisie_service' ) = 0 OR itype.code = 'E' THEN -- cascade
+    IF itype.code = 'E' THEN
+      res := 0;
+    END IF;
+    RETURN res;
+  ELSIF 'saisie_service_referentiel' = privilege_name THEN
+    IF itype.code = 'E' THEN
+      res := 0;
+    END IF;
+    RETURN res;
+  ELSIF 'saisie_service_referentiel_autre_structure' = privilege_name THEN
+    res := 1;
+    RETURN res;
+  ELSIF 'saisie_motif_non_paiement' = privilege_name THEN
+    res := statut.peut_saisir_motif_non_paiement;
+    RETURN res;
+  END IF;
+  /* FIN DE DEPRECATED */
 
-    EXECUTE IMMEDIATE 'BEGIN
+  SELECT
+    count(*)
+  INTO
+    res
+  FROM
+    intervenant i
+    JOIN statut_privilege sp ON sp.statut_id = i.statut_id
+    JOIN privilege p ON p.id = sp.privilege_id
+    JOIN categorie_privilege cp ON cp.id = p.categorie_id
+  WHERE
+    i.id = INTERVENANT_HAS_PRIVILEGE.intervenant_id
+    AND cp.code || '-' || p.code = privilege_name;
 
-    UPDATE TBL_CLOTURE_REALISE SET to_delete = 1 WHERE ' || conds || ';
+  RETURN res;
+END;
 
-    MERGE INTO 
-      TBL_CLOTURE_REALISE t 
-    USING (
+FUNCTION implode(i_query VARCHAR2, i_seperator VARCHAR2 DEFAULT ',') RETURN VARCHAR2 AS
+  l_return CLOB:='';
+  l_temp CLOB;
+  TYPE r_cursor is REF CURSOR;
+  rc r_cursor;
+BEGIN
+  OPEN rc FOR i_query;
+  LOOP
+    FETCH rc INTO L_TEMP;
+    EXIT WHEN RC%NOTFOUND;
+    l_return:=l_return||L_TEMP||i_seperator;
+  END LOOP;
+  RETURN RTRIM(l_return,i_seperator);
+END;
 
-      SELECT
-        tv.*
-      FROM
-        (WITH t AS (
-          SELECT
-            i.annee_id              annee_id,
-            i.id                    intervenant_id,
-            si.peut_cloturer_saisie peut_cloturer_saisie,
-            CASE WHEN v.id IS NULL THEN 0 ELSE 1 END cloture
-          FROM
-                      intervenant         i
-                 JOIN statut_intervenant si ON si.id = i.statut_id
-                 JOIN type_validation    tv ON tv.code = ''CLOTURE_REALISE''
-                 
-            LEFT JOIN validation          v ON v.intervenant_id = i.id
-                                           AND v.type_validation_id = tv.id
-                                           AND v.histo_destruction IS NULL
-        
-          WHERE
-            i.histo_destruction IS NULL
-        )
-        SELECT
-          annee_id,
-          intervenant_id,
-          peut_cloturer_saisie,
-          CASE WHEN sum(cloture) = 0 THEN 0 ELSE 1 END cloture
-        FROM 
-          t
-        GROUP BY
-          annee_id,
-          intervenant_id,
-          peut_cloturer_saisie) tv
-      WHERE
-        ' || conds || '
+PROCEDURE intervenant_horodatage_service( INTERVENANT_ID NUMERIC, TYPE_VOLUME_HORAIRE_ID NUMERIC, REFERENTIEL NUMERIC, HISTO_MODIFICATEUR_ID NUMERIC, HISTO_MODIFICATION DATE ) AS
+BEGIN
+    MERGE INTO histo_intervenant_service his USING dual ON (
 
-    ) v ON (
-            t.INTERVENANT_ID = v.INTERVENANT_ID
+          his.INTERVENANT_ID                = intervenant_horodatage_service.INTERVENANT_ID
+      AND NVL(his.TYPE_VOLUME_HORAIRE_ID,0) = NVL(intervenant_horodatage_service.TYPE_VOLUME_HORAIRE_ID,0)
+      AND his.REFERENTIEL                   = intervenant_horodatage_service.REFERENTIEL
 
     ) WHEN MATCHED THEN UPDATE SET
 
-      ANNEE_ID             = v.ANNEE_ID,
-      PEUT_CLOTURER_SAISIE = v.PEUT_CLOTURER_SAISIE,
-      CLOTURE              = v.CLOTURE,
-      to_delete = 0
+      HISTO_MODIFICATEUR_ID = intervenant_horodatage_service.HISTO_MODIFICATEUR_ID,
+      HISTO_MODIFICATION = intervenant_horodatage_service.HISTO_MODIFICATION
 
     WHEN NOT MATCHED THEN INSERT (
 
       ID,
-      ANNEE_ID,
       INTERVENANT_ID,
-      PEUT_CLOTURER_SAISIE,
-      CLOTURE,
-      TO_DELETE
-
+      TYPE_VOLUME_HORAIRE_ID,
+      REFERENTIEL,
+      HISTO_MODIFICATEUR_ID,
+      HISTO_MODIFICATION
     ) VALUES (
-
-      TBL_CLOTURE_REALISE_ID_SEQ.NEXTVAL,
-      v.ANNEE_ID,
-      v.INTERVENANT_ID,
-      v.PEUT_CLOTURER_SAISIE,
-      v.CLOTURE,
-      0
+      HISTO_INTERVENANT_SERVI_ID_SEQ.NEXTVAL,
+      intervenant_horodatage_service.INTERVENANT_ID,
+      intervenant_horodatage_service.TYPE_VOLUME_HORAIRE_ID,
+      intervenant_horodatage_service.REFERENTIEL,
+      intervenant_horodatage_service.HISTO_MODIFICATEUR_ID,
+      intervenant_horodatage_service.HISTO_MODIFICATION
 
     );
-
-    DELETE TBL_CLOTURE_REALISE WHERE to_delete = 1 AND ' || conds || ';
-
-    END;';
-
-  END;
+END;
 
 
+FUNCTION NIVEAU_FORMATION_ID_CALC( gtf_id NUMERIC, gtf_pertinence_niveau NUMERIC, niveau NUMERIC DEFAULT NULL ) RETURN NUMERIC AS
+BEGIN
+  IF 1 <> gtf_pertinence_niveau OR niveau IS NULL OR niveau < 1 OR gtf_id < 1 THEN RETURN NULL; END IF;
+  RETURN gtf_id * 256 + niveau;
+END;
 
-  PROCEDURE C_CONTRAT( PARAMS UNICAEN_TBL.T_PARAMS ) IS
-    conds CLOB;    
-  BEGIN
-    conds := params_to_conds( params );
+FUNCTION STR_REDUCE( str CLOB ) RETURN CLOB IS
+BEGIN
+  RETURN utl_raw.cast_to_varchar2((nlssort(str, 'nls_sort=binary_ai')));
+END;
 
-    EXECUTE IMMEDIATE 'BEGIN
+FUNCTION STR_FIND( haystack CLOB, needle VARCHAR2 ) RETURN NUMERIC IS
+BEGIN
+  IF STR_REDUCE( haystack ) LIKE STR_REDUCE( '%' || needle || '%' ) THEN RETURN 1; END IF;
+  RETURN 0;
+END;
 
-    UPDATE TBL_CONTRAT SET to_delete = 1 WHERE ' || conds || ';
+FUNCTION LIKED( haystack CLOB, needle CLOB ) RETURN NUMERIC IS
+BEGIN
+  RETURN CASE WHEN STR_REDUCE(haystack) LIKE STR_REDUCE(needle) THEN 1 ELSE 0 END;
+END;
 
-    MERGE INTO 
-      TBL_CONTRAT t 
-    USING (
+PROCEDURE DO_NOTHING IS
+BEGIN
+  RETURN;
+END;
 
-      SELECT
-        tv.*
-      FROM
-        (WITH t AS (
-          SELECT 
-            i.annee_id                                                                annee_id,
-            i.id                                                                      intervenant_id,
-            si.peut_avoir_contrat                                                     peut_avoir_contrat,
-            NVL(ep.structure_id, i.structure_id)                                      structure_id,
-            CASE WHEN evh.code IN (''contrat-edite'',''contrat-signe'') THEN 1 ELSE 0 END edite,
-            CASE WHEN evh.code IN (''contrat-signe'')                 THEN 1 ELSE 0 END signe
-          FROM
-                      intervenant                 i
-                      
-                 JOIN statut_intervenant         si ON si.id = i.statut_id
-                 
-                 JOIN service                     s ON s.intervenant_id = i.id
-                                                   AND s.histo_destruction IS NULL
-                 
-                 JOIN type_volume_horaire       tvh ON tvh.code = ''PREVU''
-                 
-                 JOIN volume_horaire             vh ON vh.service_id = s.id
-                                                   AND vh.histo_destruction IS NULL
-                                                   AND vh.heures <> 0
-                                                   AND vh.type_volume_horaire_id = tvh.id
-            
-                 JOIN v_volume_horaire_etat     vhe ON vhe.volume_horaire_id = vh.id
-                 
-                 JOIN etat_volume_horaire       evh ON evh.id = vhe.etat_volume_horaire_id
-                                                   AND evh.code IN (''valide'', ''contrat-edite'', ''contrat-signe'')
-          
-                 JOIN element_pedagogique        ep ON ep.id = s.element_pedagogique_id
-            
-          WHERE
-            i.histo_destruction IS NULL
-            AND NOT (si.peut_avoir_contrat = 0 AND evh.code = ''valide'')
-            
-          UNION ALL
-          
-          SELECT 
-            i.annee_id                                                                annee_id,
-            i.id                                                                      intervenant_id,
-            si.peut_avoir_contrat                                                     peut_avoir_contrat,
-            s.structure_id                                                            structure_id,
-            CASE WHEN evh.code IN (''contrat-edite'',''contrat-signe'') THEN 1 ELSE 0 END edite,
-            CASE WHEN evh.code IN (''contrat-signe'')                 THEN 1 ELSE 0 END signe
-          FROM
-                      intervenant                 i
-                      
-                 JOIN statut_intervenant         si ON si.id = i.statut_id
-                 
-                 JOIN service_referentiel         s ON s.intervenant_id = i.id
-                                                   AND s.histo_destruction IS NULL
-                 
-                 JOIN type_volume_horaire       tvh ON tvh.code = ''PREVU''
-                 
-                 JOIN volume_horaire_ref         vh ON vh.service_referentiel_id = s.id
-                                                   AND vh.histo_destruction IS NULL
-                                                   AND vh.heures <> 0
-                                                   AND vh.type_volume_horaire_id = tvh.id
-            
-                 JOIN v_volume_horaire_ref_etat vhe ON vhe.volume_horaire_ref_id = vh.id
-                 
-                 JOIN etat_volume_horaire       evh ON evh.id = vhe.etat_volume_horaire_id
-                                                   AND evh.code IN (''valide'', ''contrat-edite'', ''contrat-signe'')
-          
-          WHERE
-            i.histo_destruction IS NULL
-            AND NOT (si.peut_avoir_contrat = 0 AND evh.code = ''valide'')
-        )
-        SELECT
-          annee_id,
-          intervenant_id,
-          peut_avoir_contrat,
-          structure_id,
-          count(*) as nbvh,
-          sum(edite) as edite,
-          sum(signe) as signe
-        FROM
-          t
-        GROUP BY
-          annee_id,
-          intervenant_id,
-          peut_avoir_contrat,
-          structure_id) tv
-      WHERE
-        ' || conds || '
+PROCEDURE CALCUL_TAUX( eff_fi FLOAT, eff_fc FLOAT, eff_fa FLOAT, fi NUMERIC, fc NUMERIC, fa NUMERIC, r_fi OUT FLOAT, r_fc OUT FLOAT, r_fa OUT FLOAT, arrondi NUMERIC DEFAULT 15 ) IS
+  nt FLOAT;
+  bi FLOAT;
+  bc FLOAT;
+  ba FLOAT;
+  reste FLOAT;
+BEGIN
+  bi := eff_fi * fi;
+  bc := eff_fc * fc;
+  ba := eff_fa * fa;
+  nt := bi + bc + ba;
 
-    ) v ON (
-            t.INTERVENANT_ID = v.INTERVENANT_ID
-        AND COALESCE(t.STRUCTURE_ID,0) = COALESCE(v.STRUCTURE_ID,0)
+  IF nt = 0 THEN -- au cas ou, alors on ne prend plus en compte les effectifs!!
+    bi := fi;
+    bc := fc;
+    ba := fa;
+    nt := bi + bc + ba;
+  END IF;
 
-    ) WHEN MATCHED THEN UPDATE SET
+  IF nt = 0 THEN -- toujours au cas ou...
+    bi := 1;
+    bc := 0;
+    ba := 0;
+    nt := bi + bc + ba;
+  END IF;
 
-      ANNEE_ID           = v.ANNEE_ID,
-      PEUT_AVOIR_CONTRAT = v.PEUT_AVOIR_CONTRAT,
-      NBVH               = v.NBVH,
-      EDITE              = v.EDITE,
-      SIGNE              = v.SIGNE,
-      to_delete = 0
+  -- Calcul
+  r_fi := bi / nt;
+  r_fc := bc / nt;
+  r_fa := ba / nt;
 
-    WHEN NOT MATCHED THEN INSERT (
+  -- Arrondis
+  r_fi := ROUND( r_fi, arrondi );
+  r_fc := ROUND( r_fc, arrondi );
+  r_fa := ROUND( r_fa, arrondi );
 
-      ID,
-      ANNEE_ID,
-      INTERVENANT_ID,
-      PEUT_AVOIR_CONTRAT,
-      STRUCTURE_ID,
-      NBVH,
-      EDITE,
-      SIGNE,
-      TO_DELETE
+  -- détermination du reste
+  reste := 1 - r_fi - r_fc - r_fa;
 
-    ) VALUES (
+  -- répartition éventuelle du reste
+  IF reste <> 0 THEN
+    IF r_fi > 0 THEN r_fi := r_fi + reste;
+    ELSIF r_fc > 0 THEN r_fc := r_fc + reste;
+    ELSE r_fa := r_fa + reste; END IF;
+  END IF;
 
-      TBL_CONTRAT_ID_SEQ.NEXTVAL,
-      v.ANNEE_ID,
-      v.INTERVENANT_ID,
-      v.PEUT_AVOIR_CONTRAT,
-      v.STRUCTURE_ID,
-      v.NBVH,
-      v.EDITE,
-      v.SIGNE,
-      0
+END;
 
-    );
 
-    DELETE TBL_CONTRAT WHERE to_delete = 1 AND ' || conds || ';
+FUNCTION CALCUL_TAUX_FI( eff_fi FLOAT, eff_fc FLOAT, eff_fa FLOAT, fi NUMERIC, fc NUMERIC, fa NUMERIC, arrondi NUMERIC DEFAULT 15 ) RETURN FLOAT IS
+  ri FLOAT;
+  rc FLOAT;
+  ra FLOAT;
+BEGIN
+  CALCUL_TAUX( eff_fi, eff_fc, eff_fa, fi, fc, fa, ri, rc, ra, arrondi );
+  RETURN ri;
+END;
 
-    END;';
+FUNCTION CALCUL_TAUX_FC( eff_fi FLOAT, eff_fc FLOAT, eff_fa FLOAT, fi NUMERIC, fc NUMERIC, fa NUMERIC, arrondi NUMERIC DEFAULT 15 ) RETURN FLOAT IS
+  ri FLOAT;
+  rc FLOAT;
+  ra FLOAT;
+BEGIN
+  CALCUL_TAUX( eff_fi, eff_fc, eff_fa, fi, fc, fa, ri, rc, ra, arrondi );
+  RETURN rc;
+END;
 
-  END;
+FUNCTION CALCUL_TAUX_FA( eff_fi FLOAT, eff_fc FLOAT, eff_fa FLOAT, fi NUMERIC, fc NUMERIC, fa NUMERIC, arrondi NUMERIC DEFAULT 15 ) RETURN FLOAT IS
+  ri FLOAT;
+  rc FLOAT;
+  ra FLOAT;
+BEGIN
+  CALCUL_TAUX( eff_fi, eff_fc, eff_fa, fi, fc, fa, ri, rc, ra, arrondi );
+  RETURN ra;
+END;
 
+FUNCTION STRUCTURE_UNIV_GET_ID RETURN NUMERIC IS
+  res NUMERIC;
+BEGIN
+  SELECT id INTO res FROM structure WHERE source_code = 'UNIV';
+  RETURN res;
+END;
 
+PROCEDURE SYNC_LOG( msg CLOB ) IS
+BEGIN
+  INSERT INTO SYNC_LOG( id, date_sync, message ) VALUES ( sync_log_id_seq.nextval, systimestamp, msg );
+END;
 
-  PROCEDURE C_DMEP_LIQUIDATION( PARAMS UNICAEN_TBL.T_PARAMS ) IS
-    conds CLOB;    
-  BEGIN
-    conds := params_to_conds( params );
+FUNCTION FORMATTED_RIB (bic VARCHAR2, iban VARCHAR2) RETURN VARCHAR2 IS
+BEGIN
+  if bic is null and iban is null then
+    return null;
+  end if;
+  RETURN regexp_replace(bic, '[[:space:]]+', '') || '-' || regexp_replace(iban, '[[:space:]]+', '');
+END;
 
-    EXECUTE IMMEDIATE 'BEGIN
+FUNCTION FORMATTED_ADRESSE(
+    no_voie                VARCHAR2,
+    nom_voie               VARCHAR2,
+    batiment               VARCHAR2,
+    mention_complementaire VARCHAR2,
+    localite               VARCHAR2,
+    code_postal            VARCHAR2,
+    ville                  VARCHAR2,
+    pays_libelle           VARCHAR2)
+  RETURN VARCHAR2
+IS
+BEGIN
+  return
+    -- concaténation des éléments non null séparés par ', '
+    trim(trim(',' FROM REPLACE(', ' || NVL(no_voie,'#') || ', ' || NVL(nom_voie,'#') || ', ' || NVL(batiment,'#') || ', ' || NVL(mention_complementaire,'#'), ', #', ''))) ||
+    -- saut de ligne complet
+    chr(13) || chr(10) ||
+    -- concaténation des éléments non null séparés par ', '
+    trim(trim(',' FROM REPLACE(', ' || NVL(localite,'#') || ', ' || NVL(code_postal,'#') || ', ' || NVL(ville,'#') || ', ' || NVL(pays_libelle,'#'), ', #', '')));
+END;
 
-    UPDATE TBL_DMEP_LIQUIDATION SET to_delete = 1 WHERE ' || conds || ';
 
-    MERGE INTO 
-      TBL_DMEP_LIQUIDATION t 
-    USING (
 
-      SELECT
-        tv.*
-      FROM
-        (SELECT
-          annee_id,
-          type_ressource_id,
-          structure_id,
-          SUM(heures) heures
-        FROM
-        (
-          SELECT
-            i.annee_id,
-            cc.type_ressource_id,
-            COALESCE( ep.structure_id, i.structure_id ) structure_id,
-            mep.heures
-          FROM
-                      mise_en_paiement         mep
-                 JOIN centre_cout               cc ON cc.id = mep.centre_cout_id
-                 JOIN formule_resultat_service frs ON frs.id = mep.formule_res_service_id
-                 JOIN service                    s ON s.id = frs.service_id
-                 JOIN intervenant                i ON i.id = s.intervenant_id
-            LEFT JOIN element_pedagogique       ep ON ep.id = s.element_pedagogique_id
-          WHERE
-            mep.histo_destruction IS NULL
-            
-          UNION ALL
-          
-          SELECT
-            i.annee_id,
-            cc.type_ressource_id,
-            sr.structure_id structure_id,
-            heures
-          FROM
-                      mise_en_paiement              mep
-                 JOIN centre_cout                    cc ON cc.id = mep.centre_cout_id
-                 JOIN formule_resultat_service_ref frsr ON frsr.id = mep.formule_res_service_ref_id
-                 JOIN service_referentiel            sr ON sr.id = frsr.service_referentiel_id
-                 JOIN intervenant                     i ON i.id = sr.intervenant_id
-            
-          WHERE
-            mep.histo_destruction IS NULL
-        
-        ) t1
-        GROUP BY
-          annee_id, type_ressource_id, structure_id) tv
-      WHERE
-        ' || conds || '
+FUNCTION GET_TRIGGER_BODY( TRIGGER_NAME VARCHAR2 ) RETURN VARCHAR2 IS
+  vlong long;
+BEGIN
+  SELECT trigger_body INTO vlong FROM all_triggers WHERE trigger_name = GET_TRIGGER_BODY.TRIGGER_NAME;
 
-    ) v ON (
-            t.ANNEE_ID          = v.ANNEE_ID
-        AND t.TYPE_RESSOURCE_ID = v.TYPE_RESSOURCE_ID
-        AND t.STRUCTURE_ID      = v.STRUCTURE_ID
+  RETURN substr(vlong, 1, 32767);
+END;
 
-    ) WHEN MATCHED THEN UPDATE SET
+END OSE_DIVERS;
+/
 
-      HEURES            = v.HEURES,
-      to_delete = 0
+-- OSE_EVENT
+CREATE OR REPLACE PACKAGE BODY "OSE_EVENT" AS
 
-    WHEN NOT MATCHED THEN INSERT (
+  PROCEDURE ON_BEFORE_FORMULE_RES_DELETE( INTERVENANT_ID NUMERIC ) IS
+  BEGIN
 
-      ID,
-      ANNEE_ID,
-      TYPE_RESSOURCE_ID,
-      STRUCTURE_ID,
-      HEURES,
-      TO_DELETE
+    -- recherche des services à payer prêts à être supprimés pour cet intervenant et check
+    FOR sap IN (
+      SELECT
+        frs.id
+      FROM
+        FORMULE_RESULTAT_SERVICE frs
+        JOIN FORMULE_RESULTAT fr ON fr.id = frs.formule_resultat_id AND fr.intervenant_id = ON_BEFORE_FORMULE_RES_DELETE.intervenant_id
+        JOIN TYPE_VOLUME_HORAIRE tvh ON tvh.id = fr.type_volume_horaire_id AND tvh.code = 'REALISE'
+        JOIN ETAT_VOLUME_HORAIRE evh ON evh.id = fr.etat_volume_horaire_id AND evh.code = 'valide'
+      WHERE
+        frs.TO_DELETE = 1
+    )
+    LOOP
+      OSE_PAIEMENT.CHECK_BAD_PAIEMENTS( sap.id );
+    END LOOP;
 
-    ) VALUES (
+    FOR sap IN (
+      SELECT
+        frs.id
+      FROM
+        FORMULE_RESULTAT_SERVICE_REF frs
+        JOIN FORMULE_RESULTAT fr ON fr.id = frs.formule_resultat_id AND fr.intervenant_id = ON_BEFORE_FORMULE_RES_DELETE.intervenant_id
+        JOIN TYPE_VOLUME_HORAIRE tvh ON tvh.id = fr.type_volume_horaire_id AND tvh.code = 'REALISE'
+        JOIN ETAT_VOLUME_HORAIRE evh ON evh.id = fr.etat_volume_horaire_id AND evh.code = 'valide'
+      WHERE
+        frs.TO_DELETE = 1
+    )
+    LOOP
+      OSE_PAIEMENT.CHECK_BAD_PAIEMENTS( null, sap.id );
+    END LOOP;
 
-      TBL_DMEP_LIQUIDATION_ID_SEQ.NEXTVAL,
-      v.ANNEE_ID,
-      v.TYPE_RESSOURCE_ID,
-      v.STRUCTURE_ID,
-      v.HEURES,
-      0
+    DELETE FROM MISE_EN_PAIEMENT WHERE histo_destruction IS NOT NULL AND
+      formule_res_service_id IN (
+        SELECT frs.id
+        FROM
+          formule_resultat_service frs
+          JOIN formule_resultat fr ON fr.id = frs.formule_resultat_id
+        WHERE
+          frs.to_delete = 1
+          AND fr.intervenant_id = ON_BEFORE_FORMULE_RES_DELETE.INTERVENANT_ID
+      );
+
+    DELETE FROM MISE_EN_PAIEMENT WHERE histo_destruction IS NOT NULL AND
+      formule_res_service_ref_id IN (
+        SELECT frsr.id
+        FROM
+          formule_resultat_service_ref frsr
+          JOIN formule_resultat fr ON fr.id = frsr.formule_resultat_id
+        WHERE
+          frsr.to_delete = 1
+          AND fr.intervenant_id = ON_BEFORE_FORMULE_RES_DELETE.INTERVENANT_ID
+      );
+  END;
 
-    );
 
-    DELETE TBL_DMEP_LIQUIDATION WHERE to_delete = 1 AND ' || conds || ';
 
-    END;';
+  PROCEDURE ON_AFTER_FORMULE_CALC( INTERVENANT_ID NUMERIC ) IS
+    p unicaen_tbl.t_params;
+  BEGIN
+    p := UNICAEN_TBL.make_params('INTERVENANT_ID', ON_AFTER_FORMULE_CALC.intervenant_id);
 
+    UNICAEN_TBL.CALCULER( 'agrement', p );
+    UNICAEN_TBL.CALCULER( 'paiement', p );
+    UNICAEN_TBL.CALCULER( 'workflow', p );
   END;
 
+END OSE_EVENT;
+/
 
+-- OSE_FORMULE
+CREATE OR REPLACE PACKAGE BODY "OSE_FORMULE" AS
 
-  PROCEDURE C_DOSSIER( PARAMS UNICAEN_TBL.T_PARAMS ) IS
-    conds CLOB;    
-  BEGIN
-    conds := params_to_conds( params );
-
-    EXECUTE IMMEDIATE 'BEGIN
+  v_date_obs DATE;
+  debug_level NUMERIC DEFAULT 0;
+  d_all_volume_horaire_ref  t_lst_volume_horaire_ref;
+  d_all_volume_horaire      t_lst_volume_horaire;
+  arrondi NUMERIC DEFAULT 2;
 
-    UPDATE TBL_DOSSIER SET to_delete = 1 WHERE ' || conds || ';
+  INTERVENANT_ID NUMERIC DEFAULT NULL;
 
-    MERGE INTO 
-      TBL_DOSSIER t 
-    USING (
+  FUNCTION GET_INTERVENANT_ID RETURN NUMERIC IS
+  BEGIN
+    RETURN INTERVENANT_ID;
+  END;
 
-      SELECT
-        tv.*
-      FROM
-        (SELECT
-          i.annee_id,
-          i.id intervenant_id,
-          si.peut_saisir_dossier,
-          d.id dossier_id,
-          v.id validation_id
-        FROM
-                    intervenant         i
-               JOIN statut_intervenant si ON si.id = i.statut_id
-          LEFT JOIN dossier             d ON d.intervenant_id = i.id
-                                      AND d.histo_destruction IS NULL
-          
-               JOIN type_validation tv ON tv.code = ''DONNEES_PERSO_PAR_COMP''
-          LEFT JOIN validation       v ON v.intervenant_id = i.id
-                                      AND v.type_validation_id = tv.id
-                                      AND v.histo_destruction IS NULL
-        WHERE
-          i.histo_destruction IS NULL) tv
-      WHERE
-        ' || conds || '
+  FUNCTION GET_DATE_OBS RETURN DATE AS
+  BEGIN
+    RETURN COALESCE( v_date_obs, SYSDATE );
+  END;
 
-    ) v ON (
-            t.INTERVENANT_ID = v.INTERVENANT_ID
+  FUNCTION SET_DATE_OBS( DATE_OBS DATE DEFAULT NULL ) RETURN DATE IS
+  BEGIN
+    v_date_obs := DATE_OBS;
+    RETURN v_date_obs;
+  END;
 
-    ) WHEN MATCHED THEN UPDATE SET
+  PROCEDURE SET_DEBUG_LEVEL( DEBUG_LEVEL NUMERIC ) IS
+  BEGIN
+    ose_formule.debug_level := SET_DEBUG_LEVEL.DEBUG_LEVEL;
+  END;
 
-      ANNEE_ID            = v.ANNEE_ID,
-      PEUT_SAISIR_DOSSIER = v.PEUT_SAISIR_DOSSIER,
-      DOSSIER_ID          = v.DOSSIER_ID,
-      VALIDATION_ID       = v.VALIDATION_ID,
-      to_delete = 0
+  FUNCTION GET_DEBUG_LEVEL RETURN NUMERIC IS
+  BEGIN
+    RETURN ose_formule.debug_level;
+  END;
 
-    WHEN NOT MATCHED THEN INSERT (
+  FUNCTION GET_TAUX_HORAIRE_HETD( DATE_OBS DATE DEFAULT NULL ) RETURN FLOAT IS
+    taux_hetd FLOAT;
+  BEGIN
+    SELECT valeur INTO taux_hetd
+    FROM taux_horaire_hetd t
+    WHERE
+      DATE_OBS BETWEEN t.histo_creation AND COALESCE(t.histo_destruction,GREATEST(SYSDATE,DATE_OBS))
+      AND rownum = 1
+    ORDER BY
+      histo_creation DESC;
+    RETURN taux_hetd;
+  END;
 
-      ID,
-      ANNEE_ID,
-      INTERVENANT_ID,
-      PEUT_SAISIR_DOSSIER,
-      DOSSIER_ID,
-      VALIDATION_ID,
-      TO_DELETE
+  PROCEDURE UPDATE_ANNEE_TAUX_HETD IS
+  BEGIN
+    UPDATE annee SET taux_hetd = GET_TAUX_HORAIRE_HETD(date_fin);
+  END;
 
-    ) VALUES (
 
-      TBL_DOSSIER_ID_SEQ.NEXTVAL,
-      v.ANNEE_ID,
-      v.INTERVENANT_ID,
-      v.PEUT_SAISIR_DOSSIER,
-      v.DOSSIER_ID,
-      v.VALIDATION_ID,
-      0
 
-    );
+  PROCEDURE CALCULER_TOUT( ANNEE_ID NUMERIC DEFAULT NULL ) IS
+    a_id NUMERIC;
+  BEGIN
+    a_id := NVL(CALCULER_TOUT.ANNEE_ID, OSE_PARAMETRE.GET_ANNEE);
+    FOR mp IN (
+      SELECT DISTINCT
+        intervenant_id
+      FROM
+        service s
+        JOIN intervenant i ON i.id = s.intervenant_id
+      WHERE
+        s.histo_destruction IS NULL
+        AND i.annee_id = a_id
 
-    DELETE TBL_DOSSIER WHERE to_delete = 1 AND ' || conds || ';
+      UNION
 
-    END;';
+      SELECT DISTINCT
+        intervenant_id
+      FROM
+        service_referentiel sr
+        JOIN intervenant i ON i.id = sr.intervenant_id
+      WHERE
+        sr.histo_destruction IS NULL
+        AND i.annee_id = a_id
 
+    )
+    LOOP
+      CALCULER( mp.intervenant_id );
+    END LOOP;
   END;
 
 
 
-  PROCEDURE C_PAIEMENT( PARAMS UNICAEN_TBL.T_PARAMS ) IS
-    conds CLOB;    
+  FUNCTION ENREGISTRER_RESULTAT( fr formule_resultat%rowtype ) RETURN NUMERIC IS
+    id NUMERIC;
+    ti_code VARCHAR(5);
   BEGIN
-    conds := params_to_conds( params );
 
-    EXECUTE IMMEDIATE 'BEGIN
+    SELECT
+      ti.code INTO ti_code
+    FROM
+      type_intervenant        ti
+      JOIN statut_intervenant si ON si.type_intervenant_id = ti.id
+      JOIN intervenant         i ON i.statut_id = si.id
+    WHERE
+      i.id = fr.intervenant_id;
 
-    UPDATE TBL_PAIEMENT SET to_delete = 1 WHERE ' || conds || ';
 
-    MERGE INTO 
-      TBL_PAIEMENT t 
-    USING (
 
-      SELECT
-        tv.*
-      FROM
-        (SELECT
-          i.annee_id                                  annee_id,
-          frs.id                                      formule_res_service_id,
-          null                                        formule_res_service_ref_id,
-          i.id                                        intervenant_id,
-          COALESCE( ep.structure_id, i.structure_id ) structure_id,
-          mep.id                                      mise_en_paiement_id,
-          mep.periode_paiement_id                     periode_paiement_id,
-          frs.heures_compl_fi + frs.heures_compl_fc + frs.heures_compl_fa + frs.heures_compl_fc_majorees heures_a_payer,
-          count(*) OVER(PARTITION BY frs.id)          heures_a_payer_pond,
-          NVL(mep.heures,0)                           heures_demandees,
-          CASE WHEN mep.periode_paiement_id IS NULL THEN 0 ELSE mep.heures END heures_payees
-        FROM
-                    formule_resultat_service        frs
-               JOIN type_volume_horaire             tvh ON tvh.code = ''REALISE''
-               JOIN etat_volume_horaire             evh ON evh.code = ''valide''
-               JOIN formule_resultat                 fr ON fr.id = frs.formule_resultat_id
-                                                       AND fr.type_volume_horaire_id = tvh.id
-                                                       AND fr.etat_volume_horaire_id = evh.id
-        
-               JOIN intervenant                       i ON i.id = fr.intervenant_id  
-               JOIN service                           s ON s.id = frs.service_id
-          LEFT JOIN element_pedagogique              ep ON ep.id = s.element_pedagogique_id
-          LEFT JOIN mise_en_paiement                mep ON mep.formule_res_service_id = frs.id
-                                                       AND mep.histo_destruction IS NULL
-        
-        UNION ALL
-        
-        SELECT
-          i.annee_id                                  annee_id,
-          null                                        formule_res_service_id,
-          frs.id                                      formule_res_service_ref_id,
-          i.id                                        intervenant_id,
-          s.structure_id                              structure_id,
-          mep.id                                      mise_en_paiement_id,
-          mep.periode_paiement_id                     periode_paiement_id,
-          frs.heures_compl_referentiel                heures_a_payer,
-          count(*) OVER(PARTITION BY frs.id)          heures_a_payer_pond,
-          NVL(mep.heures,0)                           heures_demandees,
-          CASE WHEN mep.periode_paiement_id IS NULL THEN 0 ELSE mep.heures END heures_payees
-        FROM
-                    formule_resultat_service_ref    frs
-               JOIN type_volume_horaire             tvh ON tvh.code = ''REALISE''
-               JOIN etat_volume_horaire             evh ON evh.code = ''valide''
-               JOIN formule_resultat                 fr ON fr.id = frs.formule_resultat_id
-                                                       AND fr.type_volume_horaire_id = tvh.id
-                                                       AND fr.etat_volume_horaire_id = evh.id
-        
-               JOIN intervenant                       i ON i.id = fr.intervenant_id  
-               JOIN service_referentiel               s ON s.id = frs.service_referentiel_id
-          LEFT JOIN mise_en_paiement                mep ON mep.formule_res_service_ref_id = frs.id
-                                                       AND mep.histo_destruction IS NULL) tv
-      WHERE
-        ' || conds || '
+    MERGE INTO formule_resultat tfr USING dual ON (
 
-    ) v ON (
-            t.INTERVENANT_ID             = v.INTERVENANT_ID
-        AND COALESCE(t.MISE_EN_PAIEMENT_ID,0) = COALESCE(v.MISE_EN_PAIEMENT_ID,0)
-        AND COALESCE(t.FORMULE_RES_SERVICE_ID,0) = COALESCE(v.FORMULE_RES_SERVICE_ID,0)
-        AND COALESCE(t.FORMULE_RES_SERVICE_REF_ID,0) = COALESCE(v.FORMULE_RES_SERVICE_REF_ID,0)
+          tfr.intervenant_id         = fr.intervenant_id
+      AND tfr.type_volume_horaire_id = fr.type_volume_horaire_id
+      AND tfr.etat_volume_horaire_id = fr.etat_volume_horaire_id
 
     ) WHEN MATCHED THEN UPDATE SET
 
-      ANNEE_ID                   = v.ANNEE_ID,
-      STRUCTURE_ID               = v.STRUCTURE_ID,
-      PERIODE_PAIEMENT_ID        = v.PERIODE_PAIEMENT_ID,
-      HEURES_A_PAYER             = v.HEURES_A_PAYER,
-      HEURES_A_PAYER_POND        = v.HEURES_A_PAYER_POND,
-      HEURES_DEMANDEES           = v.HEURES_DEMANDEES,
-      HEURES_PAYEES              = v.HEURES_PAYEES,
-      to_delete = 0
+      service_du                     = ROUND( fr.service_du, arrondi ),
+      service_fi                     = ROUND( fr.service_fi, arrondi ),
+      service_fa                     = ROUND( fr.service_fa, arrondi ),
+      service_fc                     = ROUND( fr.service_fc, arrondi ),
+      service_referentiel            = ROUND( fr.service_referentiel, arrondi ),
+      heures_compl_fi                = ROUND( fr.heures_compl_fi, arrondi ),
+      heures_compl_fa                = ROUND( fr.heures_compl_fa, arrondi ),
+      heures_compl_fc                = ROUND( fr.heures_compl_fc, arrondi ),
+      heures_compl_fc_majorees       = ROUND( fr.heures_compl_fc_majorees, arrondi ),
+      heures_compl_referentiel       = ROUND( fr.heures_compl_referentiel, arrondi ),
+      total                          = ROUND( fr.total, arrondi ),
+      solde                          = ROUND( fr.solde, arrondi ),
+      sous_service                   = ROUND( fr.sous_service, arrondi ),
+      heures_compl                   = ROUND( fr.heures_compl, arrondi ),
+      to_delete                      = 0
 
     WHEN NOT MATCHED THEN INSERT (
 
       ID,
-      ANNEE_ID,
       INTERVENANT_ID,
-      STRUCTURE_ID,
-      MISE_EN_PAIEMENT_ID,
-      PERIODE_PAIEMENT_ID,
-      HEURES_A_PAYER,
-      HEURES_A_PAYER_POND,
-      HEURES_DEMANDEES,
-      HEURES_PAYEES,
-      FORMULE_RES_SERVICE_ID,
-      FORMULE_RES_SERVICE_REF_ID,
-      TO_DELETE
+      TYPE_VOLUME_HORAIRE_ID,
+      ETAT_VOLUME_HORAIRE_ID,
+      SERVICE_DU,
+      SERVICE_FI,
+      SERVICE_FA,
+      SERVICE_FC,
+      SERVICE_REFERENTIEL,
+      HEURES_COMPL_FI,
+      HEURES_COMPL_FA,
+      HEURES_COMPL_FC,
+      HEURES_COMPL_FC_majorees,
+      HEURES_COMPL_REFERENTIEL,
+      TOTAL,
+      SOLDE,
+      SOUS_SERVICE,
+      HEURES_COMPL,
+      TO_DELETE,
+      type_intervenant_code
 
     ) VALUES (
 
-      TBL_PAIEMENT_ID_SEQ.NEXTVAL,
-      v.ANNEE_ID,
-      v.INTERVENANT_ID,
-      v.STRUCTURE_ID,
-      v.MISE_EN_PAIEMENT_ID,
-      v.PERIODE_PAIEMENT_ID,
-      v.HEURES_A_PAYER,
-      v.HEURES_A_PAYER_POND,
-      v.HEURES_DEMANDEES,
-      v.HEURES_PAYEES,
-      v.FORMULE_RES_SERVICE_ID,
-      v.FORMULE_RES_SERVICE_REF_ID,
-      0
-
+      FORMULE_RESULTAT_ID_SEQ.NEXTVAL,
+      fr.intervenant_id,
+      fr.type_volume_horaire_id,
+      fr.etat_volume_horaire_id,
+      ROUND( fr.service_du, arrondi ),
+      ROUND( fr.service_fi, arrondi ),
+      ROUND( fr.service_fa, arrondi ),
+      ROUND( fr.service_fc, arrondi ),
+      ROUND( fr.service_referentiel, arrondi ),
+      ROUND( fr.heures_compl_fi, arrondi ),
+      ROUND( fr.heures_compl_fa, arrondi ),
+      ROUND( fr.heures_compl_fc, arrondi ),
+      ROUND( fr.heures_compl_fc_majorees, arrondi ),
+      ROUND( fr.heures_compl_referentiel, arrondi ),
+      ROUND( fr.total, arrondi ),
+      ROUND( fr.solde, arrondi ),
+      ROUND( fr.sous_service, arrondi ),
+      ROUND( fr.heures_compl, arrondi ),
+      0,
+      ti_code
     );
 
-    DELETE TBL_PAIEMENT WHERE to_delete = 1 AND ' || conds || ';
-
-    END;';
-
+    SELECT id INTO id FROM formule_resultat tfr WHERE
+          tfr.intervenant_id         = fr.intervenant_id
+      AND tfr.type_volume_horaire_id = fr.type_volume_horaire_id
+      AND tfr.etat_volume_horaire_id = fr.etat_volume_horaire_id;
+    RETURN id;
   END;
 
 
-
-  PROCEDURE C_PIECE_JOINTE( PARAMS UNICAEN_TBL.T_PARAMS ) IS
-    conds CLOB;    
+  FUNCTION ENREGISTRER_RESULTAT_SERVICE( fs formule_resultat_service%rowtype ) RETURN NUMERIC IS
+    id NUMERIC;
   BEGIN
-    conds := params_to_conds( params );
-
-    EXECUTE IMMEDIATE 'BEGIN
-
-    UPDATE TBL_PIECE_JOINTE SET to_delete = 1 WHERE ' || conds || ';
-
-    MERGE INTO 
-      TBL_PIECE_JOINTE t 
-    USING (
-
-      SELECT
-        tv.*
-      FROM
-        (WITH pjf AS (
-          SELECT
-            pjf.annee_id,
-            pjf.type_piece_jointe_id,
-            pjf.intervenant_id,
-            COUNT(*) count,
-            SUM(CASE WHEN validation_id IS NULL THEN 0 ELSE 1 END) validation,
-            SUM(CASE WHEN fichier_id IS NULL THEN 0 ELSE 1 END) fichier
-          FROM
-            tbl_piece_jointe_fournie pjf
-          GROUP BY
-            pjf.annee_id,
-            pjf.type_piece_jointe_id,
-            pjf.intervenant_id
-        )
-        SELECT
-          NVL( pjd.annee_id, pjf.annee_id ) annee_id,
-          NVL( pjd.type_piece_jointe_id, pjf.type_piece_jointe_id ) type_piece_jointe_id,
-          NVL( pjd.intervenant_id, pjf.intervenant_id ) intervenant_id,
-          CASE WHEN pjd.intervenant_id IS NULL THEN 0 ELSE 1 END demandee,
-          CASE WHEN pjf.fichier = pjf.count THEN 1 ELSE 0 END fournie,
-          CASE WHEN pjf.validation = pjf.count THEN 1 ELSE 0 END validee,
-          NVL(pjd.heures_pour_seuil,0) heures_pour_seuil
-        FROM
-          tbl_piece_jointe_demande pjd
-          FULL JOIN pjf ON pjf.type_piece_jointe_id = pjd.type_piece_jointe_id AND pjf.intervenant_id = pjd.intervenant_id) tv
-      WHERE
-        ' || conds || '
+    MERGE INTO formule_resultat_service tfs USING dual ON (
 
-    ) v ON (
-            t.TYPE_PIECE_JOINTE_ID = v.TYPE_PIECE_JOINTE_ID
-        AND t.INTERVENANT_ID       = v.INTERVENANT_ID
+          tfs.formule_resultat_id    = fs.formule_resultat_id
+      AND tfs.service_id             = fs.service_id
 
     ) WHEN MATCHED THEN UPDATE SET
 
-      ANNEE_ID             = v.ANNEE_ID,
-      DEMANDEE             = v.DEMANDEE,
-      FOURNIE              = v.FOURNIE,
-      VALIDEE              = v.VALIDEE,
-      HEURES_POUR_SEUIL    = v.HEURES_POUR_SEUIL,
-      to_delete = 0
+      service_fi                     = ROUND( fs.service_fi, arrondi ),
+      service_fa                     = ROUND( fs.service_fa, arrondi ),
+      service_fc                     = ROUND( fs.service_fc, arrondi ),
+      heures_compl_fi                = ROUND( fs.heures_compl_fi, arrondi ),
+      heures_compl_fa                = ROUND( fs.heures_compl_fa, arrondi ),
+      heures_compl_fc                = ROUND( fs.heures_compl_fc, arrondi ),
+      heures_compl_fc_majorees       = ROUND( fs.heures_compl_fc_majorees, arrondi ),
+      total                          = ROUND( fs.total, arrondi ),
+      TO_DELETE                      = 0
 
     WHEN NOT MATCHED THEN INSERT (
 
       ID,
-      ANNEE_ID,
-      TYPE_PIECE_JOINTE_ID,
-      INTERVENANT_ID,
-      DEMANDEE,
-      FOURNIE,
-      VALIDEE,
-      HEURES_POUR_SEUIL,
+      FORMULE_RESULTAT_ID,
+      SERVICE_ID,
+      SERVICE_FI,
+      SERVICE_FA,
+      SERVICE_FC,
+      HEURES_COMPL_FI,
+      HEURES_COMPL_FA,
+      HEURES_COMPL_FC,
+      HEURES_COMPL_FC_majorees,
+      TOTAL,
       TO_DELETE
 
     ) VALUES (
 
-      TBL_PIECE_JOINTE_ID_SEQ.NEXTVAL,
-      v.ANNEE_ID,
-      v.TYPE_PIECE_JOINTE_ID,
-      v.INTERVENANT_ID,
-      v.DEMANDEE,
-      v.FOURNIE,
-      v.VALIDEE,
-      v.HEURES_POUR_SEUIL,
+      FORMULE_RESULTAT_SERVIC_ID_SEQ.NEXTVAL,
+      fs.formule_resultat_id,
+      fs.service_id,
+      ROUND( fs.service_fi, arrondi ),
+      ROUND( fs.service_fa, arrondi ),
+      ROUND( fs.service_fc, arrondi ),
+      ROUND( fs.heures_compl_fi, arrondi ),
+      ROUND( fs.heures_compl_fa, arrondi ),
+      ROUND( fs.heures_compl_fc, arrondi ),
+      ROUND( fs.heures_compl_fc_majorees, arrondi ),
+      ROUND( fs.total, arrondi ),
       0
 
     );
 
-    DELETE TBL_PIECE_JOINTE WHERE to_delete = 1 AND ' || conds || ';
+    SELECT id INTO id FROM formule_resultat_service tfs WHERE
+          tfs.formule_resultat_id    = fs.formule_resultat_id
+      AND tfs.service_id             = fs.service_id;
+    RETURN id;
+  END;
 
-    END;';
 
-  END;
+  FUNCTION ENREGISTRER_RESULTAT_VH( fvh formule_resultat_vh%rowtype ) RETURN NUMERIC IS
+    id NUMERIC;
+  BEGIN
+    MERGE INTO formule_resultat_vh tfvh USING dual ON (
 
+          tfvh.formule_resultat_id    = fvh.formule_resultat_id
+      AND tfvh.volume_horaire_id      = fvh.volume_horaire_id
 
+    ) WHEN MATCHED THEN UPDATE SET
 
-  PROCEDURE C_PIECE_JOINTE_DEMANDE( PARAMS UNICAEN_TBL.T_PARAMS ) IS
-    conds CLOB;    
-  BEGIN
-    conds := params_to_conds( params );
+      service_fi                     = ROUND( fvh.service_fi, arrondi ),
+      service_fa                     = ROUND( fvh.service_fa, arrondi ),
+      service_fc                     = ROUND( fvh.service_fc, arrondi ),
+      heures_compl_fi                = ROUND( fvh.heures_compl_fi, arrondi ),
+      heures_compl_fa                = ROUND( fvh.heures_compl_fa, arrondi ),
+      heures_compl_fc                = ROUND( fvh.heures_compl_fc, arrondi ),
+      heures_compl_fc_majorees       = ROUND( fvh.heures_compl_fc_majorees, arrondi ),
+      total                          = ROUND( fvh.total, arrondi ),
+      TO_DELETE                      = 0
 
-    EXECUTE IMMEDIATE 'BEGIN
+    WHEN NOT MATCHED THEN INSERT (
 
-    UPDATE TBL_PIECE_JOINTE_DEMANDE SET to_delete = 1 WHERE ' || conds || ';
+      ID,
+      FORMULE_RESULTAT_ID,
+      VOLUME_HORAIRE_ID,
+      SERVICE_FI,
+      SERVICE_FA,
+      SERVICE_FC,
+      HEURES_COMPL_FI,
+      HEURES_COMPL_FA,
+      HEURES_COMPL_FC,
+      HEURES_COMPL_FC_MAJOREES,
+      TOTAL,
+      TO_DELETE
 
-    MERGE INTO 
-      TBL_PIECE_JOINTE_DEMANDE t 
-    USING (
+    ) VALUES (
 
-      SELECT
-        tv.*
-      FROM
-        (WITH i_h AS (
-          SELECT
-            s.intervenant_id,
-            sum(vh.heures) heures,
-            sum(ep.taux_fc) fc
-          FROM
-                 service               s
-            JOIN type_volume_horaire tvh ON tvh.code = ''PREVU''
-            JOIN volume_horaire       vh ON vh.service_id = s.id 
-                                        AND vh.type_volume_horaire_id = tvh.id
-                                        AND vh.histo_destruction IS NULL
-            JOIN element_pedagogique ep ON ep.id = s.element_pedagogique_id -- Service sur l''établissement
-          WHERE
-            s.histo_destruction IS NULL
-            AND vh.motif_non_paiement_id IS NULL -- pas de motif de non paiement
-          GROUP BY
-            s.intervenant_id
-        )
-        SELECT
-          i.annee_id                      annee_id,
-          i.id                            intervenant_id,
-          tpj.id                          type_piece_jointe_id,
-          MAX(COALESCE(i_h.heures, 0))    heures_pour_seuil
-        FROM
-                    intervenant                 i
-        
-          LEFT JOIN dossier                     d ON d.intervenant_id = i.id
-                                                 AND d.histo_destruction IS NULL
-                                                
-               JOIN type_piece_jointe_statut tpjs ON tpjs.statut_intervenant_id = i.statut_id
-                                                 AND tpjs.histo_destruction IS NULL
-                                                 AND i.annee_id BETWEEN COALESCE(tpjs.annee_debut_id,i.annee_id) AND COALESCE(tpjs.annee_fin_id,i.annee_id)
-                                                 
-               JOIN type_piece_jointe         tpj ON tpj.id = tpjs.type_piece_jointe_id
-                                                 AND tpj.histo_destruction IS NULL
-                                                 
-          LEFT JOIN                           i_h ON i_h.intervenant_id = i.id
-        WHERE
-          -- Gestion de l''historique
-          i.histo_destruction IS NULL
-        
-          -- Seuil HETD
-          AND (COALESCE(i_h.heures,0) > COALESCE(tpjs.seuil_hetd,-1))
-        
-          -- En fonction du premier recrutement ou non
-          AND (tpjs.premier_recrutement = 0 OR COALESCE(i.premier_recrutement,0) = 1)
-        
-          -- Le RIB n''est demandé QUE s''il est différent!!  
-          AND CASE 
-                WHEN tpjs.changement_rib = 0 OR d.id IS NULL THEN 1
-                ELSE CASE WHEN replace(i.bic, '' '', '''') || ''-'' || replace(i.iban, '' '', '''') = d.rib THEN 0 ELSE 1 END
-              END = 1
-        
-          -- Filtre FC
-          AND (tpjs.fc = 0 OR i_h.fc > 0)
-        GROUP BY
-          i.annee_id,
-          i.id,
-          tpj.id) tv
-      WHERE
-        ' || conds || '
+      FORMULE_RESULTAT_VH_ID_SEQ.NEXTVAL,
+      fvh.formule_resultat_id,
+      fvh.volume_horaire_id,
+      ROUND( fvh.service_fi, arrondi ),
+      ROUND( fvh.service_fa, arrondi ),
+      ROUND( fvh.service_fc, arrondi ),
+      ROUND( fvh.heures_compl_fi, arrondi ),
+      ROUND( fvh.heures_compl_fa, arrondi ),
+      ROUND( fvh.heures_compl_fc, arrondi ),
+      ROUND( fvh.heures_compl_fc_majorees, arrondi ),
+      ROUND( fvh.total, arrondi ),
+      0
 
-    ) v ON (
-            t.TYPE_PIECE_JOINTE_ID = v.TYPE_PIECE_JOINTE_ID
-        AND t.INTERVENANT_ID       = v.INTERVENANT_ID
+    );
+
+    SELECT id INTO id FROM formule_resultat_vh tfvh WHERE
+          tfvh.formule_resultat_id    = fvh.formule_resultat_id
+      AND tfvh.volume_horaire_id      = fvh.volume_horaire_id;
+    RETURN id;
+  END;
+
+
+  FUNCTION ENREGISTRER_RESULTAT_SERV_REF( fr formule_resultat_service_ref%rowtype ) RETURN NUMERIC IS
+    id NUMERIC;
+  BEGIN
+    MERGE INTO formule_resultat_service_ref tfr USING dual ON (
+
+          tfr.formule_resultat_id    = fr.formule_resultat_id
+      AND tfr.service_referentiel_id = fr.service_referentiel_id
 
     ) WHEN MATCHED THEN UPDATE SET
 
-      ANNEE_ID             = v.ANNEE_ID,
-      HEURES_POUR_SEUIL    = v.HEURES_POUR_SEUIL,
-      to_delete = 0
+      service_referentiel            = ROUND( fr.service_referentiel, arrondi ),
+      heures_compl_referentiel       = ROUND( fr.heures_compl_referentiel, arrondi ),
+      TO_DELETE                      = 0
 
     WHEN NOT MATCHED THEN INSERT (
 
       ID,
-      ANNEE_ID,
-      TYPE_PIECE_JOINTE_ID,
-      INTERVENANT_ID,
-      HEURES_POUR_SEUIL,
+      FORMULE_RESULTAT_ID,
+      SERVICE_REFERENTIEL_ID,
+      SERVICE_REFERENTIEL,
+      HEURES_COMPL_REFERENTIEL,
+      TOTAL,
       TO_DELETE
 
     ) VALUES (
 
-      TBL_PIECE_JOINTE_DEMAND_ID_SEQ.NEXTVAL,
-      v.ANNEE_ID,
-      v.TYPE_PIECE_JOINTE_ID,
-      v.INTERVENANT_ID,
-      v.HEURES_POUR_SEUIL,
+      FORMULE_RESULTAT_SERVIC_ID_SEQ.NEXTVAL,
+      fr.formule_resultat_id,
+      fr.service_referentiel_id,
+      ROUND( fr.service_referentiel, arrondi ),
+      ROUND( fr.heures_compl_referentiel, arrondi ),
+      fr.total,
       0
 
     );
 
-    DELETE TBL_PIECE_JOINTE_DEMANDE WHERE to_delete = 1 AND ' || conds || ';
-
-    END;';
+    SELECT id INTO id FROM formule_resultat_service_ref tfr WHERE
+          tfr.formule_resultat_id    = fr.formule_resultat_id
+      AND tfr.service_referentiel_id = fr.service_referentiel_id;
 
+    RETURN id;
   END;
 
 
-
-  PROCEDURE C_PIECE_JOINTE_FOURNIE( PARAMS UNICAEN_TBL.T_PARAMS ) IS
-    conds CLOB;    
+  FUNCTION ENREGISTRER_RESULTAT_VH_REF( fvh formule_resultat_vh_ref%rowtype ) RETURN NUMERIC IS
+    id NUMERIC;
   BEGIN
-    conds := params_to_conds( params );
-
-    EXECUTE IMMEDIATE 'BEGIN
-
-    UPDATE TBL_PIECE_JOINTE_FOURNIE SET to_delete = 1 WHERE ' || conds || ';
-
-    MERGE INTO 
-      TBL_PIECE_JOINTE_FOURNIE t 
-    USING (
-
-      SELECT
-        tv.*
-      FROM
-        (SELECT 
-          i.annee_id,
-          pj.type_piece_jointe_id,
-          pj.intervenant_id,
-          pj.id piece_jointe_id,
-          v.id validation_id,
-          f.id fichier_id
-        FROM
-                    piece_jointe          pj
-               JOIN intervenant            i ON i.id = pj.intervenant_id
-                                            AND i.histo_destruction IS NULL
-               
-               JOIN piece_jointe_fichier pjf ON pjf.piece_jointe_id = pj.id
-               JOIN fichier                f ON f.id = pjf.fichier_id
-                                            AND f.histo_destruction IS NULL
-                                            
-          LEFT JOIN validation             v ON v.id = pj.validation_id
-                                            AND v.histo_destruction IS NULL
-        WHERE
-          pj.histo_destruction IS NULL) tv
-      WHERE
-        ' || conds || '
+    MERGE INTO formule_resultat_vh_ref tfvh USING dual ON (
 
-    ) v ON (
-            t.TYPE_PIECE_JOINTE_ID = v.TYPE_PIECE_JOINTE_ID
-        AND t.INTERVENANT_ID       = v.INTERVENANT_ID
-        AND COALESCE(t.VALIDATION_ID,0) = COALESCE(v.VALIDATION_ID,0)
-        AND COALESCE(t.FICHIER_ID,0) = COALESCE(v.FICHIER_ID,0)
+          tfvh.formule_resultat_id    = fvh.formule_resultat_id
+      AND tfvh.volume_horaire_ref_id      = fvh.volume_horaire_ref_id
 
     ) WHEN MATCHED THEN UPDATE SET
 
-      ANNEE_ID             = v.ANNEE_ID,
-      PIECE_JOINTE_ID      = v.PIECE_JOINTE_ID,
-      to_delete = 0
+      service_referentiel            = ROUND( fvh.service_referentiel, arrondi ),
+      heures_compl_referentiel       = ROUND( fvh.heures_compl_referentiel, arrondi ),
+      total                          = fvh.total,
+      TO_DELETE                      = 0
 
     WHEN NOT MATCHED THEN INSERT (
 
       ID,
-      ANNEE_ID,
-      TYPE_PIECE_JOINTE_ID,
-      INTERVENANT_ID,
-      VALIDATION_ID,
-      FICHIER_ID,
-      PIECE_JOINTE_ID,
+      FORMULE_RESULTAT_ID,
+      VOLUME_HORAIRE_REF_ID,
+      SERVICE_REFERENTIEL,
+      HEURES_COMPL_REFERENTIEL,
+      TOTAL,
       TO_DELETE
 
     ) VALUES (
 
-      TBL_PIECE_JOINTE_FOURNI_ID_SEQ.NEXTVAL,
-      v.ANNEE_ID,
-      v.TYPE_PIECE_JOINTE_ID,
-      v.INTERVENANT_ID,
-      v.VALIDATION_ID,
-      v.FICHIER_ID,
-      v.PIECE_JOINTE_ID,
+      FORMULE_RESULTAT_VH_ID_SEQ.NEXTVAL,
+      fvh.formule_resultat_id,
+      fvh.volume_horaire_ref_id,
+      ROUND( fvh.service_referentiel, arrondi ),
+      ROUND( fvh.heures_compl_referentiel, arrondi ),
+      fvh.total,
       0
 
     );
 
-    DELETE TBL_PIECE_JOINTE_FOURNIE WHERE to_delete = 1 AND ' || conds || ';
+    SELECT id INTO id FROM formule_resultat_vh_ref tfvh WHERE
+          tfvh.formule_resultat_id    = fvh.formule_resultat_id
+      AND tfvh.volume_horaire_ref_id  = fvh.volume_horaire_ref_id;
+    RETURN id;
+  END;
+
+
+  PROCEDURE POPULATE_INTERVENANT( INTERVENANT_ID NUMERIC, d_intervenant OUT t_intervenant ) IS
+  BEGIN
+    SELECT
+      structure_id,
+      annee_id,
+      heures_service_statutaire,
+      depassement_service_du_sans_hc
+    INTO
+      d_intervenant.structure_id,
+      d_intervenant.annee_id,
+      d_intervenant.heures_service_statutaire,
+      d_intervenant.depassement_service_du_sans_hc
+    FROM
+      v_formule_intervenant fi
+    WHERE
+      fi.id = POPULATE_INTERVENANT.INTERVENANT_ID;
+
+    SELECT
+      NVL( SUM(heures), 0),
+      NVL( SUM(heures_decharge), 0)
+    INTO
+      d_intervenant.heures_service_modifie,
+      d_intervenant.heures_decharge
+    FROM
+      v_formule_service_modifie fsm
+    WHERE
+      fsm.intervenant_id = POPULATE_INTERVENANT.INTERVENANT_ID;
+
+  EXCEPTION WHEN NO_DATA_FOUND THEN
+    d_intervenant.structure_id := null;
+    d_intervenant.annee_id := null;
+    d_intervenant.heures_service_statutaire := 0;
+    d_intervenant.depassement_service_du_sans_hc := 0;
+    d_intervenant.heures_service_modifie := 0;
+    d_intervenant.heures_decharge := 0;
+  END;
+
+
+  PROCEDURE POPULATE_SERVICE_REF( INTERVENANT_ID NUMERIC, d_service_ref OUT t_lst_service_ref ) IS
+    i PLS_INTEGER;
+  BEGIN
+    d_service_ref.delete;
+
+    FOR d IN (
+      SELECT
+        fr.id,
+        fr.structure_id
+      FROM
+        v_formule_service_ref fr
+      WHERE
+        fr.intervenant_id = POPULATE_SERVICE_REF.INTERVENANT_ID
+    ) LOOP
+      d_service_ref( d.id ).id           := d.id;
+      d_service_ref( d.id ).structure_id := d.structure_id;
+    END LOOP;
+  END;
 
-    END;';
 
+  PROCEDURE POPULATE_SERVICE( INTERVENANT_ID NUMERIC, d_service OUT t_lst_service ) IS
+  BEGIN
+    d_service.delete;
+
+    FOR d IN (
+      SELECT
+        id,
+        taux_fi,
+        taux_fa,
+        taux_fc,
+        structure_aff_id,
+        structure_ens_id,
+        ponderation_service_du,
+        ponderation_service_compl
+      FROM
+        v_formule_service fs
+      WHERE
+        fs.intervenant_id = POPULATE_SERVICE.INTERVENANT_ID
+    ) LOOP
+      d_service( d.id ).id                        := d.id;
+      d_service( d.id ).taux_fi                   := d.taux_fi;
+      d_service( d.id ).taux_fa                   := d.taux_fa;
+      d_service( d.id ).taux_fc                   := d.taux_fc;
+      d_service( d.id ).ponderation_service_du    := d.ponderation_service_du;
+      d_service( d.id ).ponderation_service_compl := d.ponderation_service_compl;
+      d_service( d.id ).structure_aff_id          := d.structure_aff_id;
+      d_service( d.id ).structure_ens_id          := d.structure_ens_id;
+    END LOOP;
+  END;
+
+  PROCEDURE POPULATE_VOLUME_HORAIRE_REF( INTERVENANT_ID NUMERIC, d_volume_horaire_ref OUT t_lst_volume_horaire_ref ) IS
+  BEGIN
+    d_volume_horaire_ref.delete;
+
+    FOR d IN (
+      SELECT
+        id,
+        service_referentiel_id,
+        heures,
+        fvh.type_volume_horaire_id,
+        fvh.etat_volume_horaire_id,
+        fvh.etat_volume_horaire_ordre
+      FROM
+        v_formule_volume_horaire_ref fvh
+      WHERE
+        fvh.intervenant_id                = POPULATE_VOLUME_HORAIRE_REF.INTERVENANT_ID
+    ) LOOP
+      d_volume_horaire_ref( d.id ).id                        := d.id;
+      d_volume_horaire_ref( d.id ).service_referentiel_id    := d.service_referentiel_id;
+      d_volume_horaire_ref( d.id ).heures                    := d.heures;
+      d_volume_horaire_ref( d.id ).type_volume_horaire_id    := d.type_volume_horaire_id;
+      d_volume_horaire_ref( d.id ).etat_volume_horaire_id    := d.etat_volume_horaire_id;
+      d_volume_horaire_ref( d.id ).etat_volume_horaire_ordre := d.etat_volume_horaire_ordre;
+    END LOOP;
+  END;
+
+  PROCEDURE POPULATE_VOLUME_HORAIRE( INTERVENANT_ID NUMERIC, d_volume_horaire OUT t_lst_volume_horaire ) IS
+  BEGIN
+    d_volume_horaire.delete;
+
+    FOR d IN (
+      SELECT
+        id,
+        service_id,
+        heures,
+        taux_service_du,
+        taux_service_compl,
+        fvh.type_volume_horaire_id,
+        fvh.etat_volume_horaire_id,
+        fvh.etat_volume_horaire_ordre
+      FROM
+        v_formule_volume_horaire fvh
+      WHERE
+        fvh.intervenant_id                = POPULATE_VOLUME_HORAIRE.INTERVENANT_ID
+    ) LOOP
+      d_volume_horaire( d.id ).id                        := d.id;
+      d_volume_horaire( d.id ).service_id                := d.service_id;
+      d_volume_horaire( d.id ).heures                    := d.heures;
+      d_volume_horaire( d.id ).taux_service_du           := d.taux_service_du;
+      d_volume_horaire( d.id ).taux_service_compl        := d.taux_service_compl;
+      d_volume_horaire( d.id ).type_volume_horaire_id    := d.type_volume_horaire_id;
+      d_volume_horaire( d.id ).etat_volume_horaire_id    := d.etat_volume_horaire_id;
+      d_volume_horaire( d.id ).etat_volume_horaire_ordre := d.etat_volume_horaire_ordre;
+    END LOOP;
   END;
 
 
+  PROCEDURE POPULATE_TYPE_ETAT_VH( d_volume_horaire t_lst_volume_horaire, d_volume_horaire_ref t_lst_volume_horaire_ref, d_type_etat_vh OUT t_lst_type_etat_vh ) IS
+    TYPE t_ordres IS TABLE OF NUMERIC INDEX BY PLS_INTEGER;
 
-  PROCEDURE C_SERVICE( PARAMS UNICAEN_TBL.T_PARAMS ) IS
-    conds CLOB;    
+    ordres_found t_ordres;
+    ordres_exists t_ordres;
+    type_volume_horaire_id PLS_INTEGER;
+    etat_volume_horaire_ordre PLS_INTEGER;
+    id PLS_INTEGER;
   BEGIN
-    conds := params_to_conds( params );
+    d_type_etat_vh.delete;
 
-    EXECUTE IMMEDIATE 'BEGIN
+    -- récupération des ID et ordres de volumes horaires
+    FOR evh IN (
+      SELECT   id, ordre
+      FROM     etat_volume_horaire evh
+      ORDER BY ordre
+    ) LOOP
+      ordres_exists( evh.ordre ) := evh.id;
+    END LOOP;
 
-    UPDATE TBL_SERVICE SET to_delete = 1 WHERE ' || conds || ';
+    -- récupération des ordres maximum par type d'intervention
+    id := d_volume_horaire.FIRST;
+    LOOP EXIT WHEN id IS NULL;
+      IF NOT ordres_found.EXISTS(d_volume_horaire(id).type_volume_horaire_id) THEN
+        ordres_found( d_volume_horaire(id).type_volume_horaire_id ) := d_volume_horaire(id).etat_volume_horaire_ordre;
+      ELSIF ordres_found( d_volume_horaire(id).type_volume_horaire_id ) < d_volume_horaire(id).etat_volume_horaire_ordre THEN
+        ordres_found( d_volume_horaire(id).type_volume_horaire_id ) := d_volume_horaire(id).etat_volume_horaire_ordre;
+      END IF;
+      id := d_volume_horaire.NEXT(id);
+    END LOOP;
 
-    MERGE INTO 
-      TBL_SERVICE t 
-    USING (
+    id := d_volume_horaire_ref.FIRST;
+    LOOP EXIT WHEN id IS NULL;
+      IF NOT ordres_found.EXISTS(d_volume_horaire_ref(id).type_volume_horaire_id) THEN
+        ordres_found( d_volume_horaire_ref(id).type_volume_horaire_id ) := d_volume_horaire_ref(id).etat_volume_horaire_ordre;
+      ELSIF ordres_found( d_volume_horaire_ref(id).type_volume_horaire_id ) < d_volume_horaire_ref(id).etat_volume_horaire_ordre THEN
+        ordres_found( d_volume_horaire_ref(id).type_volume_horaire_id ) := d_volume_horaire_ref(id).etat_volume_horaire_ordre;
+      END IF;
+      id := d_volume_horaire_ref.NEXT(id);
+    END LOOP;
 
-      SELECT
-        tv.*
-      FROM
-        (WITH t AS (
-        SELECT
-          s.id                                                                                      service_id,
-          s.intervenant_id                                                                          intervenant_id,
-          ep.structure_id                                                                           structure_id,
-          ep.id                                                                                     element_pedagogique_id,
-          ep.periode_id                                                                             element_pedagogique_periode_id,
-          etp.id                                                                                    etape_id,
-        
-          vh.type_volume_horaire_id                                                                 type_volume_horaire_id,
-          vh.heures                                                                                 heures,
-          tvh.code                                                                                  type_volume_horaire_code,
-        
-          CASE WHEN ep.histo_destruction IS NULL THEN 1 ELSE 0 END                                  element_pedagogique_histo,
-          CASE WHEN etp.histo_destruction IS NULL OR cp.id IS NOT NULL THEN 1 ELSE 0 END            etape_histo,
-        
-          CASE WHEN ep.periode_id IS NOT NULL THEN
-            SUM( CASE WHEN vh.periode_id <> ep.periode_id THEN 1 ELSE 0 END ) OVER( PARTITION BY vh.service_id, vh.periode_id, vh.type_volume_horaire_id, vh.type_intervention_id )
-          ELSE 0 END has_heures_mauvaise_periode,
-        
-          CASE WHEN v.id IS NULL THEN 0 ELSE 1 END valide
-        FROM
-          service                                       s
-          LEFT JOIN element_pedagogique                ep ON ep.id = s.element_pedagogique_id
-          LEFT JOIN etape                             etp ON etp.id = ep.etape_id
-          LEFT JOIN chemin_pedagogique                 cp ON cp.etape_id = etp.id
-                                                         AND cp.element_pedagogique_id = ep.id
-                                                         AND cp.histo_destruction IS NULL
-        
-               JOIN volume_horaire                     vh ON vh.service_id = s.id
-                                                         AND vh.histo_destruction IS NULL
-        
-               JOIN type_volume_horaire               tvh ON tvh.id = vh.type_volume_horaire_id
-        
-          LEFT JOIN validation_vol_horaire            vvh ON vvh.volume_horaire_id = vh.id
-        
-          LEFT JOIN validation                          v ON v.id = vvh.validation_id
-                                                         AND v.histo_destruction IS NULL
-        WHERE
-          s.histo_destruction IS NULL
-        )
-        SELECT
-          i.annee_id                                                                                annee_id,
-          i.id                                                                                      intervenant_id,
-          i.structure_id                                                                            intervenant_structure_id,
-          NVL( t.structure_id, i.structure_id )                                                     structure_id,
-          ti.id                                                                                     type_intervenant_id,
-          ti.code                                                                                   type_intervenant_code,  
-          si.peut_saisir_service                                                                    peut_saisir_service,  
-        
-          t.element_pedagogique_id,
-          t.service_id,
-          t.element_pedagogique_periode_id,
-          t.etape_id,
-          t.type_volume_horaire_id,
-          t.type_volume_horaire_code,
-          t.element_pedagogique_histo,
-          t.etape_histo,
-        
-          CASE WHEN SUM(t.has_heures_mauvaise_periode) > 0 THEN 1 ELSE 0 END has_heures_mauvaise_periode,
-        
-          CASE WHEN type_volume_horaire_id IS NULL THEN 0 ELSE count(*) END nbvh,
-          CASE WHEN type_volume_horaire_id IS NULL THEN 0 ELSE sum(t.heures) END heures,
-          sum(valide) valide
-        FROM
-          t
-          JOIN intervenant                              i ON i.id = t.intervenant_id
-          JOIN statut_intervenant                      si ON si.id = i.statut_id
-          JOIN type_intervenant                        ti ON ti.id = si.type_intervenant_id
-        GROUP BY
-          i.annee_id,
-          i.id,
-          i.structure_id,
-          t.structure_id,
-          i.structure_id,
-          ti.id,
-          ti.code,
-          si.peut_saisir_service,
-          t.element_pedagogique_id,
-          t.service_id,
-          t.element_pedagogique_periode_id,
-          t.etape_id,
-          t.type_volume_horaire_id,
-          t.type_volume_horaire_code,
-          t.element_pedagogique_histo,
-          t.etape_histo) tv
-      WHERE
-        ' || conds || '
+    -- peuplement des t_lst_type_etat_vh
+    type_volume_horaire_id := ordres_found.FIRST;
+    LOOP EXIT WHEN type_volume_horaire_id IS NULL;
+      etat_volume_horaire_ordre := ordres_exists.FIRST;
+      LOOP EXIT WHEN etat_volume_horaire_ordre IS NULL;
+        IF etat_volume_horaire_ordre <= ordres_found(type_volume_horaire_id) THEN
+          d_type_etat_vh( type_volume_horaire_id + 100000 * etat_volume_horaire_ordre ).type_volume_horaire_id := type_volume_horaire_id;
+          d_type_etat_vh( type_volume_horaire_id + 100000 * etat_volume_horaire_ordre ).etat_volume_horaire_id := ordres_exists( etat_volume_horaire_ordre );
+        END IF;
+        etat_volume_horaire_ordre := ordres_exists.NEXT(etat_volume_horaire_ordre);
+      END LOOP;
 
-    ) v ON (
-            COALESCE(t.TYPE_VOLUME_HORAIRE_ID,0) = COALESCE(v.TYPE_VOLUME_HORAIRE_ID,0)
-        AND t.SERVICE_ID             = v.SERVICE_ID
+      type_volume_horaire_id := ordres_found.NEXT(type_volume_horaire_id);
+    END LOOP;
 
-    ) WHEN MATCHED THEN UPDATE SET
+  END;
 
-      ANNEE_ID                       = v.ANNEE_ID,
-      INTERVENANT_ID                 = v.INTERVENANT_ID,
-      PEUT_SAISIR_SERVICE            = v.PEUT_SAISIR_SERVICE,
-      STRUCTURE_ID                   = v.STRUCTURE_ID,
-      NBVH                           = v.NBVH,
-      VALIDE                         = v.VALIDE,
-      ELEMENT_PEDAGOGIQUE_ID         = v.ELEMENT_PEDAGOGIQUE_ID,
-      ELEMENT_PEDAGOGIQUE_PERIODE_ID = v.ELEMENT_PEDAGOGIQUE_PERIODE_ID,
-      ETAPE_ID                       = v.ETAPE_ID,
-      ELEMENT_PEDAGOGIQUE_HISTO      = v.ELEMENT_PEDAGOGIQUE_HISTO,
-      ETAPE_HISTO                    = v.ETAPE_HISTO,
-      HAS_HEURES_MAUVAISE_PERIODE    = v.HAS_HEURES_MAUVAISE_PERIODE,
-      INTERVENANT_STRUCTURE_ID       = v.INTERVENANT_STRUCTURE_ID,
-      TYPE_INTERVENANT_ID            = v.TYPE_INTERVENANT_ID,
-      TYPE_INTERVENANT_CODE          = v.TYPE_INTERVENANT_CODE,
-      TYPE_VOLUME_HORAIRE_CODE       = v.TYPE_VOLUME_HORAIRE_CODE,
-      HEURES                         = v.HEURES,
-      to_delete = 0
 
-    WHEN NOT MATCHED THEN INSERT (
+  PROCEDURE POPULATE( INTERVENANT_ID NUMERIC ) IS
+  BEGIN
+    OSE_FORMULE.INTERVENANT_ID := POPULATE.INTERVENANT_ID;
 
-      ID,
-      ANNEE_ID,
-      INTERVENANT_ID,
-      PEUT_SAISIR_SERVICE,
-      TYPE_VOLUME_HORAIRE_ID,
-      STRUCTURE_ID,
-      NBVH,
-      VALIDE,
-      ELEMENT_PEDAGOGIQUE_ID,
-      ELEMENT_PEDAGOGIQUE_PERIODE_ID,
-      ETAPE_ID,
-      ELEMENT_PEDAGOGIQUE_HISTO,
-      ETAPE_HISTO,
-      HAS_HEURES_MAUVAISE_PERIODE,
-      SERVICE_ID,
-      INTERVENANT_STRUCTURE_ID,
-      TYPE_INTERVENANT_ID,
-      TYPE_INTERVENANT_CODE,
-      TYPE_VOLUME_HORAIRE_CODE,
-      HEURES,
-      TO_DELETE
+    POPULATE_INTERVENANT    ( INTERVENANT_ID, d_intervenant );
+    IF d_intervenant.heures_service_statutaire IS NOT NULL THEN -- sinon rien n'est à faire!!
+      POPULATE_SERVICE_REF        ( INTERVENANT_ID, d_service_ref         );
+      POPULATE_SERVICE            ( INTERVENANT_ID, d_service             );
+      POPULATE_VOLUME_HORAIRE_REF ( INTERVENANT_ID, d_all_volume_horaire_ref  );
+      POPULATE_VOLUME_HORAIRE     ( INTERVENANT_ID, d_all_volume_horaire      );
+      POPULATE_TYPE_ETAT_VH       ( d_all_volume_horaire, d_all_volume_horaire_ref, d_type_etat_vh );
+    END IF;
+  END;
 
-    ) VALUES (
 
-      TBL_SERVICE_ID_SEQ.NEXTVAL,
-      v.ANNEE_ID,
-      v.INTERVENANT_ID,
-      v.PEUT_SAISIR_SERVICE,
-      v.TYPE_VOLUME_HORAIRE_ID,
-      v.STRUCTURE_ID,
-      v.NBVH,
-      v.VALIDE,
-      v.ELEMENT_PEDAGOGIQUE_ID,
-      v.ELEMENT_PEDAGOGIQUE_PERIODE_ID,
-      v.ETAPE_ID,
-      v.ELEMENT_PEDAGOGIQUE_HISTO,
-      v.ETAPE_HISTO,
-      v.HAS_HEURES_MAUVAISE_PERIODE,
-      v.SERVICE_ID,
-      v.INTERVENANT_STRUCTURE_ID,
-      v.TYPE_INTERVENANT_ID,
-      v.TYPE_INTERVENANT_CODE,
-      v.TYPE_VOLUME_HORAIRE_CODE,
-      v.HEURES,
-      0
+  PROCEDURE POPULATE_FILTER( TYPE_VOLUME_HORAIRE_ID NUMERIC, ETAT_VOLUME_HORAIRE_ID NUMERIC ) IS
+    EVH_ORDRE NUMERIC;
+    id PLS_INTEGER;
+  BEGIN
+    d_volume_horaire.delete;
+    d_volume_horaire_ref.delete;
 
-    );
+    SELECT ordre INTO EVH_ORDRE FROM etat_volume_horaire WHERE ID = ETAT_VOLUME_HORAIRE_ID;
 
-    DELETE TBL_SERVICE WHERE to_delete = 1 AND ' || conds || ';
+    id := d_all_volume_horaire.FIRST;
+    LOOP EXIT WHEN id IS NULL;
+      IF
+        d_all_volume_horaire(id).type_volume_horaire_id = TYPE_VOLUME_HORAIRE_ID
+        AND d_all_volume_horaire(id).etat_volume_horaire_ordre >= EVH_ORDRE
+      THEN
+        d_volume_horaire(id) := d_all_volume_horaire(id);
+      END IF;
+      id := d_all_volume_horaire.NEXT(id);
+    END LOOP;
+
+    id := d_all_volume_horaire_ref.FIRST;
+    LOOP EXIT WHEN id IS NULL;
+      IF
+        d_all_volume_horaire_ref(id).type_volume_horaire_id = TYPE_VOLUME_HORAIRE_ID
+        AND d_all_volume_horaire_ref(id).etat_volume_horaire_ordre >= EVH_ORDRE
+      THEN
+        d_volume_horaire_ref(id) := d_all_volume_horaire_ref(id);
+      END IF;
+      id := d_all_volume_horaire_ref.NEXT(id);
+    END LOOP;
+  END;
 
-    END;';
 
+  PROCEDURE INIT_RESULTAT ( INTERVENANT_ID NUMERIC, TYPE_VOLUME_HORAIRE_ID NUMERIC, ETAT_VOLUME_HORAIRE_ID NUMERIC ) IS
+  BEGIN
+    d_resultat.intervenant_id         := INTERVENANT_ID;
+    d_resultat.type_volume_horaire_id := TYPE_VOLUME_HORAIRE_ID;
+    d_resultat.etat_volume_horaire_id := ETAT_VOLUME_HORAIRE_ID;
+    d_resultat.service_du             := 0;
+    d_resultat.solde                  := 0;
+    d_resultat.sous_service           := 0;
+    d_resultat.heures_compl           := 0;
+    d_resultat.volume_horaire.delete;
+    d_resultat.volume_horaire_ref.delete;
   END;
 
 
-
-  PROCEDURE C_SERVICE_REFERENTIEL( PARAMS UNICAEN_TBL.T_PARAMS ) IS
-    conds CLOB;    
+  PROCEDURE CALC_RESULTAT IS
+    function_name VARCHAR2(30);
+    package_name VARCHAR2(30);
   BEGIN
-    conds := params_to_conds( params );
+    package_name  := OSE_PARAMETRE.GET_FORMULE_PACKAGE_NAME;
+    function_name := OSE_PARAMETRE.GET_FORMULE_FUNCTION_NAME;
 
-    EXECUTE IMMEDIATE 'BEGIN
+    EXECUTE IMMEDIATE
+      'BEGIN ' || package_name || '.' || function_name || '( :1, :2, :3 ); END;'
+    USING
+      d_resultat.intervenant_id, d_resultat.type_volume_horaire_id, d_resultat.etat_volume_horaire_id;
 
-    UPDATE TBL_SERVICE_REFERENTIEL SET to_delete = 1 WHERE ' || conds || ';
+  END;
 
-    MERGE INTO 
-      TBL_SERVICE_REFERENTIEL t 
-    USING (
 
-      SELECT
-        tv.*
-      FROM
-        (WITH t AS (
-        
-          SELECT
-            i.annee_id,
-            i.id intervenant_id,
-            si.peut_saisir_referentiel peut_saisir_service,
-            vh.type_volume_horaire_id,
-            s.structure_id,
-            CASE WHEN v.id IS NULL THEN 0 ELSE 1 END valide
-          FROM
-                      intervenant                     i
-                      
-                 JOIN statut_intervenant          si ON si.id = i.statut_id
-                      
-            LEFT JOIN service_referentiel          s ON s.intervenant_id = i.id
-                                                    AND s.histo_destruction IS NULL
-                                                
-            LEFT JOIN volume_horaire_ref          vh ON vh.service_referentiel_id = s.id 
-                                                    AND vh.histo_destruction IS NULL
-                                                
-            LEFT JOIN validation_vol_horaire_ref vvh ON vvh.volume_horaire_ref_id = vh.id
-            
-            LEFT JOIN validation                   v ON v.id = vvh.validation_id
-                                                    AND v.histo_destruction IS NULL
-          WHERE
-            i.histo_destruction IS NULL
-        
-        )  
-        SELECT
-          annee_id,
-          intervenant_id,
-          peut_saisir_service,
-          type_volume_horaire_id,
-          structure_id,
-          CASE WHEN type_volume_horaire_id IS NULL THEN 0 ELSE count(*) END nbvh,
-          sum(valide) valide
-        FROM
-          t
-        WHERE 
-          NOT (structure_id IS NOT NULL AND type_volume_horaire_id IS NULL)
-        GROUP BY
-          annee_id,
-          intervenant_id,
-          peut_saisir_service,
-          type_volume_horaire_id,
-          structure_id) tv
-      WHERE
-        ' || conds || '
+  PROCEDURE SAVE_RESULTAT IS
+    res             t_resultat_hetd;
+    res_ref         t_resultat_hetd_ref;
+    res_service     t_lst_resultat_hetd;
+    res_service_ref t_lst_resultat_hetd_ref;
+    id              PLS_INTEGER;
+    sid             PLS_INTEGER;
+    fr              formule_resultat%rowtype;
+    frs             formule_resultat_service%rowtype;
+    frsr            formule_resultat_service_ref%rowtype;
+    frvh            formule_resultat_vh%rowtype;
+    frvhr           formule_resultat_vh_ref%rowtype;
+    dev_null        PLS_INTEGER;
+  BEGIN
+    -- Calcul des données pour les services et le résultat global
+    fr.service_fi := 0;
+    fr.service_fa := 0;
+    fr.service_fc := 0;
+    fr.service_referentiel := 0;
+    fr.heures_compl_fi := 0;
+    fr.heures_compl_fa := 0;
+    fr.heures_compl_fc := 0;
+    fr.heures_compl_fc_majorees := 0;
+    fr.heures_compl_referentiel := 0;
 
-    ) v ON (
-            t.INTERVENANT_ID         = v.INTERVENANT_ID
-        AND COALESCE(t.TYPE_VOLUME_HORAIRE_ID,0) = COALESCE(v.TYPE_VOLUME_HORAIRE_ID,0)
-        AND COALESCE(t.STRUCTURE_ID,0) = COALESCE(v.STRUCTURE_ID,0)
+    id := d_resultat.volume_horaire.FIRST;
+    LOOP EXIT WHEN id IS NULL;
+      sid := d_volume_horaire(id).service_id;
+      IF NOT res_service.exists(sid) THEN res_service(sid).service_fi := 0; END IF;
 
-    ) WHEN MATCHED THEN UPDATE SET
+      res_service(sid).service_fi               := res_service(sid).service_fi               + d_resultat.volume_horaire(id).service_fi;
+      res_service(sid).service_fa               := res_service(sid).service_fa               + d_resultat.volume_horaire(id).service_fa;
+      res_service(sid).service_fc               := res_service(sid).service_fc               + d_resultat.volume_horaire(id).service_fc;
+      res_service(sid).heures_compl_fi          := res_service(sid).heures_compl_fi          + d_resultat.volume_horaire(id).heures_compl_fi;
+      res_service(sid).heures_compl_fa          := res_service(sid).heures_compl_fa          + d_resultat.volume_horaire(id).heures_compl_fa;
+      res_service(sid).heures_compl_fc          := res_service(sid).heures_compl_fc          + d_resultat.volume_horaire(id).heures_compl_fc;
+      res_service(sid).heures_compl_fc_majorees := res_service(sid).heures_compl_fc_majorees + d_resultat.volume_horaire(id).heures_compl_fc_majorees;
 
-      ANNEE_ID               = v.ANNEE_ID,
-      PEUT_SAISIR_SERVICE    = v.PEUT_SAISIR_SERVICE,
-      NBVH                   = v.NBVH,
-      VALIDE                 = v.VALIDE,
-      to_delete = 0
+      fr.service_fi                             := fr.service_fi                             + d_resultat.volume_horaire(id).service_fi;
+      fr.service_fa                             := fr.service_fa                             + d_resultat.volume_horaire(id).service_fa;
+      fr.service_fc                             := fr.service_fc                             + d_resultat.volume_horaire(id).service_fc;
+      fr.heures_compl_fi                        := fr.heures_compl_fi                        + d_resultat.volume_horaire(id).heures_compl_fi;
+      fr.heures_compl_fa                        := fr.heures_compl_fa                        + d_resultat.volume_horaire(id).heures_compl_fa;
+      fr.heures_compl_fc                        := fr.heures_compl_fc                        + d_resultat.volume_horaire(id).heures_compl_fc;
+      fr.heures_compl_fc_majorees               := fr.heures_compl_fc_majorees               + d_resultat.volume_horaire(id).heures_compl_fc_majorees;
+      id := d_resultat.volume_horaire.NEXT(id);
+    END LOOP;
 
-    WHEN NOT MATCHED THEN INSERT (
+    id := d_resultat.volume_horaire_ref.FIRST;
+    LOOP EXIT WHEN id IS NULL;
+      sid := d_volume_horaire_ref(id).service_referentiel_id;
+      IF NOT res_service_ref.exists(sid) THEN res_service_ref(sid).service_referentiel := 0; END IF;
 
-      ID,
-      ANNEE_ID,
-      INTERVENANT_ID,
-      PEUT_SAISIR_SERVICE,
-      TYPE_VOLUME_HORAIRE_ID,
-      STRUCTURE_ID,
-      NBVH,
-      VALIDE,
-      TO_DELETE
+      res_service_ref(sid).service_referentiel      := res_service_ref(sid).service_referentiel      + d_resultat.volume_horaire_ref(id).service_referentiel;
+      res_service_ref(sid).heures_compl_referentiel := res_service_ref(sid).heures_compl_referentiel + d_resultat.volume_horaire_ref(id).heures_compl_referentiel;
 
-    ) VALUES (
+      fr.service_referentiel                        := fr.service_referentiel                        + d_resultat.volume_horaire_ref(id).service_referentiel;
+      fr.heures_compl_referentiel                   := fr.heures_compl_referentiel                   + d_resultat.volume_horaire_ref(id).heures_compl_referentiel;
+      id := d_resultat.volume_horaire_ref.NEXT(id);
+    END LOOP;
 
-      TBL_SERVICE_REFERENTIEL_ID_SEQ.NEXTVAL,
-      v.ANNEE_ID,
-      v.INTERVENANT_ID,
-      v.PEUT_SAISIR_SERVICE,
-      v.TYPE_VOLUME_HORAIRE_ID,
-      v.STRUCTURE_ID,
-      v.NBVH,
-      v.VALIDE,
-      0
+    -- Sauvegarde du résultat global
+    fr.id                       := NULL;
+    fr.intervenant_id           := d_resultat.intervenant_id;
+    fr.type_volume_horaire_id   := d_resultat.type_volume_horaire_id;
+    fr.etat_volume_horaire_id   := d_resultat.etat_volume_horaire_id;
+    fr.service_du               := d_resultat.service_du;
+    fr.total                    := fr.service_fi
+                                 + fr.service_fa
+                                 + fr.service_fc
+                                 + fr.service_referentiel
+                                 + fr.heures_compl_fi
+                                 + fr.heures_compl_fa
+                                 + fr.heures_compl_fc
+                                 + fr.heures_compl_fc_majorees
+                                 + fr.heures_compl_referentiel;
+    fr.solde                    := d_resultat.solde;
+    fr.sous_service             := d_resultat.sous_service;
+    fr.heures_compl             := d_resultat.heures_compl;
+    fr.id := OSE_FORMULE.ENREGISTRER_RESULTAT( fr );
 
-    );
+    -- sauvegarde des services
+    id := res_service.FIRST;
+    LOOP EXIT WHEN id IS NULL;
+      frs.id                       := NULL;
+      frs.formule_resultat_id      := fr.id;
+      frs.service_id               := id;
+      frs.service_fi               := res_service(id).service_fi;
+      frs.service_fa               := res_service(id).service_fa;
+      frs.service_fc               := res_service(id).service_fc;
+      frs.heures_compl_fi          := res_service(id).heures_compl_fi;
+      frs.heures_compl_fa          := res_service(id).heures_compl_fa;
+      frs.heures_compl_fc          := res_service(id).heures_compl_fc;
+      frs.heures_compl_fc_majorees := res_service(id).heures_compl_fc_majorees;
+      frs.total                    := frs.service_fi
+                                    + frs.service_fa
+                                    + frs.service_fc
+                                    + frs.heures_compl_fi
+                                    + frs.heures_compl_fa
+                                    + frs.heures_compl_fc
+                                    + frs.heures_compl_fc_majorees;
+      dev_null := OSE_FORMULE.ENREGISTRER_RESULTAT_SERVICE( frs );
+      id := res_service.NEXT(id);
+    END LOOP;
 
-    DELETE TBL_SERVICE_REFERENTIEL WHERE to_delete = 1 AND ' || conds || ';
+    -- sauvegarde des services référentiels
+    id := res_service_ref.FIRST;
+    LOOP EXIT WHEN id IS NULL;
+      frsr.id                       := NULL;
+      frsr.formule_resultat_id      := fr.id;
+      frsr.service_referentiel_id   := id;
+      frsr.service_referentiel      := res_service_ref(id).service_referentiel;
+      frsr.heures_compl_referentiel := res_service_ref(id).heures_compl_referentiel;
+      frsr.total                    := res_service_ref(id).service_referentiel
+                                     + res_service_ref(id).heures_compl_referentiel;
+      dev_null := OSE_FORMULE.ENREGISTRER_RESULTAT_SERV_REF( frsr );
+      id := res_service_ref.NEXT(id);
+    END LOOP;
 
-    END;';
+    -- sauvegarde des volumes horaires
+    id := d_resultat.volume_horaire.FIRST;
+    LOOP EXIT WHEN id IS NULL;
+      frvh.id                        := NULL;
+      frvh.formule_resultat_id       := fr.id;
+      frvh.volume_horaire_id         := id;
+      frvh.service_fi                := d_resultat.volume_horaire(id).service_fi;
+      frvh.service_fa                := d_resultat.volume_horaire(id).service_fa;
+      frvh.service_fc                := d_resultat.volume_horaire(id).service_fc;
+      frvh.heures_compl_fi           := d_resultat.volume_horaire(id).heures_compl_fi;
+      frvh.heures_compl_fa           := d_resultat.volume_horaire(id).heures_compl_fa;
+      frvh.heures_compl_fc           := d_resultat.volume_horaire(id).heures_compl_fc;
+      frvh.heures_compl_fc_majorees  := d_resultat.volume_horaire(id).heures_compl_fc_majorees;
+      frvh.total                     := frvh.service_fi
+                                      + frvh.service_fa
+                                      + frvh.service_fc
+                                      + frvh.heures_compl_fi
+                                      + frvh.heures_compl_fa
+                                      + frvh.heures_compl_fc
+                                      + frvh.heures_compl_fc_majorees;
+      dev_null := OSE_FORMULE.ENREGISTRER_RESULTAT_VH( frvh );
+      id := d_resultat.volume_horaire.NEXT(id);
+    END LOOP;
+
+    -- sauvegarde des volumes horaires référentiels
+    id := d_resultat.volume_horaire_ref.FIRST;
+    LOOP EXIT WHEN id IS NULL;
+      frvhr.id                       := NULL;
+      frvhr.formule_resultat_id      := fr.id;
+      frvhr.volume_horaire_ref_id    := id;
+      frvhr.service_referentiel      := d_resultat.volume_horaire_ref(id).service_referentiel;
+      frvhr.heures_compl_referentiel := d_resultat.volume_horaire_ref(id).heures_compl_referentiel;
+      frvhr.total                    := frvhr.service_referentiel
+                                      + frvhr.heures_compl_referentiel;
+      dev_null := OSE_FORMULE.ENREGISTRER_RESULTAT_VH_REF( frvhr );
+      id := d_resultat.volume_horaire_ref.NEXT(id);
+    END LOOP;
+  END;
 
+  PROCEDURE DEBUG_INTERVENANT IS
+  BEGIN
+    ose_test.echo('d_intervenant');
+    ose_test.echo('      .structure_id                   = ' || d_intervenant.structure_id || ' (' || ose_test.get_structure_by_id(d_intervenant.structure_id).libelle_court || ')' );
+    ose_test.echo('      .heures_service_statutaire      = ' || d_intervenant.heures_service_statutaire );
+    ose_test.echo('      .heures_service_modifie         = ' || d_intervenant.heures_service_modifie );
+    ose_test.echo('      .depassement_service_du_sans_hc = ' || d_intervenant.depassement_service_du_sans_hc );
+    ose_test.echo('');
   END;
 
-
-
-  PROCEDURE C_SERVICE_SAISIE( PARAMS UNICAEN_TBL.T_PARAMS ) IS
-    conds CLOB;    
+  PROCEDURE DEBUG_SERVICE( SERVICE_ID PLS_INTEGER ) IS
   BEGIN
-    conds := params_to_conds( params );
+    ose_test.echo('d_service(' || SERVICE_ID || ')' );
+    ose_test.echo('      .taux_fi                   = ' || d_service(SERVICE_ID).taux_fi );
+    ose_test.echo('      .taux_fa                   = ' || d_service(SERVICE_ID).taux_fa );
+    ose_test.echo('      .taux_fc                   = ' || d_service(SERVICE_ID).taux_fc );
+    ose_test.echo('      .ponderation_service_du    = ' || d_service(SERVICE_ID).ponderation_service_du );
+    ose_test.echo('      .ponderation_service_compl = ' || d_service(SERVICE_ID).ponderation_service_compl );
+    ose_test.echo('      .structure_aff_id          = ' || d_service(SERVICE_ID).structure_aff_id || ' (' || ose_test.get_structure_by_id(d_service(SERVICE_ID).structure_aff_id).libelle_court || ')' );
+    ose_test.echo('      .structure_ens_id          = ' || d_service(SERVICE_ID).structure_ens_id || ' (' || CASE WHEN d_service(SERVICE_ID).structure_ens_id IS NOT NULL THEN ose_test.get_structure_by_id(d_service(SERVICE_ID).structure_ens_id).libelle_court ELSE 'null' END || ')' );
+    ose_test.echo('');
+  END;
 
-    EXECUTE IMMEDIATE 'BEGIN
+  PROCEDURE DEBUG_SERVICE_REF( SERVICE_REF_ID PLS_INTEGER ) IS
+  BEGIN
+    ose_test.echo('d_service_ref(' || SERVICE_REF_ID || ')' );
+    ose_test.echo('      .structure_id          = ' || d_service_ref(SERVICE_REF_ID).structure_id || ' (' || ose_test.get_structure_by_id(d_service_ref(SERVICE_REF_ID).structure_id).libelle_court || ')' );
+    ose_test.echo('');
+  END;
 
-    UPDATE TBL_SERVICE_SAISIE SET to_delete = 1 WHERE ' || conds || ';
+  PROCEDURE DEBUG_VOLUME_HORAIRE( VH_ID PLS_INTEGER ) IS
+  BEGIN
+    ose_test.echo('d_volume_horaire(' || VH_ID || ')' );
+    ose_test.echo('      .service_id                = ' || d_volume_horaire(VH_ID).service_id );
+    ose_test.echo('      .type_volume_horaire_id    = ' || d_volume_horaire(VH_ID).type_volume_horaire_id );
+    ose_test.echo('      .etat_volume_horaire_id    = ' || d_volume_horaire(VH_ID).etat_volume_horaire_id );
+    ose_test.echo('      .etat_volume_horaire_ordre = ' || d_volume_horaire(VH_ID).etat_volume_horaire_ordre );
+    ose_test.echo('      .heures                    = ' || d_volume_horaire(VH_ID).heures );
+    ose_test.echo('      .taux_service_du           = ' || d_volume_horaire(VH_ID).taux_service_du );
+    ose_test.echo('      .taux_service_compl        = ' || d_volume_horaire(VH_ID).taux_service_compl );
+    ose_test.echo('');
+  END;
 
-    MERGE INTO 
-      TBL_SERVICE_SAISIE t 
-    USING (
+  PROCEDURE DEBUG_VOLUME_HORAIRE_REF( VH_REF_ID PLS_INTEGER ) IS
+  BEGIN
+    ose_test.echo('d_volume_horaire_ref(' || VH_REF_ID || ')' );
+    ose_test.echo('      .service_referentiel_id    = ' || d_volume_horaire_ref(VH_REF_ID).service_referentiel_id );
+    ose_test.echo('      .type_volume_horaire_id    = ' || d_volume_horaire_ref(VH_REF_ID).type_volume_horaire_id );
+    ose_test.echo('      .etat_volume_horaire_id    = ' || d_volume_horaire_ref(VH_REF_ID).etat_volume_horaire_id );
+    ose_test.echo('      .etat_volume_horaire_ordre = ' || d_volume_horaire_ref(VH_REF_ID).etat_volume_horaire_ordre );
+    ose_test.echo('      .heures                    = ' || d_volume_horaire_ref(VH_REF_ID).heures );
+    ose_test.echo('');
+  END;
 
-      SELECT
-        tv.*
-      FROM
-        (SELECT
-          i.annee_id,
-          i.id intervenant_id,
-          si.peut_saisir_service,
-          si.peut_saisir_referentiel,
-          SUM( CASE WHEN tvhs.code = ''PREVU''   THEN NVL(vh .heures,0) ELSE 0 END ) heures_service_prev,
-          SUM( CASE WHEN tvhs.code = ''PREVU''   THEN NVL(vhr.heures,0) ELSE 0 END ) heures_referentiel_prev,
-          SUM( CASE WHEN tvhs.code = ''REALISE'' THEN NVL(vh .heures,0) ELSE 0 END ) heures_service_real,
-          SUM( CASE WHEN tvhs.code = ''REALISE'' THEN NVL(vhr.heures,0) ELSE 0 END ) heures_referentiel_real
-        FROM
-          intervenant i
-          JOIN statut_intervenant si ON si.id = i.statut_id
-          LEFT JOIN service s ON s.intervenant_id = i.id AND s.histo_destruction IS NULL
-          LEFT JOIN volume_horaire vh ON vh.service_id = s.id AND vh.histo_destruction IS NULL
-          LEFT JOIN type_volume_horaire tvhs ON tvhs.id = vh.type_volume_horaire_id
-        
-          LEFT JOIN service_referentiel sr ON sr.intervenant_id = i.id AND sr.histo_destruction IS NULL
-          LEFT JOIN volume_horaire_ref vhr ON vhr.service_referentiel_id = sr.id AND vhr.histo_destruction IS NULL
-          LEFT JOIN type_volume_horaire tvhrs ON tvhrs.id = vhr.type_volume_horaire_id
-        WHERE
-          i.histo_destruction IS NULL
-        GROUP BY
-          i.annee_id,
-          i.id,
-          si.peut_saisir_service,
-          si.peut_saisir_referentiel) tv
-      WHERE
-        ' || conds || '
+  PROCEDURE DEBUG_RESULTAT IS
+  BEGIN
+    ose_test.echo('d_resultat' );
+    ose_test.echo('      .service_du   = ' || d_resultat.service_du );
+    ose_test.echo('      .solde        = ' || d_resultat.solde );
+    ose_test.echo('      .sous_service = ' || d_resultat.sous_service );
+    ose_test.echo('      .heures_compl = ' || d_resultat.heures_compl );
+    ose_test.echo('');
+  END;
 
-    ) v ON (
-            t.INTERVENANT_ID = v.INTERVENANT_ID
+  PROCEDURE DEBUG_RESULTAT_VH( VH_ID PLS_INTEGER ) IS
+  BEGIN
+    ose_test.echo('d_resultat.volume_horaire(' || VH_ID || ')' );
+    ose_test.echo('      .service_fi                = ' || d_resultat.volume_horaire(VH_ID).service_fi );
+    ose_test.echo('      .service_fa                = ' || d_resultat.volume_horaire(VH_ID).service_fa );
+    ose_test.echo('      .service_fc                = ' || d_resultat.volume_horaire(VH_ID).service_fc );
+    ose_test.echo('      .heures_compl_fi           = ' || d_resultat.volume_horaire(VH_ID).heures_compl_fi );
+    ose_test.echo('      .heures_compl_fa           = ' || d_resultat.volume_horaire(VH_ID).heures_compl_fa );
+    ose_test.echo('      .heures_compl_fc           = ' || d_resultat.volume_horaire(VH_ID).heures_compl_fc );
+    ose_test.echo('      .heures_compl_fc_majorees  = ' || d_resultat.volume_horaire(VH_ID).heures_compl_fc_majorees );
+    ose_test.echo('');
+  END;
 
-    ) WHEN MATCHED THEN UPDATE SET
+  PROCEDURE DEBUG_RESULTAT_VH_REF( VH_REF_ID PLS_INTEGER ) IS
+  BEGIN
+    ose_test.echo('d_resultat.volume_horaire_ref(' || VH_REF_ID || ')' );
+    ose_test.echo('      .service_referentiel                = ' || d_resultat.volume_horaire_ref(VH_REF_ID).service_referentiel );
+    ose_test.echo('      .heures_compl_referentiel           = ' || d_resultat.volume_horaire_ref(VH_REF_ID).heures_compl_referentiel );
+    ose_test.echo('');
+  END;
 
-      ANNEE_ID                = v.ANNEE_ID,
-      PEUT_SAISIR_SERVICE     = v.PEUT_SAISIR_SERVICE,
-      PEUT_SAISIR_REFERENTIEL = v.PEUT_SAISIR_REFERENTIEL,
-      HEURES_SERVICE_PREV     = v.HEURES_SERVICE_PREV,
-      HEURES_REFERENTIEL_PREV = v.HEURES_REFERENTIEL_PREV,
-      HEURES_SERVICE_REAL     = v.HEURES_SERVICE_REAL,
-      HEURES_REFERENTIEL_REAL = v.HEURES_REFERENTIEL_REAL,
-      to_delete = 0
+  PROCEDURE DEBUG_ALL( INTERVENANT_ID NUMERIC, TYPE_VOLUME_HORAIRE_ID NUMERIC, ETAT_VOLUME_HORAIRE_ID NUMERIC ) IS
+    id  PLS_INTEGER;
+    i   intervenant%rowtype;
+    a   annee%rowtype;
+    tvh type_volume_horaire%rowtype;
+    evh etat_volume_horaire%rowtype;
+  BEGIN
+    IF GET_DEBUG_LEVEL >= 1 THEN
+      SELECT * INTO   i FROM intervenant         WHERE id = INTERVENANT_ID;
+      SELECT * INTO   a FROM annee               WHERE id = i.annee_id;
+      SELECT * INTO tvh FROM type_volume_horaire WHERE id = TYPE_VOLUME_HORAIRE_ID;
+      SELECT * INTO evh FROM etat_volume_horaire WHERE id = ETAT_VOLUME_HORAIRE_ID;
 
-    WHEN NOT MATCHED THEN INSERT (
+      ose_test.echo('');
+      ose_test.echo('---------------------------------------------------------------------');
+      ose_test.echo('Intervenant: ' || INTERVENANT_ID || ' : ' || i.prenom || ' ' || i.nom_usuel || ' (n° harp. ' || i.source_code || ')' );
+      ose_test.echo(
+                  'Année: ' || a.libelle
+               || ', type ' || tvh.libelle
+               || ', état ' || evh.libelle
+      );
+      ose_test.echo('');
+    END IF;
+    IF GET_DEBUG_LEVEL >= 2 THEN
+      DEBUG_INTERVENANT;
+    END IF;
 
-      ID,
-      ANNEE_ID,
-      INTERVENANT_ID,
-      PEUT_SAISIR_SERVICE,
-      PEUT_SAISIR_REFERENTIEL,
-      HEURES_SERVICE_PREV,
-      HEURES_REFERENTIEL_PREV,
-      HEURES_SERVICE_REAL,
-      HEURES_REFERENTIEL_REAL,
-      TO_DELETE
+    IF GET_DEBUG_LEVEL >= 5 THEN
+      id := d_service.FIRST;
+      LOOP EXIT WHEN id IS NULL;
+        DEBUG_SERVICE( id );
+        id := d_service.NEXT(id);
+      END LOOP;
 
-    ) VALUES (
+      id := d_service_ref.FIRST;
+      LOOP EXIT WHEN id IS NULL;
+        DEBUG_SERVICE_REF( id );
+        id := d_service_ref.NEXT(id);
+      END LOOP;
+    END IF;
 
-      TBL_SERVICE_SAISIE_ID_SEQ.NEXTVAL,
-      v.ANNEE_ID,
-      v.INTERVENANT_ID,
-      v.PEUT_SAISIR_SERVICE,
-      v.PEUT_SAISIR_REFERENTIEL,
-      v.HEURES_SERVICE_PREV,
-      v.HEURES_REFERENTIEL_PREV,
-      v.HEURES_SERVICE_REAL,
-      v.HEURES_REFERENTIEL_REAL,
-      0
+    IF GET_DEBUG_LEVEL >= 6 THEN
+      id := d_volume_horaire.FIRST;
+      LOOP EXIT WHEN id IS NULL;
+        DEBUG_VOLUME_HORAIRE( id );
+        id := d_volume_horaire.NEXT(id);
+      END LOOP;
 
-    );
+      id := d_volume_horaire_ref.FIRST;
+      LOOP EXIT WHEN id IS NULL;
+        DEBUG_VOLUME_HORAIRE_REF( id );
+        id := d_volume_horaire_ref.NEXT(id);
+      END LOOP;
+    END IF;
 
-    DELETE TBL_SERVICE_SAISIE WHERE to_delete = 1 AND ' || conds || ';
+    IF GET_DEBUG_LEVEL >= 3 THEN
+      DEBUG_RESULTAT;
+    END IF;
 
-    END;';
+    IF GET_DEBUG_LEVEL >= 4 THEN
+      id := d_resultat.volume_horaire.FIRST;
+      LOOP EXIT WHEN id IS NULL;
+        DEBUG_RESULTAT_VH( id );
+        id := d_resultat.volume_horaire.NEXT(id);
+      END LOOP;
 
+      id := d_resultat.volume_horaire_ref.FIRST;
+      LOOP EXIT WHEN id IS NULL;
+        DEBUG_RESULTAT_VH_REF( id );
+        id := d_resultat.volume_horaire_ref.NEXT(id);
+      END LOOP;
+    END IF;
   END;
 
 
 
-  PROCEDURE C_VALIDATION_ENSEIGNEMENT( PARAMS UNICAEN_TBL.T_PARAMS ) IS
-    conds CLOB;    
+  PROCEDURE CALCULER( INTERVENANT_ID NUMERIC ) IS
+    id PLS_INTEGER;
+    found BOOLEAN;
+    function_name VARCHAR2(30);
+    package_name VARCHAR2(30);
   BEGIN
-    conds := params_to_conds( params );
-
-    EXECUTE IMMEDIATE 'BEGIN
-
-    UPDATE TBL_VALIDATION_ENSEIGNEMENT SET to_delete = 1 WHERE ' || conds || ';
+    package_name  := OSE_PARAMETRE.GET_FORMULE_PACKAGE_NAME;
+    function_name := OSE_PARAMETRE.GET_FORMULE_FUNCTION_NAME;
 
-    MERGE INTO 
-      TBL_VALIDATION_ENSEIGNEMENT t 
-    USING (
+    -- détection de suppression des lignes de résultat obsolètes
+    UPDATE formule_resultat SET TO_DELETE = 1 WHERE intervenant_id = CALCULER.INTERVENANT_ID;
+    UPDATE FORMULE_RESULTAT_SERVICE_REF SET TO_DELETE = 1 WHERE formule_resultat_id IN (SELECT id FROM formule_resultat WHERE intervenant_id = CALCULER.INTERVENANT_ID);
+    UPDATE FORMULE_RESULTAT_SERVICE     SET TO_DELETE = 1 WHERE formule_resultat_id IN (SELECT id FROM formule_resultat WHERE intervenant_id = CALCULER.INTERVENANT_ID);
+    UPDATE FORMULE_RESULTAT_VH_REF      SET TO_DELETE = 1 WHERE formule_resultat_id IN (SELECT id FROM formule_resultat WHERE intervenant_id = CALCULER.INTERVENANT_ID);
+    UPDATE FORMULE_RESULTAT_VH          SET TO_DELETE = 1 WHERE formule_resultat_id IN (SELECT id FROM formule_resultat WHERE intervenant_id = CALCULER.INTERVENANT_ID);
 
-      SELECT
-        tv.*
-      FROM
-        (SELECT DISTINCT
-          i.annee_id,
-          i.id intervenant_id,
-          CASE WHEN rsv.priorite = ''affectation'' THEN
-            COALESCE( i.structure_id, ep.structure_id )
-          ELSE
-            COALESCE( ep.structure_id, i.structure_id )
-          END structure_id,
-          vh.type_volume_horaire_id,
-          s.id service_id,
-          vh.id volume_horaire_id,
-          v.id validation_id
-        FROM
-          service s
-          JOIN volume_horaire vh ON vh.service_id = s.id AND vh.histo_destruction IS NULL
-          JOIN intervenant i ON i.id = s.intervenant_id AND i.histo_destruction IS NULL
-          JOIN statut_intervenant si ON si.id = i.statut_id
-          JOIN regle_structure_validation rsv ON rsv.type_intervenant_id = si.type_intervenant_id AND rsv.type_volume_horaire_id = vh.type_volume_horaire_id
-          LEFT JOIN element_pedagogique ep ON ep.id = s.element_pedagogique_id
-          LEFT JOIN validation_vol_horaire vvh ON vvh.volume_horaire_id = vh.id
-          LEFT JOIN validation v ON v.id = vvh.validation_id AND v.histo_destruction IS NULL
-        WHERE
-          s.histo_destruction IS NULL) tv
-      WHERE
-        ' || conds || '
+    POPULATE( INTERVENANT_ID );
+    IF d_intervenant.heures_service_statutaire IS NOT NULL THEN -- sinon rien n'est à faire!!
+      -- lancement du calcul sur les nouvelles lignes ou sur les lignes existantes
+      id := d_type_etat_vh.FIRST;
+      LOOP EXIT WHEN id IS NULL;
+        POPULATE_FILTER( d_type_etat_vh(id).type_volume_horaire_id, d_type_etat_vh(id).etat_volume_horaire_id );
+        DEBUG_ALL( INTERVENANT_ID, d_type_etat_vh(id).type_volume_horaire_id, d_type_etat_vh(id).etat_volume_horaire_id );
+        OSE_FORMULE.INIT_RESULTAT( INTERVENANT_ID, d_type_etat_vh(id).type_volume_horaire_id, d_type_etat_vh(id).etat_volume_horaire_id );
+        OSE_FORMULE.CALC_RESULTAT;
+        OSE_FORMULE.SAVE_RESULTAT;
+        id := d_type_etat_vh.NEXT(id);
+      END LOOP;
+    END IF;
 
-    ) v ON (
-            t.INTERVENANT_ID         = v.INTERVENANT_ID
-        AND t.STRUCTURE_ID           = v.STRUCTURE_ID
-        AND t.TYPE_VOLUME_HORAIRE_ID = v.TYPE_VOLUME_HORAIRE_ID
-        AND t.SERVICE_ID             = v.SERVICE_ID
-        AND COALESCE(t.VALIDATION_ID,0) = COALESCE(v.VALIDATION_ID,0)
-        AND t.VOLUME_HORAIRE_ID      = v.VOLUME_HORAIRE_ID
+    -- suppression des données devenues obsolètes
+    OSE_EVENT.ON_BEFORE_FORMULE_RES_DELETE( CALCULER.INTERVENANT_ID );
 
-    ) WHEN MATCHED THEN UPDATE SET
+    UPDATE FORMULE_RESULTAT_SERVICE SET
+      to_delete = 0,
+      service_fi = 0,
+      service_fa = 0,
+      service_fc = 0,
+      heures_compl_fi = 0,
+      heures_compl_fa = 0,
+      heures_compl_fc = 0,
+      heures_compl_fc_majorees = 0,
+      total = 0
+    WHERE
+      TO_DELETE = 1
+      AND 0 < (SELECT COUNT(*) FROM mise_en_paiement mep WHERE mep.formule_res_service_id = FORMULE_RESULTAT_SERVICE.id)
+      AND formule_resultat_id IN (SELECT id FROM formule_resultat WHERE intervenant_id = CALCULER.INTERVENANT_ID);
 
-      ANNEE_ID               = v.ANNEE_ID,
-      to_delete = 0
+    DELETE FROM FORMULE_RESULTAT_SERVICE_REF WHERE TO_DELETE = 1 AND formule_resultat_id IN (SELECT id FROM formule_resultat WHERE intervenant_id = CALCULER.INTERVENANT_ID);
+    DELETE FROM FORMULE_RESULTAT_SERVICE WHERE TO_DELETE = 1 AND formule_resultat_id IN (SELECT id FROM formule_resultat WHERE intervenant_id = CALCULER.INTERVENANT_ID);
+    DELETE FROM FORMULE_RESULTAT_VH_REF WHERE TO_DELETE = 1 AND formule_resultat_id IN (SELECT id FROM formule_resultat WHERE intervenant_id = CALCULER.INTERVENANT_ID);
+    DELETE FROM FORMULE_RESULTAT_VH WHERE TO_DELETE = 1 AND formule_resultat_id IN (SELECT id FROM formule_resultat WHERE intervenant_id = CALCULER.INTERVENANT_ID);
+    DELETE FROM FORMULE_RESULTAT WHERE TO_DELETE = 1 AND intervenant_id = CALCULER.INTERVENANT_ID;
 
-    WHEN NOT MATCHED THEN INSERT (
+    OSE_EVENT.ON_AFTER_FORMULE_CALC( CALCULER.INTERVENANT_ID );
+  END;
 
-      ID,
-      ANNEE_ID,
-      INTERVENANT_ID,
-      STRUCTURE_ID,
-      TYPE_VOLUME_HORAIRE_ID,
-      SERVICE_ID,
-      VALIDATION_ID,
-      VOLUME_HORAIRE_ID,
-      TO_DELETE
 
-    ) VALUES (
 
-      TBL_VALIDATION_ENSEIGNE_ID_SEQ.NEXTVAL,
-      v.ANNEE_ID,
-      v.INTERVENANT_ID,
-      v.STRUCTURE_ID,
-      v.TYPE_VOLUME_HORAIRE_ID,
-      v.SERVICE_ID,
-      v.VALIDATION_ID,
-      v.VOLUME_HORAIRE_ID,
-      0
+  PROCEDURE CALCULER_TBL( PARAMS UNICAEN_TBL.T_PARAMS ) IS
+    intervenant_id NUMERIC;
+    TYPE r_cursor IS REF CURSOR;
+    diff_cur r_cursor;
+  BEGIN
+    OPEN diff_cur FOR 'WITH interv AS (SELECT id intervenant_id, intervenant.* FROM intervenant)
+    SELECT intervenant_id FROM interv WHERE ' || unicaen_tbl.PARAMS_TO_CONDS( params );
+    LOOP
+      FETCH diff_cur INTO intervenant_id; EXIT WHEN diff_cur%NOTFOUND;
+      BEGIN
+        CALCULER( intervenant_id );
+      END;
+    END LOOP;
+    CLOSE diff_cur;
+  END;
 
-    );
 
-    DELETE TBL_VALIDATION_ENSEIGNEMENT WHERE to_delete = 1 AND ' || conds || ';
 
-    END;';
+  FUNCTION GET_INTERVENANT RETURN NUMERIC IS
+  BEGIN
+    RETURN OSE_FORMULE.INTERVENANT_ID;
+  END;
 
+  PROCEDURE SET_INTERVENANT( INTERVENANT_ID NUMERIC DEFAULT NULL) IS
+  BEGIN
+    IF SET_INTERVENANT.INTERVENANT_ID = -1 THEN
+      OSE_FORMULE.INTERVENANT_ID := NULL;
+    ELSE
+      OSE_FORMULE.INTERVENANT_ID := SET_INTERVENANT.INTERVENANT_ID;
+    END IF;
   END;
 
+  FUNCTION MATCH_INTERVENANT(INTERVENANT_ID NUMERIC DEFAULT NULL) RETURN NUMERIC IS
+  BEGIN
+    IF OSE_FORMULE.INTERVENANT_ID IS NULL OR OSE_FORMULE.INTERVENANT_ID = MATCH_INTERVENANT.INTERVENANT_ID THEN
+      RETURN 1;
+    ELSE
+      RETURN 0;
+    END IF;
+  END;
+END OSE_FORMULE;
+/
 
+-- OSE_HISTO
+CREATE OR REPLACE PACKAGE BODY "OSE_HISTO" AS
 
-  PROCEDURE C_VALIDATION_REFERENTIEL( PARAMS UNICAEN_TBL.T_PARAMS ) IS
-    conds CLOB;    
+  FUNCTION FILTRE( histo_debut NUMERIC, histo_fin NUMERIC ) RETURN NUMERIC IS
   BEGIN
-    conds := params_to_conds( params );
+    RETURN 1;
+  END;
 
-    EXECUTE IMMEDIATE 'BEGIN
+END OSE_HISTO;
+/
 
-    UPDATE TBL_VALIDATION_REFERENTIEL SET to_delete = 1 WHERE ' || conds || ';
+-- OSE_PAIEMENT
+CREATE OR REPLACE PACKAGE BODY "OSE_PAIEMENT" AS
 
-    MERGE INTO 
-      TBL_VALIDATION_REFERENTIEL t 
-    USING (
+  PROCEDURE CHECK_BAD_PAIEMENTS( FORMULE_RES_SERVICE_ID NUMERIC DEFAULT NULL, FORMULE_RES_SERVICE_REF_ID NUMERIC DEFAULT NULL ) IS
+    cc NUMERIC;
+  BEGIN
+    SELECT count(*) INTO cc
+    FROM mise_en_paiement mep
+    WHERE
+      mep.histo_destruction IS NULL
+      AND mep.formule_res_service_id = NVL( CHECK_BAD_PAIEMENTS.FORMULE_RES_SERVICE_ID, mep.formule_res_service_id )
+      AND mep.formule_res_service_ref_id = NVL( CHECK_BAD_PAIEMENTS.FORMULE_RES_SERVICE_REF_ID, mep.formule_res_service_ref_id )
+  ;
 
-      SELECT
-        tv.*
-      FROM
-        (SELECT DISTINCT
-          i.annee_id,
-          i.id intervenant_id,
-          CASE WHEN rsv.priorite = ''affectation'' THEN
-            COALESCE( i.structure_id, s.structure_id )
-          ELSE
-            COALESCE( s.structure_id, i.structure_id )
-          END structure_id,
-          vh.type_volume_horaire_id,
-          s.id service_referentiel_id,
-          vh.id volume_horaire_ref_id,
-          v.id validation_id
-        FROM
-          service_referentiel s
-          JOIN volume_horaire_ref vh ON vh.service_referentiel_id = s.id AND vh.histo_destruction IS NULL
-          JOIN intervenant i ON i.id = s.intervenant_id AND i.histo_destruction IS NULL
-          JOIN statut_intervenant si ON si.id = i.statut_id
-          JOIN regle_structure_validation rsv ON rsv.type_intervenant_id = si.type_intervenant_id AND rsv.type_volume_horaire_id = vh.type_volume_horaire_id
-          LEFT JOIN validation_vol_horaire_ref vvh ON vvh.volume_horaire_ref_id = vh.id
-          LEFT JOIN validation v ON v.id = vvh.validation_id AND v.histo_destruction IS NULL
-        WHERE
-          s.histo_destruction IS NULL) tv
-      WHERE
-        ' || conds || '
+    IF (cc > 0) THEN
+      raise_application_error(-20101, 'Il est impossible d''effectuer cette action : des demandes de mise en paiement ont été saisies et ne peuvent pas être modifiées');
+    ELSE
+      DELETE FROM mise_en_paiement WHERE
+        histo_destruction IS NOT NULL
+        AND formule_res_service_id = NVL( CHECK_BAD_PAIEMENTS.FORMULE_RES_SERVICE_ID, formule_res_service_id )
+        AND formule_res_service_ref_id = NVL( CHECK_BAD_PAIEMENTS.FORMULE_RES_SERVICE_REF_ID, formule_res_service_ref_id )
+      ;
+    END IF;
+  END;
 
-    ) v ON (
-            t.INTERVENANT_ID         = v.INTERVENANT_ID
-        AND t.STRUCTURE_ID           = v.STRUCTURE_ID
-        AND t.TYPE_VOLUME_HORAIRE_ID = v.TYPE_VOLUME_HORAIRE_ID
-        AND t.SERVICE_REFERENTIEL_ID = v.SERVICE_REFERENTIEL_ID
-        AND COALESCE(t.VALIDATION_ID,0) = COALESCE(v.VALIDATION_ID,0)
-        AND t.VOLUME_HORAIRE_REF_ID  = v.VOLUME_HORAIRE_REF_ID
+END OSE_PAIEMENT;
+/
 
-    ) WHEN MATCHED THEN UPDATE SET
+-- OSE_PARAMETRE
+CREATE OR REPLACE PACKAGE BODY "OSE_PARAMETRE" AS
 
-      ANNEE_ID               = v.ANNEE_ID,
-      to_delete = 0
+  cache_ose_user NUMERIC;
+  cache_annee_id NUMERIC;
 
-    WHEN NOT MATCHED THEN INSERT (
+  function get_etablissement return Numeric AS
+    etab_id numeric;
+  BEGIN
+    select to_number(valeur) into etab_id from parametre where nom = 'etablissement';
+    RETURN etab_id;
+  END get_etablissement;
 
-      ID,
-      ANNEE_ID,
-      INTERVENANT_ID,
-      STRUCTURE_ID,
-      TYPE_VOLUME_HORAIRE_ID,
-      SERVICE_REFERENTIEL_ID,
-      VALIDATION_ID,
-      VOLUME_HORAIRE_REF_ID,
-      TO_DELETE
+  function get_annee return Numeric AS
+    annee_id numeric;
+  BEGIN
+    IF cache_annee_id IS NOT NULL THEN RETURN cache_annee_id; END IF;
+    select to_number(valeur) into annee_id from parametre where nom = 'annee';
+    cache_annee_id := annee_id;
+    RETURN cache_annee_id;
+  END get_annee;
 
-    ) VALUES (
+  FUNCTION get_annee_import RETURN NUMERIC AS
+    annee_id NUMERIC;
+  BEGIN
+    SELECT to_number(valeur) INTO annee_id FROM parametre WHERE nom = 'annee_import';
+    RETURN annee_id;
+  END get_annee_import;
 
-      TBL_VALIDATION_REFERENT_ID_SEQ.NEXTVAL,
-      v.ANNEE_ID,
-      v.INTERVENANT_ID,
-      v.STRUCTURE_ID,
-      v.TYPE_VOLUME_HORAIRE_ID,
-      v.SERVICE_REFERENTIEL_ID,
-      v.VALIDATION_ID,
-      v.VOLUME_HORAIRE_REF_ID,
-      0
+  function get_ose_user return Numeric AS
+    ose_user_id numeric;
+  BEGIN
+    IF cache_ose_user IS NOT NULL THEN RETURN cache_ose_user; END IF;
+    select to_number(valeur) into ose_user_id from parametre where nom = 'oseuser';
+    cache_ose_user := ose_user_id;
+    RETURN cache_ose_user;
+  END get_ose_user;
 
-    );
+  function get_drh_structure_id return Numeric AS
+    drh_structure_id numeric;
+  BEGIN
+    select to_number(valeur) into drh_structure_id from parametre where nom = 'drh_structure_id';
+    RETURN drh_structure_id;
+  END get_drh_structure_id;
 
-    DELETE TBL_VALIDATION_REFERENTIEL WHERE to_delete = 1 AND ' || conds || ';
+  FUNCTION get_date_fin_saisie_permanents RETURN DATE IS
+    date_fin_saisie_permanents date;
+  BEGIN
+    select TO_DATE(valeur, 'dd/mm/yyyy') into date_fin_saisie_permanents from parametre where nom = 'date_fin_saisie_permanents';
+    RETURN date_fin_saisie_permanents;
+  END;
 
-    END;';
+  FUNCTION get_ddeb_saisie_serv_real RETURN DATE IS
+    val date;
+  BEGIN
+    select TO_DATE(valeur, 'dd/mm/yyyy') into val from parametre where nom = 'date_debut_saisie_services_realises';
+    RETURN val;
+  END;
 
+  FUNCTION get_dfin_saisie_serv_real RETURN DATE IS
+    val date;
+  BEGIN
+    select TO_DATE(valeur, 'dd/mm/yyyy') into val from parametre where nom = 'date_fin_saisie_services_realises';
+    RETURN val;
   END;
 
-  -- END OF AUTOMATIC GENERATION --
+  FUNCTION get_formule_package_name RETURN VARCHAR2 IS
+    formule_package_name VARCHAR2(30);
+  BEGIN
+    SELECT valeur INTO formule_package_name FROM parametre WHERE nom = 'formule_package_name';
+    RETURN formule_package_name;
+  END;
 
-END UNICAEN_TBL;
+  FUNCTION get_formule_function_name RETURN VARCHAR2 IS
+    formule_function_name VARCHAR2(30);
+  BEGIN
+    SELECT valeur INTO formule_function_name FROM parametre WHERE nom = 'formule_function_name';
+    RETURN formule_function_name;
+  END;
+
+END OSE_PARAMETRE;
 /
 
---------------------------------------------------
--- Clés étrangères
---------------------------------------------------
+-- OSE_TEST
+CREATE OR REPLACE PACKAGE BODY "OSE_TEST" AS
+  TYPE OUT_LIST IS TABLE OF CLOB;
+  HTS TIMESTAMP;
+
+  SUCCES_SHOWN BOOLEAN DEFAULT TRUE;
+  T_SUCCES_COUNT NUMERIC DEFAULT 0;
+  T_ECHECS_COUNT NUMERIC DEFAULT 0;
+  A_SUCCES_COUNT NUMERIC DEFAULT 0;
+  A_ECHECS_COUNT NUMERIC DEFAULT 0;
+  CURRENT_TEST CLOB;
+  CURRENT_TEST_OUTPUT_BUFFER OUT_LIST := OUT_LIST();
+  CURRENT_TEST_OUTPUT_BUFFER_ERR BOOLEAN;
 
--- ADRESSE_INTERVENANT_HCFK
-ALTER TABLE "ADRESSE_INTERVENANT" ADD CONSTRAINT "ADRESSE_INTERVENANT_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+  PROCEDURE SHOW_SUCCES IS
+  BEGIN
+    SUCCES_SHOWN := true;
+  END SHOW_SUCCES;
 
--- ADRESSE_INTERVENANT_HDFK
-ALTER TABLE "ADRESSE_INTERVENANT" ADD CONSTRAINT "ADRESSE_INTERVENANT_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+  PROCEDURE HIDE_SUCCES IS
+  BEGIN
+    SUCCES_SHOWN := false;
+  END HIDE_SUCCES;
 
--- ADRESSE_INTERVENANT_HMFK
-ALTER TABLE "ADRESSE_INTERVENANT" ADD CONSTRAINT "ADRESSE_INTERVENANT_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+  PROCEDURE DEBUT( TEST_NAME CLOB ) IS
+  BEGIN
+    CURRENT_TEST := TEST_NAME;
+    CURRENT_TEST_OUTPUT_BUFFER_ERR := FALSE;
+    echo (' '); echo('TEST ' || TEST_NAME || ' >>>>>>>>>>' );
+  END;
 
--- ADRESSE_INTERVENANT_SOURCE_FK
-ALTER TABLE "ADRESSE_INTERVENANT" ADD CONSTRAINT "ADRESSE_INTERVENANT_SOURCE_FK" FOREIGN KEY ("SOURCE_ID")
-	  REFERENCES "SOURCE" ("ID") ON DELETE CASCADE ENABLE;
+  PROCEDURE FIN IS
+    TEST_NAME CLOB;
+  BEGIN
+    IF CURRENT_TEST_OUTPUT_BUFFER_ERR THEN
+      T_ECHECS_COUNT := T_ECHECS_COUNT + 1;
+      echo('>>>>>>>>>> FIN DU TEST ' || CURRENT_TEST ); echo (' ');
+      CURRENT_TEST := NULL;
 
--- ADRESSE_STRUCTURE_HCFK
-ALTER TABLE "ADRESSE_STRUCTURE" ADD CONSTRAINT "ADRESSE_STRUCTURE_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+      FOR i IN 1 .. CURRENT_TEST_OUTPUT_BUFFER.COUNT LOOP
+        echo( CURRENT_TEST_OUTPUT_BUFFER(i) );
+      END LOOP;
+    ELSE
+      T_SUCCES_COUNT := T_SUCCES_COUNT + 1;
+      TEST_NAME := CURRENT_TEST;
+      CURRENT_TEST := NULL;
+      echo('SUCCÈS DU TEST : ' || TEST_NAME );
+    END IF;
+    CURRENT_TEST_OUTPUT_BUFFER.DELETE; -- clear buffer
+  END;
 
--- ADRESSE_STRUCTURE_HDFK
-ALTER TABLE "ADRESSE_STRUCTURE" ADD CONSTRAINT "ADRESSE_STRUCTURE_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+  PROCEDURE ECHO( MSG CLOB ) IS
+  BEGIN
+    IF CURRENT_TEST IS NULL THEN
+      dbms_output.put_line(MSG);
+    ELSE
+      CURRENT_TEST_OUTPUT_BUFFER.EXTEND;
+      CURRENT_TEST_OUTPUT_BUFFER (CURRENT_TEST_OUTPUT_BUFFER.LAST) := MSG;
+    END IF;
+  END;
 
--- ADRESSE_STRUCTURE_HMFK
-ALTER TABLE "ADRESSE_STRUCTURE" ADD CONSTRAINT "ADRESSE_STRUCTURE_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+  PROCEDURE INIT IS
+  BEGIN
+    T_SUCCES_COUNT  := 0;
+    T_ECHECS_COUNT  := 0;
+    A_SUCCES_COUNT  := 0;
+    A_ECHECS_COUNT  := 0;
+    CURRENT_TEST    := NULL;
+  END INIT;
 
--- ADRESSE_STRUCTURE_SOURCE_FK
-ALTER TABLE "ADRESSE_STRUCTURE" ADD CONSTRAINT "ADRESSE_STRUCTURE_SOURCE_FK" FOREIGN KEY ("SOURCE_ID")
-	  REFERENCES "SOURCE" ("ID") ON DELETE CASCADE ENABLE;
+  PROCEDURE SHOW_STATS IS
+  BEGIN
+    echo ( ' ' );
+    echo ( '********************************* STATISTIQUES *********************************' );
+    echo ( ' ' );
+    echo ( '   - nombre de tests passés avec succès :       ' || T_SUCCES_COUNT );
+    echo ( '   - nombre de tests ayant échoué :             ' || T_ECHECS_COUNT );
+    echo ( ' ' );
+    echo ( '   - nombre d''assertions passés avec succès :   ' || A_SUCCES_COUNT );
+    echo ( '   - nombre d''assertions ayant échoué :         ' || A_ECHECS_COUNT );
+    echo ( ' ' );
+    echo ( '********************************************************************************' );
+    echo ( ' ' );
+  END;
 
--- ADRESSE_STRUCTURE_STRUCTURE_FK
-ALTER TABLE "ADRESSE_STRUCTURE" ADD CONSTRAINT "ADRESSE_STRUCTURE_STRUCTURE_FK" FOREIGN KEY ("STRUCTURE_ID")
-	  REFERENCES "STRUCTURE" ("ID") ON DELETE CASCADE ENABLE;
+  PROCEDURE ASSERT( condition BOOLEAN, MSG CLOB ) IS
+  BEGIN
+    IF condition THEN
+      A_SUCCES_COUNT := A_SUCCES_COUNT + 1;
+      IF SUCCES_SHOWN THEN
+        ECHO('        SUCCÈS : ' || MSG );
+      END IF;
+    ELSE
+      A_ECHECS_COUNT := A_ECHECS_COUNT + 1;
+      CURRENT_TEST_OUTPUT_BUFFER_ERR := TRUE;
+      ECHO('        ** ECHEC ** : ' || MSG );
+    END IF;
+  END;
 
--- AFFECTATION_HCFK
-ALTER TABLE "AFFECTATION" ADD CONSTRAINT "AFFECTATION_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+  PROCEDURE HOROINIT IS
+  BEGIN
+    HTS := systimestamp;
+  END;
 
--- AFFECTATION_HDFK
-ALTER TABLE "AFFECTATION" ADD CONSTRAINT "AFFECTATION_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+  PROCEDURE HORODATAGE( msg VARCHAR2 ) IS
+    diff INTERVAL DAY(9) TO SECOND(3);
+  BEGIN
+    IF HTS IS NULL THEN
+      HTS := systimestamp;
+      RETURN;
+    END IF;
 
--- AFFECTATION_HMFK
-ALTER TABLE "AFFECTATION" ADD CONSTRAINT "AFFECTATION_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+    diff := systimestamp - HTS;
+    HTS := systimestamp;
 
--- AFFECTATION_ROLE_FK
-ALTER TABLE "AFFECTATION" ADD CONSTRAINT "AFFECTATION_ROLE_FK" FOREIGN KEY ("ROLE_ID")
-	  REFERENCES "ROLE" ("ID") ON DELETE CASCADE ENABLE;
+    echo(msg || ' (' || diff || ')');
+  END;
 
--- AFFECTATION_R_HCFK
-ALTER TABLE "AFFECTATION_RECHERCHE" ADD CONSTRAINT "AFFECTATION_R_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+  FUNCTION GET_STRUCTURE_BY_ID( id NUMERIC ) RETURN structure%rowtype IS
+    res structure%rowtype;
+  BEGIN
+    IF ID IS NULL THEN RETURN res; END IF;
+    SELECT * INTO res FROM structure WHERE id = GET_STRUCTURE_BY_ID.id;
+    RETURN res;
+  END;
 
--- AFFECTATION_R_HDFK
-ALTER TABLE "AFFECTATION_RECHERCHE" ADD CONSTRAINT "AFFECTATION_R_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+END OSE_TEST;
+/
 
--- AFFECTATION_R_HMFK
-ALTER TABLE "AFFECTATION_RECHERCHE" ADD CONSTRAINT "AFFECTATION_R_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+-- OSE_VALIDATION
+CREATE OR REPLACE PACKAGE BODY "OSE_VALIDATION" AS
 
--- AFFECTATION_R_INTERVENANT_FK
-ALTER TABLE "AFFECTATION_RECHERCHE" ADD CONSTRAINT "AFFECTATION_R_INTERVENANT_FK" FOREIGN KEY ("INTERVENANT_ID")
-	  REFERENCES "INTERVENANT" ("ID") ON DELETE CASCADE ENABLE;
+  FUNCTION can_devalider ( v validation%rowtype ) RETURN varchar2 IS
+    tv type_validation%rowtype;
+    nb NUMERIC;
+    result varchar2(500) default null;
+  BEGIN
 
--- AFFECTATION_R_SOURCE_FK
-ALTER TABLE "AFFECTATION_RECHERCHE" ADD CONSTRAINT "AFFECTATION_R_SOURCE_FK" FOREIGN KEY ("SOURCE_ID")
-	  REFERENCES "SOURCE" ("ID") ON DELETE CASCADE ENABLE;
+    SELECT * INTO tv FROM type_validation WHERE id = v.type_validation_id;
 
--- AFFECTATION_R_STRUCTURE_FK
-ALTER TABLE "AFFECTATION_RECHERCHE" ADD CONSTRAINT "AFFECTATION_R_STRUCTURE_FK" FOREIGN KEY ("STRUCTURE_ID")
-	  REFERENCES "STRUCTURE" ("ID") ENABLE;
+    IF tv.code = 'SERVICES_PAR_COMP' THEN
 
--- AFFECTATION_SOURCE_FK
-ALTER TABLE "AFFECTATION" ADD CONSTRAINT "AFFECTATION_SOURCE_FK" FOREIGN KEY ("SOURCE_ID")
-	  REFERENCES "SOURCE" ("ID") ENABLE;
+      SELECT
+        SUM(CASE WHEN c.id IS NOT NULL THEN 1 ELSE 0 END) INTO nb
+      FROM
+        validation_vol_horaire vvh
+        JOIN volume_horaire vh ON vh.id = vvh.volume_horaire_id
+        LEFT JOIN contrat c ON c.id = vh.contrat_id AND c.histo_destruction IS NULL
+      WHERE
+        vvh.validation_id = v.id;
 
--- AFFECTATION_STRUCTURE_FK
-ALTER TABLE "AFFECTATION" ADD CONSTRAINT "AFFECTATION_STRUCTURE_FK" FOREIGN KEY ("STRUCTURE_ID")
-	  REFERENCES "STRUCTURE" ("ID") ENABLE;
+      -- Si des volumes horaires ont déjà fait l'objet de contrats alors pas de dévalidation possible des heures
+      IF nb > 0 THEN
+        result := 'La dévalidation est impossible car des contrats ont déjà été édités sur la base de ces heures.';
+      END IF;
 
--- AFFECTATION_UTILISATEUR_FK
-ALTER TABLE "AFFECTATION" ADD CONSTRAINT "AFFECTATION_UTILISATEUR_FK" FOREIGN KEY ("UTILISATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+    END IF;
 
--- AGREMENTS_STRUCTURES_FK
-ALTER TABLE "AGREMENT" ADD CONSTRAINT "AGREMENTS_STRUCTURES_FK" FOREIGN KEY ("STRUCTURE_ID")
-	  REFERENCES "STRUCTURE" ("ID") ENABLE;
+    IF tv.code = 'CLOTURE_REALISE' THEN
 
--- AGREMENT_HCFK
-ALTER TABLE "AGREMENT" ADD CONSTRAINT "AGREMENT_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+      SELECT
+        COUNT(*) INTO nb
+      FROM
+        tbl_paiement p
+      WHERE
+        p.periode_paiement_id IS NOT NULL
+        AND p.intervenant_id = v.intervenant_id
+        AND ROWNUM = 1;
 
--- AGREMENT_HDFK
-ALTER TABLE "AGREMENT" ADD CONSTRAINT "AGREMENT_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+      IF nb > 0 THEN
+        result := 'La suppression de la clôture des services réalisés est impossible car des heures ont été payées ou bien le paiement a été demandé.';
+      END IF;
 
--- AGREMENT_HMFK
-ALTER TABLE "AGREMENT" ADD CONSTRAINT "AGREMENT_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+    END IF;
 
--- AGREMENT_INTERVENANT_FK
-ALTER TABLE "AGREMENT" ADD CONSTRAINT "AGREMENT_INTERVENANT_FK" FOREIGN KEY ("INTERVENANT_ID")
-	  REFERENCES "INTERVENANT" ("ID") ON DELETE CASCADE ENABLE;
+    RETURN result;
+  END;
 
--- AGREMENT_TYPE_AGREMENT_FK
-ALTER TABLE "AGREMENT" ADD CONSTRAINT "AGREMENT_TYPE_AGREMENT_FK" FOREIGN KEY ("TYPE_AGREMENT_ID")
-	  REFERENCES "TYPE_AGREMENT" ("ID") ON DELETE CASCADE ENABLE;
+END OSE_VALIDATION;
+/
 
--- AII_FK
-ALTER TABLE "ADRESSE_INTERVENANT" ADD CONSTRAINT "AII_FK" FOREIGN KEY ("INTERVENANT_ID")
-	  REFERENCES "INTERVENANT" ("ID") ON DELETE CASCADE ENABLE;
+-- OSE_WORKFLOW
+CREATE OR REPLACE PACKAGE BODY "OSE_WORKFLOW" AS
+  INTERVENANT_ID NUMERIC DEFAULT NULL;
 
--- CAMPAGNE_SAISIE_ANNEE_FK
-ALTER TABLE "CAMPAGNE_SAISIE" ADD CONSTRAINT "CAMPAGNE_SAISIE_ANNEE_FK" FOREIGN KEY ("ANNEE_ID")
-	  REFERENCES "ANNEE" ("ID") ENABLE;
+  TYPE t_workflow IS TABLE OF tbl_workflow%rowtype INDEX BY PLS_INTEGER;
 
--- CCEP_CENTRE_COUT_FK
-ALTER TABLE "CENTRE_COUT_EP" ADD CONSTRAINT "CCEP_CENTRE_COUT_FK" FOREIGN KEY ("CENTRE_COUT_ID")
-	  REFERENCES "CENTRE_COUT" ("ID") ON DELETE CASCADE ENABLE;
+  TYPE t_dep IS TABLE OF wf_etape_dep%rowtype INDEX BY PLS_INTEGER;
+  TYPE t_deps IS TABLE OF t_dep INDEX BY PLS_INTEGER;
+  TYPE t_deps_bloquantes IS TABLE OF wf_dep_bloquante%rowtype INDEX BY PLS_INTEGER;
 
--- CCEP_ELEMENT_PEDAGOGIQUE_FK
-ALTER TABLE "CENTRE_COUT_EP" ADD CONSTRAINT "CCEP_ELEMENT_PEDAGOGIQUE_FK" FOREIGN KEY ("ELEMENT_PEDAGOGIQUE_ID")
-	  REFERENCES "ELEMENT_PEDAGOGIQUE" ("ID") ON DELETE CASCADE ENABLE;
+  -- propre au calcul courant ! !
+  etapes          t_workflow;
+  deps            t_deps;
+  deps_initialized boolean default false;
+  deps_bloquantes t_deps_bloquantes;
+  deps_bloquantes_index PLS_INTEGER DEFAULT 1;
 
--- CCEP_SOURCE_FK
-ALTER TABLE "CENTRE_COUT_EP" ADD CONSTRAINT "CCEP_SOURCE_FK" FOREIGN KEY ("SOURCE_ID")
-	  REFERENCES "SOURCE" ("ID") ON DELETE CASCADE ENABLE;
 
--- CCEP_TYPE_HEURES_FK
-ALTER TABLE "CENTRE_COUT_EP" ADD CONSTRAINT "CCEP_TYPE_HEURES_FK" FOREIGN KEY ("TYPE_HEURES_ID")
-	  REFERENCES "TYPE_HEURES" ("ID") ON DELETE CASCADE ENABLE;
 
--- CCS_CENTRE_COUT_FK
-ALTER TABLE "CENTRE_COUT_STRUCTURE" ADD CONSTRAINT "CCS_CENTRE_COUT_FK" FOREIGN KEY ("CENTRE_COUT_ID")
-	  REFERENCES "CENTRE_COUT" ("ID") ON DELETE CASCADE ENABLE;
 
--- CCS_SOURCE_FK
-ALTER TABLE "CENTRE_COUT_STRUCTURE" ADD CONSTRAINT "CCS_SOURCE_FK" FOREIGN KEY ("SOURCE_ID")
-	  REFERENCES "SOURCE" ("ID") ENABLE;
+  FUNCTION ETAPE_FRANCHIE( etape tbl_workflow%rowtype, need_done boolean default false ) RETURN FLOAT IS
+    res FLOAT DEFAULT 0;
+  BEGIN
+    IF etape.objectif = 0 THEN
+      IF need_done THEN RETURN 0; ELSE RETURN 1; END IF;
+    END IF;
 
--- CCS_STRUCTURE_FK
-ALTER TABLE "CENTRE_COUT_STRUCTURE" ADD CONSTRAINT "CCS_STRUCTURE_FK" FOREIGN KEY ("STRUCTURE_ID")
-	  REFERENCES "STRUCTURE" ("ID") ON DELETE CASCADE ENABLE;
+    IF etape.atteignable = 0 THEN RETURN 0; END IF;
 
--- CC_ACTIVITE_HCFK
-ALTER TABLE "CC_ACTIVITE" ADD CONSTRAINT "CC_ACTIVITE_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+    IF etape.objectif > 0 THEN
+      res := etape.realisation / etape.objectif;
+    END IF;
 
--- CC_ACTIVITE_HDFK
-ALTER TABLE "CC_ACTIVITE" ADD CONSTRAINT "CC_ACTIVITE_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+    IF res > 1 THEN
+      res := 1;
+    END IF;
 
--- CC_ACTIVITE_HMFK
-ALTER TABLE "CC_ACTIVITE" ADD CONSTRAINT "CC_ACTIVITE_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+    RETURN res;
+  END;
 
--- CENTRE_COUT_ACTIVITE_FK
-ALTER TABLE "CENTRE_COUT" ADD CONSTRAINT "CENTRE_COUT_ACTIVITE_FK" FOREIGN KEY ("ACTIVITE_ID")
-	  REFERENCES "CC_ACTIVITE" ("ID") ON DELETE CASCADE ENABLE;
 
--- CENTRE_COUT_CENTRE_COUT_FK
-ALTER TABLE "CENTRE_COUT" ADD CONSTRAINT "CENTRE_COUT_CENTRE_COUT_FK" FOREIGN KEY ("PARENT_ID")
-	  REFERENCES "CENTRE_COUT" ("ID") ON DELETE CASCADE ENABLE;
 
--- CENTRE_COUT_EP_HCFK
-ALTER TABLE "CENTRE_COUT_EP" ADD CONSTRAINT "CENTRE_COUT_EP_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+  PROCEDURE POPULATE_ETAPES( INTERVENANT_ID NUMERIC ) IS
+    i NUMERIC DEFAULT 0;
+  BEGIN
+    etapes.delete; -- initialisation
 
--- CENTRE_COUT_EP_HDFK
-ALTER TABLE "CENTRE_COUT_EP" ADD CONSTRAINT "CENTRE_COUT_EP_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+    FOR wie IN (
+      SELECT
+        wep.annee_id                                          annee_id,
+        e.id                                                  etape_id,
+        w.structure_id                                        structure_id,
+        ROUND(COALESCE(w.objectif,0),2)                       objectif,
+        CASE WHEN w.intervenant_id IS NULL THEN 0 ELSE 1 END  atteignable,
+        ROUND(COALESCE(w.realisation,0),2)                    realisation,
+        wep.etape_code                                        etape_code,
+        si.id                                                 statut_intervenant_id,
+        ti.id                                                 type_intervenant_id,
+        ti.code                                               type_intervenant_code
+      FROM
+        v_workflow_etape_pertinente wep
+        JOIN wf_etape                 e ON e.code = wep.etape_code
+        JOIN intervenant              i ON i.id = wep.intervenant_id
+        JOIN statut_intervenant      si ON si.id = i.statut_id
+        JOIN type_intervenant        ti ON ti.id = si.type_intervenant_id
+        LEFT JOIN v_tbl_workflow      w ON w.intervenant_id = wep.intervenant_id AND w.etape_code = wep.etape_code
+      WHERE
+        wep.intervenant_id = POPULATE_ETAPES.INTERVENANT_ID
+        AND (e.obligatoire = 1 OR w.intervenant_id IS NOT NULL)
+      ORDER BY
+        e.ordre
+    ) LOOP
+      etapes( i ).annee_id              := wie.annee_id;
+      etapes( i ).intervenant_id        := intervenant_id;
+      etapes( i ).etape_id              := wie.etape_id;
+      etapes( i ).structure_id          := wie.structure_id;
+      etapes( i ).atteignable           := wie.atteignable;
+      etapes( i ).objectif              := wie.objectif;
+      etapes( i ).realisation           := wie.realisation;
+      etapes( i ).etape_code            := wie.etape_code;
+      etapes( i ).statut_intervenant_id := wie.statut_intervenant_id;
+      etapes( i ).type_intervenant_id   := wie.type_intervenant_id;
+      etapes( i ).type_intervenant_code := wie.type_intervenant_code;
+      i := i + 1;
+    END LOOP;
+  END;
 
--- CENTRE_COUT_EP_HMFK
-ALTER TABLE "CENTRE_COUT_EP" ADD CONSTRAINT "CENTRE_COUT_EP_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
 
--- CENTRE_COUT_HCFK
-ALTER TABLE "CENTRE_COUT" ADD CONSTRAINT "CENTRE_COUT_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
 
--- CENTRE_COUT_HDFK
-ALTER TABLE "CENTRE_COUT" ADD CONSTRAINT "CENTRE_COUT_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+  -- peuple l'arbre des dépendances entre étapes de workflow
+  PROCEDURE POPULATE_DEPS( INTERVENANT_ID NUMERIC ) IS
+    s PLS_INTEGER; -- index de l'étape suivante
+    p PLS_INTEGER; -- index de l'étape précédente
+  BEGIN
+    IF deps_initialized THEN RETURN; END IF;
 
--- CENTRE_COUT_HMFK
-ALTER TABLE "CENTRE_COUT" ADD CONSTRAINT "CENTRE_COUT_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+    FOR d IN (
+      SELECT
+        wed.*
+      FROM
+        wf_etape_dep wed
+        JOIN intervenant i ON i.id = POPULATE_DEPS.INTERVENANT_ID
+        JOIN statut_intervenant si ON si.id = i.statut_id
+      WHERE
+        active = 1
+        AND wed.type_intervenant_id IS NULL OR wed.type_intervenant_id = si.type_intervenant_id
+    ) LOOP
+      deps(d.etape_suiv_id)(d.etape_prec_id) := d;
+    END LOOP;
 
--- CENTRE_COUT_SOURCE_FK
-ALTER TABLE "CENTRE_COUT" ADD CONSTRAINT "CENTRE_COUT_SOURCE_FK" FOREIGN KEY ("SOURCE_ID")
-	  REFERENCES "SOURCE" ("ID") ON DELETE CASCADE ENABLE;
+    deps_initialized := true;
+  END;
 
--- CENTRE_COUT_STRUCTURE_HCFK
-ALTER TABLE "CENTRE_COUT_STRUCTURE" ADD CONSTRAINT "CENTRE_COUT_STRUCTURE_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
 
--- CENTRE_COUT_STRUCTURE_HDFK
-ALTER TABLE "CENTRE_COUT_STRUCTURE" ADD CONSTRAINT "CENTRE_COUT_STRUCTURE_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
 
--- CENTRE_COUT_STRUCTURE_HMFK
-ALTER TABLE "CENTRE_COUT_STRUCTURE" ADD CONSTRAINT "CENTRE_COUT_STRUCTURE_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+  PROCEDURE ADD_DEP_BLOQUANTE( wf_etape_dep_id NUMERIC, tbl_workflow_id NUMERIC ) IS
+  BEGIN
+    deps_bloquantes_index := deps_bloquantes_index + 1;
+    deps_bloquantes(deps_bloquantes_index).wf_etape_dep_id := wf_etape_dep_id;
+    deps_bloquantes(deps_bloquantes_index).tbl_workflow_id := tbl_workflow_id;
+  END;
 
--- CENTRE_COUT_TYPE_RESSOURCE_FK
-ALTER TABLE "CENTRE_COUT" ADD CONSTRAINT "CENTRE_COUT_TYPE_RESSOURCE_FK" FOREIGN KEY ("TYPE_RESSOURCE_ID")
-	  REFERENCES "TYPE_RESSOURCE" ("ID") ON DELETE CASCADE ENABLE;
 
--- CHEMIN_PEDAGOGIQUE_ETAPE_FK
-ALTER TABLE "CHEMIN_PEDAGOGIQUE" ADD CONSTRAINT "CHEMIN_PEDAGOGIQUE_ETAPE_FK" FOREIGN KEY ("ETAPE_ID")
-	  REFERENCES "ETAPE" ("ID") ON DELETE CASCADE ENABLE;
 
--- CHEMIN_PEDAGOGIQUE_HCFK
-ALTER TABLE "CHEMIN_PEDAGOGIQUE" ADD CONSTRAINT "CHEMIN_PEDAGOGIQUE_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+  PROCEDURE CALCUL_ATTEIGNABLE( s PLS_INTEGER, d wf_etape_dep%rowtype ) IS
+    count_tested PLS_INTEGER DEFAULT 0;
+    count_na     PLS_INTEGER DEFAULT 0;
+    p PLS_INTEGER; -- index de l'étape précédente
+  BEGIN
 
--- CHEMIN_PEDAGOGIQUE_HDFK
-ALTER TABLE "CHEMIN_PEDAGOGIQUE" ADD CONSTRAINT "CHEMIN_PEDAGOGIQUE_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+    p := etapes.FIRST;
+    LOOP EXIT WHEN p IS NULL;
+      IF etapes(p).etape_id = d.etape_prec_id THEN
+        -- on restreint en fonction du périmètre visé :
+        --  - si la dépendance n'est pas locale alors on teste
+        --  - si les structures aussi bien de l'étape testée que de l'étape dépendante sont nulles alors on teste aussi car elles sont "universelles"
+        --  - si les structures sont équivalentes alors on teste, sinon elles ne sont pas dans le périmètre local
+        IF
+          (d.locale = 0)
+          OR etapes(s).structure_id IS NULL
+          OR etapes(p).structure_id IS NULL
+          OR etapes(s).structure_id = etapes(p).structure_id
+        THEN
+          count_tested := count_tested + 1;
 
--- CHEMIN_PEDAGOGIQUE_HMFK
-ALTER TABLE "CHEMIN_PEDAGOGIQUE" ADD CONSTRAINT "CHEMIN_PEDAGOGIQUE_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+          -- on teste le type de franchissement désiré et si ce n'est pas bon alors on déclare l'étape courante non atteignable
 
--- CHEMIN_PEDAGOGIQUE_SOURCE_FK
-ALTER TABLE "CHEMIN_PEDAGOGIQUE" ADD CONSTRAINT "CHEMIN_PEDAGOGIQUE_SOURCE_FK" FOREIGN KEY ("SOURCE_ID")
-	  REFERENCES "SOURCE" ("ID") ON DELETE CASCADE ENABLE;
+          --  - idem si on a besoin d'une dépendance partiellement franchie est qu'elle ne l'est pas
+          IF d.partielle = 1 THEN
+            IF ETAPE_FRANCHIE(etapes(p), d.obligatoire=1) = 0 THEN -- si le franchissement est totalement inexistant
+              count_na := count_na + 1;
+            END IF;
+          --  - si on a besoin d'une dépendance complètement franchie est qu'elle ne l'est pas alors ce n'est pas atteignable
+          ELSE
+            IF ETAPE_FRANCHIE(etapes(p), d.obligatoire=1) < 1 THEN
+              count_na := count_na + 1;
+            END IF;
+          END IF;
+        END IF;
 
--- CONTRAT_CONTRAT_FK
-ALTER TABLE "CONTRAT" ADD CONSTRAINT "CONTRAT_CONTRAT_FK" FOREIGN KEY ("CONTRAT_ID")
-	  REFERENCES "CONTRAT" ("ID") ON DELETE CASCADE ENABLE;
+      END IF;
+      p := etapes.next(p);
+    END LOOP;
 
--- CONTRAT_FICHIER_FFK
-ALTER TABLE "CONTRAT_FICHIER" ADD CONSTRAINT "CONTRAT_FICHIER_FFK" FOREIGN KEY ("FICHIER_ID")
-	  REFERENCES "FICHIER" ("ID") ON DELETE CASCADE ENABLE;
+    -- on applique le résultat uniquement si des étapes dépendantes ont été trouvées
+    IF count_tested > 0 THEN
 
--- CONTRAT_FICHIER_cFK
-ALTER TABLE "CONTRAT_FICHIER" ADD CONSTRAINT "CONTRAT_FICHIER_cFK" FOREIGN KEY ("CONTRAT_ID")
-	  REFERENCES "CONTRAT" ("ID") ON DELETE CASCADE ENABLE;
+      -- si les étapes dépendantes ont été intégralement franchies
+      IF d.integrale = 1 THEN
+        -- si l'intégralité des étapes est atteignable = NON si au moins une ne l'est pas
+        IF count_na > 0 THEN
+          etapes(s).atteignable := 0;
+          ADD_DEP_BLOQUANTE( d.id, s );
+        END IF;
 
--- CONTRAT_HCFK
-ALTER TABLE "CONTRAT" ADD CONSTRAINT "CONTRAT_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+      -- sinon...
+      ELSE
+        -- si au moins une étape est atteignable = NON si toutes ne sont pas atteignables
+        IF count_tested = count_na THEN
+          etapes(s).atteignable := 0;
+          ADD_DEP_BLOQUANTE( d.id, s );
+        END IF;
+      END IF;
+    END IF;
+  END;
 
--- CONTRAT_HDFK
-ALTER TABLE "CONTRAT" ADD CONSTRAINT "CONTRAT_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
 
--- CONTRAT_HMFK
-ALTER TABLE "CONTRAT" ADD CONSTRAINT "CONTRAT_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
 
--- CONTRAT_INTERVENANT_FK
-ALTER TABLE "CONTRAT" ADD CONSTRAINT "CONTRAT_INTERVENANT_FK" FOREIGN KEY ("INTERVENANT_ID")
-	  REFERENCES "INTERVENANT" ("ID") ON DELETE CASCADE ENABLE;
+  -- calcule si les étapes sont atteignables ou non
+  PROCEDURE CALCUL_ATTEIGNABLES IS
+    e PLS_INTEGER; -- index de l'étape courante
+    d PLS_INTEGER; -- ID de l'étape précédante
+  BEGIN
+    deps_bloquantes.delete;
+    e := etapes.FIRST;
+    LOOP EXIT WHEN e IS NULL;
+      IF deps.exists(etapes(e).etape_id) THEN -- s'il n'y a aucune dépendance alors pas de test!!
+        d := deps(etapes(e).etape_id).FIRST;
+        LOOP EXIT WHEN d IS NULL;
 
--- CONTRAT_STRUCTURE_FK
-ALTER TABLE "CONTRAT" ADD CONSTRAINT "CONTRAT_STRUCTURE_FK" FOREIGN KEY ("STRUCTURE_ID")
-	  REFERENCES "STRUCTURE" ("ID") ENABLE;
+          CALCUL_ATTEIGNABLE(e, deps(etapes(e).etape_id)(d));
 
--- CONTRAT_TYPE_CONTRAT_FK
-ALTER TABLE "CONTRAT" ADD CONSTRAINT "CONTRAT_TYPE_CONTRAT_FK" FOREIGN KEY ("TYPE_CONTRAT_ID")
-	  REFERENCES "TYPE_CONTRAT" ("ID") ENABLE;
+          d := deps(etapes(e).etape_id).next(d);
+        END LOOP;
+      END IF;
+      e := etapes.next(e);
+    END LOOP;
+  END;
 
--- CONTRAT_VALIDATION_FK
-ALTER TABLE "CONTRAT" ADD CONSTRAINT "CONTRAT_VALIDATION_FK" FOREIGN KEY ("VALIDATION_ID")
-	  REFERENCES "VALIDATION" ("ID") ON DELETE SET NULL ENABLE;
 
--- CORPS_HCFK
-ALTER TABLE "CORPS" ADD CONSTRAINT "CORPS_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
 
--- CORPS_HDFK
-ALTER TABLE "CORPS" ADD CONSTRAINT "CORPS_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+  FUNCTION ENREGISTRER_ETAPE( e tbl_workflow%rowtype ) RETURN NUMERIC IS
+    n_etape_id NUMERIC;
+  BEGIN
+
+    MERGE INTO tbl_workflow w USING dual ON (
+
+          w.intervenant_id      = e.intervenant_id
+      AND w.etape_id            = e.etape_id
+      AND NVL(w.structure_id,0) = NVL(e.structure_id,0)
 
--- CORPS_HMFK
-ALTER TABLE "CORPS" ADD CONSTRAINT "CORPS_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+    ) WHEN MATCHED THEN UPDATE SET
 
--- CORPS_SOURCE_FK
-ALTER TABLE "CORPS" ADD CONSTRAINT "CORPS_SOURCE_FK" FOREIGN KEY ("SOURCE_ID")
-	  REFERENCES "SOURCE" ("ID") ON DELETE CASCADE ENABLE;
+      atteignable                  = e.atteignable,
+      objectif                     = e.objectif,
+      realisation                  = e.realisation,
+      etape_code                   = e.etape_code,
+      statut_intervenant_id        = e.statut_intervenant_id,
+      type_intervenant_id          = e.type_intervenant_id,
+      type_intervenant_code        = e.type_intervenant_code,
+      to_delete                    = 0
 
--- CPEP_FK
-ALTER TABLE "CHEMIN_PEDAGOGIQUE" ADD CONSTRAINT "CPEP_FK" FOREIGN KEY ("ELEMENT_PEDAGOGIQUE_ID")
-	  REFERENCES "ELEMENT_PEDAGOGIQUE" ("ID") ON DELETE CASCADE ENABLE;
+    WHEN NOT MATCHED THEN INSERT (
 
--- CS_TYPE_INTERVENANT_FK
-ALTER TABLE "CAMPAGNE_SAISIE" ADD CONSTRAINT "CS_TYPE_INTERVENANT_FK" FOREIGN KEY ("TYPE_INTERVENANT_ID")
-	  REFERENCES "TYPE_INTERVENANT" ("ID") ENABLE;
+      id,
+      annee_id,
+      intervenant_id,
+      etape_id,
+      structure_id,
+      atteignable,
+      objectif,
+      realisation,
+      etape_code,
+      statut_intervenant_id,
+      type_intervenant_id,
+      type_intervenant_code,
+      to_delete
 
--- CS_TYPE_VOLUME_HORAIRE_FK
-ALTER TABLE "CAMPAGNE_SAISIE" ADD CONSTRAINT "CS_TYPE_VOLUME_HORAIRE_FK" FOREIGN KEY ("TYPE_VOLUME_HORAIRE_ID")
-	  REFERENCES "TYPE_VOLUME_HORAIRE" ("ID") ENABLE;
+    ) VALUES (
 
--- DEPARTEMENT_HCFK
-ALTER TABLE "DEPARTEMENT" ADD CONSTRAINT "DEPARTEMENT_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+      TBL_WORKFLOW_ID_SEQ.NEXTVAL,
+      e.annee_id,
+      e.intervenant_id,
+      e.etape_id,
+      e.structure_id,
+      e.atteignable,
+      e.objectif,
+      e.realisation,
+      e.etape_code,
+      e.statut_intervenant_id,
+      e.type_intervenant_id,
+      e.type_intervenant_code,
+      0
 
--- DEPARTEMENT_HDFK
-ALTER TABLE "DEPARTEMENT" ADD CONSTRAINT "DEPARTEMENT_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+    );
 
--- DEPARTEMENT_HMFK
-ALTER TABLE "DEPARTEMENT" ADD CONSTRAINT "DEPARTEMENT_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+    SELECT w.id INTO n_etape_id FROM tbl_workflow w WHERE
+      w.intervenant_id          = e.intervenant_id
+      AND w.etape_id            = e.etape_id
+      AND NVL(w.structure_id,0) = NVL(e.structure_id,0)
+    ;
 
--- DEPARTEMENT_SOURCE_FK
-ALTER TABLE "DEPARTEMENT" ADD CONSTRAINT "DEPARTEMENT_SOURCE_FK" FOREIGN KEY ("SOURCE_ID")
-	  REFERENCES "SOURCE" ("ID") ON DELETE CASCADE ENABLE;
+    RETURN n_etape_id;
+  END;
 
--- DISCIPLINE_HCFK
-ALTER TABLE "DISCIPLINE" ADD CONSTRAINT "DISCIPLINE_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
 
--- DISCIPLINE_HDFK
-ALTER TABLE "DISCIPLINE" ADD CONSTRAINT "DISCIPLINE_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
 
--- DISCIPLINE_HMFK
-ALTER TABLE "DISCIPLINE" ADD CONSTRAINT "DISCIPLINE_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+  PROCEDURE ENREGISTRER_DEP_BLOQUANTE( db wf_dep_bloquante%rowtype ) IS
+  BEGIN
+    MERGE INTO wf_dep_bloquante wdb USING dual ON (
 
--- DISCIPLINE_SOURCE_FK
-ALTER TABLE "DISCIPLINE" ADD CONSTRAINT "DISCIPLINE_SOURCE_FK" FOREIGN KEY ("SOURCE_ID")
-	  REFERENCES "SOURCE" ("ID") ENABLE;
+          wdb.wf_etape_dep_id   = db.wf_etape_dep_id
+      AND wdb.tbl_workflow_id   = db.tbl_workflow_id
 
--- DOMAINE_FONCTIONNEL_HCFK
-ALTER TABLE "DOMAINE_FONCTIONNEL" ADD CONSTRAINT "DOMAINE_FONCTIONNEL_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+    ) WHEN MATCHED THEN UPDATE SET
 
--- DOMAINE_FONCTIONNEL_HDFK
-ALTER TABLE "DOMAINE_FONCTIONNEL" ADD CONSTRAINT "DOMAINE_FONCTIONNEL_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+      to_delete                 = 0
 
--- DOMAINE_FONCTIONNEL_HMFK
-ALTER TABLE "DOMAINE_FONCTIONNEL" ADD CONSTRAINT "DOMAINE_FONCTIONNEL_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+    WHEN NOT MATCHED THEN INSERT (
 
--- DOMAINE_FONCTIONNEL_SOURCE_FK
-ALTER TABLE "DOMAINE_FONCTIONNEL" ADD CONSTRAINT "DOMAINE_FONCTIONNEL_SOURCE_FK" FOREIGN KEY ("SOURCE_ID")
-	  REFERENCES "SOURCE" ("ID") ON DELETE CASCADE ENABLE;
+      id,
+      wf_etape_dep_id,
+      tbl_workflow_id,
+      to_delete
 
--- DOSSIER_D_FK
-ALTER TABLE "DOSSIER" ADD CONSTRAINT "DOSSIER_D_FK" FOREIGN KEY ("DEPT_NAISSANCE_ID")
-	  REFERENCES "DEPARTEMENT" ("ID") ENABLE;
+    ) VALUES (
 
--- DOSSIER_HCFK
-ALTER TABLE "DOSSIER" ADD CONSTRAINT "DOSSIER_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+      WF_DEP_BLOQUANTE_ID_SEQ.NEXTVAL,
+      db.wf_etape_dep_id,
+      db.tbl_workflow_id,
+      0
 
--- DOSSIER_HDFK
-ALTER TABLE "DOSSIER" ADD CONSTRAINT "DOSSIER_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+    );
+  END;
 
--- DOSSIER_HMFK
-ALTER TABLE "DOSSIER" ADD CONSTRAINT "DOSSIER_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
 
--- DOSSIER_INTERVENANT_FK
-ALTER TABLE "DOSSIER" ADD CONSTRAINT "DOSSIER_INTERVENANT_FK" FOREIGN KEY ("INTERVENANT_ID")
-	  REFERENCES "INTERVENANT" ("ID") ENABLE;
 
--- DOSSIER_P_FK
-ALTER TABLE "DOSSIER" ADD CONSTRAINT "DOSSIER_P_FK" FOREIGN KEY ("PAYS_NAISSANCE_ID")
-	  REFERENCES "PAYS" ("ID") ENABLE;
+  PROCEDURE ENREGISTRER( INTERVENANT_ID NUMERIC ) IS
+    i PLS_INTEGER;
+  BEGIN
 
--- DOTATION_ANNEE_FK
-ALTER TABLE "DOTATION" ADD CONSTRAINT "DOTATION_ANNEE_FK" FOREIGN KEY ("ANNEE_ID")
-	  REFERENCES "ANNEE" ("ID") ON DELETE CASCADE ENABLE;
+    UPDATE tbl_workflow SET to_delete = 1 WHERE intervenant_id = ENREGISTRER.INTERVENANT_ID;
+    UPDATE wf_dep_bloquante SET to_delete = 1 WHERE tbl_workflow_id IN (SELECT id FROM tbl_workflow WHERE intervenant_id = ENREGISTRER.INTERVENANT_ID);
 
--- DOTATION_HCFK
-ALTER TABLE "DOTATION" ADD CONSTRAINT "DOTATION_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+    i := etapes.FIRST;
+    LOOP EXIT WHEN i IS NULL;
+      etapes(i).id := ENREGISTRER_ETAPE( etapes(i) );
+      i := etapes.NEXT(i);
+    END LOOP;
 
--- DOTATION_HDFK
-ALTER TABLE "DOTATION" ADD CONSTRAINT "DOTATION_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+    i := deps_bloquantes.FIRST;
+    LOOP EXIT WHEN i IS NULL;
+      deps_bloquantes(i).tbl_workflow_id := etapes(deps_bloquantes(i).tbl_workflow_id).id;
+      ENREGISTRER_DEP_BLOQUANTE( deps_bloquantes(i) );
+      i := deps_bloquantes.NEXT(i);
+    END LOOP;
 
--- DOTATION_HMFK
-ALTER TABLE "DOTATION" ADD CONSTRAINT "DOTATION_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+    DELETE FROM tbl_workflow WHERE TO_DELETE = 1 AND intervenant_id = ENREGISTRER.INTERVENANT_ID;
+    DELETE FROM wf_dep_bloquante WHERE TO_DELETE = 1;
+  END;
 
--- DOTATION_STRUCTURE_FK
-ALTER TABLE "DOTATION" ADD CONSTRAINT "DOTATION_STRUCTURE_FK" FOREIGN KEY ("STRUCTURE_ID")
-	  REFERENCES "STRUCTURE" ("ID") ON DELETE CASCADE ENABLE;
 
--- DOTATION_TYPE_RESSOURCE_FK
-ALTER TABLE "DOTATION" ADD CONSTRAINT "DOTATION_TYPE_RESSOURCE_FK" FOREIGN KEY ("TYPE_RESSOURCE_ID")
-	  REFERENCES "TYPE_RESSOURCE" ("ID") ENABLE;
 
--- DS_MDS_FK
-ALTER TABLE "MODIFICATION_SERVICE_DU" ADD CONSTRAINT "DS_MDS_FK" FOREIGN KEY ("MOTIF_ID")
-	  REFERENCES "MOTIF_MODIFICATION_SERVICE" ("ID") ENABLE;
+  PROCEDURE DEP_CHECK( etape_suiv_id NUMERIC, etape_prec_id NUMERIC ) IS
+    eso NUMERIC;
+    epo NUMERIC;
+  BEGIN
+    SELECT ordre INTO eso FROM wf_etape WHERE id = etape_suiv_id;
+    SELECT ordre INTO epo FROM wf_etape WHERE id = etape_prec_id;
 
--- EFFECTIFS_ELEMENT_FK
-ALTER TABLE "EFFECTIFS" ADD CONSTRAINT "EFFECTIFS_ELEMENT_FK" FOREIGN KEY ("ELEMENT_PEDAGOGIQUE_ID")
-	  REFERENCES "ELEMENT_PEDAGOGIQUE" ("ID") ON DELETE CASCADE ENABLE;
+    IF eso < epo THEN
+      raise_application_error(-20101, 'Une étape de Workflow ne peut dépendre d''une étape située en aval');
+    END IF;
+    IF eso = epo THEN
+      raise_application_error(-20101, 'Une étape de Workflow ne peut dépendre d''elle-même');
+    END IF;
+  END;
 
--- EFFECTIFS_FK
-ALTER TABLE "EFFECTIFS" ADD CONSTRAINT "EFFECTIFS_FK" FOREIGN KEY ("ANNEE_ID")
-	  REFERENCES "ANNEE" ("ID") ENABLE;
 
--- EFFECTIFS_HCFK
-ALTER TABLE "EFFECTIFS" ADD CONSTRAINT "EFFECTIFS_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
 
--- EFFECTIFS_HDFK
-ALTER TABLE "EFFECTIFS" ADD CONSTRAINT "EFFECTIFS_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+  PROCEDURE DEBUG_CALCUL( INTERVENANT_ID NUMERIC ) IS
+    i PLS_INTEGER;
+    d PLS_INTEGER;
+    dep_desc VARCHAR2(200);
+  BEGIN
+    ose_test.echo('');
+    ose_test.echo('-- DEBUG WORKFLOW ETAPE INTERVENANT_ID='|| INTERVENANT_ID ||' --');
+    i := etapes.FIRST;
+    LOOP EXIT WHEN i IS NULL;
+      /*ose_test.echo(
+               'etape='       || RPAD( ose_test.get_wf_etape_by_id(etapes(i).etape_id).code, 30, ' ' )
+          || ', structure='   || RPAD( NVL(ose_test.get_structure_by_id(etapes(i).structure_id).libelle_court,' '), 20, ' ' )
+          || ', ' || CASE WHEN etapes(i).atteignable=1 THEN 'atteignable' ELSE 'na' END
+          || ', objectif= ' || ROUND(etapes(i).objectif)
+          || ', realisation= ' || ROUND(etapes(i).realisation)
+      );*/
 
--- EFFECTIFS_HMFK
-ALTER TABLE "EFFECTIFS" ADD CONSTRAINT "EFFECTIFS_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+      d := deps_bloquantes.FIRST;
+      LOOP EXIT WHEN d IS NULL;
+        IF deps_bloquantes(d).tbl_workflow_id = i THEN
 
--- EFFECTIFS_SOURCE_FK
-ALTER TABLE "EFFECTIFS" ADD CONSTRAINT "EFFECTIFS_SOURCE_FK" FOREIGN KEY ("SOURCE_ID")
-	  REFERENCES "SOURCE" ("ID") ON DELETE CASCADE ENABLE;
+          SELECT
+            we.desc_non_franchie INTO dep_desc
+          FROM
+            wf_etape_dep wed
+            JOIN wf_etape we ON we.id = wed.etape_prec_id
+          WHERE
+            wed.id = deps_bloquantes(d).wf_etape_dep_id;
 
--- ELEMENT_MODULATEUR_HCFK
-ALTER TABLE "ELEMENT_MODULATEUR" ADD CONSTRAINT "ELEMENT_MODULATEUR_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+          ose_test.echo('    CAUSE =' || dep_desc);
+        END IF;
+        d := deps_bloquantes.NEXT(d);
+      END LOOP;
 
--- ELEMENT_MODULATEUR_HDFK
-ALTER TABLE "ELEMENT_MODULATEUR" ADD CONSTRAINT "ELEMENT_MODULATEUR_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+      i := etapes.NEXT(i);
+    END LOOP;
+    ose_test.echo('');
+  END;
 
--- ELEMENT_MODULATEUR_HMFK
-ALTER TABLE "ELEMENT_MODULATEUR" ADD CONSTRAINT "ELEMENT_MODULATEUR_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
 
--- ELEMENT_PEDAGOGIQUE_ANNEE_FK
-ALTER TABLE "ELEMENT_PEDAGOGIQUE" ADD CONSTRAINT "ELEMENT_PEDAGOGIQUE_ANNEE_FK" FOREIGN KEY ("ANNEE_ID")
-	  REFERENCES "ANNEE" ("ID") ENABLE;
 
--- ELEMENT_PEDAGOGIQUE_ETAPE_FK
-ALTER TABLE "ELEMENT_PEDAGOGIQUE" ADD CONSTRAINT "ELEMENT_PEDAGOGIQUE_ETAPE_FK" FOREIGN KEY ("ETAPE_ID")
-	  REFERENCES "ETAPE" ("ID") ENABLE;
+  -- calcul du workflow pour un intervenant
+  PROCEDURE CALCULER( INTERVENANT_ID NUMERIC ) IS
+  BEGIN
+    set_intervenant(intervenant_id);
+    POPULATE_ETAPES( INTERVENANT_ID );
+    POPULATE_DEPS( INTERVENANT_ID );
+    CALCUL_ATTEIGNABLES;
+    IF OSE_TEST.DEBUG_ENABLED THEN
+      DEBUG_CALCUL( INTERVENANT_ID );
+    END IF;
+    ENREGISTRER( INTERVENANT_ID );
+    set_intervenant();
+  END;
 
--- ELEMENT_PEDAGOGIQUE_HCFK
-ALTER TABLE "ELEMENT_PEDAGOGIQUE" ADD CONSTRAINT "ELEMENT_PEDAGOGIQUE_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
 
--- ELEMENT_PEDAGOGIQUE_HDFK
-ALTER TABLE "ELEMENT_PEDAGOGIQUE" ADD CONSTRAINT "ELEMENT_PEDAGOGIQUE_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
 
--- ELEMENT_PEDAGOGIQUE_HMFK
-ALTER TABLE "ELEMENT_PEDAGOGIQUE" ADD CONSTRAINT "ELEMENT_PEDAGOGIQUE_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+  PROCEDURE CALCULER_TOUT( ANNEE_ID NUMERIC DEFAULT NULL ) IS
+  BEGIN
+    FOR mp IN (
+      SELECT
+        id intervenant_id
+      FROM
+        intervenant i
+      WHERE
+        i.histo_destruction IS NULL
+        AND (CALCULER_TOUT.ANNEE_ID IS NULL OR i.annee_id = CALCULER_TOUT.ANNEE_ID)
+    )
+    LOOP
+      CALCULER( mp.intervenant_id );
+    END LOOP;
+  END;
 
--- ELEMENT_PEDAGOGIQUE_PERIODE_FK
-ALTER TABLE "ELEMENT_PEDAGOGIQUE" ADD CONSTRAINT "ELEMENT_PEDAGOGIQUE_PERIODE_FK" FOREIGN KEY ("PERIODE_ID")
-	  REFERENCES "PERIODE" ("ID") ENABLE;
 
--- ELEMENT_PEDAGOGIQUE_SOURCE_FK
-ALTER TABLE "ELEMENT_PEDAGOGIQUE" ADD CONSTRAINT "ELEMENT_PEDAGOGIQUE_SOURCE_FK" FOREIGN KEY ("SOURCE_ID")
-	  REFERENCES "SOURCE" ("ID") ON DELETE CASCADE ENABLE;
 
--- ELEMENT_TAUX_REGIMES_HCFK
-ALTER TABLE "ELEMENT_TAUX_REGIMES" ADD CONSTRAINT "ELEMENT_TAUX_REGIMES_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+  PROCEDURE CALCULER_TBL( PARAMS UNICAEN_TBL.T_PARAMS ) IS
+    intervenant_id NUMERIC;
+    TYPE r_cursor IS REF CURSOR;
+    diff_cur r_cursor;
+  BEGIN
+    OPEN diff_cur FOR 'WITH interv AS (SELECT id intervenant_id, intervenant.* FROM intervenant)
+    SELECT intervenant_id FROM interv WHERE ' || unicaen_tbl.PARAMS_TO_CONDS( params );
+    LOOP
+      FETCH diff_cur INTO intervenant_id; EXIT WHEN diff_cur%NOTFOUND;
+      BEGIN
+        CALCULER( intervenant_id );
+      END;
+    END LOOP;
+    CLOSE diff_cur;
+  END;
 
--- ELEMENT_TAUX_REGIMES_HDFK
-ALTER TABLE "ELEMENT_TAUX_REGIMES" ADD CONSTRAINT "ELEMENT_TAUX_REGIMES_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
 
--- ELEMENT_TAUX_REGIMES_HMFK
-ALTER TABLE "ELEMENT_TAUX_REGIMES" ADD CONSTRAINT "ELEMENT_TAUX_REGIMES_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
 
--- EM_ELEMENT_PEDAGOGIQUE_FK
-ALTER TABLE "ELEMENT_MODULATEUR" ADD CONSTRAINT "EM_ELEMENT_PEDAGOGIQUE_FK" FOREIGN KEY ("ELEMENT_ID")
-	  REFERENCES "ELEMENT_PEDAGOGIQUE" ("ID") ON DELETE CASCADE ENABLE;
+  FUNCTION GET_INTERVENANT RETURN NUMERIC IS
+  BEGIN
+    RETURN OSE_WORKFLOW.INTERVENANT_ID;
+  END;
 
--- EM_MODULATEUR_FK
-ALTER TABLE "ELEMENT_MODULATEUR" ADD CONSTRAINT "EM_MODULATEUR_FK" FOREIGN KEY ("MODULATEUR_ID")
-	  REFERENCES "MODULATEUR" ("ID") ENABLE;
+  PROCEDURE SET_INTERVENANT( INTERVENANT_ID NUMERIC DEFAULT NULL) IS
+  BEGIN
+    IF SET_INTERVENANT.INTERVENANT_ID = -1 THEN
+      OSE_WORKFLOW.INTERVENANT_ID := NULL;
+    ELSE
+      OSE_WORKFLOW.INTERVENANT_ID := SET_INTERVENANT.INTERVENANT_ID;
+    END IF;
+  END;
 
--- EPS_FK
-ALTER TABLE "ELEMENT_PEDAGOGIQUE" ADD CONSTRAINT "EPS_FK" FOREIGN KEY ("STRUCTURE_ID")
-	  REFERENCES "STRUCTURE" ("ID") ENABLE;
+  FUNCTION MATCH_INTERVENANT(INTERVENANT_ID NUMERIC DEFAULT NULL) RETURN NUMERIC IS
+  BEGIN
+    IF OSE_WORKFLOW.INTERVENANT_ID IS NULL OR OSE_WORKFLOW.INTERVENANT_ID = MATCH_INTERVENANT.INTERVENANT_ID THEN
+      RETURN 1;
+    ELSE
+      RETURN 0;
+    END IF;
+  END;
+END OSE_WORKFLOW;
+/
 
--- EP_DISCIPLINE_FK
-ALTER TABLE "ELEMENT_PEDAGOGIQUE" ADD CONSTRAINT "EP_DISCIPLINE_FK" FOREIGN KEY ("DISCIPLINE_ID")
-	  REFERENCES "DISCIPLINE" ("ID") ENABLE;
+-- UNICAEN_IMPORT
+CREATE OR REPLACE PACKAGE BODY "UNICAEN_IMPORT" AS
 
--- ETABLISSEMENT_HCFK
-ALTER TABLE "ETABLISSEMENT" ADD CONSTRAINT "ETABLISSEMENT_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+  v_current_user INTEGER;
+  v_current_annee INTEGER;
 
--- ETABLISSEMENT_HDFK
-ALTER TABLE "ETABLISSEMENT" ADD CONSTRAINT "ETABLISSEMENT_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
 
--- ETABLISSEMENT_HMFK
-ALTER TABLE "ETABLISSEMENT" ADD CONSTRAINT "ETABLISSEMENT_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
 
--- ETABLISSEMENT_SOURCE_FK
-ALTER TABLE "ETABLISSEMENT" ADD CONSTRAINT "ETABLISSEMENT_SOURCE_FK" FOREIGN KEY ("SOURCE_ID")
-	  REFERENCES "SOURCE" ("ID") ON DELETE CASCADE ENABLE;
+  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;
 
--- ETAPE_ANNEE_FK
-ALTER TABLE "ETAPE" ADD CONSTRAINT "ETAPE_ANNEE_FK" FOREIGN KEY ("ANNEE_ID")
-	  REFERENCES "ANNEE" ("ID") ENABLE;
+  PROCEDURE set_current_user (p_current_user INTEGER) is
+  BEGIN
+    v_current_user := p_current_user;
+  END set_current_user;
 
--- ETAPE_DOMAINE_FONCTIONNEL_FK
-ALTER TABLE "ETAPE" ADD CONSTRAINT "ETAPE_DOMAINE_FONCTIONNEL_FK" FOREIGN KEY ("DOMAINE_FONCTIONNEL_ID")
-	  REFERENCES "DOMAINE_FONCTIONNEL" ("ID") ENABLE;
 
--- ETAPE_HCFK
-ALTER TABLE "ETAPE" ADD CONSTRAINT "ETAPE_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
 
--- ETAPE_HDFK
-ALTER TABLE "ETAPE" ADD CONSTRAINT "ETAPE_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+  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;
 
--- ETAPE_HMFK
-ALTER TABLE "ETAPE" ADD CONSTRAINT "ETAPE_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+  PROCEDURE set_current_annee (p_current_annee INTEGER) IS
+  BEGIN
+    v_current_annee := p_current_annee;
+  END set_current_annee;
 
--- ETAPE_SOURCE_FK
-ALTER TABLE "ETAPE" ADD CONSTRAINT "ETAPE_SOURCE_FK" FOREIGN KEY ("SOURCE_ID")
-	  REFERENCES "SOURCE" ("ID") ON DELETE CASCADE ENABLE;
 
--- ETAPE_STRUCTURE_FK
-ALTER TABLE "ETAPE" ADD CONSTRAINT "ETAPE_STRUCTURE_FK" FOREIGN KEY ("STRUCTURE_ID")
-	  REFERENCES "STRUCTURE" ("ID") ENABLE;
 
--- ETAPE_TYPE_FORMATION_FK
-ALTER TABLE "ETAPE" ADD CONSTRAINT "ETAPE_TYPE_FORMATION_FK" FOREIGN KEY ("TYPE_FORMATION_ID")
-	  REFERENCES "TYPE_FORMATION" ("ID") ENABLE;
+  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;
 
--- ETR_ELEMENT_FK
-ALTER TABLE "ELEMENT_TAUX_REGIMES" ADD CONSTRAINT "ETR_ELEMENT_FK" FOREIGN KEY ("ELEMENT_PEDAGOGIQUE_ID")
-	  REFERENCES "ELEMENT_PEDAGOGIQUE" ("ID") ON DELETE CASCADE ENABLE;
+    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;
 
--- ETR_SOURCE_FK
-ALTER TABLE "ELEMENT_TAUX_REGIMES" ADD CONSTRAINT "ETR_SOURCE_FK" FOREIGN KEY ("SOURCE_ID")
-	  REFERENCES "SOURCE" ("ID") ENABLE;
 
--- FICHIER_HCFK
-ALTER TABLE "FICHIER" ADD CONSTRAINT "FICHIER_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
 
--- FICHIER_HDFK
-ALTER TABLE "FICHIER" ADD CONSTRAINT "FICHIER_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+  PROCEDURE REFRESH_MV( mview_name varchar2 ) IS
+  BEGIN
+    DBMS_MVIEW.REFRESH(mview_name, 'C');
+  EXCEPTION WHEN OTHERS THEN
+    SYNC_LOG( SQLERRM, mview_name );
+  END;
 
--- FICHIER_HMFK
-ALTER TABLE "FICHIER" ADD CONSTRAINT "FICHIER_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
 
--- FICHIER_VALID_FK
-ALTER TABLE "FICHIER" ADD CONSTRAINT "FICHIER_VALID_FK" FOREIGN KEY ("VALIDATION_ID")
-	  REFERENCES "VALIDATION" ("ID") ON DELETE SET NULL ENABLE;
 
--- FONCTION_REFERENTIEL_HCFK
-ALTER TABLE "FONCTION_REFERENTIEL" ADD CONSTRAINT "FONCTION_REFERENTIEL_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+  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;
 
--- FONCTION_REFERENTIEL_HDFK
-ALTER TABLE "FONCTION_REFERENTIEL" ADD CONSTRAINT "FONCTION_REFERENTIEL_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
 
--- FONCTION_REFERENTIEL_HMFK
-ALTER TABLE "FONCTION_REFERENTIEL" ADD CONSTRAINT "FONCTION_REFERENTIEL_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
 
--- FONCTION_REFERENTIEL_SFK
-ALTER TABLE "FONCTION_REFERENTIEL" ADD CONSTRAINT "FONCTION_REFERENTIEL_SFK" FOREIGN KEY ("STRUCTURE_ID")
-	  REFERENCES "STRUCTURE" ("ID") ENABLE;
+  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;
 
--- FONC_REF_DOMAINE_FONCT_FK
-ALTER TABLE "FONCTION_REFERENTIEL" ADD CONSTRAINT "FONC_REF_DOMAINE_FONCT_FK" FOREIGN KEY ("DOMAINE_FONCTIONNEL_ID")
-	  REFERENCES "DOMAINE_FONCTIONNEL" ("ID") ENABLE;
+END UNICAEN_IMPORT;
+/
 
--- FRES_ETAT_VOLUME_HORAIRE_FK
-ALTER TABLE "FORMULE_RESULTAT" ADD CONSTRAINT "FRES_ETAT_VOLUME_HORAIRE_FK" FOREIGN KEY ("ETAT_VOLUME_HORAIRE_ID")
-	  REFERENCES "ETAT_VOLUME_HORAIRE" ("ID") ON DELETE CASCADE ENABLE;
+-- UNICAEN_OSE_FORMULE
+CREATE OR REPLACE PACKAGE BODY "UNICAEN_OSE_FORMULE" AS
 
--- FRES_INTERVENANT_FK
-ALTER TABLE "FORMULE_RESULTAT" ADD CONSTRAINT "FRES_INTERVENANT_FK" FOREIGN KEY ("INTERVENANT_ID")
-	  REFERENCES "INTERVENANT" ("ID") ON DELETE CASCADE ENABLE;
+  /* Stockage des valeurs intermédiaires */
+  TYPE t_valeurs IS TABLE OF FLOAT INDEX BY PLS_INTEGER;
+  TYPE t_tableau IS RECORD (
+    valeurs t_valeurs,
+    total   FLOAT DEFAULT 0
+  );
+  TYPE t_tableaux       IS TABLE OF t_tableau INDEX BY PLS_INTEGER;
+  t                     t_tableaux;
+  current_id            PLS_INTEGER;
+
+  /* Accès au stockage des valeurs intermédiaires */
+  -- Initialisation des tableaux de valeurs intermédiaires
+  PROCEDURE V_INIT IS
+  BEGIN
+    t.delete;
+  END;
 
--- FRES_TYPE_VOLUME_HORAIRE_FK
-ALTER TABLE "FORMULE_RESULTAT" ADD CONSTRAINT "FRES_TYPE_VOLUME_HORAIRE_FK" FOREIGN KEY ("TYPE_VOLUME_HORAIRE_ID")
-	  REFERENCES "TYPE_VOLUME_HORAIRE" ("ID") ON DELETE CASCADE ENABLE;
+  -- Setter d'une valeur intermédiaire au niveau case
+  PROCEDURE SV( tab_index PLS_INTEGER, id PLS_INTEGER, val FLOAT ) IS
+  BEGIN
+    t(tab_index).valeurs(id) := val;
+    t(tab_index).total       := t(tab_index).total + val;
+  END;
 
--- FRR_FORMULE_RESULTAT_FK
-ALTER TABLE "FORMULE_RESULTAT_SERVICE_REF" ADD CONSTRAINT "FRR_FORMULE_RESULTAT_FK" FOREIGN KEY ("FORMULE_RESULTAT_ID")
-	  REFERENCES "FORMULE_RESULTAT" ("ID") ON DELETE CASCADE ENABLE;
+  -- Setter d'une valeur intermédiaire au niveau tableau
+  PROCEDURE SV( tab_index PLS_INTEGER, val FLOAT ) IS
+  BEGIN
+    t(tab_index).total      := val;
+  END;
 
--- FRSR_SERVICE_REFERENTIEL_FK
-ALTER TABLE "FORMULE_RESULTAT_SERVICE_REF" ADD CONSTRAINT "FRSR_SERVICE_REFERENTIEL_FK" FOREIGN KEY ("SERVICE_REFERENTIEL_ID")
-	  REFERENCES "SERVICE_REFERENTIEL" ("ID") ON DELETE CASCADE ENABLE;
+  -- Getter d'une valeur intermédiaire, au niveau case
+  FUNCTION GV( tab_index PLS_INTEGER, id PLS_INTEGER DEFAULT NULL ) RETURN FLOAT IS
+  BEGIN
+    IF NOT t.exists(tab_index) THEN RETURN 0; END IF;
+    IF NOT t(tab_index).valeurs.exists( NVL(id,current_id) ) THEN RETURN 0; END IF;
+    RETURN t(tab_index).valeurs( NVL(id,current_id) );
+  END;
 
--- FRS_FORMULE_RESULTAT_FK
-ALTER TABLE "FORMULE_RESULTAT_SERVICE" ADD CONSTRAINT "FRS_FORMULE_RESULTAT_FK" FOREIGN KEY ("FORMULE_RESULTAT_ID")
-	  REFERENCES "FORMULE_RESULTAT" ("ID") ON DELETE CASCADE ENABLE;
+  -- Getter d'une valeur intermédiaire, au niveau tableau
+  FUNCTION GT( tab_index PLS_INTEGER ) RETURN FLOAT IS
+  BEGIN
+    IF NOT t.exists(tab_index) THEN RETURN 0; END IF;
+    RETURN t(tab_index).total;
+  END;
 
--- FRS_SERVICE_FK
-ALTER TABLE "FORMULE_RESULTAT_SERVICE" ADD CONSTRAINT "FRS_SERVICE_FK" FOREIGN KEY ("SERVICE_ID")
-	  REFERENCES "SERVICE" ("ID") ON DELETE CASCADE ENABLE;
 
--- FRVHR_FORMULE_RESULTAT_FK
-ALTER TABLE "FORMULE_RESULTAT_VH_REF" ADD CONSTRAINT "FRVHR_FORMULE_RESULTAT_FK" FOREIGN KEY ("FORMULE_RESULTAT_ID")
-	  REFERENCES "FORMULE_RESULTAT" ("ID") ON DELETE CASCADE ENABLE;
+  /* Débogage des valeurs intermédiaires */
+  PROCEDURE DEBUG_TAB( tab_index PLS_INTEGER ) IS
+    id PLS_INTEGER;
+  BEGIN
+    ose_test.echo( 'Tableau numéro ' || tab_index );
 
--- FRVHR_VOLUME_HORAIRE_REF_FK
-ALTER TABLE "FORMULE_RESULTAT_VH_REF" ADD CONSTRAINT "FRVHR_VOLUME_HORAIRE_REF_FK" FOREIGN KEY ("VOLUME_HORAIRE_REF_ID")
-	  REFERENCES "VOLUME_HORAIRE_REF" ("ID") ON DELETE CASCADE ENABLE;
+    id := ose_formule.d_service.FIRST;
+    LOOP EXIT WHEN id IS NULL;
+      dbms_output.put( 'Service id=' || lpad(id,6,' ') || ', data = ' );
 
--- FRVH_FORMULE_RESULTAT_FK
-ALTER TABLE "FORMULE_RESULTAT_VH" ADD CONSTRAINT "FRVH_FORMULE_RESULTAT_FK" FOREIGN KEY ("FORMULE_RESULTAT_ID")
-	  REFERENCES "FORMULE_RESULTAT" ("ID") ON DELETE CASCADE ENABLE;
+      current_id := ose_formule.d_volume_horaire.FIRST;
+      LOOP EXIT WHEN current_id IS NULL;
+        dbms_output.put( lpad(gv(tab_index),10,' ') || ' | ' );
+        current_id := ose_formule.d_volume_horaire.NEXT(current_id);
+      END LOOP;
+      dbms_output.new_line;
+      id := ose_formule.d_service.NEXT(id);
+    END LOOP;
 
--- FRVH_VOLUME_HORAIRE_FK
-ALTER TABLE "FORMULE_RESULTAT_VH" ADD CONSTRAINT "FRVH_VOLUME_HORAIRE_FK" FOREIGN KEY ("VOLUME_HORAIRE_ID")
-	  REFERENCES "VOLUME_HORAIRE" ("ID") ON DELETE CASCADE ENABLE;
+    ose_test.echo( 'TOTAL = ' || LPAD(gt(tab_index), 10, ' ') );
+  END;
 
--- GRADE_CORPS_FK
-ALTER TABLE "GRADE" ADD CONSTRAINT "GRADE_CORPS_FK" FOREIGN KEY ("CORPS_ID")
-	  REFERENCES "CORPS" ("ID") ENABLE;
 
--- GRADE_HCFK
-ALTER TABLE "GRADE" ADD CONSTRAINT "GRADE_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
 
--- GRADE_HDFK
-ALTER TABLE "GRADE" ADD CONSTRAINT "GRADE_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+  /* Calcul des valeurs intermédiaires */
+  FUNCTION C2_11( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS
+    s  ose_formule.t_service;
+  BEGIN
+    s  := ose_formule.d_service( vh.service_id );
 
--- GRADE_HMFK
-ALTER TABLE "GRADE" ADD CONSTRAINT "GRADE_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+    IF NVL(s.structure_ens_id,0) = NVL(s.structure_aff_id,0) AND s.taux_fc < 1 THEN
+      RETURN vh.heures;
+    ELSE
+      RETURN 0;
+    END IF;
+  END;
 
--- GRADE_SOURCE_FK
-ALTER TABLE "GRADE" ADD CONSTRAINT "GRADE_SOURCE_FK" FOREIGN KEY ("SOURCE_ID")
-	  REFERENCES "SOURCE" ("ID") ENABLE;
+  FUNCTION C3_11( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS
+    s  ose_formule.t_service;
+  BEGIN
+    s  := ose_formule.d_service( vh.service_id );
 
--- GROUPE_ELEMENT_PEDAGOGIQUE_FK
-ALTER TABLE "GROUPE" ADD CONSTRAINT "GROUPE_ELEMENT_PEDAGOGIQUE_FK" FOREIGN KEY ("ELEMENT_PEDAGOGIQUE_ID")
-	  REFERENCES "ELEMENT_PEDAGOGIQUE" ("ID") ON DELETE CASCADE ENABLE;
+    IF NVL(s.structure_ens_id,0) = NVL(s.structure_aff_id,0) THEN
+      RETURN vh.heures * (s.taux_fi + s.taux_fa);
+    ELSE
+      RETURN 0;
+    END IF;
+  END;
 
--- GROUPE_HCFK
-ALTER TABLE "GROUPE" ADD CONSTRAINT "GROUPE_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+  FUNCTION C2_12( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS
+    s  ose_formule.t_service;
+  BEGIN
+    s  := ose_formule.d_service( vh.service_id );
 
--- GROUPE_HDFK
-ALTER TABLE "GROUPE" ADD CONSTRAINT "GROUPE_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+    IF NVL(s.structure_ens_id,0) <> NVL(s.structure_aff_id,0) AND s.taux_fc < 1 THEN
+      RETURN vh.heures;
+    ELSE
+      RETURN 0;
+    END IF;
+  END;
 
--- GROUPE_HMFK
-ALTER TABLE "GROUPE" ADD CONSTRAINT "GROUPE_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+  FUNCTION C3_12( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS
+    s  ose_formule.t_service;
+  BEGIN
+    s  := ose_formule.d_service( vh.service_id );
 
--- GROUPE_TYPE_FORMATION_HCFK
-ALTER TABLE "GROUPE_TYPE_FORMATION" ADD CONSTRAINT "GROUPE_TYPE_FORMATION_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+    IF NVL(s.structure_ens_id,0) <> NVL(s.structure_aff_id,0) THEN
+      RETURN vh.heures * (s.taux_fi + s.taux_fa);
+    ELSE
+      RETURN 0;
+    END IF;
+  END;
 
--- GROUPE_TYPE_FORMATION_HDFK
-ALTER TABLE "GROUPE_TYPE_FORMATION" ADD CONSTRAINT "GROUPE_TYPE_FORMATION_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+  FUNCTION C2_13( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS
+    s  ose_formule.t_service;
+  BEGIN
+    s  := ose_formule.d_service( vh.service_id );
 
--- GROUPE_TYPE_FORMATION_HMFK
-ALTER TABLE "GROUPE_TYPE_FORMATION" ADD CONSTRAINT "GROUPE_TYPE_FORMATION_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+    IF NVL(s.structure_ens_id,0) = NVL(s.structure_aff_id,0) AND s.taux_fc = 1 THEN
+      RETURN vh.heures;
+    ELSE
+      RETURN 0;
+    END IF;
+  END;
 
--- GROUPE_TYPE_INTERVENTION_FK
-ALTER TABLE "GROUPE" ADD CONSTRAINT "GROUPE_TYPE_INTERVENTION_FK" FOREIGN KEY ("TYPE_INTERVENTION_ID")
-	  REFERENCES "TYPE_INTERVENTION" ("ID") ENABLE;
+  FUNCTION C3_13( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS
+    s  ose_formule.t_service;
+  BEGIN
+    s  := ose_formule.d_service( vh.service_id );
 
--- GTYPE_FORMATION_SOURCE_FK
-ALTER TABLE "GROUPE_TYPE_FORMATION" ADD CONSTRAINT "GTYPE_FORMATION_SOURCE_FK" FOREIGN KEY ("SOURCE_ID")
-	  REFERENCES "SOURCE" ("ID") ON DELETE CASCADE ENABLE;
+    IF NVL(s.structure_ens_id,0) = NVL(s.structure_aff_id,0) THEN
+      RETURN vh.heures * s.taux_fc;
+    ELSE
+      RETURN 0;
+    END IF;
+  END;
 
--- HSM_INTERVENANT_FK
-ALTER TABLE "HISTO_INTERVENANT_SERVICE" ADD CONSTRAINT "HSM_INTERVENANT_FK" FOREIGN KEY ("INTERVENANT_ID")
-	  REFERENCES "INTERVENANT" ("ID") ON DELETE CASCADE ENABLE;
+  FUNCTION C2_14( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS
+    s  ose_formule.t_service;
+  BEGIN
+    s  := ose_formule.d_service( vh.service_id );
 
--- HSM_TYPE_VOLUME_HORAIRE_FK
-ALTER TABLE "HISTO_INTERVENANT_SERVICE" ADD CONSTRAINT "HSM_TYPE_VOLUME_HORAIRE_FK" FOREIGN KEY ("TYPE_VOLUME_HORAIRE_ID")
-	  REFERENCES "TYPE_VOLUME_HORAIRE" ("ID") ON DELETE CASCADE ENABLE;
+    IF NVL(s.structure_ens_id,0) <> NVL(s.structure_aff_id,0) AND s.taux_fc = 1 THEN
+      RETURN vh.heures;
+    ELSE
+      RETURN 0;
+    END IF;
+  END;
 
--- HSM_UTILISATEUR_FK
-ALTER TABLE "HISTO_INTERVENANT_SERVICE" ADD CONSTRAINT "HSM_UTILISATEUR_FK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ON DELETE CASCADE ENABLE;
+  FUNCTION C3_14( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS
+    s  ose_formule.t_service;
+  BEGIN
+    s  := ose_formule.d_service( vh.service_id );
 
--- INDIC_MODIF_DOSSIER_HCFK
-ALTER TABLE "INDIC_MODIF_DOSSIER" ADD CONSTRAINT "INDIC_MODIF_DOSSIER_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+    IF NVL(s.structure_ens_id,0) <> NVL(s.structure_aff_id,0) THEN
+      RETURN vh.heures * s.taux_fc;
+    ELSE
+      RETURN 0;
+    END IF;
+  END;
 
--- INDIC_MODIF_DOSSIER_HDFK
-ALTER TABLE "INDIC_MODIF_DOSSIER" ADD CONSTRAINT "INDIC_MODIF_DOSSIER_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+  FUNCTION C2_15( fr ose_formule.t_volume_horaire_ref ) RETURN FLOAT IS
+    f ose_formule.t_service_ref;
+  BEGIN
+    f := ose_formule.d_service_ref( fr.service_referentiel_id );
 
--- INDIC_MODIF_DOSSIER_HMFK
-ALTER TABLE "INDIC_MODIF_DOSSIER" ADD CONSTRAINT "INDIC_MODIF_DOSSIER_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+    IF NVL(ose_formule.d_intervenant.structure_id,0) = NVL(f.structure_id,0) THEN
+      RETURN fr.heures;
+    ELSE
+      RETURN 0;
+    END IF;
+  END;
 
--- INTERVENANTS_CIVILITES_FK
-ALTER TABLE "INTERVENANT" ADD CONSTRAINT "INTERVENANTS_CIVILITES_FK" FOREIGN KEY ("CIVILITE_ID")
-	  REFERENCES "CIVILITE" ("ID") ENABLE;
+  FUNCTION C2_16( fr ose_formule.t_volume_horaire_ref ) RETURN FLOAT IS
+    f ose_formule.t_service_ref;
+  BEGIN
+    f := ose_formule.d_service_ref( fr.service_referentiel_id );
 
--- INTERVENANT_ANNEE_FK
-ALTER TABLE "INTERVENANT" ADD CONSTRAINT "INTERVENANT_ANNEE_FK" FOREIGN KEY ("ANNEE_ID")
-	  REFERENCES "ANNEE" ("ID") ENABLE;
+    IF NVL(ose_formule.d_intervenant.structure_id,0) <> NVL(f.structure_id,0) AND NVL(f.structure_id,0) <> ose_divers.STRUCTURE_UNIV_GET_ID THEN
+      RETURN fr.heures;
+    ELSE
+      RETURN 0;
+    END IF;
+  END;
 
--- INTERVENANT_DEPARTEMENT_FK
-ALTER TABLE "INTERVENANT" ADD CONSTRAINT "INTERVENANT_DEPARTEMENT_FK" FOREIGN KEY ("DEP_NAISSANCE_ID")
-	  REFERENCES "DEPARTEMENT" ("ID") ENABLE;
+  FUNCTION C2_17( fr ose_formule.t_volume_horaire_ref ) RETURN FLOAT IS
+    f ose_formule.t_service_ref;
+  BEGIN
+    f := ose_formule.d_service_ref( fr.service_referentiel_id );
 
--- INTERVENANT_DISCIPLINE_FK
-ALTER TABLE "INTERVENANT" ADD CONSTRAINT "INTERVENANT_DISCIPLINE_FK" FOREIGN KEY ("DISCIPLINE_ID")
-	  REFERENCES "DISCIPLINE" ("ID") ENABLE;
+    IF NVL(f.structure_id,0) = ose_divers.STRUCTURE_UNIV_GET_ID THEN
+      RETURN fr.heures;
+    ELSE
+      RETURN 0;
+    END IF;
+  END;
+
+  FUNCTION C2_21( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS
+  BEGIN
+    RETURN gv(11) * vh.taux_service_du;
+  END;
 
--- INTERVENANT_GRADE_FK
-ALTER TABLE "INTERVENANT" ADD CONSTRAINT "INTERVENANT_GRADE_FK" FOREIGN KEY ("GRADE_ID")
-	  REFERENCES "GRADE" ("ID") ENABLE;
+  FUNCTION C2_22( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS
+  BEGIN
+    RETURN gv(12) * vh.taux_service_du;
+  END;
 
--- INTERVENANT_HCFK
-ALTER TABLE "INTERVENANT" ADD CONSTRAINT "INTERVENANT_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+  FUNCTION C2_23( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS
+  BEGIN
+    RETURN gv(13) * vh.taux_service_du;
+  END;
 
--- INTERVENANT_HDFK
-ALTER TABLE "INTERVENANT" ADD CONSTRAINT "INTERVENANT_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+  FUNCTION C2_24( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS
+  BEGIN
+    RETURN gv(14) * vh.taux_service_du;
+  END;
 
--- INTERVENANT_HMFK
-ALTER TABLE "INTERVENANT" ADD CONSTRAINT "INTERVENANT_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+  FUNCTION C2_25( fr ose_formule.t_volume_horaire_ref ) RETURN FLOAT IS
+  BEGIN
+    RETURN gv(15);
+  END;
 
--- INTERVENANT_PAYS_NAISS_FK
-ALTER TABLE "INTERVENANT" ADD CONSTRAINT "INTERVENANT_PAYS_NAISS_FK" FOREIGN KEY ("PAYS_NAISSANCE_ID")
-	  REFERENCES "PAYS" ("ID") ENABLE;
+  FUNCTION C2_26( fr ose_formule.t_volume_horaire_ref ) RETURN FLOAT IS
+  BEGIN
+    RETURN gv(16);
+  END;
 
--- INTERVENANT_PAYS_NAT_FK
-ALTER TABLE "INTERVENANT" ADD CONSTRAINT "INTERVENANT_PAYS_NAT_FK" FOREIGN KEY ("PAYS_NATIONALITE_ID")
-	  REFERENCES "PAYS" ("ID") ENABLE;
+  FUNCTION C2_27( fr ose_formule.t_volume_horaire_ref ) RETURN FLOAT IS
+  BEGIN
+    RETURN gv(17);
+  END;
 
--- INTERVENANT_SAISIE_INTERV_FK
-ALTER TABLE "INTERVENANT_SAISIE" ADD CONSTRAINT "INTERVENANT_SAISIE_INTERV_FK" FOREIGN KEY ("INTERVENANT_ID")
-	  REFERENCES "INTERVENANT" ("ID") ON DELETE CASCADE ENABLE;
+  FUNCTION C2_31 RETURN FLOAT IS
+  BEGIN
+    RETURN GREATEST( ose_formule.d_resultat.service_du - gt(21), 0 );
+  END;
 
--- INTERVENANT_SOURCE_FK
-ALTER TABLE "INTERVENANT" ADD CONSTRAINT "INTERVENANT_SOURCE_FK" FOREIGN KEY ("SOURCE_ID")
-	  REFERENCES "SOURCE" ("ID") ON DELETE CASCADE ENABLE;
+  FUNCTION C2_32 RETURN FLOAT IS
+  BEGIN
+    RETURN GREATEST( gt(31) - gt(22), 0 );
+  END;
 
--- INTERVENANT_STATUT_FK
-ALTER TABLE "INTERVENANT" ADD CONSTRAINT "INTERVENANT_STATUT_FK" FOREIGN KEY ("STATUT_ID")
-	  REFERENCES "STATUT_INTERVENANT" ("ID") ENABLE;
+  FUNCTION C2_33 RETURN FLOAT IS
+  BEGIN
+    RETURN GREATEST( gt(32) - gt(23), 0 );
+  END;
 
--- INTERVENANT_STRUCTURE_FK
-ALTER TABLE "INTERVENANT" ADD CONSTRAINT "INTERVENANT_STRUCTURE_FK" FOREIGN KEY ("STRUCTURE_ID")
-	  REFERENCES "STRUCTURE" ("ID") ENABLE;
+  FUNCTION C2_34 RETURN FLOAT IS
+  BEGIN
+    RETURN GREATEST( gt(33) - gt(24), 0 );
+  END;
 
--- IS_STATUT_INTERVENANT_FK
-ALTER TABLE "INTERVENANT_SAISIE" ADD CONSTRAINT "IS_STATUT_INTERVENANT_FK" FOREIGN KEY ("STATUT_ID")
-	  REFERENCES "STATUT_INTERVENANT" ("ID") ENABLE;
+  FUNCTION C2_35 RETURN FLOAT IS
+  BEGIN
+    RETURN GREATEST( gt(34) - gt(25), 0 );
+  END;
 
--- LIEN_HCFK
-ALTER TABLE "LIEN" ADD CONSTRAINT "LIEN_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+  FUNCTION C2_36 RETURN FLOAT IS
+  BEGIN
+    RETURN GREATEST( gt(35) - gt(26), 0 );
+  END;
 
--- LIEN_HDFK
-ALTER TABLE "LIEN" ADD CONSTRAINT "LIEN_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+  FUNCTION C2_37 RETURN FLOAT IS
+  BEGIN
+    RETURN GREATEST( gt(36) - gt(27), 0 );
+  END;
 
--- LIEN_HMFK
-ALTER TABLE "LIEN" ADD CONSTRAINT "LIEN_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+  FUNCTION C2_41( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS
+  BEGIN
+    IF gt(21) <> 0 THEN
+      RETURN gv(21) / gt(21);
+    ELSE
+      RETURN 0;
+    END IF;
+  END;
 
--- LIEN_NOEUD_INF_FK
-ALTER TABLE "LIEN" ADD CONSTRAINT "LIEN_NOEUD_INF_FK" FOREIGN KEY ("NOEUD_INF_ID")
-	  REFERENCES "NOEUD" ("ID") ON DELETE CASCADE ENABLE;
+  FUNCTION C2_42( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS
+  BEGIN
+    IF gt(22) <> 0 THEN
+      RETURN gv(22) / gt(22);
+    ELSE
+      RETURN 0;
+    END IF;
+  END;
 
--- LIEN_NOEUD_SUP_FK
-ALTER TABLE "LIEN" ADD CONSTRAINT "LIEN_NOEUD_SUP_FK" FOREIGN KEY ("NOEUD_SUP_ID")
-	  REFERENCES "NOEUD" ("ID") ON DELETE CASCADE ENABLE;
+  FUNCTION C2_43( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS
+  BEGIN
+    IF gt(23) <> 0 THEN
+      RETURN gv(23) / gt(23);
+    ELSE
+      RETURN 0;
+    END IF;
+  END;
 
--- LIEN_SOURCE_FK
-ALTER TABLE "LIEN" ADD CONSTRAINT "LIEN_SOURCE_FK" FOREIGN KEY ("SOURCE_ID")
-	  REFERENCES "SOURCE" ("ID") ENABLE;
+  FUNCTION C2_44( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS
+  BEGIN
+    IF gt(24) <> 0 THEN
+      RETURN gv(24) / gt(24);
+    ELSE
+      RETURN 0;
+    END IF;
+  END;
 
--- LIEN_STRUCTURE_FK
-ALTER TABLE "LIEN" ADD CONSTRAINT "LIEN_STRUCTURE_FK" FOREIGN KEY ("STRUCTURE_ID")
-	  REFERENCES "STRUCTURE" ("ID") ENABLE;
+  FUNCTION C2_45( fr ose_formule.t_volume_horaire_ref ) RETURN FLOAT IS
+  BEGIN
+    IF gt(25) <> 0 THEN
+      RETURN gv(25) / gt(25);
+    ELSE
+      RETURN 0;
+    END IF;
+  END;
 
--- MEP_CENTRE_COUT_FK
-ALTER TABLE "MISE_EN_PAIEMENT" ADD CONSTRAINT "MEP_CENTRE_COUT_FK" FOREIGN KEY ("CENTRE_COUT_ID")
-	  REFERENCES "CENTRE_COUT" ("ID") ON DELETE CASCADE ENABLE;
+  FUNCTION C2_46( fr ose_formule.t_volume_horaire_ref ) RETURN FLOAT IS
+  BEGIN
+    IF gt(26) <> 0 THEN
+      RETURN gv(26) / gt(26);
+    ELSE
+      RETURN 0;
+    END IF;
+  END;
 
--- MEP_DOMAINE_FONCTIONNEL_FK
-ALTER TABLE "MISE_EN_PAIEMENT" ADD CONSTRAINT "MEP_DOMAINE_FONCTIONNEL_FK" FOREIGN KEY ("DOMAINE_FONCTIONNEL_ID")
-	  REFERENCES "DOMAINE_FONCTIONNEL" ("ID") ENABLE;
+  FUNCTION C2_47( fr ose_formule.t_volume_horaire_ref ) RETURN FLOAT IS
+  BEGIN
+    IF gt(27) <> 0 THEN
+      RETURN gv(27) / gt(27);
+    ELSE
+      RETURN 0;
+    END IF;
+  END;
 
--- MEP_FR_SERVICE_FK
-ALTER TABLE "MISE_EN_PAIEMENT" ADD CONSTRAINT "MEP_FR_SERVICE_FK" FOREIGN KEY ("FORMULE_RES_SERVICE_ID")
-	  REFERENCES "FORMULE_RESULTAT_SERVICE" ("ID") ENABLE;
+  FUNCTION C2_51( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS
+  BEGIN
+    RETURN LEAST( ose_formule.d_resultat.service_du, gt(21) ) * gv(41);
+  END;
 
--- MEP_FR_SERVICE_REF_FK
-ALTER TABLE "MISE_EN_PAIEMENT" ADD CONSTRAINT "MEP_FR_SERVICE_REF_FK" FOREIGN KEY ("FORMULE_RES_SERVICE_REF_ID")
-	  REFERENCES "FORMULE_RESULTAT_SERVICE_REF" ("ID") ENABLE;
+  FUNCTION C2_52( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS
+  BEGIN
+    RETURN LEAST( gt(31), gt(22) ) * gv(42);
+  END;
 
--- MEP_TYPE_HEURES_FK
-ALTER TABLE "MISE_EN_PAIEMENT" ADD CONSTRAINT "MEP_TYPE_HEURES_FK" FOREIGN KEY ("TYPE_HEURES_ID")
-	  REFERENCES "TYPE_HEURES" ("ID") ON DELETE CASCADE ENABLE;
+  FUNCTION C2_53( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS
+  BEGIN
+    RETURN LEAST( gt(32), gt(23) ) * gv(43);
+  END;
 
--- MISE_EN_PAIEMENT_HCFK
-ALTER TABLE "MISE_EN_PAIEMENT" ADD CONSTRAINT "MISE_EN_PAIEMENT_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+  FUNCTION C2_54( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS
+  BEGIN
+    RETURN LEAST( gt(33), gt(24) ) * gv(44);
+  END;
 
--- MISE_EN_PAIEMENT_HDFK
-ALTER TABLE "MISE_EN_PAIEMENT" ADD CONSTRAINT "MISE_EN_PAIEMENT_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+  FUNCTION C2_55( fr ose_formule.t_volume_horaire_ref ) RETURN FLOAT IS
+  BEGIN
+    RETURN LEAST( gt(34), gt(25) ) * gv(45);
+  END;
 
--- MISE_EN_PAIEMENT_HMFK
-ALTER TABLE "MISE_EN_PAIEMENT" ADD CONSTRAINT "MISE_EN_PAIEMENT_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+  FUNCTION C2_56( fr ose_formule.t_volume_horaire_ref ) RETURN FLOAT IS
+  BEGIN
+    RETURN LEAST( gt(35), gt(26) ) * gv(46);
+  END;
 
--- MISE_EN_PAIEMENT_PERIODE_FK
-ALTER TABLE "MISE_EN_PAIEMENT" ADD CONSTRAINT "MISE_EN_PAIEMENT_PERIODE_FK" FOREIGN KEY ("PERIODE_PAIEMENT_ID")
-	  REFERENCES "PERIODE" ("ID") ENABLE;
+  FUNCTION C2_57( fr ose_formule.t_volume_horaire_ref ) RETURN FLOAT IS
+  BEGIN
+    RETURN LEAST( gt(36), gt(27) ) * gv(47);
+  END;
 
--- MISE_EN_PAIEMENT_VALIDATION_FK
-ALTER TABLE "MISE_EN_PAIEMENT" ADD CONSTRAINT "MISE_EN_PAIEMENT_VALIDATION_FK" FOREIGN KEY ("VALIDATION_ID")
-	  REFERENCES "VALIDATION" ("ID") ON DELETE CASCADE ENABLE;
+  FUNCTION C2_61( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS
+    s  ose_formule.t_service;
+  BEGIN
+    s  := ose_formule.d_service( vh.service_id );
 
--- MODIFICATION_SERVICE_DU_HCFK
-ALTER TABLE "MODIFICATION_SERVICE_DU" ADD CONSTRAINT "MODIFICATION_SERVICE_DU_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+    RETURN gv(51) * s.taux_fi;
+  END;
 
--- MODIFICATION_SERVICE_DU_HDFK
-ALTER TABLE "MODIFICATION_SERVICE_DU" ADD CONSTRAINT "MODIFICATION_SERVICE_DU_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+  FUNCTION C3_61( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS
+    s  ose_formule.t_service;
+  BEGIN
+    s  := ose_formule.d_service( vh.service_id );
 
--- MODIFICATION_SERVICE_DU_HMFK
-ALTER TABLE "MODIFICATION_SERVICE_DU" ADD CONSTRAINT "MODIFICATION_SERVICE_DU_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+    IF s.taux_fi + s.taux_fa > 0 THEN
+      RETURN gv(51) / (s.taux_fi + s.taux_fa) * s.taux_fi;
+    ELSE
+      RETURN 0;
+    END IF;
+  END;
 
--- MODULATEUR_HCFK
-ALTER TABLE "MODULATEUR" ADD CONSTRAINT "MODULATEUR_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+  FUNCTION C2_62( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS
+    s  ose_formule.t_service;
+  BEGIN
+    s  := ose_formule.d_service( vh.service_id );
 
--- MODULATEUR_HDFK
-ALTER TABLE "MODULATEUR" ADD CONSTRAINT "MODULATEUR_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+    RETURN gv(52) * s.taux_fi;
+  END;
 
--- MODULATEUR_HMFK
-ALTER TABLE "MODULATEUR" ADD CONSTRAINT "MODULATEUR_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+  FUNCTION C3_62( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS
+    s  ose_formule.t_service;
+  BEGIN
+    s  := ose_formule.d_service( vh.service_id );
 
--- MODULATEUR_TYPE_MODULATEUR_FK
-ALTER TABLE "MODULATEUR" ADD CONSTRAINT "MODULATEUR_TYPE_MODULATEUR_FK" FOREIGN KEY ("TYPE_MODULATEUR_ID")
-	  REFERENCES "TYPE_MODULATEUR" ("ID") ON DELETE CASCADE ENABLE;
+    IF s.taux_fi + s.taux_fa > 0 THEN
+      RETURN gv(52) / (s.taux_fi + s.taux_fa) * s.taux_fi;
+    ELSE
+      RETURN 0;
+    END IF;
+  END;
 
--- MOTIF_MODIFICATION_SERVIC_HCFK
-ALTER TABLE "MOTIF_MODIFICATION_SERVICE" ADD CONSTRAINT "MOTIF_MODIFICATION_SERVIC_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+  FUNCTION C2_71( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS
+    s  ose_formule.t_service;
+  BEGIN
+    s  := ose_formule.d_service( vh.service_id );
 
--- MOTIF_MODIFICATION_SERVIC_HDFK
-ALTER TABLE "MOTIF_MODIFICATION_SERVICE" ADD CONSTRAINT "MOTIF_MODIFICATION_SERVIC_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+    RETURN gv(51) * s.taux_fa;
+  END;
 
--- MOTIF_MODIFICATION_SERVIC_HMFK
-ALTER TABLE "MOTIF_MODIFICATION_SERVICE" ADD CONSTRAINT "MOTIF_MODIFICATION_SERVIC_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+  FUNCTION C3_71( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS
+    s  ose_formule.t_service;
+  BEGIN
+    s  := ose_formule.d_service( vh.service_id );
 
--- MOTIF_NON_PAIEMENT_HCFK
-ALTER TABLE "MOTIF_NON_PAIEMENT" ADD CONSTRAINT "MOTIF_NON_PAIEMENT_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+    IF s.taux_fi + s.taux_fa > 0 THEN
+      RETURN gv(51) / (s.taux_fi + s.taux_fa) * s.taux_fa;
+    ELSE
+      RETURN 0;
+    END IF;
+  END;
 
--- MOTIF_NON_PAIEMENT_HDFK
-ALTER TABLE "MOTIF_NON_PAIEMENT" ADD CONSTRAINT "MOTIF_NON_PAIEMENT_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+  FUNCTION C2_72( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS
+    s  ose_formule.t_service;
+  BEGIN
+    s  := ose_formule.d_service( vh.service_id );
 
--- MOTIF_NON_PAIEMENT_HMFK
-ALTER TABLE "MOTIF_NON_PAIEMENT" ADD CONSTRAINT "MOTIF_NON_PAIEMENT_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+    RETURN gv(52) * s.taux_fa;
+  END;
 
--- MSD_INTERVENANT_FK
-ALTER TABLE "MODIFICATION_SERVICE_DU" ADD CONSTRAINT "MSD_INTERVENANT_FK" FOREIGN KEY ("INTERVENANT_ID")
-	  REFERENCES "INTERVENANT" ("ID") ON DELETE CASCADE ENABLE;
+  FUNCTION C3_72( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS
+    s  ose_formule.t_service;
+  BEGIN
+    s  := ose_formule.d_service( vh.service_id );
 
--- NOEUD_ANNEE_FK
-ALTER TABLE "NOEUD" ADD CONSTRAINT "NOEUD_ANNEE_FK" FOREIGN KEY ("ANNEE_ID")
-	  REFERENCES "ANNEE" ("ID") ENABLE;
+    IF s.taux_fi + s.taux_fa > 0 THEN
+      RETURN gv(52) / (s.taux_fi + s.taux_fa) * s.taux_fa;
+    ELSE
+      RETURN 0;
+    END IF;
+  END;
 
--- NOEUD_ELEMENT_PEDAGOGIQUE_FK
-ALTER TABLE "NOEUD" ADD CONSTRAINT "NOEUD_ELEMENT_PEDAGOGIQUE_FK" FOREIGN KEY ("ELEMENT_PEDAGOGIQUE_ID")
-	  REFERENCES "ELEMENT_PEDAGOGIQUE" ("ID") ON DELETE CASCADE ENABLE;
+  FUNCTION C2_81( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS
+    s  ose_formule.t_service;
+  BEGIN
+    s  := ose_formule.d_service( vh.service_id );
 
--- NOEUD_ETAPE_FK
-ALTER TABLE "NOEUD" ADD CONSTRAINT "NOEUD_ETAPE_FK" FOREIGN KEY ("ETAPE_ID")
-	  REFERENCES "ETAPE" ("ID") ON DELETE CASCADE ENABLE;
+    RETURN gv(51) * s.taux_fc;
+  END;
 
--- NOEUD_HCFK
-ALTER TABLE "NOEUD" ADD CONSTRAINT "NOEUD_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+  FUNCTION C2_82( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS
+    s  ose_formule.t_service;
+  BEGIN
+    s  := ose_formule.d_service( vh.service_id );
 
--- NOEUD_HDFK
-ALTER TABLE "NOEUD" ADD CONSTRAINT "NOEUD_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+    RETURN gv(52) * s.taux_fc;
+  END;
 
--- NOEUD_HMFK
-ALTER TABLE "NOEUD" ADD CONSTRAINT "NOEUD_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+  FUNCTION C2_83( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS
+    s  ose_formule.t_service;
+  BEGIN
+    s  := ose_formule.d_service( vh.service_id );
 
--- NOEUD_SOURCE_FK
-ALTER TABLE "NOEUD" ADD CONSTRAINT "NOEUD_SOURCE_FK" FOREIGN KEY ("SOURCE_ID")
-	  REFERENCES "SOURCE" ("ID") ENABLE;
+    RETURN gv(53) * s.taux_fc;
+  END;
 
--- NOEUD_STRUCTURE_FK
-ALTER TABLE "NOEUD" ADD CONSTRAINT "NOEUD_STRUCTURE_FK" FOREIGN KEY ("STRUCTURE_ID")
-	  REFERENCES "STRUCTURE" ("ID") ENABLE;
+  FUNCTION C3_83( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS
+  BEGIN
+    RETURN gv(53);
+  END;
 
--- NOTIF_INDICATEUR_IFK
-ALTER TABLE "NOTIFICATION_INDICATEUR" ADD CONSTRAINT "NOTIF_INDICATEUR_IFK" FOREIGN KEY ("INDICATEUR_ID")
-	  REFERENCES "INDICATEUR" ("ID") ON DELETE CASCADE ENABLE;
+  FUNCTION C2_84( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS
+    s  ose_formule.t_service;
+  BEGIN
+    s  := ose_formule.d_service( vh.service_id );
 
--- PARAMETRE_HCFK
-ALTER TABLE "PARAMETRE" ADD CONSTRAINT "PARAMETRE_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+    RETURN gv(54) * s.taux_fc;
+  END;
 
--- PARAMETRE_HDFK
-ALTER TABLE "PARAMETRE" ADD CONSTRAINT "PARAMETRE_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+  FUNCTION C3_84( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS
+  BEGIN
+    RETURN gv(54);
+  END;
 
--- PARAMETRE_HMFK
-ALTER TABLE "PARAMETRE" ADD CONSTRAINT "PARAMETRE_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+  FUNCTION C2_91( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS
+  BEGIN
+    IF gv(21) <> 0 THEN
+      RETURN gv(51) / gv(21);
+    ELSE
+      RETURN 0;
+    END IF;
+  END;
 
--- PAYS_HCFK
-ALTER TABLE "PAYS" ADD CONSTRAINT "PAYS_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+  FUNCTION C2_92( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS
+  BEGIN
+    IF gv(22) <> 0 THEN
+      RETURN gv(52) / gv(22);
+    ELSE
+      RETURN 0;
+    END IF;
+  END;
 
--- PAYS_HDFK
-ALTER TABLE "PAYS" ADD CONSTRAINT "PAYS_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+  FUNCTION C2_93( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS
+  BEGIN
+    IF gv(23) <> 0 THEN
+      RETURN gv(53) / gv(23);
+    ELSE
+      RETURN 0;
+    END IF;
+  END;
 
--- PAYS_HMFK
-ALTER TABLE "PAYS" ADD CONSTRAINT "PAYS_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+  FUNCTION C2_94( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS
+  BEGIN
+    IF gv(24) <> 0 THEN
+      RETURN gv(54) / gv(24);
+    ELSE
+      RETURN 0;
+    END IF;
+  END;
 
--- PAYS_SOURCE_FK
-ALTER TABLE "PAYS" ADD CONSTRAINT "PAYS_SOURCE_FK" FOREIGN KEY ("SOURCE_ID")
-	  REFERENCES "SOURCE" ("ID") ON DELETE CASCADE ENABLE;
+  FUNCTION C2_95( fr ose_formule.t_volume_horaire_ref ) RETURN FLOAT IS
+  BEGIN
+    IF gv(25) <> 0 THEN
+      RETURN gv(55) / gv(25);
+    ELSE
+      RETURN 0;
+    END IF;
+  END;
 
--- PERIODE_HCFK
-ALTER TABLE "PERIODE" ADD CONSTRAINT "PERIODE_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+  FUNCTION C2_96( fr ose_formule.t_volume_horaire_ref ) RETURN FLOAT IS
+  BEGIN
+    IF gv(26) <> 0 THEN
+      RETURN gv(56) / gv(26);
+    ELSE
+      RETURN 0;
+    END IF;
+  END;
 
--- PERIODE_HDFK
-ALTER TABLE "PERIODE" ADD CONSTRAINT "PERIODE_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+  FUNCTION C2_97( fr ose_formule.t_volume_horaire_ref ) RETURN FLOAT IS
+  BEGIN
+    IF gv(27) <> 0 THEN
+      RETURN gv(57) / gv(27);
+    ELSE
+      RETURN 0;
+    END IF;
+  END;
 
--- PERIODE_HMFK
-ALTER TABLE "PERIODE" ADD CONSTRAINT "PERIODE_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+  FUNCTION C2_101( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS
+  BEGIN
+    IF gt(37) <> 0 THEN
+      RETURN 0;
+    ELSE
+      RETURN 1 - gv(91);
+    END IF;
+  END;
 
--- PIECE_JOINTE_FICHIER_FFK
-ALTER TABLE "PIECE_JOINTE_FICHIER" ADD CONSTRAINT "PIECE_JOINTE_FICHIER_FFK" FOREIGN KEY ("FICHIER_ID")
-	  REFERENCES "FICHIER" ("ID") ENABLE;
+  FUNCTION C2_102( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS
+  BEGIN
+    IF gt(37) <> 0 THEN
+      RETURN 0;
+    ELSE
+      RETURN 1 - gv(92);
+    END IF;
+  END;
 
--- PIECE_JOINTE_FICHIER_PJFK
-ALTER TABLE "PIECE_JOINTE_FICHIER" ADD CONSTRAINT "PIECE_JOINTE_FICHIER_PJFK" FOREIGN KEY ("PIECE_JOINTE_ID")
-	  REFERENCES "PIECE_JOINTE" ("ID") ON DELETE CASCADE ENABLE;
+  FUNCTION C2_103( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS
+  BEGIN
+    IF gt(37) <> 0 THEN
+      RETURN 0;
+    ELSE
+      RETURN 1 - gv(93);
+    END IF;
+  END;
 
--- PIECE_JOINTE_HCFK
-ALTER TABLE "PIECE_JOINTE" ADD CONSTRAINT "PIECE_JOINTE_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+  FUNCTION C2_104( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS
+  BEGIN
+    IF gt(37) <> 0 THEN
+      RETURN 0;
+    ELSE
+      RETURN 1 - gv(94);
+    END IF;
+  END;
 
--- PIECE_JOINTE_HDFK
-ALTER TABLE "PIECE_JOINTE" ADD CONSTRAINT "PIECE_JOINTE_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+  FUNCTION C2_105( fr ose_formule.t_volume_horaire_ref ) RETURN FLOAT IS
+  BEGIN
+    IF gt(37) <> 0 THEN
+      RETURN 0;
+    ELSE
+      RETURN 1 - gv(95);
+    END IF;
+  END;
 
--- PIECE_JOINTE_HMFK
-ALTER TABLE "PIECE_JOINTE" ADD CONSTRAINT "PIECE_JOINTE_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+  FUNCTION C2_106( fr ose_formule.t_volume_horaire_ref ) RETURN FLOAT IS
+  BEGIN
+    IF gt(37) <> 0 THEN
+      RETURN 0;
+    ELSE
+      RETURN 1 - gv(96);
+    END IF;
+  END;
 
--- PIECE_JOINTE_INTERVENANT_FK
-ALTER TABLE "PIECE_JOINTE" ADD CONSTRAINT "PIECE_JOINTE_INTERVENANT_FK" FOREIGN KEY ("INTERVENANT_ID")
-	  REFERENCES "INTERVENANT" ("ID") ENABLE;
+  FUNCTION C2_107( fr ose_formule.t_volume_horaire_ref ) RETURN FLOAT IS
+  BEGIN
+    IF gt(37) <> 0 THEN
+      RETURN 0;
+    ELSE
+      RETURN 1 - gv(97);
+    END IF;
+  END;
 
--- PIECE_JOINTE_VFK
-ALTER TABLE "PIECE_JOINTE" ADD CONSTRAINT "PIECE_JOINTE_VFK" FOREIGN KEY ("VALIDATION_ID")
-	  REFERENCES "VALIDATION" ("ID") ON DELETE SET NULL ENABLE;
+  FUNCTION C2_111( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS
+  BEGIN
+    RETURN gv(11) * vh.taux_service_compl * gv(101);
+  END;
 
--- PJ_TYPE_PIECE_JOINTE_FK
-ALTER TABLE "PIECE_JOINTE" ADD CONSTRAINT "PJ_TYPE_PIECE_JOINTE_FK" FOREIGN KEY ("TYPE_PIECE_JOINTE_ID")
-	  REFERENCES "TYPE_PIECE_JOINTE" ("ID") ON DELETE CASCADE ENABLE;
+  FUNCTION C2_112( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS
+  BEGIN
+    RETURN gv(12) * vh.taux_service_compl * gv(102);
+  END;
 
--- PLAFONDAPP_ANNEE_DFK
-ALTER TABLE "PLAFOND_APPLICATION" ADD CONSTRAINT "PLAFONDAPP_ANNEE_DFK" FOREIGN KEY ("ANNEE_DEBUT_ID")
-	  REFERENCES "ANNEE" ("ID") ENABLE;
+  FUNCTION C2_113( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS
+  BEGIN
+    RETURN gv(13) * vh.taux_service_compl * gv(103);
+  END;
 
--- PLAFONDAPP_ANNEE_FFK
-ALTER TABLE "PLAFOND_APPLICATION" ADD CONSTRAINT "PLAFONDAPP_ANNEE_FFK" FOREIGN KEY ("ANNEE_FIN_ID")
-	  REFERENCES "ANNEE" ("ID") ENABLE;
+  FUNCTION C2_114( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS
+  BEGIN
+    RETURN gv(14) * vh.taux_service_compl * gv(104);
+  END;
 
--- PLAFONDAPP_PLAFOND_ETAT_FK
-ALTER TABLE "PLAFOND_APPLICATION" ADD CONSTRAINT "PLAFONDAPP_PLAFOND_ETAT_FK" FOREIGN KEY ("PLAFOND_ETAT_ID")
-	  REFERENCES "PLAFOND_ETAT" ("ID") ON DELETE CASCADE ENABLE;
+  FUNCTION C2_115( fr ose_formule.t_volume_horaire_ref ) RETURN FLOAT IS
+  BEGIN
+    RETURN gv(15) * gv(105);
+  END;
 
--- PLAFONDAPP_PLAFOND_FK
-ALTER TABLE "PLAFOND_APPLICATION" ADD CONSTRAINT "PLAFONDAPP_PLAFOND_FK" FOREIGN KEY ("PLAFOND_ID")
-	  REFERENCES "PLAFOND" ("ID") ON DELETE CASCADE ENABLE;
+  FUNCTION C2_116( fr ose_formule.t_volume_horaire_ref ) RETURN FLOAT IS
+  BEGIN
+    RETURN gv(16) * gv(106);
+  END;
 
--- PLAFONDAPP_TVH_FK
-ALTER TABLE "PLAFOND_APPLICATION" ADD CONSTRAINT "PLAFONDAPP_TVH_FK" FOREIGN KEY ("TYPE_VOLUME_HORAIRE_ID")
-	  REFERENCES "TYPE_VOLUME_HORAIRE" ("ID") ON DELETE CASCADE ENABLE;
+  FUNCTION C2_117( fr ose_formule.t_volume_horaire_ref ) RETURN FLOAT IS
+  BEGIN
+    RETURN gv(17) * gv(107);
+  END;
 
--- PRIVILEGE_CATEGORIE_FK
-ALTER TABLE "PRIVILEGE" ADD CONSTRAINT "PRIVILEGE_CATEGORIE_FK" FOREIGN KEY ("CATEGORIE_ID")
-	  REFERENCES "CATEGORIE_PRIVILEGE" ("ID") ON DELETE CASCADE ENABLE;
+  FUNCTION C2_123( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS
+    s  ose_formule.t_service;
+  BEGIN
+    s  := ose_formule.d_service( vh.service_id );
 
--- ROLE_HCFK
-ALTER TABLE "ROLE" ADD CONSTRAINT "ROLE_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+    IF s.taux_fc = 1 THEN
+      RETURN gv(113) * s.ponderation_service_compl;
+    ELSE
+      RETURN gv(113);
+    END IF;
+  END;
 
--- ROLE_HDFK
-ALTER TABLE "ROLE" ADD CONSTRAINT "ROLE_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+  FUNCTION C3_123( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS
+    s  ose_formule.t_service;
+  BEGIN
+    s  := ose_formule.d_service( vh.service_id );
 
--- ROLE_HMFK
-ALTER TABLE "ROLE" ADD CONSTRAINT "ROLE_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+    IF s.taux_fc > 0 THEN
+      RETURN gv(113) * s.ponderation_service_compl;
+    ELSE
+      RETURN gv(113);
+    END IF;
+  END;
 
--- ROLE_PERIMETRE_FK
-ALTER TABLE "ROLE" ADD CONSTRAINT "ROLE_PERIMETRE_FK" FOREIGN KEY ("PERIMETRE_ID")
-	  REFERENCES "PERIMETRE" ("ID") ENABLE;
+  FUNCTION C2_124( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS
+    s  ose_formule.t_service;
+  BEGIN
+    s  := ose_formule.d_service( vh.service_id );
 
--- ROLE_PRIVILEGE_PRIVILEGE_FK
-ALTER TABLE "ROLE_PRIVILEGE" ADD CONSTRAINT "ROLE_PRIVILEGE_PRIVILEGE_FK" FOREIGN KEY ("PRIVILEGE_ID")
-	  REFERENCES "PRIVILEGE" ("ID") ON DELETE CASCADE ENABLE;
+    IF s.taux_fc = 1 THEN
+      RETURN gv(114) * s.ponderation_service_compl;
+    ELSE
+      RETURN gv(114);
+    END IF;
+  END;
 
--- ROLE_PRIVILEGE_ROLE_FK
-ALTER TABLE "ROLE_PRIVILEGE" ADD CONSTRAINT "ROLE_PRIVILEGE_ROLE_FK" FOREIGN KEY ("ROLE_ID")
-	  REFERENCES "ROLE" ("ID") ON DELETE CASCADE ENABLE;
+  FUNCTION C3_124( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS
+    s  ose_formule.t_service;
+  BEGIN
+    s  := ose_formule.d_service( vh.service_id );
 
--- RSV_TYPE_INTERVENANT_FK
-ALTER TABLE "REGLE_STRUCTURE_VALIDATION" ADD CONSTRAINT "RSV_TYPE_INTERVENANT_FK" FOREIGN KEY ("TYPE_INTERVENANT_ID")
-	  REFERENCES "TYPE_INTERVENANT" ("ID") ENABLE;
+    IF s.taux_fc > 0 THEN
+      RETURN gv(114) * s.ponderation_service_compl;
+    ELSE
+      RETURN gv(114);
+    END IF;
+  END;
 
--- RSV_TYPE_VOLUME_HORAIRE_FK
-ALTER TABLE "REGLE_STRUCTURE_VALIDATION" ADD CONSTRAINT "RSV_TYPE_VOLUME_HORAIRE_FK" FOREIGN KEY ("TYPE_VOLUME_HORAIRE_ID")
-	  REFERENCES "TYPE_VOLUME_HORAIRE" ("ID") ENABLE;
+  FUNCTION C2_131( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS
+    s  ose_formule.t_service;
+  BEGIN
+    s  := ose_formule.d_service( vh.service_id );
 
--- SCENARIO_HCFK
-ALTER TABLE "SCENARIO" ADD CONSTRAINT "SCENARIO_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+    RETURN gv(111) * s.taux_fi;
+  END;
 
--- SCENARIO_HDFK
-ALTER TABLE "SCENARIO" ADD CONSTRAINT "SCENARIO_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+  FUNCTION C3_131( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS
+    s  ose_formule.t_service;
+  BEGIN
+    s  := ose_formule.d_service( vh.service_id );
 
--- SCENARIO_HMFK
-ALTER TABLE "SCENARIO" ADD CONSTRAINT "SCENARIO_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+    IF s.taux_fi + s.taux_fa > 0 THEN
+      RETURN gv(111) / (s.taux_fi + s.taux_fa) * s.taux_fi;
+    ELSE
+      RETURN 0;
+    END IF;
+  END;
 
--- SCENARIO_LIEN_HCFK
-ALTER TABLE "SCENARIO_LIEN" ADD CONSTRAINT "SCENARIO_LIEN_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+  FUNCTION C2_132( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS
+    s  ose_formule.t_service;
+  BEGIN
+    s  := ose_formule.d_service( vh.service_id );
 
--- SCENARIO_LIEN_HDFK
-ALTER TABLE "SCENARIO_LIEN" ADD CONSTRAINT "SCENARIO_LIEN_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+    RETURN gv(112) * s.taux_fi;
+  END;
 
--- SCENARIO_LIEN_HMFK
-ALTER TABLE "SCENARIO_LIEN" ADD CONSTRAINT "SCENARIO_LIEN_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+  FUNCTION C3_132( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS
+    s  ose_formule.t_service;
+  BEGIN
+    s  := ose_formule.d_service( vh.service_id );
 
--- SCENARIO_LIEN_LIEN_FK
-ALTER TABLE "SCENARIO_LIEN" ADD CONSTRAINT "SCENARIO_LIEN_LIEN_FK" FOREIGN KEY ("LIEN_ID")
-	  REFERENCES "LIEN" ("ID") ON DELETE CASCADE ENABLE;
+    IF s.taux_fi + s.taux_fa > 0 THEN
+      RETURN gv(112) / (s.taux_fi + s.taux_fa) * s.taux_fi;
+    ELSE
+      RETURN 0;
+    END IF;
+  END;
 
--- SCENARIO_LIEN_SCENARIO_FK
-ALTER TABLE "SCENARIO_LIEN" ADD CONSTRAINT "SCENARIO_LIEN_SCENARIO_FK" FOREIGN KEY ("SCENARIO_ID")
-	  REFERENCES "SCENARIO" ("ID") ON DELETE CASCADE ENABLE;
+  FUNCTION C2_141( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS
+    s  ose_formule.t_service;
+  BEGIN
+    s  := ose_formule.d_service( vh.service_id );
 
--- SCENARIO_LIEN_SOURCE_FK
-ALTER TABLE "SCENARIO_LIEN" ADD CONSTRAINT "SCENARIO_LIEN_SOURCE_FK" FOREIGN KEY ("SOURCE_ID")
-	  REFERENCES "SOURCE" ("ID") ENABLE;
+    RETURN gv(111) * s.taux_fa;
+  END;
 
--- SCENARIO_NOEUD_HCFK
-ALTER TABLE "SCENARIO_NOEUD" ADD CONSTRAINT "SCENARIO_NOEUD_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+  FUNCTION C3_141( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS
+    s  ose_formule.t_service;
+  BEGIN
+    s  := ose_formule.d_service( vh.service_id );
 
--- SCENARIO_NOEUD_HDFK
-ALTER TABLE "SCENARIO_NOEUD" ADD CONSTRAINT "SCENARIO_NOEUD_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+    IF s.taux_fi + s.taux_fa > 0 THEN
+      RETURN gv(111) / (s.taux_fi + s.taux_fa) * s.taux_fa;
+    ELSE
+      RETURN 0;
+    END IF;
+  END;
 
--- SCENARIO_NOEUD_HMFK
-ALTER TABLE "SCENARIO_NOEUD" ADD CONSTRAINT "SCENARIO_NOEUD_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+  FUNCTION C2_142( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS
+    s  ose_formule.t_service;
+  BEGIN
+    s  := ose_formule.d_service( vh.service_id );
 
--- SCENARIO_NOEUD_NOEUD_FK
-ALTER TABLE "SCENARIO_NOEUD" ADD CONSTRAINT "SCENARIO_NOEUD_NOEUD_FK" FOREIGN KEY ("NOEUD_ID")
-	  REFERENCES "NOEUD" ("ID") ON DELETE CASCADE ENABLE;
+    RETURN gv(112) * s.taux_fa;
+  END;
 
--- SCENARIO_NOEUD_SCENARIO_FK
-ALTER TABLE "SCENARIO_NOEUD" ADD CONSTRAINT "SCENARIO_NOEUD_SCENARIO_FK" FOREIGN KEY ("SCENARIO_ID")
-	  REFERENCES "SCENARIO" ("ID") ON DELETE CASCADE ENABLE;
+  FUNCTION C3_142( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS
+    s  ose_formule.t_service;
+  BEGIN
+    s  := ose_formule.d_service( vh.service_id );
+
+    IF s.taux_fi + s.taux_fa > 0 THEN
+      RETURN gv(112) / (s.taux_fi + s.taux_fa) * s.taux_fa;
+    ELSE
+      RETURN 0;
+    END IF;
+  END;
 
--- SCENARIO_NOEUD_SOURCE_FK
-ALTER TABLE "SCENARIO_NOEUD" ADD CONSTRAINT "SCENARIO_NOEUD_SOURCE_FK" FOREIGN KEY ("SOURCE_ID")
-	  REFERENCES "SOURCE" ("ID") ENABLE;
+  FUNCTION C2_151( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS
+    s  ose_formule.t_service;
+  BEGIN
+    s  := ose_formule.d_service( vh.service_id );
 
--- SCENARIO_STRUCTURE_FK
-ALTER TABLE "SCENARIO" ADD CONSTRAINT "SCENARIO_STRUCTURE_FK" FOREIGN KEY ("STRUCTURE_ID")
-	  REFERENCES "STRUCTURE" ("ID") ENABLE;
+    RETURN gv(111) * s.taux_fc;
+  END;
 
--- SERVICE_ELEMENT_PEDAGOGIQUE_FK
-ALTER TABLE "SERVICE" ADD CONSTRAINT "SERVICE_ELEMENT_PEDAGOGIQUE_FK" FOREIGN KEY ("ELEMENT_PEDAGOGIQUE_ID")
-	  REFERENCES "ELEMENT_PEDAGOGIQUE" ("ID") ENABLE;
+  FUNCTION C2_152( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS
+    s  ose_formule.t_service;
+  BEGIN
+    s  := ose_formule.d_service( vh.service_id );
 
--- SERVICE_ETABLISSEMENT_FK
-ALTER TABLE "SERVICE" ADD CONSTRAINT "SERVICE_ETABLISSEMENT_FK" FOREIGN KEY ("ETABLISSEMENT_ID")
-	  REFERENCES "ETABLISSEMENT" ("ID") ENABLE;
+    RETURN gv(112) * s.taux_fc;
+  END;
 
--- SERVICE_HCFK
-ALTER TABLE "SERVICE" ADD CONSTRAINT "SERVICE_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+  FUNCTION C2_153( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS
+    s  ose_formule.t_service;
+  BEGIN
+    s  := ose_formule.d_service( vh.service_id );
 
--- SERVICE_HDFK
-ALTER TABLE "SERVICE" ADD CONSTRAINT "SERVICE_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+    IF gv(123) = gv(113) THEN
+      RETURN gv(113) * s.taux_fc;
+    ELSE
+      RETURN 0;
+    END IF;
+  END;
 
--- SERVICE_HMFK
-ALTER TABLE "SERVICE" ADD CONSTRAINT "SERVICE_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+  FUNCTION C3_153( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS
+    s  ose_formule.t_service;
+  BEGIN
+    s  := ose_formule.d_service( vh.service_id );
 
--- SERVICE_INTERVENANT_FK
-ALTER TABLE "SERVICE" ADD CONSTRAINT "SERVICE_INTERVENANT_FK" FOREIGN KEY ("INTERVENANT_ID")
-	  REFERENCES "INTERVENANT" ("ID") ENABLE;
+    IF gv(123) = gv(113) THEN
+      RETURN gv(113);
+    ELSE
+      RETURN 0;
+    END IF;
+  END;
 
--- SERVICE_REFERENTIEL_HCFK
-ALTER TABLE "SERVICE_REFERENTIEL" ADD CONSTRAINT "SERVICE_REFERENTIEL_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+  FUNCTION C2_154( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS
+    s  ose_formule.t_service;
+  BEGIN
+    s  := ose_formule.d_service( vh.service_id );
 
--- SERVICE_REFERENTIEL_HDFK
-ALTER TABLE "SERVICE_REFERENTIEL" ADD CONSTRAINT "SERVICE_REFERENTIEL_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+    IF gv(124) = gv(114) THEN
+      RETURN gv(114) * s.taux_fc;
+    ELSE
+      RETURN 0;
+    END IF;
+  END;
 
--- SERVICE_REFERENTIEL_HMFK
-ALTER TABLE "SERVICE_REFERENTIEL" ADD CONSTRAINT "SERVICE_REFERENTIEL_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+  FUNCTION C3_154( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS
+    s  ose_formule.t_service;
+  BEGIN
+    s  := ose_formule.d_service( vh.service_id );
 
--- SEUIL_CHARGE_ANNEE_FK
-ALTER TABLE "SEUIL_CHARGE" ADD CONSTRAINT "SEUIL_CHARGE_ANNEE_FK" FOREIGN KEY ("ANNEE_ID")
-	  REFERENCES "ANNEE" ("ID") ENABLE;
+    IF gv(124) = gv(114) THEN
+      RETURN gv(114);
+    ELSE
+      RETURN 0;
+    END IF;
+  END;
 
--- SEUIL_CH_GT_FORMATION_FK
-ALTER TABLE "SEUIL_CHARGE" ADD CONSTRAINT "SEUIL_CH_GT_FORMATION_FK" FOREIGN KEY ("GROUPE_TYPE_FORMATION_ID")
-	  REFERENCES "GROUPE_TYPE_FORMATION" ("ID") ENABLE;
+  FUNCTION C2_163( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS
+    s  ose_formule.t_service;
+  BEGIN
+    s  := ose_formule.d_service( vh.service_id );
 
--- SEUIL_CH_SCENARIO_FK
-ALTER TABLE "SEUIL_CHARGE" ADD CONSTRAINT "SEUIL_CH_SCENARIO_FK" FOREIGN KEY ("SCENARIO_ID")
-	  REFERENCES "SCENARIO" ("ID") ENABLE;
+    IF gv(123) <> gv(113) THEN
+      RETURN gv(123) * s.taux_fc;
+    ELSE
+      RETURN 0;
+    END IF;
+  END;
 
--- SEUIL_CH_STRUCTURE_FK
-ALTER TABLE "SEUIL_CHARGE" ADD CONSTRAINT "SEUIL_CH_STRUCTURE_FK" FOREIGN KEY ("STRUCTURE_ID")
-	  REFERENCES "STRUCTURE" ("ID") ENABLE;
+  FUNCTION C3_163( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS
+    s  ose_formule.t_service;
+  BEGIN
+    s  := ose_formule.d_service( vh.service_id );
 
--- SEUIL_CH_TYPE_INTERVENTION_FK
-ALTER TABLE "SEUIL_CHARGE" ADD CONSTRAINT "SEUIL_CH_TYPE_INTERVENTION_FK" FOREIGN KEY ("TYPE_INTERVENTION_ID")
-	  REFERENCES "TYPE_INTERVENTION" ("ID") ENABLE;
+    IF gv(123) <> gv(113) THEN
+      RETURN gv(123);
+    ELSE
+      RETURN 0;
+    END IF;
+  END;
 
--- SEUIL_CH_UTILISATEUR_HCFK
-ALTER TABLE "SEUIL_CHARGE" ADD CONSTRAINT "SEUIL_CH_UTILISATEUR_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+  FUNCTION C2_164( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS
+    s  ose_formule.t_service;
+  BEGIN
+    s  := ose_formule.d_service( vh.service_id );
 
--- SEUIL_CH_UTILISATEUR_HDFK
-ALTER TABLE "SEUIL_CHARGE" ADD CONSTRAINT "SEUIL_CH_UTILISATEUR_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+    IF gv(124) <> gv(114) THEN
+      RETURN gv(124) * s.taux_fc;
+    ELSE
+      RETURN 0;
+    END IF;
+  END;
 
--- SEUIL_CH_UTILISATEUR_HMFK
-ALTER TABLE "SEUIL_CHARGE" ADD CONSTRAINT "SEUIL_CH_UTILISATEUR_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+  FUNCTION C3_164( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS
+    s  ose_formule.t_service;
+  BEGIN
+    s  := ose_formule.d_service( vh.service_id );
 
--- SNE_ETAPE_FK
-ALTER TABLE "SCENARIO_NOEUD_EFFECTIF" ADD CONSTRAINT "SNE_ETAPE_FK" FOREIGN KEY ("ETAPE_ID")
-	  REFERENCES "ETAPE" ("ID") ENABLE;
+    IF gv(124) <> gv(114) THEN
+      RETURN gv(124);
+    ELSE
+      RETURN 0;
+    END IF;
+  END;
 
--- SNE_SCENARIO_NOEUD_FK
-ALTER TABLE "SCENARIO_NOEUD_EFFECTIF" ADD CONSTRAINT "SNE_SCENARIO_NOEUD_FK" FOREIGN KEY ("SCENARIO_NOEUD_ID")
-	  REFERENCES "SCENARIO_NOEUD" ("ID") ON DELETE CASCADE ENABLE;
 
--- SNE_TYPE_HEURES_FK
-ALTER TABLE "SCENARIO_NOEUD_EFFECTIF" ADD CONSTRAINT "SNE_TYPE_HEURES_FK" FOREIGN KEY ("TYPE_HEURES_ID")
-	  REFERENCES "TYPE_HEURES" ("ID") ON DELETE CASCADE ENABLE;
 
--- SNS_SCENARIO_NOEUD_FK
-ALTER TABLE "SCENARIO_NOEUD_SEUIL" ADD CONSTRAINT "SNS_SCENARIO_NOEUD_FK" FOREIGN KEY ("SCENARIO_NOEUD_ID")
-	  REFERENCES "SCENARIO_NOEUD" ("ID") ON DELETE CASCADE ENABLE;
 
--- SNS_TYPE_INTERVENTION_FK
-ALTER TABLE "SCENARIO_NOEUD_SEUIL" ADD CONSTRAINT "SNS_TYPE_INTERVENTION_FK" FOREIGN KEY ("TYPE_INTERVENTION_ID")
-	  REFERENCES "TYPE_INTERVENTION" ("ID") ON DELETE CASCADE ENABLE;
 
--- SRFR_FK
-ALTER TABLE "SERVICE_REFERENTIEL" ADD CONSTRAINT "SRFR_FK" FOREIGN KEY ("FONCTION_ID")
-	  REFERENCES "FONCTION_REFERENTIEL" ("ID") ENABLE;
 
--- SR_INTERVENANT_FK
-ALTER TABLE "SERVICE_REFERENTIEL" ADD CONSTRAINT "SR_INTERVENANT_FK" FOREIGN KEY ("INTERVENANT_ID")
-	  REFERENCES "INTERVENANT" ("ID") ON DELETE CASCADE ENABLE;
 
--- SR_STRUCTURE_FK
-ALTER TABLE "SERVICE_REFERENTIEL" ADD CONSTRAINT "SR_STRUCTURE_FK" FOREIGN KEY ("STRUCTURE_ID")
-	  REFERENCES "STRUCTURE" ("ID") ENABLE;
 
--- STATUT_INTERVENANT_HCFK
-ALTER TABLE "STATUT_INTERVENANT" ADD CONSTRAINT "STATUT_INTERVENANT_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
 
--- STATUT_INTERVENANT_HDFK
-ALTER TABLE "STATUT_INTERVENANT" ADD CONSTRAINT "STATUT_INTERVENANT_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
 
--- STATUT_INTERVENANT_HMFK
-ALTER TABLE "STATUT_INTERVENANT" ADD CONSTRAINT "STATUT_INTERVENANT_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+  PROCEDURE CALCUL_RESULTAT_V2( INTERVENANT_ID NUMERIC, TYPE_VOLUME_HORAIRE_ID NUMERIC, ETAT_VOLUME_HORAIRE_ID NUMERIC ) IS
+    current_tableau           PLS_INTEGER;
+    id                        PLS_INTEGER;
+    val                       FLOAT;
+    TYPE t_liste_tableaux   IS VARRAY (100) OF PLS_INTEGER;
+    liste_tableaux            t_liste_tableaux;
+    resultat_total            FLOAT;
+    res                       FLOAT;
+    vh                        ose_formule.t_volume_horaire;
+    vhr                       ose_formule.t_volume_horaire_ref;
+  BEGIN
+    V_INIT;
 
--- STATUT_INTERVENANT_SOURCE_FK
-ALTER TABLE "STATUT_INTERVENANT" ADD CONSTRAINT "STATUT_INTERVENANT_SOURCE_FK" FOREIGN KEY ("SOURCE_ID")
-	  REFERENCES "SOURCE" ("ID") ON DELETE CASCADE ENABLE;
+    ose_formule.d_resultat.service_du := CASE
+      WHEN ose_formule.d_intervenant.depassement_service_du_sans_hc = 1 -- HC traitées comme du service
+        OR ose_formule.d_intervenant.heures_decharge < 0 -- s'il y a une décharge => aucune HC
 
--- STATUT_INTERVENANT_TYPE_FK
-ALTER TABLE "STATUT_INTERVENANT" ADD CONSTRAINT "STATUT_INTERVENANT_TYPE_FK" FOREIGN KEY ("TYPE_INTERVENANT_ID")
-	  REFERENCES "TYPE_INTERVENANT" ("ID") ENABLE;
+      THEN 9999
+      ELSE ose_formule.d_intervenant.heures_service_statutaire + ose_formule.d_intervenant.heures_service_modifie
+    END;
 
--- STAT_PRIV_PRIVILEGE_FK
-ALTER TABLE "STATUT_PRIVILEGE" ADD CONSTRAINT "STAT_PRIV_PRIVILEGE_FK" FOREIGN KEY ("PRIVILEGE_ID")
-	  REFERENCES "PRIVILEGE" ("ID") ON DELETE CASCADE ENABLE;
+    liste_tableaux := t_liste_tableaux(
+       11,  12,  13,  14,  15,  16,  17,
+       21,  22,  23,  24,  25,  26,  27,
+       31,  32,  33,  34,  35,  36,  37,
+       41,  42,  43,  44,  45,  46,  47,
+       51,  52,  53,  54,  55,  56,  57,
+       61,  62,
+       71,  72,
+       81,  82,  83,  84,
+       91,  92,  93,  94,  95,  96,  97,
+      101, 102, 103, 104, 105, 106, 107,
+      111, 112, 113, 114, 115, 116, 117,
+                123, 124,
+      131, 132,
+      141, 142,
+      151, 152, 153, 154,
+                163, 164
+    );
 
--- STAT_PRIV_STATUT_FK
-ALTER TABLE "STATUT_PRIVILEGE" ADD CONSTRAINT "STAT_PRIV_STATUT_FK" FOREIGN KEY ("STATUT_ID")
-	  REFERENCES "STATUT_INTERVENANT" ("ID") ON DELETE CASCADE ENABLE;
+    FOR i IN liste_tableaux.FIRST .. liste_tableaux.LAST
+    LOOP
+      current_tableau := liste_tableaux(i);
 
--- STRUCTURE_HCFK
-ALTER TABLE "STRUCTURE" ADD CONSTRAINT "STRUCTURE_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+      IF current_tableau IN ( -- calcul pour les volumes horaires des services
+         11,  12,  13,  14,
+         21,  22,  23,  24,
+         41,  42,  43,  44,
+         51,  52,  53,  54,
+         61,  62,
+         71,  72,
+         81,  82,  83,  84,
+         91,  92,  93,  94,
+        101, 102, 103, 104,
+        111, 112, 113, 114,
+                  123, 124,
+        131, 132,
+        141, 142,
+        151, 152, 153, 154,
+                  163, 164
+      ) THEN
 
--- STRUCTURE_HDFK
-ALTER TABLE "STRUCTURE" ADD CONSTRAINT "STRUCTURE_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+        current_id := ose_formule.d_volume_horaire.FIRST;
+        LOOP EXIT WHEN current_id IS NULL;
+          vh := ose_formule.d_volume_horaire(current_id);
+          res := CASE current_tableau
+            WHEN  11 THEN  C2_11 (vh) WHEN  12 THEN  C2_12 (vh) WHEN  13 THEN  C2_13 (vh) WHEN  14 THEN  C2_14 (vh)
+            WHEN  21 THEN  C2_21 (vh) WHEN  22 THEN  C2_22 (vh) WHEN  23 THEN  C2_23 (vh) WHEN  24 THEN  C2_24 (vh)
+            WHEN  41 THEN  C2_41 (vh) WHEN  42 THEN  C2_42 (vh) WHEN  43 THEN  C2_43 (vh) WHEN  44 THEN  C2_44 (vh)
+            WHEN  51 THEN  C2_51 (vh) WHEN  52 THEN  C2_52 (vh) WHEN  53 THEN  C2_53 (vh) WHEN  54 THEN  C2_54 (vh)
+            WHEN  61 THEN  C2_61 (vh) WHEN  62 THEN  C2_62 (vh)
+            WHEN  71 THEN  C2_71 (vh) WHEN  72 THEN  C2_72 (vh)
+            WHEN  81 THEN  C2_81 (vh) WHEN  82 THEN  C2_82 (vh) WHEN  83 THEN  C2_83 (vh) WHEN  84 THEN  C2_84 (vh)
+            WHEN  91 THEN  C2_91 (vh) WHEN  92 THEN  C2_92 (vh) WHEN  93 THEN  C2_93 (vh) WHEN  94 THEN  C2_94 (vh)
+            WHEN 101 THEN C2_101 (vh) WHEN 102 THEN C2_102 (vh) WHEN 103 THEN C2_103 (vh) WHEN 104 THEN C2_104 (vh)
+            WHEN 111 THEN C2_111 (vh) WHEN 112 THEN C2_112 (vh) WHEN 113 THEN C2_113 (vh) WHEN 114 THEN C2_114 (vh)
+                                                              WHEN 123 THEN C2_123 (vh) WHEN 124 THEN C2_124 (vh)
+            WHEN 131 THEN C2_131 (vh) WHEN 132 THEN C2_132 (vh)
+            WHEN 141 THEN C2_141 (vh) WHEN 142 THEN C2_142 (vh)
+            WHEN 151 THEN C2_151 (vh) WHEN 152 THEN C2_152 (vh) WHEN 153 THEN C2_153 (vh) WHEN 154 THEN C2_154 (vh)
+                                                              WHEN 163 THEN C2_163 (vh) WHEN 164 THEN C2_164 (vh)
+          END;
+          SV( current_tableau, current_id, res );
+          current_id := ose_formule.d_volume_horaire.NEXT(current_id);
+        END LOOP;
 
--- STRUCTURE_HMFK
-ALTER TABLE "STRUCTURE" ADD CONSTRAINT "STRUCTURE_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+      ELSIF current_tableau IN ( -- calcul des services restants dus
+        31, 32, 33, 34, 35, 36, 37
+      ) THEN
 
--- STRUCTURE_SOURCE_FK
-ALTER TABLE "STRUCTURE" ADD CONSTRAINT "STRUCTURE_SOURCE_FK" FOREIGN KEY ("SOURCE_ID")
-	  REFERENCES "SOURCE" ("ID") ON DELETE CASCADE ENABLE;
+        res := CASE current_tableau
+          WHEN 31 THEN C2_31  WHEN 32 THEN C2_32  WHEN 33 THEN C2_33
+          WHEN 34 THEN C2_34  WHEN 35 THEN C2_35  WHEN 36 THEN C2_36
+          WHEN 37 THEN C2_37
+        END;
+        SV( current_tableau, res );
 
--- TAS_STATUT_INTERVENANT_FK
-ALTER TABLE "TYPE_AGREMENT_STATUT" ADD CONSTRAINT "TAS_STATUT_INTERVENANT_FK" FOREIGN KEY ("STATUT_INTERVENANT_ID")
-	  REFERENCES "STATUT_INTERVENANT" ("ID") ON DELETE CASCADE ENABLE;
+      ELSIF current_tableau IN ( -- tableaux de calcul des volumes horaires référentiels
+         15,  16,  17,
+         25,  26,  27,
+         45,  46,  47,
+         55,  56,  57,
+         95,  96,  97,
+        105, 106, 107,
+        115, 116, 117
+      ) THEN
 
--- TAS_TYPE_AGREMENT_FK
-ALTER TABLE "TYPE_AGREMENT_STATUT" ADD CONSTRAINT "TAS_TYPE_AGREMENT_FK" FOREIGN KEY ("TYPE_AGREMENT_ID")
-	  REFERENCES "TYPE_AGREMENT" ("ID") ON DELETE CASCADE ENABLE;
+        current_id := ose_formule.d_volume_horaire_ref.FIRST;
+        LOOP EXIT WHEN current_id IS NULL;
+          vhr := ose_formule.d_volume_horaire_ref(current_id);
+          res := CASE current_tableau
+            WHEN  15 THEN  C2_15 (vhr)  WHEN  16 THEN  C2_16 (vhr)  WHEN  17 THEN  C2_17 (vhr)
+            WHEN  25 THEN  C2_25 (vhr)  WHEN  26 THEN  C2_26 (vhr)  WHEN  27 THEN  C2_27 (vhr)
+            WHEN  45 THEN  C2_45 (vhr)  WHEN  46 THEN  C2_46 (vhr)  WHEN  47 THEN  C2_47 (vhr)
+            WHEN  55 THEN  C2_55 (vhr)  WHEN  56 THEN  C2_56 (vhr)  WHEN  57 THEN  C2_57 (vhr)
+            WHEN  95 THEN  C2_95 (vhr)  WHEN  96 THEN  C2_96 (vhr)  WHEN  97 THEN  C2_97 (vhr)
+            WHEN 105 THEN C2_105 (vhr)  WHEN 106 THEN C2_106 (vhr)  WHEN 107 THEN C2_107 (vhr)
+            WHEN 115 THEN C2_115 (vhr)  WHEN 116 THEN C2_116 (vhr)  WHEN 117 THEN C2_117 (vhr)
+          END;
+          SV(current_tableau, current_id, res);
+          current_id := ose_formule.d_volume_horaire_ref.NEXT(current_id);
+        END LOOP;
 
--- TAUX_HORAIRE_HETD_HCFK
-ALTER TABLE "TAUX_HORAIRE_HETD" ADD CONSTRAINT "TAUX_HORAIRE_HETD_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+      END IF;
+    END LOOP;
 
--- TAUX_HORAIRE_HETD_HDFK
-ALTER TABLE "TAUX_HORAIRE_HETD" ADD CONSTRAINT "TAUX_HORAIRE_HETD_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+    resultat_total :=                                         gt( 55) + gt( 56) + gt( 57)
+                    + gt( 61) + gt( 62)
+                    + gt( 71) + gt( 72)
+                    + gt( 81) + gt( 82) + gt( 83) + gt( 84)
+                                                            + gt(115) + gt(116) + gt(117)
+                    + gt(131) + gt(132)
+                    + gt(141) + gt(142)
+                    + gt(151) + gt(152) + gt(153) + gt(154)
+                                        + gt(163) + gt(164);
 
--- TAUX_HORAIRE_HETD_HMFK
-ALTER TABLE "TAUX_HORAIRE_HETD" ADD CONSTRAINT "TAUX_HORAIRE_HETD_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+    ose_formule.d_resultat.service_du := CASE
+      WHEN ose_formule.d_intervenant.depassement_service_du_sans_hc = 1 OR ose_formule.d_intervenant.heures_decharge < 0
+      THEN GREATEST(resultat_total, ose_formule.d_intervenant.heures_service_statutaire + ose_formule.d_intervenant.heures_service_modifie)
+      ELSE ose_formule.d_intervenant.heures_service_statutaire + ose_formule.d_intervenant.heures_service_modifie
+    END;
+    ose_formule.d_resultat.solde                    := resultat_total - ose_formule.d_resultat.service_du;
+    IF ose_formule.d_resultat.solde >= 0 THEN
+      ose_formule.d_resultat.sous_service           := 0;
+      ose_formule.d_resultat.heures_compl           := ose_formule.d_resultat.solde;
+    ELSE
+      ose_formule.d_resultat.sous_service           := ose_formule.d_resultat.solde * -1;
+      ose_formule.d_resultat.heures_compl           := 0;
+    END IF;
 
--- TBCH_ANNEE_FK
-ALTER TABLE "TBL_CHARGENS" ADD CONSTRAINT "TBCH_ANNEE_FK" FOREIGN KEY ("ANNEE_ID")
-	  REFERENCES "ANNEE" ("ID") ON DELETE CASCADE ENABLE;
+     -- répartition des résultats par volumes horaires
+    current_id := ose_formule.d_volume_horaire.FIRST;
+    LOOP EXIT WHEN current_id IS NULL;
+      ose_formule.d_resultat.volume_horaire(current_id).service_fi               := gv( 61) + gv( 62);
+      ose_formule.d_resultat.volume_horaire(current_id).service_fa               := gv( 71) + gv( 72);
+      ose_formule.d_resultat.volume_horaire(current_id).service_fc               := gv( 81) + gv( 82) + gv( 83) + gv( 84);
+      ose_formule.d_resultat.volume_horaire(current_id).heures_compl_fi          := gv(131) + gv(132);
+      ose_formule.d_resultat.volume_horaire(current_id).heures_compl_fa          := gv(141) + gv(142);
+      ose_formule.d_resultat.volume_horaire(current_id).heures_compl_fc          := gv(151) + gv(152) + gv(153) + gv(154);
+      ose_formule.d_resultat.volume_horaire(current_id).heures_compl_fc_majorees :=                     gv(163) + gv(164);
+      current_id := ose_formule.d_volume_horaire.NEXT(current_id);
+    END LOOP;
 
--- TBCH_ELEMENT_PEDAGOGIQUE_FK
-ALTER TABLE "TBL_CHARGENS" ADD CONSTRAINT "TBCH_ELEMENT_PEDAGOGIQUE_FK" FOREIGN KEY ("ELEMENT_PEDAGOGIQUE_ID")
-	  REFERENCES "ELEMENT_PEDAGOGIQUE" ("ID") ON DELETE CASCADE ENABLE;
+    -- répartition des résultats par volumes horaires référentiel
+    current_id := ose_formule.d_volume_horaire_ref.FIRST;
+    LOOP EXIT WHEN current_id IS NULL;
+      ose_formule.d_resultat.volume_horaire_ref(current_id).service_referentiel      := gv(55) + gv(56) + gv(57);
+      ose_formule.d_resultat.volume_horaire_ref(current_id).heures_compl_referentiel := gv(115) + gv(116) + gv(117);
+      current_id := ose_formule.d_volume_horaire_ref.NEXT(current_id);
+    END LOOP;
 
--- TBCH_ETAPE_FK
-ALTER TABLE "TBL_CHARGENS" ADD CONSTRAINT "TBCH_ETAPE_FK" FOREIGN KEY ("ETAPE_ID")
-	  REFERENCES "ETAPE" ("ID") ON DELETE CASCADE ENABLE;
+  END;
 
--- TBCH_ETAPE_FKV1
-ALTER TABLE "TBL_CHARGENS" ADD CONSTRAINT "TBCH_ETAPE_FKV1" FOREIGN KEY ("ETAPE_ENS_ID")
-	  REFERENCES "ETAPE" ("ID") ON DELETE CASCADE ENABLE;
 
--- TBCH_GROUPE_TYPE_FORMATION_FK
-ALTER TABLE "TBL_CHARGENS" ADD CONSTRAINT "TBCH_GROUPE_TYPE_FORMATION_FK" FOREIGN KEY ("GROUPE_TYPE_FORMATION_ID")
-	  REFERENCES "GROUPE_TYPE_FORMATION" ("ID") ON DELETE CASCADE ENABLE;
 
--- TBCH_NOEUD_FK
-ALTER TABLE "TBL_CHARGENS" ADD CONSTRAINT "TBCH_NOEUD_FK" FOREIGN KEY ("NOEUD_ID")
-	  REFERENCES "NOEUD" ("ID") ON DELETE CASCADE ENABLE;
 
--- TBCH_SCENARIO_FK
-ALTER TABLE "TBL_CHARGENS" ADD CONSTRAINT "TBCH_SCENARIO_FK" FOREIGN KEY ("SCENARIO_ID")
-	  REFERENCES "SCENARIO" ("ID") ON DELETE CASCADE ENABLE;
 
--- TBCH_STRUCTURE_FK
-ALTER TABLE "TBL_CHARGENS" ADD CONSTRAINT "TBCH_STRUCTURE_FK" FOREIGN KEY ("STRUCTURE_ID")
-	  REFERENCES "STRUCTURE" ("ID") ON DELETE CASCADE ENABLE;
 
--- TBCH_TYPE_HEURES_FK
-ALTER TABLE "TBL_CHARGENS" ADD CONSTRAINT "TBCH_TYPE_HEURES_FK" FOREIGN KEY ("TYPE_HEURES_ID")
-	  REFERENCES "TYPE_HEURES" ("ID") ON DELETE CASCADE ENABLE;
 
--- TBCH_TYPE_INTERVENTION_FK
-ALTER TABLE "TBL_CHARGENS" ADD CONSTRAINT "TBCH_TYPE_INTERVENTION_FK" FOREIGN KEY ("TYPE_INTERVENTION_ID")
-	  REFERENCES "TYPE_INTERVENTION" ("ID") ON DELETE CASCADE ENABLE;
 
--- TBL_AGR_AGREMENT_FK
-ALTER TABLE "TBL_AGREMENT" ADD CONSTRAINT "TBL_AGR_AGREMENT_FK" FOREIGN KEY ("AGREMENT_ID")
-	  REFERENCES "AGREMENT" ("ID") ON DELETE CASCADE ENABLE;
 
--- TBL_AGR_ANNEE_FK
-ALTER TABLE "TBL_AGREMENT" ADD CONSTRAINT "TBL_AGR_ANNEE_FK" FOREIGN KEY ("ANNEE_ID")
-	  REFERENCES "ANNEE" ("ID") ON DELETE CASCADE ENABLE;
 
--- TBL_AGR_INTERVENANT_FK
-ALTER TABLE "TBL_AGREMENT" ADD CONSTRAINT "TBL_AGR_INTERVENANT_FK" FOREIGN KEY ("INTERVENANT_ID")
-	  REFERENCES "INTERVENANT" ("ID") ON DELETE CASCADE ENABLE;
 
--- TBL_AGR_STRUCTURE_FK
-ALTER TABLE "TBL_AGREMENT" ADD CONSTRAINT "TBL_AGR_STRUCTURE_FK" FOREIGN KEY ("STRUCTURE_ID")
-	  REFERENCES "STRUCTURE" ("ID") ON DELETE CASCADE ENABLE;
 
--- TBL_AGR_TYPE_AGREMENT_FK
-ALTER TABLE "TBL_AGREMENT" ADD CONSTRAINT "TBL_AGR_TYPE_AGREMENT_FK" FOREIGN KEY ("TYPE_AGREMENT_ID")
-	  REFERENCES "TYPE_AGREMENT" ("ID") ON DELETE CASCADE ENABLE;
 
--- TBL_CLOTURE_REALISE_ANNEE_FK
-ALTER TABLE "TBL_CLOTURE_REALISE" ADD CONSTRAINT "TBL_CLOTURE_REALISE_ANNEE_FK" FOREIGN KEY ("ANNEE_ID")
-	  REFERENCES "ANNEE" ("ID") ON DELETE CASCADE ENABLE;
 
--- TBL_CLO_REAL_INTERVENANT_FK
-ALTER TABLE "TBL_CLOTURE_REALISE" ADD CONSTRAINT "TBL_CLO_REAL_INTERVENANT_FK" FOREIGN KEY ("INTERVENANT_ID")
-	  REFERENCES "INTERVENANT" ("ID") ON DELETE CASCADE ENABLE;
+  PROCEDURE CALCUL_RESULTAT_V3( INTERVENANT_ID NUMERIC, TYPE_VOLUME_HORAIRE_ID NUMERIC, ETAT_VOLUME_HORAIRE_ID NUMERIC ) IS
+    current_tableau           PLS_INTEGER;
+    id                        PLS_INTEGER;
+    val                       FLOAT;
+    TYPE t_liste_tableaux   IS VARRAY (100) OF PLS_INTEGER;
+    liste_tableaux            t_liste_tableaux;
+    resultat_total            FLOAT;
+    res                       FLOAT;
+    vh                        ose_formule.t_volume_horaire;
+    vhr                       ose_formule.t_volume_horaire_ref;
+  BEGIN
 
--- TBL_CONTRAT_ANNEE_FK
-ALTER TABLE "TBL_CONTRAT" ADD CONSTRAINT "TBL_CONTRAT_ANNEE_FK" FOREIGN KEY ("ANNEE_ID")
-	  REFERENCES "ANNEE" ("ID") ON DELETE CASCADE ENABLE;
+    -- si l'année est antérieure à 2016/2017 alors on utilise la V2!!
+    IF ose_formule.d_intervenant.annee_id < 2016 THEN
+      CALCUL_RESULTAT_V2( INTERVENANT_ID, TYPE_VOLUME_HORAIRE_ID, ETAT_VOLUME_HORAIRE_ID );
+      RETURN;
+    END IF;
 
--- TBL_CONTRAT_INTERVENANT_FK
-ALTER TABLE "TBL_CONTRAT" ADD CONSTRAINT "TBL_CONTRAT_INTERVENANT_FK" FOREIGN KEY ("INTERVENANT_ID")
-	  REFERENCES "INTERVENANT" ("ID") ON DELETE CASCADE ENABLE;
+    V_INIT;
 
--- TBL_CONTRAT_STRUCTURE_FK
-ALTER TABLE "TBL_CONTRAT" ADD CONSTRAINT "TBL_CONTRAT_STRUCTURE_FK" FOREIGN KEY ("STRUCTURE_ID")
-	  REFERENCES "STRUCTURE" ("ID") ON DELETE CASCADE ENABLE;
+    ose_formule.d_resultat.service_du := CASE
+      WHEN ose_formule.d_intervenant.depassement_service_du_sans_hc = 1 -- HC traitées comme du service
+        OR ose_formule.d_intervenant.heures_decharge < 0 -- s'il y a une décharge => aucune HC
 
--- TBL_CSD_ANNEE_FK
-ALTER TABLE "TBL_CHARGENS_SEUILS_DEF" ADD CONSTRAINT "TBL_CSD_ANNEE_FK" FOREIGN KEY ("ANNEE_ID")
-	  REFERENCES "ANNEE" ("ID") ENABLE;
+      THEN 9999
+      ELSE ose_formule.d_intervenant.heures_service_statutaire + ose_formule.d_intervenant.heures_service_modifie
+    END;
 
--- TBL_CSD_GTF_FK
-ALTER TABLE "TBL_CHARGENS_SEUILS_DEF" ADD CONSTRAINT "TBL_CSD_GTF_FK" FOREIGN KEY ("GROUPE_TYPE_FORMATION_ID")
-	  REFERENCES "GROUPE_TYPE_FORMATION" ("ID") ENABLE;
+    liste_tableaux := t_liste_tableaux(
+       11,  12,  13,  14,  15,  16,  17,
+       21,  22,  23,  24,  25,  26,  27,
+       31,  32,  33,  34,  35,  36,  37,
+       41,  42,  43,  44,  45,  46,  47,
+       51,  52,  53,  54,  55,  56,  57,
+       61,  62,
+       71,  72,
+       81,  82,  83,  84,
+       91,  92,  93,  94,  95,  96,  97,
+      101, 102, 103, 104, 105, 106, 107,
+      111, 112, 113, 114, 115, 116, 117,
+                123, 124,
+      131, 132,
+      141, 142,
+      151, 152, 153, 154,
+                163, 164
+    );
 
--- TBL_CSD_SCENARIO_FK
-ALTER TABLE "TBL_CHARGENS_SEUILS_DEF" ADD CONSTRAINT "TBL_CSD_SCENARIO_FK" FOREIGN KEY ("SCENARIO_ID")
-	  REFERENCES "SCENARIO" ("ID") ENABLE;
+    FOR i IN liste_tableaux.FIRST .. liste_tableaux.LAST
+    LOOP
+      current_tableau := liste_tableaux(i);
 
--- TBL_CSD_STRUCTURE_FK
-ALTER TABLE "TBL_CHARGENS_SEUILS_DEF" ADD CONSTRAINT "TBL_CSD_STRUCTURE_FK" FOREIGN KEY ("STRUCTURE_ID")
-	  REFERENCES "STRUCTURE" ("ID") ENABLE;
+      IF current_tableau IN ( -- calcul pour les volumes horaires des services
+         11,  12,  13,  14,
+         21,  22,  23,  24,
+         41,  42,  43,  44,
+         51,  52,  53,  54,
+         61,  62,
+         71,  72,
+         81,  82,  83,  84,
+         91,  92,  93,  94,
+        101, 102, 103, 104,
+        111, 112, 113, 114,
+                  123, 124,
+        131, 132,
+        141, 142,
+        151, 152, 153, 154,
+                  163, 164
+      ) THEN
 
--- TBL_CSD_TYPE_INTERVENTION_FK
-ALTER TABLE "TBL_CHARGENS_SEUILS_DEF" ADD CONSTRAINT "TBL_CSD_TYPE_INTERVENTION_FK" FOREIGN KEY ("TYPE_INTERVENTION_ID")
-	  REFERENCES "TYPE_INTERVENTION" ("ID") ENABLE;
+        current_id := ose_formule.d_volume_horaire.FIRST;
+        LOOP EXIT WHEN current_id IS NULL;
+          vh := ose_formule.d_volume_horaire(current_id);
+          res := CASE current_tableau
+            WHEN  11 THEN  C3_11 (vh) WHEN  12 THEN  C3_12 (vh) WHEN  13 THEN  C3_13 (vh) WHEN  14 THEN  C3_14 (vh)
+            WHEN  21 THEN  C2_21 (vh) WHEN  22 THEN  C2_22 (vh) WHEN  23 THEN  C2_23 (vh) WHEN  24 THEN  C2_24 (vh)
+            WHEN  41 THEN  C2_41 (vh) WHEN  42 THEN  C2_42 (vh) WHEN  43 THEN  C2_43 (vh) WHEN  44 THEN  C2_44 (vh)
+            WHEN  51 THEN  C2_51 (vh) WHEN  52 THEN  C2_52 (vh) WHEN  53 THEN  C2_53 (vh) WHEN  54 THEN  C2_54 (vh)
+            WHEN  61 THEN  C3_61 (vh) WHEN  62 THEN  C3_62 (vh)
+            WHEN  71 THEN  C3_71 (vh) WHEN  72 THEN  C3_72 (vh)
+                                                                WHEN  83 THEN  C3_83 (vh) WHEN  84 THEN  C3_84 (vh)
+            WHEN  91 THEN  C2_91 (vh) WHEN  92 THEN  C2_92 (vh) WHEN  93 THEN  C2_93 (vh) WHEN  94 THEN  C2_94 (vh)
+            WHEN 101 THEN C2_101 (vh) WHEN 102 THEN C2_102 (vh) WHEN 103 THEN C2_103 (vh) WHEN 104 THEN C2_104 (vh)
+            WHEN 111 THEN C2_111 (vh) WHEN 112 THEN C2_112 (vh) WHEN 113 THEN C2_113 (vh) WHEN 114 THEN C2_114 (vh)
+                                                                WHEN 123 THEN C3_123 (vh) WHEN 124 THEN C3_124 (vh)
+            WHEN 131 THEN C3_131 (vh) WHEN 132 THEN C3_132 (vh)
+            WHEN 141 THEN C3_141 (vh) WHEN 142 THEN C3_142 (vh)
+                                                                WHEN 153 THEN C3_153 (vh) WHEN 154 THEN C3_154 (vh)
+                                                                WHEN 163 THEN C3_163 (vh) WHEN 164 THEN C3_164 (vh)
+          END;
+          SV( current_tableau, current_id, res );
+          current_id := ose_formule.d_volume_horaire.NEXT(current_id);
+        END LOOP;
 
--- TBL_DEMS_TBL_FK
-ALTER TABLE "TBL_DEMS" ADD CONSTRAINT "TBL_DEMS_TBL_FK" FOREIGN KEY ("TBL_NAME")
-	  REFERENCES "TBL" ("TBL_NAME") ON DELETE CASCADE ENABLE;
+      ELSIF current_tableau IN ( -- calcul des services restants dus
+        31, 32, 33, 34, 35, 36, 37
+      ) THEN
 
--- TBL_DMLIQ_ANNEE_FK
-ALTER TABLE "TBL_DMEP_LIQUIDATION" ADD CONSTRAINT "TBL_DMLIQ_ANNEE_FK" FOREIGN KEY ("ANNEE_ID")
-	  REFERENCES "ANNEE" ("ID") ON DELETE CASCADE ENABLE;
+        res := CASE current_tableau
+          WHEN 31 THEN C2_31  WHEN 32 THEN C2_32  WHEN 33 THEN C2_33
+          WHEN 34 THEN C2_34  WHEN 35 THEN C2_35  WHEN 36 THEN C2_36
+          WHEN 37 THEN C2_37
+        END;
+        SV( current_tableau, res );
 
--- TBL_DMLIQ_STRUCTURE_FK
-ALTER TABLE "TBL_DMEP_LIQUIDATION" ADD CONSTRAINT "TBL_DMLIQ_STRUCTURE_FK" FOREIGN KEY ("STRUCTURE_ID")
-	  REFERENCES "STRUCTURE" ("ID") ON DELETE CASCADE ENABLE;
+      ELSIF current_tableau IN ( -- tableaux de calcul des volumes horaires référentiels
+         15,  16,  17,
+         25,  26,  27,
+         45,  46,  47,
+         55,  56,  57,
+         95,  96,  97,
+        105, 106, 107,
+        115, 116, 117
+      ) THEN
 
--- TBL_DMLIQ_TYPE_RESSOURCE_FK
-ALTER TABLE "TBL_DMEP_LIQUIDATION" ADD CONSTRAINT "TBL_DMLIQ_TYPE_RESSOURCE_FK" FOREIGN KEY ("TYPE_RESSOURCE_ID")
-	  REFERENCES "TYPE_RESSOURCE" ("ID") ON DELETE CASCADE ENABLE;
+        current_id := ose_formule.d_volume_horaire_ref.FIRST;
+        LOOP EXIT WHEN current_id IS NULL;
+          vhr := ose_formule.d_volume_horaire_ref(current_id);
+          res := CASE current_tableau
+            WHEN  15 THEN  C2_15 (vhr)  WHEN  16 THEN  C2_16 (vhr)  WHEN  17 THEN  C2_17 (vhr)
+            WHEN  25 THEN  C2_25 (vhr)  WHEN  26 THEN  C2_26 (vhr)  WHEN  27 THEN  C2_27 (vhr)
+            WHEN  45 THEN  C2_45 (vhr)  WHEN  46 THEN  C2_46 (vhr)  WHEN  47 THEN  C2_47 (vhr)
+            WHEN  55 THEN  C2_55 (vhr)  WHEN  56 THEN  C2_56 (vhr)  WHEN  57 THEN  C2_57 (vhr)
+            WHEN  95 THEN  C2_95 (vhr)  WHEN  96 THEN  C2_96 (vhr)  WHEN  97 THEN  C2_97 (vhr)
+            WHEN 105 THEN C2_105 (vhr)  WHEN 106 THEN C2_106 (vhr)  WHEN 107 THEN C2_107 (vhr)
+            WHEN 115 THEN C2_115 (vhr)  WHEN 116 THEN C2_116 (vhr)  WHEN 117 THEN C2_117 (vhr)
+          END;
+          SV(current_tableau, current_id, res);
+          current_id := ose_formule.d_volume_horaire_ref.NEXT(current_id);
+        END LOOP;
 
--- TBL_DOSSIER_ANNEE_FK
-ALTER TABLE "TBL_DOSSIER" ADD CONSTRAINT "TBL_DOSSIER_ANNEE_FK" FOREIGN KEY ("ANNEE_ID")
-	  REFERENCES "ANNEE" ("ID") ON DELETE CASCADE ENABLE;
+      END IF;
+    END LOOP;
 
--- TBL_DOSSIER_DOSSIER_FK
-ALTER TABLE "TBL_DOSSIER" ADD CONSTRAINT "TBL_DOSSIER_DOSSIER_FK" FOREIGN KEY ("DOSSIER_ID")
-	  REFERENCES "DOSSIER" ("ID") ON DELETE CASCADE ENABLE;
+    resultat_total :=                                         gt( 55) + gt( 56) + gt( 57)
+                    + gt( 61) + gt( 62)
+                    + gt( 71) + gt( 72)
+                    + gt( 83) + gt( 84)
+                                                            + gt(115) + gt(116) + gt(117)
+                    + gt(131) + gt(132)
+                    + gt(141) + gt(142)
+                    + gt(153) + gt(154)
+                                        + gt(163) + gt(164);
 
--- TBL_DOSSIER_INTERVENANT_FK
-ALTER TABLE "TBL_DOSSIER" ADD CONSTRAINT "TBL_DOSSIER_INTERVENANT_FK" FOREIGN KEY ("INTERVENANT_ID")
-	  REFERENCES "INTERVENANT" ("ID") ON DELETE CASCADE ENABLE;
+    ose_formule.d_resultat.service_du := CASE
+      WHEN ose_formule.d_intervenant.depassement_service_du_sans_hc = 1 OR ose_formule.d_intervenant.heures_decharge < 0
+      THEN GREATEST(resultat_total, ose_formule.d_intervenant.heures_service_statutaire + ose_formule.d_intervenant.heures_service_modifie)
+      ELSE ose_formule.d_intervenant.heures_service_statutaire + ose_formule.d_intervenant.heures_service_modifie
+    END;
+    ose_formule.d_resultat.solde                    := resultat_total - ose_formule.d_resultat.service_du;
+    IF ose_formule.d_resultat.solde >= 0 THEN
+      ose_formule.d_resultat.sous_service           := 0;
+      ose_formule.d_resultat.heures_compl           := ose_formule.d_resultat.solde;
+    ELSE
+      ose_formule.d_resultat.sous_service           := ose_formule.d_resultat.solde * -1;
+      ose_formule.d_resultat.heures_compl           := 0;
+    END IF;
 
--- TBL_DOSSIER_VALIDATION_FK
-ALTER TABLE "TBL_DOSSIER" ADD CONSTRAINT "TBL_DOSSIER_VALIDATION_FK" FOREIGN KEY ("VALIDATION_ID")
-	  REFERENCES "VALIDATION" ("ID") ON DELETE CASCADE ENABLE;
+     -- répartition des résultats par volumes horaires
+    current_id := ose_formule.d_volume_horaire.FIRST;
+    LOOP EXIT WHEN current_id IS NULL;
+      ose_formule.d_resultat.volume_horaire(current_id).service_fi               := gv( 61) + gv( 62);
+      ose_formule.d_resultat.volume_horaire(current_id).service_fa               := gv( 71) + gv( 72);
+      ose_formule.d_resultat.volume_horaire(current_id).service_fc               := gv( 83) + gv( 84);
+      ose_formule.d_resultat.volume_horaire(current_id).heures_compl_fi          := gv(131) + gv(132);
+      ose_formule.d_resultat.volume_horaire(current_id).heures_compl_fa          := gv(141) + gv(142);
+      ose_formule.d_resultat.volume_horaire(current_id).heures_compl_fc          := gv(153) + gv(154);
+      ose_formule.d_resultat.volume_horaire(current_id).heures_compl_fc_majorees := gv(163) + gv(164);
+      current_id := ose_formule.d_volume_horaire.NEXT(current_id);
+    END LOOP;
 
--- TBL_LIEN_LIEN_FK
-ALTER TABLE "TBL_LIEN" ADD CONSTRAINT "TBL_LIEN_LIEN_FK" FOREIGN KEY ("LIEN_ID")
-	  REFERENCES "LIEN" ("ID") ENABLE;
+    -- répartition des résultats par volumes horaires référentiel
+    current_id := ose_formule.d_volume_horaire_ref.FIRST;
+    LOOP EXIT WHEN current_id IS NULL;
+      ose_formule.d_resultat.volume_horaire_ref(current_id).service_referentiel      := gv(55) + gv(56) + gv(57);
+      ose_formule.d_resultat.volume_horaire_ref(current_id).heures_compl_referentiel := gv(115) + gv(116) + gv(117);
+      current_id := ose_formule.d_volume_horaire_ref.NEXT(current_id);
+    END LOOP;
 
--- TBL_LIEN_NOEUD_INF_FK
-ALTER TABLE "TBL_LIEN" ADD CONSTRAINT "TBL_LIEN_NOEUD_INF_FK" FOREIGN KEY ("NOEUD_INF_ID")
-	  REFERENCES "NOEUD" ("ID") ENABLE;
+  END;
 
--- TBL_LIEN_NOEUD_SUP_FK
-ALTER TABLE "TBL_LIEN" ADD CONSTRAINT "TBL_LIEN_NOEUD_SUP_FK" FOREIGN KEY ("NOEUD_SUP_ID")
-	  REFERENCES "NOEUD" ("ID") ENABLE;
 
--- TBL_LIEN_SCENARIO_FK
-ALTER TABLE "TBL_LIEN" ADD CONSTRAINT "TBL_LIEN_SCENARIO_FK" FOREIGN KEY ("SCENARIO_ID")
-	  REFERENCES "SCENARIO" ("ID") ENABLE;
 
--- TBL_LIEN_SCENARIO_LIEN_FK
-ALTER TABLE "TBL_LIEN" ADD CONSTRAINT "TBL_LIEN_SCENARIO_LIEN_FK" FOREIGN KEY ("SCENARIO_LIEN_ID")
-	  REFERENCES "SCENARIO_LIEN" ("ID") ENABLE;
 
--- TBL_LIEN_STRUCTURE_FK
-ALTER TABLE "TBL_LIEN" ADD CONSTRAINT "TBL_LIEN_STRUCTURE_FK" FOREIGN KEY ("STRUCTURE_ID")
-	  REFERENCES "STRUCTURE" ("ID") ENABLE;
 
--- TBL_PAIEMENT_ANNEE_FK
-ALTER TABLE "TBL_PAIEMENT" ADD CONSTRAINT "TBL_PAIEMENT_ANNEE_FK" FOREIGN KEY ("ANNEE_ID")
-	  REFERENCES "ANNEE" ("ID") ON DELETE CASCADE ENABLE;
 
--- TBL_PAIEMENT_FRSR_FK
-ALTER TABLE "TBL_PAIEMENT" ADD CONSTRAINT "TBL_PAIEMENT_FRSR_FK" FOREIGN KEY ("FORMULE_RES_SERVICE_REF_ID")
-	  REFERENCES "FORMULE_RESULTAT_SERVICE_REF" ("ID") ON DELETE CASCADE ENABLE;
 
--- TBL_PAIEMENT_FRS_FK
-ALTER TABLE "TBL_PAIEMENT" ADD CONSTRAINT "TBL_PAIEMENT_FRS_FK" FOREIGN KEY ("FORMULE_RES_SERVICE_ID")
-	  REFERENCES "FORMULE_RESULTAT_SERVICE" ("ID") ON DELETE CASCADE ENABLE;
 
--- TBL_PAIEMENT_INTERVENANT_FK
-ALTER TABLE "TBL_PAIEMENT" ADD CONSTRAINT "TBL_PAIEMENT_INTERVENANT_FK" FOREIGN KEY ("INTERVENANT_ID")
-	  REFERENCES "INTERVENANT" ("ID") ON DELETE CASCADE ENABLE;
 
--- TBL_PAIEMENT_MEP_FK
-ALTER TABLE "TBL_PAIEMENT" ADD CONSTRAINT "TBL_PAIEMENT_MEP_FK" FOREIGN KEY ("MISE_EN_PAIEMENT_ID")
-	  REFERENCES "MISE_EN_PAIEMENT" ("ID") ON DELETE CASCADE ENABLE;
 
--- TBL_PAIEMENT_PERIODE_FK
-ALTER TABLE "TBL_PAIEMENT" ADD CONSTRAINT "TBL_PAIEMENT_PERIODE_FK" FOREIGN KEY ("PERIODE_PAIEMENT_ID")
-	  REFERENCES "PERIODE" ("ID") ON DELETE CASCADE ENABLE;
 
--- TBL_PAIEMENT_STRUCTURE_FK
-ALTER TABLE "TBL_PAIEMENT" ADD CONSTRAINT "TBL_PAIEMENT_STRUCTURE_FK" FOREIGN KEY ("STRUCTURE_ID")
-	  REFERENCES "STRUCTURE" ("ID") ON DELETE CASCADE ENABLE;
 
--- TBL_PIECE_JOINTE_ANNEE_FK
-ALTER TABLE "TBL_PIECE_JOINTE" ADD CONSTRAINT "TBL_PIECE_JOINTE_ANNEE_FK" FOREIGN KEY ("ANNEE_ID")
-	  REFERENCES "ANNEE" ("ID") ON DELETE CASCADE ENABLE;
 
--- TBL_PJD_ANNEE_FK
-ALTER TABLE "TBL_PIECE_JOINTE_DEMANDE" ADD CONSTRAINT "TBL_PJD_ANNEE_FK" FOREIGN KEY ("ANNEE_ID")
-	  REFERENCES "ANNEE" ("ID") ON DELETE CASCADE ENABLE;
 
--- TBL_PJD_INTERVENANT_FK
-ALTER TABLE "TBL_PIECE_JOINTE_DEMANDE" ADD CONSTRAINT "TBL_PJD_INTERVENANT_FK" FOREIGN KEY ("INTERVENANT_ID")
-	  REFERENCES "INTERVENANT" ("ID") ON DELETE CASCADE ENABLE;
 
--- TBL_PJD_TYPE_PIECE_JOINTE_FK
-ALTER TABLE "TBL_PIECE_JOINTE_DEMANDE" ADD CONSTRAINT "TBL_PJD_TYPE_PIECE_JOINTE_FK" FOREIGN KEY ("TYPE_PIECE_JOINTE_ID")
-	  REFERENCES "TYPE_PIECE_JOINTE" ("ID") ON DELETE CASCADE ENABLE;
+  PROCEDURE PURGE_EM_NON_FC IS
+  BEGIN
+    FOR em IN (
+      SELECT
+        em.id
+      FROM
+        ELEMENT_MODULATEUR em
+        JOIN element_pedagogique ep ON ep.id = em.element_id AND ep.histo_destruction IS NULL
+      WHERE
+        em.histo_destruction IS NULL
+        AND ep.taux_fc < 1
+    ) LOOP
+      UPDATE
+        element_modulateur
+      SET
+        histo_destruction = SYSDATE,
+        histo_destructeur_id = ose_parametre.get_ose_user
+      WHERE
+        id = em.id
+      ;
+    END LOOP;
+  END;
 
--- TBL_PJF_ANNEE_FK
-ALTER TABLE "TBL_PIECE_JOINTE_FOURNIE" ADD CONSTRAINT "TBL_PJF_ANNEE_FK" FOREIGN KEY ("ANNEE_ID")
-	  REFERENCES "ANNEE" ("ID") ON DELETE CASCADE ENABLE;
+END UNICAEN_OSE_FORMULE;
+/
 
--- TBL_PJF_FICHIER_FK
-ALTER TABLE "TBL_PIECE_JOINTE_FOURNIE" ADD CONSTRAINT "TBL_PJF_FICHIER_FK" FOREIGN KEY ("FICHIER_ID")
-	  REFERENCES "FICHIER" ("ID") ON DELETE CASCADE ENABLE;
+-- UNICAEN_TBL
+CREATE OR REPLACE PACKAGE BODY "UNICAEN_TBL" AS
 
--- TBL_PJF_INTERVENANT_FK
-ALTER TABLE "TBL_PIECE_JOINTE_FOURNIE" ADD CONSTRAINT "TBL_PJF_INTERVENANT_FK" FOREIGN KEY ("INTERVENANT_ID")
-	  REFERENCES "INTERVENANT" ("ID") ON DELETE CASCADE ENABLE;
+  FUNCTION MAKE_PARAMS(
+    c1 VARCHAR2 DEFAULT NULL, v1 VARCHAR2 DEFAULT NULL,
+    c2 VARCHAR2 DEFAULT NULL, v2 VARCHAR2 DEFAULT NULL,
+    c3 VARCHAR2 DEFAULT NULL, v3 VARCHAR2 DEFAULT NULL,
+    c4 VARCHAR2 DEFAULT NULL, v4 VARCHAR2 DEFAULT NULL,
+    c5 VARCHAR2 DEFAULT NULL, v5 VARCHAR2 DEFAULT NULL,
+    sqlcond CLOB DEFAULT NULL
+  ) RETURN t_params IS
+    params t_params;
+  BEGIN
+    IF c1 IS NOT NULL THEN
+      params.c1 := c1;
+      params.v1 := v1;
+    END IF;
+    IF c2 IS NOT NULL THEN
+      params.c2 := c2;
+      params.v2 := v2;
+    END IF;
+    IF c3 IS NOT NULL THEN
+      params.c3 := c3;
+      params.v3 := v3;
+    END IF;
+    IF c4 IS NOT NULL THEN
+      params.c4 := c4;
+      params.v4 := v4;
+    END IF;
+    IF c5 IS NOT NULL THEN
+      params.c5 := c5;
+      params.v5 := v5;
+    END IF;
+    params.sqlcond := sqlcond;
 
--- TBL_PJF_PIECE_JOINTE_FK
-ALTER TABLE "TBL_PIECE_JOINTE_FOURNIE" ADD CONSTRAINT "TBL_PJF_PIECE_JOINTE_FK" FOREIGN KEY ("PIECE_JOINTE_ID")
-	  REFERENCES "PIECE_JOINTE" ("ID") ON DELETE CASCADE ENABLE;
+    RETURN params;
+  END;
 
--- TBL_PJF_TYPE_PIECE_JOINTE_FK
-ALTER TABLE "TBL_PIECE_JOINTE_FOURNIE" ADD CONSTRAINT "TBL_PJF_TYPE_PIECE_JOINTE_FK" FOREIGN KEY ("TYPE_PIECE_JOINTE_ID")
-	  REFERENCES "TYPE_PIECE_JOINTE" ("ID") ON DELETE CASCADE ENABLE;
 
--- TBL_PJF_VALIDATION_FK
-ALTER TABLE "TBL_PIECE_JOINTE_FOURNIE" ADD CONSTRAINT "TBL_PJF_VALIDATION_FK" FOREIGN KEY ("VALIDATION_ID")
-	  REFERENCES "VALIDATION" ("ID") ON DELETE CASCADE ENABLE;
 
--- TBL_PJ_INTERVENANT_FK
-ALTER TABLE "TBL_PIECE_JOINTE" ADD CONSTRAINT "TBL_PJ_INTERVENANT_FK" FOREIGN KEY ("INTERVENANT_ID")
-	  REFERENCES "INTERVENANT" ("ID") ON DELETE CASCADE ENABLE;
+  PROCEDURE DEMANDE_CALCUL( TBL_NAME VARCHAR2 ) IS
+    p t_params;
+  BEGIN
+    DEMANDE_CALCUL( tbl_name, p );
+  END;
 
--- TBL_PJ_TYPE_PIECE_JOINTE_FK
-ALTER TABLE "TBL_PIECE_JOINTE" ADD CONSTRAINT "TBL_PJ_TYPE_PIECE_JOINTE_FK" FOREIGN KEY ("TYPE_PIECE_JOINTE_ID")
-	  REFERENCES "TYPE_PIECE_JOINTE" ("ID") ON DELETE CASCADE ENABLE;
 
--- TBL_SERVICE_ANNEE_FK
-ALTER TABLE "TBL_SERVICE" ADD CONSTRAINT "TBL_SERVICE_ANNEE_FK" FOREIGN KEY ("ANNEE_ID")
-	  REFERENCES "ANNEE" ("ID") ON DELETE CASCADE ENABLE;
 
--- TBL_SERVICE_ELEMENT_FK
-ALTER TABLE "TBL_SERVICE" ADD CONSTRAINT "TBL_SERVICE_ELEMENT_FK" FOREIGN KEY ("ELEMENT_PEDAGOGIQUE_ID")
-	  REFERENCES "ELEMENT_PEDAGOGIQUE" ("ID") ON DELETE CASCADE ENABLE;
+  PROCEDURE DEMANDE_CALCUL( TBL_NAME VARCHAR2, CONDS CLOB ) IS
+    p t_params;
+  BEGIN
+    p.sqlcond := CONDS;
+    DEMANDE_CALCUL( tbl_name, p );
+  END;
 
--- TBL_SERVICE_ETAPE_FK
-ALTER TABLE "TBL_SERVICE" ADD CONSTRAINT "TBL_SERVICE_ETAPE_FK" FOREIGN KEY ("ETAPE_ID")
-	  REFERENCES "ETAPE" ("ID") ON DELETE CASCADE ENABLE;
 
--- TBL_SERVICE_INTERVENANT_FK
-ALTER TABLE "TBL_SERVICE" ADD CONSTRAINT "TBL_SERVICE_INTERVENANT_FK" FOREIGN KEY ("INTERVENANT_ID")
-	  REFERENCES "INTERVENANT" ("ID") ON DELETE CASCADE ENABLE;
 
--- TBL_SERVICE_PERIODE_EP_FK
-ALTER TABLE "TBL_SERVICE" ADD CONSTRAINT "TBL_SERVICE_PERIODE_EP_FK" FOREIGN KEY ("ELEMENT_PEDAGOGIQUE_PERIODE_ID")
-	  REFERENCES "PERIODE" ("ID") ON DELETE CASCADE ENABLE;
+  PROCEDURE DEMANDE_CALCUL( TBL_NAME VARCHAR2, PARAMS t_params ) IS
+  BEGIN
+    INSERT INTO tbl_dems (
+      ID,
+      TBL_NAME,
+      c1, v1,
+      c2, v2,
+      c3, v3,
+      c4, v4,
+      c5, v5,
+      sqlcond
+    ) VALUES (
+      TBL_DEMS_ID_SEQ.NEXTVAL,
+      TBL_NAME,
+      PARAMS.c1, PARAMS.v1,
+      PARAMS.c2, PARAMS.v2,
+      PARAMS.c3, PARAMS.v3,
+      PARAMS.c4, PARAMS.v4,
+      PARAMS.c5, PARAMS.v5,
+      PARAMS.sqlcond
+    );
+  END;
 
--- TBL_SERVICE_REF_ANNEE_FK
-ALTER TABLE "TBL_SERVICE_REFERENTIEL" ADD CONSTRAINT "TBL_SERVICE_REF_ANNEE_FK" FOREIGN KEY ("ANNEE_ID")
-	  REFERENCES "ANNEE" ("ID") ON DELETE CASCADE ENABLE;
 
--- TBL_SERVICE_REF_INTERVENANT_FK
-ALTER TABLE "TBL_SERVICE_REFERENTIEL" ADD CONSTRAINT "TBL_SERVICE_REF_INTERVENANT_FK" FOREIGN KEY ("INTERVENANT_ID")
-	  REFERENCES "INTERVENANT" ("ID") ON DELETE CASCADE ENABLE;
 
--- TBL_SERVICE_REF_STRUCTURE_FK
-ALTER TABLE "TBL_SERVICE_REFERENTIEL" ADD CONSTRAINT "TBL_SERVICE_REF_STRUCTURE_FK" FOREIGN KEY ("STRUCTURE_ID")
-	  REFERENCES "STRUCTURE" ("ID") ON DELETE CASCADE ENABLE;
+  FUNCTION PARAMS_FROM_DEMS( TBL_NAME VARCHAR2 ) RETURN t_params IS
+    res t_params;
+    conds CLOB := '';
+    cond CLOB;
+  BEGIN
+    FOR d IN (
+      SELECT *
+      FROM   tbl_dems
+      WHERE  tbl_name = PARAMS_FROM_DEMS.TBL_NAME
+    )
+    LOOP
 
--- TBL_SERVICE_REF_TVH_FK
-ALTER TABLE "TBL_SERVICE_REFERENTIEL" ADD CONSTRAINT "TBL_SERVICE_REF_TVH_FK" FOREIGN KEY ("TYPE_VOLUME_HORAIRE_ID")
-	  REFERENCES "TYPE_VOLUME_HORAIRE" ("ID") ON DELETE CASCADE ENABLE;
+      cond := '';
 
--- TBL_SERVICE_SAISIE_ANNEE_FK
-ALTER TABLE "TBL_SERVICE_SAISIE" ADD CONSTRAINT "TBL_SERVICE_SAISIE_ANNEE_FK" FOREIGN KEY ("ANNEE_ID")
-	  REFERENCES "ANNEE" ("ID") ON DELETE CASCADE ENABLE;
+      IF d.c1 IS NOT NULL THEN
+        IF cond IS NOT NULL THEN cond := cond || ' AND '; END IF;
+        IF d.v1 IS NULL THEN
+          cond := cond || d.c1 || ' IS NULL';
+        ELSE
+          cond := cond || d.c1 || '=' || d.v1;
+        END IF;
+      END IF;
 
--- TBL_SERVICE_SERVICE_FK
-ALTER TABLE "TBL_SERVICE" ADD CONSTRAINT "TBL_SERVICE_SERVICE_FK" FOREIGN KEY ("SERVICE_ID")
-	  REFERENCES "SERVICE" ("ID") ON DELETE CASCADE ENABLE;
+      IF d.c2 IS NOT NULL THEN
+        IF cond IS NOT NULL THEN cond := cond || ' AND '; END IF;
+        IF d.v2 IS NULL THEN
+          cond := cond || d.c2 || ' IS NULL';
+        ELSE
+          cond := cond || d.c2 || '=' || d.v2;
+        END IF;
+      END IF;
 
--- TBL_SERVICE_STRUCTURE_FK
-ALTER TABLE "TBL_SERVICE" ADD CONSTRAINT "TBL_SERVICE_STRUCTURE_FK" FOREIGN KEY ("STRUCTURE_ID")
-	  REFERENCES "STRUCTURE" ("ID") ON DELETE CASCADE ENABLE;
+      IF d.c3 IS NOT NULL THEN
+        IF cond IS NOT NULL THEN cond := cond || ' AND '; END IF;
+        IF d.v3 IS NULL THEN
+          cond := cond || d.c3 || ' IS NULL';
+        ELSE
+          cond := cond || d.c3 || '=' || d.v3;
+        END IF;
+      END IF;
 
--- TBL_SERVICE_STRUCTURE_FKV1
-ALTER TABLE "TBL_SERVICE" ADD CONSTRAINT "TBL_SERVICE_STRUCTURE_FKV1" FOREIGN KEY ("INTERVENANT_STRUCTURE_ID")
-	  REFERENCES "STRUCTURE" ("ID") ON DELETE CASCADE ENABLE;
+      IF d.c4 IS NOT NULL THEN
+        IF cond IS NOT NULL THEN cond := cond || ' AND '; END IF;
+        IF d.v4 IS NULL THEN
+          cond := cond || d.c4 || ' IS NULL';
+        ELSE
+          cond := cond || d.c4 || '=' || d.v4;
+        END IF;
+      END IF;
 
--- TBL_SERVICE_TINTERVENANT_FK
-ALTER TABLE "TBL_SERVICE" ADD CONSTRAINT "TBL_SERVICE_TINTERVENANT_FK" FOREIGN KEY ("TYPE_INTERVENANT_ID")
-	  REFERENCES "TYPE_INTERVENANT" ("ID") ON DELETE CASCADE ENABLE;
+      IF d.c5 IS NOT NULL THEN
+        IF cond IS NOT NULL THEN cond := cond || ' AND '; END IF;
+        IF d.v5 IS NULL THEN
+          cond := cond || d.c5 || ' IS NULL';
+        ELSE
+          cond := cond || d.c5 || '=' || d.v5;
+        END IF;
+      END IF;
 
--- TBL_SERVICE_TVH_FK
-ALTER TABLE "TBL_SERVICE" ADD CONSTRAINT "TBL_SERVICE_TVH_FK" FOREIGN KEY ("TYPE_VOLUME_HORAIRE_ID")
-	  REFERENCES "TYPE_VOLUME_HORAIRE" ("ID") ON DELETE CASCADE ENABLE;
+      IF d.sqlcond IS NOT NULL THEN
+        IF cond IS NOT NULL THEN cond := cond || ' AND '; END IF;
+        cond := cond || '(' || d.sqlcond || ')';
+      END IF;
 
--- TBL_SRV_SAISIE_INTERVENANT_FK
-ALTER TABLE "TBL_SERVICE_SAISIE" ADD CONSTRAINT "TBL_SRV_SAISIE_INTERVENANT_FK" FOREIGN KEY ("INTERVENANT_ID")
-	  REFERENCES "INTERVENANT" ("ID") ON DELETE CASCADE ENABLE;
+      IF conds IS NOT NULL THEN
+        conds := conds || ' OR ';
+      END IF;
+      conds := conds || '(' || cond || ')';
+    END LOOP;
 
--- TBL_WORKFLOW_ANNEE_FK
-ALTER TABLE "TBL_WORKFLOW" ADD CONSTRAINT "TBL_WORKFLOW_ANNEE_FK" FOREIGN KEY ("ANNEE_ID")
-	  REFERENCES "ANNEE" ("ID") ON DELETE CASCADE ENABLE;
+    res.sqlcond := conds;
+    DELETE FROM tbl_dems WHERE tbl_name = PARAMS_FROM_DEMS.TBL_NAME;
+    RETURN res;
+  END;
 
--- TBL_WORKFLOW_EFK
-ALTER TABLE "TBL_WORKFLOW" ADD CONSTRAINT "TBL_WORKFLOW_EFK" FOREIGN KEY ("ETAPE_ID")
-	  REFERENCES "WF_ETAPE" ("ID") ON DELETE CASCADE ENABLE;
 
--- TBL_WORKFLOW_IFK
-ALTER TABLE "TBL_WORKFLOW" ADD CONSTRAINT "TBL_WORKFLOW_IFK" FOREIGN KEY ("INTERVENANT_ID")
-	  REFERENCES "INTERVENANT" ("ID") ON DELETE CASCADE ENABLE;
 
--- TBL_WORKFLOW_SFK
-ALTER TABLE "TBL_WORKFLOW" ADD CONSTRAINT "TBL_WORKFLOW_SFK" FOREIGN KEY ("STRUCTURE_ID")
-	  REFERENCES "STRUCTURE" ("ID") ON DELETE CASCADE ENABLE;
+  FUNCTION PARAMS_TO_CONDS ( PARAMS UNICAEN_TBL.T_PARAMS ) RETURN CLOB IS
+    cond CLOB;
+  BEGIN
+    IF params.c1 IS NOT NULL THEN
+        IF params.v1 IS NULL THEN
+          cond := cond || params.c1 || ' IS NULL';
+        ELSE
+          cond := cond || params.c1 || '=' || params.v1;
+        END IF;
+      END IF;
 
--- TBL_WORKFLOW_STATUT_FK
-ALTER TABLE "TBL_WORKFLOW" ADD CONSTRAINT "TBL_WORKFLOW_STATUT_FK" FOREIGN KEY ("STATUT_INTERVENANT_ID")
-	  REFERENCES "STATUT_INTERVENANT" ("ID") ON DELETE CASCADE ENABLE;
+      IF params.c2 IS NOT NULL THEN
+        IF cond IS NOT NULL THEN cond := cond || ' AND '; END IF;
+        IF params.v2 IS NULL THEN
+          cond := cond || params.c2 || ' IS NULL';
+        ELSE
+          cond := cond || params.c2 || '=' || params.v2;
+        END IF;
+      END IF;
 
--- TBL_WORKFLOW_TINTERVENANT_FK
-ALTER TABLE "TBL_WORKFLOW" ADD CONSTRAINT "TBL_WORKFLOW_TINTERVENANT_FK" FOREIGN KEY ("TYPE_INTERVENANT_ID")
-	  REFERENCES "TYPE_INTERVENANT" ("ID") ON DELETE CASCADE ENABLE;
+      IF params.c3 IS NOT NULL THEN
+        IF cond IS NOT NULL THEN cond := cond || ' AND '; END IF;
+        IF params.v3 IS NULL THEN
+          cond := cond || params.c3 || ' IS NULL';
+        ELSE
+          cond := cond || params.c3 || '=' || params.v3;
+        END IF;
+      END IF;
 
--- TD_TYPE_RESSOURCE_FK
-ALTER TABLE "TYPE_DOTATION" ADD CONSTRAINT "TD_TYPE_RESSOURCE_FK" FOREIGN KEY ("TYPE_RESSOURCE_ID")
-	  REFERENCES "TYPE_RESSOURCE" ("ID") ENABLE;
+      IF params.c4 IS NOT NULL THEN
+        IF cond IS NOT NULL THEN cond := cond || ' AND '; END IF;
+        IF params.v4 IS NULL THEN
+          cond := cond || params.c4 || ' IS NULL';
+        ELSE
+          cond := cond || params.c4 || '=' || params.v4;
+        END IF;
+      END IF;
 
--- TIEP_ELEMENT_PEDAGOGIQUE_FK
-ALTER TABLE "TYPE_INTERVENTION_EP" ADD CONSTRAINT "TIEP_ELEMENT_PEDAGOGIQUE_FK" FOREIGN KEY ("ELEMENT_PEDAGOGIQUE_ID")
-	  REFERENCES "ELEMENT_PEDAGOGIQUE" ("ID") ON DELETE CASCADE ENABLE;
+      IF params.c5 IS NOT NULL THEN
+        IF cond IS NOT NULL THEN cond := cond || ' AND '; END IF;
+        IF params.v5 IS NULL THEN
+          cond := cond || params.c5 || ' IS NULL';
+        ELSE
+          cond := cond || params.c5 || '=' || params.v5;
+        END IF;
+      END IF;
 
--- TIEP_TYPE_INTERVENTION_FK
-ALTER TABLE "TYPE_INTERVENTION_EP" ADD CONSTRAINT "TIEP_TYPE_INTERVENTION_FK" FOREIGN KEY ("TYPE_INTERVENTION_ID")
-	  REFERENCES "TYPE_INTERVENTION" ("ID") ON DELETE CASCADE ENABLE;
+      IF params.sqlcond IS NOT NULL THEN
+        IF cond IS NOT NULL THEN cond := cond || ' AND '; END IF;
+        cond := cond || '(' || params.sqlcond || ')';
+      END IF;
 
--- TIS_ANNEE_DEBUT_FK
-ALTER TABLE "TYPE_INTERVENTION_STRUCTURE" ADD CONSTRAINT "TIS_ANNEE_DEBUT_FK" FOREIGN KEY ("ANNEE_DEBUT_ID")
-	  REFERENCES "ANNEE" ("ID") ENABLE;
+      IF cond IS NULL THEN cond := '1=1'; END IF;
 
--- TIS_ANNEE_FIN_FK
-ALTER TABLE "TYPE_INTERVENTION_STRUCTURE" ADD CONSTRAINT "TIS_ANNEE_FIN_FK" FOREIGN KEY ("ANNEE_FIN_ID")
-	  REFERENCES "ANNEE" ("ID") ENABLE;
+      RETURN cond;
+  END;
 
--- TIS_STRUCTURE_FK
-ALTER TABLE "TYPE_INTERVENTION_STRUCTURE" ADD CONSTRAINT "TIS_STRUCTURE_FK" FOREIGN KEY ("STRUCTURE_ID")
-	  REFERENCES "STRUCTURE" ("ID") ON DELETE CASCADE ENABLE;
 
--- TIS_TYPE_INTERVENTION_FK
-ALTER TABLE "TYPE_INTERVENTION_STRUCTURE" ADD CONSTRAINT "TIS_TYPE_INTERVENTION_FK" FOREIGN KEY ("TYPE_INTERVENTION_ID")
-	  REFERENCES "TYPE_INTERVENTION" ("ID") ON DELETE CASCADE ENABLE;
 
--- TI_TYPE_INTERVENTION_FK
-ALTER TABLE "TYPE_INTERVENTION" ADD CONSTRAINT "TI_TYPE_INTERVENTION_FK" FOREIGN KEY ("TYPE_INTERVENTION_MAQUETTE_ID")
-	  REFERENCES "TYPE_INTERVENTION" ("ID") ENABLE;
+  PROCEDURE CALCULER( TBL_NAME VARCHAR2 ) IS
+    p t_params;
+  BEGIN
+    ANNULER_DEMANDES( TBL_NAME );
+    CALCULER(TBL_NAME, p);
+  END;
 
--- TME_ELEMENT_PEDAGOGIQUE_FK
-ALTER TABLE "TYPE_MODULATEUR_EP" ADD CONSTRAINT "TME_ELEMENT_PEDAGOGIQUE_FK" FOREIGN KEY ("ELEMENT_PEDAGOGIQUE_ID")
-	  REFERENCES "ELEMENT_PEDAGOGIQUE" ("ID") ON DELETE CASCADE ENABLE;
 
--- TME_SOURCE_FK
-ALTER TABLE "TYPE_MODULATEUR_EP" ADD CONSTRAINT "TME_SOURCE_FK" FOREIGN KEY ("SOURCE_ID")
-	  REFERENCES "SOURCE" ("ID") ON DELETE CASCADE ENABLE;
 
--- TME_TYPE_MODULATEUR_FK
-ALTER TABLE "TYPE_MODULATEUR_EP" ADD CONSTRAINT "TME_TYPE_MODULATEUR_FK" FOREIGN KEY ("TYPE_MODULATEUR_ID")
-	  REFERENCES "TYPE_MODULATEUR" ("ID") ON DELETE CASCADE ENABLE;
+  PROCEDURE CALCULER( TBL_NAME VARCHAR2, CONDS CLOB ) IS
+    p t_params;
+  BEGIN
+    p.sqlcond := CONDS;
+    CALCULER(TBL_NAME, p);
+  END;
 
--- TMS_ANNEE_DEBUT_FK
-ALTER TABLE "TYPE_MODULATEUR_STRUCTURE" ADD CONSTRAINT "TMS_ANNEE_DEBUT_FK" FOREIGN KEY ("ANNEE_DEBUT_ID")
-	  REFERENCES "ANNEE" ("ID") ENABLE;
 
--- TMS_ANNEE_FIN_FK
-ALTER TABLE "TYPE_MODULATEUR_STRUCTURE" ADD CONSTRAINT "TMS_ANNEE_FIN_FK" FOREIGN KEY ("ANNEE_FIN_ID")
-	  REFERENCES "ANNEE" ("ID") ENABLE;
 
--- TMS_STRUCTURE_FK
-ALTER TABLE "TYPE_MODULATEUR_STRUCTURE" ADD CONSTRAINT "TMS_STRUCTURE_FK" FOREIGN KEY ("STRUCTURE_ID")
-	  REFERENCES "STRUCTURE" ("ID") ENABLE;
+  PROCEDURE CALCULER( TBL_NAME VARCHAR2, PARAMS t_params ) IS
+    calcul_proc varchar2(30);
+  BEGIN
+    IF NOT UNICAEN_TBL.ACTIV_CALCULS THEN RETURN; END IF;
 
--- TMS_TYPE_MODUL_FK
-ALTER TABLE "TYPE_MODULATEUR_STRUCTURE" ADD CONSTRAINT "TMS_TYPE_MODUL_FK" FOREIGN KEY ("TYPE_MODULATEUR_ID")
-	  REFERENCES "TYPE_MODULATEUR" ("ID") ON DELETE CASCADE ENABLE;
+    SELECT custom_calcul_proc INTO calcul_proc FROM tbl WHERE tbl_name = CALCULER.TBL_NAME;
 
--- TPJS_ANNEE_DEB_FK
-ALTER TABLE "TYPE_PIECE_JOINTE_STATUT" ADD CONSTRAINT "TPJS_ANNEE_DEB_FK" FOREIGN KEY ("ANNEE_DEBUT_ID")
-	  REFERENCES "ANNEE" ("ID") ON DELETE CASCADE ENABLE;
+    UNICAEN_TBL.CALCUL_PROC_PARAMS := PARAMS;
+    IF calcul_proc IS NOT NULL THEN
+      EXECUTE IMMEDIATE
+        'BEGIN ' || calcul_proc || '(UNICAEN_TBL.CALCUL_PROC_PARAMS); END;'
+      ;
+    ELSE
+      EXECUTE IMMEDIATE
+        'BEGIN UNICAEN_TBL.C_' || TBL_NAME || '(UNICAEN_TBL.CALCUL_PROC_PARAMS); END;'
+      ;
+    END IF;
 
--- TPJS_ANNEE_FIN_FK
-ALTER TABLE "TYPE_PIECE_JOINTE_STATUT" ADD CONSTRAINT "TPJS_ANNEE_FIN_FK" FOREIGN KEY ("ANNEE_FIN_ID")
-	  REFERENCES "ANNEE" ("ID") ON DELETE CASCADE ENABLE;
+  END;
 
--- TPJS_STATUT_INTERVENANT_FK
-ALTER TABLE "TYPE_PIECE_JOINTE_STATUT" ADD CONSTRAINT "TPJS_STATUT_INTERVENANT_FK" FOREIGN KEY ("STATUT_INTERVENANT_ID")
-	  REFERENCES "STATUT_INTERVENANT" ("ID") ON DELETE CASCADE ENABLE;
 
--- TPJS_TYPE_PIECE_JOINTE_FK
-ALTER TABLE "TYPE_PIECE_JOINTE_STATUT" ADD CONSTRAINT "TPJS_TYPE_PIECE_JOINTE_FK" FOREIGN KEY ("TYPE_PIECE_JOINTE_ID")
-	  REFERENCES "TYPE_PIECE_JOINTE" ("ID") ON DELETE CASCADE ENABLE;
 
--- TVE_ANNEE_FK
-ALTER TABLE "TBL_VALIDATION_ENSEIGNEMENT" ADD CONSTRAINT "TVE_ANNEE_FK" FOREIGN KEY ("ANNEE_ID")
-	  REFERENCES "ANNEE" ("ID") ON DELETE CASCADE ENABLE;
+  PROCEDURE ANNULER_DEMANDES IS
+  BEGIN
+    DELETE FROM tbl_dems;
+  END;
 
--- TVE_INTERVENANT_FK
-ALTER TABLE "TBL_VALIDATION_ENSEIGNEMENT" ADD CONSTRAINT "TVE_INTERVENANT_FK" FOREIGN KEY ("INTERVENANT_ID")
-	  REFERENCES "INTERVENANT" ("ID") ON DELETE CASCADE ENABLE;
 
--- TVE_SERVICE_FK
-ALTER TABLE "TBL_VALIDATION_ENSEIGNEMENT" ADD CONSTRAINT "TVE_SERVICE_FK" FOREIGN KEY ("SERVICE_ID")
-	  REFERENCES "SERVICE" ("ID") ON DELETE CASCADE ENABLE;
 
--- TVE_STRUCTURE_FK
-ALTER TABLE "TBL_VALIDATION_ENSEIGNEMENT" ADD CONSTRAINT "TVE_STRUCTURE_FK" FOREIGN KEY ("STRUCTURE_ID")
-	  REFERENCES "STRUCTURE" ("ID") ON DELETE CASCADE ENABLE;
+  PROCEDURE ANNULER_DEMANDES( TBL_NAME VARCHAR2 ) IS
+  BEGIN
+    DELETE FROM tbl_dems WHERE tbl_name = ANNULER_DEMANDES.tbl_name;
+  END;
 
--- TVE_TYPE_VOLUME_HORAIRE_FK
-ALTER TABLE "TBL_VALIDATION_ENSEIGNEMENT" ADD CONSTRAINT "TVE_TYPE_VOLUME_HORAIRE_FK" FOREIGN KEY ("TYPE_VOLUME_HORAIRE_ID")
-	  REFERENCES "TYPE_VOLUME_HORAIRE" ("ID") ON DELETE CASCADE ENABLE;
 
--- TVE_VALIDATION_FK
-ALTER TABLE "TBL_VALIDATION_ENSEIGNEMENT" ADD CONSTRAINT "TVE_VALIDATION_FK" FOREIGN KEY ("VALIDATION_ID")
-	  REFERENCES "VALIDATION" ("ID") ON DELETE CASCADE ENABLE;
 
--- TVE_VOLUME_HORAIRE_FK
-ALTER TABLE "TBL_VALIDATION_ENSEIGNEMENT" ADD CONSTRAINT "TVE_VOLUME_HORAIRE_FK" FOREIGN KEY ("VOLUME_HORAIRE_ID")
-	  REFERENCES "VOLUME_HORAIRE" ("ID") ON DELETE CASCADE ENABLE;
+  FUNCTION HAS_DEMANDES RETURN BOOLEAN IS
+    has_dems NUMERIC;
+  BEGIN
+    SELECT count(*) INTO has_dems from tbl_dems where rownum = 1;
 
--- TVR_ANNEE_FK
-ALTER TABLE "TBL_VALIDATION_REFERENTIEL" ADD CONSTRAINT "TVR_ANNEE_FK" FOREIGN KEY ("ANNEE_ID")
-	  REFERENCES "ANNEE" ("ID") ON DELETE CASCADE ENABLE;
+    RETURN has_dems = 1;
+  END;
 
--- TVR_INTERVENANT_FK
-ALTER TABLE "TBL_VALIDATION_REFERENTIEL" ADD CONSTRAINT "TVR_INTERVENANT_FK" FOREIGN KEY ("INTERVENANT_ID")
-	  REFERENCES "INTERVENANT" ("ID") ON DELETE CASCADE ENABLE;
 
--- TVR_SERVICE_REFERENTIEL_FK
-ALTER TABLE "TBL_VALIDATION_REFERENTIEL" ADD CONSTRAINT "TVR_SERVICE_REFERENTIEL_FK" FOREIGN KEY ("SERVICE_REFERENTIEL_ID")
-	  REFERENCES "SERVICE_REFERENTIEL" ("ID") ON DELETE CASCADE ENABLE;
 
--- TVR_STRUCTURE_FK
-ALTER TABLE "TBL_VALIDATION_REFERENTIEL" ADD CONSTRAINT "TVR_STRUCTURE_FK" FOREIGN KEY ("STRUCTURE_ID")
-	  REFERENCES "STRUCTURE" ("ID") ON DELETE CASCADE ENABLE;
+  PROCEDURE CALCULER_DEMANDES IS
+    dems t_params;
+  BEGIN
+    FOR d IN (
+      SELECT DISTINCT tbl_name FROM tbl_dems
+    ) LOOP
+      dems := PARAMS_FROM_DEMS( d.tbl_name );
+      calculer( d.tbl_name, dems );
+    END LOOP;
 
--- TVR_TYPE_VOLUME_HORAIRE_FK
-ALTER TABLE "TBL_VALIDATION_REFERENTIEL" ADD CONSTRAINT "TVR_TYPE_VOLUME_HORAIRE_FK" FOREIGN KEY ("TYPE_VOLUME_HORAIRE_ID")
-	  REFERENCES "TYPE_VOLUME_HORAIRE" ("ID") ON DELETE CASCADE ENABLE;
+    IF HAS_DEMANDES THEN -- pour les boucles !!
+      CALCULER_DEMANDES;
+    END IF;
+  END;
 
--- TVR_VALIDATION_FK
-ALTER TABLE "TBL_VALIDATION_REFERENTIEL" ADD CONSTRAINT "TVR_VALIDATION_FK" FOREIGN KEY ("VALIDATION_ID")
-	  REFERENCES "VALIDATION" ("ID") ON DELETE CASCADE ENABLE;
 
--- TVR_VOLUME_HORAIRE_REF_FK
-ALTER TABLE "TBL_VALIDATION_REFERENTIEL" ADD CONSTRAINT "TVR_VOLUME_HORAIRE_REF_FK" FOREIGN KEY ("VOLUME_HORAIRE_REF_ID")
-	  REFERENCES "VOLUME_HORAIRE_REF" ("ID") ON DELETE CASCADE ENABLE;
 
--- TYPE_AGREMENT_HCFK
-ALTER TABLE "TYPE_AGREMENT" ADD CONSTRAINT "TYPE_AGREMENT_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+  -- AUTOMATIC GENERATION --
 
--- TYPE_AGREMENT_HDFK
-ALTER TABLE "TYPE_AGREMENT" ADD CONSTRAINT "TYPE_AGREMENT_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+  PROCEDURE C_AGREMENT( PARAMS UNICAEN_TBL.T_PARAMS ) IS
+    conds CLOB;
+  BEGIN
+    conds := params_to_conds( params );
 
--- TYPE_AGREMENT_HMFK
-ALTER TABLE "TYPE_AGREMENT" ADD CONSTRAINT "TYPE_AGREMENT_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+    EXECUTE IMMEDIATE 'BEGIN
 
--- TYPE_AGREMENT_STATUT_HCFK
-ALTER TABLE "TYPE_AGREMENT_STATUT" ADD CONSTRAINT "TYPE_AGREMENT_STATUT_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+    UPDATE TBL_AGREMENT SET to_delete = 1 WHERE ' || conds || ';
 
--- TYPE_AGREMENT_STATUT_HDFK
-ALTER TABLE "TYPE_AGREMENT_STATUT" ADD CONSTRAINT "TYPE_AGREMENT_STATUT_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+    MERGE INTO
+      TBL_AGREMENT t
+    USING (
 
--- TYPE_AGREMENT_STATUT_HMFK
-ALTER TABLE "TYPE_AGREMENT_STATUT" ADD CONSTRAINT "TYPE_AGREMENT_STATUT_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+      SELECT
+        tv.*
+      FROM
+        (WITH i_s AS (
+          SELECT DISTINCT
+            fr.intervenant_id,
+            ep.structure_id
+          FROM
+            formule_resultat fr
+            JOIN type_volume_horaire  tvh ON tvh.code = ''PREVU'' AND tvh.id = fr.type_volume_horaire_id
+            JOIN etat_volume_horaire  evh ON evh.code = ''valide'' AND evh.id = fr.etat_volume_horaire_id
 
--- TYPE_CONTRAT_HCFK
-ALTER TABLE "TYPE_CONTRAT" ADD CONSTRAINT "TYPE_CONTRAT_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+            JOIN formule_resultat_service frs ON frs.formule_resultat_id = fr.id
+            JOIN service s ON s.id = frs.service_id
+            JOIN element_pedagogique ep ON ep.id = s.element_pedagogique_id
+          WHERE
+            frs.total > 0
+        )
+        SELECT
+          i.annee_id              annee_id,
+          tas.type_agrement_id    type_agrement_id,
+          i.id                    intervenant_id,
+          null                    structure_id,
+          tas.obligatoire         obligatoire,
+          a.id                    agrement_id
+        FROM
+          type_agrement                  ta
+          JOIN type_agrement_statut      tas ON tas.type_agrement_id = ta.id
+                                            AND tas.histo_destruction IS NULL
 
--- TYPE_CONTRAT_HDFK
-ALTER TABLE "TYPE_CONTRAT" ADD CONSTRAINT "TYPE_CONTRAT_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+          JOIN intervenant                 i ON i.histo_destruction IS NULL
+                                            AND (tas.premier_recrutement IS NULL OR NVL(i.premier_recrutement,0) = tas.premier_recrutement)
+                                            AND i.statut_id = tas.statut_intervenant_id
 
--- TYPE_CONTRAT_HMFK
-ALTER TABLE "TYPE_CONTRAT" ADD CONSTRAINT "TYPE_CONTRAT_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+          LEFT JOIN agrement               a ON a.type_agrement_id = ta.id
+                                            AND a.intervenant_id = i.id
+                                            AND a.histo_destruction IS NULL
+        WHERE
+          ta.code = ''CONSEIL_ACADEMIQUE''
 
--- TYPE_DOTATION_HCFK
-ALTER TABLE "TYPE_DOTATION" ADD CONSTRAINT "TYPE_DOTATION_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+        UNION ALL
 
--- TYPE_DOTATION_HDFK
-ALTER TABLE "TYPE_DOTATION" ADD CONSTRAINT "TYPE_DOTATION_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+        SELECT
+          i.annee_id              annee_id,
+          tas.type_agrement_id    type_agrement_id,
+          i.id                    intervenant_id,
+          i_s.structure_id        structure_id,
+          tas.obligatoire         obligatoire,
+          a.id                    agrement_id
+        FROM
+          type_agrement                   ta
+          JOIN type_agrement_statut      tas ON tas.type_agrement_id = ta.id
+                                            AND tas.histo_destruction IS NULL
 
--- TYPE_DOTATION_HMFK
-ALTER TABLE "TYPE_DOTATION" ADD CONSTRAINT "TYPE_DOTATION_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+          JOIN intervenant                 i ON i.histo_destruction IS NULL
+                                            AND (tas.premier_recrutement IS NULL OR NVL(i.premier_recrutement,0) = tas.premier_recrutement)
+                                            AND i.statut_id = tas.statut_intervenant_id
 
--- TYPE_DOTATION_SOURCE_FK
-ALTER TABLE "TYPE_DOTATION" ADD CONSTRAINT "TYPE_DOTATION_SOURCE_FK" FOREIGN KEY ("SOURCE_ID")
-	  REFERENCES "SOURCE" ("ID") ON DELETE CASCADE ENABLE;
+          JOIN                           i_s ON i_s.intervenant_id = i.id
 
--- TYPE_FORMATION_GROUPE_FK
-ALTER TABLE "TYPE_FORMATION" ADD CONSTRAINT "TYPE_FORMATION_GROUPE_FK" FOREIGN KEY ("GROUPE_ID")
-	  REFERENCES "GROUPE_TYPE_FORMATION" ("ID") ENABLE;
+          LEFT JOIN agrement               a ON a.type_agrement_id = ta.id
+                                            AND a.intervenant_id = i.id
+                                            AND a.structure_id = i_s.structure_id
+                                            AND a.histo_destruction IS NULL
+        WHERE
+          ta.code = ''CONSEIL_RESTREINT'') tv
+      WHERE
+        ' || conds || '
 
--- TYPE_FORMATION_HCFK
-ALTER TABLE "TYPE_FORMATION" ADD CONSTRAINT "TYPE_FORMATION_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+    ) v ON (
+            t.TYPE_AGREMENT_ID = v.TYPE_AGREMENT_ID
+        AND t.INTERVENANT_ID   = v.INTERVENANT_ID
+        AND COALESCE(t.STRUCTURE_ID,0) = COALESCE(v.STRUCTURE_ID,0)
 
--- TYPE_FORMATION_HDFK
-ALTER TABLE "TYPE_FORMATION" ADD CONSTRAINT "TYPE_FORMATION_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+    ) WHEN MATCHED THEN UPDATE SET
 
--- TYPE_FORMATION_HMFK
-ALTER TABLE "TYPE_FORMATION" ADD CONSTRAINT "TYPE_FORMATION_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+      ANNEE_ID         = v.ANNEE_ID,
+      OBLIGATOIRE      = v.OBLIGATOIRE,
+      AGREMENT_ID      = v.AGREMENT_ID,
+      to_delete = 0
 
--- TYPE_FORMATION_SOURCE_FK
-ALTER TABLE "TYPE_FORMATION" ADD CONSTRAINT "TYPE_FORMATION_SOURCE_FK" FOREIGN KEY ("SOURCE_ID")
-	  REFERENCES "SOURCE" ("ID") ENABLE;
+    WHEN NOT MATCHED THEN INSERT (
 
--- TYPE_HEURES_HCFK
-ALTER TABLE "TYPE_HEURES" ADD CONSTRAINT "TYPE_HEURES_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+      ID,
+      ANNEE_ID,
+      TYPE_AGREMENT_ID,
+      INTERVENANT_ID,
+      STRUCTURE_ID,
+      OBLIGATOIRE,
+      AGREMENT_ID,
+      TO_DELETE
 
--- TYPE_HEURES_HDFK
-ALTER TABLE "TYPE_HEURES" ADD CONSTRAINT "TYPE_HEURES_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+    ) VALUES (
 
--- TYPE_HEURES_HMFK
-ALTER TABLE "TYPE_HEURES" ADD CONSTRAINT "TYPE_HEURES_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+      TBL_AGREMENT_ID_SEQ.NEXTVAL,
+      v.ANNEE_ID,
+      v.TYPE_AGREMENT_ID,
+      v.INTERVENANT_ID,
+      v.STRUCTURE_ID,
+      v.OBLIGATOIRE,
+      v.AGREMENT_ID,
+      0
 
--- TYPE_HEURES_TYPE_HEURES_FK
-ALTER TABLE "TYPE_HEURES" ADD CONSTRAINT "TYPE_HEURES_TYPE_HEURES_FK" FOREIGN KEY ("TYPE_HEURES_ELEMENT_ID")
-	  REFERENCES "TYPE_HEURES" ("ID") ON DELETE CASCADE ENABLE;
+    );
 
--- TYPE_INTERVENANT_HCFK
-ALTER TABLE "TYPE_INTERVENANT" ADD CONSTRAINT "TYPE_INTERVENANT_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+    DELETE TBL_AGREMENT WHERE to_delete = 1 AND ' || conds || ';
 
--- TYPE_INTERVENANT_HDFK
-ALTER TABLE "TYPE_INTERVENANT" ADD CONSTRAINT "TYPE_INTERVENANT_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+    END;';
 
--- TYPE_INTERVENANT_HMFK
-ALTER TABLE "TYPE_INTERVENANT" ADD CONSTRAINT "TYPE_INTERVENANT_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+  END;
 
--- TYPE_INTERVENTION_ANNEE_FK
-ALTER TABLE "TYPE_INTERVENTION" ADD CONSTRAINT "TYPE_INTERVENTION_ANNEE_FK" FOREIGN KEY ("ANNEE_DEBUT_ID")
-	  REFERENCES "ANNEE" ("ID") ENABLE;
 
--- TYPE_INTERVENTION_ANNEE_FKV1
-ALTER TABLE "TYPE_INTERVENTION" ADD CONSTRAINT "TYPE_INTERVENTION_ANNEE_FKV1" FOREIGN KEY ("ANNEE_FIN_ID")
-	  REFERENCES "ANNEE" ("ID") ENABLE;
 
--- TYPE_INTERVENTION_EP_HCFK
-ALTER TABLE "TYPE_INTERVENTION_EP" ADD CONSTRAINT "TYPE_INTERVENTION_EP_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+  PROCEDURE C_CHARGENS( PARAMS UNICAEN_TBL.T_PARAMS ) IS
+    conds CLOB;
+  BEGIN
+    conds := params_to_conds( params );
 
--- TYPE_INTERVENTION_EP_HDFK
-ALTER TABLE "TYPE_INTERVENTION_EP" ADD CONSTRAINT "TYPE_INTERVENTION_EP_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+    EXECUTE IMMEDIATE 'BEGIN
 
--- TYPE_INTERVENTION_EP_HMFK
-ALTER TABLE "TYPE_INTERVENTION_EP" ADD CONSTRAINT "TYPE_INTERVENTION_EP_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+    UPDATE TBL_CHARGENS SET to_delete = 1 WHERE ' || conds || ';
 
--- TYPE_INTERVENTION_EP_SOURCE_FK
-ALTER TABLE "TYPE_INTERVENTION_EP" ADD CONSTRAINT "TYPE_INTERVENTION_EP_SOURCE_FK" FOREIGN KEY ("SOURCE_ID")
-	  REFERENCES "SOURCE" ("ID") ON DELETE CASCADE ENABLE;
+    MERGE INTO
+      TBL_CHARGENS t
+    USING (
 
--- TYPE_INTERVENTION_HCFK
-ALTER TABLE "TYPE_INTERVENTION" ADD CONSTRAINT "TYPE_INTERVENTION_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+      SELECT
+        tv.*
+      FROM
+        (WITH t AS (
+        SELECT
+          n.annee_id                        annee_id,
+          n.noeud_id                        noeud_id,
+          sn.scenario_id                    scenario_id,
+          sne.type_heures_id                type_heures_id,
+          ti.id                             type_intervention_id,
 
--- TYPE_INTERVENTION_HDFK
-ALTER TABLE "TYPE_INTERVENTION" ADD CONSTRAINT "TYPE_INTERVENTION_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+          n.element_pedagogique_id          element_pedagogique_id,
+          n.element_pedagogique_etape_id    etape_id,
+          sne.etape_id                      etape_ens_id,
+          n.structure_id                    structure_id,
+          n.groupe_type_formation_id        groupe_type_formation_id,
 
--- TYPE_INTERVENTION_HMFK
-ALTER TABLE "TYPE_INTERVENTION" ADD CONSTRAINT "TYPE_INTERVENTION_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+          vhe.heures                        heures,
+          vhe.heures * ti.taux_hetd_service hetd,
 
--- TYPE_INTERVENTION_STRUCTU_HCFK
-ALTER TABLE "TYPE_INTERVENTION_STRUCTURE" ADD CONSTRAINT "TYPE_INTERVENTION_STRUCTU_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+          GREATEST(COALESCE(sns.ouverture, 1),1)                                           ouverture,
+          GREATEST(COALESCE(sns.dedoublement, snsetp.dedoublement, csdd.dedoublement,1),1) dedoublement,
+          COALESCE(sns.assiduite,1)                                                        assiduite,
+          sne.effectif*COALESCE(sns.assiduite,1)                                           effectif,
 
--- TYPE_INTERVENTION_STRUCTU_HDFK
-ALTER TABLE "TYPE_INTERVENTION_STRUCTURE" ADD CONSTRAINT "TYPE_INTERVENTION_STRUCTU_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+          SUM(sne.effectif*COALESCE(sns.assiduite,1)) OVER (PARTITION BY n.noeud_id, sn.scenario_id, ti.id) t_effectif
 
--- TYPE_INTERVENTION_STRUCTU_HMFK
-ALTER TABLE "TYPE_INTERVENTION_STRUCTURE" ADD CONSTRAINT "TYPE_INTERVENTION_STRUCTU_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+        FROM
+                    scenario_noeud_effectif    sne
+               JOIN etape                        e ON e.id = sne.etape_id
+                                                  AND e.histo_destruction IS NULL
 
--- TYPE_MODULATEUR_EP_HCFK
-ALTER TABLE "TYPE_MODULATEUR_EP" ADD CONSTRAINT "TYPE_MODULATEUR_EP_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+               JOIN scenario_noeud              sn ON sn.id = sne.scenario_noeud_id
+                                                  AND sn.histo_destruction IS NULL
 
--- TYPE_MODULATEUR_EP_HDFK
-ALTER TABLE "TYPE_MODULATEUR_EP" ADD CONSTRAINT "TYPE_MODULATEUR_EP_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+               JOIN tbl_noeud                       n ON n.noeud_id = sn.noeud_id
 
--- TYPE_MODULATEUR_EP_HMFK
-ALTER TABLE "TYPE_MODULATEUR_EP" ADD CONSTRAINT "TYPE_MODULATEUR_EP_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+               JOIN volume_horaire_ens         vhe ON vhe.element_pedagogique_id = n.element_pedagogique_id
+                                                  AND vhe.histo_destruction IS NULL
+                                                  AND vhe.heures > 0
 
--- TYPE_MODULATEUR_HCFK
-ALTER TABLE "TYPE_MODULATEUR" ADD CONSTRAINT "TYPE_MODULATEUR_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+               JOIN type_intervention           ti ON ti.id = vhe.type_intervention_id
 
--- TYPE_MODULATEUR_HDFK
-ALTER TABLE "TYPE_MODULATEUR" ADD CONSTRAINT "TYPE_MODULATEUR_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+          LEFT JOIN tbl_noeud                 netp ON netp.etape_id = e.id
 
--- TYPE_MODULATEUR_HMFK
-ALTER TABLE "TYPE_MODULATEUR" ADD CONSTRAINT "TYPE_MODULATEUR_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+          LEFT JOIN scenario_noeud           snetp ON snetp.scenario_id = sn.scenario_id
+                                                  AND snetp.noeud_id = netp.noeud_id
+                                                  AND snetp.histo_destruction IS NULL
 
--- TYPE_MODULATEUR_STRUCTURE_HCFK
-ALTER TABLE "TYPE_MODULATEUR_STRUCTURE" ADD CONSTRAINT "TYPE_MODULATEUR_STRUCTURE_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+          LEFT JOIN scenario_noeud_seuil    snsetp ON snsetp.scenario_noeud_id = snetp.id
+                                                  AND snsetp.type_intervention_id = ti.id
 
--- TYPE_MODULATEUR_STRUCTURE_HDFK
-ALTER TABLE "TYPE_MODULATEUR_STRUCTURE" ADD CONSTRAINT "TYPE_MODULATEUR_STRUCTURE_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+          LEFT JOIN tbl_chargens_seuils_def   csdd ON csdd.annee_id = n.annee_id
+                                                  AND csdd.scenario_id = sn.scenario_id
+                                                  AND csdd.type_intervention_id = ti.id
+                                                  AND csdd.groupe_type_formation_id = n.groupe_type_formation_id
+                                                  AND csdd.structure_id = n.structure_id
 
--- TYPE_MODULATEUR_STRUCTURE_HMFK
-ALTER TABLE "TYPE_MODULATEUR_STRUCTURE" ADD CONSTRAINT "TYPE_MODULATEUR_STRUCTURE_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+          LEFT JOIN scenario_noeud_seuil       sns ON sns.scenario_noeud_id = sn.id
+                                                  AND sns.type_intervention_id = ti.id
+        )
+        SELECT
+          annee_id,
+          noeud_id,
+          scenario_id,
+          type_heures_id,
+          type_intervention_id,
 
--- TYPE_PIECE_JOINTE_HCFK
-ALTER TABLE "TYPE_PIECE_JOINTE" ADD CONSTRAINT "TYPE_PIECE_JOINTE_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+          element_pedagogique_id,
+          etape_id,
+          etape_ens_id,
+          structure_id,
+          groupe_type_formation_id,
 
--- TYPE_PIECE_JOINTE_HDFK
-ALTER TABLE "TYPE_PIECE_JOINTE" ADD CONSTRAINT "TYPE_PIECE_JOINTE_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+          ouverture,
+          dedoublement,
+          assiduite,
+          effectif,
+          heures heures_ens,
+          --t_effectif,
 
--- TYPE_PIECE_JOINTE_HMFK
-ALTER TABLE "TYPE_PIECE_JOINTE" ADD CONSTRAINT "TYPE_PIECE_JOINTE_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+          CASE WHEN t_effectif < ouverture THEN 0 ELSE
+            CEIL( t_effectif / dedoublement ) * effectif / t_effectif
+          END groupes,
 
--- TYPE_PIECE_JOINTE_STATUT_HCFK
-ALTER TABLE "TYPE_PIECE_JOINTE_STATUT" ADD CONSTRAINT "TYPE_PIECE_JOINTE_STATUT_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+          CASE WHEN t_effectif < ouverture THEN 0 ELSE
+            CEIL( t_effectif / dedoublement ) * heures * effectif / t_effectif
+          END heures,
 
--- TYPE_PIECE_JOINTE_STATUT_HDFK
-ALTER TABLE "TYPE_PIECE_JOINTE_STATUT" ADD CONSTRAINT "TYPE_PIECE_JOINTE_STATUT_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+          CASE WHEN t_effectif < ouverture THEN 0 ELSE
+            CEIL( t_effectif / dedoublement ) * hetd * effectif / t_effectif
+          END  hetd
 
--- TYPE_PIECE_JOINTE_STATUT_HMFK
-ALTER TABLE "TYPE_PIECE_JOINTE_STATUT" ADD CONSTRAINT "TYPE_PIECE_JOINTE_STATUT_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+        FROM
+          t) tv
+      WHERE
+        ' || conds || '
 
--- TYPE_RESSOURCE_HCFK
-ALTER TABLE "TYPE_RESSOURCE" ADD CONSTRAINT "TYPE_RESSOURCE_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+    ) v ON (
+            t.ANNEE_ID                 = v.ANNEE_ID
+        AND t.NOEUD_ID                 = v.NOEUD_ID
+        AND t.SCENARIO_ID              = v.SCENARIO_ID
+        AND t.TYPE_HEURES_ID           = v.TYPE_HEURES_ID
+        AND t.TYPE_INTERVENTION_ID     = v.TYPE_INTERVENTION_ID
+        AND t.ELEMENT_PEDAGOGIQUE_ID   = v.ELEMENT_PEDAGOGIQUE_ID
+        AND t.ETAPE_ID                 = v.ETAPE_ID
+        AND t.ETAPE_ENS_ID             = v.ETAPE_ENS_ID
+        AND t.STRUCTURE_ID             = v.STRUCTURE_ID
+        AND t.GROUPE_TYPE_FORMATION_ID = v.GROUPE_TYPE_FORMATION_ID
 
--- TYPE_RESSOURCE_HDFK
-ALTER TABLE "TYPE_RESSOURCE" ADD CONSTRAINT "TYPE_RESSOURCE_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+    ) WHEN MATCHED THEN UPDATE SET
 
--- TYPE_RESSOURCE_HMFK
-ALTER TABLE "TYPE_RESSOURCE" ADD CONSTRAINT "TYPE_RESSOURCE_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+      OUVERTURE                = v.OUVERTURE,
+      DEDOUBLEMENT             = v.DEDOUBLEMENT,
+      ASSIDUITE                = v.ASSIDUITE,
+      EFFECTIF                 = v.EFFECTIF,
+      HEURES_ENS               = v.HEURES_ENS,
+      GROUPES                  = v.GROUPES,
+      HEURES                   = v.HEURES,
+      HETD                     = v.HETD,
+      to_delete = 0
 
--- VALIDATION_HCFK
-ALTER TABLE "VALIDATION" ADD CONSTRAINT "VALIDATION_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+    WHEN NOT MATCHED THEN INSERT (
 
--- VALIDATION_HDFK
-ALTER TABLE "VALIDATION" ADD CONSTRAINT "VALIDATION_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+      ID,
+      ANNEE_ID,
+      NOEUD_ID,
+      SCENARIO_ID,
+      TYPE_HEURES_ID,
+      TYPE_INTERVENTION_ID,
+      ELEMENT_PEDAGOGIQUE_ID,
+      ETAPE_ID,
+      ETAPE_ENS_ID,
+      STRUCTURE_ID,
+      GROUPE_TYPE_FORMATION_ID,
+      OUVERTURE,
+      DEDOUBLEMENT,
+      ASSIDUITE,
+      EFFECTIF,
+      HEURES_ENS,
+      GROUPES,
+      HEURES,
+      HETD,
+      TO_DELETE
 
--- VALIDATION_HMFK
-ALTER TABLE "VALIDATION" ADD CONSTRAINT "VALIDATION_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+    ) VALUES (
 
--- VALIDATION_INTERVENANT_FK
-ALTER TABLE "VALIDATION" ADD CONSTRAINT "VALIDATION_INTERVENANT_FK" FOREIGN KEY ("INTERVENANT_ID")
-	  REFERENCES "INTERVENANT" ("ID") ON DELETE CASCADE ENABLE;
+      TBL_CHARGENS_ID_SEQ.NEXTVAL,
+      v.ANNEE_ID,
+      v.NOEUD_ID,
+      v.SCENARIO_ID,
+      v.TYPE_HEURES_ID,
+      v.TYPE_INTERVENTION_ID,
+      v.ELEMENT_PEDAGOGIQUE_ID,
+      v.ETAPE_ID,
+      v.ETAPE_ENS_ID,
+      v.STRUCTURE_ID,
+      v.GROUPE_TYPE_FORMATION_ID,
+      v.OUVERTURE,
+      v.DEDOUBLEMENT,
+      v.ASSIDUITE,
+      v.EFFECTIF,
+      v.HEURES_ENS,
+      v.GROUPES,
+      v.HEURES,
+      v.HETD,
+      0
 
--- VALIDATION_STRUCTURE_FK
-ALTER TABLE "VALIDATION" ADD CONSTRAINT "VALIDATION_STRUCTURE_FK" FOREIGN KEY ("STRUCTURE_ID")
-	  REFERENCES "STRUCTURE" ("ID") ON DELETE CASCADE ENABLE;
+    );
 
--- VALIDATION_TYPE_VALIDATION_FK
-ALTER TABLE "VALIDATION" ADD CONSTRAINT "VALIDATION_TYPE_VALIDATION_FK" FOREIGN KEY ("TYPE_VALIDATION_ID")
-	  REFERENCES "TYPE_VALIDATION" ("ID") ON DELETE CASCADE ENABLE;
+    DELETE TBL_CHARGENS WHERE to_delete = 1 AND ' || conds || ';
 
--- VHC_ELEMENT_PEDAGOGIQUE_FK
-ALTER TABLE "VOLUME_HORAIRE_CHARGE" ADD CONSTRAINT "VHC_ELEMENT_PEDAGOGIQUE_FK" FOREIGN KEY ("ELEMENT_PEDAGOGIQUE_ID")
-	  REFERENCES "ELEMENT_PEDAGOGIQUE" ("ID") ENABLE;
+    END;';
 
--- VHC_SCENARIO_FK
-ALTER TABLE "VOLUME_HORAIRE_CHARGE" ADD CONSTRAINT "VHC_SCENARIO_FK" FOREIGN KEY ("SCENARIO_ID")
-	  REFERENCES "SCENARIO" ("ID") ON DELETE CASCADE ENABLE;
+  END;
 
--- VHC_SOURCE_FK
-ALTER TABLE "VOLUME_HORAIRE_CHARGE" ADD CONSTRAINT "VHC_SOURCE_FK" FOREIGN KEY ("SOURCE_ID")
-	  REFERENCES "SOURCE" ("ID") ENABLE;
 
--- VHC_TYPE_INTERVENTION_FK
-ALTER TABLE "VOLUME_HORAIRE_CHARGE" ADD CONSTRAINT "VHC_TYPE_INTERVENTION_FK" FOREIGN KEY ("TYPE_INTERVENTION_ID")
-	  REFERENCES "TYPE_INTERVENTION" ("ID") ENABLE;
 
--- VHENS_ELEMENT_PEDAGOGIQUE_FK
-ALTER TABLE "VOLUME_HORAIRE_ENS" ADD CONSTRAINT "VHENS_ELEMENT_PEDAGOGIQUE_FK" FOREIGN KEY ("ELEMENT_PEDAGOGIQUE_ID")
-	  REFERENCES "ELEMENT_PEDAGOGIQUE" ("ID") ENABLE;
+  PROCEDURE C_CHARGENS_SEUILS_DEF( PARAMS UNICAEN_TBL.T_PARAMS ) IS
+    conds CLOB;
+  BEGIN
+    conds := params_to_conds( params );
+
+    EXECUTE IMMEDIATE 'BEGIN
 
--- VHENS_TYPE_INTERVENTION_FK
-ALTER TABLE "VOLUME_HORAIRE_ENS" ADD CONSTRAINT "VHENS_TYPE_INTERVENTION_FK" FOREIGN KEY ("TYPE_INTERVENTION_ID")
-	  REFERENCES "TYPE_INTERVENTION" ("ID") ON DELETE CASCADE ENABLE;
+    UPDATE TBL_CHARGENS_SEUILS_DEF SET to_delete = 1 WHERE ' || conds || ';
 
--- VHIT_FK
-ALTER TABLE "VOLUME_HORAIRE" ADD CONSTRAINT "VHIT_FK" FOREIGN KEY ("TYPE_INTERVENTION_ID")
-	  REFERENCES "TYPE_INTERVENTION" ("ID") ENABLE;
+    MERGE INTO
+      TBL_CHARGENS_SEUILS_DEF t
+    USING (
 
--- VHMNP_FK
-ALTER TABLE "VOLUME_HORAIRE" ADD CONSTRAINT "VHMNP_FK" FOREIGN KEY ("MOTIF_NON_PAIEMENT_ID")
-	  REFERENCES "MOTIF_NON_PAIEMENT" ("ID") ENABLE;
+      SELECT
+        tv.*
+      FROM
+        (SELECT
+          sta.annee_id,
+          sta.scenario_id,
+          s.structure_id,
+          gtf.groupe_type_formation_id,
+          sta.type_intervention_id,
+          COALESCE(sc1.dedoublement, sc2.dedoublement, sc3.dedoublement, sc4.dedoublement) dedoublement
+        FROM
+          (SELECT DISTINCT scenario_id, type_intervention_id, annee_id FROM seuil_charge WHERE histo_destruction IS NULL) sta
+          JOIN (SELECT DISTINCT structure_id FROM noeud WHERE structure_id IS NOT NULL) s ON 1=1
+          JOIN (SELECT id groupe_type_formation_id FROM groupe_type_formation) gtf ON 1=1
 
--- VHR_SERVICE_REFERENTIEL_FK
-ALTER TABLE "VOLUME_HORAIRE_REF" ADD CONSTRAINT "VHR_SERVICE_REFERENTIEL_FK" FOREIGN KEY ("SERVICE_REFERENTIEL_ID")
-	  REFERENCES "SERVICE_REFERENTIEL" ("ID") ENABLE;
+          LEFT JOIN seuil_charge sc1 ON
+            sc1.histo_destruction            IS NULL
+            AND sc1.annee_id                 = sta.annee_id
+            AND sc1.scenario_id              = sta.scenario_id
+            AND sc1.type_intervention_id     = sta.type_intervention_id
+            AND sc1.structure_id             = s.structure_id
+            AND sc1.groupe_type_formation_id = gtf.groupe_type_formation_id
 
--- VHR_TYPE_VOLUME_HORAIRE_FK
-ALTER TABLE "VOLUME_HORAIRE_REF" ADD CONSTRAINT "VHR_TYPE_VOLUME_HORAIRE_FK" FOREIGN KEY ("TYPE_VOLUME_HORAIRE_ID")
-	  REFERENCES "TYPE_VOLUME_HORAIRE" ("ID") ENABLE;
+          LEFT JOIN seuil_charge sc2 ON
+            sc2.histo_destruction            IS NULL
+            AND sc2.annee_id                 = sta.annee_id
+            AND sc2.scenario_id              = sta.scenario_id
+            AND sc2.type_intervention_id     = sta.type_intervention_id
+            AND sc2.structure_id             = s.structure_id
+            AND sc2.groupe_type_formation_id IS NULL
 
--- VH_PERIODE_FK
-ALTER TABLE "VOLUME_HORAIRE" ADD CONSTRAINT "VH_PERIODE_FK" FOREIGN KEY ("PERIODE_ID")
-	  REFERENCES "PERIODE" ("ID") ENABLE;
+          LEFT JOIN seuil_charge sc3 ON
+            sc3.histo_destruction            IS NULL
+            AND sc3.annee_id                 = sta.annee_id
+            AND sc3.scenario_id              = sta.scenario_id
+            AND sc3.type_intervention_id     = sta.type_intervention_id
+            AND sc3.structure_id             IS NULL
+            AND sc3.groupe_type_formation_id = gtf.groupe_type_formation_id
 
--- VH_TYPE_VOLUME_HORAIRE_FK
-ALTER TABLE "VOLUME_HORAIRE" ADD CONSTRAINT "VH_TYPE_VOLUME_HORAIRE_FK" FOREIGN KEY ("TYPE_VOLUME_HORAIRE_ID")
-	  REFERENCES "TYPE_VOLUME_HORAIRE" ("ID") ENABLE;
+          LEFT JOIN seuil_charge sc4 ON
+            sc4.histo_destruction            IS NULL
+            AND sc4.annee_id                 = sta.annee_id
+            AND sc4.scenario_id              = sta.scenario_id
+            AND sc4.type_intervention_id     = sta.type_intervention_id
+            AND sc4.structure_id             IS NULL
+            AND sc4.groupe_type_formation_id IS NULL
+        WHERE
+          COALESCE(sc1.dedoublement, sc2.dedoublement, sc3.dedoublement, sc4.dedoublement, 1) <> 1) tv
+      WHERE
+        ' || conds || '
 
--- VOLUMES_HORAIRES_SERVICES_FK
-ALTER TABLE "VOLUME_HORAIRE" ADD CONSTRAINT "VOLUMES_HORAIRES_SERVICES_FK" FOREIGN KEY ("SERVICE_ID")
-	  REFERENCES "SERVICE" ("ID") ENABLE;
+    ) v ON (
+            t.ANNEE_ID                 = v.ANNEE_ID
+        AND t.SCENARIO_ID              = v.SCENARIO_ID
+        AND t.STRUCTURE_ID             = v.STRUCTURE_ID
+        AND t.GROUPE_TYPE_FORMATION_ID = v.GROUPE_TYPE_FORMATION_ID
+        AND t.TYPE_INTERVENTION_ID     = v.TYPE_INTERVENTION_ID
 
--- VOLUME_HORAIRE_CHARGE_HCFK
-ALTER TABLE "VOLUME_HORAIRE_CHARGE" ADD CONSTRAINT "VOLUME_HORAIRE_CHARGE_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+    ) WHEN MATCHED THEN UPDATE SET
 
--- VOLUME_HORAIRE_CHARGE_HDFK
-ALTER TABLE "VOLUME_HORAIRE_CHARGE" ADD CONSTRAINT "VOLUME_HORAIRE_CHARGE_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+      DEDOUBLEMENT             = v.DEDOUBLEMENT,
+      to_delete = 0
 
--- VOLUME_HORAIRE_CHARGE_HMFK
-ALTER TABLE "VOLUME_HORAIRE_CHARGE" ADD CONSTRAINT "VOLUME_HORAIRE_CHARGE_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+    WHEN NOT MATCHED THEN INSERT (
 
--- VOLUME_HORAIRE_CONTRAT_FK
-ALTER TABLE "VOLUME_HORAIRE" ADD CONSTRAINT "VOLUME_HORAIRE_CONTRAT_FK" FOREIGN KEY ("CONTRAT_ID")
-	  REFERENCES "CONTRAT" ("ID") ENABLE;
+      ID,
+      ANNEE_ID,
+      SCENARIO_ID,
+      STRUCTURE_ID,
+      GROUPE_TYPE_FORMATION_ID,
+      TYPE_INTERVENTION_ID,
+      DEDOUBLEMENT,
+      TO_DELETE
 
--- VOLUME_HORAIRE_ENS_HCFK
-ALTER TABLE "VOLUME_HORAIRE_ENS" ADD CONSTRAINT "VOLUME_HORAIRE_ENS_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+    ) VALUES (
 
--- VOLUME_HORAIRE_ENS_HDFK
-ALTER TABLE "VOLUME_HORAIRE_ENS" ADD CONSTRAINT "VOLUME_HORAIRE_ENS_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+      TBL_CHARGENS_SEUILS_DEF_ID_SEQ.NEXTVAL,
+      v.ANNEE_ID,
+      v.SCENARIO_ID,
+      v.STRUCTURE_ID,
+      v.GROUPE_TYPE_FORMATION_ID,
+      v.TYPE_INTERVENTION_ID,
+      v.DEDOUBLEMENT,
+      0
 
--- VOLUME_HORAIRE_ENS_HMFK
-ALTER TABLE "VOLUME_HORAIRE_ENS" ADD CONSTRAINT "VOLUME_HORAIRE_ENS_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+    );
 
--- VOLUME_HORAIRE_ENS_SOURCE_FK
-ALTER TABLE "VOLUME_HORAIRE_ENS" ADD CONSTRAINT "VOLUME_HORAIRE_ENS_SOURCE_FK" FOREIGN KEY ("SOURCE_ID")
-	  REFERENCES "SOURCE" ("ID") ON DELETE CASCADE ENABLE;
+    DELETE TBL_CHARGENS_SEUILS_DEF WHERE to_delete = 1 AND ' || conds || ';
 
--- VOLUME_HORAIRE_HCFK
-ALTER TABLE "VOLUME_HORAIRE" ADD CONSTRAINT "VOLUME_HORAIRE_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+    END;';
 
--- VOLUME_HORAIRE_HDFK
-ALTER TABLE "VOLUME_HORAIRE" ADD CONSTRAINT "VOLUME_HORAIRE_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+  END;
 
--- VOLUME_HORAIRE_HMFK
-ALTER TABLE "VOLUME_HORAIRE" ADD CONSTRAINT "VOLUME_HORAIRE_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
 
--- VOLUME_HORAIRE_REF_HCFK
-ALTER TABLE "VOLUME_HORAIRE_REF" ADD CONSTRAINT "VOLUME_HORAIRE_REF_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
 
--- VOLUME_HORAIRE_REF_HDFK
-ALTER TABLE "VOLUME_HORAIRE_REF" ADD CONSTRAINT "VOLUME_HORAIRE_REF_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+  PROCEDURE C_CLOTURE_REALISE( PARAMS UNICAEN_TBL.T_PARAMS ) IS
+    conds CLOB;
+  BEGIN
+    conds := params_to_conds( params );
 
--- VOLUME_HORAIRE_REF_HMFK
-ALTER TABLE "VOLUME_HORAIRE_REF" ADD CONSTRAINT "VOLUME_HORAIRE_REF_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID")
-	  REFERENCES "UTILISATEUR" ("ID") ENABLE;
+    EXECUTE IMMEDIATE 'BEGIN
 
--- VVHR_VALIDATION_FK
-ALTER TABLE "VALIDATION_VOL_HORAIRE_REF" ADD CONSTRAINT "VVHR_VALIDATION_FK" FOREIGN KEY ("VALIDATION_ID")
-	  REFERENCES "VALIDATION" ("ID") ON DELETE CASCADE ENABLE;
+    UPDATE TBL_CLOTURE_REALISE SET to_delete = 1 WHERE ' || conds || ';
 
--- VVHR_VOLUME_HORAIRE_REF_FK
-ALTER TABLE "VALIDATION_VOL_HORAIRE_REF" ADD CONSTRAINT "VVHR_VOLUME_HORAIRE_REF_FK" FOREIGN KEY ("VOLUME_HORAIRE_REF_ID")
-	  REFERENCES "VOLUME_HORAIRE_REF" ("ID") ON DELETE CASCADE ENABLE;
+    MERGE INTO
+      TBL_CLOTURE_REALISE t
+    USING (
 
--- VVH_VALIDATION_FK
-ALTER TABLE "VALIDATION_VOL_HORAIRE" ADD CONSTRAINT "VVH_VALIDATION_FK" FOREIGN KEY ("VALIDATION_ID")
-	  REFERENCES "VALIDATION" ("ID") ON DELETE CASCADE ENABLE;
+      SELECT
+        tv.*
+      FROM
+        (WITH t AS (
+          SELECT
+            i.annee_id              annee_id,
+            i.id                    intervenant_id,
+            si.peut_cloturer_saisie peut_cloturer_saisie,
+            CASE WHEN v.id IS NULL THEN 0 ELSE 1 END cloture
+          FROM
+                      intervenant         i
+                 JOIN statut_intervenant si ON si.id = i.statut_id
+                 JOIN type_validation    tv ON tv.code = ''CLOTURE_REALISE''
 
--- VVH_VOLUME_HORAIRE_FK
-ALTER TABLE "VALIDATION_VOL_HORAIRE" ADD CONSTRAINT "VVH_VOLUME_HORAIRE_FK" FOREIGN KEY ("VOLUME_HORAIRE_ID")
-	  REFERENCES "VOLUME_HORAIRE" ("ID") ON DELETE CASCADE ENABLE;
+            LEFT JOIN validation          v ON v.intervenant_id = i.id
+                                           AND v.type_validation_id = tv.id
+                                           AND v.histo_destruction IS NULL
 
--- WE_PREC_WE_FK
-ALTER TABLE "WF_ETAPE_DEP" ADD CONSTRAINT "WE_PREC_WE_FK" FOREIGN KEY ("ETAPE_PREC_ID")
-	  REFERENCES "WF_ETAPE" ("ID") ON DELETE CASCADE ENABLE;
+          WHERE
+            i.histo_destruction IS NULL
+        )
+        SELECT
+          annee_id,
+          intervenant_id,
+          peut_cloturer_saisie,
+          CASE WHEN sum(cloture) = 0 THEN 0 ELSE 1 END cloture
+        FROM
+          t
+        GROUP BY
+          annee_id,
+          intervenant_id,
+          peut_cloturer_saisie) tv
+      WHERE
+        ' || conds || '
 
--- WE_SUIV_WE_FK
-ALTER TABLE "WF_ETAPE_DEP" ADD CONSTRAINT "WE_SUIV_WE_FK" FOREIGN KEY ("ETAPE_SUIV_ID")
-	  REFERENCES "WF_ETAPE" ("ID") ON DELETE CASCADE ENABLE;
+    ) v ON (
+            t.INTERVENANT_ID = v.INTERVENANT_ID
 
--- WE_TYPE_INTERVENANT_FK
-ALTER TABLE "WF_ETAPE_DEP" ADD CONSTRAINT "WE_TYPE_INTERVENANT_FK" FOREIGN KEY ("TYPE_INTERVENANT_ID")
-	  REFERENCES "TYPE_INTERVENANT" ("ID") ON DELETE CASCADE ENABLE;
+    ) WHEN MATCHED THEN UPDATE SET
 
--- WF_DB_ETAPE_DEP_FK
-ALTER TABLE "WF_DEP_BLOQUANTE" ADD CONSTRAINT "WF_DB_ETAPE_DEP_FK" FOREIGN KEY ("WF_ETAPE_DEP_ID")
-	  REFERENCES "WF_ETAPE_DEP" ("ID") ON DELETE CASCADE ENABLE;
+      ANNEE_ID             = v.ANNEE_ID,
+      PEUT_CLOTURER_SAISIE = v.PEUT_CLOTURER_SAISIE,
+      CLOTURE              = v.CLOTURE,
+      to_delete = 0
 
--- WF_DB_TBL_WORKFLOW_FK
-ALTER TABLE "WF_DEP_BLOQUANTE" ADD CONSTRAINT "WF_DB_TBL_WORKFLOW_FK" FOREIGN KEY ("TBL_WORKFLOW_ID")
-	  REFERENCES "TBL_WORKFLOW" ("ID") ON DELETE CASCADE ENABLE;
+    WHEN NOT MATCHED THEN INSERT (
 
--- indic_diff_dossier_INT_FK
-ALTER TABLE "INDIC_MODIF_DOSSIER" ADD CONSTRAINT "indic_diff_dossier_INT_FK" FOREIGN KEY ("INTERVENANT_ID")
-	  REFERENCES "INTERVENANT" ("ID") ON DELETE CASCADE ENABLE;
+      ID,
+      ANNEE_ID,
+      INTERVENANT_ID,
+      PEUT_CLOTURER_SAISIE,
+      CLOTURE,
+      TO_DELETE
 
---------------------------------------------------
--- Triggers
---------------------------------------------------
+    ) VALUES (
 
--- AFFECTATION_RECHERCHE_CK
-CREATE OR REPLACE TRIGGER "AFFECTATION_RECHERCHE_CK" 
-  BEFORE INSERT OR UPDATE ON "AFFECTATION_RECHERCHE"
-  REFERENCING FOR EACH ROW
-  DECLARE
-  pragma autonomous_transaction;
-  rows_found integer;
-BEGIN
+      TBL_CLOTURE_REALISE_ID_SEQ.NEXTVAL,
+      v.ANNEE_ID,
+      v.INTERVENANT_ID,
+      v.PEUT_CLOTURER_SAISIE,
+      v.CLOTURE,
+      0
 
-  if :NEW.histo_destruction IS NOT NULL THEN RETURN; END IF; -- pas de check si c'est pour une historicisation
+    );
 
-  select 
-    count(*) into rows_found
-  from
-    affectation_recherche
-  where
-    intervenant_id = :new.intervenant_id
-    AND structure_id = :new.structure_id
-    AND histo_destruction IS NULL
-    AND id <> :NEW.id;
+    DELETE TBL_CLOTURE_REALISE WHERE to_delete = 1 AND ' || conds || ';
 
-  if rows_found > 0 THEN
-    raise_application_error(-20101, 'Un enseignant (id=' || :NEW.intervenant_id || ') ne peut pas avoir plusieurs affectations de recherche pour une même structure');
-  END IF;
+    END;';
+
+  END;
 
-END;
 
 
-/
-ALTER TRIGGER "AFFECTATION_RECHERCHE_CK" ENABLE;
+  PROCEDURE C_CONTRAT( PARAMS UNICAEN_TBL.T_PARAMS ) IS
+    conds CLOB;
+  BEGIN
+    conds := params_to_conds( params );
 
--- AGREMENT_CK
-CREATE OR REPLACE TRIGGER "AGREMENT_CK" 
-  BEFORE UPDATE ON "AGREMENT"
-  REFERENCING FOR EACH ROW
-  DECLARE
-  contrat_found INTEGER;
-BEGIN
+    EXECUTE IMMEDIATE 'BEGIN
 
-  SELECT
-    COUNT(*) INTO contrat_found
-  FROM
-    contrat c
-  WHERE
-    c.INTERVENANT_ID = :NEW.intervenant_id
-    AND c.structure_id = NVL(:NEW.structure_id,c.structure_id)
-    AND c.histo_destruction IS NULL
-    AND ROWNUM = 1;
+    UPDATE TBL_CONTRAT SET to_delete = 1 WHERE ' || conds || ';
 
-  IF 
-    1 = contrat_found 
-    AND :NEW.histo_destruction IS NOT NULL AND :OLD.histo_destruction IS NULL
-  THEN 
+    MERGE INTO
+      TBL_CONTRAT t
+    USING (
 
-    IF :NEW.structure_id IS NULL THEN
-      raise_application_error(-20101, 'Cet agrément ne peut pas être supprimé car un contrat a été signé.');    
-    ELSE
-      raise_application_error(-20101, 'Cet agrément ne peut pas être supprimé car un contrat a été signé dans la même composante.');    
-    END IF;
-  END IF;
+      SELECT
+        tv.*
+      FROM
+        (WITH t AS (
+          SELECT
+            i.annee_id                                                                annee_id,
+            i.id                                                                      intervenant_id,
+            si.peut_avoir_contrat                                                     peut_avoir_contrat,
+            NVL(ep.structure_id, i.structure_id)                                      structure_id,
+            CASE WHEN evh.code IN (''contrat-edite'',''contrat-signe'') THEN 1 ELSE 0 END edite,
+            CASE WHEN evh.code IN (''contrat-signe'')                 THEN 1 ELSE 0 END signe
+          FROM
+                      intervenant                 i
 
-END;
+                 JOIN statut_intervenant         si ON si.id = i.statut_id
 
+                 JOIN service                     s ON s.intervenant_id = i.id
+                                                   AND s.histo_destruction IS NULL
 
-/
-ALTER TRIGGER "AGREMENT_CK" ENABLE;
+                 JOIN type_volume_horaire       tvh ON tvh.code = ''PREVU''
 
--- CALC_TAUX_HETD_ANNEES
-CREATE OR REPLACE TRIGGER "CALC_TAUX_HETD_ANNEES" 
-AFTER INSERT OR UPDATE OR DELETE ON "TAUX_HORAIRE_HETD"
-BEGIN
-  OSE_FORMULE.UPDATE_ANNEE_TAUX_HETD;
-END;
+                 JOIN volume_horaire             vh ON vh.service_id = s.id
+                                                   AND vh.histo_destruction IS NULL
+                                                   AND vh.heures <> 0
+                                                   AND vh.type_volume_horaire_id = tvh.id
 
-/
-ALTER TRIGGER "CALC_TAUX_HETD_ANNEES" ENABLE;
+                 JOIN v_volume_horaire_etat     vhe ON vhe.volume_horaire_id = vh.id
 
--- CHARGENS_MAJ_EFFECTIFS
-CREATE OR REPLACE TRIGGER "CHARGENS_MAJ_EFFECTIFS" 
-  AFTER INSERT OR DELETE OR UPDATE ON "SCENARIO_NOEUD_EFFECTIF"
-  REFERENCING FOR EACH ROW
-  BEGIN 
-RETURN;
-  return;
-  IF NOT ose_chargens.ENABLE_TRIGGER_EFFECTIFS THEN RETURN; END IF;
-  IF DELETING THEN
-    ose_chargens.DEM_CALC_SUB_EFFECTIF( :OLD.scenario_noeud_id, :OLD.type_heures_id, :OLD.etape_id, 0 );
-  ELSE
-    ose_chargens.DEM_CALC_SUB_EFFECTIF( :NEW.scenario_noeud_id, :NEW.type_heures_id, :NEW.etape_id, :NEW.effectif );
-  END IF;
+                 JOIN etat_volume_horaire       evh ON evh.id = vhe.etat_volume_horaire_id
+                                                   AND evh.code IN (''valide'', ''contrat-edite'', ''contrat-signe'')
 
-END;
+                 JOIN element_pedagogique        ep ON ep.id = s.element_pedagogique_id
 
+          WHERE
+            i.histo_destruction IS NULL
+            AND NOT (si.peut_avoir_contrat = 0 AND evh.code = ''valide'')
 
-/
-ALTER TRIGGER "CHARGENS_MAJ_EFFECTIFS" ENABLE;
+          UNION ALL
 
--- ELEMENT_PEDAGOGIQUE_CK
-CREATE OR REPLACE TRIGGER "ELEMENT_PEDAGOGIQUE_CK" 
-  BEFORE INSERT OR UPDATE ON "ELEMENT_PEDAGOGIQUE"
-  REFERENCING FOR EACH ROW
-  DECLARE
-  enseignement INTEGER;
-  source_id INTEGER;
-BEGIN
-  SELECT id INTO source_id FROM source WHERE code = 'OSE';
+          SELECT
+            i.annee_id                                                                annee_id,
+            i.id                                                                      intervenant_id,
+            si.peut_avoir_contrat                                                     peut_avoir_contrat,
+            s.structure_id                                                            structure_id,
+            CASE WHEN evh.code IN (''contrat-edite'',''contrat-signe'') THEN 1 ELSE 0 END edite,
+            CASE WHEN evh.code IN (''contrat-signe'')                 THEN 1 ELSE 0 END signe
+          FROM
+                      intervenant                 i
 
-  IF :NEW.source_id <> source_id THEN RETURN; END IF; -- impossible de checker car l'UPD par import se fait champ par champ...
-  
-  IF :NEW.fi = 0 AND :NEW.fc = 0 AND :NEW.fa = 0 THEN
-    raise_application_error(-20101, 'Un enseignement doit obligatoirement être au moins en FI, FC ou FA');
-  END IF;
+                 JOIN statut_intervenant         si ON si.id = i.statut_id
 
-  IF 1 <> ROUND(:NEW.taux_fi + :NEW.taux_fc + :NEW.taux_fa, 2) THEN
-    raise_application_error( -20101, 'Le total des taux FI, FC et FA n''est pas égal à 100%');
-  END IF;
+                 JOIN service_referentiel         s ON s.intervenant_id = i.id
+                                                   AND s.histo_destruction IS NULL
 
-  IF :NEW.fi = 0 AND :NEW.taux_fi > 0 THEN
-    raise_application_error( -20101, 'Le taux FI doit être à 0 puisque la formation n''est pas dispensée en FI');
-  END IF;
+                 JOIN type_volume_horaire       tvh ON tvh.code = ''PREVU''
 
-  IF :NEW.fa = 0 AND :NEW.taux_fa > 0 THEN
-    raise_application_error( -20101, 'Le taux FA doit être à 0 puisque la formation n''est pas dispensée en FA');
-  END IF;
-  
-  IF :NEW.fc = 0 AND :NEW.taux_fc > 0 THEN
-    raise_application_error( -20101, 'Le taux FC doit être à 0 puisque la formation n''est pas dispensée en FC');
-  END IF;  
+                 JOIN volume_horaire_ref         vh ON vh.service_referentiel_id = s.id
+                                                   AND vh.histo_destruction IS NULL
+                                                   AND vh.heures <> 0
+                                                   AND vh.type_volume_horaire_id = tvh.id
 
-  IF :NEW.periode_id IS NOT NULL THEN
-    SELECT p.enseignement
-    INTO enseignement
-    FROM periode p
-    WHERE p.id	     = :NEW.periode_id;
-    IF enseignement <> 1 THEN
-      raise_application_error(-20101, 'Cette période n''est pas appliquable à cet élément pédagogique.');
-    END IF;
-  END IF;
+                 JOIN v_volume_horaire_ref_etat vhe ON vhe.volume_horaire_ref_id = vh.id
 
-END;
+                 JOIN etat_volume_horaire       evh ON evh.id = vhe.etat_volume_horaire_id
+                                                   AND evh.code IN (''valide'', ''contrat-edite'', ''contrat-signe'')
 
-/
-ALTER TRIGGER "ELEMENT_PEDAGOGIQUE_CK" ENABLE;
+          WHERE
+            i.histo_destruction IS NULL
+            AND NOT (si.peut_avoir_contrat = 0 AND evh.code = ''valide'')
+        )
+        SELECT
+          annee_id,
+          intervenant_id,
+          peut_avoir_contrat,
+          structure_id,
+          count(*) as nbvh,
+          sum(edite) as edite,
+          sum(signe) as signe
+        FROM
+          t
+        GROUP BY
+          annee_id,
+          intervenant_id,
+          peut_avoir_contrat,
+          structure_id) tv
+      WHERE
+        ' || conds || '
 
--- F_CONTRAT
-CREATE OR REPLACE TRIGGER "F_CONTRAT" 
-  AFTER DELETE OR UPDATE OF INTERVENANT_ID, STRUCTURE_ID, VALIDATION_ID, DATE_RETOUR_SIGNE, HISTO_CREATION, HISTO_DESTRUCTION ON "CONTRAT"
-  REFERENCING FOR EACH ROW
-  BEGIN
+    ) v ON (
+            t.INTERVENANT_ID = v.INTERVENANT_ID
+        AND COALESCE(t.STRUCTURE_ID,0) = COALESCE(v.STRUCTURE_ID,0)
 
-  IF NOT UNICAEN_TBL.ACTIV_TRIGGERS THEN RETURN; END IF;
+    ) WHEN MATCHED THEN UPDATE SET
 
-  FOR p IN (
+      ANNEE_ID           = v.ANNEE_ID,
+      PEUT_AVOIR_CONTRAT = v.PEUT_AVOIR_CONTRAT,
+      NBVH               = v.NBVH,
+      EDITE              = v.EDITE,
+      SIGNE              = v.SIGNE,
+      to_delete = 0
 
-    SELECT DISTINCT
-      s.intervenant_id
-    FROM
-      volume_horaire vh
-      JOIN service s ON s.id = vh.service_id AND s.histo_destruction IS NULL
-    WHERE
-      vh.histo_destruction IS NULL
-      AND (vh.contrat_id = :OLD.id OR vh.contrat_id = :NEW.id)
+    WHEN NOT MATCHED THEN INSERT (
 
-  ) LOOP
+      ID,
+      ANNEE_ID,
+      INTERVENANT_ID,
+      PEUT_AVOIR_CONTRAT,
+      STRUCTURE_ID,
+      NBVH,
+      EDITE,
+      SIGNE,
+      TO_DELETE
 
-    UNICAEN_TBL.DEMANDE_CALCUL('formule', UNICAEN_TBL.make_params('INTERVENANT_ID', p.intervenant_id) );
+    ) VALUES (
 
-  END LOOP;
+      TBL_CONTRAT_ID_SEQ.NEXTVAL,
+      v.ANNEE_ID,
+      v.INTERVENANT_ID,
+      v.PEUT_AVOIR_CONTRAT,
+      v.STRUCTURE_ID,
+      v.NBVH,
+      v.EDITE,
+      v.SIGNE,
+      0
 
-END;
+    );
 
-/
-ALTER TRIGGER "F_CONTRAT" ENABLE;
+    DELETE TBL_CONTRAT WHERE to_delete = 1 AND ' || conds || ';
 
--- F_CONTRAT_S
-CREATE OR REPLACE TRIGGER "F_CONTRAT_S" 
-  AFTER DELETE OR UPDATE ON "CONTRAT"
-  BEGIN
-  UNICAEN_TBL.CALCULER_DEMANDES;
-END;
+    END;';
 
+  END;
 
-/
-ALTER TRIGGER "F_CONTRAT_S" ENABLE;
 
--- F_ELEMENT_MODULATEUR
-CREATE OR REPLACE TRIGGER "F_ELEMENT_MODULATEUR" 
-  AFTER INSERT OR DELETE OR UPDATE ON "ELEMENT_MODULATEUR"
-  REFERENCING FOR EACH ROW
+
+  PROCEDURE C_DMEP_LIQUIDATION( PARAMS UNICAEN_TBL.T_PARAMS ) IS
+    conds CLOB;
   BEGIN
+    conds := params_to_conds( params );
 
-  IF NOT UNICAEN_TBL.ACTIV_TRIGGERS THEN RETURN; END IF;
+    EXECUTE IMMEDIATE 'BEGIN
 
-  FOR p IN (
+    UPDATE TBL_DMEP_LIQUIDATION SET to_delete = 1 WHERE ' || conds || ';
+
+    MERGE INTO
+      TBL_DMEP_LIQUIDATION t
+    USING (
+
+      SELECT
+        tv.*
+      FROM
+        (SELECT
+          annee_id,
+          type_ressource_id,
+          structure_id,
+          SUM(heures) heures
+        FROM
+        (
+          SELECT
+            i.annee_id,
+            cc.type_ressource_id,
+            COALESCE( ep.structure_id, i.structure_id ) structure_id,
+            mep.heures
+          FROM
+                      mise_en_paiement         mep
+                 JOIN centre_cout               cc ON cc.id = mep.centre_cout_id
+                 JOIN formule_resultat_service frs ON frs.id = mep.formule_res_service_id
+                 JOIN service                    s ON s.id = frs.service_id
+                 JOIN intervenant                i ON i.id = s.intervenant_id
+            LEFT JOIN element_pedagogique       ep ON ep.id = s.element_pedagogique_id
+          WHERE
+            mep.histo_destruction IS NULL
 
-    SELECT DISTINCT
-      s.intervenant_id
-    FROM
-      service s
-    WHERE
-      s.histo_destruction IS NULL
-      AND (s.element_pedagogique_id = :OLD.element_id OR s.element_pedagogique_id = :NEW.element_id)
+          UNION ALL
 
-  ) LOOP
+          SELECT
+            i.annee_id,
+            cc.type_ressource_id,
+            sr.structure_id structure_id,
+            heures
+          FROM
+                      mise_en_paiement              mep
+                 JOIN centre_cout                    cc ON cc.id = mep.centre_cout_id
+                 JOIN formule_resultat_service_ref frsr ON frsr.id = mep.formule_res_service_ref_id
+                 JOIN service_referentiel            sr ON sr.id = frsr.service_referentiel_id
+                 JOIN intervenant                     i ON i.id = sr.intervenant_id
 
-    UNICAEN_TBL.DEMANDE_CALCUL('formule', UNICAEN_TBL.make_params('INTERVENANT_ID', p.intervenant_id) );
+          WHERE
+            mep.histo_destruction IS NULL
 
-  END LOOP;
+        ) t1
+        GROUP BY
+          annee_id, type_ressource_id, structure_id) tv
+      WHERE
+        ' || conds || '
 
-END;
+    ) v ON (
+            t.ANNEE_ID          = v.ANNEE_ID
+        AND t.TYPE_RESSOURCE_ID = v.TYPE_RESSOURCE_ID
+        AND t.STRUCTURE_ID      = v.STRUCTURE_ID
 
+    ) WHEN MATCHED THEN UPDATE SET
 
-/
-ALTER TRIGGER "F_ELEMENT_MODULATEUR" ENABLE;
+      HEURES            = v.HEURES,
+      to_delete = 0
 
--- F_ELEMENT_MODULATEUR_S
-CREATE OR REPLACE TRIGGER "F_ELEMENT_MODULATEUR_S" 
-  AFTER INSERT OR DELETE OR UPDATE ON "ELEMENT_MODULATEUR"
-  BEGIN
-  UNICAEN_TBL.CALCULER_DEMANDES;
-END;
+    WHEN NOT MATCHED THEN INSERT (
 
+      ID,
+      ANNEE_ID,
+      TYPE_RESSOURCE_ID,
+      STRUCTURE_ID,
+      HEURES,
+      TO_DELETE
 
-/
-ALTER TRIGGER "F_ELEMENT_MODULATEUR_S" ENABLE;
+    ) VALUES (
 
--- F_ELEMENT_PEDAGOGIQUE
-CREATE OR REPLACE TRIGGER "F_ELEMENT_PEDAGOGIQUE" 
-  AFTER DELETE OR UPDATE OF ID, STRUCTURE_ID, PERIODE_ID, TAUX_FI, TAUX_FC, TAUX_FA, TAUX_FOAD, FI, FC, FA, HISTO_CREATION, HISTO_DESTRUCTION, ANNEE_ID ON "ELEMENT_PEDAGOGIQUE"
-  REFERENCING FOR EACH ROW
-  BEGIN
+      TBL_DMEP_LIQUIDATION_ID_SEQ.NEXTVAL,
+      v.ANNEE_ID,
+      v.TYPE_RESSOURCE_ID,
+      v.STRUCTURE_ID,
+      v.HEURES,
+      0
 
-  IF NOT UNICAEN_TBL.ACTIV_TRIGGERS THEN RETURN; END IF;
+    );
 
-  FOR p IN
-    ( SELECT DISTINCT s.intervenant_id
-    FROM service s
-    WHERE (s.element_pedagogique_id = :NEW.id
-    OR s.element_pedagogique_id     = :OLD.id)
-    AND s.histo_destruction IS NULL
-    ) LOOP UNICAEN_TBL.DEMANDE_CALCUL('formule', UNICAEN_TBL.make_params('INTERVENANT_ID', p.intervenant_id) );
-END LOOP;
-END;
+    DELETE TBL_DMEP_LIQUIDATION WHERE to_delete = 1 AND ' || conds || ';
 
-/
-ALTER TRIGGER "F_ELEMENT_PEDAGOGIQUE" ENABLE;
+    END;';
 
--- F_ELEMENT_PEDAGOGIQUE_S
-CREATE OR REPLACE TRIGGER "F_ELEMENT_PEDAGOGIQUE_S" 
-  AFTER DELETE OR UPDATE ON "ELEMENT_PEDAGOGIQUE"
-  BEGIN
-  UNICAEN_TBL.CALCULER_DEMANDES;
-END;
+  END;
 
 
-/
-ALTER TRIGGER "F_ELEMENT_PEDAGOGIQUE_S" ENABLE;
 
--- F_INTERVENANT
-CREATE OR REPLACE TRIGGER "F_INTERVENANT" 
-  AFTER UPDATE OF ID, DATE_NAISSANCE, STATUT_ID, STRUCTURE_ID, HISTO_CREATION, HISTO_DESTRUCTION, PREMIER_RECRUTEMENT, ANNEE_ID ON "INTERVENANT"
-  REFERENCING FOR EACH ROW
+  PROCEDURE C_DOSSIER( PARAMS UNICAEN_TBL.T_PARAMS ) IS
+    conds CLOB;
   BEGIN
+    conds := params_to_conds( params );
 
-  IF NOT UNICAEN_TBL.ACTIV_TRIGGERS THEN RETURN; END IF;
+    EXECUTE IMMEDIATE 'BEGIN
 
-  FOR p IN (
+    UPDATE TBL_DOSSIER SET to_delete = 1 WHERE ' || conds || ';
 
-    SELECT DISTINCT
-      fr.intervenant_id
-    FROM
-      formule_resultat fr
-    WHERE
-      fr.intervenant_id = :NEW.id OR fr.intervenant_id = :OLD.id
+    MERGE INTO
+      TBL_DOSSIER t
+    USING (
 
-  ) LOOP
+      SELECT
+        tv.*
+      FROM
+        (SELECT
+          i.annee_id,
+          i.id intervenant_id,
+          si.peut_saisir_dossier,
+          d.id dossier_id,
+          v.id validation_id
+        FROM
+                    intervenant         i
+               JOIN statut_intervenant si ON si.id = i.statut_id
+          LEFT JOIN dossier             d ON d.intervenant_id = i.id
+                                      AND d.histo_destruction IS NULL
 
-    UNICAEN_TBL.DEMANDE_CALCUL('formule', UNICAEN_TBL.make_params('INTERVENANT_ID', p.intervenant_id) );
+               JOIN type_validation tv ON tv.code = ''DONNEES_PERSO_PAR_COMP''
+          LEFT JOIN validation       v ON v.intervenant_id = i.id
+                                      AND v.type_validation_id = tv.id
+                                      AND v.histo_destruction IS NULL
+        WHERE
+          i.histo_destruction IS NULL) tv
+      WHERE
+        ' || conds || '
 
-  END LOOP;
+    ) v ON (
+            t.INTERVENANT_ID = v.INTERVENANT_ID
 
-END;
+    ) WHEN MATCHED THEN UPDATE SET
 
+      ANNEE_ID            = v.ANNEE_ID,
+      PEUT_SAISIR_DOSSIER = v.PEUT_SAISIR_DOSSIER,
+      DOSSIER_ID          = v.DOSSIER_ID,
+      VALIDATION_ID       = v.VALIDATION_ID,
+      to_delete = 0
 
-/
-ALTER TRIGGER "F_INTERVENANT" ENABLE;
+    WHEN NOT MATCHED THEN INSERT (
 
--- F_INTERVENANT_S
-CREATE OR REPLACE TRIGGER "F_INTERVENANT_S" 
-  AFTER UPDATE ON "INTERVENANT"
-  BEGIN
-  UNICAEN_TBL.CALCULER_DEMANDES;
-END;
+      ID,
+      ANNEE_ID,
+      INTERVENANT_ID,
+      PEUT_SAISIR_DOSSIER,
+      DOSSIER_ID,
+      VALIDATION_ID,
+      TO_DELETE
 
+    ) VALUES (
 
-/
-ALTER TRIGGER "F_INTERVENANT_S" ENABLE;
+      TBL_DOSSIER_ID_SEQ.NEXTVAL,
+      v.ANNEE_ID,
+      v.INTERVENANT_ID,
+      v.PEUT_SAISIR_DOSSIER,
+      v.DOSSIER_ID,
+      v.VALIDATION_ID,
+      0
 
--- F_MODIF_SERVICE_DU
-CREATE OR REPLACE TRIGGER "F_MODIF_SERVICE_DU" 
-  AFTER INSERT OR DELETE OR UPDATE ON "MODIFICATION_SERVICE_DU"
-  REFERENCING FOR EACH ROW
-  BEGIN
+    );
 
-  IF NOT UNICAEN_TBL.ACTIV_TRIGGERS THEN RETURN; END IF;
+    DELETE TBL_DOSSIER WHERE to_delete = 1 AND ' || conds || ';
 
-  IF DELETING OR UPDATING THEN
-    UNICAEN_TBL.DEMANDE_CALCUL('formule', UNICAEN_TBL.make_params('INTERVENANT_ID', :OLD.intervenant_id) );
-  END IF;
-  IF INSERTING OR UPDATING THEN
-    UNICAEN_TBL.DEMANDE_CALCUL('formule', UNICAEN_TBL.make_params('INTERVENANT_ID', :NEW.intervenant_id) );
-  END IF;
+    END;';
 
-END;
+  END;
 
 
-/
-ALTER TRIGGER "F_MODIF_SERVICE_DU" ENABLE;
 
--- F_MODIF_SERVICE_DU_S
-CREATE OR REPLACE TRIGGER "F_MODIF_SERVICE_DU_S" 
-  AFTER INSERT OR DELETE OR UPDATE ON "MODIFICATION_SERVICE_DU"
+  PROCEDURE C_PAIEMENT( PARAMS UNICAEN_TBL.T_PARAMS ) IS
+    conds CLOB;
   BEGIN
-    UNICAEN_TBL.CALCULER_DEMANDES;
-END;
+    conds := params_to_conds( params );
 
+    EXECUTE IMMEDIATE 'BEGIN
 
-/
-ALTER TRIGGER "F_MODIF_SERVICE_DU_S" ENABLE;
+    UPDATE TBL_PAIEMENT SET to_delete = 1 WHERE ' || conds || ';
 
--- F_MODULATEUR
-CREATE OR REPLACE TRIGGER "F_MODULATEUR" 
-  AFTER DELETE OR UPDATE ON "MODULATEUR"
-  REFERENCING FOR EACH ROW
-  BEGIN
+    MERGE INTO
+      TBL_PAIEMENT t
+    USING (
 
-  IF NOT UNICAEN_TBL.ACTIV_TRIGGERS THEN RETURN; END IF;
+      SELECT
+        tv.*
+      FROM
+        (SELECT
+          i.annee_id                                  annee_id,
+          frs.id                                      formule_res_service_id,
+          null                                        formule_res_service_ref_id,
+          i.id                                        intervenant_id,
+          COALESCE( ep.structure_id, i.structure_id ) structure_id,
+          mep.id                                      mise_en_paiement_id,
+          mep.periode_paiement_id                     periode_paiement_id,
+          frs.heures_compl_fi + frs.heures_compl_fc + frs.heures_compl_fa + frs.heures_compl_fc_majorees heures_a_payer,
+          count(*) OVER(PARTITION BY frs.id)          heures_a_payer_pond,
+          NVL(mep.heures,0)                           heures_demandees,
+          CASE WHEN mep.periode_paiement_id IS NULL THEN 0 ELSE mep.heures END heures_payees
+        FROM
+                    formule_resultat_service        frs
+               JOIN type_volume_horaire             tvh ON tvh.code = ''REALISE''
+               JOIN etat_volume_horaire             evh ON evh.code = ''valide''
+               JOIN formule_resultat                 fr ON fr.id = frs.formule_resultat_id
+                                                       AND fr.type_volume_horaire_id = tvh.id
+                                                       AND fr.etat_volume_horaire_id = evh.id
 
-  FOR p IN (
+               JOIN intervenant                       i ON i.id = fr.intervenant_id
+               JOIN service                           s ON s.id = frs.service_id
+          LEFT JOIN element_pedagogique              ep ON ep.id = s.element_pedagogique_id
+          LEFT JOIN mise_en_paiement                mep ON mep.formule_res_service_id = frs.id
+                                                       AND mep.histo_destruction IS NULL
 
-    SELECT DISTINCT
-      s.intervenant_id
-    FROM
-      service s
-      JOIN element_modulateur em ON
-        em.element_id   = s.element_pedagogique_id
-        AND em.histo_destruction IS NULL
-    WHERE
-      s.histo_destruction IS NULL
-      AND (em.modulateur_id = :OLD.id OR em.modulateur_id = :NEW.id)
+        UNION ALL
+
+        SELECT
+          i.annee_id                                  annee_id,
+          null                                        formule_res_service_id,
+          frs.id                                      formule_res_service_ref_id,
+          i.id                                        intervenant_id,
+          s.structure_id                              structure_id,
+          mep.id                                      mise_en_paiement_id,
+          mep.periode_paiement_id                     periode_paiement_id,
+          frs.heures_compl_referentiel                heures_a_payer,
+          count(*) OVER(PARTITION BY frs.id)          heures_a_payer_pond,
+          NVL(mep.heures,0)                           heures_demandees,
+          CASE WHEN mep.periode_paiement_id IS NULL THEN 0 ELSE mep.heures END heures_payees
+        FROM
+                    formule_resultat_service_ref    frs
+               JOIN type_volume_horaire             tvh ON tvh.code = ''REALISE''
+               JOIN etat_volume_horaire             evh ON evh.code = ''valide''
+               JOIN formule_resultat                 fr ON fr.id = frs.formule_resultat_id
+                                                       AND fr.type_volume_horaire_id = tvh.id
+                                                       AND fr.etat_volume_horaire_id = evh.id
+
+               JOIN intervenant                       i ON i.id = fr.intervenant_id
+               JOIN service_referentiel               s ON s.id = frs.service_referentiel_id
+          LEFT JOIN mise_en_paiement                mep ON mep.formule_res_service_ref_id = frs.id
+                                                       AND mep.histo_destruction IS NULL) tv
+      WHERE
+        ' || conds || '
 
-  ) LOOP
+    ) v ON (
+            t.INTERVENANT_ID             = v.INTERVENANT_ID
+        AND COALESCE(t.MISE_EN_PAIEMENT_ID,0) = COALESCE(v.MISE_EN_PAIEMENT_ID,0)
+        AND COALESCE(t.FORMULE_RES_SERVICE_ID,0) = COALESCE(v.FORMULE_RES_SERVICE_ID,0)
+        AND COALESCE(t.FORMULE_RES_SERVICE_REF_ID,0) = COALESCE(v.FORMULE_RES_SERVICE_REF_ID,0)
 
-    UNICAEN_TBL.DEMANDE_CALCUL('formule', UNICAEN_TBL.make_params('INTERVENANT_ID', p.intervenant_id) );
+    ) WHEN MATCHED THEN UPDATE SET
 
-  END LOOP;
-END;
+      ANNEE_ID                   = v.ANNEE_ID,
+      STRUCTURE_ID               = v.STRUCTURE_ID,
+      PERIODE_PAIEMENT_ID        = v.PERIODE_PAIEMENT_ID,
+      HEURES_A_PAYER             = v.HEURES_A_PAYER,
+      HEURES_A_PAYER_POND        = v.HEURES_A_PAYER_POND,
+      HEURES_DEMANDEES           = v.HEURES_DEMANDEES,
+      HEURES_PAYEES              = v.HEURES_PAYEES,
+      to_delete = 0
 
+    WHEN NOT MATCHED THEN INSERT (
 
-/
-ALTER TRIGGER "F_MODULATEUR" ENABLE;
+      ID,
+      ANNEE_ID,
+      INTERVENANT_ID,
+      STRUCTURE_ID,
+      MISE_EN_PAIEMENT_ID,
+      PERIODE_PAIEMENT_ID,
+      HEURES_A_PAYER,
+      HEURES_A_PAYER_POND,
+      HEURES_DEMANDEES,
+      HEURES_PAYEES,
+      FORMULE_RES_SERVICE_ID,
+      FORMULE_RES_SERVICE_REF_ID,
+      TO_DELETE
 
--- F_MODULATEUR_S
-CREATE OR REPLACE TRIGGER "F_MODULATEUR_S" 
-  AFTER DELETE OR UPDATE ON "MODULATEUR"
-  BEGIN
-    UNICAEN_TBL.CALCULER_DEMANDES;
-END;
+    ) VALUES (
 
+      TBL_PAIEMENT_ID_SEQ.NEXTVAL,
+      v.ANNEE_ID,
+      v.INTERVENANT_ID,
+      v.STRUCTURE_ID,
+      v.MISE_EN_PAIEMENT_ID,
+      v.PERIODE_PAIEMENT_ID,
+      v.HEURES_A_PAYER,
+      v.HEURES_A_PAYER_POND,
+      v.HEURES_DEMANDEES,
+      v.HEURES_PAYEES,
+      v.FORMULE_RES_SERVICE_ID,
+      v.FORMULE_RES_SERVICE_REF_ID,
+      0
 
-/
-ALTER TRIGGER "F_MODULATEUR_S" ENABLE;
+    );
 
--- F_MOTIF_MODIFICATION_SERVICE
-CREATE OR REPLACE TRIGGER "F_MOTIF_MODIFICATION_SERVICE" 
-  AFTER DELETE OR UPDATE ON "MOTIF_MODIFICATION_SERVICE"
-  REFERENCING FOR EACH ROW
-  BEGIN
+    DELETE TBL_PAIEMENT WHERE to_delete = 1 AND ' || conds || ';
 
-  IF NOT UNICAEN_TBL.ACTIV_TRIGGERS THEN RETURN; END IF;
+    END;';
 
-  FOR p IN (
+  END;
 
-    SELECT DISTINCT
-      intervenant_id
-    FROM
-      modification_service_du msd
-    WHERE
-      msd.histo_destruction IS NULL
-      AND (msd.motif_id = :NEW.id OR msd.motif_id = :OLD.id)
 
-  ) LOOP
 
-    UNICAEN_TBL.DEMANDE_CALCUL('formule', UNICAEN_TBL.make_params('INTERVENANT_ID', p.intervenant_id) );
+  PROCEDURE C_PIECE_JOINTE( PARAMS UNICAEN_TBL.T_PARAMS ) IS
+    conds CLOB;
+  BEGIN
+    conds := params_to_conds( params );
 
-  END LOOP;
+    EXECUTE IMMEDIATE 'BEGIN
 
-END;
+    UPDATE TBL_PIECE_JOINTE SET to_delete = 1 WHERE ' || conds || ';
 
+    MERGE INTO
+      TBL_PIECE_JOINTE t
+    USING (
 
-/
-ALTER TRIGGER "F_MOTIF_MODIFICATION_SERVICE" ENABLE;
+      SELECT
+        tv.*
+      FROM
+        (WITH pjf AS (
+          SELECT
+            pjf.annee_id,
+            pjf.type_piece_jointe_id,
+            pjf.intervenant_id,
+            COUNT(*) count,
+            SUM(CASE WHEN validation_id IS NULL THEN 0 ELSE 1 END) validation,
+            SUM(CASE WHEN fichier_id IS NULL THEN 0 ELSE 1 END) fichier
+          FROM
+            tbl_piece_jointe_fournie pjf
+          GROUP BY
+            pjf.annee_id,
+            pjf.type_piece_jointe_id,
+            pjf.intervenant_id
+        )
+        SELECT
+          NVL( pjd.annee_id, pjf.annee_id ) annee_id,
+          NVL( pjd.type_piece_jointe_id, pjf.type_piece_jointe_id ) type_piece_jointe_id,
+          NVL( pjd.intervenant_id, pjf.intervenant_id ) intervenant_id,
+          CASE WHEN pjd.intervenant_id IS NULL THEN 0 ELSE 1 END demandee,
+          CASE WHEN pjf.fichier = pjf.count THEN 1 ELSE 0 END fournie,
+          CASE WHEN pjf.validation = pjf.count THEN 1 ELSE 0 END validee,
+          NVL(pjd.heures_pour_seuil,0) heures_pour_seuil
+        FROM
+          tbl_piece_jointe_demande pjd
+          FULL JOIN pjf ON pjf.type_piece_jointe_id = pjd.type_piece_jointe_id AND pjf.intervenant_id = pjd.intervenant_id) tv
+      WHERE
+        ' || conds || '
 
--- F_MOTIF_MODIFICATION_SERVICE_S
-CREATE OR REPLACE TRIGGER "F_MOTIF_MODIFICATION_SERVICE_S" 
-  AFTER DELETE OR UPDATE ON "MOTIF_MODIFICATION_SERVICE"
-  BEGIN
-  UNICAEN_TBL.CALCULER_DEMANDES;
-END;
+    ) v ON (
+            t.TYPE_PIECE_JOINTE_ID = v.TYPE_PIECE_JOINTE_ID
+        AND t.INTERVENANT_ID       = v.INTERVENANT_ID
 
+    ) WHEN MATCHED THEN UPDATE SET
 
-/
-ALTER TRIGGER "F_MOTIF_MODIFICATION_SERVICE_S" ENABLE;
+      ANNEE_ID             = v.ANNEE_ID,
+      DEMANDEE             = v.DEMANDEE,
+      FOURNIE              = v.FOURNIE,
+      VALIDEE              = v.VALIDEE,
+      HEURES_POUR_SEUIL    = v.HEURES_POUR_SEUIL,
+      to_delete = 0
 
--- F_STATUT_INTERVENANT
-CREATE OR REPLACE TRIGGER "F_STATUT_INTERVENANT" 
-  AFTER UPDATE OF SERVICE_STATUTAIRE, DEPASSEMENT, TYPE_INTERVENANT_ID, NON_AUTORISE ON "STATUT_INTERVENANT"
-  REFERENCING FOR EACH ROW
-  BEGIN
+    WHEN NOT MATCHED THEN INSERT (
 
-  IF NOT UNICAEN_TBL.ACTIV_TRIGGERS THEN RETURN; END IF;
+      ID,
+      ANNEE_ID,
+      TYPE_PIECE_JOINTE_ID,
+      INTERVENANT_ID,
+      DEMANDEE,
+      FOURNIE,
+      VALIDEE,
+      HEURES_POUR_SEUIL,
+      TO_DELETE
 
-  FOR p IN (
+    ) VALUES (
 
-    SELECT DISTINCT
-      fr.intervenant_id
-    FROM
-      intervenant i
-      JOIN formule_resultat fr ON fr.intervenant_id = i.id
-    WHERE
-      (i.statut_id = :NEW.id OR i.statut_id = :OLD.id)
-      AND i.histo_destruction IS NULL
+      TBL_PIECE_JOINTE_ID_SEQ.NEXTVAL,
+      v.ANNEE_ID,
+      v.TYPE_PIECE_JOINTE_ID,
+      v.INTERVENANT_ID,
+      v.DEMANDEE,
+      v.FOURNIE,
+      v.VALIDEE,
+      v.HEURES_POUR_SEUIL,
+      0
 
-  ) LOOP
+    );
 
-    UNICAEN_TBL.DEMANDE_CALCUL('formule', UNICAEN_TBL.make_params('INTERVENANT_ID', p.intervenant_id) );
+    DELETE TBL_PIECE_JOINTE WHERE to_delete = 1 AND ' || conds || ';
 
-  END LOOP;
-END;
+    END;';
 
+  END;
 
-/
-ALTER TRIGGER "F_STATUT_INTERVENANT" ENABLE;
 
--- F_STATUT_INTERVENANT_S
-CREATE OR REPLACE TRIGGER "F_STATUT_INTERVENANT_S" 
-  AFTER UPDATE ON "STATUT_INTERVENANT"
+
+  PROCEDURE C_PIECE_JOINTE_DEMANDE( PARAMS UNICAEN_TBL.T_PARAMS ) IS
+    conds CLOB;
   BEGIN
-  UNICAEN_TBL.CALCULER_DEMANDES;
-END;
+    conds := params_to_conds( params );
 
+    EXECUTE IMMEDIATE 'BEGIN
 
-/
-ALTER TRIGGER "F_STATUT_INTERVENANT_S" ENABLE;
+    UPDATE TBL_PIECE_JOINTE_DEMANDE SET to_delete = 1 WHERE ' || conds || ';
 
--- F_TYPE_INTERVENTION
-CREATE OR REPLACE TRIGGER "F_TYPE_INTERVENTION" 
-  AFTER UPDATE OF TAUX_HETD_SERVICE, TAUX_HETD_COMPLEMENTAIRE ON "TYPE_INTERVENTION"
-  REFERENCING FOR EACH ROW
-  BEGIN
+    MERGE INTO
+      TBL_PIECE_JOINTE_DEMANDE t
+    USING (
 
-  IF NOT UNICAEN_TBL.ACTIV_TRIGGERS THEN RETURN; END IF;
+      SELECT
+        tv.*
+      FROM
+        (WITH i_h AS (
+          SELECT
+            s.intervenant_id,
+            sum(vh.heures) heures,
+            sum(ep.taux_fc) fc
+          FROM
+                 service               s
+            JOIN type_volume_horaire tvh ON tvh.code = ''PREVU''
+            JOIN volume_horaire       vh ON vh.service_id = s.id
+                                        AND vh.type_volume_horaire_id = tvh.id
+                                        AND vh.histo_destruction IS NULL
+            JOIN element_pedagogique ep ON ep.id = s.element_pedagogique_id -- Service sur l''établissement
+          WHERE
+            s.histo_destruction IS NULL
+            AND vh.motif_non_paiement_id IS NULL -- pas de motif de non paiement
+          GROUP BY
+            s.intervenant_id
+        )
+        SELECT
+          i.annee_id                      annee_id,
+          i.id                            intervenant_id,
+          tpj.id                          type_piece_jointe_id,
+          MAX(COALESCE(i_h.heures, 0))    heures_pour_seuil
+        FROM
+                    intervenant                 i
 
-  FOR p IN (
+          LEFT JOIN dossier                     d ON d.intervenant_id = i.id
+                                                 AND d.histo_destruction IS NULL
 
-    SELECT DISTINCT
-      s.intervenant_id
-    FROM
-      volume_horaire vh
-      JOIN service s ON s.id = vh.service_id AND s.histo_destruction IS NULL
-    WHERE
-      vh.histo_destruction IS NULL
-      AND (vh.type_intervention_id = :NEW.id OR vh.type_intervention_id = :OLD.id)
+               JOIN type_piece_jointe_statut tpjs ON tpjs.statut_intervenant_id = i.statut_id
+                                                 AND tpjs.histo_destruction IS NULL
+                                                 AND i.annee_id BETWEEN COALESCE(tpjs.annee_debut_id,i.annee_id) AND COALESCE(tpjs.annee_fin_id,i.annee_id)
 
-  ) LOOP
+               JOIN type_piece_jointe         tpj ON tpj.id = tpjs.type_piece_jointe_id
+                                                 AND tpj.histo_destruction IS NULL
 
-    UNICAEN_TBL.DEMANDE_CALCUL('formule', UNICAEN_TBL.make_params('INTERVENANT_ID', p.intervenant_id) );
+          LEFT JOIN                           i_h ON i_h.intervenant_id = i.id
+        WHERE
+          -- Gestion de l''historique
+          i.histo_destruction IS NULL
 
-  END LOOP;
-END;
+          -- Seuil HETD
+          AND (COALESCE(i_h.heures,0) > COALESCE(tpjs.seuil_hetd,-1))
 
+          -- En fonction du premier recrutement ou non
+          AND (tpjs.premier_recrutement = 0 OR COALESCE(i.premier_recrutement,0) = 1)
 
-/
-ALTER TRIGGER "F_TYPE_INTERVENTION" ENABLE;
+          -- Le RIB n''est demandé QUE s''il est différent!!
+          AND CASE
+                WHEN tpjs.changement_rib = 0 OR d.id IS NULL THEN 1
+                ELSE CASE WHEN replace(i.bic, '' '', '''') || ''-'' || replace(i.iban, '' '', '''') = d.rib THEN 0 ELSE 1 END
+              END = 1
 
--- F_TYPE_INTERVENTION_S
-CREATE OR REPLACE TRIGGER "F_TYPE_INTERVENTION_S" 
-  AFTER UPDATE ON "TYPE_INTERVENTION"
-  BEGIN
-  UNICAEN_TBL.CALCULER_DEMANDES;
-END;
+          -- Filtre FC
+          AND (tpjs.fc = 0 OR i_h.fc > 0)
+        GROUP BY
+          i.annee_id,
+          i.id,
+          tpj.id) tv
+      WHERE
+        ' || conds || '
 
+    ) v ON (
+            t.TYPE_PIECE_JOINTE_ID = v.TYPE_PIECE_JOINTE_ID
+        AND t.INTERVENANT_ID       = v.INTERVENANT_ID
 
-/
-ALTER TRIGGER "F_TYPE_INTERVENTION_S" ENABLE;
+    ) WHEN MATCHED THEN UPDATE SET
 
--- INDIC_TRG_MODIF_DOSSIER
-CREATE OR REPLACE TRIGGER "INDIC_TRG_MODIF_DOSSIER" 
-  AFTER INSERT OR UPDATE OF NOM_USUEL, NOM_PATRONYMIQUE, PRENOM, CIVILITE_ID, ADRESSE, RIB, DATE_NAISSANCE ON "DOSSIER"
+      ANNEE_ID             = v.ANNEE_ID,
+      HEURES_POUR_SEUIL    = v.HEURES_POUR_SEUIL,
+      to_delete = 0
 
-  FOR EACH ROW
-/**
- * But : mettre à jour la liste des PJ attendues.
- */
-DECLARE
-  i integer := 1;
-  intervenantId NUMERIC;
-  found integer;
-  estCreationDossier integer;
-  type array_t is table of varchar2(1024);
-  
-  attrNames     array_t := array_t();
-  attrOldVals   array_t := array_t();
-  attrNewVals   array_t := array_t();
-  
-  -- valeurs importées (format texte) :
-  impSourceName source.libelle%type;
-  impNomUsuel   indic_modif_dossier.ATTR_NEW_VALUE%type;
-  impNomPatro   indic_modif_dossier.ATTR_NEW_VALUE%type;
-  impPrenom     indic_modif_dossier.ATTR_NEW_VALUE%type;
-  impCivilite   indic_modif_dossier.ATTR_NEW_VALUE%type;
-  impDateNaiss  indic_modif_dossier.ATTR_NEW_VALUE%type;
-  impAdresse    indic_modif_dossier.ATTR_NEW_VALUE%type;
-  impRib        indic_modif_dossier.ATTR_NEW_VALUE%type;
-  -- anciennes valeurs dans le dossier (format texte) :
-  oldSourceName source.libelle%type;
-  oldNomUsuel   indic_modif_dossier.ATTR_NEW_VALUE%type;
-  oldNomPatro   indic_modif_dossier.ATTR_NEW_VALUE%type;
-  oldPrenom     indic_modif_dossier.ATTR_NEW_VALUE%type;
-  oldCivilite   indic_modif_dossier.ATTR_NEW_VALUE%type;
-  oldDateNaiss  indic_modif_dossier.ATTR_NEW_VALUE%type;
-  oldAdresse    indic_modif_dossier.ATTR_NEW_VALUE%type;
-  oldRib        indic_modif_dossier.ATTR_NEW_VALUE%type;
-  -- nouvelles valeurs dans le dossier (format texte) :
-  newSourceName source.libelle%type;
-  newNomUsuel   indic_modif_dossier.ATTR_NEW_VALUE%type;
-  newNomPatro   indic_modif_dossier.ATTR_NEW_VALUE%type;
-  newPrenom     indic_modif_dossier.ATTR_NEW_VALUE%type;
-  newCivilite   indic_modif_dossier.ATTR_NEW_VALUE%type;
-  newDateNaiss  indic_modif_dossier.ATTR_NEW_VALUE%type;
-  newAdresse    indic_modif_dossier.ATTR_NEW_VALUE%type;
-  newRib        indic_modif_dossier.ATTR_NEW_VALUE%type;
-BEGIN
-  --
-  -- Témoin indiquant s'il s'agit d'une création de dossier (insert).
-  --
-  estCreationDossier := case when inserting then 1 else 0 end;
-  
-  --
-  -- Fetch source OSE.
-  --
-  select s.libelle into newSourceName from source s where s.code = 'OSE';
-  
-  -- 
-  -- Fetch et formattage texte des valeurs importées.
-  --
-  select 
-      i.id,
-      s.libelle, 
-      nvl(i.NOM_USUEL, '(Aucun)'), 
-      nvl(i.NOM_PATRONYMIQUE, '(Aucun)'), 
-      nvl(i.PRENOM, '(Aucun)'), 
-      nvl(c.libelle_court, '(Aucune)'), 
-      nvl(to_char(i.DATE_NAISSANCE, 'DD/MM/YYYY'), '(Aucune)'), 
-      nvl(ose_divers.formatted_rib(i.bic, i.iban), '(Aucun)'), 
-      case when a.id is not null  
-        then ose_divers.formatted_adresse(a.NO_VOIE, a.NOM_VOIE, a.BATIMENT, a.MENTION_COMPLEMENTAIRE, a.LOCALITE, a.CODE_POSTAL, a.VILLE, a.PAYS_LIBELLE) 
-        else '(Aucune)'
-      end
-    into 
-      intervenantId,
-      oldSourceName, 
-      impNomUsuel, 
-      impNomPatro, 
-      impPrenom, 
-      impCivilite, 
-      impDateNaiss, 
-      impRib, 
-      impAdresse
-    from intervenant i
-    join source s on s.id = i.source_id
-    left join civilite c on c.id = i.civilite_id
-    left join adresse_intervenant a on a.intervenant_id = i.id
-    where i.id = :NEW.intervenant_id;
-  
-  -- 
-  -- Anciennes valeurs dans le cas d'une création de dossier : ce sont les valeurs importées.
-  -- 
-  if (1 = estCreationDossier) then
-    --dbms_output.put_line('inserting');
-    oldNomUsuel  := impNomUsuel;
-    oldNomPatro  := impNomPatro;
-    oldPrenom    := impPrenom;
-    oldCivilite  := impCivilite;
-    oldDateNaiss := impDateNaiss;
-    oldAdresse   := impAdresse;
-    oldRib       := impRib;
-  -- 
-  -- Anciennes valeurs dans le cas d'une mise à jour du dossier.
-  -- 
-  else
-    --dbms_output.put_line('updating');
-    oldNomUsuel     := trim(:OLD.NOM_USUEL);
-    oldNomPatro     := trim(:OLD.NOM_PATRONYMIQUE);
-    oldPrenom       := trim(:OLD.PRENOM);
-    oldDateNaiss    := case when :OLD.DATE_NAISSANCE is null then '(Aucune)' else to_char(:OLD.DATE_NAISSANCE, 'DD/MM/YYYY') end;
-    oldAdresse      := trim(:OLD.ADRESSE);
-    oldRib          := trim(:OLD.RIB);
-    if :OLD.CIVILITE_ID is not null then
-      select c.libelle_court into oldCivilite from civilite c where c.id = :OLD.CIVILITE_ID;
-    else
-      oldCivilite := '(Aucune)';
-    end if;
-    select s.libelle into oldSourceName from source s where s.code = 'OSE';
-  end if;
-  
-  -- 
-  -- Nouvelles valeurs saisies.
-  --
-  newNomUsuel   := trim(:NEW.NOM_USUEL);
-  newNomPatro   := trim(:NEW.NOM_PATRONYMIQUE);
-  newPrenom     := trim(:NEW.PRENOM);
-  newDateNaiss  := case when :NEW.DATE_NAISSANCE is null then '(Aucune)' else to_char(:NEW.DATE_NAISSANCE, 'DD/MM/YYYY') end;
-  newAdresse    := trim(:NEW.ADRESSE);
-  newRib        := trim(:NEW.RIB);
-  if :NEW.CIVILITE_ID is not null then
-    select c.libelle_court into newCivilite from civilite c where c.id = :NEW.CIVILITE_ID;
-  else
-    newCivilite := '(Aucune)';
-  end if;
-    
-  --
-  -- Détection des différences.
-  --
-  if newNomUsuel <> oldNomUsuel then
-    --dbms_output.put_line('NOM_USUEL ' || sourceLib || ' = ' || oldNomUsuel || ' --> NOM_USUEL OSE = ' || :NEW.NOM_USUEL);
-    attrNames.extend(1);
-    attrOldVals.extend(1);
-    attrNewVals.extend(1);
-    attrNames(i)   := 'Nom usuel';
-    attrOldVals(i) := oldNomUsuel;
-    attrNewVals(i) := newNomUsuel;
-    i := i + 1;
-  end if;  
-  if newNomPatro <> oldNomPatro then
-    --dbms_output.put_line('NOM_PATRONYMIQUE ' || sourceLib || ' = ' || oldNomPatro || ' --> NOM_PATRONYMIQUE OSE = ' || :NEW.NOM_PATRONYMIQUE);
-    attrNames.extend(1);
-    attrOldVals.extend(1);
-    attrNewVals.extend(1);
-    attrNames(i)   := 'Nom de naissance';
-    attrOldVals(i) := oldNomPatro;
-    attrNewVals(i) := newNomPatro;
-    i := i + 1;
-  end if;  
-  if newPrenom <> oldPrenom then
-    --dbms_output.put_line('PRENOM ' || sourceLib || ' = ' || oldPrenom || ' --> PRENOM OSE = ' || :NEW.PRENOM);
-    attrNames.extend(1);
-    attrOldVals.extend(1);
-    attrNewVals.extend(1);
-    attrNames(i)   := 'Prénom';
-    attrOldVals(i) := oldPrenom;
-    attrNewVals(i) := newPrenom;
-    i := i + 1;
-  end if;  
-  if newCivilite <> oldCivilite then
-    --dbms_output.put_line('CIVILITE_ID ' || sourceLib || ' = ' || oldCivilite || ' --> CIVILITE_ID OSE = ' || :NEW.CIVILITE_ID);
-    attrNames.extend(1);
-    attrOldVals.extend(1);
-    attrNewVals.extend(1);
-    attrNames(i)   := 'Civilité';
-    attrOldVals(i) := oldCivilite;
-    attrNewVals(i) := newCivilite;
-    i := i + 1;
-  end if;  
-  if newDateNaiss <> oldDateNaiss then
-    --dbms_output.put_line('DATE_NAISSANCE ' || sourceLib || ' = ' || oldDateNaiss || ' --> DATE_NAISSANCE OSE = ' || :NEW.DATE_NAISSANCE);
-    attrNames.extend(1);
-    attrOldVals.extend(1);
-    attrNewVals.extend(1);
-    attrNames(i)   := 'Date de naissance';
-    attrOldVals(i) := oldDateNaiss;
-    attrNewVals(i) := newDateNaiss;
-    i := i + 1;
-  end if;  
-  if newAdresse <> oldAdresse then
-    --dbms_output.put_line('ADRESSE ' || sourceLib || ' = ' || oldAdresse || ' --> ADRESSE OSE = ' || :NEW.ADRESSE);
-    attrNames.extend(1);
-    attrOldVals.extend(1);
-    attrNewVals.extend(1);
-    attrNames(i)   := 'Adresse postale';
-    attrOldVals(i) := oldAdresse;
-    attrNewVals(i) := newAdresse;
-    i := i + 1;
-  end if;  
-  if oldRib is null or newRib <> oldRib then
-    --dbms_output.put_line('RIB ' || sourceLib || ' = ' || oldRib || ' --> RIB OSE = ' || :NEW.RIB);
-    attrNames.extend(1);
-    attrOldVals.extend(1);
-    attrNewVals.extend(1);
-    attrNames(i)   := 'RIB';
-    attrOldVals(i) := oldRib;
-    attrNewVals(i) := newRib;
-    i := i + 1;
-  end if;
-  
-  --
-  -- Enregistrement des différences.
-  --
-  for i in 1 .. attrNames.count loop
-    --dbms_output.put_line(attrNames(i) || ' ' || oldSourceName || ' = ' || attrOldVals(i) || ' --> ' || attrNames(i) || ' ' || newSourceName || ' = ' || attrNewVals(i));
-    
-    -- vérification que la même modif n'est pas déjà consignée
-    select count(*) into found from indic_modif_dossier 
-      where INTERVENANT_ID = intervenantId
-      and ATTR_NAME = attrNames(i) 
-      and ATTR_OLD_VALUE = to_char(attrOldVals(i))
-      and ATTR_NEW_VALUE = to_char(attrNewVals(i));
-    if found > 0 then
-      continue;
-    end if;
-    
-    insert into INDIC_MODIF_DOSSIER(
-      id, 
-      INTERVENANT_ID, 
-      ATTR_NAME, 
-      ATTR_OLD_SOURCE_NAME, 
-      ATTR_OLD_VALUE, 
-      ATTR_NEW_SOURCE_NAME, 
-      ATTR_NEW_VALUE,
-      EST_CREATION_DOSSIER, -- témoin indiquant s'il s'agit d'une création ou d'une modification de dossier
-      HISTO_CREATION,       -- NB: date de modification du dossier
-      HISTO_CREATEUR_ID,    -- NB: auteur de la modification du dossier
-      HISTO_MODIFICATION,
-      HISTO_MODIFICATEUR_ID
-    ) 
-    values (
-      indic_modif_dossier_id_seq.nextval, 
-      intervenantId,
-      attrNames(i), 
-      oldSourceName, 
-      to_char(attrOldVals(i)), 
-      newSourceName, 
-      to_char(attrNewVals(i)),
-      estCreationDossier,
-      :NEW.HISTO_MODIFICATION,
-      :NEW.HISTO_MODIFICATEUR_ID,
-      :NEW.HISTO_MODIFICATION,
-      :NEW.HISTO_MODIFICATEUR_ID
-    );
-  end loop;
-  
-END;
+    WHEN NOT MATCHED THEN INSERT (
 
-/
-ALTER TRIGGER "INDIC_TRG_MODIF_DOSSIER" ENABLE;
+      ID,
+      ANNEE_ID,
+      TYPE_PIECE_JOINTE_ID,
+      INTERVENANT_ID,
+      HEURES_POUR_SEUIL,
+      TO_DELETE
 
--- INTERVENANT_HORO_SERVICE
-CREATE OR REPLACE TRIGGER "INTERVENANT_HORO_SERVICE" 
-  AFTER INSERT OR DELETE OR UPDATE ON "SERVICE"
-  REFERENCING FOR EACH ROW
-  BEGIN
-  
-  IF DELETING THEN
-  
-    ose_divers.intervenant_horodatage_service(
-      :OLD.intervenant_id,
-      null,
-      0,
-      :OLD.histo_modificateur_id,
-      :OLD.histo_modification
-    );
-  
-  ELSE
+    ) VALUES (
+
+      TBL_PIECE_JOINTE_DEMAND_ID_SEQ.NEXTVAL,
+      v.ANNEE_ID,
+      v.TYPE_PIECE_JOINTE_ID,
+      v.INTERVENANT_ID,
+      v.HEURES_POUR_SEUIL,
+      0
 
-    ose_divers.intervenant_horodatage_service(
-      :NEW.intervenant_id,
-      null,
-      0,
-      :NEW.histo_modificateur_id,
-      :NEW.histo_modification
     );
-  
-  END IF;
 
-END;
+    DELETE TBL_PIECE_JOINTE_DEMANDE WHERE to_delete = 1 AND ' || conds || ';
 
-/
-ALTER TRIGGER "INTERVENANT_HORO_SERVICE" ENABLE;
+    END;';
 
--- INTERVENANT_HORO_SERVICE_REF
-CREATE OR REPLACE TRIGGER "INTERVENANT_HORO_SERVICE_REF" 
-  AFTER INSERT OR DELETE OR UPDATE ON "SERVICE_REFERENTIEL"
-  REFERENCING FOR EACH ROW
+  END;
+
+
+
+  PROCEDURE C_PIECE_JOINTE_FOURNIE( PARAMS UNICAEN_TBL.T_PARAMS ) IS
+    conds CLOB;
   BEGIN
-  
-  IF DELETING THEN
-  
-    ose_divers.intervenant_horodatage_service(
-      :OLD.intervenant_id,
-      null,
-      1,
-      :OLD.histo_modificateur_id,
-      :OLD.histo_modification
-    );
-  
-  ELSE
+    conds := params_to_conds( params );
 
-    ose_divers.intervenant_horodatage_service(
-      :NEW.intervenant_id,
-      null,
-      1,
-      :NEW.histo_modificateur_id,
-      :NEW.histo_modification
-    );
-  
-  END IF;
+    EXECUTE IMMEDIATE 'BEGIN
 
-END;
+    UPDATE TBL_PIECE_JOINTE_FOURNIE SET to_delete = 1 WHERE ' || conds || ';
 
-/
-ALTER TRIGGER "INTERVENANT_HORO_SERVICE_REF" ENABLE;
+    MERGE INTO
+      TBL_PIECE_JOINTE_FOURNIE t
+    USING (
 
--- INTERVENANT_HORO_VH
-CREATE OR REPLACE TRIGGER "INTERVENANT_HORO_VH" 
-  AFTER INSERT OR DELETE OR UPDATE ON "VOLUME_HORAIRE"
-  REFERENCING FOR EACH ROW
-  DECLARE
-  intervenant_id NUMERIC;
-BEGIN
-  
-  
-  
-  IF DELETING THEN
-    SELECT s.intervenant_id INTO intervenant_id FROM service s WHERE s.id = :OLD.service_id;
-  
-    ose_divers.intervenant_horodatage_service(
-      intervenant_id,
-      :OLD.type_volume_horaire_id,
-      0,
-      :OLD.histo_modificateur_id,
-      :OLD.histo_modification
-    );
-  
-  ELSE
-    SELECT s.intervenant_id INTO intervenant_id FROM service s WHERE s.id = :NEW.service_id;
-    
-    ose_divers.intervenant_horodatage_service(
-      intervenant_id,
-      :NEW.type_volume_horaire_id,
-      0,
-      :NEW.histo_modificateur_id,
-      :NEW.histo_modification
-    );
-  
-  END IF;
+      SELECT
+        tv.*
+      FROM
+        (SELECT
+          i.annee_id,
+          pj.type_piece_jointe_id,
+          pj.intervenant_id,
+          pj.id piece_jointe_id,
+          v.id validation_id,
+          f.id fichier_id
+        FROM
+                    piece_jointe          pj
+               JOIN intervenant            i ON i.id = pj.intervenant_id
+                                            AND i.histo_destruction IS NULL
 
-END;
+               JOIN piece_jointe_fichier pjf ON pjf.piece_jointe_id = pj.id
+               JOIN fichier                f ON f.id = pjf.fichier_id
+                                            AND f.histo_destruction IS NULL
 
-/
-ALTER TRIGGER "INTERVENANT_HORO_VH" ENABLE;
+          LEFT JOIN validation             v ON v.id = pj.validation_id
+                                            AND v.histo_destruction IS NULL
+        WHERE
+          pj.histo_destruction IS NULL) tv
+      WHERE
+        ' || conds || '
+
+    ) v ON (
+            t.TYPE_PIECE_JOINTE_ID = v.TYPE_PIECE_JOINTE_ID
+        AND t.INTERVENANT_ID       = v.INTERVENANT_ID
+        AND COALESCE(t.VALIDATION_ID,0) = COALESCE(v.VALIDATION_ID,0)
+        AND COALESCE(t.FICHIER_ID,0) = COALESCE(v.FICHIER_ID,0)
+
+    ) WHEN MATCHED THEN UPDATE SET
+
+      ANNEE_ID             = v.ANNEE_ID,
+      PIECE_JOINTE_ID      = v.PIECE_JOINTE_ID,
+      to_delete = 0
+
+    WHEN NOT MATCHED THEN INSERT (
+
+      ID,
+      ANNEE_ID,
+      TYPE_PIECE_JOINTE_ID,
+      INTERVENANT_ID,
+      VALIDATION_ID,
+      FICHIER_ID,
+      PIECE_JOINTE_ID,
+      TO_DELETE
+
+    ) VALUES (
+
+      TBL_PIECE_JOINTE_FOURNI_ID_SEQ.NEXTVAL,
+      v.ANNEE_ID,
+      v.TYPE_PIECE_JOINTE_ID,
+      v.INTERVENANT_ID,
+      v.VALIDATION_ID,
+      v.FICHIER_ID,
+      v.PIECE_JOINTE_ID,
+      0
 
--- INTERVENANT_HORO_VH_REF
-CREATE OR REPLACE TRIGGER "INTERVENANT_HORO_VH_REF" 
-  AFTER INSERT OR DELETE OR UPDATE ON "VOLUME_HORAIRE_REF"
-  REFERENCING FOR EACH ROW
-  DECLARE
-  intervenant_id NUMERIC;
-BEGIN
-  
-  
-  
-  IF DELETING THEN
-    SELECT s.intervenant_id INTO intervenant_id FROM service_referentiel s WHERE s.id = :OLD.service_referentiel_id;
-  
-    ose_divers.intervenant_horodatage_service(
-      intervenant_id,
-      :OLD.type_volume_horaire_id,
-      1,
-      :OLD.histo_modificateur_id,
-      :OLD.histo_modification
-    );
-  
-  ELSE
-    SELECT s.intervenant_id INTO intervenant_id FROM service_referentiel s WHERE s.id = :NEW.service_referentiel_id;
-    
-    ose_divers.intervenant_horodatage_service(
-      intervenant_id,
-      :NEW.type_volume_horaire_id,
-      1,
-      :NEW.histo_modificateur_id,
-      :NEW.histo_modification
     );
-  
-  END IF;
 
-END;
+    DELETE TBL_PIECE_JOINTE_FOURNIE WHERE to_delete = 1 AND ' || conds || ';
 
-/
-ALTER TRIGGER "INTERVENANT_HORO_VH_REF" ENABLE;
+    END;';
 
--- INTERVENANT_RECHERCHE
-CREATE OR REPLACE TRIGGER "INTERVENANT_RECHERCHE" 
-  BEFORE INSERT OR UPDATE OF NOM_USUEL, PRENOM, NOM_PATRONYMIQUE ON "INTERVENANT"
-  REFERENCING FOR EACH ROW
-  BEGIN
+  END;
 
-  :NEW.critere_recherche := ose_divers.str_reduce( :NEW.nom_usuel || ' ' || :NEW.nom_patronymique || ' ' || :NEW.prenom );
-  
-END;
 
-/
-ALTER TRIGGER "INTERVENANT_RECHERCHE" ENABLE;
 
--- MISE_EN_PAIEMENT_CK
-CREATE OR REPLACE TRIGGER "MISE_EN_PAIEMENT_CK" 
-  BEFORE INSERT OR UPDATE ON "MISE_EN_PAIEMENT"
-  REFERENCING FOR EACH ROW
-  DECLARE
-  has_validation NUMERIC;
-  has_mise_en_paiement NUMERIC;
-BEGIN
+  PROCEDURE C_SERVICE( PARAMS UNICAEN_TBL.T_PARAMS ) IS
+    conds CLOB;
+  BEGIN
+    conds := params_to_conds( params );
 
-  /* Initialisation des conditions */
-  SELECT COUNT(*) INTO has_validation FROM validation v WHERE 
-    v.id = :NEW.validation_id
-    AND v.histo_destruction IS NULL;
+    EXECUTE IMMEDIATE 'BEGIN
 
-  IF :NEW.date_mise_en_paiement IS NULL THEN
-    has_mise_en_paiement := 0;
-  ELSE
-    has_mise_en_paiement := 1;
-  END IF;
+    UPDATE TBL_SERVICE SET to_delete = 1 WHERE ' || conds || ';
 
-  /* Mise en place des contraintes */
-  IF :NEW.formule_res_service_id IS NULL AND :NEW.formule_res_service_ref_id IS NULL THEN
-    raise_application_error(-20101, 'La mise en paiement ne correspond à aucun service ou service référentiel.');
-  END IF;
+    MERGE INTO
+      TBL_SERVICE t
+    USING (
 
-  IF 1 = has_validation AND :NEW.date_validation IS NULL THEN
-    raise_application_error(-20101, 'La validation de la mise en paiement numéro ' || :NEW.id || ' est bien renseignée mais la date de validation n''est pas précisée.');
-  END IF;
+      SELECT
+        tv.*
+      FROM
+        (WITH t AS (
+        SELECT
+          s.id                                                                                      service_id,
+          s.intervenant_id                                                                          intervenant_id,
+          ep.structure_id                                                                           structure_id,
+          ep.id                                                                                     element_pedagogique_id,
+          ep.periode_id                                                                             element_pedagogique_periode_id,
+          etp.id                                                                                    etape_id,
 
-  IF :NEW.periode_paiement_id IS NOT NULL AND :NEW.date_mise_en_paiement IS NULL THEN
-    raise_application_error(-20101, 'La mise en paiement numéro ' || :NEW.id || ' est bien effectuée mais la date de mise en paiement n''est pas précisée.');
-  END IF;
+          vh.type_volume_horaire_id                                                                 type_volume_horaire_id,
+          vh.heures                                                                                 heures,
+          tvh.code                                                                                  type_volume_horaire_code,
 
---  IF 0 = has_validation AND 1 = has_mise_en_paiement THEN
---    raise_application_error(-20101, 'La demande de mise en paiement numéro ' || :NEW.id || ' ne peut faire l''objet d''une mise en paiement tant qu''elle n''est pas validée.');
---  END IF;
+          CASE WHEN ep.histo_destruction IS NULL THEN 1 ELSE 0 END                                  element_pedagogique_histo,
+          CASE WHEN etp.histo_destruction IS NULL OR cp.id IS NOT NULL THEN 1 ELSE 0 END            etape_histo,
 
-  IF 
-    :OLD.validation_id IS NOT NULL AND :OLD.histo_destruction IS NULL
-    AND 1 = has_validation AND :NEW.histo_destruction IS NOT NULL
-  THEN
-    raise_application_error(-20101, 'Il est impossible de supprimer une mise en paiement validée.');
-  END IF;
-END;
+          CASE WHEN ep.periode_id IS NOT NULL THEN
+            SUM( CASE WHEN vh.periode_id <> ep.periode_id THEN 1 ELSE 0 END ) OVER( PARTITION BY vh.service_id, vh.periode_id, vh.type_volume_horaire_id, vh.type_intervention_id )
+          ELSE 0 END has_heures_mauvaise_periode,
+
+          CASE WHEN v.id IS NULL THEN 0 ELSE 1 END valide
+        FROM
+          service                                       s
+          LEFT JOIN element_pedagogique                ep ON ep.id = s.element_pedagogique_id
+          LEFT JOIN etape                             etp ON etp.id = ep.etape_id
+          LEFT JOIN chemin_pedagogique                 cp ON cp.etape_id = etp.id
+                                                         AND cp.element_pedagogique_id = ep.id
+                                                         AND cp.histo_destruction IS NULL
 
+               JOIN volume_horaire                     vh ON vh.service_id = s.id
+                                                         AND vh.histo_destruction IS NULL
 
-/
-ALTER TRIGGER "MISE_EN_PAIEMENT_CK" ENABLE;
+               JOIN type_volume_horaire               tvh ON tvh.id = vh.type_volume_horaire_id
 
--- MISE_EN_PAIEMENT_DEL_CK
-CREATE OR REPLACE TRIGGER "MISE_EN_PAIEMENT_DEL_CK" 
-  BEFORE DELETE ON "MISE_EN_PAIEMENT"
-  REFERENCING FOR EACH ROW
-  DECLARE
-  has_validation NUMERIC;
-BEGIN
+          LEFT JOIN validation_vol_horaire            vvh ON vvh.volume_horaire_id = vh.id
 
-  /* Initialisation des conditions */
-  SELECT COUNT(*) INTO has_validation FROM validation v WHERE 
-    v.id = :NEW.validation_id
-    AND v.histo_destruction IS NULL;
+          LEFT JOIN validation                          v ON v.id = vvh.validation_id
+                                                         AND v.histo_destruction IS NULL
+        WHERE
+          s.histo_destruction IS NULL
+        )
+        SELECT
+          i.annee_id                                                                                annee_id,
+          i.id                                                                                      intervenant_id,
+          i.structure_id                                                                            intervenant_structure_id,
+          NVL( t.structure_id, i.structure_id )                                                     structure_id,
+          ti.id                                                                                     type_intervenant_id,
+          ti.code                                                                                   type_intervenant_code,
+          si.peut_saisir_service                                                                    peut_saisir_service,
 
-  /* Mise en place des contraintes */
-  IF 
-    1 = has_validation AND :OLD.histo_destruction IS NOT NULL
-  THEN
-    raise_application_error(-20101, 'Il est impossible de supprimer une mise en paiement validée.');
-  END IF;
-END;
+          t.element_pedagogique_id,
+          t.service_id,
+          t.element_pedagogique_periode_id,
+          t.etape_id,
+          t.type_volume_horaire_id,
+          t.type_volume_horaire_code,
+          t.element_pedagogique_histo,
+          t.etape_histo,
 
+          CASE WHEN SUM(t.has_heures_mauvaise_periode) > 0 THEN 1 ELSE 0 END has_heures_mauvaise_periode,
 
-/
-ALTER TRIGGER "MISE_EN_PAIEMENT_DEL_CK" ENABLE;
+          CASE WHEN type_volume_horaire_id IS NULL THEN 0 ELSE count(*) END nbvh,
+          CASE WHEN type_volume_horaire_id IS NULL THEN 0 ELSE sum(t.heures) END heures,
+          sum(valide) valide
+        FROM
+          t
+          JOIN intervenant                              i ON i.id = t.intervenant_id
+          JOIN statut_intervenant                      si ON si.id = i.statut_id
+          JOIN type_intervenant                        ti ON ti.id = si.type_intervenant_id
+        GROUP BY
+          i.annee_id,
+          i.id,
+          i.structure_id,
+          t.structure_id,
+          i.structure_id,
+          ti.id,
+          ti.code,
+          si.peut_saisir_service,
+          t.element_pedagogique_id,
+          t.service_id,
+          t.element_pedagogique_periode_id,
+          t.etape_id,
+          t.type_volume_horaire_id,
+          t.type_volume_horaire_code,
+          t.element_pedagogique_histo,
+          t.etape_histo) tv
+      WHERE
+        ' || conds || '
 
--- SERVICE_CK
-CREATE OR REPLACE TRIGGER "SERVICE_CK" 
-  BEFORE INSERT OR UPDATE ON "SERVICE"
-  REFERENCING FOR EACH ROW
-  DECLARE 
-  etablissement integer;
-  res integer;
-BEGIN
+    ) v ON (
+            COALESCE(t.TYPE_VOLUME_HORAIRE_ID,0) = COALESCE(v.TYPE_VOLUME_HORAIRE_ID,0)
+        AND t.SERVICE_ID             = v.SERVICE_ID
 
-  etablissement := OSE_PARAMETRE.GET_ETABLISSEMENT();
+    ) WHEN MATCHED THEN UPDATE SET
 
-  IF :NEW.etablissement_id = etablissement AND :NEW.element_pedagogique_id IS NULL THEN
-    raise_application_error(-20101, 'Un enseignement doit obligatoirement être renseigné si le service est réalisé en interne.');
-  END IF;
+      ANNEE_ID                       = v.ANNEE_ID,
+      INTERVENANT_ID                 = v.INTERVENANT_ID,
+      PEUT_SAISIR_SERVICE            = v.PEUT_SAISIR_SERVICE,
+      STRUCTURE_ID                   = v.STRUCTURE_ID,
+      NBVH                           = v.NBVH,
+      VALIDE                         = v.VALIDE,
+      ELEMENT_PEDAGOGIQUE_ID         = v.ELEMENT_PEDAGOGIQUE_ID,
+      ELEMENT_PEDAGOGIQUE_PERIODE_ID = v.ELEMENT_PEDAGOGIQUE_PERIODE_ID,
+      ETAPE_ID                       = v.ETAPE_ID,
+      ELEMENT_PEDAGOGIQUE_HISTO      = v.ELEMENT_PEDAGOGIQUE_HISTO,
+      ETAPE_HISTO                    = v.ETAPE_HISTO,
+      HAS_HEURES_MAUVAISE_PERIODE    = v.HAS_HEURES_MAUVAISE_PERIODE,
+      INTERVENANT_STRUCTURE_ID       = v.INTERVENANT_STRUCTURE_ID,
+      TYPE_INTERVENANT_ID            = v.TYPE_INTERVENANT_ID,
+      TYPE_INTERVENANT_CODE          = v.TYPE_INTERVENANT_CODE,
+      TYPE_VOLUME_HORAIRE_CODE       = v.TYPE_VOLUME_HORAIRE_CODE,
+      HEURES                         = v.HEURES,
+      to_delete = 0
 
+    WHEN NOT MATCHED THEN INSERT (
 
-  IF :NEW.etablissement_id <> etablissement AND OSE_DIVERS.INTERVENANT_HAS_PRIVILEGE(:NEW.intervenant_id, 'saisie_service_exterieur') = 0 THEN
-    raise_application_error(-20101, 'Les intervenants vacataires n''ont pas la possibilité de renseigner des enseignements pris à l''extérieur.');
-  END IF;
+      ID,
+      ANNEE_ID,
+      INTERVENANT_ID,
+      PEUT_SAISIR_SERVICE,
+      TYPE_VOLUME_HORAIRE_ID,
+      STRUCTURE_ID,
+      NBVH,
+      VALIDE,
+      ELEMENT_PEDAGOGIQUE_ID,
+      ELEMENT_PEDAGOGIQUE_PERIODE_ID,
+      ETAPE_ID,
+      ELEMENT_PEDAGOGIQUE_HISTO,
+      ETAPE_HISTO,
+      HAS_HEURES_MAUVAISE_PERIODE,
+      SERVICE_ID,
+      INTERVENANT_STRUCTURE_ID,
+      TYPE_INTERVENANT_ID,
+      TYPE_INTERVENANT_CODE,
+      TYPE_VOLUME_HORAIRE_CODE,
+      HEURES,
+      TO_DELETE
 
-  IF :NEW.intervenant_id IS NOT NULL AND :NEW.element_pedagogique_id IS NOT NULL THEN
-    SELECT
-      count(*) INTO res
-    FROM
-      intervenant i,
-      element_pedagogique ep
-    WHERE
-          i.id        = :NEW.intervenant_id
-      AND ep.id       = :NEW.element_pedagogique_id
-      AND ep.annee_id = i.annee_id
-    ;
+    ) VALUES (
 
-    IF 0 = res THEN -- années non concomitantes
-      raise_application_error(-20101, 'L''année de l''intervenant ne correspond pas à l''année de l''élément pédagogique.');
-    END IF;
-  END IF;
+      TBL_SERVICE_ID_SEQ.NEXTVAL,
+      v.ANNEE_ID,
+      v.INTERVENANT_ID,
+      v.PEUT_SAISIR_SERVICE,
+      v.TYPE_VOLUME_HORAIRE_ID,
+      v.STRUCTURE_ID,
+      v.NBVH,
+      v.VALIDE,
+      v.ELEMENT_PEDAGOGIQUE_ID,
+      v.ELEMENT_PEDAGOGIQUE_PERIODE_ID,
+      v.ETAPE_ID,
+      v.ELEMENT_PEDAGOGIQUE_HISTO,
+      v.ETAPE_HISTO,
+      v.HAS_HEURES_MAUVAISE_PERIODE,
+      v.SERVICE_ID,
+      v.INTERVENANT_STRUCTURE_ID,
+      v.TYPE_INTERVENANT_ID,
+      v.TYPE_INTERVENANT_CODE,
+      v.TYPE_VOLUME_HORAIRE_CODE,
+      v.HEURES,
+      0
 
-END;
+    );
 
-/
-ALTER TRIGGER "SERVICE_CK" ENABLE;
+    DELETE TBL_SERVICE WHERE to_delete = 1 AND ' || conds || ';
 
--- SERVICE_HISTO_CK
-CREATE OR REPLACE TRIGGER "SERVICE_HISTO_CK" 
-  BEFORE UPDATE OF intervenant_id, element_pedagogique_id, etablissement_id ON "SERVICE" 
-  REFERENCING FOR EACH ROW
-  DECLARE
-  has_validation integer;
-BEGIN
-  SELECT COUNT(*) INTO has_validation
-  FROM
-    VALIDATION_VOL_HORAIRE vvh
-    JOIN validation v ON v.id = VVH.VALIDATION_ID
-    JOIN volume_horaire vh ON vh.id = VVH.VOLUME_HORAIRE_ID
-  WHERE
-    V.HISTO_DESTRUCTION IS NULL
-    AND vh.service_ID = :NEW.ID;
+    END;';
 
-  IF 0 <> has_validation THEN
-    raise_application_error(-20101, 'Il est impossible de modifier ou supprimer un service dont des heures ont déjà été validées.');
-  END IF;
+  END;
 
-END;
 
-/
-ALTER TRIGGER "SERVICE_HISTO_CK" ENABLE;
 
--- SERVICE_HISTO_CK_S
-CREATE OR REPLACE TRIGGER "SERVICE_HISTO_CK_S" 
-  AFTER UPDATE ON "SERVICE"
+  PROCEDURE C_SERVICE_REFERENTIEL( PARAMS UNICAEN_TBL.T_PARAMS ) IS
+    conds CLOB;
   BEGIN
- -- En cas de restauration d'un service, on ne restaure pas les historiques de volumes horaires pour ne pas récussiter d'éventuels volume horaires indésirables car préalablement supprimés
- FOR s IN (
+    conds := params_to_conds( params );
 
-    SELECT *
-    FROM
-      service s
-    WHERE
-      s.histo_destruction IS NOT NULL AND s.histo_destruction > SYSDATE - 1
+    EXECUTE IMMEDIATE 'BEGIN
 
-  ) LOOP
+    UPDATE TBL_SERVICE_REFERENTIEL SET to_delete = 1 WHERE ' || conds || ';
 
-    UPDATE VOLUME_HORAIRE SET histo_destruction = s.histo_destruction, histo_destructeur_id = s.histo_destructeur_id WHERE service_id = s.id AND VOLUME_HORAIRE.histo_destruction IS NULL;
+    MERGE INTO
+      TBL_SERVICE_REFERENTIEL t
+    USING (
 
-  END LOOP;
-   
-END;
+      SELECT
+        tv.*
+      FROM
+        (WITH t AS (
 
-/
-ALTER TRIGGER "SERVICE_HISTO_CK_S" ENABLE;
+          SELECT
+            i.annee_id,
+            i.id intervenant_id,
+            si.peut_saisir_referentiel peut_saisir_service,
+            vh.type_volume_horaire_id,
+            s.structure_id,
+            CASE WHEN v.id IS NULL THEN 0 ELSE 1 END valide
+          FROM
+                      intervenant                     i
 
--- SERVICE_REFERENTIEL_HISTO_CK
-CREATE OR REPLACE TRIGGER "SERVICE_REFERENTIEL_HISTO_CK" 
-  BEFORE UPDATE OF FONCTION_ID, INTERVENANT_ID, STRUCTURE_ID, HISTO_DESTRUCTION ON "SERVICE_REFERENTIEL"
-  REFERENCING FOR EACH ROW
-  DECLARE
-  has_validation integer;
-BEGIN
-  SELECT COUNT(*) INTO has_validation
-  FROM
-    VALIDATION_VOL_HORAIRE_REF vvh
-    JOIN validation v ON v.id = VVH.VALIDATION_ID
-    JOIN volume_horaire_ref vh ON vh.id = vvh.volume_horaire_ref_id
-  WHERE
-    V.HISTO_DESTRUCTION IS NULL
-    AND vh.service_referentiel_id = :OLD.ID;
+                 JOIN statut_intervenant          si ON si.id = i.statut_id
 
-  IF 0 <> has_validation THEN
-    raise_application_error(-20101, 'Il est impossible de modifier ou supprimer du référentiel dont des heures ont déjà été validées.');
-  END IF;
+            LEFT JOIN service_referentiel          s ON s.intervenant_id = i.id
+                                                    AND s.histo_destruction IS NULL
 
-END;
+            LEFT JOIN volume_horaire_ref          vh ON vh.service_referentiel_id = s.id
+                                                    AND vh.histo_destruction IS NULL
 
-/
-ALTER TRIGGER "SERVICE_REFERENTIEL_HISTO_CK" ENABLE;
+            LEFT JOIN validation_vol_horaire_ref vvh ON vvh.volume_horaire_ref_id = vh.id
 
--- T_CRG_ETAPE
-CREATE OR REPLACE TRIGGER "T_CRG_ETAPE" 
-  AFTER INSERT OR DELETE OR UPDATE OF HISTO_DESTRUCTION ON "ETAPE"
-  REFERENCING FOR EACH ROW
-  BEGIN
-  IF NOT UNICAEN_TBL.ACTIV_TRIGGERS THEN RETURN; END IF;
+            LEFT JOIN validation                   v ON v.id = vvh.validation_id
+                                                    AND v.histo_destruction IS NULL
+          WHERE
+            i.histo_destruction IS NULL
 
-  IF DELETING THEN
-    UNICAEN_TBL.DEMANDE_CALCUL( 'chargens', 'etape_id = ' || :OLD.id || ' OR etape_ens_id = ' || :OLD.id );
-  ELSE
-    UNICAEN_TBL.DEMANDE_CALCUL( 'chargens', 'etape_id = ' || :NEW.id || ' OR etape_ens_id = ' || :NEW.id );
-  END IF;
+        )
+        SELECT
+          annee_id,
+          intervenant_id,
+          peut_saisir_service,
+          type_volume_horaire_id,
+          structure_id,
+          CASE WHEN type_volume_horaire_id IS NULL THEN 0 ELSE count(*) END nbvh,
+          sum(valide) valide
+        FROM
+          t
+        WHERE
+          NOT (structure_id IS NOT NULL AND type_volume_horaire_id IS NULL)
+        GROUP BY
+          annee_id,
+          intervenant_id,
+          peut_saisir_service,
+          type_volume_horaire_id,
+          structure_id) tv
+      WHERE
+        ' || conds || '
 
-END;
+    ) v ON (
+            t.INTERVENANT_ID         = v.INTERVENANT_ID
+        AND COALESCE(t.TYPE_VOLUME_HORAIRE_ID,0) = COALESCE(v.TYPE_VOLUME_HORAIRE_ID,0)
+        AND COALESCE(t.STRUCTURE_ID,0) = COALESCE(v.STRUCTURE_ID,0)
 
+    ) WHEN MATCHED THEN UPDATE SET
 
-/
-ALTER TRIGGER "T_CRG_ETAPE" ENABLE;
+      ANNEE_ID               = v.ANNEE_ID,
+      PEUT_SAISIR_SERVICE    = v.PEUT_SAISIR_SERVICE,
+      NBVH                   = v.NBVH,
+      VALIDE                 = v.VALIDE,
+      to_delete = 0
 
--- T_CRG_ETAPE_S
-CREATE OR REPLACE TRIGGER "T_CRG_ETAPE_S" 
-  AFTER INSERT OR DELETE OR UPDATE ON "ETAPE"
-  BEGIN
-  UNICAEN_TBL.CALCULER_DEMANDES;
-END;
+    WHEN NOT MATCHED THEN INSERT (
 
+      ID,
+      ANNEE_ID,
+      INTERVENANT_ID,
+      PEUT_SAISIR_SERVICE,
+      TYPE_VOLUME_HORAIRE_ID,
+      STRUCTURE_ID,
+      NBVH,
+      VALIDE,
+      TO_DELETE
 
-/
-ALTER TRIGGER "T_CRG_ETAPE_S" ENABLE;
+    ) VALUES (
 
--- T_CRG_SCENARIO_NOEUD
-CREATE OR REPLACE TRIGGER "T_CRG_SCENARIO_NOEUD" 
-  AFTER INSERT OR DELETE OR UPDATE OF SCENARIO_ID, NOEUD_ID, HISTO_DESTRUCTION ON "SCENARIO_NOEUD"
-  REFERENCING FOR EACH ROW
-  BEGIN
-  IF NOT UNICAEN_TBL.ACTIV_TRIGGERS THEN RETURN; END IF;
+      TBL_SERVICE_REFERENTIEL_ID_SEQ.NEXTVAL,
+      v.ANNEE_ID,
+      v.INTERVENANT_ID,
+      v.PEUT_SAISIR_SERVICE,
+      v.TYPE_VOLUME_HORAIRE_ID,
+      v.STRUCTURE_ID,
+      v.NBVH,
+      v.VALIDE,
+      0
 
-  IF DELETING THEN
-    UNICAEN_TBL.DEMANDE_CALCUL( 'chargens', unicaen_tbl.make_params('noeud_id', :OLD.noeud_id, 'scenario_id', :OLD.scenario_id ) );
-  ELSE
-    UNICAEN_TBL.DEMANDE_CALCUL( 'chargens', unicaen_tbl.make_params('noeud_id', :NEW.noeud_id, 'scenario_id', :NEW.scenario_id ) );
-  END IF;
+    );
 
-END;
+    DELETE TBL_SERVICE_REFERENTIEL WHERE to_delete = 1 AND ' || conds || ';
 
+    END;';
 
-/
-ALTER TRIGGER "T_CRG_SCENARIO_NOEUD" ENABLE;
+  END;
 
--- T_CRG_SCENARIO_NOEUD_EFFECTIF
-CREATE OR REPLACE TRIGGER "T_CRG_SCENARIO_NOEUD_EFFECTIF" 
-  AFTER INSERT OR DELETE OR UPDATE OF SCENARIO_NOEUD_ID, TYPE_HEURES_ID, EFFECTIF, ETAPE_ID ON "SCENARIO_NOEUD_EFFECTIF"
-  REFERENCING FOR EACH ROW
-  BEGIN
-  IF NOT UNICAEN_TBL.ACTIV_TRIGGERS THEN RETURN; END IF;
 
-  FOR p IN (
 
-    SELECT
-      sn.noeud_id, sn.scenario_id, n.etape_id
-    FROM
-      scenario_noeud sn
-      JOIN noeud n ON n.id = sn.noeud_id
-    WHERE
-      sn.id = :OLD.scenario_noeud_id OR sn.id = :NEW.scenario_noeud_id
+  PROCEDURE C_SERVICE_SAISIE( PARAMS UNICAEN_TBL.T_PARAMS ) IS
+    conds CLOB;
+  BEGIN
+    conds := params_to_conds( params );
 
-  ) LOOP
+    EXECUTE IMMEDIATE 'BEGIN
 
-    IF p.etape_id IS NOT NULL THEN
-      UNICAEN_TBL.DEMANDE_CALCUL( 'chargens', unicaen_tbl.make_params('etape_ens_id', p.etape_id, 'scenario_id', p.scenario_id ) );
-    END IF;
-    UNICAEN_TBL.DEMANDE_CALCUL( 'chargens', unicaen_tbl.make_params('noeud_id', p.noeud_id, 'scenario_id', p.scenario_id ) );
+    UPDATE TBL_SERVICE_SAISIE SET to_delete = 1 WHERE ' || conds || ';
 
-  END LOOP;
+    MERGE INTO
+      TBL_SERVICE_SAISIE t
+    USING (
 
-END;
+      SELECT
+        tv.*
+      FROM
+        (SELECT
+          i.annee_id,
+          i.id intervenant_id,
+          si.peut_saisir_service,
+          si.peut_saisir_referentiel,
+          SUM( CASE WHEN tvhs.code = ''PREVU''   THEN NVL(vh .heures,0) ELSE 0 END ) heures_service_prev,
+          SUM( CASE WHEN tvhs.code = ''PREVU''   THEN NVL(vhr.heures,0) ELSE 0 END ) heures_referentiel_prev,
+          SUM( CASE WHEN tvhs.code = ''REALISE'' THEN NVL(vh .heures,0) ELSE 0 END ) heures_service_real,
+          SUM( CASE WHEN tvhs.code = ''REALISE'' THEN NVL(vhr.heures,0) ELSE 0 END ) heures_referentiel_real
+        FROM
+          intervenant i
+          JOIN statut_intervenant si ON si.id = i.statut_id
+          LEFT JOIN service s ON s.intervenant_id = i.id AND s.histo_destruction IS NULL
+          LEFT JOIN volume_horaire vh ON vh.service_id = s.id AND vh.histo_destruction IS NULL
+          LEFT JOIN type_volume_horaire tvhs ON tvhs.id = vh.type_volume_horaire_id
 
+          LEFT JOIN service_referentiel sr ON sr.intervenant_id = i.id AND sr.histo_destruction IS NULL
+          LEFT JOIN volume_horaire_ref vhr ON vhr.service_referentiel_id = sr.id AND vhr.histo_destruction IS NULL
+          LEFT JOIN type_volume_horaire tvhrs ON tvhrs.id = vhr.type_volume_horaire_id
+        WHERE
+          i.histo_destruction IS NULL
+        GROUP BY
+          i.annee_id,
+          i.id,
+          si.peut_saisir_service,
+          si.peut_saisir_referentiel) tv
+      WHERE
+        ' || conds || '
 
-/
-ALTER TRIGGER "T_CRG_SCENARIO_NOEUD_EFFECTIF" ENABLE;
+    ) v ON (
+            t.INTERVENANT_ID = v.INTERVENANT_ID
 
--- T_CRG_SCENARIO_NOEUD_SEUIL
-CREATE OR REPLACE TRIGGER "T_CRG_SCENARIO_NOEUD_SEUIL" 
-  AFTER INSERT OR DELETE OR UPDATE OF SCENARIO_NOEUD_ID, TYPE_INTERVENTION_ID, OUVERTURE, DEDOUBLEMENT, ASSIDUITE ON "SCENARIO_NOEUD_SEUIL"
-  REFERENCING FOR EACH ROW
-  BEGIN
-  IF NOT UNICAEN_TBL.ACTIV_TRIGGERS THEN RETURN; END IF;
+    ) WHEN MATCHED THEN UPDATE SET
 
-  FOR p IN (
+      ANNEE_ID                = v.ANNEE_ID,
+      PEUT_SAISIR_SERVICE     = v.PEUT_SAISIR_SERVICE,
+      PEUT_SAISIR_REFERENTIEL = v.PEUT_SAISIR_REFERENTIEL,
+      HEURES_SERVICE_PREV     = v.HEURES_SERVICE_PREV,
+      HEURES_REFERENTIEL_PREV = v.HEURES_REFERENTIEL_PREV,
+      HEURES_SERVICE_REAL     = v.HEURES_SERVICE_REAL,
+      HEURES_REFERENTIEL_REAL = v.HEURES_REFERENTIEL_REAL,
+      to_delete = 0
 
-    SELECT
-      sn.noeud_id, sn.scenario_id, n.etape_id
-    FROM
-      scenario_noeud sn
-      JOIN noeud n ON n.id = sn.noeud_id
-    WHERE
-      sn.id = :OLD.scenario_noeud_id OR sn.id = :NEW.scenario_noeud_id
+    WHEN NOT MATCHED THEN INSERT (
 
-  ) LOOP
+      ID,
+      ANNEE_ID,
+      INTERVENANT_ID,
+      PEUT_SAISIR_SERVICE,
+      PEUT_SAISIR_REFERENTIEL,
+      HEURES_SERVICE_PREV,
+      HEURES_REFERENTIEL_PREV,
+      HEURES_SERVICE_REAL,
+      HEURES_REFERENTIEL_REAL,
+      TO_DELETE
 
-    IF p.etape_id IS NOT NULL THEN
-      UNICAEN_TBL.DEMANDE_CALCUL( 'chargens', unicaen_tbl.make_params('etape_ens_id', p.etape_id, 'scenario_id', p.scenario_id ) );
-    END IF;
-    UNICAEN_TBL.DEMANDE_CALCUL( 'chargens', unicaen_tbl.make_params('noeud_id', p.noeud_id, 'scenario_id', p.scenario_id ) );
+    ) VALUES (
 
-  END LOOP;
+      TBL_SERVICE_SAISIE_ID_SEQ.NEXTVAL,
+      v.ANNEE_ID,
+      v.INTERVENANT_ID,
+      v.PEUT_SAISIR_SERVICE,
+      v.PEUT_SAISIR_REFERENTIEL,
+      v.HEURES_SERVICE_PREV,
+      v.HEURES_REFERENTIEL_PREV,
+      v.HEURES_SERVICE_REAL,
+      v.HEURES_REFERENTIEL_REAL,
+      0
 
-END;
+    );
 
+    DELETE TBL_SERVICE_SAISIE WHERE to_delete = 1 AND ' || conds || ';
 
-/
-ALTER TRIGGER "T_CRG_SCENARIO_NOEUD_SEUIL" ENABLE;
+    END;';
 
--- T_CRG_TYPE_INTERVENTION
-CREATE OR REPLACE TRIGGER "T_CRG_TYPE_INTERVENTION" 
-  AFTER INSERT OR DELETE OR UPDATE ON "TYPE_INTERVENTION"
-  BEGIN
-  UNICAEN_TBL.CALCULER_DEMANDES;
-END;
+  END;
 
 
-/
-ALTER TRIGGER "T_CRG_TYPE_INTERVENTION" ENABLE;
 
--- T_CRG_VOLUME_HORAIRE_ENS
-CREATE OR REPLACE TRIGGER "T_CRG_VOLUME_HORAIRE_ENS" 
-  AFTER INSERT OR DELETE OR UPDATE OF ELEMENT_PEDAGOGIQUE_ID, TYPE_INTERVENTION_ID, HEURES, HISTO_DESTRUCTION ON "VOLUME_HORAIRE_ENS"
-  REFERENCING FOR EACH ROW
+  PROCEDURE C_VALIDATION_ENSEIGNEMENT( PARAMS UNICAEN_TBL.T_PARAMS ) IS
+    conds CLOB;
   BEGIN
-  IF NOT UNICAEN_TBL.ACTIV_TRIGGERS THEN RETURN; END IF;
-
-  IF DELETING THEN
-    UNICAEN_TBL.DEMANDE_CALCUL( 'chargens', unicaen_tbl.make_params('element_pedagogique_id', :OLD.element_pedagogique_id ) );
-  ELSE
-    UNICAEN_TBL.DEMANDE_CALCUL( 'chargens', unicaen_tbl.make_params('element_pedagogique_id', :NEW.element_pedagogique_id ) );
-  END IF;
-
-END;
-
-/
-ALTER TRIGGER "T_CRG_VOLUME_HORAIRE_ENS" ENABLE;
-
--- VALIDATION_CK
-CREATE OR REPLACE TRIGGER "VALIDATION_CK" 
-  BEFORE DELETE OR UPDATE OF HISTO_DESTRUCTION, HISTO_DESTRUCTEUR_ID ON "VALIDATION"
-  REFERENCING FOR EACH ROW
-  DECLARE
-  v validation%rowtype;
-  err varchar2(500) default null;
-  pragma autonomous_transaction;
-BEGIN
+    conds := params_to_conds( params );
 
-  IF deleting THEN
-    v.id                  := :OLD.id;
-    v.type_validation_id  := :OLD.type_validation_id;
-    v.intervenant_id      := :OLD.intervenant_id;
-    v.structure_id        := :OLD.structure_id;
-    
+    EXECUTE IMMEDIATE 'BEGIN
 
-  ELSIF :OLD.histo_destruction IS NULL AND :NEW.histo_destruction IS NOT NULL THEN
+    UPDATE TBL_VALIDATION_ENSEIGNEMENT SET to_delete = 1 WHERE ' || conds || ';
 
-    v.id                  := :NEW.id;
-    v.type_validation_id  := :NEW.type_validation_id;
-    v.intervenant_id      := :NEW.intervenant_id;
-    v.structure_id        := :NEW.structure_id;
+    MERGE INTO
+      TBL_VALIDATION_ENSEIGNEMENT t
+    USING (
 
-  END IF;
-  
-  err := ose_validation.can_devalider( v );
-  
-  IF err is not null THEN
-    raise_application_error(-20101, err);
-  END IF;
+      SELECT
+        tv.*
+      FROM
+        (SELECT DISTINCT
+          i.annee_id,
+          i.id intervenant_id,
+          CASE WHEN rsv.priorite = ''affectation'' THEN
+            COALESCE( i.structure_id, ep.structure_id )
+          ELSE
+            COALESCE( ep.structure_id, i.structure_id )
+          END structure_id,
+          vh.type_volume_horaire_id,
+          s.id service_id,
+          vh.id volume_horaire_id,
+          v.id validation_id
+        FROM
+          service s
+          JOIN volume_horaire vh ON vh.service_id = s.id AND vh.histo_destruction IS NULL
+          JOIN intervenant i ON i.id = s.intervenant_id AND i.histo_destruction IS NULL
+          JOIN statut_intervenant si ON si.id = i.statut_id
+          JOIN regle_structure_validation rsv ON rsv.type_intervenant_id = si.type_intervenant_id AND rsv.type_volume_horaire_id = vh.type_volume_horaire_id
+          LEFT JOIN element_pedagogique ep ON ep.id = s.element_pedagogique_id
+          LEFT JOIN validation_vol_horaire vvh ON vvh.volume_horaire_id = vh.id
+          LEFT JOIN validation v ON v.id = vvh.validation_id AND v.histo_destruction IS NULL
+        WHERE
+          s.histo_destruction IS NULL) tv
+      WHERE
+        ' || conds || '
 
-END;
+    ) v ON (
+            t.INTERVENANT_ID         = v.INTERVENANT_ID
+        AND t.STRUCTURE_ID           = v.STRUCTURE_ID
+        AND t.TYPE_VOLUME_HORAIRE_ID = v.TYPE_VOLUME_HORAIRE_ID
+        AND t.SERVICE_ID             = v.SERVICE_ID
+        AND COALESCE(t.VALIDATION_ID,0) = COALESCE(v.VALIDATION_ID,0)
+        AND t.VOLUME_HORAIRE_ID      = v.VOLUME_HORAIRE_ID
 
-/
-ALTER TRIGGER "VALIDATION_CK" ENABLE;
+    ) WHEN MATCHED THEN UPDATE SET
 
--- VALIDATION_VOL_HORAIRE_CK
-CREATE OR REPLACE TRIGGER "VALIDATION_VOL_HORAIRE_CK" 
-  BEFORE INSERT OR DELETE OR UPDATE ON "VALIDATION_VOL_HORAIRE"
-  REFERENCING FOR EACH ROW
-  DECLARE 
-  contrat_blinde NUMERIC; 
-  donnee_historisee NUMERIC;  
-  pragma autonomous_transaction;
-BEGIN
+      ANNEE_ID               = v.ANNEE_ID,
+      to_delete = 0
 
-  if updating or deleting then  
+    WHEN NOT MATCHED THEN INSERT (
 
-    SELECT count(*) INTO contrat_blinde 
-    FROM volume_horaire vh
-    JOIN contrat c ON c.id = vh.contrat_id AND c.histo_destruction IS NULL
-    WHERE vh.id = :OLD.volume_horaire_id;
+      ID,
+      ANNEE_ID,
+      INTERVENANT_ID,
+      STRUCTURE_ID,
+      TYPE_VOLUME_HORAIRE_ID,
+      SERVICE_ID,
+      VALIDATION_ID,
+      VOLUME_HORAIRE_ID,
+      TO_DELETE
 
-    -- Si des volumes horaires ont déjà fait l'objet de contrats alors pas de dévalidation possible des heures
-    IF contrat_blinde = 1 THEN
-      raise_application_error(-20101, 'La dévalidation est impossible car un contrat a déjà été édité sur la base de ces heures.');
-    END IF;
+    ) VALUES (
 
-  else
+      TBL_VALIDATION_ENSEIGNE_ID_SEQ.NEXTVAL,
+      v.ANNEE_ID,
+      v.INTERVENANT_ID,
+      v.STRUCTURE_ID,
+      v.TYPE_VOLUME_HORAIRE_ID,
+      v.SERVICE_ID,
+      v.VALIDATION_ID,
+      v.VOLUME_HORAIRE_ID,
+      0
 
-    -- si on en trouve un service, EP, étape ou VH historisé, problème
-    select count(*) into donnee_historisee
-    from service s
-    join element_pedagogique ep on s.element_pedagogique_id = ep.id
-    --join etape e on ep.etape_id = e.id
-    join volume_horaire vh on vh.service_id = s.id
-    where
-      vh.id = :NEW.volume_horaire_id 
-      AND (
-        s.histo_destructeur_id is not null
-        or ep.histo_destructeur_id is not null
-        --or e.histo_destructeur_id is not null
-        or (vh.histo_destructeur_id is not null)
-      )
-      AND vh.heures > 0;
+    );
 
-    IF donnee_historisee > 0 THEN
-      raise_application_error(-20101, :NEW.volume_horaire_id || ' La validation est impossible car elle porte sur des données historisées (supprimées).');
-    END IF;
+    DELETE TBL_VALIDATION_ENSEIGNEMENT WHERE to_delete = 1 AND ' || conds || ';
 
-  end if;
+    END;';
 
-END;
+  END;
 
 
-/
-ALTER TRIGGER "VALIDATION_VOL_HORAIRE_CK" ENABLE;
 
--- VOLUME_HORAIRE_CK
-CREATE OR REPLACE TRIGGER "VOLUME_HORAIRE_CK" 
-  BEFORE INSERT OR UPDATE ON "VOLUME_HORAIRE"
-  REFERENCING FOR EACH ROW
-  DECLARE
-    has_validation NUMERIC;
-    modified       BOOLEAN;
-    intervenant_id NUMERIC;
+  PROCEDURE C_VALIDATION_REFERENTIEL( PARAMS UNICAEN_TBL.T_PARAMS ) IS
+    conds CLOB;
   BEGIN
-    IF :OLD.motif_non_paiement_id IS NULL AND :NEW.motif_non_paiement_id IS NOT NULL THEN
-      SELECT s.intervenant_id INTO intervenant_id FROM service s WHERE s.id = :NEW.service_id;
-      IF 0 = ose_divers.intervenant_has_privilege( intervenant_id, 'saisie_motif_non_paiement') THEN
-        raise_application_error(-20101, 'Il est impossible d''associer un motif de non paiement à cet intervenant.');
-      END IF;
-    END IF;
-    
-    IF :NEW.motif_non_paiement_id IS NOT NULL AND :NEW.contrat_id IS NOT NULL THEN
-      raise_application_error(-20101, 'Les heures ayant un motif de non paiement ne peuvent faire l''objet d''une contractualisation');
-    END IF;
+    conds := params_to_conds( params );
 
-    modified := 
-      NVL(:NEW.id,0) <> NVL(:OLD.id,0)
-      OR NVL(:NEW.type_volume_horaire_id,0) <> NVL(:OLD.type_volume_horaire_id,0)
-      OR NVL(:NEW.service_id,0) <> NVL(:OLD.service_id,0)
-      OR NVL(:NEW.periode_id,0) <> NVL(:OLD.periode_id,0)
-      OR NVL(:NEW.type_intervention_id,0) <> NVL(:OLD.type_intervention_id,0)
-      OR NVL(:NEW.heures,0) <> NVL(:OLD.heures,0)
-      OR NVL(:NEW.motif_non_paiement_id,0) <> NVL(:OLD.motif_non_paiement_id,0)
-      OR NVL(:NEW.histo_creation,SYSDATE) <> NVL(:OLD.histo_creation,SYSDATE)
-      OR NVL(:NEW.histo_createur_id,0) <> NVL(:OLD.histo_createur_id,0)
-      OR NVL(:NEW.histo_destruction,SYSDATE) <> NVL(:OLD.histo_destruction,SYSDATE)
-      OR NVL(:NEW.histo_destructeur_id,0) <> NVL(:OLD.histo_destructeur_id,0);
-    
-    SELECT
-      COUNT(*)
-    INTO
-      has_validation
-    FROM
-      VALIDATION_VOL_HORAIRE vvh
-      JOIN validation v ON v.id = VVH.VALIDATION_ID
-    WHERE
-      V.HISTO_DESTRUCTION IS NULL
-      AND vvh.VOLUME_HORAIRE_ID  = :NEW.ID;
-      
-    IF modified AND 0 <> has_validation THEN
-      raise_application_error(-20101, 'Il est impossible de modifier des heures déjà validées.');
-    END IF;
-  END;
+    EXECUTE IMMEDIATE 'BEGIN
 
-/
-ALTER TRIGGER "VOLUME_HORAIRE_CK" ENABLE;
+    UPDATE TBL_VALIDATION_REFERENTIEL SET to_delete = 1 WHERE ' || conds || ';
 
--- VOLUME_HORAIRE_DEL_CK
-CREATE OR REPLACE TRIGGER "VOLUME_HORAIRE_DEL_CK" 
-  BEFORE DELETE ON "VOLUME_HORAIRE"
-  REFERENCING FOR EACH ROW
-  DECLARE 
-  has_validation INTEGER;
-  pragma autonomous_transaction;
-BEGIN
-  
-  SELECT COUNT(*) INTO has_validation 
-  FROM 
-    VALIDATION_VOL_HORAIRE vvh
-    JOIN validation v ON v.id = VVH.VALIDATION_ID
-  WHERE
-    V.HISTO_DESTRUCTION IS NULL
-    AND vvh.VOLUME_HORAIRE_ID = :OLD.ID;
+    MERGE INTO
+      TBL_VALIDATION_REFERENTIEL t
+    USING (
 
-  IF 0 <> has_validation THEN
-    raise_application_error(-20101, 'Il est impossible de supprimer des heures déjà validées.');
-  END IF;
+      SELECT
+        tv.*
+      FROM
+        (SELECT DISTINCT
+          i.annee_id,
+          i.id intervenant_id,
+          CASE WHEN rsv.priorite = ''affectation'' THEN
+            COALESCE( i.structure_id, s.structure_id )
+          ELSE
+            COALESCE( s.structure_id, i.structure_id )
+          END structure_id,
+          vh.type_volume_horaire_id,
+          s.id service_referentiel_id,
+          vh.id volume_horaire_ref_id,
+          v.id validation_id
+        FROM
+          service_referentiel s
+          JOIN volume_horaire_ref vh ON vh.service_referentiel_id = s.id AND vh.histo_destruction IS NULL
+          JOIN intervenant i ON i.id = s.intervenant_id AND i.histo_destruction IS NULL
+          JOIN statut_intervenant si ON si.id = i.statut_id
+          JOIN regle_structure_validation rsv ON rsv.type_intervenant_id = si.type_intervenant_id AND rsv.type_volume_horaire_id = vh.type_volume_horaire_id
+          LEFT JOIN validation_vol_horaire_ref vvh ON vvh.volume_horaire_ref_id = vh.id
+          LEFT JOIN validation v ON v.id = vvh.validation_id AND v.histo_destruction IS NULL
+        WHERE
+          s.histo_destruction IS NULL) tv
+      WHERE
+        ' || conds || '
 
-END;
+    ) v ON (
+            t.INTERVENANT_ID         = v.INTERVENANT_ID
+        AND t.STRUCTURE_ID           = v.STRUCTURE_ID
+        AND t.TYPE_VOLUME_HORAIRE_ID = v.TYPE_VOLUME_HORAIRE_ID
+        AND t.SERVICE_REFERENTIEL_ID = v.SERVICE_REFERENTIEL_ID
+        AND COALESCE(t.VALIDATION_ID,0) = COALESCE(v.VALIDATION_ID,0)
+        AND t.VOLUME_HORAIRE_REF_ID  = v.VOLUME_HORAIRE_REF_ID
 
-/
-ALTER TRIGGER "VOLUME_HORAIRE_DEL_CK" ENABLE;
+    ) WHEN MATCHED THEN UPDATE SET
 
--- VOLUME_HORAIRE_REF_CK
-CREATE OR REPLACE TRIGGER "VOLUME_HORAIRE_REF_CK" 
-  BEFORE UPDATE ON "VOLUME_HORAIRE_REF"
-  REFERENCING FOR EACH ROW
-  DECLARE
-    has_validation NUMERIC;
-  BEGIN  
-    
-  SELECT 
-    COUNT(*)
-  INTO
-    has_validation
-  FROM
-    VALIDATION_VOL_HORAIRE_REF vvh
-    JOIN validation v ON v.id = VVH.VALIDATION_ID
-  WHERE
-    V.HISTO_DESTRUCTION IS NULL
-    AND vvh.VOLUME_HORAIRE_REF_ID  = :NEW.ID;
-    
-  IF 0 <> has_validation THEN
-    raise_application_error(-20101, 'Il est impossible de modifier des heures référentiel déjà validées.');
-  END IF;
-END;
+      ANNEE_ID               = v.ANNEE_ID,
+      to_delete = 0
 
-/
-ALTER TRIGGER "VOLUME_HORAIRE_REF_CK" ENABLE;
+    WHEN NOT MATCHED THEN INSERT (
 
--- VOLUME_HORAIRE_REF_DEL_CK
-CREATE OR REPLACE TRIGGER "VOLUME_HORAIRE_REF_DEL_CK" 
-  BEFORE DELETE ON "VOLUME_HORAIRE_REF"
-  REFERENCING FOR EACH ROW
-  DECLARE has_validation INTEGER;
-  pragma autonomous_transaction;
-  BEGIN
-    SELECT COUNT(*)
-    INTO has_validation
-    FROM VALIDATION_VOL_HORAIRE_REF vvh
-    JOIN validation v
-    ON v.id                    = VVH.VALIDATION_ID
-    WHERE V.HISTO_DESTRUCTION IS NULL
-    AND vvh.VOLUME_HORAIRE_REF_ID  = :OLD.ID;
-    IF 0                      <> has_validation THEN
-      raise_application_error(-20101, 'Il est impossible de supprimer des heures référentiel déjà validées.');
-    END IF;
-  END;
+      ID,
+      ANNEE_ID,
+      INTERVENANT_ID,
+      STRUCTURE_ID,
+      TYPE_VOLUME_HORAIRE_ID,
+      SERVICE_REFERENTIEL_ID,
+      VALIDATION_ID,
+      VOLUME_HORAIRE_REF_ID,
+      TO_DELETE
 
-/
-ALTER TRIGGER "VOLUME_HORAIRE_REF_DEL_CK" ENABLE;
+    ) VALUES (
 
--- WF_ETAPE_DEP_CK
-CREATE OR REPLACE TRIGGER "WF_ETAPE_DEP_CK" 
-  BEFORE INSERT OR UPDATE ON "WF_ETAPE_DEP"
-  REFERENCING FOR EACH ROW
-BEGIN
+      TBL_VALIDATION_REFERENT_ID_SEQ.NEXTVAL,
+      v.ANNEE_ID,
+      v.INTERVENANT_ID,
+      v.STRUCTURE_ID,
+      v.TYPE_VOLUME_HORAIRE_ID,
+      v.SERVICE_REFERENTIEL_ID,
+      v.VALIDATION_ID,
+      v.VOLUME_HORAIRE_REF_ID,
+      0
 
-  OSE_WORKFLOW.DEP_CHECK( :new.etape_suiv_id, :new.etape_prec_id );
+    );
 
-END;
+    DELETE TBL_VALIDATION_REFERENTIEL WHERE to_delete = 1 AND ' || conds || ';
 
-/
-ALTER TRIGGER "WF_ETAPE_DEP_CK" ENABLE;
+    END;';
 
+  END;
 
+  -- END OF AUTOMATIC GENERATION --
+
+END UNICAEN_TBL;
+/
 
--- Table SOURCE
-INSERT INTO SOURCE(ID, CODE, LIBELLE, IMPORTABLE) VALUES (SOURCE_ID_SEQ.NEXTVAL, q'[OSE]', q'[OSE]', 0);
 
 
 -- Table ANNEE
@@ -19128,6 +20686,10 @@ INSERT INTO PRIVILEGE(ID, CODE, LIBELLE, CATEGORIE_ID, ORDRE) VALUES (PRIVILEGE_
 INSERT INTO PRIVILEGE(ID, CODE, LIBELLE, CATEGORIE_ID, ORDRE) VALUES (PRIVILEGE_ID_SEQ.NEXTVAL, q'[tables-visualisation]', q'[Tables (visualisation)]', (SELECT ID FROM CATEGORIE_PRIVILEGE WHERE ROWNUM = 1 AND CODE = q'[import]'), 8);
 
 
+-- Table SOURCE
+INSERT INTO SOURCE(ID, CODE, LIBELLE, IMPORTABLE) VALUES (SOURCE_ID_SEQ.NEXTVAL, q'[OSE]', q'[OSE]', 0);
+
+
 -- Table TBL
 INSERT INTO TBL(TBL_NAME, TABLE_NAME, VIEW_NAME, SEQUENCE_NAME, CONSTRAINT_NAME, CUSTOM_CALCUL_PROC, ORDRE) VALUES (q'[chargens_seuils_def]', q'[TBL_CHARGENS_SEUILS_DEF]', q'[V_TBL_CHARGENS_SEUILS_DEF]', NULL, q'[TBL_CHARGENS_SEUILS_DEF__UN]', NULL, 1);
 INSERT INTO TBL(TBL_NAME, TABLE_NAME, VIEW_NAME, SEQUENCE_NAME, CONSTRAINT_NAME, CUSTOM_CALCUL_PROC, ORDRE) VALUES (q'[agrement]', q'[TBL_AGREMENT]', q'[V_TBL_AGREMENT]', NULL, q'[TBL_AGREMENT__UN]', NULL, 1);
@@ -19168,6 +20730,10 @@ INSERT INTO TYPE_VOLUME_HORAIRE(ID, CODE, LIBELLE, ORDRE) VALUES (TYPE_VOLUME_HO
 INSERT INTO UTILISATEUR(ID, USERNAME, EMAIL, DISPLAY_NAME, PASSWORD, STATE, CODE) VALUES (UTILISATEUR_ID_SEQ.NEXTVAL, q'[oseappli]', q'[dsi.applications@unicaen.fr]', q'[Application OSE]', 'x', 1, NULL);
 
 
+-- Table VERSION
+INSERT INTO VERSION(NUMERO) VALUES (1);
+
+
 -- Table WF_ETAPE
 INSERT INTO WF_ETAPE(ID, CODE, ORDRE, DESC_NON_FRANCHIE, DESC_SANS_OBJECTIF, LIBELLE_AUTRES, LIBELLE_INTERVENANT, OBLIGATOIRE, ROUTE, ROUTE_INTERVENANT) VALUES (WF_ETAPE_ID_SEQ.NEXTVAL, q'[REFERENTIEL_VALIDATION_REALISE]', 130, q'[Le référentiel réalisé n'a pas été intégralement validé]', NULL, q'[Je visualise la validation du référentiel réalisé]', q'[Je visualise la validation de mon référentiel réalisé]', 0, q'[intervenant/validation/referentiel/realise]', NULL);
 INSERT INTO WF_ETAPE(ID, CODE, ORDRE, DESC_NON_FRANCHIE, DESC_SANS_OBJECTIF, LIBELLE_AUTRES, LIBELLE_INTERVENANT, OBLIGATOIRE, ROUTE, ROUTE_INTERVENANT) VALUES (WF_ETAPE_ID_SEQ.NEXTVAL, q'[CLOTURE_REALISE]', 115, q'[La clôture de saisie des services réalisés n'a pas été effectuée]', NULL, q'[Je visualise la clôture de la saisie des services réalisés]', q'[Je visualise la clôture de la saisie de mes services réalisés]', 1, q'[intervenant/services-realises]', NULL);
@@ -19287,7 +20853,6 @@ INSERT INTO CORPS(ID, LIBELLE_LONG, LIBELLE_COURT, SOURCE_ID, SOURCE_CODE, HISTO
 INSERT INTO CORPS(ID, LIBELLE_LONG, LIBELLE_COURT, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (CORPS_ID_SEQ.NEXTVAL, q'[PROFESSEURS SANS CHAIRE]', q'[PROF. SANS CHAIRE]', (SELECT id FROM source WHERE code = 'OSE'), q'[H01]', SYSDATE, 1, SYSDATE, 1);
 INSERT INTO CORPS(ID, LIBELLE_LONG, LIBELLE_COURT, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (CORPS_ID_SEQ.NEXTVAL, q'[PROFESSEURS TITULAIRES]', q'[PROF. TITULAIRES ]', (SELECT id FROM source WHERE code = 'OSE'), q'[H02]', SYSDATE, 1, SYSDATE, 1);
 INSERT INTO CORPS(ID, LIBELLE_LONG, LIBELLE_COURT, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (CORPS_ID_SEQ.NEXTVAL, q'[PROF. TITULAIRES A TITRE PERSONNEL]', q'[PR. TIT. TITRE PERS.]', (SELECT id FROM source WHERE code = 'OSE'), q'[H03]', SYSDATE, 1, SYSDATE, 1);
-INSERT INTO CORPS(ID, LIBELLE_LONG, LIBELLE_COURT, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (CORPS_ID_SEQ.NEXTVAL, q'[CHARGE D'ETUDES DOCUMENTAIRES (CULTURE)]', q'[CHARGE ET.DOC (CULT)]', (SELECT id FROM source WHERE code = 'OSE'), q'[296]', SYSDATE, 1, SYSDATE, 1);
 INSERT INTO CORPS(ID, LIBELLE_LONG, LIBELLE_COURT, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (CORPS_ID_SEQ.NEXTVAL, q'[DIRECTEUR DE RECHERCHE EPST]', q'[DR]', (SELECT id FROM source WHERE code = 'OSE'), q'[H04]', SYSDATE, 1, SYSDATE, 1);
 INSERT INTO CORPS(ID, LIBELLE_LONG, LIBELLE_COURT, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (CORPS_ID_SEQ.NEXTVAL, q'[CHARGE DE RECHERCHE EPST]', q'[CR]', (SELECT id FROM source WHERE code = 'OSE'), q'[H05]', SYSDATE, 1, SYSDATE, 1);
 INSERT INTO CORPS(ID, LIBELLE_LONG, LIBELLE_COURT, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (CORPS_ID_SEQ.NEXTVAL, q'[ASSISTANT NON AGREGE ET ASSIMILE]', q'[AS N-AGR.]', (SELECT id FROM source WHERE code = 'OSE'), q'[304]', SYSDATE, 1, SYSDATE, 1);
@@ -19486,6 +21051,7 @@ INSERT INTO CORPS(ID, LIBELLE_LONG, LIBELLE_COURT, SOURCE_ID, SOURCE_CODE, HISTO
 INSERT INTO CORPS(ID, LIBELLE_LONG, LIBELLE_COURT, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (CORPS_ID_SEQ.NEXTVAL, q'[SOUS-DIRECTEUR DE LABO. DU CNAM]', q'[SOUS-DIR.LABO.CNAM]', (SELECT id FROM source WHERE code = 'OSE'), q'[361]', SYSDATE, 1, SYSDATE, 1);
 INSERT INTO CORPS(ID, LIBELLE_LONG, LIBELLE_COURT, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (CORPS_ID_SEQ.NEXTVAL, q'[PROFESSEUR DE L'ENSAM]', q'[PROF. DE L'ENSAM]', (SELECT id FROM source WHERE code = 'OSE'), q'[364]', SYSDATE, 1, SYSDATE, 1);
 INSERT INTO CORPS(ID, LIBELLE_LONG, LIBELLE_COURT, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (CORPS_ID_SEQ.NEXTVAL, q'[PROF. TECH. ADJOINT ET CHEF DE TP ENSAM]', q'[PROF.T.A.CH.TP ENSAM]', (SELECT id FROM source WHERE code = 'OSE'), q'[365]', SYSDATE, 1, SYSDATE, 1);
+INSERT INTO CORPS(ID, LIBELLE_LONG, LIBELLE_COURT, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (CORPS_ID_SEQ.NEXTVAL, q'[CHARGE D'ETUDES DOCUMENTAIRES (CULTURE)]', q'[CHARGE ET.DOC.]', (SELECT id FROM source WHERE code = 'OSE'), q'[981]', SYSDATE, 1, SYSDATE, 1);
 INSERT INTO CORPS(ID, LIBELLE_LONG, LIBELLE_COURT, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (CORPS_ID_SEQ.NEXTVAL, q'[DIRE GENE CROUS]', q'[DG CROUS]', (SELECT id FROM source WHERE code = 'OSE'), q'[005]', SYSDATE, 1, SYSDATE, 1);
 INSERT INTO CORPS(ID, LIBELLE_LONG, LIBELLE_COURT, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (CORPS_ID_SEQ.NEXTVAL, q'[DIRECTEUR GENERAL DES SERVICES EPSCP]', q'[DGS EPSCP]', (SELECT id FROM source WHERE code = 'OSE'), q'[029]', SYSDATE, 1, SYSDATE, 1);
 INSERT INTO CORPS(ID, LIBELLE_LONG, LIBELLE_COURT, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (CORPS_ID_SEQ.NEXTVAL, q'[SOUS DIRECTEUR DE CNOUS]', q'[SDIR CNOUS]', (SELECT id FROM source WHERE code = 'OSE'), q'[224]', SYSDATE, 1, SYSDATE, 1);
@@ -27716,7 +29282,7 @@ INSERT INTO ETABLISSEMENT(ID, LIBELLE, LOCALISATION, DEPARTEMENT, SOURCE_ID, SOU
 INSERT INTO ETABLISSEMENT(ID, LIBELLE, LOCALISATION, DEPARTEMENT, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (ETABLISSEMENT_ID_SEQ.NEXTVAL, q'[EC DE MANAGEMENT DE PARIS]', q'[EM PARIS]', q'[075]', (SELECT id FROM source WHERE code = 'OSE'), q'[0752103D]', SYSDATE, 1, SYSDATE, 1);
 INSERT INTO ETABLISSEMENT(ID, LIBELLE, LOCALISATION, DEPARTEMENT, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (ETABLISSEMENT_ID_SEQ.NEXTVAL, q'[EC PREP PRATIQUE DES AFFAIRES]', q'[EPPA PARIS]', q'[075]', (SELECT id FROM source WHERE code = 'OSE'), q'[0752219E]', SYSDATE, 1, SYSDATE, 1);
 INSERT INTO ETABLISSEMENT(ID, LIBELLE, LOCALISATION, DEPARTEMENT, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (ETABLISSEMENT_ID_SEQ.NEXTVAL, q'[INST SUP SC TECH ECO COM PARIS]', q'[ISSTEC PAR]', q'[075]', (SELECT id FROM source WHERE code = 'OSE'), q'[0752304X]', SYSDATE, 1, SYSDATE, 1);
-INSERT INTO ETABLISSEMENT(ID, LIBELLE, LOCALISATION, DEPARTEMENT, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (ETABLISSEMENT_ID_SEQ.NEXTVAL, q'[EC SUP LIBRE SC COMMERC APPLIQ]', q'[ESSCA PARI]', q'[075]', (SELECT id FROM source WHERE code = 'OSE'), q'[0752790A]', SYSDATE, 1, SYSDATE, 1);
+INSERT INTO ETABLISSEMENT(ID, LIBELLE, LOCALISATION, DEPARTEMENT, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (ETABLISSEMENT_ID_SEQ.NEXTVAL, q'[EC SUP LIBRE SC COMMERC APPLIQ]', q'[ESLSCA]', q'[075]', (SELECT id FROM source WHERE code = 'OSE'), q'[0752790A]', SYSDATE, 1, SYSDATE, 1);
 INSERT INTO ETABLISSEMENT(ID, LIBELLE, LOCALISATION, DEPARTEMENT, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (ETABLISSEMENT_ID_SEQ.NEXTVAL, q'[INST PREP ADM GESTION PARIS]', q'[IPAG PARIS]', q'[075]', (SELECT id FROM source WHERE code = 'OSE'), q'[0752792C]', SYSDATE, 1, SYSDATE, 1);
 INSERT INTO ETABLISSEMENT(ID, LIBELLE, LOCALISATION, DEPARTEMENT, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (ETABLISSEMENT_ID_SEQ.NEXTVAL, q'[INST DE RECHERCHE ACTION COMM]', q'[IRAC PARIS]', q'[075]', (SELECT id FROM source WHERE code = 'OSE'), q'[0752887F]', SYSDATE, 1, SYSDATE, 1);
 INSERT INTO ETABLISSEMENT(ID, LIBELLE, LOCALISATION, DEPARTEMENT, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (ETABLISSEMENT_ID_SEQ.NEXTVAL, q'[INST SUP EUROPEEN DE GESTION]', q'[ISEG PARIS]', q'[075]', (SELECT id FROM source WHERE code = 'OSE'), q'[0752972Y]', SYSDATE, 1, SYSDATE, 1);
@@ -29208,6 +30774,19 @@ INSERT INTO ETABLISSEMENT(ID, LIBELLE, LOCALISATION, DEPARTEMENT, SOURCE_ID, SOU
 INSERT INTO ETABLISSEMENT(ID, LIBELLE, LOCALISATION, DEPARTEMENT, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (ETABLISSEMENT_ID_SEQ.NEXTVAL, q'[AFTRAL Tours]', q'[AFTRAL]', q'[037]', (SELECT id FROM source WHERE code = 'OSE'), q'[03700000]', SYSDATE, 1, SYSDATE, 1);
 INSERT INTO ETABLISSEMENT(ID, LIBELLE, LOCALISATION, DEPARTEMENT, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (ETABLISSEMENT_ID_SEQ.NEXTVAL, q'[AFTRAL Orléans]', q'[AFTRAL]', q'[045]', (SELECT id FROM source WHERE code = 'OSE'), q'[0450000]', SYSDATE, 1, SYSDATE, 1);
 INSERT INTO ETABLISSEMENT(ID, LIBELLE, LOCALISATION, DEPARTEMENT, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (ETABLISSEMENT_ID_SEQ.NEXTVAL, q'[CFA du transport et de la logistique - AFTRAL]', q'[AFTRAL]', q'[006]', (SELECT id FROM source WHERE code = 'OSE'), q'[0061989E]', SYSDATE, 1, SYSDATE, 1);
+INSERT INTO ETABLISSEMENT(ID, LIBELLE, LOCALISATION, DEPARTEMENT, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (ETABLISSEMENT_ID_SEQ.NEXTVAL, q'[Charité - Université de médecine Berlin]', q'[Charité]', q'[099]', (SELECT id FROM source WHERE code = 'OSE'), q'[ETR1171]', SYSDATE, 1, SYSDATE, 1);
+INSERT INTO ETABLISSEMENT(ID, LIBELLE, LOCALISATION, DEPARTEMENT, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (ETABLISSEMENT_ID_SEQ.NEXTVAL, q'[Institut Régional de Formation et Techniciens de Laboratoire Médical]', q'[IRFTLM]', q'[037]', (SELECT id FROM source WHERE code = 'OSE'), q'[0371470X]', SYSDATE, 1, SYSDATE, 1);
+INSERT INTO ETABLISSEMENT(ID, LIBELLE, LOCALISATION, DEPARTEMENT, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (ETABLISSEMENT_ID_SEQ.NEXTVAL, q'[AXENS GROUP]', q'[AXENS]', q'[092]', (SELECT id FROM source WHERE code = 'OSE'), q'[AXENS]', SYSDATE, 1, SYSDATE, 1);
+INSERT INTO ETABLISSEMENT(ID, LIBELLE, LOCALISATION, DEPARTEMENT, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (ETABLISSEMENT_ID_SEQ.NEXTVAL, q'[Total Petrochemicals Research Feluy]', q'[Total]', q'[099]', (SELECT id FROM source WHERE code = 'OSE'), q'[ETR1175]', SYSDATE, 1, SYSDATE, 1);
+INSERT INTO ETABLISSEMENT(ID, LIBELLE, LOCALISATION, DEPARTEMENT, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (ETABLISSEMENT_ID_SEQ.NEXTVAL, q'[University of California Santa Barbara]', q'[University]', q'[099]', (SELECT id FROM source WHERE code = 'OSE'), q'[ETR1176]', SYSDATE, 1, SYSDATE, 1);
+INSERT INTO ETABLISSEMENT(ID, LIBELLE, LOCALISATION, DEPARTEMENT, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (ETABLISSEMENT_ID_SEQ.NEXTVAL, q'[Universität Kaiserslautern]', q'[Univ KAIS.]', q'[099]', (SELECT id FROM source WHERE code = 'OSE'), q'[ETR1177]', SYSDATE, 1, SYSDATE, 1);
+INSERT INTO ETABLISSEMENT(ID, LIBELLE, LOCALISATION, DEPARTEMENT, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (ETABLISSEMENT_ID_SEQ.NEXTVAL, q'[American University of Paris]', q'[Amer.uni.]', q'[075]', (SELECT id FROM source WHERE code = 'OSE'), q'[ETR1178]', SYSDATE, 1, SYSDATE, 1);
+INSERT INTO ETABLISSEMENT(ID, LIBELLE, LOCALISATION, DEPARTEMENT, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (ETABLISSEMENT_ID_SEQ.NEXTVAL, q'[FIM CCI Formation - Campus 1]', q'[FIM CCI]', q'[050]', (SELECT id FROM source WHERE code = 'OSE'), q'[05000000]', SYSDATE, 1, SYSDATE, 1);
+INSERT INTO ETABLISSEMENT(ID, LIBELLE, LOCALISATION, DEPARTEMENT, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (ETABLISSEMENT_ID_SEQ.NEXTVAL, q'[Faculté des métiers de la CCI]', q'[FACULTE 35]', q'[035]', (SELECT id FROM source WHERE code = 'OSE'), q'[0351884H]', SYSDATE, 1, SYSDATE, 1);
+INSERT INTO ETABLISSEMENT(ID, LIBELLE, LOCALISATION, DEPARTEMENT, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (ETABLISSEMENT_ID_SEQ.NEXTVAL, q'[MENSA]', q'[MENSA]', q'[035]', (SELECT id FROM source WHERE code = 'OSE'), q'[0352779F]', SYSDATE, 1, SYSDATE, 1);
+INSERT INTO ETABLISSEMENT(ID, LIBELLE, LOCALISATION, DEPARTEMENT, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (ETABLISSEMENT_ID_SEQ.NEXTVAL, q'[Faculté des sciences d'Oujda]', q'[F. Oujda]', q'[099]', (SELECT id FROM source WHERE code = 'OSE'), q'[ETR1172]', SYSDATE, 1, SYSDATE, 1);
+INSERT INTO ETABLISSEMENT(ID, LIBELLE, LOCALISATION, DEPARTEMENT, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (ETABLISSEMENT_ID_SEQ.NEXTVAL, q'[Faculté des sciences et techniques de Fès]', q'[F. Fès]', q'[099]', (SELECT id FROM source WHERE code = 'OSE'), q'[ETR1173]', SYSDATE, 1, SYSDATE, 1);
+INSERT INTO ETABLISSEMENT(ID, LIBELLE, LOCALISATION, DEPARTEMENT, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (ETABLISSEMENT_ID_SEQ.NEXTVAL, q'[Ecole Supérieure de Technologie]', q'[EST Maroc]', q'[099]', (SELECT id FROM source WHERE code = 'OSE'), q'[ETR1174]', SYSDATE, 1, SYSDATE, 1);
 
 
 -- Table GRADE
@@ -29623,9 +31202,6 @@ INSERT INTO GRADE(ID, LIBELLE_LONG, LIBELLE_COURT, ECHELLE, CORPS_ID, SOURCE_ID,
 INSERT INTO GRADE(ID, LIBELLE_LONG, LIBELLE_COURT, ECHELLE, CORPS_ID, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (GRADE_ID_SEQ.NEXTVAL, q'[PROF. TITULAIRES A TITRE PERSONNEL]', q'[PR. TIT. TITRE PERS]', NULL, (SELECT ID FROM CORPS WHERE ROWNUM = 1 AND SOURCE_CODE = q'[H03]'), (SELECT id FROM source WHERE code = 'OSE'), q'[H030]', SYSDATE, 1, SYSDATE, 1);
 INSERT INTO GRADE(ID, LIBELLE_LONG, LIBELLE_COURT, ECHELLE, CORPS_ID, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (GRADE_ID_SEQ.NEXTVAL, q'[MAITRE DE CONFERENCE CL. NORMALE]', q'[MT.CONF.CL NORM.]', NULL, (SELECT ID FROM CORPS WHERE ROWNUM = 1 AND SOURCE_CODE = q'[301]'), (SELECT id FROM source WHERE code = 'OSE'), q'[3014]', SYSDATE, 1, SYSDATE, 1);
 INSERT INTO GRADE(ID, LIBELLE_LONG, LIBELLE_COURT, ECHELLE, CORPS_ID, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (GRADE_ID_SEQ.NEXTVAL, q'[BIBLIOTHECAIRE]', q'[BIBLIOTHECAIRE]', NULL, (SELECT ID FROM CORPS WHERE ROWNUM = 1 AND SOURCE_CODE = q'[806]'), (SELECT id FROM source WHERE code = 'OSE'), q'[8063]', SYSDATE, 1, SYSDATE, 1);
-INSERT INTO GRADE(ID, LIBELLE_LONG, LIBELLE_COURT, ECHELLE, CORPS_ID, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (GRADE_ID_SEQ.NEXTVAL, q'[CHARGE D'ETUDES DOCUMENTAIRES (CULTURE)]', q'[CHARGE ET.DOC (CULT)]', NULL, (SELECT ID FROM CORPS WHERE ROWNUM = 1 AND SOURCE_CODE = q'[296]'), (SELECT id FROM source WHERE code = 'OSE'), q'[2961]', SYSDATE, 1, SYSDATE, 1);
-INSERT INTO GRADE(ID, LIBELLE_LONG, LIBELLE_COURT, ECHELLE, CORPS_ID, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (GRADE_ID_SEQ.NEXTVAL, q'[CHARGE ETUDES DOC PAL 2CL (CULT)]', q'[CH.ET.DOC P2CL(CULT)]', NULL, (SELECT ID FROM CORPS WHERE ROWNUM = 1 AND SOURCE_CODE = q'[296]'), (SELECT id FROM source WHERE code = 'OSE'), q'[2962]', SYSDATE, 1, SYSDATE, 1);
-INSERT INTO GRADE(ID, LIBELLE_LONG, LIBELLE_COURT, ECHELLE, CORPS_ID, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (GRADE_ID_SEQ.NEXTVAL, q'[CHARGE ETUDES DOC PAL 1CL (CULT)]', q'[CH.ET.DOC P1CL(CULT)]', NULL, (SELECT ID FROM CORPS WHERE ROWNUM = 1 AND SOURCE_CODE = q'[296]'), (SELECT id FROM source WHERE code = 'OSE'), q'[2963]', SYSDATE, 1, SYSDATE, 1);
 INSERT INTO GRADE(ID, LIBELLE_LONG, LIBELLE_COURT, ECHELLE, CORPS_ID, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (GRADE_ID_SEQ.NEXTVAL, q'[PHYSICIEN ADJOINT CL NORMALE]', q'[PHYS.ADJ.CN]', NULL, (SELECT ID FROM CORPS WHERE ROWNUM = 1 AND SOURCE_CODE = q'[333]'), (SELECT id FROM source WHERE code = 'OSE'), q'[3334]', SYSDATE, 1, SYSDATE, 1);
 INSERT INTO GRADE(ID, LIBELLE_LONG, LIBELLE_COURT, ECHELLE, CORPS_ID, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (GRADE_ID_SEQ.NEXTVAL, q'[ASTRONOME ADJOINT CL NORMALE]', q'[ASTRO.ADJ.CN]', NULL, (SELECT ID FROM CORPS WHERE ROWNUM = 1 AND SOURCE_CODE = q'[332]'), (SELECT id FROM source WHERE code = 'OSE'), q'[3324]', SYSDATE, 1, SYSDATE, 1);
 INSERT INTO GRADE(ID, LIBELLE_LONG, LIBELLE_COURT, ECHELLE, CORPS_ID, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (GRADE_ID_SEQ.NEXTVAL, q'[MAITRE DE CONF.DU MUSEUM HIST.NAT.C.N]', q'[MAIT.CF.MUSEUM CN]', NULL, (SELECT ID FROM CORPS WHERE ROWNUM = 1 AND SOURCE_CODE = q'[351]'), (SELECT id FROM source WHERE code = 'OSE'), q'[3514]', SYSDATE, 1, SYSDATE, 1);
@@ -29723,12 +31299,12 @@ INSERT INTO GRADE(ID, LIBELLE_LONG, LIBELLE_COURT, ECHELLE, CORPS_ID, SOURCE_ID,
 INSERT INTO GRADE(ID, LIBELLE_LONG, LIBELLE_COURT, ECHELLE, CORPS_ID, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (GRADE_ID_SEQ.NEXTVAL, q'[PSYCHOLOGUE EDUCATION NATIONALE HC]', q'[PSY.EN.HC]', NULL, (SELECT ID FROM CORPS WHERE ROWNUM = 1 AND SOURCE_CODE = q'[522]'), (SELECT id FROM source WHERE code = 'OSE'), q'[5222]', SYSDATE, 1, SYSDATE, 1);
 INSERT INTO GRADE(ID, LIBELLE_LONG, LIBELLE_COURT, ECHELLE, CORPS_ID, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (GRADE_ID_SEQ.NEXTVAL, q'[PSYCHOLOGUE EDUCATION NATIONALE CN]', q'[PSY.EN.CN]', NULL, (SELECT ID FROM CORPS WHERE ROWNUM = 1 AND SOURCE_CODE = q'[522]'), (SELECT id FROM source WHERE code = 'OSE'), q'[5221]', SYSDATE, 1, SYSDATE, 1);
 INSERT INTO GRADE(ID, LIBELLE_LONG, LIBELLE_COURT, ECHELLE, CORPS_ID, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (GRADE_ID_SEQ.NEXTVAL, q'[ARCHITECTE URBANISTE GENERAL DE L'ETAT]', q'[ARC URB GEN ETAT]', NULL, (SELECT ID FROM CORPS WHERE ROWNUM = 1 AND SOURCE_CODE = q'[281]'), (SELECT id FROM source WHERE code = 'OSE'), q'[2815]', SYSDATE, 1, SYSDATE, 1);
-INSERT INTO GRADE(ID, LIBELLE_LONG, LIBELLE_COURT, ECHELLE, CORPS_ID, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (GRADE_ID_SEQ.NEXTVAL, q'[ADJ TECH PRINC DE RECH ET DE FORM DE 1CL]', q'[ATRF P1C]', q'[2]', (SELECT ID FROM CORPS WHERE ROWNUM = 1 AND SOURCE_CODE = q'[941]'), (SELECT id FROM source WHERE code = 'OSE'), q'[9412]', SYSDATE, 1, SYSDATE, 1);
+INSERT INTO GRADE(ID, LIBELLE_LONG, LIBELLE_COURT, ECHELLE, CORPS_ID, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (GRADE_ID_SEQ.NEXTVAL, q'[ADJ TECH PRINC DE RECH ET DE FORM DE 2CL]', q'[ATRF P2C]', q'[3]', (SELECT ID FROM CORPS WHERE ROWNUM = 1 AND SOURCE_CODE = q'[941]'), (SELECT id FROM source WHERE code = 'OSE'), q'[9412]', SYSDATE, 1, SYSDATE, 1);
 INSERT INTO GRADE(ID, LIBELLE_LONG, LIBELLE_COURT, ECHELLE, CORPS_ID, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (GRADE_ID_SEQ.NEXTVAL, q'[ADJOINT ADMINISTRATIF PRINCIPAL DE 1CL]', q'[ADJ P1C]', q'[3]', (SELECT ID FROM CORPS WHERE ROWNUM = 1 AND SOURCE_CODE = q'[057]'), (SELECT id FROM source WHERE code = 'OSE'), q'[0573]', SYSDATE, 1, SYSDATE, 1);
 INSERT INTO GRADE(ID, LIBELLE_LONG, LIBELLE_COURT, ECHELLE, CORPS_ID, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (GRADE_ID_SEQ.NEXTVAL, q'[MAG PRINCIPAL DES BIBLIOTHEQUES DE 2CL]', q'[MAG P2C]', q'[2]', (SELECT ID FROM CORPS WHERE ROWNUM = 1 AND SOURCE_CODE = q'[942]'), (SELECT id FROM source WHERE code = 'OSE'), q'[9422]', SYSDATE, 1, SYSDATE, 1);
 INSERT INTO GRADE(ID, LIBELLE_LONG, LIBELLE_COURT, ECHELLE, CORPS_ID, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (GRADE_ID_SEQ.NEXTVAL, q'[ADJ. TEC. DES ETAB. D'ENSEIGNEMENT]', q'[ATEC]', q'[1]', (SELECT ID FROM CORPS WHERE ROWNUM = 1 AND SOURCE_CODE = q'[943]'), (SELECT id FROM source WHERE code = 'OSE'), q'[9431]', SYSDATE, 1, SYSDATE, 1);
 INSERT INTO GRADE(ID, LIBELLE_LONG, LIBELLE_COURT, ECHELLE, CORPS_ID, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (GRADE_ID_SEQ.NEXTVAL, q'[ADJ. TEC. PRINCIPAL DE 1CL DES ETAB ENS]', q'[ATEC P1C]', q'[3]', (SELECT ID FROM CORPS WHERE ROWNUM = 1 AND SOURCE_CODE = q'[943]'), (SELECT id FROM source WHERE code = 'OSE'), q'[9433]', SYSDATE, 1, SYSDATE, 1);
-INSERT INTO GRADE(ID, LIBELLE_LONG, LIBELLE_COURT, ECHELLE, CORPS_ID, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (GRADE_ID_SEQ.NEXTVAL, q'[ADJ TECH PRINC DE RECH ET DE FORM DE 2CL]', q'[ATRF P2C]', q'[3]', (SELECT ID FROM CORPS WHERE ROWNUM = 1 AND SOURCE_CODE = q'[941]'), (SELECT id FROM source WHERE code = 'OSE'), q'[9413]', SYSDATE, 1, SYSDATE, 1);
+INSERT INTO GRADE(ID, LIBELLE_LONG, LIBELLE_COURT, ECHELLE, CORPS_ID, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (GRADE_ID_SEQ.NEXTVAL, q'[ADJ TECH PRINC DE RECH ET DE FORM DE 1CL]', q'[ATRF P1C]', q'[2]', (SELECT ID FROM CORPS WHERE ROWNUM = 1 AND SOURCE_CODE = q'[941]'), (SELECT id FROM source WHERE code = 'OSE'), q'[9413]', SYSDATE, 1, SYSDATE, 1);
 INSERT INTO GRADE(ID, LIBELLE_LONG, LIBELLE_COURT, ECHELLE, CORPS_ID, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (GRADE_ID_SEQ.NEXTVAL, q'[ADJOINT ADMINISTRATIF]', q'[ADJAENES]', q'[1]', (SELECT ID FROM CORPS WHERE ROWNUM = 1 AND SOURCE_CODE = q'[057]'), (SELECT id FROM source WHERE code = 'OSE'), q'[0571]', SYSDATE, 1, SYSDATE, 1);
 INSERT INTO GRADE(ID, LIBELLE_LONG, LIBELLE_COURT, ECHELLE, CORPS_ID, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (GRADE_ID_SEQ.NEXTVAL, q'[MAGASINIER DES BIBLIOTHEQUES]', q'[MAG]', q'[1]', (SELECT ID FROM CORPS WHERE ROWNUM = 1 AND SOURCE_CODE = q'[942]'), (SELECT id FROM source WHERE code = 'OSE'), q'[9421]', SYSDATE, 1, SYSDATE, 1);
 INSERT INTO GRADE(ID, LIBELLE_LONG, LIBELLE_COURT, ECHELLE, CORPS_ID, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (GRADE_ID_SEQ.NEXTVAL, q'[ADJOINT ADMINISTRATIF PRINCIPAL DE 2CL]', q'[ADJ P2C]', q'[2]', (SELECT ID FROM CORPS WHERE ROWNUM = 1 AND SOURCE_CODE = q'[057]'), (SELECT id FROM source WHERE code = 'OSE'), q'[0572]', SYSDATE, 1, SYSDATE, 1);
@@ -29751,6 +31327,10 @@ INSERT INTO GRADE(ID, LIBELLE_LONG, LIBELLE_COURT, ECHELLE, CORPS_ID, SOURCE_ID,
 INSERT INTO GRADE(ID, LIBELLE_LONG, LIBELLE_COURT, ECHELLE, CORPS_ID, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (GRADE_ID_SEQ.NEXTVAL, q'[SECRETAIRE GENERAL D'ACADEMIE GROUPE I]', q'[SGA GP I]', NULL, (SELECT ID FROM CORPS WHERE ROWNUM = 1 AND SOURCE_CODE = q'[091]'), (SELECT id FROM source WHERE code = 'OSE'), q'[0911]', SYSDATE, 1, SYSDATE, 1);
 INSERT INTO GRADE(ID, LIBELLE_LONG, LIBELLE_COURT, ECHELLE, CORPS_ID, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (GRADE_ID_SEQ.NEXTVAL, q'[CONSEILLER DE RECTEUR OU DE VICE RECTEUR]', q'[CONSEILLER RECTEUR]', NULL, (SELECT ID FROM CORPS WHERE ROWNUM = 1 AND SOURCE_CODE = q'[093]'), (SELECT id FROM source WHERE code = 'OSE'), q'[0931]', SYSDATE, 1, SYSDATE, 1);
 INSERT INTO GRADE(ID, LIBELLE_LONG, LIBELLE_COURT, ECHELLE, CORPS_ID, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (GRADE_ID_SEQ.NEXTVAL, q'[VICE-RECTEUR GROUPE II]', q'[VICE-RECTEUR GP II]', NULL, (SELECT ID FROM CORPS WHERE ROWNUM = 1 AND SOURCE_CODE = q'[090]'), (SELECT id FROM source WHERE code = 'OSE'), q'[0902]', SYSDATE, 1, SYSDATE, 1);
+INSERT INTO GRADE(ID, LIBELLE_LONG, LIBELLE_COURT, ECHELLE, CORPS_ID, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (GRADE_ID_SEQ.NEXTVAL, q'[MEDECIN DE L'E.N. HORS CLASSE]', q'[MED.EN.HC]', NULL, (SELECT ID FROM CORPS WHERE ROWNUM = 1 AND SOURCE_CODE = q'[997]'), (SELECT id FROM source WHERE code = 'OSE'), q'[9973]', SYSDATE, 1, SYSDATE, 1);
+INSERT INTO GRADE(ID, LIBELLE_LONG, LIBELLE_COURT, ECHELLE, CORPS_ID, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (GRADE_ID_SEQ.NEXTVAL, q'[CHARGE D'ETUDES DOCUMENTAIRES]', q'[CED]', NULL, (SELECT ID FROM CORPS WHERE ROWNUM = 1 AND SOURCE_CODE = q'[981]'), (SELECT id FROM source WHERE code = 'OSE'), q'[9811]', SYSDATE, 1, SYSDATE, 1);
+INSERT INTO GRADE(ID, LIBELLE_LONG, LIBELLE_COURT, ECHELLE, CORPS_ID, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (GRADE_ID_SEQ.NEXTVAL, q'[CHARGE D'ETUDES DOCUMENTAIRES PRINCIPAL]', q'[CED P]', NULL, (SELECT ID FROM CORPS WHERE ROWNUM = 1 AND SOURCE_CODE = q'[981]'), (SELECT id FROM source WHERE code = 'OSE'), q'[9812]', SYSDATE, 1, SYSDATE, 1);
+INSERT INTO GRADE(ID, LIBELLE_LONG, LIBELLE_COURT, ECHELLE, CORPS_ID, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (GRADE_ID_SEQ.NEXTVAL, q'[CHARGE D'ETUDES DOCUMENTAIRES HC]', q'[CED HC]', NULL, (SELECT ID FROM CORPS WHERE ROWNUM = 1 AND SOURCE_CODE = q'[981]'), (SELECT id FROM source WHERE code = 'OSE'), q'[9813]', SYSDATE, 1, SYSDATE, 1);
 INSERT INTO GRADE(ID, LIBELLE_LONG, LIBELLE_COURT, ECHELLE, CORPS_ID, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (GRADE_ID_SEQ.NEXTVAL, q'[DIRECTEUR GENERAL DES SERVICES GR III]', q'[DGS GR III]', NULL, (SELECT ID FROM CORPS WHERE ROWNUM = 1 AND SOURCE_CODE = q'[029]'), (SELECT id FROM source WHERE code = 'OSE'), q'[0293]', SYSDATE, 1, SYSDATE, 1);
 INSERT INTO GRADE(ID, LIBELLE_LONG, LIBELLE_COURT, ECHELLE, CORPS_ID, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (GRADE_ID_SEQ.NEXTVAL, q'[AGENT COMPTABLE CROUS GROUPE I]', q'[AC CROUS G1]', NULL, (SELECT ID FROM CORPS WHERE ROWNUM = 1 AND SOURCE_CODE = q'[052]'), (SELECT id FROM source WHERE code = 'OSE'), q'[0521]', SYSDATE, 1, SYSDATE, 1);
 INSERT INTO GRADE(ID, LIBELLE_LONG, LIBELLE_COURT, ECHELLE, CORPS_ID, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (GRADE_ID_SEQ.NEXTVAL, q'[PROFESSEUR D'EPS CLASSE EXCEPTIONNELLE]', q'[EPS CE]', NULL, (SELECT ID FROM CORPS WHERE ROWNUM = 1 AND SOURCE_CODE = q'[531]'), (SELECT id FROM source WHERE code = 'OSE'), q'[5314]', SYSDATE, 1, SYSDATE, 1);
-- 
GitLab