From 7c16c150e504bcd7dcd11a3d4e67010ee46f0ad5 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Laurent=20L=C3=A9cluse?= <laurent.lecluse@unicaen.fr>
Date: Thu, 11 Mar 2021 17:01:16 +0100
Subject: [PATCH] MAJ doc

---
 CHANGELOG.md                                  |   63 +-
 .../Cr\303\251ation tables/EMPLOYEUR.md"      |   30 +-
 .../Cr\303\251ation tables/INTERVENANT.md"    |    4 +-
 doc/Divers/migration-bdd-14-vers-15.sql       | 2629 +++++++++++++++++
 doc/Stockage-fichiers.md                      |   63 +
 doc/service_correction_bdd.md                 |   79 -
 doc/service_correction_bdd.png                |  Bin 83021 -> 0 bytes
 7 files changed, 2778 insertions(+), 90 deletions(-)
 create mode 100644 doc/Divers/migration-bdd-14-vers-15.sql
 create mode 100644 doc/Stockage-fichiers.md
 delete mode 100644 doc/service_correction_bdd.md
 delete mode 100644 doc/service_correction_bdd.png

diff --git a/CHANGELOG.md b/CHANGELOG.md
index da456cac15..c6633c9a2b 100755
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -40,20 +40,67 @@ Objectif : Doubles statuts et refonte des données personnelles
 
 ## Notes de mise à jour
 
-* PHP 7.4 minimum requis : attention à bien mettre à jour vos serveurs
+Merci de lire ceci **AVANT** d'entamer la mise à jour!!
 
-* Cette version comporte de nombreux changements en particulier sur la gestion des intervenants. 
-La migration ne sera possible qu'à partir de la version 14.11.
-Si vous êtes sur une version antérieure à la 14, merci de migrer en 14.11 **AVANT** de migrer vers la 15.
+La mise à jour n'est en effet pas réversible.
 
-* La base de données ayant été remaniée, il vous faudra adapter vos connecteurs RH. En particulier les vues sources visant les tables INTERVENANT, STRUCTURE, PAYS et DEPARTEMENT.
-Une nouvelle documentation sur les connecteurs est disponible ici : [Import de données via les connecteurs](doc/Connecteurs%20Import/Connecteurs%20IMPORT.md).
+Nous vous recommandons en outre de vous entrainer au préalable sur une instance de préproduction avant de passer en production.
 
-* Lors de la mise à jour, les différents objets qui concernent vos connecteurs et sur lesquels il y a des changements à faire s'afficheront en erreur. Il vous revient de mettre à jour par vous-mêmes ces connecteurs.
+### 1. PHP7.4
+PHP 7.4 est maintenant requis : attention à bien mettre à jour vos serveurs
 
-* Attention : un bug est connu et en cours de résolution : il se produit lorsqu'en tant qu'intervenant vous saisissez vos données personnelles. Une page d'erreur s'affiche au moment ou vous sélectionnez votre statut. Une mise à jour de la page suffit pour pouvoir continuer la saisie du formulaire.
+### 2. OSE 14.11 minimum
 
+Pour cette version, il n'est pas possible de migrer depuis dde trop anciennes instances de OSE.
+Avant la V15, vous devrez préalablement migrer en version 14.16.
+Et ce n'est qu'à partir de la 14.16 que vous pourrez migrer vers la 15.
 
