diff --git a/CHANGELOG b/CHANGELOG
index 9e7a8d3cc0a430cc900f4c7abf60d37eece0e643..8bda97c248abe15fbf7fcfc114ba83b07164555e 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
Binary files "a/data/D\303\251ploiement/Changements.pdf" and "b/data/D\303\251ploiement/Changements.pdf" differ
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
Binary files "a/data/D\303\251ploiement/Proc\303\251dure d'installation.pdf" and "b/data/D\303\251ploiement/Proc\303\251dure d'installation.pdf" differ
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
Binary files "a/data/D\303\251ploiement/Proc\303\251dure de mise \303\240 jour.pdf" and "b/data/D\303\251ploiement/Proc\303\251dure de mise \303\240 jour.pdf" differ
diff --git "a/data/D\303\251ploiement/ose-ddl.sql" "b/data/D\303\251ploiement/ose-ddl.sql"
index 96a8c501f70f5b198bdcd336159c93ea2f5e92fc..38f542a032cc20ee501c1b27a37ea580c3811840 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);