+### 3. Connecteurs
+
+La structure de la base de données OSE a évolué.
+Voici pour information la liste des changements opérés au niveau des structures de données : ([Changements de structures BDD 14->15](doc/Divers/migration-bdd-14-vers-15.sql)).
+Ce script ne doit pas être exécuté, la procédure de migration se chargera de cela toute seule.
+
+Certains de vos connecteurs devront être adaptés, en particulier au niveau RH.
+De même, si vous avez créé des requêtes personnalisées, des états de sortie, attention à bien tenir compte ces changmements!
+
+Niveau connecteurs, les changements à faire sont les suivants :
+* Vue source [SRC_PAYS](doc/Connecteurs%20Import/Création%20tables/PAYS.md) : 
+  * LIBELLE_COURT et LIBELLE_LONG disparaissent au profit de LIBELLE
+  * nouvelle colonne CODE
+* Vue source [SRC_DEPARTEMENT](doc/Connecteurs%20Import/Création%20tables/DEPARTEMENT.md) :
+  * LIBELLE_COURT et LIBELLE_LONG disparaissent au profit de LIBELLE
+  * nouvelle colonne CODE
+* Nouvelle table [VOIRIE](doc/Connecteurs%20Import/Création%20tables/VOIRIE.md) :
+  * Possibilité d'importer les voiries en provenance de votre système d'information.
+* Vue source [SRC_STRUCTURE](doc/Connecteurs%20Import/Création%20tables/STRUCTURE.md) :
+  * Changement du format des adresses. Vouc pourrez vous inspirer des différents connecteurs existants pour adapter le votre.
+* Vue source [SRC_INTERVENANT](doc/Connecteurs%20Import/Générique/SRC_INTERVENANT.sql) :
+  * Il y a ici de nombreux changements.
+  * La vue matérialisée [MV_INTERVENANT](doc/Connecteurs%20Import/Création%20tables/INTERVENANT.md) devra être adaptée pour fournir toutes les colonnes nécessaires.
+  * La vue [SRC_INTERVENANT](doc/Connecteurs%20Import/Générique/SRC_INTERVENANT.sql) doit être utilisée telle quelle, sans adaptation de votre part
+* Suppression d'anciennes tables, dont les vues sources correspondantes doivent être supprimées par vos soins :
+  * DROP VIEW V_DIFF_ADRESSE_INTERVENANT
+  * DROP VIEW SRC_ADRESSE_INTERVENANT
+  * DROP VIEW V_DIFF_ADRESSE_STRUCTURE
+  * DROP VIEW SRC_ADRESSE_STRUCTURE
+  * Ces vues devront être supprimées AVANT la mise à jour. Le script de migration ne le fait pas automatiquement afin de vous laisser le temps de les sauvegarder le cas échéant.
+
+Plus généralement, [une nouvelle documentation sur les connecteurs est disponible](doc/Connecteurs Import/Connecteurs IMPORT.md).
+
+### 4. Activation du stockage des fichiers dans le filesystem
+
+Pas obligatoire, mais recommandé (sur votre instance de production).
+
+* [Activer le stockage des fichiers dans le système de fichiers plutôt qu'en base de données (recommandé pour la production)](doc/Stockage-fichiers.md)
+
+### 5. Gestion des employeurs
+
+OSE peut maintenant gérer un référentiel des employeurs
+Vous avez deux options au choix :
+ * soit importer votre propre liste d'employeurs via une vue source [SRC_EMPLOYEUR](doc/Connecteurs%20Import/Création%20tables/EMPLOYEUR.md) dédiée, à l'instar des autres connecteurs
+ * soit injecter dans OSE la totalité des employeurs de France, liste issue du référentiel SIRENE via la commande `./bin/ose update-employeur`
+Cette commande devra être exécutée de manière régulière, une fois par mois environ si vous voulez que votre référentiel d'employeurs soit à jour.
 
 # OSE 14.17 (en cours de développement)
 
diff --git "a/doc/Connecteurs Import/Cr\303\251ation tables/EMPLOYEUR.md" "b/doc/Connecteurs Import/Cr\303\251ation tables/EMPLOYEUR.md"
index 4acfede741..73f9acbe0a 100644
--- "a/doc/Connecteurs Import/Cr\303\251ation tables/EMPLOYEUR.md"	
+++ "b/doc/Connecteurs Import/Cr\303\251ation tables/EMPLOYEUR.md"	
@@ -10,6 +10,34 @@ Colonnes nécessaires :
 |RAISON_SOCIALE         |VARCHAR2|250     |Non     |           |
 |NOM_COMMERCIAL         |VARCHAR2|250     |Oui     |           |
 |IDENTIFIANT_ASSOCIATION|VARCHAR2|250     |Oui     |           |
-|CRITERE_RECHERCHE      |VARCHAR2|500     |Oui     |           |
 |Z_SOURCE_ID            |NUMBER  |        |Non     |==> SOURCE.CODE|
 |SOURCE_CODE            |VARCHAR2|100     |Oui     |           |
+
+Voici ci-dessous un prototype de vue qui pourra vous inspirer :
+
+```sql
+CREATE OR REPLACE FORCE VIEW SRC_EMPLOYEUR AS
+WITH source_query AS (
+  SELECT
+    'votre SIREN'                   siren,
+    'votre RAISON_SOCIALE'          raison_sociale,
+    'votre NOM_COMMERCIAL'          nom_commercial,
+    'votre IDENTIFIANT_ASSOCIATION' identifiant_association,
+    'votre Z_SOURCE_ID'             z_source_id,
+    'votre SOURCE_CODE'             source_code
+  FROM
+    dual
+)
+SELECT
+  sq.siren                   siren,
+  sq.raison_sociale          raison_sociale,
+  sq.nom_commercial          nom_commercial,
+  sq.identifiant_association identifiant_association,
+  -- optimisation pour accélérer les recherches
+  ose_divers.str_reduce( sq.raison_sociale || ' ' || sq.nom_commercial || ' ' || sq.identifiant_association ) critere_recherche,
+  s.id                       source_id,
+  sq.source_code             source_code
+FROM
+  source_query sq
+  JOIN source   s ON s.code        = sq.z_source_id
+```
\ No newline at end of file
diff --git "a/doc/Connecteurs Import/Cr\303\251ation tables/INTERVENANT.md" "b/doc/Connecteurs Import/Cr\303\251ation tables/INTERVENANT.md"
index 87a95296c0..a798599f95 100644
--- "a/doc/Connecteurs Import/Cr\303\251ation tables/INTERVENANT.md"	
+++ "b/doc/Connecteurs Import/Cr\303\251ation tables/INTERVENANT.md"	
@@ -9,6 +9,8 @@ Ici, principalement pour des raisons de performances, ilest recommandé de proc
 * Utiliser [SRC_INTERVENANT](../Générique/SRC_INTERVENANT.sql) en tant que vue source. Cette vue SRC_INTERVENANT est commune à tous les connecteurs.
 Vous devez l'utiliser telle quelle.
 
+Votre vue matérialisée MV_INTERVENANT devra contenir les colonnes suivantes :
+
 |Colonne                   |Type    |Longueur|Nullable|Commentaire                  |
 |--------------------------|--------|--------|--------|-----------------------------|
 |CODE                      |VARCHAR2|60      |Non     | Identifiant unique de l'individu dans le système d'information l'individu |
@@ -69,5 +71,3 @@ Par défaut, c'est `supannEmpId`, mais vous pouvez le personnaliser dans le fich
 
 Exemple de vue matérialisée :
 [MV_INTERVENANT](../Harpège/MV_INTERVENANT.sql)
-
-Attention : il faudra adapter le code permettant de faire le mapping au niveau du statut ainsi que de la discipline.
\ No newline at end of file
diff --git a/doc/Divers/migration-bdd-14-vers-15.sql b/doc/Divers/migration-bdd-14-vers-15.sql
new file mode 100644
index 0000000000..48a9844f1b
--- /dev/null
+++ b/doc/Divers/migration-bdd-14-vers-15.sql
@@ -0,0 +1,2629 @@
+--------------------------------------------------
+-- view.drop
+--------------------------------------------------
+
+DROP VIEW V_INDIC_DIFF_DOSSIER;
+/
+
+
+
+
+--------------------------------------------------
+-- materialized-view.drop
+--------------------------------------------------
+
+DROP MATERIALIZED VIEW MV_EXT_SERVICE;
+/
+
+
+
+
+--------------------------------------------------
+-- table.create
+--------------------------------------------------
+
+CREATE TABLE "ADRESSE_NUMERO_COMPL"
+   (  "ID" NUMBER NOT NULL ENABLE,
+  "CODE" VARCHAR2(5 CHAR) NOT NULL ENABLE,
+  "LIBELLE" VARCHAR2(120 CHAR) NOT NULL ENABLE
+   );
+/
+
+CREATE TABLE "DOSSIER_CHAMP_AUTRE"
+   (  "ID" NUMBER NOT NULL ENABLE,
+  "DOSSIER_CHAMP_AUTRE_TYPE_ID" NUMBER DEFAULT 1 NOT NULL ENABLE,
+  "LIBELLE" VARCHAR2(200 CHAR),
+  "CONTENU" CLOB,
+  "OBLIGATOIRE" NUMBER(1) DEFAULT 1 NOT NULL ENABLE,
+  "SQL_VALUE" VARCHAR2(4000 CHAR),
+  "JSON_VALUE" CLOB,
+  "DESCRIPTION" VARCHAR2(3000 CHAR)
+   );
+/
+
+CREATE TABLE "DOSSIER_CHAMP_AUTRE_PAR_STATUT"
+   (  "DOSSIER_CHAMP_AUTRE_ID" NUMBER(*,0) NOT NULL ENABLE,
+  "STATUT_ID" NUMBER(*,0) NOT NULL ENABLE
+   );
+/
+
+CREATE TABLE "DOSSIER_CHAMP_AUTRE_TYPE"
+   (  "ID" NUMBER NOT NULL ENABLE,
+  "CODE" VARCHAR2(15 CHAR) NOT NULL ENABLE,
+  "LIBELLE" VARCHAR2(50 CHAR) NOT NULL ENABLE
+   );
+/
+
+CREATE TABLE "EMPLOYEUR"
+   (  "ID" NUMBER NOT NULL ENABLE,
+  "SIREN" VARCHAR2(100 CHAR) NOT NULL ENABLE,
+  "RAISON_SOCIALE" VARCHAR2(250 CHAR) NOT NULL ENABLE,
+  "NOM_COMMERCIAL" VARCHAR2(250 CHAR),
+  "IDENTIFIANT_ASSOCIATION" VARCHAR2(250 CHAR),
+  "CRITERE_RECHERCHE" VARCHAR2(500 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)
+   );
+/
+
+CREATE TABLE "INTERVENANT_DOSSIER"
+   (  "ID" NUMBER(*,0) NOT NULL ENABLE,
+  "INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE,
+  "STATUT_ID" NUMBER(*,0) NOT NULL ENABLE,
+  "CIVILITE_ID" NUMBER(*,0),
+  "NOM_USUEL" VARCHAR2(60 CHAR),
+  "PRENOM" VARCHAR2(60 CHAR),
+  "DATE_NAISSANCE" DATE,
+  "NOM_PATRONYMIQUE" VARCHAR2(60 CHAR),
+  "COMMUNE_NAISSANCE" VARCHAR2(60 CHAR),
+  "PAYS_NAISSANCE_ID" NUMBER(*,0),
+  "DEPARTEMENT_NAISSANCE_ID" NUMBER(*,0),
+  "PAYS_NATIONALITE_ID" NUMBER(*,0),
+  "TEL_PRO" VARCHAR2(30 CHAR),
+  "TEL_PERSO" VARCHAR2(30 CHAR),
+  "EMAIL_PRO" VARCHAR2(255 CHAR),
+  "EMAIL_PERSO" VARCHAR2(255 CHAR),
+  "ADRESSE_PRECISIONS" VARCHAR2(240 CHAR),
+  "ADRESSE_NUMERO" VARCHAR2(4 CHAR),
+  "ADRESSE_NUMERO_COMPL_ID" NUMBER,
+  "ADRESSE_VOIRIE_ID" NUMBER(*,0),
+  "ADRESSE_VOIE" VARCHAR2(60 CHAR),
+  "ADRESSE_LIEU_DIT" VARCHAR2(60 CHAR),
+  "ADRESSE_CODE_POSTAL" VARCHAR2(15 CHAR),
+  "ADRESSE_COMMUNE" VARCHAR2(100 CHAR),
+  "ADRESSE_PAYS_ID" NUMBER(*,0),
+  "NUMERO_INSEE" VARCHAR2(20 CHAR),
+  "NUMERO_INSEE_PROVISOIRE" NUMBER(1) DEFAULT 0 NOT NULL ENABLE,
+  "IBAN" VARCHAR2(50 CHAR),
+  "BIC" VARCHAR2(20 CHAR),
+  "RIB_HORS_SEPA" NUMBER(1) DEFAULT 0 NOT NULL ENABLE,
+  "AUTRE_1" VARCHAR2(1000 CHAR),
+  "AUTRE_2" VARCHAR2(1000 CHAR),
+  "AUTRE_3" VARCHAR2(1000 CHAR),
+  "AUTRE_4" VARCHAR2(1000 CHAR),
+  "AUTRE_5" VARCHAR2(1000 CHAR),
+  "EMPLOYEUR_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 "INTERVENANT_PAR_DEFAUT"
+   (  "ID" NUMBER NOT NULL ENABLE,
+  "INTERVENANT_ID" NUMBER NOT NULL ENABLE,
+  "INTERVENANT_CODE" VARCHAR2(60 CHAR) NOT NULL ENABLE,
+  "ANNEE_ID" NUMBER NOT NULL ENABLE
+   );
+/
+
+CREATE TABLE "VOIRIE"
+   (  "ID" NUMBER NOT NULL ENABLE,
+  "CODE" VARCHAR2(5 CHAR) NOT NULL ENABLE,
+  "LIBELLE" VARCHAR2(120 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)
+   );
+/
+
+
+
+
+--------------------------------------------------
+-- table.alter
+--------------------------------------------------
+
+COMMENT ON TABLE "CIVILITE" IS 'columns-order=ID,SEXE,LIBELLE_COURT,LIBELLE_LONG;
+Liste des civilités';
+/
+
+ALTER TABLE "DEPARTEMENT" ADD ("LIBELLE" VARCHAR2(120 CHAR) NOT NULL ENABLE);
+/
+
+ALTER TABLE "DEPARTEMENT" MODIFY ("CODE" NOT NULL);
+/
+
+ALTER TABLE "DEPARTEMENT" DROP COLUMN "LIBELLE_COURT";
+/
+
+ALTER TABLE "DEPARTEMENT" DROP COLUMN "LIBELLE_LONG";
+/
+
+ALTER TABLE "IMPORT_TABLES" ADD ("KEY_COLUMNS" VARCHAR2(1000 CHAR));
+/
+
+ALTER TABLE "IMPORT_TABLES" ADD ("SYNC_NON_IMPORTABLES" NUMBER(1) DEFAULT 0 NOT NULL ENABLE);
+/
+
+ALTER TABLE "INTERVENANT" ADD ("ADRESSE_CODE_POSTAL" VARCHAR2(15 CHAR));
+/
+
+ALTER TABLE "INTERVENANT" ADD ("ADRESSE_COMMUNE" VARCHAR2(50 CHAR));
+/
+
+ALTER TABLE "INTERVENANT" ADD ("ADRESSE_LIEU_DIT" VARCHAR2(60 CHAR));
+/
+
+ALTER TABLE "INTERVENANT" ADD ("ADRESSE_NUMERO" VARCHAR2(4 CHAR));
+/
+
+ALTER TABLE "INTERVENANT" ADD ("ADRESSE_NUMERO_COMPL_ID" NUMBER);
+/
+
+ALTER TABLE "INTERVENANT" ADD ("ADRESSE_PAYS_ID" NUMBER);
+/
+
+ALTER TABLE "INTERVENANT" ADD ("ADRESSE_PRECISIONS" VARCHAR2(240 CHAR));
+/
+
+ALTER TABLE "INTERVENANT" ADD ("ADRESSE_VOIE" VARCHAR2(60 CHAR));
+/
+
+ALTER TABLE "INTERVENANT" ADD ("ADRESSE_VOIRIE_ID" NUMBER);
+/
+
+ALTER TABLE "INTERVENANT" ADD ("AUTRE_1" VARCHAR2(1000 CHAR));
+/
+
+ALTER TABLE "INTERVENANT" ADD ("AUTRE_2" VARCHAR2(1000 CHAR));
+/
+
+ALTER TABLE "INTERVENANT" ADD ("AUTRE_3" VARCHAR2(1000 CHAR));
+/
+
+ALTER TABLE "INTERVENANT" ADD ("AUTRE_4" VARCHAR2(1000 CHAR));
+/
+
+ALTER TABLE "INTERVENANT" ADD ("AUTRE_5" VARCHAR2(1000 CHAR));
+/
+
+ALTER TABLE "INTERVENANT" ADD ("CODE_RH" VARCHAR2(60 CHAR));
+/
+
+ALTER TABLE "INTERVENANT" ADD ("COMMUNE_NAISSANCE" VARCHAR2(60 CHAR));
+/
+
+ALTER TABLE "INTERVENANT" ADD ("DEPARTEMENT_NAISSANCE_ID" NUMBER(*,0));
+/
+
+ALTER TABLE "INTERVENANT" ADD ("EMAIL_PERSO" VARCHAR2(255 CHAR));
+/
+
+ALTER TABLE "INTERVENANT" ADD ("EMAIL_PRO" VARCHAR2(255 CHAR));
+/
+
+ALTER TABLE "INTERVENANT" ADD ("EMPLOYEUR_ID" NUMBER);
+/
+
+ALTER TABLE "INTERVENANT" ADD ("SYNC_STATUT" NUMBER(1) DEFAULT 1 NOT NULL ENABLE);
+/
+
+ALTER TABLE "INTERVENANT" ADD ("SYNC_STRUCTURE" NUMBER(1) DEFAULT 1 NOT NULL ENABLE);
+/
+
+ALTER TABLE "INTERVENANT" ADD ("SYNC_UTILISATEUR_CODE" NUMBER(1) DEFAULT 1 NOT NULL ENABLE);
+/
+
+ALTER TABLE "INTERVENANT" ADD ("TEL_PERSO" VARCHAR2(30 CHAR));
+/
+
+ALTER TABLE "INTERVENANT" ADD ("VALIDITE_DEBUT" DATE);
+/
+
+ALTER TABLE "INTERVENANT" ADD ("VALIDITE_FIN" DATE);
+/
+
+ALTER TABLE "INTERVENANT" MODIFY ("CODE" NOT NULL);
+/
+
+ALTER TABLE "INTERVENANT" MODIFY ("NUMERO_INSEE" VARCHAR2(20 CHAR));
+/
+
+ALTER TABLE "INTERVENANT" MODIFY ("NUMERO_INSEE_PROVISOIRE" NOT NULL);
+/
+
+ALTER TABLE "INTERVENANT" MODIFY ("NUMERO_INSEE_PROVISOIRE" DEFAULT 0 );
+/
+
+ALTER TABLE "INTERVENANT" MODIFY ("SOURCE_CODE" NOT NULL);
+/
+
+ALTER TABLE "INTERVENANT" MODIFY ("TEL_PRO" VARCHAR2(30 CHAR));
+/
+
+ALTER TABLE "INTERVENANT" DROP COLUMN "DEP_NAISSANCE_ID";
+/
+
+ALTER TABLE "INTERVENANT" DROP COLUMN "EMAIL";
+/
+
+ALTER TABLE "INTERVENANT" DROP COLUMN "NUMERO_INSEE_CLE";
+/
+
+ALTER TABLE "INTERVENANT" DROP COLUMN "PREMIER_RECRUTEMENT";
+/
+
+ALTER TABLE "INTERVENANT" DROP COLUMN "TEL_MOBILE";
+/
+
+ALTER TABLE "INTERVENANT" DROP COLUMN "VILLE_NAISSANCE_CODE_INSEE";
+/
+
+ALTER TABLE "INTERVENANT" DROP COLUMN "VILLE_NAISSANCE_LIBELLE";
+/
+
+COMMENT ON TABLE "INTERVENANT" IS 'columns-order=ID,ANNEE_ID,CODE,UTILISATEUR_CODE,STRUCTURE_ID,STATUT_ID,GRADE_ID,DISCIPLINE_ID,CIVILITE_ID,NOM_USUEL,PRENOM,DATE_NAISSANCE,NOM_PATRONYMIQUE,COMMUNE_NAISSANCE,PAYS_NAISSANCE_ID,DEPARTEMENT_NAISSANCE_ID,PAYS_NATIONALITE_ID,TEL_PRO,TEL_PERSO,EMAIL_PRO,EMAIL_PERSO,ADDR_PRECISIONS,ADDR_NUMERO,ADDR_NUMERO_COMPL_ID,ADDR_VOIRIE_ID,ADDR_VOIE,ADDR_LIEU_DIT,ADDR_CODE_POSTAL,ADDR_COMMUNE,ADDR_PAYS_ID,NUMERO_INSEE,NUMERO_INSEE_PROVISOIRE,IBAN,BIC,RIB_HORS_SEPA,AUTRE_1,AUTRE_2,AUTRE_3,AUTRE_4,AUTRE_5,EMPLOYEUR_ID,MONTANT_INDEMNITE_FC,CRITERE_RECHERCHE,SOURCE_ID,SOURCE_CODE,SYNC_STATUT,SYNC_STRUCTURE,HISTO_CREATION,HISTO_CREATEUR_ID,HISTO_MODIFICATION,HISTO_MODIFICATEUR_ID,HISTO_DESTRUCTION,HISTO_DESTRUCTEUR_ID;';
+/
+
+ALTER TABLE "PAYS" ADD ("CODE" VARCHAR2(15 CHAR) NOT NULL ENABLE);
+/
+
+ALTER TABLE "PAYS" ADD ("LIBELLE" VARCHAR2(120 CHAR) NOT NULL ENABLE);
+/
+
+ALTER TABLE "PAYS" DROP COLUMN "LIBELLE_COURT";
+/
+
+ALTER TABLE "PAYS" DROP COLUMN "LIBELLE_LONG";
+/
+
+ALTER TABLE "STATUT_INTERVENANT" ADD ("CODE" VARCHAR2(50 CHAR) NOT NULL ENABLE);
+/
+
+ALTER TABLE "STATUT_INTERVENANT" ADD ("DOSSIER_ADRESSE" NUMBER(1) DEFAULT 1 NOT NULL ENABLE);
+/
+
+ALTER TABLE "STATUT_INTERVENANT" ADD ("DOSSIER_CONTACT" NUMBER(1) DEFAULT 1 NOT NULL ENABLE);
+/
+
+ALTER TABLE "STATUT_INTERVENANT" ADD ("DOSSIER_EMAIL_PERSO" NUMBER(1) DEFAULT 0 NOT NULL ENABLE);
+/
+
+ALTER TABLE "STATUT_INTERVENANT" ADD ("DOSSIER_EMPLOYEUR" NUMBER(1) DEFAULT 0 NOT NULL ENABLE);
+/
+
+ALTER TABLE "STATUT_INTERVENANT" ADD ("DOSSIER_IBAN" NUMBER(1) DEFAULT 1 NOT NULL ENABLE);
+/
+
+ALTER TABLE "STATUT_INTERVENANT" ADD ("DOSSIER_IDENTITE_COMP" NUMBER(1) DEFAULT 1 NOT NULL ENABLE);
+/
+
+ALTER TABLE "STATUT_INTERVENANT" ADD ("DOSSIER_INSEE" NUMBER(1) DEFAULT 1 NOT NULL ENABLE);
+/
+
+ALTER TABLE "STATUT_INTERVENANT" ADD ("DOSSIER_TEL_PERSO" NUMBER(1) DEFAULT 0 NOT NULL ENABLE);
+/
+
+ALTER TABLE "STATUT_INTERVENANT" DROP COLUMN "SOURCE_CODE";
+/
+
+ALTER TABLE "STATUT_INTERVENANT" DROP COLUMN "SOURCE_ID";
+/
+
+ALTER TABLE "STRUCTURE" ADD ("ADRESSE_CODE_POSTAL" VARCHAR2(15 CHAR));
+/
+
+ALTER TABLE "STRUCTURE" ADD ("ADRESSE_COMMUNE" VARCHAR2(50 CHAR));
+/
+
+ALTER TABLE "STRUCTURE" ADD ("ADRESSE_LIEU_DIT" VARCHAR2(60 CHAR));
+/
+
+ALTER TABLE "STRUCTURE" ADD ("ADRESSE_NUMERO" VARCHAR2(4 CHAR));
+/
+
+ALTER TABLE "STRUCTURE" ADD ("ADRESSE_NUMERO_COMPL_ID" NUMBER);
+/
+
+ALTER TABLE "STRUCTURE" ADD ("ADRESSE_PAYS_ID" NUMBER(*,0));
+/
+
+ALTER TABLE "STRUCTURE" ADD ("ADRESSE_PRECISIONS" VARCHAR2(240 CHAR));
+/
+
+ALTER TABLE "STRUCTURE" ADD ("ADRESSE_VOIE" VARCHAR2(60 CHAR));
+/
+
+ALTER TABLE "STRUCTURE" ADD ("ADRESSE_VOIRIE_ID" NUMBER(*,0));
+/
+
+ALTER TABLE "TBL" ADD ("PARAMETRES" VARCHAR2(500 CHAR));
+/
+
+ALTER TABLE "TBL_AGREMENT" MODIFY ("CODE_INTERVENANT" NOT NULL);
+/
+
+ALTER TABLE "TBL_AGREMENT" MODIFY ("DUREE_VIE" NOT NULL);
+/
+
+ALTER TABLE "TBL_AGREMENT" DROP COLUMN "TO_DELETE";
+/
+
+ALTER TABLE "TBL_CHARGENS" DROP COLUMN "TO_DELETE";
+/
+
+ALTER TABLE "TBL_CHARGENS_SEUILS_DEF" DROP COLUMN "TO_DELETE";
+/
+
+ALTER TABLE "TBL_CLOTURE_REALISE" DROP COLUMN "TO_DELETE";
+/
+
+ALTER TABLE "TBL_CONTRAT" DROP COLUMN "TO_DELETE";
+/
+
+ALTER TABLE "TBL_DMEP_LIQUIDATION" DROP COLUMN "TO_DELETE";
+/
+
+ALTER TABLE "TBL_DOSSIER" ADD ("COMPLETUDE_ADRESSE" NUMBER(*,0) DEFAULT 0);
+/
+
+ALTER TABLE "TBL_DOSSIER" ADD ("COMPLETUDE_AUTRES" NUMBER(*,0) DEFAULT 0);
+/
+
+ALTER TABLE "TBL_DOSSIER" ADD ("COMPLETUDE_CONTACT" NUMBER(*,0) DEFAULT 0);
+/
+
+ALTER TABLE "TBL_DOSSIER" ADD ("COMPLETUDE_EMPLOYEUR" NUMBER(*,0) DEFAULT 0);
+/
+
+ALTER TABLE "TBL_DOSSIER" ADD ("COMPLETUDE_IBAN" NUMBER(*,0) DEFAULT 0);
+/
+
+ALTER TABLE "TBL_DOSSIER" ADD ("COMPLETUDE_IDENTITE" NUMBER(*,0) DEFAULT 0);
+/
+
+ALTER TABLE "TBL_DOSSIER" ADD ("COMPLETUDE_IDENTITE_COMP" NUMBER(*,0) DEFAULT 0);
+/
+
+ALTER TABLE "TBL_DOSSIER" ADD ("COMPLETUDE_INSEE" NUMBER(*,0) DEFAULT 0);
+/
+
+ALTER TABLE "TBL_DOSSIER" ADD ("COMPLETUDE_STATUT" NUMBER(*,0) DEFAULT 0);
+/
+
+ALTER TABLE "TBL_DOSSIER" DROP COLUMN "TO_DELETE";
+/
+
+ALTER TABLE "TBL_LIEN" DROP COLUMN "TO_DELETE";
+/
+
+ALTER TABLE "TBL_PAIEMENT" DROP COLUMN "TO_DELETE";
+/
+
+ALTER TABLE "TBL_PIECE_JOINTE" DROP COLUMN "TO_DELETE";
+/
+
+ALTER TABLE "TBL_PIECE_JOINTE_DEMANDE" MODIFY ("CODE_INTERVENANT" NOT NULL);
+/
+
+ALTER TABLE "TBL_PIECE_JOINTE_DEMANDE" DROP COLUMN "TO_DELETE";
+/
+
+ALTER TABLE "TBL_PIECE_JOINTE_FOURNIE" MODIFY ("CODE_INTERVENANT" NOT NULL);
+/
+
+ALTER TABLE "TBL_PIECE_JOINTE_FOURNIE" DROP COLUMN "TO_DELETE";
+/
+
+ALTER TABLE "TBL_SERVICE" MODIFY ("TYPE_VOLUME_HORAIRE_CODE" NOT NULL);
+/
+
+ALTER TABLE "TBL_SERVICE" DROP COLUMN "TO_DELETE";
+/
+
+ALTER TABLE "TBL_SERVICE_REFERENTIEL" DROP COLUMN "TO_DELETE";
+/
+
+ALTER TABLE "TBL_SERVICE_SAISIE" DROP COLUMN "TO_DELETE";
+/
+
+ALTER TABLE "TBL_VALIDATION_ENSEIGNEMENT" DROP COLUMN "TO_DELETE";
+/
+
+ALTER TABLE "TBL_VALIDATION_REFERENTIEL" DROP COLUMN "TO_DELETE";
+/
+
+
+
+
+--------------------------------------------------
+-- view.alter
+--------------------------------------------------
+
+CREATE OR REPLACE FORCE VIEW V_AGREMENT_EXPORT_CSV 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,
+
+  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,
+  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;
+/
+
+CREATE OR REPLACE FORCE VIEW V_CONTRAT_MAIN AS
+WITH hs AS (
+  SELECT contrat_id, SUM(heures) "serviceTotal" FROM V_CONTRAT_SERVICES GROUP BY contrat_id
+)
+SELECT
+  ct.annee_id,
+  ct.structure_id,
+  ct.intervenant_id,
+  ct.formule_resultat_id,
+  ct.id contrat_id,
+
+  ct."annee",
+  ct."nom",
+  ct."prenom",
+  ct."civilite",
+  ct."e",
+  ct."dateNaissance",
+  ct."adresse",
+  ct."numInsee",
+  ct."statut",
+  ct."totalHETD",
+  ct."tauxHoraireValeur",
+  ct."tauxHoraireDate",
+  ct."dateSignature",
+  ct."modifieComplete",
+  CASE WHEN ct.est_contrat=1 THEN 1 ELSE NULL END "contrat1",
+  CASE WHEN ct.est_contrat=1 THEN NULL ELSE 1 END "avenant1",
+  CASE WHEN ct.est_contrat=1 THEN '3' ELSE '2' END "n",
+  to_char(SYSDATE, 'dd/mm/YYYY - hh24:mi:ss') "horodatage",
+  'Exemplaire à conserver' "exemplaire1",
+  'Exemplaire à retourner' || ct."exemplaire2" "exemplaire2",
+  ct."serviceTotal",
+
+  CASE ct.est_contrat
+    WHEN 1 THEN -- contrat
+      'Contrat de travail'
+    ELSE
+      'Avenant au contrat de travail initial modifiant le volume horaire initial'
+      || ' de recrutement en qualité'
+  END                                         "titre",
+  CASE WHEN ct.est_atv = 1 THEN
+    'd''agent temporaire vacataire'
+  ELSE
+    'de chargé' || ct."e" || ' d''enseignement vacataire'
+  END                                         "qualite",
+
+  CASE
+    WHEN ct.est_projet = 1 AND ct.est_contrat = 1 THEN 'Projet de contrat'
+    WHEN ct.est_projet = 0 AND ct.est_contrat = 1 THEN 'Contrat n°' || ct.id
+    WHEN ct.est_projet = 1 AND ct.est_contrat = 0 THEN 'Projet d''avenant'
+    WHEN ct.est_projet = 0 AND ct.est_contrat = 0 THEN 'Avenant n°' || ct.contrat_id || '.' || ct.numero_avenant
+  END                                         "titreCourt"
+FROM
+(
+  SELECT
+    c.*,
+    i.annee_id                                                                                    annee_id,
+    fr.id                                                                                         formule_resultat_id,
+    a.libelle                                                                                     "annee",
+    COALESCE(d.nom_usuel,i.nom_usuel)                                                             "nom",
+    COALESCE(d.prenom,i.prenom)                                                                   "prenom",
+    civ.libelle_court                                                                             "civilite",
+    CASE WHEN civ.sexe = 'F' THEN 'e' ELSE '' END                                                 "e",
+    to_char(COALESCE(d.date_naissance,i.date_naissance), 'dd/mm/YYYY')                            "dateNaissance",
+    COALESCE(
+    ose_divers.formatted_adresse(
+        d.adresse_precisions, d.adresse_lieu_dit,
+        d.adresse_numero, d.adresse_numero_compl_id, d.adresse_voirie_id, d.adresse_voie,
+        d.adresse_code_postal, d.adresse_commune, d.adresse_pays_id
+      ),
+      ose_divers.formatted_adresse(
+        i.adresse_precisions, i.adresse_lieu_dit,
+        i.adresse_numero, i.adresse_numero_compl_id, i.adresse_voirie_id, i.adresse_voie,
+        i.adresse_code_postal, i.adresse_commune, i.adresse_pays_id
+      )
+    ) "adresse",
+    COALESCE(d.numero_insee,i.numero_insee)                                                       "numInsee",
+    si.libelle                                                                                    "statut",
+    REPLACE(ltrim(to_char(COALESCE(c.total_hetd, fr.total,0), '999999.00')),'.',',')              "totalHETD",
+    REPLACE(ltrim(to_char(COALESCE(th.valeur,0), '999999.00')),'.',',')                           "tauxHoraireValeur",
+    COALESCE(to_char(th.histo_creation, 'dd/mm/YYYY'), 'TAUX INTROUVABLE')                        "tauxHoraireDate",
+    to_char(COALESCE(v.histo_creation, c.histo_creation), 'dd/mm/YYYY')                           "dateSignature",
+    CASE WHEN c.structure_id <> COALESCE(cp.structure_id,0) THEN 'modifié' ELSE 'complété' END    "modifieComplete",
+    CASE WHEN s.aff_adresse_contrat = 1 THEN
+      ' signé à l''adresse suivante :' || CHR(13) || CHR(10) ||
+      s.libelle_court || ' - ' || REPLACE(ose_divers.formatted_adresse(
+        s.adresse_precisions, s.adresse_lieu_dit,
+        s.adresse_numero, s.adresse_numero_compl_id, s.adresse_voirie_id, s.adresse_voie,
+        s.adresse_code_postal, s.adresse_commune, s.adresse_pays_id
+      ), CHR(13), ' - ')
+    ELSE '' END                                                                                   "exemplaire2",
+    REPLACE(ltrim(to_char(COALESCE(hs."serviceTotal",0), '999999.00')),'.',',')                   "serviceTotal",
+    CASE WHEN c.contrat_id IS NULL THEN 1 ELSE 0 END                                              est_contrat,
+    CASE WHEN v.id IS NULL THEN 1 ELSE 0 END                                                      est_projet,
+    si.tem_atv                                                                                    est_atv
+
+  FROM
+              contrat               c
+         JOIN type_contrat         tc ON tc.id = c.type_contrat_id
+         JOIN intervenant           i ON i.id = c.intervenant_id
+         JOIN annee                 a ON a.id = i.annee_id
+         JOIN statut_intervenant   si ON si.id = i.statut_id
+         JOIN STRUCTURE             s ON s.id = c.structure_id
+    LEFT JOIN intervenant_dossier   d ON d.intervenant_id = i.id AND d.histo_destruction IS NULL
+         JOIN civilite            civ ON civ.id = COALESCE(d.civilite_id,i.civilite_id)
+    LEFT JOIN validation            v ON v.id = c.validation_id AND v.histo_destruction IS NULL
+         JOIN type_volume_horaire tvh ON tvh.code = 'PREVU'
+         JOIN etat_volume_horaire evh ON evh.code = 'valide'
+    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 taux_horaire_hetd    th ON c.histo_creation BETWEEN th.histo_creation AND COALESCE(th.histo_destruction,SYSDATE)
+    LEFT JOIN                      hs ON hs.contrat_id = c.id
+    LEFT JOIN contrat              cp ON cp.id = c.contrat_id
+  WHERE
+    c.histo_destruction IS NULL
+) ct;
+/
+
+CREATE OR REPLACE FORCE VIEW V_CONTRAT_SERVICES AS
+SELECT
+  c.id                                             contrat_id,
+  str.libelle_court                                "serviceComposante",
+  ep.code                                          "serviceCode",
+  ep.libelle                                       "serviceLibelle",
+  SUM(vh.heures)                                   heures,
+  REPLACE(ltrim(to_char(SUM(vh.heures), '999999.00')),'.',',') "serviceHeures"
+FROM
+            contrat                  c
+       JOIN STRUCTURE              str ON str.id = c.structure_id
+       JOIN volume_horaire          vh ON vh.contrat_id = c.id AND vh.histo_destruction IS NULL
+       JOIN service                  s ON s.id = vh.service_id
+  LEFT JOIN element_pedagogique     ep ON ep.id = s.element_pedagogique_id
+GROUP BY
+  c.id, str.libelle_court, ep.code, ep.libelle;
+/
+
+CREATE OR REPLACE FORCE VIEW V_ETAT_PAIEMENT AS
+SELECT
+             annee_id,
+             type_intervenant_id,
+             structure_id,
+             periode_id,
+             intervenant_id,
+             centre_cout_id,
+             domaine_fonctionnel_id,
+
+             annee_id || '/' || (annee_id+1) annee,
+             etat,
+             composante,
+             date_mise_en_paiement,
+             periode,
+             statut,
+             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_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_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_id, intervenant_id, etat, structure_id) ELSE 0 END pourc_ecart
+
+
+           FROM (
+
+                SELECT
+                       periode_id,
+                       structure_id,
+                       type_intervenant_id,
+                       intervenant_id,
+                       annee_id,
+                       centre_cout_id,
+                       domaine_fonctionnel_id,
+                       etat,
+                       composante,
+                       date_mise_en_paiement,
+                       periode,
+                       statut,
+                       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_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,
+
+
+                       (CASE WHEN hetd > 0 THEN hetd / SUM( hetd ) OVER( PARTITION BY periode_id, intervenant_id, etat, structure_id) ELSE 0 END)
+                             -
+                       ROUND( CASE WHEN hetd > 0 THEN hetd / SUM( hetd ) OVER( PARTITION BY periode_id, intervenant_id, etat, structure_id) ELSE 0 END, 3 ) pourc_diff
+
+                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_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                                                               type_intervenant_id,
+                                CASE
+                                      WHEN mep.date_mise_en_paiement IS NULL THEN 'a-mettre-en-paiement'
+                                      ELSE 'mis-en-paiement'
+                                    END                                                                 etat,
+
+                                TRIM(p.libelle_long || ' ' || to_char( add_months( a.date_debut, p.ecart_mois ), 'yyyy' )) periode,
+                                mep.date_mise_en_paiement                                           date_mise_en_paiement,
+                                s.libelle_court                                                     composante,
+                                ti.libelle                                                          statut,
+                                i.source_code                                                       intervenant_code,
+                                i.nom_usuel || ' ' || i.prenom                                      intervenant_nom,
+                                i.numero_insee                                                      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_id,
+                            structure_id,
+                            type_intervenant_id,
+                            intervenant_id,
+                            annee_id,
+                            centre_cout_id,
+                            domaine_fonctionnel_id,
+                            etat,
+                            periode,
+                            composante,
+                            date_mise_en_paiement,
+                            statut,
+                            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_id,
+                              structure_id,
+                              type_intervenant_id,
+                              intervenant_id,
+                              annee_id,
+                              centre_cout_id,
+                              domaine_fonctionnel_id,
+                              etat,
+                              periode,
+                              composante,
+                              date_mise_en_paiement,
+                              statut,
+                              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
+      ORDER BY
+               annee_id,
+               type_intervenant_id,
+               structure_id,
+               periode_id,
+               intervenant_nom;
+/
+
+CREATE OR REPLACE FORCE VIEW V_EXPORT_PAIEMENT_WINPAIE AS
+SELECT
+  annee_id,
+  type_intervenant_id,
+  structure_id,
+  periode_id,
+  intervenant_id,
+
+  insee,
+  nom,
+  '20' carte,
+  code_origine,
+  CASE WHEN type_intervenant_code = 'P' THEN '0204' ELSE '2251' END retenue,
+  '0' sens,
+  'B' mc,
+  nbu,
+  montant,
+  libelle || ' ' || LPAD(TO_CHAR(FLOOR(nbu)),2,'00') || ' H' ||
+  CASE to_char(ROUND( nbu-FLOOR(nbu), 2 )*100,'00')
+  WHEN ' 00' THEN '' ELSE ' ' || LPAD(ROUND( nbu-FLOOR(nbu), 2 )*100,2,'00') END libelle
+FROM (
+  SELECT
+    i.annee_id                                                                                          annee_id,
+    ti.id                                                                                               type_intervenant_id,
+    ti.code                                                                                             type_intervenant_code,
+    t2.structure_id                                                                                     structure_id,
+    t2.periode_paiement_id                                                                              periode_id,
+    i.id                                                                                                intervenant_id,
+    CASE WHEN i.numero_insee IS NULL THEN '''' ELSE
+      '''' || TRIM(i.numero_insee)
+    END                                                                                                 insee,
+    i.nom_usuel || ',' || i.prenom                                                                      nom,
+    t2.code_origine                                                                                     code_origine,
+    CASE WHEN ind <> CEIL(t2.nbu/max_nbu) THEN max_nbu ELSE t2.nbu - max_nbu*(ind-1) END                nbu,
+    t2.nbu                                                                                              tnbu,
+    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)      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
+
+      UNION
+
+      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 (SELECT level ind, 99 max_nbu FROM dual CONNECT BY 1=1 AND LEVEL <= 11) tnbu ON CEIL(t2.nbu / max_nbu) >= ind
+  JOIN intervenant         i ON i.id = t2.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 = t2.structure_id
+) t3
+ORDER BY
+  annee_id, type_intervenant_id, structure_id, periode_id, nom, code_origine, nbu DESC;
+/
+
+CREATE OR REPLACE FORCE VIEW V_EXPORT_SERVICE AS
+WITH t AS ( SELECT
+  'vh_' || vh.id                    id,
+  s.id                              service_id,
+  NULL                              service_referentiel_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,
+  NULL                              motif_non_paiement_id,
+
+  s.description                     service_description,
+
+  vh.heures                         heures,
+  0                                 heures_ref,
+  0                                 heures_non_payees,
+  NULL                              motif_non_paiement,
+  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
+
+UNION ALL
+
+SELECT
+  'vh_' || vh.id                    id,
+  s.id                              service_id,
+  NULL                              service_referentiel_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,
+  mnp.id                            motif_non_paiement_id,
+
+  s.description                     service_description,
+
+  vh.heures                         heures,
+  0                                 heures_ref,
+  1                                 heures_non_payees,
+  mnp.libelle_court                 motif_non_paiement,
+  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,
+  COALESCE(fr.solde,0)              solde,
+  NULL                              service_ref_formation,
+  NULL                              commentaires
+FROM
+  volume_horaire                  vh
+  JOIN service                     s ON s.id = vh.service_id
+  JOIN v_vol_horaire_etat_multi  vhe ON vhe.volume_horaire_id = vh.id
+  JOIN motif_non_paiement        mnp ON mnp.id = vh.motif_non_paiement_id
+  LEFT 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.histo_destruction IS NULL
+  AND s.histo_destruction IS NULL
+
+UNION ALL
+
+SELECT
+  'vh_ref_' || vhr.id               id,
+  NULL                              service_id,
+  sr.id                             service_referentiel_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                              motif_non_paiement_id,
+
+  NULL                              service_description,
+
+  0                                 heures,
+  vhr.heures                        heures_ref,
+  0                                 heures_non_payees,
+  NULL                              motif_non_paiement,
+  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 AND vhr.histo_destruction IS NULL
+  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
+
+SELECT
+  'vh_0_' || i.id                   id,
+  NULL                              service_id,
+  NULL                              service_referentiel_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                              motif_non_paiement_id,
+
+  NULL                              service_description,
+
+  0                                 heures,
+  0                                 heures_ref,
+  0                                 heures_non_payees,
+  NULL                              motif_non_paiement,
+  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
+
+
+), ponds AS (
+SELECT
+  ep.id                                          element_pedagogique_id,
+  MAX(COALESCE( m.ponderation_service_du, 1))    ponderation_service_du,
+  MAX(COALESCE( m.ponderation_service_compl, 1)) ponderation_service_compl
+FROM
+            element_pedagogique ep
+  LEFT JOIN element_modulateur  em ON em.element_id = ep.id
+                                  AND em.histo_destruction IS NULL
+  LEFT JOIN modulateur          m ON m.id = em.modulateur_id
+WHERE
+  ep.histo_destruction IS NULL
+GROUP BY
+  ep.id
+)
+SELECT
+  t.id                              id,
+  t.service_id                      service_id,
+  t.service_referentiel_id          service_referentiel_id,
+  i.id                              intervenant_id,
+  si.id                             statut_intervenant_id,
+  ti.id                             type_intervenant_id,
+  i.annee_id                        annee_id,
+  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,
+  gtf.id                            groupe_type_formation_id,
+  tf.id                             type_formation_id,
+  CASE
+    WHEN 1 <> gtf.pertinence_niveau OR etp.niveau IS NULL OR etp.niveau < 1 OR gtf.id < 1 THEN NULL
+    ELSE gtf.id * 256 + niveau END  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,
+  di.id                             intervenant_discipline_id,
+  de.id                             element_discipline_id,
+  t.motif_non_paiement_id           motif_non_paiement_id,
+
+  tvh.libelle || ' ' || evh.libelle type_etat,
+  his.histo_modification            service_date_modification,
+
+  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,
+  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 ponds.ponderation_service_compl = 1 THEN NULL ELSE ponds.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,
+  t.motif_non_paiement              motif_non_paiement,
+  si.service_statutaire             service_statutaire,
+  fi.heures_service_modifie         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
+
+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_intervenant        fi ON fi.intervenant_id = i.id
+  LEFT JOIN ponds                     ponds ON ponds.element_pedagogique_id = ep.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;
+/
+
+CREATE OR REPLACE FORCE VIEW V_FR_SERVICE_CENTRE_COUT AS
+SELECT
+  frs.id formule_resultat_service_id, cc.id centre_cout_id
+FROM
+  formule_resultat_service   frs
+  JOIN parametre               p ON p.nom = 'centres_couts_paye'
+  JOIN service                 s ON s.id = frs.service_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 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 = CASE WHEN p.valeur = 'enseignement' OR ti.code = 'E' THEN ep.structure_id ELSE COALESCE(i.structure_id,ep.structure_id) END
+                                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
+  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
+                                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 )
+  );
+/
+
+CREATE OR REPLACE FORCE VIEW V_IMPORT_TAB_COLS 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,
+  CASE WHEN ',' || it.key_columns || ',' LIKE '%,' || tc.column_name || ',%' THEN 1 ELSE 0 END is_key,
+  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;
+/
+
+CREATE OR REPLACE FORCE VIEW V_INDICATEUR_340 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;
+/
+
+CREATE OR REPLACE FORCE VIEW V_INDICATEUR_361 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
+  LEFT JOIN contrat_fichier cf ON cf.contrat_id = c.id
+  LEFT JOIN fichier f ON f.id = cf.fichier_id AND f.histo_destruction IS NULL
+WHERE
+  c.histo_destruction IS NULL
+  AND f.id IS NULL
+  AND c.date_envoi_email IS NOT NULL
+) t;
+/
+
+CREATE OR REPLACE FORCE VIEW V_INDICATEUR_410 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
+  /*Complétude des différents bloc dossier*/
+  AND d.completude_identite = 1
+  AND d.completude_identite_comp = 1
+  AND d.completude_contact = 1
+  AND d.completude_adresse = 1
+  AND d.completude_insee = 1
+  AND d.completude_iban = 1
+  AND d.completude_employeur = 1
+  AND d.completude_autres = 1
+  AND d.completude_statut = 1
+  AND d.validation_id IS NULL
+  AND d.peut_saisir_dossier = 1;
+/
+
+CREATE OR REPLACE FORCE VIEW V_INDICATEUR_730 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 = 'P'
+           AND w.atteignable = 1
+           AND w.objectif > w.realisation
+     ) t;
+/
+
+CREATE OR REPLACE FORCE VIEW V_INDICATEUR_740 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 = 'P'
+           AND w.atteignable = 1
+           AND w.objectif > w.realisation
+     ) t;
+/
+
+CREATE OR REPLACE FORCE VIEW V_NIVEAU_FORMATION AS
+SELECT DISTINCT
+  CASE
+    WHEN 1 <> gtf.pertinence_niveau OR e.niveau IS NULL OR e.niveau < 1 OR gtf.id < 1 THEN NULL
+    ELSE gtf.id * 256 + niveau END 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 CASE
+    WHEN 1 <> gtf.pertinence_niveau OR e.niveau IS NULL OR e.niveau < 1 OR gtf.id < 1 THEN NULL
+    ELSE gtf.id * 256 + niveau END IS NOT NULL
+ORDER BY
+  gtf.libelle_long, e.niveau;
+/
+
+CREATE OR REPLACE FORCE VIEW V_PRIVILEGES_ROLES 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.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;
+/
+
+CREATE OR REPLACE FORCE VIEW V_TBL_AGREMENT AS
+WITH i_s AS (
+  SELECT
+    fr.intervenant_id,
+    ep.structure_id 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
+    /*@INTERVENANT_ID=fr.intervenant_id*/
+),
+avi AS (
+    SELECT
+        i.code                intervenant_code,
+        i.annee_id            annee_id,
+        a.type_agrement_id    type_agrement_id,
+        a.id                  agrement_id,
+        a.structure_id        structure_id
+    FROM intervenant i
+      JOIN agrement a ON a.intervenant_id = i.id
+    WHERE
+      a.histo_destruction IS NULL
+)
+SELECT DISTINCT "ANNEE_ID","ANNEE_AGREMENT","TYPE_AGREMENT_ID","INTERVENANT_ID","CODE_INTERVENANT","STRUCTURE_ID","OBLIGATOIRE","AGREMENT_ID","DUREE_VIE" FROM (
+    SELECT
+      i.annee_id                     annee_id,
+      CASE
+        WHEN COALESCE (avi.agrement_id,0) = 0
+        THEN NULL
+        ELSE NVL(avi.annee_id, i.annee_id) END   annee_agrement,
+      tas.type_agrement_id                       type_agrement_id,
+      i.id                                       intervenant_id,
+      i.code                                     code_intervenant,
+      NULL                                       structure_id,
+      tas.obligatoire                            obligatoire,
+      avi.agrement_id                       agrement_id,
+      tas.duree_vie                              duree_vie,
+      RANK() OVER(
+        PARTITION BY i.code,i.annee_id ORDER BY
+        CASE
+        WHEN COALESCE (avi.agrement_id,0) = 0
+        THEN NULL
+        ELSE NVL(avi.annee_id, i.annee_id) END DESC
+      ) rank
+    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 i.statut_id = tas.statut_intervenant_id
+
+      JOIN                           i_s ON i_s.intervenant_id = i.id
+
+      LEFT JOIN                      avi ON i.code = avi.intervenant_code
+                                        AND avi.type_agrement_id = tas.type_agrement_id
+                                        AND i.annee_id < avi.annee_id + tas.duree_vie
+                                        AND i.annee_id >= avi.annee_id
+
+
+    WHERE
+      ta.code = 'CONSEIL_ACADEMIQUE'
+      /*@INTERVENANT_ID=i.id*/
+      /*@ANNEE_ID=i.annee_id*/
+  )
+WHERE
+  rank = 1
+
+UNION ALL
+SELECT DISTINCT "ANNEE_ID","ANNEE_AGREMENT","TYPE_AGREMENT_ID","INTERVENANT_ID","CODE_INTERVENANT","STRUCTURE_ID","OBLIGATOIRE","AGREMENT_ID","DUREE_VIE" FROM (
+    SELECT
+      i.annee_id                                  annee_id,
+      CASE
+        WHEN COALESCE (avi.agrement_id,0) = 0
+        THEN NULL
+        ELSE NVL(avi.annee_id, i.annee_id) END    annee_agrement,
+      tas.type_agrement_id                        type_agrement_id,
+      i.id                                        intervenant_id,
+      i.code                                      code_intervenant,
+      i_s.structure_id                structure_id,
+      tas.obligatoire                             obligatoire,
+      avi.agrement_id                         agrement_id,
+      tas.duree_vie                               duree_vie,
+      RANK() OVER(
+        PARTITION BY i.code,i.annee_id,i_s.structure_id ORDER BY
+        CASE
+        WHEN COALESCE (avi.agrement_id,0) = 0
+        THEN NULL
+        ELSE NVL(avi.annee_id, i.annee_id) END DESC
+      ) rank
+    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 i.statut_id = tas.statut_intervenant_id
+
+      JOIN                           i_s ON i_s.intervenant_id = i.id
+
+      LEFT JOIN                      avi ON i.code = avi.intervenant_code
+                                        AND avi.type_agrement_id = tas.type_agrement_id
+                                        AND COALESCE(avi.structure_id,0) = COALESCE(i_s.structure_id,0)
+                                        AND i.annee_id < avi.annee_id + tas.duree_vie
+                                        AND i.annee_id >= avi.annee_id
+
+
+    WHERE
+      ta.code = 'CONSEIL_RESTREINT'
+      /*@INTERVENANT_ID=i.id*/
+      /*@ANNEE_ID=i.annee_id*/
+  )
+WHERE
+  rank = 1;
+/
+
+CREATE OR REPLACE FORCE VIEW V_TBL_CHARGENS 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
+                                          /*@NOEUD_ID=sn.noeud_id*/
+                                          /*@SCENARIO_ID=sn.scenario_id*/
+
+       JOIN tbl_noeud                       n ON n.noeud_id = sn.noeud_id
+                                          /*@ANNEE_ID=n.annee_id*/
+                                          /*@ELEMENT_PEDAGOGIQUE_ID=n.element_pedagogique_id*/
+                                          /*@ETAPE_ID=n.element_pedagogique_etape_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
+WHERE
+  1=1
+  /*@ETAPE_ENS_ID=sne.etape_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;
+/
+
+CREATE OR REPLACE FORCE VIEW V_TBL_CLOTURE_REALISE 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
+    /*@INTERVENANT_ID=i.id*/
+    /*@ANNEE_ID=i.annee_id*/
+)
+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;
+/
+
+CREATE OR REPLACE FORCE VIEW V_TBL_CONTRAT 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
+                                           AND vh.motif_non_paiement_id IS NULL
+
+         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
+    /*@INTERVENANT_ID=i.id*/
+    /*@ANNEE_ID=i.annee_id*/
+    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
+    /*@INTERVENANT_ID=i.id*/
+    /*@ANNEE_ID=i.annee_id*/
+    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;
+/
+
+CREATE OR REPLACE FORCE VIEW V_TBL_DMEP_LIQUIDATION 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
+    /*@INTERVENANT_ID=i.id*/
+    /*@ANNEE_ID=i.annee_id*/
+
+  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
+    /*@INTERVENANT_ID=i.id*/
+    /*@ANNEE_ID=i.annee_id*/
+
+) t1
+GROUP BY
+  annee_id, type_ressource_id, structure_id;
+/
+
+CREATE OR REPLACE FORCE VIEW V_TBL_DOSSIER AS
+SELECT
+  i.annee_id,
+  i.id intervenant_id,
+  si.peut_saisir_dossier,
+  d.id dossier_id,
+  v.id validation_id,
+  /*Complétude statut*/
+  CASE WHEN si.code = 'AUTRES' THEN 0
+  ELSE 1 END completude_statut,
+  /*Complétude identité*/
+  CASE WHEN
+    (
+      d.civilite_id IS NOT NULL
+      AND d.nom_usuel IS NOT NULL
+      AND d.prenom IS NOT NULL
+    ) THEN 1 ELSE 0 END completude_identite,
+   /*Complétude identité complémentaire*/
+  CASE WHEN si.dossier_identite_comp = 0 THEN 1
+  ELSE
+        CASE WHEN
+        (
+           d.date_naissance IS NOT NULL
+       AND NOT (OSE_DIVERS.str_reduce(pn.LIBELLE) = 'france' AND d.departement_naissance_id IS NULL)
+           AND d.pays_naissance_id IS NOT NULL
+           AND d.pays_nationalite_id IS NOT NULL
+           AND d.commune_naissance IS NOT NULL
+        ) THEN 1 ELSE 0 END
+   END completude_identite_comp,
+   /*Complétude contact*/
+   CASE WHEN si.dossier_contact = 0 THEN 1
+   ELSE
+   (
+        CASE WHEN
+        (
+          (CASE WHEN si.dossier_email_perso = 1 THEN
+             CASE WHEN d.email_perso IS NOT NULL THEN 1 ELSE 0 END
+           ELSE
+             CASE WHEN d.email_pro IS NOT NULL OR d.email_perso IS NOT NULL THEN 1 ELSE 0 END
+           END) = 1
+           AND
+          (CASE WHEN si.dossier_tel_perso = 1 THEN
+             CASE WHEN d.tel_perso IS NOT NULL AND d.tel_pro IS NOT NULL THEN 1 ELSE 0 END
+           ELSE
+             CASE WHEN d.tel_pro IS NOT NULL OR d.tel_perso IS NOT NULL THEN 1 ELSE 0 END
+           END) = 1
+        ) THEN 1 ELSE 0 END
+   ) END completude_contact,
+   /*Complétude adresse*/
+   CASE WHEN si.dossier_adresse = 0 THEN 1
+   ELSE
+   (
+      CASE WHEN
+      (
+         d.adresse_precisions IS NOT NULL
+         OR d.adresse_lieu_dit IS NOT NULL
+         OR (d.adresse_voie IS NOT NULL AND d.adresse_numero IS NOT NULL)
+      ) AND
+      (
+       d.adresse_commune IS NOT NULL
+         AND d.adresse_code_postal IS NOT NULL
+      ) THEN 1 ELSE 0 END
+    ) END completude_adresse,
+     /*Complétude INSEE*/
+     CASE WHEN si.dossier_insee = 0 THEN 1
+     ELSE
+     (
+       CASE WHEN
+       (
+       d.numero_insee IS NOT NULL OR COALESCE(d.numero_insee_provisoire,0) = 1
+       ) THEN 1 ELSE 0 END
+     ) END completude_insee,
+     /*Complétude IBAN*/
+     CASE WHEN si.dossier_iban = 0 THEN 1
+     ELSE
+     (
+       CASE WHEN
+       (
+         (d.iban IS NOT NULL
+        AND d.bic IS NOT NULL)
+        OR COALESCE(d.rib_hors_sepa,0) = 1
+       ) THEN 1 ELSE 0 END
+     ) END completude_iban,
+     /*Complétude employeur*/
+     CASE WHEN si.dossier_employeur = 0 THEN 1
+     ELSE
+     (
+       CASE WHEN
+       (
+         d.employeur_id IS NOT NULL
+       ) THEN 1 ELSE 0 END
+     ) END completude_employeur,
+     /*Complétude champs autres*/
+     CASE WHEN
+     (
+       NOT (d.autre_1 IS NULL AND COALESCE(dca1.obligatoire,0) = 1)
+       AND NOT (d.autre_2 IS NULL AND COALESCE(dca2.obligatoire,0) = 1)
+       AND NOT (d.autre_3 IS NULL AND COALESCE(dca3.obligatoire,0) = 1)
+       AND NOT (d.autre_4 IS NULL AND COALESCE(dca4.obligatoire,0) = 1)
+       AND NOT (d.autre_5 IS NULL AND COALESCE(dca5.obligatoire,0) = 1)
+     ) THEN 1 ELSE 0 END completude_autres
+
+FROM
+            intervenant         i
+       JOIN statut_intervenant si ON si.id = i.statut_id
+  LEFT JOIN intervenant_dossier d ON d.intervenant_id = i.id
+                                 AND d.histo_destruction IS NULL
+  LEFT JOIN pays               pn ON pn.id = d.pays_naissance_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
+  /*Champs autre 1*/
+  LEFT JOIN dossier_champ_autre_par_statut dcas1 ON dcas1.dossier_champ_autre_id = 1 AND dcas1.statut_id = si.id
+  LEFT JOIN dossier_champ_autre dca1 ON dca1.id = 1 AND dcas1.dossier_champ_autre_id = dca1.id
+ /*Champs autre 2*/
+  LEFT JOIN dossier_champ_autre_par_statut dcas2 ON dcas2.dossier_champ_autre_id = 2 AND dcas2.statut_id = si.id
+  LEFT JOIN dossier_champ_autre dca2 ON dca2.id = 2 AND dcas2.dossier_champ_autre_id = dca2.id
+ /*Champs autre 3*/
+  LEFT JOIN dossier_champ_autre_par_statut dcas3 ON dcas3.dossier_champ_autre_id = 3 AND dcas3.statut_id = si.id
+  LEFT JOIN dossier_champ_autre dca3 ON dca3.id = 3 AND dcas3.dossier_champ_autre_id = dca3.id
+ /*Champs autre 4*/
+  LEFT JOIN dossier_champ_autre_par_statut dcas4 ON dcas4.dossier_champ_autre_id = 4 AND dcas4.statut_id = si.id
+  LEFT JOIN dossier_champ_autre dca4 ON dca4.id = 4 AND dcas4.dossier_champ_autre_id = dca4.id
+ /*Champs autre 5*/
+  LEFT JOIN dossier_champ_autre_par_statut dcas5 ON dcas5.dossier_champ_autre_id = 5 AND dcas5.statut_id = si.id
+  LEFT JOIN dossier_champ_autre dca5 ON dca5.id = 5 AND dcas5.dossier_champ_autre_id = dca5.id
+WHERE
+  i.histo_destruction IS NULL
+   /*@INTERVENANT_ID=i.id*/
+  /*@ANNEE_ID=i.annee_id*/;
+/
+
+CREATE OR REPLACE FORCE VIEW V_TBL_PAIEMENT AS
+SELECT
+  i.annee_id                                  annee_id,
+  frs.service_id                              service_id,
+  NULL                                        service_referentiel_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 /*@INTERVENANT_ID=i.id*/ /*@ANNEE_ID=a.annee_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                                        service_id,
+  frs.service_referentiel_id                  service_referentiel_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 /*@INTERVENANT_ID=i.id*/ /*@ANNEE_ID=a.annee_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;
+/
+
+CREATE OR REPLACE FORCE VIEW V_TBL_PIECE_JOINTE AS
+WITH t AS (
+  SELECT
+    pjd.annee_id                                                annee_id,
+    pjd.type_piece_jointe_id                                    type_piece_jointe_id,
+    pjd.intervenant_id                                          intervenant_id,
+    CASE WHEN pjd.intervenant_id IS NULL THEN 0 ELSE 1 END      demandee,
+    SUM(CASE WHEN pjf.id IS NULL THEN 0 ELSE 1 END)             fournie,
+    SUM(CASE WHEN pjf.validation_id IS NULL THEN 0 ELSE 1 END)  validee,
+    COALESCE(pjd.heures_pour_seuil,0)                           heures_pour_seuil,
+    COALESCE(pjd.obligatoire,1)                                 obligatoire
+  FROM
+              tbl_piece_jointe_demande  pjd
+    LEFT JOIN tbl_piece_jointe_fournie  pjf ON pjf.code_intervenant = pjd.code_intervenant
+                                           AND pjf.type_piece_jointe_id = pjd.type_piece_jointe_id
+                                           AND pjd.annee_id BETWEEN pjf.annee_id AND COALESCE(pjf.date_archive - 1,(pjf.annee_id + pjf.duree_vie - 1))
+  WHERE
+    1=1
+    /*@INTERVENANT_ID=pjd.intervenant_id*/
+    /*@ANNEE_ID=pjd.annee_id*/
+  GROUP BY
+    pjd.annee_id, pjd.type_piece_jointe_id, pjd.intervenant_id, pjd.intervenant_id, pjd.heures_pour_seuil, pjd.obligatoire
+
+  UNION ALL
+
+  SELECT
+    pjf.annee_id                                                annee_id,
+    pjf.type_piece_jointe_id                                    type_piece_jointe_id,
+    pjf.intervenant_id                                          intervenant_id,
+    0                                                           demandee,
+    1                                                           fournie,
+    SUM(CASE WHEN pjf.validation_id IS NULL THEN 0 ELSE 1 END)  validee,
+    0                                                           heures_pour_seuil,
+    0                                                           obligatoire
+  FROM
+              tbl_piece_jointe_fournie pjf
+    LEFT JOIN tbl_piece_jointe_demande pjd ON pjd.intervenant_id = pjf.intervenant_id
+                                          AND pjd.type_piece_jointe_id = pjf.type_piece_jointe_id
+  WHERE
+    pjd.id IS NULL
+    /*@INTERVENANT_ID=pjf.intervenant_id*/
+    /*@ANNEE_ID=pjf.annee_id*/
+  GROUP BY
+    pjf.annee_id, pjf.type_piece_jointe_id, pjf.intervenant_id
+)
+SELECT
+  annee_id,
+  type_piece_jointe_id,
+  intervenant_id,
+  demandee,
+  CASE WHEN fournie <> 0 THEN 1 ELSE 0 END fournie,
+  CASE WHEN validee <> 0 THEN 1 ELSE 0 END validee,
+  heures_pour_seuil,
+  obligatoire
+FROM
+  t;
+/
+
+CREATE OR REPLACE FORCE VIEW V_TBL_PIECE_JOINTE_DEMANDE AS
+WITH i_h AS (
+  SELECT
+    s.intervenant_id,
+    SUM(CASE WHEN vh.MOTIF_NON_PAIEMENT_ID IS NULL THEN vh.heures ELSE 0 END) heures,
+    SUM(CASE WHEN vh.MOTIF_NON_PAIEMENT_ID IS NOT NULL THEN vh.heures ELSE 0 END) heures_non_payables,
+    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
+    /*@INTERVENANT_ID=s.intervenant_id*/
+  GROUP BY
+    s.intervenant_id
+)
+SELECT
+  i.annee_id                      annee_id,
+  i.code code_intervenant,
+  i.id                            intervenant_id,
+  tpj.id                          type_piece_jointe_id,
+  MAX(COALESCE(i_h.heures, 0))    heures_pour_seuil,
+  tpjs.obligatoire obligatoire
+FROM
+            intervenant                 i
+
+  LEFT JOIN intervenant_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
+  /*@INTERVENANT_ID=i.id*/
+  /*@ANNEE_ID=i.annee_id*/
+
+  -- Seuil HETD ou PJ obligatoire meme avec des heures non payables
+  AND (COALESCE(i_h.heures,0) > COALESCE(tpjs.seuil_hetd,-1) OR (COALESCE(i_h.heures_non_payables,0) > 0 AND tpjs.obligatoire_hnp = 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(d.bic, ' ', '') AND REPLACE(i.iban, ' ', '') = REPLACE(d.iban, ' ', '') 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,
+  i.code,
+  tpj.id,
+  tpjs.obligatoire;
+/
+
+CREATE OR REPLACE FORCE VIEW V_TBL_PIECE_JOINTE_FOURNIE AS
+SELECT
+  i.annee_id,
+  i.code code_intervenant,
+  pj.type_piece_jointe_id,
+  pj.intervenant_id,
+  pj.id piece_jointe_id,
+  v.id validation_id,
+  f.id fichier_id,
+  CASE WHEN MIN(COALESCE(tpjs.duree_vie,1)) IS NULL THEN 1 ELSE MIN(COALESCE(tpjs.duree_vie,1)) END duree_vie,
+  CASE WHEN MIN(COALESCE(tpjs.duree_vie,1)) IS NULL THEN i.annee_id+1 ELSE MIN(i.annee_id+COALESCE(tpjs.duree_vie,1)) END date_validite,
+  pj.date_archive date_archive
+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 type_piece_jointe_statut tpjs ON tpjs.statut_intervenant_id = i.statut_id
+                                           AND tpjs.type_piece_jointe_id = pj.type_piece_jointe_id
+                                           AND tpjs.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
+GROUP BY
+i.annee_id,
+  i.code,
+  pj.type_piece_jointe_id,
+  pj.intervenant_id,
+  pj.id,
+  v.id,
+  f.id,
+  pj.date_archive;
+/
+
+CREATE OR REPLACE FORCE VIEW V_TBL_SERVICE 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 AND vh.auto_validation=0 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
+  /*@INTERVENANT_ID=s.intervenant_id*/
+)
+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
+WHERE
+  1=1
+  /*@INTERVENANT_ID=i.id*/
+  /*@ANNEE_ID=i.annee_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;
+/
+
+CREATE OR REPLACE FORCE VIEW V_TBL_SERVICE_REFERENTIEL 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 AND vh.auto_validation=0 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
+    /*@INTERVENANT_ID=i.id*/
+    /*@ANNEE_ID=i.annee_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;
+/
+
+CREATE OR REPLACE FORCE VIEW V_TBL_SERVICE_SAISIE 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
+  /*@INTERVENANT_ID=i.id*/
+  /*@ANNEE_ID=i.annee_id*/
+GROUP BY
+  i.annee_id,
+  i.id,
+  si.peut_saisir_service,
+  si.peut_saisir_referentiel;
+/
+
+CREATE OR REPLACE FORCE VIEW V_TBL_VALIDATION_ENSEIGNEMENT 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,
+  vh.auto_validation,
+  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
+  AND NOT (vvh.validation_id IS NOT NULL AND v.id IS NULL)
+  /*@INTERVENANT_ID=i.id*/
+  /*@ANNEE_ID=i.annee_id*/;
+/
+
+CREATE OR REPLACE FORCE VIEW V_TBL_VALIDATION_REFERENTIEL 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,
+  vh.auto_validation,
+  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
+  /*@INTERVENANT_ID=i.id*/
+  /*@ANNEE_ID=i.annee_id*/;
+/
+
+CREATE OR REPLACE FORCE VIEW V_TBL_VOLUME_HORAIRE 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
+  /*@INTERVENANT_ID=i.id*/
+  /*@ANNEE_ID=i.annee_id*/;
+/
+
+
+
+
+--------------------------------------------------
+-- table.drop
+--------------------------------------------------
+
+DROP TABLE ADRESSE_INTERVENANT;
+/
+
+DROP TABLE ADRESSE_STRUCTURE;
+/
+
+DROP TABLE DOSSIER;
+/
+
+DROP TABLE INTERVENANT_SAISIE;
+/
+
+DROP TABLE TBL_DEMS;
+/
\ No newline at end of file
diff --git a/doc/Stockage-fichiers.md b/doc/Stockage-fichiers.md
new file mode 100644
index 0000000000..463c951970
--- /dev/null
+++ b/doc/Stockage-fichiers.md
@@ -0,0 +1,63 @@
+# Stockage des fichiers
+
+## Présentation
+
+Dans OSE, les fichiers, que ce soient les pièces justificatives ou les contrats ou tout autre fichier téléversé, 
+sont par défaut stockés dans la table FICHIER et leur contenu dans la colonne CONTENU.
+
+Au bout de plusieures années d'exploitation, cela devient problématique, car le tablespace Oracle est extensible jusqu'à 32Go, mais par au-delà.
+
+Il existe donc une alternative qui permet de stocker ces données directement dans le système de fichiers de votre serveur.
+
+
+## Mise en œuvre du stockage dans le système de fichiers
+
+Le stockage dans le système de fichiers est recommandé pour une instance de production uniquement.
+
+Deux opérations sont nécessaires pour pouvoir stocker vos données dans votre système de fichiers :
+
+### 1. Configuration
+
+Dans votre fichier config.local.php, la rubrique "fichiers" doit être personnalisée.
+Si vous avez un ancien fichier config.local.php qui ne comporte pas cette ubrique, veuillez copier/coller cette dernière depuis le fichier [config.local.php.default](../config.local.php.default).
+
+Exemple de configuration :
+```php
+ /* Fichiers */
+    'fichiers'      => [
+        /* file => dans le système de fichiers par défaut, bdd => en base de données par défaut */
+        'stockage' => 'file',
+
+        /* Répertoire où seront stockés les fichiers (pièces justificatives, contrats déposés, etc.
+         * A savoir : le répertoire par défaut data/fichiers est ignoré par GIT.
+         * Il est nécessaire de prévoir une sauvegarde de ce répertoire.
+         * IMPORTANT : ce répertoire doit être accéssible en lecture/écriture par l'utilisateur www-data d'Apache.
+         */
+        'dir'      => __DIR__ . '/data/fichiers',
+    ],
+```
+
+Paramètre "stockage" : 
+ - bdd => Stockage par défaut directement dans la base de données
+ - file => Stockage dans le système de fichiers, dans un répertoire spécifique
+
+Paramètre "dir" :
+ - Ce paramètre vous permet de préciser dans quel répertoire stocker ces fichiers. Vous pouvez utiliser 
+   comme ci-dessus la variable magique __DIR__ qui permet de partir du répertoire OSE, ou alors opter pour un chemin absolu en débutant par "/".
+
+A Caen, nous avons opté pour un répertoire data de OSE lié symboliquement à un répertoire monté en réseau sur un espace de stockage distinct du serveur et sauvegardé régulièrement.
+
+Au cas ou le fichier ne pourrait pas être enregistré (espace disque insuffisant, problème réseau, droits mal configurés, etc.), alors le contenu sera stocké en base de données afin de ne pas être perdu.
+
+### 2. Transfert des données en base vers le système de fichiers
+
+Une fois votre configuration OK, un script vous permet de transférer tous les fichiers stockés dans votre base de données vers le système de fichiers, soulageant ainsi votre tablespace.
+
+```bash
+./bin/ose fichiers-vers-filesystem
+```
+
+### 3. Exploitation
+
+Si OSE a besoin d'accéder au contenu d'un fichier, en mode "file", l'application ira chercher d'abord le contenu dans le système de fichier et s'il ne trouve rien il cherchera dans FICHIER.CONTENU.
+
diff --git a/doc/service_correction_bdd.md b/doc/service_correction_bdd.md
deleted file mode 100644
index 238baef27c..0000000000
--- a/doc/service_correction_bdd.md
+++ /dev/null
@@ -1,79 +0,0 @@
-# OSE : Correction d’une fiche de service
-
-## Étape 1 : récupérer l’ID du service concerné
-Dans la fiche service de l’intervenant, placer le curseur de la souris sur l’icône « Modifier » représentée par un crayon.
-
-Ensuite, dans l’URL du lien qui s’affiche dans le bas de la fenêtre du navigateur, identifier l’ID (110746 dans l’exemple ci-dessus) et le mémoriser.
-
-![Identifier un ID de service][service_correction_bdd]
-
-## Étape 2 : Aller dans la base de données pour récupérer les volumes horaires concernés
-Exécuter la requête suivante pour récupérer toutes les informations nécessaires à la suite de la procédure :
-
-```sql
-SELECT
-  /* Libellés pour retrouver la bonne ligne */
-  tvh.libelle        type_vh,
-  ep.code            element,
-  str.libelle_court  structure,
-  p.libelle_court    semestre,
-  ti.code            type_intervention,
-  mnp.libelle_court  motif_non_paiement,
-  src.code           source,
-  vh.horaire_debut   horaire_debut,
-  vh.horaire_fin     horaire_fin,
-  /* Identifiants */
-  s.id               service_id,
-  vh.id              volume_horaire_id,
-  vh.auto_validation auto_validation,
-  vvh.validation_id  validation_id,
-  vh.contrat_id      contrat_id,
-  /* Heures */
-  vh.heures          heures
-FROM
-  volume_horaire vh
-  JOIN service s ON s.id = vh.service_id AND s.histo_destruction IS NULL
-  JOIN type_volume_horaire tvh on tvh.id = vh.TYPE_VOLUME_HORAIRE_ID
-  JOIN periode p on p.id = vh.periode_id
-  JOIN type_intervention ti on ti.id = vh.type_intervention_id
-  JOIN source src ON src.id = vh.source_id
-  LEFT JOIN motif_non_paiement mnp ON mnp.id = vh.motif_non_paiement_id
-  LEFT JOIN element_pedagogique ep ON ep.id = s.element_pedagogique_id
-  LEFT JOIN structure str ON str.id = ep.structure_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
-  vh.histo_destruction IS NULL
-  AND s.id = /* ID DU SERVICE */
-;
-```
-
-## Étape 3 : intervention en base de données
-### Procédure
-
-Une fois que vous avez identifié le ou les volumes horaires à traiter, plusieurs cas de figure se présentent :
-* Si le volume horaire a un contrat, alors il est impossible de le modifier, il faut donc supprimer d’abord le contrat correspondant dans OSE avant de pouvoir le modifier.
-* Si le volume horaire a une validation, alors il faut
-  * Soit supprimer la validation dans OSE (mais cela va impacter aussi d’autres volumes horaires)
-  * Soit retirer un volume horaire spécifique d’une validation (procédure ci-dessous).
-
-Ensuite, procéder aux opérations suivantes :
-* Historiser le volume horaire (procédure ci-dessous)
-* Recalculer la feuille de route de l’intervenant : la fiche de service ayant changé, il convient de recalculer la feuille de route de l’intervenant, car cela peut avoir de l’influence sur l’état d’avancement du Workflow.
-
-### Requêtes :
-
-Retirer un volume horaire d’une validation (s’il ne fait pas l’objet d’un contrat) :
-```sql
-DELETE FROM VALIDATION_VOL_HORAIRE WHERE volume_horaire_id = /*VOLUME_HORAIRE ID*/
-```
-
-Historiser un volume horaire :
-```sql
-UPDATE volume_horaire SET histo_destruction=SYSDATE, histo_destructeur_id=/*UTILISATEUR_ID*/ WHERE volume_horaire_id =  /*VOLUME_HORAIRE ID*/;
-```
-
-L’UTILISATEUR_ID doit être le vôtre. Il correspond à une valeur de la colonne UTILISATEUR.ID
-
-
-[service_correction_bdd]: ./service_correction_bdd.png
\ No newline at end of file
diff --git a/doc/service_correction_bdd.png b/doc/service_correction_bdd.png
deleted file mode 100644
index 961354607fd743912cb9d7e65fe05dd9a9991a9d..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 83021
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%0AI{u7
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

-- 
GitLab