From 14396d3e830e3b8f1061f3dabe206d5d8bbf4149 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Laurent=20L=C3=A9cluse?= <laurent.lecluse@unicaen.fr> Date: Thu, 31 May 2018 17:28:51 +0200 Subject: [PATCH] Nouvelle DDL --- CHANGELOG | 2 +- "data/D\303\251ploiement/Changements.pdf" | Bin 174116 -> 174245 bytes .../Proc\303\251dure d'installation.pdf" | Bin 205833 -> 205833 bytes ...roc\303\251dure de mise \303\240 jour.pdf" | Bin 162098 -> 162098 bytes "data/D\303\251ploiement/ose-ddl.sql" | 32050 ++++++++-------- 5 files changed, 16816 insertions(+), 15236 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 9e7a8d3cc0..8bda97c248 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -3,7 +3,7 @@ title: "Changements intervenus sur OSE" author: Laurent Lécluse - DSI - Unicaen ... -#OSE 6.3.2 (en développement) +#OSE 6.3.2 ## Corrections de bugs diff --git "a/data/D\303\251ploiement/Changements.pdf" "b/data/D\303\251ploiement/Changements.pdf" index c91f54dad840b21b269b6e0becc784f7745ae6ff..f20829a5e381ac68506b6cf327159bd7e1c548f9 100644 GIT binary patch delta 40515 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 delta 40388 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 A=Kufz diff --git "a/data/D\303\251ploiement/Proc\303\251dure d'installation.pdf" "b/data/D\303\251ploiement/Proc\303\251dure d'installation.pdf" index b8ccc03c7638973361fc68207cf688a2db244861..d642de73486603874df6376bad2965b8348b18a2 100644 GIT binary patch delta 139 zcmeA?!P9wyr=f+hg=q_OkC3*pp`p2vfq{Xxfswj_fx0G_zHfetOJYf?f`*Hgk%6Iw zfhkPM_U%H<U-+EeEZm&TObm^T3@t1i&CHyQOpGkdOxz624a}S^oXrjG6l@47+5S$E HS(*s|-@PJj delta 139 zcmeA?!P9wyr=f+hg=q_OkC3*JiJ_sXfuXUsfswj_fx0G_zHfetOJYf?f`*Hgk%6Iw zfhkPM_U%H<U-+C&T`k?rjm<4hUEIu!4Gl~zoh{5wOkB(jjSMW@49p$v6l@47+5S$E HS(*s|=C&e_ diff --git "a/data/D\303\251ploiement/Proc\303\251dure de mise \303\240 jour.pdf" "b/data/D\303\251ploiement/Proc\303\251dure de mise \303\240 jour.pdf" index a92d24e4d9b906c7a9aec3a208bb0a775e1af8a2..5cfc75932bfa060b33bdef5aa3c953b611aeb74a 100644 GIT binary patch delta 136 zcmdn=iF4B@&W0AoEldTu+Qx>4=0*kvM%o5O>IMetnq2z6`6(`mC8-J;E>=bch86~< zFeTe(=Q4$JIU5<9xtKed7+bhFn>afg8k#w~n7J65IvW_8n3_5onb|4W5K=PTw1Vj` E0M7Ix^#A|> delta 136 zcmdn=iF4B@&W0AoEldTu+D0aZhNcFFCfWu@>IMetnq2z6`6(`mC8-J;E>=bch86~< zFeTe(=Q4$JIlH=<Iy;-1Sh_g6xEeUSSh^aznOL|PJG(j>nHZV5x!5V#5K=PTw1Vj` E0Qu4+1poj5 diff --git "a/data/D\303\251ploiement/ose-ddl.sql" "b/data/D\303\251ploiement/ose-ddl.sql" index 96a8c501f7..38f542a032 100755 --- "a/data/D\303\251ploiement/ose-ddl.sql" +++ "b/data/D\303\251ploiement/ose-ddl.sql" @@ -7,7 +7,7 @@ SET DEFINE OFF; -------------------------------------------------- --- Séquences +-- sequences -------------------------------------------------- -- ADRESSE_INTERVENANT_ID_SEQ @@ -428,12499 +428,13386 @@ CREATE SEQUENCE WF_ETAPE_DEP_ID_SEQ INCREMENT BY 1 MAXVALUE 99999999999999999999 CREATE SEQUENCE WF_ETAPE_ID_SEQ INCREMENT BY 1 MAXVALUE 9999999999999999999999999999 MINVALUE 1 NOCACHE; -------------------------------------------------- --- Tables +-- tables -------------------------------------------------- -- ADRESSE_INTERVENANT -CREATE TABLE "ADRESSE_INTERVENANT" - ( "ID" NUMBER(*,0) NOT NULL ENABLE, - "INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE, - "TEL_DOMICILE" VARCHAR2(25 CHAR), - "MENTION_COMPLEMENTAIRE" VARCHAR2(50 CHAR), - "BATIMENT" VARCHAR2(60 CHAR), - "NO_VOIE" VARCHAR2(20 CHAR), - "NOM_VOIE" VARCHAR2(120 CHAR), - "LOCALITE" VARCHAR2(120 CHAR), - "CODE_POSTAL" VARCHAR2(15 CHAR), - "VILLE" VARCHAR2(120 CHAR), - "PAYS_CODE_INSEE" VARCHAR2(3 CHAR) NOT NULL ENABLE, - "PAYS_LIBELLE" VARCHAR2(50 CHAR) NOT NULL ENABLE, - "SOURCE_ID" NUMBER(*,0) NOT NULL ENABLE, - "SOURCE_CODE" VARCHAR2(100 CHAR), - "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_DESTRUCTION" DATE, - "HISTO_DESTRUCTEUR_ID" NUMBER(*,0), - CONSTRAINT "ADRESSE_INTERVENANT__UN" UNIQUE ("INTERVENANT_ID", "HISTO_DESTRUCTION") ENABLE, - CONSTRAINT "ADRESSE_INTERVENANT_SOURCE_UN" UNIQUE ("SOURCE_CODE") ENABLE, +CREATE TABLE "ADRESSE_INTERVENANT" + ( "ID" NUMBER(*,0) NOT NULL ENABLE, + "INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE, + "TEL_DOMICILE" VARCHAR2(25 CHAR), + "MENTION_COMPLEMENTAIRE" VARCHAR2(50 CHAR), + "BATIMENT" VARCHAR2(60 CHAR), + "NO_VOIE" VARCHAR2(20 CHAR), + "NOM_VOIE" VARCHAR2(120 CHAR), + "LOCALITE" VARCHAR2(120 CHAR), + "CODE_POSTAL" VARCHAR2(15 CHAR), + "VILLE" VARCHAR2(120 CHAR), + "PAYS_CODE_INSEE" VARCHAR2(3 CHAR) NOT NULL ENABLE, + "PAYS_LIBELLE" VARCHAR2(50 CHAR) NOT NULL ENABLE, + "SOURCE_ID" NUMBER(*,0) NOT NULL ENABLE, + "SOURCE_CODE" VARCHAR2(100 CHAR), + "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_DESTRUCTION" DATE, + "HISTO_DESTRUCTEUR_ID" NUMBER(*,0), + CONSTRAINT "ADRESSE_INTERVENANT__UN" UNIQUE ("INTERVENANT_ID", "HISTO_DESTRUCTION") ENABLE, + CONSTRAINT "ADRESSE_INTERVENANT_SOURCE_UN" UNIQUE ("SOURCE_CODE") ENABLE, CONSTRAINT "ADRESSE_INTERVENANT_PK" PRIMARY KEY ("ID") ENABLE ) ; -- ADRESSE_STRUCTURE -CREATE TABLE "ADRESSE_STRUCTURE" - ( "ID" NUMBER(*,0) CONSTRAINT "NNC_ADRESSE_INTERVENANTV1_ID" NOT NULL ENABLE, - "STRUCTURE_ID" NUMBER(*,0) NOT NULL ENABLE, - "PRINCIPALE" NUMBER(1,0), - "TELEPHONE" VARCHAR2(20 CHAR), - "NO_VOIE" VARCHAR2(10 CHAR), - "NOM_VOIE" VARCHAR2(60 CHAR), - "LOCALITE" VARCHAR2(26 CHAR), - "CODE_POSTAL" VARCHAR2(15 CHAR), - "VILLE" VARCHAR2(26 CHAR), - "PAYS_CODE_INSEE" VARCHAR2(3 CHAR), - "PAYS_LIBELLE" VARCHAR2(30 CHAR), - "SOURCE_ID" NUMBER(*,0) NOT NULL ENABLE, - "SOURCE_CODE" VARCHAR2(100 CHAR), - "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_DESTRUCTION" DATE, - "HISTO_DESTRUCTEUR_ID" NUMBER(*,0), - CONSTRAINT "ADRESSE_STRUCTURE_SOURCE_UN" UNIQUE ("SOURCE_CODE") ENABLE, +CREATE TABLE "ADRESSE_STRUCTURE" + ( "ID" NUMBER(*,0) CONSTRAINT "NNC_ADRESSE_INTERVENANTV1_ID" NOT NULL ENABLE, + "STRUCTURE_ID" NUMBER(*,0) NOT NULL ENABLE, + "PRINCIPALE" NUMBER(1,0), + "TELEPHONE" VARCHAR2(20 CHAR), + "NO_VOIE" VARCHAR2(10 CHAR), + "NOM_VOIE" VARCHAR2(60 CHAR), + "LOCALITE" VARCHAR2(26 CHAR), + "CODE_POSTAL" VARCHAR2(15 CHAR), + "VILLE" VARCHAR2(26 CHAR), + "PAYS_CODE_INSEE" VARCHAR2(3 CHAR), + "PAYS_LIBELLE" VARCHAR2(30 CHAR), + "SOURCE_ID" NUMBER(*,0) NOT NULL ENABLE, + "SOURCE_CODE" VARCHAR2(100 CHAR), + "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_DESTRUCTION" DATE, + "HISTO_DESTRUCTEUR_ID" NUMBER(*,0), + CONSTRAINT "ADRESSE_STRUCTURE_SOURCE_UN" UNIQUE ("SOURCE_CODE") ENABLE, CONSTRAINT "ADRESSE_STRUCTURE_PK" PRIMARY KEY ("ID") ENABLE ) ; -- AFFECTATION -CREATE TABLE "AFFECTATION" - ( "ID" NUMBER(*,0) NOT NULL ENABLE, - "ROLE_ID" NUMBER(*,0) NOT NULL ENABLE, - "STRUCTURE_ID" NUMBER(*,0), - "SOURCE_ID" NUMBER(*,0) NOT NULL ENABLE, - "SOURCE_CODE" VARCHAR2(100 CHAR), - "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_DESTRUCTION" DATE, - "HISTO_DESTRUCTEUR_ID" NUMBER(*,0), - "UTILISATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - CONSTRAINT "AFFECTATION_PK" PRIMARY KEY ("ID") ENABLE, - CONSTRAINT "AFFECTATION_SOURCE_UN" UNIQUE ("SOURCE_CODE") ENABLE, +CREATE TABLE "AFFECTATION" + ( "ID" NUMBER(*,0) NOT NULL ENABLE, + "ROLE_ID" NUMBER(*,0) NOT NULL ENABLE, + "STRUCTURE_ID" NUMBER(*,0), + "SOURCE_ID" NUMBER(*,0) NOT NULL ENABLE, + "SOURCE_CODE" VARCHAR2(100 CHAR), + "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_DESTRUCTION" DATE, + "HISTO_DESTRUCTEUR_ID" NUMBER(*,0), + "UTILISATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + CONSTRAINT "AFFECTATION_PK" PRIMARY KEY ("ID") ENABLE, + CONSTRAINT "AFFECTATION_SOURCE_UN" UNIQUE ("SOURCE_CODE") ENABLE, CONSTRAINT "AFFECTATION__UN" UNIQUE ("ROLE_ID", "STRUCTURE_ID", "HISTO_DESTRUCTION", "UTILISATEUR_ID") ENABLE ) ; -- AFFECTATION_RECHERCHE -CREATE TABLE "AFFECTATION_RECHERCHE" - ( "ID" NUMBER(*,0) NOT NULL ENABLE, - "INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE, - "STRUCTURE_ID" NUMBER(*,0) NOT NULL ENABLE, - "SOURCE_ID" NUMBER(*,0) NOT NULL ENABLE, - "SOURCE_CODE" VARCHAR2(100 CHAR), - "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_DESTRUCTION" DATE, - "HISTO_DESTRUCTEUR_ID" NUMBER(*,0), - CONSTRAINT "AFFECTATION_R_PK" PRIMARY KEY ("ID") ENABLE, +CREATE TABLE "AFFECTATION_RECHERCHE" + ( "ID" NUMBER(*,0) NOT NULL ENABLE, + "INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE, + "STRUCTURE_ID" NUMBER(*,0) NOT NULL ENABLE, + "SOURCE_ID" NUMBER(*,0) NOT NULL ENABLE, + "SOURCE_CODE" VARCHAR2(100 CHAR), + "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_DESTRUCTION" DATE, + "HISTO_DESTRUCTEUR_ID" NUMBER(*,0), + CONSTRAINT "AFFECTATION_R_PK" PRIMARY KEY ("ID") ENABLE, CONSTRAINT "AFFECTATION_R_SRC_UN" UNIQUE ("SOURCE_CODE") ENABLE ) ; -- AGREMENT -CREATE TABLE "AGREMENT" - ( "ID" NUMBER(*,0) NOT NULL ENABLE, - "STRUCTURE_ID" NUMBER, - "INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_DESTRUCTION" DATE, - "HISTO_DESTRUCTEUR_ID" NUMBER(*,0), - "DATE_DECISION" DATE NOT NULL ENABLE, - "TYPE_AGREMENT_ID" NUMBER(*,0) NOT NULL ENABLE, - CONSTRAINT "AGREMENT__UN" UNIQUE ("TYPE_AGREMENT_ID", "INTERVENANT_ID", "STRUCTURE_ID", "HISTO_DESTRUCTION") ENABLE, +CREATE TABLE "AGREMENT" + ( "ID" NUMBER(*,0) NOT NULL ENABLE, + "STRUCTURE_ID" NUMBER, + "INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_DESTRUCTION" DATE, + "HISTO_DESTRUCTEUR_ID" NUMBER(*,0), + "DATE_DECISION" DATE NOT NULL ENABLE, + "TYPE_AGREMENT_ID" NUMBER(*,0) NOT NULL ENABLE, + CONSTRAINT "AGREMENT__UN" UNIQUE ("TYPE_AGREMENT_ID", "INTERVENANT_ID", "STRUCTURE_ID", "HISTO_DESTRUCTION") ENABLE, CONSTRAINT "AGREMENT_PK" PRIMARY KEY ("ID") ENABLE ) ; -- ANNEE -CREATE TABLE "ANNEE" - ( "ID" NUMBER(*,0) NOT NULL ENABLE, - "LIBELLE" VARCHAR2(9 CHAR) NOT NULL ENABLE, - "DATE_DEBUT" DATE NOT NULL ENABLE, - "DATE_FIN" DATE NOT NULL ENABLE, - "ACTIVE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, - "TAUX_HETD" FLOAT(126), +CREATE TABLE "ANNEE" + ( "ID" NUMBER(*,0) NOT NULL ENABLE, + "LIBELLE" VARCHAR2(9 CHAR) NOT NULL ENABLE, + "DATE_DEBUT" DATE NOT NULL ENABLE, + "DATE_FIN" DATE NOT NULL ENABLE, + "ACTIVE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, + "TAUX_HETD" FLOAT(126), CONSTRAINT "ANNEE_PK" PRIMARY KEY ("ID") ENABLE ) ; -- CAMPAGNE_SAISIE -CREATE TABLE "CAMPAGNE_SAISIE" - ( "ID" NUMBER(*,0) NOT NULL ENABLE, - "TYPE_INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE, - "TYPE_VOLUME_HORAIRE_ID" NUMBER(*,0) NOT NULL ENABLE, - "DATE_DEBUT" DATE, - "DATE_FIN" DATE, - "MESSAGE_INTERVENANT" VARCHAR2(300 CHAR) NOT NULL ENABLE, - "MESSAGE_AUTRES" VARCHAR2(300 CHAR), - "ANNEE_ID" NUMBER(*,0) NOT NULL ENABLE, - CONSTRAINT "CAMPAGNE_PK" PRIMARY KEY ("ID") ENABLE, +CREATE TABLE "CAMPAGNE_SAISIE" + ( "ID" NUMBER(*,0) NOT NULL ENABLE, + "TYPE_INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE, + "TYPE_VOLUME_HORAIRE_ID" NUMBER(*,0) NOT NULL ENABLE, + "DATE_DEBUT" DATE, + "DATE_FIN" DATE, + "MESSAGE_INTERVENANT" VARCHAR2(300 CHAR) NOT NULL ENABLE, + "MESSAGE_AUTRES" VARCHAR2(300 CHAR), + "ANNEE_ID" NUMBER(*,0) NOT NULL ENABLE, + CONSTRAINT "CAMPAGNE_PK" PRIMARY KEY ("ID") ENABLE, CONSTRAINT "CAMPAGNE_SAISIE__UN" UNIQUE ("ANNEE_ID", "TYPE_INTERVENANT_ID", "TYPE_VOLUME_HORAIRE_ID") ENABLE ) ; -- CATEGORIE_PRIVILEGE -CREATE TABLE "CATEGORIE_PRIVILEGE" - ( "ID" NUMBER(*,0) NOT NULL ENABLE, - "CODE" VARCHAR2(150 CHAR) NOT NULL ENABLE, - "LIBELLE" VARCHAR2(200 CHAR) NOT NULL ENABLE, - "ORDRE" NUMBER(*,0), - CONSTRAINT "CATEGORIE_PRIVILEGE_PK" PRIMARY KEY ("ID") ENABLE, +CREATE TABLE "CATEGORIE_PRIVILEGE" + ( "ID" NUMBER(*,0) NOT NULL ENABLE, + "CODE" VARCHAR2(150 CHAR) NOT NULL ENABLE, + "LIBELLE" VARCHAR2(200 CHAR) NOT NULL ENABLE, + "ORDRE" NUMBER(*,0), + CONSTRAINT "CATEGORIE_PRIVILEGE_PK" PRIMARY KEY ("ID") ENABLE, CONSTRAINT "CATEGORIE_PRIVILEGE__UN" UNIQUE ("CODE") ENABLE ) ; -- CC_ACTIVITE -CREATE TABLE "CC_ACTIVITE" - ( "ID" NUMBER(*,0) NOT NULL ENABLE, - "CODE" VARCHAR2(50 CHAR) NOT NULL ENABLE, - "LIBELLE" VARCHAR2(200 CHAR) NOT NULL ENABLE, - "FI" NUMBER(1,0) NOT NULL ENABLE, - "FA" NUMBER(1,0) NOT NULL ENABLE, - "FC" NUMBER(1,0) NOT NULL ENABLE, - "FC_MAJOREES" NUMBER(1,0) NOT NULL ENABLE, - "REFERENTIEL" NUMBER(1,0) NOT NULL ENABLE, - "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_DESTRUCTION" DATE, - "HISTO_DESTRUCTEUR_ID" NUMBER(*,0), +CREATE TABLE "CC_ACTIVITE" + ( "ID" NUMBER(*,0) NOT NULL ENABLE, + "CODE" VARCHAR2(50 CHAR) NOT NULL ENABLE, + "LIBELLE" VARCHAR2(200 CHAR) NOT NULL ENABLE, + "FI" NUMBER(1,0) NOT NULL ENABLE, + "FA" NUMBER(1,0) NOT NULL ENABLE, + "FC" NUMBER(1,0) NOT NULL ENABLE, + "FC_MAJOREES" NUMBER(1,0) NOT NULL ENABLE, + "REFERENTIEL" NUMBER(1,0) NOT NULL ENABLE, + "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_DESTRUCTION" DATE, + "HISTO_DESTRUCTEUR_ID" NUMBER(*,0), CONSTRAINT "CC_ACTIVITE_PK" PRIMARY KEY ("ID") ENABLE ) ; -- CENTRE_COUT -CREATE TABLE "CENTRE_COUT" - ( "ID" NUMBER(*,0) NOT NULL ENABLE, - "LIBELLE" VARCHAR2(200 CHAR) NOT NULL ENABLE, - "PARENT_ID" NUMBER(*,0), - "SOURCE_ID" NUMBER(*,0) NOT NULL ENABLE, - "SOURCE_CODE" VARCHAR2(100 CHAR) NOT NULL ENABLE, - "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_DESTRUCTION" DATE, - "HISTO_DESTRUCTEUR_ID" NUMBER(*,0), - "ACTIVITE_ID" NUMBER(*,0) NOT NULL ENABLE, - "TYPE_RESSOURCE_ID" NUMBER(*,0) NOT NULL ENABLE, - "UNITE_BUDGETAIRE" VARCHAR2(15 CHAR), - "CODE" VARCHAR2(50 CHAR) NOT NULL ENABLE, +CREATE TABLE "CENTRE_COUT" + ( "ID" NUMBER(*,0) NOT NULL ENABLE, + "LIBELLE" VARCHAR2(200 CHAR) NOT NULL ENABLE, + "PARENT_ID" NUMBER(*,0), + "SOURCE_ID" NUMBER(*,0) NOT NULL ENABLE, + "SOURCE_CODE" VARCHAR2(100 CHAR) NOT NULL ENABLE, + "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_DESTRUCTION" DATE, + "HISTO_DESTRUCTEUR_ID" NUMBER(*,0), + "ACTIVITE_ID" NUMBER(*,0) NOT NULL ENABLE, + "TYPE_RESSOURCE_ID" NUMBER(*,0) NOT NULL ENABLE, + "UNITE_BUDGETAIRE" VARCHAR2(15 CHAR), + "CODE" VARCHAR2(50 CHAR) NOT NULL ENABLE, CONSTRAINT "CENTRE_COUT_PK" PRIMARY KEY ("ID") ENABLE ) ; -- CENTRE_COUT_EP -CREATE TABLE "CENTRE_COUT_EP" - ( "ID" NUMBER(*,0) NOT NULL ENABLE, - "CENTRE_COUT_ID" NUMBER(*,0) NOT NULL ENABLE, - "ELEMENT_PEDAGOGIQUE_ID" NUMBER(*,0) NOT NULL ENABLE, - "TYPE_HEURES_ID" NUMBER(*,0) NOT NULL ENABLE, - "SOURCE_ID" NUMBER(*,0) NOT NULL ENABLE, - "SOURCE_CODE" VARCHAR2(100 CHAR) NOT NULL ENABLE, - "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_DESTRUCTION" DATE, - "HISTO_DESTRUCTEUR_ID" NUMBER(*,0), - CONSTRAINT "CENTRE_COUT_EP_PK" PRIMARY KEY ("ID") ENABLE, +CREATE TABLE "CENTRE_COUT_EP" + ( "ID" NUMBER(*,0) NOT NULL ENABLE, + "CENTRE_COUT_ID" NUMBER(*,0) NOT NULL ENABLE, + "ELEMENT_PEDAGOGIQUE_ID" NUMBER(*,0) NOT NULL ENABLE, + "TYPE_HEURES_ID" NUMBER(*,0) NOT NULL ENABLE, + "SOURCE_ID" NUMBER(*,0) NOT NULL ENABLE, + "SOURCE_CODE" VARCHAR2(100 CHAR) NOT NULL ENABLE, + "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_DESTRUCTION" DATE, + "HISTO_DESTRUCTEUR_ID" NUMBER(*,0), + CONSTRAINT "CENTRE_COUT_EP_PK" PRIMARY KEY ("ID") ENABLE, CONSTRAINT "CENTRE_COUT_EP__UN" UNIQUE ("CENTRE_COUT_ID", "ELEMENT_PEDAGOGIQUE_ID", "TYPE_HEURES_ID", "HISTO_DESTRUCTION") ENABLE ) ; -- CENTRE_COUT_STRUCTURE -CREATE TABLE "CENTRE_COUT_STRUCTURE" - ( "ID" NUMBER(*,0) NOT NULL ENABLE, - "CENTRE_COUT_ID" NUMBER(*,0) NOT NULL ENABLE, - "STRUCTURE_ID" NUMBER(*,0) NOT NULL ENABLE, - "SOURCE_ID" NUMBER(*,0) NOT NULL ENABLE, - "SOURCE_CODE" VARCHAR2(100 CHAR), - "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_DESTRUCTION" DATE, - "HISTO_DESTRUCTEUR_ID" NUMBER(*,0), - "UNITE_BUDGETAIRE" VARCHAR2(15 CHAR), - CONSTRAINT "CENTRE_COUT_STRUCTURE_PK" PRIMARY KEY ("ID") ENABLE, - CONSTRAINT "CCS_CC_S__UN" UNIQUE ("CENTRE_COUT_ID", "STRUCTURE_ID", "HISTO_DESTRUCTION") ENABLE, +CREATE TABLE "CENTRE_COUT_STRUCTURE" + ( "ID" NUMBER(*,0) NOT NULL ENABLE, + "CENTRE_COUT_ID" NUMBER(*,0) NOT NULL ENABLE, + "STRUCTURE_ID" NUMBER(*,0) NOT NULL ENABLE, + "SOURCE_ID" NUMBER(*,0) NOT NULL ENABLE, + "SOURCE_CODE" VARCHAR2(100 CHAR), + "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_DESTRUCTION" DATE, + "HISTO_DESTRUCTEUR_ID" NUMBER(*,0), + "UNITE_BUDGETAIRE" VARCHAR2(15 CHAR), + CONSTRAINT "CENTRE_COUT_STRUCTURE_PK" PRIMARY KEY ("ID") ENABLE, + CONSTRAINT "CCS_CC_S__UN" UNIQUE ("CENTRE_COUT_ID", "STRUCTURE_ID", "HISTO_DESTRUCTION") ENABLE, CONSTRAINT "CCS_SOURCE_CODE_UN" UNIQUE ("SOURCE_CODE", "HISTO_DESTRUCTION") ENABLE ) ; -- CHEMIN_PEDAGOGIQUE -CREATE TABLE "CHEMIN_PEDAGOGIQUE" - ( "ID" NUMBER(*,0) NOT NULL ENABLE, - "ELEMENT_PEDAGOGIQUE_ID" NUMBER(*,0) NOT NULL ENABLE, - "ETAPE_ID" NUMBER(*,0) NOT NULL ENABLE, - "ORDRE" NUMBER(*,0) NOT NULL ENABLE, - "SOURCE_ID" NUMBER(*,0) NOT NULL ENABLE, - "SOURCE_CODE" VARCHAR2(100 CHAR), - "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_DESTRUCTION" DATE, - "HISTO_DESTRUCTEUR_ID" NUMBER(*,0), - CONSTRAINT "CHEMIN_PEDAGOGIQUE__UN" UNIQUE ("ELEMENT_PEDAGOGIQUE_ID", "ETAPE_ID") DISABLE, - CONSTRAINT "CHEMIN_PEDAGO_SRC_ID_UN" UNIQUE ("SOURCE_CODE") ENABLE, +CREATE TABLE "CHEMIN_PEDAGOGIQUE" + ( "ID" NUMBER(*,0) NOT NULL ENABLE, + "ELEMENT_PEDAGOGIQUE_ID" NUMBER(*,0) NOT NULL ENABLE, + "ETAPE_ID" NUMBER(*,0) NOT NULL ENABLE, + "ORDRE" NUMBER(*,0) NOT NULL ENABLE, + "SOURCE_ID" NUMBER(*,0) NOT NULL ENABLE, + "SOURCE_CODE" VARCHAR2(100 CHAR), + "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_DESTRUCTION" DATE, + "HISTO_DESTRUCTEUR_ID" NUMBER(*,0), + CONSTRAINT "CHEMIN_PEDAGOGIQUE__UN" UNIQUE ("ELEMENT_PEDAGOGIQUE_ID", "ETAPE_ID") DISABLE, + CONSTRAINT "CHEMIN_PEDAGO_SRC_ID_UN" UNIQUE ("SOURCE_CODE") ENABLE, CONSTRAINT "CHEMIN_PEDAGOGIQUE_PK" PRIMARY KEY ("ID") ENABLE ) ; -- CIVILITE -CREATE TABLE "CIVILITE" - ( "ID" NUMBER(*,0) NOT NULL ENABLE, - "LIBELLE_COURT" VARCHAR2(5 CHAR) NOT NULL ENABLE, - "LIBELLE_LONG" VARCHAR2(15 CHAR) NOT NULL ENABLE, - "SEXE" VARCHAR2(1 CHAR) NOT NULL ENABLE, - CONSTRAINT "CIVILITE_PK" PRIMARY KEY ("ID") ENABLE, +CREATE TABLE "CIVILITE" + ( "ID" NUMBER(*,0) NOT NULL ENABLE, + "LIBELLE_COURT" VARCHAR2(5 CHAR) NOT NULL ENABLE, + "LIBELLE_LONG" VARCHAR2(15 CHAR) NOT NULL ENABLE, + "SEXE" VARCHAR2(1 CHAR) NOT NULL ENABLE, + CONSTRAINT "CIVILITE_PK" PRIMARY KEY ("ID") ENABLE, CONSTRAINT "CIVILITE_LIBELLE_COURT_UN" UNIQUE ("LIBELLE_COURT") ENABLE ) ; -- CONTRAT -CREATE TABLE "CONTRAT" - ( "ID" NUMBER(*,0) NOT NULL ENABLE, - "TYPE_CONTRAT_ID" NUMBER(*,0) NOT NULL ENABLE, - "INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_DESTRUCTION" DATE, - "HISTO_DESTRUCTEUR_ID" NUMBER(*,0), - "STRUCTURE_ID" NUMBER(*,0) NOT NULL ENABLE, - "CONTRAT_ID" NUMBER, - "DATE_RETOUR_SIGNE" DATE, - "NUMERO_AVENANT" NUMBER DEFAULT 0 NOT NULL ENABLE, - "VALIDATION_ID" NUMBER(*,0), - "TOTAL_HETD" FLOAT(126), - CONSTRAINT "CONTRAT_PK" PRIMARY KEY ("ID") ENABLE, +CREATE TABLE "CONTRAT" + ( "ID" NUMBER(*,0) NOT NULL ENABLE, + "TYPE_CONTRAT_ID" NUMBER(*,0) NOT NULL ENABLE, + "INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_DESTRUCTION" DATE, + "HISTO_DESTRUCTEUR_ID" NUMBER(*,0), + "STRUCTURE_ID" NUMBER(*,0) NOT NULL ENABLE, + "CONTRAT_ID" NUMBER, + "DATE_RETOUR_SIGNE" DATE, + "NUMERO_AVENANT" NUMBER DEFAULT 0 NOT NULL ENABLE, + "VALIDATION_ID" NUMBER(*,0), + "TOTAL_HETD" FLOAT(126), + CONSTRAINT "CONTRAT_PK" PRIMARY KEY ("ID") ENABLE, CONSTRAINT "CONTRAT_NUMERO_AVENANT_UN" UNIQUE ("INTERVENANT_ID", "STRUCTURE_ID", "NUMERO_AVENANT", "VALIDATION_ID", "HISTO_DESTRUCTION") ENABLE ) ; -- CONTRAT_FICHIER -CREATE TABLE "CONTRAT_FICHIER" - ( "CONTRAT_ID" NUMBER(*,0) NOT NULL ENABLE, - "FICHIER_ID" NUMBER(*,0) NOT NULL ENABLE, +CREATE TABLE "CONTRAT_FICHIER" + ( "CONTRAT_ID" NUMBER(*,0) NOT NULL ENABLE, + "FICHIER_ID" NUMBER(*,0) NOT NULL ENABLE, CONSTRAINT "CONTRAT_FICHIER_PK" PRIMARY KEY ("CONTRAT_ID", "FICHIER_ID") ENABLE ) ; -- CORPS -CREATE TABLE "CORPS" - ( "ID" NUMBER(*,0) NOT NULL ENABLE, - "LIBELLE_LONG" VARCHAR2(40 CHAR) NOT NULL ENABLE, - "LIBELLE_COURT" VARCHAR2(20 CHAR) NOT NULL ENABLE, - "SOURCE_ID" NUMBER(*,0) NOT NULL ENABLE, - "SOURCE_CODE" VARCHAR2(100 CHAR), - "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_DESTRUCTION" DATE, - "HISTO_DESTRUCTEUR_ID" NUMBER(*,0), - CONSTRAINT "CORPS_SOURCE_UN" UNIQUE ("SOURCE_CODE") ENABLE, +CREATE TABLE "CORPS" + ( "ID" NUMBER(*,0) NOT NULL ENABLE, + "LIBELLE_LONG" VARCHAR2(40 CHAR) NOT NULL ENABLE, + "LIBELLE_COURT" VARCHAR2(20 CHAR) NOT NULL ENABLE, + "SOURCE_ID" NUMBER(*,0) NOT NULL ENABLE, + "SOURCE_CODE" VARCHAR2(100 CHAR), + "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_DESTRUCTION" DATE, + "HISTO_DESTRUCTEUR_ID" NUMBER(*,0), + CONSTRAINT "CORPS_SOURCE_UN" UNIQUE ("SOURCE_CODE") ENABLE, CONSTRAINT "CORPS_PK" PRIMARY KEY ("ID") ENABLE ) ; -- DEPARTEMENT -CREATE TABLE "DEPARTEMENT" - ( "ID" NUMBER NOT NULL ENABLE, - "LIBELLE_LONG" VARCHAR2(120 CHAR), - "LIBELLE_COURT" VARCHAR2(60 CHAR), - "SOURCE_ID" NUMBER(*,0) NOT NULL ENABLE, - "SOURCE_CODE" VARCHAR2(100 CHAR) NOT NULL ENABLE, - "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_DESTRUCTION" DATE, - "HISTO_DESTRUCTEUR_ID" NUMBER(*,0), - "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "CODE" VARCHAR2(5 CHAR), +CREATE TABLE "DEPARTEMENT" + ( "ID" NUMBER NOT NULL ENABLE, + "LIBELLE_LONG" VARCHAR2(120 CHAR), + "LIBELLE_COURT" VARCHAR2(60 CHAR), + "SOURCE_ID" NUMBER(*,0) NOT NULL ENABLE, + "SOURCE_CODE" VARCHAR2(100 CHAR) NOT NULL ENABLE, + "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_DESTRUCTION" DATE, + "HISTO_DESTRUCTEUR_ID" NUMBER(*,0), + "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "CODE" VARCHAR2(5 CHAR), CONSTRAINT "DEPARTEMENT_PK" PRIMARY KEY ("ID") ENABLE ) ; -- DISCIPLINE -CREATE TABLE "DISCIPLINE" - ( "ID" NUMBER(*,0) NOT NULL ENABLE, - "LIBELLE_COURT" VARCHAR2(20 CHAR), - "LIBELLE_LONG" VARCHAR2(200 CHAR) NOT NULL ENABLE, - "SOURCE_ID" NUMBER(*,0) NOT NULL ENABLE, - "SOURCE_CODE" VARCHAR2(100 CHAR) NOT NULL ENABLE, - "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_DESTRUCTION" DATE, - "HISTO_DESTRUCTEUR_ID" NUMBER(*,0), - "CODES_CORRESP_1" VARCHAR2(1000 CHAR), - "CODES_CORRESP_2" VARCHAR2(1000 CHAR), - "CODES_CORRESP_3" VARCHAR2(1000 CHAR), - "CODES_CORRESP_4" VARCHAR2(1000 CHAR), - CONSTRAINT "DISCIPLINE_SOURCE_UN" UNIQUE ("SOURCE_CODE") ENABLE, +CREATE TABLE "DISCIPLINE" + ( "ID" NUMBER(*,0) NOT NULL ENABLE, + "LIBELLE_COURT" VARCHAR2(20 CHAR), + "LIBELLE_LONG" VARCHAR2(200 CHAR) NOT NULL ENABLE, + "SOURCE_ID" NUMBER(*,0) NOT NULL ENABLE, + "SOURCE_CODE" VARCHAR2(100 CHAR) NOT NULL ENABLE, + "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_DESTRUCTION" DATE, + "HISTO_DESTRUCTEUR_ID" NUMBER(*,0), + "CODES_CORRESP_1" VARCHAR2(1000 CHAR), + "CODES_CORRESP_2" VARCHAR2(1000 CHAR), + "CODES_CORRESP_3" VARCHAR2(1000 CHAR), + "CODES_CORRESP_4" VARCHAR2(1000 CHAR), + CONSTRAINT "DISCIPLINE_SOURCE_UN" UNIQUE ("SOURCE_CODE") ENABLE, CONSTRAINT "DISCIPLINE_PK" PRIMARY KEY ("ID") ENABLE ) ; -- DOMAINE_FONCTIONNEL -CREATE TABLE "DOMAINE_FONCTIONNEL" - ( "ID" NUMBER(*,0) NOT NULL ENABLE, - "LIBELLE" VARCHAR2(200 CHAR) NOT NULL ENABLE, - "SOURCE_ID" NUMBER(*,0) NOT NULL ENABLE, - "SOURCE_CODE" VARCHAR2(100 CHAR) NOT NULL ENABLE, - "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_DESTRUCTION" DATE, - "HISTO_DESTRUCTEUR_ID" NUMBER(*,0), +CREATE TABLE "DOMAINE_FONCTIONNEL" + ( "ID" NUMBER(*,0) NOT NULL ENABLE, + "LIBELLE" VARCHAR2(200 CHAR) NOT NULL ENABLE, + "SOURCE_ID" NUMBER(*,0) NOT NULL ENABLE, + "SOURCE_CODE" VARCHAR2(100 CHAR) NOT NULL ENABLE, + "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_DESTRUCTION" DATE, + "HISTO_DESTRUCTEUR_ID" NUMBER(*,0), CONSTRAINT "DOMAINE_FONCTIONNEL_PK" PRIMARY KEY ("ID") ENABLE ) ; -- DOSSIER -CREATE TABLE "DOSSIER" - ( "ID" NUMBER(*,0) NOT NULL ENABLE, - "NOM_USUEL" VARCHAR2(128 CHAR) NOT NULL ENABLE, - "NOM_PATRONYMIQUE" VARCHAR2(128 CHAR), - "PRENOM" VARCHAR2(128 CHAR) NOT NULL ENABLE, - "CIVILITE_ID" NUMBER NOT NULL ENABLE, - "NUMERO_INSEE" VARCHAR2(20 CHAR) NOT NULL ENABLE, - "STATUT_ID" NUMBER NOT NULL ENABLE, - "ADRESSE" VARCHAR2(1024 CHAR) NOT NULL ENABLE, - "EMAIL" VARCHAR2(128 CHAR) NOT NULL ENABLE, - "TELEPHONE" VARCHAR2(20 CHAR), - "PREMIER_RECRUTEMENT" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, - "PERTE_EMPLOI" NUMBER(1,0) DEFAULT NULL, - "RIB" VARCHAR2(50 CHAR) NOT NULL ENABLE, - "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_DESTRUCTION" DATE, - "HISTO_DESTRUCTEUR_ID" NUMBER(*,0), - "NUMERO_INSEE_EST_PROVISOIRE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, - "DATE_NAISSANCE" DATE, - "DEPT_NAISSANCE_ID" NUMBER(*,0), - "EMAIL_PERSO" VARCHAR2(128 CHAR), - "PAYS_NAISSANCE_ID" NUMBER(*,0), - "VILLE_NAISSANCE" VARCHAR2(128 CHAR), - "INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE, - CONSTRAINT "DOSSIER_UK1" UNIQUE ("HISTO_DESTRUCTION") ENABLE, +CREATE TABLE "DOSSIER" + ( "ID" NUMBER(*,0) NOT NULL ENABLE, + "NOM_USUEL" VARCHAR2(128 CHAR) NOT NULL ENABLE, + "NOM_PATRONYMIQUE" VARCHAR2(128 CHAR), + "PRENOM" VARCHAR2(128 CHAR) NOT NULL ENABLE, + "CIVILITE_ID" NUMBER NOT NULL ENABLE, + "NUMERO_INSEE" VARCHAR2(20 CHAR) NOT NULL ENABLE, + "STATUT_ID" NUMBER NOT NULL ENABLE, + "ADRESSE" VARCHAR2(1024 CHAR) NOT NULL ENABLE, + "EMAIL" VARCHAR2(128 CHAR) NOT NULL ENABLE, + "TELEPHONE" VARCHAR2(20 CHAR), + "PREMIER_RECRUTEMENT" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, + "PERTE_EMPLOI" NUMBER(1,0) DEFAULT NULL, + "RIB" VARCHAR2(50 CHAR) NOT NULL ENABLE, + "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_DESTRUCTION" DATE, + "HISTO_DESTRUCTEUR_ID" NUMBER(*,0), + "NUMERO_INSEE_EST_PROVISOIRE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, + "DATE_NAISSANCE" DATE, + "DEPT_NAISSANCE_ID" NUMBER(*,0), + "EMAIL_PERSO" VARCHAR2(128 CHAR), + "PAYS_NAISSANCE_ID" NUMBER(*,0), + "VILLE_NAISSANCE" VARCHAR2(128 CHAR), + "INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE, + CONSTRAINT "DOSSIER_UK1" UNIQUE ("HISTO_DESTRUCTION") ENABLE, CONSTRAINT "DOSSIER_PK" PRIMARY KEY ("ID") ENABLE ) ; -- DOTATION -CREATE TABLE "DOTATION" - ( "ID" NUMBER(*,0) CONSTRAINT "NNC_DOTATION_ID" NOT NULL ENABLE, - "ANNEE_ID" NUMBER(*,0) CONSTRAINT "NNC_DOTATION_ANNEE_ID" NOT NULL ENABLE, - "STRUCTURE_ID" NUMBER(*,0) CONSTRAINT "NNC_DOTATION_STRUCTURE_ID" NOT NULL ENABLE, - "HEURES" FLOAT(126) DEFAULT 0 CONSTRAINT "NNC_DOTATION_HEURES" NOT NULL ENABLE, - "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_DESTRUCTION" DATE, - "HISTO_DESTRUCTEUR_ID" NUMBER(*,0), - "ANNEE_CIVILE" NUMBER(*,0) NOT NULL ENABLE, - "LIBELLE" VARCHAR2(100 CHAR) NOT NULL ENABLE, - "TYPE_RESSOURCE_ID" NUMBER(*,0) CONSTRAINT "NNC_DOTATION_TYPE_ID" NOT NULL ENABLE, - CONSTRAINT "DOTATION_PK" PRIMARY KEY ("ID") ENABLE, +CREATE TABLE "DOTATION" + ( "ID" NUMBER(*,0) CONSTRAINT "NNC_DOTATION_ID" NOT NULL ENABLE, + "ANNEE_ID" NUMBER(*,0) CONSTRAINT "NNC_DOTATION_ANNEE_ID" NOT NULL ENABLE, + "STRUCTURE_ID" NUMBER(*,0) CONSTRAINT "NNC_DOTATION_STRUCTURE_ID" NOT NULL ENABLE, + "HEURES" FLOAT(126) DEFAULT 0 CONSTRAINT "NNC_DOTATION_HEURES" NOT NULL ENABLE, + "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_DESTRUCTION" DATE, + "HISTO_DESTRUCTEUR_ID" NUMBER(*,0), + "ANNEE_CIVILE" NUMBER(*,0) NOT NULL ENABLE, + "LIBELLE" VARCHAR2(100 CHAR) NOT NULL ENABLE, + "TYPE_RESSOURCE_ID" NUMBER(*,0) CONSTRAINT "NNC_DOTATION_TYPE_ID" NOT NULL ENABLE, + CONSTRAINT "DOTATION_PK" PRIMARY KEY ("ID") ENABLE, CONSTRAINT "DOTATION__UN" UNIQUE ("TYPE_RESSOURCE_ID", "ANNEE_ID", "ANNEE_CIVILE", "STRUCTURE_ID", "LIBELLE", "HISTO_DESTRUCTION") ENABLE ) ; -- EFFECTIFS -CREATE TABLE "EFFECTIFS" - ( "ID" NUMBER(*,0) NOT NULL ENABLE, - "ELEMENT_PEDAGOGIQUE_ID" NUMBER(*,0) NOT NULL ENABLE, - "ANNEE_ID" NUMBER DEFAULT NULL NOT NULL ENABLE, - "FI" NUMBER(*,0) DEFAULT 0 NOT NULL ENABLE, - "FC" NUMBER(*,0) DEFAULT 0 NOT NULL ENABLE, - "FA" NUMBER(*,0) DEFAULT 0 NOT NULL ENABLE, - "SOURCE_ID" NUMBER(*,0) NOT NULL ENABLE, - "SOURCE_CODE" VARCHAR2(100 CHAR) NOT NULL ENABLE, - "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_DESTRUCTION" DATE, - "HISTO_DESTRUCTEUR_ID" NUMBER(*,0), - CONSTRAINT "EFFECTIFS_PK" PRIMARY KEY ("ID") ENABLE, +CREATE TABLE "EFFECTIFS" + ( "ID" NUMBER(*,0) NOT NULL ENABLE, + "ELEMENT_PEDAGOGIQUE_ID" NUMBER(*,0) NOT NULL ENABLE, + "ANNEE_ID" NUMBER DEFAULT NULL NOT NULL ENABLE, + "FI" NUMBER(*,0) DEFAULT 0 NOT NULL ENABLE, + "FC" NUMBER(*,0) DEFAULT 0 NOT NULL ENABLE, + "FA" NUMBER(*,0) DEFAULT 0 NOT NULL ENABLE, + "SOURCE_ID" NUMBER(*,0) NOT NULL ENABLE, + "SOURCE_CODE" VARCHAR2(100 CHAR) NOT NULL ENABLE, + "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_DESTRUCTION" DATE, + "HISTO_DESTRUCTEUR_ID" NUMBER(*,0), + CONSTRAINT "EFFECTIFS_PK" PRIMARY KEY ("ID") ENABLE, CONSTRAINT "EFFECTIFS__UN" UNIQUE ("SOURCE_CODE", "ANNEE_ID") ENABLE ) ; -- ELEMENT_MODULATEUR -CREATE TABLE "ELEMENT_MODULATEUR" - ( "ID" NUMBER NOT NULL ENABLE, - "ELEMENT_ID" NUMBER(*,0) NOT NULL ENABLE, - "MODULATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_DESTRUCTION" DATE, - "HISTO_DESTRUCTEUR_ID" NUMBER(*,0), - CONSTRAINT "ELEMENT_MODULATEUR__UN" UNIQUE ("ELEMENT_ID", "MODULATEUR_ID", "HISTO_DESTRUCTION") ENABLE, +CREATE TABLE "ELEMENT_MODULATEUR" + ( "ID" NUMBER NOT NULL ENABLE, + "ELEMENT_ID" NUMBER(*,0) NOT NULL ENABLE, + "MODULATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_DESTRUCTION" DATE, + "HISTO_DESTRUCTEUR_ID" NUMBER(*,0), + CONSTRAINT "ELEMENT_MODULATEUR__UN" UNIQUE ("ELEMENT_ID", "MODULATEUR_ID", "HISTO_DESTRUCTION") ENABLE, CONSTRAINT "ELEMENT_MODULATEUR_PK" PRIMARY KEY ("ID") ENABLE ) ; -- ELEMENT_PEDAGOGIQUE -CREATE TABLE "ELEMENT_PEDAGOGIQUE" - ( "ID" NUMBER(*,0) NOT NULL ENABLE, - "LIBELLE" VARCHAR2(200 CHAR) NOT NULL ENABLE, - "ETAPE_ID" NUMBER(*,0) NOT NULL ENABLE, - "STRUCTURE_ID" NUMBER(*,0) NOT NULL ENABLE, - "PERIODE_ID" NUMBER(*,0), - "TAUX_FOAD" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, - "FI" NUMBER(1,0) DEFAULT 1 NOT NULL ENABLE, - "FC" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, - "FA" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, - "SOURCE_ID" NUMBER(*,0) NOT NULL ENABLE, - "SOURCE_CODE" VARCHAR2(100 CHAR) NOT NULL ENABLE, - "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_DESTRUCTION" DATE, - "HISTO_DESTRUCTEUR_ID" NUMBER(*,0), - "TAUX_FA" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, - "TAUX_FC" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, - "TAUX_FI" FLOAT(126) DEFAULT 1 NOT NULL ENABLE, - "ANNEE_ID" NUMBER(*,0) DEFAULT NULL NOT NULL ENABLE, - "DISCIPLINE_ID" NUMBER(*,0), - "CODE" VARCHAR2(50 CHAR) NOT NULL ENABLE, - CONSTRAINT "ELEMENT_PEDAGOGIQUE_PK" PRIMARY KEY ("ID") ENABLE, - CONSTRAINT "EP_SRC_UN" UNIQUE ("SOURCE_CODE", "ANNEE_ID", "HISTO_DESTRUCTION") ENABLE, +CREATE TABLE "ELEMENT_PEDAGOGIQUE" + ( "ID" NUMBER(*,0) NOT NULL ENABLE, + "LIBELLE" VARCHAR2(200 CHAR) NOT NULL ENABLE, + "ETAPE_ID" NUMBER(*,0) NOT NULL ENABLE, + "STRUCTURE_ID" NUMBER(*,0) NOT NULL ENABLE, + "PERIODE_ID" NUMBER(*,0), + "TAUX_FOAD" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, + "FI" NUMBER(1,0) DEFAULT 1 NOT NULL ENABLE, + "FC" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, + "FA" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, + "SOURCE_ID" NUMBER(*,0) NOT NULL ENABLE, + "SOURCE_CODE" VARCHAR2(100 CHAR) NOT NULL ENABLE, + "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_DESTRUCTION" DATE, + "HISTO_DESTRUCTEUR_ID" NUMBER(*,0), + "TAUX_FA" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, + "TAUX_FC" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, + "TAUX_FI" FLOAT(126) DEFAULT 1 NOT NULL ENABLE, + "ANNEE_ID" NUMBER(*,0) DEFAULT NULL NOT NULL ENABLE, + "DISCIPLINE_ID" NUMBER(*,0), + "CODE" VARCHAR2(50 CHAR) NOT NULL ENABLE, + CONSTRAINT "ELEMENT_PEDAGOGIQUE_PK" PRIMARY KEY ("ID") ENABLE, + CONSTRAINT "EP_SRC_UN" UNIQUE ("SOURCE_CODE", "ANNEE_ID", "HISTO_DESTRUCTION") ENABLE, CONSTRAINT "EP_CODE_UN" UNIQUE ("CODE", "HISTO_DESTRUCTION", "ANNEE_ID") ENABLE ) ; -- ELEMENT_TAUX_REGIMES -CREATE TABLE "ELEMENT_TAUX_REGIMES" - ( "ID" NUMBER(*,0) NOT NULL ENABLE, - "ELEMENT_PEDAGOGIQUE_ID" NUMBER(*,0) NOT NULL ENABLE, - "TAUX_FI" FLOAT(126) NOT NULL ENABLE, - "TAUX_FC" FLOAT(126) NOT NULL ENABLE, - "TAUX_FA" FLOAT(126) NOT NULL ENABLE, - "SOURCE_ID" NUMBER(*,0) NOT NULL ENABLE, - "SOURCE_CODE" VARCHAR2(100 CHAR) NOT NULL ENABLE, - "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_DESTRUCTION" DATE, - "HISTO_DESTRUCTEUR_ID" NUMBER(*,0), - CONSTRAINT "ELEMENT_TAUX_REGIMES__UNV1" UNIQUE ("ELEMENT_PEDAGOGIQUE_ID", "HISTO_DESTRUCTION") ENABLE, - CONSTRAINT "ELEMENT_TAUX_REGIMES_PK" PRIMARY KEY ("ID") ENABLE, +CREATE TABLE "ELEMENT_TAUX_REGIMES" + ( "ID" NUMBER(*,0) NOT NULL ENABLE, + "ELEMENT_PEDAGOGIQUE_ID" NUMBER(*,0) NOT NULL ENABLE, + "TAUX_FI" FLOAT(126) NOT NULL ENABLE, + "TAUX_FC" FLOAT(126) NOT NULL ENABLE, + "TAUX_FA" FLOAT(126) NOT NULL ENABLE, + "SOURCE_ID" NUMBER(*,0) NOT NULL ENABLE, + "SOURCE_CODE" VARCHAR2(100 CHAR) NOT NULL ENABLE, + "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_DESTRUCTION" DATE, + "HISTO_DESTRUCTEUR_ID" NUMBER(*,0), + CONSTRAINT "ELEMENT_TAUX_REGIMES__UNV1" UNIQUE ("ELEMENT_PEDAGOGIQUE_ID", "HISTO_DESTRUCTION") ENABLE, + CONSTRAINT "ELEMENT_TAUX_REGIMES_PK" PRIMARY KEY ("ID") ENABLE, CONSTRAINT "ELEMENT_TAUX_REGIMES__UN" UNIQUE ("SOURCE_CODE", "HISTO_DESTRUCTION") ENABLE ) ; -- ETABLISSEMENT -CREATE TABLE "ETABLISSEMENT" - ( "ID" NUMBER(*,0) NOT NULL ENABLE, - "LIBELLE" VARCHAR2(100 CHAR) NOT NULL ENABLE, - "LOCALISATION" VARCHAR2(60 CHAR), - "DEPARTEMENT" VARCHAR2(3 CHAR), - "SOURCE_ID" NUMBER(*,0) NOT NULL ENABLE, - "SOURCE_CODE" VARCHAR2(100 CHAR), - "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_DESTRUCTION" DATE, - "HISTO_DESTRUCTEUR_ID" NUMBER(*,0), - CONSTRAINT "ETABLISSEMENT_SOURCE_ID_UN" UNIQUE ("SOURCE_CODE") ENABLE, +CREATE TABLE "ETABLISSEMENT" + ( "ID" NUMBER(*,0) NOT NULL ENABLE, + "LIBELLE" VARCHAR2(100 CHAR) NOT NULL ENABLE, + "LOCALISATION" VARCHAR2(60 CHAR), + "DEPARTEMENT" VARCHAR2(3 CHAR), + "SOURCE_ID" NUMBER(*,0) NOT NULL ENABLE, + "SOURCE_CODE" VARCHAR2(100 CHAR), + "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_DESTRUCTION" DATE, + "HISTO_DESTRUCTEUR_ID" NUMBER(*,0), + CONSTRAINT "ETABLISSEMENT_SOURCE_ID_UN" UNIQUE ("SOURCE_CODE") ENABLE, CONSTRAINT "ETABLISSEMENT_PK" PRIMARY KEY ("ID") ENABLE ) ; -- ETAPE -CREATE TABLE "ETAPE" - ( "ID" NUMBER(*,0) NOT NULL ENABLE, - "LIBELLE" VARCHAR2(200 CHAR) NOT NULL ENABLE, - "TYPE_FORMATION_ID" NUMBER(*,0) NOT NULL ENABLE, - "NIVEAU" NUMBER(*,0), - "SPECIFIQUE_ECHANGES" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, - "STRUCTURE_ID" NUMBER(*,0) NOT NULL ENABLE, - "SOURCE_ID" NUMBER(*,0) NOT NULL ENABLE, - "SOURCE_CODE" VARCHAR2(100 CHAR) NOT NULL ENABLE, - "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_DESTRUCTION" DATE, - "HISTO_DESTRUCTEUR_ID" NUMBER(*,0), - "DOMAINE_FONCTIONNEL_ID" NUMBER(*,0) NOT NULL ENABLE, - "ANNEE_ID" NUMBER(*,0) NOT NULL ENABLE, - "CODE" VARCHAR2(50 CHAR) NOT NULL ENABLE, - CONSTRAINT "ETAPE_PK" PRIMARY KEY ("ID") ENABLE, - CONSTRAINT "ETAPE_CODE_UN" UNIQUE ("CODE", "ANNEE_ID", "HISTO_DESTRUCTION") ENABLE, +CREATE TABLE "ETAPE" + ( "ID" NUMBER(*,0) NOT NULL ENABLE, + "LIBELLE" VARCHAR2(200 CHAR) NOT NULL ENABLE, + "TYPE_FORMATION_ID" NUMBER(*,0) NOT NULL ENABLE, + "NIVEAU" NUMBER(*,0), + "SPECIFIQUE_ECHANGES" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, + "STRUCTURE_ID" NUMBER(*,0) NOT NULL ENABLE, + "SOURCE_ID" NUMBER(*,0) NOT NULL ENABLE, + "SOURCE_CODE" VARCHAR2(100 CHAR) NOT NULL ENABLE, + "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_DESTRUCTION" DATE, + "HISTO_DESTRUCTEUR_ID" NUMBER(*,0), + "DOMAINE_FONCTIONNEL_ID" NUMBER(*,0) NOT NULL ENABLE, + "ANNEE_ID" NUMBER(*,0) NOT NULL ENABLE, + "CODE" VARCHAR2(50 CHAR) NOT NULL ENABLE, + CONSTRAINT "ETAPE_PK" PRIMARY KEY ("ID") ENABLE, + CONSTRAINT "ETAPE_CODE_UN" UNIQUE ("CODE", "ANNEE_ID", "HISTO_DESTRUCTION") ENABLE, CONSTRAINT "ETAPE_SRC_UN" UNIQUE ("SOURCE_CODE", "HISTO_DESTRUCTION", "ANNEE_ID") ENABLE ) ; -- ETAT_VOLUME_HORAIRE -CREATE TABLE "ETAT_VOLUME_HORAIRE" - ( "ID" NUMBER(*,0) NOT NULL ENABLE, - "CODE" VARCHAR2(30 CHAR) NOT NULL ENABLE, - "LIBELLE" VARCHAR2(80 CHAR) NOT NULL ENABLE, - "ORDRE" NUMBER(*,0) NOT NULL ENABLE, - CONSTRAINT "ETAT_VOLUME_HORAIRE_PK" PRIMARY KEY ("ID") ENABLE, +CREATE TABLE "ETAT_VOLUME_HORAIRE" + ( "ID" NUMBER(*,0) NOT NULL ENABLE, + "CODE" VARCHAR2(30 CHAR) NOT NULL ENABLE, + "LIBELLE" VARCHAR2(80 CHAR) NOT NULL ENABLE, + "ORDRE" NUMBER(*,0) NOT NULL ENABLE, + CONSTRAINT "ETAT_VOLUME_HORAIRE_PK" PRIMARY KEY ("ID") ENABLE, CONSTRAINT "ETAT_VOLUME_HORAIRE__UN" UNIQUE ("CODE") ENABLE ) ; -- FICHIER -CREATE TABLE "FICHIER" - ( "ID" NUMBER(*,0) NOT NULL ENABLE, - "NOM" VARCHAR2(128 CHAR) NOT NULL ENABLE, - "TYPE" VARCHAR2(128 CHAR) NOT NULL ENABLE, - "TAILLE" NUMBER(*,0) NOT NULL ENABLE, - "CONTENU" BLOB NOT NULL ENABLE, - "DESCRIPTION" VARCHAR2(256 CHAR), - "VALIDATION_ID" NUMBER, - "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_DESTRUCTION" DATE, - "HISTO_DESTRUCTEUR_ID" NUMBER(*,0), +CREATE TABLE "FICHIER" + ( "ID" NUMBER(*,0) NOT NULL ENABLE, + "NOM" VARCHAR2(128 CHAR) NOT NULL ENABLE, + "TYPE" VARCHAR2(128 CHAR) NOT NULL ENABLE, + "TAILLE" NUMBER(*,0) NOT NULL ENABLE, + "CONTENU" BLOB NOT NULL ENABLE, + "DESCRIPTION" VARCHAR2(256 CHAR), + "VALIDATION_ID" NUMBER, + "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_DESTRUCTION" DATE, + "HISTO_DESTRUCTEUR_ID" NUMBER(*,0), CONSTRAINT "FICHIER_PK" PRIMARY KEY ("ID") ENABLE ) ; -- FONCTION_REFERENTIEL -CREATE TABLE "FONCTION_REFERENTIEL" - ( "ID" NUMBER(*,0) NOT NULL ENABLE, - "CODE" VARCHAR2(32 CHAR) NOT NULL ENABLE, - "LIBELLE_LONG" VARCHAR2(100 CHAR) NOT NULL ENABLE, - "LIBELLE_COURT" VARCHAR2(40 CHAR) NOT NULL ENABLE, - "PLAFOND" FLOAT(126), - "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_DESTRUCTION" DATE, - "HISTO_DESTRUCTEUR_ID" NUMBER(*,0), - "STRUCTURE_ID" NUMBER(*,0) DEFAULT NULL, - "DOMAINE_FONCTIONNEL_ID" NUMBER NOT NULL ENABLE, - "ETAPE_REQUISE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, - CONSTRAINT "FONCTION_REFERENTIEL_PK" PRIMARY KEY ("ID") ENABLE, +CREATE TABLE "FONCTION_REFERENTIEL" + ( "ID" NUMBER(*,0) NOT NULL ENABLE, + "CODE" VARCHAR2(32 CHAR) NOT NULL ENABLE, + "LIBELLE_LONG" VARCHAR2(100 CHAR) NOT NULL ENABLE, + "LIBELLE_COURT" VARCHAR2(40 CHAR) NOT NULL ENABLE, + "PLAFOND" FLOAT(126), + "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_DESTRUCTION" DATE, + "HISTO_DESTRUCTEUR_ID" NUMBER(*,0), + "STRUCTURE_ID" NUMBER(*,0) DEFAULT NULL, + "DOMAINE_FONCTIONNEL_ID" NUMBER NOT NULL ENABLE, + "ETAPE_REQUISE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, + CONSTRAINT "FONCTION_REFERENTIEL_PK" PRIMARY KEY ("ID") ENABLE, CONSTRAINT "FONCTION_REFERENTIEL_CODE_UN" UNIQUE ("CODE") ENABLE ) ; -- FORMULE_RESULTAT -CREATE TABLE "FORMULE_RESULTAT" - ( "ID" NUMBER(*,0) NOT NULL ENABLE, - "INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE, - "TYPE_VOLUME_HORAIRE_ID" NUMBER(*,0) NOT NULL ENABLE, - "ETAT_VOLUME_HORAIRE_ID" NUMBER(*,0) NOT NULL ENABLE, - "SERVICE_DU" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, - "HEURES_COMPL_FI" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, - "HEURES_COMPL_FA" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, - "HEURES_COMPL_FC" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, - "HEURES_COMPL_REFERENTIEL" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, - "SOUS_SERVICE" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, - "TO_DELETE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, - "HEURES_COMPL_FC_MAJOREES" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, - "HEURES_COMPL" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, - "SERVICE_FA" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, - "SERVICE_FC" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, - "SERVICE_FI" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, - "SERVICE_REFERENTIEL" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, - "SOLDE" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, - "TOTAL" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, - "TYPE_INTERVENANT_CODE" VARCHAR2(5 CHAR) NOT NULL ENABLE, - CONSTRAINT "FORMULE_RESULTAT__UN" UNIQUE ("INTERVENANT_ID", "TYPE_VOLUME_HORAIRE_ID", "ETAT_VOLUME_HORAIRE_ID") ENABLE, +CREATE TABLE "FORMULE_RESULTAT" + ( "ID" NUMBER(*,0) NOT NULL ENABLE, + "INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE, + "TYPE_VOLUME_HORAIRE_ID" NUMBER(*,0) NOT NULL ENABLE, + "ETAT_VOLUME_HORAIRE_ID" NUMBER(*,0) NOT NULL ENABLE, + "SERVICE_DU" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, + "HEURES_COMPL_FI" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, + "HEURES_COMPL_FA" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, + "HEURES_COMPL_FC" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, + "HEURES_COMPL_REFERENTIEL" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, + "SOUS_SERVICE" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, + "TO_DELETE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, + "HEURES_COMPL_FC_MAJOREES" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, + "HEURES_COMPL" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, + "SERVICE_FA" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, + "SERVICE_FC" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, + "SERVICE_FI" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, + "SERVICE_REFERENTIEL" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, + "SOLDE" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, + "TOTAL" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, + "TYPE_INTERVENANT_CODE" VARCHAR2(5 CHAR) NOT NULL ENABLE, + CONSTRAINT "FORMULE_RESULTAT__UN" UNIQUE ("INTERVENANT_ID", "TYPE_VOLUME_HORAIRE_ID", "ETAT_VOLUME_HORAIRE_ID") ENABLE, CONSTRAINT "FORMULE_RESULTAT_PK" PRIMARY KEY ("ID") ENABLE ) ; -- FORMULE_RESULTAT_SERVICE -CREATE TABLE "FORMULE_RESULTAT_SERVICE" - ( "ID" NUMBER(*,0) NOT NULL ENABLE, - "FORMULE_RESULTAT_ID" NUMBER(*,0) NOT NULL ENABLE, - "SERVICE_ID" NUMBER(*,0) NOT NULL ENABLE, - "HEURES_COMPL_FI" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, - "HEURES_COMPL_FA" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, - "HEURES_COMPL_FC" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, - "TO_DELETE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, - "HEURES_COMPL_FC_MAJOREES" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, - "SERVICE_FA" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, - "SERVICE_FC" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, - "SERVICE_FI" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, - "TOTAL" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, +CREATE TABLE "FORMULE_RESULTAT_SERVICE" + ( "ID" NUMBER(*,0) NOT NULL ENABLE, + "FORMULE_RESULTAT_ID" NUMBER(*,0) NOT NULL ENABLE, + "SERVICE_ID" NUMBER(*,0) NOT NULL ENABLE, + "HEURES_COMPL_FI" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, + "HEURES_COMPL_FA" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, + "HEURES_COMPL_FC" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, + "TO_DELETE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, + "HEURES_COMPL_FC_MAJOREES" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, + "SERVICE_FA" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, + "SERVICE_FC" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, + "SERVICE_FI" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, + "TOTAL" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, CONSTRAINT "FORMULE_RESULTAT_SERVICE_PK" PRIMARY KEY ("ID") ENABLE ) ; -- FORMULE_RESULTAT_SERVICE_REF -CREATE TABLE "FORMULE_RESULTAT_SERVICE_REF" - ( "ID" NUMBER(*,0) NOT NULL ENABLE, - "FORMULE_RESULTAT_ID" NUMBER(*,0) NOT NULL ENABLE, - "SERVICE_REFERENTIEL_ID" NUMBER(*,0) NOT NULL ENABLE, - "HEURES_COMPL_REFERENTIEL" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, - "TO_DELETE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, - "SERVICE_REFERENTIEL" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, - "TOTAL" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, +CREATE TABLE "FORMULE_RESULTAT_SERVICE_REF" + ( "ID" NUMBER(*,0) NOT NULL ENABLE, + "FORMULE_RESULTAT_ID" NUMBER(*,0) NOT NULL ENABLE, + "SERVICE_REFERENTIEL_ID" NUMBER(*,0) NOT NULL ENABLE, + "HEURES_COMPL_REFERENTIEL" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, + "TO_DELETE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, + "SERVICE_REFERENTIEL" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, + "TOTAL" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, CONSTRAINT "FRSR_PK" PRIMARY KEY ("ID") ENABLE ) ; -- FORMULE_RESULTAT_VH -CREATE TABLE "FORMULE_RESULTAT_VH" - ( "ID" NUMBER(*,0) NOT NULL ENABLE, - "FORMULE_RESULTAT_ID" NUMBER(*,0) NOT NULL ENABLE, - "VOLUME_HORAIRE_ID" NUMBER(*,0) NOT NULL ENABLE, - "HEURES_COMPL_FI" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, - "HEURES_COMPL_FA" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, - "HEURES_COMPL_FC" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, - "TO_DELETE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, - "HEURES_COMPL_FC_MAJOREES" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, - "SERVICE_FA" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, - "SERVICE_FC" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, - "SERVICE_FI" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, - "TOTAL" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, +CREATE TABLE "FORMULE_RESULTAT_VH" + ( "ID" NUMBER(*,0) NOT NULL ENABLE, + "FORMULE_RESULTAT_ID" NUMBER(*,0) NOT NULL ENABLE, + "VOLUME_HORAIRE_ID" NUMBER(*,0) NOT NULL ENABLE, + "HEURES_COMPL_FI" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, + "HEURES_COMPL_FA" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, + "HEURES_COMPL_FC" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, + "TO_DELETE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, + "HEURES_COMPL_FC_MAJOREES" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, + "SERVICE_FA" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, + "SERVICE_FC" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, + "SERVICE_FI" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, + "TOTAL" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, CONSTRAINT "FORMULE_RESULTAT_VH_PK" PRIMARY KEY ("ID") ENABLE ) ; -- FORMULE_RESULTAT_VH_REF -CREATE TABLE "FORMULE_RESULTAT_VH_REF" - ( "ID" NUMBER(*,0) NOT NULL ENABLE, - "FORMULE_RESULTAT_ID" NUMBER(*,0) NOT NULL ENABLE, - "VOLUME_HORAIRE_REF_ID" NUMBER(*,0) NOT NULL ENABLE, - "HEURES_COMPL_REFERENTIEL" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, - "TO_DELETE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, - "SERVICE_REFERENTIEL" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, - "TOTAL" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, +CREATE TABLE "FORMULE_RESULTAT_VH_REF" + ( "ID" NUMBER(*,0) NOT NULL ENABLE, + "FORMULE_RESULTAT_ID" NUMBER(*,0) NOT NULL ENABLE, + "VOLUME_HORAIRE_REF_ID" NUMBER(*,0) NOT NULL ENABLE, + "HEURES_COMPL_REFERENTIEL" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, + "TO_DELETE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, + "SERVICE_REFERENTIEL" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, + "TOTAL" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, CONSTRAINT "FORMULE_RESULTAT_VH_REF_PK" PRIMARY KEY ("ID") ENABLE ) ; -- GRADE -CREATE TABLE "GRADE" - ( "ID" NUMBER(*,0) NOT NULL ENABLE, - "LIBELLE_LONG" VARCHAR2(40 CHAR) NOT NULL ENABLE, - "LIBELLE_COURT" VARCHAR2(20 CHAR) NOT NULL ENABLE, - "ECHELLE" VARCHAR2(10 CHAR), - "CORPS_ID" NUMBER(*,0) NOT NULL ENABLE, - "SOURCE_ID" NUMBER(*,0) NOT NULL ENABLE, - "SOURCE_CODE" VARCHAR2(100 CHAR), - "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_DESTRUCTION" DATE, - "HISTO_DESTRUCTEUR_ID" NUMBER(*,0), +CREATE TABLE "GRADE" + ( "ID" NUMBER(*,0) NOT NULL ENABLE, + "LIBELLE_LONG" VARCHAR2(40 CHAR) NOT NULL ENABLE, + "LIBELLE_COURT" VARCHAR2(20 CHAR) NOT NULL ENABLE, + "ECHELLE" VARCHAR2(10 CHAR), + "CORPS_ID" NUMBER(*,0) NOT NULL ENABLE, + "SOURCE_ID" NUMBER(*,0) NOT NULL ENABLE, + "SOURCE_CODE" VARCHAR2(100 CHAR), + "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_DESTRUCTION" DATE, + "HISTO_DESTRUCTEUR_ID" NUMBER(*,0), CONSTRAINT "GRADE_PK" PRIMARY KEY ("ID") ENABLE ) ; -- GROUPE -CREATE TABLE "GROUPE" - ( "ID" NUMBER(*,0) NOT NULL ENABLE, - "ELEMENT_PEDAGOGIQUE_ID" NUMBER(*,0) NOT NULL ENABLE, - "TYPE_INTERVENTION_ID" NUMBER(*,0) NOT NULL ENABLE, - "NOMBRE" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_DESTRUCTION" DATE, - "HISTO_DESTRUCTEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - CONSTRAINT "GROUPE__UN" UNIQUE ("ELEMENT_PEDAGOGIQUE_ID", "HISTO_DESTRUCTEUR_ID", "TYPE_INTERVENTION_ID") ENABLE, +CREATE TABLE "GROUPE" + ( "ID" NUMBER(*,0) NOT NULL ENABLE, + "ELEMENT_PEDAGOGIQUE_ID" NUMBER(*,0) NOT NULL ENABLE, + "TYPE_INTERVENTION_ID" NUMBER(*,0) NOT NULL ENABLE, + "NOMBRE" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_DESTRUCTION" DATE, + "HISTO_DESTRUCTEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + CONSTRAINT "GROUPE__UN" UNIQUE ("ELEMENT_PEDAGOGIQUE_ID", "HISTO_DESTRUCTEUR_ID", "TYPE_INTERVENTION_ID") ENABLE, CONSTRAINT "GROUPE_PK" PRIMARY KEY ("ID") ENABLE ) ; -- GROUPE_TYPE_FORMATION -CREATE TABLE "GROUPE_TYPE_FORMATION" - ( "ID" NUMBER(*,0) NOT NULL ENABLE, - "LIBELLE_COURT" VARCHAR2(20 CHAR) NOT NULL ENABLE, - "LIBELLE_LONG" VARCHAR2(50 CHAR) NOT NULL ENABLE, - "ORDRE" NUMBER(*,0) NOT NULL ENABLE, - "PERTINENCE_NIVEAU" NUMBER(1,0) DEFAULT 1 NOT NULL ENABLE, - "SOURCE_ID" NUMBER(*,0) NOT NULL ENABLE, - "SOURCE_CODE" VARCHAR2(100 CHAR), - "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_DESTRUCTION" DATE, - "HISTO_DESTRUCTEUR_ID" NUMBER(*,0), - CONSTRAINT "GTYPE_FORMATION_SOURCE_UN" UNIQUE ("SOURCE_CODE") ENABLE, +CREATE TABLE "GROUPE_TYPE_FORMATION" + ( "ID" NUMBER(*,0) NOT NULL ENABLE, + "LIBELLE_COURT" VARCHAR2(20 CHAR) NOT NULL ENABLE, + "LIBELLE_LONG" VARCHAR2(50 CHAR) NOT NULL ENABLE, + "ORDRE" NUMBER(*,0) NOT NULL ENABLE, + "PERTINENCE_NIVEAU" NUMBER(1,0) DEFAULT 1 NOT NULL ENABLE, + "SOURCE_ID" NUMBER(*,0) NOT NULL ENABLE, + "SOURCE_CODE" VARCHAR2(100 CHAR), + "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_DESTRUCTION" DATE, + "HISTO_DESTRUCTEUR_ID" NUMBER(*,0), + CONSTRAINT "GTYPE_FORMATION_SOURCE_UN" UNIQUE ("SOURCE_CODE") ENABLE, CONSTRAINT "GROUPE_TYPE_FORMATION_PK" PRIMARY KEY ("ID") ENABLE ) ; -- HISTO_INTERVENANT_SERVICE -CREATE TABLE "HISTO_INTERVENANT_SERVICE" - ( "ID" NUMBER(*,0) NOT NULL ENABLE, - "INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE, - "TYPE_VOLUME_HORAIRE_ID" NUMBER(*,0), - "REFERENTIEL" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, - "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_MODIFICATION" DATE NOT NULL ENABLE, - CONSTRAINT "HISTO_SERVICE_MODIFICATION_PK" PRIMARY KEY ("ID") ENABLE, +CREATE TABLE "HISTO_INTERVENANT_SERVICE" + ( "ID" NUMBER(*,0) NOT NULL ENABLE, + "INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE, + "TYPE_VOLUME_HORAIRE_ID" NUMBER(*,0), + "REFERENTIEL" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, + "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_MODIFICATION" DATE NOT NULL ENABLE, + CONSTRAINT "HISTO_SERVICE_MODIFICATION_PK" PRIMARY KEY ("ID") ENABLE, CONSTRAINT "HISTO_INTERVENANT_SERVICE__UN" UNIQUE ("INTERVENANT_ID", "TYPE_VOLUME_HORAIRE_ID", "REFERENTIEL") ENABLE ) ; -- IMPORT_TABLES -CREATE TABLE "IMPORT_TABLES" - ( "TABLE_NAME" VARCHAR2(30 CHAR) NOT NULL ENABLE, - "SYNC_FILTRE" VARCHAR2(2000 CHAR), - "SYNC_ENABLED" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, - "SYNC_JOB" VARCHAR2(40 CHAR), - "SYNC_HOOK_BEFORE" VARCHAR2(4000 CHAR), - "SYNC_HOOK_AFTER" VARCHAR2(4000 CHAR), - "ORDRE" NUMBER, +CREATE TABLE "IMPORT_TABLES" + ( "TABLE_NAME" VARCHAR2(30 CHAR) NOT NULL ENABLE, + "SYNC_FILTRE" VARCHAR2(2000 CHAR), + "SYNC_ENABLED" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, + "SYNC_JOB" VARCHAR2(40 CHAR), + "SYNC_HOOK_BEFORE" VARCHAR2(4000 CHAR), + "SYNC_HOOK_AFTER" VARCHAR2(4000 CHAR), + "ORDRE" NUMBER, CONSTRAINT "IMPORT_TABLES_PK" PRIMARY KEY ("TABLE_NAME") ENABLE ) ; -- INDICATEUR -CREATE TABLE "INDICATEUR" - ( "ID" NUMBER(*,0) NOT NULL ENABLE, - "TYPE" VARCHAR2(64 CHAR) NOT NULL ENABLE, - "ORDRE" NUMBER(*,0) DEFAULT 100 NOT NULL ENABLE, - "ENABLED" NUMBER(1,0) DEFAULT 1 NOT NULL ENABLE, - "NUMERO" NUMBER DEFAULT 0 NOT NULL ENABLE, - "LIBELLE_PLURIEL" VARCHAR2(255 CHAR) NOT NULL ENABLE, - "LIBELLE_SINGULIER" VARCHAR2(255 CHAR) NOT NULL ENABLE, - "MESSAGE" VARCHAR2(800 CHAR), - "ROUTE" VARCHAR2(250 CHAR) NOT NULL ENABLE, - "TEM_DISTINCT" NUMBER(1,0) DEFAULT 1 NOT NULL ENABLE, - "TEM_NOT_STRUCTURE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, +CREATE TABLE "INDICATEUR" + ( "ID" NUMBER(*,0) NOT NULL ENABLE, + "TYPE" VARCHAR2(64 CHAR) NOT NULL ENABLE, + "ORDRE" NUMBER(*,0) DEFAULT 100 NOT NULL ENABLE, + "ENABLED" NUMBER(1,0) DEFAULT 1 NOT NULL ENABLE, + "NUMERO" NUMBER DEFAULT 0 NOT NULL ENABLE, + "LIBELLE_PLURIEL" VARCHAR2(255 CHAR) NOT NULL ENABLE, + "LIBELLE_SINGULIER" VARCHAR2(255 CHAR) NOT NULL ENABLE, + "MESSAGE" VARCHAR2(800 CHAR), + "ROUTE" VARCHAR2(250 CHAR) NOT NULL ENABLE, + "TEM_DISTINCT" NUMBER(1,0) DEFAULT 1 NOT NULL ENABLE, + "TEM_NOT_STRUCTURE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, CONSTRAINT "INDICATEUR_PK" PRIMARY KEY ("ID") ENABLE ) ; -- INDIC_MODIF_DOSSIER -CREATE TABLE "INDIC_MODIF_DOSSIER" - ( "ID" NUMBER(*,0) NOT NULL ENABLE, - "INTERVENANT_ID" NUMBER(*,0), - "ATTR_NAME" VARCHAR2(128 CHAR), - "ATTR_OLD_SOURCE_NAME" VARCHAR2(128 CHAR), - "ATTR_OLD_VALUE" VARCHAR2(1024 CHAR), - "ATTR_NEW_SOURCE_NAME" VARCHAR2(128 CHAR), - "ATTR_NEW_VALUE" VARCHAR2(1024 CHAR), - "EST_CREATION_DOSSIER" NUMBER(*,0) DEFAULT 0 NOT NULL ENABLE, - "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_DESTRUCTION" DATE, - "HISTO_DESTRUCTEUR_ID" NUMBER(*,0), - "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, +CREATE TABLE "INDIC_MODIF_DOSSIER" + ( "ID" NUMBER(*,0) NOT NULL ENABLE, + "INTERVENANT_ID" NUMBER(*,0), + "ATTR_NAME" VARCHAR2(128 CHAR), + "ATTR_OLD_SOURCE_NAME" VARCHAR2(128 CHAR), + "ATTR_OLD_VALUE" VARCHAR2(1024 CHAR), + "ATTR_NEW_SOURCE_NAME" VARCHAR2(128 CHAR), + "ATTR_NEW_VALUE" VARCHAR2(1024 CHAR), + "EST_CREATION_DOSSIER" NUMBER(*,0) DEFAULT 0 NOT NULL ENABLE, + "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_DESTRUCTION" DATE, + "HISTO_DESTRUCTEUR_ID" NUMBER(*,0), + "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, CONSTRAINT "indic_diff_dossier_PK" PRIMARY KEY ("ID") ENABLE ) ; -- INTERVENANT -CREATE TABLE "INTERVENANT" - ( "ID" NUMBER(*,0) NOT NULL ENABLE, - "CIVILITE_ID" NUMBER(*,0) NOT NULL ENABLE, - "NOM_USUEL" VARCHAR2(60 CHAR) NOT NULL ENABLE, - "PRENOM" VARCHAR2(60 CHAR) NOT NULL ENABLE, - "NOM_PATRONYMIQUE" VARCHAR2(60 CHAR) NOT NULL ENABLE, - "DATE_NAISSANCE" DATE NOT NULL ENABLE, - "VILLE_NAISSANCE_CODE_INSEE" VARCHAR2(5 CHAR), - "VILLE_NAISSANCE_LIBELLE" VARCHAR2(60 CHAR), - "TEL_PRO" VARCHAR2(20 CHAR), - "TEL_MOBILE" VARCHAR2(20 CHAR), - "EMAIL" VARCHAR2(255 CHAR), - "STATUT_ID" NUMBER(*,0) NOT NULL ENABLE, - "STRUCTURE_ID" NUMBER(*,0) NOT NULL ENABLE, - "DISCIPLINE_ID" NUMBER(*,0), - "SOURCE_ID" NUMBER(*,0) NOT NULL ENABLE, - "SOURCE_CODE" VARCHAR2(100 CHAR), - "NUMERO_INSEE" VARCHAR2(13 CHAR), - "NUMERO_INSEE_CLE" VARCHAR2(2 CHAR), - "NUMERO_INSEE_PROVISOIRE" NUMBER(1,0), - "IBAN" VARCHAR2(50 CHAR), - "BIC" VARCHAR2(20 CHAR), - "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_DESTRUCTION" DATE, - "HISTO_DESTRUCTEUR_ID" NUMBER(*,0), - "PREMIER_RECRUTEMENT" NUMBER(1,0) DEFAULT NULL, - "ANNEE_ID" NUMBER(*,0) DEFAULT NULL NOT NULL ENABLE, - "GRADE_ID" NUMBER(*,0), - "MONTANT_INDEMNITE_FC" FLOAT(126), - "CRITERE_RECHERCHE" VARCHAR2(255 CHAR), - "CODE" VARCHAR2(60 CHAR), - "PAYS_NAISSANCE_ID" NUMBER(*,0) NOT NULL ENABLE, - "DEP_NAISSANCE_ID" NUMBER(*,0), - "PAYS_NATIONALITE_ID" NUMBER(*,0), - "UTILISATEUR_CODE" VARCHAR2(60 CHAR), - CONSTRAINT "INTERVENANT_SOURCE__UN" UNIQUE ("SOURCE_CODE", "ANNEE_ID") ENABLE, - CONSTRAINT "INTERVENANT_PK" PRIMARY KEY ("ID") ENABLE, - CONSTRAINT "INTERVENANT_CODE_UN" UNIQUE ("CODE", "ANNEE_ID") ENABLE, +CREATE TABLE "INTERVENANT" + ( "ID" NUMBER(*,0) NOT NULL ENABLE, + "CIVILITE_ID" NUMBER(*,0) NOT NULL ENABLE, + "NOM_USUEL" VARCHAR2(60 CHAR) NOT NULL ENABLE, + "PRENOM" VARCHAR2(60 CHAR) NOT NULL ENABLE, + "NOM_PATRONYMIQUE" VARCHAR2(60 CHAR) NOT NULL ENABLE, + "DATE_NAISSANCE" DATE NOT NULL ENABLE, + "VILLE_NAISSANCE_CODE_INSEE" VARCHAR2(5 CHAR), + "VILLE_NAISSANCE_LIBELLE" VARCHAR2(60 CHAR), + "TEL_PRO" VARCHAR2(20 CHAR), + "TEL_MOBILE" VARCHAR2(20 CHAR), + "EMAIL" VARCHAR2(255 CHAR), + "STATUT_ID" NUMBER(*,0) NOT NULL ENABLE, + "STRUCTURE_ID" NUMBER(*,0) NOT NULL ENABLE, + "DISCIPLINE_ID" NUMBER(*,0), + "SOURCE_ID" NUMBER(*,0) NOT NULL ENABLE, + "SOURCE_CODE" VARCHAR2(100 CHAR), + "NUMERO_INSEE" VARCHAR2(13 CHAR), + "NUMERO_INSEE_CLE" VARCHAR2(2 CHAR), + "NUMERO_INSEE_PROVISOIRE" NUMBER(1,0), + "IBAN" VARCHAR2(50 CHAR), + "BIC" VARCHAR2(20 CHAR), + "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_DESTRUCTION" DATE, + "HISTO_DESTRUCTEUR_ID" NUMBER(*,0), + "PREMIER_RECRUTEMENT" NUMBER(1,0) DEFAULT NULL, + "ANNEE_ID" NUMBER(*,0) DEFAULT NULL NOT NULL ENABLE, + "GRADE_ID" NUMBER(*,0), + "MONTANT_INDEMNITE_FC" FLOAT(126), + "CRITERE_RECHERCHE" VARCHAR2(255 CHAR), + "CODE" VARCHAR2(60 CHAR), + "PAYS_NAISSANCE_ID" NUMBER(*,0) NOT NULL ENABLE, + "DEP_NAISSANCE_ID" NUMBER(*,0), + "PAYS_NATIONALITE_ID" NUMBER(*,0), + "UTILISATEUR_CODE" VARCHAR2(60 CHAR), + CONSTRAINT "INTERVENANT_SOURCE__UN" UNIQUE ("SOURCE_CODE", "ANNEE_ID") ENABLE, + CONSTRAINT "INTERVENANT_PK" PRIMARY KEY ("ID") ENABLE, + CONSTRAINT "INTERVENANT_CODE_UN" UNIQUE ("CODE", "ANNEE_ID") ENABLE, CONSTRAINT "INTERVENANT_UTIL_CODE_UN" UNIQUE ("UTILISATEUR_CODE", "ANNEE_ID", "STATUT_ID") ENABLE ) ; -- INTERVENANT_SAISIE -CREATE TABLE "INTERVENANT_SAISIE" - ( "ID" NUMBER(*,0) NOT NULL ENABLE, - "INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE, - "STATUT_ID" NUMBER(*,0), - CONSTRAINT "INTERVENANT_SAISIE_PK" PRIMARY KEY ("ID") ENABLE, +CREATE TABLE "INTERVENANT_SAISIE" + ( "ID" NUMBER(*,0) NOT NULL ENABLE, + "INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE, + "STATUT_ID" NUMBER(*,0), + CONSTRAINT "INTERVENANT_SAISIE_PK" PRIMARY KEY ("ID") ENABLE, CONSTRAINT "INTERVENANT_SAISIE__UN" UNIQUE ("INTERVENANT_ID") ENABLE ) ; -- LIEN -CREATE TABLE "LIEN" - ( "ID" NUMBER(*,0) NOT NULL ENABLE, - "NOEUD_SUP_ID" NUMBER(*,0) NOT NULL ENABLE, - "NOEUD_INF_ID" NUMBER(*,0) NOT NULL ENABLE, - "SOURCE_ID" NUMBER(*,0) NOT NULL ENABLE, - "SOURCE_CODE" VARCHAR2(100 CHAR) NOT NULL ENABLE, - "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_DESTRUCTION" DATE, - "HISTO_DESTRUCTEUR_ID" NUMBER(*,0), - "STRUCTURE_ID" NUMBER(*,0), - CONSTRAINT "LIEN_PK" PRIMARY KEY ("ID") ENABLE, +CREATE TABLE "LIEN" + ( "ID" NUMBER(*,0) NOT NULL ENABLE, + "NOEUD_SUP_ID" NUMBER(*,0) NOT NULL ENABLE, + "NOEUD_INF_ID" NUMBER(*,0) NOT NULL ENABLE, + "SOURCE_ID" NUMBER(*,0) NOT NULL ENABLE, + "SOURCE_CODE" VARCHAR2(100 CHAR) NOT NULL ENABLE, + "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_DESTRUCTION" DATE, + "HISTO_DESTRUCTEUR_ID" NUMBER(*,0), + "STRUCTURE_ID" NUMBER(*,0), + CONSTRAINT "LIEN_PK" PRIMARY KEY ("ID") ENABLE, CONSTRAINT "LIEN_SRC_UN" UNIQUE ("SOURCE_CODE", "HISTO_DESTRUCTION") ENABLE ) ; -- MISE_EN_PAIEMENT -CREATE TABLE "MISE_EN_PAIEMENT" - ( "ID" NUMBER(*,0) NOT NULL ENABLE, - "DATE_MISE_EN_PAIEMENT" DATE, - "PERIODE_PAIEMENT_ID" NUMBER(*,0), - "VALIDATION_ID" NUMBER(*,0), - "DATE_VALIDATION" DATE, - "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_DESTRUCTION" DATE, - "HISTO_DESTRUCTEUR_ID" NUMBER(*,0), - "CENTRE_COUT_ID" NUMBER(*,0) NOT NULL ENABLE, - "FORMULE_RES_SERVICE_ID" NUMBER(*,0), - "FORMULE_RES_SERVICE_REF_ID" NUMBER(*,0), - "HEURES" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, - "TYPE_HEURES_ID" NUMBER(*,0) NOT NULL ENABLE, - "DOMAINE_FONCTIONNEL_ID" NUMBER(*,0), +CREATE TABLE "MISE_EN_PAIEMENT" + ( "ID" NUMBER(*,0) NOT NULL ENABLE, + "DATE_MISE_EN_PAIEMENT" DATE, + "PERIODE_PAIEMENT_ID" NUMBER(*,0), + "VALIDATION_ID" NUMBER(*,0), + "DATE_VALIDATION" DATE, + "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_DESTRUCTION" DATE, + "HISTO_DESTRUCTEUR_ID" NUMBER(*,0), + "CENTRE_COUT_ID" NUMBER(*,0) NOT NULL ENABLE, + "FORMULE_RES_SERVICE_ID" NUMBER(*,0), + "FORMULE_RES_SERVICE_REF_ID" NUMBER(*,0), + "HEURES" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, + "TYPE_HEURES_ID" NUMBER(*,0) NOT NULL ENABLE, + "DOMAINE_FONCTIONNEL_ID" NUMBER(*,0), CONSTRAINT "MISE_EN_PAIEMENT_PK" PRIMARY KEY ("ID") ENABLE ) ; -- MODIFICATION_SERVICE_DU -CREATE TABLE "MODIFICATION_SERVICE_DU" - ( "ID" NUMBER(*,0) NOT NULL ENABLE, - "INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE, - "HEURES" FLOAT(126) NOT NULL ENABLE, - "MOTIF_ID" NUMBER(*,0) NOT NULL ENABLE, - "COMMENTAIRES" CLOB, - "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_DESTRUCTION" DATE, - "HISTO_DESTRUCTEUR_ID" NUMBER(*,0), +CREATE TABLE "MODIFICATION_SERVICE_DU" + ( "ID" NUMBER(*,0) NOT NULL ENABLE, + "INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE, + "HEURES" FLOAT(126) NOT NULL ENABLE, + "MOTIF_ID" NUMBER(*,0) NOT NULL ENABLE, + "COMMENTAIRES" CLOB, + "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_DESTRUCTION" DATE, + "HISTO_DESTRUCTEUR_ID" NUMBER(*,0), CONSTRAINT "MODIFICATION_SERVICE_DU_PK" PRIMARY KEY ("ID") ENABLE ) ; -- MODULATEUR -CREATE TABLE "MODULATEUR" - ( "ID" NUMBER(*,0) NOT NULL ENABLE, - "CODE" VARCHAR2(30 CHAR) NOT NULL ENABLE, - "LIBELLE" VARCHAR2(40 CHAR) NOT NULL ENABLE, - "TYPE_MODULATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "PONDERATION_SERVICE_DU" FLOAT(126) NOT NULL ENABLE, - "PONDERATION_SERVICE_COMPL" FLOAT(126) NOT NULL ENABLE, - "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_DESTRUCTION" DATE, - "HISTO_DESTRUCTEUR_ID" NUMBER(*,0), - CONSTRAINT "MODULATEUR__UN" UNIQUE ("CODE") ENABLE, +CREATE TABLE "MODULATEUR" + ( "ID" NUMBER(*,0) NOT NULL ENABLE, + "CODE" VARCHAR2(30 CHAR) NOT NULL ENABLE, + "LIBELLE" VARCHAR2(40 CHAR) NOT NULL ENABLE, + "TYPE_MODULATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "PONDERATION_SERVICE_DU" FLOAT(126) NOT NULL ENABLE, + "PONDERATION_SERVICE_COMPL" FLOAT(126) NOT NULL ENABLE, + "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_DESTRUCTION" DATE, + "HISTO_DESTRUCTEUR_ID" NUMBER(*,0), + CONSTRAINT "MODULATEUR__UN" UNIQUE ("CODE") ENABLE, CONSTRAINT "MODULATEUR_PK" PRIMARY KEY ("ID") ENABLE ) ; -- MOTIF_MODIFICATION_SERVICE -CREATE TABLE "MOTIF_MODIFICATION_SERVICE" - ( "ID" NUMBER(*,0) NOT NULL ENABLE, - "CODE" VARCHAR2(64 CHAR) NOT NULL ENABLE, - "LIBELLE" VARCHAR2(50 CHAR) NOT NULL ENABLE, - "MULTIPLICATEUR" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_DESTRUCTION" DATE, - "HISTO_DESTRUCTEUR_ID" NUMBER(*,0), - "DECHARGE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, - CONSTRAINT "MOTIF_MODIFICATION_SERVICE_PK" PRIMARY KEY ("ID") ENABLE, +CREATE TABLE "MOTIF_MODIFICATION_SERVICE" + ( "ID" NUMBER(*,0) NOT NULL ENABLE, + "CODE" VARCHAR2(64 CHAR) NOT NULL ENABLE, + "LIBELLE" VARCHAR2(50 CHAR) NOT NULL ENABLE, + "MULTIPLICATEUR" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_DESTRUCTION" DATE, + "HISTO_DESTRUCTEUR_ID" NUMBER(*,0), + "DECHARGE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, + CONSTRAINT "MOTIF_MODIFICATION_SERVICE_PK" PRIMARY KEY ("ID") ENABLE, CONSTRAINT "MOTIF_MODIFICATION_SERVIC_UK1" UNIQUE ("CODE") ENABLE ) ; -- MOTIF_NON_PAIEMENT -CREATE TABLE "MOTIF_NON_PAIEMENT" - ( "ID" NUMBER(*,0) NOT NULL ENABLE, - "CODE" VARCHAR2(3 CHAR) NOT NULL ENABLE, - "LIBELLE_COURT" VARCHAR2(50 CHAR) NOT NULL ENABLE, - "LIBELLE_LONG" VARCHAR2(200 CHAR) NOT NULL ENABLE, - "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_DESTRUCTION" DATE, - "HISTO_DESTRUCTEUR_ID" NUMBER(*,0), +CREATE TABLE "MOTIF_NON_PAIEMENT" + ( "ID" NUMBER(*,0) NOT NULL ENABLE, + "CODE" VARCHAR2(3 CHAR) NOT NULL ENABLE, + "LIBELLE_COURT" VARCHAR2(50 CHAR) NOT NULL ENABLE, + "LIBELLE_LONG" VARCHAR2(200 CHAR) NOT NULL ENABLE, + "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_DESTRUCTION" DATE, + "HISTO_DESTRUCTEUR_ID" NUMBER(*,0), CONSTRAINT "MOTIF_NON_PAIEMENT_PK" PRIMARY KEY ("ID") ENABLE ) ; -- NOEUD -CREATE TABLE "NOEUD" - ( "ID" NUMBER(*,0) NOT NULL ENABLE, - "CODE" VARCHAR2(50 CHAR) NOT NULL ENABLE, - "LIBELLE" VARCHAR2(255 CHAR) NOT NULL ENABLE, - "LISTE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, - "ANNEE_ID" NUMBER(*,0) NOT NULL ENABLE, - "ETAPE_ID" NUMBER(*,0), - "ELEMENT_PEDAGOGIQUE_ID" NUMBER(*,0), - "SOURCE_ID" NUMBER(*,0) NOT NULL ENABLE, - "SOURCE_CODE" VARCHAR2(100 CHAR) NOT NULL ENABLE, - "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_DESTRUCTION" DATE, - "HISTO_DESTRUCTEUR_ID" NUMBER(*,0), - "STRUCTURE_ID" NUMBER(*,0), - CONSTRAINT "NOEUD_PK" PRIMARY KEY ("ID") ENABLE, +CREATE TABLE "NOEUD" + ( "ID" NUMBER(*,0) NOT NULL ENABLE, + "CODE" VARCHAR2(50 CHAR) NOT NULL ENABLE, + "LIBELLE" VARCHAR2(255 CHAR) NOT NULL ENABLE, + "LISTE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, + "ANNEE_ID" NUMBER(*,0) NOT NULL ENABLE, + "ETAPE_ID" NUMBER(*,0), + "ELEMENT_PEDAGOGIQUE_ID" NUMBER(*,0), + "SOURCE_ID" NUMBER(*,0) NOT NULL ENABLE, + "SOURCE_CODE" VARCHAR2(100 CHAR) NOT NULL ENABLE, + "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_DESTRUCTION" DATE, + "HISTO_DESTRUCTEUR_ID" NUMBER(*,0), + "STRUCTURE_ID" NUMBER(*,0), + CONSTRAINT "NOEUD_PK" PRIMARY KEY ("ID") ENABLE, CONSTRAINT "NOEUD_SRC_UN" UNIQUE ("SOURCE_CODE", "HISTO_DESTRUCTION") ENABLE ) ; -- NOTIFICATION_INDICATEUR -CREATE TABLE "NOTIFICATION_INDICATEUR" - ( "ID" NUMBER(*,0) NOT NULL ENABLE, - "INDICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "FREQUENCE" NUMBER(*,0), - "DATE_ABONNEMENT" DATE NOT NULL ENABLE, - "DATE_DERN_NOTIF" DATE, - "AFFECTATION_ID" NUMBER(*,0) NOT NULL ENABLE, - "IN_HOME" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, - CONSTRAINT "NOTIF_INDICATEUR_PK" PRIMARY KEY ("ID") ENABLE, +CREATE TABLE "NOTIFICATION_INDICATEUR" + ( "ID" NUMBER(*,0) NOT NULL ENABLE, + "INDICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "FREQUENCE" NUMBER(*,0), + "DATE_ABONNEMENT" DATE NOT NULL ENABLE, + "DATE_DERN_NOTIF" DATE, + "AFFECTATION_ID" NUMBER(*,0) NOT NULL ENABLE, + "IN_HOME" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, + CONSTRAINT "NOTIF_INDICATEUR_PK" PRIMARY KEY ("ID") ENABLE, CONSTRAINT "NOTIFICATION_INDICATEUR__UN" UNIQUE ("INDICATEUR_ID", "AFFECTATION_ID") ENABLE ) ; -- PARAMETRE -CREATE TABLE "PARAMETRE" - ( "ID" NUMBER(*,0) NOT NULL ENABLE, - "NOM" VARCHAR2(50 CHAR) NOT NULL ENABLE, - "VALEUR" CLOB, - "DESCRIPTION" CLOB, - "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_DESTRUCTION" DATE, - "HISTO_DESTRUCTEUR_ID" NUMBER(*,0), +CREATE TABLE "PARAMETRE" + ( "ID" NUMBER(*,0) NOT NULL ENABLE, + "NOM" VARCHAR2(50 CHAR) NOT NULL ENABLE, + "VALEUR" CLOB, + "DESCRIPTION" CLOB, + "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_DESTRUCTION" DATE, + "HISTO_DESTRUCTEUR_ID" NUMBER(*,0), CONSTRAINT "PARAMETRE_PK" PRIMARY KEY ("ID") ENABLE ) ; -- PAYS -CREATE TABLE "PAYS" - ( "ID" NUMBER(*,0) NOT NULL ENABLE, - "LIBELLE_LONG" VARCHAR2(120 CHAR) NOT NULL ENABLE, - "LIBELLE_COURT" VARCHAR2(60 CHAR) NOT NULL ENABLE, - "TEMOIN_UE" NUMBER(1,0) NOT NULL ENABLE, - "VALIDITE_DEBUT" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "VALIDITE_FIN" DATE, - "SOURCE_ID" NUMBER(*,0) NOT NULL ENABLE, - "SOURCE_CODE" VARCHAR2(100 CHAR) NOT NULL ENABLE, - "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_DESTRUCTION" DATE, - "HISTO_DESTRUCTEUR_ID" NUMBER(*,0), +CREATE TABLE "PAYS" + ( "ID" NUMBER(*,0) NOT NULL ENABLE, + "LIBELLE_LONG" VARCHAR2(120 CHAR) NOT NULL ENABLE, + "LIBELLE_COURT" VARCHAR2(60 CHAR) NOT NULL ENABLE, + "TEMOIN_UE" NUMBER(1,0) NOT NULL ENABLE, + "VALIDITE_DEBUT" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "VALIDITE_FIN" DATE, + "SOURCE_ID" NUMBER(*,0) NOT NULL ENABLE, + "SOURCE_CODE" VARCHAR2(100 CHAR) NOT NULL ENABLE, + "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_DESTRUCTION" DATE, + "HISTO_DESTRUCTEUR_ID" NUMBER(*,0), CONSTRAINT "PAYS_PK" PRIMARY KEY ("ID") ENABLE ) ; -- PERIMETRE -CREATE TABLE "PERIMETRE" - ( "ID" NUMBER(*,0) NOT NULL ENABLE, - "CODE" VARCHAR2(30 CHAR) NOT NULL ENABLE, - "LIBELLE" VARCHAR2(150 CHAR) NOT NULL ENABLE, - CONSTRAINT "PERIMETRE_PK" PRIMARY KEY ("ID") ENABLE, - CONSTRAINT "PERIMETRE_CODE_UN" UNIQUE ("CODE") ENABLE, +CREATE TABLE "PERIMETRE" + ( "ID" NUMBER(*,0) NOT NULL ENABLE, + "CODE" VARCHAR2(30 CHAR) NOT NULL ENABLE, + "LIBELLE" VARCHAR2(150 CHAR) NOT NULL ENABLE, + CONSTRAINT "PERIMETRE_PK" PRIMARY KEY ("ID") ENABLE, + CONSTRAINT "PERIMETRE_CODE_UN" UNIQUE ("CODE") ENABLE, CONSTRAINT "PERIMETRE_LIBELLE_UN" UNIQUE ("LIBELLE") ENABLE ) ; -- PERIODE -CREATE TABLE "PERIODE" - ( "ID" NUMBER(*,0) NOT NULL ENABLE, - "CODE" VARCHAR2(3 CHAR) NOT NULL ENABLE, - "LIBELLE_LONG" VARCHAR2(40 CHAR) NOT NULL ENABLE, - "LIBELLE_COURT" VARCHAR2(15 CHAR), - "ORDRE" NUMBER(*,0) NOT NULL ENABLE, - "ENSEIGNEMENT" NUMBER(1,0), - "PAIEMENT" NUMBER(1,0), - "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_DESTRUCTION" DATE, - "HISTO_DESTRUCTEUR_ID" NUMBER(*,0), - "ECART_MOIS" NUMBER NOT NULL ENABLE, - "ECART_MOIS_PAIEMENT" NUMBER NOT NULL ENABLE, - CONSTRAINT "PERIODE__UN" UNIQUE ("CODE") ENABLE, +CREATE TABLE "PERIODE" + ( "ID" NUMBER(*,0) NOT NULL ENABLE, + "CODE" VARCHAR2(3 CHAR) NOT NULL ENABLE, + "LIBELLE_LONG" VARCHAR2(40 CHAR) NOT NULL ENABLE, + "LIBELLE_COURT" VARCHAR2(15 CHAR), + "ORDRE" NUMBER(*,0) NOT NULL ENABLE, + "ENSEIGNEMENT" NUMBER(1,0), + "PAIEMENT" NUMBER(1,0), + "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_DESTRUCTION" DATE, + "HISTO_DESTRUCTEUR_ID" NUMBER(*,0), + "ECART_MOIS" NUMBER NOT NULL ENABLE, + "ECART_MOIS_PAIEMENT" NUMBER NOT NULL ENABLE, + CONSTRAINT "PERIODE__UN" UNIQUE ("CODE") ENABLE, CONSTRAINT "PERIODE_PK" PRIMARY KEY ("ID") ENABLE ) ; -- PIECE_JOINTE -CREATE TABLE "PIECE_JOINTE" - ( "ID" NUMBER(*,0) NOT NULL ENABLE, - "TYPE_PIECE_JOINTE_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_DESTRUCTION" DATE, - "HISTO_DESTRUCTEUR_ID" NUMBER(*,0), - "VALIDATION_ID" NUMBER(*,0), - "INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE, - CONSTRAINT "PIECE_JOINTE_PK" PRIMARY KEY ("ID") ENABLE, +CREATE TABLE "PIECE_JOINTE" + ( "ID" NUMBER(*,0) NOT NULL ENABLE, + "TYPE_PIECE_JOINTE_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_DESTRUCTION" DATE, + "HISTO_DESTRUCTEUR_ID" NUMBER(*,0), + "VALIDATION_ID" NUMBER(*,0), + "INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE, + CONSTRAINT "PIECE_JOINTE_PK" PRIMARY KEY ("ID") ENABLE, CONSTRAINT "PIECE_JOINTE__UN" UNIQUE ("TYPE_PIECE_JOINTE_ID", "INTERVENANT_ID", "HISTO_DESTRUCTION") ENABLE ) ; -- PIECE_JOINTE_FICHIER -CREATE TABLE "PIECE_JOINTE_FICHIER" - ( "PIECE_JOINTE_ID" NUMBER NOT NULL ENABLE, - "FICHIER_ID" NUMBER(*,0) NOT NULL ENABLE, +CREATE TABLE "PIECE_JOINTE_FICHIER" + ( "PIECE_JOINTE_ID" NUMBER NOT NULL ENABLE, + "FICHIER_ID" NUMBER(*,0) NOT NULL ENABLE, CONSTRAINT "PIECE_JOINTE_FICHIER_PK" PRIMARY KEY ("PIECE_JOINTE_ID", "FICHIER_ID") ENABLE ) ; -- PLAFOND -CREATE TABLE "PLAFOND" - ( "ID" NUMBER(*,0) NOT NULL ENABLE, - "CODE" VARCHAR2(40 CHAR) NOT NULL ENABLE, - "LIBELLE" VARCHAR2(150 CHAR) NOT NULL ENABLE, +CREATE TABLE "PLAFOND" + ( "ID" NUMBER(*,0) NOT NULL ENABLE, + "CODE" VARCHAR2(40 CHAR) NOT NULL ENABLE, + "LIBELLE" VARCHAR2(150 CHAR) NOT NULL ENABLE, CONSTRAINT "PLAFOND_PK" PRIMARY KEY ("ID") ENABLE ) ; -- PLAFOND_APPLICATION -CREATE TABLE "PLAFOND_APPLICATION" - ( "ID" NUMBER NOT NULL ENABLE, - "PLAFOND_ID" NUMBER(*,0) NOT NULL ENABLE, - "PLAFOND_ETAT_ID" NUMBER(*,0) NOT NULL ENABLE, - "ANNEE_DEBUT_ID" NUMBER(*,0), - "ANNEE_FIN_ID" NUMBER(*,0), - "TYPE_VOLUME_HORAIRE_ID" NUMBER(*,0) NOT NULL ENABLE, +CREATE TABLE "PLAFOND_APPLICATION" + ( "ID" NUMBER NOT NULL ENABLE, + "PLAFOND_ID" NUMBER(*,0) NOT NULL ENABLE, + "PLAFOND_ETAT_ID" NUMBER(*,0) NOT NULL ENABLE, + "ANNEE_DEBUT_ID" NUMBER(*,0), + "ANNEE_FIN_ID" NUMBER(*,0), + "TYPE_VOLUME_HORAIRE_ID" NUMBER(*,0) NOT NULL ENABLE, CONSTRAINT "PLAFOND_APPLICATION_PK" PRIMARY KEY ("ID") ENABLE ) ; -- PLAFOND_ETAT -CREATE TABLE "PLAFOND_ETAT" - ( "ID" NUMBER(*,0) NOT NULL ENABLE, - "CODE" VARCHAR2(20 CHAR) NOT NULL ENABLE, - "LIBELLE" VARCHAR2(100 CHAR) NOT NULL ENABLE, +CREATE TABLE "PLAFOND_ETAT" + ( "ID" NUMBER(*,0) NOT NULL ENABLE, + "CODE" VARCHAR2(20 CHAR) NOT NULL ENABLE, + "LIBELLE" VARCHAR2(100 CHAR) NOT NULL ENABLE, CONSTRAINT "PLAFOND_ETAT_PK" PRIMARY KEY ("ID") ENABLE ) ; -- PRIVILEGE -CREATE TABLE "PRIVILEGE" - ( "ID" NUMBER(*,0) NOT NULL ENABLE, - "CODE" VARCHAR2(150 CHAR) NOT NULL ENABLE, - "LIBELLE" VARCHAR2(200 CHAR) NOT NULL ENABLE, - "CATEGORIE_ID" NUMBER(*,0) NOT NULL ENABLE, - "ORDRE" NUMBER(*,0), - CONSTRAINT "PRIVILEGE_PK" PRIMARY KEY ("ID") ENABLE, +CREATE TABLE "PRIVILEGE" + ( "ID" NUMBER(*,0) NOT NULL ENABLE, + "CODE" VARCHAR2(150 CHAR) NOT NULL ENABLE, + "LIBELLE" VARCHAR2(200 CHAR) NOT NULL ENABLE, + "CATEGORIE_ID" NUMBER(*,0) NOT NULL ENABLE, + "ORDRE" NUMBER(*,0), + CONSTRAINT "PRIVILEGE_PK" PRIMARY KEY ("ID") ENABLE, CONSTRAINT "PRIVILEGE__UN" UNIQUE ("CATEGORIE_ID", "CODE") ENABLE ) ; -- REGLE_STRUCTURE_VALIDATION -CREATE TABLE "REGLE_STRUCTURE_VALIDATION" - ( "ID" NUMBER NOT NULL ENABLE, - "TYPE_VOLUME_HORAIRE_ID" NUMBER(*,0) NOT NULL ENABLE, - "TYPE_INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE, - "PRIORITE" VARCHAR2(20 CHAR) NOT NULL ENABLE, - "MESSAGE" VARCHAR2(500 CHAR), - CONSTRAINT "REGLE_STRUCTURE_VALIDATION_PK" PRIMARY KEY ("ID") ENABLE, +CREATE TABLE "REGLE_STRUCTURE_VALIDATION" + ( "ID" NUMBER NOT NULL ENABLE, + "TYPE_VOLUME_HORAIRE_ID" NUMBER(*,0) NOT NULL ENABLE, + "TYPE_INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE, + "PRIORITE" VARCHAR2(20 CHAR) NOT NULL ENABLE, + "MESSAGE" VARCHAR2(500 CHAR), + CONSTRAINT "REGLE_STRUCTURE_VALIDATION_PK" PRIMARY KEY ("ID") ENABLE, CONSTRAINT "REGLE_STRUCTURE_VALIDATION__UN" UNIQUE ("TYPE_VOLUME_HORAIRE_ID", "TYPE_INTERVENANT_ID") ENABLE ) ; -- ROLE -CREATE TABLE "ROLE" - ( "ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_DESTRUCTION" DATE, - "HISTO_DESTRUCTEUR_ID" NUMBER(*,0), - "CODE" VARCHAR2(64 CHAR) NOT NULL ENABLE, - "LIBELLE" VARCHAR2(50 CHAR) NOT NULL ENABLE, - "PERIMETRE_ID" NUMBER(*,0) NOT NULL ENABLE, - "PEUT_CHANGER_STRUCTURE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, - CONSTRAINT "ROLE_CODE_UN" UNIQUE ("CODE") ENABLE, +CREATE TABLE "ROLE" + ( "ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_DESTRUCTION" DATE, + "HISTO_DESTRUCTEUR_ID" NUMBER(*,0), + "CODE" VARCHAR2(64 CHAR) NOT NULL ENABLE, + "LIBELLE" VARCHAR2(50 CHAR) NOT NULL ENABLE, + "PERIMETRE_ID" NUMBER(*,0) NOT NULL ENABLE, + "PEUT_CHANGER_STRUCTURE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, + CONSTRAINT "ROLE_CODE_UN" UNIQUE ("CODE") ENABLE, CONSTRAINT "ROLE_PK" PRIMARY KEY ("ID") ENABLE ) ; -- ROLE_PRIVILEGE -CREATE TABLE "ROLE_PRIVILEGE" - ( "ROLE_ID" NUMBER(*,0) NOT NULL ENABLE, - "PRIVILEGE_ID" NUMBER(*,0) NOT NULL ENABLE, +CREATE TABLE "ROLE_PRIVILEGE" + ( "ROLE_ID" NUMBER(*,0) NOT NULL ENABLE, + "PRIVILEGE_ID" NUMBER(*,0) NOT NULL ENABLE, CONSTRAINT "ROLE_PRIVILEGE_PK" PRIMARY KEY ("PRIVILEGE_ID", "ROLE_ID") ENABLE ) ; -- SCENARIO -CREATE TABLE "SCENARIO" - ( "ID" NUMBER NOT NULL ENABLE, - "LIBELLE" VARCHAR2(200 CHAR) NOT NULL ENABLE, - "STRUCTURE_ID" NUMBER(*,0), - "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_DESTRUCTION" DATE, - "HISTO_DESTRUCTEUR_ID" NUMBER(*,0), - "TYPE" NUMBER(2,0) DEFAULT 0 NOT NULL ENABLE, +CREATE TABLE "SCENARIO" + ( "ID" NUMBER NOT NULL ENABLE, + "LIBELLE" VARCHAR2(200 CHAR) NOT NULL ENABLE, + "STRUCTURE_ID" NUMBER(*,0), + "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_DESTRUCTION" DATE, + "HISTO_DESTRUCTEUR_ID" NUMBER(*,0), + "TYPE" NUMBER(2,0) DEFAULT 0 NOT NULL ENABLE, CONSTRAINT "SCENARIO_PK" PRIMARY KEY ("ID") ENABLE ) ; -- SCENARIO_LIEN -CREATE TABLE "SCENARIO_LIEN" - ( "ID" NUMBER(*,0) NOT NULL ENABLE, - "SCENARIO_ID" NUMBER(*,0) NOT NULL ENABLE, - "LIEN_ID" NUMBER(*,0) NOT NULL ENABLE, - "ACTIF" NUMBER(1,0) DEFAULT 1 NOT NULL ENABLE, - "POIDS" FLOAT(126) DEFAULT 1 NOT NULL ENABLE, - "CHOIX_MINIMUM" NUMBER DEFAULT 0, - "CHOIX_MAXIMUM" NUMBER DEFAULT 0, - "SOURCE_ID" NUMBER(*,0) NOT NULL ENABLE, - "SOURCE_CODE" VARCHAR2(100 CHAR) NOT NULL ENABLE, - "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_DESTRUCTION" DATE, - "HISTO_DESTRUCTEUR_ID" NUMBER(*,0), - CONSTRAINT "SCENARIO_LIEN_PK" PRIMARY KEY ("ID") ENABLE, - CONSTRAINT "SCENARIO_LIEN_SRC_UN" UNIQUE ("SOURCE_CODE", "HISTO_DESTRUCTION") ENABLE, +CREATE TABLE "SCENARIO_LIEN" + ( "ID" NUMBER(*,0) NOT NULL ENABLE, + "SCENARIO_ID" NUMBER(*,0) NOT NULL ENABLE, + "LIEN_ID" NUMBER(*,0) NOT NULL ENABLE, + "ACTIF" NUMBER(1,0) DEFAULT 1 NOT NULL ENABLE, + "POIDS" FLOAT(126) DEFAULT 1 NOT NULL ENABLE, + "CHOIX_MINIMUM" NUMBER DEFAULT 0, + "CHOIX_MAXIMUM" NUMBER DEFAULT 0, + "SOURCE_ID" NUMBER(*,0) NOT NULL ENABLE, + "SOURCE_CODE" VARCHAR2(100 CHAR) NOT NULL ENABLE, + "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_DESTRUCTION" DATE, + "HISTO_DESTRUCTEUR_ID" NUMBER(*,0), + CONSTRAINT "SCENARIO_LIEN_PK" PRIMARY KEY ("ID") ENABLE, + CONSTRAINT "SCENARIO_LIEN_SRC_UN" UNIQUE ("SOURCE_CODE", "HISTO_DESTRUCTION") ENABLE, CONSTRAINT "SCENARIO_LIEN__UN" UNIQUE ("SCENARIO_ID", "LIEN_ID", "HISTO_DESTRUCTION") ENABLE ) ; -- SCENARIO_NOEUD -CREATE TABLE "SCENARIO_NOEUD" - ( "ID" NUMBER NOT NULL ENABLE, - "SCENARIO_ID" NUMBER NOT NULL ENABLE, - "NOEUD_ID" NUMBER(*,0) NOT NULL ENABLE, - "ASSIDUITE" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, - "SOURCE_ID" NUMBER(*,0) NOT NULL ENABLE, - "SOURCE_CODE" VARCHAR2(100 CHAR) NOT NULL ENABLE, - "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_DESTRUCTION" DATE, - "HISTO_DESTRUCTEUR_ID" NUMBER(*,0), - "HEURES" FLOAT(126), - CONSTRAINT "SCENARIO_NOEUD_PK" PRIMARY KEY ("ID") ENABLE, - CONSTRAINT "SCENARIO_NOEUD_SRC_UN" UNIQUE ("SOURCE_CODE", "HISTO_DESTRUCTION") ENABLE, +CREATE TABLE "SCENARIO_NOEUD" + ( "ID" NUMBER NOT NULL ENABLE, + "SCENARIO_ID" NUMBER NOT NULL ENABLE, + "NOEUD_ID" NUMBER(*,0) NOT NULL ENABLE, + "ASSIDUITE" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, + "SOURCE_ID" NUMBER(*,0) NOT NULL ENABLE, + "SOURCE_CODE" VARCHAR2(100 CHAR) NOT NULL ENABLE, + "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_DESTRUCTION" DATE, + "HISTO_DESTRUCTEUR_ID" NUMBER(*,0), + "HEURES" FLOAT(126), + CONSTRAINT "SCENARIO_NOEUD_PK" PRIMARY KEY ("ID") ENABLE, + CONSTRAINT "SCENARIO_NOEUD_SRC_UN" UNIQUE ("SOURCE_CODE", "HISTO_DESTRUCTION") ENABLE, CONSTRAINT "SCENARIO_NOEUD__UN" UNIQUE ("SCENARIO_ID", "NOEUD_ID", "HISTO_DESTRUCTION") ENABLE ) ; -- SCENARIO_NOEUD_EFFECTIF -CREATE TABLE "SCENARIO_NOEUD_EFFECTIF" - ( "ID" NUMBER(*,0) NOT NULL ENABLE, - "SCENARIO_NOEUD_ID" NUMBER NOT NULL ENABLE, - "TYPE_HEURES_ID" NUMBER(*,0) NOT NULL ENABLE, - "EFFECTIF" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, - "ETAPE_ID" NUMBER(*,0) NOT NULL ENABLE, +CREATE TABLE "SCENARIO_NOEUD_EFFECTIF" + ( "ID" NUMBER(*,0) NOT NULL ENABLE, + "SCENARIO_NOEUD_ID" NUMBER NOT NULL ENABLE, + "TYPE_HEURES_ID" NUMBER(*,0) NOT NULL ENABLE, + "EFFECTIF" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, + "ETAPE_ID" NUMBER(*,0) NOT NULL ENABLE, CONSTRAINT "SCENARIO_NOEUD_EFFECTIF_PK" PRIMARY KEY ("ID") ENABLE ) ; -- SCENARIO_NOEUD_SEUIL -CREATE TABLE "SCENARIO_NOEUD_SEUIL" - ( "ID" NUMBER NOT NULL ENABLE, - "SCENARIO_NOEUD_ID" NUMBER NOT NULL ENABLE, - "TYPE_INTERVENTION_ID" NUMBER(*,0) NOT NULL ENABLE, - "OUVERTURE" NUMBER DEFAULT 0, - "DEDOUBLEMENT" NUMBER DEFAULT 0, - "ASSIDUITE" FLOAT(126), +CREATE TABLE "SCENARIO_NOEUD_SEUIL" + ( "ID" NUMBER NOT NULL ENABLE, + "SCENARIO_NOEUD_ID" NUMBER NOT NULL ENABLE, + "TYPE_INTERVENTION_ID" NUMBER(*,0) NOT NULL ENABLE, + "OUVERTURE" NUMBER DEFAULT 0, + "DEDOUBLEMENT" NUMBER DEFAULT 0, + "ASSIDUITE" FLOAT(126), CONSTRAINT "SCENARIO_NOEUD_SEUIL_PK" PRIMARY KEY ("ID") ENABLE ) ; -- SERVICE -CREATE TABLE "SERVICE" - ( "ID" NUMBER(*,0) NOT NULL ENABLE, - "INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE, - "ELEMENT_PEDAGOGIQUE_ID" NUMBER(*,0), - "ETABLISSEMENT_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_DESTRUCTION" DATE, - "HISTO_DESTRUCTEUR_ID" NUMBER(*,0), - "DESCRIPTION" CLOB, - CONSTRAINT "SERVICE__UN" UNIQUE ("INTERVENANT_ID", "ELEMENT_PEDAGOGIQUE_ID", "ETABLISSEMENT_ID", "HISTO_DESTRUCTION") ENABLE, +CREATE TABLE "SERVICE" + ( "ID" NUMBER(*,0) NOT NULL ENABLE, + "INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE, + "ELEMENT_PEDAGOGIQUE_ID" NUMBER(*,0), + "ETABLISSEMENT_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_DESTRUCTION" DATE, + "HISTO_DESTRUCTEUR_ID" NUMBER(*,0), + "DESCRIPTION" CLOB, + CONSTRAINT "SERVICE__UN" UNIQUE ("INTERVENANT_ID", "ELEMENT_PEDAGOGIQUE_ID", "ETABLISSEMENT_ID", "HISTO_DESTRUCTION") ENABLE, CONSTRAINT "SERVICE_PK" PRIMARY KEY ("ID") ENABLE ) ; -- SERVICE_REFERENTIEL -CREATE TABLE "SERVICE_REFERENTIEL" - ( "ID" NUMBER(*,0) NOT NULL ENABLE, - "FONCTION_ID" NUMBER(*,0) NOT NULL ENABLE, - "INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE, - "STRUCTURE_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_DESTRUCTION" DATE, - "HISTO_DESTRUCTEUR_ID" NUMBER(*,0), - "COMMENTAIRES" VARCHAR2(256 CHAR), - "FORMATION" VARCHAR2(256 CHAR), +CREATE TABLE "SERVICE_REFERENTIEL" + ( "ID" NUMBER(*,0) NOT NULL ENABLE, + "FONCTION_ID" NUMBER(*,0) NOT NULL ENABLE, + "INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE, + "STRUCTURE_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_DESTRUCTION" DATE, + "HISTO_DESTRUCTEUR_ID" NUMBER(*,0), + "COMMENTAIRES" VARCHAR2(256 CHAR), + "FORMATION" VARCHAR2(256 CHAR), CONSTRAINT "SERVICE_REFERENTIEL_PK" PRIMARY KEY ("ID") ENABLE ) ; -- SEUIL_CHARGE -CREATE TABLE "SEUIL_CHARGE" - ( "ID" NUMBER(*,0) NOT NULL ENABLE, - "SCENARIO_ID" NUMBER(*,0) NOT NULL ENABLE, - "STRUCTURE_ID" NUMBER(*,0), - "GROUPE_TYPE_FORMATION_ID" NUMBER(*,0), - "TYPE_INTERVENTION_ID" NUMBER(*,0) NOT NULL ENABLE, - "DEDOUBLEMENT" NUMBER, - "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_CREATEUR_ID" NUMBER NOT NULL ENABLE, - "HISTO_MODIFICATEUR_ID" NUMBER NOT NULL ENABLE, - "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_DESTRUCTION" DATE, - "HISTO_DESTRUCTEUR_ID" NUMBER, - "ANNEE_ID" NUMBER(*,0) NOT NULL ENABLE, +CREATE TABLE "SEUIL_CHARGE" + ( "ID" NUMBER(*,0) NOT NULL ENABLE, + "SCENARIO_ID" NUMBER(*,0) NOT NULL ENABLE, + "STRUCTURE_ID" NUMBER(*,0), + "GROUPE_TYPE_FORMATION_ID" NUMBER(*,0), + "TYPE_INTERVENTION_ID" NUMBER(*,0) NOT NULL ENABLE, + "DEDOUBLEMENT" NUMBER, + "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_CREATEUR_ID" NUMBER NOT NULL ENABLE, + "HISTO_MODIFICATEUR_ID" NUMBER NOT NULL ENABLE, + "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_DESTRUCTION" DATE, + "HISTO_DESTRUCTEUR_ID" NUMBER, + "ANNEE_ID" NUMBER(*,0) NOT NULL ENABLE, CONSTRAINT "SEUIL_CHARGE_PK" PRIMARY KEY ("ID") ENABLE ) ; -- SOURCE -CREATE TABLE "SOURCE" - ( "ID" NUMBER(*,0) NOT NULL ENABLE, - "CODE" VARCHAR2(15 CHAR) NOT NULL ENABLE, - "LIBELLE" VARCHAR2(30 CHAR) NOT NULL ENABLE, - "IMPORTABLE" NUMBER(1,0) NOT NULL ENABLE, - CONSTRAINT "SOURCE_CODE_UN" UNIQUE ("CODE") ENABLE, +CREATE TABLE "SOURCE" + ( "ID" NUMBER(*,0) NOT NULL ENABLE, + "CODE" VARCHAR2(15 CHAR) NOT NULL ENABLE, + "LIBELLE" VARCHAR2(30 CHAR) NOT NULL ENABLE, + "IMPORTABLE" NUMBER(1,0) NOT NULL ENABLE, + CONSTRAINT "SOURCE_CODE_UN" UNIQUE ("CODE") ENABLE, CONSTRAINT "SOURCE_PK" PRIMARY KEY ("ID") ENABLE ) ; -- STATUT_INTERVENANT -CREATE TABLE "STATUT_INTERVENANT" - ( "ID" NUMBER(*,0) NOT NULL ENABLE, - "LIBELLE" VARCHAR2(128 CHAR) NOT NULL ENABLE, - "SERVICE_STATUTAIRE" FLOAT(126) NOT NULL ENABLE, - "DEPASSEMENT" NUMBER(1,0) NOT NULL ENABLE, - "PLAFOND_REFERENTIEL" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, - "MAXIMUM_HETD" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, - "TYPE_INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE, - "SOURCE_ID" NUMBER(*,0) NOT NULL ENABLE, - "SOURCE_CODE" VARCHAR2(100 CHAR) NOT NULL ENABLE, - "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_DESTRUCTION" DATE, - "HISTO_DESTRUCTEUR_ID" NUMBER(*,0), - "ORDRE" NUMBER(*,0) NOT NULL ENABLE, - "NON_AUTORISE" NUMBER(1,0) NOT NULL ENABLE, - "PEUT_SAISIR_SERVICE" NUMBER(1,0) NOT NULL ENABLE, - "PEUT_CHOISIR_DANS_DOSSIER" NUMBER(1,0) NOT NULL ENABLE, - "PEUT_SAISIR_DOSSIER" NUMBER(1,0) NOT NULL ENABLE, - "PEUT_SAISIR_MOTIF_NON_PAIEMENT" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, - "PEUT_AVOIR_CONTRAT" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, - "PEUT_SAISIR_REFERENTIEL" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, - "PLAFOND_HC_HORS_REMU_FC" FLOAT(126) DEFAULT 9999 NOT NULL ENABLE, - "PLAFOND_HC_REMU_FC" FLOAT(126) DEFAULT 13502 NOT NULL ENABLE, - "DEPASSEMENT_SERVICE_DU_SANS_HC" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, - "PEUT_CLOTURER_SAISIE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, - "TEM_BIATSS" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, - "PEUT_SAISIR_SERVICE_EXT" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, - "TEM_ATV" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, - CONSTRAINT "STATUT_INTERVENANT__UN" UNIQUE ("SOURCE_CODE") ENABLE, - CONSTRAINT "STATUT_INTERVENANT_PK" PRIMARY KEY ("ID") ENABLE, +CREATE TABLE "STATUT_INTERVENANT" + ( "ID" NUMBER(*,0) NOT NULL ENABLE, + "LIBELLE" VARCHAR2(128 CHAR) NOT NULL ENABLE, + "SERVICE_STATUTAIRE" FLOAT(126) NOT NULL ENABLE, + "DEPASSEMENT" NUMBER(1,0) NOT NULL ENABLE, + "PLAFOND_REFERENTIEL" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, + "MAXIMUM_HETD" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, + "TYPE_INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE, + "SOURCE_ID" NUMBER(*,0) NOT NULL ENABLE, + "SOURCE_CODE" VARCHAR2(100 CHAR) NOT NULL ENABLE, + "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_DESTRUCTION" DATE, + "HISTO_DESTRUCTEUR_ID" NUMBER(*,0), + "ORDRE" NUMBER(*,0) NOT NULL ENABLE, + "NON_AUTORISE" NUMBER(1,0) NOT NULL ENABLE, + "PEUT_SAISIR_SERVICE" NUMBER(1,0) NOT NULL ENABLE, + "PEUT_CHOISIR_DANS_DOSSIER" NUMBER(1,0) NOT NULL ENABLE, + "PEUT_SAISIR_DOSSIER" NUMBER(1,0) NOT NULL ENABLE, + "PEUT_SAISIR_MOTIF_NON_PAIEMENT" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, + "PEUT_AVOIR_CONTRAT" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, + "PEUT_SAISIR_REFERENTIEL" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, + "PLAFOND_HC_HORS_REMU_FC" FLOAT(126) DEFAULT 9999 NOT NULL ENABLE, + "PLAFOND_HC_REMU_FC" FLOAT(126) DEFAULT 13502 NOT NULL ENABLE, + "DEPASSEMENT_SERVICE_DU_SANS_HC" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, + "PEUT_CLOTURER_SAISIE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, + "TEM_BIATSS" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, + "PEUT_SAISIR_SERVICE_EXT" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, + "TEM_ATV" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, + CONSTRAINT "STATUT_INTERVENANT__UN" UNIQUE ("SOURCE_CODE") ENABLE, + CONSTRAINT "STATUT_INTERVENANT_PK" PRIMARY KEY ("ID") ENABLE, CONSTRAINT "STATUT_INTERVENANT_ODRE_UN" UNIQUE ("HISTO_DESTRUCTION", "ORDRE") ENABLE ) ; -- STATUT_PRIVILEGE -CREATE TABLE "STATUT_PRIVILEGE" - ( "STATUT_ID" NUMBER(*,0) NOT NULL ENABLE, - "PRIVILEGE_ID" NUMBER(*,0) NOT NULL ENABLE, +CREATE TABLE "STATUT_PRIVILEGE" + ( "STATUT_ID" NUMBER(*,0) NOT NULL ENABLE, + "PRIVILEGE_ID" NUMBER(*,0) NOT NULL ENABLE, CONSTRAINT "STATUT_PRIVILEGE_PK" PRIMARY KEY ("STATUT_ID", "PRIVILEGE_ID") ENABLE ) ; -- STRUCTURE -CREATE TABLE "STRUCTURE" - ( "ID" NUMBER(*,0) NOT NULL ENABLE, - "LIBELLE_LONG" VARCHAR2(60 CHAR) NOT NULL ENABLE, - "LIBELLE_COURT" VARCHAR2(25 CHAR) NOT NULL ENABLE, - "SOURCE_ID" NUMBER(*,0) NOT NULL ENABLE, - "SOURCE_CODE" VARCHAR2(100 CHAR), - "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_DESTRUCTION" DATE, - "HISTO_DESTRUCTEUR_ID" NUMBER(*,0), - "CONTACT_PJ" VARCHAR2(255 CHAR), - "AFF_ADRESSE_CONTRAT" NUMBER(1,0) DEFAULT 1 NOT NULL ENABLE, - "ENSEIGNEMENT" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, - "CODE" VARCHAR2(50 CHAR) NOT NULL ENABLE, - CONSTRAINT "STRUCTURE_PK" PRIMARY KEY ("ID") ENABLE, - CONSTRAINT "STRUCTURE_CODE_UN" UNIQUE ("CODE", "HISTO_DESTRUCTION") ENABLE, +CREATE TABLE "STRUCTURE" + ( "ID" NUMBER(*,0) NOT NULL ENABLE, + "LIBELLE_LONG" VARCHAR2(60 CHAR) NOT NULL ENABLE, + "LIBELLE_COURT" VARCHAR2(25 CHAR) NOT NULL ENABLE, + "SOURCE_ID" NUMBER(*,0) NOT NULL ENABLE, + "SOURCE_CODE" VARCHAR2(100 CHAR), + "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_DESTRUCTION" DATE, + "HISTO_DESTRUCTEUR_ID" NUMBER(*,0), + "CONTACT_PJ" VARCHAR2(255 CHAR), + "AFF_ADRESSE_CONTRAT" NUMBER(1,0) DEFAULT 1 NOT NULL ENABLE, + "ENSEIGNEMENT" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, + "CODE" VARCHAR2(50 CHAR) NOT NULL ENABLE, + CONSTRAINT "STRUCTURE_PK" PRIMARY KEY ("ID") ENABLE, + CONSTRAINT "STRUCTURE_CODE_UN" UNIQUE ("CODE", "HISTO_DESTRUCTION") ENABLE, CONSTRAINT "STRUCTURE_SOURCE_CODE_UN" UNIQUE ("SOURCE_CODE", "HISTO_DESTRUCTION") ENABLE ) ; -- SYNC_LOG -CREATE TABLE "SYNC_LOG" - ( "ID" NUMBER(*,0) NOT NULL ENABLE, - "DATE_SYNC" TIMESTAMP (6) NOT NULL ENABLE, - "MESSAGE" CLOB NOT NULL ENABLE, - "SOURCE_CODE" VARCHAR2(200 CHAR), - "TABLE_NAME" VARCHAR2(30 CHAR), +CREATE TABLE "SYNC_LOG" + ( "ID" NUMBER(*,0) NOT NULL ENABLE, + "DATE_SYNC" TIMESTAMP (6) NOT NULL ENABLE, + "MESSAGE" CLOB NOT NULL ENABLE, + "SOURCE_CODE" VARCHAR2(200 CHAR), + "TABLE_NAME" VARCHAR2(30 CHAR), CONSTRAINT "SYNC_LOG_PK" PRIMARY KEY ("ID") ENABLE ) ; -- TAUX_HORAIRE_HETD -CREATE TABLE "TAUX_HORAIRE_HETD" - ( "ID" NUMBER(*,0) NOT NULL ENABLE, - "VALEUR" FLOAT(126) NOT NULL ENABLE, - "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_DESTRUCTION" DATE, - "HISTO_DESTRUCTEUR_ID" NUMBER(*,0), +CREATE TABLE "TAUX_HORAIRE_HETD" + ( "ID" NUMBER(*,0) NOT NULL ENABLE, + "VALEUR" FLOAT(126) NOT NULL ENABLE, + "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_DESTRUCTION" DATE, + "HISTO_DESTRUCTEUR_ID" NUMBER(*,0), CONSTRAINT "TAUX_HORAIRE_HETD_PK" PRIMARY KEY ("ID") ENABLE ) ; -- TBL -CREATE TABLE "TBL" - ( "TBL_NAME" VARCHAR2(30 CHAR) NOT NULL ENABLE, - "TABLE_NAME" VARCHAR2(30 CHAR), - "VIEW_NAME" VARCHAR2(30 CHAR), - "SEQUENCE_NAME" VARCHAR2(30 CHAR), - "CONSTRAINT_NAME" VARCHAR2(30 CHAR), - "CUSTOM_CALCUL_PROC" VARCHAR2(100 CHAR), - "ORDRE" NUMBER DEFAULT 1 NOT NULL ENABLE, +CREATE TABLE "TBL" + ( "TBL_NAME" VARCHAR2(30 CHAR) NOT NULL ENABLE, + "TABLE_NAME" VARCHAR2(30 CHAR), + "VIEW_NAME" VARCHAR2(30 CHAR), + "SEQUENCE_NAME" VARCHAR2(30 CHAR), + "CONSTRAINT_NAME" VARCHAR2(30 CHAR), + "CUSTOM_CALCUL_PROC" VARCHAR2(100 CHAR), + "ORDRE" NUMBER DEFAULT 1 NOT NULL ENABLE, CONSTRAINT "TBL_PK" PRIMARY KEY ("TBL_NAME") ENABLE ) ; -- TBL_AGREMENT -CREATE TABLE "TBL_AGREMENT" - ( "ID" NUMBER(*,0) NOT NULL ENABLE, - "ANNEE_ID" NUMBER(*,0) NOT NULL ENABLE, - "TYPE_AGREMENT_ID" NUMBER(*,0) NOT NULL ENABLE, - "INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE, - "STRUCTURE_ID" NUMBER(*,0), - "OBLIGATOIRE" NUMBER(1,0) NOT NULL ENABLE, - "AGREMENT_ID" NUMBER(*,0), - "TO_DELETE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, - CONSTRAINT "TBL_AGREMENT_PK" PRIMARY KEY ("ID") ENABLE, +CREATE TABLE "TBL_AGREMENT" + ( "ID" NUMBER(*,0) NOT NULL ENABLE, + "ANNEE_ID" NUMBER(*,0) NOT NULL ENABLE, + "TYPE_AGREMENT_ID" NUMBER(*,0) NOT NULL ENABLE, + "INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE, + "STRUCTURE_ID" NUMBER(*,0), + "OBLIGATOIRE" NUMBER(1,0) NOT NULL ENABLE, + "AGREMENT_ID" NUMBER(*,0), + "TO_DELETE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, + CONSTRAINT "TBL_AGREMENT_PK" PRIMARY KEY ("ID") ENABLE, CONSTRAINT "TBL_AGREMENT__UN" UNIQUE ("TYPE_AGREMENT_ID", "INTERVENANT_ID", "STRUCTURE_ID", "TO_DELETE") ENABLE ) ; ALTER TABLE TBL_AGREMENT NOLOGGING; -- TBL_CHARGENS -CREATE TABLE "TBL_CHARGENS" - ( "ID" NUMBER(*,0) NOT NULL ENABLE, - "ANNEE_ID" NUMBER(*,0) NOT NULL ENABLE, - "NOEUD_ID" NUMBER(*,0) NOT NULL ENABLE, - "SCENARIO_ID" NUMBER(*,0) NOT NULL ENABLE, - "TYPE_HEURES_ID" NUMBER(*,0) NOT NULL ENABLE, - "TYPE_INTERVENTION_ID" NUMBER(*,0) NOT NULL ENABLE, - "ELEMENT_PEDAGOGIQUE_ID" NUMBER(*,0) NOT NULL ENABLE, - "ETAPE_ID" NUMBER(*,0) NOT NULL ENABLE, - "ETAPE_ENS_ID" NUMBER(*,0) NOT NULL ENABLE, - "STRUCTURE_ID" NUMBER(*,0) NOT NULL ENABLE, - "GROUPE_TYPE_FORMATION_ID" NUMBER(*,0) NOT NULL ENABLE, - "OUVERTURE" FLOAT(126) NOT NULL ENABLE, - "DEDOUBLEMENT" FLOAT(126) NOT NULL ENABLE, - "ASSIDUITE" FLOAT(126) NOT NULL ENABLE, - "EFFECTIF" FLOAT(126) NOT NULL ENABLE, - "HEURES_ENS" FLOAT(126) NOT NULL ENABLE, - "GROUPES" FLOAT(126) NOT NULL ENABLE, - "HEURES" FLOAT(126) NOT NULL ENABLE, - "HETD" FLOAT(126) NOT NULL ENABLE, - "TO_DELETE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, - CONSTRAINT "TBL_CHARGENS_PK" PRIMARY KEY ("ID") ENABLE, +CREATE TABLE "TBL_CHARGENS" + ( "ID" NUMBER(*,0) NOT NULL ENABLE, + "ANNEE_ID" NUMBER(*,0) NOT NULL ENABLE, + "NOEUD_ID" NUMBER(*,0) NOT NULL ENABLE, + "SCENARIO_ID" NUMBER(*,0) NOT NULL ENABLE, + "TYPE_HEURES_ID" NUMBER(*,0) NOT NULL ENABLE, + "TYPE_INTERVENTION_ID" NUMBER(*,0) NOT NULL ENABLE, + "ELEMENT_PEDAGOGIQUE_ID" NUMBER(*,0) NOT NULL ENABLE, + "ETAPE_ID" NUMBER(*,0) NOT NULL ENABLE, + "ETAPE_ENS_ID" NUMBER(*,0) NOT NULL ENABLE, + "STRUCTURE_ID" NUMBER(*,0) NOT NULL ENABLE, + "GROUPE_TYPE_FORMATION_ID" NUMBER(*,0) NOT NULL ENABLE, + "OUVERTURE" FLOAT(126) NOT NULL ENABLE, + "DEDOUBLEMENT" FLOAT(126) NOT NULL ENABLE, + "ASSIDUITE" FLOAT(126) NOT NULL ENABLE, + "EFFECTIF" FLOAT(126) NOT NULL ENABLE, + "HEURES_ENS" FLOAT(126) NOT NULL ENABLE, + "GROUPES" FLOAT(126) NOT NULL ENABLE, + "HEURES" FLOAT(126) NOT NULL ENABLE, + "HETD" FLOAT(126) NOT NULL ENABLE, + "TO_DELETE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, + CONSTRAINT "TBL_CHARGENS_PK" PRIMARY KEY ("ID") ENABLE, CONSTRAINT "TBL_CHARGENS__UN" UNIQUE ("ANNEE_ID", "NOEUD_ID", "SCENARIO_ID", "TYPE_HEURES_ID", "TYPE_INTERVENTION_ID", "ELEMENT_PEDAGOGIQUE_ID", "ETAPE_ID", "ETAPE_ENS_ID", "STRUCTURE_ID", "GROUPE_TYPE_FORMATION_ID") ENABLE ) ; ALTER TABLE TBL_CHARGENS NOLOGGING; -- TBL_CHARGENS_SEUILS_DEF -CREATE TABLE "TBL_CHARGENS_SEUILS_DEF" - ( "ID" NUMBER(*,0) NOT NULL ENABLE, - "ANNEE_ID" NUMBER(*,0) NOT NULL ENABLE, - "SCENARIO_ID" NUMBER(*,0) NOT NULL ENABLE, - "STRUCTURE_ID" NUMBER(*,0) NOT NULL ENABLE, - "GROUPE_TYPE_FORMATION_ID" NUMBER(*,0) NOT NULL ENABLE, - "TYPE_INTERVENTION_ID" NUMBER(*,0) NOT NULL ENABLE, - "DEDOUBLEMENT" FLOAT(126) NOT NULL ENABLE, - "TO_DELETE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, - CONSTRAINT "TBL_CHARGENS_SEUILS_DEF_PK" PRIMARY KEY ("ID") ENABLE, +CREATE TABLE "TBL_CHARGENS_SEUILS_DEF" + ( "ID" NUMBER(*,0) NOT NULL ENABLE, + "ANNEE_ID" NUMBER(*,0) NOT NULL ENABLE, + "SCENARIO_ID" NUMBER(*,0) NOT NULL ENABLE, + "STRUCTURE_ID" NUMBER(*,0) NOT NULL ENABLE, + "GROUPE_TYPE_FORMATION_ID" NUMBER(*,0) NOT NULL ENABLE, + "TYPE_INTERVENTION_ID" NUMBER(*,0) NOT NULL ENABLE, + "DEDOUBLEMENT" FLOAT(126) NOT NULL ENABLE, + "TO_DELETE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, + CONSTRAINT "TBL_CHARGENS_SEUILS_DEF_PK" PRIMARY KEY ("ID") ENABLE, CONSTRAINT "TBL_CHARGENS_SEUILS_DEF__UN" UNIQUE ("SCENARIO_ID", "TYPE_INTERVENTION_ID", "STRUCTURE_ID", "GROUPE_TYPE_FORMATION_ID", "ANNEE_ID") ENABLE ) ; ALTER TABLE TBL_CHARGENS_SEUILS_DEF NOLOGGING; -- TBL_CLOTURE_REALISE -CREATE TABLE "TBL_CLOTURE_REALISE" - ( "ID" NUMBER(*,0) NOT NULL ENABLE, - "ANNEE_ID" NUMBER(*,0) NOT NULL ENABLE, - "INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE, - "PEUT_CLOTURER_SAISIE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, - "CLOTURE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, - "TO_DELETE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, - CONSTRAINT "TBL_CLOTURE_REALISE__UN" UNIQUE ("INTERVENANT_ID", "TO_DELETE") ENABLE, +CREATE TABLE "TBL_CLOTURE_REALISE" + ( "ID" NUMBER(*,0) NOT NULL ENABLE, + "ANNEE_ID" NUMBER(*,0) NOT NULL ENABLE, + "INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE, + "PEUT_CLOTURER_SAISIE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, + "CLOTURE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, + "TO_DELETE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, + CONSTRAINT "TBL_CLOTURE_REALISE__UN" UNIQUE ("INTERVENANT_ID", "TO_DELETE") ENABLE, CONSTRAINT "TBL_CLOTURE_REALISE_PK" PRIMARY KEY ("ID") ENABLE ) ; ALTER TABLE TBL_CLOTURE_REALISE NOLOGGING; -- TBL_CONTRAT -CREATE TABLE "TBL_CONTRAT" - ( "ID" NUMBER(*,0) NOT NULL ENABLE, - "ANNEE_ID" NUMBER(*,0) NOT NULL ENABLE, - "INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE, - "PEUT_AVOIR_CONTRAT" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, - "STRUCTURE_ID" NUMBER(*,0), - "NBVH" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, - "EDITE" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, - "SIGNE" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, - "TO_DELETE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, - CONSTRAINT "TBL_CONTRAT__UN" UNIQUE ("INTERVENANT_ID", "STRUCTURE_ID", "TO_DELETE") ENABLE, +CREATE TABLE "TBL_CONTRAT" + ( "ID" NUMBER(*,0) NOT NULL ENABLE, + "ANNEE_ID" NUMBER(*,0) NOT NULL ENABLE, + "INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE, + "PEUT_AVOIR_CONTRAT" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, + "STRUCTURE_ID" NUMBER(*,0), + "NBVH" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, + "EDITE" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, + "SIGNE" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, + "TO_DELETE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, + CONSTRAINT "TBL_CONTRAT__UN" UNIQUE ("INTERVENANT_ID", "STRUCTURE_ID", "TO_DELETE") ENABLE, CONSTRAINT "TBL_CONTRAT_PK" PRIMARY KEY ("ID") ENABLE ) ; ALTER TABLE TBL_CONTRAT NOLOGGING; -- TBL_DEMS -CREATE TABLE "TBL_DEMS" - ( "ID" NUMBER(*,0) NOT NULL ENABLE, - "TBL_NAME" VARCHAR2(30 CHAR) NOT NULL ENABLE, - "C1" VARCHAR2(30 CHAR), - "V1" VARCHAR2(80 CHAR), - "C2" VARCHAR2(30 CHAR), - "V2" VARCHAR2(80 CHAR), - "C3" VARCHAR2(30 CHAR), - "V3" VARCHAR2(80 CHAR), - "C4" VARCHAR2(30 CHAR), - "V4" VARCHAR2(80 CHAR), - "C5" VARCHAR2(30 CHAR), - "V5" VARCHAR2(80 CHAR), +CREATE TABLE "TBL_DEMS" + ( "ID" NUMBER(*,0) NOT NULL ENABLE, + "TBL_NAME" VARCHAR2(30 CHAR) NOT NULL ENABLE, + "C1" VARCHAR2(30 CHAR), + "V1" VARCHAR2(80 CHAR), + "C2" VARCHAR2(30 CHAR), + "V2" VARCHAR2(80 CHAR), + "C3" VARCHAR2(30 CHAR), + "V3" VARCHAR2(80 CHAR), + "C4" VARCHAR2(30 CHAR), + "V4" VARCHAR2(80 CHAR), + "C5" VARCHAR2(30 CHAR), + "V5" VARCHAR2(80 CHAR), "SQLCOND" VARCHAR2(3500 CHAR) ) ; ALTER TABLE TBL_DEMS NOLOGGING; -- TBL_DMEP_LIQUIDATION -CREATE TABLE "TBL_DMEP_LIQUIDATION" - ( "ID" NUMBER(*,0) NOT NULL ENABLE, - "ANNEE_ID" NUMBER(*,0) NOT NULL ENABLE, - "TYPE_RESSOURCE_ID" NUMBER(*,0) NOT NULL ENABLE, - "STRUCTURE_ID" NUMBER(*,0) NOT NULL ENABLE, - "HEURES" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, - "TO_DELETE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, - CONSTRAINT "TBL_DMEP_LIQUIDATION_PK" PRIMARY KEY ("ID") ENABLE, +CREATE TABLE "TBL_DMEP_LIQUIDATION" + ( "ID" NUMBER(*,0) NOT NULL ENABLE, + "ANNEE_ID" NUMBER(*,0) NOT NULL ENABLE, + "TYPE_RESSOURCE_ID" NUMBER(*,0) NOT NULL ENABLE, + "STRUCTURE_ID" NUMBER(*,0) NOT NULL ENABLE, + "HEURES" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, + "TO_DELETE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, + CONSTRAINT "TBL_DMEP_LIQUIDATION_PK" PRIMARY KEY ("ID") ENABLE, CONSTRAINT "TBL_DMEP_LIQUIDATION__UN" UNIQUE ("ANNEE_ID", "TYPE_RESSOURCE_ID", "STRUCTURE_ID", "TO_DELETE") ENABLE ) ; ALTER TABLE TBL_DMEP_LIQUIDATION NOLOGGING; -- TBL_DOSSIER -CREATE TABLE "TBL_DOSSIER" - ( "ID" NUMBER(*,0) NOT NULL ENABLE, - "ANNEE_ID" NUMBER(*,0) NOT NULL ENABLE, - "INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE, - "PEUT_SAISIR_DOSSIER" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, - "DOSSIER_ID" NUMBER(*,0), - "VALIDATION_ID" NUMBER(*,0), - "TO_DELETE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, - CONSTRAINT "TBL_DOSSIER__UN" UNIQUE ("INTERVENANT_ID", "TO_DELETE") ENABLE, +CREATE TABLE "TBL_DOSSIER" + ( "ID" NUMBER(*,0) NOT NULL ENABLE, + "ANNEE_ID" NUMBER(*,0) NOT NULL ENABLE, + "INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE, + "PEUT_SAISIR_DOSSIER" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, + "DOSSIER_ID" NUMBER(*,0), + "VALIDATION_ID" NUMBER(*,0), + "TO_DELETE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, + CONSTRAINT "TBL_DOSSIER__UN" UNIQUE ("INTERVENANT_ID", "TO_DELETE") ENABLE, CONSTRAINT "TBL_DOSSIER_PK" PRIMARY KEY ("ID") ENABLE ) ; ALTER TABLE TBL_DOSSIER NOLOGGING; -- TBL_LIEN -CREATE TABLE "TBL_LIEN" - ( "ID" NUMBER(*,0) NOT NULL ENABLE, - "LIEN_ID" NUMBER(*,0) NOT NULL ENABLE, - "SCENARIO_ID" NUMBER NOT NULL ENABLE, - "SCENARIO_LIEN_ID" NUMBER(*,0), - "NOEUD_SUP_ID" NUMBER(*,0) NOT NULL ENABLE, - "NOEUD_INF_ID" NUMBER(*,0) NOT NULL ENABLE, - "STRUCTURE_ID" NUMBER(*,0), - "ACTIF" NUMBER(1,0) DEFAULT 1 NOT NULL ENABLE, - "POIDS" NUMBER DEFAULT 1 NOT NULL ENABLE, - "CHOIX_MINIMUM" NUMBER, - "CHOIX_MAXIMUM" NUMBER, - "NB_CHOIX" NUMBER DEFAULT 1 NOT NULL ENABLE, - "TOTAL_POIDS" FLOAT(126) DEFAULT 1 NOT NULL ENABLE, - "TO_DELETE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, - "MAX_POIDS" NUMBER DEFAULT 1 NOT NULL ENABLE, +CREATE TABLE "TBL_LIEN" + ( "ID" NUMBER(*,0) NOT NULL ENABLE, + "LIEN_ID" NUMBER(*,0) NOT NULL ENABLE, + "SCENARIO_ID" NUMBER NOT NULL ENABLE, + "SCENARIO_LIEN_ID" NUMBER(*,0), + "NOEUD_SUP_ID" NUMBER(*,0) NOT NULL ENABLE, + "NOEUD_INF_ID" NUMBER(*,0) NOT NULL ENABLE, + "STRUCTURE_ID" NUMBER(*,0), + "ACTIF" NUMBER(1,0) DEFAULT 1 NOT NULL ENABLE, + "POIDS" NUMBER DEFAULT 1 NOT NULL ENABLE, + "CHOIX_MINIMUM" NUMBER, + "CHOIX_MAXIMUM" NUMBER, + "NB_CHOIX" NUMBER DEFAULT 1 NOT NULL ENABLE, + "TOTAL_POIDS" FLOAT(126) DEFAULT 1 NOT NULL ENABLE, + "TO_DELETE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, + "MAX_POIDS" NUMBER DEFAULT 1 NOT NULL ENABLE, CONSTRAINT "TBL_LIEN_PK" PRIMARY KEY ("ID") ENABLE ) ; ALTER TABLE TBL_LIEN NOLOGGING; -- TBL_PAIEMENT -CREATE TABLE "TBL_PAIEMENT" - ( "ID" NUMBER(*,0) NOT NULL ENABLE, - "ANNEE_ID" NUMBER(*,0) NOT NULL ENABLE, - "INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE, - "STRUCTURE_ID" NUMBER(*,0) NOT NULL ENABLE, - "MISE_EN_PAIEMENT_ID" NUMBER(*,0), - "PERIODE_PAIEMENT_ID" NUMBER(*,0), - "TO_DELETE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, - "HEURES_A_PAYER" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, - "HEURES_A_PAYER_POND" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, - "HEURES_DEMANDEES" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, - "HEURES_PAYEES" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, - "FORMULE_RES_SERVICE_ID" NUMBER(*,0), - "FORMULE_RES_SERVICE_REF_ID" NUMBER(*,0), - CONSTRAINT "TBL_PAIEMENT_PK" PRIMARY KEY ("ID") ENABLE, +CREATE TABLE "TBL_PAIEMENT" + ( "ID" NUMBER(*,0) NOT NULL ENABLE, + "ANNEE_ID" NUMBER(*,0) NOT NULL ENABLE, + "INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE, + "STRUCTURE_ID" NUMBER(*,0) NOT NULL ENABLE, + "MISE_EN_PAIEMENT_ID" NUMBER(*,0), + "PERIODE_PAIEMENT_ID" NUMBER(*,0), + "TO_DELETE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, + "HEURES_A_PAYER" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, + "HEURES_A_PAYER_POND" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, + "HEURES_DEMANDEES" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, + "HEURES_PAYEES" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, + "FORMULE_RES_SERVICE_ID" NUMBER(*,0), + "FORMULE_RES_SERVICE_REF_ID" NUMBER(*,0), + CONSTRAINT "TBL_PAIEMENT_PK" PRIMARY KEY ("ID") ENABLE, CONSTRAINT "TBL_PAIEMENT__UN" UNIQUE ("INTERVENANT_ID", "TO_DELETE", "MISE_EN_PAIEMENT_ID", "FORMULE_RES_SERVICE_ID", "FORMULE_RES_SERVICE_REF_ID") ENABLE ) ; ALTER TABLE TBL_PAIEMENT NOLOGGING; -- TBL_PIECE_JOINTE -CREATE TABLE "TBL_PIECE_JOINTE" - ( "ID" NUMBER(*,0) NOT NULL ENABLE, - "ANNEE_ID" NUMBER(*,0) NOT NULL ENABLE, - "TYPE_PIECE_JOINTE_ID" NUMBER(*,0) NOT NULL ENABLE, - "INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE, - "DEMANDEE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, - "FOURNIE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, - "VALIDEE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, - "TO_DELETE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, - "HEURES_POUR_SEUIL" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, - CONSTRAINT "TBL_PIECE_JOINTE__UN" UNIQUE ("TYPE_PIECE_JOINTE_ID", "INTERVENANT_ID", "TO_DELETE") ENABLE, +CREATE TABLE "TBL_PIECE_JOINTE" + ( "ID" NUMBER(*,0) NOT NULL ENABLE, + "ANNEE_ID" NUMBER(*,0) NOT NULL ENABLE, + "TYPE_PIECE_JOINTE_ID" NUMBER(*,0) NOT NULL ENABLE, + "INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE, + "DEMANDEE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, + "FOURNIE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, + "VALIDEE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, + "TO_DELETE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, + "HEURES_POUR_SEUIL" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, + CONSTRAINT "TBL_PIECE_JOINTE__UN" UNIQUE ("TYPE_PIECE_JOINTE_ID", "INTERVENANT_ID", "TO_DELETE") ENABLE, CONSTRAINT "TBL_PIECE_JOINTE_PK" PRIMARY KEY ("ID") ENABLE ) ; ALTER TABLE TBL_PIECE_JOINTE NOLOGGING; -- TBL_PIECE_JOINTE_DEMANDE -CREATE TABLE "TBL_PIECE_JOINTE_DEMANDE" - ( "ID" NUMBER(*,0) NOT NULL ENABLE, - "ANNEE_ID" NUMBER(*,0) NOT NULL ENABLE, - "TYPE_PIECE_JOINTE_ID" NUMBER(*,0) NOT NULL ENABLE, - "INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE, - "TO_DELETE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, - "HEURES_POUR_SEUIL" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, - CONSTRAINT "TBL_PIECE_JOINTE_DEMANDE__UN" UNIQUE ("TYPE_PIECE_JOINTE_ID", "INTERVENANT_ID", "TO_DELETE") ENABLE, +CREATE TABLE "TBL_PIECE_JOINTE_DEMANDE" + ( "ID" NUMBER(*,0) NOT NULL ENABLE, + "ANNEE_ID" NUMBER(*,0) NOT NULL ENABLE, + "TYPE_PIECE_JOINTE_ID" NUMBER(*,0) NOT NULL ENABLE, + "INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE, + "TO_DELETE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, + "HEURES_POUR_SEUIL" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, + CONSTRAINT "TBL_PIECE_JOINTE_DEMANDE__UN" UNIQUE ("TYPE_PIECE_JOINTE_ID", "INTERVENANT_ID", "TO_DELETE") ENABLE, CONSTRAINT "TBL_PIECE_JOINTE_DEMANDE_PK" PRIMARY KEY ("ID") ENABLE ) ; ALTER TABLE TBL_PIECE_JOINTE_DEMANDE NOLOGGING; -- TBL_PIECE_JOINTE_FOURNIE -CREATE TABLE "TBL_PIECE_JOINTE_FOURNIE" - ( "ID" NUMBER(*,0) NOT NULL ENABLE, - "ANNEE_ID" NUMBER(*,0) NOT NULL ENABLE, - "TYPE_PIECE_JOINTE_ID" NUMBER(*,0) NOT NULL ENABLE, - "INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE, - "VALIDATION_ID" NUMBER(*,0), - "FICHIER_ID" NUMBER(*,0), - "TO_DELETE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, - "PIECE_JOINTE_ID" NUMBER(*,0) NOT NULL ENABLE, - CONSTRAINT "TBL_PIECE_JOINTE_FOURNIE_PK" PRIMARY KEY ("ID") ENABLE, +CREATE TABLE "TBL_PIECE_JOINTE_FOURNIE" + ( "ID" NUMBER(*,0) NOT NULL ENABLE, + "ANNEE_ID" NUMBER(*,0) NOT NULL ENABLE, + "TYPE_PIECE_JOINTE_ID" NUMBER(*,0) NOT NULL ENABLE, + "INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE, + "VALIDATION_ID" NUMBER(*,0), + "FICHIER_ID" NUMBER(*,0), + "TO_DELETE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, + "PIECE_JOINTE_ID" NUMBER(*,0) NOT NULL ENABLE, + CONSTRAINT "TBL_PIECE_JOINTE_FOURNIE_PK" PRIMARY KEY ("ID") ENABLE, CONSTRAINT "TBL_PIECE_JOINTE_FOURNIE__UN" UNIQUE ("TYPE_PIECE_JOINTE_ID", "INTERVENANT_ID", "VALIDATION_ID", "FICHIER_ID") ENABLE ) ; ALTER TABLE TBL_PIECE_JOINTE_FOURNIE NOLOGGING; -- TBL_SERVICE -CREATE TABLE "TBL_SERVICE" - ( "ID" NUMBER(*,0) NOT NULL ENABLE, - "ANNEE_ID" NUMBER(*,0) NOT NULL ENABLE, - "INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE, - "PEUT_SAISIR_SERVICE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, - "TYPE_VOLUME_HORAIRE_ID" NUMBER(*,0), - "STRUCTURE_ID" NUMBER(*,0), - "NBVH" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, - "VALIDE" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, - "TO_DELETE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, - "ELEMENT_PEDAGOGIQUE_ID" NUMBER(*,0), - "ELEMENT_PEDAGOGIQUE_PERIODE_ID" NUMBER(*,0), - "ETAPE_ID" NUMBER(*,0), - "ELEMENT_PEDAGOGIQUE_HISTO" NUMBER(1,0) DEFAULT 1 NOT NULL ENABLE, - "ETAPE_HISTO" NUMBER(1,0) DEFAULT 1 NOT NULL ENABLE, - "HAS_HEURES_MAUVAISE_PERIODE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, - "SERVICE_ID" NUMBER(*,0) NOT NULL ENABLE, - "INTERVENANT_STRUCTURE_ID" NUMBER(*,0) NOT NULL ENABLE, - "TYPE_INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE, - "TYPE_INTERVENANT_CODE" VARCHAR2(5 CHAR) NOT NULL ENABLE, - "TYPE_VOLUME_HORAIRE_CODE" VARCHAR2(15 CHAR), - "HEURES" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, - CONSTRAINT "TBL_SERVICE__UN" UNIQUE ("SERVICE_ID", "TYPE_VOLUME_HORAIRE_ID", "TO_DELETE") ENABLE, +CREATE TABLE "TBL_SERVICE" + ( "ID" NUMBER(*,0) NOT NULL ENABLE, + "ANNEE_ID" NUMBER(*,0) NOT NULL ENABLE, + "INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE, + "PEUT_SAISIR_SERVICE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, + "TYPE_VOLUME_HORAIRE_ID" NUMBER(*,0), + "STRUCTURE_ID" NUMBER(*,0), + "NBVH" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, + "VALIDE" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, + "TO_DELETE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, + "ELEMENT_PEDAGOGIQUE_ID" NUMBER(*,0), + "ELEMENT_PEDAGOGIQUE_PERIODE_ID" NUMBER(*,0), + "ETAPE_ID" NUMBER(*,0), + "ELEMENT_PEDAGOGIQUE_HISTO" NUMBER(1,0) DEFAULT 1 NOT NULL ENABLE, + "ETAPE_HISTO" NUMBER(1,0) DEFAULT 1 NOT NULL ENABLE, + "HAS_HEURES_MAUVAISE_PERIODE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, + "SERVICE_ID" NUMBER(*,0) NOT NULL ENABLE, + "INTERVENANT_STRUCTURE_ID" NUMBER(*,0) NOT NULL ENABLE, + "TYPE_INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE, + "TYPE_INTERVENANT_CODE" VARCHAR2(5 CHAR) NOT NULL ENABLE, + "TYPE_VOLUME_HORAIRE_CODE" VARCHAR2(15 CHAR), + "HEURES" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, + CONSTRAINT "TBL_SERVICE__UN" UNIQUE ("SERVICE_ID", "TYPE_VOLUME_HORAIRE_ID", "TO_DELETE") ENABLE, CONSTRAINT "TBL_SERVICE_PK" PRIMARY KEY ("ID") ENABLE ) ; ALTER TABLE TBL_SERVICE NOLOGGING; -- TBL_SERVICE_REFERENTIEL -CREATE TABLE "TBL_SERVICE_REFERENTIEL" - ( "ID" NUMBER(*,0) NOT NULL ENABLE, - "ANNEE_ID" NUMBER(*,0) NOT NULL ENABLE, - "INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE, - "PEUT_SAISIR_SERVICE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, - "TYPE_VOLUME_HORAIRE_ID" NUMBER(*,0), - "STRUCTURE_ID" NUMBER(*,0), - "NBVH" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, - "VALIDE" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, - "TO_DELETE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, - CONSTRAINT "TBL_SERVICE_REFERENTIEL_PK" PRIMARY KEY ("ID") ENABLE, +CREATE TABLE "TBL_SERVICE_REFERENTIEL" + ( "ID" NUMBER(*,0) NOT NULL ENABLE, + "ANNEE_ID" NUMBER(*,0) NOT NULL ENABLE, + "INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE, + "PEUT_SAISIR_SERVICE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, + "TYPE_VOLUME_HORAIRE_ID" NUMBER(*,0), + "STRUCTURE_ID" NUMBER(*,0), + "NBVH" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, + "VALIDE" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, + "TO_DELETE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, + CONSTRAINT "TBL_SERVICE_REFERENTIEL_PK" PRIMARY KEY ("ID") ENABLE, CONSTRAINT "TBL_SERVICE_REFERENTIEL__UN" UNIQUE ("INTERVENANT_ID", "TYPE_VOLUME_HORAIRE_ID", "STRUCTURE_ID", "TO_DELETE") ENABLE ) ; ALTER TABLE TBL_SERVICE_REFERENTIEL NOLOGGING; -- TBL_SERVICE_SAISIE -CREATE TABLE "TBL_SERVICE_SAISIE" - ( "ID" NUMBER(*,0) NOT NULL ENABLE, - "ANNEE_ID" NUMBER(*,0) NOT NULL ENABLE, - "INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE, - "PEUT_SAISIR_SERVICE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, - "PEUT_SAISIR_REFERENTIEL" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, - "HEURES_SERVICE_PREV" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, - "HEURES_REFERENTIEL_PREV" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, - "HEURES_SERVICE_REAL" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, - "HEURES_REFERENTIEL_REAL" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, - "TO_DELETE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, - CONSTRAINT "TBL_SERVICE_SAISIE__UN" UNIQUE ("INTERVENANT_ID", "TO_DELETE") ENABLE, +CREATE TABLE "TBL_SERVICE_SAISIE" + ( "ID" NUMBER(*,0) NOT NULL ENABLE, + "ANNEE_ID" NUMBER(*,0) NOT NULL ENABLE, + "INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE, + "PEUT_SAISIR_SERVICE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, + "PEUT_SAISIR_REFERENTIEL" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, + "HEURES_SERVICE_PREV" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, + "HEURES_REFERENTIEL_PREV" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, + "HEURES_SERVICE_REAL" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, + "HEURES_REFERENTIEL_REAL" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, + "TO_DELETE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, + CONSTRAINT "TBL_SERVICE_SAISIE__UN" UNIQUE ("INTERVENANT_ID", "TO_DELETE") ENABLE, CONSTRAINT "TBL_SERVICE_SAISIE_PK" PRIMARY KEY ("ID") ENABLE ) ; ALTER TABLE TBL_SERVICE_SAISIE NOLOGGING; -- TBL_VALIDATION_ENSEIGNEMENT -CREATE TABLE "TBL_VALIDATION_ENSEIGNEMENT" - ( "ID" NUMBER(*,0) NOT NULL ENABLE, - "ANNEE_ID" NUMBER(*,0) NOT NULL ENABLE, - "INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE, - "STRUCTURE_ID" NUMBER(*,0) NOT NULL ENABLE, - "TYPE_VOLUME_HORAIRE_ID" NUMBER(*,0) NOT NULL ENABLE, - "SERVICE_ID" NUMBER(*,0) NOT NULL ENABLE, - "VALIDATION_ID" NUMBER(*,0), - "TO_DELETE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, - "VOLUME_HORAIRE_ID" NUMBER(*,0) NOT NULL ENABLE, - CONSTRAINT "TBL_VALIDATION_ENSEIGNEMENT_PK" PRIMARY KEY ("ID") ENABLE, +CREATE TABLE "TBL_VALIDATION_ENSEIGNEMENT" + ( "ID" NUMBER(*,0) NOT NULL ENABLE, + "ANNEE_ID" NUMBER(*,0) NOT NULL ENABLE, + "INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE, + "STRUCTURE_ID" NUMBER(*,0) NOT NULL ENABLE, + "TYPE_VOLUME_HORAIRE_ID" NUMBER(*,0) NOT NULL ENABLE, + "SERVICE_ID" NUMBER(*,0) NOT NULL ENABLE, + "VALIDATION_ID" NUMBER(*,0), + "TO_DELETE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, + "VOLUME_HORAIRE_ID" NUMBER(*,0) NOT NULL ENABLE, + CONSTRAINT "TBL_VALIDATION_ENSEIGNEMENT_PK" PRIMARY KEY ("ID") ENABLE, CONSTRAINT "TBL_VALIDATION_ENSEIGNEMENT_UN" UNIQUE ("INTERVENANT_ID", "STRUCTURE_ID", "TYPE_VOLUME_HORAIRE_ID", "SERVICE_ID", "VOLUME_HORAIRE_ID", "VALIDATION_ID", "TO_DELETE") ENABLE ) ; ALTER TABLE TBL_VALIDATION_ENSEIGNEMENT NOLOGGING; -- TBL_VALIDATION_REFERENTIEL -CREATE TABLE "TBL_VALIDATION_REFERENTIEL" - ( "ID" NUMBER(*,0) NOT NULL ENABLE, - "ANNEE_ID" NUMBER(*,0) NOT NULL ENABLE, - "INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE, - "STRUCTURE_ID" NUMBER(*,0) NOT NULL ENABLE, - "TYPE_VOLUME_HORAIRE_ID" NUMBER(*,0) NOT NULL ENABLE, - "SERVICE_REFERENTIEL_ID" NUMBER(*,0) NOT NULL ENABLE, - "VALIDATION_ID" NUMBER(*,0), - "TO_DELETE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, - "VOLUME_HORAIRE_REF_ID" NUMBER(*,0) NOT NULL ENABLE, - CONSTRAINT "TBL_VALIDATION_REFERENTIEL_PK" PRIMARY KEY ("ID") ENABLE, +CREATE TABLE "TBL_VALIDATION_REFERENTIEL" + ( "ID" NUMBER(*,0) NOT NULL ENABLE, + "ANNEE_ID" NUMBER(*,0) NOT NULL ENABLE, + "INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE, + "STRUCTURE_ID" NUMBER(*,0) NOT NULL ENABLE, + "TYPE_VOLUME_HORAIRE_ID" NUMBER(*,0) NOT NULL ENABLE, + "SERVICE_REFERENTIEL_ID" NUMBER(*,0) NOT NULL ENABLE, + "VALIDATION_ID" NUMBER(*,0), + "TO_DELETE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, + "VOLUME_HORAIRE_REF_ID" NUMBER(*,0) NOT NULL ENABLE, + CONSTRAINT "TBL_VALIDATION_REFERENTIEL_PK" PRIMARY KEY ("ID") ENABLE, CONSTRAINT "TBL_VALIDATION_REFERENTIEL__UN" UNIQUE ("INTERVENANT_ID", "STRUCTURE_ID", "TYPE_VOLUME_HORAIRE_ID", "SERVICE_REFERENTIEL_ID", "VOLUME_HORAIRE_REF_ID", "VALIDATION_ID", "TO_DELETE") ENABLE ) ; ALTER TABLE TBL_VALIDATION_REFERENTIEL NOLOGGING; -- TBL_WORKFLOW -CREATE TABLE "TBL_WORKFLOW" - ( "ID" NUMBER(*,0) NOT NULL ENABLE, - "INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE, - "ETAPE_ID" NUMBER(*,0) NOT NULL ENABLE, - "STRUCTURE_ID" NUMBER(*,0) DEFAULT null, - "ATTEIGNABLE" NUMBER(1,0) DEFAULT 1 NOT NULL ENABLE, - "TO_DELETE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, - "REALISATION" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, - "OBJECTIF" FLOAT(126) DEFAULT 1 NOT NULL ENABLE, - "ANNEE_ID" NUMBER(*,0) NOT NULL ENABLE, - "TYPE_INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE, - "TYPE_INTERVENANT_CODE" VARCHAR2(5 CHAR) NOT NULL ENABLE, - "ETAPE_CODE" VARCHAR2(50 CHAR) NOT NULL ENABLE, - "STATUT_INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE, +CREATE TABLE "TBL_WORKFLOW" + ( "ID" NUMBER(*,0) NOT NULL ENABLE, + "INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE, + "ETAPE_ID" NUMBER(*,0) NOT NULL ENABLE, + "STRUCTURE_ID" NUMBER(*,0) DEFAULT null, + "ATTEIGNABLE" NUMBER(1,0) DEFAULT 1 NOT NULL ENABLE, + "TO_DELETE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, + "REALISATION" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, + "OBJECTIF" FLOAT(126) DEFAULT 1 NOT NULL ENABLE, + "ANNEE_ID" NUMBER(*,0) NOT NULL ENABLE, + "TYPE_INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE, + "TYPE_INTERVENANT_CODE" VARCHAR2(5 CHAR) NOT NULL ENABLE, + "ETAPE_CODE" VARCHAR2(50 CHAR) NOT NULL ENABLE, + "STATUT_INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE, CONSTRAINT "TBL_WORKFLOW_PK" PRIMARY KEY ("ID") ENABLE ) ; ALTER TABLE TBL_WORKFLOW NOLOGGING; -- TEST_BUFFER -CREATE TABLE "TEST_BUFFER" - ( "ID" NUMBER(*,0) NOT NULL ENABLE, - "TABLE_NAME" VARCHAR2(30 CHAR) NOT NULL ENABLE, - "DATA_ID" NUMBER(*,0) NOT NULL ENABLE, +CREATE TABLE "TEST_BUFFER" + ( "ID" NUMBER(*,0) NOT NULL ENABLE, + "TABLE_NAME" VARCHAR2(30 CHAR) NOT NULL ENABLE, + "DATA_ID" NUMBER(*,0) NOT NULL ENABLE, CONSTRAINT "TEST_BUFFER_PK" PRIMARY KEY ("ID") ENABLE ) ; -- TMP_SCENARIO_NOEUD_EFFECTIF -CREATE GLOBAL TEMPORARY TABLE "TMP_SCENARIO_NOEUD_EFFECTIF" - ( "SCENARIO_NOEUD_ID" NUMBER(*,0) NOT NULL ENABLE, - "TYPE_HEURES_ID" NUMBER(*,0) NOT NULL ENABLE, - "ETAPE_ID" NUMBER(*,0) NOT NULL ENABLE, +CREATE GLOBAL TEMPORARY TABLE "TMP_SCENARIO_NOEUD_EFFECTIF" + ( "SCENARIO_NOEUD_ID" NUMBER(*,0) NOT NULL ENABLE, + "TYPE_HEURES_ID" NUMBER(*,0) NOT NULL ENABLE, + "ETAPE_ID" NUMBER(*,0) NOT NULL ENABLE, "EFFECTIF" FLOAT(126) ) ON COMMIT DELETE ROWS ; -- TYPE_AGREMENT -CREATE TABLE "TYPE_AGREMENT" - ( "ID" NUMBER(*,0) NOT NULL ENABLE, - "CODE" VARCHAR2(60 CHAR) NOT NULL ENABLE, - "LIBELLE" VARCHAR2(256 CHAR) NOT NULL ENABLE, - "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_DESTRUCTION" DATE, - "HISTO_DESTRUCTEUR_ID" NUMBER(*,0), - CONSTRAINT "TYPE_AGREMENT_PK" PRIMARY KEY ("ID") ENABLE, +CREATE TABLE "TYPE_AGREMENT" + ( "ID" NUMBER(*,0) NOT NULL ENABLE, + "CODE" VARCHAR2(60 CHAR) NOT NULL ENABLE, + "LIBELLE" VARCHAR2(256 CHAR) NOT NULL ENABLE, + "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_DESTRUCTION" DATE, + "HISTO_DESTRUCTEUR_ID" NUMBER(*,0), + CONSTRAINT "TYPE_AGREMENT_PK" PRIMARY KEY ("ID") ENABLE, CONSTRAINT "TYPE_AGREMENT__UN" UNIQUE ("CODE") ENABLE ) ; -- TYPE_AGREMENT_STATUT -CREATE TABLE "TYPE_AGREMENT_STATUT" - ( "ID" NUMBER(*,0) NOT NULL ENABLE, - "TYPE_AGREMENT_ID" NUMBER(*,0) NOT NULL ENABLE, - "STATUT_INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE, - "OBLIGATOIRE" NUMBER(*,0) NOT NULL ENABLE, - "PREMIER_RECRUTEMENT" NUMBER(1,0) DEFAULT NULL, - "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_DESTRUCTION" DATE, - "HISTO_DESTRUCTEUR_ID" NUMBER(*,0), - CONSTRAINT "TYPE_AGREMENT_STATUT_PK" PRIMARY KEY ("ID") ENABLE, +CREATE TABLE "TYPE_AGREMENT_STATUT" + ( "ID" NUMBER(*,0) NOT NULL ENABLE, + "TYPE_AGREMENT_ID" NUMBER(*,0) NOT NULL ENABLE, + "STATUT_INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE, + "OBLIGATOIRE" NUMBER(*,0) NOT NULL ENABLE, + "PREMIER_RECRUTEMENT" NUMBER(1,0) DEFAULT NULL, + "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_DESTRUCTION" DATE, + "HISTO_DESTRUCTEUR_ID" NUMBER(*,0), + CONSTRAINT "TYPE_AGREMENT_STATUT_PK" PRIMARY KEY ("ID") ENABLE, CONSTRAINT "TYPE_AGREMENT_STATUT__UN" UNIQUE ("TYPE_AGREMENT_ID", "STATUT_INTERVENANT_ID", "PREMIER_RECRUTEMENT") ENABLE ) ; -- TYPE_CONTRAT -CREATE TABLE "TYPE_CONTRAT" - ( "ID" NUMBER(*,0) NOT NULL ENABLE, - "CODE" VARCHAR2(15 CHAR) NOT NULL ENABLE, - "LIBELLE" VARCHAR2(60 CHAR) NOT NULL ENABLE, - "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_DESTRUCTION" DATE, - "HISTO_DESTRUCTEUR_ID" NUMBER(*,0), +CREATE TABLE "TYPE_CONTRAT" + ( "ID" NUMBER(*,0) NOT NULL ENABLE, + "CODE" VARCHAR2(15 CHAR) NOT NULL ENABLE, + "LIBELLE" VARCHAR2(60 CHAR) NOT NULL ENABLE, + "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_DESTRUCTION" DATE, + "HISTO_DESTRUCTEUR_ID" NUMBER(*,0), CONSTRAINT "TYPE_CONTRAT_PK" PRIMARY KEY ("ID") ENABLE ) ; -- TYPE_DOTATION -CREATE TABLE "TYPE_DOTATION" - ( "ID" NUMBER(*,0) NOT NULL ENABLE, - "LIBELLE" VARCHAR2(200 CHAR) NOT NULL ENABLE, - "SOURCE_CODE" VARCHAR2(100 CHAR), - "SOURCE_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_DESTRUCTION" DATE, - "HISTO_DESTRUCTEUR_ID" NUMBER(*,0), - "TYPE_RESSOURCE_ID" NUMBER(*,0) NOT NULL ENABLE, +CREATE TABLE "TYPE_DOTATION" + ( "ID" NUMBER(*,0) NOT NULL ENABLE, + "LIBELLE" VARCHAR2(200 CHAR) NOT NULL ENABLE, + "SOURCE_CODE" VARCHAR2(100 CHAR), + "SOURCE_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_DESTRUCTION" DATE, + "HISTO_DESTRUCTEUR_ID" NUMBER(*,0), + "TYPE_RESSOURCE_ID" NUMBER(*,0) NOT NULL ENABLE, CONSTRAINT "TYPE_DOTATION_PK" PRIMARY KEY ("ID") ENABLE ) ; -- TYPE_FORMATION -CREATE TABLE "TYPE_FORMATION" - ( "ID" NUMBER(*,0) NOT NULL ENABLE, - "LIBELLE_LONG" VARCHAR2(80 CHAR) NOT NULL ENABLE, - "LIBELLE_COURT" VARCHAR2(15 CHAR) NOT NULL ENABLE, - "GROUPE_ID" NUMBER(*,0) NOT NULL ENABLE, - "SOURCE_ID" NUMBER(*,0) NOT NULL ENABLE, - "SOURCE_CODE" VARCHAR2(100 CHAR), - "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_DESTRUCTION" DATE, - "HISTO_DESTRUCTEUR_ID" NUMBER(*,0), - CONSTRAINT "TYPE_FORMATION__UN" UNIQUE ("SOURCE_CODE") ENABLE, +CREATE TABLE "TYPE_FORMATION" + ( "ID" NUMBER(*,0) NOT NULL ENABLE, + "LIBELLE_LONG" VARCHAR2(80 CHAR) NOT NULL ENABLE, + "LIBELLE_COURT" VARCHAR2(15 CHAR) NOT NULL ENABLE, + "GROUPE_ID" NUMBER(*,0) NOT NULL ENABLE, + "SOURCE_ID" NUMBER(*,0) NOT NULL ENABLE, + "SOURCE_CODE" VARCHAR2(100 CHAR), + "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_DESTRUCTION" DATE, + "HISTO_DESTRUCTEUR_ID" NUMBER(*,0), + CONSTRAINT "TYPE_FORMATION__UN" UNIQUE ("SOURCE_CODE") ENABLE, CONSTRAINT "TYPE_FORMATION_PK" PRIMARY KEY ("ID") ENABLE ) ; -- TYPE_HEURES -CREATE TABLE "TYPE_HEURES" - ( "ID" NUMBER(*,0) NOT NULL ENABLE, - "CODE" VARCHAR2(20 CHAR) NOT NULL ENABLE, - "LIBELLE_COURT" VARCHAR2(15 CHAR) NOT NULL ENABLE, - "LIBELLE_LONG" VARCHAR2(100 CHAR) NOT NULL ENABLE, - "ORDRE" NUMBER(*,0) NOT NULL ENABLE, - "TYPE_HEURES_ELEMENT_ID" NUMBER(*,0) NOT NULL ENABLE, - "ELIGIBLE_CENTRE_COUT_EP" NUMBER(1,0) DEFAULT 1 NOT NULL ENABLE, - "ELIGIBLE_EXTRACTION_PAIE" NUMBER(1,0) DEFAULT 1 NOT NULL ENABLE, - "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_DESTRUCTION" DATE, - "HISTO_DESTRUCTEUR_ID" NUMBER(*,0), - "ENSEIGNEMENT" NUMBER(1,0) DEFAULT 1 NOT NULL ENABLE, - CONSTRAINT "TYPE_HEURES_PK" PRIMARY KEY ("ID") ENABLE, +CREATE TABLE "TYPE_HEURES" + ( "ID" NUMBER(*,0) NOT NULL ENABLE, + "CODE" VARCHAR2(20 CHAR) NOT NULL ENABLE, + "LIBELLE_COURT" VARCHAR2(15 CHAR) NOT NULL ENABLE, + "LIBELLE_LONG" VARCHAR2(100 CHAR) NOT NULL ENABLE, + "ORDRE" NUMBER(*,0) NOT NULL ENABLE, + "TYPE_HEURES_ELEMENT_ID" NUMBER(*,0) NOT NULL ENABLE, + "ELIGIBLE_CENTRE_COUT_EP" NUMBER(1,0) DEFAULT 1 NOT NULL ENABLE, + "ELIGIBLE_EXTRACTION_PAIE" NUMBER(1,0) DEFAULT 1 NOT NULL ENABLE, + "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_DESTRUCTION" DATE, + "HISTO_DESTRUCTEUR_ID" NUMBER(*,0), + "ENSEIGNEMENT" NUMBER(1,0) DEFAULT 1 NOT NULL ENABLE, + CONSTRAINT "TYPE_HEURES_PK" PRIMARY KEY ("ID") ENABLE, CONSTRAINT "TYPE_HEURES_UN" UNIQUE ("CODE") ENABLE ) ; -- TYPE_INTERVENANT -CREATE TABLE "TYPE_INTERVENANT" - ( "ID" NUMBER(*,0) NOT NULL ENABLE, - "CODE" VARCHAR2(1 CHAR) NOT NULL ENABLE, - "LIBELLE" VARCHAR2(50 CHAR) NOT NULL ENABLE, - "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_DESTRUCTION" DATE, - "HISTO_DESTRUCTEUR_ID" NUMBER(*,0), - CONSTRAINT "TYPE_INTERVENANT_CODE_UN" UNIQUE ("CODE") ENABLE, +CREATE TABLE "TYPE_INTERVENANT" + ( "ID" NUMBER(*,0) NOT NULL ENABLE, + "CODE" VARCHAR2(1 CHAR) NOT NULL ENABLE, + "LIBELLE" VARCHAR2(50 CHAR) NOT NULL ENABLE, + "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_DESTRUCTION" DATE, + "HISTO_DESTRUCTEUR_ID" NUMBER(*,0), + CONSTRAINT "TYPE_INTERVENANT_CODE_UN" UNIQUE ("CODE") ENABLE, CONSTRAINT "TYPE_INTERVENANT_PK" PRIMARY KEY ("ID") ENABLE ) ; -- TYPE_INTERVENTION -CREATE TABLE "TYPE_INTERVENTION" - ( "ID" NUMBER(*,0) NOT NULL ENABLE, - "CODE" VARCHAR2(10 CHAR) NOT NULL ENABLE, - "LIBELLE" VARCHAR2(60 CHAR) NOT NULL ENABLE, - "ORDRE" NUMBER(*,0) NOT NULL ENABLE, - "TAUX_HETD_SERVICE" FLOAT(126) DEFAULT 1 NOT NULL ENABLE, - "TAUX_HETD_COMPLEMENTAIRE" FLOAT(126) DEFAULT 1 NOT NULL ENABLE, - "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_DESTRUCTION" DATE, - "HISTO_DESTRUCTEUR_ID" NUMBER(*,0), - "VISIBLE" NUMBER(1,0) NOT NULL ENABLE, - "ANNEE_DEBUT_ID" NUMBER(*,0), - "ANNEE_FIN_ID" NUMBER(*,0), - "REGLE_FOAD" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, - "REGLE_FC" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, - "TYPE_INTERVENTION_MAQUETTE_ID" NUMBER(*,0), +CREATE TABLE "TYPE_INTERVENTION" + ( "ID" NUMBER(*,0) NOT NULL ENABLE, + "CODE" VARCHAR2(10 CHAR) NOT NULL ENABLE, + "LIBELLE" VARCHAR2(60 CHAR) NOT NULL ENABLE, + "ORDRE" NUMBER(*,0) NOT NULL ENABLE, + "TAUX_HETD_SERVICE" FLOAT(126) DEFAULT 1 NOT NULL ENABLE, + "TAUX_HETD_COMPLEMENTAIRE" FLOAT(126) DEFAULT 1 NOT NULL ENABLE, + "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_DESTRUCTION" DATE, + "HISTO_DESTRUCTEUR_ID" NUMBER(*,0), + "VISIBLE" NUMBER(1,0) NOT NULL ENABLE, + "ANNEE_DEBUT_ID" NUMBER(*,0), + "ANNEE_FIN_ID" NUMBER(*,0), + "REGLE_FOAD" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, + "REGLE_FC" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, + "TYPE_INTERVENTION_MAQUETTE_ID" NUMBER(*,0), CONSTRAINT "TYPE_INTERVENTION_PK" PRIMARY KEY ("ID") ENABLE ) ; -- TYPE_INTERVENTION_EP -CREATE TABLE "TYPE_INTERVENTION_EP" - ( "ID" NUMBER(*,0) NOT NULL ENABLE, - "TYPE_INTERVENTION_ID" NUMBER(*,0) NOT NULL ENABLE, - "ELEMENT_PEDAGOGIQUE_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_DESTRUCTION" DATE, - "HISTO_DESTRUCTEUR_ID" NUMBER(*,0), - "SOURCE_ID" NUMBER(*,0) NOT NULL ENABLE, - "SOURCE_CODE" VARCHAR2(100 CHAR), +CREATE TABLE "TYPE_INTERVENTION_EP" + ( "ID" NUMBER(*,0) NOT NULL ENABLE, + "TYPE_INTERVENTION_ID" NUMBER(*,0) NOT NULL ENABLE, + "ELEMENT_PEDAGOGIQUE_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_DESTRUCTION" DATE, + "HISTO_DESTRUCTEUR_ID" NUMBER(*,0), + "SOURCE_ID" NUMBER(*,0) NOT NULL ENABLE, + "SOURCE_CODE" VARCHAR2(100 CHAR), CONSTRAINT "TYPE_INTERVENTION_EP_PK" PRIMARY KEY ("ID") ENABLE ) ; -- TYPE_INTERVENTION_STRUCTURE -CREATE TABLE "TYPE_INTERVENTION_STRUCTURE" - ( "ID" NUMBER(*,0) NOT NULL ENABLE, - "TYPE_INTERVENTION_ID" NUMBER(*,0) NOT NULL ENABLE, - "STRUCTURE_ID" NUMBER(*,0) NOT NULL ENABLE, - "VISIBLE" NUMBER(1,0) NOT NULL ENABLE, - "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_DESTRUCTION" DATE, - "HISTO_DESTRUCTEUR_ID" NUMBER(*,0), - "ANNEE_DEBUT_ID" NUMBER(*,0), - "ANNEE_FIN_ID" NUMBER(*,0), +CREATE TABLE "TYPE_INTERVENTION_STRUCTURE" + ( "ID" NUMBER(*,0) NOT NULL ENABLE, + "TYPE_INTERVENTION_ID" NUMBER(*,0) NOT NULL ENABLE, + "STRUCTURE_ID" NUMBER(*,0) NOT NULL ENABLE, + "VISIBLE" NUMBER(1,0) NOT NULL ENABLE, + "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_DESTRUCTION" DATE, + "HISTO_DESTRUCTEUR_ID" NUMBER(*,0), + "ANNEE_DEBUT_ID" NUMBER(*,0), + "ANNEE_FIN_ID" NUMBER(*,0), CONSTRAINT "TYPE_INTERVENTION_STRUCTURE_PK" PRIMARY KEY ("ID") ENABLE ) ; -- TYPE_MODULATEUR -CREATE TABLE "TYPE_MODULATEUR" - ( "ID" NUMBER(*,0) NOT NULL ENABLE, - "CODE" VARCHAR2(10 CHAR) NOT NULL ENABLE, - "LIBELLE" VARCHAR2(50 CHAR) NOT NULL ENABLE, - "PUBLIQUE" NUMBER(1,0) NOT NULL ENABLE, - "OBLIGATOIRE" NUMBER(1,0) NOT NULL ENABLE, - "SAISIE_PAR_ENSEIGNANT" NUMBER(1,0) NOT NULL ENABLE, - "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_DESTRUCTION" DATE, - "HISTO_DESTRUCTEUR_ID" NUMBER(*,0), +CREATE TABLE "TYPE_MODULATEUR" + ( "ID" NUMBER(*,0) NOT NULL ENABLE, + "CODE" VARCHAR2(10 CHAR) NOT NULL ENABLE, + "LIBELLE" VARCHAR2(50 CHAR) NOT NULL ENABLE, + "PUBLIQUE" NUMBER(1,0) NOT NULL ENABLE, + "OBLIGATOIRE" NUMBER(1,0) NOT NULL ENABLE, + "SAISIE_PAR_ENSEIGNANT" NUMBER(1,0) NOT NULL ENABLE, + "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_DESTRUCTION" DATE, + "HISTO_DESTRUCTEUR_ID" NUMBER(*,0), CONSTRAINT "TYPE_MODULATEUR_PK" PRIMARY KEY ("ID") ENABLE ) ; -- TYPE_MODULATEUR_EP -CREATE TABLE "TYPE_MODULATEUR_EP" - ( "ID" NUMBER(*,0) NOT NULL ENABLE, - "TYPE_MODULATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "ELEMENT_PEDAGOGIQUE_ID" NUMBER(*,0) NOT NULL ENABLE, - "SOURCE_ID" NUMBER(*,0) NOT NULL ENABLE, - "SOURCE_CODE" VARCHAR2(100 CHAR) NOT NULL ENABLE, - "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_DESTRUCTION" DATE, - "HISTO_DESTRUCTEUR_ID" NUMBER(*,0), - CONSTRAINT "TYPE_MODULATEUR_EP_PK" PRIMARY KEY ("ID") ENABLE, - CONSTRAINT "TYPE_MODULATEUR_EP__UN" UNIQUE ("SOURCE_CODE") ENABLE, +CREATE TABLE "TYPE_MODULATEUR_EP" + ( "ID" NUMBER(*,0) NOT NULL ENABLE, + "TYPE_MODULATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "ELEMENT_PEDAGOGIQUE_ID" NUMBER(*,0) NOT NULL ENABLE, + "SOURCE_ID" NUMBER(*,0) NOT NULL ENABLE, + "SOURCE_CODE" VARCHAR2(100 CHAR) NOT NULL ENABLE, + "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_DESTRUCTION" DATE, + "HISTO_DESTRUCTEUR_ID" NUMBER(*,0), + CONSTRAINT "TYPE_MODULATEUR_EP_PK" PRIMARY KEY ("ID") ENABLE, + CONSTRAINT "TYPE_MODULATEUR_EP__UN" UNIQUE ("SOURCE_CODE") ENABLE, CONSTRAINT "TYPE_MODULATEUR_EP__UNV1" UNIQUE ("TYPE_MODULATEUR_ID", "ELEMENT_PEDAGOGIQUE_ID") ENABLE ) ; -- TYPE_MODULATEUR_STRUCTURE -CREATE TABLE "TYPE_MODULATEUR_STRUCTURE" - ( "ID" NUMBER(*,0) NOT NULL ENABLE, - "TYPE_MODULATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "STRUCTURE_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_DESTRUCTION" DATE, - "HISTO_DESTRUCTEUR_ID" NUMBER(*,0), - "ANNEE_DEBUT_ID" NUMBER(*,0), - "ANNEE_FIN_ID" NUMBER(*,0), - CONSTRAINT "TYPE_MODULATEUR_STRUCTURE_UN" UNIQUE ("TYPE_MODULATEUR_ID", "STRUCTURE_ID") ENABLE, +CREATE TABLE "TYPE_MODULATEUR_STRUCTURE" + ( "ID" NUMBER(*,0) NOT NULL ENABLE, + "TYPE_MODULATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "STRUCTURE_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_DESTRUCTION" DATE, + "HISTO_DESTRUCTEUR_ID" NUMBER(*,0), + "ANNEE_DEBUT_ID" NUMBER(*,0), + "ANNEE_FIN_ID" NUMBER(*,0), + CONSTRAINT "TYPE_MODULATEUR_STRUCTURE_UN" UNIQUE ("TYPE_MODULATEUR_ID", "STRUCTURE_ID") ENABLE, CONSTRAINT "TYPE_MODULATEUR_STRUCTURE_PK" PRIMARY KEY ("ID") ENABLE ) ; -- TYPE_PIECE_JOINTE -CREATE TABLE "TYPE_PIECE_JOINTE" - ( "ID" NUMBER(*,0) NOT NULL ENABLE, - "CODE" VARCHAR2(64 CHAR) NOT NULL ENABLE, - "LIBELLE" VARCHAR2(150 CHAR) NOT NULL ENABLE, - "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_DESTRUCTION" DATE, - "HISTO_DESTRUCTEUR_ID" NUMBER(*,0), - "URL_MODELE_DOC" VARCHAR2(256 CHAR), - "ORDRE" NUMBER DEFAULT 1 NOT NULL ENABLE, +CREATE TABLE "TYPE_PIECE_JOINTE" + ( "ID" NUMBER(*,0) NOT NULL ENABLE, + "CODE" VARCHAR2(64 CHAR) NOT NULL ENABLE, + "LIBELLE" VARCHAR2(150 CHAR) NOT NULL ENABLE, + "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_DESTRUCTION" DATE, + "HISTO_DESTRUCTEUR_ID" NUMBER(*,0), + "URL_MODELE_DOC" VARCHAR2(256 CHAR), + "ORDRE" NUMBER DEFAULT 1 NOT NULL ENABLE, CONSTRAINT "TYPE_PIECE_JOINTE_PK" PRIMARY KEY ("ID") ENABLE ) ; -- TYPE_PIECE_JOINTE_STATUT -CREATE TABLE "TYPE_PIECE_JOINTE_STATUT" - ( "ID" NUMBER(*,0) NOT NULL ENABLE, - "TYPE_PIECE_JOINTE_ID" NUMBER(*,0) NOT NULL ENABLE, - "STATUT_INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE, - "OBLIGATOIRE" NUMBER(*,0) NOT NULL ENABLE, - "SEUIL_HETD" NUMBER(*,0), - "PREMIER_RECRUTEMENT" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, - "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_DESTRUCTION" DATE, - "HISTO_DESTRUCTEUR_ID" NUMBER(*,0), - "ANNEE_DEBUT_ID" NUMBER(*,0), - "ANNEE_FIN_ID" NUMBER(*,0), - "FC" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, - "CHANGEMENT_RIB" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, +CREATE TABLE "TYPE_PIECE_JOINTE_STATUT" + ( "ID" NUMBER(*,0) NOT NULL ENABLE, + "TYPE_PIECE_JOINTE_ID" NUMBER(*,0) NOT NULL ENABLE, + "STATUT_INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE, + "OBLIGATOIRE" NUMBER(*,0) NOT NULL ENABLE, + "SEUIL_HETD" NUMBER(*,0), + "PREMIER_RECRUTEMENT" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, + "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_DESTRUCTION" DATE, + "HISTO_DESTRUCTEUR_ID" NUMBER(*,0), + "ANNEE_DEBUT_ID" NUMBER(*,0), + "ANNEE_FIN_ID" NUMBER(*,0), + "FC" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, + "CHANGEMENT_RIB" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, CONSTRAINT "TYPE_PIECE_JOINTE_STATUT_PK" PRIMARY KEY ("ID") ENABLE ) ; -- TYPE_RESSOURCE -CREATE TABLE "TYPE_RESSOURCE" - ( "ID" NUMBER(*,0) NOT NULL ENABLE, - "CODE" VARCHAR2(50 CHAR) NOT NULL ENABLE, - "LIBELLE" VARCHAR2(200 CHAR) NOT NULL ENABLE, - "FI" NUMBER(1,0) NOT NULL ENABLE, - "FA" NUMBER(1,0) NOT NULL ENABLE, - "FC" NUMBER(1,0) NOT NULL ENABLE, - "FC_MAJOREES" NUMBER(1,0) NOT NULL ENABLE, - "REFERENTIEL" NUMBER(1,0) NOT NULL ENABLE, - "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_DESTRUCTION" DATE, - "HISTO_DESTRUCTEUR_ID" NUMBER(*,0), - "ETABLISSEMENT" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, +CREATE TABLE "TYPE_RESSOURCE" + ( "ID" NUMBER(*,0) NOT NULL ENABLE, + "CODE" VARCHAR2(50 CHAR) NOT NULL ENABLE, + "LIBELLE" VARCHAR2(200 CHAR) NOT NULL ENABLE, + "FI" NUMBER(1,0) NOT NULL ENABLE, + "FA" NUMBER(1,0) NOT NULL ENABLE, + "FC" NUMBER(1,0) NOT NULL ENABLE, + "FC_MAJOREES" NUMBER(1,0) NOT NULL ENABLE, + "REFERENTIEL" NUMBER(1,0) NOT NULL ENABLE, + "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_DESTRUCTION" DATE, + "HISTO_DESTRUCTEUR_ID" NUMBER(*,0), + "ETABLISSEMENT" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, CONSTRAINT "TYPE_RESSOURCE_PK" PRIMARY KEY ("ID") ENABLE ) ; -- TYPE_VALIDATION -CREATE TABLE "TYPE_VALIDATION" - ( "ID" NUMBER(*,0) NOT NULL ENABLE, - "CODE" VARCHAR2(25 CHAR) NOT NULL ENABLE, - "LIBELLE" VARCHAR2(60 CHAR), +CREATE TABLE "TYPE_VALIDATION" + ( "ID" NUMBER(*,0) NOT NULL ENABLE, + "CODE" VARCHAR2(25 CHAR) NOT NULL ENABLE, + "LIBELLE" VARCHAR2(60 CHAR), CONSTRAINT "TYPE_VALIDATION_PK" PRIMARY KEY ("ID") ENABLE ) ; -- TYPE_VOLUME_HORAIRE -CREATE TABLE "TYPE_VOLUME_HORAIRE" - ( "ID" NUMBER(*,0) NOT NULL ENABLE, - "CODE" VARCHAR2(15 CHAR) NOT NULL ENABLE, - "LIBELLE" VARCHAR2(60 CHAR) NOT NULL ENABLE, - "ORDRE" NUMBER NOT NULL ENABLE, - CONSTRAINT "TYPE_VOLUME_HORAIRE_PK" PRIMARY KEY ("ID") ENABLE, +CREATE TABLE "TYPE_VOLUME_HORAIRE" + ( "ID" NUMBER(*,0) NOT NULL ENABLE, + "CODE" VARCHAR2(15 CHAR) NOT NULL ENABLE, + "LIBELLE" VARCHAR2(60 CHAR) NOT NULL ENABLE, + "ORDRE" NUMBER NOT NULL ENABLE, + CONSTRAINT "TYPE_VOLUME_HORAIRE_PK" PRIMARY KEY ("ID") ENABLE, CONSTRAINT "TYPE_VOLUME_HORAIRE__UN" UNIQUE ("CODE") ENABLE ) ; -- UTILISATEUR -CREATE TABLE "UTILISATEUR" - ( "ID" NUMBER(*,0) NOT NULL ENABLE, - "USERNAME" VARCHAR2(255 CHAR) NOT NULL ENABLE, - "EMAIL" VARCHAR2(255 CHAR), - "DISPLAY_NAME" VARCHAR2(64 CHAR) NOT NULL ENABLE, - "PASSWORD" VARCHAR2(128 CHAR) NOT NULL ENABLE, - "STATE" NUMBER NOT NULL ENABLE, - "CODE" VARCHAR2(60 CHAR), - CONSTRAINT "UTILISATEUR_USERNAME_UN" UNIQUE ("USERNAME") ENABLE, +CREATE TABLE "UTILISATEUR" + ( "ID" NUMBER(*,0) NOT NULL ENABLE, + "USERNAME" VARCHAR2(255 CHAR) NOT NULL ENABLE, + "EMAIL" VARCHAR2(255 CHAR), + "DISPLAY_NAME" VARCHAR2(64 CHAR) NOT NULL ENABLE, + "PASSWORD" VARCHAR2(128 CHAR) NOT NULL ENABLE, + "STATE" NUMBER NOT NULL ENABLE, + "CODE" VARCHAR2(60 CHAR), + CONSTRAINT "UTILISATEUR_USERNAME_UN" UNIQUE ("USERNAME") ENABLE, CONSTRAINT "UTILISATEUR_PK" PRIMARY KEY ("ID") ENABLE ) ; -- VALIDATION -CREATE TABLE "VALIDATION" - ( "ID" NUMBER(*,0) NOT NULL ENABLE, - "TYPE_VALIDATION_ID" NUMBER(*,0) NOT NULL ENABLE, - "INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE, - "STRUCTURE_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_DESTRUCTION" DATE, - "HISTO_DESTRUCTEUR_ID" NUMBER(*,0), +CREATE TABLE "VALIDATION" + ( "ID" NUMBER(*,0) NOT NULL ENABLE, + "TYPE_VALIDATION_ID" NUMBER(*,0) NOT NULL ENABLE, + "INTERVENANT_ID" NUMBER(*,0) NOT NULL ENABLE, + "STRUCTURE_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_DESTRUCTION" DATE, + "HISTO_DESTRUCTEUR_ID" NUMBER(*,0), CONSTRAINT "VALIDATION_PK" PRIMARY KEY ("ID") ENABLE ) ; -- VALIDATION_VOL_HORAIRE -CREATE TABLE "VALIDATION_VOL_HORAIRE" - ( "VALIDATION_ID" NUMBER(*,0) NOT NULL ENABLE, - "VOLUME_HORAIRE_ID" NUMBER(*,0) NOT NULL ENABLE, +CREATE TABLE "VALIDATION_VOL_HORAIRE" + ( "VALIDATION_ID" NUMBER(*,0) NOT NULL ENABLE, + "VOLUME_HORAIRE_ID" NUMBER(*,0) NOT NULL ENABLE, CONSTRAINT "VALIDATION_VOL_HORAIRE_PK" PRIMARY KEY ("VALIDATION_ID", "VOLUME_HORAIRE_ID") ENABLE ) ; -- VALIDATION_VOL_HORAIRE_REF -CREATE TABLE "VALIDATION_VOL_HORAIRE_REF" - ( "VALIDATION_ID" NUMBER(*,0) NOT NULL ENABLE, - "VOLUME_HORAIRE_REF_ID" NUMBER(*,0) NOT NULL ENABLE, +CREATE TABLE "VALIDATION_VOL_HORAIRE_REF" + ( "VALIDATION_ID" NUMBER(*,0) NOT NULL ENABLE, + "VOLUME_HORAIRE_REF_ID" NUMBER(*,0) NOT NULL ENABLE, CONSTRAINT "VALIDATION_VOL_HORAIRE_REF_PK" PRIMARY KEY ("VALIDATION_ID", "VOLUME_HORAIRE_REF_ID") ENABLE ) ; +-- VERSION +CREATE TABLE "VERSION" + ( "NUMERO" NUMBER NOT NULL ENABLE, + CONSTRAINT "VERSION_PK" PRIMARY KEY ("NUMERO") ENABLE + ) ; + -- VOLUME_HORAIRE -CREATE TABLE "VOLUME_HORAIRE" - ( "ID" NUMBER(*,0) NOT NULL ENABLE, - "TYPE_VOLUME_HORAIRE_ID" NUMBER(*,0) NOT NULL ENABLE, - "SERVICE_ID" NUMBER(*,0) NOT NULL ENABLE, - "PERIODE_ID" NUMBER(*,0) NOT NULL ENABLE, - "TYPE_INTERVENTION_ID" NUMBER(*,0) NOT NULL ENABLE, - "HEURES" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, - "MOTIF_NON_PAIEMENT_ID" NUMBER(*,0), - "CONTRAT_ID" NUMBER(*,0), - "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_DESTRUCTION" DATE, - "HISTO_DESTRUCTEUR_ID" NUMBER(*,0), +CREATE TABLE "VOLUME_HORAIRE" + ( "ID" NUMBER(*,0) NOT NULL ENABLE, + "TYPE_VOLUME_HORAIRE_ID" NUMBER(*,0) NOT NULL ENABLE, + "SERVICE_ID" NUMBER(*,0) NOT NULL ENABLE, + "PERIODE_ID" NUMBER(*,0) NOT NULL ENABLE, + "TYPE_INTERVENTION_ID" NUMBER(*,0) NOT NULL ENABLE, + "HEURES" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, + "MOTIF_NON_PAIEMENT_ID" NUMBER(*,0), + "CONTRAT_ID" NUMBER(*,0), + "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_DESTRUCTION" DATE, + "HISTO_DESTRUCTEUR_ID" NUMBER(*,0), CONSTRAINT "VOLUME_HORAIRE_PK" PRIMARY KEY ("ID") ENABLE ) ; -- VOLUME_HORAIRE_CHARGE -CREATE TABLE "VOLUME_HORAIRE_CHARGE" - ( "ID" NUMBER(*,0) NOT NULL ENABLE, - "SCENARIO_ID" NUMBER(*,0) NOT NULL ENABLE, - "ELEMENT_PEDAGOGIQUE_ID" NUMBER(*,0) NOT NULL ENABLE, - "TYPE_INTERVENTION_ID" NUMBER(*,0) NOT NULL ENABLE, - "GROUPES" NUMBER(*,0) DEFAULT 0 NOT NULL ENABLE, - "SOURCE_ID" NUMBER(*,0) NOT NULL ENABLE, - "SOURCE_CODE" VARCHAR2(100 CHAR), - "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_CREATEUR_ID" NUMBER NOT NULL ENABLE, - "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_MODIFICATEUR_ID" NUMBER NOT NULL ENABLE, - "HISTO_DESTRUCTION" DATE, - "HISTO_DESTRUCTEUR_ID" NUMBER, - CONSTRAINT "VOLUME_HORAIRE_CHARGE_PK" PRIMARY KEY ("ID") ENABLE, - CONSTRAINT "VHC_HISTO_UN" UNIQUE ("SOURCE_CODE", "HISTO_DESTRUCTION") ENABLE, +CREATE TABLE "VOLUME_HORAIRE_CHARGE" + ( "ID" NUMBER(*,0) NOT NULL ENABLE, + "SCENARIO_ID" NUMBER(*,0) NOT NULL ENABLE, + "ELEMENT_PEDAGOGIQUE_ID" NUMBER(*,0) NOT NULL ENABLE, + "TYPE_INTERVENTION_ID" NUMBER(*,0) NOT NULL ENABLE, + "GROUPES" NUMBER(*,0) DEFAULT 0 NOT NULL ENABLE, + "SOURCE_ID" NUMBER(*,0) NOT NULL ENABLE, + "SOURCE_CODE" VARCHAR2(100 CHAR), + "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_CREATEUR_ID" NUMBER NOT NULL ENABLE, + "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_MODIFICATEUR_ID" NUMBER NOT NULL ENABLE, + "HISTO_DESTRUCTION" DATE, + "HISTO_DESTRUCTEUR_ID" NUMBER, + CONSTRAINT "VOLUME_HORAIRE_CHARGE_PK" PRIMARY KEY ("ID") ENABLE, + CONSTRAINT "VHC_HISTO_UN" UNIQUE ("SOURCE_CODE", "HISTO_DESTRUCTION") ENABLE, CONSTRAINT "VOLUME_HORAIRE_CHARGE__UN" UNIQUE ("ELEMENT_PEDAGOGIQUE_ID", "TYPE_INTERVENTION_ID", "HISTO_DESTRUCTION") ENABLE ) ; -- VOLUME_HORAIRE_ENS -CREATE TABLE "VOLUME_HORAIRE_ENS" - ( "ID" NUMBER(*,0) NOT NULL ENABLE, - "TYPE_INTERVENTION_ID" NUMBER(*,0) NOT NULL ENABLE, - "HEURES" FLOAT(126) NOT NULL ENABLE, - "SOURCE_ID" NUMBER(*,0) NOT NULL ENABLE, - "SOURCE_CODE" VARCHAR2(100 CHAR), - "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_DESTRUCTION" DATE, - "HISTO_DESTRUCTEUR_ID" NUMBER(*,0), - "ELEMENT_PEDAGOGIQUE_ID" NUMBER(*,0) NOT NULL ENABLE, - "GROUPES" FLOAT(126), - CONSTRAINT "VOLUME_HORAIRE_ENS_UK1" UNIQUE ("SOURCE_CODE", "HISTO_DESTRUCTION") ENABLE, +CREATE TABLE "VOLUME_HORAIRE_ENS" + ( "ID" NUMBER(*,0) NOT NULL ENABLE, + "TYPE_INTERVENTION_ID" NUMBER(*,0) NOT NULL ENABLE, + "HEURES" FLOAT(126) NOT NULL ENABLE, + "SOURCE_ID" NUMBER(*,0) NOT NULL ENABLE, + "SOURCE_CODE" VARCHAR2(100 CHAR), + "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_DESTRUCTION" DATE, + "HISTO_DESTRUCTEUR_ID" NUMBER(*,0), + "ELEMENT_PEDAGOGIQUE_ID" NUMBER(*,0) NOT NULL ENABLE, + "GROUPES" FLOAT(126), + CONSTRAINT "VOLUME_HORAIRE_ENS_UK1" UNIQUE ("SOURCE_CODE", "HISTO_DESTRUCTION") ENABLE, CONSTRAINT "VOLUME_HORAIRE_ENS_PK" PRIMARY KEY ("ID") ENABLE ) ; -- VOLUME_HORAIRE_REF -CREATE TABLE "VOLUME_HORAIRE_REF" - ( "ID" NUMBER(*,0) NOT NULL ENABLE, - "TYPE_VOLUME_HORAIRE_ID" NUMBER(*,0) NOT NULL ENABLE, - "SERVICE_REFERENTIEL_ID" NUMBER(*,0) NOT NULL ENABLE, - "HEURES" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, - "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, - "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, - "HISTO_DESTRUCTION" DATE, - "HISTO_DESTRUCTEUR_ID" NUMBER(*,0), +CREATE TABLE "VOLUME_HORAIRE_REF" + ( "ID" NUMBER(*,0) NOT NULL ENABLE, + "TYPE_VOLUME_HORAIRE_ID" NUMBER(*,0) NOT NULL ENABLE, + "SERVICE_REFERENTIEL_ID" NUMBER(*,0) NOT NULL ENABLE, + "HEURES" FLOAT(126) DEFAULT 0 NOT NULL ENABLE, + "HISTO_CREATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_CREATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_MODIFICATION" DATE DEFAULT SYSDATE NOT NULL ENABLE, + "HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE, + "HISTO_DESTRUCTION" DATE, + "HISTO_DESTRUCTEUR_ID" NUMBER(*,0), CONSTRAINT "VOLUME_HORAIRE_REF_PK" PRIMARY KEY ("ID") ENABLE ) ; -- WF_DEP_BLOQUANTE -CREATE TABLE "WF_DEP_BLOQUANTE" - ( "ID" NUMBER(*,0) NOT NULL ENABLE, - "WF_ETAPE_DEP_ID" NUMBER(*,0) NOT NULL ENABLE, - "TBL_WORKFLOW_ID" NUMBER(*,0) NOT NULL ENABLE, - "TO_DELETE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, +CREATE TABLE "WF_DEP_BLOQUANTE" + ( "ID" NUMBER(*,0) NOT NULL ENABLE, + "WF_ETAPE_DEP_ID" NUMBER(*,0) NOT NULL ENABLE, + "TBL_WORKFLOW_ID" NUMBER(*,0) NOT NULL ENABLE, + "TO_DELETE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, CONSTRAINT "WF_DEPS_BLOQUANTES_PK" PRIMARY KEY ("ID") ENABLE ) ; -- WF_ETAPE -CREATE TABLE "WF_ETAPE" - ( "ID" NUMBER(*,0) NOT NULL ENABLE, - "CODE" VARCHAR2(64 CHAR) NOT NULL ENABLE, - "ORDRE" NUMBER(*,0) DEFAULT 1 NOT NULL ENABLE, - "DESC_NON_FRANCHIE" VARCHAR2(250 CHAR) NOT NULL ENABLE, - "DESC_SANS_OBJECTIF" VARCHAR2(250 CHAR), - "LIBELLE_AUTRES" VARCHAR2(150 CHAR) NOT NULL ENABLE, - "LIBELLE_INTERVENANT" VARCHAR2(150 CHAR) NOT NULL ENABLE, - "OBLIGATOIRE" NUMBER(1,0) DEFAULT 1 NOT NULL ENABLE, - "ROUTE" VARCHAR2(200 CHAR) NOT NULL ENABLE, - "ROUTE_INTERVENANT" VARCHAR2(200 CHAR), - CONSTRAINT "WF_ETAPE_CODE_UN" UNIQUE ("CODE") ENABLE, - CONSTRAINT "WF_ETAPE_ORDRE_UN" UNIQUE ("ORDRE") ENABLE, +CREATE TABLE "WF_ETAPE" + ( "ID" NUMBER(*,0) NOT NULL ENABLE, + "CODE" VARCHAR2(64 CHAR) NOT NULL ENABLE, + "ORDRE" NUMBER(*,0) DEFAULT 1 NOT NULL ENABLE, + "DESC_NON_FRANCHIE" VARCHAR2(250 CHAR) NOT NULL ENABLE, + "DESC_SANS_OBJECTIF" VARCHAR2(250 CHAR), + "LIBELLE_AUTRES" VARCHAR2(150 CHAR) NOT NULL ENABLE, + "LIBELLE_INTERVENANT" VARCHAR2(150 CHAR) NOT NULL ENABLE, + "OBLIGATOIRE" NUMBER(1,0) DEFAULT 1 NOT NULL ENABLE, + "ROUTE" VARCHAR2(200 CHAR) NOT NULL ENABLE, + "ROUTE_INTERVENANT" VARCHAR2(200 CHAR), + CONSTRAINT "WF_ETAPE_CODE_UN" UNIQUE ("CODE") ENABLE, + CONSTRAINT "WF_ETAPE_ORDRE_UN" UNIQUE ("ORDRE") ENABLE, CONSTRAINT "WF_ETAPE_PK" PRIMARY KEY ("ID") ENABLE ) ; -- WF_ETAPE_DEP -CREATE TABLE "WF_ETAPE_DEP" - ( "ETAPE_SUIV_ID" NUMBER(*,0) NOT NULL ENABLE, - "ETAPE_PREC_ID" NUMBER(*,0) NOT NULL ENABLE, - "LOCALE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, - "INTEGRALE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, - "PARTIELLE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, - "ID" NUMBER(*,0) NOT NULL ENABLE, - "ACTIVE" NUMBER(1,0) DEFAULT 1 NOT NULL ENABLE, - "TYPE_INTERVENANT_ID" NUMBER(*,0), - "OBLIGATOIRE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, - CONSTRAINT "WF_ETAPE_DEP_PK" PRIMARY KEY ("ID") ENABLE, +CREATE TABLE "WF_ETAPE_DEP" + ( "ETAPE_SUIV_ID" NUMBER(*,0) NOT NULL ENABLE, + "ETAPE_PREC_ID" NUMBER(*,0) NOT NULL ENABLE, + "LOCALE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, + "INTEGRALE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, + "PARTIELLE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, + "ID" NUMBER(*,0) NOT NULL ENABLE, + "ACTIVE" NUMBER(1,0) DEFAULT 1 NOT NULL ENABLE, + "TYPE_INTERVENANT_ID" NUMBER(*,0), + "OBLIGATOIRE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, + CONSTRAINT "WF_ETAPE_DEP_PK" PRIMARY KEY ("ID") ENABLE, CONSTRAINT "WF_ETAPE_DEP__UN" UNIQUE ("ETAPE_SUIV_ID", "ETAPE_PREC_ID") ENABLE ) ; -------------------------------------------------- --- Packages +-- views -------------------------------------------------- --- OSE_CHARGENS -CREATE OR REPLACE PACKAGE "OSE_CHARGENS" AS - ENABLE_TRIGGER_EFFECTIFS BOOLEAN DEFAULT TRUE; +-- V_AGREMENT_EXPORT_CSV +CREATE OR REPLACE FORCE VIEW "V_AGREMENT_EXPORT_CSV" ("ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID", "ANNEE", "STRUCTURE_LIBELLE", "INTERVENANT_CODE", "INTERVENANT_NOM_USUEL", "INTERVENANT_NOM_PATRONYMIQUE", "INTERVENANT_PRENOM", "INTERVENANT_STATUT_LIBELLE", "PREMIER_RECRUTEMENT", "DISCIPLINE", "HETD_FI", "HETD_FA", "HETD_FC", "HETD_TOTAL", "TYPE_AGREMENT", "AGREE", "DATE_DECISION", "MODIFICATEUR", "DATE_MODIFICATION") AS + WITH heures_s AS ( + SELECT + i.id intervenant_id, + COALESCE(ep.structure_id,i.structure_id) structure_id, + SUM(frs.service_fi) service_fi, + SUM(frs.service_fa) service_fa, + SUM(frs.service_fc) service_fc, + SUM(frs.heures_compl_fi) heures_compl_fi, + SUM(frs.heures_compl_fa) heures_compl_fa, + SUM(frs.heures_compl_fc) heures_compl_fc, + SUM(frs.heures_compl_fc_majorees) heures_compl_fc_majorees, + SUM(frs.total) total + FROM + formule_resultat_service frs + JOIN type_volume_horaire tvh ON tvh.code = 'PREVU' + JOIN etat_volume_horaire evh ON evh.code = 'valide' + JOIN formule_resultat fr ON fr.id = frs.formule_resultat_id + AND fr.type_volume_horaire_id = tvh.id + AND fr.etat_volume_horaire_id = evh.id + JOIN intervenant i ON i.id = fr.intervenant_id + JOIN service s ON s.id = frs.service_id + LEFT JOIN element_pedagogique ep ON ep.id = s.element_pedagogique_id + GROUP BY + i.id, + ep.structure_id, + i.structure_id +) +SELECT + a.id annee_id, + i.id intervenant_id, + s.id structure_id, - TYPE tnoeud_ids IS TABLE OF NUMERIC; + a.libelle annee, + s.libelle_court structure_libelle, + i.code intervenant_code, + i.nom_usuel intervenant_nom_usuel, + i.nom_patronymique intervenant_nom_patronymique, + i.prenom intervenant_prenom, - FUNCTION GET_SCENARIO RETURN NUMERIC; - PROCEDURE SET_SCENARIO( SCENARIO NUMERIC ); + si.libelle intervenant_statut_libelle, + i.premier_recrutement premier_recrutement, + d.libelle_court discipline, - FUNCTION GET_NOEUD RETURN NUMERIC; - PROCEDURE SET_NOEUD( NOEUD NUMERIC ); + COALESCE(heures_s.service_fi, fr.service_fi) + + COALESCE(heures_s.heures_compl_fi, fr.heures_compl_fi) + hetd_fi, + COALESCE(heures_s.service_fa, fr.service_fa) + + COALESCE(heures_s.heures_compl_fa, fr.heures_compl_fa) + hetd_fa, + COALESCE(heures_s.service_fc, fr.service_fc) + + COALESCE(heures_s.heures_compl_fc, fr.heures_compl_fc) + + COALESCE(heures_s.heures_compl_fc_majorees, fr.heures_compl_fc_majorees) + hetd_fc, + COALESCE(heures_s.total, fr.total) hetd_total, - FUNCTION CALC_COEF( choix_min NUMERIC, choix_max NUMERIC, poids NUMERIC, max_poids NUMERIC, total_poids NUMERIC, nb_choix NUMERIC ) RETURN FLOAT; - PROCEDURE DEM_CALC_SUB_EFFECTIF( scenario_noeud_id NUMERIC, type_heures_id NUMERIC, etape_id NUMERIC, effectif FLOAT ); - PROCEDURE CALC_SUB_EFFECTIF_DEM; - PROCEDURE CALC_ALL_EFFECTIFS; - PROCEDURE CALC_EFFECTIF( noeud_id NUMERIC, scenario_id NUMERIC, type_heures_id NUMERIC DEFAULT NULL, etape_id NUMERIC DEFAULT NULL); - PROCEDURE CALC_SUB_EFFECTIF2( noeud_id NUMERIC, scenario_id NUMERIC, type_heures_id NUMERIC DEFAULT NULL, etape_id NUMERIC DEFAULT NULL); + tagr.libelle type_agrement, + CASE WHEN agr.id IS NULL THEN 0 ELSE 1 END agree, + agr.date_decision date_decision, + u.display_name modificateur, + agr.histo_modification date_modification +FROM + tbl_agrement ta + JOIN intervenant i ON i.id = ta.intervenant_id + JOIN statut_intervenant si ON si.id = i.statut_id + JOIN annee a ON a.id = ta.annee_id + JOIN type_agrement tagr ON tagr.id = ta.type_agrement_id + JOIN type_volume_horaire tvh ON tvh.code = 'PREVU' + JOIN etat_volume_horaire evh ON evh.code = 'valide' - PROCEDURE DUPLIQUER( source_id NUMERIC, destination_id NUMERIC, utilisateur_id NUMERIC, structure_id NUMERIC, noeuds VARCHAR2 DEFAULT '', liens VARCHAR2 DEFAULT '' ); - PROCEDURE CONTROLE_SEUIL( ouverture NUMERIC, dedoublement NUMERIC ); + LEFT JOIN structure s ON s.id = ta.structure_id + LEFT JOIN agrement agr ON agr.id = ta.agrement_id + LEFT JOIN utilisateur u ON u.id = agr.histo_modificateur_id + LEFT JOIN discipline d ON d.id = i.discipline_id - FUNCTION GET_SCENARIO_NOEUD_ID( scenario_id NUMERIC, noeud_id NUMERIC ) RETURN NUMERIC; - FUNCTION CREER_SCENARIO_NOEUD( scenario_id NUMERIC, noeud_id NUMERIC, assiduite FLOAT DEFAULT 1 ) RETURN NUMERIC; + LEFT JOIN formule_resultat fr ON fr.intervenant_id = i.id + AND fr.type_volume_horaire_id = tvh.id + AND fr.etat_volume_horaire_id = evh.id - PROCEDURE ADD_SCENARIO_NOEUD_EFFECTIF( scenario_noeud_id NUMERIC, type_heures_id NUMERIC, etape_id NUMERIC, effectif FLOAT ); + LEFT JOIN heures_s ON heures_s.intervenant_id = i.id + AND heures_s.structure_id = s.id; - PROCEDURE INIT_SCENARIO_NOEUD_EFFECTIF( - etape_id NUMERIC, - scenario_id NUMERIC, - type_heures_id NUMERIC, - effectif FLOAT, - surcharge BOOLEAN DEFAULT FALSE - ); +-- V_CENTRE_COUT_STRUCTURE +CREATE OR REPLACE FORCE VIEW "V_CENTRE_COUT_STRUCTURE" ("CENTRE_COUT_ID", "STRUCTURE_ID") AS + SELECT + ccs.centre_cout_id, + ccs.structure_id +FROM + centre_cout_structure ccs +WHERE + ccs.histo_destruction IS NULL; - PROCEDURE SET_PRECALC_HEURES_PARAMS( - annee_id NUMERIC DEFAULT NULL, - structure_id NUMERIC DEFAULT NULL, - scenario_id NUMERIC DEFAULT NULL, - type_heures_id NUMERIC DEFAULT NULL, - etape_id NUMERIC DEFAULT NULL, - noeud_ids tnoeud_ids DEFAULT NULL - ); +-- V_CENTRE_COUT_TYPE_HEURES +CREATE OR REPLACE FORCE VIEW "V_CENTRE_COUT_TYPE_HEURES" ("CENTRE_COUT_ID", "TYPE_HEURES_ID") AS + select + cc.id centre_cout_id, + th.id type_heures_id +from + centre_cout cc + join type_ressource tr on tr.id = cc.type_ressource_id + join cc_activite cca on cca.id = cc.activite_id + join type_heures th on th.code = decode(tr.fi + cca.fi, 2, 'fi', null) - FUNCTION MATCH_PRECALC_HEURES_PARAMS( - annee_id NUMERIC DEFAULT NULL, - structure_id NUMERIC DEFAULT NULL, - scenario_id NUMERIC DEFAULT NULL, - type_heures_id NUMERIC DEFAULT NULL, - etape_id NUMERIC DEFAULT NULL, - noeud_id NUMERIC DEFAULT NULL - ) RETURN NUMERIC; +union all +select + cc.id centre_cout_id, + th.id type_heures_id +from + centre_cout cc + join type_ressource tr on tr.id = cc.type_ressource_id + join cc_activite cca on cca.id = cc.activite_id + join type_heures th on th.code = decode(tr.fc + cca.fc, 2, 'fc', null) -END OSE_CHARGENS; -/ +union all --- OSE_DIVERS -CREATE OR REPLACE PACKAGE "OSE_DIVERS" AS +select + cc.id centre_cout_id, + th.id type_heures_id +from + centre_cout cc + join type_ressource tr on tr.id = cc.type_ressource_id + join cc_activite cca on cca.id = cc.activite_id + join type_heures th on th.code = decode(tr.fa + cca.fa, 2, 'fa', null) - PROCEDURE CALCULER_TABLEAUX_BORD; +union all - FUNCTION GET_OSE_UTILISATEUR_ID RETURN NUMERIC; - FUNCTION GET_OSE_SOURCE_ID RETURN NUMERIC; +select + cc.id centre_cout_id, + th.id type_heures_id +from + centre_cout cc + join type_ressource tr on tr.id = cc.type_ressource_id + join cc_activite cca on cca.id = cc.activite_id + join type_heures th on th.code = decode(tr.referentiel + cca.referentiel, 2, 'referentiel', null) - FUNCTION INTERVENANT_HAS_PRIVILEGE( intervenant_id NUMERIC, privilege_name VARCHAR2 ) RETURN NUMERIC; +union all - FUNCTION implode(i_query VARCHAR2, i_seperator VARCHAR2 DEFAULT ',') RETURN VARCHAR2; +select + cc.id centre_cout_id, + th.id type_heures_id +from + centre_cout cc + join type_ressource tr on tr.id = cc.type_ressource_id + join cc_activite cca on cca.id = cc.activite_id + join type_heures th on th.code = decode(tr.fc_majorees + cca.fc_majorees, 2, 'fc_majorees', null); - PROCEDURE intervenant_horodatage_service( INTERVENANT_ID NUMERIC, TYPE_VOLUME_HORAIRE_ID NUMERIC, REFERENTIEL NUMERIC, HISTO_MODIFICATEUR_ID NUMERIC, HISTO_MODIFICATION DATE ); +-- V_CHARGENS_CALC_EFFECTIF +CREATE OR REPLACE FORCE VIEW "V_CHARGENS_CALC_EFFECTIF" ("NOEUD_ID", "SCENARIO_ID", "SCENARIO_NOEUD_ID", "TYPE_HEURES_ID", "ETAPE_ID", "EFFECTIF") AS + SELECT + gl.noeud_inf_id noeud_id, + snsup.scenario_id scenario_id, + sninf.id scenario_noeud_id, + sne.type_heures_id type_heures_id, + sne.etape_id etape_id, +-- sne.effectif effectif, +-- slsup.choix_minimum choix_minimum, +-- slsup.choix_maximum choix_maximum, +-- COALESCE(slinf.poids,1) poids, +-- COALESCE(sninf.assiduite,1) assiduite, +-- MIN(COALESCE(sl.poids,1)) min_poids, +-- MAX(COALESCE(sl.poids,1)) max_poids, +-- SUM(COALESCE(sl.poids,1)) total_poids, +-- COUNT(*) nb_choix, + OSE_CHARGENS.CALC_COEF( + slsup.choix_minimum, + slsup.choix_maximum, + COALESCE(slinf.poids,1), + MAX(COALESCE(sl.poids,1)), + SUM(COALESCE(sl.poids,1)), + COUNT(*) + ) * sne.effectif effectif +FROM + v_chargens_grands_liens gl + JOIN scenario_noeud snsup ON snsup.noeud_id = gl.noeud_sup_id + AND snsup.histo_destruction IS NULL - FUNCTION NIVEAU_FORMATION_ID_CALC( gtf_id NUMERIC, gtf_pertinence_niveau NUMERIC, niveau NUMERIC DEFAULT NULL ) RETURN NUMERIC; + JOIN scenario_noeud_effectif sne ON sne.scenario_noeud_id = snsup.id - FUNCTION STR_REDUCE( str CLOB ) RETURN CLOB; + LEFT JOIN scenario_lien slsup ON slsup.histo_destruction IS NULL + AND slsup.lien_id = gl.lien_sup_id + AND slsup.scenario_id = snsup.scenario_id - FUNCTION STR_FIND( haystack CLOB, needle VARCHAR2 ) RETURN NUMERIC; + LEFT JOIN scenario_lien slinf ON slinf.histo_destruction IS NULL + AND slinf.lien_id = gl.lien_inf_id + AND slinf.scenario_id = snsup.scenario_id - FUNCTION LIKED( haystack CLOB, needle CLOB ) RETURN NUMERIC; + LEFT JOIN scenario_noeud sninf ON sninf.noeud_id = gl.noeud_inf_id + AND sninf.scenario_id = snsup.scenario_id + AND sninf.histo_destruction IS NULL - FUNCTION CALCUL_TAUX_FI( eff_fi FLOAT, eff_fc FLOAT, eff_fa FLOAT, fi NUMERIC, fc NUMERIC, fa NUMERIC, arrondi NUMERIC DEFAULT 15 ) RETURN FLOAT; + JOIN lien l ON l.noeud_sup_id = gl.noeud_liste_id + AND l.histo_destruction IS NULL - FUNCTION CALCUL_TAUX_FC( eff_fi FLOAT, eff_fc FLOAT, eff_fa FLOAT, fi NUMERIC, fc NUMERIC, fa NUMERIC, arrondi NUMERIC DEFAULT 15 ) RETURN FLOAT; + LEFT JOIN scenario_lien sl ON sl.lien_id = l.id + AND sl.scenario_id = snsup.scenario_id + AND sl.histo_destruction IS NULL - FUNCTION CALCUL_TAUX_FA( eff_fi FLOAT, eff_fc FLOAT, eff_fa FLOAT, fi NUMERIC, fc NUMERIC, fa NUMERIC, arrondi NUMERIC DEFAULT 15 ) RETURN FLOAT; +WHERE + (slsup.actif = 1 OR slsup.actif IS NULL) + AND (slinf.actif = 1 OR slinf.actif IS NULL) + AND (sl.actif = 1 OR sl.actif IS NULL) + AND (snsup.scenario_id = 0 OR NULL IS NULL) + AND (sne.type_heures_id = 0 OR NULL IS NULL) + AND (sne.etape_id = 0 OR NULL IS NULL) +GROUP BY + gl.noeud_sup_id, + gl.noeud_inf_id, + snsup.scenario_id, + sninf.id, + sne.type_heures_id, + sne.etape_id, + sne.effectif, + slsup.choix_minimum, + slsup.choix_maximum, + slinf.poids; - FUNCTION STRUCTURE_UNIV_GET_ID RETURN NUMERIC; +-- V_CHARGENS_EXPORT_CSV +CREATE OR REPLACE FORCE VIEW "V_CHARGENS_EXPORT_CSV" ("ANNEE_ID", "SCENARIO_ID", "STRUCTURE_PORTEUSE_ID", "STRUCTURE_INS_ID", "ANNEE", "STRUCTURE_PORTEUSE_CODE", "STRUCTURE_PORTEUSE_LIBELLE", "ETAPE_PORTEUSE_CODE", "ETAPE_PORTEUSE_LIBELLE", "STRUCTURE_INS_CODE", "STRUCTURE_INS_LIBELLE", "ETAPE_INS_CODE", "ETAPE_INS_LIBELLE", "ELEMENT_CODE", "ELEMENT_LIBELLE", "PERIODE", "DISCIPLINE_CODE", "DISCIPLINE_LIBELLE", "TYPE_HEURES", "TYPE_INTERVENTION", "SEUIL_OUVERTURE", "SEUIL_DEDOUBLEMENT", "ASSIDUITE", "EFFECTIF_ETAPE", "EFFECTIF_ELEMENT", "HEURES_ENS", "GROUPES", "HEURES", "HETD") AS + SELECT + a.id annee_id, + cph.scenario_id scenario_id, + sp.id structure_porteuse_id, + si.id structure_ins_id, - PROCEDURE SYNC_LOG( msg CLOB ); + a.libelle annee, - FUNCTION FORMATTED_RIB (bic VARCHAR2, iban VARCHAR2) RETURN VARCHAR2; + sp.source_code structure_porteuse_code, + sp.libelle_court structure_porteuse_libelle, + eport.code etape_porteuse_code, + eport.libelle etape_porteuse_libelle, - FUNCTION FORMATTED_ADRESSE( - no_voie VARCHAR2, - nom_voie VARCHAR2, - batiment VARCHAR2, - mention_complementaire VARCHAR2, - localite VARCHAR2, - code_postal VARCHAR2, - ville VARCHAR2, - pays_libelle VARCHAR2) - RETURN VARCHAR2; + si.source_code structure_ins_code, + si.libelle_court structure_ins_libelle, + eins.code etape_ins_code, + eins.libelle etape_ins_libelle, - FUNCTION GET_TRIGGER_BODY( TRIGGER_NAME VARCHAR2 ) RETURN VARCHAR2; -END OSE_DIVERS; -/ + ep.code element_code, + ep.libelle element_libelle, + p.libelle_court periode, + d.source_code discipline_code, + d.libelle_court discipline_libelle, + th.libelle_court type_heures, + ti.code type_intervention, --- OSE_EVENT -CREATE OR REPLACE PACKAGE "OSE_EVENT" AS - - PROCEDURE ON_BEFORE_FORMULE_RES_DELETE( INTERVENANT_ID NUMERIC ); - PROCEDURE ON_AFTER_FORMULE_CALC( INTERVENANT_ID NUMERIC ); - -END OSE_EVENT; -/ - --- OSE_FORMULE -CREATE OR REPLACE PACKAGE "OSE_FORMULE" AS - - PACKAGE_SUJET VARCHAR2(80) DEFAULT 'OSE_FORMULE'; - - TYPE t_intervenant IS RECORD ( - structure_id NUMERIC, - annee_id NUMERIC, - heures_decharge FLOAT DEFAULT 0, - heures_service_statutaire FLOAT DEFAULT 0, - heures_service_modifie FLOAT DEFAULT 0, - depassement_service_du_sans_hc FLOAT DEFAULT 0 - ); + cph.ouverture seuil_ouverture, + cph.dedoublement seuil_dedoublement, + cph.assiduite assiduite, + sne.effectif effectif_etape, + cph.effectif effectif_element, + cph.heures_ens heures_ens, + cph.groupes groupes, + cph.heures heures, + cph.hetd hetd + FROM + tbl_chargens cph + JOIN annee a ON a.id = cph.annee_id + JOIN structure sp ON sp.id = cph.structure_id + JOIN etape eport ON eport.id = cph.etape_id + JOIN etape eins ON eins.id = cph.etape_ens_id + JOIN structure si ON si.id = eins.structure_id + JOIN element_pedagogique ep ON ep.id = cph.element_pedagogique_id + JOIN type_heures th ON th.id = cph.type_heures_id + JOIN type_intervention ti ON ti.id = cph.type_intervention_id + LEFT JOIN periode p ON p.id = ep.periode_id + LEFT JOIN discipline d ON d.id = ep.discipline_id + LEFT JOIN noeud n ON n.etape_id = eins.id + AND n.histo_destruction IS NULL - TYPE t_type_etat_vh IS RECORD ( - type_volume_horaire_id NUMERIC, - etat_volume_horaire_id NUMERIC - ); - TYPE t_lst_type_etat_vh IS TABLE OF t_type_etat_vh INDEX BY PLS_INTEGER; + LEFT JOIN scenario_noeud sn ON sn.noeud_id = n.id + AND sn.histo_destruction IS NULL + AND sn.scenario_id = cph.scenario_id - TYPE t_service_ref IS RECORD ( - id NUMERIC, - structure_id NUMERIC - ); - TYPE t_lst_service_ref IS TABLE OF t_service_ref INDEX BY PLS_INTEGER; + LEFT JOIN scenario_noeud_effectif sne ON sne.scenario_noeud_id = sn.id + AND sne.type_heures_id = cph.type_heures_id + AND sne.etape_id = n.etape_id +ORDER BY + structure_porteuse_code, + etape_porteuse_code, + structure_ins_code, + etape_ins_code, + element_code, + type_heures, + type_intervention; - TYPE t_service IS RECORD ( - id NUMERIC, - taux_fi FLOAT DEFAULT 1, - taux_fa FLOAT DEFAULT 0, - taux_fc FLOAT DEFAULT 0, - ponderation_service_du FLOAT DEFAULT 1, - ponderation_service_compl FLOAT DEFAULT 1, - structure_aff_id NUMERIC, - structure_ens_id NUMERIC - ); - TYPE t_lst_service IS TABLE OF t_service INDEX BY PLS_INTEGER; +-- V_CHARGENS_GRANDS_LIENS +CREATE OR REPLACE FORCE VIEW "V_CHARGENS_GRANDS_LIENS" ("NOEUD_SUP_ID", "LIEN_SUP_ID", "NOEUD_LISTE_ID", "LIEN_INF_ID", "NOEUD_INF_ID") AS + SELECT + nsup.id noeud_sup_id, + lsup.id lien_sup_id, + nl.id noeud_liste_id, + linf.id lien_inf_id, + ninf.id noeud_inf_id +FROM + noeud nsup - TYPE t_volume_horaire_ref IS RECORD ( - id NUMERIC, - service_referentiel_id NUMERIC, - type_volume_horaire_id NUMERIC, - etat_volume_horaire_id NUMERIC, - etat_volume_horaire_ordre NUMERIC, - heures FLOAT DEFAULT 0 - ); - TYPE t_lst_volume_horaire_ref IS TABLE OF t_volume_horaire_ref INDEX BY PLS_INTEGER; + JOIN lien lsup ON lsup.noeud_sup_id = nsup.id + AND lsup.histo_destruction IS NULL - TYPE t_volume_horaire IS RECORD ( - id NUMERIC, - service_id NUMERIC, - type_volume_horaire_id NUMERIC, - etat_volume_horaire_id NUMERIC, - etat_volume_horaire_ordre NUMERIC, - heures FLOAT DEFAULT 0, - taux_service_du FLOAT DEFAULT 1, - taux_service_compl FLOAT DEFAULT 1 - ); - TYPE t_lst_volume_horaire IS TABLE OF t_volume_horaire INDEX BY PLS_INTEGER; + JOIN noeud nl ON nl.liste = 1 + AND nl.histo_destruction IS NULL + AND nl.id = lsup.noeud_inf_id + JOIN lien linf ON linf.noeud_sup_id = nl.id + AND linf.histo_destruction IS NULL + JOIN noeud ninf ON ninf.id = linf.noeud_inf_id + AND ninf.histo_destruction IS NULL + AND ninf.liste = 0 +WHERE + nsup.histo_destruction IS NULL + AND nsup.liste = 0; - TYPE t_resultat_hetd IS RECORD ( - service_fi FLOAT DEFAULT 0, - service_fa FLOAT DEFAULT 0, - service_fc FLOAT DEFAULT 0, - heures_compl_fi FLOAT DEFAULT 0, - heures_compl_fa FLOAT DEFAULT 0, - heures_compl_fc FLOAT DEFAULT 0, - heures_compl_fc_majorees FLOAT DEFAULT 0 - ); - TYPE t_lst_resultat_hetd IS TABLE OF t_resultat_hetd INDEX BY PLS_INTEGER; +-- V_CHARGENS_PRECALCUL_HEURES +CREATE OR REPLACE FORCE VIEW "V_CHARGENS_PRECALCUL_HEURES" ("ANNEE_ID", "NOEUD_ID", "SCENARIO_ID", "TYPE_HEURES_ID", "TYPE_INTERVENTION_ID", "ELEMENT_PEDAGOGIQUE_ID", "ETAPE_ID", "ETAPE_ENS_ID", "STRUCTURE_ID", "OUVERTURE", "DEDOUBLEMENT", "ASSIDUITE", "EFFECTIF", "HEURES_ENS", "GROUPES", "HEURES", "HETD") AS + WITH t AS ( +SELECT + n.annee_id annee_id, + n.noeud_id noeud_id, + sn.scenario_id scenario_id, + sne.type_heures_id type_heures_id, + ti.id type_intervention_id, - TYPE t_resultat_hetd_ref IS RECORD ( - service_referentiel FLOAT DEFAULT 0, - heures_compl_referentiel FLOAT DEFAULT 0 - ); - TYPE t_lst_resultat_hetd_ref IS TABLE OF t_resultat_hetd_ref INDEX BY PLS_INTEGER; + n.element_pedagogique_id element_pedagogique_id, + n.element_pedagogique_etape_id etape_id, + sne.etape_id etape_ens_id, + n.structure_id structure_id, - TYPE t_resultat IS RECORD ( - intervenant_id NUMERIC, - type_volume_horaire_id NUMERIC, - etat_volume_horaire_id NUMERIC, - service_du FLOAT DEFAULT 0, - solde FLOAT DEFAULT 0, - sous_service FLOAT DEFAULT 0, - heures_compl FLOAT DEFAULT 0, - volume_horaire t_lst_resultat_hetd, - volume_horaire_ref t_lst_resultat_hetd_ref - ); + vhe.heures heures, + vhe.heures * ti.taux_hetd_service hetd, - d_intervenant t_intervenant; - d_type_etat_vh t_lst_type_etat_vh; - d_service_ref t_lst_service_ref; - d_service t_lst_service; - d_volume_horaire_ref t_lst_volume_horaire_ref; - d_volume_horaire t_lst_volume_horaire; - d_resultat t_resultat; + GREATEST(COALESCE(sns.ouverture, 1),1) ouverture, + GREATEST(COALESCE(sns.dedoublement, snsetp.dedoublement, csdd.dedoublement,1),1) dedoublement, + COALESCE(sns.assiduite,1) assiduite, + sne.effectif*COALESCE(sns.assiduite,1) effectif, - FUNCTION GET_INTERVENANT_ID RETURN NUMERIC; - FUNCTION GET_DATE_OBS RETURN DATE; - FUNCTION SET_DATE_OBS( DATE_OBS DATE DEFAULT NULL ) RETURN DATE; + SUM(sne.effectif*COALESCE(sns.assiduite,1)) OVER (PARTITION BY n.noeud_id, sn.scenario_id, ti.id) t_effectif - PROCEDURE SET_DEBUG_LEVEL( DEBUG_LEVEL NUMERIC ); - FUNCTION GET_DEBUG_LEVEL RETURN NUMERIC; +FROM + scenario_noeud_effectif sne + JOIN etape e ON e.id = sne.etape_id + AND e.histo_destruction IS NULL - FUNCTION GET_TAUX_HORAIRE_HETD( DATE_OBS DATE DEFAULT NULL ) RETURN FLOAT; - PROCEDURE UPDATE_ANNEE_TAUX_HETD; + JOIN scenario_noeud sn ON sn.id = sne.scenario_noeud_id + AND sn.histo_destruction IS NULL - PROCEDURE CALCULER( INTERVENANT_ID NUMERIC ); - PROCEDURE CALCULER_TOUT( ANNEE_ID NUMERIC DEFAULT NULL ); -- mise à jour de TOUTES les données ! ! ! ! - PROCEDURE CALCULER_TBL( PARAMS UNICAEN_TBL.T_PARAMS ); + JOIN tbl_noeud n ON n.noeud_id = sn.noeud_id - PROCEDURE SET_INTERVENANT(INTERVENANT_ID NUMERIC DEFAULT NULL); - FUNCTION GET_INTERVENANT RETURN NUMERIC; - FUNCTION MATCH_INTERVENANT(INTERVENANT_ID NUMERIC DEFAULT NULL) RETURN NUMERIC; -END OSE_FORMULE; -/ + JOIN volume_horaire_ens vhe ON vhe.element_pedagogique_id = n.element_pedagogique_id + AND vhe.histo_destruction IS NULL + AND vhe.heures > 0 --- OSE_HISTO -CREATE OR REPLACE PACKAGE "OSE_HISTO" AS + JOIN type_intervention ti ON ti.id = vhe.type_intervention_id - FUNCTION FILTRE( histo_debut NUMERIC, histo_fin NUMERIC ) RETURN NUMERIC; + LEFT JOIN tbl_noeud netp ON netp.etape_id = e.id -END OSE_HISTO; -/ + LEFT JOIN scenario_noeud snetp ON snetp.scenario_id = sn.scenario_id + AND snetp.noeud_id = netp.noeud_id + AND snetp.histo_destruction IS NULL --- OSE_PAIEMENT -CREATE OR REPLACE PACKAGE "OSE_PAIEMENT" AS + LEFT JOIN scenario_noeud_seuil snsetp ON snsetp.scenario_noeud_id = snetp.id + AND snsetp.type_intervention_id = ti.id - PROCEDURE CHECK_BAD_PAIEMENTS( FORMULE_RES_SERVICE_ID NUMERIC DEFAULT NULL, FORMULE_RES_SERVICE_REF_ID NUMERIC DEFAULT NULL ); + LEFT JOIN tbl_chargens_seuils_def csdd ON csdd.annee_id = n.annee_id + AND csdd.scenario_id = sn.scenario_id + AND csdd.type_intervention_id = ti.id + AND csdd.groupe_type_formation_id = n.groupe_type_formation_id + AND csdd.structure_id = n.structure_id -END OSE_PAIEMENT; -/ + LEFT JOIN scenario_noeud_seuil sns ON sns.scenario_noeud_id = sn.id + AND sns.type_intervention_id = ti.id +WHERE + 1 = OSE_CHARGENS.MATCH_PRECALC_HEURES_PARAMS( n.annee_id, n.structure_id, sn.scenario_id, sne.type_heures_id, sne.etape_id, n.noeud_id ) +) +SELECT + annee_id, + noeud_id, + scenario_id, + type_heures_id, + type_intervention_id, --- OSE_PARAMETRE -CREATE OR REPLACE PACKAGE "OSE_PARAMETRE" AS + element_pedagogique_id, + etape_id, + etape_ens_id, + structure_id, - function get_etablissement return Numeric; - function get_annee return Numeric; - function get_annee_import return Numeric; - function get_ose_user return Numeric; - function get_drh_structure_id return Numeric; - function get_date_fin_saisie_permanents RETURN DATE; - function get_ddeb_saisie_serv_real RETURN DATE; - function get_dfin_saisie_serv_real RETURN DATE; - function get_formule_package_name RETURN VARCHAR2; - function get_formule_function_name RETURN VARCHAR2; + ouverture, + dedoublement, + assiduite, + effectif, + heures heures_ens, + --t_effectif, -END OSE_PARAMETRE; -/ + CASE WHEN t_effectif < ouverture THEN 0 ELSE + CEIL( t_effectif / dedoublement ) * effectif / t_effectif + END groupes, --- OSE_TEST -CREATE OR REPLACE PACKAGE "OSE_TEST" AS + CASE WHEN t_effectif < ouverture THEN 0 ELSE + CEIL( t_effectif / dedoublement ) * heures * effectif / t_effectif + END heures, - DEBUG_ENABLED BOOLEAN DEFAULT FALSE; + CASE WHEN t_effectif < ouverture THEN 0 ELSE + CEIL( t_effectif / dedoublement ) * hetd * effectif / t_effectif + END hetd - -- SET SERVEROUTPUT ON +FROM + t; - PROCEDURE SHOW_SUCCES; - - PROCEDURE HIDE_SUCCES; - - PROCEDURE ECHO( MSG CLOB ); - - PROCEDURE INIT; - - PROCEDURE SHOW_STATS; - - PROCEDURE DEBUT( TEST_NAME CLOB ); - - PROCEDURE FIN; - - PROCEDURE ASSERT( condition BOOLEAN, MSG CLOB ); - - PROCEDURE HOROINIT; +-- V_CHARGENS_SEUILS_DED_DEF +CREATE OR REPLACE FORCE VIEW "V_CHARGENS_SEUILS_DED_DEF" ("NOEUD_ID", "SCENARIO_ID", "TYPE_INTERVENTION_ID", "DEDOUBLEMENT") AS + WITH tisc AS ( + SELECT DISTINCT + sc.type_intervention_id, + sc.scenario_id + FROM + seuil_charge sc + WHERE + sc.histo_destruction IS NULL +) +SELECT + n.noeud_id noeud_id, + tisc.scenario_id, + tisc.type_intervention_id, + COALESCE(snsetp.dedoublement, tcsd.dedoublement) dedoublement +FROM + tbl_noeud n + JOIN tisc ON 1=1 - PROCEDURE HORODATAGE( msg VARCHAR2 ); + LEFT JOIN scenario_noeud snetp ON snetp.noeud_id = n.noeud_etape_id + AND snetp.scenario_id = tisc.scenario_id + AND snetp.histo_destruction IS NULL - FUNCTION GET_STRUCTURE_BY_ID( id NUMERIC ) RETURN structure%rowtype; + LEFT JOIN scenario_noeud_seuil snsetp ON snsetp.scenario_noeud_id = snetp.id + AND snsetp.type_intervention_id = tisc.type_intervention_id -END OSE_TEST; -/ + LEFT JOIN tbl_chargens_seuils_def tcsd ON tcsd.annee_id = n.annee_id + AND tcsd.scenario_id = tisc.scenario_id + AND tcsd.groupe_type_formation_id = n.groupe_type_formation_id + AND tcsd.type_intervention_id = tisc.type_intervention_id +WHERE + COALESCE(snsetp.dedoublement, tcsd.dedoublement) IS NOT NULL; --- OSE_VALIDATION -CREATE OR REPLACE PACKAGE "OSE_VALIDATION" AS +-- V_CTL_SERVICES_ODF_HISTO +CREATE OR REPLACE FORCE VIEW "V_CTL_SERVICES_ODF_HISTO" ("PRENOM", "NOM_USUEL", "ELEMENT", "ETAPE", "TYPE_INTERVENTION", "HEURES", "HAS_CONTRAT", "HAS_VALIDATION", "ELEMENT_SUPPRIME", "ETAPE_SUPPRIMEE", "ETABLISSEMENT_SUPPRIME") AS + with vh as ( + SELECT + vh.service_id, + ti.code type_intervention, + SUM(heures) heures, + CASE WHEN vh.contrat_id IS NULL THEN 0 ELSE 1 END has_contrat, + CASE WHEN (SELECT COUNT(*) FROM validation_vol_horaire vvh WHERE vvh.volume_horaire_id = vh.id) = 1 THEN 1 ELSE 0 END has_validation + FROM + volume_horaire vh + JOIN type_volume_horaire tvh ON tvh.id = vh.type_volume_horaire_id + JOIN type_intervention ti ON ti.id = vh.type_intervention_id + WHERE + vh.histo_destruction IS NULL + AND tvh.code = 'PREVU' + GROUP BY + vh.id, ti.code, vh.service_id, vh.contrat_id +) +SELECT + i.prenom, i.nom_usuel, + ep.source_code "ELEMENT", + e.source_code etape, - FUNCTION can_devalider ( v validation%rowtype ) RETURN varchar2; + vh.type_intervention, + vh.heures, + vh.has_contrat, + vh.has_validation, + CASE WHEN ep.histo_destruction IS NOT NULL THEN 1 ELSE 0 END element_supprime, + CASE WHEN e.histo_destruction IS NOT NULL THEN 1 ELSE 0 END etape_supprimee, + CASE WHEN et.histo_destruction IS NOT NULL THEN 1 ELSE 0 END etablissement_supprime +FROM + service s + JOIN intervenant i ON i.id = s.intervenant_id + LEFT JOIN element_pedagogique ep ON ep.id = s.element_pedagogique_id + LEFT JOIN etape e ON e.id = ep.etape_id + LEFT JOIN etablissement et ON et.id = s.etablissement_id + LEFT JOIN vh ON vh.service_id = s.id +WHERE + s.histo_destruction IS NULL + AND ( + (ep.id IS NOT NULL AND ep.histo_destruction IS NOT NULL) + OR + (e.id IS NOT NULL AND e.histo_destruction IS NOT NULL) + OR + (et.id IS NOT NULL AND et.histo_destruction IS NOT NULL) + ) +order by + nom_usuel, prenom, etape, "ELEMENT", heures; -END OSE_VALIDATION; -/ +-- V_CTL_VH_MAUVAIS_SEMESTRE +CREATE OR REPLACE FORCE VIEW "V_CTL_VH_MAUVAIS_SEMESTRE" ("ID", "NOM_USUEL", "PRENOM", "HEURES", "VALIDATION_ID") AS + SELECT + vh.id, + i.nom_usuel, i.prenom, + vh.heures, + vvh.validation_id +FROM + volume_horaire vh + JOIN type_volume_horaire tvh ON tvh.id = vh.type_volume_horaire_id + JOIN service s ON s.id = vh.service_id + JOIN element_pedagogique ep ON ep.id = s.element_pedagogique_id + JOIN intervenant i ON i.id = s.intervenant_id + LEFT JOIN VALIDATION_VOL_HORAIRE vvh on VVH.VOLUME_HORAIRE_ID = vh.id +WHERE + tvh.code = 'PREVU' + AND ep.periode_id IS NOT NULL + AND vh.periode_id <> ep.periode_id +ORDER BY + nom_usuel, prenom, heures; --- OSE_WORKFLOW -CREATE OR REPLACE PACKAGE "OSE_WORKFLOW" AS +-- V_ELEMENT_TYPE_HEURES +CREATE OR REPLACE FORCE VIEW "V_ELEMENT_TYPE_HEURES" ("ELEMENT_PEDAGOGIQUE_ID", "TYPE_HEURES_ID") AS + select ep.id element_pedagogique_id, th.id type_heures_id + from element_pedagogique ep + join type_heures th on th.code = decode(ep.fi, 1, 'fi', null) +union all + select ep.id element_pedagogique_id, th.id type_heures_id + from element_pedagogique ep + join type_heures th on th.code = decode(ep.fc, 1, 'fc', null) +union all + select ep.id element_pedagogique_id, th.id type_heures_id + from element_pedagogique ep + join type_heures th on th.code = decode(ep.fa, 1, 'fa', null); - PACKAGE_SUJET VARCHAR2(80) DEFAULT 'OSE_WORKFLOW'; +-- V_ELEMENT_TYPE_INTERVENTION +CREATE OR REPLACE FORCE VIEW "V_ELEMENT_TYPE_INTERVENTION" ("TYPE_INTERVENTION_ID", "ELEMENT_PEDAGOGIQUE_ID") AS + SELECT + type_intervention_id, + element_pedagogique_id +FROM + type_intervention_ep tie + JOIN type_intervention ti ON ti.id = tie.type_intervention_id +WHERE + tie.histo_destruction IS NULL +ORDER BY + ti.ordre; - PROCEDURE CALCULER( INTERVENANT_ID NUMERIC ); - PROCEDURE CALCULER_TOUT( ANNEE_ID NUMERIC DEFAULT NULL ); - PROCEDURE CALCULER_TBL( PARAMS UNICAEN_TBL.T_PARAMS ); +-- V_ELEMENT_TYPE_INTERV_POSSIBLE +CREATE OR REPLACE FORCE VIEW "V_ELEMENT_TYPE_INTERV_POSSIBLE" ("TYPE_INTERVENTION_ID", "ELEMENT_PEDAGOGIQUE_ID") AS + SELECT + ti.id type_intervention_id, + ep.id element_pedagogique_id +FROM + element_pedagogique ep - PROCEDURE DEP_CHECK( etape_suiv_id NUMERIC, etape_prec_id NUMERIC ); + JOIN type_intervention ti ON ep.annee_id BETWEEN COALESCE(ti.annee_debut_id,ep.annee_id) AND COALESCE(ti.annee_fin_id, ep.annee_id) + AND ti.histo_destruction IS NULL - PROCEDURE SET_INTERVENANT(INTERVENANT_ID NUMERIC DEFAULT NULL); - FUNCTION GET_INTERVENANT RETURN NUMERIC; - FUNCTION MATCH_INTERVENANT(INTERVENANT_ID NUMERIC DEFAULT NULL) RETURN NUMERIC; -END OSE_WORKFLOW; -/ + LEFT JOIN type_intervention_structure tis ON tis.type_intervention_id = ti.id + AND tis.structure_id = ep.structure_id + AND ep.annee_id BETWEEN COALESCE(tis.annee_debut_id,ep.annee_id) AND COALESCE(tis.annee_fin_id, ep.annee_id) + AND tis.histo_destruction IS NULL +WHERE + ep.histo_destruction IS NULL + AND COALESCE( tis.visible, ti.visible ) = 1 + AND (ti.regle_foad = 0 OR ep.taux_foad > 0) + AND (ti.regle_fc = 0 OR ep.taux_fc > 0); --- UCBN_LDAP -CREATE OR REPLACE PACKAGE "UCBN_LDAP" AUTHID CURRENT_USER AS - ldap_sess DBMS_LDAP.SESSION := NULL ; -- Ne met a NULL qu'une seule fois par session!!!! - last_used NUMBER ; - TYPE ARRAY_STR IS VARRAY(64) OF VARCHAR2(256 char); - a_multi ARRAY_STR ; - FUNCTION version RETURN VARCHAR2 ; - FUNCTION get(filtre IN VARCHAR2, attribut IN VARCHAR2, v_multi IN VARCHAR2 DEFAULT 'N', a_multi OUT ARRAY_STR) RETURN VARCHAR2 ; - FUNCTION alias2mail(ldap_alias IN VARCHAR2) RETURN VARCHAR2 ; - FUNCTION uid2mail(ldap_uid IN VARCHAR2) RETURN VARCHAR2 ; - FUNCTION hid2mail(harpege_uid IN NUMBER) RETURN VARCHAR2 ; - FUNCTION etu2mail(code_etu IN NUMBER) RETURN VARCHAR2 ; - FUNCTION uid2alias(ldap_uid IN VARCHAR2) RETURN VARCHAR2 ; - FUNCTION hid2alias(harpege_uid IN NUMBER) RETURN VARCHAR2 ; - FUNCTION uid2cn(ldap_uid IN VARCHAR2) RETURN VARCHAR2 ; - FUNCTION uid2sn(ldap_uid IN VARCHAR2) RETURN VARCHAR2 ; - FUNCTION uid2givenname(ldap_uid IN VARCHAR2) RETURN VARCHAR2 ; - FUNCTION uid2gn(ldap_uid IN VARCHAR2) RETURN VARCHAR2 ; -- givenname + sn - FUNCTION hidIsPrimaryTeacher(harpege_uid IN NUMBER) RETURN VARCHAR2 ; - FUNCTION hidIsTeacher(harpege_uid IN NUMBER) RETURN VARCHAR2 ; - FUNCTION ldap_connect RETURN NUMBER ; - FUNCTION free RETURN NUMBER ; - PROCEDURE getInvites(l_table IN VARCHAR2) ; -END ucbn_ldap; -/ +-- V_ELEMENT_TYPE_MODULATEUR +CREATE OR REPLACE FORCE VIEW "V_ELEMENT_TYPE_MODULATEUR" ("ELEMENT_PEDAGOGIQUE_ID", "TYPE_MODULATEUR_ID") AS + SELECT + ep.id element_pedagogique_id, + tms.type_modulateur_id type_modulateur_id +FROM + element_pedagogique ep + JOIN structure s ON s.id = ep.structure_id + AND s.histo_destruction IS NULL --- UNICAEN_IMPORT -CREATE OR REPLACE PACKAGE "UNICAEN_IMPORT" AS + JOIN type_modulateur_structure tms ON tms.structure_id = s.id + AND tms.histo_destruction IS NULL + AND ep.annee_id BETWEEN GREATEST(NVL(tms.annee_debut_id,0),ep.annee_id) AND LEAST(NVL(tms.annee_fin_id,9999),ep.annee_id) - z__SYNC_FILRE__z CLOB DEFAULT ''; - z__IGNORE_UPD_COLS__z CLOB DEFAULT ''; +UNION - PROCEDURE set_current_user(p_current_user IN INTEGER); - FUNCTION get_current_user return INTEGER; +SELECT + tm_ep.element_pedagogique_id element_pedagogique_id, + tm_ep.type_modulateur_id type_modulateur_id +FROM + type_modulateur_ep tm_ep +WHERE + tm_ep.histo_destruction IS NULL; - FUNCTION get_current_annee RETURN INTEGER; - PROCEDURE set_current_annee (p_current_annee INTEGER); +-- V_ETAPE_NIVEAU_FORMATION +CREATE OR REPLACE FORCE VIEW "V_ETAPE_NIVEAU_FORMATION" ("ETAPE_ID", "NIVEAU_FORMATION_ID") AS + SELECT + e.id etape_id, + nf.id niveau_formation_id +FROM + etape e + JOIN type_formation tf ON tf.id = e.type_formation_id AND tf.histo_destruction IS NULL + JOIN groupe_type_formation gtf ON gtf.id = tf.groupe_id AND gtf.histo_destruction IS NULL + JOIN v_niveau_formation nf ON nf.code = gtf.libelle_court || e.niveau +WHERE + e.histo_destruction IS NULL + AND gtf.pertinence_niveau = 1 + AND e.niveau IS NOT NULL; - FUNCTION IN_COLUMN_LIST( VALEUR VARCHAR2, CHAMPS CLOB ) RETURN NUMERIC; - PROCEDURE REFRESH_MV( mview_name varchar2 ); - PROCEDURE SYNC_LOG( message CLOB, table_name VARCHAR2 DEFAULT NULL, source_code VARCHAR2 DEFAULT NULL ); +-- V_ETAPE_TYPE_MODULATEUR +CREATE OR REPLACE FORCE VIEW "V_ETAPE_TYPE_MODULATEUR" ("TYPE_MODULATEUR_ID", "ETAPE_ID") AS + SELECT DISTINCT + etm.type_modulateur_id type_modulateur_id, + ep.etape_id etape_id +FROM + v_element_type_modulateur etm + JOIN element_pedagogique ep ON ep.id = etm.element_pedagogique_id AND ep.histo_destruction IS NULL; - PROCEDURE SYNCHRONISATION( table_name VARCHAR2, SYNC_FILRE CLOB DEFAULT '', IGNORE_UPD_COLS CLOB DEFAULT '' ); +-- V_ETAT_PAIEMENT +CREATE OR REPLACE FORCE VIEW "V_ETAT_PAIEMENT" ("PERIODE_PAIEMENT_ID", "STRUCTURE_ID", "INTERVENANT_TYPE_ID", "INTERVENANT_ID", "ANNEE_ID", "CENTRE_COUT_ID", "DOMAINE_FONCTIONNEL_ID", "ETAT", "STRUCTURE_LIBELLE", "DATE_MISE_EN_PAIEMENT", "PERIODE_PAIEMENT_LIBELLE", "INTERVENANT_TYPE", "INTERVENANT_CODE", "INTERVENANT_NOM", "INTERVENANT_NUMERO_INSEE", "CENTRE_COUT_CODE", "CENTRE_COUT_LIBELLE", "DOMAINE_FONCTIONNEL_CODE", "DOMAINE_FONCTIONNEL_LIBELLE", "HETD", "HETD_POURC", "HETD_MONTANT", "REM_FC_D714", "EXERCICE_AA", "EXERCICE_AA_MONTANT", "EXERCICE_AC", "EXERCICE_AC_MONTANT") AS + SELECT + periode_paiement_id, + structure_id, + intervenant_type_id, + intervenant_id, + annee_id, + centre_cout_id, + domaine_fonctionnel_id, + etat, + structure_libelle, + date_mise_en_paiement, + periode_paiement_libelle, + intervenant_type, + intervenant_code, + intervenant_nom, + intervenant_numero_insee, + centre_cout_code, + centre_cout_libelle, + domaine_fonctionnel_code, + domaine_fonctionnel_libelle, + hetd, + CASE WHEN pourc_ecart >= 0 THEN + CASE WHEN RANK() OVER (PARTITION BY periode_paiement_id, intervenant_id, etat, structure_id ORDER BY CASE WHEN (pourc_ecart >= 0 AND pourc_diff >= 0) OR (pourc_ecart < 0 AND pourc_diff < 0) THEN pourc_diff ELSE -1 END DESC) <= (ABS(pourc_ecart) / 0.001) THEN hetd_pourc + (pourc_ecart / ABS(pourc_ecart) * 0.001) ELSE hetd_pourc END + ELSE + CASE WHEN RANK() OVER (PARTITION BY periode_paiement_id, intervenant_id, etat, structure_id ORDER BY CASE WHEN (pourc_ecart >= 0 AND pourc_diff >= 0) OR (pourc_ecart < 0 AND pourc_diff < 0) THEN pourc_diff ELSE -1 END) <= (ABS(pourc_ecart) / 0.001) THEN hetd_pourc + (pourc_ecart / ABS(pourc_ecart) * 0.001) ELSE hetd_pourc END + END hetd_pourc, + hetd_montant, + rem_fc_d714, + exercice_aa, + exercice_aa_montant, + exercice_ac, + exercice_ac_montant +FROM +( +SELECT + dep3.*, + 1-CASE WHEN hetd > 0 THEN SUM( hetd_pourc ) OVER ( PARTITION BY periode_paiement_id, intervenant_id, etat, structure_id) ELSE 0 END pourc_ecart -END UNICAEN_IMPORT; +FROM ( -/ - --- UNICAEN_OSE_FORMULE -CREATE OR REPLACE PACKAGE "UNICAEN_OSE_FORMULE" AS +SELECT + periode_paiement_id, + structure_id, + intervenant_type_id, + intervenant_id, + annee_id, + centre_cout_id, + domaine_fonctionnel_id, + etat, + structure_libelle, + date_mise_en_paiement, + periode_paiement_libelle, + intervenant_type, + intervenant_code, + intervenant_nom, + intervenant_numero_insee, + centre_cout_code, + centre_cout_libelle, + domaine_fonctionnel_code, + domaine_fonctionnel_libelle, + hetd, + ROUND( CASE WHEN hetd > 0 THEN hetd / SUM( hetd ) OVER( PARTITION BY periode_paiement_id, intervenant_id, etat, structure_id) ELSE 0 END, 3 ) hetd_pourc, + ROUND( hetd * taux_horaire, 2 ) hetd_montant, + ROUND( fc_majorees * taux_horaire, 2 ) rem_fc_d714, + exercice_aa, + ROUND( exercice_aa * taux_horaire, 2 ) exercice_aa_montant, + exercice_ac, + ROUND( exercice_ac * taux_horaire, 2 ) exercice_ac_montant, - PROCEDURE CALCUL_RESULTAT_V2( INTERVENANT_ID NUMERIC, TYPE_VOLUME_HORAIRE_ID NUMERIC, ETAT_VOLUME_HORAIRE_ID NUMERIC ); - - PROCEDURE CALCUL_RESULTAT_V3( INTERVENANT_ID NUMERIC, TYPE_VOLUME_HORAIRE_ID NUMERIC, ETAT_VOLUME_HORAIRE_ID NUMERIC ); - PROCEDURE PURGE_EM_NON_FC; + (CASE WHEN hetd > 0 THEN hetd / SUM( hetd ) OVER( PARTITION BY periode_paiement_id, intervenant_id, etat, structure_id) ELSE 0 END) + - + ROUND( CASE WHEN hetd > 0 THEN hetd / SUM( hetd ) OVER( PARTITION BY periode_paiement_id, intervenant_id, etat, structure_id) ELSE 0 END, 3 ) pourc_diff -END UNICAEN_OSE_FORMULE; -/ +FROM ( + WITH dep AS ( -- détails par état de paiement + SELECT + CASE WHEN th.code = 'fc_majorees' THEN 1 ELSE 0 END is_fc_majoree, + p.id periode_paiement_id, + s.id structure_id, + i.id intervenant_id, + i.annee_id annee_id, + cc.id centre_cout_id, + df.id domaine_fonctionnel_id, + ti.id intervenant_type_id, + CASE + WHEN mep.date_mise_en_paiement IS NULL THEN 'a-mettre-en-paiement' + ELSE 'mis-en-paiement' + END etat, --- UNICAEN_TBL -CREATE OR REPLACE PACKAGE "UNICAEN_TBL" AS + p.libelle_long || ' ' || to_char( add_months( a.date_debut, p.ecart_mois ), 'yyyy' ) periode_paiement_libelle, + mep.date_mise_en_paiement date_mise_en_paiement, + s.libelle_court structure_libelle, + ti.libelle intervenant_type, + i.source_code intervenant_code, + i.nom_usuel || ' ' || i.prenom intervenant_nom, + TRIM( NVL(i.numero_insee,'') || NVL(TO_CHAR(i.numero_insee_cle,'00'),'') ) intervenant_numero_insee, + cc.source_code centre_cout_code, + cc.libelle centre_cout_libelle, + df.source_code domaine_fonctionnel_code, + df.libelle domaine_fonctionnel_libelle, + CASE WHEN th.code = 'fc_majorees' THEN 0 ELSE mep.heures END hetd, + CASE WHEN th.code = 'fc_majorees' THEN mep.heures ELSE 0 END fc_majorees, + mep.heures * 4 / 10 exercice_aa, + mep.heures * 6 / 10 exercice_ac, + --CASE WHEN th.code = 'fc_majorees' THEN 0 ELSE mep.heures END * 4 / 10 exercice_aa, + --CASE WHEN th.code = 'fc_majorees' THEN 0 ELSE mep.heures END * 6 / 10 exercice_ac, + OSE_FORMULE.GET_TAUX_HORAIRE_HETD( NVL(mep.date_mise_en_paiement,SYSDATE) ) taux_horaire + FROM + v_mep_intervenant_structure mis + JOIN mise_en_paiement mep ON mep.id = mis.mise_en_paiement_id AND mep.histo_destruction IS NULL + JOIN type_heures th ON th.id = mep.type_heures_id + JOIN centre_cout cc ON cc.id = mep.centre_cout_id -- pas d'historique pour les centres de coût, qui devront tout de même apparaitre mais en erreur + JOIN intervenant i ON i.id = mis.intervenant_id AND i.histo_destruction IS NULL + JOIN annee a ON a.id = i.annee_id + JOIN statut_intervenant si ON si.id = i.statut_id + JOIN type_intervenant ti ON ti.id = si.type_intervenant_id + JOIN structure s ON s.id = mis.structure_id + LEFT JOIN validation v ON v.id = mep.validation_id AND v.histo_destruction IS NULL + LEFT JOIN domaine_fonctionnel df ON df.id = mis.domaine_fonctionnel_id + LEFT JOIN periode p ON p.id = mep.periode_paiement_id + ) + SELECT + periode_paiement_id, + structure_id, + intervenant_type_id, + intervenant_id, + annee_id, + centre_cout_id, + domaine_fonctionnel_id, + etat, + periode_paiement_libelle, + structure_libelle, + date_mise_en_paiement, + intervenant_type, + intervenant_code, + intervenant_nom, + intervenant_numero_insee, + centre_cout_code, + centre_cout_libelle, + domaine_fonctionnel_code, + domaine_fonctionnel_libelle, + SUM( hetd ) hetd, + SUM( fc_majorees ) fc_majorees, + SUM( exercice_aa ) exercice_aa, + SUM( exercice_ac ) exercice_ac, + taux_horaire + FROM + dep + GROUP BY + periode_paiement_id, + structure_id, + intervenant_type_id, + intervenant_id, + annee_id, + centre_cout_id, + domaine_fonctionnel_id, + etat, + periode_paiement_libelle, + structure_libelle, + date_mise_en_paiement, + intervenant_type, + intervenant_code, + intervenant_nom, + intervenant_numero_insee, + centre_cout_code, + centre_cout_libelle, + domaine_fonctionnel_code, + domaine_fonctionnel_libelle, + taux_horaire, + is_fc_majoree +) +dep2 +) +dep3 +) +dep4; - TYPE t_params IS RECORD ( - c1 VARCHAR2(30), v1 VARCHAR2(80), - c2 VARCHAR2(30), v2 VARCHAR2(80), - c3 VARCHAR2(30), v3 VARCHAR2(80), - c4 VARCHAR2(30), v4 VARCHAR2(80), - c5 VARCHAR2(30), v5 VARCHAR2(80), - sqlcond CLOB - ); +-- V_EXPORT_DEPASS_CHARGES +CREATE OR REPLACE FORCE VIEW "V_EXPORT_DEPASS_CHARGES" ("ANNEE_ID", "STRUCTURE_ID", "TYPE_INTERVENTION_ID", "ANNEE", "TYPE_VOLUME_HORAIRE_CODE", "INTERVENANT_CODE", "INTERVENANT_NOM", "INTERVENANT_DATE_NAISSANCE", "INTERVENANT_STATUT_LIBELLE", "INTERVENANT_TYPE_CODE", "INTERVENANT_TYPE_LIBELLE", "STRUCTURE_AFF_LIBELLE", "STRUCTURE_ENS_LIBELLE", "GROUPE_TYPE_FORMATION_LIBELLE", "TYPE_FORMATION_LIBELLE", "ETAPE_NIVEAU", "ETAPE_CODE", "ETAPE_LIBELLE", "ELEMENT_CODE", "ELEMENT_LIBELLE", "ELEMENT_TAUX_FI", "ELEMENT_TAUX_FC", "ELEMENT_TAUX_FA", "ELEMENT_SOURCE_LIBELLE", "PERIODE", "TYPE_INTERVENTION_CODE", "HEURES_SERVICE", "SOURCE_CHARGES", "HEURES_CHARGES", "GROUPES_CHARGES", "HEURES_DEPASSEMENT") AS + WITH c AS ( + SELECT + vhe.element_pedagogique_id, + vhe.type_intervention_id, + CASE WHEN MAX(vhe.groupes) IS NULL THEN + 'Charges OSE' ELSE s.libelle END source, + MAX(vhe.heures) heures, + COALESCE( MAX(vhe.groupes), ROUND(SUM(t.groupes),10) ) groupes - ACTIV_TRIGGERS BOOLEAN DEFAULT TRUE; - ACTIV_CALCULS BOOLEAN DEFAULT TRUE; - CALCUL_PROC_PARAMS t_params; + FROM + volume_horaire_ens vhe + JOIN parametre p ON p.nom = 'scenario_charges_services' + JOIN source s ON s.id = vhe.source_id + LEFT JOIN tbl_chargens t ON t.element_pedagogique_id = vhe.element_pedagogique_id + AND t.type_intervention_id = vhe.type_intervention_id + AND t.scenario_id = to_number(p.valeur) + WHERE + vhe.histo_destruction IS NULL + GROUP BY + vhe.element_pedagogique_id, + vhe.type_intervention_id, + s.libelle +), s AS ( + SELECT + i.annee_id, + vh.type_volume_horaire_id, + s.intervenant_id, + s.element_pedagogique_id, + vh.type_intervention_id, + SUM(vh.heures) heures + FROM + volume_horaire vh + JOIN service s ON s.id = vh.service_id + AND s.element_pedagogique_id IS NOT NULL + AND s.histo_destruction IS NULL + JOIN intervenant i ON i.id = s.intervenant_id + AND i.histo_destruction IS NULL + WHERE + vh.histo_destruction IS NULL + GROUP BY + i.annee_id, + vh.type_volume_horaire_id, + s.intervenant_id, + s.element_pedagogique_id, + vh.type_intervention_id +) +SELECT + s.annee_id annee_id, + sens.id structure_id, + tiv.id type_intervention_id, - FUNCTION MAKE_PARAMS( - c1 VARCHAR2 DEFAULT NULL, v1 VARCHAR2 DEFAULT NULL, - c2 VARCHAR2 DEFAULT NULL, v2 VARCHAR2 DEFAULT NULL, - c3 VARCHAR2 DEFAULT NULL, v3 VARCHAR2 DEFAULT NULL, - c4 VARCHAR2 DEFAULT NULL, v4 VARCHAR2 DEFAULT NULL, - c5 VARCHAR2 DEFAULT NULL, v5 VARCHAR2 DEFAULT NULL, - sqlcond CLOB DEFAULT NULL - ) RETURN t_params; + a.libelle annee, + tvh.libelle type_volume_horaire_code, + i.source_code intervenant_code, + i.nom_usuel || ' ' || i.prenom intervenant_nom, + i.date_naissance intervenant_date_naissance, + si.libelle intervenant_statut_libelle, - FUNCTION PARAMS_FROM_DEMS( TBL_NAME VARCHAR2 ) RETURN t_params; - FUNCTION PARAMS_TO_CONDS ( PARAMS UNICAEN_TBL.T_PARAMS ) RETURN CLOB; + ti.code intervenant_type_code, + ti.libelle intervenant_type_libelle, + CASE WHEN ti.code = 'P' THEN saff.libelle_court ELSE NULL END structure_aff_libelle, + sens.libelle_court structure_ens_libelle, - PROCEDURE DEMANDE_CALCUL( TBL_NAME VARCHAR2 ); - PROCEDURE DEMANDE_CALCUL( TBL_NAME VARCHAR2, CONDS CLOB ); - PROCEDURE DEMANDE_CALCUL( TBL_NAME VARCHAR2, PARAMS t_params ); + gtf.libelle_court groupe_type_formation_libelle, + tf.libelle_court type_formation_libelle, + etp.niveau etape_niveau, + etp.source_code etape_code, + etp.libelle etape_libelle, + ep.source_code element_code, + ep.libelle element_libelle, + ep.taux_fi element_taux_fi, + ep.taux_fc element_taux_fc, + ep.taux_fa element_taux_fa, + src.libelle element_source_libelle, + p.libelle_court periode, + tiv.code type_intervention_code, + s.heures heures_service, + c.source source_charges, + c.heures heures_charges, + c.groupes groupes_charges, + s.heures - COALESCE(c.heures * c.groupes,0) heures_depassement +FROM + s + JOIN annee a ON a.id = s.annee_id + JOIN type_volume_horaire tvh ON tvh.id = s.type_volume_horaire_id + JOIN intervenant i ON i.id = s.intervenant_id + JOIN statut_intervenant si ON si.id = i.statut_id + JOIN type_intervenant ti ON ti.id = si.type_intervenant_id + JOIN element_pedagogique ep ON ep.id = s.element_pedagogique_id + JOIN etape etp ON etp.id = ep.etape_id + JOIN type_formation tf ON tf.id = etp.type_formation_id + JOIN groupe_type_formation gtf ON gtf.id = tf.groupe_id + JOIN structure saff ON saff.id = i.structure_id + JOIN structure sens ON sens.id = ep.structure_id + JOIN source src ON src.id = ep.source_id + JOIN type_intervention tiv ON tiv.id = s.type_intervention_id + LEFT JOIN c ON c.element_pedagogique_id = s.element_pedagogique_id + AND c.type_intervention_id = COALESCE(tiv.type_intervention_maquette_id,tiv.id) + LEFT JOIN periode p ON p.id = ep.periode_id; - PROCEDURE CALCULER( TBL_NAME VARCHAR2 ); - PROCEDURE CALCULER( TBL_NAME VARCHAR2, CONDS CLOB ); - PROCEDURE CALCULER( TBL_NAME VARCHAR2, PARAMS t_params ); - - PROCEDURE ANNULER_DEMANDES; - PROCEDURE ANNULER_DEMANDES( TBL_NAME VARCHAR2 ); - PROCEDURE CALCULER_DEMANDES; - - -- AUTOMATIC GENERATION -- - - PROCEDURE C_AGREMENT( PARAMS UNICAEN_TBL.T_PARAMS ); - PROCEDURE C_CHARGENS( PARAMS UNICAEN_TBL.T_PARAMS ); - PROCEDURE C_CHARGENS_SEUILS_DEF( PARAMS UNICAEN_TBL.T_PARAMS ); - PROCEDURE C_CLOTURE_REALISE( PARAMS UNICAEN_TBL.T_PARAMS ); - PROCEDURE C_CONTRAT( PARAMS UNICAEN_TBL.T_PARAMS ); - PROCEDURE C_DMEP_LIQUIDATION( PARAMS UNICAEN_TBL.T_PARAMS ); - PROCEDURE C_DOSSIER( PARAMS UNICAEN_TBL.T_PARAMS ); - PROCEDURE C_PAIEMENT( PARAMS UNICAEN_TBL.T_PARAMS ); - PROCEDURE C_PIECE_JOINTE( PARAMS UNICAEN_TBL.T_PARAMS ); - PROCEDURE C_PIECE_JOINTE_DEMANDE( PARAMS UNICAEN_TBL.T_PARAMS ); - PROCEDURE C_PIECE_JOINTE_FOURNIE( PARAMS UNICAEN_TBL.T_PARAMS ); - PROCEDURE C_SERVICE( PARAMS UNICAEN_TBL.T_PARAMS ); - PROCEDURE C_SERVICE_REFERENTIEL( PARAMS UNICAEN_TBL.T_PARAMS ); - PROCEDURE C_SERVICE_SAISIE( PARAMS UNICAEN_TBL.T_PARAMS ); - PROCEDURE C_VALIDATION_ENSEIGNEMENT( PARAMS UNICAEN_TBL.T_PARAMS ); - PROCEDURE C_VALIDATION_REFERENTIEL( PARAMS UNICAEN_TBL.T_PARAMS ); - - -- END OF AUTOMATIC GENERATION -- - -END UNICAEN_TBL; -/ - --------------------------------------------------- --- Vues --------------------------------------------------- - --- V_AGREMENT_EXPORT_CSV -CREATE OR REPLACE FORCE VIEW "V_AGREMENT_EXPORT_CSV" ("ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID", "ANNEE", "STRUCTURE_LIBELLE", "INTERVENANT_CODE", "INTERVENANT_NOM_USUEL", "INTERVENANT_NOM_PATRONYMIQUE", "INTERVENANT_PRENOM", "INTERVENANT_STATUT_LIBELLE", "PREMIER_RECRUTEMENT", "DISCIPLINE", "HETD_FI", "HETD_FA", "HETD_FC", "HETD_TOTAL", "TYPE_AGREMENT", "AGREE", "DATE_DECISION", "MODIFICATEUR", "DATE_MODIFICATION") AS - WITH heures_s AS ( +-- V_EXPORT_DMEP +CREATE OR REPLACE FORCE VIEW "V_EXPORT_DMEP" ("INTERVENANT_ID", "TYPE_INTERVENANT_ID", "ANNEE_ID", "STRUCTURE_AFF_ID", "STRUCTURE_ENS_ID", "STRUCTURE_ID", "CENTRE_COUT_ID", "ELEMENT_PEDAGOGIQUE_ID", "ETAPE_ID", "TYPE_FORMATION_ID", "GROUPE_TYPE_FORMATION_ID", "STATUT_INTERVENANT_ID", "PERIODE_ID", "INTERVENANT_CODE", "INTERVENANT_NOM", "INTERVENANT_DATE_NAISSANCE", "INTERVENANT_STATUT_LIBELLE", "INTERVENANT_TYPE_CODE", "INTERVENANT_TYPE_LIBELLE", "INTERVENANT_GRADE_CODE", "INTERVENANT_GRADE_LIBELLE", "INTERVENANT_DISCIPLINE_CODE", "INTERVENANT_DISCIPLINE_LIBELLE", "SERVICE_STRUCTURE_AFF_LIBELLE", "SERVICE_STRUCTURE_ENS_LIBELLE", "ETABLISSEMENT_LIBELLE", "GROUPE_TYPE_FORMATION_LIBELLE", "TYPE_FORMATION_LIBELLE", "ETAPE_NIVEAU", "ETAPE_CODE", "ETAPE_LIBELLE", "ELEMENT_CODE", "ELEMENT_LIBELLE", "ELEMENT_DISCIPLINE_CODE", "ELEMENT_DISCIPLINE_LIBELLE", "FONCTION_REFERENTIEL_LIBELLE", "ELEMENT_TAUX_FI", "ELEMENT_TAUX_FC", "ELEMENT_TAUX_FA", "ELEMENT_SOURCE_LIBELLE", "COMMENTAIRES", "ETAT", "TYPE_RESSOURCE_LIBELLE", "CENTRE_COUTS_CODE", "CENTRE_COUTS_LIBELLE", "DOMAINE_FONCTIONNEL_CODE", "DOMAINE_FONCTIONNEL_LIBELLE", "PERIODE_LIBELLE", "DATE_MISE_EN_PAIEMENT", "HEURES_FI", "HEURES_FA", "HEURES_FC", "HEURES_FC_MAJOREES", "HEURES_REFERENTIEL") AS + WITH mep AS ( SELECT - i.id intervenant_id, - COALESCE(ep.structure_id,i.structure_id) structure_id, - SUM(frs.service_fi) service_fi, - SUM(frs.service_fa) service_fa, - SUM(frs.service_fc) service_fc, - SUM(frs.heures_compl_fi) heures_compl_fi, - SUM(frs.heures_compl_fa) heures_compl_fa, - SUM(frs.heures_compl_fc) heures_compl_fc, - SUM(frs.heures_compl_fc_majorees) heures_compl_fc_majorees, - SUM(frs.total) total + frs.service_id, + frsr.service_referentiel_id, + mep.date_mise_en_paiement, + mep.periode_paiement_id, + mep.centre_cout_id, + mep.domaine_fonctionnel_id, + + sum(case when th.code = 'fi' then mep.heures else 0 end) heures_fi, + sum(case when th.code = 'fa' then mep.heures else 0 end) heures_fa, + sum(case when th.code = 'fc' then mep.heures else 0 end) heures_fc, + sum(case when th.code = 'fc_majorees' then mep.heures else 0 end) heures_fc_majorees, + sum(case when th.code = 'referentiel' then mep.heures else 0 end) heures_referentiel FROM - formule_resultat_service frs - JOIN type_volume_horaire tvh ON tvh.code = 'PREVU' - JOIN etat_volume_horaire evh ON evh.code = 'valide' - JOIN formule_resultat fr ON fr.id = frs.formule_resultat_id - AND fr.type_volume_horaire_id = tvh.id - AND fr.etat_volume_horaire_id = evh.id - JOIN intervenant i ON i.id = fr.intervenant_id - JOIN service s ON s.id = frs.service_id - LEFT JOIN element_pedagogique ep ON ep.id = s.element_pedagogique_id + mise_en_paiement mep + JOIN type_heures th ON th.id = mep.type_heures_id + LEFT JOIN formule_resultat_service frs ON frs.id = mep.formule_res_service_id + LEFT JOIN formule_resultat_service_ref frsr ON frsr.id = mep.formule_res_service_ref_id + WHERE + mep.histo_destruction IS NULL GROUP BY - i.id, - ep.structure_id, - i.structure_id + frs.service_id, + frsr.service_referentiel_id, + mep.date_mise_en_paiement, + mep.periode_paiement_id, + mep.centre_cout_id, + mep.domaine_fonctionnel_id ) SELECT - a.id annee_id, - i.id intervenant_id, - s.id structure_id, - - a.libelle annee, - s.libelle_court structure_libelle, - i.code intervenant_code, - i.nom_usuel intervenant_nom_usuel, - i.nom_patronymique intervenant_nom_patronymique, - i.prenom intervenant_prenom, - - si.libelle intervenant_statut_libelle, - i.premier_recrutement premier_recrutement, - d.libelle_court discipline, - - COALESCE(heures_s.service_fi, fr.service_fi) - + COALESCE(heures_s.heures_compl_fi, fr.heures_compl_fi) - hetd_fi, - COALESCE(heures_s.service_fa, fr.service_fa) - + COALESCE(heures_s.heures_compl_fa, fr.heures_compl_fa) - hetd_fa, - COALESCE(heures_s.service_fc, fr.service_fc) - + COALESCE(heures_s.heures_compl_fc, fr.heures_compl_fc) - + COALESCE(heures_s.heures_compl_fc_majorees, fr.heures_compl_fc_majorees) - hetd_fc, - COALESCE(heures_s.total, fr.total) hetd_total, - - - - - tagr.libelle type_agrement, - CASE WHEN agr.id IS NULL THEN 0 ELSE 1 END agree, - agr.date_decision date_decision, - u.display_name modificateur, - agr.histo_modification date_modification -FROM - tbl_agrement ta - JOIN intervenant i ON i.id = ta.intervenant_id - JOIN statut_intervenant si ON si.id = i.statut_id - JOIN annee a ON a.id = ta.annee_id - JOIN type_agrement tagr ON tagr.id = ta.type_agrement_id - JOIN type_volume_horaire tvh ON tvh.code = 'PREVU' - JOIN etat_volume_horaire evh ON evh.code = 'valide' - - - LEFT JOIN structure s ON s.id = ta.structure_id - LEFT JOIN agrement agr ON agr.id = ta.agrement_id - LEFT JOIN utilisateur u ON u.id = agr.histo_modificateur_id - LEFT JOIN discipline d ON d.id = i.discipline_id - - LEFT JOIN formule_resultat fr ON fr.intervenant_id = i.id - AND fr.type_volume_horaire_id = tvh.id - AND fr.etat_volume_horaire_id = evh.id - - LEFT JOIN heures_s ON heures_s.intervenant_id = i.id - AND heures_s.structure_id = s.id; - --- V_CENTRE_COUT_STRUCTURE -CREATE OR REPLACE FORCE VIEW "V_CENTRE_COUT_STRUCTURE" ("CENTRE_COUT_ID", "STRUCTURE_ID") AS - SELECT - ccs.centre_cout_id, - ccs.structure_id -FROM - centre_cout_structure ccs -WHERE - ccs.histo_destruction IS NULL; - --- V_CENTRE_COUT_TYPE_HEURES -CREATE OR REPLACE FORCE VIEW "V_CENTRE_COUT_TYPE_HEURES" ("CENTRE_COUT_ID", "TYPE_HEURES_ID") AS - select - cc.id centre_cout_id, - th.id type_heures_id -from - centre_cout cc - join type_ressource tr on tr.id = cc.type_ressource_id - join cc_activite cca on cca.id = cc.activite_id - join type_heures th on th.code = decode(tr.fi + cca.fi, 2, 'fi', null) - -union all - -select - cc.id centre_cout_id, - th.id type_heures_id -from - centre_cout cc - join type_ressource tr on tr.id = cc.type_ressource_id - join cc_activite cca on cca.id = cc.activite_id - join type_heures th on th.code = decode(tr.fc + cca.fc, 2, 'fc', null) - -union all - -select - cc.id centre_cout_id, - th.id type_heures_id -from - centre_cout cc - join type_ressource tr on tr.id = cc.type_ressource_id - join cc_activite cca on cca.id = cc.activite_id - join type_heures th on th.code = decode(tr.fa + cca.fa, 2, 'fa', null) - -union all + i.id intervenant_id, + ti.id type_intervenant_id, + i.annee_id annee_id, + saff.id structure_aff_id, + sens.id structure_ens_id, + NVL(sens.id,saff.id) structure_id, + cc.id centre_cout_id, + ep.id element_pedagogique_id, + etp.id etape_id, + tf.id type_formation_id, + gtf.id groupe_type_formation_id, + si.id statut_intervenant_id, + p.id periode_id, -select - cc.id centre_cout_id, - th.id type_heures_id -from - centre_cout cc - join type_ressource tr on tr.id = cc.type_ressource_id - join cc_activite cca on cca.id = cc.activite_id - join type_heures th on th.code = decode(tr.referentiel + cca.referentiel, 2, 'referentiel', null) + i.source_code intervenant_code, + i.nom_usuel || ' ' || i.prenom intervenant_nom, + i.date_naissance intervenant_date_naissance, + si.libelle intervenant_statut_libelle, + ti.code intervenant_type_code, + ti.libelle intervenant_type_libelle, + g.source_code intervenant_grade_code, + g.libelle_court intervenant_grade_libelle, + di.source_code intervenant_discipline_code, + di.libelle_court intervenant_discipline_libelle, + saff.libelle_court service_structure_aff_libelle, -union all + sens.libelle_court service_structure_ens_libelle, + etab.libelle etablissement_libelle, + gtf.libelle_court groupe_type_formation_libelle, + tf.libelle_court type_formation_libelle, + etp.niveau etape_niveau, + etp.source_code etape_code, + etp.libelle etape_libelle, + ep.source_code element_code, + ep.libelle element_libelle, + de.source_code element_discipline_code, + de.libelle_court element_discipline_libelle, + fr.libelle_long fonction_referentiel_libelle, + ep.taux_fi element_taux_fi, + ep.taux_fc element_taux_fc, + ep.taux_fa element_taux_fa, + src.libelle element_source_libelle, + COALESCE(to_char(s.description),to_char(sr.commentaires)) commentaires, -select - cc.id centre_cout_id, - th.id type_heures_id -from - centre_cout cc - join type_ressource tr on tr.id = cc.type_ressource_id - join cc_activite cca on cca.id = cc.activite_id - join type_heures th on th.code = decode(tr.fc_majorees + cca.fc_majorees, 2, 'fc_majorees', null); + CASE + WHEN mep.date_mise_en_paiement IS NULL THEN 'a-mettre-en-paiement' + ELSE 'mis-en-paiement' + END etat, + tr.libelle type_ressource_libelle, + cc.source_code centre_couts_code, + cc.libelle centre_couts_libelle, + df.source_code domaine_fonctionnel_code, + df.libelle domaine_fonctionnel_libelle, + p.libelle_long periode_libelle, + mep.date_mise_en_paiement date_mise_en_paiement, + mep.heures_fi heures_fi, + mep.heures_fa heures_fa, + mep.heures_fc heures_fc, + mep.heures_fc_majorees heures_fc_majorees, + mep.heures_referentiel heures_referentiel +FROM + mep + JOIN centre_cout cc ON cc.id = mep.centre_cout_id + JOIN type_ressource tr ON tr.id = cc.type_ressource_id + LEFT JOIN service s ON s.id = mep.service_id + LEFT JOIN element_pedagogique ep ON ep.id = s.element_pedagogique_id + LEFT JOIN source src ON src.id = ep.source_id OR (ep.source_id IS NULL AND src.code = 'OSE') + LEFT JOIN discipline de ON de.id = ep.discipline_id + LEFT JOIN etape etp ON etp.id = ep.etape_id + LEFT JOIN type_formation tf ON tf.id = etp.type_formation_id + LEFT JOIN groupe_type_formation gtf ON gtf.id = tf.groupe_id + LEFT JOIN service_referentiel sr ON sr.id = mep.service_referentiel_id + LEFT JOIN fonction_referentiel fr ON fr.id = sr.fonction_id + JOIN intervenant i ON i.id = NVL( s.intervenant_id, sr.intervenant_id ) + JOIN statut_intervenant si ON si.id = i.statut_id + JOIN type_intervenant ti ON ti.id = si.type_intervenant_id + LEFT JOIN grade g ON g.id = i.grade_id + LEFT JOIN discipline di ON di.id = i.discipline_id + LEFT JOIN structure saff ON saff.id = i.structure_id AND ti.code = 'P' + LEFT JOIN structure sens ON sens.id = NVL( ep.structure_id, sr.structure_id ) + JOIN etablissement etab ON etab.id = NVL( s.etablissement_id, ose_parametre.get_etablissement() ) + LEFT JOIN periode p ON p.id = mep.periode_paiement_id + LEFT JOIN domaine_fonctionnel df ON df.id = mep.domaine_fonctionnel_id +ORDER BY + intervenant_nom, + service_structure_aff_libelle, + service_structure_ens_libelle, + etape_libelle, + element_libelle; --- V_CHARGENS_CALC_EFFECTIF -CREATE OR REPLACE FORCE VIEW "V_CHARGENS_CALC_EFFECTIF" ("NOEUD_ID", "SCENARIO_ID", "SCENARIO_NOEUD_ID", "TYPE_HEURES_ID", "ETAPE_ID", "EFFECTIF") AS +-- V_EXPORT_PAIEMENT_WINPAIE +CREATE OR REPLACE FORCE VIEW "V_EXPORT_PAIEMENT_WINPAIE" ("TYPE_INTERVENANT_ID", "ANNEE_ID", "STRUCTURE_ID", "PERIODE_PAIEMENT_ID", "INTERVENANT_ID", "INSEE", "NOM", "CARTE", "CODE_ORIGINE", "RETENUE", "SENS", "MC", "NBU", "MONTANT", "LIBELLE") AS SELECT - gl.noeud_inf_id noeud_id, - snsup.scenario_id scenario_id, - sninf.id scenario_noeud_id, - sne.type_heures_id type_heures_id, - sne.etape_id etape_id, --- sne.effectif effectif, --- slsup.choix_minimum choix_minimum, --- slsup.choix_maximum choix_maximum, --- COALESCE(slinf.poids,1) poids, --- COALESCE(sninf.assiduite,1) assiduite, --- MIN(COALESCE(sl.poids,1)) min_poids, --- MAX(COALESCE(sl.poids,1)) max_poids, --- SUM(COALESCE(sl.poids,1)) total_poids, --- COUNT(*) nb_choix, - OSE_CHARGENS.CALC_COEF( - slsup.choix_minimum, - slsup.choix_maximum, - COALESCE(slinf.poids,1), - MAX(COALESCE(sl.poids,1)), - SUM(COALESCE(sl.poids,1)), - COUNT(*) - ) * sne.effectif effectif -FROM - v_chargens_grands_liens gl - JOIN scenario_noeud snsup ON snsup.noeud_id = gl.noeud_sup_id - AND snsup.histo_destruction IS NULL - - JOIN scenario_noeud_effectif sne ON sne.scenario_noeud_id = snsup.id - - LEFT JOIN scenario_lien slsup ON slsup.histo_destruction IS NULL - AND slsup.lien_id = gl.lien_sup_id - AND slsup.scenario_id = snsup.scenario_id + si.type_intervenant_id type_intervenant_id, + i.annee_id, + t2.structure_id, + t2.periode_paiement_id, + i.id intervenant_id, - LEFT JOIN scenario_lien slinf ON slinf.histo_destruction IS NULL - AND slinf.lien_id = gl.lien_inf_id - AND slinf.scenario_id = snsup.scenario_id - - LEFT JOIN scenario_noeud sninf ON sninf.noeud_id = gl.noeud_inf_id - AND sninf.scenario_id = snsup.scenario_id - AND sninf.histo_destruction IS NULL + NVL(i.numero_insee,'') || TRIM(NVL(TO_CHAR(i.numero_insee_cle,'00'),'')) insee, + i.nom_usuel || ',' || i.prenom nom, + to_char((SELECT valeur FROM parametre WHERE nom = 'winpaie_carte' AND histo_destruction IS NULL)) carte, + t2.code_origine, + to_char((SELECT valeur FROM parametre WHERE nom = 'winpaie_retenue' AND histo_destruction IS NULL)) retenue, + to_char((SELECT valeur FROM parametre WHERE nom = 'winpaie_sens' AND histo_destruction IS NULL)) sens, + to_char((SELECT valeur FROM parametre WHERE nom = 'winpaie_mc' AND histo_destruction IS NULL)) mc, + t2.nbu, + OSE_FORMULE.GET_TAUX_HORAIRE_HETD( NVL(t2.date_mise_en_paiement,SYSDATE) ) montant, + COALESCE(t2.unite_budgetaire,'') || ' ' || to_char(i.annee_id) || ' ' || to_char(i.annee_id+1) + /* || ' ' || to_char(FLOOR(t2.nbu)) || ' H' || CASE + WHEN to_char(ROUND( t2.nbu-FLOOR(t2.nbu), 2 )*100,'00') = ' 00' THEN '' + ELSE to_char(ROUND( t2.nbu-FLOOR(t2.nbu), 2 )*100,'00') END*/ libelle +FROM ( + SELECT + structure_id, + periode_paiement_id, + intervenant_id, + code_origine, + ROUND( SUM(nbu), 2) nbu, + unite_budgetaire, + date_mise_en_paiement + FROM ( + WITH mep AS ( + SELECT + -- pour les filtres + mep.id, + mis.structure_id, + mep.periode_paiement_id, + mis.intervenant_id, + mep.heures, + cc.unite_budgetaire, + mep.date_mise_en_paiement + FROM + v_mep_intervenant_structure mis + JOIN mise_en_paiement mep ON mep.id = mis.mise_en_paiement_id AND mep.histo_destruction IS NULL + JOIN centre_cout cc ON cc.id = mep.centre_cout_id + JOIN type_heures th ON th.id = mep.type_heures_id + WHERE + mep.date_mise_en_paiement IS NOT NULL + AND mep.periode_paiement_id IS NOT NULL + AND th.eligible_extraction_paie = 1 + ) + SELECT + mep.id, + mep.structure_id, + mep.periode_paiement_id, + mep.intervenant_id, + 2 code_origine, + mep.heures * 4 / 10 nbu, + mep.unite_budgetaire, + mep.date_mise_en_paiement + FROM + mep + WHERE + mep.heures * 4 / 10 > 0 - JOIN lien l ON l.noeud_sup_id = gl.noeud_liste_id - AND l.histo_destruction IS NULL + UNION - LEFT JOIN scenario_lien sl ON sl.lien_id = l.id - AND sl.scenario_id = snsup.scenario_id - AND sl.histo_destruction IS NULL + SELECT + mep.id, + mep.structure_id, + mep.periode_paiement_id, + mep.intervenant_id, + 1 code_origine, + mep.heures * 6 / 10 nbu, + mep.unite_budgetaire, + mep.date_mise_en_paiement + FROM + mep + WHERE + mep.heures * 6 / 10 > 0 + ) t1 + GROUP BY + structure_id, + periode_paiement_id, + intervenant_id, + code_origine, + unite_budgetaire, + date_mise_en_paiement +) t2 +JOIN intervenant i ON i.id = t2.intervenant_id +JOIN statut_intervenant si ON si.id = i.statut_id +JOIN structure s ON s.id = t2.structure_id; -WHERE - (slsup.actif = 1 OR slsup.actif IS NULL) - AND (slinf.actif = 1 OR slinf.actif IS NULL) - AND (sl.actif = 1 OR sl.actif IS NULL) - AND (snsup.scenario_id = 0 OR NULL IS NULL) - AND (sne.type_heures_id = 0 OR NULL IS NULL) - AND (sne.etape_id = 0 OR NULL IS NULL) -GROUP BY - gl.noeud_sup_id, - gl.noeud_inf_id, - snsup.scenario_id, - sninf.id, - sne.type_heures_id, - sne.etape_id, - sne.effectif, - slsup.choix_minimum, - slsup.choix_maximum, - slinf.poids; +-- V_EXPORT_PILOTAGE_ECARTS_ETATS +CREATE OR REPLACE FORCE VIEW "V_EXPORT_PILOTAGE_ECARTS_ETATS" ("ANNEE_ID", "ANNEE", "ETAT", "TYPE_HEURES_ID", "TYPE_HEURES", "STRUCTURE_ID", "STRUCTURE", "INTERVENANT_ID", "INTERVENANT_TYPE", "INTERVENANT_CODE", "INTERVENANT", "HETD_PAYABLES") AS + SELECT + t3.annee_id annee_id, + t3.annee_id || '-' || (t3.annee_id+1) annee, + t3.etat, + t3.type_heures_id, + t3.type_heures, + s.id structure_id, + s.libelle_court structure, + i.id intervenant_id, + ti.libelle intervenant_type, + i.source_code intervenant_code, + i.prenom || ' ' || i.nom_usuel intervenant, + t3.hetd_payables +FROM --- V_CHARGENS_EXPORT_CSV -CREATE OR REPLACE FORCE VIEW "V_CHARGENS_EXPORT_CSV" ("ANNEE_ID", "SCENARIO_ID", "STRUCTURE_PORTEUSE_ID", "STRUCTURE_INS_ID", "ANNEE", "STRUCTURE_PORTEUSE_CODE", "STRUCTURE_PORTEUSE_LIBELLE", "ETAPE_PORTEUSE_CODE", "ETAPE_PORTEUSE_LIBELLE", "STRUCTURE_INS_CODE", "STRUCTURE_INS_LIBELLE", "ETAPE_INS_CODE", "ETAPE_INS_LIBELLE", "ELEMENT_CODE", "ELEMENT_LIBELLE", "PERIODE", "DISCIPLINE_CODE", "DISCIPLINE_LIBELLE", "TYPE_HEURES", "TYPE_INTERVENTION", "SEUIL_OUVERTURE", "SEUIL_DEDOUBLEMENT", "ASSIDUITE", "EFFECTIF_ETAPE", "EFFECTIF_ELEMENT", "HEURES_ENS", "GROUPES", "HEURES", "HETD") AS +( +SELECT + annee_id, + etat, + type_heures_id, + type_heures, + structure_id, + intervenant_id, + sum(hetd) hetd_payables +FROM ( SELECT - a.id annee_id, - cph.scenario_id scenario_id, - sp.id structure_porteuse_id, - si.id structure_ins_id, + annee_id, + LOWER(tvh.code) || '-' || evh.code etat, + 10*tvh.ordre + evh.ordre ordre, + type_heures_id, + type_heures, + structure_id, + intervenant_id, + SUM(hetd) hetd + FROM ( + SELECT + i.annee_id, + fr.type_volume_horaire_id, + fr.etat_volume_horaire_id, + th.id type_heures_id, + th.code type_heures, + COALESCE(ep.structure_id,i.structure_id) structure_id, + fr.intervenant_id, + SUM(frs.heures_compl_fi) hetd + FROM + formule_resultat_service frs + JOIN formule_resultat fr ON fr.id = frs.formule_resultat_id + JOIN service s ON s.id = frs.service_id + JOIN intervenant i ON i.id = fr.intervenant_id + JOIN type_heures th ON th.code = 'fi' + LEFT JOIN element_pedagogique ep ON ep.id = s.element_pedagogique_id + GROUP BY + i.annee_id, + fr.type_volume_horaire_id, + fr.etat_volume_horaire_id, + th.id, th.code, + fr.intervenant_id, + ep.structure_id, + i.structure_id - a.libelle annee, + UNION ALL - sp.source_code structure_porteuse_code, - sp.libelle_court structure_porteuse_libelle, - eport.code etape_porteuse_code, - eport.libelle etape_porteuse_libelle, - - si.source_code structure_ins_code, - si.libelle_court structure_ins_libelle, - eins.code etape_ins_code, - eins.libelle etape_ins_libelle, + SELECT + i.annee_id, + fr.type_volume_horaire_id, + fr.etat_volume_horaire_id, + th.id type_heures_id, + th.code type_heures, + COALESCE(ep.structure_id,i.structure_id) structure_id, + fr.intervenant_id, + SUM(frs.heures_compl_fa) hetd + FROM + formule_resultat_service frs + JOIN formule_resultat fr ON fr.id = frs.formule_resultat_id + JOIN service s ON s.id = frs.service_id + JOIN intervenant i ON i.id = fr.intervenant_id + JOIN type_heures th ON th.code = 'fa' + LEFT JOIN element_pedagogique ep ON ep.id = s.element_pedagogique_id + GROUP BY + i.annee_id, + fr.type_volume_horaire_id, + fr.etat_volume_horaire_id, + th.id, th.code, + fr.intervenant_id, + ep.structure_id, + i.structure_id - ep.code element_code, - ep.libelle element_libelle, - p.libelle_court periode, - d.source_code discipline_code, - d.libelle_court discipline_libelle, - th.libelle_court type_heures, - ti.code type_intervention, + UNION ALL - cph.ouverture seuil_ouverture, - cph.dedoublement seuil_dedoublement, - cph.assiduite assiduite, - sne.effectif effectif_etape, - cph.effectif effectif_element, - cph.heures_ens heures_ens, - cph.groupes groupes, - cph.heures heures, - cph.hetd hetd - FROM - tbl_chargens cph - JOIN annee a ON a.id = cph.annee_id - JOIN structure sp ON sp.id = cph.structure_id - JOIN etape eport ON eport.id = cph.etape_id - JOIN etape eins ON eins.id = cph.etape_ens_id - JOIN structure si ON si.id = eins.structure_id - JOIN element_pedagogique ep ON ep.id = cph.element_pedagogique_id - JOIN type_heures th ON th.id = cph.type_heures_id - JOIN type_intervention ti ON ti.id = cph.type_intervention_id - LEFT JOIN periode p ON p.id = ep.periode_id - LEFT JOIN discipline d ON d.id = ep.discipline_id - LEFT JOIN noeud n ON n.etape_id = eins.id - AND n.histo_destruction IS NULL - - LEFT JOIN scenario_noeud sn ON sn.noeud_id = n.id - AND sn.histo_destruction IS NULL - AND sn.scenario_id = cph.scenario_id - - LEFT JOIN scenario_noeud_effectif sne ON sne.scenario_noeud_id = sn.id - AND sne.type_heures_id = cph.type_heures_id - AND sne.etape_id = n.etape_id -ORDER BY - structure_porteuse_code, - etape_porteuse_code, - structure_ins_code, - etape_ins_code, - element_code, - type_heures, - type_intervention; + SELECT + i.annee_id, + fr.type_volume_horaire_id, + fr.etat_volume_horaire_id, + th.id type_heures_id, + th.code type_heures, + COALESCE(ep.structure_id,i.structure_id) structure_id, + fr.intervenant_id, + SUM(frs.heures_compl_fc) hetd + FROM + formule_resultat_service frs + JOIN formule_resultat fr ON fr.id = frs.formule_resultat_id + JOIN service s ON s.id = frs.service_id + JOIN intervenant i ON i.id = fr.intervenant_id + JOIN type_heures th ON th.code = 'fc' + LEFT JOIN element_pedagogique ep ON ep.id = s.element_pedagogique_id + GROUP BY + i.annee_id, + fr.type_volume_horaire_id, + fr.etat_volume_horaire_id, + th.id, th.code, + fr.intervenant_id, + ep.structure_id, + i.structure_id + + UNION ALL + + SELECT + i.annee_id, + fr.type_volume_horaire_id, + fr.etat_volume_horaire_id, + th.id type_heures_id, + th.code type_heures, + sr.structure_id, + fr.intervenant_id, + sum( frsr.heures_compl_referentiel ) hetd + FROM + formule_resultat_service_ref frsr + JOIN formule_resultat fr ON fr.id = frsr.formule_resultat_id + JOIN service_referentiel sr ON sr.id = frsr.service_referentiel_id + JOIN intervenant i ON i.id = fr.intervenant_id + JOIN type_heures th ON th.code = 'referentiel' + GROUP BY + i.annee_id, + fr.type_volume_horaire_id, + fr.etat_volume_horaire_id, + th.id, th.code, + fr.intervenant_id, + sr.structure_id + ) t1 + JOIN type_volume_horaire tvh ON tvh.id = t1.type_volume_horaire_id + JOIN etat_volume_horaire evh ON evh.id = t1.etat_volume_horaire_id + GROUP BY + annee_id, tvh.code, evh.code, tvh.ordre, evh.ordre, type_heures_id, type_heures, structure_id, intervenant_id + + UNION ALL --- V_CHARGENS_GRANDS_LIENS -CREATE OR REPLACE FORCE VIEW "V_CHARGENS_GRANDS_LIENS" ("NOEUD_SUP_ID", "LIEN_SUP_ID", "NOEUD_LISTE_ID", "LIEN_INF_ID", "NOEUD_INF_ID") AS SELECT - nsup.id noeud_sup_id, - lsup.id lien_sup_id, - nl.id noeud_liste_id, - linf.id lien_inf_id, - ninf.id noeud_inf_id -FROM - noeud nsup + annee_id, + etat, + ordre, + type_heures_id, + type_heures, + structure_id, + intervenant_id, + SUM(hetd) hetd + FROM ( + SELECT + i.annee_id, + 'demande-mise-en-paiement' etat, + 90 ordre, + th.id type_heures_id, + th.code type_heures, + COALESCE( sr.structure_id, ep.structure_id, i.structure_id ) structure_id, + i.id intervenant_id, + mep.heures hetd + FROM + mise_en_paiement mep + JOIN type_heures th ON th.id = mep.type_heures_id + JOIN centre_cout cc ON cc.id = mep.centre_cout_id + LEFT JOIN formule_resultat_service frs ON frs.id = mep.formule_res_service_id + LEFT JOIN formule_resultat_service_ref frsr ON frsr.id = mep.formule_res_service_ref_id + LEFT JOIN formule_resultat fr ON fr.id = COALESCE(frs.formule_resultat_id, frsr.formule_resultat_id) + LEFT JOIN service s ON s.id = frs.service_id + LEFT JOIN element_pedagogique ep ON ep.id = s.element_pedagogique_id + LEFT JOIN service_referentiel sr ON sr.id = frsr.service_referentiel_id + LEFT JOIN intervenant i ON i.id = fr.intervenant_id + WHERE + mep.histo_destruction IS NULL + AND th.eligible_extraction_paie = 1 - JOIN lien lsup ON lsup.noeud_sup_id = nsup.id - AND lsup.histo_destruction IS NULL + UNION ALL - JOIN noeud nl ON nl.liste = 1 - AND nl.histo_destruction IS NULL - AND nl.id = lsup.noeud_inf_id - - JOIN lien linf ON linf.noeud_sup_id = nl.id - AND linf.histo_destruction IS NULL - - JOIN noeud ninf ON ninf.id = linf.noeud_inf_id - AND ninf.histo_destruction IS NULL - AND ninf.liste = 0 -WHERE - nsup.histo_destruction IS NULL - AND nsup.liste = 0; + SELECT + i.annee_id, + 'mise-en-paiement' etat, + 91 ordre, + th.id type_heures_id, + th.code type_heures, + COALESCE( sr.structure_id, ep.structure_id, i.structure_id ) structure_id, + i.id intervenant_id, + mep.heures hetd + FROM + mise_en_paiement mep + JOIN type_heures th ON th.id = mep.type_heures_id + JOIN centre_cout cc ON cc.id = mep.centre_cout_id + LEFT JOIN formule_resultat_service frs ON frs.id = mep.formule_res_service_id + LEFT JOIN formule_resultat_service_ref frsr ON frsr.id = mep.formule_res_service_ref_id + LEFT JOIN formule_resultat fr ON fr.id = COALESCE(frs.formule_resultat_id, frsr.formule_resultat_id) + LEFT JOIN service s ON s.id = frs.service_id + LEFT JOIN element_pedagogique ep ON ep.id = s.element_pedagogique_id + LEFT JOIN service_referentiel sr ON sr.id = frsr.service_referentiel_id + LEFT JOIN intervenant i ON i.id = fr.intervenant_id + WHERE + mep.histo_destruction IS NULL + AND th.eligible_extraction_paie = 1 + AND mep.PERIODE_PAIEMENT_ID IS NOT NULL + ) t1 + GROUP BY + annee_id, etat, ordre, type_heures_id, type_heures, structure_id, intervenant_id +) t2 +GROUP BY + annee_id, + etat, ordre + ,type_heures_id, type_heures + ,structure_id + ,intervenant_id +ORDER BY + annee_id, ordre --- V_CHARGENS_PRECALCUL_HEURES -CREATE OR REPLACE FORCE VIEW "V_CHARGENS_PRECALCUL_HEURES" ("ANNEE_ID", "NOEUD_ID", "SCENARIO_ID", "TYPE_HEURES_ID", "TYPE_INTERVENTION_ID", "ELEMENT_PEDAGOGIQUE_ID", "ETAPE_ID", "ETAPE_ENS_ID", "STRUCTURE_ID", "OUVERTURE", "DEDOUBLEMENT", "ASSIDUITE", "EFFECTIF", "HEURES_ENS", "GROUPES", "HEURES", "HETD") AS - WITH t AS ( -SELECT - n.annee_id annee_id, - n.noeud_id noeud_id, - sn.scenario_id scenario_id, - sne.type_heures_id type_heures_id, - ti.id type_intervention_id, +) t3 + JOIN intervenant i ON i.id = t3.intervenant_id + JOIN statut_intervenant si ON si.id = i.statut_id + JOIN type_intervenant ti ON ti.id = si.type_intervenant_id + JOIN structure s ON s.id = t3.structure_id; - n.element_pedagogique_id element_pedagogique_id, - n.element_pedagogique_etape_id etape_id, - sne.etape_id etape_ens_id, - n.structure_id structure_id, - - vhe.heures heures, - vhe.heures * ti.taux_hetd_service hetd, - - GREATEST(COALESCE(sns.ouverture, 1),1) ouverture, - GREATEST(COALESCE(sns.dedoublement, snsetp.dedoublement, csdd.dedoublement,1),1) dedoublement, - COALESCE(sns.assiduite,1) assiduite, - sne.effectif*COALESCE(sns.assiduite,1) effectif, +-- V_EXPORT_SERVICE +CREATE OR REPLACE FORCE VIEW "V_EXPORT_SERVICE" ("ID", "SERVICE_ID", "INTERVENANT_ID", "TYPE_INTERVENANT_ID", "ANNEE_ID", "SERVICE_DATE_MODIFICATION", "TYPE_VOLUME_HORAIRE_ID", "ETAT_VOLUME_HORAIRE_ID", "ETABLISSEMENT_ID", "STRUCTURE_AFF_ID", "STRUCTURE_ENS_ID", "NIVEAU_FORMATION_ID", "ETAPE_ID", "ELEMENT_PEDAGOGIQUE_ID", "PERIODE_ID", "TYPE_INTERVENTION_ID", "FONCTION_REFERENTIEL_ID", "TYPE_ETAT", "INTERVENANT_CODE", "INTERVENANT_NOM", "INTERVENANT_DATE_NAISSANCE", "INTERVENANT_STATUT_LIBELLE", "INTERVENANT_TYPE_CODE", "INTERVENANT_TYPE_LIBELLE", "INTERVENANT_GRADE_CODE", "INTERVENANT_GRADE_LIBELLE", "INTERVENANT_DISCIPLINE_CODE", "INTERVENANT_DISCIPLINE_LIBELLE", "SERVICE_STRUCTURE_AFF_LIBELLE", "SERVICE_STRUCTURE_ENS_LIBELLE", "ETABLISSEMENT_LIBELLE", "GROUPE_TYPE_FORMATION_LIBELLE", "TYPE_FORMATION_LIBELLE", "ETAPE_NIVEAU", "ETAPE_CODE", "ETAPE_LIBELLE", "ELEMENT_CODE", "ELEMENT_LIBELLE", "ELEMENT_DISCIPLINE_CODE", "ELEMENT_DISCIPLINE_LIBELLE", "FONCTION_REFERENTIEL_LIBELLE", "ELEMENT_TAUX_FI", "ELEMENT_TAUX_FC", "ELEMENT_TAUX_FA", "SERVICE_REF_FORMATION", "COMMENTAIRES", "PERIODE_LIBELLE", "ELEMENT_PONDERATION_COMPL", "ELEMENT_SOURCE_LIBELLE", "HEURES", "HEURES_REF", "HEURES_NON_PAYEES", "SERVICE_STATUTAIRE", "SERVICE_DU_MODIFIE", "SERVICE_FI", "SERVICE_FA", "SERVICE_FC", "SERVICE_REFERENTIEL", "HEURES_COMPL_FI", "HEURES_COMPL_FA", "HEURES_COMPL_FC", "HEURES_COMPL_FC_MAJOREES", "HEURES_COMPL_REFERENTIEL", "TOTAL", "SOLDE", "DATE_CLOTURE_REALISE") AS + WITH t AS ( SELECT + 'vh_' || vh.id id, + s.id service_id, + s.intervenant_id intervenant_id, + vh.type_volume_horaire_id type_volume_horaire_id, + fr.etat_volume_horaire_id etat_volume_horaire_id, + s.element_pedagogique_id element_pedagogique_id, + s.etablissement_id etablissement_id, + NULL structure_aff_id, + NULL structure_ens_id, + vh.periode_id periode_id, + vh.type_intervention_id type_intervention_id, + NULL fonction_referentiel_id, - SUM(sne.effectif*COALESCE(sns.assiduite,1)) OVER (PARTITION BY n.noeud_id, sn.scenario_id, ti.id) t_effectif + s.description service_description, + vh.heures heures, + 0 heures_ref, + 0 heures_non_payees, + frvh.service_fi service_fi, + frvh.service_fa service_fa, + frvh.service_fc service_fc, + 0 service_referentiel, + frvh.heures_compl_fi heures_compl_fi, + frvh.heures_compl_fa heures_compl_fa, + frvh.heures_compl_fc heures_compl_fc, + frvh.heures_compl_fc_majorees heures_compl_fc_majorees, + 0 heures_compl_referentiel, + frvh.total total, + fr.solde solde, + NULL service_ref_formation, + NULL commentaires FROM - scenario_noeud_effectif sne - JOIN etape e ON e.id = sne.etape_id - AND e.histo_destruction IS NULL - - JOIN scenario_noeud sn ON sn.id = sne.scenario_noeud_id - AND sn.histo_destruction IS NULL - - JOIN tbl_noeud n ON n.noeud_id = sn.noeud_id - - JOIN volume_horaire_ens vhe ON vhe.element_pedagogique_id = n.element_pedagogique_id - AND vhe.histo_destruction IS NULL - AND vhe.heures > 0 + formule_resultat_vh frvh + JOIN formule_resultat fr ON fr.id = frvh.formule_resultat_id + JOIN volume_horaire vh ON vh.id = frvh.volume_horaire_id AND vh.motif_non_paiement_id IS NULL AND vh.histo_destruction IS NULL + JOIN service s ON s.id = vh.service_id AND s.intervenant_id = fr.intervenant_id AND s.histo_destruction IS NULL - JOIN type_intervention ti ON ti.id = vhe.type_intervention_id +UNION ALL - LEFT JOIN tbl_noeud netp ON netp.etape_id = e.id - - LEFT JOIN scenario_noeud snetp ON snetp.scenario_id = sn.scenario_id - AND snetp.noeud_id = netp.noeud_id - AND snetp.histo_destruction IS NULL - - LEFT JOIN scenario_noeud_seuil snsetp ON snsetp.scenario_noeud_id = snetp.id - AND snsetp.type_intervention_id = ti.id +SELECT + 'vh_' || vh.id id, + s.id service_id, + s.intervenant_id intervenant_id, + vh.type_volume_horaire_id type_volume_horaire_id, + vhe.etat_volume_horaire_id etat_volume_horaire_id, + s.element_pedagogique_id element_pedagogique_id, + s.etablissement_id etablissement_id, + NULL structure_aff_id, + NULL structure_ens_id, + vh.periode_id periode_id, + vh.type_intervention_id type_intervention_id, + NULL fonction_referentiel_id, - LEFT JOIN tbl_chargens_seuils_def csdd ON csdd.annee_id = n.annee_id - AND csdd.scenario_id = sn.scenario_id - AND csdd.type_intervention_id = ti.id - AND csdd.groupe_type_formation_id = n.groupe_type_formation_id - AND csdd.structure_id = n.structure_id + s.description service_description, - LEFT JOIN scenario_noeud_seuil sns ON sns.scenario_noeud_id = sn.id - AND sns.type_intervention_id = ti.id -WHERE - 1 = OSE_CHARGENS.MATCH_PRECALC_HEURES_PARAMS( n.annee_id, n.structure_id, sn.scenario_id, sne.type_heures_id, sne.etape_id, n.noeud_id ) -) -SELECT - annee_id, - noeud_id, - scenario_id, - type_heures_id, - type_intervention_id, - - element_pedagogique_id, - etape_id, - etape_ens_id, - structure_id, - - ouverture, - dedoublement, - assiduite, - effectif, - heures heures_ens, - --t_effectif, - - CASE WHEN t_effectif < ouverture THEN 0 ELSE - CEIL( t_effectif / dedoublement ) * effectif / t_effectif - END groupes, + vh.heures heures, + 0 heures_ref, + 1 heures_non_payees, + 0 service_fi, + 0 service_fa, + 0 service_fc, + 0 service_referentiel, + 0 heures_compl_fi, + 0 heures_compl_fa, + 0 heures_compl_fc, + 0 heures_compl_fc_majorees, + 0 heures_compl_referentiel, + 0 total, + fr.solde solde, + NULL service_ref_formation, + NULL commentaires +FROM + volume_horaire vh + JOIN service s ON s.id = vh.service_id + JOIN v_volume_horaire_etat vhe ON vhe.volume_horaire_id = vh.id + JOIN formule_resultat fr ON fr.intervenant_id = s.intervenant_id AND fr.type_volume_horaire_id = vh.type_volume_horaire_id AND fr.etat_volume_horaire_id = vhe.etat_volume_horaire_id +WHERE + vh.motif_non_paiement_id IS NOT NULL + AND vh.histo_destruction IS NULL + AND s.histo_destruction IS NULL - CASE WHEN t_effectif < ouverture THEN 0 ELSE - CEIL( t_effectif / dedoublement ) * heures * effectif / t_effectif - END heures, +UNION ALL - CASE WHEN t_effectif < ouverture THEN 0 ELSE - CEIL( t_effectif / dedoublement ) * hetd * effectif / t_effectif - END hetd +SELECT + 'vh_ref_' || vhr.id id, + sr.id service_id, + sr.intervenant_id intervenant_id, + fr.type_volume_horaire_id type_volume_horaire_id, + fr.etat_volume_horaire_id etat_volume_horaire_id, + NULL element_pedagogique_id, + OSE_PARAMETRE.GET_ETABLISSEMENT etablissement_id, + NULL structure_aff_id, + sr.structure_id structure_ens_id, + NULL periode_id, + NULL type_intervention_id, + sr.fonction_id fonction_referentiel_id, -FROM - t; + NULL service_description, --- V_CHARGENS_SEUILS_DED_DEF -CREATE OR REPLACE FORCE VIEW "V_CHARGENS_SEUILS_DED_DEF" ("NOEUD_ID", "SCENARIO_ID", "TYPE_INTERVENTION_ID", "DEDOUBLEMENT") AS - WITH tisc AS ( - SELECT DISTINCT - sc.type_intervention_id, - sc.scenario_id - FROM - seuil_charge sc - WHERE - sc.histo_destruction IS NULL -) -SELECT - n.noeud_id noeud_id, - tisc.scenario_id, - tisc.type_intervention_id, - COALESCE(snsetp.dedoublement, tcsd.dedoublement) dedoublement + 0 heures, + vhr.heures heures_ref, + 0 heures_non_payees, + 0 service_fi, + 0 service_fa, + 0 service_fc, + frvr.service_referentiel service_referentiel, + 0 heures_compl_fi, + 0 heures_compl_fa, + 0 heures_compl_fc, + 0 heures_compl_fc_majorees, + frvr.heures_compl_referentiel heures_compl_referentiel, + frvr.total total, + fr.solde solde, + sr.formation service_ref_formation, + sr.commentaires commentaires FROM - tbl_noeud n - JOIN tisc ON 1=1 + formule_resultat_vh_ref frvr + JOIN formule_resultat fr ON fr.id = frvr.formule_resultat_id + JOIN volume_horaire_ref vhr ON vhr.id = frvr.volume_horaire_ref_id + JOIN service_referentiel sr ON sr.id = vhr.service_referentiel_id AND sr.intervenant_id = fr.intervenant_id AND sr.histo_destruction IS NULL - LEFT JOIN scenario_noeud snetp ON snetp.noeud_id = n.noeud_etape_id - AND snetp.scenario_id = tisc.scenario_id - AND snetp.histo_destruction IS NULL - - LEFT JOIN scenario_noeud_seuil snsetp ON snsetp.scenario_noeud_id = snetp.id - AND snsetp.type_intervention_id = tisc.type_intervention_id - - LEFT JOIN tbl_chargens_seuils_def tcsd ON tcsd.annee_id = n.annee_id - AND tcsd.scenario_id = tisc.scenario_id - AND tcsd.groupe_type_formation_id = n.groupe_type_formation_id - AND tcsd.type_intervention_id = tisc.type_intervention_id -WHERE - COALESCE(snsetp.dedoublement, tcsd.dedoublement) IS NOT NULL; +UNION ALL --- V_CTL_SERVICES_ODF_HISTO -CREATE OR REPLACE FORCE VIEW "V_CTL_SERVICES_ODF_HISTO" ("PRENOM", "NOM_USUEL", "ELEMENT", "ETAPE", "TYPE_INTERVENTION", "HEURES", "HAS_CONTRAT", "HAS_VALIDATION", "ELEMENT_SUPPRIME", "ETAPE_SUPPRIMEE", "ETABLISSEMENT_SUPPRIME") AS - with vh as ( - SELECT - vh.service_id, - ti.code type_intervention, - SUM(heures) heures, - CASE WHEN vh.contrat_id IS NULL THEN 0 ELSE 1 END has_contrat, - CASE WHEN (SELECT COUNT(*) FROM validation_vol_horaire vvh WHERE vvh.volume_horaire_id = vh.id) = 1 THEN 1 ELSE 0 END has_validation - FROM - volume_horaire vh - JOIN type_volume_horaire tvh ON tvh.id = vh.type_volume_horaire_id - JOIN type_intervention ti ON ti.id = vh.type_intervention_id - WHERE - vh.histo_destruction IS NULL - AND tvh.code = 'PREVU' - GROUP BY - vh.id, ti.code, vh.service_id, vh.contrat_id -) SELECT - i.prenom, i.nom_usuel, - ep.source_code "ELEMENT", - e.source_code etape, - - vh.type_intervention, - vh.heures, - vh.has_contrat, - vh.has_validation, - CASE WHEN ep.histo_destruction IS NOT NULL THEN 1 ELSE 0 END element_supprime, - CASE WHEN e.histo_destruction IS NOT NULL THEN 1 ELSE 0 END etape_supprimee, - CASE WHEN et.histo_destruction IS NOT NULL THEN 1 ELSE 0 END etablissement_supprime -FROM - service s - JOIN intervenant i ON i.id = s.intervenant_id - LEFT JOIN element_pedagogique ep ON ep.id = s.element_pedagogique_id - LEFT JOIN etape e ON e.id = ep.etape_id - LEFT JOIN etablissement et ON et.id = s.etablissement_id - LEFT JOIN vh ON vh.service_id = s.id -WHERE - s.histo_destruction IS NULL - AND ( - (ep.id IS NOT NULL AND ep.histo_destruction IS NOT NULL) - OR - (e.id IS NOT NULL AND e.histo_destruction IS NOT NULL) - OR - (et.id IS NOT NULL AND et.histo_destruction IS NOT NULL) - ) -order by - nom_usuel, prenom, etape, "ELEMENT", heures; - --- V_CTL_VH_MAUVAIS_SEMESTRE -CREATE OR REPLACE FORCE VIEW "V_CTL_VH_MAUVAIS_SEMESTRE" ("ID", "NOM_USUEL", "PRENOM", "HEURES", "VALIDATION_ID") AS - SELECT - vh.id, - i.nom_usuel, i.prenom, - vh.heures, - vvh.validation_id -FROM - volume_horaire vh - JOIN type_volume_horaire tvh ON tvh.id = vh.type_volume_horaire_id - JOIN service s ON s.id = vh.service_id - JOIN element_pedagogique ep ON ep.id = s.element_pedagogique_id - JOIN intervenant i ON i.id = s.intervenant_id - LEFT JOIN VALIDATION_VOL_HORAIRE vvh on VVH.VOLUME_HORAIRE_ID = vh.id -WHERE - tvh.code = 'PREVU' - AND ep.periode_id IS NOT NULL - AND vh.periode_id <> ep.periode_id -ORDER BY - nom_usuel, prenom, heures; + 'vh_0_' || i.id id, + NULL service_id, + i.id intervenant_id, + tvh.id type_volume_horaire_id, + evh.id etat_volume_horaire_id, + NULL element_pedagogique_id, + OSE_PARAMETRE.GET_ETABLISSEMENT etablissement_id, + NULL structure_aff_id, + NULL structure_ens_id, + NULL periode_id, + NULL type_intervention_id, + NULL fonction_referentiel_id, --- V_ELEMENT_TYPE_HEURES -CREATE OR REPLACE FORCE VIEW "V_ELEMENT_TYPE_HEURES" ("ELEMENT_PEDAGOGIQUE_ID", "TYPE_HEURES_ID") AS - select ep.id element_pedagogique_id, th.id type_heures_id - from element_pedagogique ep - join type_heures th on th.code = decode(ep.fi, 1, 'fi', null) -union all - select ep.id element_pedagogique_id, th.id type_heures_id - from element_pedagogique ep - join type_heures th on th.code = decode(ep.fc, 1, 'fc', null) -union all - select ep.id element_pedagogique_id, th.id type_heures_id - from element_pedagogique ep - join type_heures th on th.code = decode(ep.fa, 1, 'fa', null); + NULL service_description, --- V_ELEMENT_TYPE_INTERVENTION -CREATE OR REPLACE FORCE VIEW "V_ELEMENT_TYPE_INTERVENTION" ("TYPE_INTERVENTION_ID", "ELEMENT_PEDAGOGIQUE_ID") AS - SELECT - type_intervention_id, - element_pedagogique_id + 0 heures, + 0 heures_ref, + 0 heures_non_payees, + 0 service_fi, + 0 service_fa, + 0 service_fc, + 0 service_referentiel, + 0 heures_compl_fi, + 0 heures_compl_fa, + 0 heures_compl_fc, + 0 heures_compl_fc_majorees, + NULL heures_compl_referentiel, + 0 total, + 0 solde, + NULL service_ref_formation, + NULL commentaires FROM - type_intervention_ep tie - JOIN type_intervention ti ON ti.id = tie.type_intervention_id + intervenant i + JOIN statut_intervenant si ON si.id = i.statut_id + JOIN etat_volume_horaire evh ON evh.code IN ('saisi','valide') + JOIN type_volume_horaire tvh ON tvh.code IN ('PREVU','REALISE') + LEFT JOIN modification_service_du msd ON msd.intervenant_id = i.id AND msd.histo_destruction IS NULL + LEFT JOIN motif_modification_service mms ON mms.id = msd.motif_id WHERE - tie.histo_destruction IS NULL -ORDER BY - ti.ordre; - --- V_ELEMENT_TYPE_INTERV_POSSIBLE -CREATE OR REPLACE FORCE VIEW "V_ELEMENT_TYPE_INTERV_POSSIBLE" ("TYPE_INTERVENTION_ID", "ELEMENT_PEDAGOGIQUE_ID") AS - SELECT - ti.id type_intervention_id, - ep.id element_pedagogique_id -FROM - element_pedagogique ep + i.histo_destruction IS NULL + AND si.service_statutaire > 0 +GROUP BY + i.id, si.service_statutaire, evh.id, tvh.id +HAVING + si.service_statutaire + SUM(msd.heures * mms.multiplicateur) = 0 - JOIN type_intervention ti ON ep.annee_id BETWEEN COALESCE(ti.annee_debut_id,ep.annee_id) AND COALESCE(ti.annee_fin_id, ep.annee_id) - AND ti.histo_destruction IS NULL - LEFT JOIN type_intervention_structure tis ON tis.type_intervention_id = ti.id - AND tis.structure_id = ep.structure_id - AND ep.annee_id BETWEEN COALESCE(tis.annee_debut_id,ep.annee_id) AND COALESCE(tis.annee_fin_id, ep.annee_id) - AND tis.histo_destruction IS NULL -WHERE - ep.histo_destruction IS NULL - AND COALESCE( tis.visible, ti.visible ) = 1 - AND (ti.regle_foad = 0 OR ep.taux_foad > 0) - AND (ti.regle_fc = 0 OR ep.taux_fc > 0); - --- V_ELEMENT_TYPE_MODULATEUR -CREATE OR REPLACE FORCE VIEW "V_ELEMENT_TYPE_MODULATEUR" ("ELEMENT_PEDAGOGIQUE_ID", "TYPE_MODULATEUR_ID") AS - SELECT - ep.id element_pedagogique_id, - tms.type_modulateur_id type_modulateur_id -FROM - element_pedagogique ep - JOIN structure s ON s.id = ep.structure_id - AND s.histo_destruction IS NULL - - JOIN type_modulateur_structure tms ON tms.structure_id = s.id - AND tms.histo_destruction IS NULL - AND ep.annee_id BETWEEN GREATEST(NVL(tms.annee_debut_id,0),ep.annee_id) AND LEAST(NVL(tms.annee_fin_id,9999),ep.annee_id) +) +SELECT + t.id id, + t.service_id service_id, + i.id intervenant_id, + ti.id type_intervenant_id, + i.annee_id annee_id, + his.histo_modification service_date_modification, + t.type_volume_horaire_id type_volume_horaire_id, + t.etat_volume_horaire_id etat_volume_horaire_id, + etab.id etablissement_id, + saff.id structure_aff_id, + sens.id structure_ens_id, + ose_divers.niveau_formation_id_calc( gtf.id, gtf.pertinence_niveau, etp.niveau ) niveau_formation_id, + etp.id etape_id, + ep.id element_pedagogique_id, + t.periode_id periode_id, + t.type_intervention_id type_intervention_id, + t.fonction_referentiel_id fonction_referentiel_id, -UNION + tvh.libelle || ' ' || evh.libelle type_etat, + i.source_code intervenant_code, + i.nom_usuel || ' ' || i.prenom intervenant_nom, + i.date_naissance intervenant_date_naissance, + si.libelle intervenant_statut_libelle, + ti.code intervenant_type_code, + ti.libelle intervenant_type_libelle, + g.source_code intervenant_grade_code, + g.libelle_court intervenant_grade_libelle, + di.source_code intervenant_discipline_code, + di.libelle_court intervenant_discipline_libelle, + saff.libelle_court service_structure_aff_libelle, -SELECT - tm_ep.element_pedagogique_id element_pedagogique_id, - tm_ep.type_modulateur_id type_modulateur_id -FROM - type_modulateur_ep tm_ep -WHERE - tm_ep.histo_destruction IS NULL; + sens.libelle_court service_structure_ens_libelle, + etab.libelle etablissement_libelle, + gtf.libelle_court groupe_type_formation_libelle, + tf.libelle_court type_formation_libelle, + etp.niveau etape_niveau, + etp.source_code etape_code, + etp.libelle etape_libelle, + ep.source_code element_code, + COALESCE(ep.libelle,to_char(t.service_description)) element_libelle, + de.source_code element_discipline_code, + de.libelle_court element_discipline_libelle, + fr.libelle_long fonction_referentiel_libelle, + ep.taux_fi element_taux_fi, + ep.taux_fc element_taux_fc, + ep.taux_fa element_taux_fa, + t.service_ref_formation service_ref_formation, + t.commentaires commentaires, + p.libelle_court periode_libelle, + CASE WHEN fs.ponderation_service_compl = 1 THEN NULL ELSE fs.ponderation_service_compl END element_ponderation_compl, + src.libelle element_source_libelle, --- V_ETAPE_NIVEAU_FORMATION -CREATE OR REPLACE FORCE VIEW "V_ETAPE_NIVEAU_FORMATION" ("ETAPE_ID", "NIVEAU_FORMATION_ID") AS - SELECT - e.id etape_id, - nf.id niveau_formation_id -FROM - etape e - JOIN type_formation tf ON tf.id = e.type_formation_id AND tf.histo_destruction IS NULL - JOIN groupe_type_formation gtf ON gtf.id = tf.groupe_id AND gtf.histo_destruction IS NULL - JOIN v_niveau_formation nf ON nf.code = gtf.libelle_court || e.niveau -WHERE - e.histo_destruction IS NULL - AND gtf.pertinence_niveau = 1 - AND e.niveau IS NOT NULL; + t.heures heures, + t.heures_ref heures_ref, + t.heures_non_payees heures_non_payees, + si.service_statutaire service_statutaire, + fsm.heures service_du_modifie, + t.service_fi service_fi, + t.service_fa service_fa, + t.service_fc service_fc, + t.service_referentiel service_referentiel, + t.heures_compl_fi heures_compl_fi, + t.heures_compl_fa heures_compl_fa, + t.heures_compl_fc heures_compl_fc, + t.heures_compl_fc_majorees heures_compl_fc_majorees, + t.heures_compl_referentiel heures_compl_referentiel, + t.total total, + t.solde solde, + v.histo_modification date_cloture_realise --- V_ETAPE_TYPE_MODULATEUR -CREATE OR REPLACE FORCE VIEW "V_ETAPE_TYPE_MODULATEUR" ("TYPE_MODULATEUR_ID", "ETAPE_ID") AS - SELECT DISTINCT - etm.type_modulateur_id type_modulateur_id, - ep.etape_id etape_id FROM - v_element_type_modulateur etm - JOIN element_pedagogique ep ON ep.id = etm.element_pedagogique_id AND ep.histo_destruction IS NULL; + t + JOIN intervenant i ON i.id = t.intervenant_id AND i.histo_destruction IS NULL + JOIN statut_intervenant si ON si.id = i.statut_id + JOIN type_intervenant ti ON ti.id = si.type_intervenant_id + JOIN etablissement etab ON etab.id = t.etablissement_id + JOIN type_volume_horaire tvh ON tvh.id = t.type_volume_horaire_id + JOIN etat_volume_horaire evh ON evh.id = t.etat_volume_horaire_id + LEFT JOIN histo_intervenant_service his ON his.intervenant_id = i.id AND his.type_volume_horaire_id = tvh.id AND his.referentiel = 0 + LEFT JOIN grade g ON g.id = i.grade_id + LEFT JOIN discipline di ON di.id = i.discipline_id + LEFT JOIN structure saff ON saff.id = i.structure_id AND ti.code = 'P' + LEFT JOIN element_pedagogique ep ON ep.id = t.element_pedagogique_id + LEFT JOIN discipline de ON de.id = ep.discipline_id + LEFT JOIN structure sens ON sens.id = NVL(t.structure_ens_id, ep.structure_id) + LEFT JOIN periode p ON p.id = t.periode_id + LEFT JOIN source src ON src.id = ep.source_id OR (ep.source_id IS NULL AND src.code = 'OSE') + LEFT JOIN etape etp ON etp.id = ep.etape_id + LEFT JOIN type_formation tf ON tf.id = etp.type_formation_id AND tf.histo_destruction IS NULL + LEFT JOIN groupe_type_formation gtf ON gtf.id = tf.groupe_id AND gtf.histo_destruction IS NULL + LEFT JOIN v_formule_service_modifie fsm ON fsm.intervenant_id = i.id + LEFT JOIN v_formule_service fs ON fs.id = t.service_id + LEFT JOIN fonction_referentiel fr ON fr.id = t.fonction_referentiel_id + LEFT JOIN type_validation tv ON tvh.code = 'REALISE' AND tv.code = 'CLOTURE_REALISE' + LEFT JOIN validation v ON v.intervenant_id = i.id AND v.type_validation_id = tv.id AND v.histo_destruction IS NULL; --- V_ETAT_PAIEMENT -CREATE OR REPLACE FORCE VIEW "V_ETAT_PAIEMENT" ("PERIODE_PAIEMENT_ID", "STRUCTURE_ID", "INTERVENANT_TYPE_ID", "INTERVENANT_ID", "ANNEE_ID", "CENTRE_COUT_ID", "DOMAINE_FONCTIONNEL_ID", "ETAT", "STRUCTURE_LIBELLE", "DATE_MISE_EN_PAIEMENT", "PERIODE_PAIEMENT_LIBELLE", "INTERVENANT_TYPE", "INTERVENANT_CODE", "INTERVENANT_NOM", "INTERVENANT_NUMERO_INSEE", "CENTRE_COUT_CODE", "CENTRE_COUT_LIBELLE", "DOMAINE_FONCTIONNEL_CODE", "DOMAINE_FONCTIONNEL_LIBELLE", "HETD", "HETD_POURC", "HETD_MONTANT", "REM_FC_D714", "EXERCICE_AA", "EXERCICE_AA_MONTANT", "EXERCICE_AC", "EXERCICE_AC_MONTANT") AS +-- V_EXP_HETD_CENTRE_COUT +CREATE OR REPLACE FORCE VIEW "V_EXP_HETD_CENTRE_COUT" ("TYPE_VOLUME_HORAIRE_ID", "ETAT_VOLUME_HORAIRE_ID", "ANNEE_ID", "INTERVENANT_ID", "STATUT_INTERVENANT_ID", "TYPE_INTERVENANT_ID", "GRADE_ID", "STRUCTURE_ID", "GROUPE_TYPE_FORMATION_ID", "TYPE_FORMATION_ID", "ETAPE_ID", "TYPE_VOLUME_HORAIRE", "ETAT_VOLUME_HORAIRE", "ANNEE", "CODE_INTERVENANT", "INTERVENANT", "STATUT_INTERVENANT", "TYPE_INTERVENANT", "GRADE", "STRUCTURE_ENSEIGNEMENT", "GROUPE_TYPE_FORMATION", "TYPE_FORMATION", "CODE_FORMATION", "TOTAL_HETD", "CENTRE_COUTS", "TOTAL_EUROS") AS + WITH t AS ( SELECT - periode_paiement_id, - structure_id, - intervenant_type_id, - intervenant_id, - annee_id, - centre_cout_id, - domaine_fonctionnel_id, - etat, - structure_libelle, - date_mise_en_paiement, - periode_paiement_libelle, - intervenant_type, - intervenant_code, - intervenant_nom, - intervenant_numero_insee, - centre_cout_code, - centre_cout_libelle, - domaine_fonctionnel_code, - domaine_fonctionnel_libelle, - hetd, - CASE WHEN pourc_ecart >= 0 THEN - CASE WHEN RANK() OVER (PARTITION BY periode_paiement_id, intervenant_id, etat, structure_id ORDER BY CASE WHEN (pourc_ecart >= 0 AND pourc_diff >= 0) OR (pourc_ecart < 0 AND pourc_diff < 0) THEN pourc_diff ELSE -1 END DESC) <= (ABS(pourc_ecart) / 0.001) THEN hetd_pourc + (pourc_ecart / ABS(pourc_ecart) * 0.001) ELSE hetd_pourc END - ELSE - CASE WHEN RANK() OVER (PARTITION BY periode_paiement_id, intervenant_id, etat, structure_id ORDER BY CASE WHEN (pourc_ecart >= 0 AND pourc_diff >= 0) OR (pourc_ecart < 0 AND pourc_diff < 0) THEN pourc_diff ELSE -1 END) <= (ABS(pourc_ecart) / 0.001) THEN hetd_pourc + (pourc_ecart / ABS(pourc_ecart) * 0.001) ELSE hetd_pourc END - END hetd_pourc, - hetd_montant, - rem_fc_d714, - exercice_aa, - exercice_aa_montant, - exercice_ac, - exercice_ac_montant -FROM -( -SELECT - dep3.*, - - 1-CASE WHEN hetd > 0 THEN SUM( hetd_pourc ) OVER ( PARTITION BY periode_paiement_id, intervenant_id, etat, structure_id) ELSE 0 END pourc_ecart + tvh.id type_volume_horaire_id, + evh.id etat_volume_horaire_id, + a.id annee_id, + i.id intervenant_id, + si.id statut_intervenant_id, + ti.id type_intervenant_id, + g.id grade_id, + str.id structure_id, + gtf.id groupe_type_formation_id, + tf.id type_formation_id, + e.id etape_id, + tvh.code type_volume_horaire, + evh.code etat_volume_horaire, + a.libelle annee, + i.code code_intervenant, + i.nom_usuel || ' ' || i.prenom intervenant, + si.libelle statut_intervenant, + ti.libelle type_intervenant, + g.libelle_long grade, + str.libelle_court structure_enseignement, + gtf.libelle_long groupe_type_formation, + tf.libelle_long type_formation, + e.source_code code_formation, -FROM ( + CASE WHEN mep.id IS NULL THEN frs.total ELSE mep.heures END + total_hetd, -SELECT - periode_paiement_id, - structure_id, - intervenant_type_id, - intervenant_id, - annee_id, - centre_cout_id, - domaine_fonctionnel_id, - etat, - structure_libelle, - date_mise_en_paiement, - periode_paiement_libelle, - intervenant_type, - intervenant_code, - intervenant_nom, - intervenant_numero_insee, - centre_cout_code, - centre_cout_libelle, - domaine_fonctionnel_code, - domaine_fonctionnel_libelle, - hetd, - ROUND( CASE WHEN hetd > 0 THEN hetd / SUM( hetd ) OVER( PARTITION BY periode_paiement_id, intervenant_id, etat, structure_id) ELSE 0 END, 3 ) hetd_pourc, - ROUND( hetd * taux_horaire, 2 ) hetd_montant, - ROUND( fc_majorees * taux_horaire, 2 ) rem_fc_d714, - exercice_aa, - ROUND( exercice_aa * taux_horaire, 2 ) exercice_aa_montant, - exercice_ac, - ROUND( exercice_ac * taux_horaire, 2 ) exercice_ac_montant, + cc.source_code || ' ' || cc.libelle centre_couts, + OSE_FORMULE.GET_TAUX_HORAIRE_HETD( NVL(mep.date_mise_en_paiement,SYSDATE) ) * CASE WHEN mep.id IS NULL THEN frs.total ELSE mep.heures END + total_euros + FROM + formule_resultat_service frs + JOIN formule_resultat fr ON fr.id = frs.formule_resultat_id + JOIN etat_volume_horaire evh ON evh.id = fr.etat_volume_horaire_id + JOIN type_volume_horaire tvh ON tvh.id = fr.type_volume_horaire_id + JOIN intervenant i ON i.id = fr.intervenant_id + JOIN annee a ON a.id = i.annee_id + JOIN statut_intervenant si ON si.id = i.statut_id + JOIN type_intervenant ti ON ti.id = si.type_intervenant_id + JOIN service s ON s.id = frs.service_id + LEFT JOIN grade g ON g.id = i.grade_id + LEFT JOIN element_pedagogique ep ON ep.id = s.element_pedagogique_id + JOIN structure str ON str.id = NVL(ep.structure_id, i.structure_id) + LEFT JOIN etape e ON e.id = ep.etape_id + LEFT JOIN type_formation tf ON tf.id = e.type_formation_id + LEFT JOIN groupe_type_formation gtf ON gtf.id = tf.groupe_id + LEFT JOIN mise_en_paiement mep ON mep.formule_res_service_id = frs.id + AND mep.histo_destruction IS NULL + LEFT JOIN centre_cout cc ON cc.id = MEP.CENTRE_COUT_ID - (CASE WHEN hetd > 0 THEN hetd / SUM( hetd ) OVER( PARTITION BY periode_paiement_id, intervenant_id, etat, structure_id) ELSE 0 END) - - - ROUND( CASE WHEN hetd > 0 THEN hetd / SUM( hetd ) OVER( PARTITION BY periode_paiement_id, intervenant_id, etat, structure_id) ELSE 0 END, 3 ) pourc_diff + UNION ALL -FROM ( - WITH dep AS ( -- détails par état de paiement SELECT - CASE WHEN th.code = 'fc_majorees' THEN 1 ELSE 0 END is_fc_majoree, - p.id periode_paiement_id, - s.id structure_id, - i.id intervenant_id, - i.annee_id annee_id, - cc.id centre_cout_id, - df.id domaine_fonctionnel_id, - ti.id intervenant_type_id, - CASE - WHEN mep.date_mise_en_paiement IS NULL THEN 'a-mettre-en-paiement' - ELSE 'mis-en-paiement' - END etat, + type_volume_horaire_id, etat_volume_horaire_id, annee_id, intervenant_id, statut_intervenant_id, type_intervenant_id, + grade_id, structure_id, groupe_type_formation_id, type_formation_id, etape_id, - p.libelle_long || ' ' || to_char( add_months( a.date_debut, p.ecart_mois ), 'yyyy' ) periode_paiement_libelle, - mep.date_mise_en_paiement date_mise_en_paiement, - s.libelle_court structure_libelle, - ti.libelle intervenant_type, - i.source_code intervenant_code, - i.nom_usuel || ' ' || i.prenom intervenant_nom, - TRIM( NVL(i.numero_insee,'') || NVL(TO_CHAR(i.numero_insee_cle,'00'),'') ) intervenant_numero_insee, - cc.source_code centre_cout_code, - cc.libelle centre_cout_libelle, - df.source_code domaine_fonctionnel_code, - df.libelle domaine_fonctionnel_libelle, - CASE WHEN th.code = 'fc_majorees' THEN 0 ELSE mep.heures END hetd, - CASE WHEN th.code = 'fc_majorees' THEN mep.heures ELSE 0 END fc_majorees, - mep.heures * 4 / 10 exercice_aa, - mep.heures * 6 / 10 exercice_ac, - --CASE WHEN th.code = 'fc_majorees' THEN 0 ELSE mep.heures END * 4 / 10 exercice_aa, - --CASE WHEN th.code = 'fc_majorees' THEN 0 ELSE mep.heures END * 6 / 10 exercice_ac, - OSE_FORMULE.GET_TAUX_HORAIRE_HETD( NVL(mep.date_mise_en_paiement,SYSDATE) ) taux_horaire - FROM - v_mep_intervenant_structure mis - JOIN mise_en_paiement mep ON mep.id = mis.mise_en_paiement_id AND mep.histo_destruction IS NULL - JOIN type_heures th ON th.id = mep.type_heures_id - JOIN centre_cout cc ON cc.id = mep.centre_cout_id -- pas d'historique pour les centres de coût, qui devront tout de même apparaitre mais en erreur - JOIN intervenant i ON i.id = mis.intervenant_id AND i.histo_destruction IS NULL - JOIN annee a ON a.id = i.annee_id - JOIN statut_intervenant si ON si.id = i.statut_id - JOIN type_intervenant ti ON ti.id = si.type_intervenant_id - JOIN structure s ON s.id = mis.structure_id - LEFT JOIN validation v ON v.id = mep.validation_id AND v.histo_destruction IS NULL - LEFT JOIN domaine_fonctionnel df ON df.id = mis.domaine_fonctionnel_id - LEFT JOIN periode p ON p.id = mep.periode_paiement_id - ) - SELECT - periode_paiement_id, - structure_id, - intervenant_type_id, - intervenant_id, - annee_id, - centre_cout_id, - domaine_fonctionnel_id, - etat, - periode_paiement_libelle, - structure_libelle, - date_mise_en_paiement, - intervenant_type, - intervenant_code, - intervenant_nom, - intervenant_numero_insee, - centre_cout_code, - centre_cout_libelle, - domaine_fonctionnel_code, - domaine_fonctionnel_libelle, - SUM( hetd ) hetd, - SUM( fc_majorees ) fc_majorees, - SUM( exercice_aa ) exercice_aa, - SUM( exercice_ac ) exercice_ac, - taux_horaire - FROM - dep - GROUP BY - periode_paiement_id, - structure_id, - intervenant_type_id, - intervenant_id, - annee_id, - centre_cout_id, - domaine_fonctionnel_id, - etat, - periode_paiement_libelle, - structure_libelle, - date_mise_en_paiement, - intervenant_type, - intervenant_code, - intervenant_nom, - intervenant_numero_insee, - centre_cout_code, - centre_cout_libelle, - domaine_fonctionnel_code, - domaine_fonctionnel_libelle, - taux_horaire, - is_fc_majoree -) -dep2 -) -dep3 -) -dep4; - --- V_EXPORT_DEPASS_CHARGES -CREATE OR REPLACE FORCE VIEW "V_EXPORT_DEPASS_CHARGES" ("ANNEE_ID", "STRUCTURE_ID", "TYPE_INTERVENTION_ID", "ANNEE", "TYPE_VOLUME_HORAIRE_CODE", "INTERVENANT_CODE", "INTERVENANT_NOM", "INTERVENANT_DATE_NAISSANCE", "INTERVENANT_STATUT_LIBELLE", "INTERVENANT_TYPE_CODE", "INTERVENANT_TYPE_LIBELLE", "STRUCTURE_AFF_LIBELLE", "STRUCTURE_ENS_LIBELLE", "GROUPE_TYPE_FORMATION_LIBELLE", "TYPE_FORMATION_LIBELLE", "ETAPE_NIVEAU", "ETAPE_CODE", "ETAPE_LIBELLE", "ELEMENT_CODE", "ELEMENT_LIBELLE", "ELEMENT_TAUX_FI", "ELEMENT_TAUX_FC", "ELEMENT_TAUX_FA", "ELEMENT_SOURCE_LIBELLE", "PERIODE", "TYPE_INTERVENTION_CODE", "HEURES_SERVICE", "SOURCE_CHARGES", "HEURES_CHARGES", "GROUPES_CHARGES", "HEURES_DEPASSEMENT") AS - WITH c AS ( + type_volume_horaire, etat_volume_horaire, annee, code_intervenant, intervenant, statut_intervenant, + type_intervenant, grade, structure_enseignement, groupe_type_formation, type_formation, + code_formation, total_hetd, centre_couts, + OSE_FORMULE.GET_TAUX_HORAIRE_HETD( SYSDATE ) * total_hetd total_euros + FROM ( SELECT - vhe.element_pedagogique_id, - vhe.type_intervention_id, - CASE WHEN MAX(vhe.groupes) IS NULL THEN - 'Charges OSE' ELSE s.libelle END source, - MAX(vhe.heures) heures, - COALESCE( MAX(vhe.groupes), ROUND(SUM(t.groupes),10) ) groupes + tvh.id type_volume_horaire_id, + evh.id etat_volume_horaire_id, + a.id annee_id, + i.id intervenant_id, + si.id statut_intervenant_id, + ti.id type_intervenant_id, + g.id grade_id, + str.id structure_id, + gtf.id groupe_type_formation_id, + tf.id type_formation_id, + e.id etape_id, + tvh.code type_volume_horaire, + evh.code etat_volume_horaire, + a.libelle annee, + i.code code_intervenant, + i.nom_usuel || ' ' || i.prenom intervenant, + si.libelle statut_intervenant, + ti.libelle type_intervenant, + g.libelle_long grade, + str.libelle_court structure_enseignement, + gtf.libelle_long groupe_type_formation, + tf.libelle_long type_formation, + e.source_code code_formation, + frs.total - SUM(mep.heures) OVER (PARTITION BY frs.id) total_hetd, + RANK() OVER ( PARTITION BY frs.id ORDER BY mep.id) ordre, + null centre_couts FROM - volume_horaire_ens vhe - JOIN parametre p ON p.nom = 'scenario_charges_services' - JOIN source s ON s.id = vhe.source_id - LEFT JOIN tbl_chargens t ON t.element_pedagogique_id = vhe.element_pedagogique_id - AND t.type_intervention_id = vhe.type_intervention_id - AND t.scenario_id = to_number(p.valeur) - WHERE - vhe.histo_destruction IS NULL - GROUP BY - vhe.element_pedagogique_id, - vhe.type_intervention_id, - s.libelle -), s AS ( - SELECT - i.annee_id, - vh.type_volume_horaire_id, - s.intervenant_id, - s.element_pedagogique_id, - vh.type_intervention_id, - SUM(vh.heures) heures - FROM - volume_horaire vh - JOIN service s ON s.id = vh.service_id - AND s.element_pedagogique_id IS NOT NULL - AND s.histo_destruction IS NULL - JOIN intervenant i ON i.id = s.intervenant_id - AND i.histo_destruction IS NULL - WHERE - vh.histo_destruction IS NULL - GROUP BY - i.annee_id, - vh.type_volume_horaire_id, - s.intervenant_id, - s.element_pedagogique_id, - vh.type_intervention_id + formule_resultat_service frs + JOIN formule_resultat fr ON fr.id = frs.formule_resultat_id + JOIN etat_volume_horaire evh ON evh.id = fr.etat_volume_horaire_id + JOIN type_volume_horaire tvh ON tvh.id = fr.type_volume_horaire_id + JOIN intervenant i ON i.id = fr.intervenant_id + JOIN annee a ON a.id = i.annee_id + JOIN statut_intervenant si ON si.id = i.statut_id + JOIN type_intervenant ti ON ti.id = si.type_intervenant_id + JOIN service s ON s.id = frs.service_id + LEFT JOIN grade g ON g.id = i.grade_id + LEFT JOIN element_pedagogique ep ON ep.id = s.element_pedagogique_id + JOIN structure str ON str.id = NVL(ep.structure_id, i.structure_id) + LEFT JOIN etape e ON e.id = ep.etape_id + LEFT JOIN type_formation tf ON tf.id = e.type_formation_id + LEFT JOIN groupe_type_formation gtf ON gtf.id = tf.groupe_id + LEFT JOIN mise_en_paiement mep ON mep.formule_res_service_id = frs.id + AND mep.histo_destruction IS NULL + ) t WHERE ordre = 1 AND total_hetd > 0 ) SELECT - s.annee_id annee_id, - sens.id structure_id, - tiv.id type_intervention_id, + type_volume_horaire_id, + etat_volume_horaire_id, + annee_id, + intervenant_id, + statut_intervenant_id, + type_intervenant_id, + grade_id, + structure_id, + groupe_type_formation_id, + type_formation_id, + etape_id, - a.libelle annee, - tvh.libelle type_volume_horaire_code, - i.source_code intervenant_code, - i.nom_usuel || ' ' || i.prenom intervenant_nom, - i.date_naissance intervenant_date_naissance, - si.libelle intervenant_statut_libelle, + type_volume_horaire, + etat_volume_horaire, + annee, + code_intervenant, + intervenant, + statut_intervenant, + type_intervenant, + grade, + structure_enseignement, + groupe_type_formation, + type_formation, + code_formation, + SUM(total_hetd) total_hetd, + centre_couts, + SUM(total_euros) total_euros +FROM + t +GROUP BY + type_volume_horaire_id, + etat_volume_horaire_id, + annee_id, + intervenant_id, + statut_intervenant_id, + type_intervenant_id, + grade_id, + structure_id, + groupe_type_formation_id, + type_formation_id, + etape_id, - ti.code intervenant_type_code, - ti.libelle intervenant_type_libelle, - CASE WHEN ti.code = 'P' THEN saff.libelle_court ELSE NULL END structure_aff_libelle, - sens.libelle_court structure_ens_libelle, + type_volume_horaire, + etat_volume_horaire, + annee, + code_intervenant, + intervenant, + statut_intervenant, + type_intervenant, + grade, + structure_enseignement, + groupe_type_formation, + type_formation, + code_formation, + centre_couts; - gtf.libelle_court groupe_type_formation_libelle, - tf.libelle_court type_formation_libelle, - etp.niveau etape_niveau, - etp.source_code etape_code, - etp.libelle etape_libelle, - ep.source_code element_code, - ep.libelle element_libelle, - ep.taux_fi element_taux_fi, - ep.taux_fc element_taux_fc, - ep.taux_fa element_taux_fa, - src.libelle element_source_libelle, - p.libelle_court periode, - tiv.code type_intervention_code, - s.heures heures_service, - c.source source_charges, - c.heures heures_charges, - c.groupes groupes_charges, - s.heures - COALESCE(c.heures * c.groupes,0) heures_depassement +-- V_FORMULE_INTERVENANT +CREATE OR REPLACE FORCE VIEW "V_FORMULE_INTERVENANT" ("ID", "ANNEE_ID", "STRUCTURE_ID", "HEURES_SERVICE_STATUTAIRE", "DEPASSEMENT_SERVICE_DU_SANS_HC") AS + SELECT + i.id, + i.annee_id, + i.structure_id, + si.service_statutaire heures_service_statutaire, + si.depassement_service_du_sans_hc FROM - s - JOIN annee a ON a.id = s.annee_id - JOIN type_volume_horaire tvh ON tvh.id = s.type_volume_horaire_id - JOIN intervenant i ON i.id = s.intervenant_id - JOIN statut_intervenant si ON si.id = i.statut_id - JOIN type_intervenant ti ON ti.id = si.type_intervenant_id - JOIN element_pedagogique ep ON ep.id = s.element_pedagogique_id - JOIN etape etp ON etp.id = ep.etape_id - JOIN type_formation tf ON tf.id = etp.type_formation_id - JOIN groupe_type_formation gtf ON gtf.id = tf.groupe_id - JOIN structure saff ON saff.id = i.structure_id - JOIN structure sens ON sens.id = ep.structure_id - JOIN source src ON src.id = ep.source_id - JOIN type_intervention tiv ON tiv.id = s.type_intervention_id - LEFT JOIN c ON c.element_pedagogique_id = s.element_pedagogique_id - AND c.type_intervention_id = COALESCE(tiv.type_intervention_maquette_id,tiv.id) - LEFT JOIN periode p ON p.id = ep.periode_id; + intervenant i + JOIN statut_intervenant si ON si.id = i.statut_id +WHERE + i.histo_destruction IS NULL + AND i.id = COALESCE( OSE_FORMULE.GET_INTERVENANT_ID, i.id ); --- V_EXPORT_DMEP -CREATE OR REPLACE FORCE VIEW "V_EXPORT_DMEP" ("INTERVENANT_ID", "TYPE_INTERVENANT_ID", "ANNEE_ID", "STRUCTURE_AFF_ID", "STRUCTURE_ENS_ID", "STRUCTURE_ID", "CENTRE_COUT_ID", "ELEMENT_PEDAGOGIQUE_ID", "ETAPE_ID", "TYPE_FORMATION_ID", "GROUPE_TYPE_FORMATION_ID", "STATUT_INTERVENANT_ID", "PERIODE_ID", "INTERVENANT_CODE", "INTERVENANT_NOM", "INTERVENANT_DATE_NAISSANCE", "INTERVENANT_STATUT_LIBELLE", "INTERVENANT_TYPE_CODE", "INTERVENANT_TYPE_LIBELLE", "INTERVENANT_GRADE_CODE", "INTERVENANT_GRADE_LIBELLE", "INTERVENANT_DISCIPLINE_CODE", "INTERVENANT_DISCIPLINE_LIBELLE", "SERVICE_STRUCTURE_AFF_LIBELLE", "SERVICE_STRUCTURE_ENS_LIBELLE", "ETABLISSEMENT_LIBELLE", "GROUPE_TYPE_FORMATION_LIBELLE", "TYPE_FORMATION_LIBELLE", "ETAPE_NIVEAU", "ETAPE_CODE", "ETAPE_LIBELLE", "ELEMENT_CODE", "ELEMENT_LIBELLE", "ELEMENT_DISCIPLINE_CODE", "ELEMENT_DISCIPLINE_LIBELLE", "FONCTION_REFERENTIEL_LIBELLE", "ELEMENT_TAUX_FI", "ELEMENT_TAUX_FC", "ELEMENT_TAUX_FA", "ELEMENT_SOURCE_LIBELLE", "COMMENTAIRES", "ETAT", "TYPE_RESSOURCE_LIBELLE", "CENTRE_COUTS_CODE", "CENTRE_COUTS_LIBELLE", "DOMAINE_FONCTIONNEL_CODE", "DOMAINE_FONCTIONNEL_LIBELLE", "PERIODE_LIBELLE", "DATE_MISE_EN_PAIEMENT", "HEURES_FI", "HEURES_FA", "HEURES_FC", "HEURES_FC_MAJOREES", "HEURES_REFERENTIEL") AS - WITH mep AS ( +-- V_FORMULE_SERVICE +CREATE OR REPLACE FORCE VIEW "V_FORMULE_SERVICE" ("ID", "INTERVENANT_ID", "TAUX_FI", "TAUX_FA", "TAUX_FC", "STRUCTURE_AFF_ID", "STRUCTURE_ENS_ID", "PONDERATION_SERVICE_DU", "PONDERATION_SERVICE_COMPL") AS SELECT - frs.service_id, - frsr.service_referentiel_id, - mep.date_mise_en_paiement, - mep.periode_paiement_id, - mep.centre_cout_id, - mep.domaine_fonctionnel_id, - - sum(case when th.code = 'fi' then mep.heures else 0 end) heures_fi, - sum(case when th.code = 'fa' then mep.heures else 0 end) heures_fa, - sum(case when th.code = 'fc' then mep.heures else 0 end) heures_fc, - sum(case when th.code = 'fc_majorees' then mep.heures else 0 end) heures_fc_majorees, - sum(case when th.code = 'referentiel' then mep.heures else 0 end) heures_referentiel - FROM - mise_en_paiement mep - JOIN type_heures th ON th.id = mep.type_heures_id - LEFT JOIN formule_resultat_service frs ON frs.id = mep.formule_res_service_id - LEFT JOIN formule_resultat_service_ref frsr ON frsr.id = mep.formule_res_service_ref_id - WHERE - mep.histo_destruction IS NULL - GROUP BY - frs.service_id, - frsr.service_referentiel_id, - mep.date_mise_en_paiement, - mep.periode_paiement_id, - mep.centre_cout_id, - mep.domaine_fonctionnel_id -) -SELECT - i.id intervenant_id, - ti.id type_intervenant_id, - i.annee_id annee_id, - saff.id structure_aff_id, - sens.id structure_ens_id, - NVL(sens.id,saff.id) structure_id, - cc.id centre_cout_id, - ep.id element_pedagogique_id, - etp.id etape_id, - tf.id type_formation_id, - gtf.id groupe_type_formation_id, - si.id statut_intervenant_id, - p.id periode_id, - - i.source_code intervenant_code, - i.nom_usuel || ' ' || i.prenom intervenant_nom, - i.date_naissance intervenant_date_naissance, - si.libelle intervenant_statut_libelle, - ti.code intervenant_type_code, - ti.libelle intervenant_type_libelle, - g.source_code intervenant_grade_code, - g.libelle_court intervenant_grade_libelle, - di.source_code intervenant_discipline_code, - di.libelle_court intervenant_discipline_libelle, - saff.libelle_court service_structure_aff_libelle, - - sens.libelle_court service_structure_ens_libelle, - etab.libelle etablissement_libelle, - gtf.libelle_court groupe_type_formation_libelle, - tf.libelle_court type_formation_libelle, - etp.niveau etape_niveau, - etp.source_code etape_code, - etp.libelle etape_libelle, - ep.source_code element_code, - ep.libelle element_libelle, - de.source_code element_discipline_code, - de.libelle_court element_discipline_libelle, - fr.libelle_long fonction_referentiel_libelle, - ep.taux_fi element_taux_fi, - ep.taux_fc element_taux_fc, - ep.taux_fa element_taux_fa, - src.libelle element_source_libelle, - COALESCE(to_char(s.description),to_char(sr.commentaires)) commentaires, - - CASE - WHEN mep.date_mise_en_paiement IS NULL THEN 'a-mettre-en-paiement' - ELSE 'mis-en-paiement' - END etat, - tr.libelle type_ressource_libelle, - cc.source_code centre_couts_code, - cc.libelle centre_couts_libelle, - df.source_code domaine_fonctionnel_code, - df.libelle domaine_fonctionnel_libelle, - p.libelle_long periode_libelle, - mep.date_mise_en_paiement date_mise_en_paiement, - mep.heures_fi heures_fi, - mep.heures_fa heures_fa, - mep.heures_fc heures_fc, - mep.heures_fc_majorees heures_fc_majorees, - mep.heures_referentiel heures_referentiel + s.id id, + s.intervenant_id intervenant_id, + CASE WHEN ep.id IS NOT NULL THEN ep.taux_fi ELSE 1 END taux_fi, + CASE WHEN ep.id IS NOT NULL THEN ep.taux_fa ELSE 0 END taux_fa, + CASE WHEN ep.id IS NOT NULL THEN ep.taux_fc ELSE 0 END taux_fc, + i.structure_id structure_aff_id, + ep.structure_id structure_ens_id, + NVL( EXP (SUM (LN (m.ponderation_service_du))), 1) ponderation_service_du, + NVL( EXP (SUM (LN (m.ponderation_service_compl))), 1) ponderation_service_compl FROM - mep - JOIN centre_cout cc ON cc.id = mep.centre_cout_id - JOIN type_ressource tr ON tr.id = cc.type_ressource_id - LEFT JOIN service s ON s.id = mep.service_id - LEFT JOIN element_pedagogique ep ON ep.id = s.element_pedagogique_id - LEFT JOIN source src ON src.id = ep.source_id OR (ep.source_id IS NULL AND src.code = 'OSE') - LEFT JOIN discipline de ON de.id = ep.discipline_id - LEFT JOIN etape etp ON etp.id = ep.etape_id - LEFT JOIN type_formation tf ON tf.id = etp.type_formation_id - LEFT JOIN groupe_type_formation gtf ON gtf.id = tf.groupe_id - LEFT JOIN service_referentiel sr ON sr.id = mep.service_referentiel_id - LEFT JOIN fonction_referentiel fr ON fr.id = sr.fonction_id - JOIN intervenant i ON i.id = NVL( s.intervenant_id, sr.intervenant_id ) - JOIN statut_intervenant si ON si.id = i.statut_id - JOIN type_intervenant ti ON ti.id = si.type_intervenant_id - LEFT JOIN grade g ON g.id = i.grade_id - LEFT JOIN discipline di ON di.id = i.discipline_id - LEFT JOIN structure saff ON saff.id = i.structure_id AND ti.code = 'P' - LEFT JOIN structure sens ON sens.id = NVL( ep.structure_id, sr.structure_id ) - JOIN etablissement etab ON etab.id = NVL( s.etablissement_id, ose_parametre.get_etablissement() ) - LEFT JOIN periode p ON p.id = mep.periode_paiement_id - LEFT JOIN domaine_fonctionnel df ON df.id = mep.domaine_fonctionnel_id -ORDER BY - intervenant_nom, - service_structure_aff_libelle, - service_structure_ens_libelle, - etape_libelle, - element_libelle; + service s + JOIN intervenant i ON i.id = s.intervenant_id + LEFT JOIN element_pedagogique ep ON ep.id = s.element_pedagogique_id + LEFT JOIN element_modulateur em ON em.element_id = s.element_pedagogique_id + AND em.histo_destruction IS NULL + LEFT JOIN modulateur m ON m.id = em.modulateur_id +WHERE + s.histo_destruction IS NULL +GROUP BY + s.id, + s.intervenant_id, + ep.id, + ep.taux_fi, ep.taux_fa, ep.taux_fc, + i.structure_id, ep.structure_id; --- V_EXPORT_PAIEMENT_WINPAIE -CREATE OR REPLACE FORCE VIEW "V_EXPORT_PAIEMENT_WINPAIE" ("TYPE_INTERVENANT_ID", "ANNEE_ID", "STRUCTURE_ID", "PERIODE_PAIEMENT_ID", "INTERVENANT_ID", "INSEE", "NOM", "CARTE", "CODE_ORIGINE", "RETENUE", "SENS", "MC", "NBU", "MONTANT", "LIBELLE") AS - SELECT - si.type_intervenant_id type_intervenant_id, - i.annee_id, - t2.structure_id, - t2.periode_paiement_id, - i.id intervenant_id, - - NVL(i.numero_insee,'') || TRIM(NVL(TO_CHAR(i.numero_insee_cle,'00'),'')) insee, - i.nom_usuel || ',' || i.prenom nom, - to_char((SELECT valeur FROM parametre WHERE nom = 'winpaie_carte' AND histo_destruction IS NULL)) carte, - t2.code_origine, - to_char((SELECT valeur FROM parametre WHERE nom = 'winpaie_retenue' AND histo_destruction IS NULL)) retenue, - to_char((SELECT valeur FROM parametre WHERE nom = 'winpaie_sens' AND histo_destruction IS NULL)) sens, - to_char((SELECT valeur FROM parametre WHERE nom = 'winpaie_mc' AND histo_destruction IS NULL)) mc, - t2.nbu, - OSE_FORMULE.GET_TAUX_HORAIRE_HETD( NVL(t2.date_mise_en_paiement,SYSDATE) ) montant, - COALESCE(t2.unite_budgetaire,'') || ' ' || to_char(i.annee_id) || ' ' || to_char(i.annee_id+1) - /* || ' ' || to_char(FLOOR(t2.nbu)) || ' H' || CASE - WHEN to_char(ROUND( t2.nbu-FLOOR(t2.nbu), 2 )*100,'00') = ' 00' THEN '' - ELSE to_char(ROUND( t2.nbu-FLOOR(t2.nbu), 2 )*100,'00') END*/ libelle -FROM ( +-- V_FORMULE_SERVICE_MODIFIE +CREATE OR REPLACE FORCE VIEW "V_FORMULE_SERVICE_MODIFIE" ("ID", "INTERVENANT_ID", "HEURES", "HEURES_DECHARGE") AS SELECT - structure_id, - periode_paiement_id, - intervenant_id, - code_origine, - ROUND( SUM(nbu), 2) nbu, - unite_budgetaire, - date_mise_en_paiement - FROM ( - WITH mep AS ( - SELECT - -- pour les filtres - mep.id, - mis.structure_id, - mep.periode_paiement_id, - mis.intervenant_id, - mep.heures, - cc.unite_budgetaire, - mep.date_mise_en_paiement - FROM - v_mep_intervenant_structure mis - JOIN mise_en_paiement mep ON mep.id = mis.mise_en_paiement_id AND mep.histo_destruction IS NULL - JOIN centre_cout cc ON cc.id = mep.centre_cout_id - JOIN type_heures th ON th.id = mep.type_heures_id - WHERE - mep.date_mise_en_paiement IS NOT NULL - AND mep.periode_paiement_id IS NOT NULL - AND th.eligible_extraction_paie = 1 - ) - SELECT - mep.id, - mep.structure_id, - mep.periode_paiement_id, - mep.intervenant_id, - 2 code_origine, - mep.heures * 4 / 10 nbu, - mep.unite_budgetaire, - mep.date_mise_en_paiement - FROM - mep - WHERE - mep.heures * 4 / 10 > 0 + msd.intervenant_id id, + msd.intervenant_id, + NVL( SUM( msd.heures * mms.multiplicateur ), 0 ) heures, + NVL( SUM( msd.heures * mms.multiplicateur * mms.decharge ), 0 ) heures_decharge +FROM + modification_service_du msd + JOIN MOTIF_MODIFICATION_SERVICE mms ON + mms.id = msd.motif_id + AND mms.histo_destruction IS NULL + JOIN intervenant i ON i.id = msd.intervenant_id +WHERE + msd.histo_destruction IS NULL + AND 1 = ose_divers.intervenant_has_privilege(msd.intervenant_id, 'modif-service-du-association') +GROUP BY + msd.intervenant_id; - UNION +-- V_FORMULE_SERVICE_REF +CREATE OR REPLACE FORCE VIEW "V_FORMULE_SERVICE_REF" ("ID", "INTERVENANT_ID", "STRUCTURE_ID") AS + SELECT + sr.id id, + sr.intervenant_id intervenant_id, + sr.structure_id structure_id +FROM + service_referentiel sr + JOIN intervenant i ON i.id = sr.intervenant_id +WHERE + sr.histo_destruction IS NULL + AND i.id = COALESCE( OSE_FORMULE.GET_INTERVENANT_ID, i.id ); - SELECT - mep.id, - mep.structure_id, - mep.periode_paiement_id, - mep.intervenant_id, - 1 code_origine, - mep.heures * 6 / 10 nbu, - mep.unite_budgetaire, - mep.date_mise_en_paiement - FROM - mep - WHERE - mep.heures * 6 / 10 > 0 - ) t1 - GROUP BY - structure_id, - periode_paiement_id, - intervenant_id, - code_origine, - unite_budgetaire, - date_mise_en_paiement -) t2 -JOIN intervenant i ON i.id = t2.intervenant_id -JOIN statut_intervenant si ON si.id = i.statut_id -JOIN structure s ON s.id = t2.structure_id; +-- V_FORMULE_VOLUME_HORAIRE +CREATE OR REPLACE FORCE VIEW "V_FORMULE_VOLUME_HORAIRE" ("ID", "SERVICE_ID", "INTERVENANT_ID", "TYPE_INTERVENTION_ID", "TYPE_VOLUME_HORAIRE_ID", "ETAT_VOLUME_HORAIRE_ID", "ETAT_VOLUME_HORAIRE_ORDRE", "HEURES", "TAUX_SERVICE_DU", "TAUX_SERVICE_COMPL") AS + SELECT + vh.id id, + s.id service_id, + s.intervenant_id intervenant_id, + ti.id type_intervention_id, + vh.type_volume_horaire_id type_volume_horaire_id, + evh.id etat_volume_horaire_id, + evh.ordre etat_volume_horaire_ordre, + vh.heures heures, + ti.taux_hetd_service taux_service_du, + ti.taux_hetd_complementaire taux_service_compl +FROM + volume_horaire vh + JOIN service s ON s.id = vh.service_id + JOIN type_intervention ti ON ti.id = vh.type_intervention_id + JOIN v_volume_horaire_etat vhe ON vhe.volume_horaire_id = vh.id + JOIN etat_volume_horaire evh ON evh.id = vhe.etat_volume_horaire_id +WHERE + vh.histo_destruction IS NULL + AND s.histo_destruction IS NULL + AND vh.heures <> 0 + AND vh.motif_non_paiement_id IS NULL + AND s.intervenant_id = COALESCE( OSE_FORMULE.GET_INTERVENANT_ID, s.intervenant_id ); --- V_EXPORT_PILOTAGE_ECARTS_ETATS -CREATE OR REPLACE FORCE VIEW "V_EXPORT_PILOTAGE_ECARTS_ETATS" ("ANNEE_ID", "ANNEE", "ETAT", "TYPE_HEURES_ID", "TYPE_HEURES", "STRUCTURE_ID", "STRUCTURE", "INTERVENANT_ID", "INTERVENANT_TYPE", "INTERVENANT_CODE", "INTERVENANT", "HETD_PAYABLES") AS - SELECT - t3.annee_id annee_id, - t3.annee_id || '-' || (t3.annee_id+1) annee, - t3.etat, - t3.type_heures_id, - t3.type_heures, - s.id structure_id, - s.libelle_court structure, - i.id intervenant_id, - ti.libelle intervenant_type, - i.source_code intervenant_code, - i.prenom || ' ' || i.nom_usuel intervenant, - t3.hetd_payables +-- V_FORMULE_VOLUME_HORAIRE_REF +CREATE OR REPLACE FORCE VIEW "V_FORMULE_VOLUME_HORAIRE_REF" ("ID", "SERVICE_REFERENTIEL_ID", "INTERVENANT_ID", "TYPE_VOLUME_HORAIRE_ID", "ETAT_VOLUME_HORAIRE_ID", "ETAT_VOLUME_HORAIRE_ORDRE", "HEURES") AS + SELECT + vhr.id id, + sr.id service_referentiel_id, + sr.intervenant_id intervenant_id, + vhr.type_volume_horaire_id type_volume_horaire_id, + evh.id etat_volume_horaire_id, + evh.ordre etat_volume_horaire_ordre, + vhr.heures heures +FROM + volume_horaire_ref vhr + JOIN service_referentiel sr ON sr.id = vhr.service_referentiel_id + JOIN v_volume_horaire_ref_etat vher ON vher.volume_horaire_ref_id = vhr.id + JOIN etat_volume_horaire evh ON evh.id = vher.etat_volume_horaire_id +WHERE + vhr.histo_destruction IS NULL + AND sr.histo_destruction IS NULL + AND vhr.heures <> 0 + AND sr.intervenant_id = COALESCE( OSE_FORMULE.GET_INTERVENANT_ID, sr.intervenant_id ); + +-- V_FR_SERVICE_CENTRE_COUT +CREATE OR REPLACE FORCE VIEW "V_FR_SERVICE_CENTRE_COUT" ("FORMULE_RESULTAT_SERVICE_ID", "CENTRE_COUT_ID") AS + SELECT + frs.id formule_resultat_service_id, cc.id centre_cout_id FROM + formule_resultat_service frs + JOIN service s ON s.id = frs.service_id + JOIN element_pedagogique ep ON ep.id = s.element_pedagogique_id + JOIN centre_cout cc ON cc.histo_destruction IS NULL + + JOIN centre_cout_structure ccs ON ccs.centre_cout_id = cc.id + AND ccs.structure_id = ep.structure_id + AND ccs.histo_destruction IS NULL + + JOIN cc_activite a ON a.id = cc.activite_id + AND a.histo_destruction IS NULL + + JOIN type_ressource tr ON tr.id = cc.type_ressource_id + AND tr.histo_destruction IS NULL +WHERE + ( + (frs.heures_compl_fi > 0 AND tr.fi = 1 AND a.fi = 1 ) + OR (frs.heures_compl_fa > 0 AND tr.fa = 1 AND a.fa = 1 ) + OR (frs.heures_compl_fc > 0 AND tr.fc = 1 AND a.fc = 1 ) + OR (frs.heures_compl_fc_majorees > 0 AND tr.fc_majorees = 1 AND a.fc_majorees = 1 ) + ) + +UNION -( SELECT - annee_id, - etat, - type_heures_id, - type_heures, - structure_id, + frs.id formule_resultat_service_id, cc.id +FROM + formule_resultat_service frs + JOIN service s ON s.id = frs.service_id + AND s.element_pedagogique_id IS NULL + + JOIN intervenant i ON i.id = s.intervenant_id + JOIN centre_cout cc ON cc.histo_destruction IS NULL + + JOIN centre_cout_structure ccs ON ccs.centre_cout_id = cc.id + AND ccs.structure_id = i.structure_id + AND ccs.histo_destruction IS NULL + + JOIN cc_activite a ON a.id = cc.activite_id + AND a.histo_destruction IS NULL + + JOIN type_ressource tr ON tr.id = cc.type_ressource_id + AND tr.histo_destruction IS NULL +WHERE + ( + (frs.heures_compl_fi > 0 AND tr.fi = 1 AND a.fi = 1 ) + OR (frs.heures_compl_fa > 0 AND tr.fa = 1 AND a.fa = 1 ) + OR (frs.heures_compl_fc > 0 AND tr.fc = 1 AND a.fc = 1 ) + OR (frs.heures_compl_fc_majorees > 0 AND tr.fc_majorees = 1 AND a.fc_majorees = 1 ) + ); + +-- V_FR_SERVICE_REF_CENTRE_COUT +CREATE OR REPLACE FORCE VIEW "V_FR_SERVICE_REF_CENTRE_COUT" ("FORMULE_RESULTAT_SERV_REF_ID", "CENTRE_COUT_ID") AS + SELECT + frsr.id formule_resultat_serv_ref_id, cc.id +FROM + formule_resultat_service_ref frsr + JOIN service_referentiel sr ON sr.id = frsr.service_referentiel_id + JOIN centre_cout cc ON cc.histo_destruction IS NULL + + JOIN centre_cout_structure ccs ON ccs.centre_cout_id = cc.id + AND ccs.structure_id = sr.structure_id + AND ccs.histo_destruction IS NULL + + JOIN cc_activite a ON a.id = cc.activite_id + AND a.histo_destruction IS NULL + + JOIN type_ressource tr ON tr.id = cc.type_ressource_id + AND tr.histo_destruction IS NULL +WHERE + frsr.heures_compl_referentiel > 0 AND tr.referentiel = 1; + +-- V_HAS_DMEP_A_FAIRE +CREATE OR REPLACE FORCE VIEW "V_HAS_DMEP_A_FAIRE" ("INTERVENANT_ID", "STRUCTURE_ID", "HAS_DMEP_A_FAIRE") AS + SELECT intervenant_id, - sum(hetd) hetd_payables -FROM ( + structure_id, + CASE WHEN + SUM(CASE WHEN heures_dmep > heures_compl THEN heures_compl ELSE heures_dmep END) < SUM(heures_compl) + THEN 1 ELSE 0 END has_dmep_a_faire +FROM + ( SELECT - annee_id, - LOWER(tvh.code) || '-' || evh.code etat, - 10*tvh.ordre + evh.ordre ordre, - type_heures_id, - type_heures, - structure_id, - intervenant_id, - SUM(hetd) hetd - FROM ( - SELECT - i.annee_id, - fr.type_volume_horaire_id, - fr.etat_volume_horaire_id, - th.id type_heures_id, - th.code type_heures, - COALESCE(ep.structure_id,i.structure_id) structure_id, - fr.intervenant_id, - SUM(frs.heures_compl_fi) hetd - FROM - formule_resultat_service frs - JOIN formule_resultat fr ON fr.id = frs.formule_resultat_id - JOIN service s ON s.id = frs.service_id - JOIN intervenant i ON i.id = fr.intervenant_id - JOIN type_heures th ON th.code = 'fi' - LEFT JOIN element_pedagogique ep ON ep.id = s.element_pedagogique_id - GROUP BY - i.annee_id, - fr.type_volume_horaire_id, - fr.etat_volume_horaire_id, - th.id, th.code, - fr.intervenant_id, - ep.structure_id, - i.structure_id - - UNION ALL - - SELECT - i.annee_id, - fr.type_volume_horaire_id, - fr.etat_volume_horaire_id, - th.id type_heures_id, - th.code type_heures, - COALESCE(ep.structure_id,i.structure_id) structure_id, - fr.intervenant_id, - SUM(frs.heures_compl_fa) hetd - FROM - formule_resultat_service frs - JOIN formule_resultat fr ON fr.id = frs.formule_resultat_id - JOIN service s ON s.id = frs.service_id - JOIN intervenant i ON i.id = fr.intervenant_id - JOIN type_heures th ON th.code = 'fa' - LEFT JOIN element_pedagogique ep ON ep.id = s.element_pedagogique_id - GROUP BY - i.annee_id, - fr.type_volume_horaire_id, - fr.etat_volume_horaire_id, - th.id, th.code, - fr.intervenant_id, - ep.structure_id, - i.structure_id - - UNION ALL - - SELECT - i.annee_id, - fr.type_volume_horaire_id, - fr.etat_volume_horaire_id, - th.id type_heures_id, - th.code type_heures, - COALESCE(ep.structure_id,i.structure_id) structure_id, - fr.intervenant_id, - SUM(frs.heures_compl_fc) hetd - FROM - formule_resultat_service frs - JOIN formule_resultat fr ON fr.id = frs.formule_resultat_id - JOIN service s ON s.id = frs.service_id - JOIN intervenant i ON i.id = fr.intervenant_id - JOIN type_heures th ON th.code = 'fc' - LEFT JOIN element_pedagogique ep ON ep.id = s.element_pedagogique_id - GROUP BY - i.annee_id, - fr.type_volume_horaire_id, - fr.etat_volume_horaire_id, - th.id, th.code, - fr.intervenant_id, - ep.structure_id, - i.structure_id - - UNION ALL - + fr.intervenant_id intervenant_id, + NVL( ep.structure_id, i.structure_id ) structure_id, + frs.heures_compl_fi + frs.heures_compl_fa + frs.heures_compl_fc + frs.heures_compl_fc_majorees heures_compl, + SUM( NVL(mep.heures,0) ) OVER (PARTITION BY frs.id) heures_dmep, + SUM( NVL(CASE WHEN mep.periode_paiement_id IS NOT NULL THEN mep.heures ELSE 0 END,0) ) OVER (PARTITION BY frs.id) heures_mep, + ROW_NUMBER() OVER (PARTITION BY frs.id ORDER BY 1) index__ + FROM + formule_resultat_service frs + JOIN formule_resultat fr ON fr.id = frs.formule_resultat_id + JOIN type_volume_horaire tvh ON tvh.id = fr.type_volume_horaire_id AND tvh.code = 'REALISE' + JOIN etat_volume_horaire evh ON evh.id = fr.etat_volume_horaire_id AND evh.code = 'valide' + JOIN intervenant i on i.id = fr.intervenant_id + JOIN service s ON s.id = frs.service_id + LEFT JOIN element_pedagogique ep on ep.id = s.element_pedagogique_id + LEFT JOIN mise_en_paiement mep ON mep.formule_res_service_id = frs.id AND mep.histo_destruction IS NULL + + UNION + SELECT - i.annee_id, - fr.type_volume_horaire_id, - fr.etat_volume_horaire_id, - th.id type_heures_id, - th.code type_heures, - sr.structure_id, - fr.intervenant_id, - sum( frsr.heures_compl_referentiel ) hetd - FROM - formule_resultat_service_ref frsr - JOIN formule_resultat fr ON fr.id = frsr.formule_resultat_id - JOIN service_referentiel sr ON sr.id = frsr.service_referentiel_id - JOIN intervenant i ON i.id = fr.intervenant_id - JOIN type_heures th ON th.code = 'referentiel' - GROUP BY - i.annee_id, - fr.type_volume_horaire_id, - fr.etat_volume_horaire_id, - th.id, th.code, - fr.intervenant_id, - sr.structure_id - ) t1 - JOIN type_volume_horaire tvh ON tvh.id = t1.type_volume_horaire_id - JOIN etat_volume_horaire evh ON evh.id = t1.etat_volume_horaire_id - GROUP BY - annee_id, tvh.code, evh.code, tvh.ordre, evh.ordre, type_heures_id, type_heures, structure_id, intervenant_id - - UNION ALL - + fr.intervenant_id intervenant_id, + NVL( s.structure_id, i.structure_id ) structure_id, + frs.heures_compl_referentiel heures_compl, + SUM( NVL(mep.heures,0) ) OVER (PARTITION BY frs.id) heures_dmep, + SUM( NVL(CASE WHEN mep.periode_paiement_id IS NOT NULL THEN mep.heures ELSE 0 END,0) ) OVER (PARTITION BY frs.id) heures_mep, + ROW_NUMBER() OVER (PARTITION BY frs.id ORDER BY 1) index__ + FROM + formule_resultat_service_ref frs + JOIN formule_resultat fr ON fr.id = frs.formule_resultat_id + JOIN type_volume_horaire tvh ON tvh.id = fr.type_volume_horaire_id AND tvh.code = 'REALISE' + JOIN etat_volume_horaire evh ON evh.id = fr.etat_volume_horaire_id AND evh.code = 'valide' + JOIN intervenant i on i.id = fr.intervenant_id + JOIN service_referentiel s ON s.id = frs.service_referentiel_id + LEFT JOIN mise_en_paiement mep ON mep.formule_res_service_ref_id = frs.id AND mep.histo_destruction IS NULL + )mep +WHERE + index__ = 1 +GROUP BY + intervenant_id, + structure_id; + +-- V_HETD_PREV_VAL_STRUCT +CREATE OR REPLACE FORCE VIEW "V_HETD_PREV_VAL_STRUCT" ("ANNEE_ID", "STRUCTURE_ID", "HEURES") AS SELECT - annee_id, - etat, - ordre, - type_heures_id, - type_heures, - structure_id, - intervenant_id, - SUM(hetd) hetd - FROM ( - SELECT - i.annee_id, - 'demande-mise-en-paiement' etat, - 90 ordre, - th.id type_heures_id, - th.code type_heures, - COALESCE( sr.structure_id, ep.structure_id, i.structure_id ) structure_id, - i.id intervenant_id, - mep.heures hetd - FROM - mise_en_paiement mep - JOIN type_heures th ON th.id = mep.type_heures_id - JOIN centre_cout cc ON cc.id = mep.centre_cout_id - LEFT JOIN formule_resultat_service frs ON frs.id = mep.formule_res_service_id - LEFT JOIN formule_resultat_service_ref frsr ON frsr.id = mep.formule_res_service_ref_id - LEFT JOIN formule_resultat fr ON fr.id = COALESCE(frs.formule_resultat_id, frsr.formule_resultat_id) - LEFT JOIN service s ON s.id = frs.service_id - LEFT JOIN element_pedagogique ep ON ep.id = s.element_pedagogique_id - LEFT JOIN service_referentiel sr ON sr.id = frsr.service_referentiel_id - LEFT JOIN intervenant i ON i.id = fr.intervenant_id - WHERE - mep.histo_destruction IS NULL - AND th.eligible_extraction_paie = 1 + annee_id, + structure_id, + sum(heures) heures + +FROM +( +SELECT + i.annee_id, + NVL( ep.structure_id, i.structure_id ) structure_id, + frs.total heures +FROM + formule_resultat_service frs + JOIN formule_resultat fr ON fr.id = frs.formule_resultat_id + JOIN type_volume_horaire tvh ON tvh.id = fr.type_volume_horaire_id + JOIN etat_volume_horaire evh ON evh.id = fr.etat_volume_horaire_id + JOIN intervenant i ON i.id = fr.intervenant_id + JOIN service s ON s.id = frs.service_id + LEFT JOIN element_pedagogique ep ON ep.id = s.element_pedagogique_id + +WHERE + tvh.code = 'PREVU' + AND evh.code = 'valide' +) t1 + +GROUP BY + annee_id, structure_id; + +-- V_IMPORT_TAB_COLS +CREATE OR REPLACE FORCE VIEW "V_IMPORT_TAB_COLS" ("TABLE_NAME", "COLUMN_NAME", "DATA_TYPE", "LENGTH", "NULLABLE", "HAS_DEFAULT", "C_TABLE_NAME", "C_COLUMN_NAME", "IMPORT_ACTIF") AS + WITH importable_tables (table_name )AS ( + SELECT + t.table_name +FROM + user_tab_cols c + join user_tables t on t.table_name = c.table_name +WHERE + c.column_name = 'SOURCE_CODE' + +MINUS + +SELECT + mview_name table_name +FROM + USER_MVIEWS +), c_values (table_name, column_name, c_table_name, c_column_name) AS ( +SELECT + tc.table_name, + tc.column_name, + pcc.table_name c_table_name, + pcc.column_name c_column_name +FROM + user_tab_cols tc + JOIN USER_CONS_COLUMNS cc ON cc.table_name = tc.table_name AND cc.column_name = tc.column_name + JOIN USER_CONSTRAINTS c ON c.constraint_name = cc.constraint_name + JOIN USER_CONSTRAINTS pc ON pc.constraint_name = c.r_constraint_name + JOIN USER_CONS_COLUMNS pcc ON pcc.constraint_name = pc.constraint_name +WHERE + c.constraint_type = 'R' AND pc.constraint_type = 'P' +) +SELECT + tc.table_name, + tc.column_name, + tc.data_type, + CASE WHEN tc.char_length = 0 THEN NULL ELSE tc.char_length END length, + CASE WHEN tc.nullable = 'Y' THEN 1 ELSE 0 END nullable, + CASE WHEN tc.data_default IS NOT NULL THEN 1 ELSE 0 END has_default, + cv.c_table_name, + cv.c_column_name, + CASE WHEN stc.table_name IS NULL THEN 0 ELSE 1 END AS import_actif +FROM + user_tab_cols tc + JOIN importable_tables t ON t.table_name = tc.table_name + LEFT JOIN import_tables it ON it.table_name = tc.table_name + LEFT JOIN c_values cv ON cv.table_name = tc.table_name AND cv.column_name = tc.column_name + LEFT JOIN user_tab_cols stc ON stc.table_name = 'SRC_' || tc.table_name AND stc.column_name = tc.column_name +WHERE + tc.column_name not like 'HISTO_%' + AND tc.column_name <> 'ID' + AND tc.table_name <> 'SYNC_LOG' +ORDER BY + it.ordre, tc.table_name, tc.column_id; + +-- V_INDICATEUR_1010 +CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_1010" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID") AS + SELECT rownum id, t."ANNEE_ID",t."INTERVENANT_ID",t."STRUCTURE_ID" FROM +( +SELECT DISTINCT + w.annee_id, + w.intervenant_id, + i.structure_id +FROM + tbl_workflow w + JOIN tbl_workflow wc ON wc.intervenant_id = w.intervenant_id + JOIN intervenant i ON i.id = w.intervenant_id +WHERE + w.etape_code = 'PJ_SAISIE' + AND wc.etape_code = 'SERVICE_SAISIE' + AND w.type_intervenant_code = 'E' + AND wc.realisation > 0 + AND w.atteignable = 1 + AND w.objectif > w.realisation +) t; + +-- V_INDICATEUR_1011 +CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_1011" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID") AS + SELECT rownum id, t."ANNEE_ID",t."INTERVENANT_ID",t."STRUCTURE_ID" FROM +( +SELECT DISTINCT + w.annee_id, + w.intervenant_id, + i.structure_id +FROM + tbl_workflow w + JOIN tbl_workflow wc ON wc.intervenant_id = w.intervenant_id + JOIN intervenant i ON i.id = w.intervenant_id +WHERE + w.etape_code = 'PJ_SAISIE' + AND wc.etape_code = 'SERVICE_SAISIE' + AND w.type_intervenant_code = 'P' + AND wc.realisation > 0 + AND w.atteignable = 1 + AND w.objectif > w.realisation +) t; + +-- V_INDICATEUR_1020 +CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_1020" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID") AS + SELECT rownum id, t."ANNEE_ID",t."INTERVENANT_ID",t."STRUCTURE_ID" FROM +( +SELECT DISTINCT + w.annee_id, + w.intervenant_id, + i.structure_id +FROM + tbl_workflow w + JOIN tbl_workflow wc ON wc.intervenant_id = w.intervenant_id + JOIN intervenant i ON i.id = w.intervenant_id +WHERE + w.etape_code = 'PJ_VALIDATION' + AND wc.etape_code = 'PJ_SAISIE' + AND w.type_intervenant_code = 'E' + AND wc.objectif = wc.realisation + AND w.atteignable = 1 + AND w.objectif > w.realisation +) t; + +-- V_INDICATEUR_1021 +CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_1021" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID") AS + SELECT rownum id, t."ANNEE_ID",t."INTERVENANT_ID",t."STRUCTURE_ID" FROM +( +SELECT DISTINCT + w.annee_id, + w.intervenant_id, + i.structure_id +FROM + tbl_workflow w + JOIN tbl_workflow wc ON wc.intervenant_id = w.intervenant_id + JOIN intervenant i ON i.id = w.intervenant_id +WHERE + w.etape_code = 'PJ_VALIDATION' + AND wc.etape_code = 'PJ_SAISIE' + AND w.type_intervenant_code = 'P' + AND wc.objectif = wc.realisation + AND w.atteignable = 1 + AND w.objectif > w.realisation +) t; + +-- V_INDICATEUR_110 +CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_110" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID") AS + SELECT + rownum id, + t."ANNEE_ID",t."INTERVENANT_ID",t."STRUCTURE_ID" FROM ( + +SELECT DISTINCT + s.annee_id annee_id, + s.intervenant_id intervenant_id, + s.structure_id structure_id +FROM + tbl_service s +WHERE + s.type_intervenant_code = 'P' + AND s.type_volume_horaire_code = 'PREVU' + AND s.intervenant_structure_id <> s.structure_id + AND s.valide > 0 + AND s.structure_id IS NOT NULL + +) t; + +-- V_INDICATEUR_1110 +CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_1110" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID") AS + SELECT rownum id, t.ANNEE_ID,t.INTERVENANT_ID,t.STRUCTURE_ID FROM ( +SELECT DISTINCT + idc.annee_id, + idc.intervenant_id, + idc.structure_id +FROM + v_indic_depass_charges idc + JOIN type_volume_horaire tvh ON tvh.id = idc.type_volume_horaire_id + LEFT JOIN periode p ON p.id = idc.periode_id +WHERE + (p.code = 'S1' OR p.id IS NULL) + AND tvh.code = 'PREVU' +) t; + +-- V_INDICATEUR_1111 +CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_1111" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID") AS + SELECT rownum id, t.ANNEE_ID,t.INTERVENANT_ID,t.STRUCTURE_ID FROM ( +SELECT DISTINCT + idc.annee_id, + idc.intervenant_id, + idc.structure_id +FROM + v_indic_depass_charges idc + JOIN type_volume_horaire tvh ON tvh.id = idc.type_volume_horaire_id + LEFT JOIN periode p ON p.id = idc.periode_id +WHERE + (p.code = 'S2' OR p.id IS NULL) + AND tvh.code = 'PREVU' +) t; + +-- V_INDICATEUR_1120 +CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_1120" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID") AS + SELECT rownum id, t.ANNEE_ID,t.INTERVENANT_ID,t.STRUCTURE_ID FROM ( +SELECT DISTINCT + idc.annee_id, + idc.intervenant_id, + idc.structure_id +FROM + v_indic_depass_charges idc + JOIN type_volume_horaire tvh ON tvh.id = idc.type_volume_horaire_id + LEFT JOIN periode p ON p.id = idc.periode_id +WHERE + (p.code = 'S1' OR p.id IS NULL) + AND tvh.code = 'REALISE' +) t; + +-- V_INDICATEUR_1121 +CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_1121" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID") AS + SELECT rownum id, t.ANNEE_ID,t.INTERVENANT_ID,t.STRUCTURE_ID FROM ( +SELECT DISTINCT + idc.annee_id, + idc.intervenant_id, + idc.structure_id +FROM + v_indic_depass_charges idc + JOIN type_volume_horaire tvh ON tvh.id = idc.type_volume_horaire_id + LEFT JOIN periode p ON p.id = idc.periode_id +WHERE + (p.code = 'S2' OR p.id IS NULL) + AND tvh.code = 'REALISE' +) t; + +-- V_INDICATEUR_120 +CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_120" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID") AS + SELECT + rownum id, + t."ANNEE_ID",t."INTERVENANT_ID",t."STRUCTURE_ID" FROM ( + +SELECT DISTINCT + s.annee_id annee_id, + s.intervenant_id intervenant_id, + s.structure_id structure_id +FROM + tbl_service s +WHERE + s.type_intervenant_code = 'P' + AND s.type_volume_horaire_code = 'PREVU' + AND s.intervenant_structure_id <> s.structure_id + AND s.valide > 0 + AND s.structure_id IS NOT NULL + +) t; + +-- V_INDICATEUR_1210 +CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_1210" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID", "PLAFOND", "HEURES") AS + SELECT + i.id id, + i.annee_id, + i.id intervenant_id, + i.structure_id, + AVG(t.plafond) plafond, + AVG(t.heures) heures +FROM + ( + SELECT + vhr.type_volume_horaire_id type_volume_horaire_id, + sr.intervenant_id intervenant_id, + fr.plafond plafond, + fr.id fr_id, + SUM(vhr.heures) heures + FROM + service_referentiel sr + JOIN fonction_referentiel fr ON fr.id = sr.fonction_id + JOIN volume_horaire_ref vhr ON vhr.service_referentiel_id = sr.id AND vhr.histo_destruction IS NULL + JOIN type_volume_horaire tvh ON tvh.id = vhr.type_volume_horaire_id AND tvh.code= 'PREVU' + WHERE + sr.histo_destruction IS NULL + GROUP BY + vhr.type_volume_horaire_id, + sr.intervenant_id, + fr.plafond, + fr.id + ) t + JOIN intervenant i ON i.id = t.intervenant_id +WHERE + t.heures > t.plafond + /*i.id*/ +GROUP BY + t.type_volume_horaire_id, + i.annee_id, + i.id, + i.structure_id; + +-- V_INDICATEUR_1220 +CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_1220" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID", "PLAFOND", "HEURES") AS + SELECT + i.id id, + i.annee_id, + i.id intervenant_id, + i.structure_id, + AVG(t.plafond) plafond, + AVG(t.heures) heures +FROM + ( + SELECT + vhr.type_volume_horaire_id type_volume_horaire_id, + sr.intervenant_id intervenant_id, + fr.plafond plafond, + fr.id fr_id, + SUM(vhr.heures) heures + FROM + service_referentiel sr + JOIN fonction_referentiel fr ON fr.id = sr.fonction_id + JOIN volume_horaire_ref vhr ON vhr.service_referentiel_id = sr.id AND vhr.histo_destruction IS NULL + JOIN type_volume_horaire tvh ON tvh.id = vhr.type_volume_horaire_id AND tvh.code= 'REALISE' + WHERE + sr.histo_destruction IS NULL + GROUP BY + vhr.type_volume_horaire_id, + sr.intervenant_id, + fr.plafond, + fr.id + ) t + JOIN intervenant i ON i.id = t.intervenant_id +WHERE + t.heures > t.plafond + /*i.id*/ +GROUP BY + t.type_volume_horaire_id, + i.annee_id, + i.id, + i.structure_id; + +-- V_INDICATEUR_130 +CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_130" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID") AS + SELECT + rownum id, + t."ANNEE_ID",t."INTERVENANT_ID",t."STRUCTURE_ID" FROM ( + +SELECT DISTINCT + s.annee_id annee_id, + s.intervenant_id intervenant_id, + i.structure_id structure_id +FROM + tbl_service s + JOIN intervenant i ON i.id = s.intervenant_id + JOIN statut_intervenant si ON si.id = i.statut_id +WHERE + si.tem_biatss = 1 + AND s.type_volume_horaire_code = 'PREVU' + AND s.intervenant_structure_id <> s.structure_id + AND s.valide > 0 + AND s.structure_id IS NOT NULL + +) t; + +-- V_INDICATEUR_210 +CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_210" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID") AS + SELECT + rownum id, + w.annee_id, + w.intervenant_id, + w.structure_id +FROM + tbl_workflow w +WHERE + w.atteignable = 1 + AND w.etape_code = 'CONSEIL_RESTREINT' + AND w.objectif > 0 + AND w.realisation < 1; + +-- V_INDICATEUR_220 +CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_220" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID") AS + SELECT + rownum id, + w.annee_id, + w.intervenant_id, + i.structure_id +FROM + tbl_workflow w + JOIN intervenant i ON i.id = w.intervenant_id +WHERE + w.atteignable = 1 + AND w.etape_code = 'CONSEIL_ACADEMIQUE' + AND w.objectif > 0 + AND w.realisation < 1; + +-- V_INDICATEUR_310 +CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_310" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID") AS + WITH caok AS ( + SELECT + w.intervenant_id + FROM + tbl_workflow w + WHERE + w.objectif > 0 + AND w.etape_code = 'CONSEIL_ACADEMIQUE' + AND w.realisation = w.objectif +) +SELECT + rownum id, + w.annee_id, + w.intervenant_id, + w.structure_id +FROM + tbl_workflow w + JOIN caok ON caok.intervenant_id = w.intervenant_id +WHERE + w.atteignable = 1 + AND w.etape_code = 'CONTRAT' + AND w.objectif > 0 + AND w.realisation < 1; + +-- V_INDICATEUR_320 +CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_320" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID") AS + SELECT + rownum id, + t."ANNEE_ID",t."INTERVENANT_ID",t."STRUCTURE_ID" +FROM ( +SELECT DISTINCT + w.annee_id, + w.intervenant_id, + w.structure_id +FROM + tbl_workflow w + LEFT JOIN tbl_contrat c ON c.INTERVENANT_ID = w.intervenant_id AND w.structure_id = c.structure_id +WHERE + w.atteignable = 1 + AND w.etape_code = 'CONTRAT' + AND w.objectif > 0 + AND w.realisation = 0 + AND NVL(c.EDITE,0) <> 1 +) t; + +-- V_INDICATEUR_330 +CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_330" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID") AS + WITH has_contrat AS ( + SELECT DISTINCT + intervenant_id + FROM + tbl_contrat + WHERE + edite > 0 +) +SELECT + rownum id, + w.annee_id, + w.intervenant_id, + w.structure_id +FROM + tbl_workflow w + JOIN has_contrat hc ON hc.intervenant_id = w.intervenant_id +WHERE + w.atteignable = 1 + AND w.etape_code = 'CONTRAT' + AND w.objectif > 0 + AND w.realisation < w.objectif; + +-- V_INDICATEUR_340 +CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_340" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID") AS + SELECT + rownum id, + s.annee_id, + s.intervenant_id, + s.structure_id +FROM + tbl_service s + JOIN tbl_workflow w ON w.intervenant_id = s.intervenant_id AND w.structure_id = s.structure_id +WHERE + s.type_intervenant_code = 'V' + AND s.type_volume_horaire_code = 'PREVU' + AND nbvh <> valide + AND w.etape_code = 'CONTRAT' + AND w.atteignable = 1 + AND w.objectif > 0 + AND w.realisation = w.objectif; + +-- V_INDICATEUR_350 +CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_350" ("ID", "INTERVENANT_ID", "ANNEE_ID", "STRUCTURE_ID", "CONTRAT_ID") AS + SELECT + rownum id, + t."INTERVENANT_ID",t."ANNEE_ID",t."STRUCTURE_ID",t."CONTRAT_ID" +FROM ( +SELECT DISTINCT + i.id intervenant_id, + i.annee_id annee_id, + c.structure_id structure_id, + c.id contrat_id +FROM + contrat c + JOIN contrat_fichier cf ON cf.contrat_id = c.id + JOIN fichier f ON f.id = cf.fichier_id + AND f.histo_destruction IS NULL + JOIN intervenant i ON i.id = c.intervenant_id +WHERE + c.histo_destruction IS NULL +) t; + +-- V_INDICATEUR_360 +CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_360" ("ID", "INTERVENANT_ID", "ANNEE_ID", "STRUCTURE_ID", "CONTRAT_ID") AS + SELECT + rownum id, + t."INTERVENANT_ID",t."ANNEE_ID",t."STRUCTURE_ID",t."CONTRAT_ID" +FROM ( +SELECT DISTINCT + i.id intervenant_id, + i.annee_id annee_id, + c.structure_id structure_id, + c.id contrat_id +FROM + contrat c + JOIN intervenant i ON i.id = c.intervenant_id + JOIN tbl_workflow w ON w.intervenant_id = i.id AND w.structure_id = c.structure_id AND w.etape_code = 'CONTRAT' AND w.atteignable = 1 + JOIN validation v ON v.id = c.validation_id AND v.histo_destruction IS NULL +WHERE + c.histo_destruction IS NULL + AND c.date_retour_signe IS NULL +) t; + +-- V_INDICATEUR_410 +CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_410" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID") AS + SELECT + rownum id, + d.annee_id, + d.intervenant_id, + i.structure_id +FROM + tbl_dossier d + JOIN intervenant i ON i.id = d.intervenant_id +WHERE + d.dossier_id IS NOT NULL + AND d.validation_id IS NULL + AND d.peut_saisir_dossier = 1; + +-- V_INDICATEUR_420 +CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_420" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID") AS + SELECT rownum id, t."ANNEE_ID",t."INTERVENANT_ID",t."STRUCTURE_ID" FROM ( + SELECT DISTINCT + i.annee_id annee_id, + i.id intervenant_id, + i.structure_id + FROM + indic_modif_dossier d + JOIN intervenant i ON i.id = d.intervenant_id + WHERE + d.histo_destruction IS NULL +) t; + +-- V_INDICATEUR_510 +CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_510" ("ID", "INTERVENANT_ID", "ANNEE_ID", "STRUCTURE_ID", "ELEMENTS") AS + WITH t AS ( +SELECT + s.intervenant_id, + s.annee_id, + s.structure_id, + listagg( ep.source_code || ' - ' || ep.libelle, '||') WITHIN GROUP (ORDER BY ep.libelle) elements +FROM + tbl_service s + LEFT JOIN element_pedagogique ep ON ep.id = s.element_pedagogique_id +WHERE + ( + s.has_heures_mauvaise_periode = 1 + OR s.etape_histo = 0 + OR s.element_pedagogique_histo = 0 + ) + AND s.heures > 0 +GROUP BY + s.intervenant_id, + s.annee_id, + s.structure_id +) +SELECT + rownum id, t."INTERVENANT_ID",t."ANNEE_ID",t."STRUCTURE_ID", t.elements +FROM t; + +-- V_INDICATEUR_520 +CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_520" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID", "PLAFOND", "HEURES") AS + SELECT + fr.id id, + i.annee_id annee_id, + i.id intervenant_id, + i.structure_id structure_id, + si.plafond_hc_hors_remu_fc plafond, + fr.heures_compl_fa + fr.heures_compl_fc + fr.heures_compl_fi + fr.heures_compl_referentiel heures +FROM + formule_resultat fr + JOIN type_volume_horaire tvh ON tvh.id = fr.type_volume_horaire_id + JOIN etat_volume_horaire evh ON evh.id = fr.etat_volume_horaire_id + JOIN intervenant i ON i.id = fr.intervenant_id + JOIN statut_intervenant si ON si.id = i.statut_id +WHERE + tvh.code = 'PREVU' + AND evh.code = 'saisi' + AND si.plafond_hc_hors_remu_fc < fr.heures_compl_fa + fr.heures_compl_fc + fr.heures_compl_fi + fr.heures_compl_referentiel; + +-- V_INDICATEUR_530 +CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_530" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID", "PLAFOND", "HEURES") AS + SELECT + fr.id id, + i.annee_id annee_id, + i.id intervenant_id, + i.structure_id structure_id, + si.plafond_hc_hors_remu_fc plafond, + fr.heures_compl_fa + fr.heures_compl_fc + fr.heures_compl_fi + fr.heures_compl_referentiel heures +FROM + formule_resultat fr + JOIN type_volume_horaire tvh ON tvh.id = fr.type_volume_horaire_id + JOIN etat_volume_horaire evh ON evh.id = fr.etat_volume_horaire_id + JOIN intervenant i ON i.id = fr.intervenant_id + JOIN statut_intervenant si ON si.id = i.statut_id +WHERE + tvh.code = 'REALISE' + AND evh.code = 'saisi' + AND si.plafond_hc_hors_remu_fc < fr.heures_compl_fa + fr.heures_compl_fc + fr.heures_compl_fi + fr.heures_compl_referentiel; + +-- V_INDICATEUR_540 +CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_540" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID", "PLAFOND", "HEURES") AS + SELECT + rownum id, + i.annee_id annee_id, + i.id intervenant_id, + i.structure_id structure_id, + ROUND( (COALESCE(si.plafond_hc_remu_fc,0) - COALESCE(i.montant_indemnite_fc,0)) / a.taux_hetd, 2 ) plafond, + fr.heures_compl_fc_majorees heures +FROM + intervenant i + JOIN annee a ON a.id = i.annee_id + JOIN statut_intervenant si ON si.id = i.statut_id + JOIN etat_volume_horaire evh ON evh.code = 'saisi' + JOIN formule_resultat fr ON fr.intervenant_id = i.id AND fr.etat_volume_horaire_id = evh.id + JOIN type_volume_horaire tvh ON tvh.id = fr.type_volume_horaire_id +WHERE + fr.heures_compl_fc_majorees > ROUND( (COALESCE(si.plafond_hc_remu_fc,0) - COALESCE(i.montant_indemnite_fc,0)) / a.taux_hetd, 2 ) + AND tvh.code = 'PREVU'; + +-- V_INDICATEUR_550 +CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_550" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID", "PLAFOND", "HEURES") AS + SELECT + rownum id, + i.annee_id annee_id, + i.id intervenant_id, + i.structure_id structure_id, + ROUND( (COALESCE(si.plafond_hc_remu_fc,0) - COALESCE(i.montant_indemnite_fc,0)) / a.taux_hetd, 2 ) plafond, + fr.heures_compl_fc_majorees heures +FROM + intervenant i + JOIN annee a ON a.id = i.annee_id + JOIN statut_intervenant si ON si.id = i.statut_id + JOIN etat_volume_horaire evh ON evh.code = 'saisi' + JOIN formule_resultat fr ON fr.intervenant_id = i.id AND fr.etat_volume_horaire_id = evh.id + JOIN type_volume_horaire tvh ON tvh.id = fr.type_volume_horaire_id +WHERE + fr.heures_compl_fc_majorees > ROUND( (COALESCE(si.plafond_hc_remu_fc,0) - COALESCE(i.montant_indemnite_fc,0)) / a.taux_hetd, 2 ) + AND tvh.code = 'REALISE'; + +-- V_INDICATEUR_560 +CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_560" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID", "PLAFOND", "HEURES") AS + SELECT + rownum id, + i.annee_id annee_id, + i.id intervenant_id, + i.structure_id structure_id, + si.maximum_hetd plafond, + fr.total heures +FROM + intervenant i + JOIN etat_volume_horaire evh ON evh.code = 'saisi' + JOIN formule_resultat fr ON fr.intervenant_id = i.id AND fr.etat_volume_horaire_id = evh.id + JOIN statut_intervenant si ON si.id = i.statut_id + JOIN type_volume_horaire tvh ON tvh.id = fr.type_volume_horaire_id AND tvh.code= 'PREVU' +WHERE + fr.total > si.maximum_hetd; + +-- V_INDICATEUR_570 +CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_570" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID", "PLAFOND", "HEURES") AS + SELECT + rownum id, + i.annee_id annee_id, + i.id intervenant_id, + i.structure_id structure_id, + si.maximum_hetd plafond, + fr.total heures +FROM + intervenant i + JOIN etat_volume_horaire evh ON evh.code = 'saisi' + JOIN formule_resultat fr ON fr.intervenant_id = i.id AND fr.etat_volume_horaire_id = evh.id + JOIN statut_intervenant si ON si.id = i.statut_id + JOIN type_volume_horaire tvh ON tvh.id = fr.type_volume_horaire_id AND tvh.code= 'REALISE' +WHERE + fr.total > si.maximum_hetd; + +-- V_INDICATEUR_610 +CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_610" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID", "STATUT_INTERVENANT_ID") AS + SELECT rownum id, t."ANNEE_ID",t."INTERVENANT_ID",t."STRUCTURE_ID",t."STATUT_INTERVENANT_ID" FROM +( +SELECT DISTINCT + w.annee_id, + w.intervenant_id, + w.structure_id, + w.statut_intervenant_id +FROM + tbl_workflow w +WHERE + w.etape_code = 'SERVICE_VALIDATION' + AND w.type_intervenant_code = 'P' + AND w.atteignable = 1 + AND w.objectif > w.realisation +) t; + +-- V_INDICATEUR_620 +CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_620" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID") AS + SELECT rownum id, t."ANNEE_ID",t."INTERVENANT_ID",t."STRUCTURE_ID" FROM +( +SELECT DISTINCT + w.annee_id, + w.intervenant_id, + w.structure_id +FROM + tbl_workflow w +WHERE + w.etape_code = 'REFERENTIEL_VALIDATION' + AND w.type_intervenant_code = 'P' + AND w.atteignable = 1 + AND w.objectif > w.realisation +) t; + +-- V_INDICATEUR_630 +CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_630" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID") AS + SELECT rownum id, t."ANNEE_ID",t."INTERVENANT_ID",t."STRUCTURE_ID" FROM +( +SELECT DISTINCT + w.annee_id, + w.intervenant_id, + i.structure_id +FROM + tbl_workflow w + JOIN intervenant i ON i.id = w.intervenant_id +WHERE + w.etape_code = 'CLOTURE_REALISE' + AND w.atteignable = 1 + AND w.objectif > w.realisation +) t; + +-- V_INDICATEUR_640 +CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_640" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID") AS + SELECT rownum id, t."ANNEE_ID",t."INTERVENANT_ID",t."STRUCTURE_ID" FROM +( +SELECT DISTINCT + w.annee_id, + w.intervenant_id, + w.structure_id +FROM + tbl_workflow w + JOIN tbl_workflow wc ON wc.intervenant_id = w.intervenant_id +WHERE + w.etape_code = 'SERVICE_VALIDATION_REALISE' + AND w.objectif > w.realisation + AND w.atteignable = 1 + + AND wc.etape_code = 'CLOTURE_REALISE' + AND wc.objectif = wc.realisation +) t; + +-- V_INDICATEUR_650 +CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_650" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID", "STRUCTURES_CONCERNEES") AS + SELECT rownum id, t."ANNEE_ID",t."INTERVENANT_ID",t."STRUCTURE_ID",t."STRUCTURES_CONCERNEES" FROM +( +SELECT + w.annee_id, + w.intervenant_id, + i.structure_id, + LISTAGG(s.libelle_court, '||') WITHIN GROUP (ORDER BY s.libelle_court) structures_concernees +FROM + tbl_workflow w + JOIN tbl_workflow wc ON wc.intervenant_id = w.intervenant_id + JOIN intervenant i ON i.id = wc.intervenant_id + JOIN structure s ON s.id = w.structure_id +WHERE + w.etape_code = 'SERVICE_VALIDATION_REALISE' + AND w.objectif > w.realisation + AND w.atteignable = 1 + + AND wc.etape_code = 'CLOTURE_REALISE' + AND wc.objectif = wc.realisation + AND w.structure_id <> i.structure_id +GROUP BY + w.annee_id, + w.intervenant_id, + i.structure_id +) t; + +-- V_INDICATEUR_660 +CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_660" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID") AS + SELECT rownum id, t."ANNEE_ID",t."INTERVENANT_ID",t."STRUCTURE_ID" FROM +( +SELECT + w.annee_id, + w.intervenant_id, + i.structure_id +FROM + tbl_workflow w + JOIN tbl_workflow wc ON wc.intervenant_id = w.intervenant_id + JOIN intervenant i ON i.id = wc.intervenant_id + JOIN structure s ON s.id = w.structure_id +WHERE + w.etape_code = 'REFERENTIEL_VALIDATION_REALISE' + AND w.objectif > w.realisation + AND w.atteignable = 1 + + AND wc.etape_code = 'CLOTURE_REALISE' + AND wc.objectif = wc.realisation + AND w.structure_id = i.structure_id +GROUP BY + w.annee_id, + w.intervenant_id, + i.structure_id +) t; + +-- V_INDICATEUR_670 +CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_670" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID", "STRUCTURES_CONCERNEES") AS + SELECT rownum id, t."ANNEE_ID",t."INTERVENANT_ID",t."STRUCTURE_ID",t."STRUCTURES_CONCERNEES" FROM +( +SELECT + w.annee_id, + w.intervenant_id, + i.structure_id, + LISTAGG(s.libelle_court, '||') WITHIN GROUP (ORDER BY s.libelle_court) structures_concernees +FROM + tbl_workflow w + JOIN tbl_workflow wc ON wc.intervenant_id = w.intervenant_id + JOIN intervenant i ON i.id = wc.intervenant_id + JOIN structure s ON s.id = w.structure_id +WHERE + w.etape_code = 'REFERENTIEL_VALIDATION_REALISE' + AND w.objectif > w.realisation + AND w.atteignable = 1 + + AND wc.etape_code = 'CLOTURE_REALISE' + AND wc.objectif = wc.realisation + AND w.structure_id <> i.structure_id +GROUP BY + w.annee_id, + w.intervenant_id, + i.structure_id +) t; + +-- V_INDICATEUR_680 +CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_680" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID", "PLAFOND", "HEURES") AS + SELECT + fr.id id, + i.annee_id annee_id, + i.id intervenant_id, + i.structure_id structure_id, + si.plafond_referentiel plafond, + fr.heures_compl_referentiel heures +FROM + formule_resultat fr + JOIN type_volume_horaire tvh ON tvh.id = fr.type_volume_horaire_id + JOIN etat_volume_horaire evh ON evh.id = fr.etat_volume_horaire_id + JOIN intervenant i ON i.id = fr.intervenant_id + JOIN statut_intervenant si ON si.id = i.statut_id +WHERE + tvh.code = 'PREVU' + AND evh.code = 'saisi' + AND si.plafond_referentiel < fr.service_referentiel + fr.heures_compl_referentiel; + +-- V_INDICATEUR_690 +CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_690" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID", "PLAFOND", "HEURES") AS + SELECT + fr.id id, + i.annee_id annee_id, + i.id intervenant_id, + i.structure_id structure_id, + si.plafond_referentiel plafond, + fr.heures_compl_referentiel heures +FROM + formule_resultat fr + JOIN type_volume_horaire tvh ON tvh.id = fr.type_volume_horaire_id + JOIN etat_volume_horaire evh ON evh.id = fr.etat_volume_horaire_id + JOIN intervenant i ON i.id = fr.intervenant_id + JOIN statut_intervenant si ON si.id = i.statut_id +WHERE + tvh.code = 'REALISE' + AND evh.code = 'saisi' + AND si.plafond_referentiel < fr.service_referentiel + fr.heures_compl_referentiel; + +-- V_INDICATEUR_710 +CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_710" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID") AS + SELECT rownum id, t."ANNEE_ID",t."INTERVENANT_ID",t."STRUCTURE_ID" FROM +( +SELECT DISTINCT + w.annee_id, + w.intervenant_id, + w.structure_id +FROM + tbl_workflow w +WHERE + w.etape_code = 'SERVICE_VALIDATION' + AND w.type_intervenant_code = 'E' + AND w.atteignable = 1 + AND w.objectif > w.realisation +) t; + +-- V_INDICATEUR_720 +CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_720" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID") AS + SELECT rownum id, t."ANNEE_ID",t."INTERVENANT_ID",t."STRUCTURE_ID" FROM +( +SELECT DISTINCT + w.annee_id, + w.intervenant_id, + w.structure_id +FROM + tbl_workflow w +WHERE + w.etape_code = 'SERVICE_VALIDATION_REALISE' + AND w.type_intervenant_code = 'E' + AND w.atteignable = 1 + AND w.objectif > w.realisation +) t; + +-- V_INDICATEUR_810 +CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_810" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID") AS + SELECT rownum id, t."ANNEE_ID",t."INTERVENANT_ID",t."STRUCTURE_ID" FROM +( +SELECT DISTINCT + w.annee_id, + w.intervenant_id, + w.structure_id +FROM + tbl_workflow w +WHERE + w.etape_code = 'DEMANDE_MEP' + AND w.type_intervenant_code = 'P' + AND w.atteignable = 1 + AND w.objectif > w.realisation +) t; + +-- V_INDICATEUR_820 +CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_820" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID") AS + SELECT rownum id, t."ANNEE_ID",t."INTERVENANT_ID",t."STRUCTURE_ID" FROM +( +SELECT DISTINCT + w.annee_id, + w.intervenant_id, + w.structure_id +FROM + tbl_workflow w +WHERE + w.etape_code = 'SAISIE_MEP' + AND w.type_intervenant_code = 'P' + AND w.atteignable = 1 + AND w.objectif > w.realisation +) t; + +-- V_INDICATEUR_910 +CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_910" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID") AS + SELECT rownum id, t."ANNEE_ID",t."INTERVENANT_ID",t."STRUCTURE_ID" FROM +( +SELECT DISTINCT + w.annee_id, + w.intervenant_id, + w.structure_id +FROM + tbl_workflow w +WHERE + w.etape_code = 'DEMANDE_MEP' + AND w.type_intervenant_code = 'E' + AND w.atteignable = 1 + AND w.objectif > w.realisation +) t; + +-- V_INDICATEUR_920 +CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_920" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID") AS + SELECT rownum id, t."ANNEE_ID",t."INTERVENANT_ID",t."STRUCTURE_ID" FROM +( +SELECT DISTINCT + w.annee_id, + w.intervenant_id, + w.structure_id +FROM + tbl_workflow w +WHERE + w.etape_code = 'SAISIE_MEP' + AND w.type_intervenant_code = 'E' + AND w.atteignable = 1 + AND w.objectif > w.realisation +) t; + +-- V_INDIC_ATTENTE_DEMANDE_MEP +CREATE OR REPLACE FORCE VIEW "V_INDIC_ATTENTE_DEMANDE_MEP" ("ID", "INTERVENANT_ID", "SOURCE_CODE", "CODE", "ANNEE_ID", "STRUCTURE_ID", "TOTAL_HEURES_MEP", "TOTAL_HEURES_COMPL") AS + select to_number(i.id||dmep.structure_id) id, i.id intervenant_id, i.source_code, ti.code, i.annee_id, dmep.structure_id, 0 TOTAL_HEURES_MEP, 0 TOTAL_HEURES_COMPL + from intervenant i + join statut_intervenant si on si.id = i.statut_id + join type_intervenant ti on ti.id = si.type_intervenant_id + -- l'intervenant doit avoir des heures disponibles pour une demande de MEP + join V_HAS_DMEP_A_FAIRE dmep on dmep.intervenant_id = i.id and dmep.has_dmep_a_faire <> 0 + where ( + -- un vacataire n'a pas d'autre contrainte + ti.code = 'E' + or + -- mais un permanent doit... + ( + -- avoir sa saisie de service réalisé clôturée + exists ( + select * from validation v + join type_validation tv on v.type_validation_id = tv.id and tv.code = 'CLOTURE_REALISE' + where v.intervenant_id = i.id and v.histo_destruction IS NULL + ) + -- et tous ses enseignements réalisés validés (toutes composantes d'intervention confondues) + and not exists ( + select * from volume_horaire vh + join service s on vh.service_id = s.id and s.histo_destruction IS NULL + join type_volume_horaire tvh on vh.type_volume_horaire_id = tvh.id and tvh.code = 'REALISE' + left join validation_vol_horaire vvh on vvh.volume_horaire_id = vh.id + left join validation v on vvh.validation_id = v.id and v.histo_destruction IS NULL + left join type_validation tv on v.type_validation_id = tv.id and tv.code = 'SERVICES_PAR_COMP' + where s.intervenant_id = i.id and v.id is null and vh.histo_destruction IS NULL + ) + -- et tout son référentiel réalisé validé (toutes composantes d'intervention confondues) + and not exists ( + select * from volume_horaire_ref vh + join service_referentiel s on vh.service_referentiel_id = s.id and s.histo_destruction IS NULL + join type_volume_horaire tvh on vh.type_volume_horaire_id = tvh.id and tvh.code = 'REALISE' + left join validation_vol_horaire_ref vvh on vvh.volume_horaire_ref_id = vh.id + left join validation v on vvh.validation_id = v.id and v.histo_destruction IS NULL + left join type_validation tv on v.type_validation_id = tv.id and tv.code = 'SERVICES_PAR_COMP' + where s.intervenant_id = i.id and v.id is null and vh.histo_destruction IS NULL + ) + ) + ); + +-- V_INDIC_ATTENTE_MEP +CREATE OR REPLACE FORCE VIEW "V_INDIC_ATTENTE_MEP" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID", "TOTAL_HEURES_MEP") AS + with + -- total des heures comp ayant fait l'objet d'une *demande* de mise en paiement + mep as ( + select intervenant_id, structure_id, sum(nvl(mep_heures, 0)) total_heures_mep + from ( + -- enseignements + select + fr.intervenant_id, + nvl(ep.structure_id, i.structure_id) structure_id, + nvl(mep.heures, 0) mep_heures + from mise_en_paiement mep + join formule_resultat_service frs on mep.formule_res_service_id = frs.id + join formule_resultat fr on frs.formule_resultat_id = fr.id + join intervenant i on fr.intervenant_id = i.id + join type_volume_horaire tvh on fr.type_volume_horaire_id = tvh.id and tvh.code = 'REALISE' + join etat_volume_horaire evh on fr.etat_volume_horaire_id = evh.id and evh.code = 'valide' + join service s on frs.service_id = s.id + left join element_pedagogique ep on s.element_pedagogique_id = ep.id + where mep.histo_destruction IS NULL and mep.date_mise_en_paiement is null -- si date_mise_en_paiement = null, c'est une demande + union all + -- referentiel + select + fr.intervenant_id, + s.structure_id, + nvl(mep.heures, 0) mep_heures + from mise_en_paiement mep + join formule_resultat_service_ref frs on mep.formule_res_service_ref_id = frs.id + join formule_resultat fr on frs.formule_resultat_id = fr.id + join intervenant i on fr.intervenant_id = i.id + join type_volume_horaire tvh on fr.type_volume_horaire_id = tvh.id and tvh.code = 'REALISE' + join etat_volume_horaire evh on fr.etat_volume_horaire_id = evh.id and evh.code = 'valide' + join service_referentiel s on frs.service_referentiel_id = s.id + where mep.histo_destruction IS NULL and mep.date_mise_en_paiement is null -- si date_mise_en_paiement = null, c'est une demande + ) + group by intervenant_id, structure_id + ) +select to_number(intervenant_id||structure_id) id, 2014 annee_id, intervenant_id, structure_id, total_heures_mep from mep; + +-- V_INDIC_ATT_VALID_ENS_AUTRE +CREATE OR REPLACE FORCE VIEW "V_INDIC_ATT_VALID_ENS_AUTRE" ("ID", "INTERVENANT_ID", "STRUCTURE_ID") AS + SELECT distinct + to_char(v.intervenant_id)||to_char(v.structure_id) as id, + v.intervenant_id, + v.structure_id +FROM v_indic_tous_services_valides v +INNER JOIN intervenant i ON V.INTERVENANT_ID = i.id AND i.HISTO_DESTRUCTION IS NULL +INNER JOIN TYPE_VOLUME_HORAIRE tvh ON v.type_volume_horaire_id = tvh.id AND tvh.code = 'REALISE' +INNER JOIN VALIDATION clot ON clot.intervenant_id = i.id AND clot.HISTO_DESTRUCTION IS NULL +INNER JOIN TYPE_VALIDATION tv ON tv.id = clot.type_validation_id AND tv.code = 'CLOTURE_REALISE' +WHERE EXISTS + ( + SELECT s2.ID + FROM SERVICE s2 + INNER JOIN ELEMENT_PEDAGOGIQUE ep2 ON s2.ELEMENT_PEDAGOGIQUE_ID = ep2.ID AND ep2.HISTO_DESTRUCTION IS NULL + INNER JOIN VOLUME_HORAIRE vh2 ON s2.ID = vh2.SERVICE_ID AND vh2.HISTO_DESTRUCTION IS NULL + LEFT JOIN VALIDATION_VOL_HORAIRE vvh2 ON vh2.ID = vvh2.VOLUME_HORAIRE_ID + LEFT JOIN VALIDATION val2 ON val2.ID = vvh2.VALIDATION_ID AND val2.HISTO_DESTRUCTION IS NULL + WHERE + s2.INTERVENANT_ID = v.intervenant_id + AND s2.HISTO_DESTRUCTION IS NULL + AND VH2.TYPE_VOLUME_HORAIRE_ID = V.TYPE_VOLUME_HORAIRE_ID + AND ep2.structure_id <> v.structure_id -- autre composante d'intervention que celle qui a tout validé + AND val2.ID IS NULL -- au moins un VH non validé + ); + +-- V_INDIC_ATT_VALID_REF_AUTRE +CREATE OR REPLACE FORCE VIEW "V_INDIC_ATT_VALID_REF_AUTRE" ("ID", "INTERVENANT_ID", "STRUCTURE_ID") AS + SELECT distinct + to_char(v.intervenant_id)||to_char(v.structure_id) as id, + v.intervenant_id, + v.structure_id +FROM v_indic_tous_services_valides v +INNER JOIN intervenant i ON V.INTERVENANT_ID = i.id AND i.HISTO_DESTRUCTION IS NULL +INNER JOIN TYPE_VOLUME_HORAIRE tvh ON v.type_volume_horaire_id = tvh.id AND tvh.code = 'REALISE' +INNER JOIN VALIDATION clot ON clot.intervenant_id = i.id AND clot.HISTO_DESTRUCTION IS NULL +INNER JOIN TYPE_VALIDATION tv ON tv.id = clot.type_validation_id AND tv.code = 'CLOTURE_REALISE' +WHERE EXISTS + ( + SELECT s.ID + FROM SERVICE_REFERENTIEL s + INNER JOIN FONCTION_REFERENTIEL f ON S.FONCTION_ID = f.ID AND f.HISTO_DESTRUCTION IS NULL + INNER JOIN VOLUME_HORAIRE_REF vh ON s.ID = VH.SERVICE_REFERENTIEL_ID AND vh.HISTO_DESTRUCTION IS NULL + LEFT JOIN VALIDATION_VOL_HORAIRE vvh ON vh.ID = vvh.VOLUME_HORAIRE_ID + LEFT JOIN VALIDATION val ON val.ID = vvh.VALIDATION_ID AND val.HISTO_DESTRUCTION IS NULL + WHERE + s.INTERVENANT_ID = v.intervenant_id + AND s.HISTO_DESTRUCTION IS NULL + AND VH.TYPE_VOLUME_HORAIRE_ID = V.TYPE_VOLUME_HORAIRE_ID + AND s.structure_id <> v.structure_id -- autre composante d'intervention que celle qui a tout validé + AND val.ID IS NULL -- au moins un VH non validé + ); + +-- V_INDIC_ATT_VALID_SERVICE +CREATE OR REPLACE FORCE VIEW "V_INDIC_ATT_VALID_SERVICE" ("ID", "INTERVENANT_ID", "STRUCTURE_ID", "TYPE_VOLUME_HORAIRE_ID") AS + select distinct rownum id, i.id intervenant_id, nvl(ep.structure_id, i.structure_id) structure_id, vh.type_volume_horaire_id +from service s +join intervenant i on i.id = s.intervenant_id and i.histo_destruction IS NULL +join volume_horaire vh on vh.service_id = s.id and vh.histo_destruction IS NULL +join element_pedagogique ep on s.element_pedagogique_id = ep.id and ep.histo_destruction IS NULL +--join type_volume_horaire tvh on vh.type_volume_horaire_id = tvh.id and tvh.code = 'REALISE' +left join validation_vol_horaire vvh on vvh.volume_horaire_id = vh.id +left join validation v on vvh.validation_id = v.id and v.histo_destruction IS NULL +where v.id is null and s.histo_destruction IS NULL; + +-- V_INDIC_ATT_VALID_SERVICE_REF +CREATE OR REPLACE FORCE VIEW "V_INDIC_ATT_VALID_SERVICE_REF" ("ID", "INTERVENANT_ID", "STRUCTURE_ID", "TYPE_VOLUME_HORAIRE_ID") AS + select distinct rownum id, i.id intervenant_id, s.structure_id, vh.type_volume_horaire_id +from service_referentiel s +join intervenant i on i.id = s.intervenant_id and i.histo_destruction IS NULL +join volume_horaire_ref vh on vh.service_referentiel_id = s.id and vh.histo_destruction IS NULL +join fonction_referentiel f on s.fonction_id = f.id and f.histo_destruction IS NULL +--join type_volume_horaire tvh on vh.type_volume_horaire_id = tvh.id and tvh.code = 'REALISE' +left join validation_vol_horaire_ref vvh on vvh.volume_horaire_ref_id = vh.id +left join validation v on vvh.validation_id = v.id and v.histo_destruction IS NULL +where v.id is null and s.histo_destruction IS NULL; + +-- V_INDIC_DEPASS_CHARGES +CREATE OR REPLACE FORCE VIEW "V_INDIC_DEPASS_CHARGES" ("ID", "ANNEE_ID", "TYPE_VOLUME_HORAIRE_ID", "INTERVENANT_ID", "STRUCTURE_ID", "ELEMENT_PEDAGOGIQUE_ID", "PERIODE_ID", "TYPE_INTERVENTION_ID", "HEURES") AS + WITH c AS ( + SELECT + vhe.element_pedagogique_id, + vhe.type_intervention_id, + MAX(vhe.heures) heures, + COALESCE( MAX(vhe.groupes), ROUND(SUM(t.groupes),10) ) groupes + + FROM + volume_horaire_ens vhe + JOIN parametre p ON p.nom = 'scenario_charges_services' + LEFT JOIN tbl_chargens t ON t.element_pedagogique_id = vhe.element_pedagogique_id + AND t.type_intervention_id = vhe.type_intervention_id + AND t.scenario_id = to_number(p.valeur) + GROUP BY + vhe.element_pedagogique_id, + vhe.type_intervention_id +), s AS ( + SELECT + i.annee_id, + vh.type_volume_horaire_id, + s.intervenant_id, + s.element_pedagogique_id, + vh.type_intervention_id, + SUM(vh.heures) heures + FROM + volume_horaire vh + JOIN service s ON s.id = vh.service_id + AND s.element_pedagogique_id IS NOT NULL + AND s.histo_destruction IS NULL + JOIN intervenant i ON i.id = s.intervenant_id + AND i.histo_destruction IS NULL + WHERE + vh.histo_destruction IS NULL + GROUP BY + i.annee_id, + vh.type_volume_horaire_id, + s.intervenant_id, + s.element_pedagogique_id, + vh.type_intervention_id +) +SELECT + rownum id, + s.annee_id annee_id, + s.type_volume_horaire_id type_volume_horaire_id, + s.intervenant_id intervenant_id, + ep.structure_id structure_id, + s.element_pedagogique_id element_pedagogique_id, + ep.periode_id periode_id, + s.type_intervention_id type_intervention_id, + s.heures - COALESCE(c.heures * c.groupes,0) heures +FROM + s + JOIN type_intervention ti ON ti.id = s.type_intervention_id + JOIN element_pedagogique ep ON ep.id = s.element_pedagogique_id + LEFT JOIN c ON c.element_pedagogique_id = s.element_pedagogique_id + AND c.type_intervention_id = COALESCE(ti.type_intervention_maquette_id,ti.id) +WHERE + s.heures - COALESCE(c.heures * c.groupes,0) > 0; + +-- V_INDIC_DEPASS_HC_HORS_REMU_FC +CREATE OR REPLACE FORCE VIEW "V_INDIC_DEPASS_HC_HORS_REMU_FC" ("ID", "ANNEE_ID", "INTERVENANT_ID", "TYPE_VOLUME_HORAIRE_ID", "STRUCTURE_ID", "TOTAL", "PLAFOND") AS + with totaux as ( + -- totaux HC FI+FA+FC+Ref par intervenant et type de VH + select fr.intervenant_id, fr.type_volume_horaire_id, sum(fr.heures_compl_fi + fr.heures_compl_fa + fr.heures_compl_fc + fr.heures_compl_referentiel) total + from formule_resultat fr + join etat_volume_horaire evh on evh.id = fr.etat_volume_horaire_id and evh.code = 'saisi' + group by fr.intervenant_id, fr.type_volume_horaire_id +), +depass as ( + -- totaux HC FI+FA+FC+Ref dépassant le plafond HC par intervenant et type de VH + select i.id intervenant_id, t.type_volume_horaire_id, t.total, si.plafond_hc_hors_remu_fc plafond + from intervenant i + join statut_intervenant si on i.statut_id = si.id and si.plafond_hc_hors_remu_fc is not null + join totaux t on t.intervenant_id = i.id + where t.total > si.plafond_hc_hors_remu_fc +), +str_interv as ( + -- structures d'intervention distinctes par intervenant et type de VH + select distinct s.intervenant_id, vh.type_volume_horaire_id, coalesce(ep.structure_id, i.structure_id) structure_id + from service s + left join element_pedagogique ep on s.element_pedagogique_id = ep.id and ep.histo_destruction IS NULL + join intervenant i on s.intervenant_id = i.id and i.histo_destruction IS NULL + join volume_horaire vh on vh.service_id = s.id and vh.histo_destruction IS NULL + join v_vol_horaire_etat_multi vhe on vhe.volume_horaire_id = vh.id + join etat_volume_horaire evh on vhe.etat_volume_horaire_id = evh.id and evh.code = 'saisi' + where s.histo_destruction IS NULL +) +select to_number(d.intervenant_id||d.type_volume_horaire_id||str.structure_id) id, 2014 annee_id, d.intervenant_id, d.type_volume_horaire_id, str.structure_id, d.total, d.plafond +from depass d +join str_interv str on str.intervenant_id = d.intervenant_id and str.type_volume_horaire_id = d.type_volume_horaire_id; + +-- V_INDIC_DEPASS_REF +CREATE OR REPLACE FORCE VIEW "V_INDIC_DEPASS_REF" ("ID", "ANNEE_ID", "INTERVENANT_ID", "TYPE_VOLUME_HORAIRE_ID", "STRUCTURE_ID", "TOTAL", "PLAFOND") AS + with totaux as ( + select fr.intervenant_id, fr.type_volume_horaire_id, sum(fr.service_referentiel) total + from formule_resultat fr + join etat_volume_horaire evh on evh.id = fr.etat_volume_horaire_id and evh.code = 'saisi' + group by fr.intervenant_id, fr.type_volume_horaire_id + having sum(fr.service_referentiel) > 0 +), +depass as ( + select i.id intervenant_id, t.type_volume_horaire_id, t.total, si.plafond_referentiel plafond + from intervenant i + join statut_intervenant si on i.statut_id = si.id and si.plafond_referentiel is not null and si.plafond_referentiel <> 0 + join totaux t on t.intervenant_id = i.id + where t.total > si.plafond_referentiel +), +str_interv as ( + -- structures d'intervention distinctes par intervenant et type de VH + select distinct s.intervenant_id, vh.type_volume_horaire_id, s.structure_id + from service_referentiel s + join volume_horaire_ref vh on vh.service_referentiel_id = s.id and vh.histo_destruction IS NULL + join v_vol_horaire_ref_etat_multi vhe on vhe.volume_horaire_ref_id = vh.id + join etat_volume_horaire evh on vhe.etat_volume_horaire_id = evh.id and evh.code = 'saisi' + where s.histo_destruction IS NULL +) +select to_number(d.intervenant_id||d.type_volume_horaire_id||str.structure_id) id, 2014 annee_id, d.intervenant_id, d.type_volume_horaire_id, str.structure_id, d.total, d.plafond +from depass d +join str_interv str on str.intervenant_id = d.intervenant_id and str.type_volume_horaire_id = d.type_volume_horaire_id; + +-- V_INDIC_DIFF_DOSSIER +CREATE OR REPLACE FORCE VIEW "V_INDIC_DIFF_DOSSIER" ("ID", "NOM_USUEL", "ADRESSE_DOSSIER", "ADRESSE_IMPORT", "RIB_DOSSIER", "RIB_IMPORT", "NOM_USUEL_DOSSIER", "NOM_USUEL_IMPORT", "PRENOM_DOSSIER", "PRENOM_IMPORT") AS + WITH aa AS ( + SELECT a.*, ose_divers.formatted_adresse( + a.NO_VOIE, + a.NOM_VOIE, + a.BATIMENT, + a.MENTION_COMPLEMENTAIRE, + a.LOCALITE, + a.CODE_POSTAL, + a.VILLE, + a.PAYS_LIBELLE) to_string FROM adresse_intervenant a +) +select + i.id, + i.nom_usuel, + case when d.adresse <> a.to_string then d.adresse else null end adresse_dossier, + case when d.adresse <> a.to_string then a.to_string else null end adresse_import, + case when d.rib <> REPLACE(i.BIC || '-' || i.IBAN, ' ') then d.rib else null end rib_dossier, + case when d.rib <> REPLACE(i.BIC || '-' || i.IBAN, ' ') then REPLACE(i.BIC || '-' || i.IBAN, ' ') else null end rib_import, + case when UPPER(REPLACE(d.nom_usuel, ' ')) <> UPPER(REPLACE(i.nom_usuel, ' ')) then REPLACE(d.nom_usuel, ' ') else null end nom_usuel_dossier, + case when UPPER(REPLACE(d.nom_usuel, ' ')) <> UPPER(REPLACE(i.nom_usuel, ' ')) then REPLACE(i.nom_usuel, ' ') else null end nom_usuel_import, + case when UPPER(REPLACE(d.prenom, ' ')) <> UPPER(REPLACE(i.prenom, ' ')) then REPLACE(d.prenom, ' ') else null end prenom_dossier, + case when UPPER(REPLACE(d.prenom, ' ')) <> UPPER(REPLACE(i.prenom, ' ')) then REPLACE(i.prenom, ' ') else null end prenom_import + from intervenant i + join dossier d on d.intervenant_id = i.id + left join aa a on a.intervenant_id = i.id; + +-- V_INDIC_TOUS_SERVICES_VALIDES +CREATE OR REPLACE FORCE VIEW "V_INDIC_TOUS_SERVICES_VALIDES" ("INTERVENANT_ID", "STRUCTURE_ID", "TYPE_VOLUME_HORAIRE_ID") AS + with struct_ens_non_valides as ( + -- intervenants et structures d'intervention pour lesquelles des VH d'enseignement NE SONT PAS validés + SELECT distinct s.intervenant_id, ep.structure_id, vh.type_volume_horaire_id + FROM SERVICE s + INNER JOIN ELEMENT_PEDAGOGIQUE ep ON s.ELEMENT_PEDAGOGIQUE_ID = ep.ID AND ep.HISTO_DESTRUCTION IS NULL + INNER JOIN VOLUME_HORAIRE vh ON s.ID = vh.SERVICE_ID AND vh.HISTO_DESTRUCTION IS NULL + LEFT JOIN VALIDATION_VOL_HORAIRE vvh ON vvh.volume_horaire_id = vh.id + LEFT JOIN VALIDATION val ON val.ID = vvh.validation_id AND val.HISTO_DESTRUCTION IS NULL + WHERE s.HISTO_DESTRUCTION IS NULL + AND val.id is null +), +struct_ref_non_valides as ( + -- intervenants et structures d'intervention pour lesquelles des VH de référentiel NE SONT PAS validés + SELECT distinct s.intervenant_id, s.structure_id, vh.type_volume_horaire_id + FROM SERVICE_REFERENTIEL s + INNER JOIN FONCTION_REFERENTIEL f ON s.FONCTION_ID = f.ID AND f.HISTO_DESTRUCTION IS NULL + INNER JOIN VOLUME_HORAIRE_REF vh ON s.ID = VH.SERVICE_REFERENTIEL_ID AND vh.HISTO_DESTRUCTION IS NULL + LEFT JOIN VALIDATION_VOL_HORAIRE_REF vvh ON VVH.VOLUME_HORAIRE_REF_ID = vh.id + LEFT JOIN VALIDATION val ON val.ID = vvh.validation_id AND val.HISTO_DESTRUCTION IS NULL + WHERE s.HISTO_DESTRUCTION IS NULL + AND val.id is null +) +-- intervenants et structures d'intervention pour lesquelles tous les VH de référentiel et tous les VH d'enseignement SONT validés +SELECT distinct s.intervenant_id, ep.structure_id, vh.type_volume_horaire_id +FROM SERVICE s +INNER JOIN ELEMENT_PEDAGOGIQUE ep ON s.ELEMENT_PEDAGOGIQUE_ID = ep.ID AND ep.HISTO_DESTRUCTION IS NULL +INNER JOIN VOLUME_HORAIRE vh ON s.ID = vh.SERVICE_ID AND vh.HISTO_DESTRUCTION IS NULL +WHERE not exists ( + SELECT * from struct_ens_non_valides ens_nv + where ens_nv.INTERVENANT_ID = s.intervenant_id and ens_nv.structure_id = ep.structure_id and ens_nv.type_volume_horaire_id = vh.type_volume_horaire_id +) +----- +UNION +----- +SELECT distinct s.intervenant_id, s.structure_id, vh.type_volume_horaire_id +FROM SERVICE_REFERENTIEL s +INNER JOIN FONCTION_REFERENTIEL f ON s.FONCTION_ID = f.ID AND f.HISTO_DESTRUCTION IS NULL +INNER JOIN VOLUME_HORAIRE_REF vh ON s.ID = VH.SERVICE_REFERENTIEL_ID AND vh.HISTO_DESTRUCTION IS NULL +WHERE s.HISTO_DESTRUCTION IS NULL +and not exists ( + SELECT * from struct_ref_non_valides ref_nv + where ref_nv.INTERVENANT_ID = s.intervenant_id and ref_nv.structure_id = s.structure_id and ref_nv.type_volume_horaire_id = vh.type_volume_horaire_id +); + +-- V_MEP_INTERVENANT_STRUCTURE +CREATE OR REPLACE FORCE VIEW "V_MEP_INTERVENANT_STRUCTURE" ("ID", "MISE_EN_PAIEMENT_ID", "INTERVENANT_ID", "STRUCTURE_ID", "PERIODE_PAIEMENT_ID", "DOMAINE_FONCTIONNEL_ID") AS + SELECT + rownum id, + t1."MISE_EN_PAIEMENT_ID", + t1."INTERVENANT_ID", + t1."STRUCTURE_ID", + t1.periode_paiement_id, + t1.domaine_fonctionnel_id +FROM ( + +SELECT + mep.id mise_en_paiement_id, + fr.intervenant_id intervenant_id, + sr.structure_id structure_id, + mep.periode_paiement_id periode_paiement_id, + COALESCE(mep.domaine_fonctionnel_id, fr.domaine_fonctionnel_id) domaine_fonctionnel_id +FROM + formule_resultat fr + JOIN formule_resultat_service_ref frsr ON frsr.formule_resultat_id = fr.id + JOIN mise_en_paiement mep ON mep.formule_res_service_ref_id = frsr.id + JOIN centre_cout cc ON cc.id = mep.centre_cout_id + JOIN service_referentiel sr ON sr.id = frsr.service_referentiel_id + JOIN fonction_referentiel fr ON fr.id = sr.fonction_id +UNION + +SELECT + mep.id mise_en_paiement_id, + fr.intervenant_id intervenant_id, + COALESCE( ep.structure_id, i.structure_id ) structure_id, + mep.periode_paiement_id periode_paiement_id, + COALESCE( + mep.domaine_fonctionnel_id, + e.domaine_fonctionnel_id, + to_number((SELECT valeur FROM parametre WHERE nom = 'domaine_fonctionnel_ens_ext')) + ) domaine_fonctionnel_id +FROM + formule_resultat fr + JOIN intervenant i ON i.id = fr.intervenant_id + JOIN formule_resultat_service frs ON frs.formule_resultat_id = fr.id + JOIN mise_en_paiement mep ON mep.formule_res_service_id = frs.id + JOIN centre_cout cc ON cc.id = mep.centre_cout_id + JOIN service s ON s.id = frs.service_id + LEFT JOIN element_pedagogique ep ON ep.id = s.element_pedagogique_id + LEFT JOIN etape e ON e.id = ep.etape_id +) t1; + +-- V_MODIF_SERVICE_DU_EXPORT_CSV +CREATE OR REPLACE FORCE VIEW "V_MODIF_SERVICE_DU_EXPORT_CSV" ("ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID", "ANNEE", "STRUCTURE_LIBELLE", "INTERVENANT_CODE", "INTERVENANT_NOM_USUEL", "INTERVENANT_NOM_PATRONYMIQUE", "INTERVENANT_PRENOM", "INTERVENANT_STATUT_LIBELLE", "INTERVENANT_SERVICE_STATUTAIRE", "MOTIF_CODE", "MOTIF_LIBELLE", "HEURES", "COMMENTAIRES", "MODIFICATEUR", "DATE_MODIFICATION") AS + SELECT + i.annee_id annee_id, + i.id intervenant_id, + i.structure_id structure_id, + + a.libelle annee, + s.libelle_court structure_libelle, + + i.code intervenant_code, + i.nom_usuel intervenant_nom_usuel, + i.nom_patronymique intervenant_nom_patronymique, + i.prenom intervenant_prenom, + si.libelle intervenant_statut_libelle, + si.service_statutaire intervenant_service_statutaire, + + mss.code motif_code, + mss.libelle motif_libelle, + + msd.heures * mss.multiplicateur heures, + + msd.commentaires commentaires, + u.display_name modificateur, + msd.histo_modification date_modification +FROM + modification_service_du msd + JOIN intervenant i ON i.id = msd.intervenant_id + JOIN annee a ON a.id = i.annee_id + JOIN structure s ON s.id = i.structure_id + JOIN statut_intervenant si ON si.id = i.statut_id + JOIN motif_modification_service mss ON mss.id = msd.motif_id + JOIN utilisateur u ON u.id = msd.histo_modificateur_id +WHERE + msd.histo_destruction IS NULL + AND i.histo_destruction IS NULL +ORDER BY + annee_id, + structure_libelle, + intervenant_nom_usuel, + motif_libelle, + heures; + +-- V_NIVEAU_FORMATION +CREATE OR REPLACE FORCE VIEW "V_NIVEAU_FORMATION" ("ID", "CODE", "LIBELLE_LONG", "NIVEAU", "GROUPE_TYPE_FORMATION_ID") AS + SELECT DISTINCT + ose_divers.niveau_formation_id_calc( gtf.id, gtf.pertinence_niveau, e.niveau ) id, + gtf.libelle_court || e.niveau code, + gtf.libelle_long, + e.niveau, + gtf.id groupe_type_formation_id +FROM + etape e + JOIN type_formation tf ON tf.id = e.type_formation_id AND tf.histo_destruction IS NULL + JOIN groupe_type_formation gtf ON gtf.id = tf.groupe_id AND gtf.histo_destruction IS NULL +WHERE + e.histo_destruction IS NULL + AND ose_divers.niveau_formation_id_calc( gtf.id, gtf.pertinence_niveau, e.niveau ) IS NOT NULL +ORDER BY + gtf.libelle_long, e.niveau; + +-- V_PJ_HEURES +CREATE OR REPLACE FORCE VIEW "V_PJ_HEURES" ("NOM_USUEL", "PRENOM", "INTERVENANT_ID", "SOURCE_CODE", "ANNEE_ID", "CATEG", "TOTAL_HEURES") AS + SELECT + i.NOM_USUEL, + i.PRENOM, + i.id intervenant_id, + i.SOURCE_CODE, + i.annee_id, 'service' categ, + sum(vh.HEURES) as total_heures +from INTERVENANT i + join SERVICE s on s.INTERVENANT_ID = i.id and s.histo_destruction IS NULL + join VOLUME_HORAIRE vh on vh.SERVICE_ID = s.id and vh.histo_destruction IS NULL + join type_volume_horaire tvh ON TVH.ID = VH.TYPE_VOLUME_HORAIRE_ID AND (tvh.code = 'PREVU') + join ELEMENT_PEDAGOGIQUE ep on s.ELEMENT_PEDAGOGIQUE_ID = ep.id and ep.histo_destruction IS NULL + join ETAPE e on ep.ETAPE_ID = e.id and e.histo_destruction IS NULL +where i.histo_destruction IS NULL + group by i.NOM_USUEL, i.PRENOM, i.id, i.SOURCE_CODE, i.annee_id, 'service' +UNION + SELECT i.NOM_USUEL, i.PRENOM, i.id intervenant_id, i.SOURCE_CODE, i.annee_id, 'referentiel' categ, sum(vh.HEURES) as total_heures + from INTERVENANT i + join service_referentiel s on s.INTERVENANT_ID = i.id and s.histo_destruction IS NULL + join volume_horaire_ref vh on vh.service_referentiel_id = s.id and vh.histo_destruction IS NULL + join type_volume_horaire tvh ON TVH.ID = VH.TYPE_VOLUME_HORAIRE_ID AND (tvh.code = 'PREVU') + join fonction_referentiel ep on s.fonction_id = ep.id and ep.histo_destruction IS NULL + where i.histo_destruction IS NULL + group by i.NOM_USUEL, i.PRENOM, i.id, i.SOURCE_CODE, i.annee_id, 'referentiel'; + +-- V_PRIVILEGES_ROLES +CREATE OR REPLACE FORCE VIEW "V_PRIVILEGES_ROLES" ("PRIVILEGE", "ROLE") AS + WITH statuts_roles AS ( +SELECT + rp.privilege_id, + r.code role +FROM + role_privilege rp + JOIN role r ON r.id = rp.role_id AND r.histo_destruction IS NULL + +UNION ALL + +SELECT + sp.privilege_id, + 'statut/' || s.source_code role +FROM + statut_privilege sp + JOIN statut_intervenant s ON s.id = sp.statut_id AND s.histo_destruction IS NULL +) +SELECT + cp.code || '-' || p.code privilege, + sr.role +FROM + privilege p + JOIN categorie_privilege cp ON cp.id = p.categorie_id + LEFT JOIN statuts_roles sr ON sr.privilege_id = p.id; + +-- V_REF_INTERVENANT +CREATE OR REPLACE FORCE VIEW "V_REF_INTERVENANT" ("C_INTERVENANT") AS + SELECT DISTINCT + i.source_code C_INTERVENANT +FROM + tbl_service s + JOIN intervenant i ON i.id = s.intervenant_id + JOIN annee a ON a.id = s.annee_id +WHERE + s.nbvh > 0 + AND SYSDATE BETWEEN a.date_debut AND a.date_fin; + +-- V_SERVICE_NON_VALIDE +CREATE OR REPLACE FORCE VIEW "V_SERVICE_NON_VALIDE" ("ID", "INTERVENANT_ID", "SERVICE_ID", "VOLUME_HORAIRE_ID", "ELEMENT_PEDAGOGIQUE_ID", "LIBELLE", "HEURES") AS + select vh.ID, i.ID as intervenant_id, s.ID as service_id, vh.ID as volume_horaire_id, ep.id as element_pedagogique_id, ep.LIBELLE, vh.HEURES + from service s + inner join INTERVENANT i on s.INTERVENANT_ID = i.id + inner join ELEMENT_PEDAGOGIQUE ep on s.ELEMENT_PEDAGOGIQUE_ID = ep.id and ep.histo_destruction IS NULL + inner join VOLUME_HORAIRE vh on vh.SERVICE_ID = s.ID and vh.HISTO_DESTRUCTION is null + left join VALIDATION_VOL_HORAIRE vvh on vvh.VOLUME_HORAIRE_ID = vh.ID + left join VALIDATION v on vvh.VALIDATION_ID = v.ID + left join TYPE_VALIDATION tv on v.TYPE_VALIDATION_ID = tv.ID + where (v.ID is null or v.HISTO_DESTRUCTION is not null) and + not exists ( + select * from VALIDATION_VOL_HORAIRE vvh2 + inner join VALIDATION v2 on vvh2.VALIDATION_ID = v2.ID and v2.histo_destruction IS NULL + where vvh2.VOLUME_HORAIRE_ID = vvh.VOLUME_HORAIRE_ID + ); + +-- V_SERVICE_VALIDE +CREATE OR REPLACE FORCE VIEW "V_SERVICE_VALIDE" ("ID", "INTERVENANT_ID", "SERVICE_ID", "VOLUME_HORAIRE_ID", "ELEMENT_PEDAGOGIQUE_ID", "LIBELLE", "HEURES", "VALIDATION_ID", "CODE") AS + select vh.ID, i.ID as intervenant_id, s.ID as service_id, vh.ID as volume_horaire_id, ep.id as element_pedagogique_id, ep.LIBELLE, vh.HEURES, v.ID as validation_id, tv.CODE + from service s + inner join INTERVENANT i on s.INTERVENANT_ID = i.id + left join ELEMENT_PEDAGOGIQUE ep on s.ELEMENT_PEDAGOGIQUE_ID = ep.id and ep.histo_destruction IS NULL -- pas d'EP si intervention hors-UCBN + inner join VOLUME_HORAIRE vh on vh.SERVICE_ID = s.ID and vh.histo_destruction IS NULL + inner join VALIDATION_VOL_HORAIRE vvh on vvh.VOLUME_HORAIRE_ID = vh.ID + inner join VALIDATION v on vvh.VALIDATION_ID = v.ID and v.histo_destruction IS NULL + inner join TYPE_VALIDATION tv on v.TYPE_VALIDATION_ID = tv.ID; + +-- V_STRUCTURE_TYPE_MODULATEUR +CREATE OR REPLACE FORCE VIEW "V_STRUCTURE_TYPE_MODULATEUR" ("TYPE_MODULATEUR_ID", "STRUCTURE_ID") AS + SELECT DISTINCT + etm.type_modulateur_id type_modulateur_id, + ep.structure_id structure_id +FROM + v_element_type_modulateur etm + JOIN element_pedagogique ep ON ep.id = etm.element_pedagogique_id AND ep.histo_destruction IS NULL; + +-- V_TBL_AGREMENT +CREATE OR REPLACE FORCE VIEW "V_TBL_AGREMENT" ("ANNEE_ID", "TYPE_AGREMENT_ID", "INTERVENANT_ID", "STRUCTURE_ID", "OBLIGATOIRE", "AGREMENT_ID") AS + WITH i_s AS ( + SELECT DISTINCT + fr.intervenant_id, + ep.structure_id + FROM + formule_resultat fr + JOIN type_volume_horaire tvh ON tvh.code = 'PREVU' AND tvh.id = fr.type_volume_horaire_id + JOIN etat_volume_horaire evh ON evh.code = 'valide' AND evh.id = fr.etat_volume_horaire_id + + JOIN formule_resultat_service frs ON frs.formule_resultat_id = fr.id + JOIN service s ON s.id = frs.service_id + JOIN element_pedagogique ep ON ep.id = s.element_pedagogique_id + WHERE + frs.total > 0 +) +SELECT + i.annee_id annee_id, + tas.type_agrement_id type_agrement_id, + i.id intervenant_id, + null structure_id, + tas.obligatoire obligatoire, + a.id agrement_id +FROM + type_agrement ta + JOIN type_agrement_statut tas ON tas.type_agrement_id = ta.id + AND tas.histo_destruction IS NULL + + JOIN intervenant i ON i.histo_destruction IS NULL + AND (tas.premier_recrutement IS NULL OR NVL(i.premier_recrutement,0) = tas.premier_recrutement) + AND i.statut_id = tas.statut_intervenant_id + + LEFT JOIN agrement a ON a.type_agrement_id = ta.id + AND a.intervenant_id = i.id + AND a.histo_destruction IS NULL +WHERE + ta.code = 'CONSEIL_ACADEMIQUE' + +UNION ALL + +SELECT + i.annee_id annee_id, + tas.type_agrement_id type_agrement_id, + i.id intervenant_id, + i_s.structure_id structure_id, + tas.obligatoire obligatoire, + a.id agrement_id +FROM + type_agrement ta + JOIN type_agrement_statut tas ON tas.type_agrement_id = ta.id + AND tas.histo_destruction IS NULL + + JOIN intervenant i ON i.histo_destruction IS NULL + AND (tas.premier_recrutement IS NULL OR NVL(i.premier_recrutement,0) = tas.premier_recrutement) + AND i.statut_id = tas.statut_intervenant_id + + JOIN i_s ON i_s.intervenant_id = i.id + + LEFT JOIN agrement a ON a.type_agrement_id = ta.id + AND a.intervenant_id = i.id + AND a.structure_id = i_s.structure_id + AND a.histo_destruction IS NULL +WHERE + ta.code = 'CONSEIL_RESTREINT'; + +-- V_TBL_CHARGENS +CREATE OR REPLACE FORCE VIEW "V_TBL_CHARGENS" ("ANNEE_ID", "NOEUD_ID", "SCENARIO_ID", "TYPE_HEURES_ID", "TYPE_INTERVENTION_ID", "ELEMENT_PEDAGOGIQUE_ID", "ETAPE_ID", "ETAPE_ENS_ID", "STRUCTURE_ID", "GROUPE_TYPE_FORMATION_ID", "OUVERTURE", "DEDOUBLEMENT", "ASSIDUITE", "EFFECTIF", "HEURES_ENS", "GROUPES", "HEURES", "HETD") AS + WITH t AS ( +SELECT + n.annee_id annee_id, + n.noeud_id noeud_id, + sn.scenario_id scenario_id, + sne.type_heures_id type_heures_id, + ti.id type_intervention_id, + + n.element_pedagogique_id element_pedagogique_id, + n.element_pedagogique_etape_id etape_id, + sne.etape_id etape_ens_id, + n.structure_id structure_id, + n.groupe_type_formation_id groupe_type_formation_id, + + vhe.heures heures, + vhe.heures * ti.taux_hetd_service hetd, + + GREATEST(COALESCE(sns.ouverture, 1),1) ouverture, + GREATEST(COALESCE(sns.dedoublement, snsetp.dedoublement, csdd.dedoublement,1),1) dedoublement, + COALESCE(sns.assiduite,1) assiduite, + sne.effectif*COALESCE(sns.assiduite,1) effectif, + + SUM(sne.effectif*COALESCE(sns.assiduite,1)) OVER (PARTITION BY n.noeud_id, sn.scenario_id, ti.id) t_effectif + +FROM + scenario_noeud_effectif sne + JOIN etape e ON e.id = sne.etape_id + AND e.histo_destruction IS NULL + + JOIN scenario_noeud sn ON sn.id = sne.scenario_noeud_id + AND sn.histo_destruction IS NULL + + JOIN tbl_noeud n ON n.noeud_id = sn.noeud_id + + JOIN volume_horaire_ens vhe ON vhe.element_pedagogique_id = n.element_pedagogique_id + AND vhe.histo_destruction IS NULL + AND vhe.heures > 0 + + JOIN type_intervention ti ON ti.id = vhe.type_intervention_id + + LEFT JOIN tbl_noeud netp ON netp.etape_id = e.id + + LEFT JOIN scenario_noeud snetp ON snetp.scenario_id = sn.scenario_id + AND snetp.noeud_id = netp.noeud_id + AND snetp.histo_destruction IS NULL + + LEFT JOIN scenario_noeud_seuil snsetp ON snsetp.scenario_noeud_id = snetp.id + AND snsetp.type_intervention_id = ti.id + + LEFT JOIN tbl_chargens_seuils_def csdd ON csdd.annee_id = n.annee_id + AND csdd.scenario_id = sn.scenario_id + AND csdd.type_intervention_id = ti.id + AND csdd.groupe_type_formation_id = n.groupe_type_formation_id + AND csdd.structure_id = n.structure_id + + LEFT JOIN scenario_noeud_seuil sns ON sns.scenario_noeud_id = sn.id + AND sns.type_intervention_id = ti.id +) +SELECT + annee_id, + noeud_id, + scenario_id, + type_heures_id, + type_intervention_id, + + element_pedagogique_id, + etape_id, + etape_ens_id, + structure_id, + groupe_type_formation_id, + + ouverture, + dedoublement, + assiduite, + effectif, + heures heures_ens, + --t_effectif, + + CASE WHEN t_effectif < ouverture THEN 0 ELSE + CEIL( t_effectif / dedoublement ) * effectif / t_effectif + END groupes, + + CASE WHEN t_effectif < ouverture THEN 0 ELSE + CEIL( t_effectif / dedoublement ) * heures * effectif / t_effectif + END heures, + + CASE WHEN t_effectif < ouverture THEN 0 ELSE + CEIL( t_effectif / dedoublement ) * hetd * effectif / t_effectif + END hetd + +FROM + t; + +-- V_TBL_CHARGENS_SEUILS_DEF +CREATE OR REPLACE FORCE VIEW "V_TBL_CHARGENS_SEUILS_DEF" ("ANNEE_ID", "SCENARIO_ID", "STRUCTURE_ID", "GROUPE_TYPE_FORMATION_ID", "TYPE_INTERVENTION_ID", "DEDOUBLEMENT") AS + SELECT + sta.annee_id, + sta.scenario_id, + s.structure_id, + gtf.groupe_type_formation_id, + sta.type_intervention_id, + COALESCE(sc1.dedoublement, sc2.dedoublement, sc3.dedoublement, sc4.dedoublement) dedoublement +FROM + (SELECT DISTINCT scenario_id, type_intervention_id, annee_id FROM seuil_charge WHERE histo_destruction IS NULL) sta + JOIN (SELECT DISTINCT structure_id FROM noeud WHERE structure_id IS NOT NULL) s ON 1=1 + JOIN (SELECT id groupe_type_formation_id FROM groupe_type_formation) gtf ON 1=1 + + LEFT JOIN seuil_charge sc1 ON + sc1.histo_destruction IS NULL + AND sc1.annee_id = sta.annee_id + AND sc1.scenario_id = sta.scenario_id + AND sc1.type_intervention_id = sta.type_intervention_id + AND sc1.structure_id = s.structure_id + AND sc1.groupe_type_formation_id = gtf.groupe_type_formation_id + + LEFT JOIN seuil_charge sc2 ON + sc2.histo_destruction IS NULL + AND sc2.annee_id = sta.annee_id + AND sc2.scenario_id = sta.scenario_id + AND sc2.type_intervention_id = sta.type_intervention_id + AND sc2.structure_id = s.structure_id + AND sc2.groupe_type_formation_id IS NULL + + LEFT JOIN seuil_charge sc3 ON + sc3.histo_destruction IS NULL + AND sc3.annee_id = sta.annee_id + AND sc3.scenario_id = sta.scenario_id + AND sc3.type_intervention_id = sta.type_intervention_id + AND sc3.structure_id IS NULL + AND sc3.groupe_type_formation_id = gtf.groupe_type_formation_id + + LEFT JOIN seuil_charge sc4 ON + sc4.histo_destruction IS NULL + AND sc4.annee_id = sta.annee_id + AND sc4.scenario_id = sta.scenario_id + AND sc4.type_intervention_id = sta.type_intervention_id + AND sc4.structure_id IS NULL + AND sc4.groupe_type_formation_id IS NULL +WHERE + COALESCE(sc1.dedoublement, sc2.dedoublement, sc3.dedoublement, sc4.dedoublement, 1) <> 1; + +-- V_TBL_CLOTURE_REALISE +CREATE OR REPLACE FORCE VIEW "V_TBL_CLOTURE_REALISE" ("ANNEE_ID", "INTERVENANT_ID", "PEUT_CLOTURER_SAISIE", "CLOTURE") AS + WITH t AS ( + SELECT + i.annee_id annee_id, + i.id intervenant_id, + si.peut_cloturer_saisie peut_cloturer_saisie, + CASE WHEN v.id IS NULL THEN 0 ELSE 1 END cloture + FROM + intervenant i + JOIN statut_intervenant si ON si.id = i.statut_id + JOIN type_validation tv ON tv.code = 'CLOTURE_REALISE' + + LEFT JOIN validation v ON v.intervenant_id = i.id + AND v.type_validation_id = tv.id + AND v.histo_destruction IS NULL + + WHERE + i.histo_destruction IS NULL +) +SELECT + annee_id, + intervenant_id, + peut_cloturer_saisie, + CASE WHEN sum(cloture) = 0 THEN 0 ELSE 1 END cloture +FROM + t +GROUP BY + annee_id, + intervenant_id, + peut_cloturer_saisie; + +-- V_TBL_CONTRAT +CREATE OR REPLACE FORCE VIEW "V_TBL_CONTRAT" ("ANNEE_ID", "INTERVENANT_ID", "PEUT_AVOIR_CONTRAT", "STRUCTURE_ID", "NBVH", "EDITE", "SIGNE") AS + WITH t AS ( + SELECT + i.annee_id annee_id, + i.id intervenant_id, + si.peut_avoir_contrat peut_avoir_contrat, + NVL(ep.structure_id, i.structure_id) structure_id, + CASE WHEN evh.code IN ('contrat-edite','contrat-signe') THEN 1 ELSE 0 END edite, + CASE WHEN evh.code IN ('contrat-signe') THEN 1 ELSE 0 END signe + FROM + intervenant i + + JOIN statut_intervenant si ON si.id = i.statut_id + + JOIN service s ON s.intervenant_id = i.id + AND s.histo_destruction IS NULL + + JOIN type_volume_horaire tvh ON tvh.code = 'PREVU' + + JOIN volume_horaire vh ON vh.service_id = s.id + AND vh.histo_destruction IS NULL + AND vh.heures <> 0 + AND vh.type_volume_horaire_id = tvh.id + + JOIN v_volume_horaire_etat vhe ON vhe.volume_horaire_id = vh.id + + JOIN etat_volume_horaire evh ON evh.id = vhe.etat_volume_horaire_id + AND evh.code IN ('valide', 'contrat-edite', 'contrat-signe') + + JOIN element_pedagogique ep ON ep.id = s.element_pedagogique_id + + WHERE + i.histo_destruction IS NULL + AND NOT (si.peut_avoir_contrat = 0 AND evh.code = 'valide') + + UNION ALL + + SELECT + i.annee_id annee_id, + i.id intervenant_id, + si.peut_avoir_contrat peut_avoir_contrat, + s.structure_id structure_id, + CASE WHEN evh.code IN ('contrat-edite','contrat-signe') THEN 1 ELSE 0 END edite, + CASE WHEN evh.code IN ('contrat-signe') THEN 1 ELSE 0 END signe + FROM + intervenant i + + JOIN statut_intervenant si ON si.id = i.statut_id + + JOIN service_referentiel s ON s.intervenant_id = i.id + AND s.histo_destruction IS NULL + + JOIN type_volume_horaire tvh ON tvh.code = 'PREVU' + + JOIN volume_horaire_ref vh ON vh.service_referentiel_id = s.id + AND vh.histo_destruction IS NULL + AND vh.heures <> 0 + AND vh.type_volume_horaire_id = tvh.id + + JOIN v_volume_horaire_ref_etat vhe ON vhe.volume_horaire_ref_id = vh.id + + JOIN etat_volume_horaire evh ON evh.id = vhe.etat_volume_horaire_id + AND evh.code IN ('valide', 'contrat-edite', 'contrat-signe') + + WHERE + i.histo_destruction IS NULL + AND NOT (si.peut_avoir_contrat = 0 AND evh.code = 'valide') +) +SELECT + annee_id, + intervenant_id, + peut_avoir_contrat, + structure_id, + count(*) as nbvh, + sum(edite) as edite, + sum(signe) as signe +FROM + t +GROUP BY + annee_id, + intervenant_id, + peut_avoir_contrat, + structure_id; + +-- V_TBL_DMEP_LIQUIDATION +CREATE OR REPLACE FORCE VIEW "V_TBL_DMEP_LIQUIDATION" ("ANNEE_ID", "TYPE_RESSOURCE_ID", "STRUCTURE_ID", "HEURES") AS + SELECT + annee_id, + type_ressource_id, + structure_id, + SUM(heures) heures +FROM +( + SELECT + i.annee_id, + cc.type_ressource_id, + COALESCE( ep.structure_id, i.structure_id ) structure_id, + mep.heures + FROM + mise_en_paiement mep + JOIN centre_cout cc ON cc.id = mep.centre_cout_id + JOIN formule_resultat_service frs ON frs.id = mep.formule_res_service_id + JOIN service s ON s.id = frs.service_id + JOIN intervenant i ON i.id = s.intervenant_id + LEFT JOIN element_pedagogique ep ON ep.id = s.element_pedagogique_id + WHERE + mep.histo_destruction IS NULL + + UNION ALL + + SELECT + i.annee_id, + cc.type_ressource_id, + sr.structure_id structure_id, + heures + FROM + mise_en_paiement mep + JOIN centre_cout cc ON cc.id = mep.centre_cout_id + JOIN formule_resultat_service_ref frsr ON frsr.id = mep.formule_res_service_ref_id + JOIN service_referentiel sr ON sr.id = frsr.service_referentiel_id + JOIN intervenant i ON i.id = sr.intervenant_id + + WHERE + mep.histo_destruction IS NULL + +) t1 +GROUP BY + annee_id, type_ressource_id, structure_id; + +-- V_TBL_DOSSIER +CREATE OR REPLACE FORCE VIEW "V_TBL_DOSSIER" ("ANNEE_ID", "INTERVENANT_ID", "PEUT_SAISIR_DOSSIER", "DOSSIER_ID", "VALIDATION_ID") AS + SELECT + i.annee_id, + i.id intervenant_id, + si.peut_saisir_dossier, + d.id dossier_id, + v.id validation_id +FROM + intervenant i + JOIN statut_intervenant si ON si.id = i.statut_id + LEFT JOIN dossier d ON d.intervenant_id = i.id + AND d.histo_destruction IS NULL + + JOIN type_validation tv ON tv.code = 'DONNEES_PERSO_PAR_COMP' + LEFT JOIN validation v ON v.intervenant_id = i.id + AND v.type_validation_id = tv.id + AND v.histo_destruction IS NULL +WHERE + i.histo_destruction IS NULL; + +-- V_TBL_LIEN +CREATE OR REPLACE FORCE VIEW "V_TBL_LIEN" ("LIEN_ID", "SCENARIO_ID", "SCENARIO_LIEN_ID", "NOEUD_SUP_ID", "NOEUD_INF_ID", "STRUCTURE_ID", "ACTIF", "POIDS", "MAX_POIDS", "CHOIX_MAXIMUM", "CHOIX_MINIMUM", "NB_CHOIX", "TOTAL_POIDS") AS + SELECT + l.id lien_id, + s.id scenario_id, + sl.id scenario_lien_id, + l.noeud_sup_id noeud_sup_id, + l.noeud_inf_id noeud_inf_id, + l.structure_id structure_id, + NVL(sl.actif,1) actif, + NVL(sl.poids,1) poids, + MAX(CASE WHEN 1 = NVL(sl.actif,1) THEN NVL(sl.poids,1) ELSE 0 END) OVER (PARTITION BY l.noeud_sup_id, s.id) max_poids, + sl.choix_maximum choix_maximum, + sl.choix_minimum choix_minimum, + + SUM(NVL(sl.actif,1)) OVER (PARTITION BY l.noeud_sup_id, s.id) nb_choix, + SUM(CASE WHEN 1 = NVL(sl.actif,1) THEN NVL(sl.poids,1) ELSE 0 END) OVER (PARTITION BY l.noeud_sup_id, s.id) total_poids + +FROM + lien l + JOIN scenario s ON s.histo_destruction IS NULL + LEFT JOIN scenario_lien sl ON + sl.lien_id = l.id + AND sl.scenario_id = s.id + AND s.histo_destruction IS NULL +WHERE + l.histo_destruction IS NULL; + +-- V_TBL_PAIEMENT +CREATE OR REPLACE FORCE VIEW "V_TBL_PAIEMENT" ("ANNEE_ID", "FORMULE_RES_SERVICE_ID", "FORMULE_RES_SERVICE_REF_ID", "INTERVENANT_ID", "STRUCTURE_ID", "MISE_EN_PAIEMENT_ID", "PERIODE_PAIEMENT_ID", "HEURES_A_PAYER", "HEURES_A_PAYER_POND", "HEURES_DEMANDEES", "HEURES_PAYEES") AS + SELECT + i.annee_id annee_id, + frs.id formule_res_service_id, + null formule_res_service_ref_id, + i.id intervenant_id, + COALESCE( ep.structure_id, i.structure_id ) structure_id, + mep.id mise_en_paiement_id, + mep.periode_paiement_id periode_paiement_id, + frs.heures_compl_fi + frs.heures_compl_fc + frs.heures_compl_fa + frs.heures_compl_fc_majorees heures_a_payer, + count(*) OVER(PARTITION BY frs.id) heures_a_payer_pond, + NVL(mep.heures,0) heures_demandees, + CASE WHEN mep.periode_paiement_id IS NULL THEN 0 ELSE mep.heures END heures_payees +FROM + formule_resultat_service frs + JOIN type_volume_horaire tvh ON tvh.code = 'REALISE' + JOIN etat_volume_horaire evh ON evh.code = 'valide' + JOIN formule_resultat fr ON fr.id = frs.formule_resultat_id + AND fr.type_volume_horaire_id = tvh.id + AND fr.etat_volume_horaire_id = evh.id + + JOIN intervenant i ON i.id = fr.intervenant_id + JOIN service s ON s.id = frs.service_id + LEFT JOIN element_pedagogique ep ON ep.id = s.element_pedagogique_id + LEFT JOIN mise_en_paiement mep ON mep.formule_res_service_id = frs.id + AND mep.histo_destruction IS NULL + +UNION ALL + +SELECT + i.annee_id annee_id, + null formule_res_service_id, + frs.id formule_res_service_ref_id, + i.id intervenant_id, + s.structure_id structure_id, + mep.id mise_en_paiement_id, + mep.periode_paiement_id periode_paiement_id, + frs.heures_compl_referentiel heures_a_payer, + count(*) OVER(PARTITION BY frs.id) heures_a_payer_pond, + NVL(mep.heures,0) heures_demandees, + CASE WHEN mep.periode_paiement_id IS NULL THEN 0 ELSE mep.heures END heures_payees +FROM + formule_resultat_service_ref frs + JOIN type_volume_horaire tvh ON tvh.code = 'REALISE' + JOIN etat_volume_horaire evh ON evh.code = 'valide' + JOIN formule_resultat fr ON fr.id = frs.formule_resultat_id + AND fr.type_volume_horaire_id = tvh.id + AND fr.etat_volume_horaire_id = evh.id + + JOIN intervenant i ON i.id = fr.intervenant_id + JOIN service_referentiel s ON s.id = frs.service_referentiel_id + LEFT JOIN mise_en_paiement mep ON mep.formule_res_service_ref_id = frs.id + AND mep.histo_destruction IS NULL; + +-- V_TBL_PIECE_JOINTE +CREATE OR REPLACE FORCE VIEW "V_TBL_PIECE_JOINTE" ("ANNEE_ID", "TYPE_PIECE_JOINTE_ID", "INTERVENANT_ID", "DEMANDEE", "FOURNIE", "VALIDEE", "HEURES_POUR_SEUIL") AS + WITH pjf AS ( + SELECT + pjf.annee_id, + pjf.type_piece_jointe_id, + pjf.intervenant_id, + COUNT(*) count, + SUM(CASE WHEN validation_id IS NULL THEN 0 ELSE 1 END) validation, + SUM(CASE WHEN fichier_id IS NULL THEN 0 ELSE 1 END) fichier + FROM + tbl_piece_jointe_fournie pjf + GROUP BY + pjf.annee_id, + pjf.type_piece_jointe_id, + pjf.intervenant_id +) +SELECT + NVL( pjd.annee_id, pjf.annee_id ) annee_id, + NVL( pjd.type_piece_jointe_id, pjf.type_piece_jointe_id ) type_piece_jointe_id, + NVL( pjd.intervenant_id, pjf.intervenant_id ) intervenant_id, + CASE WHEN pjd.intervenant_id IS NULL THEN 0 ELSE 1 END demandee, + CASE WHEN pjf.fichier = pjf.count THEN 1 ELSE 0 END fournie, + CASE WHEN pjf.validation = pjf.count THEN 1 ELSE 0 END validee, + NVL(pjd.heures_pour_seuil,0) heures_pour_seuil +FROM + tbl_piece_jointe_demande pjd + FULL JOIN pjf ON pjf.type_piece_jointe_id = pjd.type_piece_jointe_id AND pjf.intervenant_id = pjd.intervenant_id; + +-- V_TBL_PIECE_JOINTE_DEMANDE +CREATE OR REPLACE FORCE VIEW "V_TBL_PIECE_JOINTE_DEMANDE" ("ANNEE_ID", "INTERVENANT_ID", "TYPE_PIECE_JOINTE_ID", "HEURES_POUR_SEUIL") AS + WITH i_h AS ( + SELECT + s.intervenant_id, + sum(vh.heures) heures, + sum(ep.taux_fc) fc + FROM + service s + JOIN type_volume_horaire tvh ON tvh.code = 'PREVU' + JOIN volume_horaire vh ON vh.service_id = s.id + AND vh.type_volume_horaire_id = tvh.id + AND vh.histo_destruction IS NULL + JOIN element_pedagogique ep ON ep.id = s.element_pedagogique_id -- Service sur l'établissement + WHERE + s.histo_destruction IS NULL + AND vh.motif_non_paiement_id IS NULL -- pas de motif de non paiement + GROUP BY + s.intervenant_id +) +SELECT + i.annee_id annee_id, + i.id intervenant_id, + tpj.id type_piece_jointe_id, + MAX(COALESCE(i_h.heures, 0)) heures_pour_seuil +FROM + intervenant i + + LEFT JOIN dossier d ON d.intervenant_id = i.id + AND d.histo_destruction IS NULL + + JOIN type_piece_jointe_statut tpjs ON tpjs.statut_intervenant_id = i.statut_id + AND tpjs.histo_destruction IS NULL + AND i.annee_id BETWEEN COALESCE(tpjs.annee_debut_id,i.annee_id) AND COALESCE(tpjs.annee_fin_id,i.annee_id) + + JOIN type_piece_jointe tpj ON tpj.id = tpjs.type_piece_jointe_id + AND tpj.histo_destruction IS NULL + + LEFT JOIN i_h ON i_h.intervenant_id = i.id +WHERE + -- Gestion de l'historique + i.histo_destruction IS NULL + + -- Seuil HETD + AND (COALESCE(i_h.heures,0) > COALESCE(tpjs.seuil_hetd,-1)) + + -- En fonction du premier recrutement ou non + AND (tpjs.premier_recrutement = 0 OR COALESCE(i.premier_recrutement,0) = 1) + + -- Le RIB n'est demandé QUE s'il est différent!! + AND CASE + WHEN tpjs.changement_rib = 0 OR d.id IS NULL THEN 1 + ELSE CASE WHEN replace(i.bic, ' ', '') || '-' || replace(i.iban, ' ', '') = d.rib THEN 0 ELSE 1 END + END = 1 + + -- Filtre FC + AND (tpjs.fc = 0 OR i_h.fc > 0) +GROUP BY + i.annee_id, + i.id, + tpj.id; + +-- V_TBL_PIECE_JOINTE_FOURNIE +CREATE OR REPLACE FORCE VIEW "V_TBL_PIECE_JOINTE_FOURNIE" ("ANNEE_ID", "TYPE_PIECE_JOINTE_ID", "INTERVENANT_ID", "PIECE_JOINTE_ID", "VALIDATION_ID", "FICHIER_ID") AS + SELECT + i.annee_id, + pj.type_piece_jointe_id, + pj.intervenant_id, + pj.id piece_jointe_id, + v.id validation_id, + f.id fichier_id +FROM + piece_jointe pj + JOIN intervenant i ON i.id = pj.intervenant_id + AND i.histo_destruction IS NULL + + JOIN piece_jointe_fichier pjf ON pjf.piece_jointe_id = pj.id + JOIN fichier f ON f.id = pjf.fichier_id + AND f.histo_destruction IS NULL + + LEFT JOIN validation v ON v.id = pj.validation_id + AND v.histo_destruction IS NULL +WHERE + pj.histo_destruction IS NULL; + +-- V_TBL_SERVICE +CREATE OR REPLACE FORCE VIEW "V_TBL_SERVICE" ("ANNEE_ID", "INTERVENANT_ID", "INTERVENANT_STRUCTURE_ID", "STRUCTURE_ID", "TYPE_INTERVENANT_ID", "TYPE_INTERVENANT_CODE", "PEUT_SAISIR_SERVICE", "ELEMENT_PEDAGOGIQUE_ID", "SERVICE_ID", "ELEMENT_PEDAGOGIQUE_PERIODE_ID", "ETAPE_ID", "TYPE_VOLUME_HORAIRE_ID", "TYPE_VOLUME_HORAIRE_CODE", "ELEMENT_PEDAGOGIQUE_HISTO", "ETAPE_HISTO", "HAS_HEURES_MAUVAISE_PERIODE", "NBVH", "HEURES", "VALIDE") AS + WITH t AS ( +SELECT + s.id service_id, + s.intervenant_id intervenant_id, + ep.structure_id structure_id, + ep.id element_pedagogique_id, + ep.periode_id element_pedagogique_periode_id, + etp.id etape_id, + + vh.type_volume_horaire_id type_volume_horaire_id, + vh.heures heures, + tvh.code type_volume_horaire_code, + + CASE WHEN ep.histo_destruction IS NULL THEN 1 ELSE 0 END element_pedagogique_histo, + CASE WHEN etp.histo_destruction IS NULL OR cp.id IS NOT NULL THEN 1 ELSE 0 END etape_histo, + + CASE WHEN ep.periode_id IS NOT NULL THEN + SUM( CASE WHEN vh.periode_id <> ep.periode_id THEN 1 ELSE 0 END ) OVER( PARTITION BY vh.service_id, vh.periode_id, vh.type_volume_horaire_id, vh.type_intervention_id ) + ELSE 0 END has_heures_mauvaise_periode, + + CASE WHEN v.id IS NULL THEN 0 ELSE 1 END valide +FROM + service s + LEFT JOIN element_pedagogique ep ON ep.id = s.element_pedagogique_id + LEFT JOIN etape etp ON etp.id = ep.etape_id + LEFT JOIN chemin_pedagogique cp ON cp.etape_id = etp.id + AND cp.element_pedagogique_id = ep.id + AND cp.histo_destruction IS NULL + + JOIN volume_horaire vh ON vh.service_id = s.id + AND vh.histo_destruction IS NULL + + JOIN type_volume_horaire tvh ON tvh.id = vh.type_volume_horaire_id + + LEFT JOIN validation_vol_horaire vvh ON vvh.volume_horaire_id = vh.id + + LEFT JOIN validation v ON v.id = vvh.validation_id + AND v.histo_destruction IS NULL +WHERE + s.histo_destruction IS NULL +) +SELECT + i.annee_id annee_id, + i.id intervenant_id, + i.structure_id intervenant_structure_id, + NVL( t.structure_id, i.structure_id ) structure_id, + ti.id type_intervenant_id, + ti.code type_intervenant_code, + si.peut_saisir_service peut_saisir_service, + + t.element_pedagogique_id, + t.service_id, + t.element_pedagogique_periode_id, + t.etape_id, + t.type_volume_horaire_id, + t.type_volume_horaire_code, + t.element_pedagogique_histo, + t.etape_histo, + + CASE WHEN SUM(t.has_heures_mauvaise_periode) > 0 THEN 1 ELSE 0 END has_heures_mauvaise_periode, + + CASE WHEN type_volume_horaire_id IS NULL THEN 0 ELSE count(*) END nbvh, + CASE WHEN type_volume_horaire_id IS NULL THEN 0 ELSE sum(t.heures) END heures, + sum(valide) valide +FROM + t + JOIN intervenant i ON i.id = t.intervenant_id + JOIN statut_intervenant si ON si.id = i.statut_id + JOIN type_intervenant ti ON ti.id = si.type_intervenant_id +GROUP BY + i.annee_id, + i.id, + i.structure_id, + t.structure_id, + i.structure_id, + ti.id, + ti.code, + si.peut_saisir_service, + t.element_pedagogique_id, + t.service_id, + t.element_pedagogique_periode_id, + t.etape_id, + t.type_volume_horaire_id, + t.type_volume_horaire_code, + t.element_pedagogique_histo, + t.etape_histo; + +-- V_TBL_SERVICE_REFERENTIEL +CREATE OR REPLACE FORCE VIEW "V_TBL_SERVICE_REFERENTIEL" ("ANNEE_ID", "INTERVENANT_ID", "PEUT_SAISIR_SERVICE", "TYPE_VOLUME_HORAIRE_ID", "STRUCTURE_ID", "NBVH", "VALIDE") AS + WITH t AS ( + + SELECT + i.annee_id, + i.id intervenant_id, + si.peut_saisir_referentiel peut_saisir_service, + vh.type_volume_horaire_id, + s.structure_id, + CASE WHEN v.id IS NULL THEN 0 ELSE 1 END valide + FROM + intervenant i + + JOIN statut_intervenant si ON si.id = i.statut_id + + LEFT JOIN service_referentiel s ON s.intervenant_id = i.id + AND s.histo_destruction IS NULL + + LEFT JOIN volume_horaire_ref vh ON vh.service_referentiel_id = s.id + AND vh.histo_destruction IS NULL + + LEFT JOIN validation_vol_horaire_ref vvh ON vvh.volume_horaire_ref_id = vh.id + + LEFT JOIN validation v ON v.id = vvh.validation_id + AND v.histo_destruction IS NULL + WHERE + i.histo_destruction IS NULL + +) +SELECT + annee_id, + intervenant_id, + peut_saisir_service, + type_volume_horaire_id, + structure_id, + CASE WHEN type_volume_horaire_id IS NULL THEN 0 ELSE count(*) END nbvh, + sum(valide) valide +FROM + t +WHERE + NOT (structure_id IS NOT NULL AND type_volume_horaire_id IS NULL) +GROUP BY + annee_id, + intervenant_id, + peut_saisir_service, + type_volume_horaire_id, + structure_id; + +-- V_TBL_SERVICE_SAISIE +CREATE OR REPLACE FORCE VIEW "V_TBL_SERVICE_SAISIE" ("ANNEE_ID", "INTERVENANT_ID", "PEUT_SAISIR_SERVICE", "PEUT_SAISIR_REFERENTIEL", "HEURES_SERVICE_PREV", "HEURES_REFERENTIEL_PREV", "HEURES_SERVICE_REAL", "HEURES_REFERENTIEL_REAL") AS + SELECT + i.annee_id, + i.id intervenant_id, + si.peut_saisir_service, + si.peut_saisir_referentiel, + SUM( CASE WHEN tvhs.code = 'PREVU' THEN NVL(vh .heures,0) ELSE 0 END ) heures_service_prev, + SUM( CASE WHEN tvhs.code = 'PREVU' THEN NVL(vhr.heures,0) ELSE 0 END ) heures_referentiel_prev, + SUM( CASE WHEN tvhs.code = 'REALISE' THEN NVL(vh .heures,0) ELSE 0 END ) heures_service_real, + SUM( CASE WHEN tvhs.code = 'REALISE' THEN NVL(vhr.heures,0) ELSE 0 END ) heures_referentiel_real +FROM + intervenant i + JOIN statut_intervenant si ON si.id = i.statut_id + LEFT JOIN service s ON s.intervenant_id = i.id AND s.histo_destruction IS NULL + LEFT JOIN volume_horaire vh ON vh.service_id = s.id AND vh.histo_destruction IS NULL + LEFT JOIN type_volume_horaire tvhs ON tvhs.id = vh.type_volume_horaire_id + + LEFT JOIN service_referentiel sr ON sr.intervenant_id = i.id AND sr.histo_destruction IS NULL + LEFT JOIN volume_horaire_ref vhr ON vhr.service_referentiel_id = sr.id AND vhr.histo_destruction IS NULL + LEFT JOIN type_volume_horaire tvhrs ON tvhrs.id = vhr.type_volume_horaire_id +WHERE + i.histo_destruction IS NULL +GROUP BY + i.annee_id, + i.id, + si.peut_saisir_service, + si.peut_saisir_referentiel; + +-- V_TBL_VALIDATION_ENSEIGNEMENT +CREATE OR REPLACE FORCE VIEW "V_TBL_VALIDATION_ENSEIGNEMENT" ("ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID", "TYPE_VOLUME_HORAIRE_ID", "SERVICE_ID", "VOLUME_HORAIRE_ID", "VALIDATION_ID") AS + SELECT DISTINCT + i.annee_id, + i.id intervenant_id, + CASE WHEN rsv.priorite = 'affectation' THEN + COALESCE( i.structure_id, ep.structure_id ) + ELSE + COALESCE( ep.structure_id, i.structure_id ) + END structure_id, + vh.type_volume_horaire_id, + s.id service_id, + vh.id volume_horaire_id, + v.id validation_id +FROM + service s + JOIN volume_horaire vh ON vh.service_id = s.id AND vh.histo_destruction IS NULL + JOIN intervenant i ON i.id = s.intervenant_id AND i.histo_destruction IS NULL + JOIN statut_intervenant si ON si.id = i.statut_id + JOIN regle_structure_validation rsv ON rsv.type_intervenant_id = si.type_intervenant_id AND rsv.type_volume_horaire_id = vh.type_volume_horaire_id + LEFT JOIN element_pedagogique ep ON ep.id = s.element_pedagogique_id + LEFT JOIN validation_vol_horaire vvh ON vvh.volume_horaire_id = vh.id + LEFT JOIN validation v ON v.id = vvh.validation_id AND v.histo_destruction IS NULL +WHERE + s.histo_destruction IS NULL; + +-- V_TBL_VALIDATION_REFERENTIEL +CREATE OR REPLACE FORCE VIEW "V_TBL_VALIDATION_REFERENTIEL" ("ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID", "TYPE_VOLUME_HORAIRE_ID", "SERVICE_REFERENTIEL_ID", "VOLUME_HORAIRE_REF_ID", "VALIDATION_ID") AS + SELECT DISTINCT + i.annee_id, + i.id intervenant_id, + CASE WHEN rsv.priorite = 'affectation' THEN + COALESCE( i.structure_id, s.structure_id ) + ELSE + COALESCE( s.structure_id, i.structure_id ) + END structure_id, + vh.type_volume_horaire_id, + s.id service_referentiel_id, + vh.id volume_horaire_ref_id, + v.id validation_id +FROM + service_referentiel s + JOIN volume_horaire_ref vh ON vh.service_referentiel_id = s.id AND vh.histo_destruction IS NULL + JOIN intervenant i ON i.id = s.intervenant_id AND i.histo_destruction IS NULL + JOIN statut_intervenant si ON si.id = i.statut_id + JOIN regle_structure_validation rsv ON rsv.type_intervenant_id = si.type_intervenant_id AND rsv.type_volume_horaire_id = vh.type_volume_horaire_id + LEFT JOIN validation_vol_horaire_ref vvh ON vvh.volume_horaire_ref_id = vh.id + LEFT JOIN validation v ON v.id = vvh.validation_id AND v.histo_destruction IS NULL +WHERE + s.histo_destruction IS NULL; + +-- V_TBL_VOLUME_HORAIRE +CREATE OR REPLACE FORCE VIEW "V_TBL_VOLUME_HORAIRE" ("ANNEE_ID", "INTERVENANT_ID", "INTERVENANT_STRUCTURE_ID", "STRUCTURE_ID", "TYPE_INTERVENANT_ID", "SERVICE_ID", "VOLUME_HORAIRE_ID", "TYPE_INTERVENTION_ID", "MOTIF_NON_PAIEMENT_ID", "VOLUME_HORAIRE_PERIODE_ID", "TYPE_VOLUME_HORAIRE_ID", "ETAT_VOLUME_HORAIRE_ID", "ELEMENT_PEDAGOGIQUE_ID", "ELEMENT_PEDAGOGIQUE_PERIODE_ID", "ETAPE_ID", "TYPE_INTERVENANT_CODE", "TYPE_VOLUME_HORAIRE_CODE", "ETAT_VOLUME_HORAIRE_CODE", "PEUT_SAISIR_SERVICE", "HEURES", "ELEMENT_PEDAGOGIQUE_HISTO", "ETAPE_HISTO", "PERIODE_CORRESP") AS + WITH has_cp AS ( +SELECT + etape_id +FROM + chemin_pedagogique cp +WHERE + cp.histo_destruction IS NULL +GROUP BY + etape_id +) +SELECT + i.annee_id annee_id, + i.id intervenant_id, + i.structure_id intervenant_structure_id, + NVL(ep.structure_id, i.structure_id) structure_id, + ti.id type_intervenant_id, + s.id service_id, + vh.id volume_horaire_id, + vh.type_intervention_id type_intervention_id, + vh.motif_non_paiement_id motif_non_paiement_id, + vh.periode_id volume_horaire_periode_id, + tvh.id type_volume_horaire_id, + evh.id etat_volume_horaire_id, + ep.id element_pedagogique_id, + ep.periode_id element_pedagogique_periode_id, + etp.id etape_id, + + ti.code type_intervenant_code, + tvh.code type_volume_horaire_code, + evh.code etat_volume_horaire_code, + si.peut_saisir_service peut_saisir_service, + vh.heures heures, + + CASE WHEN ep.histo_destruction IS NULL THEN 1 ELSE 0 END element_pedagogique_histo, + CASE WHEN etp.histo_destruction IS NULL OR has_cp.etape_id IS NOT NULL THEN 1 ELSE 0 END etape_histo, + CASE WHEN ep.periode_id IS NOT NULL AND vh.periode_id <> ep.periode_id THEN 0 ELSE 1 END periode_corresp + +FROM + intervenant i + JOIN statut_intervenant si ON si.id = i.statut_id + JOIN type_intervenant ti ON ti.id = si.type_intervenant_id + JOIN service s ON s.intervenant_id = i.id + AND s.histo_destruction IS NULL + JOIN element_pedagogique ep ON ep.id = s.element_pedagogique_id + JOIN etape etp ON etp.id = ep.etape_id + JOIN volume_horaire vh ON vh.service_id = s.id + AND vh.histo_destruction IS NULL + JOIN type_volume_horaire tvh ON tvh.id = vh.type_volume_horaire_id + JOIN v_volume_horaire_etat vhe ON vhe.volume_horaire_id = vh.id + JOIN etat_volume_horaire evh ON evh.id = vhe.etat_volume_horaire_id + LEFT JOIN has_cp ON has_cp.etape_id = etp.id +WHERE + i.histo_destruction IS NULL; + +-- V_TBL_WORKFLOW +CREATE OR REPLACE FORCE VIEW "V_TBL_WORKFLOW" ("ETAPE_CODE", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID", "OBJECTIF", "REALISATION") AS + WITH pj AS ( + SELECT + annee_id, + intervenant_id, + SUM(demandee) demandees, + SUM(fournie) fournies, + SUM(validee) validees + FROM + tbl_piece_jointe + WHERE + 1 = OSE_WORKFLOW.match_intervenant(intervenant_id) + AND demandee > 0 + GROUP BY + annee_id, + intervenant_id +), +mep AS ( + SELECT + annee_id, + intervenant_id, + structure_id, + SUM(heures_a_payer / heures_a_payer_pond) sap, + SUM(heures_demandees) dmep, + SUM(heures_payees) mep + --COUNT(*) sap, + --SUM(CASE WHEN mise_en_paiement_id IS NULL THEN 0 ELSE 1 END) dmep, + --SUM(CASE WHEN periode_paiement_id IS NULL THEN 0 ELSE 1 END) mep + FROM + tbl_paiement + WHERE + 1 = OSE_WORKFLOW.match_intervenant(intervenant_id) + GROUP BY + annee_id, + intervenant_id, + structure_id +) +SELECT + e.code etape_code, + d.annee_id annee_id, + d.intervenant_id intervenant_id, + null structure_id, + 1 objectif, + CASE + WHEN e.code = 'DONNEES_PERSO_SAISIE' THEN + CASE WHEN d.dossier_id IS NULL THEN 0 ELSE 1 END + + WHEN e.code = 'DONNEES_PERSO_VALIDATION' THEN + CASE WHEN d.validation_id IS NULL THEN 0 ELSE 1 END + + END realisation +FROM + tbl_dossier d + JOIN ( + SELECT 'DONNEES_PERSO_SAISIE' code FROM dual + UNION SELECT 'DONNEES_PERSO_VALIDATION' code FROM dual + ) e ON 1=1 +WHERE + d. peut_saisir_dossier = 1 + AND 1 = OSE_WORKFLOW.match_intervenant(d.intervenant_id) + +UNION ALL + +SELECT + e.code etape_code, + tss.annee_id annee_id, + tss.intervenant_id intervenant_id, + NULL structure_id, + 1 objectif, + CASE + WHEN e.code = 'SERVICE_SAISIE' THEN + CASE WHEN tss.heures_service_prev + tss.heures_referentiel_prev > 0 THEN 1 ELSE 0 END + + WHEN e.code = 'SERVICE_SAISIE_REALISE' THEN + CASE WHEN tss.heures_service_real + tss.heures_referentiel_real > 0 THEN 1 ELSE 0 END + + END realisation +FROM + TBL_SERVICE_SAISIE tss + JOIN ( + SELECT 'SERVICE_SAISIE' code FROM dual + UNION SELECT 'SERVICE_SAISIE_REALISE' code FROM dual + ) e ON 1=1 +WHERE + (tss.peut_saisir_service = 1 OR tss.peut_saisir_referentiel = 1) + AND 1 = OSE_WORKFLOW.match_intervenant(tss.intervenant_id) + +UNION ALL + +SELECT + CASE + WHEN tvh.code = 'PREVU' THEN 'SERVICE_VALIDATION' + WHEN tvh.code = 'REALISE' THEN 'SERVICE_VALIDATION_REALISE' + END etape_code, + tve.annee_id annee_id, + tve.intervenant_id intervenant_id, + tve.structure_id structure_id, + COUNT(*) objectif, + SUM(CASE WHEN tve.validation_id IS NOT NULL THEN 1 ELSE 0 END) realisation +FROM + tbl_validation_enseignement tve + JOIN type_volume_horaire tvh ON tvh.id = tve.type_volume_horaire_id +WHERE + 1 = OSE_WORKFLOW.match_intervenant(tve.intervenant_id) +GROUP BY + tve.annee_id, + tve.intervenant_id, + tve.structure_id, + tvh.code + +UNION ALL + +SELECT + CASE + WHEN tvh.code = 'PREVU' THEN 'REFERENTIEL_VALIDATION' + WHEN tvh.code = 'REALISE' THEN 'REFERENTIEL_VALIDATION_REALISE' + END etape_code, + tvr.annee_id annee_id, + tvr.intervenant_id intervenant_id, + tvr.structure_id structure_id, + count(*) objectif, + SUM(CASE WHEN tvr.validation_id IS NOT NULL THEN 1 ELSE 0 END) realisation +FROM + tbl_validation_referentiel tvr + JOIN type_volume_horaire tvh ON tvh.id = tvr.type_volume_horaire_id +WHERE + 1 = OSE_WORKFLOW.match_intervenant(tvr.intervenant_id) +GROUP BY + tvr.annee_id, + tvr.intervenant_id, + tvr.structure_id, + tvh.code + +UNION ALL + +SELECT + e.code etape_code, + pj.annee_id annee_id, + pj.intervenant_id intervenant_id, + null structure_id, + CASE + WHEN e.code = 'PJ_SAISIE' THEN pj.demandees + WHEN e.code = 'PJ_VALIDATION' THEN pj.demandees + END objectif, + CASE + WHEN e.code = 'PJ_SAISIE' THEN pj.fournies + WHEN e.code = 'PJ_VALIDATION' THEN pj.validees + END realisation +FROM + pj + JOIN ( + SELECT 'PJ_SAISIE' code FROM dual + UNION SELECT 'PJ_VALIDATION' code FROM dual + ) e ON ( + (e.code = 'PJ_SAISIE' AND pj.demandees > 0) + OR (e.code = 'PJ_VALIDATION' AND pj.fournies > 0) + ) + +UNION ALL + +SELECT + ta.code etape_code, + a.annee_id annee_id, + a.intervenant_id intervenant_id, + a.structure_id structure_id, + 1 objectif, + CASE WHEN a.agrement_id IS NULL THEN 0 ELSE 1 END realisation +FROM + tbl_agrement a + JOIN type_agrement ta ON ta.id = a.type_agrement_id +WHERE + 1 = OSE_WORKFLOW.match_intervenant(a.intervenant_id) + +UNION ALL + +SELECT + 'CLOTURE_REALISE' etape_code, + c.annee_id annee_id, + c.intervenant_id intervenant_id, + null structure_id, + 1 objectif, + c.cloture realisation +FROM + tbl_cloture_realise c +WHERE + c.peut_cloturer_saisie = 1 + AND 1 = OSE_WORKFLOW.match_intervenant(c.intervenant_id) + +UNION ALL + +SELECT + e.code etape_code, + mep.annee_id annee_id, + mep.intervenant_id intervenant_id, + mep.structure_id structure_id, + CASE + WHEN e.code = 'DEMANDE_MEP' THEN mep.sap + WHEN e.code = 'SAISIE_MEP' THEN mep.dmep + END objectif, + CASE + WHEN e.code = 'DEMANDE_MEP' THEN mep.dmep + WHEN e.code = 'SAISIE_MEP' THEN mep.mep + END realisation +FROM + mep + JOIN ( + SELECT 'DEMANDE_MEP' code FROM dual + UNION SELECT 'SAISIE_MEP' code FROM dual + ) e ON ( + (e.code = 'DEMANDE_MEP' AND mep.sap > 0) + OR (e.code = 'SAISIE_MEP' AND mep.dmep > 0) + ) + + +UNION ALL + +SELECT + 'CONTRAT' etape_code, + annee_id annee_id, + intervenant_id intervenant_id, + structure_id structure_id, + nbvh objectif, + edite realisation +FROM + tbl_contrat c +WHERE + peut_avoir_contrat = 1 + AND nbvh > 0 + AND 1 = OSE_WORKFLOW.match_intervenant(c.intervenant_id); + +-- V_TOTAL_DEMANDE_MEP_STRUCTURE +CREATE OR REPLACE FORCE VIEW "V_TOTAL_DEMANDE_MEP_STRUCTURE" ("INTERVENANT_ID", "STRUCTURE_ID", "TOTAL_HEURES_MEP") AS + with mep as ( + -- enseignements + select + fr.intervenant_id, + nvl(ep.structure_id, i.structure_id) structure_id, + nvl(mep.heures, 0) mep_heures + from mise_en_paiement mep + join formule_resultat_service frs on mep.formule_res_service_id = frs.id --and mep.date_mise_en_paiement is null -- date_mise_en_paiement is null <=> demande + join formule_resultat fr on frs.formule_resultat_id = fr.id + join intervenant i on fr.intervenant_id = i.id + join service s on frs.service_id = s.id + left join element_pedagogique ep on s.element_pedagogique_id = ep.id and ep.histo_destruction IS NULL + where mep.histo_destruction IS NULL + union all + -- referentiel + select + fr.intervenant_id, + s.structure_id, + nvl(mep.heures, 0) mep_heures + from mise_en_paiement mep + join formule_resultat_service_ref frs on mep.formule_res_service_ref_id = frs.id --and mep.date_mise_en_paiement is null -- date_mise_en_paiement is null <=> demande + join formule_resultat fr on frs.formule_resultat_id = fr.id + join intervenant i on fr.intervenant_id = i.id + join service_referentiel s on frs.service_referentiel_id = s.id + where mep.histo_destruction IS NULL +) +select intervenant_id, structure_id, sum(nvl(mep_heures, 0)) total_heures_mep from mep +group by intervenant_id, structure_id; + +-- V_VALIDATION_MISE_EN_PAIEMENT +CREATE OR REPLACE FORCE VIEW "V_VALIDATION_MISE_EN_PAIEMENT" ("VALIDATION_ID", "MISE_EN_PAIEMENT_ID") AS + SELECT + vvh.validation_id, + mep.id mise_en_paiement_id +FROM + validation_vol_horaire vvh + JOIN volume_horaire vh ON vh.id = vvh.volume_horaire_id + JOIN formule_resultat_service frs ON frs.service_id = vh.service_id + JOIN mise_en_paiement mep ON mep.formule_res_service_id = frs.id + +UNION + +SELECT + vvh.validation_id, + mep.id mise_en_paiement_id +FROM + validation_vol_horaire_ref vvh + JOIN volume_horaire_ref vh ON vh.id = vvh.volume_horaire_ref_id + JOIN formule_resultat_service_ref frs ON frs.service_referentiel_id = vh.service_referentiel_id + JOIN mise_en_paiement mep ON mep.formule_res_service_ref_id = frs.id; + +-- V_VOLUME_HORAIRE_ETAT +CREATE OR REPLACE FORCE VIEW "V_VOLUME_HORAIRE_ETAT" ("VOLUME_HORAIRE_ID", "ETAT_VOLUME_HORAIRE_ID") AS + SELECT + vh.id volume_horaire_id, + evh.id etat_volume_horaire_id +FROM + volume_horaire vh + LEFT JOIN contrat c ON c.id = vh.contrat_id AND c.histo_destruction IS NULL + LEFT JOIN validation cv ON cv.id = c.validation_id AND cv.histo_destruction IS NULL + JOIN etat_volume_horaire evh ON evh.code = CASE + WHEN c.date_retour_signe IS NOT NULL THEN 'contrat-signe' + WHEN cv.id IS NOT NULL THEN 'contrat-edite' + WHEN EXISTS( + SELECT * FROM validation v JOIN validation_vol_horaire vvh ON vvh.validation_id = v.id + WHERE vvh.volume_horaire_id = vh.id AND v.histo_destruction IS NULL + ) THEN 'valide' + ELSE 'saisi' + END; + +-- V_VOLUME_HORAIRE_REF_ETAT +CREATE OR REPLACE FORCE VIEW "V_VOLUME_HORAIRE_REF_ETAT" ("VOLUME_HORAIRE_REF_ID", "ETAT_VOLUME_HORAIRE_ID") AS + SELECT + vhr.id volume_horaire_ref_id, + evh.id etat_volume_horaire_id +FROM + volume_horaire_ref vhr + JOIN etat_volume_horaire evh ON evh.code = CASE + WHEN EXISTS( + SELECT * FROM validation v JOIN validation_vol_horaire_ref vvhr ON vvhr.validation_id = v.id + WHERE vvhr.volume_horaire_ref_id = vhr.id AND v.histo_destruction IS NULL + ) THEN 'valide' + ELSE 'saisi' + END; + +-- V_VOL_HORAIRE_ETAT_MULTI +CREATE OR REPLACE FORCE VIEW "V_VOL_HORAIRE_ETAT_MULTI" ("VOLUME_HORAIRE_ID", "ETAT_VOLUME_HORAIRE_ID") AS + select vh.id VOLUME_HORAIRE_ID, evh.id ETAT_VOLUME_HORAIRE_ID + from volume_horaire vh + join service s on s.id = vh.service_id and s.histo_destruction IS NULL + join etat_volume_horaire evh on evh.code = 'saisi' + where vh.histo_destruction IS NULL +union all + select vh.id, evh.id + from volume_horaire vh + join service s on s.id = vh.service_id and s.histo_destruction IS NULL + join etat_volume_horaire evh on evh.code = 'valide' + where vh.histo_destruction IS NULL + and EXISTS( + SELECT * FROM validation v JOIN validation_vol_horaire vvh ON vvh.validation_id = v.id + WHERE vvh.volume_horaire_id = vh.id AND v.histo_destruction IS NULL + ) +union all + select vh.id, evh.id + from volume_horaire vh + join service s on s.id = vh.service_id and s.histo_destruction IS NULL + join contrat c on vh.contrat_id = c.id and c.histo_destruction IS NULL + join etat_volume_horaire evh on evh.code = 'contrat-edite' + where vh.histo_destruction IS NULL +union all + select vh.id, evh.id + from volume_horaire vh + join service s on s.id = vh.service_id and s.histo_destruction IS NULL + join contrat c on vh.contrat_id = c.id and c.histo_destruction IS NULL and c.date_retour_signe is not null + join etat_volume_horaire evh on evh.code = 'contrat-signe' + where vh.histo_destruction IS NULL; + +-- V_VOL_HORAIRE_REF_ETAT_MULTI +CREATE OR REPLACE FORCE VIEW "V_VOL_HORAIRE_REF_ETAT_MULTI" ("VOLUME_HORAIRE_REF_ID", "ETAT_VOLUME_HORAIRE_ID") AS + select vh.id VOLUME_HORAIRE_REF_ID, evh.id ETAT_VOLUME_HORAIRE_ID + from volume_horaire_ref vh + join service_referentiel s on s.id = vh.service_referentiel_id and s.histo_destruction IS NULL + join etat_volume_horaire evh on evh.code = 'saisi' + where vh.histo_destruction IS NULL +union all + select vh.id, evh.id + from volume_horaire_ref vh + join service_referentiel s on s.id = vh.service_referentiel_id and s.histo_destruction IS NULL + join etat_volume_horaire evh on evh.code = 'valide' + where vh.histo_destruction IS NULL + and EXISTS( + SELECT * FROM validation v JOIN validation_vol_horaire_ref vvh ON vvh.validation_id = v.id + WHERE vvh.volume_horaire_ref_id = vh.id AND v.histo_destruction IS NULL + ); + +-- V_WORKFLOW_ETAPE_PERTINENTE +CREATE OR REPLACE FORCE VIEW "V_WORKFLOW_ETAPE_PERTINENTE" ("ANNEE_ID", "INTERVENANT_ID", "ETAPE_CODE") AS + WITH peut_pj AS ( + SELECT DISTINCT + statut_intervenant_id, + 1 tem + FROM + type_piece_jointe_statut tpjs + WHERE + tpjs.histo_destruction IS NULL +), +peut_agr AS ( + SELECT + tas.statut_intervenant_id, + ta.code, + tas.premier_recrutement + FROM + type_agrement_statut tas + JOIN type_agrement ta ON ta.id = tas.type_agrement_id + WHERE + tas.histo_destruction IS NULL +) +SELECT + i.annee_id annee_id, + i.id intervenant_id, + e.code etape_code +FROM + intervenant i + JOIN statut_intervenant si ON si.id = i.statut_id + LEFT JOIN peut_pj ON peut_pj.statut_intervenant_id = si.id + LEFT JOIN peut_agr peut_cr ON peut_cr.code = 'CONSEIL_RESTREINT' AND peut_cr.statut_intervenant_id = si.id AND (peut_cr.premier_recrutement IS NULL OR NVL(i.premier_recrutement,0) = peut_cr.premier_recrutement) + LEFT JOIN peut_agr peut_ca ON peut_ca.code = 'CONSEIL_ACADEMIQUE' AND peut_ca.statut_intervenant_id = si.id AND (peut_ca.premier_recrutement IS NULL OR NVL(i.premier_recrutement,0) = peut_ca.premier_recrutement) + JOIN wf_etape e ON 1 = CASE e.code + + WHEN 'DONNEES_PERSO_SAISIE' THEN + si.peut_saisir_dossier + + WHEN 'SERVICE_SAISIE' THEN + CASE WHEN si.peut_saisir_service + si.peut_saisir_referentiel = 0 THEN 0 ELSE 1 END + + WHEN 'PJ_SAISIE' THEN + peut_pj.tem + + WHEN 'PJ_VALIDATION' THEN + peut_pj.tem + + WHEN 'DONNEES_PERSO_VALIDATION' THEN + si.peut_saisir_dossier + + WHEN 'SERVICE_VALIDATION' THEN + si.peut_saisir_service + + WHEN 'REFERENTIEL_VALIDATION' THEN + si.peut_saisir_referentiel + + WHEN 'CONSEIL_RESTREINT' THEN + CASE WHEN peut_cr.code IS NULL THEN 0 ELSE 1 END + + WHEN 'CONSEIL_ACADEMIQUE' THEN + CASE WHEN peut_ca.code IS NULL THEN 0 ELSE 1 END + + WHEN 'CONTRAT' THEN + si.peut_avoir_contrat + + WHEN 'SERVICE_SAISIE_REALISE' THEN + CASE WHEN si.peut_saisir_service + si.peut_saisir_referentiel = 0 THEN 0 ELSE 1 END + + WHEN 'CLOTURE_REALISE' THEN + si.peut_cloturer_saisie + + WHEN 'SERVICE_VALIDATION_REALISE' THEN + si.peut_saisir_service + + WHEN 'REFERENTIEL_VALIDATION_REALISE' THEN + si.peut_saisir_referentiel + + WHEN 'DEMANDE_MEP' THEN + CASE WHEN si.peut_saisir_service + si.peut_saisir_referentiel = 0 THEN 0 ELSE 1 END + + WHEN 'SAISIE_MEP' THEN + CASE WHEN si.peut_saisir_service + si.peut_saisir_referentiel = 0 THEN 0 ELSE 1 END + + END +WHERE + i.histo_destruction IS NULL; + +-------------------------------------------------- +-- mviews +-------------------------------------------------- + +-- TBL_NOEUD +CREATE MATERIALIZED VIEW "TBL_NOEUD" ("NOEUD_ID", "NOEUD_ETAPE_ID", "CODE", "LIBELLE", "ANNEE_ID", "ETAPE_ID", "ELEMENT_PEDAGOGIQUE_ID", "ELEMENT_PEDAGOGIQUE_ETAPE_ID", "STRUCTURE_ID", "GROUPE_TYPE_FORMATION_ID") AS +SELECT + n.id noeud_id, + en.id noeud_etape_id, + n.code code, + n.libelle libelle, + n.annee_id annee_id, + n.etape_id etape_id, + n.element_pedagogique_id element_pedagogique_id, + etp.id element_pedagogique_etape_id, + n.structure_id structure_id, + tf.groupe_id groupe_type_formation_id +FROM + noeud n + LEFT JOIN element_pedagogique ep ON ep.id = n.element_pedagogique_id + LEFT JOIN etape etp ON etp.id = COALESCE(n.etape_id,ep.etape_id) + LEFT JOIN type_formation tf ON tf.id = etp.type_formation_id + LEFT JOIN noeud en ON en.etape_id = etp.id +WHERE + n.histo_destruction IS NULL; + +-------------------------------------------------- +-- constraints +-------------------------------------------------- + +-- ADRESSE_INTERVENANT_HCFK +ALTER TABLE "ADRESSE_INTERVENANT" ADD CONSTRAINT "ADRESSE_INTERVENANT_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- ADRESSE_INTERVENANT_HDFK +ALTER TABLE "ADRESSE_INTERVENANT" ADD CONSTRAINT "ADRESSE_INTERVENANT_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- ADRESSE_INTERVENANT_HMFK +ALTER TABLE "ADRESSE_INTERVENANT" ADD CONSTRAINT "ADRESSE_INTERVENANT_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- ADRESSE_INTERVENANT_SOURCE_FK +ALTER TABLE "ADRESSE_INTERVENANT" ADD CONSTRAINT "ADRESSE_INTERVENANT_SOURCE_FK" FOREIGN KEY ("SOURCE_ID") + REFERENCES "SOURCE" ("ID") ON DELETE CASCADE ENABLE; + +-- ADRESSE_STRUCTURE_HCFK +ALTER TABLE "ADRESSE_STRUCTURE" ADD CONSTRAINT "ADRESSE_STRUCTURE_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- ADRESSE_STRUCTURE_HDFK +ALTER TABLE "ADRESSE_STRUCTURE" ADD CONSTRAINT "ADRESSE_STRUCTURE_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- ADRESSE_STRUCTURE_HMFK +ALTER TABLE "ADRESSE_STRUCTURE" ADD CONSTRAINT "ADRESSE_STRUCTURE_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- ADRESSE_STRUCTURE_SOURCE_FK +ALTER TABLE "ADRESSE_STRUCTURE" ADD CONSTRAINT "ADRESSE_STRUCTURE_SOURCE_FK" FOREIGN KEY ("SOURCE_ID") + REFERENCES "SOURCE" ("ID") ON DELETE CASCADE ENABLE; + +-- ADRESSE_STRUCTURE_STRUCTURE_FK +ALTER TABLE "ADRESSE_STRUCTURE" ADD CONSTRAINT "ADRESSE_STRUCTURE_STRUCTURE_FK" FOREIGN KEY ("STRUCTURE_ID") + REFERENCES "STRUCTURE" ("ID") ON DELETE CASCADE ENABLE; + +-- AFFECTATION_HCFK +ALTER TABLE "AFFECTATION" ADD CONSTRAINT "AFFECTATION_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- AFFECTATION_HDFK +ALTER TABLE "AFFECTATION" ADD CONSTRAINT "AFFECTATION_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- AFFECTATION_HMFK +ALTER TABLE "AFFECTATION" ADD CONSTRAINT "AFFECTATION_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- AFFECTATION_ROLE_FK +ALTER TABLE "AFFECTATION" ADD CONSTRAINT "AFFECTATION_ROLE_FK" FOREIGN KEY ("ROLE_ID") + REFERENCES "ROLE" ("ID") ON DELETE CASCADE ENABLE; + +-- AFFECTATION_R_HCFK +ALTER TABLE "AFFECTATION_RECHERCHE" ADD CONSTRAINT "AFFECTATION_R_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- AFFECTATION_R_HDFK +ALTER TABLE "AFFECTATION_RECHERCHE" ADD CONSTRAINT "AFFECTATION_R_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- AFFECTATION_R_HMFK +ALTER TABLE "AFFECTATION_RECHERCHE" ADD CONSTRAINT "AFFECTATION_R_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- AFFECTATION_R_INTERVENANT_FK +ALTER TABLE "AFFECTATION_RECHERCHE" ADD CONSTRAINT "AFFECTATION_R_INTERVENANT_FK" FOREIGN KEY ("INTERVENANT_ID") + REFERENCES "INTERVENANT" ("ID") ON DELETE CASCADE ENABLE; + +-- AFFECTATION_R_SOURCE_FK +ALTER TABLE "AFFECTATION_RECHERCHE" ADD CONSTRAINT "AFFECTATION_R_SOURCE_FK" FOREIGN KEY ("SOURCE_ID") + REFERENCES "SOURCE" ("ID") ON DELETE CASCADE ENABLE; + +-- AFFECTATION_R_STRUCTURE_FK +ALTER TABLE "AFFECTATION_RECHERCHE" ADD CONSTRAINT "AFFECTATION_R_STRUCTURE_FK" FOREIGN KEY ("STRUCTURE_ID") + REFERENCES "STRUCTURE" ("ID") ENABLE; + +-- AFFECTATION_SOURCE_FK +ALTER TABLE "AFFECTATION" ADD CONSTRAINT "AFFECTATION_SOURCE_FK" FOREIGN KEY ("SOURCE_ID") + REFERENCES "SOURCE" ("ID") ENABLE; + +-- AFFECTATION_STRUCTURE_FK +ALTER TABLE "AFFECTATION" ADD CONSTRAINT "AFFECTATION_STRUCTURE_FK" FOREIGN KEY ("STRUCTURE_ID") + REFERENCES "STRUCTURE" ("ID") ENABLE; + +-- AFFECTATION_UTILISATEUR_FK +ALTER TABLE "AFFECTATION" ADD CONSTRAINT "AFFECTATION_UTILISATEUR_FK" FOREIGN KEY ("UTILISATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- AGREMENTS_STRUCTURES_FK +ALTER TABLE "AGREMENT" ADD CONSTRAINT "AGREMENTS_STRUCTURES_FK" FOREIGN KEY ("STRUCTURE_ID") + REFERENCES "STRUCTURE" ("ID") ENABLE; + +-- AGREMENT_HCFK +ALTER TABLE "AGREMENT" ADD CONSTRAINT "AGREMENT_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- AGREMENT_HDFK +ALTER TABLE "AGREMENT" ADD CONSTRAINT "AGREMENT_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- AGREMENT_HMFK +ALTER TABLE "AGREMENT" ADD CONSTRAINT "AGREMENT_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- AGREMENT_INTERVENANT_FK +ALTER TABLE "AGREMENT" ADD CONSTRAINT "AGREMENT_INTERVENANT_FK" FOREIGN KEY ("INTERVENANT_ID") + REFERENCES "INTERVENANT" ("ID") ON DELETE CASCADE ENABLE; + +-- AGREMENT_TYPE_AGREMENT_FK +ALTER TABLE "AGREMENT" ADD CONSTRAINT "AGREMENT_TYPE_AGREMENT_FK" FOREIGN KEY ("TYPE_AGREMENT_ID") + REFERENCES "TYPE_AGREMENT" ("ID") ON DELETE CASCADE ENABLE; + +-- AII_FK +ALTER TABLE "ADRESSE_INTERVENANT" ADD CONSTRAINT "AII_FK" FOREIGN KEY ("INTERVENANT_ID") + REFERENCES "INTERVENANT" ("ID") ON DELETE CASCADE ENABLE; + +-- CAMPAGNE_SAISIE_ANNEE_FK +ALTER TABLE "CAMPAGNE_SAISIE" ADD CONSTRAINT "CAMPAGNE_SAISIE_ANNEE_FK" FOREIGN KEY ("ANNEE_ID") + REFERENCES "ANNEE" ("ID") ENABLE; + +-- CCEP_CENTRE_COUT_FK +ALTER TABLE "CENTRE_COUT_EP" ADD CONSTRAINT "CCEP_CENTRE_COUT_FK" FOREIGN KEY ("CENTRE_COUT_ID") + REFERENCES "CENTRE_COUT" ("ID") ON DELETE CASCADE ENABLE; + +-- CCEP_ELEMENT_PEDAGOGIQUE_FK +ALTER TABLE "CENTRE_COUT_EP" ADD CONSTRAINT "CCEP_ELEMENT_PEDAGOGIQUE_FK" FOREIGN KEY ("ELEMENT_PEDAGOGIQUE_ID") + REFERENCES "ELEMENT_PEDAGOGIQUE" ("ID") ON DELETE CASCADE ENABLE; + +-- CCEP_SOURCE_FK +ALTER TABLE "CENTRE_COUT_EP" ADD CONSTRAINT "CCEP_SOURCE_FK" FOREIGN KEY ("SOURCE_ID") + REFERENCES "SOURCE" ("ID") ON DELETE CASCADE ENABLE; + +-- CCEP_TYPE_HEURES_FK +ALTER TABLE "CENTRE_COUT_EP" ADD CONSTRAINT "CCEP_TYPE_HEURES_FK" FOREIGN KEY ("TYPE_HEURES_ID") + REFERENCES "TYPE_HEURES" ("ID") ON DELETE CASCADE ENABLE; + +-- CCS_CENTRE_COUT_FK +ALTER TABLE "CENTRE_COUT_STRUCTURE" ADD CONSTRAINT "CCS_CENTRE_COUT_FK" FOREIGN KEY ("CENTRE_COUT_ID") + REFERENCES "CENTRE_COUT" ("ID") ON DELETE CASCADE ENABLE; + +-- CCS_SOURCE_FK +ALTER TABLE "CENTRE_COUT_STRUCTURE" ADD CONSTRAINT "CCS_SOURCE_FK" FOREIGN KEY ("SOURCE_ID") + REFERENCES "SOURCE" ("ID") ENABLE; + +-- CCS_STRUCTURE_FK +ALTER TABLE "CENTRE_COUT_STRUCTURE" ADD CONSTRAINT "CCS_STRUCTURE_FK" FOREIGN KEY ("STRUCTURE_ID") + REFERENCES "STRUCTURE" ("ID") ON DELETE CASCADE ENABLE; + +-- CC_ACTIVITE_HCFK +ALTER TABLE "CC_ACTIVITE" ADD CONSTRAINT "CC_ACTIVITE_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- CC_ACTIVITE_HDFK +ALTER TABLE "CC_ACTIVITE" ADD CONSTRAINT "CC_ACTIVITE_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- CC_ACTIVITE_HMFK +ALTER TABLE "CC_ACTIVITE" ADD CONSTRAINT "CC_ACTIVITE_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- CENTRE_COUT_ACTIVITE_FK +ALTER TABLE "CENTRE_COUT" ADD CONSTRAINT "CENTRE_COUT_ACTIVITE_FK" FOREIGN KEY ("ACTIVITE_ID") + REFERENCES "CC_ACTIVITE" ("ID") ON DELETE CASCADE ENABLE; + +-- CENTRE_COUT_CENTRE_COUT_FK +ALTER TABLE "CENTRE_COUT" ADD CONSTRAINT "CENTRE_COUT_CENTRE_COUT_FK" FOREIGN KEY ("PARENT_ID") + REFERENCES "CENTRE_COUT" ("ID") ON DELETE CASCADE ENABLE; + +-- CENTRE_COUT_EP_HCFK +ALTER TABLE "CENTRE_COUT_EP" ADD CONSTRAINT "CENTRE_COUT_EP_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- CENTRE_COUT_EP_HDFK +ALTER TABLE "CENTRE_COUT_EP" ADD CONSTRAINT "CENTRE_COUT_EP_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- CENTRE_COUT_EP_HMFK +ALTER TABLE "CENTRE_COUT_EP" ADD CONSTRAINT "CENTRE_COUT_EP_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- CENTRE_COUT_HCFK +ALTER TABLE "CENTRE_COUT" ADD CONSTRAINT "CENTRE_COUT_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- CENTRE_COUT_HDFK +ALTER TABLE "CENTRE_COUT" ADD CONSTRAINT "CENTRE_COUT_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- CENTRE_COUT_HMFK +ALTER TABLE "CENTRE_COUT" ADD CONSTRAINT "CENTRE_COUT_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- CENTRE_COUT_SOURCE_FK +ALTER TABLE "CENTRE_COUT" ADD CONSTRAINT "CENTRE_COUT_SOURCE_FK" FOREIGN KEY ("SOURCE_ID") + REFERENCES "SOURCE" ("ID") ON DELETE CASCADE ENABLE; + +-- CENTRE_COUT_STRUCTURE_HCFK +ALTER TABLE "CENTRE_COUT_STRUCTURE" ADD CONSTRAINT "CENTRE_COUT_STRUCTURE_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- CENTRE_COUT_STRUCTURE_HDFK +ALTER TABLE "CENTRE_COUT_STRUCTURE" ADD CONSTRAINT "CENTRE_COUT_STRUCTURE_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- CENTRE_COUT_STRUCTURE_HMFK +ALTER TABLE "CENTRE_COUT_STRUCTURE" ADD CONSTRAINT "CENTRE_COUT_STRUCTURE_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- CENTRE_COUT_TYPE_RESSOURCE_FK +ALTER TABLE "CENTRE_COUT" ADD CONSTRAINT "CENTRE_COUT_TYPE_RESSOURCE_FK" FOREIGN KEY ("TYPE_RESSOURCE_ID") + REFERENCES "TYPE_RESSOURCE" ("ID") ON DELETE CASCADE ENABLE; + +-- CHEMIN_PEDAGOGIQUE_ETAPE_FK +ALTER TABLE "CHEMIN_PEDAGOGIQUE" ADD CONSTRAINT "CHEMIN_PEDAGOGIQUE_ETAPE_FK" FOREIGN KEY ("ETAPE_ID") + REFERENCES "ETAPE" ("ID") ON DELETE CASCADE ENABLE; + +-- CHEMIN_PEDAGOGIQUE_HCFK +ALTER TABLE "CHEMIN_PEDAGOGIQUE" ADD CONSTRAINT "CHEMIN_PEDAGOGIQUE_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- CHEMIN_PEDAGOGIQUE_HDFK +ALTER TABLE "CHEMIN_PEDAGOGIQUE" ADD CONSTRAINT "CHEMIN_PEDAGOGIQUE_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- CHEMIN_PEDAGOGIQUE_HMFK +ALTER TABLE "CHEMIN_PEDAGOGIQUE" ADD CONSTRAINT "CHEMIN_PEDAGOGIQUE_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- CHEMIN_PEDAGOGIQUE_SOURCE_FK +ALTER TABLE "CHEMIN_PEDAGOGIQUE" ADD CONSTRAINT "CHEMIN_PEDAGOGIQUE_SOURCE_FK" FOREIGN KEY ("SOURCE_ID") + REFERENCES "SOURCE" ("ID") ON DELETE CASCADE ENABLE; + +-- CONTRAT_CONTRAT_FK +ALTER TABLE "CONTRAT" ADD CONSTRAINT "CONTRAT_CONTRAT_FK" FOREIGN KEY ("CONTRAT_ID") + REFERENCES "CONTRAT" ("ID") ON DELETE CASCADE ENABLE; + +-- CONTRAT_FICHIER_FFK +ALTER TABLE "CONTRAT_FICHIER" ADD CONSTRAINT "CONTRAT_FICHIER_FFK" FOREIGN KEY ("FICHIER_ID") + REFERENCES "FICHIER" ("ID") ON DELETE CASCADE ENABLE; + +-- CONTRAT_FICHIER_cFK +ALTER TABLE "CONTRAT_FICHIER" ADD CONSTRAINT "CONTRAT_FICHIER_cFK" FOREIGN KEY ("CONTRAT_ID") + REFERENCES "CONTRAT" ("ID") ON DELETE CASCADE ENABLE; + +-- CONTRAT_HCFK +ALTER TABLE "CONTRAT" ADD CONSTRAINT "CONTRAT_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- CONTRAT_HDFK +ALTER TABLE "CONTRAT" ADD CONSTRAINT "CONTRAT_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- CONTRAT_HMFK +ALTER TABLE "CONTRAT" ADD CONSTRAINT "CONTRAT_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- CONTRAT_INTERVENANT_FK +ALTER TABLE "CONTRAT" ADD CONSTRAINT "CONTRAT_INTERVENANT_FK" FOREIGN KEY ("INTERVENANT_ID") + REFERENCES "INTERVENANT" ("ID") ON DELETE CASCADE ENABLE; + +-- CONTRAT_STRUCTURE_FK +ALTER TABLE "CONTRAT" ADD CONSTRAINT "CONTRAT_STRUCTURE_FK" FOREIGN KEY ("STRUCTURE_ID") + REFERENCES "STRUCTURE" ("ID") ENABLE; + +-- CONTRAT_TYPE_CONTRAT_FK +ALTER TABLE "CONTRAT" ADD CONSTRAINT "CONTRAT_TYPE_CONTRAT_FK" FOREIGN KEY ("TYPE_CONTRAT_ID") + REFERENCES "TYPE_CONTRAT" ("ID") ENABLE; + +-- CONTRAT_VALIDATION_FK +ALTER TABLE "CONTRAT" ADD CONSTRAINT "CONTRAT_VALIDATION_FK" FOREIGN KEY ("VALIDATION_ID") + REFERENCES "VALIDATION" ("ID") ON DELETE SET NULL ENABLE; + +-- CORPS_HCFK +ALTER TABLE "CORPS" ADD CONSTRAINT "CORPS_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- CORPS_HDFK +ALTER TABLE "CORPS" ADD CONSTRAINT "CORPS_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- CORPS_HMFK +ALTER TABLE "CORPS" ADD CONSTRAINT "CORPS_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- CORPS_SOURCE_FK +ALTER TABLE "CORPS" ADD CONSTRAINT "CORPS_SOURCE_FK" FOREIGN KEY ("SOURCE_ID") + REFERENCES "SOURCE" ("ID") ON DELETE CASCADE ENABLE; + +-- CPEP_FK +ALTER TABLE "CHEMIN_PEDAGOGIQUE" ADD CONSTRAINT "CPEP_FK" FOREIGN KEY ("ELEMENT_PEDAGOGIQUE_ID") + REFERENCES "ELEMENT_PEDAGOGIQUE" ("ID") ON DELETE CASCADE ENABLE; + +-- CS_TYPE_INTERVENANT_FK +ALTER TABLE "CAMPAGNE_SAISIE" ADD CONSTRAINT "CS_TYPE_INTERVENANT_FK" FOREIGN KEY ("TYPE_INTERVENANT_ID") + REFERENCES "TYPE_INTERVENANT" ("ID") ENABLE; + +-- CS_TYPE_VOLUME_HORAIRE_FK +ALTER TABLE "CAMPAGNE_SAISIE" ADD CONSTRAINT "CS_TYPE_VOLUME_HORAIRE_FK" FOREIGN KEY ("TYPE_VOLUME_HORAIRE_ID") + REFERENCES "TYPE_VOLUME_HORAIRE" ("ID") ENABLE; + +-- DEPARTEMENT_HCFK +ALTER TABLE "DEPARTEMENT" ADD CONSTRAINT "DEPARTEMENT_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- DEPARTEMENT_HDFK +ALTER TABLE "DEPARTEMENT" ADD CONSTRAINT "DEPARTEMENT_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- DEPARTEMENT_HMFK +ALTER TABLE "DEPARTEMENT" ADD CONSTRAINT "DEPARTEMENT_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- DEPARTEMENT_SOURCE_FK +ALTER TABLE "DEPARTEMENT" ADD CONSTRAINT "DEPARTEMENT_SOURCE_FK" FOREIGN KEY ("SOURCE_ID") + REFERENCES "SOURCE" ("ID") ON DELETE CASCADE ENABLE; + +-- DISCIPLINE_HCFK +ALTER TABLE "DISCIPLINE" ADD CONSTRAINT "DISCIPLINE_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- DISCIPLINE_HDFK +ALTER TABLE "DISCIPLINE" ADD CONSTRAINT "DISCIPLINE_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- DISCIPLINE_HMFK +ALTER TABLE "DISCIPLINE" ADD CONSTRAINT "DISCIPLINE_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- DISCIPLINE_SOURCE_FK +ALTER TABLE "DISCIPLINE" ADD CONSTRAINT "DISCIPLINE_SOURCE_FK" FOREIGN KEY ("SOURCE_ID") + REFERENCES "SOURCE" ("ID") ENABLE; + +-- DOMAINE_FONCTIONNEL_HCFK +ALTER TABLE "DOMAINE_FONCTIONNEL" ADD CONSTRAINT "DOMAINE_FONCTIONNEL_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- DOMAINE_FONCTIONNEL_HDFK +ALTER TABLE "DOMAINE_FONCTIONNEL" ADD CONSTRAINT "DOMAINE_FONCTIONNEL_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- DOMAINE_FONCTIONNEL_HMFK +ALTER TABLE "DOMAINE_FONCTIONNEL" ADD CONSTRAINT "DOMAINE_FONCTIONNEL_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- DOMAINE_FONCTIONNEL_SOURCE_FK +ALTER TABLE "DOMAINE_FONCTIONNEL" ADD CONSTRAINT "DOMAINE_FONCTIONNEL_SOURCE_FK" FOREIGN KEY ("SOURCE_ID") + REFERENCES "SOURCE" ("ID") ON DELETE CASCADE ENABLE; + +-- DOSSIER_D_FK +ALTER TABLE "DOSSIER" ADD CONSTRAINT "DOSSIER_D_FK" FOREIGN KEY ("DEPT_NAISSANCE_ID") + REFERENCES "DEPARTEMENT" ("ID") ENABLE; + +-- DOSSIER_HCFK +ALTER TABLE "DOSSIER" ADD CONSTRAINT "DOSSIER_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- DOSSIER_HDFK +ALTER TABLE "DOSSIER" ADD CONSTRAINT "DOSSIER_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- DOSSIER_HMFK +ALTER TABLE "DOSSIER" ADD CONSTRAINT "DOSSIER_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- DOSSIER_INTERVENANT_FK +ALTER TABLE "DOSSIER" ADD CONSTRAINT "DOSSIER_INTERVENANT_FK" FOREIGN KEY ("INTERVENANT_ID") + REFERENCES "INTERVENANT" ("ID") ENABLE; + +-- DOSSIER_P_FK +ALTER TABLE "DOSSIER" ADD CONSTRAINT "DOSSIER_P_FK" FOREIGN KEY ("PAYS_NAISSANCE_ID") + REFERENCES "PAYS" ("ID") ENABLE; + +-- DOTATION_ANNEE_FK +ALTER TABLE "DOTATION" ADD CONSTRAINT "DOTATION_ANNEE_FK" FOREIGN KEY ("ANNEE_ID") + REFERENCES "ANNEE" ("ID") ON DELETE CASCADE ENABLE; + +-- DOTATION_HCFK +ALTER TABLE "DOTATION" ADD CONSTRAINT "DOTATION_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- DOTATION_HDFK +ALTER TABLE "DOTATION" ADD CONSTRAINT "DOTATION_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- DOTATION_HMFK +ALTER TABLE "DOTATION" ADD CONSTRAINT "DOTATION_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- DOTATION_STRUCTURE_FK +ALTER TABLE "DOTATION" ADD CONSTRAINT "DOTATION_STRUCTURE_FK" FOREIGN KEY ("STRUCTURE_ID") + REFERENCES "STRUCTURE" ("ID") ON DELETE CASCADE ENABLE; + +-- DOTATION_TYPE_RESSOURCE_FK +ALTER TABLE "DOTATION" ADD CONSTRAINT "DOTATION_TYPE_RESSOURCE_FK" FOREIGN KEY ("TYPE_RESSOURCE_ID") + REFERENCES "TYPE_RESSOURCE" ("ID") ENABLE; + +-- DS_MDS_FK +ALTER TABLE "MODIFICATION_SERVICE_DU" ADD CONSTRAINT "DS_MDS_FK" FOREIGN KEY ("MOTIF_ID") + REFERENCES "MOTIF_MODIFICATION_SERVICE" ("ID") ENABLE; + +-- EFFECTIFS_ELEMENT_FK +ALTER TABLE "EFFECTIFS" ADD CONSTRAINT "EFFECTIFS_ELEMENT_FK" FOREIGN KEY ("ELEMENT_PEDAGOGIQUE_ID") + REFERENCES "ELEMENT_PEDAGOGIQUE" ("ID") ON DELETE CASCADE ENABLE; + +-- EFFECTIFS_FK +ALTER TABLE "EFFECTIFS" ADD CONSTRAINT "EFFECTIFS_FK" FOREIGN KEY ("ANNEE_ID") + REFERENCES "ANNEE" ("ID") ENABLE; + +-- EFFECTIFS_HCFK +ALTER TABLE "EFFECTIFS" ADD CONSTRAINT "EFFECTIFS_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- EFFECTIFS_HDFK +ALTER TABLE "EFFECTIFS" ADD CONSTRAINT "EFFECTIFS_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- EFFECTIFS_HMFK +ALTER TABLE "EFFECTIFS" ADD CONSTRAINT "EFFECTIFS_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- EFFECTIFS_SOURCE_FK +ALTER TABLE "EFFECTIFS" ADD CONSTRAINT "EFFECTIFS_SOURCE_FK" FOREIGN KEY ("SOURCE_ID") + REFERENCES "SOURCE" ("ID") ON DELETE CASCADE ENABLE; + +-- ELEMENT_MODULATEUR_HCFK +ALTER TABLE "ELEMENT_MODULATEUR" ADD CONSTRAINT "ELEMENT_MODULATEUR_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- ELEMENT_MODULATEUR_HDFK +ALTER TABLE "ELEMENT_MODULATEUR" ADD CONSTRAINT "ELEMENT_MODULATEUR_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- ELEMENT_MODULATEUR_HMFK +ALTER TABLE "ELEMENT_MODULATEUR" ADD CONSTRAINT "ELEMENT_MODULATEUR_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- ELEMENT_PEDAGOGIQUE_ANNEE_FK +ALTER TABLE "ELEMENT_PEDAGOGIQUE" ADD CONSTRAINT "ELEMENT_PEDAGOGIQUE_ANNEE_FK" FOREIGN KEY ("ANNEE_ID") + REFERENCES "ANNEE" ("ID") ENABLE; + +-- ELEMENT_PEDAGOGIQUE_ETAPE_FK +ALTER TABLE "ELEMENT_PEDAGOGIQUE" ADD CONSTRAINT "ELEMENT_PEDAGOGIQUE_ETAPE_FK" FOREIGN KEY ("ETAPE_ID") + REFERENCES "ETAPE" ("ID") ENABLE; + +-- ELEMENT_PEDAGOGIQUE_HCFK +ALTER TABLE "ELEMENT_PEDAGOGIQUE" ADD CONSTRAINT "ELEMENT_PEDAGOGIQUE_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- ELEMENT_PEDAGOGIQUE_HDFK +ALTER TABLE "ELEMENT_PEDAGOGIQUE" ADD CONSTRAINT "ELEMENT_PEDAGOGIQUE_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- ELEMENT_PEDAGOGIQUE_HMFK +ALTER TABLE "ELEMENT_PEDAGOGIQUE" ADD CONSTRAINT "ELEMENT_PEDAGOGIQUE_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- ELEMENT_PEDAGOGIQUE_PERIODE_FK +ALTER TABLE "ELEMENT_PEDAGOGIQUE" ADD CONSTRAINT "ELEMENT_PEDAGOGIQUE_PERIODE_FK" FOREIGN KEY ("PERIODE_ID") + REFERENCES "PERIODE" ("ID") ENABLE; + +-- ELEMENT_PEDAGOGIQUE_SOURCE_FK +ALTER TABLE "ELEMENT_PEDAGOGIQUE" ADD CONSTRAINT "ELEMENT_PEDAGOGIQUE_SOURCE_FK" FOREIGN KEY ("SOURCE_ID") + REFERENCES "SOURCE" ("ID") ON DELETE CASCADE ENABLE; + +-- ELEMENT_TAUX_REGIMES_HCFK +ALTER TABLE "ELEMENT_TAUX_REGIMES" ADD CONSTRAINT "ELEMENT_TAUX_REGIMES_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- ELEMENT_TAUX_REGIMES_HDFK +ALTER TABLE "ELEMENT_TAUX_REGIMES" ADD CONSTRAINT "ELEMENT_TAUX_REGIMES_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- ELEMENT_TAUX_REGIMES_HMFK +ALTER TABLE "ELEMENT_TAUX_REGIMES" ADD CONSTRAINT "ELEMENT_TAUX_REGIMES_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- EM_ELEMENT_PEDAGOGIQUE_FK +ALTER TABLE "ELEMENT_MODULATEUR" ADD CONSTRAINT "EM_ELEMENT_PEDAGOGIQUE_FK" FOREIGN KEY ("ELEMENT_ID") + REFERENCES "ELEMENT_PEDAGOGIQUE" ("ID") ON DELETE CASCADE ENABLE; + +-- EM_MODULATEUR_FK +ALTER TABLE "ELEMENT_MODULATEUR" ADD CONSTRAINT "EM_MODULATEUR_FK" FOREIGN KEY ("MODULATEUR_ID") + REFERENCES "MODULATEUR" ("ID") ENABLE; + +-- EPS_FK +ALTER TABLE "ELEMENT_PEDAGOGIQUE" ADD CONSTRAINT "EPS_FK" FOREIGN KEY ("STRUCTURE_ID") + REFERENCES "STRUCTURE" ("ID") ENABLE; + +-- EP_DISCIPLINE_FK +ALTER TABLE "ELEMENT_PEDAGOGIQUE" ADD CONSTRAINT "EP_DISCIPLINE_FK" FOREIGN KEY ("DISCIPLINE_ID") + REFERENCES "DISCIPLINE" ("ID") ENABLE; + +-- ETABLISSEMENT_HCFK +ALTER TABLE "ETABLISSEMENT" ADD CONSTRAINT "ETABLISSEMENT_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- ETABLISSEMENT_HDFK +ALTER TABLE "ETABLISSEMENT" ADD CONSTRAINT "ETABLISSEMENT_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- ETABLISSEMENT_HMFK +ALTER TABLE "ETABLISSEMENT" ADD CONSTRAINT "ETABLISSEMENT_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- ETABLISSEMENT_SOURCE_FK +ALTER TABLE "ETABLISSEMENT" ADD CONSTRAINT "ETABLISSEMENT_SOURCE_FK" FOREIGN KEY ("SOURCE_ID") + REFERENCES "SOURCE" ("ID") ON DELETE CASCADE ENABLE; + +-- ETAPE_ANNEE_FK +ALTER TABLE "ETAPE" ADD CONSTRAINT "ETAPE_ANNEE_FK" FOREIGN KEY ("ANNEE_ID") + REFERENCES "ANNEE" ("ID") ENABLE; + +-- ETAPE_DOMAINE_FONCTIONNEL_FK +ALTER TABLE "ETAPE" ADD CONSTRAINT "ETAPE_DOMAINE_FONCTIONNEL_FK" FOREIGN KEY ("DOMAINE_FONCTIONNEL_ID") + REFERENCES "DOMAINE_FONCTIONNEL" ("ID") ENABLE; + +-- ETAPE_HCFK +ALTER TABLE "ETAPE" ADD CONSTRAINT "ETAPE_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- ETAPE_HDFK +ALTER TABLE "ETAPE" ADD CONSTRAINT "ETAPE_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- ETAPE_HMFK +ALTER TABLE "ETAPE" ADD CONSTRAINT "ETAPE_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- ETAPE_SOURCE_FK +ALTER TABLE "ETAPE" ADD CONSTRAINT "ETAPE_SOURCE_FK" FOREIGN KEY ("SOURCE_ID") + REFERENCES "SOURCE" ("ID") ON DELETE CASCADE ENABLE; + +-- ETAPE_STRUCTURE_FK +ALTER TABLE "ETAPE" ADD CONSTRAINT "ETAPE_STRUCTURE_FK" FOREIGN KEY ("STRUCTURE_ID") + REFERENCES "STRUCTURE" ("ID") ENABLE; + +-- ETAPE_TYPE_FORMATION_FK +ALTER TABLE "ETAPE" ADD CONSTRAINT "ETAPE_TYPE_FORMATION_FK" FOREIGN KEY ("TYPE_FORMATION_ID") + REFERENCES "TYPE_FORMATION" ("ID") ENABLE; + +-- ETR_ELEMENT_FK +ALTER TABLE "ELEMENT_TAUX_REGIMES" ADD CONSTRAINT "ETR_ELEMENT_FK" FOREIGN KEY ("ELEMENT_PEDAGOGIQUE_ID") + REFERENCES "ELEMENT_PEDAGOGIQUE" ("ID") ON DELETE CASCADE ENABLE; + +-- ETR_SOURCE_FK +ALTER TABLE "ELEMENT_TAUX_REGIMES" ADD CONSTRAINT "ETR_SOURCE_FK" FOREIGN KEY ("SOURCE_ID") + REFERENCES "SOURCE" ("ID") ENABLE; + +-- FICHIER_HCFK +ALTER TABLE "FICHIER" ADD CONSTRAINT "FICHIER_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- FICHIER_HDFK +ALTER TABLE "FICHIER" ADD CONSTRAINT "FICHIER_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- FICHIER_HMFK +ALTER TABLE "FICHIER" ADD CONSTRAINT "FICHIER_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- FICHIER_VALID_FK +ALTER TABLE "FICHIER" ADD CONSTRAINT "FICHIER_VALID_FK" FOREIGN KEY ("VALIDATION_ID") + REFERENCES "VALIDATION" ("ID") ON DELETE SET NULL ENABLE; + +-- FONCTION_REFERENTIEL_HCFK +ALTER TABLE "FONCTION_REFERENTIEL" ADD CONSTRAINT "FONCTION_REFERENTIEL_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- FONCTION_REFERENTIEL_HDFK +ALTER TABLE "FONCTION_REFERENTIEL" ADD CONSTRAINT "FONCTION_REFERENTIEL_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- FONCTION_REFERENTIEL_HMFK +ALTER TABLE "FONCTION_REFERENTIEL" ADD CONSTRAINT "FONCTION_REFERENTIEL_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- FONCTION_REFERENTIEL_SFK +ALTER TABLE "FONCTION_REFERENTIEL" ADD CONSTRAINT "FONCTION_REFERENTIEL_SFK" FOREIGN KEY ("STRUCTURE_ID") + REFERENCES "STRUCTURE" ("ID") ENABLE; + +-- FONC_REF_DOMAINE_FONCT_FK +ALTER TABLE "FONCTION_REFERENTIEL" ADD CONSTRAINT "FONC_REF_DOMAINE_FONCT_FK" FOREIGN KEY ("DOMAINE_FONCTIONNEL_ID") + REFERENCES "DOMAINE_FONCTIONNEL" ("ID") ENABLE; + +-- FRES_ETAT_VOLUME_HORAIRE_FK +ALTER TABLE "FORMULE_RESULTAT" ADD CONSTRAINT "FRES_ETAT_VOLUME_HORAIRE_FK" FOREIGN KEY ("ETAT_VOLUME_HORAIRE_ID") + REFERENCES "ETAT_VOLUME_HORAIRE" ("ID") ON DELETE CASCADE ENABLE; + +-- FRES_INTERVENANT_FK +ALTER TABLE "FORMULE_RESULTAT" ADD CONSTRAINT "FRES_INTERVENANT_FK" FOREIGN KEY ("INTERVENANT_ID") + REFERENCES "INTERVENANT" ("ID") ON DELETE CASCADE ENABLE; + +-- FRES_TYPE_VOLUME_HORAIRE_FK +ALTER TABLE "FORMULE_RESULTAT" ADD CONSTRAINT "FRES_TYPE_VOLUME_HORAIRE_FK" FOREIGN KEY ("TYPE_VOLUME_HORAIRE_ID") + REFERENCES "TYPE_VOLUME_HORAIRE" ("ID") ON DELETE CASCADE ENABLE; + +-- FRR_FORMULE_RESULTAT_FK +ALTER TABLE "FORMULE_RESULTAT_SERVICE_REF" ADD CONSTRAINT "FRR_FORMULE_RESULTAT_FK" FOREIGN KEY ("FORMULE_RESULTAT_ID") + REFERENCES "FORMULE_RESULTAT" ("ID") ON DELETE CASCADE ENABLE; + +-- FRSR_SERVICE_REFERENTIEL_FK +ALTER TABLE "FORMULE_RESULTAT_SERVICE_REF" ADD CONSTRAINT "FRSR_SERVICE_REFERENTIEL_FK" FOREIGN KEY ("SERVICE_REFERENTIEL_ID") + REFERENCES "SERVICE_REFERENTIEL" ("ID") ON DELETE CASCADE ENABLE; + +-- FRS_FORMULE_RESULTAT_FK +ALTER TABLE "FORMULE_RESULTAT_SERVICE" ADD CONSTRAINT "FRS_FORMULE_RESULTAT_FK" FOREIGN KEY ("FORMULE_RESULTAT_ID") + REFERENCES "FORMULE_RESULTAT" ("ID") ON DELETE CASCADE ENABLE; + +-- FRS_SERVICE_FK +ALTER TABLE "FORMULE_RESULTAT_SERVICE" ADD CONSTRAINT "FRS_SERVICE_FK" FOREIGN KEY ("SERVICE_ID") + REFERENCES "SERVICE" ("ID") ON DELETE CASCADE ENABLE; + +-- FRVHR_FORMULE_RESULTAT_FK +ALTER TABLE "FORMULE_RESULTAT_VH_REF" ADD CONSTRAINT "FRVHR_FORMULE_RESULTAT_FK" FOREIGN KEY ("FORMULE_RESULTAT_ID") + REFERENCES "FORMULE_RESULTAT" ("ID") ON DELETE CASCADE ENABLE; + +-- FRVHR_VOLUME_HORAIRE_REF_FK +ALTER TABLE "FORMULE_RESULTAT_VH_REF" ADD CONSTRAINT "FRVHR_VOLUME_HORAIRE_REF_FK" FOREIGN KEY ("VOLUME_HORAIRE_REF_ID") + REFERENCES "VOLUME_HORAIRE_REF" ("ID") ON DELETE CASCADE ENABLE; + +-- FRVH_FORMULE_RESULTAT_FK +ALTER TABLE "FORMULE_RESULTAT_VH" ADD CONSTRAINT "FRVH_FORMULE_RESULTAT_FK" FOREIGN KEY ("FORMULE_RESULTAT_ID") + REFERENCES "FORMULE_RESULTAT" ("ID") ON DELETE CASCADE ENABLE; + +-- FRVH_VOLUME_HORAIRE_FK +ALTER TABLE "FORMULE_RESULTAT_VH" ADD CONSTRAINT "FRVH_VOLUME_HORAIRE_FK" FOREIGN KEY ("VOLUME_HORAIRE_ID") + REFERENCES "VOLUME_HORAIRE" ("ID") ON DELETE CASCADE ENABLE; + +-- GRADE_CORPS_FK +ALTER TABLE "GRADE" ADD CONSTRAINT "GRADE_CORPS_FK" FOREIGN KEY ("CORPS_ID") + REFERENCES "CORPS" ("ID") ENABLE; + +-- GRADE_HCFK +ALTER TABLE "GRADE" ADD CONSTRAINT "GRADE_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- GRADE_HDFK +ALTER TABLE "GRADE" ADD CONSTRAINT "GRADE_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- GRADE_HMFK +ALTER TABLE "GRADE" ADD CONSTRAINT "GRADE_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- GRADE_SOURCE_FK +ALTER TABLE "GRADE" ADD CONSTRAINT "GRADE_SOURCE_FK" FOREIGN KEY ("SOURCE_ID") + REFERENCES "SOURCE" ("ID") ENABLE; + +-- GROUPE_ELEMENT_PEDAGOGIQUE_FK +ALTER TABLE "GROUPE" ADD CONSTRAINT "GROUPE_ELEMENT_PEDAGOGIQUE_FK" FOREIGN KEY ("ELEMENT_PEDAGOGIQUE_ID") + REFERENCES "ELEMENT_PEDAGOGIQUE" ("ID") ON DELETE CASCADE ENABLE; + +-- GROUPE_HCFK +ALTER TABLE "GROUPE" ADD CONSTRAINT "GROUPE_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- GROUPE_HDFK +ALTER TABLE "GROUPE" ADD CONSTRAINT "GROUPE_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- GROUPE_HMFK +ALTER TABLE "GROUPE" ADD CONSTRAINT "GROUPE_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- GROUPE_TYPE_FORMATION_HCFK +ALTER TABLE "GROUPE_TYPE_FORMATION" ADD CONSTRAINT "GROUPE_TYPE_FORMATION_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- GROUPE_TYPE_FORMATION_HDFK +ALTER TABLE "GROUPE_TYPE_FORMATION" ADD CONSTRAINT "GROUPE_TYPE_FORMATION_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- GROUPE_TYPE_FORMATION_HMFK +ALTER TABLE "GROUPE_TYPE_FORMATION" ADD CONSTRAINT "GROUPE_TYPE_FORMATION_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- GROUPE_TYPE_INTERVENTION_FK +ALTER TABLE "GROUPE" ADD CONSTRAINT "GROUPE_TYPE_INTERVENTION_FK" FOREIGN KEY ("TYPE_INTERVENTION_ID") + REFERENCES "TYPE_INTERVENTION" ("ID") ENABLE; + +-- GTYPE_FORMATION_SOURCE_FK +ALTER TABLE "GROUPE_TYPE_FORMATION" ADD CONSTRAINT "GTYPE_FORMATION_SOURCE_FK" FOREIGN KEY ("SOURCE_ID") + REFERENCES "SOURCE" ("ID") ON DELETE CASCADE ENABLE; + +-- HSM_INTERVENANT_FK +ALTER TABLE "HISTO_INTERVENANT_SERVICE" ADD CONSTRAINT "HSM_INTERVENANT_FK" FOREIGN KEY ("INTERVENANT_ID") + REFERENCES "INTERVENANT" ("ID") ON DELETE CASCADE ENABLE; + +-- HSM_TYPE_VOLUME_HORAIRE_FK +ALTER TABLE "HISTO_INTERVENANT_SERVICE" ADD CONSTRAINT "HSM_TYPE_VOLUME_HORAIRE_FK" FOREIGN KEY ("TYPE_VOLUME_HORAIRE_ID") + REFERENCES "TYPE_VOLUME_HORAIRE" ("ID") ON DELETE CASCADE ENABLE; + +-- HSM_UTILISATEUR_FK +ALTER TABLE "HISTO_INTERVENANT_SERVICE" ADD CONSTRAINT "HSM_UTILISATEUR_FK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ON DELETE CASCADE ENABLE; + +-- INDIC_MODIF_DOSSIER_HCFK +ALTER TABLE "INDIC_MODIF_DOSSIER" ADD CONSTRAINT "INDIC_MODIF_DOSSIER_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- INDIC_MODIF_DOSSIER_HDFK +ALTER TABLE "INDIC_MODIF_DOSSIER" ADD CONSTRAINT "INDIC_MODIF_DOSSIER_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- INDIC_MODIF_DOSSIER_HMFK +ALTER TABLE "INDIC_MODIF_DOSSIER" ADD CONSTRAINT "INDIC_MODIF_DOSSIER_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- INTERVENANTS_CIVILITES_FK +ALTER TABLE "INTERVENANT" ADD CONSTRAINT "INTERVENANTS_CIVILITES_FK" FOREIGN KEY ("CIVILITE_ID") + REFERENCES "CIVILITE" ("ID") ENABLE; + +-- INTERVENANT_ANNEE_FK +ALTER TABLE "INTERVENANT" ADD CONSTRAINT "INTERVENANT_ANNEE_FK" FOREIGN KEY ("ANNEE_ID") + REFERENCES "ANNEE" ("ID") ENABLE; + +-- INTERVENANT_DEPARTEMENT_FK +ALTER TABLE "INTERVENANT" ADD CONSTRAINT "INTERVENANT_DEPARTEMENT_FK" FOREIGN KEY ("DEP_NAISSANCE_ID") + REFERENCES "DEPARTEMENT" ("ID") ENABLE; + +-- INTERVENANT_DISCIPLINE_FK +ALTER TABLE "INTERVENANT" ADD CONSTRAINT "INTERVENANT_DISCIPLINE_FK" FOREIGN KEY ("DISCIPLINE_ID") + REFERENCES "DISCIPLINE" ("ID") ENABLE; + +-- INTERVENANT_GRADE_FK +ALTER TABLE "INTERVENANT" ADD CONSTRAINT "INTERVENANT_GRADE_FK" FOREIGN KEY ("GRADE_ID") + REFERENCES "GRADE" ("ID") ENABLE; + +-- INTERVENANT_HCFK +ALTER TABLE "INTERVENANT" ADD CONSTRAINT "INTERVENANT_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- INTERVENANT_HDFK +ALTER TABLE "INTERVENANT" ADD CONSTRAINT "INTERVENANT_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- INTERVENANT_HMFK +ALTER TABLE "INTERVENANT" ADD CONSTRAINT "INTERVENANT_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- INTERVENANT_PAYS_NAISS_FK +ALTER TABLE "INTERVENANT" ADD CONSTRAINT "INTERVENANT_PAYS_NAISS_FK" FOREIGN KEY ("PAYS_NAISSANCE_ID") + REFERENCES "PAYS" ("ID") ENABLE; + +-- INTERVENANT_PAYS_NAT_FK +ALTER TABLE "INTERVENANT" ADD CONSTRAINT "INTERVENANT_PAYS_NAT_FK" FOREIGN KEY ("PAYS_NATIONALITE_ID") + REFERENCES "PAYS" ("ID") ENABLE; + +-- INTERVENANT_SAISIE_INTERV_FK +ALTER TABLE "INTERVENANT_SAISIE" ADD CONSTRAINT "INTERVENANT_SAISIE_INTERV_FK" FOREIGN KEY ("INTERVENANT_ID") + REFERENCES "INTERVENANT" ("ID") ON DELETE CASCADE ENABLE; + +-- INTERVENANT_SOURCE_FK +ALTER TABLE "INTERVENANT" ADD CONSTRAINT "INTERVENANT_SOURCE_FK" FOREIGN KEY ("SOURCE_ID") + REFERENCES "SOURCE" ("ID") ON DELETE CASCADE ENABLE; + +-- INTERVENANT_STATUT_FK +ALTER TABLE "INTERVENANT" ADD CONSTRAINT "INTERVENANT_STATUT_FK" FOREIGN KEY ("STATUT_ID") + REFERENCES "STATUT_INTERVENANT" ("ID") ENABLE; + +-- INTERVENANT_STRUCTURE_FK +ALTER TABLE "INTERVENANT" ADD CONSTRAINT "INTERVENANT_STRUCTURE_FK" FOREIGN KEY ("STRUCTURE_ID") + REFERENCES "STRUCTURE" ("ID") ENABLE; + +-- IS_STATUT_INTERVENANT_FK +ALTER TABLE "INTERVENANT_SAISIE" ADD CONSTRAINT "IS_STATUT_INTERVENANT_FK" FOREIGN KEY ("STATUT_ID") + REFERENCES "STATUT_INTERVENANT" ("ID") ENABLE; + +-- LIEN_HCFK +ALTER TABLE "LIEN" ADD CONSTRAINT "LIEN_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- LIEN_HDFK +ALTER TABLE "LIEN" ADD CONSTRAINT "LIEN_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- LIEN_HMFK +ALTER TABLE "LIEN" ADD CONSTRAINT "LIEN_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- LIEN_NOEUD_INF_FK +ALTER TABLE "LIEN" ADD CONSTRAINT "LIEN_NOEUD_INF_FK" FOREIGN KEY ("NOEUD_INF_ID") + REFERENCES "NOEUD" ("ID") ON DELETE CASCADE ENABLE; + +-- LIEN_NOEUD_SUP_FK +ALTER TABLE "LIEN" ADD CONSTRAINT "LIEN_NOEUD_SUP_FK" FOREIGN KEY ("NOEUD_SUP_ID") + REFERENCES "NOEUD" ("ID") ON DELETE CASCADE ENABLE; + +-- LIEN_SOURCE_FK +ALTER TABLE "LIEN" ADD CONSTRAINT "LIEN_SOURCE_FK" FOREIGN KEY ("SOURCE_ID") + REFERENCES "SOURCE" ("ID") ENABLE; + +-- LIEN_STRUCTURE_FK +ALTER TABLE "LIEN" ADD CONSTRAINT "LIEN_STRUCTURE_FK" FOREIGN KEY ("STRUCTURE_ID") + REFERENCES "STRUCTURE" ("ID") ENABLE; + +-- MEP_CENTRE_COUT_FK +ALTER TABLE "MISE_EN_PAIEMENT" ADD CONSTRAINT "MEP_CENTRE_COUT_FK" FOREIGN KEY ("CENTRE_COUT_ID") + REFERENCES "CENTRE_COUT" ("ID") ON DELETE CASCADE ENABLE; + +-- MEP_DOMAINE_FONCTIONNEL_FK +ALTER TABLE "MISE_EN_PAIEMENT" ADD CONSTRAINT "MEP_DOMAINE_FONCTIONNEL_FK" FOREIGN KEY ("DOMAINE_FONCTIONNEL_ID") + REFERENCES "DOMAINE_FONCTIONNEL" ("ID") ENABLE; + +-- MEP_FR_SERVICE_FK +ALTER TABLE "MISE_EN_PAIEMENT" ADD CONSTRAINT "MEP_FR_SERVICE_FK" FOREIGN KEY ("FORMULE_RES_SERVICE_ID") + REFERENCES "FORMULE_RESULTAT_SERVICE" ("ID") ENABLE; + +-- MEP_FR_SERVICE_REF_FK +ALTER TABLE "MISE_EN_PAIEMENT" ADD CONSTRAINT "MEP_FR_SERVICE_REF_FK" FOREIGN KEY ("FORMULE_RES_SERVICE_REF_ID") + REFERENCES "FORMULE_RESULTAT_SERVICE_REF" ("ID") ENABLE; + +-- MEP_TYPE_HEURES_FK +ALTER TABLE "MISE_EN_PAIEMENT" ADD CONSTRAINT "MEP_TYPE_HEURES_FK" FOREIGN KEY ("TYPE_HEURES_ID") + REFERENCES "TYPE_HEURES" ("ID") ON DELETE CASCADE ENABLE; + +-- MISE_EN_PAIEMENT_HCFK +ALTER TABLE "MISE_EN_PAIEMENT" ADD CONSTRAINT "MISE_EN_PAIEMENT_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- MISE_EN_PAIEMENT_HDFK +ALTER TABLE "MISE_EN_PAIEMENT" ADD CONSTRAINT "MISE_EN_PAIEMENT_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- MISE_EN_PAIEMENT_HMFK +ALTER TABLE "MISE_EN_PAIEMENT" ADD CONSTRAINT "MISE_EN_PAIEMENT_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- MISE_EN_PAIEMENT_PERIODE_FK +ALTER TABLE "MISE_EN_PAIEMENT" ADD CONSTRAINT "MISE_EN_PAIEMENT_PERIODE_FK" FOREIGN KEY ("PERIODE_PAIEMENT_ID") + REFERENCES "PERIODE" ("ID") ENABLE; + +-- MISE_EN_PAIEMENT_VALIDATION_FK +ALTER TABLE "MISE_EN_PAIEMENT" ADD CONSTRAINT "MISE_EN_PAIEMENT_VALIDATION_FK" FOREIGN KEY ("VALIDATION_ID") + REFERENCES "VALIDATION" ("ID") ON DELETE CASCADE ENABLE; + +-- MODIFICATION_SERVICE_DU_HCFK +ALTER TABLE "MODIFICATION_SERVICE_DU" ADD CONSTRAINT "MODIFICATION_SERVICE_DU_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- MODIFICATION_SERVICE_DU_HDFK +ALTER TABLE "MODIFICATION_SERVICE_DU" ADD CONSTRAINT "MODIFICATION_SERVICE_DU_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- MODIFICATION_SERVICE_DU_HMFK +ALTER TABLE "MODIFICATION_SERVICE_DU" ADD CONSTRAINT "MODIFICATION_SERVICE_DU_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- MODULATEUR_HCFK +ALTER TABLE "MODULATEUR" ADD CONSTRAINT "MODULATEUR_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- MODULATEUR_HDFK +ALTER TABLE "MODULATEUR" ADD CONSTRAINT "MODULATEUR_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- MODULATEUR_HMFK +ALTER TABLE "MODULATEUR" ADD CONSTRAINT "MODULATEUR_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- MODULATEUR_TYPE_MODULATEUR_FK +ALTER TABLE "MODULATEUR" ADD CONSTRAINT "MODULATEUR_TYPE_MODULATEUR_FK" FOREIGN KEY ("TYPE_MODULATEUR_ID") + REFERENCES "TYPE_MODULATEUR" ("ID") ON DELETE CASCADE ENABLE; + +-- MOTIF_MODIFICATION_SERVIC_HCFK +ALTER TABLE "MOTIF_MODIFICATION_SERVICE" ADD CONSTRAINT "MOTIF_MODIFICATION_SERVIC_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- MOTIF_MODIFICATION_SERVIC_HDFK +ALTER TABLE "MOTIF_MODIFICATION_SERVICE" ADD CONSTRAINT "MOTIF_MODIFICATION_SERVIC_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- MOTIF_MODIFICATION_SERVIC_HMFK +ALTER TABLE "MOTIF_MODIFICATION_SERVICE" ADD CONSTRAINT "MOTIF_MODIFICATION_SERVIC_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- MOTIF_NON_PAIEMENT_HCFK +ALTER TABLE "MOTIF_NON_PAIEMENT" ADD CONSTRAINT "MOTIF_NON_PAIEMENT_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- MOTIF_NON_PAIEMENT_HDFK +ALTER TABLE "MOTIF_NON_PAIEMENT" ADD CONSTRAINT "MOTIF_NON_PAIEMENT_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- MOTIF_NON_PAIEMENT_HMFK +ALTER TABLE "MOTIF_NON_PAIEMENT" ADD CONSTRAINT "MOTIF_NON_PAIEMENT_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- MSD_INTERVENANT_FK +ALTER TABLE "MODIFICATION_SERVICE_DU" ADD CONSTRAINT "MSD_INTERVENANT_FK" FOREIGN KEY ("INTERVENANT_ID") + REFERENCES "INTERVENANT" ("ID") ON DELETE CASCADE ENABLE; + +-- NOEUD_ANNEE_FK +ALTER TABLE "NOEUD" ADD CONSTRAINT "NOEUD_ANNEE_FK" FOREIGN KEY ("ANNEE_ID") + REFERENCES "ANNEE" ("ID") ENABLE; + +-- NOEUD_ELEMENT_PEDAGOGIQUE_FK +ALTER TABLE "NOEUD" ADD CONSTRAINT "NOEUD_ELEMENT_PEDAGOGIQUE_FK" FOREIGN KEY ("ELEMENT_PEDAGOGIQUE_ID") + REFERENCES "ELEMENT_PEDAGOGIQUE" ("ID") ON DELETE CASCADE ENABLE; + +-- NOEUD_ETAPE_FK +ALTER TABLE "NOEUD" ADD CONSTRAINT "NOEUD_ETAPE_FK" FOREIGN KEY ("ETAPE_ID") + REFERENCES "ETAPE" ("ID") ON DELETE CASCADE ENABLE; + +-- NOEUD_HCFK +ALTER TABLE "NOEUD" ADD CONSTRAINT "NOEUD_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- NOEUD_HDFK +ALTER TABLE "NOEUD" ADD CONSTRAINT "NOEUD_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- NOEUD_HMFK +ALTER TABLE "NOEUD" ADD CONSTRAINT "NOEUD_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- NOEUD_SOURCE_FK +ALTER TABLE "NOEUD" ADD CONSTRAINT "NOEUD_SOURCE_FK" FOREIGN KEY ("SOURCE_ID") + REFERENCES "SOURCE" ("ID") ENABLE; + +-- NOEUD_STRUCTURE_FK +ALTER TABLE "NOEUD" ADD CONSTRAINT "NOEUD_STRUCTURE_FK" FOREIGN KEY ("STRUCTURE_ID") + REFERENCES "STRUCTURE" ("ID") ENABLE; + +-- NOTIF_INDICATEUR_IFK +ALTER TABLE "NOTIFICATION_INDICATEUR" ADD CONSTRAINT "NOTIF_INDICATEUR_IFK" FOREIGN KEY ("INDICATEUR_ID") + REFERENCES "INDICATEUR" ("ID") ON DELETE CASCADE ENABLE; + +-- PARAMETRE_HCFK +ALTER TABLE "PARAMETRE" ADD CONSTRAINT "PARAMETRE_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- PARAMETRE_HDFK +ALTER TABLE "PARAMETRE" ADD CONSTRAINT "PARAMETRE_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- PARAMETRE_HMFK +ALTER TABLE "PARAMETRE" ADD CONSTRAINT "PARAMETRE_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- PAYS_HCFK +ALTER TABLE "PAYS" ADD CONSTRAINT "PAYS_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- PAYS_HDFK +ALTER TABLE "PAYS" ADD CONSTRAINT "PAYS_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- PAYS_HMFK +ALTER TABLE "PAYS" ADD CONSTRAINT "PAYS_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- PAYS_SOURCE_FK +ALTER TABLE "PAYS" ADD CONSTRAINT "PAYS_SOURCE_FK" FOREIGN KEY ("SOURCE_ID") + REFERENCES "SOURCE" ("ID") ON DELETE CASCADE ENABLE; + +-- PERIODE_HCFK +ALTER TABLE "PERIODE" ADD CONSTRAINT "PERIODE_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- PERIODE_HDFK +ALTER TABLE "PERIODE" ADD CONSTRAINT "PERIODE_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- PERIODE_HMFK +ALTER TABLE "PERIODE" ADD CONSTRAINT "PERIODE_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- PIECE_JOINTE_FICHIER_FFK +ALTER TABLE "PIECE_JOINTE_FICHIER" ADD CONSTRAINT "PIECE_JOINTE_FICHIER_FFK" FOREIGN KEY ("FICHIER_ID") + REFERENCES "FICHIER" ("ID") ENABLE; + +-- PIECE_JOINTE_FICHIER_PJFK +ALTER TABLE "PIECE_JOINTE_FICHIER" ADD CONSTRAINT "PIECE_JOINTE_FICHIER_PJFK" FOREIGN KEY ("PIECE_JOINTE_ID") + REFERENCES "PIECE_JOINTE" ("ID") ON DELETE CASCADE ENABLE; + +-- PIECE_JOINTE_HCFK +ALTER TABLE "PIECE_JOINTE" ADD CONSTRAINT "PIECE_JOINTE_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- PIECE_JOINTE_HDFK +ALTER TABLE "PIECE_JOINTE" ADD CONSTRAINT "PIECE_JOINTE_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- PIECE_JOINTE_HMFK +ALTER TABLE "PIECE_JOINTE" ADD CONSTRAINT "PIECE_JOINTE_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- PIECE_JOINTE_INTERVENANT_FK +ALTER TABLE "PIECE_JOINTE" ADD CONSTRAINT "PIECE_JOINTE_INTERVENANT_FK" FOREIGN KEY ("INTERVENANT_ID") + REFERENCES "INTERVENANT" ("ID") ENABLE; + +-- PIECE_JOINTE_VFK +ALTER TABLE "PIECE_JOINTE" ADD CONSTRAINT "PIECE_JOINTE_VFK" FOREIGN KEY ("VALIDATION_ID") + REFERENCES "VALIDATION" ("ID") ON DELETE SET NULL ENABLE; + +-- PJ_TYPE_PIECE_JOINTE_FK +ALTER TABLE "PIECE_JOINTE" ADD CONSTRAINT "PJ_TYPE_PIECE_JOINTE_FK" FOREIGN KEY ("TYPE_PIECE_JOINTE_ID") + REFERENCES "TYPE_PIECE_JOINTE" ("ID") ON DELETE CASCADE ENABLE; + +-- PLAFONDAPP_ANNEE_DFK +ALTER TABLE "PLAFOND_APPLICATION" ADD CONSTRAINT "PLAFONDAPP_ANNEE_DFK" FOREIGN KEY ("ANNEE_DEBUT_ID") + REFERENCES "ANNEE" ("ID") ENABLE; + +-- PLAFONDAPP_ANNEE_FFK +ALTER TABLE "PLAFOND_APPLICATION" ADD CONSTRAINT "PLAFONDAPP_ANNEE_FFK" FOREIGN KEY ("ANNEE_FIN_ID") + REFERENCES "ANNEE" ("ID") ENABLE; + +-- PLAFONDAPP_PLAFOND_ETAT_FK +ALTER TABLE "PLAFOND_APPLICATION" ADD CONSTRAINT "PLAFONDAPP_PLAFOND_ETAT_FK" FOREIGN KEY ("PLAFOND_ETAT_ID") + REFERENCES "PLAFOND_ETAT" ("ID") ON DELETE CASCADE ENABLE; + +-- PLAFONDAPP_PLAFOND_FK +ALTER TABLE "PLAFOND_APPLICATION" ADD CONSTRAINT "PLAFONDAPP_PLAFOND_FK" FOREIGN KEY ("PLAFOND_ID") + REFERENCES "PLAFOND" ("ID") ON DELETE CASCADE ENABLE; + +-- PLAFONDAPP_TVH_FK +ALTER TABLE "PLAFOND_APPLICATION" ADD CONSTRAINT "PLAFONDAPP_TVH_FK" FOREIGN KEY ("TYPE_VOLUME_HORAIRE_ID") + REFERENCES "TYPE_VOLUME_HORAIRE" ("ID") ON DELETE CASCADE ENABLE; + +-- PRIVILEGE_CATEGORIE_FK +ALTER TABLE "PRIVILEGE" ADD CONSTRAINT "PRIVILEGE_CATEGORIE_FK" FOREIGN KEY ("CATEGORIE_ID") + REFERENCES "CATEGORIE_PRIVILEGE" ("ID") ON DELETE CASCADE ENABLE; + +-- ROLE_HCFK +ALTER TABLE "ROLE" ADD CONSTRAINT "ROLE_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- ROLE_HDFK +ALTER TABLE "ROLE" ADD CONSTRAINT "ROLE_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- ROLE_HMFK +ALTER TABLE "ROLE" ADD CONSTRAINT "ROLE_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- ROLE_PERIMETRE_FK +ALTER TABLE "ROLE" ADD CONSTRAINT "ROLE_PERIMETRE_FK" FOREIGN KEY ("PERIMETRE_ID") + REFERENCES "PERIMETRE" ("ID") ENABLE; + +-- ROLE_PRIVILEGE_PRIVILEGE_FK +ALTER TABLE "ROLE_PRIVILEGE" ADD CONSTRAINT "ROLE_PRIVILEGE_PRIVILEGE_FK" FOREIGN KEY ("PRIVILEGE_ID") + REFERENCES "PRIVILEGE" ("ID") ON DELETE CASCADE ENABLE; + +-- ROLE_PRIVILEGE_ROLE_FK +ALTER TABLE "ROLE_PRIVILEGE" ADD CONSTRAINT "ROLE_PRIVILEGE_ROLE_FK" FOREIGN KEY ("ROLE_ID") + REFERENCES "ROLE" ("ID") ON DELETE CASCADE ENABLE; + +-- RSV_TYPE_INTERVENANT_FK +ALTER TABLE "REGLE_STRUCTURE_VALIDATION" ADD CONSTRAINT "RSV_TYPE_INTERVENANT_FK" FOREIGN KEY ("TYPE_INTERVENANT_ID") + REFERENCES "TYPE_INTERVENANT" ("ID") ENABLE; + +-- RSV_TYPE_VOLUME_HORAIRE_FK +ALTER TABLE "REGLE_STRUCTURE_VALIDATION" ADD CONSTRAINT "RSV_TYPE_VOLUME_HORAIRE_FK" FOREIGN KEY ("TYPE_VOLUME_HORAIRE_ID") + REFERENCES "TYPE_VOLUME_HORAIRE" ("ID") ENABLE; + +-- SCENARIO_HCFK +ALTER TABLE "SCENARIO" ADD CONSTRAINT "SCENARIO_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- SCENARIO_HDFK +ALTER TABLE "SCENARIO" ADD CONSTRAINT "SCENARIO_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- SCENARIO_HMFK +ALTER TABLE "SCENARIO" ADD CONSTRAINT "SCENARIO_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- SCENARIO_LIEN_HCFK +ALTER TABLE "SCENARIO_LIEN" ADD CONSTRAINT "SCENARIO_LIEN_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- SCENARIO_LIEN_HDFK +ALTER TABLE "SCENARIO_LIEN" ADD CONSTRAINT "SCENARIO_LIEN_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- SCENARIO_LIEN_HMFK +ALTER TABLE "SCENARIO_LIEN" ADD CONSTRAINT "SCENARIO_LIEN_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- SCENARIO_LIEN_LIEN_FK +ALTER TABLE "SCENARIO_LIEN" ADD CONSTRAINT "SCENARIO_LIEN_LIEN_FK" FOREIGN KEY ("LIEN_ID") + REFERENCES "LIEN" ("ID") ON DELETE CASCADE ENABLE; + +-- SCENARIO_LIEN_SCENARIO_FK +ALTER TABLE "SCENARIO_LIEN" ADD CONSTRAINT "SCENARIO_LIEN_SCENARIO_FK" FOREIGN KEY ("SCENARIO_ID") + REFERENCES "SCENARIO" ("ID") ON DELETE CASCADE ENABLE; + +-- SCENARIO_LIEN_SOURCE_FK +ALTER TABLE "SCENARIO_LIEN" ADD CONSTRAINT "SCENARIO_LIEN_SOURCE_FK" FOREIGN KEY ("SOURCE_ID") + REFERENCES "SOURCE" ("ID") ENABLE; + +-- SCENARIO_NOEUD_HCFK +ALTER TABLE "SCENARIO_NOEUD" ADD CONSTRAINT "SCENARIO_NOEUD_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- SCENARIO_NOEUD_HDFK +ALTER TABLE "SCENARIO_NOEUD" ADD CONSTRAINT "SCENARIO_NOEUD_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- SCENARIO_NOEUD_HMFK +ALTER TABLE "SCENARIO_NOEUD" ADD CONSTRAINT "SCENARIO_NOEUD_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- SCENARIO_NOEUD_NOEUD_FK +ALTER TABLE "SCENARIO_NOEUD" ADD CONSTRAINT "SCENARIO_NOEUD_NOEUD_FK" FOREIGN KEY ("NOEUD_ID") + REFERENCES "NOEUD" ("ID") ON DELETE CASCADE ENABLE; + +-- SCENARIO_NOEUD_SCENARIO_FK +ALTER TABLE "SCENARIO_NOEUD" ADD CONSTRAINT "SCENARIO_NOEUD_SCENARIO_FK" FOREIGN KEY ("SCENARIO_ID") + REFERENCES "SCENARIO" ("ID") ON DELETE CASCADE ENABLE; + +-- SCENARIO_NOEUD_SOURCE_FK +ALTER TABLE "SCENARIO_NOEUD" ADD CONSTRAINT "SCENARIO_NOEUD_SOURCE_FK" FOREIGN KEY ("SOURCE_ID") + REFERENCES "SOURCE" ("ID") ENABLE; + +-- SCENARIO_STRUCTURE_FK +ALTER TABLE "SCENARIO" ADD CONSTRAINT "SCENARIO_STRUCTURE_FK" FOREIGN KEY ("STRUCTURE_ID") + REFERENCES "STRUCTURE" ("ID") ENABLE; + +-- SERVICE_ELEMENT_PEDAGOGIQUE_FK +ALTER TABLE "SERVICE" ADD CONSTRAINT "SERVICE_ELEMENT_PEDAGOGIQUE_FK" FOREIGN KEY ("ELEMENT_PEDAGOGIQUE_ID") + REFERENCES "ELEMENT_PEDAGOGIQUE" ("ID") ENABLE; + +-- SERVICE_ETABLISSEMENT_FK +ALTER TABLE "SERVICE" ADD CONSTRAINT "SERVICE_ETABLISSEMENT_FK" FOREIGN KEY ("ETABLISSEMENT_ID") + REFERENCES "ETABLISSEMENT" ("ID") ENABLE; + +-- SERVICE_HCFK +ALTER TABLE "SERVICE" ADD CONSTRAINT "SERVICE_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- SERVICE_HDFK +ALTER TABLE "SERVICE" ADD CONSTRAINT "SERVICE_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- SERVICE_HMFK +ALTER TABLE "SERVICE" ADD CONSTRAINT "SERVICE_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- SERVICE_INTERVENANT_FK +ALTER TABLE "SERVICE" ADD CONSTRAINT "SERVICE_INTERVENANT_FK" FOREIGN KEY ("INTERVENANT_ID") + REFERENCES "INTERVENANT" ("ID") ENABLE; + +-- SERVICE_REFERENTIEL_HCFK +ALTER TABLE "SERVICE_REFERENTIEL" ADD CONSTRAINT "SERVICE_REFERENTIEL_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- SERVICE_REFERENTIEL_HDFK +ALTER TABLE "SERVICE_REFERENTIEL" ADD CONSTRAINT "SERVICE_REFERENTIEL_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- SERVICE_REFERENTIEL_HMFK +ALTER TABLE "SERVICE_REFERENTIEL" ADD CONSTRAINT "SERVICE_REFERENTIEL_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- SEUIL_CHARGE_ANNEE_FK +ALTER TABLE "SEUIL_CHARGE" ADD CONSTRAINT "SEUIL_CHARGE_ANNEE_FK" FOREIGN KEY ("ANNEE_ID") + REFERENCES "ANNEE" ("ID") ENABLE; + +-- SEUIL_CH_GT_FORMATION_FK +ALTER TABLE "SEUIL_CHARGE" ADD CONSTRAINT "SEUIL_CH_GT_FORMATION_FK" FOREIGN KEY ("GROUPE_TYPE_FORMATION_ID") + REFERENCES "GROUPE_TYPE_FORMATION" ("ID") ENABLE; + +-- SEUIL_CH_SCENARIO_FK +ALTER TABLE "SEUIL_CHARGE" ADD CONSTRAINT "SEUIL_CH_SCENARIO_FK" FOREIGN KEY ("SCENARIO_ID") + REFERENCES "SCENARIO" ("ID") ENABLE; + +-- SEUIL_CH_STRUCTURE_FK +ALTER TABLE "SEUIL_CHARGE" ADD CONSTRAINT "SEUIL_CH_STRUCTURE_FK" FOREIGN KEY ("STRUCTURE_ID") + REFERENCES "STRUCTURE" ("ID") ENABLE; + +-- SEUIL_CH_TYPE_INTERVENTION_FK +ALTER TABLE "SEUIL_CHARGE" ADD CONSTRAINT "SEUIL_CH_TYPE_INTERVENTION_FK" FOREIGN KEY ("TYPE_INTERVENTION_ID") + REFERENCES "TYPE_INTERVENTION" ("ID") ENABLE; + +-- SEUIL_CH_UTILISATEUR_HCFK +ALTER TABLE "SEUIL_CHARGE" ADD CONSTRAINT "SEUIL_CH_UTILISATEUR_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- SEUIL_CH_UTILISATEUR_HDFK +ALTER TABLE "SEUIL_CHARGE" ADD CONSTRAINT "SEUIL_CH_UTILISATEUR_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- SEUIL_CH_UTILISATEUR_HMFK +ALTER TABLE "SEUIL_CHARGE" ADD CONSTRAINT "SEUIL_CH_UTILISATEUR_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- SNE_ETAPE_FK +ALTER TABLE "SCENARIO_NOEUD_EFFECTIF" ADD CONSTRAINT "SNE_ETAPE_FK" FOREIGN KEY ("ETAPE_ID") + REFERENCES "ETAPE" ("ID") ENABLE; + +-- SNE_SCENARIO_NOEUD_FK +ALTER TABLE "SCENARIO_NOEUD_EFFECTIF" ADD CONSTRAINT "SNE_SCENARIO_NOEUD_FK" FOREIGN KEY ("SCENARIO_NOEUD_ID") + REFERENCES "SCENARIO_NOEUD" ("ID") ON DELETE CASCADE ENABLE; + +-- SNE_TYPE_HEURES_FK +ALTER TABLE "SCENARIO_NOEUD_EFFECTIF" ADD CONSTRAINT "SNE_TYPE_HEURES_FK" FOREIGN KEY ("TYPE_HEURES_ID") + REFERENCES "TYPE_HEURES" ("ID") ON DELETE CASCADE ENABLE; + +-- SNS_SCENARIO_NOEUD_FK +ALTER TABLE "SCENARIO_NOEUD_SEUIL" ADD CONSTRAINT "SNS_SCENARIO_NOEUD_FK" FOREIGN KEY ("SCENARIO_NOEUD_ID") + REFERENCES "SCENARIO_NOEUD" ("ID") ON DELETE CASCADE ENABLE; + +-- SNS_TYPE_INTERVENTION_FK +ALTER TABLE "SCENARIO_NOEUD_SEUIL" ADD CONSTRAINT "SNS_TYPE_INTERVENTION_FK" FOREIGN KEY ("TYPE_INTERVENTION_ID") + REFERENCES "TYPE_INTERVENTION" ("ID") ON DELETE CASCADE ENABLE; + +-- SRFR_FK +ALTER TABLE "SERVICE_REFERENTIEL" ADD CONSTRAINT "SRFR_FK" FOREIGN KEY ("FONCTION_ID") + REFERENCES "FONCTION_REFERENTIEL" ("ID") ENABLE; + +-- SR_INTERVENANT_FK +ALTER TABLE "SERVICE_REFERENTIEL" ADD CONSTRAINT "SR_INTERVENANT_FK" FOREIGN KEY ("INTERVENANT_ID") + REFERENCES "INTERVENANT" ("ID") ON DELETE CASCADE ENABLE; + +-- SR_STRUCTURE_FK +ALTER TABLE "SERVICE_REFERENTIEL" ADD CONSTRAINT "SR_STRUCTURE_FK" FOREIGN KEY ("STRUCTURE_ID") + REFERENCES "STRUCTURE" ("ID") ENABLE; + +-- STATUT_INTERVENANT_HCFK +ALTER TABLE "STATUT_INTERVENANT" ADD CONSTRAINT "STATUT_INTERVENANT_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- STATUT_INTERVENANT_HDFK +ALTER TABLE "STATUT_INTERVENANT" ADD CONSTRAINT "STATUT_INTERVENANT_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- STATUT_INTERVENANT_HMFK +ALTER TABLE "STATUT_INTERVENANT" ADD CONSTRAINT "STATUT_INTERVENANT_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- STATUT_INTERVENANT_SOURCE_FK +ALTER TABLE "STATUT_INTERVENANT" ADD CONSTRAINT "STATUT_INTERVENANT_SOURCE_FK" FOREIGN KEY ("SOURCE_ID") + REFERENCES "SOURCE" ("ID") ON DELETE CASCADE ENABLE; + +-- STATUT_INTERVENANT_TYPE_FK +ALTER TABLE "STATUT_INTERVENANT" ADD CONSTRAINT "STATUT_INTERVENANT_TYPE_FK" FOREIGN KEY ("TYPE_INTERVENANT_ID") + REFERENCES "TYPE_INTERVENANT" ("ID") ENABLE; + +-- STAT_PRIV_PRIVILEGE_FK +ALTER TABLE "STATUT_PRIVILEGE" ADD CONSTRAINT "STAT_PRIV_PRIVILEGE_FK" FOREIGN KEY ("PRIVILEGE_ID") + REFERENCES "PRIVILEGE" ("ID") ON DELETE CASCADE ENABLE; + +-- STAT_PRIV_STATUT_FK +ALTER TABLE "STATUT_PRIVILEGE" ADD CONSTRAINT "STAT_PRIV_STATUT_FK" FOREIGN KEY ("STATUT_ID") + REFERENCES "STATUT_INTERVENANT" ("ID") ON DELETE CASCADE ENABLE; + +-- STRUCTURE_HCFK +ALTER TABLE "STRUCTURE" ADD CONSTRAINT "STRUCTURE_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- STRUCTURE_HDFK +ALTER TABLE "STRUCTURE" ADD CONSTRAINT "STRUCTURE_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- STRUCTURE_HMFK +ALTER TABLE "STRUCTURE" ADD CONSTRAINT "STRUCTURE_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- STRUCTURE_SOURCE_FK +ALTER TABLE "STRUCTURE" ADD CONSTRAINT "STRUCTURE_SOURCE_FK" FOREIGN KEY ("SOURCE_ID") + REFERENCES "SOURCE" ("ID") ON DELETE CASCADE ENABLE; + +-- TAS_STATUT_INTERVENANT_FK +ALTER TABLE "TYPE_AGREMENT_STATUT" ADD CONSTRAINT "TAS_STATUT_INTERVENANT_FK" FOREIGN KEY ("STATUT_INTERVENANT_ID") + REFERENCES "STATUT_INTERVENANT" ("ID") ON DELETE CASCADE ENABLE; + +-- TAS_TYPE_AGREMENT_FK +ALTER TABLE "TYPE_AGREMENT_STATUT" ADD CONSTRAINT "TAS_TYPE_AGREMENT_FK" FOREIGN KEY ("TYPE_AGREMENT_ID") + REFERENCES "TYPE_AGREMENT" ("ID") ON DELETE CASCADE ENABLE; + +-- TAUX_HORAIRE_HETD_HCFK +ALTER TABLE "TAUX_HORAIRE_HETD" ADD CONSTRAINT "TAUX_HORAIRE_HETD_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- TAUX_HORAIRE_HETD_HDFK +ALTER TABLE "TAUX_HORAIRE_HETD" ADD CONSTRAINT "TAUX_HORAIRE_HETD_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- TAUX_HORAIRE_HETD_HMFK +ALTER TABLE "TAUX_HORAIRE_HETD" ADD CONSTRAINT "TAUX_HORAIRE_HETD_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- TBCH_ANNEE_FK +ALTER TABLE "TBL_CHARGENS" ADD CONSTRAINT "TBCH_ANNEE_FK" FOREIGN KEY ("ANNEE_ID") + REFERENCES "ANNEE" ("ID") ON DELETE CASCADE ENABLE; + +-- TBCH_ELEMENT_PEDAGOGIQUE_FK +ALTER TABLE "TBL_CHARGENS" ADD CONSTRAINT "TBCH_ELEMENT_PEDAGOGIQUE_FK" FOREIGN KEY ("ELEMENT_PEDAGOGIQUE_ID") + REFERENCES "ELEMENT_PEDAGOGIQUE" ("ID") ON DELETE CASCADE ENABLE; + +-- TBCH_ETAPE_FK +ALTER TABLE "TBL_CHARGENS" ADD CONSTRAINT "TBCH_ETAPE_FK" FOREIGN KEY ("ETAPE_ID") + REFERENCES "ETAPE" ("ID") ON DELETE CASCADE ENABLE; + +-- TBCH_ETAPE_FKV1 +ALTER TABLE "TBL_CHARGENS" ADD CONSTRAINT "TBCH_ETAPE_FKV1" FOREIGN KEY ("ETAPE_ENS_ID") + REFERENCES "ETAPE" ("ID") ON DELETE CASCADE ENABLE; + +-- TBCH_GROUPE_TYPE_FORMATION_FK +ALTER TABLE "TBL_CHARGENS" ADD CONSTRAINT "TBCH_GROUPE_TYPE_FORMATION_FK" FOREIGN KEY ("GROUPE_TYPE_FORMATION_ID") + REFERENCES "GROUPE_TYPE_FORMATION" ("ID") ON DELETE CASCADE ENABLE; + +-- TBCH_NOEUD_FK +ALTER TABLE "TBL_CHARGENS" ADD CONSTRAINT "TBCH_NOEUD_FK" FOREIGN KEY ("NOEUD_ID") + REFERENCES "NOEUD" ("ID") ON DELETE CASCADE ENABLE; + +-- TBCH_SCENARIO_FK +ALTER TABLE "TBL_CHARGENS" ADD CONSTRAINT "TBCH_SCENARIO_FK" FOREIGN KEY ("SCENARIO_ID") + REFERENCES "SCENARIO" ("ID") ON DELETE CASCADE ENABLE; + +-- TBCH_STRUCTURE_FK +ALTER TABLE "TBL_CHARGENS" ADD CONSTRAINT "TBCH_STRUCTURE_FK" FOREIGN KEY ("STRUCTURE_ID") + REFERENCES "STRUCTURE" ("ID") ON DELETE CASCADE ENABLE; + +-- TBCH_TYPE_HEURES_FK +ALTER TABLE "TBL_CHARGENS" ADD CONSTRAINT "TBCH_TYPE_HEURES_FK" FOREIGN KEY ("TYPE_HEURES_ID") + REFERENCES "TYPE_HEURES" ("ID") ON DELETE CASCADE ENABLE; + +-- TBCH_TYPE_INTERVENTION_FK +ALTER TABLE "TBL_CHARGENS" ADD CONSTRAINT "TBCH_TYPE_INTERVENTION_FK" FOREIGN KEY ("TYPE_INTERVENTION_ID") + REFERENCES "TYPE_INTERVENTION" ("ID") ON DELETE CASCADE ENABLE; + +-- TBL_AGR_AGREMENT_FK +ALTER TABLE "TBL_AGREMENT" ADD CONSTRAINT "TBL_AGR_AGREMENT_FK" FOREIGN KEY ("AGREMENT_ID") + REFERENCES "AGREMENT" ("ID") ON DELETE CASCADE ENABLE; + +-- TBL_AGR_ANNEE_FK +ALTER TABLE "TBL_AGREMENT" ADD CONSTRAINT "TBL_AGR_ANNEE_FK" FOREIGN KEY ("ANNEE_ID") + REFERENCES "ANNEE" ("ID") ON DELETE CASCADE ENABLE; + +-- TBL_AGR_INTERVENANT_FK +ALTER TABLE "TBL_AGREMENT" ADD CONSTRAINT "TBL_AGR_INTERVENANT_FK" FOREIGN KEY ("INTERVENANT_ID") + REFERENCES "INTERVENANT" ("ID") ON DELETE CASCADE ENABLE; + +-- TBL_AGR_STRUCTURE_FK +ALTER TABLE "TBL_AGREMENT" ADD CONSTRAINT "TBL_AGR_STRUCTURE_FK" FOREIGN KEY ("STRUCTURE_ID") + REFERENCES "STRUCTURE" ("ID") ON DELETE CASCADE ENABLE; + +-- TBL_AGR_TYPE_AGREMENT_FK +ALTER TABLE "TBL_AGREMENT" ADD CONSTRAINT "TBL_AGR_TYPE_AGREMENT_FK" FOREIGN KEY ("TYPE_AGREMENT_ID") + REFERENCES "TYPE_AGREMENT" ("ID") ON DELETE CASCADE ENABLE; + +-- TBL_CLOTURE_REALISE_ANNEE_FK +ALTER TABLE "TBL_CLOTURE_REALISE" ADD CONSTRAINT "TBL_CLOTURE_REALISE_ANNEE_FK" FOREIGN KEY ("ANNEE_ID") + REFERENCES "ANNEE" ("ID") ON DELETE CASCADE ENABLE; + +-- TBL_CLO_REAL_INTERVENANT_FK +ALTER TABLE "TBL_CLOTURE_REALISE" ADD CONSTRAINT "TBL_CLO_REAL_INTERVENANT_FK" FOREIGN KEY ("INTERVENANT_ID") + REFERENCES "INTERVENANT" ("ID") ON DELETE CASCADE ENABLE; + +-- TBL_CONTRAT_ANNEE_FK +ALTER TABLE "TBL_CONTRAT" ADD CONSTRAINT "TBL_CONTRAT_ANNEE_FK" FOREIGN KEY ("ANNEE_ID") + REFERENCES "ANNEE" ("ID") ON DELETE CASCADE ENABLE; + +-- TBL_CONTRAT_INTERVENANT_FK +ALTER TABLE "TBL_CONTRAT" ADD CONSTRAINT "TBL_CONTRAT_INTERVENANT_FK" FOREIGN KEY ("INTERVENANT_ID") + REFERENCES "INTERVENANT" ("ID") ON DELETE CASCADE ENABLE; + +-- TBL_CONTRAT_STRUCTURE_FK +ALTER TABLE "TBL_CONTRAT" ADD CONSTRAINT "TBL_CONTRAT_STRUCTURE_FK" FOREIGN KEY ("STRUCTURE_ID") + REFERENCES "STRUCTURE" ("ID") ON DELETE CASCADE ENABLE; + +-- TBL_CSD_ANNEE_FK +ALTER TABLE "TBL_CHARGENS_SEUILS_DEF" ADD CONSTRAINT "TBL_CSD_ANNEE_FK" FOREIGN KEY ("ANNEE_ID") + REFERENCES "ANNEE" ("ID") ENABLE; + +-- TBL_CSD_GTF_FK +ALTER TABLE "TBL_CHARGENS_SEUILS_DEF" ADD CONSTRAINT "TBL_CSD_GTF_FK" FOREIGN KEY ("GROUPE_TYPE_FORMATION_ID") + REFERENCES "GROUPE_TYPE_FORMATION" ("ID") ENABLE; + +-- TBL_CSD_SCENARIO_FK +ALTER TABLE "TBL_CHARGENS_SEUILS_DEF" ADD CONSTRAINT "TBL_CSD_SCENARIO_FK" FOREIGN KEY ("SCENARIO_ID") + REFERENCES "SCENARIO" ("ID") ENABLE; + +-- TBL_CSD_STRUCTURE_FK +ALTER TABLE "TBL_CHARGENS_SEUILS_DEF" ADD CONSTRAINT "TBL_CSD_STRUCTURE_FK" FOREIGN KEY ("STRUCTURE_ID") + REFERENCES "STRUCTURE" ("ID") ENABLE; + +-- TBL_CSD_TYPE_INTERVENTION_FK +ALTER TABLE "TBL_CHARGENS_SEUILS_DEF" ADD CONSTRAINT "TBL_CSD_TYPE_INTERVENTION_FK" FOREIGN KEY ("TYPE_INTERVENTION_ID") + REFERENCES "TYPE_INTERVENTION" ("ID") ENABLE; + +-- TBL_DEMS_TBL_FK +ALTER TABLE "TBL_DEMS" ADD CONSTRAINT "TBL_DEMS_TBL_FK" FOREIGN KEY ("TBL_NAME") + REFERENCES "TBL" ("TBL_NAME") ON DELETE CASCADE ENABLE; + +-- TBL_DMLIQ_ANNEE_FK +ALTER TABLE "TBL_DMEP_LIQUIDATION" ADD CONSTRAINT "TBL_DMLIQ_ANNEE_FK" FOREIGN KEY ("ANNEE_ID") + REFERENCES "ANNEE" ("ID") ON DELETE CASCADE ENABLE; + +-- TBL_DMLIQ_STRUCTURE_FK +ALTER TABLE "TBL_DMEP_LIQUIDATION" ADD CONSTRAINT "TBL_DMLIQ_STRUCTURE_FK" FOREIGN KEY ("STRUCTURE_ID") + REFERENCES "STRUCTURE" ("ID") ON DELETE CASCADE ENABLE; + +-- TBL_DMLIQ_TYPE_RESSOURCE_FK +ALTER TABLE "TBL_DMEP_LIQUIDATION" ADD CONSTRAINT "TBL_DMLIQ_TYPE_RESSOURCE_FK" FOREIGN KEY ("TYPE_RESSOURCE_ID") + REFERENCES "TYPE_RESSOURCE" ("ID") ON DELETE CASCADE ENABLE; + +-- TBL_DOSSIER_ANNEE_FK +ALTER TABLE "TBL_DOSSIER" ADD CONSTRAINT "TBL_DOSSIER_ANNEE_FK" FOREIGN KEY ("ANNEE_ID") + REFERENCES "ANNEE" ("ID") ON DELETE CASCADE ENABLE; + +-- TBL_DOSSIER_DOSSIER_FK +ALTER TABLE "TBL_DOSSIER" ADD CONSTRAINT "TBL_DOSSIER_DOSSIER_FK" FOREIGN KEY ("DOSSIER_ID") + REFERENCES "DOSSIER" ("ID") ON DELETE CASCADE ENABLE; + +-- TBL_DOSSIER_INTERVENANT_FK +ALTER TABLE "TBL_DOSSIER" ADD CONSTRAINT "TBL_DOSSIER_INTERVENANT_FK" FOREIGN KEY ("INTERVENANT_ID") + REFERENCES "INTERVENANT" ("ID") ON DELETE CASCADE ENABLE; + +-- TBL_DOSSIER_VALIDATION_FK +ALTER TABLE "TBL_DOSSIER" ADD CONSTRAINT "TBL_DOSSIER_VALIDATION_FK" FOREIGN KEY ("VALIDATION_ID") + REFERENCES "VALIDATION" ("ID") ON DELETE CASCADE ENABLE; + +-- TBL_LIEN_LIEN_FK +ALTER TABLE "TBL_LIEN" ADD CONSTRAINT "TBL_LIEN_LIEN_FK" FOREIGN KEY ("LIEN_ID") + REFERENCES "LIEN" ("ID") ENABLE; + +-- TBL_LIEN_NOEUD_INF_FK +ALTER TABLE "TBL_LIEN" ADD CONSTRAINT "TBL_LIEN_NOEUD_INF_FK" FOREIGN KEY ("NOEUD_INF_ID") + REFERENCES "NOEUD" ("ID") ENABLE; + +-- TBL_LIEN_NOEUD_SUP_FK +ALTER TABLE "TBL_LIEN" ADD CONSTRAINT "TBL_LIEN_NOEUD_SUP_FK" FOREIGN KEY ("NOEUD_SUP_ID") + REFERENCES "NOEUD" ("ID") ENABLE; + +-- TBL_LIEN_SCENARIO_FK +ALTER TABLE "TBL_LIEN" ADD CONSTRAINT "TBL_LIEN_SCENARIO_FK" FOREIGN KEY ("SCENARIO_ID") + REFERENCES "SCENARIO" ("ID") ENABLE; + +-- TBL_LIEN_SCENARIO_LIEN_FK +ALTER TABLE "TBL_LIEN" ADD CONSTRAINT "TBL_LIEN_SCENARIO_LIEN_FK" FOREIGN KEY ("SCENARIO_LIEN_ID") + REFERENCES "SCENARIO_LIEN" ("ID") ENABLE; + +-- TBL_LIEN_STRUCTURE_FK +ALTER TABLE "TBL_LIEN" ADD CONSTRAINT "TBL_LIEN_STRUCTURE_FK" FOREIGN KEY ("STRUCTURE_ID") + REFERENCES "STRUCTURE" ("ID") ENABLE; + +-- TBL_PAIEMENT_ANNEE_FK +ALTER TABLE "TBL_PAIEMENT" ADD CONSTRAINT "TBL_PAIEMENT_ANNEE_FK" FOREIGN KEY ("ANNEE_ID") + REFERENCES "ANNEE" ("ID") ON DELETE CASCADE ENABLE; + +-- TBL_PAIEMENT_FRSR_FK +ALTER TABLE "TBL_PAIEMENT" ADD CONSTRAINT "TBL_PAIEMENT_FRSR_FK" FOREIGN KEY ("FORMULE_RES_SERVICE_REF_ID") + REFERENCES "FORMULE_RESULTAT_SERVICE_REF" ("ID") ON DELETE CASCADE ENABLE; + +-- TBL_PAIEMENT_FRS_FK +ALTER TABLE "TBL_PAIEMENT" ADD CONSTRAINT "TBL_PAIEMENT_FRS_FK" FOREIGN KEY ("FORMULE_RES_SERVICE_ID") + REFERENCES "FORMULE_RESULTAT_SERVICE" ("ID") ON DELETE CASCADE ENABLE; + +-- TBL_PAIEMENT_INTERVENANT_FK +ALTER TABLE "TBL_PAIEMENT" ADD CONSTRAINT "TBL_PAIEMENT_INTERVENANT_FK" FOREIGN KEY ("INTERVENANT_ID") + REFERENCES "INTERVENANT" ("ID") ON DELETE CASCADE ENABLE; + +-- TBL_PAIEMENT_MEP_FK +ALTER TABLE "TBL_PAIEMENT" ADD CONSTRAINT "TBL_PAIEMENT_MEP_FK" FOREIGN KEY ("MISE_EN_PAIEMENT_ID") + REFERENCES "MISE_EN_PAIEMENT" ("ID") ON DELETE CASCADE ENABLE; + +-- TBL_PAIEMENT_PERIODE_FK +ALTER TABLE "TBL_PAIEMENT" ADD CONSTRAINT "TBL_PAIEMENT_PERIODE_FK" FOREIGN KEY ("PERIODE_PAIEMENT_ID") + REFERENCES "PERIODE" ("ID") ON DELETE CASCADE ENABLE; + +-- TBL_PAIEMENT_STRUCTURE_FK +ALTER TABLE "TBL_PAIEMENT" ADD CONSTRAINT "TBL_PAIEMENT_STRUCTURE_FK" FOREIGN KEY ("STRUCTURE_ID") + REFERENCES "STRUCTURE" ("ID") ON DELETE CASCADE ENABLE; + +-- TBL_PIECE_JOINTE_ANNEE_FK +ALTER TABLE "TBL_PIECE_JOINTE" ADD CONSTRAINT "TBL_PIECE_JOINTE_ANNEE_FK" FOREIGN KEY ("ANNEE_ID") + REFERENCES "ANNEE" ("ID") ON DELETE CASCADE ENABLE; + +-- TBL_PJD_ANNEE_FK +ALTER TABLE "TBL_PIECE_JOINTE_DEMANDE" ADD CONSTRAINT "TBL_PJD_ANNEE_FK" FOREIGN KEY ("ANNEE_ID") + REFERENCES "ANNEE" ("ID") ON DELETE CASCADE ENABLE; + +-- TBL_PJD_INTERVENANT_FK +ALTER TABLE "TBL_PIECE_JOINTE_DEMANDE" ADD CONSTRAINT "TBL_PJD_INTERVENANT_FK" FOREIGN KEY ("INTERVENANT_ID") + REFERENCES "INTERVENANT" ("ID") ON DELETE CASCADE ENABLE; + +-- TBL_PJD_TYPE_PIECE_JOINTE_FK +ALTER TABLE "TBL_PIECE_JOINTE_DEMANDE" ADD CONSTRAINT "TBL_PJD_TYPE_PIECE_JOINTE_FK" FOREIGN KEY ("TYPE_PIECE_JOINTE_ID") + REFERENCES "TYPE_PIECE_JOINTE" ("ID") ON DELETE CASCADE ENABLE; + +-- TBL_PJF_ANNEE_FK +ALTER TABLE "TBL_PIECE_JOINTE_FOURNIE" ADD CONSTRAINT "TBL_PJF_ANNEE_FK" FOREIGN KEY ("ANNEE_ID") + REFERENCES "ANNEE" ("ID") ON DELETE CASCADE ENABLE; + +-- TBL_PJF_FICHIER_FK +ALTER TABLE "TBL_PIECE_JOINTE_FOURNIE" ADD CONSTRAINT "TBL_PJF_FICHIER_FK" FOREIGN KEY ("FICHIER_ID") + REFERENCES "FICHIER" ("ID") ON DELETE CASCADE ENABLE; + +-- TBL_PJF_INTERVENANT_FK +ALTER TABLE "TBL_PIECE_JOINTE_FOURNIE" ADD CONSTRAINT "TBL_PJF_INTERVENANT_FK" FOREIGN KEY ("INTERVENANT_ID") + REFERENCES "INTERVENANT" ("ID") ON DELETE CASCADE ENABLE; + +-- TBL_PJF_PIECE_JOINTE_FK +ALTER TABLE "TBL_PIECE_JOINTE_FOURNIE" ADD CONSTRAINT "TBL_PJF_PIECE_JOINTE_FK" FOREIGN KEY ("PIECE_JOINTE_ID") + REFERENCES "PIECE_JOINTE" ("ID") ON DELETE CASCADE ENABLE; + +-- TBL_PJF_TYPE_PIECE_JOINTE_FK +ALTER TABLE "TBL_PIECE_JOINTE_FOURNIE" ADD CONSTRAINT "TBL_PJF_TYPE_PIECE_JOINTE_FK" FOREIGN KEY ("TYPE_PIECE_JOINTE_ID") + REFERENCES "TYPE_PIECE_JOINTE" ("ID") ON DELETE CASCADE ENABLE; + +-- TBL_PJF_VALIDATION_FK +ALTER TABLE "TBL_PIECE_JOINTE_FOURNIE" ADD CONSTRAINT "TBL_PJF_VALIDATION_FK" FOREIGN KEY ("VALIDATION_ID") + REFERENCES "VALIDATION" ("ID") ON DELETE CASCADE ENABLE; + +-- TBL_PJ_INTERVENANT_FK +ALTER TABLE "TBL_PIECE_JOINTE" ADD CONSTRAINT "TBL_PJ_INTERVENANT_FK" FOREIGN KEY ("INTERVENANT_ID") + REFERENCES "INTERVENANT" ("ID") ON DELETE CASCADE ENABLE; + +-- TBL_PJ_TYPE_PIECE_JOINTE_FK +ALTER TABLE "TBL_PIECE_JOINTE" ADD CONSTRAINT "TBL_PJ_TYPE_PIECE_JOINTE_FK" FOREIGN KEY ("TYPE_PIECE_JOINTE_ID") + REFERENCES "TYPE_PIECE_JOINTE" ("ID") ON DELETE CASCADE ENABLE; + +-- TBL_SERVICE_ANNEE_FK +ALTER TABLE "TBL_SERVICE" ADD CONSTRAINT "TBL_SERVICE_ANNEE_FK" FOREIGN KEY ("ANNEE_ID") + REFERENCES "ANNEE" ("ID") ON DELETE CASCADE ENABLE; + +-- TBL_SERVICE_ELEMENT_FK +ALTER TABLE "TBL_SERVICE" ADD CONSTRAINT "TBL_SERVICE_ELEMENT_FK" FOREIGN KEY ("ELEMENT_PEDAGOGIQUE_ID") + REFERENCES "ELEMENT_PEDAGOGIQUE" ("ID") ON DELETE CASCADE ENABLE; + +-- TBL_SERVICE_ETAPE_FK +ALTER TABLE "TBL_SERVICE" ADD CONSTRAINT "TBL_SERVICE_ETAPE_FK" FOREIGN KEY ("ETAPE_ID") + REFERENCES "ETAPE" ("ID") ON DELETE CASCADE ENABLE; + +-- TBL_SERVICE_INTERVENANT_FK +ALTER TABLE "TBL_SERVICE" ADD CONSTRAINT "TBL_SERVICE_INTERVENANT_FK" FOREIGN KEY ("INTERVENANT_ID") + REFERENCES "INTERVENANT" ("ID") ON DELETE CASCADE ENABLE; + +-- TBL_SERVICE_PERIODE_EP_FK +ALTER TABLE "TBL_SERVICE" ADD CONSTRAINT "TBL_SERVICE_PERIODE_EP_FK" FOREIGN KEY ("ELEMENT_PEDAGOGIQUE_PERIODE_ID") + REFERENCES "PERIODE" ("ID") ON DELETE CASCADE ENABLE; + +-- TBL_SERVICE_REF_ANNEE_FK +ALTER TABLE "TBL_SERVICE_REFERENTIEL" ADD CONSTRAINT "TBL_SERVICE_REF_ANNEE_FK" FOREIGN KEY ("ANNEE_ID") + REFERENCES "ANNEE" ("ID") ON DELETE CASCADE ENABLE; + +-- TBL_SERVICE_REF_INTERVENANT_FK +ALTER TABLE "TBL_SERVICE_REFERENTIEL" ADD CONSTRAINT "TBL_SERVICE_REF_INTERVENANT_FK" FOREIGN KEY ("INTERVENANT_ID") + REFERENCES "INTERVENANT" ("ID") ON DELETE CASCADE ENABLE; + +-- TBL_SERVICE_REF_STRUCTURE_FK +ALTER TABLE "TBL_SERVICE_REFERENTIEL" ADD CONSTRAINT "TBL_SERVICE_REF_STRUCTURE_FK" FOREIGN KEY ("STRUCTURE_ID") + REFERENCES "STRUCTURE" ("ID") ON DELETE CASCADE ENABLE; + +-- TBL_SERVICE_REF_TVH_FK +ALTER TABLE "TBL_SERVICE_REFERENTIEL" ADD CONSTRAINT "TBL_SERVICE_REF_TVH_FK" FOREIGN KEY ("TYPE_VOLUME_HORAIRE_ID") + REFERENCES "TYPE_VOLUME_HORAIRE" ("ID") ON DELETE CASCADE ENABLE; + +-- TBL_SERVICE_SAISIE_ANNEE_FK +ALTER TABLE "TBL_SERVICE_SAISIE" ADD CONSTRAINT "TBL_SERVICE_SAISIE_ANNEE_FK" FOREIGN KEY ("ANNEE_ID") + REFERENCES "ANNEE" ("ID") ON DELETE CASCADE ENABLE; + +-- TBL_SERVICE_SERVICE_FK +ALTER TABLE "TBL_SERVICE" ADD CONSTRAINT "TBL_SERVICE_SERVICE_FK" FOREIGN KEY ("SERVICE_ID") + REFERENCES "SERVICE" ("ID") ON DELETE CASCADE ENABLE; + +-- TBL_SERVICE_STRUCTURE_FK +ALTER TABLE "TBL_SERVICE" ADD CONSTRAINT "TBL_SERVICE_STRUCTURE_FK" FOREIGN KEY ("STRUCTURE_ID") + REFERENCES "STRUCTURE" ("ID") ON DELETE CASCADE ENABLE; + +-- TBL_SERVICE_STRUCTURE_FKV1 +ALTER TABLE "TBL_SERVICE" ADD CONSTRAINT "TBL_SERVICE_STRUCTURE_FKV1" FOREIGN KEY ("INTERVENANT_STRUCTURE_ID") + REFERENCES "STRUCTURE" ("ID") ON DELETE CASCADE ENABLE; + +-- TBL_SERVICE_TINTERVENANT_FK +ALTER TABLE "TBL_SERVICE" ADD CONSTRAINT "TBL_SERVICE_TINTERVENANT_FK" FOREIGN KEY ("TYPE_INTERVENANT_ID") + REFERENCES "TYPE_INTERVENANT" ("ID") ON DELETE CASCADE ENABLE; + +-- TBL_SERVICE_TVH_FK +ALTER TABLE "TBL_SERVICE" ADD CONSTRAINT "TBL_SERVICE_TVH_FK" FOREIGN KEY ("TYPE_VOLUME_HORAIRE_ID") + REFERENCES "TYPE_VOLUME_HORAIRE" ("ID") ON DELETE CASCADE ENABLE; + +-- TBL_SRV_SAISIE_INTERVENANT_FK +ALTER TABLE "TBL_SERVICE_SAISIE" ADD CONSTRAINT "TBL_SRV_SAISIE_INTERVENANT_FK" FOREIGN KEY ("INTERVENANT_ID") + REFERENCES "INTERVENANT" ("ID") ON DELETE CASCADE ENABLE; + +-- TBL_WORKFLOW_ANNEE_FK +ALTER TABLE "TBL_WORKFLOW" ADD CONSTRAINT "TBL_WORKFLOW_ANNEE_FK" FOREIGN KEY ("ANNEE_ID") + REFERENCES "ANNEE" ("ID") ON DELETE CASCADE ENABLE; + +-- TBL_WORKFLOW_EFK +ALTER TABLE "TBL_WORKFLOW" ADD CONSTRAINT "TBL_WORKFLOW_EFK" FOREIGN KEY ("ETAPE_ID") + REFERENCES "WF_ETAPE" ("ID") ON DELETE CASCADE ENABLE; + +-- TBL_WORKFLOW_IFK +ALTER TABLE "TBL_WORKFLOW" ADD CONSTRAINT "TBL_WORKFLOW_IFK" FOREIGN KEY ("INTERVENANT_ID") + REFERENCES "INTERVENANT" ("ID") ON DELETE CASCADE ENABLE; + +-- TBL_WORKFLOW_SFK +ALTER TABLE "TBL_WORKFLOW" ADD CONSTRAINT "TBL_WORKFLOW_SFK" FOREIGN KEY ("STRUCTURE_ID") + REFERENCES "STRUCTURE" ("ID") ON DELETE CASCADE ENABLE; + +-- TBL_WORKFLOW_STATUT_FK +ALTER TABLE "TBL_WORKFLOW" ADD CONSTRAINT "TBL_WORKFLOW_STATUT_FK" FOREIGN KEY ("STATUT_INTERVENANT_ID") + REFERENCES "STATUT_INTERVENANT" ("ID") ON DELETE CASCADE ENABLE; + +-- TBL_WORKFLOW_TINTERVENANT_FK +ALTER TABLE "TBL_WORKFLOW" ADD CONSTRAINT "TBL_WORKFLOW_TINTERVENANT_FK" FOREIGN KEY ("TYPE_INTERVENANT_ID") + REFERENCES "TYPE_INTERVENANT" ("ID") ON DELETE CASCADE ENABLE; + +-- TD_TYPE_RESSOURCE_FK +ALTER TABLE "TYPE_DOTATION" ADD CONSTRAINT "TD_TYPE_RESSOURCE_FK" FOREIGN KEY ("TYPE_RESSOURCE_ID") + REFERENCES "TYPE_RESSOURCE" ("ID") ENABLE; + +-- TIEP_ELEMENT_PEDAGOGIQUE_FK +ALTER TABLE "TYPE_INTERVENTION_EP" ADD CONSTRAINT "TIEP_ELEMENT_PEDAGOGIQUE_FK" FOREIGN KEY ("ELEMENT_PEDAGOGIQUE_ID") + REFERENCES "ELEMENT_PEDAGOGIQUE" ("ID") ON DELETE CASCADE ENABLE; + +-- TIEP_TYPE_INTERVENTION_FK +ALTER TABLE "TYPE_INTERVENTION_EP" ADD CONSTRAINT "TIEP_TYPE_INTERVENTION_FK" FOREIGN KEY ("TYPE_INTERVENTION_ID") + REFERENCES "TYPE_INTERVENTION" ("ID") ON DELETE CASCADE ENABLE; + +-- TIS_ANNEE_DEBUT_FK +ALTER TABLE "TYPE_INTERVENTION_STRUCTURE" ADD CONSTRAINT "TIS_ANNEE_DEBUT_FK" FOREIGN KEY ("ANNEE_DEBUT_ID") + REFERENCES "ANNEE" ("ID") ENABLE; + +-- TIS_ANNEE_FIN_FK +ALTER TABLE "TYPE_INTERVENTION_STRUCTURE" ADD CONSTRAINT "TIS_ANNEE_FIN_FK" FOREIGN KEY ("ANNEE_FIN_ID") + REFERENCES "ANNEE" ("ID") ENABLE; + +-- TIS_STRUCTURE_FK +ALTER TABLE "TYPE_INTERVENTION_STRUCTURE" ADD CONSTRAINT "TIS_STRUCTURE_FK" FOREIGN KEY ("STRUCTURE_ID") + REFERENCES "STRUCTURE" ("ID") ON DELETE CASCADE ENABLE; + +-- TIS_TYPE_INTERVENTION_FK +ALTER TABLE "TYPE_INTERVENTION_STRUCTURE" ADD CONSTRAINT "TIS_TYPE_INTERVENTION_FK" FOREIGN KEY ("TYPE_INTERVENTION_ID") + REFERENCES "TYPE_INTERVENTION" ("ID") ON DELETE CASCADE ENABLE; + +-- TI_TYPE_INTERVENTION_FK +ALTER TABLE "TYPE_INTERVENTION" ADD CONSTRAINT "TI_TYPE_INTERVENTION_FK" FOREIGN KEY ("TYPE_INTERVENTION_MAQUETTE_ID") + REFERENCES "TYPE_INTERVENTION" ("ID") ENABLE; + +-- TME_ELEMENT_PEDAGOGIQUE_FK +ALTER TABLE "TYPE_MODULATEUR_EP" ADD CONSTRAINT "TME_ELEMENT_PEDAGOGIQUE_FK" FOREIGN KEY ("ELEMENT_PEDAGOGIQUE_ID") + REFERENCES "ELEMENT_PEDAGOGIQUE" ("ID") ON DELETE CASCADE ENABLE; + +-- TME_SOURCE_FK +ALTER TABLE "TYPE_MODULATEUR_EP" ADD CONSTRAINT "TME_SOURCE_FK" FOREIGN KEY ("SOURCE_ID") + REFERENCES "SOURCE" ("ID") ON DELETE CASCADE ENABLE; + +-- TME_TYPE_MODULATEUR_FK +ALTER TABLE "TYPE_MODULATEUR_EP" ADD CONSTRAINT "TME_TYPE_MODULATEUR_FK" FOREIGN KEY ("TYPE_MODULATEUR_ID") + REFERENCES "TYPE_MODULATEUR" ("ID") ON DELETE CASCADE ENABLE; + +-- TMS_ANNEE_DEBUT_FK +ALTER TABLE "TYPE_MODULATEUR_STRUCTURE" ADD CONSTRAINT "TMS_ANNEE_DEBUT_FK" FOREIGN KEY ("ANNEE_DEBUT_ID") + REFERENCES "ANNEE" ("ID") ENABLE; + +-- TMS_ANNEE_FIN_FK +ALTER TABLE "TYPE_MODULATEUR_STRUCTURE" ADD CONSTRAINT "TMS_ANNEE_FIN_FK" FOREIGN KEY ("ANNEE_FIN_ID") + REFERENCES "ANNEE" ("ID") ENABLE; + +-- TMS_STRUCTURE_FK +ALTER TABLE "TYPE_MODULATEUR_STRUCTURE" ADD CONSTRAINT "TMS_STRUCTURE_FK" FOREIGN KEY ("STRUCTURE_ID") + REFERENCES "STRUCTURE" ("ID") ENABLE; + +-- TMS_TYPE_MODUL_FK +ALTER TABLE "TYPE_MODULATEUR_STRUCTURE" ADD CONSTRAINT "TMS_TYPE_MODUL_FK" FOREIGN KEY ("TYPE_MODULATEUR_ID") + REFERENCES "TYPE_MODULATEUR" ("ID") ON DELETE CASCADE ENABLE; + +-- TPJS_ANNEE_DEB_FK +ALTER TABLE "TYPE_PIECE_JOINTE_STATUT" ADD CONSTRAINT "TPJS_ANNEE_DEB_FK" FOREIGN KEY ("ANNEE_DEBUT_ID") + REFERENCES "ANNEE" ("ID") ON DELETE CASCADE ENABLE; + +-- TPJS_ANNEE_FIN_FK +ALTER TABLE "TYPE_PIECE_JOINTE_STATUT" ADD CONSTRAINT "TPJS_ANNEE_FIN_FK" FOREIGN KEY ("ANNEE_FIN_ID") + REFERENCES "ANNEE" ("ID") ON DELETE CASCADE ENABLE; + +-- TPJS_STATUT_INTERVENANT_FK +ALTER TABLE "TYPE_PIECE_JOINTE_STATUT" ADD CONSTRAINT "TPJS_STATUT_INTERVENANT_FK" FOREIGN KEY ("STATUT_INTERVENANT_ID") + REFERENCES "STATUT_INTERVENANT" ("ID") ON DELETE CASCADE ENABLE; + +-- TPJS_TYPE_PIECE_JOINTE_FK +ALTER TABLE "TYPE_PIECE_JOINTE_STATUT" ADD CONSTRAINT "TPJS_TYPE_PIECE_JOINTE_FK" FOREIGN KEY ("TYPE_PIECE_JOINTE_ID") + REFERENCES "TYPE_PIECE_JOINTE" ("ID") ON DELETE CASCADE ENABLE; + +-- TVE_ANNEE_FK +ALTER TABLE "TBL_VALIDATION_ENSEIGNEMENT" ADD CONSTRAINT "TVE_ANNEE_FK" FOREIGN KEY ("ANNEE_ID") + REFERENCES "ANNEE" ("ID") ON DELETE CASCADE ENABLE; + +-- TVE_INTERVENANT_FK +ALTER TABLE "TBL_VALIDATION_ENSEIGNEMENT" ADD CONSTRAINT "TVE_INTERVENANT_FK" FOREIGN KEY ("INTERVENANT_ID") + REFERENCES "INTERVENANT" ("ID") ON DELETE CASCADE ENABLE; + +-- TVE_SERVICE_FK +ALTER TABLE "TBL_VALIDATION_ENSEIGNEMENT" ADD CONSTRAINT "TVE_SERVICE_FK" FOREIGN KEY ("SERVICE_ID") + REFERENCES "SERVICE" ("ID") ON DELETE CASCADE ENABLE; + +-- TVE_STRUCTURE_FK +ALTER TABLE "TBL_VALIDATION_ENSEIGNEMENT" ADD CONSTRAINT "TVE_STRUCTURE_FK" FOREIGN KEY ("STRUCTURE_ID") + REFERENCES "STRUCTURE" ("ID") ON DELETE CASCADE ENABLE; + +-- TVE_TYPE_VOLUME_HORAIRE_FK +ALTER TABLE "TBL_VALIDATION_ENSEIGNEMENT" ADD CONSTRAINT "TVE_TYPE_VOLUME_HORAIRE_FK" FOREIGN KEY ("TYPE_VOLUME_HORAIRE_ID") + REFERENCES "TYPE_VOLUME_HORAIRE" ("ID") ON DELETE CASCADE ENABLE; + +-- TVE_VALIDATION_FK +ALTER TABLE "TBL_VALIDATION_ENSEIGNEMENT" ADD CONSTRAINT "TVE_VALIDATION_FK" FOREIGN KEY ("VALIDATION_ID") + REFERENCES "VALIDATION" ("ID") ON DELETE CASCADE ENABLE; + +-- TVE_VOLUME_HORAIRE_FK +ALTER TABLE "TBL_VALIDATION_ENSEIGNEMENT" ADD CONSTRAINT "TVE_VOLUME_HORAIRE_FK" FOREIGN KEY ("VOLUME_HORAIRE_ID") + REFERENCES "VOLUME_HORAIRE" ("ID") ON DELETE CASCADE ENABLE; + +-- TVR_ANNEE_FK +ALTER TABLE "TBL_VALIDATION_REFERENTIEL" ADD CONSTRAINT "TVR_ANNEE_FK" FOREIGN KEY ("ANNEE_ID") + REFERENCES "ANNEE" ("ID") ON DELETE CASCADE ENABLE; + +-- TVR_INTERVENANT_FK +ALTER TABLE "TBL_VALIDATION_REFERENTIEL" ADD CONSTRAINT "TVR_INTERVENANT_FK" FOREIGN KEY ("INTERVENANT_ID") + REFERENCES "INTERVENANT" ("ID") ON DELETE CASCADE ENABLE; + +-- TVR_SERVICE_REFERENTIEL_FK +ALTER TABLE "TBL_VALIDATION_REFERENTIEL" ADD CONSTRAINT "TVR_SERVICE_REFERENTIEL_FK" FOREIGN KEY ("SERVICE_REFERENTIEL_ID") + REFERENCES "SERVICE_REFERENTIEL" ("ID") ON DELETE CASCADE ENABLE; + +-- TVR_STRUCTURE_FK +ALTER TABLE "TBL_VALIDATION_REFERENTIEL" ADD CONSTRAINT "TVR_STRUCTURE_FK" FOREIGN KEY ("STRUCTURE_ID") + REFERENCES "STRUCTURE" ("ID") ON DELETE CASCADE ENABLE; + +-- TVR_TYPE_VOLUME_HORAIRE_FK +ALTER TABLE "TBL_VALIDATION_REFERENTIEL" ADD CONSTRAINT "TVR_TYPE_VOLUME_HORAIRE_FK" FOREIGN KEY ("TYPE_VOLUME_HORAIRE_ID") + REFERENCES "TYPE_VOLUME_HORAIRE" ("ID") ON DELETE CASCADE ENABLE; + +-- TVR_VALIDATION_FK +ALTER TABLE "TBL_VALIDATION_REFERENTIEL" ADD CONSTRAINT "TVR_VALIDATION_FK" FOREIGN KEY ("VALIDATION_ID") + REFERENCES "VALIDATION" ("ID") ON DELETE CASCADE ENABLE; + +-- TVR_VOLUME_HORAIRE_REF_FK +ALTER TABLE "TBL_VALIDATION_REFERENTIEL" ADD CONSTRAINT "TVR_VOLUME_HORAIRE_REF_FK" FOREIGN KEY ("VOLUME_HORAIRE_REF_ID") + REFERENCES "VOLUME_HORAIRE_REF" ("ID") ON DELETE CASCADE ENABLE; + +-- TYPE_AGREMENT_HCFK +ALTER TABLE "TYPE_AGREMENT" ADD CONSTRAINT "TYPE_AGREMENT_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- TYPE_AGREMENT_HDFK +ALTER TABLE "TYPE_AGREMENT" ADD CONSTRAINT "TYPE_AGREMENT_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- TYPE_AGREMENT_HMFK +ALTER TABLE "TYPE_AGREMENT" ADD CONSTRAINT "TYPE_AGREMENT_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- TYPE_AGREMENT_STATUT_HCFK +ALTER TABLE "TYPE_AGREMENT_STATUT" ADD CONSTRAINT "TYPE_AGREMENT_STATUT_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- TYPE_AGREMENT_STATUT_HDFK +ALTER TABLE "TYPE_AGREMENT_STATUT" ADD CONSTRAINT "TYPE_AGREMENT_STATUT_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- TYPE_AGREMENT_STATUT_HMFK +ALTER TABLE "TYPE_AGREMENT_STATUT" ADD CONSTRAINT "TYPE_AGREMENT_STATUT_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- TYPE_CONTRAT_HCFK +ALTER TABLE "TYPE_CONTRAT" ADD CONSTRAINT "TYPE_CONTRAT_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- TYPE_CONTRAT_HDFK +ALTER TABLE "TYPE_CONTRAT" ADD CONSTRAINT "TYPE_CONTRAT_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- TYPE_CONTRAT_HMFK +ALTER TABLE "TYPE_CONTRAT" ADD CONSTRAINT "TYPE_CONTRAT_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- TYPE_DOTATION_HCFK +ALTER TABLE "TYPE_DOTATION" ADD CONSTRAINT "TYPE_DOTATION_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- TYPE_DOTATION_HDFK +ALTER TABLE "TYPE_DOTATION" ADD CONSTRAINT "TYPE_DOTATION_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- TYPE_DOTATION_HMFK +ALTER TABLE "TYPE_DOTATION" ADD CONSTRAINT "TYPE_DOTATION_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- TYPE_DOTATION_SOURCE_FK +ALTER TABLE "TYPE_DOTATION" ADD CONSTRAINT "TYPE_DOTATION_SOURCE_FK" FOREIGN KEY ("SOURCE_ID") + REFERENCES "SOURCE" ("ID") ON DELETE CASCADE ENABLE; + +-- TYPE_FORMATION_GROUPE_FK +ALTER TABLE "TYPE_FORMATION" ADD CONSTRAINT "TYPE_FORMATION_GROUPE_FK" FOREIGN KEY ("GROUPE_ID") + REFERENCES "GROUPE_TYPE_FORMATION" ("ID") ENABLE; + +-- TYPE_FORMATION_HCFK +ALTER TABLE "TYPE_FORMATION" ADD CONSTRAINT "TYPE_FORMATION_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- TYPE_FORMATION_HDFK +ALTER TABLE "TYPE_FORMATION" ADD CONSTRAINT "TYPE_FORMATION_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- TYPE_FORMATION_HMFK +ALTER TABLE "TYPE_FORMATION" ADD CONSTRAINT "TYPE_FORMATION_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- TYPE_FORMATION_SOURCE_FK +ALTER TABLE "TYPE_FORMATION" ADD CONSTRAINT "TYPE_FORMATION_SOURCE_FK" FOREIGN KEY ("SOURCE_ID") + REFERENCES "SOURCE" ("ID") ENABLE; + +-- TYPE_HEURES_HCFK +ALTER TABLE "TYPE_HEURES" ADD CONSTRAINT "TYPE_HEURES_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- TYPE_HEURES_HDFK +ALTER TABLE "TYPE_HEURES" ADD CONSTRAINT "TYPE_HEURES_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- TYPE_HEURES_HMFK +ALTER TABLE "TYPE_HEURES" ADD CONSTRAINT "TYPE_HEURES_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- TYPE_HEURES_TYPE_HEURES_FK +ALTER TABLE "TYPE_HEURES" ADD CONSTRAINT "TYPE_HEURES_TYPE_HEURES_FK" FOREIGN KEY ("TYPE_HEURES_ELEMENT_ID") + REFERENCES "TYPE_HEURES" ("ID") ON DELETE CASCADE ENABLE; + +-- TYPE_INTERVENANT_HCFK +ALTER TABLE "TYPE_INTERVENANT" ADD CONSTRAINT "TYPE_INTERVENANT_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- TYPE_INTERVENANT_HDFK +ALTER TABLE "TYPE_INTERVENANT" ADD CONSTRAINT "TYPE_INTERVENANT_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- TYPE_INTERVENANT_HMFK +ALTER TABLE "TYPE_INTERVENANT" ADD CONSTRAINT "TYPE_INTERVENANT_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- TYPE_INTERVENTION_ANNEE_FK +ALTER TABLE "TYPE_INTERVENTION" ADD CONSTRAINT "TYPE_INTERVENTION_ANNEE_FK" FOREIGN KEY ("ANNEE_DEBUT_ID") + REFERENCES "ANNEE" ("ID") ENABLE; + +-- TYPE_INTERVENTION_ANNEE_FKV1 +ALTER TABLE "TYPE_INTERVENTION" ADD CONSTRAINT "TYPE_INTERVENTION_ANNEE_FKV1" FOREIGN KEY ("ANNEE_FIN_ID") + REFERENCES "ANNEE" ("ID") ENABLE; + +-- TYPE_INTERVENTION_EP_HCFK +ALTER TABLE "TYPE_INTERVENTION_EP" ADD CONSTRAINT "TYPE_INTERVENTION_EP_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- TYPE_INTERVENTION_EP_HDFK +ALTER TABLE "TYPE_INTERVENTION_EP" ADD CONSTRAINT "TYPE_INTERVENTION_EP_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- TYPE_INTERVENTION_EP_HMFK +ALTER TABLE "TYPE_INTERVENTION_EP" ADD CONSTRAINT "TYPE_INTERVENTION_EP_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- TYPE_INTERVENTION_EP_SOURCE_FK +ALTER TABLE "TYPE_INTERVENTION_EP" ADD CONSTRAINT "TYPE_INTERVENTION_EP_SOURCE_FK" FOREIGN KEY ("SOURCE_ID") + REFERENCES "SOURCE" ("ID") ON DELETE CASCADE ENABLE; + +-- TYPE_INTERVENTION_HCFK +ALTER TABLE "TYPE_INTERVENTION" ADD CONSTRAINT "TYPE_INTERVENTION_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; - UNION ALL +-- TYPE_INTERVENTION_HDFK +ALTER TABLE "TYPE_INTERVENTION" ADD CONSTRAINT "TYPE_INTERVENTION_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; - SELECT - i.annee_id, - 'mise-en-paiement' etat, - 91 ordre, - th.id type_heures_id, - th.code type_heures, - COALESCE( sr.structure_id, ep.structure_id, i.structure_id ) structure_id, - i.id intervenant_id, - mep.heures hetd - FROM - mise_en_paiement mep - JOIN type_heures th ON th.id = mep.type_heures_id - JOIN centre_cout cc ON cc.id = mep.centre_cout_id - LEFT JOIN formule_resultat_service frs ON frs.id = mep.formule_res_service_id - LEFT JOIN formule_resultat_service_ref frsr ON frsr.id = mep.formule_res_service_ref_id - LEFT JOIN formule_resultat fr ON fr.id = COALESCE(frs.formule_resultat_id, frsr.formule_resultat_id) - LEFT JOIN service s ON s.id = frs.service_id - LEFT JOIN element_pedagogique ep ON ep.id = s.element_pedagogique_id - LEFT JOIN service_referentiel sr ON sr.id = frsr.service_referentiel_id - LEFT JOIN intervenant i ON i.id = fr.intervenant_id - WHERE - mep.histo_destruction IS NULL - AND th.eligible_extraction_paie = 1 - AND mep.PERIODE_PAIEMENT_ID IS NOT NULL - ) t1 - GROUP BY - annee_id, etat, ordre, type_heures_id, type_heures, structure_id, intervenant_id -) t2 -GROUP BY - annee_id, - etat, ordre - ,type_heures_id, type_heures - ,structure_id - ,intervenant_id -ORDER BY - annee_id, ordre - -) t3 - JOIN intervenant i ON i.id = t3.intervenant_id - JOIN statut_intervenant si ON si.id = i.statut_id - JOIN type_intervenant ti ON ti.id = si.type_intervenant_id - JOIN structure s ON s.id = t3.structure_id; +-- TYPE_INTERVENTION_HMFK +ALTER TABLE "TYPE_INTERVENTION" ADD CONSTRAINT "TYPE_INTERVENTION_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; --- V_EXPORT_SERVICE -CREATE OR REPLACE FORCE VIEW "V_EXPORT_SERVICE" ("ID", "SERVICE_ID", "INTERVENANT_ID", "TYPE_INTERVENANT_ID", "ANNEE_ID", "SERVICE_DATE_MODIFICATION", "TYPE_VOLUME_HORAIRE_ID", "ETAT_VOLUME_HORAIRE_ID", "ETABLISSEMENT_ID", "STRUCTURE_AFF_ID", "STRUCTURE_ENS_ID", "NIVEAU_FORMATION_ID", "ETAPE_ID", "ELEMENT_PEDAGOGIQUE_ID", "PERIODE_ID", "TYPE_INTERVENTION_ID", "FONCTION_REFERENTIEL_ID", "TYPE_ETAT", "INTERVENANT_CODE", "INTERVENANT_NOM", "INTERVENANT_DATE_NAISSANCE", "INTERVENANT_STATUT_LIBELLE", "INTERVENANT_TYPE_CODE", "INTERVENANT_TYPE_LIBELLE", "INTERVENANT_GRADE_CODE", "INTERVENANT_GRADE_LIBELLE", "INTERVENANT_DISCIPLINE_CODE", "INTERVENANT_DISCIPLINE_LIBELLE", "SERVICE_STRUCTURE_AFF_LIBELLE", "SERVICE_STRUCTURE_ENS_LIBELLE", "ETABLISSEMENT_LIBELLE", "GROUPE_TYPE_FORMATION_LIBELLE", "TYPE_FORMATION_LIBELLE", "ETAPE_NIVEAU", "ETAPE_CODE", "ETAPE_LIBELLE", "ELEMENT_CODE", "ELEMENT_LIBELLE", "ELEMENT_DISCIPLINE_CODE", "ELEMENT_DISCIPLINE_LIBELLE", "FONCTION_REFERENTIEL_LIBELLE", "ELEMENT_TAUX_FI", "ELEMENT_TAUX_FC", "ELEMENT_TAUX_FA", "SERVICE_REF_FORMATION", "COMMENTAIRES", "PERIODE_LIBELLE", "ELEMENT_PONDERATION_COMPL", "ELEMENT_SOURCE_LIBELLE", "HEURES", "HEURES_REF", "HEURES_NON_PAYEES", "SERVICE_STATUTAIRE", "SERVICE_DU_MODIFIE", "SERVICE_FI", "SERVICE_FA", "SERVICE_FC", "SERVICE_REFERENTIEL", "HEURES_COMPL_FI", "HEURES_COMPL_FA", "HEURES_COMPL_FC", "HEURES_COMPL_FC_MAJOREES", "HEURES_COMPL_REFERENTIEL", "TOTAL", "SOLDE", "DATE_CLOTURE_REALISE") AS - WITH t AS ( SELECT - 'vh_' || vh.id id, - s.id service_id, - s.intervenant_id intervenant_id, - vh.type_volume_horaire_id type_volume_horaire_id, - fr.etat_volume_horaire_id etat_volume_horaire_id, - s.element_pedagogique_id element_pedagogique_id, - s.etablissement_id etablissement_id, - NULL structure_aff_id, - NULL structure_ens_id, - vh.periode_id periode_id, - vh.type_intervention_id type_intervention_id, - NULL fonction_referentiel_id, +-- TYPE_INTERVENTION_STRUCTU_HCFK +ALTER TABLE "TYPE_INTERVENTION_STRUCTURE" ADD CONSTRAINT "TYPE_INTERVENTION_STRUCTU_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; - s.description service_description, +-- TYPE_INTERVENTION_STRUCTU_HDFK +ALTER TABLE "TYPE_INTERVENTION_STRUCTURE" ADD CONSTRAINT "TYPE_INTERVENTION_STRUCTU_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; - vh.heures heures, - 0 heures_ref, - 0 heures_non_payees, - frvh.service_fi service_fi, - frvh.service_fa service_fa, - frvh.service_fc service_fc, - 0 service_referentiel, - frvh.heures_compl_fi heures_compl_fi, - frvh.heures_compl_fa heures_compl_fa, - frvh.heures_compl_fc heures_compl_fc, - frvh.heures_compl_fc_majorees heures_compl_fc_majorees, - 0 heures_compl_referentiel, - frvh.total total, - fr.solde solde, - NULL service_ref_formation, - NULL commentaires -FROM - formule_resultat_vh frvh - JOIN formule_resultat fr ON fr.id = frvh.formule_resultat_id - JOIN volume_horaire vh ON vh.id = frvh.volume_horaire_id AND vh.motif_non_paiement_id IS NULL AND vh.histo_destruction IS NULL - JOIN service s ON s.id = vh.service_id AND s.intervenant_id = fr.intervenant_id AND s.histo_destruction IS NULL +-- TYPE_INTERVENTION_STRUCTU_HMFK +ALTER TABLE "TYPE_INTERVENTION_STRUCTURE" ADD CONSTRAINT "TYPE_INTERVENTION_STRUCTU_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; -UNION ALL +-- TYPE_MODULATEUR_EP_HCFK +ALTER TABLE "TYPE_MODULATEUR_EP" ADD CONSTRAINT "TYPE_MODULATEUR_EP_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; -SELECT - 'vh_' || vh.id id, - s.id service_id, - s.intervenant_id intervenant_id, - vh.type_volume_horaire_id type_volume_horaire_id, - vhe.etat_volume_horaire_id etat_volume_horaire_id, - s.element_pedagogique_id element_pedagogique_id, - s.etablissement_id etablissement_id, - NULL structure_aff_id, - NULL structure_ens_id, - vh.periode_id periode_id, - vh.type_intervention_id type_intervention_id, - NULL fonction_referentiel_id, +-- TYPE_MODULATEUR_EP_HDFK +ALTER TABLE "TYPE_MODULATEUR_EP" ADD CONSTRAINT "TYPE_MODULATEUR_EP_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; - s.description service_description, +-- TYPE_MODULATEUR_EP_HMFK +ALTER TABLE "TYPE_MODULATEUR_EP" ADD CONSTRAINT "TYPE_MODULATEUR_EP_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; - vh.heures heures, - 0 heures_ref, - 1 heures_non_payees, - 0 service_fi, - 0 service_fa, - 0 service_fc, - 0 service_referentiel, - 0 heures_compl_fi, - 0 heures_compl_fa, - 0 heures_compl_fc, - 0 heures_compl_fc_majorees, - 0 heures_compl_referentiel, - 0 total, - fr.solde solde, - NULL service_ref_formation, - NULL commentaires -FROM - volume_horaire vh - JOIN service s ON s.id = vh.service_id - JOIN v_volume_horaire_etat vhe ON vhe.volume_horaire_id = vh.id - JOIN formule_resultat fr ON fr.intervenant_id = s.intervenant_id AND fr.type_volume_horaire_id = vh.type_volume_horaire_id AND fr.etat_volume_horaire_id = vhe.etat_volume_horaire_id -WHERE - vh.motif_non_paiement_id IS NOT NULL - AND vh.histo_destruction IS NULL - AND s.histo_destruction IS NULL +-- TYPE_MODULATEUR_HCFK +ALTER TABLE "TYPE_MODULATEUR" ADD CONSTRAINT "TYPE_MODULATEUR_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; -UNION ALL +-- TYPE_MODULATEUR_HDFK +ALTER TABLE "TYPE_MODULATEUR" ADD CONSTRAINT "TYPE_MODULATEUR_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; -SELECT - 'vh_ref_' || vhr.id id, - sr.id service_id, - sr.intervenant_id intervenant_id, - fr.type_volume_horaire_id type_volume_horaire_id, - fr.etat_volume_horaire_id etat_volume_horaire_id, - NULL element_pedagogique_id, - OSE_PARAMETRE.GET_ETABLISSEMENT etablissement_id, - NULL structure_aff_id, - sr.structure_id structure_ens_id, - NULL periode_id, - NULL type_intervention_id, - sr.fonction_id fonction_referentiel_id, - - NULL service_description, - - 0 heures, - vhr.heures heures_ref, - 0 heures_non_payees, - 0 service_fi, - 0 service_fa, - 0 service_fc, - frvr.service_referentiel service_referentiel, - 0 heures_compl_fi, - 0 heures_compl_fa, - 0 heures_compl_fc, - 0 heures_compl_fc_majorees, - frvr.heures_compl_referentiel heures_compl_referentiel, - frvr.total total, - fr.solde solde, - sr.formation service_ref_formation, - sr.commentaires commentaires -FROM - formule_resultat_vh_ref frvr - JOIN formule_resultat fr ON fr.id = frvr.formule_resultat_id - JOIN volume_horaire_ref vhr ON vhr.id = frvr.volume_horaire_ref_id - JOIN service_referentiel sr ON sr.id = vhr.service_referentiel_id AND sr.intervenant_id = fr.intervenant_id AND sr.histo_destruction IS NULL - -UNION ALL +-- TYPE_MODULATEUR_HMFK +ALTER TABLE "TYPE_MODULATEUR" ADD CONSTRAINT "TYPE_MODULATEUR_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; -SELECT - 'vh_0_' || i.id id, - NULL service_id, - i.id intervenant_id, - tvh.id type_volume_horaire_id, - evh.id etat_volume_horaire_id, - NULL element_pedagogique_id, - OSE_PARAMETRE.GET_ETABLISSEMENT etablissement_id, - NULL structure_aff_id, - NULL structure_ens_id, - NULL periode_id, - NULL type_intervention_id, - NULL fonction_referentiel_id, - - NULL service_description, - - 0 heures, - 0 heures_ref, - 0 heures_non_payees, - 0 service_fi, - 0 service_fa, - 0 service_fc, - 0 service_referentiel, - 0 heures_compl_fi, - 0 heures_compl_fa, - 0 heures_compl_fc, - 0 heures_compl_fc_majorees, - NULL heures_compl_referentiel, - 0 total, - 0 solde, - NULL service_ref_formation, - NULL commentaires -FROM - intervenant i - JOIN statut_intervenant si ON si.id = i.statut_id - JOIN etat_volume_horaire evh ON evh.code IN ('saisi','valide') - JOIN type_volume_horaire tvh ON tvh.code IN ('PREVU','REALISE') - LEFT JOIN modification_service_du msd ON msd.intervenant_id = i.id AND msd.histo_destruction IS NULL - LEFT JOIN motif_modification_service mms ON mms.id = msd.motif_id -WHERE - i.histo_destruction IS NULL - AND si.service_statutaire > 0 -GROUP BY - i.id, si.service_statutaire, evh.id, tvh.id -HAVING - si.service_statutaire + SUM(msd.heures * mms.multiplicateur) = 0 +-- TYPE_MODULATEUR_STRUCTURE_HCFK +ALTER TABLE "TYPE_MODULATEUR_STRUCTURE" ADD CONSTRAINT "TYPE_MODULATEUR_STRUCTURE_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- TYPE_MODULATEUR_STRUCTURE_HDFK +ALTER TABLE "TYPE_MODULATEUR_STRUCTURE" ADD CONSTRAINT "TYPE_MODULATEUR_STRUCTURE_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- TYPE_MODULATEUR_STRUCTURE_HMFK +ALTER TABLE "TYPE_MODULATEUR_STRUCTURE" ADD CONSTRAINT "TYPE_MODULATEUR_STRUCTURE_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- TYPE_PIECE_JOINTE_HCFK +ALTER TABLE "TYPE_PIECE_JOINTE" ADD CONSTRAINT "TYPE_PIECE_JOINTE_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- TYPE_PIECE_JOINTE_HDFK +ALTER TABLE "TYPE_PIECE_JOINTE" ADD CONSTRAINT "TYPE_PIECE_JOINTE_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- TYPE_PIECE_JOINTE_HMFK +ALTER TABLE "TYPE_PIECE_JOINTE" ADD CONSTRAINT "TYPE_PIECE_JOINTE_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- TYPE_PIECE_JOINTE_STATUT_HCFK +ALTER TABLE "TYPE_PIECE_JOINTE_STATUT" ADD CONSTRAINT "TYPE_PIECE_JOINTE_STATUT_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; +-- TYPE_PIECE_JOINTE_STATUT_HDFK +ALTER TABLE "TYPE_PIECE_JOINTE_STATUT" ADD CONSTRAINT "TYPE_PIECE_JOINTE_STATUT_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; -) -SELECT - t.id id, - t.service_id service_id, - i.id intervenant_id, - ti.id type_intervenant_id, - i.annee_id annee_id, - his.histo_modification service_date_modification, - t.type_volume_horaire_id type_volume_horaire_id, - t.etat_volume_horaire_id etat_volume_horaire_id, - etab.id etablissement_id, - saff.id structure_aff_id, - sens.id structure_ens_id, - ose_divers.niveau_formation_id_calc( gtf.id, gtf.pertinence_niveau, etp.niveau ) niveau_formation_id, - etp.id etape_id, - ep.id element_pedagogique_id, - t.periode_id periode_id, - t.type_intervention_id type_intervention_id, - t.fonction_referentiel_id fonction_referentiel_id, - - tvh.libelle || ' ' || evh.libelle type_etat, - i.source_code intervenant_code, - i.nom_usuel || ' ' || i.prenom intervenant_nom, - i.date_naissance intervenant_date_naissance, - si.libelle intervenant_statut_libelle, - ti.code intervenant_type_code, - ti.libelle intervenant_type_libelle, - g.source_code intervenant_grade_code, - g.libelle_court intervenant_grade_libelle, - di.source_code intervenant_discipline_code, - di.libelle_court intervenant_discipline_libelle, - saff.libelle_court service_structure_aff_libelle, +-- TYPE_PIECE_JOINTE_STATUT_HMFK +ALTER TABLE "TYPE_PIECE_JOINTE_STATUT" ADD CONSTRAINT "TYPE_PIECE_JOINTE_STATUT_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; - sens.libelle_court service_structure_ens_libelle, - etab.libelle etablissement_libelle, - gtf.libelle_court groupe_type_formation_libelle, - tf.libelle_court type_formation_libelle, - etp.niveau etape_niveau, - etp.source_code etape_code, - etp.libelle etape_libelle, - ep.source_code element_code, - COALESCE(ep.libelle,to_char(t.service_description)) element_libelle, - de.source_code element_discipline_code, - de.libelle_court element_discipline_libelle, - fr.libelle_long fonction_referentiel_libelle, - ep.taux_fi element_taux_fi, - ep.taux_fc element_taux_fc, - ep.taux_fa element_taux_fa, - t.service_ref_formation service_ref_formation, - t.commentaires commentaires, - p.libelle_court periode_libelle, - CASE WHEN fs.ponderation_service_compl = 1 THEN NULL ELSE fs.ponderation_service_compl END element_ponderation_compl, - src.libelle element_source_libelle, - - t.heures heures, - t.heures_ref heures_ref, - t.heures_non_payees heures_non_payees, - si.service_statutaire service_statutaire, - fsm.heures service_du_modifie, - t.service_fi service_fi, - t.service_fa service_fa, - t.service_fc service_fc, - t.service_referentiel service_referentiel, - t.heures_compl_fi heures_compl_fi, - t.heures_compl_fa heures_compl_fa, - t.heures_compl_fc heures_compl_fc, - t.heures_compl_fc_majorees heures_compl_fc_majorees, - t.heures_compl_referentiel heures_compl_referentiel, - t.total total, - t.solde solde, - v.histo_modification date_cloture_realise +-- TYPE_RESSOURCE_HCFK +ALTER TABLE "TYPE_RESSOURCE" ADD CONSTRAINT "TYPE_RESSOURCE_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; -FROM - t - JOIN intervenant i ON i.id = t.intervenant_id AND i.histo_destruction IS NULL - JOIN statut_intervenant si ON si.id = i.statut_id - JOIN type_intervenant ti ON ti.id = si.type_intervenant_id - JOIN etablissement etab ON etab.id = t.etablissement_id - JOIN type_volume_horaire tvh ON tvh.id = t.type_volume_horaire_id - JOIN etat_volume_horaire evh ON evh.id = t.etat_volume_horaire_id - LEFT JOIN histo_intervenant_service his ON his.intervenant_id = i.id AND his.type_volume_horaire_id = tvh.id AND his.referentiel = 0 - LEFT JOIN grade g ON g.id = i.grade_id - LEFT JOIN discipline di ON di.id = i.discipline_id - LEFT JOIN structure saff ON saff.id = i.structure_id AND ti.code = 'P' - LEFT JOIN element_pedagogique ep ON ep.id = t.element_pedagogique_id - LEFT JOIN discipline de ON de.id = ep.discipline_id - LEFT JOIN structure sens ON sens.id = NVL(t.structure_ens_id, ep.structure_id) - LEFT JOIN periode p ON p.id = t.periode_id - LEFT JOIN source src ON src.id = ep.source_id OR (ep.source_id IS NULL AND src.code = 'OSE') - LEFT JOIN etape etp ON etp.id = ep.etape_id - LEFT JOIN type_formation tf ON tf.id = etp.type_formation_id AND tf.histo_destruction IS NULL - LEFT JOIN groupe_type_formation gtf ON gtf.id = tf.groupe_id AND gtf.histo_destruction IS NULL - LEFT JOIN v_formule_service_modifie fsm ON fsm.intervenant_id = i.id - LEFT JOIN v_formule_service fs ON fs.id = t.service_id - LEFT JOIN fonction_referentiel fr ON fr.id = t.fonction_referentiel_id - LEFT JOIN type_validation tv ON tvh.code = 'REALISE' AND tv.code = 'CLOTURE_REALISE' - LEFT JOIN validation v ON v.intervenant_id = i.id AND v.type_validation_id = tv.id AND v.histo_destruction IS NULL; +-- TYPE_RESSOURCE_HDFK +ALTER TABLE "TYPE_RESSOURCE" ADD CONSTRAINT "TYPE_RESSOURCE_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; --- V_EXP_HETD_CENTRE_COUT -CREATE OR REPLACE FORCE VIEW "V_EXP_HETD_CENTRE_COUT" ("TYPE_VOLUME_HORAIRE_ID", "ETAT_VOLUME_HORAIRE_ID", "ANNEE_ID", "INTERVENANT_ID", "STATUT_INTERVENANT_ID", "TYPE_INTERVENANT_ID", "GRADE_ID", "STRUCTURE_ID", "GROUPE_TYPE_FORMATION_ID", "TYPE_FORMATION_ID", "ETAPE_ID", "TYPE_VOLUME_HORAIRE", "ETAT_VOLUME_HORAIRE", "ANNEE", "CODE_INTERVENANT", "INTERVENANT", "STATUT_INTERVENANT", "TYPE_INTERVENANT", "GRADE", "STRUCTURE_ENSEIGNEMENT", "GROUPE_TYPE_FORMATION", "TYPE_FORMATION", "CODE_FORMATION", "TOTAL_HETD", "CENTRE_COUTS", "TOTAL_EUROS") AS - WITH t AS ( - SELECT - tvh.id type_volume_horaire_id, - evh.id etat_volume_horaire_id, - a.id annee_id, - i.id intervenant_id, - si.id statut_intervenant_id, - ti.id type_intervenant_id, - g.id grade_id, - str.id structure_id, - gtf.id groupe_type_formation_id, - tf.id type_formation_id, - e.id etape_id, - - tvh.code type_volume_horaire, - evh.code etat_volume_horaire, - a.libelle annee, - i.code code_intervenant, - i.nom_usuel || ' ' || i.prenom intervenant, - si.libelle statut_intervenant, - ti.libelle type_intervenant, - g.libelle_long grade, - str.libelle_court structure_enseignement, - gtf.libelle_long groupe_type_formation, - tf.libelle_long type_formation, - e.source_code code_formation, +-- TYPE_RESSOURCE_HMFK +ALTER TABLE "TYPE_RESSOURCE" ADD CONSTRAINT "TYPE_RESSOURCE_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; - CASE WHEN mep.id IS NULL THEN frs.total ELSE mep.heures END - total_hetd, +-- VALIDATION_HCFK +ALTER TABLE "VALIDATION" ADD CONSTRAINT "VALIDATION_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; - cc.source_code || ' ' || cc.libelle centre_couts, - OSE_FORMULE.GET_TAUX_HORAIRE_HETD( NVL(mep.date_mise_en_paiement,SYSDATE) ) * CASE WHEN mep.id IS NULL THEN frs.total ELSE mep.heures END - total_euros - FROM - formule_resultat_service frs - JOIN formule_resultat fr ON fr.id = frs.formule_resultat_id - JOIN etat_volume_horaire evh ON evh.id = fr.etat_volume_horaire_id - JOIN type_volume_horaire tvh ON tvh.id = fr.type_volume_horaire_id - JOIN intervenant i ON i.id = fr.intervenant_id - JOIN annee a ON a.id = i.annee_id - JOIN statut_intervenant si ON si.id = i.statut_id - JOIN type_intervenant ti ON ti.id = si.type_intervenant_id - JOIN service s ON s.id = frs.service_id - LEFT JOIN grade g ON g.id = i.grade_id - LEFT JOIN element_pedagogique ep ON ep.id = s.element_pedagogique_id - JOIN structure str ON str.id = NVL(ep.structure_id, i.structure_id) - LEFT JOIN etape e ON e.id = ep.etape_id - LEFT JOIN type_formation tf ON tf.id = e.type_formation_id - LEFT JOIN groupe_type_formation gtf ON gtf.id = tf.groupe_id - LEFT JOIN mise_en_paiement mep ON mep.formule_res_service_id = frs.id - AND mep.histo_destruction IS NULL +-- VALIDATION_HDFK +ALTER TABLE "VALIDATION" ADD CONSTRAINT "VALIDATION_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; - LEFT JOIN centre_cout cc ON cc.id = MEP.CENTRE_COUT_ID +-- VALIDATION_HMFK +ALTER TABLE "VALIDATION" ADD CONSTRAINT "VALIDATION_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; - UNION ALL +-- VALIDATION_INTERVENANT_FK +ALTER TABLE "VALIDATION" ADD CONSTRAINT "VALIDATION_INTERVENANT_FK" FOREIGN KEY ("INTERVENANT_ID") + REFERENCES "INTERVENANT" ("ID") ON DELETE CASCADE ENABLE; - SELECT - type_volume_horaire_id, etat_volume_horaire_id, annee_id, intervenant_id, statut_intervenant_id, type_intervenant_id, - grade_id, structure_id, groupe_type_formation_id, type_formation_id, etape_id, - - type_volume_horaire, etat_volume_horaire, annee, code_intervenant, intervenant, statut_intervenant, - type_intervenant, grade, structure_enseignement, groupe_type_formation, type_formation, - code_formation, total_hetd, centre_couts, - OSE_FORMULE.GET_TAUX_HORAIRE_HETD( SYSDATE ) * total_hetd total_euros - FROM ( - SELECT - tvh.id type_volume_horaire_id, - evh.id etat_volume_horaire_id, - a.id annee_id, - i.id intervenant_id, - si.id statut_intervenant_id, - ti.id type_intervenant_id, - g.id grade_id, - str.id structure_id, - gtf.id groupe_type_formation_id, - tf.id type_formation_id, - e.id etape_id, - - tvh.code type_volume_horaire, - evh.code etat_volume_horaire, - a.libelle annee, - i.code code_intervenant, - i.nom_usuel || ' ' || i.prenom intervenant, - si.libelle statut_intervenant, - ti.libelle type_intervenant, - g.libelle_long grade, - str.libelle_court structure_enseignement, - gtf.libelle_long groupe_type_formation, - tf.libelle_long type_formation, - e.source_code code_formation, - frs.total - SUM(mep.heures) OVER (PARTITION BY frs.id) total_hetd, - RANK() OVER ( PARTITION BY frs.id ORDER BY mep.id) ordre, - null centre_couts - FROM - formule_resultat_service frs - JOIN formule_resultat fr ON fr.id = frs.formule_resultat_id - JOIN etat_volume_horaire evh ON evh.id = fr.etat_volume_horaire_id - JOIN type_volume_horaire tvh ON tvh.id = fr.type_volume_horaire_id - JOIN intervenant i ON i.id = fr.intervenant_id - JOIN annee a ON a.id = i.annee_id - JOIN statut_intervenant si ON si.id = i.statut_id - JOIN type_intervenant ti ON ti.id = si.type_intervenant_id - JOIN service s ON s.id = frs.service_id - LEFT JOIN grade g ON g.id = i.grade_id - LEFT JOIN element_pedagogique ep ON ep.id = s.element_pedagogique_id - JOIN structure str ON str.id = NVL(ep.structure_id, i.structure_id) - LEFT JOIN etape e ON e.id = ep.etape_id - LEFT JOIN type_formation tf ON tf.id = e.type_formation_id - LEFT JOIN groupe_type_formation gtf ON gtf.id = tf.groupe_id - LEFT JOIN mise_en_paiement mep ON mep.formule_res_service_id = frs.id - AND mep.histo_destruction IS NULL - ) t WHERE ordre = 1 AND total_hetd > 0 -) -SELECT - type_volume_horaire_id, - etat_volume_horaire_id, - annee_id, - intervenant_id, - statut_intervenant_id, - type_intervenant_id, - grade_id, - structure_id, - groupe_type_formation_id, - type_formation_id, - etape_id, +-- VALIDATION_STRUCTURE_FK +ALTER TABLE "VALIDATION" ADD CONSTRAINT "VALIDATION_STRUCTURE_FK" FOREIGN KEY ("STRUCTURE_ID") + REFERENCES "STRUCTURE" ("ID") ON DELETE CASCADE ENABLE; + +-- VALIDATION_TYPE_VALIDATION_FK +ALTER TABLE "VALIDATION" ADD CONSTRAINT "VALIDATION_TYPE_VALIDATION_FK" FOREIGN KEY ("TYPE_VALIDATION_ID") + REFERENCES "TYPE_VALIDATION" ("ID") ON DELETE CASCADE ENABLE; + +-- VHC_ELEMENT_PEDAGOGIQUE_FK +ALTER TABLE "VOLUME_HORAIRE_CHARGE" ADD CONSTRAINT "VHC_ELEMENT_PEDAGOGIQUE_FK" FOREIGN KEY ("ELEMENT_PEDAGOGIQUE_ID") + REFERENCES "ELEMENT_PEDAGOGIQUE" ("ID") ENABLE; + +-- VHC_SCENARIO_FK +ALTER TABLE "VOLUME_HORAIRE_CHARGE" ADD CONSTRAINT "VHC_SCENARIO_FK" FOREIGN KEY ("SCENARIO_ID") + REFERENCES "SCENARIO" ("ID") ON DELETE CASCADE ENABLE; + +-- VHC_SOURCE_FK +ALTER TABLE "VOLUME_HORAIRE_CHARGE" ADD CONSTRAINT "VHC_SOURCE_FK" FOREIGN KEY ("SOURCE_ID") + REFERENCES "SOURCE" ("ID") ENABLE; + +-- VHC_TYPE_INTERVENTION_FK +ALTER TABLE "VOLUME_HORAIRE_CHARGE" ADD CONSTRAINT "VHC_TYPE_INTERVENTION_FK" FOREIGN KEY ("TYPE_INTERVENTION_ID") + REFERENCES "TYPE_INTERVENTION" ("ID") ENABLE; - type_volume_horaire, - etat_volume_horaire, - annee, - code_intervenant, - intervenant, - statut_intervenant, - type_intervenant, - grade, - structure_enseignement, - groupe_type_formation, - type_formation, - code_formation, - SUM(total_hetd) total_hetd, - centre_couts, - SUM(total_euros) total_euros -FROM - t -GROUP BY - type_volume_horaire_id, - etat_volume_horaire_id, - annee_id, - intervenant_id, - statut_intervenant_id, - type_intervenant_id, - grade_id, - structure_id, - groupe_type_formation_id, - type_formation_id, - etape_id, +-- VHENS_ELEMENT_PEDAGOGIQUE_FK +ALTER TABLE "VOLUME_HORAIRE_ENS" ADD CONSTRAINT "VHENS_ELEMENT_PEDAGOGIQUE_FK" FOREIGN KEY ("ELEMENT_PEDAGOGIQUE_ID") + REFERENCES "ELEMENT_PEDAGOGIQUE" ("ID") ENABLE; - type_volume_horaire, - etat_volume_horaire, - annee, - code_intervenant, - intervenant, - statut_intervenant, - type_intervenant, - grade, - structure_enseignement, - groupe_type_formation, - type_formation, - code_formation, - centre_couts; +-- VHENS_TYPE_INTERVENTION_FK +ALTER TABLE "VOLUME_HORAIRE_ENS" ADD CONSTRAINT "VHENS_TYPE_INTERVENTION_FK" FOREIGN KEY ("TYPE_INTERVENTION_ID") + REFERENCES "TYPE_INTERVENTION" ("ID") ON DELETE CASCADE ENABLE; --- V_FORMULE_INTERVENANT -CREATE OR REPLACE FORCE VIEW "V_FORMULE_INTERVENANT" ("ID", "ANNEE_ID", "STRUCTURE_ID", "HEURES_SERVICE_STATUTAIRE", "DEPASSEMENT_SERVICE_DU_SANS_HC") AS - SELECT - i.id, - i.annee_id, - i.structure_id, - si.service_statutaire heures_service_statutaire, - si.depassement_service_du_sans_hc -FROM - intervenant i - JOIN statut_intervenant si ON si.id = i.statut_id -WHERE - i.histo_destruction IS NULL - AND i.id = COALESCE( OSE_FORMULE.GET_INTERVENANT_ID, i.id ); +-- VHIT_FK +ALTER TABLE "VOLUME_HORAIRE" ADD CONSTRAINT "VHIT_FK" FOREIGN KEY ("TYPE_INTERVENTION_ID") + REFERENCES "TYPE_INTERVENTION" ("ID") ENABLE; --- V_FORMULE_SERVICE -CREATE OR REPLACE FORCE VIEW "V_FORMULE_SERVICE" ("ID", "INTERVENANT_ID", "TAUX_FI", "TAUX_FA", "TAUX_FC", "STRUCTURE_AFF_ID", "STRUCTURE_ENS_ID", "PONDERATION_SERVICE_DU", "PONDERATION_SERVICE_COMPL") AS - SELECT - s.id id, - s.intervenant_id intervenant_id, - CASE WHEN ep.id IS NOT NULL THEN ep.taux_fi ELSE 1 END taux_fi, - CASE WHEN ep.id IS NOT NULL THEN ep.taux_fa ELSE 0 END taux_fa, - CASE WHEN ep.id IS NOT NULL THEN ep.taux_fc ELSE 0 END taux_fc, - i.structure_id structure_aff_id, - ep.structure_id structure_ens_id, - NVL( EXP (SUM (LN (m.ponderation_service_du))), 1) ponderation_service_du, - NVL( EXP (SUM (LN (m.ponderation_service_compl))), 1) ponderation_service_compl -FROM - service s - JOIN intervenant i ON i.id = s.intervenant_id - LEFT JOIN element_pedagogique ep ON ep.id = s.element_pedagogique_id - LEFT JOIN element_modulateur em ON em.element_id = s.element_pedagogique_id - AND em.histo_destruction IS NULL - LEFT JOIN modulateur m ON m.id = em.modulateur_id -WHERE - s.histo_destruction IS NULL -GROUP BY - s.id, - s.intervenant_id, - ep.id, - ep.taux_fi, ep.taux_fa, ep.taux_fc, - i.structure_id, ep.structure_id; +-- VHMNP_FK +ALTER TABLE "VOLUME_HORAIRE" ADD CONSTRAINT "VHMNP_FK" FOREIGN KEY ("MOTIF_NON_PAIEMENT_ID") + REFERENCES "MOTIF_NON_PAIEMENT" ("ID") ENABLE; --- V_FORMULE_SERVICE_MODIFIE -CREATE OR REPLACE FORCE VIEW "V_FORMULE_SERVICE_MODIFIE" ("ID", "INTERVENANT_ID", "HEURES", "HEURES_DECHARGE") AS - SELECT - msd.intervenant_id id, - msd.intervenant_id, - NVL( SUM( msd.heures * mms.multiplicateur ), 0 ) heures, - NVL( SUM( msd.heures * mms.multiplicateur * mms.decharge ), 0 ) heures_decharge -FROM - modification_service_du msd - JOIN MOTIF_MODIFICATION_SERVICE mms ON - mms.id = msd.motif_id - AND mms.histo_destruction IS NULL - JOIN intervenant i ON i.id = msd.intervenant_id -WHERE - msd.histo_destruction IS NULL - AND 1 = ose_divers.intervenant_has_privilege(msd.intervenant_id, 'modif-service-du-association') -GROUP BY - msd.intervenant_id; +-- VHR_SERVICE_REFERENTIEL_FK +ALTER TABLE "VOLUME_HORAIRE_REF" ADD CONSTRAINT "VHR_SERVICE_REFERENTIEL_FK" FOREIGN KEY ("SERVICE_REFERENTIEL_ID") + REFERENCES "SERVICE_REFERENTIEL" ("ID") ENABLE; --- V_FORMULE_SERVICE_REF -CREATE OR REPLACE FORCE VIEW "V_FORMULE_SERVICE_REF" ("ID", "INTERVENANT_ID", "STRUCTURE_ID") AS - SELECT - sr.id id, - sr.intervenant_id intervenant_id, - sr.structure_id structure_id -FROM - service_referentiel sr - JOIN intervenant i ON i.id = sr.intervenant_id -WHERE - sr.histo_destruction IS NULL - AND i.id = COALESCE( OSE_FORMULE.GET_INTERVENANT_ID, i.id ); +-- VHR_TYPE_VOLUME_HORAIRE_FK +ALTER TABLE "VOLUME_HORAIRE_REF" ADD CONSTRAINT "VHR_TYPE_VOLUME_HORAIRE_FK" FOREIGN KEY ("TYPE_VOLUME_HORAIRE_ID") + REFERENCES "TYPE_VOLUME_HORAIRE" ("ID") ENABLE; --- V_FORMULE_VOLUME_HORAIRE -CREATE OR REPLACE FORCE VIEW "V_FORMULE_VOLUME_HORAIRE" ("ID", "SERVICE_ID", "INTERVENANT_ID", "TYPE_INTERVENTION_ID", "TYPE_VOLUME_HORAIRE_ID", "ETAT_VOLUME_HORAIRE_ID", "ETAT_VOLUME_HORAIRE_ORDRE", "HEURES", "TAUX_SERVICE_DU", "TAUX_SERVICE_COMPL") AS - SELECT - vh.id id, - s.id service_id, - s.intervenant_id intervenant_id, - ti.id type_intervention_id, - vh.type_volume_horaire_id type_volume_horaire_id, - evh.id etat_volume_horaire_id, - evh.ordre etat_volume_horaire_ordre, - vh.heures heures, - ti.taux_hetd_service taux_service_du, - ti.taux_hetd_complementaire taux_service_compl -FROM - volume_horaire vh - JOIN service s ON s.id = vh.service_id - JOIN type_intervention ti ON ti.id = vh.type_intervention_id - JOIN v_volume_horaire_etat vhe ON vhe.volume_horaire_id = vh.id - JOIN etat_volume_horaire evh ON evh.id = vhe.etat_volume_horaire_id -WHERE - vh.histo_destruction IS NULL - AND s.histo_destruction IS NULL - AND vh.heures <> 0 - AND vh.motif_non_paiement_id IS NULL - AND s.intervenant_id = COALESCE( OSE_FORMULE.GET_INTERVENANT_ID, s.intervenant_id ); +-- VH_PERIODE_FK +ALTER TABLE "VOLUME_HORAIRE" ADD CONSTRAINT "VH_PERIODE_FK" FOREIGN KEY ("PERIODE_ID") + REFERENCES "PERIODE" ("ID") ENABLE; --- V_FORMULE_VOLUME_HORAIRE_REF -CREATE OR REPLACE FORCE VIEW "V_FORMULE_VOLUME_HORAIRE_REF" ("ID", "SERVICE_REFERENTIEL_ID", "INTERVENANT_ID", "TYPE_VOLUME_HORAIRE_ID", "ETAT_VOLUME_HORAIRE_ID", "ETAT_VOLUME_HORAIRE_ORDRE", "HEURES") AS - SELECT - vhr.id id, - sr.id service_referentiel_id, - sr.intervenant_id intervenant_id, - vhr.type_volume_horaire_id type_volume_horaire_id, - evh.id etat_volume_horaire_id, - evh.ordre etat_volume_horaire_ordre, - vhr.heures heures -FROM - volume_horaire_ref vhr - JOIN service_referentiel sr ON sr.id = vhr.service_referentiel_id - JOIN v_volume_horaire_ref_etat vher ON vher.volume_horaire_ref_id = vhr.id - JOIN etat_volume_horaire evh ON evh.id = vher.etat_volume_horaire_id -WHERE - vhr.histo_destruction IS NULL - AND sr.histo_destruction IS NULL - AND vhr.heures <> 0 - AND sr.intervenant_id = COALESCE( OSE_FORMULE.GET_INTERVENANT_ID, sr.intervenant_id ); +-- VH_TYPE_VOLUME_HORAIRE_FK +ALTER TABLE "VOLUME_HORAIRE" ADD CONSTRAINT "VH_TYPE_VOLUME_HORAIRE_FK" FOREIGN KEY ("TYPE_VOLUME_HORAIRE_ID") + REFERENCES "TYPE_VOLUME_HORAIRE" ("ID") ENABLE; --- V_FR_SERVICE_CENTRE_COUT -CREATE OR REPLACE FORCE VIEW "V_FR_SERVICE_CENTRE_COUT" ("FORMULE_RESULTAT_SERVICE_ID", "CENTRE_COUT_ID") AS - SELECT - frs.id formule_resultat_service_id, cc.id centre_cout_id -FROM - formule_resultat_service frs - JOIN service s ON s.id = frs.service_id - JOIN element_pedagogique ep ON ep.id = s.element_pedagogique_id - JOIN centre_cout cc ON cc.histo_destruction IS NULL - - JOIN centre_cout_structure ccs ON ccs.centre_cout_id = cc.id - AND ccs.structure_id = ep.structure_id - AND ccs.histo_destruction IS NULL - - JOIN cc_activite a ON a.id = cc.activite_id - AND a.histo_destruction IS NULL - - JOIN type_ressource tr ON tr.id = cc.type_ressource_id - AND tr.histo_destruction IS NULL -WHERE - ( - (frs.heures_compl_fi > 0 AND tr.fi = 1 AND a.fi = 1 ) - OR (frs.heures_compl_fa > 0 AND tr.fa = 1 AND a.fa = 1 ) - OR (frs.heures_compl_fc > 0 AND tr.fc = 1 AND a.fc = 1 ) - OR (frs.heures_compl_fc_majorees > 0 AND tr.fc_majorees = 1 AND a.fc_majorees = 1 ) - ) +-- VOLUMES_HORAIRES_SERVICES_FK +ALTER TABLE "VOLUME_HORAIRE" ADD CONSTRAINT "VOLUMES_HORAIRES_SERVICES_FK" FOREIGN KEY ("SERVICE_ID") + REFERENCES "SERVICE" ("ID") ENABLE; + +-- VOLUME_HORAIRE_CHARGE_HCFK +ALTER TABLE "VOLUME_HORAIRE_CHARGE" ADD CONSTRAINT "VOLUME_HORAIRE_CHARGE_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- VOLUME_HORAIRE_CHARGE_HDFK +ALTER TABLE "VOLUME_HORAIRE_CHARGE" ADD CONSTRAINT "VOLUME_HORAIRE_CHARGE_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- VOLUME_HORAIRE_CHARGE_HMFK +ALTER TABLE "VOLUME_HORAIRE_CHARGE" ADD CONSTRAINT "VOLUME_HORAIRE_CHARGE_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- VOLUME_HORAIRE_CONTRAT_FK +ALTER TABLE "VOLUME_HORAIRE" ADD CONSTRAINT "VOLUME_HORAIRE_CONTRAT_FK" FOREIGN KEY ("CONTRAT_ID") + REFERENCES "CONTRAT" ("ID") ENABLE; + +-- VOLUME_HORAIRE_ENS_HCFK +ALTER TABLE "VOLUME_HORAIRE_ENS" ADD CONSTRAINT "VOLUME_HORAIRE_ENS_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- VOLUME_HORAIRE_ENS_HDFK +ALTER TABLE "VOLUME_HORAIRE_ENS" ADD CONSTRAINT "VOLUME_HORAIRE_ENS_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- VOLUME_HORAIRE_ENS_HMFK +ALTER TABLE "VOLUME_HORAIRE_ENS" ADD CONSTRAINT "VOLUME_HORAIRE_ENS_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- VOLUME_HORAIRE_ENS_SOURCE_FK +ALTER TABLE "VOLUME_HORAIRE_ENS" ADD CONSTRAINT "VOLUME_HORAIRE_ENS_SOURCE_FK" FOREIGN KEY ("SOURCE_ID") + REFERENCES "SOURCE" ("ID") ON DELETE CASCADE ENABLE; + +-- VOLUME_HORAIRE_HCFK +ALTER TABLE "VOLUME_HORAIRE" ADD CONSTRAINT "VOLUME_HORAIRE_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- VOLUME_HORAIRE_HDFK +ALTER TABLE "VOLUME_HORAIRE" ADD CONSTRAINT "VOLUME_HORAIRE_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- VOLUME_HORAIRE_HMFK +ALTER TABLE "VOLUME_HORAIRE" ADD CONSTRAINT "VOLUME_HORAIRE_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- VOLUME_HORAIRE_REF_HCFK +ALTER TABLE "VOLUME_HORAIRE_REF" ADD CONSTRAINT "VOLUME_HORAIRE_REF_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- VOLUME_HORAIRE_REF_HDFK +ALTER TABLE "VOLUME_HORAIRE_REF" ADD CONSTRAINT "VOLUME_HORAIRE_REF_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- VOLUME_HORAIRE_REF_HMFK +ALTER TABLE "VOLUME_HORAIRE_REF" ADD CONSTRAINT "VOLUME_HORAIRE_REF_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") + REFERENCES "UTILISATEUR" ("ID") ENABLE; + +-- VVHR_VALIDATION_FK +ALTER TABLE "VALIDATION_VOL_HORAIRE_REF" ADD CONSTRAINT "VVHR_VALIDATION_FK" FOREIGN KEY ("VALIDATION_ID") + REFERENCES "VALIDATION" ("ID") ON DELETE CASCADE ENABLE; -UNION +-- VVHR_VOLUME_HORAIRE_REF_FK +ALTER TABLE "VALIDATION_VOL_HORAIRE_REF" ADD CONSTRAINT "VVHR_VOLUME_HORAIRE_REF_FK" FOREIGN KEY ("VOLUME_HORAIRE_REF_ID") + REFERENCES "VOLUME_HORAIRE_REF" ("ID") ON DELETE CASCADE ENABLE; -SELECT - frs.id formule_resultat_service_id, cc.id -FROM - formule_resultat_service frs - JOIN service s ON s.id = frs.service_id - AND s.element_pedagogique_id IS NULL - - JOIN intervenant i ON i.id = s.intervenant_id - JOIN centre_cout cc ON cc.histo_destruction IS NULL - - JOIN centre_cout_structure ccs ON ccs.centre_cout_id = cc.id - AND ccs.structure_id = i.structure_id - AND ccs.histo_destruction IS NULL - - JOIN cc_activite a ON a.id = cc.activite_id - AND a.histo_destruction IS NULL - - JOIN type_ressource tr ON tr.id = cc.type_ressource_id - AND tr.histo_destruction IS NULL -WHERE - ( - (frs.heures_compl_fi > 0 AND tr.fi = 1 AND a.fi = 1 ) - OR (frs.heures_compl_fa > 0 AND tr.fa = 1 AND a.fa = 1 ) - OR (frs.heures_compl_fc > 0 AND tr.fc = 1 AND a.fc = 1 ) - OR (frs.heures_compl_fc_majorees > 0 AND tr.fc_majorees = 1 AND a.fc_majorees = 1 ) - ); +-- VVH_VALIDATION_FK +ALTER TABLE "VALIDATION_VOL_HORAIRE" ADD CONSTRAINT "VVH_VALIDATION_FK" FOREIGN KEY ("VALIDATION_ID") + REFERENCES "VALIDATION" ("ID") ON DELETE CASCADE ENABLE; --- V_FR_SERVICE_REF_CENTRE_COUT -CREATE OR REPLACE FORCE VIEW "V_FR_SERVICE_REF_CENTRE_COUT" ("FORMULE_RESULTAT_SERV_REF_ID", "CENTRE_COUT_ID") AS - SELECT - frsr.id formule_resultat_serv_ref_id, cc.id -FROM - formule_resultat_service_ref frsr - JOIN service_referentiel sr ON sr.id = frsr.service_referentiel_id - JOIN centre_cout cc ON cc.histo_destruction IS NULL - - JOIN centre_cout_structure ccs ON ccs.centre_cout_id = cc.id - AND ccs.structure_id = sr.structure_id - AND ccs.histo_destruction IS NULL - - JOIN cc_activite a ON a.id = cc.activite_id - AND a.histo_destruction IS NULL - - JOIN type_ressource tr ON tr.id = cc.type_ressource_id - AND tr.histo_destruction IS NULL -WHERE - frsr.heures_compl_referentiel > 0 AND tr.referentiel = 1; +-- VVH_VOLUME_HORAIRE_FK +ALTER TABLE "VALIDATION_VOL_HORAIRE" ADD CONSTRAINT "VVH_VOLUME_HORAIRE_FK" FOREIGN KEY ("VOLUME_HORAIRE_ID") + REFERENCES "VOLUME_HORAIRE" ("ID") ON DELETE CASCADE ENABLE; --- V_HAS_DMEP_A_FAIRE -CREATE OR REPLACE FORCE VIEW "V_HAS_DMEP_A_FAIRE" ("INTERVENANT_ID", "STRUCTURE_ID", "HAS_DMEP_A_FAIRE") AS - SELECT - intervenant_id, - structure_id, - CASE WHEN - SUM(CASE WHEN heures_dmep > heures_compl THEN heures_compl ELSE heures_dmep END) < SUM(heures_compl) - THEN 1 ELSE 0 END has_dmep_a_faire -FROM - ( - SELECT - fr.intervenant_id intervenant_id, - NVL( ep.structure_id, i.structure_id ) structure_id, - frs.heures_compl_fi + frs.heures_compl_fa + frs.heures_compl_fc + frs.heures_compl_fc_majorees heures_compl, - SUM( NVL(mep.heures,0) ) OVER (PARTITION BY frs.id) heures_dmep, - SUM( NVL(CASE WHEN mep.periode_paiement_id IS NOT NULL THEN mep.heures ELSE 0 END,0) ) OVER (PARTITION BY frs.id) heures_mep, - ROW_NUMBER() OVER (PARTITION BY frs.id ORDER BY 1) index__ - FROM - formule_resultat_service frs - JOIN formule_resultat fr ON fr.id = frs.formule_resultat_id - JOIN type_volume_horaire tvh ON tvh.id = fr.type_volume_horaire_id AND tvh.code = 'REALISE' - JOIN etat_volume_horaire evh ON evh.id = fr.etat_volume_horaire_id AND evh.code = 'valide' - JOIN intervenant i on i.id = fr.intervenant_id - JOIN service s ON s.id = frs.service_id - LEFT JOIN element_pedagogique ep on ep.id = s.element_pedagogique_id - LEFT JOIN mise_en_paiement mep ON mep.formule_res_service_id = frs.id AND mep.histo_destruction IS NULL +-- WE_PREC_WE_FK +ALTER TABLE "WF_ETAPE_DEP" ADD CONSTRAINT "WE_PREC_WE_FK" FOREIGN KEY ("ETAPE_PREC_ID") + REFERENCES "WF_ETAPE" ("ID") ON DELETE CASCADE ENABLE; - UNION +-- WE_SUIV_WE_FK +ALTER TABLE "WF_ETAPE_DEP" ADD CONSTRAINT "WE_SUIV_WE_FK" FOREIGN KEY ("ETAPE_SUIV_ID") + REFERENCES "WF_ETAPE" ("ID") ON DELETE CASCADE ENABLE; - SELECT - fr.intervenant_id intervenant_id, - NVL( s.structure_id, i.structure_id ) structure_id, - frs.heures_compl_referentiel heures_compl, - SUM( NVL(mep.heures,0) ) OVER (PARTITION BY frs.id) heures_dmep, - SUM( NVL(CASE WHEN mep.periode_paiement_id IS NOT NULL THEN mep.heures ELSE 0 END,0) ) OVER (PARTITION BY frs.id) heures_mep, - ROW_NUMBER() OVER (PARTITION BY frs.id ORDER BY 1) index__ - FROM - formule_resultat_service_ref frs - JOIN formule_resultat fr ON fr.id = frs.formule_resultat_id - JOIN type_volume_horaire tvh ON tvh.id = fr.type_volume_horaire_id AND tvh.code = 'REALISE' - JOIN etat_volume_horaire evh ON evh.id = fr.etat_volume_horaire_id AND evh.code = 'valide' - JOIN intervenant i on i.id = fr.intervenant_id - JOIN service_referentiel s ON s.id = frs.service_referentiel_id - LEFT JOIN mise_en_paiement mep ON mep.formule_res_service_ref_id = frs.id AND mep.histo_destruction IS NULL - )mep -WHERE - index__ = 1 -GROUP BY - intervenant_id, - structure_id; +-- WE_TYPE_INTERVENANT_FK +ALTER TABLE "WF_ETAPE_DEP" ADD CONSTRAINT "WE_TYPE_INTERVENANT_FK" FOREIGN KEY ("TYPE_INTERVENANT_ID") + REFERENCES "TYPE_INTERVENANT" ("ID") ON DELETE CASCADE ENABLE; --- V_HETD_PREV_VAL_STRUCT -CREATE OR REPLACE FORCE VIEW "V_HETD_PREV_VAL_STRUCT" ("ANNEE_ID", "STRUCTURE_ID", "HEURES") AS - SELECT - annee_id, - structure_id, - sum(heures) heures +-- WF_DB_ETAPE_DEP_FK +ALTER TABLE "WF_DEP_BLOQUANTE" ADD CONSTRAINT "WF_DB_ETAPE_DEP_FK" FOREIGN KEY ("WF_ETAPE_DEP_ID") + REFERENCES "WF_ETAPE_DEP" ("ID") ON DELETE CASCADE ENABLE; -FROM -( -SELECT - i.annee_id, - NVL( ep.structure_id, i.structure_id ) structure_id, - frs.total heures -FROM - formule_resultat_service frs - JOIN formule_resultat fr ON fr.id = frs.formule_resultat_id - JOIN type_volume_horaire tvh ON tvh.id = fr.type_volume_horaire_id - JOIN etat_volume_horaire evh ON evh.id = fr.etat_volume_horaire_id - JOIN intervenant i ON i.id = fr.intervenant_id - JOIN service s ON s.id = frs.service_id - LEFT JOIN element_pedagogique ep ON ep.id = s.element_pedagogique_id +-- WF_DB_TBL_WORKFLOW_FK +ALTER TABLE "WF_DEP_BLOQUANTE" ADD CONSTRAINT "WF_DB_TBL_WORKFLOW_FK" FOREIGN KEY ("TBL_WORKFLOW_ID") + REFERENCES "TBL_WORKFLOW" ("ID") ON DELETE CASCADE ENABLE; -WHERE - tvh.code = 'PREVU' - AND evh.code = 'valide' -) t1 +-- indic_diff_dossier_INT_FK +ALTER TABLE "INDIC_MODIF_DOSSIER" ADD CONSTRAINT "indic_diff_dossier_INT_FK" FOREIGN KEY ("INTERVENANT_ID") + REFERENCES "INTERVENANT" ("ID") ON DELETE CASCADE ENABLE; -GROUP BY - annee_id, structure_id; +-------------------------------------------------- +-- indexes +-------------------------------------------------- --- V_IMPORT_TAB_COLS -CREATE OR REPLACE FORCE VIEW "V_IMPORT_TAB_COLS" ("TABLE_NAME", "COLUMN_NAME", "DATA_TYPE", "LENGTH", "NULLABLE", "HAS_DEFAULT", "C_TABLE_NAME", "C_COLUMN_NAME", "IMPORT_ACTIF") AS - WITH importable_tables (table_name )AS ( - SELECT - t.table_name -FROM - user_tab_cols c - join user_tables t on t.table_name = c.table_name -WHERE - c.column_name = 'SOURCE_CODE' +-- ADRESSE_INTERVENANT_HCFK_IDX +CREATE INDEX "ADRESSE_INTERVENANT_HCFK_IDX" ON "ADRESSE_INTERVENANT" ("HISTO_CREATEUR_ID"); -MINUS +-- ADRESSE_INTERVENANT_HDFK_IDX +CREATE INDEX "ADRESSE_INTERVENANT_HDFK_IDX" ON "ADRESSE_INTERVENANT" ("HISTO_DESTRUCTEUR_ID"); -SELECT - mview_name table_name -FROM - USER_MVIEWS -), c_values (table_name, column_name, c_table_name, c_column_name) AS ( -SELECT - tc.table_name, - tc.column_name, - pcc.table_name c_table_name, - pcc.column_name c_column_name -FROM - user_tab_cols tc - JOIN USER_CONS_COLUMNS cc ON cc.table_name = tc.table_name AND cc.column_name = tc.column_name - JOIN USER_CONSTRAINTS c ON c.constraint_name = cc.constraint_name - JOIN USER_CONSTRAINTS pc ON pc.constraint_name = c.r_constraint_name - JOIN USER_CONS_COLUMNS pcc ON pcc.constraint_name = pc.constraint_name -WHERE - c.constraint_type = 'R' AND pc.constraint_type = 'P' -) -SELECT - tc.table_name, - tc.column_name, - tc.data_type, - CASE WHEN tc.char_length = 0 THEN NULL ELSE tc.char_length END length, - CASE WHEN tc.nullable = 'Y' THEN 1 ELSE 0 END nullable, - CASE WHEN tc.data_default IS NOT NULL THEN 1 ELSE 0 END has_default, - cv.c_table_name, - cv.c_column_name, - CASE WHEN stc.table_name IS NULL THEN 0 ELSE 1 END AS import_actif -FROM - user_tab_cols tc - JOIN importable_tables t ON t.table_name = tc.table_name - LEFT JOIN import_tables it ON it.table_name = tc.table_name - LEFT JOIN c_values cv ON cv.table_name = tc.table_name AND cv.column_name = tc.column_name - LEFT JOIN user_tab_cols stc ON stc.table_name = 'SRC_' || tc.table_name AND stc.column_name = tc.column_name -WHERE - tc.column_name not like 'HISTO_%' - AND tc.column_name <> 'ID' - AND tc.table_name <> 'SYNC_LOG' -ORDER BY - it.ordre, tc.table_name, tc.column_id; +-- ADRESSE_INTERVENANT_HMFK_IDX +CREATE INDEX "ADRESSE_INTERVENANT_HMFK_IDX" ON "ADRESSE_INTERVENANT" ("HISTO_MODIFICATEUR_ID"); --- V_INDICATEUR_1010 -CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_1010" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID") AS - SELECT rownum id, t."ANNEE_ID",t."INTERVENANT_ID",t."STRUCTURE_ID" FROM -( -SELECT DISTINCT - w.annee_id, - w.intervenant_id, - i.structure_id -FROM - tbl_workflow w - JOIN tbl_workflow wc ON wc.intervenant_id = w.intervenant_id - JOIN intervenant i ON i.id = w.intervenant_id -WHERE - w.etape_code = 'PJ_SAISIE' - AND wc.etape_code = 'SERVICE_SAISIE' - AND w.type_intervenant_code = 'E' - AND wc.realisation > 0 - AND w.atteignable = 1 - AND w.objectif > w.realisation -) t; +-- ADRESSE_INTERVENANT_PK +CREATE UNIQUE INDEX "ADRESSE_INTERVENANT_PK" ON "ADRESSE_INTERVENANT" ("ID"); --- V_INDICATEUR_1011 -CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_1011" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID") AS - SELECT rownum id, t."ANNEE_ID",t."INTERVENANT_ID",t."STRUCTURE_ID" FROM -( -SELECT DISTINCT - w.annee_id, - w.intervenant_id, - i.structure_id -FROM - tbl_workflow w - JOIN tbl_workflow wc ON wc.intervenant_id = w.intervenant_id - JOIN intervenant i ON i.id = w.intervenant_id -WHERE - w.etape_code = 'PJ_SAISIE' - AND wc.etape_code = 'SERVICE_SAISIE' - AND w.type_intervenant_code = 'P' - AND wc.realisation > 0 - AND w.atteignable = 1 - AND w.objectif > w.realisation -) t; +-- ADRESSE_INTERVENANT_SOURCE_UN +CREATE UNIQUE INDEX "ADRESSE_INTERVENANT_SOURCE_UN" ON "ADRESSE_INTERVENANT" ("SOURCE_CODE"); --- V_INDICATEUR_1020 -CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_1020" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID") AS - SELECT rownum id, t."ANNEE_ID",t."INTERVENANT_ID",t."STRUCTURE_ID" FROM -( -SELECT DISTINCT - w.annee_id, - w.intervenant_id, - i.structure_id -FROM - tbl_workflow w - JOIN tbl_workflow wc ON wc.intervenant_id = w.intervenant_id - JOIN intervenant i ON i.id = w.intervenant_id -WHERE - w.etape_code = 'PJ_VALIDATION' - AND wc.etape_code = 'PJ_SAISIE' - AND w.type_intervenant_code = 'E' - AND wc.objectif = wc.realisation - AND w.atteignable = 1 - AND w.objectif > w.realisation -) t; +-- ADRESSE_INTERVENANT__UN +CREATE UNIQUE INDEX "ADRESSE_INTERVENANT__UN" ON "ADRESSE_INTERVENANT" ("INTERVENANT_ID", "HISTO_DESTRUCTION"); --- V_INDICATEUR_1021 -CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_1021" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID") AS - SELECT rownum id, t."ANNEE_ID",t."INTERVENANT_ID",t."STRUCTURE_ID" FROM -( -SELECT DISTINCT - w.annee_id, - w.intervenant_id, - i.structure_id -FROM - tbl_workflow w - JOIN tbl_workflow wc ON wc.intervenant_id = w.intervenant_id - JOIN intervenant i ON i.id = w.intervenant_id -WHERE - w.etape_code = 'PJ_VALIDATION' - AND wc.etape_code = 'PJ_SAISIE' - AND w.type_intervenant_code = 'P' - AND wc.objectif = wc.realisation - AND w.atteignable = 1 - AND w.objectif > w.realisation -) t; +-- ADRESSE_STRUCTURE_HCFK_IDX +CREATE INDEX "ADRESSE_STRUCTURE_HCFK_IDX" ON "ADRESSE_STRUCTURE" ("HISTO_CREATEUR_ID"); + +-- ADRESSE_STRUCTURE_HDFK_IDX +CREATE INDEX "ADRESSE_STRUCTURE_HDFK_IDX" ON "ADRESSE_STRUCTURE" ("HISTO_DESTRUCTEUR_ID"); --- V_INDICATEUR_110 -CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_110" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID") AS - SELECT - rownum id, - t."ANNEE_ID",t."INTERVENANT_ID",t."STRUCTURE_ID" FROM ( +-- ADRESSE_STRUCTURE_HMFK_IDX +CREATE INDEX "ADRESSE_STRUCTURE_HMFK_IDX" ON "ADRESSE_STRUCTURE" ("HISTO_MODIFICATEUR_ID"); -SELECT DISTINCT - s.annee_id annee_id, - s.intervenant_id intervenant_id, - s.structure_id structure_id -FROM - tbl_service s -WHERE - s.type_intervenant_code = 'P' - AND s.type_volume_horaire_code = 'PREVU' - AND s.intervenant_structure_id <> s.structure_id - AND s.valide > 0 - AND s.structure_id IS NOT NULL +-- ADRESSE_STRUCTURE_PK +CREATE UNIQUE INDEX "ADRESSE_STRUCTURE_PK" ON "ADRESSE_STRUCTURE" ("ID"); -) t; +-- ADRESSE_STRUCTURE_SOURCE_UN +CREATE UNIQUE INDEX "ADRESSE_STRUCTURE_SOURCE_UN" ON "ADRESSE_STRUCTURE" ("SOURCE_CODE"); --- V_INDICATEUR_1110 -CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_1110" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID") AS - SELECT rownum id, t.ANNEE_ID,t.INTERVENANT_ID,t.STRUCTURE_ID FROM ( -SELECT DISTINCT - idc.annee_id, - idc.intervenant_id, - idc.structure_id -FROM - v_indic_depass_charges idc - JOIN type_volume_horaire tvh ON tvh.id = idc.type_volume_horaire_id - LEFT JOIN periode p ON p.id = idc.periode_id -WHERE - (p.code = 'S1' OR p.id IS NULL) - AND tvh.code = 'PREVU' -) t; +-- AFFECTATION_HCFK_IDX +CREATE INDEX "AFFECTATION_HCFK_IDX" ON "AFFECTATION" ("HISTO_CREATEUR_ID"); --- V_INDICATEUR_1111 -CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_1111" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID") AS - SELECT rownum id, t.ANNEE_ID,t.INTERVENANT_ID,t.STRUCTURE_ID FROM ( -SELECT DISTINCT - idc.annee_id, - idc.intervenant_id, - idc.structure_id -FROM - v_indic_depass_charges idc - JOIN type_volume_horaire tvh ON tvh.id = idc.type_volume_horaire_id - LEFT JOIN periode p ON p.id = idc.periode_id -WHERE - (p.code = 'S2' OR p.id IS NULL) - AND tvh.code = 'PREVU' -) t; +-- AFFECTATION_HDFK_IDX +CREATE INDEX "AFFECTATION_HDFK_IDX" ON "AFFECTATION" ("HISTO_DESTRUCTEUR_ID"); --- V_INDICATEUR_1120 -CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_1120" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID") AS - SELECT rownum id, t.ANNEE_ID,t.INTERVENANT_ID,t.STRUCTURE_ID FROM ( -SELECT DISTINCT - idc.annee_id, - idc.intervenant_id, - idc.structure_id -FROM - v_indic_depass_charges idc - JOIN type_volume_horaire tvh ON tvh.id = idc.type_volume_horaire_id - LEFT JOIN periode p ON p.id = idc.periode_id -WHERE - (p.code = 'S1' OR p.id IS NULL) - AND tvh.code = 'REALISE' -) t; +-- AFFECTATION_HMFK_IDX +CREATE INDEX "AFFECTATION_HMFK_IDX" ON "AFFECTATION" ("HISTO_MODIFICATEUR_ID"); --- V_INDICATEUR_1121 -CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_1121" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID") AS - SELECT rownum id, t.ANNEE_ID,t.INTERVENANT_ID,t.STRUCTURE_ID FROM ( -SELECT DISTINCT - idc.annee_id, - idc.intervenant_id, - idc.structure_id -FROM - v_indic_depass_charges idc - JOIN type_volume_horaire tvh ON tvh.id = idc.type_volume_horaire_id - LEFT JOIN periode p ON p.id = idc.periode_id -WHERE - (p.code = 'S2' OR p.id IS NULL) - AND tvh.code = 'REALISE' -) t; +-- AFFECTATION_PK +CREATE UNIQUE INDEX "AFFECTATION_PK" ON "AFFECTATION" ("ID"); --- V_INDICATEUR_120 -CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_120" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID") AS - SELECT - rownum id, - t."ANNEE_ID",t."INTERVENANT_ID",t."STRUCTURE_ID" FROM ( +-- AFFECTATION_ROLE_FK_IDX +CREATE INDEX "AFFECTATION_ROLE_FK_IDX" ON "AFFECTATION" ("ROLE_ID"); -SELECT DISTINCT - s.annee_id annee_id, - s.intervenant_id intervenant_id, - s.structure_id structure_id -FROM - tbl_service s -WHERE - s.type_intervenant_code = 'P' - AND s.type_volume_horaire_code = 'PREVU' - AND s.intervenant_structure_id <> s.structure_id - AND s.valide > 0 - AND s.structure_id IS NOT NULL +-- AFFECTATION_R_HCFK_IDX +CREATE INDEX "AFFECTATION_R_HCFK_IDX" ON "AFFECTATION_RECHERCHE" ("HISTO_CREATEUR_ID"); -) t; +-- AFFECTATION_R_HDFK_IDX +CREATE INDEX "AFFECTATION_R_HDFK_IDX" ON "AFFECTATION_RECHERCHE" ("HISTO_DESTRUCTEUR_ID"); --- V_INDICATEUR_1210 -CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_1210" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID", "PLAFOND", "HEURES") AS - SELECT - i.id id, - i.annee_id, - i.id intervenant_id, - i.structure_id, - AVG(t.plafond) plafond, - AVG(t.heures) heures -FROM - ( - SELECT - vhr.type_volume_horaire_id type_volume_horaire_id, - sr.intervenant_id intervenant_id, - fr.plafond plafond, - fr.id fr_id, - SUM(vhr.heures) heures - FROM - service_referentiel sr - JOIN fonction_referentiel fr ON fr.id = sr.fonction_id - JOIN volume_horaire_ref vhr ON vhr.service_referentiel_id = sr.id AND vhr.histo_destruction IS NULL - JOIN type_volume_horaire tvh ON tvh.id = vhr.type_volume_horaire_id AND tvh.code= 'PREVU' - WHERE - sr.histo_destruction IS NULL - GROUP BY - vhr.type_volume_horaire_id, - sr.intervenant_id, - fr.plafond, - fr.id - ) t - JOIN intervenant i ON i.id = t.intervenant_id -WHERE - t.heures > t.plafond - /*i.id*/ -GROUP BY - t.type_volume_horaire_id, - i.annee_id, - i.id, - i.structure_id; +-- AFFECTATION_R_HMFK_IDX +CREATE INDEX "AFFECTATION_R_HMFK_IDX" ON "AFFECTATION_RECHERCHE" ("HISTO_MODIFICATEUR_ID"); --- V_INDICATEUR_1220 -CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_1220" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID", "PLAFOND", "HEURES") AS - SELECT - i.id id, - i.annee_id, - i.id intervenant_id, - i.structure_id, - AVG(t.plafond) plafond, - AVG(t.heures) heures -FROM - ( - SELECT - vhr.type_volume_horaire_id type_volume_horaire_id, - sr.intervenant_id intervenant_id, - fr.plafond plafond, - fr.id fr_id, - SUM(vhr.heures) heures - FROM - service_referentiel sr - JOIN fonction_referentiel fr ON fr.id = sr.fonction_id - JOIN volume_horaire_ref vhr ON vhr.service_referentiel_id = sr.id AND vhr.histo_destruction IS NULL - JOIN type_volume_horaire tvh ON tvh.id = vhr.type_volume_horaire_id AND tvh.code= 'REALISE' - WHERE - sr.histo_destruction IS NULL - GROUP BY - vhr.type_volume_horaire_id, - sr.intervenant_id, - fr.plafond, - fr.id - ) t - JOIN intervenant i ON i.id = t.intervenant_id -WHERE - t.heures > t.plafond - /*i.id*/ -GROUP BY - t.type_volume_horaire_id, - i.annee_id, - i.id, - i.structure_id; +-- AFFECTATION_R_PK +CREATE UNIQUE INDEX "AFFECTATION_R_PK" ON "AFFECTATION_RECHERCHE" ("ID"); --- V_INDICATEUR_130 -CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_130" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID") AS - SELECT - rownum id, - t."ANNEE_ID",t."INTERVENANT_ID",t."STRUCTURE_ID" FROM ( +-- AFFECTATION_R_SOURCE_FK_IDX +CREATE INDEX "AFFECTATION_R_SOURCE_FK_IDX" ON "AFFECTATION_RECHERCHE" ("SOURCE_ID"); -SELECT DISTINCT - s.annee_id annee_id, - s.intervenant_id intervenant_id, - i.structure_id structure_id -FROM - tbl_service s - JOIN intervenant i ON i.id = s.intervenant_id - JOIN statut_intervenant si ON si.id = i.statut_id -WHERE - si.tem_biatss = 1 - AND s.type_volume_horaire_code = 'PREVU' - AND s.intervenant_structure_id <> s.structure_id - AND s.valide > 0 - AND s.structure_id IS NOT NULL +-- AFFECTATION_R_SRC_UN +CREATE UNIQUE INDEX "AFFECTATION_R_SRC_UN" ON "AFFECTATION_RECHERCHE" ("SOURCE_CODE"); -) t; +-- AFFECTATION_R_STRUCTURE_FK_IDX +CREATE INDEX "AFFECTATION_R_STRUCTURE_FK_IDX" ON "AFFECTATION_RECHERCHE" ("STRUCTURE_ID"); --- V_INDICATEUR_210 -CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_210" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID") AS - SELECT - rownum id, - w.annee_id, - w.intervenant_id, - w.structure_id -FROM - tbl_workflow w -WHERE - w.atteignable = 1 - AND w.etape_code = 'CONSEIL_RESTREINT' - AND w.objectif > 0 - AND w.realisation < 1; +-- AFFECTATION_SOURCE_FK_IDX +CREATE INDEX "AFFECTATION_SOURCE_FK_IDX" ON "AFFECTATION" ("SOURCE_ID"); --- V_INDICATEUR_220 -CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_220" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID") AS - SELECT - rownum id, - w.annee_id, - w.intervenant_id, - i.structure_id -FROM - tbl_workflow w - JOIN intervenant i ON i.id = w.intervenant_id -WHERE - w.atteignable = 1 - AND w.etape_code = 'CONSEIL_ACADEMIQUE' - AND w.objectif > 0 - AND w.realisation < 1; +-- AFFECTATION_SOURCE_UN +CREATE UNIQUE INDEX "AFFECTATION_SOURCE_UN" ON "AFFECTATION" ("SOURCE_CODE"); --- V_INDICATEUR_310 -CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_310" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID") AS - WITH caok AS ( - SELECT - w.intervenant_id - FROM - tbl_workflow w - WHERE - w.objectif > 0 - AND w.etape_code = 'CONSEIL_ACADEMIQUE' - AND w.realisation = w.objectif -) -SELECT - rownum id, - w.annee_id, - w.intervenant_id, - w.structure_id -FROM - tbl_workflow w - JOIN caok ON caok.intervenant_id = w.intervenant_id -WHERE - w.atteignable = 1 - AND w.etape_code = 'CONTRAT' - AND w.objectif > 0 - AND w.realisation < 1; +-- AFFECTATION_STRUCTURE_FK_IDX +CREATE INDEX "AFFECTATION_STRUCTURE_FK_IDX" ON "AFFECTATION" ("STRUCTURE_ID"); --- V_INDICATEUR_320 -CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_320" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID") AS - SELECT - rownum id, - t."ANNEE_ID",t."INTERVENANT_ID",t."STRUCTURE_ID" -FROM ( -SELECT DISTINCT - w.annee_id, - w.intervenant_id, - w.structure_id -FROM - tbl_workflow w - LEFT JOIN tbl_contrat c ON c.INTERVENANT_ID = w.intervenant_id AND w.structure_id = c.structure_id -WHERE - w.atteignable = 1 - AND w.etape_code = 'CONTRAT' - AND w.objectif > 0 - AND w.realisation = 0 - AND NVL(c.EDITE,0) <> 1 -) t; +-- AFFECTATION__UN +CREATE UNIQUE INDEX "AFFECTATION__UN" ON "AFFECTATION" ("ROLE_ID", "STRUCTURE_ID", "HISTO_DESTRUCTION", "UTILISATEUR_ID"); + +-- AGREMENT_HCFK_IDX +CREATE INDEX "AGREMENT_HCFK_IDX" ON "AGREMENT" ("HISTO_CREATEUR_ID"); + +-- AGREMENT_HDFK_IDX +CREATE INDEX "AGREMENT_HDFK_IDX" ON "AGREMENT" ("HISTO_DESTRUCTEUR_ID"); + +-- AGREMENT_HMFK_IDX +CREATE INDEX "AGREMENT_HMFK_IDX" ON "AGREMENT" ("HISTO_MODIFICATEUR_ID"); + +-- AGREMENT_INTERVENANT_FK_IDX +CREATE INDEX "AGREMENT_INTERVENANT_FK_IDX" ON "AGREMENT" ("INTERVENANT_ID"); + +-- AGREMENT_PK +CREATE UNIQUE INDEX "AGREMENT_PK" ON "AGREMENT" ("ID"); + +-- AGREMENT_STRUCTURE_FK_IDX +CREATE INDEX "AGREMENT_STRUCTURE_FK_IDX" ON "AGREMENT" ("STRUCTURE_ID"); + +-- AGREMENT_TYPE_AGREMENT_FK_IDX +CREATE INDEX "AGREMENT_TYPE_AGREMENT_FK_IDX" ON "AGREMENT" ("TYPE_AGREMENT_ID"); + +-- AGREMENT__UN +CREATE UNIQUE INDEX "AGREMENT__UN" ON "AGREMENT" ("TYPE_AGREMENT_ID", "INTERVENANT_ID", "STRUCTURE_ID", "HISTO_DESTRUCTION"); + +-- AII_FK_IDX +CREATE INDEX "AII_FK_IDX" ON "ADRESSE_INTERVENANT" ("INTERVENANT_ID"); + +-- AI_SOURCE_FK_IDX +CREATE INDEX "AI_SOURCE_FK_IDX" ON "ADRESSE_INTERVENANT" ("SOURCE_ID"); + +-- ANNEE_PK +CREATE UNIQUE INDEX "ANNEE_PK" ON "ANNEE" ("ID"); + +-- AR_INTERVENANT_FK_IDX +CREATE INDEX "AR_INTERVENANT_FK_IDX" ON "AFFECTATION_RECHERCHE" ("INTERVENANT_ID"); --- V_INDICATEUR_330 -CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_330" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID") AS - WITH has_contrat AS ( - SELECT DISTINCT - intervenant_id - FROM - tbl_contrat - WHERE - edite > 0 -) -SELECT - rownum id, - w.annee_id, - w.intervenant_id, - w.structure_id -FROM - tbl_workflow w - JOIN has_contrat hc ON hc.intervenant_id = w.intervenant_id -WHERE - w.atteignable = 1 - AND w.etape_code = 'CONTRAT' - AND w.objectif > 0 - AND w.realisation < w.objectif; +-- AS_SOURCE_FK_IDX +CREATE INDEX "AS_SOURCE_FK_IDX" ON "ADRESSE_STRUCTURE" ("SOURCE_ID"); --- V_INDICATEUR_340 -CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_340" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID") AS - SELECT - rownum id, - s.annee_id, - s.intervenant_id, - s.structure_id -FROM - tbl_service s - JOIN tbl_workflow w ON w.intervenant_id = s.intervenant_id AND w.structure_id = s.structure_id -WHERE - s.type_intervenant_code = 'V' - AND s.type_volume_horaire_code = 'PREVU' - AND nbvh <> valide - AND w.etape_code = 'CONTRAT' - AND w.atteignable = 1 - AND w.objectif > 0 - AND w.realisation = w.objectif; +-- AS_STRUCTURE_FK_IDX +CREATE INDEX "AS_STRUCTURE_FK_IDX" ON "ADRESSE_STRUCTURE" ("STRUCTURE_ID"); --- V_INDICATEUR_350 -CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_350" ("ID", "INTERVENANT_ID", "ANNEE_ID", "STRUCTURE_ID", "CONTRAT_ID") AS - SELECT - rownum id, - t."INTERVENANT_ID",t."ANNEE_ID",t."STRUCTURE_ID",t."CONTRAT_ID" -FROM ( -SELECT DISTINCT - i.id intervenant_id, - i.annee_id annee_id, - c.structure_id structure_id, - c.id contrat_id -FROM - contrat c - JOIN contrat_fichier cf ON cf.contrat_id = c.id - JOIN fichier f ON f.id = cf.fichier_id - AND f.histo_destruction IS NULL - JOIN intervenant i ON i.id = c.intervenant_id -WHERE - c.histo_destruction IS NULL -) t; +-- CAMPAGNE_PK_IDX +CREATE UNIQUE INDEX "CAMPAGNE_PK_IDX" ON "CAMPAGNE_SAISIE" ("ID"); --- V_INDICATEUR_360 -CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_360" ("ID", "INTERVENANT_ID", "ANNEE_ID", "STRUCTURE_ID", "CONTRAT_ID") AS - SELECT - rownum id, - t."INTERVENANT_ID",t."ANNEE_ID",t."STRUCTURE_ID",t."CONTRAT_ID" -FROM ( -SELECT DISTINCT - i.id intervenant_id, - i.annee_id annee_id, - c.structure_id structure_id, - c.id contrat_id -FROM - contrat c - JOIN intervenant i ON i.id = c.intervenant_id - JOIN tbl_workflow w ON w.intervenant_id = i.id AND w.structure_id = c.structure_id AND w.etape_code = 'CONTRAT' AND w.atteignable = 1 - JOIN validation v ON v.id = c.validation_id AND v.histo_destruction IS NULL -WHERE - c.histo_destruction IS NULL - AND c.date_retour_signe IS NULL -) t; +-- CAMPAGNE_SAISIE_ANNEE_FK_IDX +CREATE INDEX "CAMPAGNE_SAISIE_ANNEE_FK_IDX" ON "CAMPAGNE_SAISIE" ("ANNEE_ID"); --- V_INDICATEUR_410 -CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_410" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID") AS - SELECT - rownum id, - d.annee_id, - d.intervenant_id, - i.structure_id -FROM - tbl_dossier d - JOIN intervenant i ON i.id = d.intervenant_id -WHERE - d.dossier_id IS NOT NULL - AND d.validation_id IS NULL - AND d.peut_saisir_dossier = 1; +-- CAMPAGNE_SAISIE__UN_IDX +CREATE UNIQUE INDEX "CAMPAGNE_SAISIE__UN_IDX" ON "CAMPAGNE_SAISIE" ("ANNEE_ID", "TYPE_INTERVENANT_ID", "TYPE_VOLUME_HORAIRE_ID"); --- V_INDICATEUR_420 -CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_420" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID") AS - SELECT rownum id, t."ANNEE_ID",t."INTERVENANT_ID",t."STRUCTURE_ID" FROM ( - SELECT DISTINCT - i.annee_id annee_id, - i.id intervenant_id, - i.structure_id - FROM - indic_modif_dossier d - JOIN intervenant i ON i.id = d.intervenant_id - WHERE - d.histo_destruction IS NULL -) t; +-- CATEGORIE_PRIVILEGE_PK +CREATE UNIQUE INDEX "CATEGORIE_PRIVILEGE_PK" ON "CATEGORIE_PRIVILEGE" ("ID"); --- V_INDICATEUR_510 -CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_510" ("ID", "INTERVENANT_ID", "ANNEE_ID", "STRUCTURE_ID", "ELEMENTS") AS - WITH t AS ( -SELECT - s.intervenant_id, - s.annee_id, - s.structure_id, - listagg( ep.source_code || ' - ' || ep.libelle, '||') WITHIN GROUP (ORDER BY ep.libelle) elements -FROM - tbl_service s - LEFT JOIN element_pedagogique ep ON ep.id = s.element_pedagogique_id -WHERE - ( - s.has_heures_mauvaise_periode = 1 - OR s.etape_histo = 0 - OR s.element_pedagogique_histo = 0 - ) - AND s.heures > 0 -GROUP BY - s.intervenant_id, - s.annee_id, - s.structure_id -) -SELECT - rownum id, t."INTERVENANT_ID",t."ANNEE_ID",t."STRUCTURE_ID", t.elements -FROM t; +-- CATEGORIE_PRIVILEGE__UN +CREATE UNIQUE INDEX "CATEGORIE_PRIVILEGE__UN" ON "CATEGORIE_PRIVILEGE" ("CODE"); --- V_INDICATEUR_520 -CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_520" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID", "PLAFOND", "HEURES") AS - SELECT - fr.id id, - i.annee_id annee_id, - i.id intervenant_id, - i.structure_id structure_id, - si.plafond_hc_hors_remu_fc plafond, - fr.heures_compl_fa + fr.heures_compl_fc + fr.heures_compl_fi + fr.heures_compl_referentiel heures -FROM - formule_resultat fr - JOIN type_volume_horaire tvh ON tvh.id = fr.type_volume_horaire_id - JOIN etat_volume_horaire evh ON evh.id = fr.etat_volume_horaire_id - JOIN intervenant i ON i.id = fr.intervenant_id - JOIN statut_intervenant si ON si.id = i.statut_id -WHERE - tvh.code = 'PREVU' - AND evh.code = 'saisi' - AND si.plafond_hc_hors_remu_fc < fr.heures_compl_fa + fr.heures_compl_fc + fr.heures_compl_fi + fr.heures_compl_referentiel; +-- CCEP_CENTRE_COUT_FK_IDX +CREATE INDEX "CCEP_CENTRE_COUT_FK_IDX" ON "CENTRE_COUT_EP" ("CENTRE_COUT_ID"); --- V_INDICATEUR_530 -CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_530" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID", "PLAFOND", "HEURES") AS - SELECT - fr.id id, - i.annee_id annee_id, - i.id intervenant_id, - i.structure_id structure_id, - si.plafond_hc_hors_remu_fc plafond, - fr.heures_compl_fa + fr.heures_compl_fc + fr.heures_compl_fi + fr.heures_compl_referentiel heures -FROM - formule_resultat fr - JOIN type_volume_horaire tvh ON tvh.id = fr.type_volume_horaire_id - JOIN etat_volume_horaire evh ON evh.id = fr.etat_volume_horaire_id - JOIN intervenant i ON i.id = fr.intervenant_id - JOIN statut_intervenant si ON si.id = i.statut_id -WHERE - tvh.code = 'REALISE' - AND evh.code = 'saisi' - AND si.plafond_hc_hors_remu_fc < fr.heures_compl_fa + fr.heures_compl_fc + fr.heures_compl_fi + fr.heures_compl_referentiel; +-- CCEP_EP_FK_IDX +CREATE INDEX "CCEP_EP_FK_IDX" ON "CENTRE_COUT_EP" ("ELEMENT_PEDAGOGIQUE_ID"); --- V_INDICATEUR_540 -CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_540" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID", "PLAFOND", "HEURES") AS - SELECT - rownum id, - i.annee_id annee_id, - i.id intervenant_id, - i.structure_id structure_id, - ROUND( (COALESCE(si.plafond_hc_remu_fc,0) - COALESCE(i.montant_indemnite_fc,0)) / a.taux_hetd, 2 ) plafond, - fr.heures_compl_fc_majorees heures -FROM - intervenant i - JOIN annee a ON a.id = i.annee_id - JOIN statut_intervenant si ON si.id = i.statut_id - JOIN etat_volume_horaire evh ON evh.code = 'saisi' - JOIN formule_resultat fr ON fr.intervenant_id = i.id AND fr.etat_volume_horaire_id = evh.id - JOIN type_volume_horaire tvh ON tvh.id = fr.type_volume_horaire_id -WHERE - fr.heures_compl_fc_majorees > ROUND( (COALESCE(si.plafond_hc_remu_fc,0) - COALESCE(i.montant_indemnite_fc,0)) / a.taux_hetd, 2 ) - AND tvh.code = 'PREVU'; +-- CCEP_SOURCE_FK_IDX +CREATE INDEX "CCEP_SOURCE_FK_IDX" ON "CENTRE_COUT_EP" ("SOURCE_ID"); --- V_INDICATEUR_550 -CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_550" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID", "PLAFOND", "HEURES") AS - SELECT - rownum id, - i.annee_id annee_id, - i.id intervenant_id, - i.structure_id structure_id, - ROUND( (COALESCE(si.plafond_hc_remu_fc,0) - COALESCE(i.montant_indemnite_fc,0)) / a.taux_hetd, 2 ) plafond, - fr.heures_compl_fc_majorees heures -FROM - intervenant i - JOIN annee a ON a.id = i.annee_id - JOIN statut_intervenant si ON si.id = i.statut_id - JOIN etat_volume_horaire evh ON evh.code = 'saisi' - JOIN formule_resultat fr ON fr.intervenant_id = i.id AND fr.etat_volume_horaire_id = evh.id - JOIN type_volume_horaire tvh ON tvh.id = fr.type_volume_horaire_id -WHERE - fr.heures_compl_fc_majorees > ROUND( (COALESCE(si.plafond_hc_remu_fc,0) - COALESCE(i.montant_indemnite_fc,0)) / a.taux_hetd, 2 ) - AND tvh.code = 'REALISE'; +-- CCEP_TYPE_HEURES_FK_IDX +CREATE INDEX "CCEP_TYPE_HEURES_FK_IDX" ON "CENTRE_COUT_EP" ("TYPE_HEURES_ID"); --- V_INDICATEUR_560 -CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_560" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID", "PLAFOND", "HEURES") AS - SELECT - rownum id, - i.annee_id annee_id, - i.id intervenant_id, - i.structure_id structure_id, - si.maximum_hetd plafond, - fr.total heures -FROM - intervenant i - JOIN etat_volume_horaire evh ON evh.code = 'saisi' - JOIN formule_resultat fr ON fr.intervenant_id = i.id AND fr.etat_volume_horaire_id = evh.id - JOIN statut_intervenant si ON si.id = i.statut_id - JOIN type_volume_horaire tvh ON tvh.id = fr.type_volume_horaire_id AND tvh.code= 'PREVU' -WHERE - fr.total > si.maximum_hetd; +-- CCS_CC_S__UN_IDX +CREATE UNIQUE INDEX "CCS_CC_S__UN_IDX" ON "CENTRE_COUT_STRUCTURE" ("CENTRE_COUT_ID", "STRUCTURE_ID", "HISTO_DESTRUCTION"); --- V_INDICATEUR_570 -CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_570" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID", "PLAFOND", "HEURES") AS - SELECT - rownum id, - i.annee_id annee_id, - i.id intervenant_id, - i.structure_id structure_id, - si.maximum_hetd plafond, - fr.total heures -FROM - intervenant i - JOIN etat_volume_horaire evh ON evh.code = 'saisi' - JOIN formule_resultat fr ON fr.intervenant_id = i.id AND fr.etat_volume_horaire_id = evh.id - JOIN statut_intervenant si ON si.id = i.statut_id - JOIN type_volume_horaire tvh ON tvh.id = fr.type_volume_horaire_id AND tvh.code= 'REALISE' -WHERE - fr.total > si.maximum_hetd; +-- CCS_CENTRE_COUT_FK_IDX +CREATE INDEX "CCS_CENTRE_COUT_FK_IDX" ON "CENTRE_COUT_STRUCTURE" ("CENTRE_COUT_ID"); --- V_INDICATEUR_610 -CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_610" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID", "STATUT_INTERVENANT_ID") AS - SELECT rownum id, t."ANNEE_ID",t."INTERVENANT_ID",t."STRUCTURE_ID",t."STATUT_INTERVENANT_ID" FROM -( -SELECT DISTINCT - w.annee_id, - w.intervenant_id, - w.structure_id, - w.statut_intervenant_id -FROM - tbl_workflow w -WHERE - w.etape_code = 'SERVICE_VALIDATION' - AND w.type_intervenant_code = 'P' - AND w.atteignable = 1 - AND w.objectif > w.realisation -) t; +-- CCS_SOURCE_CODE_UN_IDX +CREATE UNIQUE INDEX "CCS_SOURCE_CODE_UN_IDX" ON "CENTRE_COUT_STRUCTURE" ("SOURCE_CODE", "HISTO_DESTRUCTION"); + +-- CCS_STRUCTURE_FK_IDX +CREATE INDEX "CCS_STRUCTURE_FK_IDX" ON "CENTRE_COUT_STRUCTURE" ("STRUCTURE_ID"); + +-- CC_ACTIVITE_FA +CREATE INDEX "CC_ACTIVITE_FA" ON "CC_ACTIVITE" ("FA"); + +-- CC_ACTIVITE_FC +CREATE INDEX "CC_ACTIVITE_FC" ON "CC_ACTIVITE" ("FC"); + +-- CC_ACTIVITE_FI +CREATE INDEX "CC_ACTIVITE_FI" ON "CC_ACTIVITE" ("FI"); + +-- CC_ACTIVITE_HCFK_IDX +CREATE INDEX "CC_ACTIVITE_HCFK_IDX" ON "CC_ACTIVITE" ("HISTO_CREATEUR_ID"); + +-- CC_ACTIVITE_HDFK_IDX +CREATE INDEX "CC_ACTIVITE_HDFK_IDX" ON "CC_ACTIVITE" ("HISTO_DESTRUCTEUR_ID"); + +-- CC_ACTIVITE_HMFK_IDX +CREATE INDEX "CC_ACTIVITE_HMFK_IDX" ON "CC_ACTIVITE" ("HISTO_MODIFICATEUR_ID"); + +-- CC_ACTIVITE_PK +CREATE UNIQUE INDEX "CC_ACTIVITE_PK" ON "CC_ACTIVITE" ("ID"); + +-- CC_ACTIVITE_REF +CREATE INDEX "CC_ACTIVITE_REF" ON "CC_ACTIVITE" ("REFERENTIEL"); + +-- CC_TYPE_RESSOURCE_FK_IDX +CREATE INDEX "CC_TYPE_RESSOURCE_FK_IDX" ON "CENTRE_COUT" ("TYPE_RESSOURCE_ID"); --- V_INDICATEUR_620 -CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_620" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID") AS - SELECT rownum id, t."ANNEE_ID",t."INTERVENANT_ID",t."STRUCTURE_ID" FROM -( -SELECT DISTINCT - w.annee_id, - w.intervenant_id, - w.structure_id -FROM - tbl_workflow w -WHERE - w.etape_code = 'REFERENTIEL_VALIDATION' - AND w.type_intervenant_code = 'P' - AND w.atteignable = 1 - AND w.objectif > w.realisation -) t; +-- CENTRE_COUT_ACTIVITE_FK_IDX +CREATE INDEX "CENTRE_COUT_ACTIVITE_FK_IDX" ON "CENTRE_COUT" ("ACTIVITE_ID"); --- V_INDICATEUR_630 -CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_630" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID") AS - SELECT rownum id, t."ANNEE_ID",t."INTERVENANT_ID",t."STRUCTURE_ID" FROM -( -SELECT DISTINCT - w.annee_id, - w.intervenant_id, - i.structure_id -FROM - tbl_workflow w - JOIN intervenant i ON i.id = w.intervenant_id -WHERE - w.etape_code = 'CLOTURE_REALISE' - AND w.atteignable = 1 - AND w.objectif > w.realisation -) t; +-- CENTRE_COUT_CENTRE_COUT_FK_IDX +CREATE INDEX "CENTRE_COUT_CENTRE_COUT_FK_IDX" ON "CENTRE_COUT" ("PARENT_ID"); --- V_INDICATEUR_640 -CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_640" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID") AS - SELECT rownum id, t."ANNEE_ID",t."INTERVENANT_ID",t."STRUCTURE_ID" FROM -( -SELECT DISTINCT - w.annee_id, - w.intervenant_id, - w.structure_id -FROM - tbl_workflow w - JOIN tbl_workflow wc ON wc.intervenant_id = w.intervenant_id -WHERE - w.etape_code = 'SERVICE_VALIDATION_REALISE' - AND w.objectif > w.realisation - AND w.atteignable = 1 - - AND wc.etape_code = 'CLOTURE_REALISE' - AND wc.objectif = wc.realisation -) t; +-- CENTRE_COUT_EP_HCFK_IDX +CREATE INDEX "CENTRE_COUT_EP_HCFK_IDX" ON "CENTRE_COUT_EP" ("HISTO_CREATEUR_ID"); --- V_INDICATEUR_650 -CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_650" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID", "STRUCTURES_CONCERNEES") AS - SELECT rownum id, t."ANNEE_ID",t."INTERVENANT_ID",t."STRUCTURE_ID",t."STRUCTURES_CONCERNEES" FROM -( -SELECT - w.annee_id, - w.intervenant_id, - i.structure_id, - LISTAGG(s.libelle_court, '||') WITHIN GROUP (ORDER BY s.libelle_court) structures_concernees -FROM - tbl_workflow w - JOIN tbl_workflow wc ON wc.intervenant_id = w.intervenant_id - JOIN intervenant i ON i.id = wc.intervenant_id - JOIN structure s ON s.id = w.structure_id -WHERE - w.etape_code = 'SERVICE_VALIDATION_REALISE' - AND w.objectif > w.realisation - AND w.atteignable = 1 - - AND wc.etape_code = 'CLOTURE_REALISE' - AND wc.objectif = wc.realisation - AND w.structure_id <> i.structure_id -GROUP BY - w.annee_id, - w.intervenant_id, - i.structure_id -) t; +-- CENTRE_COUT_EP_HDFK_IDX +CREATE INDEX "CENTRE_COUT_EP_HDFK_IDX" ON "CENTRE_COUT_EP" ("HISTO_DESTRUCTEUR_ID"); --- V_INDICATEUR_660 -CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_660" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID") AS - SELECT rownum id, t."ANNEE_ID",t."INTERVENANT_ID",t."STRUCTURE_ID" FROM -( -SELECT - w.annee_id, - w.intervenant_id, - i.structure_id -FROM - tbl_workflow w - JOIN tbl_workflow wc ON wc.intervenant_id = w.intervenant_id - JOIN intervenant i ON i.id = wc.intervenant_id - JOIN structure s ON s.id = w.structure_id -WHERE - w.etape_code = 'REFERENTIEL_VALIDATION_REALISE' - AND w.objectif > w.realisation - AND w.atteignable = 1 - - AND wc.etape_code = 'CLOTURE_REALISE' - AND wc.objectif = wc.realisation - AND w.structure_id = i.structure_id -GROUP BY - w.annee_id, - w.intervenant_id, - i.structure_id -) t; +-- CENTRE_COUT_EP_HMFK_IDX +CREATE INDEX "CENTRE_COUT_EP_HMFK_IDX" ON "CENTRE_COUT_EP" ("HISTO_MODIFICATEUR_ID"); --- V_INDICATEUR_670 -CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_670" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID", "STRUCTURES_CONCERNEES") AS - SELECT rownum id, t."ANNEE_ID",t."INTERVENANT_ID",t."STRUCTURE_ID",t."STRUCTURES_CONCERNEES" FROM -( -SELECT - w.annee_id, - w.intervenant_id, - i.structure_id, - LISTAGG(s.libelle_court, '||') WITHIN GROUP (ORDER BY s.libelle_court) structures_concernees -FROM - tbl_workflow w - JOIN tbl_workflow wc ON wc.intervenant_id = w.intervenant_id - JOIN intervenant i ON i.id = wc.intervenant_id - JOIN structure s ON s.id = w.structure_id -WHERE - w.etape_code = 'REFERENTIEL_VALIDATION_REALISE' - AND w.objectif > w.realisation - AND w.atteignable = 1 - - AND wc.etape_code = 'CLOTURE_REALISE' - AND wc.objectif = wc.realisation - AND w.structure_id <> i.structure_id -GROUP BY - w.annee_id, - w.intervenant_id, - i.structure_id -) t; +-- CENTRE_COUT_EP_PK +CREATE UNIQUE INDEX "CENTRE_COUT_EP_PK" ON "CENTRE_COUT_EP" ("ID"); --- V_INDICATEUR_680 -CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_680" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID", "PLAFOND", "HEURES") AS - SELECT - fr.id id, - i.annee_id annee_id, - i.id intervenant_id, - i.structure_id structure_id, - si.plafond_referentiel plafond, - fr.heures_compl_referentiel heures -FROM - formule_resultat fr - JOIN type_volume_horaire tvh ON tvh.id = fr.type_volume_horaire_id - JOIN etat_volume_horaire evh ON evh.id = fr.etat_volume_horaire_id - JOIN intervenant i ON i.id = fr.intervenant_id - JOIN statut_intervenant si ON si.id = i.statut_id -WHERE - tvh.code = 'PREVU' - AND evh.code = 'saisi' - AND si.plafond_referentiel < fr.service_referentiel + fr.heures_compl_referentiel; +-- CENTRE_COUT_EP__UN +CREATE UNIQUE INDEX "CENTRE_COUT_EP__UN" ON "CENTRE_COUT_EP" ("CENTRE_COUT_ID", "ELEMENT_PEDAGOGIQUE_ID", "TYPE_HEURES_ID", "HISTO_DESTRUCTION"); --- V_INDICATEUR_690 -CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_690" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID", "PLAFOND", "HEURES") AS - SELECT - fr.id id, - i.annee_id annee_id, - i.id intervenant_id, - i.structure_id structure_id, - si.plafond_referentiel plafond, - fr.heures_compl_referentiel heures -FROM - formule_resultat fr - JOIN type_volume_horaire tvh ON tvh.id = fr.type_volume_horaire_id - JOIN etat_volume_horaire evh ON evh.id = fr.etat_volume_horaire_id - JOIN intervenant i ON i.id = fr.intervenant_id - JOIN statut_intervenant si ON si.id = i.statut_id -WHERE - tvh.code = 'REALISE' - AND evh.code = 'saisi' - AND si.plafond_referentiel < fr.service_referentiel + fr.heures_compl_referentiel; +-- CENTRE_COUT_HCFK_IDX +CREATE INDEX "CENTRE_COUT_HCFK_IDX" ON "CENTRE_COUT" ("HISTO_CREATEUR_ID"); --- V_INDICATEUR_710 -CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_710" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID") AS - SELECT rownum id, t."ANNEE_ID",t."INTERVENANT_ID",t."STRUCTURE_ID" FROM -( -SELECT DISTINCT - w.annee_id, - w.intervenant_id, - w.structure_id -FROM - tbl_workflow w -WHERE - w.etape_code = 'SERVICE_VALIDATION' - AND w.type_intervenant_code = 'E' - AND w.atteignable = 1 - AND w.objectif > w.realisation -) t; +-- CENTRE_COUT_HDFK_IDX +CREATE INDEX "CENTRE_COUT_HDFK_IDX" ON "CENTRE_COUT" ("HISTO_DESTRUCTEUR_ID"); --- V_INDICATEUR_720 -CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_720" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID") AS - SELECT rownum id, t."ANNEE_ID",t."INTERVENANT_ID",t."STRUCTURE_ID" FROM -( -SELECT DISTINCT - w.annee_id, - w.intervenant_id, - w.structure_id -FROM - tbl_workflow w -WHERE - w.etape_code = 'SERVICE_VALIDATION_REALISE' - AND w.type_intervenant_code = 'E' - AND w.atteignable = 1 - AND w.objectif > w.realisation -) t; +-- CENTRE_COUT_HMFK_IDX +CREATE INDEX "CENTRE_COUT_HMFK_IDX" ON "CENTRE_COUT" ("HISTO_MODIFICATEUR_ID"); --- V_INDICATEUR_810 -CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_810" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID") AS - SELECT rownum id, t."ANNEE_ID",t."INTERVENANT_ID",t."STRUCTURE_ID" FROM -( -SELECT DISTINCT - w.annee_id, - w.intervenant_id, - w.structure_id -FROM - tbl_workflow w -WHERE - w.etape_code = 'DEMANDE_MEP' - AND w.type_intervenant_code = 'P' - AND w.atteignable = 1 - AND w.objectif > w.realisation -) t; +-- CENTRE_COUT_PK +CREATE UNIQUE INDEX "CENTRE_COUT_PK" ON "CENTRE_COUT" ("ID"); --- V_INDICATEUR_820 -CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_820" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID") AS - SELECT rownum id, t."ANNEE_ID",t."INTERVENANT_ID",t."STRUCTURE_ID" FROM -( -SELECT DISTINCT - w.annee_id, - w.intervenant_id, - w.structure_id -FROM - tbl_workflow w -WHERE - w.etape_code = 'SAISIE_MEP' - AND w.type_intervenant_code = 'P' - AND w.atteignable = 1 - AND w.objectif > w.realisation -) t; +-- CENTRE_COUT_SOURCE_FK_IDX +CREATE INDEX "CENTRE_COUT_SOURCE_FK_IDX" ON "CENTRE_COUT" ("SOURCE_ID"); --- V_INDICATEUR_910 -CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_910" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID") AS - SELECT rownum id, t."ANNEE_ID",t."INTERVENANT_ID",t."STRUCTURE_ID" FROM -( -SELECT DISTINCT - w.annee_id, - w.intervenant_id, - w.structure_id -FROM - tbl_workflow w -WHERE - w.etape_code = 'DEMANDE_MEP' - AND w.type_intervenant_code = 'E' - AND w.atteignable = 1 - AND w.objectif > w.realisation -) t; +-- CENTRE_COUT_STRUCTURE_HCFK_IDX +CREATE INDEX "CENTRE_COUT_STRUCTURE_HCFK_IDX" ON "CENTRE_COUT_STRUCTURE" ("HISTO_CREATEUR_ID"); --- V_INDICATEUR_920 -CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_920" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID") AS - SELECT rownum id, t."ANNEE_ID",t."INTERVENANT_ID",t."STRUCTURE_ID" FROM -( -SELECT DISTINCT - w.annee_id, - w.intervenant_id, - w.structure_id -FROM - tbl_workflow w -WHERE - w.etape_code = 'SAISIE_MEP' - AND w.type_intervenant_code = 'E' - AND w.atteignable = 1 - AND w.objectif > w.realisation -) t; +-- CENTRE_COUT_STRUCTURE_HDFK_IDX +CREATE INDEX "CENTRE_COUT_STRUCTURE_HDFK_IDX" ON "CENTRE_COUT_STRUCTURE" ("HISTO_DESTRUCTEUR_ID"); + +-- CENTRE_COUT_STRUCTURE_HMFK_IDX +CREATE INDEX "CENTRE_COUT_STRUCTURE_HMFK_IDX" ON "CENTRE_COUT_STRUCTURE" ("HISTO_MODIFICATEUR_ID"); + +-- CENTRE_COUT_STRUCTURE_PK_IDX +CREATE UNIQUE INDEX "CENTRE_COUT_STRUCTURE_PK_IDX" ON "CENTRE_COUT_STRUCTURE" ("ID"); + +-- CHEMIN_PEDAGOGIQUE_HCFK_IDX +CREATE INDEX "CHEMIN_PEDAGOGIQUE_HCFK_IDX" ON "CHEMIN_PEDAGOGIQUE" ("HISTO_CREATEUR_ID"); + +-- CHEMIN_PEDAGOGIQUE_HDFK_IDX +CREATE INDEX "CHEMIN_PEDAGOGIQUE_HDFK_IDX" ON "CHEMIN_PEDAGOGIQUE" ("HISTO_DESTRUCTEUR_ID"); + +-- CHEMIN_PEDAGOGIQUE_HMFK_IDX +CREATE INDEX "CHEMIN_PEDAGOGIQUE_HMFK_IDX" ON "CHEMIN_PEDAGOGIQUE" ("HISTO_MODIFICATEUR_ID"); + +-- CHEMIN_PEDAGOGIQUE_PK +CREATE UNIQUE INDEX "CHEMIN_PEDAGOGIQUE_PK" ON "CHEMIN_PEDAGOGIQUE" ("ID"); + +-- CHEMIN_PEDAGO_SRC_ID_UN +CREATE UNIQUE INDEX "CHEMIN_PEDAGO_SRC_ID_UN" ON "CHEMIN_PEDAGOGIQUE" ("SOURCE_CODE"); + +-- CIVILITE_LIBELLE_COURT_UN +CREATE UNIQUE INDEX "CIVILITE_LIBELLE_COURT_UN" ON "CIVILITE" ("LIBELLE_COURT"); + +-- CIVILITE_PK +CREATE UNIQUE INDEX "CIVILITE_PK" ON "CIVILITE" ("ID"); --- V_INDIC_ATTENTE_DEMANDE_MEP -CREATE OR REPLACE FORCE VIEW "V_INDIC_ATTENTE_DEMANDE_MEP" ("ID", "INTERVENANT_ID", "SOURCE_CODE", "CODE", "ANNEE_ID", "STRUCTURE_ID", "TOTAL_HEURES_MEP", "TOTAL_HEURES_COMPL") AS - select to_number(i.id||dmep.structure_id) id, i.id intervenant_id, i.source_code, ti.code, i.annee_id, dmep.structure_id, 0 TOTAL_HEURES_MEP, 0 TOTAL_HEURES_COMPL - from intervenant i - join statut_intervenant si on si.id = i.statut_id - join type_intervenant ti on ti.id = si.type_intervenant_id - -- l'intervenant doit avoir des heures disponibles pour une demande de MEP - join V_HAS_DMEP_A_FAIRE dmep on dmep.intervenant_id = i.id and dmep.has_dmep_a_faire <> 0 - where ( - -- un vacataire n'a pas d'autre contrainte - ti.code = 'E' - or - -- mais un permanent doit... - ( - -- avoir sa saisie de service réalisé clôturée - exists ( - select * from validation v - join type_validation tv on v.type_validation_id = tv.id and tv.code = 'CLOTURE_REALISE' - where v.intervenant_id = i.id and v.histo_destruction IS NULL - ) - -- et tous ses enseignements réalisés validés (toutes composantes d'intervention confondues) - and not exists ( - select * from volume_horaire vh - join service s on vh.service_id = s.id and s.histo_destruction IS NULL - join type_volume_horaire tvh on vh.type_volume_horaire_id = tvh.id and tvh.code = 'REALISE' - left join validation_vol_horaire vvh on vvh.volume_horaire_id = vh.id - left join validation v on vvh.validation_id = v.id and v.histo_destruction IS NULL - left join type_validation tv on v.type_validation_id = tv.id and tv.code = 'SERVICES_PAR_COMP' - where s.intervenant_id = i.id and v.id is null and vh.histo_destruction IS NULL - ) - -- et tout son référentiel réalisé validé (toutes composantes d'intervention confondues) - and not exists ( - select * from volume_horaire_ref vh - join service_referentiel s on vh.service_referentiel_id = s.id and s.histo_destruction IS NULL - join type_volume_horaire tvh on vh.type_volume_horaire_id = tvh.id and tvh.code = 'REALISE' - left join validation_vol_horaire_ref vvh on vvh.volume_horaire_ref_id = vh.id - left join validation v on vvh.validation_id = v.id and v.histo_destruction IS NULL - left join type_validation tv on v.type_validation_id = tv.id and tv.code = 'SERVICES_PAR_COMP' - where s.intervenant_id = i.id and v.id is null and vh.histo_destruction IS NULL - ) - ) - ); +-- CONTRAT_CONTRAT_FK_IDX +CREATE INDEX "CONTRAT_CONTRAT_FK_IDX" ON "CONTRAT" ("CONTRAT_ID"); --- V_INDIC_ATTENTE_MEP -CREATE OR REPLACE FORCE VIEW "V_INDIC_ATTENTE_MEP" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID", "TOTAL_HEURES_MEP") AS - with - -- total des heures comp ayant fait l'objet d'une *demande* de mise en paiement - mep as ( - select intervenant_id, structure_id, sum(nvl(mep_heures, 0)) total_heures_mep - from ( - -- enseignements - select - fr.intervenant_id, - nvl(ep.structure_id, i.structure_id) structure_id, - nvl(mep.heures, 0) mep_heures - from mise_en_paiement mep - join formule_resultat_service frs on mep.formule_res_service_id = frs.id - join formule_resultat fr on frs.formule_resultat_id = fr.id - join intervenant i on fr.intervenant_id = i.id - join type_volume_horaire tvh on fr.type_volume_horaire_id = tvh.id and tvh.code = 'REALISE' - join etat_volume_horaire evh on fr.etat_volume_horaire_id = evh.id and evh.code = 'valide' - join service s on frs.service_id = s.id - left join element_pedagogique ep on s.element_pedagogique_id = ep.id - where mep.histo_destruction IS NULL and mep.date_mise_en_paiement is null -- si date_mise_en_paiement = null, c'est une demande - union all - -- referentiel - select - fr.intervenant_id, - s.structure_id, - nvl(mep.heures, 0) mep_heures - from mise_en_paiement mep - join formule_resultat_service_ref frs on mep.formule_res_service_ref_id = frs.id - join formule_resultat fr on frs.formule_resultat_id = fr.id - join intervenant i on fr.intervenant_id = i.id - join type_volume_horaire tvh on fr.type_volume_horaire_id = tvh.id and tvh.code = 'REALISE' - join etat_volume_horaire evh on fr.etat_volume_horaire_id = evh.id and evh.code = 'valide' - join service_referentiel s on frs.service_referentiel_id = s.id - where mep.histo_destruction IS NULL and mep.date_mise_en_paiement is null -- si date_mise_en_paiement = null, c'est une demande - ) - group by intervenant_id, structure_id - ) -select to_number(intervenant_id||structure_id) id, 2014 annee_id, intervenant_id, structure_id, total_heures_mep from mep; +-- CONTRAT_FICHIER_FFK_IDX +CREATE INDEX "CONTRAT_FICHIER_FFK_IDX" ON "CONTRAT_FICHIER" ("FICHIER_ID"); --- V_INDIC_ATT_VALID_ENS_AUTRE -CREATE OR REPLACE FORCE VIEW "V_INDIC_ATT_VALID_ENS_AUTRE" ("ID", "INTERVENANT_ID", "STRUCTURE_ID") AS - SELECT distinct - to_char(v.intervenant_id)||to_char(v.structure_id) as id, - v.intervenant_id, - v.structure_id -FROM v_indic_tous_services_valides v -INNER JOIN intervenant i ON V.INTERVENANT_ID = i.id AND i.HISTO_DESTRUCTION IS NULL -INNER JOIN TYPE_VOLUME_HORAIRE tvh ON v.type_volume_horaire_id = tvh.id AND tvh.code = 'REALISE' -INNER JOIN VALIDATION clot ON clot.intervenant_id = i.id AND clot.HISTO_DESTRUCTION IS NULL -INNER JOIN TYPE_VALIDATION tv ON tv.id = clot.type_validation_id AND tv.code = 'CLOTURE_REALISE' -WHERE EXISTS - ( - SELECT s2.ID - FROM SERVICE s2 - INNER JOIN ELEMENT_PEDAGOGIQUE ep2 ON s2.ELEMENT_PEDAGOGIQUE_ID = ep2.ID AND ep2.HISTO_DESTRUCTION IS NULL - INNER JOIN VOLUME_HORAIRE vh2 ON s2.ID = vh2.SERVICE_ID AND vh2.HISTO_DESTRUCTION IS NULL - LEFT JOIN VALIDATION_VOL_HORAIRE vvh2 ON vh2.ID = vvh2.VOLUME_HORAIRE_ID - LEFT JOIN VALIDATION val2 ON val2.ID = vvh2.VALIDATION_ID AND val2.HISTO_DESTRUCTION IS NULL - WHERE - s2.INTERVENANT_ID = v.intervenant_id - AND s2.HISTO_DESTRUCTION IS NULL - AND VH2.TYPE_VOLUME_HORAIRE_ID = V.TYPE_VOLUME_HORAIRE_ID - AND ep2.structure_id <> v.structure_id -- autre composante d'intervention que celle qui a tout validé - AND val2.ID IS NULL -- au moins un VH non validé - ); +-- CONTRAT_FICHIER_FK +CREATE INDEX "CONTRAT_FICHIER_FK" ON "CONTRAT_FICHIER" ("CONTRAT_ID"); --- V_INDIC_ATT_VALID_REF_AUTRE -CREATE OR REPLACE FORCE VIEW "V_INDIC_ATT_VALID_REF_AUTRE" ("ID", "INTERVENANT_ID", "STRUCTURE_ID") AS - SELECT distinct - to_char(v.intervenant_id)||to_char(v.structure_id) as id, - v.intervenant_id, - v.structure_id -FROM v_indic_tous_services_valides v -INNER JOIN intervenant i ON V.INTERVENANT_ID = i.id AND i.HISTO_DESTRUCTION IS NULL -INNER JOIN TYPE_VOLUME_HORAIRE tvh ON v.type_volume_horaire_id = tvh.id AND tvh.code = 'REALISE' -INNER JOIN VALIDATION clot ON clot.intervenant_id = i.id AND clot.HISTO_DESTRUCTION IS NULL -INNER JOIN TYPE_VALIDATION tv ON tv.id = clot.type_validation_id AND tv.code = 'CLOTURE_REALISE' -WHERE EXISTS - ( - SELECT s.ID - FROM SERVICE_REFERENTIEL s - INNER JOIN FONCTION_REFERENTIEL f ON S.FONCTION_ID = f.ID AND f.HISTO_DESTRUCTION IS NULL - INNER JOIN VOLUME_HORAIRE_REF vh ON s.ID = VH.SERVICE_REFERENTIEL_ID AND vh.HISTO_DESTRUCTION IS NULL - LEFT JOIN VALIDATION_VOL_HORAIRE vvh ON vh.ID = vvh.VOLUME_HORAIRE_ID - LEFT JOIN VALIDATION val ON val.ID = vvh.VALIDATION_ID AND val.HISTO_DESTRUCTION IS NULL - WHERE - s.INTERVENANT_ID = v.intervenant_id - AND s.HISTO_DESTRUCTION IS NULL - AND VH.TYPE_VOLUME_HORAIRE_ID = V.TYPE_VOLUME_HORAIRE_ID - AND s.structure_id <> v.structure_id -- autre composante d'intervention que celle qui a tout validé - AND val.ID IS NULL -- au moins un VH non validé - ); +-- CONTRAT_FICHIER_PK +CREATE UNIQUE INDEX "CONTRAT_FICHIER_PK" ON "CONTRAT_FICHIER" ("CONTRAT_ID", "FICHIER_ID"); --- V_INDIC_ATT_VALID_SERVICE -CREATE OR REPLACE FORCE VIEW "V_INDIC_ATT_VALID_SERVICE" ("ID", "INTERVENANT_ID", "STRUCTURE_ID", "TYPE_VOLUME_HORAIRE_ID") AS - select distinct rownum id, i.id intervenant_id, nvl(ep.structure_id, i.structure_id) structure_id, vh.type_volume_horaire_id -from service s -join intervenant i on i.id = s.intervenant_id and i.histo_destruction IS NULL -join volume_horaire vh on vh.service_id = s.id and vh.histo_destruction IS NULL -join element_pedagogique ep on s.element_pedagogique_id = ep.id and ep.histo_destruction IS NULL ---join type_volume_horaire tvh on vh.type_volume_horaire_id = tvh.id and tvh.code = 'REALISE' -left join validation_vol_horaire vvh on vvh.volume_horaire_id = vh.id -left join validation v on vvh.validation_id = v.id and v.histo_destruction IS NULL -where v.id is null and s.histo_destruction IS NULL; +-- CONTRAT_HCFK_IDX +CREATE INDEX "CONTRAT_HCFK_IDX" ON "CONTRAT" ("HISTO_CREATEUR_ID"); --- V_INDIC_ATT_VALID_SERVICE_REF -CREATE OR REPLACE FORCE VIEW "V_INDIC_ATT_VALID_SERVICE_REF" ("ID", "INTERVENANT_ID", "STRUCTURE_ID", "TYPE_VOLUME_HORAIRE_ID") AS - select distinct rownum id, i.id intervenant_id, s.structure_id, vh.type_volume_horaire_id -from service_referentiel s -join intervenant i on i.id = s.intervenant_id and i.histo_destruction IS NULL -join volume_horaire_ref vh on vh.service_referentiel_id = s.id and vh.histo_destruction IS NULL -join fonction_referentiel f on s.fonction_id = f.id and f.histo_destruction IS NULL ---join type_volume_horaire tvh on vh.type_volume_horaire_id = tvh.id and tvh.code = 'REALISE' -left join validation_vol_horaire_ref vvh on vvh.volume_horaire_ref_id = vh.id -left join validation v on vvh.validation_id = v.id and v.histo_destruction IS NULL -where v.id is null and s.histo_destruction IS NULL; +-- CONTRAT_HDFK_IDX +CREATE INDEX "CONTRAT_HDFK_IDX" ON "CONTRAT" ("HISTO_DESTRUCTEUR_ID"); --- V_INDIC_DEPASS_CHARGES -CREATE OR REPLACE FORCE VIEW "V_INDIC_DEPASS_CHARGES" ("ID", "ANNEE_ID", "TYPE_VOLUME_HORAIRE_ID", "INTERVENANT_ID", "STRUCTURE_ID", "ELEMENT_PEDAGOGIQUE_ID", "PERIODE_ID", "TYPE_INTERVENTION_ID", "HEURES") AS - WITH c AS ( - SELECT - vhe.element_pedagogique_id, - vhe.type_intervention_id, - MAX(vhe.heures) heures, - COALESCE( MAX(vhe.groupes), ROUND(SUM(t.groupes),10) ) groupes +-- CONTRAT_HMFK_IDX +CREATE INDEX "CONTRAT_HMFK_IDX" ON "CONTRAT" ("HISTO_MODIFICATEUR_ID"); - FROM - volume_horaire_ens vhe - JOIN parametre p ON p.nom = 'scenario_charges_services' - LEFT JOIN tbl_chargens t ON t.element_pedagogique_id = vhe.element_pedagogique_id - AND t.type_intervention_id = vhe.type_intervention_id - AND t.scenario_id = to_number(p.valeur) - GROUP BY - vhe.element_pedagogique_id, - vhe.type_intervention_id -), s AS ( - SELECT - i.annee_id, - vh.type_volume_horaire_id, - s.intervenant_id, - s.element_pedagogique_id, - vh.type_intervention_id, - SUM(vh.heures) heures - FROM - volume_horaire vh - JOIN service s ON s.id = vh.service_id - AND s.element_pedagogique_id IS NOT NULL - AND s.histo_destruction IS NULL - JOIN intervenant i ON i.id = s.intervenant_id - AND i.histo_destruction IS NULL - WHERE - vh.histo_destruction IS NULL - GROUP BY - i.annee_id, - vh.type_volume_horaire_id, - s.intervenant_id, - s.element_pedagogique_id, - vh.type_intervention_id -) -SELECT - rownum id, - s.annee_id annee_id, - s.type_volume_horaire_id type_volume_horaire_id, - s.intervenant_id intervenant_id, - ep.structure_id structure_id, - s.element_pedagogique_id element_pedagogique_id, - ep.periode_id periode_id, - s.type_intervention_id type_intervention_id, - s.heures - COALESCE(c.heures * c.groupes,0) heures -FROM - s - JOIN type_intervention ti ON ti.id = s.type_intervention_id - JOIN element_pedagogique ep ON ep.id = s.element_pedagogique_id - LEFT JOIN c ON c.element_pedagogique_id = s.element_pedagogique_id - AND c.type_intervention_id = COALESCE(ti.type_intervention_maquette_id,ti.id) -WHERE - s.heures - COALESCE(c.heures * c.groupes,0) > 0; +-- CONTRAT_INTERVENANT_FK_IDX +CREATE INDEX "CONTRAT_INTERVENANT_FK_IDX" ON "CONTRAT" ("INTERVENANT_ID"); --- V_INDIC_DEPASS_HC_HORS_REMU_FC -CREATE OR REPLACE FORCE VIEW "V_INDIC_DEPASS_HC_HORS_REMU_FC" ("ID", "ANNEE_ID", "INTERVENANT_ID", "TYPE_VOLUME_HORAIRE_ID", "STRUCTURE_ID", "TOTAL", "PLAFOND") AS - with totaux as ( - -- totaux HC FI+FA+FC+Ref par intervenant et type de VH - select fr.intervenant_id, fr.type_volume_horaire_id, sum(fr.heures_compl_fi + fr.heures_compl_fa + fr.heures_compl_fc + fr.heures_compl_referentiel) total - from formule_resultat fr - join etat_volume_horaire evh on evh.id = fr.etat_volume_horaire_id and evh.code = 'saisi' - group by fr.intervenant_id, fr.type_volume_horaire_id -), -depass as ( - -- totaux HC FI+FA+FC+Ref dépassant le plafond HC par intervenant et type de VH - select i.id intervenant_id, t.type_volume_horaire_id, t.total, si.plafond_hc_hors_remu_fc plafond - from intervenant i - join statut_intervenant si on i.statut_id = si.id and si.plafond_hc_hors_remu_fc is not null - join totaux t on t.intervenant_id = i.id - where t.total > si.plafond_hc_hors_remu_fc -), -str_interv as ( - -- structures d'intervention distinctes par intervenant et type de VH - select distinct s.intervenant_id, vh.type_volume_horaire_id, coalesce(ep.structure_id, i.structure_id) structure_id - from service s - left join element_pedagogique ep on s.element_pedagogique_id = ep.id and ep.histo_destruction IS NULL - join intervenant i on s.intervenant_id = i.id and i.histo_destruction IS NULL - join volume_horaire vh on vh.service_id = s.id and vh.histo_destruction IS NULL - join v_vol_horaire_etat_multi vhe on vhe.volume_horaire_id = vh.id - join etat_volume_horaire evh on vhe.etat_volume_horaire_id = evh.id and evh.code = 'saisi' - where s.histo_destruction IS NULL -) -select to_number(d.intervenant_id||d.type_volume_horaire_id||str.structure_id) id, 2014 annee_id, d.intervenant_id, d.type_volume_horaire_id, str.structure_id, d.total, d.plafond -from depass d -join str_interv str on str.intervenant_id = d.intervenant_id and str.type_volume_horaire_id = d.type_volume_horaire_id; +-- CONTRAT_NUMERO_AVENANT_UN +CREATE UNIQUE INDEX "CONTRAT_NUMERO_AVENANT_UN" ON "CONTRAT" ("INTERVENANT_ID", "STRUCTURE_ID", "NUMERO_AVENANT", "VALIDATION_ID", "HISTO_DESTRUCTION"); --- V_INDIC_DEPASS_REF -CREATE OR REPLACE FORCE VIEW "V_INDIC_DEPASS_REF" ("ID", "ANNEE_ID", "INTERVENANT_ID", "TYPE_VOLUME_HORAIRE_ID", "STRUCTURE_ID", "TOTAL", "PLAFOND") AS - with totaux as ( - select fr.intervenant_id, fr.type_volume_horaire_id, sum(fr.service_referentiel) total - from formule_resultat fr - join etat_volume_horaire evh on evh.id = fr.etat_volume_horaire_id and evh.code = 'saisi' - group by fr.intervenant_id, fr.type_volume_horaire_id - having sum(fr.service_referentiel) > 0 -), -depass as ( - select i.id intervenant_id, t.type_volume_horaire_id, t.total, si.plafond_referentiel plafond - from intervenant i - join statut_intervenant si on i.statut_id = si.id and si.plafond_referentiel is not null and si.plafond_referentiel <> 0 - join totaux t on t.intervenant_id = i.id - where t.total > si.plafond_referentiel -), -str_interv as ( - -- structures d'intervention distinctes par intervenant et type de VH - select distinct s.intervenant_id, vh.type_volume_horaire_id, s.structure_id - from service_referentiel s - join volume_horaire_ref vh on vh.service_referentiel_id = s.id and vh.histo_destruction IS NULL - join v_vol_horaire_ref_etat_multi vhe on vhe.volume_horaire_ref_id = vh.id - join etat_volume_horaire evh on vhe.etat_volume_horaire_id = evh.id and evh.code = 'saisi' - where s.histo_destruction IS NULL -) -select to_number(d.intervenant_id||d.type_volume_horaire_id||str.structure_id) id, 2014 annee_id, d.intervenant_id, d.type_volume_horaire_id, str.structure_id, d.total, d.plafond -from depass d -join str_interv str on str.intervenant_id = d.intervenant_id and str.type_volume_horaire_id = d.type_volume_horaire_id; +-- CONTRAT_PK +CREATE UNIQUE INDEX "CONTRAT_PK" ON "CONTRAT" ("ID"); + +-- CONTRAT_STRUCTURE_FK_IDX +CREATE INDEX "CONTRAT_STRUCTURE_FK_IDX" ON "CONTRAT" ("STRUCTURE_ID"); + +-- CONTRAT_TYPE_CONTRAT_FK_IDX +CREATE INDEX "CONTRAT_TYPE_CONTRAT_FK_IDX" ON "CONTRAT" ("TYPE_CONTRAT_ID"); + +-- CONTRAT_VALIDATION_FK_IDX +CREATE INDEX "CONTRAT_VALIDATION_FK_IDX" ON "CONTRAT" ("VALIDATION_ID"); + +-- CORPS_HCFK_IDX +CREATE INDEX "CORPS_HCFK_IDX" ON "CORPS" ("HISTO_CREATEUR_ID"); + +-- CORPS_HDFK_IDX +CREATE INDEX "CORPS_HDFK_IDX" ON "CORPS" ("HISTO_DESTRUCTEUR_ID"); + +-- CORPS_HMFK_IDX +CREATE INDEX "CORPS_HMFK_IDX" ON "CORPS" ("HISTO_MODIFICATEUR_ID"); + +-- CORPS_PK +CREATE UNIQUE INDEX "CORPS_PK" ON "CORPS" ("ID"); + +-- CORPS_SOURCE_FK_IDX +CREATE INDEX "CORPS_SOURCE_FK_IDX" ON "CORPS" ("SOURCE_ID"); + +-- CORPS_SOURCE_UN +CREATE UNIQUE INDEX "CORPS_SOURCE_UN" ON "CORPS" ("SOURCE_CODE"); + +-- CPEP_FK_IDX +CREATE INDEX "CPEP_FK_IDX" ON "CHEMIN_PEDAGOGIQUE" ("ELEMENT_PEDAGOGIQUE_ID"); + +-- CP_ETAPE_FK_IDX +CREATE INDEX "CP_ETAPE_FK_IDX" ON "CHEMIN_PEDAGOGIQUE" ("ETAPE_ID"); + +-- CP_SOURCE_FK_IDX +CREATE INDEX "CP_SOURCE_FK_IDX" ON "CHEMIN_PEDAGOGIQUE" ("SOURCE_ID"); + +-- CS_TYPE_INTERVENANT_FK_IDX +CREATE INDEX "CS_TYPE_INTERVENANT_FK_IDX" ON "CAMPAGNE_SAISIE" ("TYPE_INTERVENANT_ID"); --- V_INDIC_DIFF_DOSSIER -CREATE OR REPLACE FORCE VIEW "V_INDIC_DIFF_DOSSIER" ("ID", "NOM_USUEL", "ADRESSE_DOSSIER", "ADRESSE_IMPORT", "RIB_DOSSIER", "RIB_IMPORT", "NOM_USUEL_DOSSIER", "NOM_USUEL_IMPORT", "PRENOM_DOSSIER", "PRENOM_IMPORT") AS - WITH aa AS ( - SELECT a.*, ose_divers.formatted_adresse( - a.NO_VOIE, - a.NOM_VOIE, - a.BATIMENT, - a.MENTION_COMPLEMENTAIRE, - a.LOCALITE, - a.CODE_POSTAL, - a.VILLE, - a.PAYS_LIBELLE) to_string FROM adresse_intervenant a -) -select - i.id, - i.nom_usuel, - case when d.adresse <> a.to_string then d.adresse else null end adresse_dossier, - case when d.adresse <> a.to_string then a.to_string else null end adresse_import, - case when d.rib <> REPLACE(i.BIC || '-' || i.IBAN, ' ') then d.rib else null end rib_dossier, - case when d.rib <> REPLACE(i.BIC || '-' || i.IBAN, ' ') then REPLACE(i.BIC || '-' || i.IBAN, ' ') else null end rib_import, - case when UPPER(REPLACE(d.nom_usuel, ' ')) <> UPPER(REPLACE(i.nom_usuel, ' ')) then REPLACE(d.nom_usuel, ' ') else null end nom_usuel_dossier, - case when UPPER(REPLACE(d.nom_usuel, ' ')) <> UPPER(REPLACE(i.nom_usuel, ' ')) then REPLACE(i.nom_usuel, ' ') else null end nom_usuel_import, - case when UPPER(REPLACE(d.prenom, ' ')) <> UPPER(REPLACE(i.prenom, ' ')) then REPLACE(d.prenom, ' ') else null end prenom_dossier, - case when UPPER(REPLACE(d.prenom, ' ')) <> UPPER(REPLACE(i.prenom, ' ')) then REPLACE(i.prenom, ' ') else null end prenom_import - from intervenant i - join dossier d on d.intervenant_id = i.id - left join aa a on a.intervenant_id = i.id; +-- CS_TYPE_VOLUME_HORAIRE_FK_IDX +CREATE INDEX "CS_TYPE_VOLUME_HORAIRE_FK_IDX" ON "CAMPAGNE_SAISIE" ("TYPE_VOLUME_HORAIRE_ID"); --- V_INDIC_TOUS_SERVICES_VALIDES -CREATE OR REPLACE FORCE VIEW "V_INDIC_TOUS_SERVICES_VALIDES" ("INTERVENANT_ID", "STRUCTURE_ID", "TYPE_VOLUME_HORAIRE_ID") AS - with struct_ens_non_valides as ( - -- intervenants et structures d'intervention pour lesquelles des VH d'enseignement NE SONT PAS validés - SELECT distinct s.intervenant_id, ep.structure_id, vh.type_volume_horaire_id - FROM SERVICE s - INNER JOIN ELEMENT_PEDAGOGIQUE ep ON s.ELEMENT_PEDAGOGIQUE_ID = ep.ID AND ep.HISTO_DESTRUCTION IS NULL - INNER JOIN VOLUME_HORAIRE vh ON s.ID = vh.SERVICE_ID AND vh.HISTO_DESTRUCTION IS NULL - LEFT JOIN VALIDATION_VOL_HORAIRE vvh ON vvh.volume_horaire_id = vh.id - LEFT JOIN VALIDATION val ON val.ID = vvh.validation_id AND val.HISTO_DESTRUCTION IS NULL - WHERE s.HISTO_DESTRUCTION IS NULL - AND val.id is null -), -struct_ref_non_valides as ( - -- intervenants et structures d'intervention pour lesquelles des VH de référentiel NE SONT PAS validés - SELECT distinct s.intervenant_id, s.structure_id, vh.type_volume_horaire_id - FROM SERVICE_REFERENTIEL s - INNER JOIN FONCTION_REFERENTIEL f ON s.FONCTION_ID = f.ID AND f.HISTO_DESTRUCTION IS NULL - INNER JOIN VOLUME_HORAIRE_REF vh ON s.ID = VH.SERVICE_REFERENTIEL_ID AND vh.HISTO_DESTRUCTION IS NULL - LEFT JOIN VALIDATION_VOL_HORAIRE_REF vvh ON VVH.VOLUME_HORAIRE_REF_ID = vh.id - LEFT JOIN VALIDATION val ON val.ID = vvh.validation_id AND val.HISTO_DESTRUCTION IS NULL - WHERE s.HISTO_DESTRUCTION IS NULL - AND val.id is null -) --- intervenants et structures d'intervention pour lesquelles tous les VH de référentiel et tous les VH d'enseignement SONT validés -SELECT distinct s.intervenant_id, ep.structure_id, vh.type_volume_horaire_id -FROM SERVICE s -INNER JOIN ELEMENT_PEDAGOGIQUE ep ON s.ELEMENT_PEDAGOGIQUE_ID = ep.ID AND ep.HISTO_DESTRUCTION IS NULL -INNER JOIN VOLUME_HORAIRE vh ON s.ID = vh.SERVICE_ID AND vh.HISTO_DESTRUCTION IS NULL -WHERE not exists ( - SELECT * from struct_ens_non_valides ens_nv - where ens_nv.INTERVENANT_ID = s.intervenant_id and ens_nv.structure_id = ep.structure_id and ens_nv.type_volume_horaire_id = vh.type_volume_horaire_id -) ------ -UNION ------ -SELECT distinct s.intervenant_id, s.structure_id, vh.type_volume_horaire_id -FROM SERVICE_REFERENTIEL s -INNER JOIN FONCTION_REFERENTIEL f ON s.FONCTION_ID = f.ID AND f.HISTO_DESTRUCTION IS NULL -INNER JOIN VOLUME_HORAIRE_REF vh ON s.ID = VH.SERVICE_REFERENTIEL_ID AND vh.HISTO_DESTRUCTION IS NULL -WHERE s.HISTO_DESTRUCTION IS NULL -and not exists ( - SELECT * from struct_ref_non_valides ref_nv - where ref_nv.INTERVENANT_ID = s.intervenant_id and ref_nv.structure_id = s.structure_id and ref_nv.type_volume_horaire_id = vh.type_volume_horaire_id -); +-- DEPARTEMENT_HCFK_IDX +CREATE INDEX "DEPARTEMENT_HCFK_IDX" ON "DEPARTEMENT" ("HISTO_CREATEUR_ID"); --- V_INTERVENANT_RECHERCHE -CREATE OR REPLACE FORCE VIEW "V_INTERVENANT_RECHERCHE" ("ID", "SOURCE_CODE", "NOM_USUEL", "NOM_PATRONYMIQUE", "PRENOM", "DATE_NAISSANCE", "STRUCTURE", "CIVILITE", "CRITERE", "ANNEE_ID") AS - SELECT - i.id, - i.source_code, - i.nom_usuel, - i.nom_patronymique, - i.prenom, - i.date_naissance, - s.libelle_court structure, - c.libelle_long civilite, - i.critere_recherche critere, - i.annee_id -FROM - intervenant i - JOIN structure s ON s.id = i.structure_id - JOIN civilite c ON c.id = i.civilite_id -WHERE - i.histo_destruction IS NULL - -UNION ALL +-- DEPARTEMENT_HDFK_IDX +CREATE INDEX "DEPARTEMENT_HDFK_IDX" ON "DEPARTEMENT" ("HISTO_DESTRUCTEUR_ID"); -SELECT - null id, - i.source_code, - i.nom_usuel, - i.nom_patronymique, - i.prenom, - i.date_naissance, - s.libelle_court structure, - c.libelle_long civilite, - i.critere_recherche critere, - i.annee_id -FROM - src_intervenant i - JOIN structure s ON s.id = i.structure_id - JOIN civilite c ON c.id = i.civilite_id; +-- DEPARTEMENT_HMFK_IDX +CREATE INDEX "DEPARTEMENT_HMFK_IDX" ON "DEPARTEMENT" ("HISTO_MODIFICATEUR_ID"); --- V_MEP_INTERVENANT_STRUCTURE -CREATE OR REPLACE FORCE VIEW "V_MEP_INTERVENANT_STRUCTURE" ("ID", "MISE_EN_PAIEMENT_ID", "INTERVENANT_ID", "STRUCTURE_ID", "PERIODE_PAIEMENT_ID", "DOMAINE_FONCTIONNEL_ID") AS - SELECT - rownum id, - t1."MISE_EN_PAIEMENT_ID", - t1."INTERVENANT_ID", - t1."STRUCTURE_ID", - t1.periode_paiement_id, - t1.domaine_fonctionnel_id -FROM ( +-- DEPARTEMENT_PK +CREATE UNIQUE INDEX "DEPARTEMENT_PK" ON "DEPARTEMENT" ("ID"); -SELECT - mep.id mise_en_paiement_id, - fr.intervenant_id intervenant_id, - sr.structure_id structure_id, - mep.periode_paiement_id periode_paiement_id, - COALESCE(mep.domaine_fonctionnel_id, fr.domaine_fonctionnel_id) domaine_fonctionnel_id -FROM - formule_resultat fr - JOIN formule_resultat_service_ref frsr ON frsr.formule_resultat_id = fr.id - JOIN mise_en_paiement mep ON mep.formule_res_service_ref_id = frsr.id - JOIN centre_cout cc ON cc.id = mep.centre_cout_id - JOIN service_referentiel sr ON sr.id = frsr.service_referentiel_id - JOIN fonction_referentiel fr ON fr.id = sr.fonction_id -UNION +-- DEPARTEMENT_SOURCE_FK_IDX +CREATE INDEX "DEPARTEMENT_SOURCE_FK_IDX" ON "DEPARTEMENT" ("SOURCE_ID"); -SELECT - mep.id mise_en_paiement_id, - fr.intervenant_id intervenant_id, - COALESCE( ep.structure_id, i.structure_id ) structure_id, - mep.periode_paiement_id periode_paiement_id, - COALESCE( - mep.domaine_fonctionnel_id, - e.domaine_fonctionnel_id, - to_number((SELECT valeur FROM parametre WHERE nom = 'domaine_fonctionnel_ens_ext')) - ) domaine_fonctionnel_id -FROM - formule_resultat fr - JOIN intervenant i ON i.id = fr.intervenant_id - JOIN formule_resultat_service frs ON frs.formule_resultat_id = fr.id - JOIN mise_en_paiement mep ON mep.formule_res_service_id = frs.id - JOIN centre_cout cc ON cc.id = mep.centre_cout_id - JOIN service s ON s.id = frs.service_id - LEFT JOIN element_pedagogique ep ON ep.id = s.element_pedagogique_id - LEFT JOIN etape e ON e.id = ep.etape_id -) t1; +-- DF_SOURCE_FK_IDX +CREATE INDEX "DF_SOURCE_FK_IDX" ON "DOMAINE_FONCTIONNEL" ("SOURCE_ID"); --- V_MODIF_SERVICE_DU_EXPORT_CSV -CREATE OR REPLACE FORCE VIEW "V_MODIF_SERVICE_DU_EXPORT_CSV" ("ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID", "ANNEE", "STRUCTURE_LIBELLE", "INTERVENANT_CODE", "INTERVENANT_NOM_USUEL", "INTERVENANT_NOM_PATRONYMIQUE", "INTERVENANT_PRENOM", "INTERVENANT_STATUT_LIBELLE", "INTERVENANT_SERVICE_STATUTAIRE", "MOTIF_CODE", "MOTIF_LIBELLE", "HEURES", "COMMENTAIRES", "MODIFICATEUR", "DATE_MODIFICATION") AS - SELECT - i.annee_id annee_id, - i.id intervenant_id, - i.structure_id structure_id, - - a.libelle annee, - s.libelle_court structure_libelle, - - i.code intervenant_code, - i.nom_usuel intervenant_nom_usuel, - i.nom_patronymique intervenant_nom_patronymique, - i.prenom intervenant_prenom, - si.libelle intervenant_statut_libelle, - si.service_statutaire intervenant_service_statutaire, - - mss.code motif_code, - mss.libelle motif_libelle, - - msd.heures * mss.multiplicateur heures, - - msd.commentaires commentaires, - u.display_name modificateur, - msd.histo_modification date_modification -FROM - modification_service_du msd - JOIN intervenant i ON i.id = msd.intervenant_id - JOIN annee a ON a.id = i.annee_id - JOIN structure s ON s.id = i.structure_id - JOIN statut_intervenant si ON si.id = i.statut_id - JOIN motif_modification_service mss ON mss.id = msd.motif_id - JOIN utilisateur u ON u.id = msd.histo_modificateur_id -WHERE - msd.histo_destruction IS NULL - AND i.histo_destruction IS NULL -ORDER BY - annee_id, - structure_libelle, - intervenant_nom_usuel, - motif_libelle, - heures; +-- DISCIPLINE_HCFK_IDX +CREATE INDEX "DISCIPLINE_HCFK_IDX" ON "DISCIPLINE" ("HISTO_CREATEUR_ID"); --- V_NIVEAU_FORMATION -CREATE OR REPLACE FORCE VIEW "V_NIVEAU_FORMATION" ("ID", "CODE", "LIBELLE_LONG", "NIVEAU", "GROUPE_TYPE_FORMATION_ID") AS - SELECT DISTINCT - ose_divers.niveau_formation_id_calc( gtf.id, gtf.pertinence_niveau, e.niveau ) id, - gtf.libelle_court || e.niveau code, - gtf.libelle_long, - e.niveau, - gtf.id groupe_type_formation_id -FROM - etape e - JOIN type_formation tf ON tf.id = e.type_formation_id AND tf.histo_destruction IS NULL - JOIN groupe_type_formation gtf ON gtf.id = tf.groupe_id AND gtf.histo_destruction IS NULL -WHERE - e.histo_destruction IS NULL - AND ose_divers.niveau_formation_id_calc( gtf.id, gtf.pertinence_niveau, e.niveau ) IS NOT NULL -ORDER BY - gtf.libelle_long, e.niveau; +-- DISCIPLINE_HDFK_IDX +CREATE INDEX "DISCIPLINE_HDFK_IDX" ON "DISCIPLINE" ("HISTO_DESTRUCTEUR_ID"); --- V_PJ_HEURES -CREATE OR REPLACE FORCE VIEW "V_PJ_HEURES" ("NOM_USUEL", "PRENOM", "INTERVENANT_ID", "SOURCE_CODE", "ANNEE_ID", "CATEG", "TOTAL_HEURES") AS - SELECT - i.NOM_USUEL, - i.PRENOM, - i.id intervenant_id, - i.SOURCE_CODE, - i.annee_id, 'service' categ, - sum(vh.HEURES) as total_heures -from INTERVENANT i - join SERVICE s on s.INTERVENANT_ID = i.id and s.histo_destruction IS NULL - join VOLUME_HORAIRE vh on vh.SERVICE_ID = s.id and vh.histo_destruction IS NULL - join type_volume_horaire tvh ON TVH.ID = VH.TYPE_VOLUME_HORAIRE_ID AND (tvh.code = 'PREVU') - join ELEMENT_PEDAGOGIQUE ep on s.ELEMENT_PEDAGOGIQUE_ID = ep.id and ep.histo_destruction IS NULL - join ETAPE e on ep.ETAPE_ID = e.id and e.histo_destruction IS NULL -where i.histo_destruction IS NULL - group by i.NOM_USUEL, i.PRENOM, i.id, i.SOURCE_CODE, i.annee_id, 'service' -UNION - SELECT i.NOM_USUEL, i.PRENOM, i.id intervenant_id, i.SOURCE_CODE, i.annee_id, 'referentiel' categ, sum(vh.HEURES) as total_heures - from INTERVENANT i - join service_referentiel s on s.INTERVENANT_ID = i.id and s.histo_destruction IS NULL - join volume_horaire_ref vh on vh.service_referentiel_id = s.id and vh.histo_destruction IS NULL - join type_volume_horaire tvh ON TVH.ID = VH.TYPE_VOLUME_HORAIRE_ID AND (tvh.code = 'PREVU') - join fonction_referentiel ep on s.fonction_id = ep.id and ep.histo_destruction IS NULL - where i.histo_destruction IS NULL - group by i.NOM_USUEL, i.PRENOM, i.id, i.SOURCE_CODE, i.annee_id, 'referentiel'; +-- DISCIPLINE_HMFK_IDX +CREATE INDEX "DISCIPLINE_HMFK_IDX" ON "DISCIPLINE" ("HISTO_MODIFICATEUR_ID"); --- V_PRIVILEGES_ROLES -CREATE OR REPLACE FORCE VIEW "V_PRIVILEGES_ROLES" ("PRIVILEGE", "ROLE") AS - WITH statuts_roles AS ( -SELECT - rp.privilege_id, - r.code role -FROM - role_privilege rp - JOIN role r ON r.id = rp.role_id AND r.histo_destruction IS NULL +-- DISCIPLINE_PK +CREATE UNIQUE INDEX "DISCIPLINE_PK" ON "DISCIPLINE" ("ID"); -UNION ALL +-- DISCIPLINE_SOURCE_FK_IDX +CREATE INDEX "DISCIPLINE_SOURCE_FK_IDX" ON "DISCIPLINE" ("SOURCE_ID"); -SELECT - sp.privilege_id, - 'statut/' || s.source_code role -FROM - statut_privilege sp - JOIN statut_intervenant s ON s.id = sp.statut_id AND s.histo_destruction IS NULL -) -SELECT - cp.code || '-' || p.code privilege, - sr.role -FROM - privilege p - JOIN categorie_privilege cp ON cp.id = p.categorie_id - LEFT JOIN statuts_roles sr ON sr.privilege_id = p.id; +-- DISCIPLINE_SOURCE_UN +CREATE UNIQUE INDEX "DISCIPLINE_SOURCE_UN" ON "DISCIPLINE" ("SOURCE_CODE"); --- V_REF_INTERVENANT -CREATE OR REPLACE FORCE VIEW "V_REF_INTERVENANT" ("C_INTERVENANT") AS - SELECT DISTINCT - i.source_code C_INTERVENANT -FROM - tbl_service s - JOIN intervenant i ON i.id = s.intervenant_id - JOIN annee a ON a.id = s.annee_id -WHERE - s.nbvh > 0 - AND SYSDATE BETWEEN a.date_debut AND a.date_fin; +-- DOMAINE_FONCTIONNEL_HCFK_IDX +CREATE INDEX "DOMAINE_FONCTIONNEL_HCFK_IDX" ON "DOMAINE_FONCTIONNEL" ("HISTO_CREATEUR_ID"); --- V_SERVICE_NON_VALIDE -CREATE OR REPLACE FORCE VIEW "V_SERVICE_NON_VALIDE" ("ID", "INTERVENANT_ID", "SERVICE_ID", "VOLUME_HORAIRE_ID", "ELEMENT_PEDAGOGIQUE_ID", "LIBELLE", "HEURES") AS - select vh.ID, i.ID as intervenant_id, s.ID as service_id, vh.ID as volume_horaire_id, ep.id as element_pedagogique_id, ep.LIBELLE, vh.HEURES - from service s - inner join INTERVENANT i on s.INTERVENANT_ID = i.id - inner join ELEMENT_PEDAGOGIQUE ep on s.ELEMENT_PEDAGOGIQUE_ID = ep.id and ep.histo_destruction IS NULL - inner join VOLUME_HORAIRE vh on vh.SERVICE_ID = s.ID and vh.HISTO_DESTRUCTION is null - left join VALIDATION_VOL_HORAIRE vvh on vvh.VOLUME_HORAIRE_ID = vh.ID - left join VALIDATION v on vvh.VALIDATION_ID = v.ID - left join TYPE_VALIDATION tv on v.TYPE_VALIDATION_ID = tv.ID - where (v.ID is null or v.HISTO_DESTRUCTION is not null) and - not exists ( - select * from VALIDATION_VOL_HORAIRE vvh2 - inner join VALIDATION v2 on vvh2.VALIDATION_ID = v2.ID and v2.histo_destruction IS NULL - where vvh2.VOLUME_HORAIRE_ID = vvh.VOLUME_HORAIRE_ID - ); +-- DOMAINE_FONCTIONNEL_HDFK_IDX +CREATE INDEX "DOMAINE_FONCTIONNEL_HDFK_IDX" ON "DOMAINE_FONCTIONNEL" ("HISTO_DESTRUCTEUR_ID"); --- V_SERVICE_VALIDE -CREATE OR REPLACE FORCE VIEW "V_SERVICE_VALIDE" ("ID", "INTERVENANT_ID", "SERVICE_ID", "VOLUME_HORAIRE_ID", "ELEMENT_PEDAGOGIQUE_ID", "LIBELLE", "HEURES", "VALIDATION_ID", "CODE") AS - select vh.ID, i.ID as intervenant_id, s.ID as service_id, vh.ID as volume_horaire_id, ep.id as element_pedagogique_id, ep.LIBELLE, vh.HEURES, v.ID as validation_id, tv.CODE - from service s - inner join INTERVENANT i on s.INTERVENANT_ID = i.id - left join ELEMENT_PEDAGOGIQUE ep on s.ELEMENT_PEDAGOGIQUE_ID = ep.id and ep.histo_destruction IS NULL -- pas d'EP si intervention hors-UCBN - inner join VOLUME_HORAIRE vh on vh.SERVICE_ID = s.ID and vh.histo_destruction IS NULL - inner join VALIDATION_VOL_HORAIRE vvh on vvh.VOLUME_HORAIRE_ID = vh.ID - inner join VALIDATION v on vvh.VALIDATION_ID = v.ID and v.histo_destruction IS NULL - inner join TYPE_VALIDATION tv on v.TYPE_VALIDATION_ID = tv.ID; +-- DOMAINE_FONCTIONNEL_HMFK_IDX +CREATE INDEX "DOMAINE_FONCTIONNEL_HMFK_IDX" ON "DOMAINE_FONCTIONNEL" ("HISTO_MODIFICATEUR_ID"); --- V_STRUCTURE_TYPE_MODULATEUR -CREATE OR REPLACE FORCE VIEW "V_STRUCTURE_TYPE_MODULATEUR" ("TYPE_MODULATEUR_ID", "STRUCTURE_ID") AS - SELECT DISTINCT - etm.type_modulateur_id type_modulateur_id, - ep.structure_id structure_id -FROM - v_element_type_modulateur etm - JOIN element_pedagogique ep ON ep.id = etm.element_pedagogique_id AND ep.histo_destruction IS NULL; +-- DOMAINE_FONCTIONNEL_PK +CREATE UNIQUE INDEX "DOMAINE_FONCTIONNEL_PK" ON "DOMAINE_FONCTIONNEL" ("ID"); + +-- DOSSIER_D_FK +CREATE INDEX "DOSSIER_D_FK" ON "DOSSIER" ("DEPT_NAISSANCE_ID"); + +-- DOSSIER_HCFK_IDX +CREATE INDEX "DOSSIER_HCFK_IDX" ON "DOSSIER" ("HISTO_CREATEUR_ID"); --- V_TBL_AGREMENT -CREATE OR REPLACE FORCE VIEW "V_TBL_AGREMENT" ("ANNEE_ID", "TYPE_AGREMENT_ID", "INTERVENANT_ID", "STRUCTURE_ID", "OBLIGATOIRE", "AGREMENT_ID") AS - WITH i_s AS ( - SELECT DISTINCT - fr.intervenant_id, - ep.structure_id - FROM - formule_resultat fr - JOIN type_volume_horaire tvh ON tvh.code = 'PREVU' AND tvh.id = fr.type_volume_horaire_id - JOIN etat_volume_horaire evh ON evh.code = 'valide' AND evh.id = fr.etat_volume_horaire_id +-- DOSSIER_HDFK_IDX +CREATE INDEX "DOSSIER_HDFK_IDX" ON "DOSSIER" ("HISTO_DESTRUCTEUR_ID"); - JOIN formule_resultat_service frs ON frs.formule_resultat_id = fr.id - JOIN service s ON s.id = frs.service_id - JOIN element_pedagogique ep ON ep.id = s.element_pedagogique_id - WHERE - frs.total > 0 -) -SELECT - i.annee_id annee_id, - tas.type_agrement_id type_agrement_id, - i.id intervenant_id, - null structure_id, - tas.obligatoire obligatoire, - a.id agrement_id -FROM - type_agrement ta - JOIN type_agrement_statut tas ON tas.type_agrement_id = ta.id - AND tas.histo_destruction IS NULL - - JOIN intervenant i ON i.histo_destruction IS NULL - AND (tas.premier_recrutement IS NULL OR NVL(i.premier_recrutement,0) = tas.premier_recrutement) - AND i.statut_id = tas.statut_intervenant_id - - LEFT JOIN agrement a ON a.type_agrement_id = ta.id - AND a.intervenant_id = i.id - AND a.histo_destruction IS NULL -WHERE - ta.code = 'CONSEIL_ACADEMIQUE' +-- DOSSIER_HMFK_IDX +CREATE INDEX "DOSSIER_HMFK_IDX" ON "DOSSIER" ("HISTO_MODIFICATEUR_ID"); -UNION ALL +-- DOSSIER_INTERVENANT_FK_IDX +CREATE INDEX "DOSSIER_INTERVENANT_FK_IDX" ON "DOSSIER" ("INTERVENANT_ID"); -SELECT - i.annee_id annee_id, - tas.type_agrement_id type_agrement_id, - i.id intervenant_id, - i_s.structure_id structure_id, - tas.obligatoire obligatoire, - a.id agrement_id -FROM - type_agrement ta - JOIN type_agrement_statut tas ON tas.type_agrement_id = ta.id - AND tas.histo_destruction IS NULL +-- DOSSIER_PK +CREATE UNIQUE INDEX "DOSSIER_PK" ON "DOSSIER" ("ID"); - JOIN intervenant i ON i.histo_destruction IS NULL - AND (tas.premier_recrutement IS NULL OR NVL(i.premier_recrutement,0) = tas.premier_recrutement) - AND i.statut_id = tas.statut_intervenant_id +-- DOSSIER_P_FK +CREATE INDEX "DOSSIER_P_FK" ON "DOSSIER" ("PAYS_NAISSANCE_ID"); - JOIN i_s ON i_s.intervenant_id = i.id +-- DOSSIER_UK1 +CREATE UNIQUE INDEX "DOSSIER_UK1" ON "DOSSIER" ("HISTO_DESTRUCTION"); - LEFT JOIN agrement a ON a.type_agrement_id = ta.id - AND a.intervenant_id = i.id - AND a.structure_id = i_s.structure_id - AND a.histo_destruction IS NULL -WHERE - ta.code = 'CONSEIL_RESTREINT'; +-- DOTATION_ANNEE_FK_IDX +CREATE INDEX "DOTATION_ANNEE_FK_IDX" ON "DOTATION" ("ANNEE_ID"); --- V_TBL_CHARGENS -CREATE OR REPLACE FORCE VIEW "V_TBL_CHARGENS" ("ANNEE_ID", "NOEUD_ID", "SCENARIO_ID", "TYPE_HEURES_ID", "TYPE_INTERVENTION_ID", "ELEMENT_PEDAGOGIQUE_ID", "ETAPE_ID", "ETAPE_ENS_ID", "STRUCTURE_ID", "GROUPE_TYPE_FORMATION_ID", "OUVERTURE", "DEDOUBLEMENT", "ASSIDUITE", "EFFECTIF", "HEURES_ENS", "GROUPES", "HEURES", "HETD") AS - WITH t AS ( -SELECT - n.annee_id annee_id, - n.noeud_id noeud_id, - sn.scenario_id scenario_id, - sne.type_heures_id type_heures_id, - ti.id type_intervention_id, +-- DOTATION_HCFK_IDX +CREATE INDEX "DOTATION_HCFK_IDX" ON "DOTATION" ("HISTO_CREATEUR_ID"); - n.element_pedagogique_id element_pedagogique_id, - n.element_pedagogique_etape_id etape_id, - sne.etape_id etape_ens_id, - n.structure_id structure_id, - n.groupe_type_formation_id groupe_type_formation_id, +-- DOTATION_HDFK_IDX +CREATE INDEX "DOTATION_HDFK_IDX" ON "DOTATION" ("HISTO_DESTRUCTEUR_ID"); - vhe.heures heures, - vhe.heures * ti.taux_hetd_service hetd, +-- DOTATION_HMFK_IDX +CREATE INDEX "DOTATION_HMFK_IDX" ON "DOTATION" ("HISTO_MODIFICATEUR_ID"); - GREATEST(COALESCE(sns.ouverture, 1),1) ouverture, - GREATEST(COALESCE(sns.dedoublement, snsetp.dedoublement, csdd.dedoublement,1),1) dedoublement, - COALESCE(sns.assiduite,1) assiduite, - sne.effectif*COALESCE(sns.assiduite,1) effectif, +-- DOTATION_PK +CREATE UNIQUE INDEX "DOTATION_PK" ON "DOTATION" ("ID"); - SUM(sne.effectif*COALESCE(sns.assiduite,1)) OVER (PARTITION BY n.noeud_id, sn.scenario_id, ti.id) t_effectif +-- DOTATION_STRUCTURE_FK_IDX +CREATE INDEX "DOTATION_STRUCTURE_FK_IDX" ON "DOTATION" ("STRUCTURE_ID"); -FROM - scenario_noeud_effectif sne - JOIN etape e ON e.id = sne.etape_id - AND e.histo_destruction IS NULL - - JOIN scenario_noeud sn ON sn.id = sne.scenario_noeud_id - AND sn.histo_destruction IS NULL - - JOIN tbl_noeud n ON n.noeud_id = sn.noeud_id - - JOIN volume_horaire_ens vhe ON vhe.element_pedagogique_id = n.element_pedagogique_id - AND vhe.histo_destruction IS NULL - AND vhe.heures > 0 +-- DOTATION_TYPE_DOTATION_FK_IDX +CREATE INDEX "DOTATION_TYPE_DOTATION_FK_IDX" ON "DOTATION" ("TYPE_RESSOURCE_ID"); - JOIN type_intervention ti ON ti.id = vhe.type_intervention_id +-- DOTATION__UN +CREATE UNIQUE INDEX "DOTATION__UN" ON "DOTATION" ("TYPE_RESSOURCE_ID", "ANNEE_ID", "ANNEE_CIVILE", "STRUCTURE_ID", "LIBELLE", "HISTO_DESTRUCTION"); - LEFT JOIN tbl_noeud netp ON netp.etape_id = e.id - - LEFT JOIN scenario_noeud snetp ON snetp.scenario_id = sn.scenario_id - AND snetp.noeud_id = netp.noeud_id - AND snetp.histo_destruction IS NULL - - LEFT JOIN scenario_noeud_seuil snsetp ON snsetp.scenario_noeud_id = snetp.id - AND snsetp.type_intervention_id = ti.id +-- DS_MDS_FK_IDX +CREATE INDEX "DS_MDS_FK_IDX" ON "MODIFICATION_SERVICE_DU" ("MOTIF_ID"); - LEFT JOIN tbl_chargens_seuils_def csdd ON csdd.annee_id = n.annee_id - AND csdd.scenario_id = sn.scenario_id - AND csdd.type_intervention_id = ti.id - AND csdd.groupe_type_formation_id = n.groupe_type_formation_id - AND csdd.structure_id = n.structure_id +-- EFFECTIFS_ELEMENT_FK_IDX +CREATE INDEX "EFFECTIFS_ELEMENT_FK_IDX" ON "EFFECTIFS" ("ELEMENT_PEDAGOGIQUE_ID"); - LEFT JOIN scenario_noeud_seuil sns ON sns.scenario_noeud_id = sn.id - AND sns.type_intervention_id = ti.id -) -SELECT - annee_id, - noeud_id, - scenario_id, - type_heures_id, - type_intervention_id, +-- EFFECTIFS_FK +CREATE INDEX "EFFECTIFS_FK" ON "EFFECTIFS" ("ANNEE_ID"); - element_pedagogique_id, - etape_id, - etape_ens_id, - structure_id, - groupe_type_formation_id, +-- EFFECTIFS_HCFK_IDX +CREATE INDEX "EFFECTIFS_HCFK_IDX" ON "EFFECTIFS" ("HISTO_CREATEUR_ID"); - ouverture, - dedoublement, - assiduite, - effectif, - heures heures_ens, - --t_effectif, +-- EFFECTIFS_HDFK_IDX +CREATE INDEX "EFFECTIFS_HDFK_IDX" ON "EFFECTIFS" ("HISTO_DESTRUCTEUR_ID"); - CASE WHEN t_effectif < ouverture THEN 0 ELSE - CEIL( t_effectif / dedoublement ) * effectif / t_effectif - END groupes, +-- EFFECTIFS_HMFK_IDX +CREATE INDEX "EFFECTIFS_HMFK_IDX" ON "EFFECTIFS" ("HISTO_MODIFICATEUR_ID"); - CASE WHEN t_effectif < ouverture THEN 0 ELSE - CEIL( t_effectif / dedoublement ) * heures * effectif / t_effectif - END heures, +-- EFFECTIFS_PK +CREATE UNIQUE INDEX "EFFECTIFS_PK" ON "EFFECTIFS" ("ID"); - CASE WHEN t_effectif < ouverture THEN 0 ELSE - CEIL( t_effectif / dedoublement ) * hetd * effectif / t_effectif - END hetd +-- EFFECTIFS_SOURCE_FK_IDX +CREATE INDEX "EFFECTIFS_SOURCE_FK_IDX" ON "EFFECTIFS" ("SOURCE_ID"); -FROM - t; +-- EFFECTIFS__UN +CREATE UNIQUE INDEX "EFFECTIFS__UN" ON "EFFECTIFS" ("SOURCE_CODE", "ANNEE_ID"); --- V_TBL_CHARGENS_SEUILS_DEF -CREATE OR REPLACE FORCE VIEW "V_TBL_CHARGENS_SEUILS_DEF" ("ANNEE_ID", "SCENARIO_ID", "STRUCTURE_ID", "GROUPE_TYPE_FORMATION_ID", "TYPE_INTERVENTION_ID", "DEDOUBLEMENT") AS - SELECT - sta.annee_id, - sta.scenario_id, - s.structure_id, - gtf.groupe_type_formation_id, - sta.type_intervention_id, - COALESCE(sc1.dedoublement, sc2.dedoublement, sc3.dedoublement, sc4.dedoublement) dedoublement -FROM - (SELECT DISTINCT scenario_id, type_intervention_id, annee_id FROM seuil_charge WHERE histo_destruction IS NULL) sta - JOIN (SELECT DISTINCT structure_id FROM noeud WHERE structure_id IS NOT NULL) s ON 1=1 - JOIN (SELECT id groupe_type_formation_id FROM groupe_type_formation) gtf ON 1=1 - - LEFT JOIN seuil_charge sc1 ON - sc1.histo_destruction IS NULL - AND sc1.annee_id = sta.annee_id - AND sc1.scenario_id = sta.scenario_id - AND sc1.type_intervention_id = sta.type_intervention_id - AND sc1.structure_id = s.structure_id - AND sc1.groupe_type_formation_id = gtf.groupe_type_formation_id - - LEFT JOIN seuil_charge sc2 ON - sc2.histo_destruction IS NULL - AND sc2.annee_id = sta.annee_id - AND sc2.scenario_id = sta.scenario_id - AND sc2.type_intervention_id = sta.type_intervention_id - AND sc2.structure_id = s.structure_id - AND sc2.groupe_type_formation_id IS NULL - - LEFT JOIN seuil_charge sc3 ON - sc3.histo_destruction IS NULL - AND sc3.annee_id = sta.annee_id - AND sc3.scenario_id = sta.scenario_id - AND sc3.type_intervention_id = sta.type_intervention_id - AND sc3.structure_id IS NULL - AND sc3.groupe_type_formation_id = gtf.groupe_type_formation_id - - LEFT JOIN seuil_charge sc4 ON - sc4.histo_destruction IS NULL - AND sc4.annee_id = sta.annee_id - AND sc4.scenario_id = sta.scenario_id - AND sc4.type_intervention_id = sta.type_intervention_id - AND sc4.structure_id IS NULL - AND sc4.groupe_type_formation_id IS NULL -WHERE - COALESCE(sc1.dedoublement, sc2.dedoublement, sc3.dedoublement, sc4.dedoublement, 1) <> 1; +-- ELEMENT_MODULATEUR_HCFK_IDX +CREATE INDEX "ELEMENT_MODULATEUR_HCFK_IDX" ON "ELEMENT_MODULATEUR" ("HISTO_CREATEUR_ID"); --- V_TBL_CLOTURE_REALISE -CREATE OR REPLACE FORCE VIEW "V_TBL_CLOTURE_REALISE" ("ANNEE_ID", "INTERVENANT_ID", "PEUT_CLOTURER_SAISIE", "CLOTURE") AS - WITH t AS ( - SELECT - i.annee_id annee_id, - i.id intervenant_id, - si.peut_cloturer_saisie peut_cloturer_saisie, - CASE WHEN v.id IS NULL THEN 0 ELSE 1 END cloture - FROM - intervenant i - JOIN statut_intervenant si ON si.id = i.statut_id - JOIN type_validation tv ON tv.code = 'CLOTURE_REALISE' - - LEFT JOIN validation v ON v.intervenant_id = i.id - AND v.type_validation_id = tv.id - AND v.histo_destruction IS NULL +-- ELEMENT_MODULATEUR_HDFK_IDX +CREATE INDEX "ELEMENT_MODULATEUR_HDFK_IDX" ON "ELEMENT_MODULATEUR" ("HISTO_DESTRUCTEUR_ID"); - WHERE - i.histo_destruction IS NULL -) -SELECT - annee_id, - intervenant_id, - peut_cloturer_saisie, - CASE WHEN sum(cloture) = 0 THEN 0 ELSE 1 END cloture -FROM - t -GROUP BY - annee_id, - intervenant_id, - peut_cloturer_saisie; +-- ELEMENT_MODULATEUR_HMFK_IDX +CREATE INDEX "ELEMENT_MODULATEUR_HMFK_IDX" ON "ELEMENT_MODULATEUR" ("HISTO_MODIFICATEUR_ID"); --- V_TBL_CONTRAT -CREATE OR REPLACE FORCE VIEW "V_TBL_CONTRAT" ("ANNEE_ID", "INTERVENANT_ID", "PEUT_AVOIR_CONTRAT", "STRUCTURE_ID", "NBVH", "EDITE", "SIGNE") AS - WITH t AS ( - SELECT - i.annee_id annee_id, - i.id intervenant_id, - si.peut_avoir_contrat peut_avoir_contrat, - NVL(ep.structure_id, i.structure_id) structure_id, - CASE WHEN evh.code IN ('contrat-edite','contrat-signe') THEN 1 ELSE 0 END edite, - CASE WHEN evh.code IN ('contrat-signe') THEN 1 ELSE 0 END signe - FROM - intervenant i - - JOIN statut_intervenant si ON si.id = i.statut_id - - JOIN service s ON s.intervenant_id = i.id - AND s.histo_destruction IS NULL - - JOIN type_volume_horaire tvh ON tvh.code = 'PREVU' - - JOIN volume_horaire vh ON vh.service_id = s.id - AND vh.histo_destruction IS NULL - AND vh.heures <> 0 - AND vh.type_volume_horaire_id = tvh.id - - JOIN v_volume_horaire_etat vhe ON vhe.volume_horaire_id = vh.id - - JOIN etat_volume_horaire evh ON evh.id = vhe.etat_volume_horaire_id - AND evh.code IN ('valide', 'contrat-edite', 'contrat-signe') - - JOIN element_pedagogique ep ON ep.id = s.element_pedagogique_id - - WHERE - i.histo_destruction IS NULL - AND NOT (si.peut_avoir_contrat = 0 AND evh.code = 'valide') - - UNION ALL - - SELECT - i.annee_id annee_id, - i.id intervenant_id, - si.peut_avoir_contrat peut_avoir_contrat, - s.structure_id structure_id, - CASE WHEN evh.code IN ('contrat-edite','contrat-signe') THEN 1 ELSE 0 END edite, - CASE WHEN evh.code IN ('contrat-signe') THEN 1 ELSE 0 END signe - FROM - intervenant i - - JOIN statut_intervenant si ON si.id = i.statut_id - - JOIN service_referentiel s ON s.intervenant_id = i.id - AND s.histo_destruction IS NULL - - JOIN type_volume_horaire tvh ON tvh.code = 'PREVU' - - JOIN volume_horaire_ref vh ON vh.service_referentiel_id = s.id - AND vh.histo_destruction IS NULL - AND vh.heures <> 0 - AND vh.type_volume_horaire_id = tvh.id - - JOIN v_volume_horaire_ref_etat vhe ON vhe.volume_horaire_ref_id = vh.id - - JOIN etat_volume_horaire evh ON evh.id = vhe.etat_volume_horaire_id - AND evh.code IN ('valide', 'contrat-edite', 'contrat-signe') - - WHERE - i.histo_destruction IS NULL - AND NOT (si.peut_avoir_contrat = 0 AND evh.code = 'valide') -) -SELECT - annee_id, - intervenant_id, - peut_avoir_contrat, - structure_id, - count(*) as nbvh, - sum(edite) as edite, - sum(signe) as signe -FROM - t -GROUP BY - annee_id, - intervenant_id, - peut_avoir_contrat, - structure_id; +-- ELEMENT_MODULATEUR_PK +CREATE UNIQUE INDEX "ELEMENT_MODULATEUR_PK" ON "ELEMENT_MODULATEUR" ("ID"); --- V_TBL_DMEP_LIQUIDATION -CREATE OR REPLACE FORCE VIEW "V_TBL_DMEP_LIQUIDATION" ("ANNEE_ID", "TYPE_RESSOURCE_ID", "STRUCTURE_ID", "HEURES") AS - SELECT - annee_id, - type_ressource_id, - structure_id, - SUM(heures) heures -FROM -( - SELECT - i.annee_id, - cc.type_ressource_id, - COALESCE( ep.structure_id, i.structure_id ) structure_id, - mep.heures - FROM - mise_en_paiement mep - JOIN centre_cout cc ON cc.id = mep.centre_cout_id - JOIN formule_resultat_service frs ON frs.id = mep.formule_res_service_id - JOIN service s ON s.id = frs.service_id - JOIN intervenant i ON i.id = s.intervenant_id - LEFT JOIN element_pedagogique ep ON ep.id = s.element_pedagogique_id - WHERE - mep.histo_destruction IS NULL - - UNION ALL - - SELECT - i.annee_id, - cc.type_ressource_id, - sr.structure_id structure_id, - heures - FROM - mise_en_paiement mep - JOIN centre_cout cc ON cc.id = mep.centre_cout_id - JOIN formule_resultat_service_ref frsr ON frsr.id = mep.formule_res_service_ref_id - JOIN service_referentiel sr ON sr.id = frsr.service_referentiel_id - JOIN intervenant i ON i.id = sr.intervenant_id - - WHERE - mep.histo_destruction IS NULL +-- ELEMENT_MODULATEUR__UN +CREATE UNIQUE INDEX "ELEMENT_MODULATEUR__UN" ON "ELEMENT_MODULATEUR" ("ELEMENT_ID", "MODULATEUR_ID", "HISTO_DESTRUCTION"); -) t1 -GROUP BY - annee_id, type_ressource_id, structure_id; +-- ELEMENT_PEDAGOGIQUE_HCFK_IDX +CREATE INDEX "ELEMENT_PEDAGOGIQUE_HCFK_IDX" ON "ELEMENT_PEDAGOGIQUE" ("HISTO_CREATEUR_ID"); --- V_TBL_DOSSIER -CREATE OR REPLACE FORCE VIEW "V_TBL_DOSSIER" ("ANNEE_ID", "INTERVENANT_ID", "PEUT_SAISIR_DOSSIER", "DOSSIER_ID", "VALIDATION_ID") AS - SELECT - i.annee_id, - i.id intervenant_id, - si.peut_saisir_dossier, - d.id dossier_id, - v.id validation_id -FROM - intervenant i - JOIN statut_intervenant si ON si.id = i.statut_id - LEFT JOIN dossier d ON d.intervenant_id = i.id - AND d.histo_destruction IS NULL - - JOIN type_validation tv ON tv.code = 'DONNEES_PERSO_PAR_COMP' - LEFT JOIN validation v ON v.intervenant_id = i.id - AND v.type_validation_id = tv.id - AND v.histo_destruction IS NULL -WHERE - i.histo_destruction IS NULL; +-- ELEMENT_PEDAGOGIQUE_HDFK_IDX +CREATE INDEX "ELEMENT_PEDAGOGIQUE_HDFK_IDX" ON "ELEMENT_PEDAGOGIQUE" ("HISTO_DESTRUCTEUR_ID"); --- V_TBL_LIEN -CREATE OR REPLACE FORCE VIEW "V_TBL_LIEN" ("LIEN_ID", "SCENARIO_ID", "SCENARIO_LIEN_ID", "NOEUD_SUP_ID", "NOEUD_INF_ID", "STRUCTURE_ID", "ACTIF", "POIDS", "MAX_POIDS", "CHOIX_MAXIMUM", "CHOIX_MINIMUM", "NB_CHOIX", "TOTAL_POIDS") AS - SELECT - l.id lien_id, - s.id scenario_id, - sl.id scenario_lien_id, - l.noeud_sup_id noeud_sup_id, - l.noeud_inf_id noeud_inf_id, - l.structure_id structure_id, - NVL(sl.actif,1) actif, - NVL(sl.poids,1) poids, - MAX(CASE WHEN 1 = NVL(sl.actif,1) THEN NVL(sl.poids,1) ELSE 0 END) OVER (PARTITION BY l.noeud_sup_id, s.id) max_poids, - sl.choix_maximum choix_maximum, - sl.choix_minimum choix_minimum, +-- ELEMENT_PEDAGOGIQUE_HMFK_IDX +CREATE INDEX "ELEMENT_PEDAGOGIQUE_HMFK_IDX" ON "ELEMENT_PEDAGOGIQUE" ("HISTO_MODIFICATEUR_ID"); - SUM(NVL(sl.actif,1)) OVER (PARTITION BY l.noeud_sup_id, s.id) nb_choix, - SUM(CASE WHEN 1 = NVL(sl.actif,1) THEN NVL(sl.poids,1) ELSE 0 END) OVER (PARTITION BY l.noeud_sup_id, s.id) total_poids +-- ELEMENT_PEDAGOGIQUE_PK +CREATE UNIQUE INDEX "ELEMENT_PEDAGOGIQUE_PK" ON "ELEMENT_PEDAGOGIQUE" ("ID"); -FROM - lien l - JOIN scenario s ON s.histo_destruction IS NULL - LEFT JOIN scenario_lien sl ON - sl.lien_id = l.id - AND sl.scenario_id = s.id - AND s.histo_destruction IS NULL -WHERE - l.histo_destruction IS NULL; +-- ELEMENT_TAUX_REGIMES_HCFK_IDX +CREATE INDEX "ELEMENT_TAUX_REGIMES_HCFK_IDX" ON "ELEMENT_TAUX_REGIMES" ("HISTO_CREATEUR_ID"); --- V_TBL_PAIEMENT -CREATE OR REPLACE FORCE VIEW "V_TBL_PAIEMENT" ("ANNEE_ID", "FORMULE_RES_SERVICE_ID", "FORMULE_RES_SERVICE_REF_ID", "INTERVENANT_ID", "STRUCTURE_ID", "MISE_EN_PAIEMENT_ID", "PERIODE_PAIEMENT_ID", "HEURES_A_PAYER", "HEURES_A_PAYER_POND", "HEURES_DEMANDEES", "HEURES_PAYEES") AS - SELECT - i.annee_id annee_id, - frs.id formule_res_service_id, - null formule_res_service_ref_id, - i.id intervenant_id, - COALESCE( ep.structure_id, i.structure_id ) structure_id, - mep.id mise_en_paiement_id, - mep.periode_paiement_id periode_paiement_id, - frs.heures_compl_fi + frs.heures_compl_fc + frs.heures_compl_fa + frs.heures_compl_fc_majorees heures_a_payer, - count(*) OVER(PARTITION BY frs.id) heures_a_payer_pond, - NVL(mep.heures,0) heures_demandees, - CASE WHEN mep.periode_paiement_id IS NULL THEN 0 ELSE mep.heures END heures_payees -FROM - formule_resultat_service frs - JOIN type_volume_horaire tvh ON tvh.code = 'REALISE' - JOIN etat_volume_horaire evh ON evh.code = 'valide' - JOIN formule_resultat fr ON fr.id = frs.formule_resultat_id - AND fr.type_volume_horaire_id = tvh.id - AND fr.etat_volume_horaire_id = evh.id +-- ELEMENT_TAUX_REGIMES_HDFK_IDX +CREATE INDEX "ELEMENT_TAUX_REGIMES_HDFK_IDX" ON "ELEMENT_TAUX_REGIMES" ("HISTO_DESTRUCTEUR_ID"); - JOIN intervenant i ON i.id = fr.intervenant_id - JOIN service s ON s.id = frs.service_id - LEFT JOIN element_pedagogique ep ON ep.id = s.element_pedagogique_id - LEFT JOIN mise_en_paiement mep ON mep.formule_res_service_id = frs.id - AND mep.histo_destruction IS NULL +-- ELEMENT_TAUX_REGIMES_HMFK_IDX +CREATE INDEX "ELEMENT_TAUX_REGIMES_HMFK_IDX" ON "ELEMENT_TAUX_REGIMES" ("HISTO_MODIFICATEUR_ID"); -UNION ALL +-- ELEMENT_TAUX_REGIMES_PK +CREATE UNIQUE INDEX "ELEMENT_TAUX_REGIMES_PK" ON "ELEMENT_TAUX_REGIMES" ("ID"); -SELECT - i.annee_id annee_id, - null formule_res_service_id, - frs.id formule_res_service_ref_id, - i.id intervenant_id, - s.structure_id structure_id, - mep.id mise_en_paiement_id, - mep.periode_paiement_id periode_paiement_id, - frs.heures_compl_referentiel heures_a_payer, - count(*) OVER(PARTITION BY frs.id) heures_a_payer_pond, - NVL(mep.heures,0) heures_demandees, - CASE WHEN mep.periode_paiement_id IS NULL THEN 0 ELSE mep.heures END heures_payees -FROM - formule_resultat_service_ref frs - JOIN type_volume_horaire tvh ON tvh.code = 'REALISE' - JOIN etat_volume_horaire evh ON evh.code = 'valide' - JOIN formule_resultat fr ON fr.id = frs.formule_resultat_id - AND fr.type_volume_horaire_id = tvh.id - AND fr.etat_volume_horaire_id = evh.id +-- ELEMENT_TAUX_REGIMES__UN +CREATE UNIQUE INDEX "ELEMENT_TAUX_REGIMES__UN" ON "ELEMENT_TAUX_REGIMES" ("SOURCE_CODE", "HISTO_DESTRUCTION"); - JOIN intervenant i ON i.id = fr.intervenant_id - JOIN service_referentiel s ON s.id = frs.service_referentiel_id - LEFT JOIN mise_en_paiement mep ON mep.formule_res_service_ref_id = frs.id - AND mep.histo_destruction IS NULL; +-- ELEMENT_TAUX_REGIMES__UNV1 +CREATE UNIQUE INDEX "ELEMENT_TAUX_REGIMES__UNV1" ON "ELEMENT_TAUX_REGIMES" ("ELEMENT_PEDAGOGIQUE_ID", "HISTO_DESTRUCTION"); --- V_TBL_PIECE_JOINTE -CREATE OR REPLACE FORCE VIEW "V_TBL_PIECE_JOINTE" ("ANNEE_ID", "TYPE_PIECE_JOINTE_ID", "INTERVENANT_ID", "DEMANDEE", "FOURNIE", "VALIDEE", "HEURES_POUR_SEUIL") AS - WITH pjf AS ( - SELECT - pjf.annee_id, - pjf.type_piece_jointe_id, - pjf.intervenant_id, - COUNT(*) count, - SUM(CASE WHEN validation_id IS NULL THEN 0 ELSE 1 END) validation, - SUM(CASE WHEN fichier_id IS NULL THEN 0 ELSE 1 END) fichier - FROM - tbl_piece_jointe_fournie pjf - GROUP BY - pjf.annee_id, - pjf.type_piece_jointe_id, - pjf.intervenant_id -) -SELECT - NVL( pjd.annee_id, pjf.annee_id ) annee_id, - NVL( pjd.type_piece_jointe_id, pjf.type_piece_jointe_id ) type_piece_jointe_id, - NVL( pjd.intervenant_id, pjf.intervenant_id ) intervenant_id, - CASE WHEN pjd.intervenant_id IS NULL THEN 0 ELSE 1 END demandee, - CASE WHEN pjf.fichier = pjf.count THEN 1 ELSE 0 END fournie, - CASE WHEN pjf.validation = pjf.count THEN 1 ELSE 0 END validee, - NVL(pjd.heures_pour_seuil,0) heures_pour_seuil -FROM - tbl_piece_jointe_demande pjd - FULL JOIN pjf ON pjf.type_piece_jointe_id = pjd.type_piece_jointe_id AND pjf.intervenant_id = pjd.intervenant_id; +-- EM_ELEMENT_PEDAGOGIQUE_FK_IDX +CREATE INDEX "EM_ELEMENT_PEDAGOGIQUE_FK_IDX" ON "ELEMENT_MODULATEUR" ("ELEMENT_ID"); --- V_TBL_PIECE_JOINTE_DEMANDE -CREATE OR REPLACE FORCE VIEW "V_TBL_PIECE_JOINTE_DEMANDE" ("ANNEE_ID", "INTERVENANT_ID", "TYPE_PIECE_JOINTE_ID", "HEURES_POUR_SEUIL") AS - WITH i_h AS ( - SELECT - s.intervenant_id, - sum(vh.heures) heures, - sum(ep.taux_fc) fc - FROM - service s - JOIN type_volume_horaire tvh ON tvh.code = 'PREVU' - JOIN volume_horaire vh ON vh.service_id = s.id - AND vh.type_volume_horaire_id = tvh.id - AND vh.histo_destruction IS NULL - JOIN element_pedagogique ep ON ep.id = s.element_pedagogique_id -- Service sur l'établissement - WHERE - s.histo_destruction IS NULL - AND vh.motif_non_paiement_id IS NULL -- pas de motif de non paiement - GROUP BY - s.intervenant_id -) -SELECT - i.annee_id annee_id, - i.id intervenant_id, - tpj.id type_piece_jointe_id, - MAX(COALESCE(i_h.heures, 0)) heures_pour_seuil -FROM - intervenant i +-- EM_MODULATEUR_FK_IDX +CREATE INDEX "EM_MODULATEUR_FK_IDX" ON "ELEMENT_MODULATEUR" ("MODULATEUR_ID"); - LEFT JOIN dossier d ON d.intervenant_id = i.id - AND d.histo_destruction IS NULL - - JOIN type_piece_jointe_statut tpjs ON tpjs.statut_intervenant_id = i.statut_id - AND tpjs.histo_destruction IS NULL - AND i.annee_id BETWEEN COALESCE(tpjs.annee_debut_id,i.annee_id) AND COALESCE(tpjs.annee_fin_id,i.annee_id) - - JOIN type_piece_jointe tpj ON tpj.id = tpjs.type_piece_jointe_id - AND tpj.histo_destruction IS NULL - - LEFT JOIN i_h ON i_h.intervenant_id = i.id -WHERE - -- Gestion de l'historique - i.histo_destruction IS NULL +-- EPS_FK_IDX +CREATE INDEX "EPS_FK_IDX" ON "ELEMENT_PEDAGOGIQUE" ("STRUCTURE_ID"); - -- Seuil HETD - AND (COALESCE(i_h.heures,0) > COALESCE(tpjs.seuil_hetd,-1)) +-- EP_ANNEE_FK_IDX +CREATE INDEX "EP_ANNEE_FK_IDX" ON "ELEMENT_PEDAGOGIQUE" ("ANNEE_ID"); - -- En fonction du premier recrutement ou non - AND (tpjs.premier_recrutement = 0 OR COALESCE(i.premier_recrutement,0) = 1) +-- EP_CODE_UN +CREATE UNIQUE INDEX "EP_CODE_UN" ON "ELEMENT_PEDAGOGIQUE" ("CODE", "HISTO_DESTRUCTION", "ANNEE_ID"); - -- Le RIB n'est demandé QUE s'il est différent!! - AND CASE - WHEN tpjs.changement_rib = 0 OR d.id IS NULL THEN 1 - ELSE CASE WHEN replace(i.bic, ' ', '') || '-' || replace(i.iban, ' ', '') = d.rib THEN 0 ELSE 1 END - END = 1 +-- EP_CODE__UN +CREATE UNIQUE INDEX "EP_CODE__UN" ON "ELEMENT_PEDAGOGIQUE" ("SOURCE_CODE", "ANNEE_ID"); - -- Filtre FC - AND (tpjs.fc = 0 OR i_h.fc > 0) -GROUP BY - i.annee_id, - i.id, - tpj.id; +-- EP_DISCIPLINE_FK_IDX +CREATE INDEX "EP_DISCIPLINE_FK_IDX" ON "ELEMENT_PEDAGOGIQUE" ("DISCIPLINE_ID"); --- V_TBL_PIECE_JOINTE_FOURNIE -CREATE OR REPLACE FORCE VIEW "V_TBL_PIECE_JOINTE_FOURNIE" ("ANNEE_ID", "TYPE_PIECE_JOINTE_ID", "INTERVENANT_ID", "PIECE_JOINTE_ID", "VALIDATION_ID", "FICHIER_ID") AS - SELECT - i.annee_id, - pj.type_piece_jointe_id, - pj.intervenant_id, - pj.id piece_jointe_id, - v.id validation_id, - f.id fichier_id -FROM - piece_jointe pj - JOIN intervenant i ON i.id = pj.intervenant_id - AND i.histo_destruction IS NULL - - JOIN piece_jointe_fichier pjf ON pjf.piece_jointe_id = pj.id - JOIN fichier f ON f.id = pjf.fichier_id - AND f.histo_destruction IS NULL - - LEFT JOIN validation v ON v.id = pj.validation_id - AND v.histo_destruction IS NULL -WHERE - pj.histo_destruction IS NULL; +-- EP_ETAPE_FK_IDX +CREATE INDEX "EP_ETAPE_FK_IDX" ON "ELEMENT_PEDAGOGIQUE" ("ETAPE_ID"); --- V_TBL_SERVICE -CREATE OR REPLACE FORCE VIEW "V_TBL_SERVICE" ("ANNEE_ID", "INTERVENANT_ID", "INTERVENANT_STRUCTURE_ID", "STRUCTURE_ID", "TYPE_INTERVENANT_ID", "TYPE_INTERVENANT_CODE", "PEUT_SAISIR_SERVICE", "ELEMENT_PEDAGOGIQUE_ID", "SERVICE_ID", "ELEMENT_PEDAGOGIQUE_PERIODE_ID", "ETAPE_ID", "TYPE_VOLUME_HORAIRE_ID", "TYPE_VOLUME_HORAIRE_CODE", "ELEMENT_PEDAGOGIQUE_HISTO", "ETAPE_HISTO", "HAS_HEURES_MAUVAISE_PERIODE", "NBVH", "HEURES", "VALIDE") AS - WITH t AS ( -SELECT - s.id service_id, - s.intervenant_id intervenant_id, - ep.structure_id structure_id, - ep.id element_pedagogique_id, - ep.periode_id element_pedagogique_periode_id, - etp.id etape_id, +-- EP_PERIODE_FK_IDX +CREATE INDEX "EP_PERIODE_FK_IDX" ON "ELEMENT_PEDAGOGIQUE" ("PERIODE_ID"); - vh.type_volume_horaire_id type_volume_horaire_id, - vh.heures heures, - tvh.code type_volume_horaire_code, +-- EP_SOURCE_FK_IDX +CREATE INDEX "EP_SOURCE_FK_IDX" ON "ELEMENT_PEDAGOGIQUE" ("SOURCE_ID"); - CASE WHEN ep.histo_destruction IS NULL THEN 1 ELSE 0 END element_pedagogique_histo, - CASE WHEN etp.histo_destruction IS NULL OR cp.id IS NOT NULL THEN 1 ELSE 0 END etape_histo, +-- EP_SRC_UN +CREATE UNIQUE INDEX "EP_SRC_UN" ON "ELEMENT_PEDAGOGIQUE" ("SOURCE_CODE", "ANNEE_ID", "HISTO_DESTRUCTION"); - CASE WHEN ep.periode_id IS NOT NULL THEN - SUM( CASE WHEN vh.periode_id <> ep.periode_id THEN 1 ELSE 0 END ) OVER( PARTITION BY vh.service_id, vh.periode_id, vh.type_volume_horaire_id, vh.type_intervention_id ) - ELSE 0 END has_heures_mauvaise_periode, +-- ETABLISSEMENT_HCFK_IDX +CREATE INDEX "ETABLISSEMENT_HCFK_IDX" ON "ETABLISSEMENT" ("HISTO_CREATEUR_ID"); - CASE WHEN v.id IS NULL THEN 0 ELSE 1 END valide -FROM - service s - LEFT JOIN element_pedagogique ep ON ep.id = s.element_pedagogique_id - LEFT JOIN etape etp ON etp.id = ep.etape_id - LEFT JOIN chemin_pedagogique cp ON cp.etape_id = etp.id - AND cp.element_pedagogique_id = ep.id - AND cp.histo_destruction IS NULL +-- ETABLISSEMENT_HDFK_IDX +CREATE INDEX "ETABLISSEMENT_HDFK_IDX" ON "ETABLISSEMENT" ("HISTO_DESTRUCTEUR_ID"); - JOIN volume_horaire vh ON vh.service_id = s.id - AND vh.histo_destruction IS NULL +-- ETABLISSEMENT_HMFK_IDX +CREATE INDEX "ETABLISSEMENT_HMFK_IDX" ON "ETABLISSEMENT" ("HISTO_MODIFICATEUR_ID"); - JOIN type_volume_horaire tvh ON tvh.id = vh.type_volume_horaire_id +-- ETABLISSEMENT_PK +CREATE UNIQUE INDEX "ETABLISSEMENT_PK" ON "ETABLISSEMENT" ("ID"); - LEFT JOIN validation_vol_horaire vvh ON vvh.volume_horaire_id = vh.id +-- ETABLISSEMENT_SOURCE_FK_IDX +CREATE INDEX "ETABLISSEMENT_SOURCE_FK_IDX" ON "ETABLISSEMENT" ("SOURCE_ID"); + +-- ETABLISSEMENT_SOURCE_ID_UN +CREATE UNIQUE INDEX "ETABLISSEMENT_SOURCE_ID_UN" ON "ETABLISSEMENT" ("SOURCE_CODE"); + +-- ETAPE_ANNEE_IDX +CREATE INDEX "ETAPE_ANNEE_IDX" ON "ETAPE" ("ANNEE_ID"); + +-- ETAPE_CODE_UN +CREATE UNIQUE INDEX "ETAPE_CODE_UN" ON "ETAPE" ("CODE", "ANNEE_ID", "HISTO_DESTRUCTION"); + +-- ETAPE_DF_FK_IDX +CREATE INDEX "ETAPE_DF_FK_IDX" ON "ETAPE" ("DOMAINE_FONCTIONNEL_ID"); + +-- ETAPE_HCFK_IDX +CREATE INDEX "ETAPE_HCFK_IDX" ON "ETAPE" ("HISTO_CREATEUR_ID"); + +-- ETAPE_HDFK_IDX +CREATE INDEX "ETAPE_HDFK_IDX" ON "ETAPE" ("HISTO_DESTRUCTEUR_ID"); + +-- ETAPE_HMFK_IDX +CREATE INDEX "ETAPE_HMFK_IDX" ON "ETAPE" ("HISTO_MODIFICATEUR_ID"); - LEFT JOIN validation v ON v.id = vvh.validation_id - AND v.histo_destruction IS NULL -WHERE - s.histo_destruction IS NULL -) -SELECT - i.annee_id annee_id, - i.id intervenant_id, - i.structure_id intervenant_structure_id, - NVL( t.structure_id, i.structure_id ) structure_id, - ti.id type_intervenant_id, - ti.code type_intervenant_code, - si.peut_saisir_service peut_saisir_service, +-- ETAPE_PK +CREATE UNIQUE INDEX "ETAPE_PK" ON "ETAPE" ("ID"); - t.element_pedagogique_id, - t.service_id, - t.element_pedagogique_periode_id, - t.etape_id, - t.type_volume_horaire_id, - t.type_volume_horaire_code, - t.element_pedagogique_histo, - t.etape_histo, +-- ETAPE_SOURCE_FK_IDX +CREATE INDEX "ETAPE_SOURCE_FK_IDX" ON "ETAPE" ("SOURCE_ID"); - CASE WHEN SUM(t.has_heures_mauvaise_periode) > 0 THEN 1 ELSE 0 END has_heures_mauvaise_periode, +-- ETAPE_SRC_UN +CREATE UNIQUE INDEX "ETAPE_SRC_UN" ON "ETAPE" ("SOURCE_CODE", "HISTO_DESTRUCTION", "ANNEE_ID"); - CASE WHEN type_volume_horaire_id IS NULL THEN 0 ELSE count(*) END nbvh, - CASE WHEN type_volume_horaire_id IS NULL THEN 0 ELSE sum(t.heures) END heures, - sum(valide) valide -FROM - t - JOIN intervenant i ON i.id = t.intervenant_id - JOIN statut_intervenant si ON si.id = i.statut_id - JOIN type_intervenant ti ON ti.id = si.type_intervenant_id -GROUP BY - i.annee_id, - i.id, - i.structure_id, - t.structure_id, - i.structure_id, - ti.id, - ti.code, - si.peut_saisir_service, - t.element_pedagogique_id, - t.service_id, - t.element_pedagogique_periode_id, - t.etape_id, - t.type_volume_horaire_id, - t.type_volume_horaire_code, - t.element_pedagogique_histo, - t.etape_histo; +-- ETAPE_STRUCTURE_FK_IDX +CREATE INDEX "ETAPE_STRUCTURE_FK_IDX" ON "ETAPE" ("STRUCTURE_ID"); --- V_TBL_SERVICE_REFERENTIEL -CREATE OR REPLACE FORCE VIEW "V_TBL_SERVICE_REFERENTIEL" ("ANNEE_ID", "INTERVENANT_ID", "PEUT_SAISIR_SERVICE", "TYPE_VOLUME_HORAIRE_ID", "STRUCTURE_ID", "NBVH", "VALIDE") AS - WITH t AS ( +-- ETAPE_TYPE_FORMATION_FK_IDX +CREATE INDEX "ETAPE_TYPE_FORMATION_FK_IDX" ON "ETAPE" ("TYPE_FORMATION_ID"); - SELECT - i.annee_id, - i.id intervenant_id, - si.peut_saisir_referentiel peut_saisir_service, - vh.type_volume_horaire_id, - s.structure_id, - CASE WHEN v.id IS NULL THEN 0 ELSE 1 END valide - FROM - intervenant i - - JOIN statut_intervenant si ON si.id = i.statut_id - - LEFT JOIN service_referentiel s ON s.intervenant_id = i.id - AND s.histo_destruction IS NULL - - LEFT JOIN volume_horaire_ref vh ON vh.service_referentiel_id = s.id - AND vh.histo_destruction IS NULL - - LEFT JOIN validation_vol_horaire_ref vvh ON vvh.volume_horaire_ref_id = vh.id - - LEFT JOIN validation v ON v.id = vvh.validation_id - AND v.histo_destruction IS NULL - WHERE - i.histo_destruction IS NULL +-- ETAT_VOLUME_HORAIRE_PK +CREATE UNIQUE INDEX "ETAT_VOLUME_HORAIRE_PK" ON "ETAT_VOLUME_HORAIRE" ("ID"); -) -SELECT - annee_id, - intervenant_id, - peut_saisir_service, - type_volume_horaire_id, - structure_id, - CASE WHEN type_volume_horaire_id IS NULL THEN 0 ELSE count(*) END nbvh, - sum(valide) valide -FROM - t -WHERE - NOT (structure_id IS NOT NULL AND type_volume_horaire_id IS NULL) -GROUP BY - annee_id, - intervenant_id, - peut_saisir_service, - type_volume_horaire_id, - structure_id; +-- ETAT_VOLUME_HORAIRE__UN +CREATE UNIQUE INDEX "ETAT_VOLUME_HORAIRE__UN" ON "ETAT_VOLUME_HORAIRE" ("CODE"); --- V_TBL_SERVICE_SAISIE -CREATE OR REPLACE FORCE VIEW "V_TBL_SERVICE_SAISIE" ("ANNEE_ID", "INTERVENANT_ID", "PEUT_SAISIR_SERVICE", "PEUT_SAISIR_REFERENTIEL", "HEURES_SERVICE_PREV", "HEURES_REFERENTIEL_PREV", "HEURES_SERVICE_REAL", "HEURES_REFERENTIEL_REAL") AS - SELECT - i.annee_id, - i.id intervenant_id, - si.peut_saisir_service, - si.peut_saisir_referentiel, - SUM( CASE WHEN tvhs.code = 'PREVU' THEN NVL(vh .heures,0) ELSE 0 END ) heures_service_prev, - SUM( CASE WHEN tvhs.code = 'PREVU' THEN NVL(vhr.heures,0) ELSE 0 END ) heures_referentiel_prev, - SUM( CASE WHEN tvhs.code = 'REALISE' THEN NVL(vh .heures,0) ELSE 0 END ) heures_service_real, - SUM( CASE WHEN tvhs.code = 'REALISE' THEN NVL(vhr.heures,0) ELSE 0 END ) heures_referentiel_real -FROM - intervenant i - JOIN statut_intervenant si ON si.id = i.statut_id - LEFT JOIN service s ON s.intervenant_id = i.id AND s.histo_destruction IS NULL - LEFT JOIN volume_horaire vh ON vh.service_id = s.id AND vh.histo_destruction IS NULL - LEFT JOIN type_volume_horaire tvhs ON tvhs.id = vh.type_volume_horaire_id +-- ETR_ELEMENT_FK_IDX +CREATE INDEX "ETR_ELEMENT_FK_IDX" ON "ELEMENT_TAUX_REGIMES" ("ELEMENT_PEDAGOGIQUE_ID"); - LEFT JOIN service_referentiel sr ON sr.intervenant_id = i.id AND sr.histo_destruction IS NULL - LEFT JOIN volume_horaire_ref vhr ON vhr.service_referentiel_id = sr.id AND vhr.histo_destruction IS NULL - LEFT JOIN type_volume_horaire tvhrs ON tvhrs.id = vhr.type_volume_horaire_id -WHERE - i.histo_destruction IS NULL -GROUP BY - i.annee_id, - i.id, - si.peut_saisir_service, - si.peut_saisir_referentiel; +-- ETR_SOURCE_FK_IDX +CREATE INDEX "ETR_SOURCE_FK_IDX" ON "ELEMENT_TAUX_REGIMES" ("SOURCE_ID"); --- V_TBL_VALIDATION_ENSEIGNEMENT -CREATE OR REPLACE FORCE VIEW "V_TBL_VALIDATION_ENSEIGNEMENT" ("ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID", "TYPE_VOLUME_HORAIRE_ID", "SERVICE_ID", "VOLUME_HORAIRE_ID", "VALIDATION_ID") AS - SELECT DISTINCT - i.annee_id, - i.id intervenant_id, - CASE WHEN rsv.priorite = 'affectation' THEN - COALESCE( i.structure_id, ep.structure_id ) - ELSE - COALESCE( ep.structure_id, i.structure_id ) - END structure_id, - vh.type_volume_horaire_id, - s.id service_id, - vh.id volume_horaire_id, - v.id validation_id -FROM - service s - JOIN volume_horaire vh ON vh.service_id = s.id AND vh.histo_destruction IS NULL - JOIN intervenant i ON i.id = s.intervenant_id AND i.histo_destruction IS NULL - JOIN statut_intervenant si ON si.id = i.statut_id - JOIN regle_structure_validation rsv ON rsv.type_intervenant_id = si.type_intervenant_id AND rsv.type_volume_horaire_id = vh.type_volume_horaire_id - LEFT JOIN element_pedagogique ep ON ep.id = s.element_pedagogique_id - LEFT JOIN validation_vol_horaire vvh ON vvh.volume_horaire_id = vh.id - LEFT JOIN validation v ON v.id = vvh.validation_id AND v.histo_destruction IS NULL -WHERE - s.histo_destruction IS NULL; +-- FICHIER_HCFK_IDX +CREATE INDEX "FICHIER_HCFK_IDX" ON "FICHIER" ("HISTO_CREATEUR_ID"); --- V_TBL_VALIDATION_REFERENTIEL -CREATE OR REPLACE FORCE VIEW "V_TBL_VALIDATION_REFERENTIEL" ("ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID", "TYPE_VOLUME_HORAIRE_ID", "SERVICE_REFERENTIEL_ID", "VOLUME_HORAIRE_REF_ID", "VALIDATION_ID") AS - SELECT DISTINCT - i.annee_id, - i.id intervenant_id, - CASE WHEN rsv.priorite = 'affectation' THEN - COALESCE( i.structure_id, s.structure_id ) - ELSE - COALESCE( s.structure_id, i.structure_id ) - END structure_id, - vh.type_volume_horaire_id, - s.id service_referentiel_id, - vh.id volume_horaire_ref_id, - v.id validation_id -FROM - service_referentiel s - JOIN volume_horaire_ref vh ON vh.service_referentiel_id = s.id AND vh.histo_destruction IS NULL - JOIN intervenant i ON i.id = s.intervenant_id AND i.histo_destruction IS NULL - JOIN statut_intervenant si ON si.id = i.statut_id - JOIN regle_structure_validation rsv ON rsv.type_intervenant_id = si.type_intervenant_id AND rsv.type_volume_horaire_id = vh.type_volume_horaire_id - LEFT JOIN validation_vol_horaire_ref vvh ON vvh.volume_horaire_ref_id = vh.id - LEFT JOIN validation v ON v.id = vvh.validation_id AND v.histo_destruction IS NULL -WHERE - s.histo_destruction IS NULL; +-- FICHIER_HDFK_IDX +CREATE INDEX "FICHIER_HDFK_IDX" ON "FICHIER" ("HISTO_DESTRUCTEUR_ID"); --- V_TBL_VOLUME_HORAIRE -CREATE OR REPLACE FORCE VIEW "V_TBL_VOLUME_HORAIRE" ("ANNEE_ID", "INTERVENANT_ID", "INTERVENANT_STRUCTURE_ID", "STRUCTURE_ID", "TYPE_INTERVENANT_ID", "SERVICE_ID", "VOLUME_HORAIRE_ID", "TYPE_INTERVENTION_ID", "MOTIF_NON_PAIEMENT_ID", "VOLUME_HORAIRE_PERIODE_ID", "TYPE_VOLUME_HORAIRE_ID", "ETAT_VOLUME_HORAIRE_ID", "ELEMENT_PEDAGOGIQUE_ID", "ELEMENT_PEDAGOGIQUE_PERIODE_ID", "ETAPE_ID", "TYPE_INTERVENANT_CODE", "TYPE_VOLUME_HORAIRE_CODE", "ETAT_VOLUME_HORAIRE_CODE", "PEUT_SAISIR_SERVICE", "HEURES", "ELEMENT_PEDAGOGIQUE_HISTO", "ETAPE_HISTO", "PERIODE_CORRESP") AS - WITH has_cp AS ( -SELECT - etape_id -FROM - chemin_pedagogique cp -WHERE - cp.histo_destruction IS NULL -GROUP BY - etape_id -) -SELECT - i.annee_id annee_id, - i.id intervenant_id, - i.structure_id intervenant_structure_id, - NVL(ep.structure_id, i.structure_id) structure_id, - ti.id type_intervenant_id, - s.id service_id, - vh.id volume_horaire_id, - vh.type_intervention_id type_intervention_id, - vh.motif_non_paiement_id motif_non_paiement_id, - vh.periode_id volume_horaire_periode_id, - tvh.id type_volume_horaire_id, - evh.id etat_volume_horaire_id, - ep.id element_pedagogique_id, - ep.periode_id element_pedagogique_periode_id, - etp.id etape_id, +-- FICHIER_HMFK_IDX +CREATE INDEX "FICHIER_HMFK_IDX" ON "FICHIER" ("HISTO_MODIFICATEUR_ID"); - ti.code type_intervenant_code, - tvh.code type_volume_horaire_code, - evh.code etat_volume_horaire_code, - si.peut_saisir_service peut_saisir_service, - vh.heures heures, +-- FICHIER_PK +CREATE UNIQUE INDEX "FICHIER_PK" ON "FICHIER" ("ID"); - CASE WHEN ep.histo_destruction IS NULL THEN 1 ELSE 0 END element_pedagogique_histo, - CASE WHEN etp.histo_destruction IS NULL OR has_cp.etape_id IS NOT NULL THEN 1 ELSE 0 END etape_histo, - CASE WHEN ep.periode_id IS NOT NULL AND vh.periode_id <> ep.periode_id THEN 0 ELSE 1 END periode_corresp +-- FICHIER_VALID_FK_IDX +CREATE INDEX "FICHIER_VALID_FK_IDX" ON "FICHIER" ("VALIDATION_ID"); -FROM - intervenant i - JOIN statut_intervenant si ON si.id = i.statut_id - JOIN type_intervenant ti ON ti.id = si.type_intervenant_id - JOIN service s ON s.intervenant_id = i.id - AND s.histo_destruction IS NULL - JOIN element_pedagogique ep ON ep.id = s.element_pedagogique_id - JOIN etape etp ON etp.id = ep.etape_id - JOIN volume_horaire vh ON vh.service_id = s.id - AND vh.histo_destruction IS NULL - JOIN type_volume_horaire tvh ON tvh.id = vh.type_volume_horaire_id - JOIN v_volume_horaire_etat vhe ON vhe.volume_horaire_id = vh.id - JOIN etat_volume_horaire evh ON evh.id = vhe.etat_volume_horaire_id - LEFT JOIN has_cp ON has_cp.etape_id = etp.id -WHERE - i.histo_destruction IS NULL; +-- FONCTION_REFERENTIEL_CODE_UN +CREATE UNIQUE INDEX "FONCTION_REFERENTIEL_CODE_UN" ON "FONCTION_REFERENTIEL" ("CODE"); --- V_TBL_WORKFLOW -CREATE OR REPLACE FORCE VIEW "V_TBL_WORKFLOW" ("ETAPE_CODE", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID", "OBJECTIF", "REALISATION") AS - WITH pj AS ( - SELECT - annee_id, - intervenant_id, - SUM(demandee) demandees, - SUM(fournie) fournies, - SUM(validee) validees - FROM - tbl_piece_jointe - WHERE - 1 = OSE_WORKFLOW.match_intervenant(intervenant_id) - AND demandee > 0 - GROUP BY - annee_id, - intervenant_id -), -mep AS ( - SELECT - annee_id, - intervenant_id, - structure_id, - SUM(heures_a_payer / heures_a_payer_pond) sap, - SUM(heures_demandees) dmep, - SUM(heures_payees) mep - --COUNT(*) sap, - --SUM(CASE WHEN mise_en_paiement_id IS NULL THEN 0 ELSE 1 END) dmep, - --SUM(CASE WHEN periode_paiement_id IS NULL THEN 0 ELSE 1 END) mep - FROM - tbl_paiement - WHERE - 1 = OSE_WORKFLOW.match_intervenant(intervenant_id) - GROUP BY - annee_id, - intervenant_id, - structure_id -) -SELECT - e.code etape_code, - d.annee_id annee_id, - d.intervenant_id intervenant_id, - null structure_id, - 1 objectif, - CASE - WHEN e.code = 'DONNEES_PERSO_SAISIE' THEN - CASE WHEN d.dossier_id IS NULL THEN 0 ELSE 1 END - - WHEN e.code = 'DONNEES_PERSO_VALIDATION' THEN - CASE WHEN d.validation_id IS NULL THEN 0 ELSE 1 END - - END realisation -FROM - tbl_dossier d - JOIN ( - SELECT 'DONNEES_PERSO_SAISIE' code FROM dual - UNION SELECT 'DONNEES_PERSO_VALIDATION' code FROM dual - ) e ON 1=1 -WHERE - d. peut_saisir_dossier = 1 - AND 1 = OSE_WORKFLOW.match_intervenant(d.intervenant_id) +-- FONCTION_REFERENTIEL_HCFK_IDX +CREATE INDEX "FONCTION_REFERENTIEL_HCFK_IDX" ON "FONCTION_REFERENTIEL" ("HISTO_CREATEUR_ID"); -UNION ALL +-- FONCTION_REFERENTIEL_HDFK_IDX +CREATE INDEX "FONCTION_REFERENTIEL_HDFK_IDX" ON "FONCTION_REFERENTIEL" ("HISTO_DESTRUCTEUR_ID"); -SELECT - e.code etape_code, - tss.annee_id annee_id, - tss.intervenant_id intervenant_id, - NULL structure_id, - 1 objectif, - CASE - WHEN e.code = 'SERVICE_SAISIE' THEN - CASE WHEN tss.heures_service_prev + tss.heures_referentiel_prev > 0 THEN 1 ELSE 0 END +-- FONCTION_REFERENTIEL_HMFK_IDX +CREATE INDEX "FONCTION_REFERENTIEL_HMFK_IDX" ON "FONCTION_REFERENTIEL" ("HISTO_MODIFICATEUR_ID"); - WHEN e.code = 'SERVICE_SAISIE_REALISE' THEN - CASE WHEN tss.heures_service_real + tss.heures_referentiel_real > 0 THEN 1 ELSE 0 END +-- FONCTION_REFERENTIEL_PK +CREATE UNIQUE INDEX "FONCTION_REFERENTIEL_PK" ON "FONCTION_REFERENTIEL" ("ID"); - END realisation -FROM - TBL_SERVICE_SAISIE tss - JOIN ( - SELECT 'SERVICE_SAISIE' code FROM dual - UNION SELECT 'SERVICE_SAISIE_REALISE' code FROM dual - ) e ON 1=1 -WHERE - (tss.peut_saisir_service = 1 OR tss.peut_saisir_referentiel = 1) - AND 1 = OSE_WORKFLOW.match_intervenant(tss.intervenant_id) - -UNION ALL +-- FONCTION_REFERENTIEL_SFK_IDX +CREATE INDEX "FONCTION_REFERENTIEL_SFK_IDX" ON "FONCTION_REFERENTIEL" ("STRUCTURE_ID"); -SELECT - CASE - WHEN tvh.code = 'PREVU' THEN 'SERVICE_VALIDATION' - WHEN tvh.code = 'REALISE' THEN 'SERVICE_VALIDATION_REALISE' - END etape_code, - tve.annee_id annee_id, - tve.intervenant_id intervenant_id, - tve.structure_id structure_id, - COUNT(*) objectif, - SUM(CASE WHEN tve.validation_id IS NOT NULL THEN 1 ELSE 0 END) realisation -FROM - tbl_validation_enseignement tve - JOIN type_volume_horaire tvh ON tvh.id = tve.type_volume_horaire_id -WHERE - 1 = OSE_WORKFLOW.match_intervenant(tve.intervenant_id) -GROUP BY - tve.annee_id, - tve.intervenant_id, - tve.structure_id, - tvh.code +-- FONC_REF_DOMAINE_FONCT_FK_IDX +CREATE INDEX "FONC_REF_DOMAINE_FONCT_FK_IDX" ON "FONCTION_REFERENTIEL" ("DOMAINE_FONCTIONNEL_ID"); -UNION ALL +-- FORMULE_RESULTAT_PK +CREATE UNIQUE INDEX "FORMULE_RESULTAT_PK" ON "FORMULE_RESULTAT" ("ID"); -SELECT - CASE - WHEN tvh.code = 'PREVU' THEN 'REFERENTIEL_VALIDATION' - WHEN tvh.code = 'REALISE' THEN 'REFERENTIEL_VALIDATION_REALISE' - END etape_code, - tvr.annee_id annee_id, - tvr.intervenant_id intervenant_id, - tvr.structure_id structure_id, - count(*) objectif, - SUM(CASE WHEN tvr.validation_id IS NOT NULL THEN 1 ELSE 0 END) realisation -FROM - tbl_validation_referentiel tvr - JOIN type_volume_horaire tvh ON tvh.id = tvr.type_volume_horaire_id -WHERE - 1 = OSE_WORKFLOW.match_intervenant(tvr.intervenant_id) -GROUP BY - tvr.annee_id, - tvr.intervenant_id, - tvr.structure_id, - tvh.code +-- FORMULE_RESULTAT_SERVICE_PK +CREATE UNIQUE INDEX "FORMULE_RESULTAT_SERVICE_PK" ON "FORMULE_RESULTAT_SERVICE" ("ID"); -UNION ALL +-- FORMULE_RESULTAT_TYPE_INT_IDX +CREATE INDEX "FORMULE_RESULTAT_TYPE_INT_IDX" ON "FORMULE_RESULTAT" ("TYPE_INTERVENANT_CODE"); -SELECT - e.code etape_code, - pj.annee_id annee_id, - pj.intervenant_id intervenant_id, - null structure_id, - CASE - WHEN e.code = 'PJ_SAISIE' THEN pj.demandees - WHEN e.code = 'PJ_VALIDATION' THEN pj.demandees - END objectif, - CASE - WHEN e.code = 'PJ_SAISIE' THEN pj.fournies - WHEN e.code = 'PJ_VALIDATION' THEN pj.validees - END realisation -FROM - pj - JOIN ( - SELECT 'PJ_SAISIE' code FROM dual - UNION SELECT 'PJ_VALIDATION' code FROM dual - ) e ON ( - (e.code = 'PJ_SAISIE' AND pj.demandees > 0) - OR (e.code = 'PJ_VALIDATION' AND pj.fournies > 0) - ) - -UNION ALL +-- FORMULE_RESULTAT_VH_PK +CREATE UNIQUE INDEX "FORMULE_RESULTAT_VH_PK" ON "FORMULE_RESULTAT_VH" ("ID"); -SELECT - ta.code etape_code, - a.annee_id annee_id, - a.intervenant_id intervenant_id, - a.structure_id structure_id, - 1 objectif, - CASE WHEN a.agrement_id IS NULL THEN 0 ELSE 1 END realisation -FROM - tbl_agrement a - JOIN type_agrement ta ON ta.id = a.type_agrement_id -WHERE - 1 = OSE_WORKFLOW.match_intervenant(a.intervenant_id) - -UNION ALL +-- FORMULE_RESULTAT_VH_REF_PK +CREATE UNIQUE INDEX "FORMULE_RESULTAT_VH_REF_PK" ON "FORMULE_RESULTAT_VH_REF" ("ID"); -SELECT - 'CLOTURE_REALISE' etape_code, - c.annee_id annee_id, - c.intervenant_id intervenant_id, - null structure_id, - 1 objectif, - c.cloture realisation -FROM - tbl_cloture_realise c -WHERE - c.peut_cloturer_saisie = 1 - AND 1 = OSE_WORKFLOW.match_intervenant(c.intervenant_id) +-- FORMULE_RESULTAT__UN +CREATE UNIQUE INDEX "FORMULE_RESULTAT__UN" ON "FORMULE_RESULTAT" ("INTERVENANT_ID", "TYPE_VOLUME_HORAIRE_ID", "ETAT_VOLUME_HORAIRE_ID"); -UNION ALL +-- FRES_EVH_FK_IDX +CREATE INDEX "FRES_EVH_FK_IDX" ON "FORMULE_RESULTAT" ("ETAT_VOLUME_HORAIRE_ID"); -SELECT - e.code etape_code, - mep.annee_id annee_id, - mep.intervenant_id intervenant_id, - mep.structure_id structure_id, - CASE - WHEN e.code = 'DEMANDE_MEP' THEN mep.sap - WHEN e.code = 'SAISIE_MEP' THEN mep.dmep - END objectif, - CASE - WHEN e.code = 'DEMANDE_MEP' THEN mep.dmep - WHEN e.code = 'SAISIE_MEP' THEN mep.mep - END realisation -FROM - mep - JOIN ( - SELECT 'DEMANDE_MEP' code FROM dual - UNION SELECT 'SAISIE_MEP' code FROM dual - ) e ON ( - (e.code = 'DEMANDE_MEP' AND mep.sap > 0) - OR (e.code = 'SAISIE_MEP' AND mep.dmep > 0) - ) - - -UNION ALL +-- FRES_INTERVENANT_FK_IDX +CREATE INDEX "FRES_INTERVENANT_FK_IDX" ON "FORMULE_RESULTAT" ("INTERVENANT_ID"); -SELECT - 'CONTRAT' etape_code, - annee_id annee_id, - intervenant_id intervenant_id, - structure_id structure_id, - nbvh objectif, - edite realisation -FROM - tbl_contrat c -WHERE - peut_avoir_contrat = 1 - AND nbvh > 0 - AND 1 = OSE_WORKFLOW.match_intervenant(c.intervenant_id); +-- FRES_TVH_FK_IDX +CREATE INDEX "FRES_TVH_FK_IDX" ON "FORMULE_RESULTAT" ("TYPE_VOLUME_HORAIRE_ID"); --- V_TOTAL_DEMANDE_MEP_STRUCTURE -CREATE OR REPLACE FORCE VIEW "V_TOTAL_DEMANDE_MEP_STRUCTURE" ("INTERVENANT_ID", "STRUCTURE_ID", "TOTAL_HEURES_MEP") AS - with mep as ( - -- enseignements - select - fr.intervenant_id, - nvl(ep.structure_id, i.structure_id) structure_id, - nvl(mep.heures, 0) mep_heures - from mise_en_paiement mep - join formule_resultat_service frs on mep.formule_res_service_id = frs.id --and mep.date_mise_en_paiement is null -- date_mise_en_paiement is null <=> demande - join formule_resultat fr on frs.formule_resultat_id = fr.id - join intervenant i on fr.intervenant_id = i.id - join service s on frs.service_id = s.id - left join element_pedagogique ep on s.element_pedagogique_id = ep.id and ep.histo_destruction IS NULL - where mep.histo_destruction IS NULL - union all - -- referentiel - select - fr.intervenant_id, - s.structure_id, - nvl(mep.heures, 0) mep_heures - from mise_en_paiement mep - join formule_resultat_service_ref frs on mep.formule_res_service_ref_id = frs.id --and mep.date_mise_en_paiement is null -- date_mise_en_paiement is null <=> demande - join formule_resultat fr on frs.formule_resultat_id = fr.id - join intervenant i on fr.intervenant_id = i.id - join service_referentiel s on frs.service_referentiel_id = s.id - where mep.histo_destruction IS NULL -) -select intervenant_id, structure_id, sum(nvl(mep_heures, 0)) total_heures_mep from mep -group by intervenant_id, structure_id; +-- FRR_FORMULE_RESULTAT_FK_IDX +CREATE INDEX "FRR_FORMULE_RESULTAT_FK_IDX" ON "FORMULE_RESULTAT_SERVICE_REF" ("FORMULE_RESULTAT_ID"); --- V_VALIDATION_MISE_EN_PAIEMENT -CREATE OR REPLACE FORCE VIEW "V_VALIDATION_MISE_EN_PAIEMENT" ("VALIDATION_ID", "MISE_EN_PAIEMENT_ID") AS - SELECT - vvh.validation_id, - mep.id mise_en_paiement_id -FROM - validation_vol_horaire vvh - JOIN volume_horaire vh ON vh.id = vvh.volume_horaire_id - JOIN formule_resultat_service frs ON frs.service_id = vh.service_id - JOIN mise_en_paiement mep ON mep.formule_res_service_id = frs.id - -UNION +-- FRSR_PK +CREATE UNIQUE INDEX "FRSR_PK" ON "FORMULE_RESULTAT_SERVICE_REF" ("ID"); -SELECT - vvh.validation_id, - mep.id mise_en_paiement_id -FROM - validation_vol_horaire_ref vvh - JOIN volume_horaire_ref vh ON vh.id = vvh.volume_horaire_ref_id - JOIN formule_resultat_service_ref frs ON frs.service_referentiel_id = vh.service_referentiel_id - JOIN mise_en_paiement mep ON mep.formule_res_service_ref_id = frs.id; +-- FRSR_SR_FK_IDX +CREATE INDEX "FRSR_SR_FK_IDX" ON "FORMULE_RESULTAT_SERVICE_REF" ("SERVICE_REFERENTIEL_ID"); --- V_VOLUME_HORAIRE_ETAT -CREATE OR REPLACE FORCE VIEW "V_VOLUME_HORAIRE_ETAT" ("VOLUME_HORAIRE_ID", "ETAT_VOLUME_HORAIRE_ID") AS - SELECT - vh.id volume_horaire_id, - evh.id etat_volume_horaire_id -FROM - volume_horaire vh - LEFT JOIN contrat c ON c.id = vh.contrat_id AND c.histo_destruction IS NULL - LEFT JOIN validation cv ON cv.id = c.validation_id AND cv.histo_destruction IS NULL - JOIN etat_volume_horaire evh ON evh.code = CASE - WHEN c.date_retour_signe IS NOT NULL THEN 'contrat-signe' - WHEN cv.id IS NOT NULL THEN 'contrat-edite' - WHEN EXISTS( - SELECT * FROM validation v JOIN validation_vol_horaire vvh ON vvh.validation_id = v.id - WHERE vvh.volume_horaire_id = vh.id AND v.histo_destruction IS NULL - ) THEN 'valide' - ELSE 'saisi' - END; +-- FRS_FORMULE_RESULTAT_FK_IDX +CREATE INDEX "FRS_FORMULE_RESULTAT_FK_IDX" ON "FORMULE_RESULTAT_SERVICE" ("FORMULE_RESULTAT_ID"); --- V_VOLUME_HORAIRE_REF_ETAT -CREATE OR REPLACE FORCE VIEW "V_VOLUME_HORAIRE_REF_ETAT" ("VOLUME_HORAIRE_REF_ID", "ETAT_VOLUME_HORAIRE_ID") AS - SELECT - vhr.id volume_horaire_ref_id, - evh.id etat_volume_horaire_id -FROM - volume_horaire_ref vhr - JOIN etat_volume_horaire evh ON evh.code = CASE - WHEN EXISTS( - SELECT * FROM validation v JOIN validation_vol_horaire_ref vvhr ON vvhr.validation_id = v.id - WHERE vvhr.volume_horaire_ref_id = vhr.id AND v.histo_destruction IS NULL - ) THEN 'valide' - ELSE 'saisi' - END; +-- FRS_SERVICE_FK_IDX +CREATE INDEX "FRS_SERVICE_FK_IDX" ON "FORMULE_RESULTAT_SERVICE" ("SERVICE_ID"); + +-- FRVHR_FORMULE_RESULTAT_FK_IDX +CREATE INDEX "FRVHR_FORMULE_RESULTAT_FK_IDX" ON "FORMULE_RESULTAT_VH_REF" ("FORMULE_RESULTAT_ID"); + +-- FRVHR_VHR_FK_IDX +CREATE INDEX "FRVHR_VHR_FK_IDX" ON "FORMULE_RESULTAT_VH_REF" ("VOLUME_HORAIRE_REF_ID"); + +-- FRVH_FORMULE_RESULTAT_FK_IDX +CREATE INDEX "FRVH_FORMULE_RESULTAT_FK_IDX" ON "FORMULE_RESULTAT_VH" ("FORMULE_RESULTAT_ID"); + +-- FRVH_VOLUME_HORAIRE_FK_IDX +CREATE INDEX "FRVH_VOLUME_HORAIRE_FK_IDX" ON "FORMULE_RESULTAT_VH" ("VOLUME_HORAIRE_ID"); + +-- GRADE_CORPS_FK_IDX +CREATE INDEX "GRADE_CORPS_FK_IDX" ON "GRADE" ("CORPS_ID"); + +-- GRADE_HCFK_IDX +CREATE INDEX "GRADE_HCFK_IDX" ON "GRADE" ("HISTO_CREATEUR_ID"); + +-- GRADE_HDFK_IDX +CREATE INDEX "GRADE_HDFK_IDX" ON "GRADE" ("HISTO_DESTRUCTEUR_ID"); + +-- GRADE_HMFK_IDX +CREATE INDEX "GRADE_HMFK_IDX" ON "GRADE" ("HISTO_MODIFICATEUR_ID"); + +-- GRADE_PK +CREATE UNIQUE INDEX "GRADE_PK" ON "GRADE" ("ID"); + +-- GROUPE_EP_FK_IDX +CREATE INDEX "GROUPE_EP_FK_IDX" ON "GROUPE" ("ELEMENT_PEDAGOGIQUE_ID"); + +-- GROUPE_HCFK_IDX +CREATE INDEX "GROUPE_HCFK_IDX" ON "GROUPE" ("HISTO_CREATEUR_ID"); + +-- GROUPE_HDFK_IDX +CREATE INDEX "GROUPE_HDFK_IDX" ON "GROUPE" ("HISTO_DESTRUCTEUR_ID"); + +-- GROUPE_HMFK_IDX +CREATE INDEX "GROUPE_HMFK_IDX" ON "GROUPE" ("HISTO_MODIFICATEUR_ID"); + +-- GROUPE_PK +CREATE UNIQUE INDEX "GROUPE_PK" ON "GROUPE" ("ID"); + +-- GROUPE_TI_FK_IDX +CREATE INDEX "GROUPE_TI_FK_IDX" ON "GROUPE" ("TYPE_INTERVENTION_ID"); + +-- GROUPE_TYPE_FORMATION_HCFK_IDX +CREATE INDEX "GROUPE_TYPE_FORMATION_HCFK_IDX" ON "GROUPE_TYPE_FORMATION" ("HISTO_CREATEUR_ID"); + +-- GROUPE_TYPE_FORMATION_HDFK_IDX +CREATE INDEX "GROUPE_TYPE_FORMATION_HDFK_IDX" ON "GROUPE_TYPE_FORMATION" ("HISTO_DESTRUCTEUR_ID"); + +-- GROUPE_TYPE_FORMATION_HMFK_IDX +CREATE INDEX "GROUPE_TYPE_FORMATION_HMFK_IDX" ON "GROUPE_TYPE_FORMATION" ("HISTO_MODIFICATEUR_ID"); + +-- GROUPE_TYPE_FORMATION_PK +CREATE UNIQUE INDEX "GROUPE_TYPE_FORMATION_PK" ON "GROUPE_TYPE_FORMATION" ("ID"); + +-- GROUPE__UN +CREATE UNIQUE INDEX "GROUPE__UN" ON "GROUPE" ("ELEMENT_PEDAGOGIQUE_ID", "HISTO_DESTRUCTEUR_ID", "TYPE_INTERVENTION_ID"); + +-- GTYPE_FORMATION_SOURCE_FK_IDX +CREATE INDEX "GTYPE_FORMATION_SOURCE_FK_IDX" ON "GROUPE_TYPE_FORMATION" ("SOURCE_ID"); + +-- GTYPE_FORMATION_SOURCE_UN +CREATE UNIQUE INDEX "GTYPE_FORMATION_SOURCE_UN" ON "GROUPE_TYPE_FORMATION" ("SOURCE_CODE"); + +-- HISTO_INTERVENANT_SERVICE__UN +CREATE UNIQUE INDEX "HISTO_INTERVENANT_SERVICE__UN" ON "HISTO_INTERVENANT_SERVICE" ("INTERVENANT_ID", "TYPE_VOLUME_HORAIRE_ID", "REFERENTIEL"); + +-- HISTO_SERVICE_MODIFICATION_PK +CREATE UNIQUE INDEX "HISTO_SERVICE_MODIFICATION_PK" ON "HISTO_INTERVENANT_SERVICE" ("ID"); + +-- HSM_INTERVENANT_FK_IDX +CREATE INDEX "HSM_INTERVENANT_FK_IDX" ON "HISTO_INTERVENANT_SERVICE" ("INTERVENANT_ID"); + +-- HSM_TYPE_VOLUME_HORAIRE_FK_IDX +CREATE INDEX "HSM_TYPE_VOLUME_HORAIRE_FK_IDX" ON "HISTO_INTERVENANT_SERVICE" ("TYPE_VOLUME_HORAIRE_ID"); + +-- HSM_UTILISATEUR_FK_IDX +CREATE INDEX "HSM_UTILISATEUR_FK_IDX" ON "HISTO_INTERVENANT_SERVICE" ("HISTO_MODIFICATEUR_ID"); + +-- IMPORT_TABLES_PK +CREATE UNIQUE INDEX "IMPORT_TABLES_PK" ON "IMPORT_TABLES" ("TABLE_NAME"); + +-- INDICATEUR_PK +CREATE UNIQUE INDEX "INDICATEUR_PK" ON "INDICATEUR" ("ID"); + +-- INDIC_DIFF_DOSSIER_INT_FK_IDX +CREATE INDEX "INDIC_DIFF_DOSSIER_INT_FK_IDX" ON "INDIC_MODIF_DOSSIER" ("INTERVENANT_ID"); + +-- INDIC_MODIF_DOSSIER_HCFK_IDX +CREATE INDEX "INDIC_MODIF_DOSSIER_HCFK_IDX" ON "INDIC_MODIF_DOSSIER" ("HISTO_CREATEUR_ID"); + +-- INDIC_MODIF_DOSSIER_HDFK_IDX +CREATE INDEX "INDIC_MODIF_DOSSIER_HDFK_IDX" ON "INDIC_MODIF_DOSSIER" ("HISTO_DESTRUCTEUR_ID"); + +-- INDIC_MODIF_DOSSIER_HMFK_IDX +CREATE INDEX "INDIC_MODIF_DOSSIER_HMFK_IDX" ON "INDIC_MODIF_DOSSIER" ("HISTO_MODIFICATEUR_ID"); + +-- INDIC_MODIF_DOSSIER_PK +CREATE UNIQUE INDEX "INDIC_MODIF_DOSSIER_PK" ON "INDIC_MODIF_DOSSIER" ("ID"); + +-- INTERVENANTS_CIVILITES_FK_IDX +CREATE INDEX "INTERVENANTS_CIVILITES_FK_IDX" ON "INTERVENANT" ("CIVILITE_ID"); + +-- INTERVENANT_ANNEE_FK_IDX +CREATE INDEX "INTERVENANT_ANNEE_FK_IDX" ON "INTERVENANT" ("ANNEE_ID"); + +-- INTERVENANT_CODE_UN +CREATE UNIQUE INDEX "INTERVENANT_CODE_UN" ON "INTERVENANT" ("CODE", "ANNEE_ID"); + +-- INTERVENANT_DEP_NAISSANCE_IDX +CREATE INDEX "INTERVENANT_DEP_NAISSANCE_IDX" ON "INTERVENANT" ("DEP_NAISSANCE_ID"); + +-- INTERVENANT_DISCIPLINE_FK_IDX +CREATE INDEX "INTERVENANT_DISCIPLINE_FK_IDX" ON "INTERVENANT" ("DISCIPLINE_ID"); + +-- INTERVENANT_GRADE_FK_IDX +CREATE INDEX "INTERVENANT_GRADE_FK_IDX" ON "INTERVENANT" ("GRADE_ID"); + +-- INTERVENANT_HCFK_IDX +CREATE INDEX "INTERVENANT_HCFK_IDX" ON "INTERVENANT" ("HISTO_CREATEUR_ID"); + +-- INTERVENANT_HDFK_IDX +CREATE INDEX "INTERVENANT_HDFK_IDX" ON "INTERVENANT" ("HISTO_DESTRUCTEUR_ID"); + +-- INTERVENANT_HMFK_IDX +CREATE INDEX "INTERVENANT_HMFK_IDX" ON "INTERVENANT" ("HISTO_MODIFICATEUR_ID"); + +-- INTERVENANT_NOM_PATRO_IDX +CREATE INDEX "INTERVENANT_NOM_PATRO_IDX" ON "INTERVENANT" ("NOM_PATRONYMIQUE"); + +-- INTERVENANT_NOM_USUEL_IDX +CREATE INDEX "INTERVENANT_NOM_USUEL_IDX" ON "INTERVENANT" ("NOM_USUEL"); + +-- INTERVENANT_PAYS_NAISSANCE_IDX +CREATE INDEX "INTERVENANT_PAYS_NAISSANCE_IDX" ON "INTERVENANT" ("PAYS_NAISSANCE_ID"); + +-- INTERVENANT_PAYS_NAT_IDX +CREATE INDEX "INTERVENANT_PAYS_NAT_IDX" ON "INTERVENANT" ("PAYS_NATIONALITE_ID"); + +-- INTERVENANT_PK +CREATE UNIQUE INDEX "INTERVENANT_PK" ON "INTERVENANT" ("ID"); + +-- INTERVENANT_PRENOM_IDX +CREATE INDEX "INTERVENANT_PRENOM_IDX" ON "INTERVENANT" ("PRENOM"); + +-- INTERVENANT_RECHERCHE_IDX +CREATE INDEX "INTERVENANT_RECHERCHE_IDX" ON "INTERVENANT" ("CRITERE_RECHERCHE"); --- V_VOL_HORAIRE_ETAT_MULTI -CREATE OR REPLACE FORCE VIEW "V_VOL_HORAIRE_ETAT_MULTI" ("VOLUME_HORAIRE_ID", "ETAT_VOLUME_HORAIRE_ID") AS - select vh.id VOLUME_HORAIRE_ID, evh.id ETAT_VOLUME_HORAIRE_ID - from volume_horaire vh - join service s on s.id = vh.service_id and s.histo_destruction IS NULL - join etat_volume_horaire evh on evh.code = 'saisi' - where vh.histo_destruction IS NULL -union all - select vh.id, evh.id - from volume_horaire vh - join service s on s.id = vh.service_id and s.histo_destruction IS NULL - join etat_volume_horaire evh on evh.code = 'valide' - where vh.histo_destruction IS NULL - and EXISTS( - SELECT * FROM validation v JOIN validation_vol_horaire vvh ON vvh.validation_id = v.id - WHERE vvh.volume_horaire_id = vh.id AND v.histo_destruction IS NULL - ) -union all - select vh.id, evh.id - from volume_horaire vh - join service s on s.id = vh.service_id and s.histo_destruction IS NULL - join contrat c on vh.contrat_id = c.id and c.histo_destruction IS NULL - join etat_volume_horaire evh on evh.code = 'contrat-edite' - where vh.histo_destruction IS NULL -union all - select vh.id, evh.id - from volume_horaire vh - join service s on s.id = vh.service_id and s.histo_destruction IS NULL - join contrat c on vh.contrat_id = c.id and c.histo_destruction IS NULL and c.date_retour_signe is not null - join etat_volume_horaire evh on evh.code = 'contrat-signe' - where vh.histo_destruction IS NULL; +-- INTERVENANT_SAISIE_PK +CREATE UNIQUE INDEX "INTERVENANT_SAISIE_PK" ON "INTERVENANT_SAISIE" ("ID"); --- V_VOL_HORAIRE_REF_ETAT_MULTI -CREATE OR REPLACE FORCE VIEW "V_VOL_HORAIRE_REF_ETAT_MULTI" ("VOLUME_HORAIRE_REF_ID", "ETAT_VOLUME_HORAIRE_ID") AS - select vh.id VOLUME_HORAIRE_REF_ID, evh.id ETAT_VOLUME_HORAIRE_ID - from volume_horaire_ref vh - join service_referentiel s on s.id = vh.service_referentiel_id and s.histo_destruction IS NULL - join etat_volume_horaire evh on evh.code = 'saisi' - where vh.histo_destruction IS NULL -union all - select vh.id, evh.id - from volume_horaire_ref vh - join service_referentiel s on s.id = vh.service_referentiel_id and s.histo_destruction IS NULL - join etat_volume_horaire evh on evh.code = 'valide' - where vh.histo_destruction IS NULL - and EXISTS( - SELECT * FROM validation v JOIN validation_vol_horaire_ref vvh ON vvh.validation_id = v.id - WHERE vvh.volume_horaire_ref_id = vh.id AND v.histo_destruction IS NULL - ); +-- INTERVENANT_SAISIE_STT_IDX +CREATE INDEX "INTERVENANT_SAISIE_STT_IDX" ON "INTERVENANT_SAISIE" ("STATUT_ID"); --- V_WORKFLOW_ETAPE_PERTINENTE -CREATE OR REPLACE FORCE VIEW "V_WORKFLOW_ETAPE_PERTINENTE" ("ANNEE_ID", "INTERVENANT_ID", "ETAPE_CODE") AS - WITH peut_pj AS ( - SELECT DISTINCT - statut_intervenant_id, - 1 tem - FROM - type_piece_jointe_statut tpjs - WHERE - tpjs.histo_destruction IS NULL -), -peut_agr AS ( - SELECT - tas.statut_intervenant_id, - ta.code, - tas.premier_recrutement - FROM - type_agrement_statut tas - JOIN type_agrement ta ON ta.id = tas.type_agrement_id - WHERE - tas.histo_destruction IS NULL -) -SELECT - i.annee_id annee_id, - i.id intervenant_id, - e.code etape_code -FROM - intervenant i - JOIN statut_intervenant si ON si.id = i.statut_id - LEFT JOIN peut_pj ON peut_pj.statut_intervenant_id = si.id - LEFT JOIN peut_agr peut_cr ON peut_cr.code = 'CONSEIL_RESTREINT' AND peut_cr.statut_intervenant_id = si.id AND (peut_cr.premier_recrutement IS NULL OR NVL(i.premier_recrutement,0) = peut_cr.premier_recrutement) - LEFT JOIN peut_agr peut_ca ON peut_ca.code = 'CONSEIL_ACADEMIQUE' AND peut_ca.statut_intervenant_id = si.id AND (peut_ca.premier_recrutement IS NULL OR NVL(i.premier_recrutement,0) = peut_ca.premier_recrutement) - JOIN wf_etape e ON 1 = CASE e.code +-- INTERVENANT_SAISIE__UN +CREATE UNIQUE INDEX "INTERVENANT_SAISIE__UN" ON "INTERVENANT_SAISIE" ("INTERVENANT_ID"); - WHEN 'DONNEES_PERSO_SAISIE' THEN - si.peut_saisir_dossier +-- INTERVENANT_SOURCE_CODE_IDX +CREATE INDEX "INTERVENANT_SOURCE_CODE_IDX" ON "INTERVENANT" ("SOURCE_CODE"); - WHEN 'SERVICE_SAISIE' THEN - CASE WHEN si.peut_saisir_service + si.peut_saisir_referentiel = 0 THEN 0 ELSE 1 END +-- INTERVENANT_SOURCE_FK_IDX +CREATE INDEX "INTERVENANT_SOURCE_FK_IDX" ON "INTERVENANT" ("SOURCE_ID"); - WHEN 'PJ_SAISIE' THEN - peut_pj.tem +-- INTERVENANT_SOURCE__UN +CREATE UNIQUE INDEX "INTERVENANT_SOURCE__UN" ON "INTERVENANT" ("SOURCE_CODE", "ANNEE_ID"); - WHEN 'PJ_VALIDATION' THEN - peut_pj.tem +-- INTERVENANT_STATUT_FK_IDX +CREATE INDEX "INTERVENANT_STATUT_FK_IDX" ON "INTERVENANT" ("STATUT_ID"); - WHEN 'DONNEES_PERSO_VALIDATION' THEN - si.peut_saisir_dossier +-- INTERVENANT_STRUCTURE_FK_IDX +CREATE INDEX "INTERVENANT_STRUCTURE_FK_IDX" ON "INTERVENANT" ("STRUCTURE_ID"); - WHEN 'SERVICE_VALIDATION' THEN - si.peut_saisir_service +-- INTERVENANT_UTIL_CODE_UN +CREATE UNIQUE INDEX "INTERVENANT_UTIL_CODE_UN" ON "INTERVENANT" ("UTILISATEUR_CODE", "ANNEE_ID", "STATUT_ID"); - WHEN 'REFERENTIEL_VALIDATION' THEN - si.peut_saisir_referentiel +-- LIEN_HISTO_CREATEUR_IDX +CREATE INDEX "LIEN_HISTO_CREATEUR_IDX" ON "LIEN" ("HISTO_CREATEUR_ID"); - WHEN 'CONSEIL_RESTREINT' THEN - CASE WHEN peut_cr.code IS NULL THEN 0 ELSE 1 END +-- LIEN_HISTO_DESTRUCTEUR_IDX +CREATE INDEX "LIEN_HISTO_DESTRUCTEUR_IDX" ON "LIEN" ("HISTO_DESTRUCTEUR_ID"); - WHEN 'CONSEIL_ACADEMIQUE' THEN - CASE WHEN peut_ca.code IS NULL THEN 0 ELSE 1 END +-- LIEN_HISTO_MODIFICATEUR_IDX +CREATE INDEX "LIEN_HISTO_MODIFICATEUR_IDX" ON "LIEN" ("HISTO_MODIFICATEUR_ID"); - WHEN 'CONTRAT' THEN - si.peut_avoir_contrat +-- LIEN_NOEUD_INF_IDX +CREATE INDEX "LIEN_NOEUD_INF_IDX" ON "LIEN" ("NOEUD_INF_ID"); - WHEN 'SERVICE_SAISIE_REALISE' THEN - CASE WHEN si.peut_saisir_service + si.peut_saisir_referentiel = 0 THEN 0 ELSE 1 END +-- LIEN_NOEUD_SUP_IDX +CREATE INDEX "LIEN_NOEUD_SUP_IDX" ON "LIEN" ("NOEUD_SUP_ID"); - WHEN 'CLOTURE_REALISE' THEN - si.peut_cloturer_saisie +-- LIEN_PK +CREATE UNIQUE INDEX "LIEN_PK" ON "LIEN" ("ID"); - WHEN 'SERVICE_VALIDATION_REALISE' THEN - si.peut_saisir_service +-- LIEN_SOURCE_IDX +CREATE INDEX "LIEN_SOURCE_IDX" ON "LIEN" ("SOURCE_ID"); - WHEN 'REFERENTIEL_VALIDATION_REALISE' THEN - si.peut_saisir_referentiel +-- LIEN_SRC_UN +CREATE UNIQUE INDEX "LIEN_SRC_UN" ON "LIEN" ("SOURCE_CODE", "HISTO_DESTRUCTION"); - WHEN 'DEMANDE_MEP' THEN - CASE WHEN si.peut_saisir_service + si.peut_saisir_referentiel = 0 THEN 0 ELSE 1 END +-- LIEN_STRUCTURE_IDX +CREATE INDEX "LIEN_STRUCTURE_IDX" ON "LIEN" ("STRUCTURE_ID"); - WHEN 'SAISIE_MEP' THEN - CASE WHEN si.peut_saisir_service + si.peut_saisir_referentiel = 0 THEN 0 ELSE 1 END +-- MEP_CENTRE_COUT_FK_IDX +CREATE INDEX "MEP_CENTRE_COUT_FK_IDX" ON "MISE_EN_PAIEMENT" ("CENTRE_COUT_ID"); - END -WHERE - i.histo_destruction IS NULL; +-- MEP_DOMAINE_FONCTIONNEL_FK_IDX +CREATE INDEX "MEP_DOMAINE_FONCTIONNEL_FK_IDX" ON "MISE_EN_PAIEMENT" ("DOMAINE_FONCTIONNEL_ID"); --------------------------------------------------- --- Vues matérialisées --------------------------------------------------- +-- MEP_FR_SERVICE_FK_IDX +CREATE INDEX "MEP_FR_SERVICE_FK_IDX" ON "MISE_EN_PAIEMENT" ("FORMULE_RES_SERVICE_ID"); --- TBL_NOEUD -CREATE MATERIALIZED VIEW "TBL_NOEUD" ("NOEUD_ID", "NOEUD_ETAPE_ID", "CODE", "LIBELLE", "ANNEE_ID", "ETAPE_ID", "ELEMENT_PEDAGOGIQUE_ID", "ELEMENT_PEDAGOGIQUE_ETAPE_ID", "STRUCTURE_ID", "GROUPE_TYPE_FORMATION_ID") AS -SELECT - n.id noeud_id, - en.id noeud_etape_id, - n.code code, - n.libelle libelle, - n.annee_id annee_id, - n.etape_id etape_id, - n.element_pedagogique_id element_pedagogique_id, - etp.id element_pedagogique_etape_id, - n.structure_id structure_id, - tf.groupe_id groupe_type_formation_id -FROM - noeud n - LEFT JOIN element_pedagogique ep ON ep.id = n.element_pedagogique_id - LEFT JOIN etape etp ON etp.id = COALESCE(n.etape_id,ep.etape_id) - LEFT JOIN type_formation tf ON tf.id = etp.type_formation_id - LEFT JOIN noeud en ON en.etape_id = etp.id -WHERE - n.histo_destruction IS NULL; +-- MEP_FR_SERVICE_REF_FK_IDX +CREATE INDEX "MEP_FR_SERVICE_REF_FK_IDX" ON "MISE_EN_PAIEMENT" ("FORMULE_RES_SERVICE_REF_ID"); --------------------------------------------------- --- Packages Bodies --------------------------------------------------- +-- MEP_PERIODE_FK_IDX +CREATE INDEX "MEP_PERIODE_FK_IDX" ON "MISE_EN_PAIEMENT" ("PERIODE_PAIEMENT_ID"); --- OSE_CHARGENS -CREATE OR REPLACE PACKAGE BODY "OSE_CHARGENS" AS - SCENARIO NUMERIC; - NOEUD NUMERIC; - old_enable BOOLEAN DEFAULT TRUE; +-- MEP_TYPE_HEURES_FK_IDX +CREATE INDEX "MEP_TYPE_HEURES_FK_IDX" ON "MISE_EN_PAIEMENT" ("TYPE_HEURES_ID"); - TYPE T_PRECALC_HEURES_PARAMS IS RECORD ( - annee_id NUMERIC DEFAULT NULL, - structure_id NUMERIC DEFAULT NULL, - scenario_id NUMERIC DEFAULT NULL, - type_heures_id NUMERIC DEFAULT NULL, - etape_id NUMERIC DEFAULT NULL, - noeud_ids tnoeud_ids DEFAULT NULL - ); +-- MEP_VALIDATION_FK_IDX +CREATE INDEX "MEP_VALIDATION_FK_IDX" ON "MISE_EN_PAIEMENT" ("VALIDATION_ID"); - PRECALC_HEURES_PARAMS T_PRECALC_HEURES_PARAMS; +-- MISE_EN_PAIEMENT_HCFK_IDX +CREATE INDEX "MISE_EN_PAIEMENT_HCFK_IDX" ON "MISE_EN_PAIEMENT" ("HISTO_CREATEUR_ID"); +-- MISE_EN_PAIEMENT_HDFK_IDX +CREATE INDEX "MISE_EN_PAIEMENT_HDFK_IDX" ON "MISE_EN_PAIEMENT" ("HISTO_DESTRUCTEUR_ID"); - FUNCTION GET_SCENARIO RETURN NUMERIC IS - BEGIN - RETURN OSE_CHARGENS.SCENARIO; - END; +-- MISE_EN_PAIEMENT_HMFK_IDX +CREATE INDEX "MISE_EN_PAIEMENT_HMFK_IDX" ON "MISE_EN_PAIEMENT" ("HISTO_MODIFICATEUR_ID"); - PROCEDURE SET_SCENARIO( SCENARIO NUMERIC ) IS - BEGIN - OSE_CHARGENS.SCENARIO := SET_SCENARIO.SCENARIO; - END; +-- MISE_EN_PAIEMENT_PK +CREATE UNIQUE INDEX "MISE_EN_PAIEMENT_PK" ON "MISE_EN_PAIEMENT" ("ID"); +-- MMSD_HCFK_IDX +CREATE INDEX "MMSD_HCFK_IDX" ON "MOTIF_MODIFICATION_SERVICE" ("HISTO_CREATEUR_ID"); +-- MMSD_HDFK_IDX +CREATE INDEX "MMSD_HDFK_IDX" ON "MOTIF_MODIFICATION_SERVICE" ("HISTO_DESTRUCTEUR_ID"); - FUNCTION GET_NOEUD RETURN NUMERIC IS - BEGIN - RETURN OSE_CHARGENS.NOEUD; - END; +-- MMSD_HMFK_IDX +CREATE INDEX "MMSD_HMFK_IDX" ON "MOTIF_MODIFICATION_SERVICE" ("HISTO_MODIFICATEUR_ID"); - PROCEDURE SET_NOEUD( NOEUD NUMERIC ) IS - BEGIN - OSE_CHARGENS.NOEUD := SET_NOEUD.NOEUD; - END; +-- MODIFICATION_SERVICE_DU_PK +CREATE UNIQUE INDEX "MODIFICATION_SERVICE_DU_PK" ON "MODIFICATION_SERVICE_DU" ("ID"); +-- MODULATEUR_HCFK_IDX +CREATE INDEX "MODULATEUR_HCFK_IDX" ON "MODULATEUR" ("HISTO_CREATEUR_ID"); +-- MODULATEUR_HDFK_IDX +CREATE INDEX "MODULATEUR_HDFK_IDX" ON "MODULATEUR" ("HISTO_DESTRUCTEUR_ID"); +-- MODULATEUR_HMFK_IDX +CREATE INDEX "MODULATEUR_HMFK_IDX" ON "MODULATEUR" ("HISTO_MODIFICATEUR_ID"); +-- MODULATEUR_PK +CREATE UNIQUE INDEX "MODULATEUR_PK" ON "MODULATEUR" ("ID"); - FUNCTION CALC_COEF( choix_min NUMERIC, choix_max NUMERIC, poids NUMERIC, max_poids NUMERIC, total_poids NUMERIC, nb_choix NUMERIC ) RETURN FLOAT IS - cmin NUMERIC; - cmax NUMERIC; - coef_choix FLOAT; - coef_poids FLOAT; - max_coef_poids FLOAT; - correcteur FLOAT DEFAULT 1; - res FLOAT; - BEGIN - cmin := choix_min; - cmax := choix_max; +-- MODULATEUR_TM_FK_IDX +CREATE INDEX "MODULATEUR_TM_FK_IDX" ON "MODULATEUR" ("TYPE_MODULATEUR_ID"); - IF total_poids = 0 THEN RETURN 0; END IF; +-- MODULATEUR__UN +CREATE UNIQUE INDEX "MODULATEUR__UN" ON "MODULATEUR" ("CODE"); - IF cmax IS NULL OR cmax > nb_choix THEN - cmax := nb_choix; - END IF; - IF cmin IS NULL THEN - cmin := nb_choix; - ELSIF cmin > cmax THEN - cmin := cmax; - END IF; +-- MOTIF_MODIFICATION_SERVICE_PK +CREATE UNIQUE INDEX "MOTIF_MODIFICATION_SERVICE_PK" ON "MOTIF_MODIFICATION_SERVICE" ("ID"); - coef_choix := (cmin + cmax) / 2 / nb_choix; +-- MOTIF_MODIFICATION_SERVIC_UK1 +CREATE UNIQUE INDEX "MOTIF_MODIFICATION_SERVIC_UK1" ON "MOTIF_MODIFICATION_SERVICE" ("CODE"); - coef_poids := poids / total_poids; +-- MOTIF_NON_PAIEMENT_HCFK_IDX +CREATE INDEX "MOTIF_NON_PAIEMENT_HCFK_IDX" ON "MOTIF_NON_PAIEMENT" ("HISTO_CREATEUR_ID"); - max_coef_poids := max_poids / total_poids; +-- MOTIF_NON_PAIEMENT_HDFK_IDX +CREATE INDEX "MOTIF_NON_PAIEMENT_HDFK_IDX" ON "MOTIF_NON_PAIEMENT" ("HISTO_DESTRUCTEUR_ID"); - IF (coef_choix * nb_choix * max_coef_poids) <= 1 THEN - res := coef_choix * nb_choix * coef_poids; - ELSE - correcteur := 1; - res := coef_choix * nb_choix * (coef_poids + (((1/nb_choix)-coef_poids)*correcteur)); - END IF; +-- MOTIF_NON_PAIEMENT_HMFK_IDX +CREATE INDEX "MOTIF_NON_PAIEMENT_HMFK_IDX" ON "MOTIF_NON_PAIEMENT" ("HISTO_MODIFICATEUR_ID"); - --ose_test.echo('choix_min= ' || cmin || ', choix_max= ' || cmax || ', poids = ' || poids || ', max_poids = ' || max_poids || ', total_poids = ' || total_poids || ', nb_choix = ' || nb_choix || ', RES = ' || res); - RETURN res; - END; +-- MOTIF_NON_PAIEMENT_PK +CREATE UNIQUE INDEX "MOTIF_NON_PAIEMENT_PK" ON "MOTIF_NON_PAIEMENT" ("ID"); +-- MSD_HCFK_IDX +CREATE INDEX "MSD_HCFK_IDX" ON "MODIFICATION_SERVICE_DU" ("HISTO_CREATEUR_ID"); - PROCEDURE DEM_CALC_SUB_EFFECTIF( scenario_noeud_id NUMERIC, type_heures_id NUMERIC, etape_id NUMERIC, effectif FLOAT ) IS - BEGIN - INSERT INTO TMP_scenario_noeud_effectif( - scenario_noeud_id, type_heures_id, etape_id, effectif - ) VALUES( - scenario_noeud_id, type_heures_id, etape_id, effectif - ); - END; +-- MSD_HDFK_IDX +CREATE INDEX "MSD_HDFK_IDX" ON "MODIFICATION_SERVICE_DU" ("HISTO_DESTRUCTEUR_ID"); +-- MSD_HMFK_IDX +CREATE INDEX "MSD_HMFK_IDX" ON "MODIFICATION_SERVICE_DU" ("HISTO_MODIFICATEUR_ID"); +-- MSD_INTERVENANT_FK_IDX +CREATE INDEX "MSD_INTERVENANT_FK_IDX" ON "MODIFICATION_SERVICE_DU" ("INTERVENANT_ID"); - PROCEDURE CALC_SUB_EFFECTIF_DEM IS - BEGIN - DELETE FROM TMP_scenario_noeud_effectif; - END; +-- NOEUD_ANNEE_IDX +CREATE INDEX "NOEUD_ANNEE_IDX" ON "NOEUD" ("ANNEE_ID"); +-- NOEUD_EP_IDX +CREATE INDEX "NOEUD_EP_IDX" ON "NOEUD" ("ELEMENT_PEDAGOGIQUE_ID"); - PROCEDURE CALC_ALL_EFFECTIFS IS - BEGIN - FOR p IN ( +-- NOEUD_ETAPE_IDX +CREATE INDEX "NOEUD_ETAPE_IDX" ON "NOEUD" ("ETAPE_ID"); - SELECT - sn.noeud_id, - sn.scenario_id, - sne.type_heures_id, - sne.etape_id - FROM - scenario_noeud_effectif sne - JOIN scenario_noeud sn ON sn.id = sne.scenario_noeud_id - JOIN noeud n ON n.id = sn.noeud_id - WHERE - n.etape_id IS NOT NULL +-- NOEUD_HISTO_CREATEUR_IDX +CREATE INDEX "NOEUD_HISTO_CREATEUR_IDX" ON "NOEUD" ("HISTO_CREATEUR_ID"); - ) LOOP +-- NOEUD_HISTO_DESTRUCTEUR_IDX +CREATE INDEX "NOEUD_HISTO_DESTRUCTEUR_IDX" ON "NOEUD" ("HISTO_DESTRUCTEUR_ID"); - CALC_SUB_EFFECTIF2( p.noeud_id, p.scenario_id, p.type_heures_id, p.etape_id ); - END LOOP; +-- NOEUD_HISTO_MODIFICATEUR_IDX +CREATE INDEX "NOEUD_HISTO_MODIFICATEUR_IDX" ON "NOEUD" ("HISTO_MODIFICATEUR_ID"); - END; +-- NOEUD_PK +CREATE UNIQUE INDEX "NOEUD_PK" ON "NOEUD" ("ID"); +-- NOEUD_SOURCE_IDX +CREATE INDEX "NOEUD_SOURCE_IDX" ON "NOEUD" ("SOURCE_ID"); +-- NOEUD_SRC_UN +CREATE UNIQUE INDEX "NOEUD_SRC_UN" ON "NOEUD" ("SOURCE_CODE", "HISTO_DESTRUCTION"); - PROCEDURE CALC_EFFECTIF( - noeud_id NUMERIC, - scenario_id NUMERIC, - type_heures_id NUMERIC DEFAULT NULL, - etape_id NUMERIC DEFAULT NULL - ) IS - snid NUMERIC; - BEGIN - UPDATE scenario_noeud_effectif SET effectif = 0 - WHERE - scenario_noeud_id = ( - SELECT id FROM scenario_noeud WHERE noeud_id = CALC_EFFECTIF.noeud_id AND scenario_id = CALC_EFFECTIF.scenario_id - ) - AND (type_heures_id = CALC_EFFECTIF.type_heures_id OR CALC_EFFECTIF.type_heures_id IS NULL) - AND (etape_id = CALC_EFFECTIF.etape_id OR CALC_EFFECTIF.etape_id IS NULL) - ; +-- NOEUD_STRUCTURE_IDX +CREATE INDEX "NOEUD_STRUCTURE_IDX" ON "NOEUD" ("STRUCTURE_ID"); - FOR p IN ( +-- NOTIFICATION_INDICATEUR__UN +CREATE UNIQUE INDEX "NOTIFICATION_INDICATEUR__UN" ON "NOTIFICATION_INDICATEUR" ("INDICATEUR_ID", "AFFECTATION_ID"); - SELECT - * - FROM - v_chargens_calc_effectif cce - WHERE - cce.noeud_id = CALC_EFFECTIF.noeud_id - AND cce.scenario_id = CALC_EFFECTIF.scenario_id - AND (cce.type_heures_id = CALC_EFFECTIF.type_heures_id OR CALC_EFFECTIF.type_heures_id IS NULL) - AND (cce.etape_id = CALC_EFFECTIF.etape_id OR CALC_EFFECTIF.etape_id IS NULL) +-- NOTIF_INDICATEUR_AFK_IDX +CREATE INDEX "NOTIF_INDICATEUR_AFK_IDX" ON "NOTIFICATION_INDICATEUR" ("AFFECTATION_ID"); - ) LOOP - snid := OSE_CHARGENS.GET_SCENARIO_NOEUD_ID( p.scenario_id, p.noeud_id ); - IF snid IS NULL THEN - snid := OSE_CHARGENS.CREER_SCENARIO_NOEUD( p.scenario_id, p.noeud_id ); - END IF; - ADD_SCENARIO_NOEUD_EFFECTIF( snid, p.type_heures_id, p.etape_id, p.effectif ); - END LOOP; - CALC_SUB_EFFECTIF2( noeud_id, scenario_id, type_heures_id, etape_id ); - END; +-- NOTIF_INDICATEUR_IFK_IDX +CREATE INDEX "NOTIF_INDICATEUR_IFK_IDX" ON "NOTIFICATION_INDICATEUR" ("INDICATEUR_ID"); +-- NOTIF_INDICATEUR_PK +CREATE UNIQUE INDEX "NOTIF_INDICATEUR_PK" ON "NOTIFICATION_INDICATEUR" ("ID"); +-- PARAMETRE_HCFK_IDX +CREATE INDEX "PARAMETRE_HCFK_IDX" ON "PARAMETRE" ("HISTO_CREATEUR_ID"); - PROCEDURE CALC_SUB_EFFECTIF2( noeud_id NUMERIC, scenario_id NUMERIC, type_heures_id NUMERIC DEFAULT NULL, etape_id NUMERIC DEFAULT NULL) IS - BEGIN - FOR p IN ( +-- PARAMETRE_HDFK_IDX +CREATE INDEX "PARAMETRE_HDFK_IDX" ON "PARAMETRE" ("HISTO_DESTRUCTEUR_ID"); - SELECT * - FROM V_CHARGENS_GRANDS_LIENS cgl - WHERE cgl.noeud_sup_id = CALC_SUB_EFFECTIF2.noeud_id +-- PARAMETRE_HMFK_IDX +CREATE INDEX "PARAMETRE_HMFK_IDX" ON "PARAMETRE" ("HISTO_MODIFICATEUR_ID"); - ) LOOP - CALC_EFFECTIF( p.noeud_inf_id, scenario_id, type_heures_id, etape_id ); - END LOOP; - END; +-- PARAMETRE_PK +CREATE UNIQUE INDEX "PARAMETRE_PK" ON "PARAMETRE" ("ID"); + +-- PAYS_HCFK_IDX +CREATE INDEX "PAYS_HCFK_IDX" ON "PAYS" ("HISTO_CREATEUR_ID"); + +-- PAYS_HDFK_IDX +CREATE INDEX "PAYS_HDFK_IDX" ON "PAYS" ("HISTO_DESTRUCTEUR_ID"); + +-- PAYS_HMFK_IDX +CREATE INDEX "PAYS_HMFK_IDX" ON "PAYS" ("HISTO_MODIFICATEUR_ID"); + +-- PAYS_PK +CREATE UNIQUE INDEX "PAYS_PK" ON "PAYS" ("ID"); + +-- PAYS_SOURCE_FK_IDX +CREATE INDEX "PAYS_SOURCE_FK_IDX" ON "PAYS" ("SOURCE_ID"); +-- PERIMETRE_CODE_UN +CREATE UNIQUE INDEX "PERIMETRE_CODE_UN" ON "PERIMETRE" ("CODE"); +-- PERIMETRE_LIBELLE_UN +CREATE UNIQUE INDEX "PERIMETRE_LIBELLE_UN" ON "PERIMETRE" ("LIBELLE"); - PROCEDURE DUPLIQUER( source_id NUMERIC, destination_id NUMERIC, utilisateur_id NUMERIC, structure_id NUMERIC, noeuds VARCHAR2 DEFAULT '', liens VARCHAR2 DEFAULT '' ) IS - BEGIN +-- PERIMETRE_PK +CREATE UNIQUE INDEX "PERIMETRE_PK" ON "PERIMETRE" ("ID"); - /* Destruction de tous les liens antérieurs de la destination */ - DELETE FROM - scenario_lien - WHERE - scenario_id = DUPLIQUER.destination_id - AND histo_destruction IS NULL - AND (DUPLIQUER.LIENS IS NULL OR DUPLIQUER.LIENS LIKE '%,' || lien_id || ',%' ) - AND (DUPLIQUER.STRUCTURE_ID IS NULL OR lien_id IN ( - SELECT id FROM lien WHERE lien.structure_id = DUPLIQUER.STRUCTURE_ID - )) - ; +-- PERIODE_HCFK_IDX +CREATE INDEX "PERIODE_HCFK_IDX" ON "PERIODE" ("HISTO_CREATEUR_ID"); - /* Duplication des liens */ - INSERT INTO scenario_lien ( - id, - scenario_id, lien_id, - actif, poids, - choix_minimum, choix_maximum, - source_id, source_code, - histo_creation, histo_createur_id, - histo_modification, histo_modificateur_id - ) SELECT - scenario_lien_id_seq.nextval, - DUPLIQUER.destination_id, sl.lien_id, - sl.actif, sl.poids, - sl.choix_minimum, sl.choix_maximum, - source.id, 'dupli_' || sl.id || '_' || sl.lien_id || '_' || trunc(dbms_random.value(1,10000000000000)), - sysdate, DUPLIQUER.utilisateur_id, - sysdate, DUPLIQUER.utilisateur_id - FROM - scenario_lien sl - JOIN lien l ON l.id = sl.lien_id - JOIN source ON source.code = 'OSE' - WHERE - sl.scenario_id = DUPLIQUER.source_id - AND sl.histo_destruction IS NULL - AND (DUPLIQUER.LIENS IS NULL OR DUPLIQUER.LIENS LIKE '%,' || lien_id || ',%' ) - AND (DUPLIQUER.STRUCTURE_ID IS NULL OR l.structure_id = DUPLIQUER.STRUCTURE_ID) - ; +-- PERIODE_HDFK_IDX +CREATE INDEX "PERIODE_HDFK_IDX" ON "PERIODE" ("HISTO_DESTRUCTEUR_ID"); +-- PERIODE_HMFK_IDX +CREATE INDEX "PERIODE_HMFK_IDX" ON "PERIODE" ("HISTO_MODIFICATEUR_ID"); - /* Destruction de tous les noeuds antérieurs de la destination */ - DELETE FROM - scenario_noeud - WHERE - scenario_id = DUPLIQUER.destination_id - AND histo_destruction IS NULL - AND (DUPLIQUER.NOEUDS IS NULL OR DUPLIQUER.NOEUDS LIKE '%,' || noeud_id || ',%' ) - AND (DUPLIQUER.STRUCTURE_ID IS NULL OR scenario_noeud.noeud_id IN ( - SELECT id FROM noeud WHERE noeud.structure_id = DUPLIQUER.STRUCTURE_ID - )) - ; +-- PERIODE_PK +CREATE UNIQUE INDEX "PERIODE_PK" ON "PERIODE" ("ID"); - /* Duplication des noeuds */ - INSERT INTO scenario_noeud ( - id, - scenario_id, noeud_id, - assiduite, - source_id, source_code, - histo_creation, histo_createur_id, - histo_modification, histo_modificateur_id - ) SELECT - scenario_noeud_id_seq.nextval, - DUPLIQUER.destination_id, sn.noeud_id, - sn.assiduite, - source.id, 'dupli_' || sn.id || '_' || sn.noeud_id || '_' || trunc(dbms_random.value(1,10000000000000)), - sysdate, DUPLIQUER.utilisateur_id, - sysdate, DUPLIQUER.utilisateur_id - FROM - scenario_noeud sn - JOIN noeud n ON n.id = sn.noeud_id - JOIN source ON source.code = 'OSE' - WHERE - sn.scenario_id = DUPLIQUER.source_id - AND sn.histo_destruction IS NULL - AND (DUPLIQUER.NOEUDS IS NULL OR DUPLIQUER.NOEUDS LIKE '%,' || noeud_id || ',%' ) - AND (DUPLIQUER.STRUCTURE_ID IS NULL OR n.structure_id = DUPLIQUER.STRUCTURE_ID) - ; +-- PERIODE__UN +CREATE UNIQUE INDEX "PERIODE__UN" ON "PERIODE" ("CODE"); - /* Duplication des effectifs */ - INSERT INTO scenario_noeud_effectif ( - id, - scenario_noeud_id, - type_heures_id, - effectif, - etape_id - ) SELECT - scenario_noeud_effectif_id_seq.nextval, - sn_dst.id, - sne.type_heures_id, - sne.effectif, - sne.etape_id - FROM - scenario_noeud_effectif sne - JOIN scenario_noeud sn_src ON sn_src.id = sne.scenario_noeud_id - JOIN scenario_noeud sn_dst ON sn_dst.scenario_id = DUPLIQUER.destination_id AND sn_dst.noeud_id = sn_src.noeud_id - JOIN noeud n ON n.id = sn_src.noeud_id - WHERE - sn_src.scenario_id = DUPLIQUER.source_id - AND sn_src.histo_destruction IS NULL - AND (DUPLIQUER.NOEUDS IS NULL OR DUPLIQUER.NOEUDS LIKE '%,' || sn_src.noeud_id || ',%' ) - AND (DUPLIQUER.STRUCTURE_ID IS NULL OR n.structure_id = DUPLIQUER.STRUCTURE_ID) - ; +-- PIECE_JOINTE_FICHIER_FFK_IDX +CREATE INDEX "PIECE_JOINTE_FICHIER_FFK_IDX" ON "PIECE_JOINTE_FICHIER" ("FICHIER_ID"); - /* Duplication des seuils */ - INSERT INTO scenario_noeud_seuil ( - id, - scenario_noeud_id, - type_intervention_id, - ouverture, - dedoublement - ) SELECT - scenario_noeud_seuil_id_seq.nextval, - sn_dst.id, - sns.type_intervention_id, - sns.ouverture, - sns.dedoublement - FROM - scenario_noeud_seuil sns - JOIN scenario_noeud sn_src ON sn_src.id = sns.scenario_noeud_id - JOIN scenario_noeud sn_dst ON sn_dst.scenario_id = DUPLIQUER.destination_id AND sn_dst.noeud_id = sn_src.noeud_id - JOIN noeud n ON n.id = sn_src.noeud_id - WHERE - sn_src.scenario_id = DUPLIQUER.source_id - AND sn_src.histo_destruction IS NULL - AND (DUPLIQUER.NOEUDS IS NULL OR DUPLIQUER.NOEUDS LIKE '%,' || sn_src.noeud_id || ',%' ) - AND (DUPLIQUER.STRUCTURE_ID IS NULL OR n.structure_id = DUPLIQUER.STRUCTURE_ID) - ; - END; +-- PIECE_JOINTE_FICHIER_PJFK_IDX +CREATE INDEX "PIECE_JOINTE_FICHIER_PJFK_IDX" ON "PIECE_JOINTE_FICHIER" ("PIECE_JOINTE_ID"); +-- PIECE_JOINTE_FICHIER_PK +CREATE UNIQUE INDEX "PIECE_JOINTE_FICHIER_PK" ON "PIECE_JOINTE_FICHIER" ("PIECE_JOINTE_ID", "FICHIER_ID"); +-- PIECE_JOINTE_HCFK_IDX +CREATE INDEX "PIECE_JOINTE_HCFK_IDX" ON "PIECE_JOINTE" ("HISTO_CREATEUR_ID"); - PROCEDURE CONTROLE_SEUIL( ouverture NUMERIC, dedoublement NUMERIC ) IS - BEGIN - IF ouverture IS NOT NULL THEN - IF ouverture < 1 THEN - raise_application_error(-20101, 'Le seuil d''ouverture doit être supérieur ou égal à 1'); - END IF; - END IF; +-- PIECE_JOINTE_HDFK_IDX +CREATE INDEX "PIECE_JOINTE_HDFK_IDX" ON "PIECE_JOINTE" ("HISTO_DESTRUCTEUR_ID"); - IF dedoublement IS NOT NULL THEN - IF dedoublement < 1 THEN - raise_application_error(-20101, 'Le seuil de dédoublement doit être supérieur ou égal à 1'); - END IF; - END IF; +-- PIECE_JOINTE_HMFK_IDX +CREATE INDEX "PIECE_JOINTE_HMFK_IDX" ON "PIECE_JOINTE" ("HISTO_MODIFICATEUR_ID"); - IF ouverture IS NOT NULL AND dedoublement IS NOT NULL THEN - IF dedoublement < ouverture THEN - raise_application_error(-20101, 'Le seuil de dédoublement doit être supérieur ou égal au seuil d''ouverture'); - END IF; - END IF; - END; +-- PIECE_JOINTE_PK +CREATE UNIQUE INDEX "PIECE_JOINTE_PK" ON "PIECE_JOINTE" ("ID"); +-- PIECE_JOINTE_VFK_IDX +CREATE INDEX "PIECE_JOINTE_VFK_IDX" ON "PIECE_JOINTE" ("VALIDATION_ID"); - FUNCTION CREER_SCENARIO_NOEUD( scenario_id NUMERIC, noeud_id NUMERIC, assiduite FLOAT DEFAULT 1 ) RETURN NUMERIC IS - new_id NUMERIC; - BEGIN - new_id := SCENARIO_NOEUD_ID_SEQ.NEXTVAL; ---ose_test.echo(scenario_id || '-' || noeud_id); - INSERT INTO SCENARIO_NOEUD( - ID, - SCENARIO_ID, - NOEUD_ID, - ASSIDUITE, - SOURCE_ID, - SOURCE_CODE, - HEURES, - HISTO_CREATION, - HISTO_CREATEUR_ID, - HISTO_MODIFICATION, - HISTO_MODIFICATEUR_ID - ) VALUES ( - new_id, - CREER_SCENARIO_NOEUD.scenario_id, - CREER_SCENARIO_NOEUD.noeud_id, - CREER_SCENARIO_NOEUD.assiduite, - OSE_DIVERS.GET_OSE_SOURCE_ID, - 'OSE_NEW_SN_' || new_id, - null, - SYSDATE, - OSE_DIVERS.GET_OSE_UTILISATEUR_ID, - SYSDATE, - OSE_DIVERS.GET_OSE_UTILISATEUR_ID - ); - RETURN new_id; - END; +-- PIECE_JOINTE__UN +CREATE UNIQUE INDEX "PIECE_JOINTE__UN" ON "PIECE_JOINTE" ("TYPE_PIECE_JOINTE_ID", "INTERVENANT_ID", "HISTO_DESTRUCTION"); +-- PJ_DOSSIER_FK_IDX +CREATE INDEX "PJ_DOSSIER_FK_IDX" ON "PIECE_JOINTE" ("INTERVENANT_ID"); - FUNCTION GET_SCENARIO_NOEUD_ID(scenario_id NUMERIC, noeud_id NUMERIC) RETURN NUMERIC IS - res NUMERIC; - BEGIN - SELECT - sn.id INTO res - FROM - scenario_noeud sn - WHERE - sn.noeud_id = GET_SCENARIO_NOEUD_ID.noeud_id - AND sn.scenario_id = GET_SCENARIO_NOEUD_ID.scenario_id - AND sn.histo_destruction IS NULL; +-- PJ_TYPE_PIECE_JOINTE_FK_IDX +CREATE INDEX "PJ_TYPE_PIECE_JOINTE_FK_IDX" ON "PIECE_JOINTE" ("TYPE_PIECE_JOINTE_ID"); - RETURN res; +-- PLAFOND_APPLICATION_PK +CREATE UNIQUE INDEX "PLAFOND_APPLICATION_PK" ON "PLAFOND_APPLICATION" ("ID"); - EXCEPTION WHEN NO_DATA_FOUND THEN - RETURN NULL; - END; +-- PLAFOND_ETAT_PK +CREATE UNIQUE INDEX "PLAFOND_ETAT_PK" ON "PLAFOND_ETAT" ("ID"); +-- PLAFOND_PK +CREATE UNIQUE INDEX "PLAFOND_PK" ON "PLAFOND" ("ID"); - PROCEDURE ADD_SCENARIO_NOEUD_EFFECTIF( scenario_noeud_id NUMERIC, type_heures_id NUMERIC, etape_id NUMERIC, effectif FLOAT ) IS - old_enable BOOLEAN; - BEGIN - old_enable := ose_chargens.ENABLE_TRIGGER_EFFECTIFS; - ose_chargens.ENABLE_TRIGGER_EFFECTIFS := false; +-- PRIVILEGE_CATEGORIE_FK_IDX +CREATE INDEX "PRIVILEGE_CATEGORIE_FK_IDX" ON "PRIVILEGE" ("CATEGORIE_ID"); - MERGE INTO scenario_noeud_effectif sne USING dual ON ( +-- PRIVILEGE_PK +CREATE UNIQUE INDEX "PRIVILEGE_PK" ON "PRIVILEGE" ("ID"); - sne.scenario_noeud_id = ADD_SCENARIO_NOEUD_EFFECTIF.scenario_noeud_id - AND sne.type_heures_id = ADD_SCENARIO_NOEUD_EFFECTIF.type_heures_id - AND sne.etape_id = ADD_SCENARIO_NOEUD_EFFECTIF.etape_id +-- PRIVILEGE__UN +CREATE UNIQUE INDEX "PRIVILEGE__UN" ON "PRIVILEGE" ("CATEGORIE_ID", "CODE"); - ) WHEN MATCHED THEN UPDATE SET +-- REGLE_STRUCTURE_VALIDATION_PK +CREATE UNIQUE INDEX "REGLE_STRUCTURE_VALIDATION_PK" ON "REGLE_STRUCTURE_VALIDATION" ("ID"); - effectif = effectif + ADD_SCENARIO_NOEUD_EFFECTIF.effectif +-- REGLE_STRUCTURE_VALIDATION__UN +CREATE UNIQUE INDEX "REGLE_STRUCTURE_VALIDATION__UN" ON "REGLE_STRUCTURE_VALIDATION" ("TYPE_VOLUME_HORAIRE_ID", "TYPE_INTERVENANT_ID"); - WHEN NOT MATCHED THEN INSERT ( +-- ROLE_CODE_UN +CREATE UNIQUE INDEX "ROLE_CODE_UN" ON "ROLE" ("CODE"); - ID, - SCENARIO_NOEUD_ID, - TYPE_HEURES_ID, - ETAPE_ID, - EFFECTIF +-- ROLE_HCFK_IDX +CREATE INDEX "ROLE_HCFK_IDX" ON "ROLE" ("HISTO_CREATEUR_ID"); - ) VALUES ( +-- ROLE_HDFK_IDX +CREATE INDEX "ROLE_HDFK_IDX" ON "ROLE" ("HISTO_DESTRUCTEUR_ID"); - SCENARIO_NOEUD_EFFECTIF_ID_SEQ.NEXTVAL, - ADD_SCENARIO_NOEUD_EFFECTIF.scenario_noeud_id, - ADD_SCENARIO_NOEUD_EFFECTIF.type_heures_id, - ADD_SCENARIO_NOEUD_EFFECTIF.etape_id, - ADD_SCENARIO_NOEUD_EFFECTIF.effectif +-- ROLE_HMFK_IDX +CREATE INDEX "ROLE_HMFK_IDX" ON "ROLE" ("HISTO_MODIFICATEUR_ID"); - ); +-- ROLE_PERIMETRE_FK_IDX +CREATE INDEX "ROLE_PERIMETRE_FK_IDX" ON "ROLE" ("PERIMETRE_ID"); - DELETE FROM scenario_noeud_effectif WHERE effectif = 0; +-- ROLE_PK +CREATE UNIQUE INDEX "ROLE_PK" ON "ROLE" ("ID"); - ose_chargens.ENABLE_TRIGGER_EFFECTIFS := old_enable; - END; +-- ROLE_PRIVILEGE_PK +CREATE UNIQUE INDEX "ROLE_PRIVILEGE_PK" ON "ROLE_PRIVILEGE" ("PRIVILEGE_ID", "ROLE_ID"); +-- ROLE_PRIVILEGE_ROLE_FK_IDX +CREATE INDEX "ROLE_PRIVILEGE_ROLE_FK_IDX" ON "ROLE_PRIVILEGE" ("ROLE_ID"); +-- RP_PRIVILEGE_FK_IDX +CREATE INDEX "RP_PRIVILEGE_FK_IDX" ON "ROLE_PRIVILEGE" ("PRIVILEGE_ID"); - PROCEDURE INIT_SCENARIO_NOEUD_EFFECTIF( - etape_id NUMERIC, - scenario_id NUMERIC, - type_heures_id NUMERIC, - effectif FLOAT, - surcharge BOOLEAN DEFAULT FALSE - ) IS - noeud_id NUMERIC; - scenario_noeud_id NUMERIC; - scenario_noeud_effectif_id NUMERIC; - BEGIN - SELECT - n.id, sn.id, sne.id - INTO - noeud_id, scenario_noeud_id, scenario_noeud_effectif_id - FROM - noeud n - LEFT JOIN scenario_noeud sn ON sn.noeud_id = n.id - AND sn.histo_destruction IS NULL - AND sn.scenario_id = INIT_SCENARIO_NOEUD_EFFECTIF.scenario_id +-- RSV_TYPE_INTERVENANT_FK_IDX +CREATE INDEX "RSV_TYPE_INTERVENANT_FK_IDX" ON "REGLE_STRUCTURE_VALIDATION" ("TYPE_INTERVENANT_ID"); - LEFT JOIN scenario_noeud_effectif sne ON sne.scenario_noeud_id = sn.id - AND sne.type_heures_id = INIT_SCENARIO_NOEUD_EFFECTIF.type_heures_id - WHERE - n.etape_id = INIT_SCENARIO_NOEUD_EFFECTIF.etape_id - AND n.histo_destruction IS NULL - ; +-- RSV_TYPE_VOLUME_HORAIRE_FK_IDX +CREATE INDEX "RSV_TYPE_VOLUME_HORAIRE_FK_IDX" ON "REGLE_STRUCTURE_VALIDATION" ("TYPE_VOLUME_HORAIRE_ID"); - IF noeud_id IS NULL THEN RETURN; END IF; +-- SCENARIO_HC_IDX +CREATE INDEX "SCENARIO_HC_IDX" ON "SCENARIO" ("HISTO_CREATEUR_ID"); - IF scenario_noeud_id IS NULL THEN - scenario_noeud_id := CREER_SCENARIO_NOEUD( scenario_id, noeud_id ); - END IF; +-- SCENARIO_HD_IDX +CREATE INDEX "SCENARIO_HD_IDX" ON "SCENARIO" ("HISTO_DESTRUCTEUR_ID"); - IF scenario_noeud_effectif_id IS NULL THEN - scenario_noeud_effectif_id := SCENARIO_NOEUD_EFFECTIF_ID_SEQ.NEXTVAL; - INSERT INTO scenario_noeud_effectif ( - id, - scenario_noeud_id, - type_heures_id, - effectif, - etape_id - ) VALUES ( - scenario_noeud_effectif_id, - scenario_noeud_id, - INIT_SCENARIO_NOEUD_EFFECTIF.type_heures_id, - INIT_SCENARIO_NOEUD_EFFECTIF.effectif, - INIT_SCENARIO_NOEUD_EFFECTIF.etape_id - ); - ELSIF surcharge THEN - UPDATE scenario_noeud_effectif SET effectif = INIT_SCENARIO_NOEUD_EFFECTIF.effectif WHERE id = scenario_noeud_effectif_id; - END IF; +-- SCENARIO_HM_IDX +CREATE INDEX "SCENARIO_HM_IDX" ON "SCENARIO" ("HISTO_MODIFICATEUR_ID"); - CALC_SUB_EFFECTIF2( noeud_id, scenario_id, type_heures_id, etape_id ); +-- SCENARIO_LIEN_HC_IDX +CREATE INDEX "SCENARIO_LIEN_HC_IDX" ON "SCENARIO_LIEN" ("HISTO_CREATEUR_ID"); - EXCEPTION WHEN NO_DATA_FOUND THEN - RETURN; - END; +-- SCENARIO_LIEN_HD_IDX +CREATE INDEX "SCENARIO_LIEN_HD_IDX" ON "SCENARIO_LIEN" ("HISTO_DESTRUCTEUR_ID"); +-- SCENARIO_LIEN_HM_IDX +CREATE INDEX "SCENARIO_LIEN_HM_IDX" ON "SCENARIO_LIEN" ("HISTO_MODIFICATEUR_ID"); +-- SCENARIO_LIEN_LIEN_IDX +CREATE INDEX "SCENARIO_LIEN_LIEN_IDX" ON "SCENARIO_LIEN" ("LIEN_ID"); - PROCEDURE SET_PRECALC_HEURES_PARAMS( - annee_id NUMERIC DEFAULT NULL, - structure_id NUMERIC DEFAULT NULL, - scenario_id NUMERIC DEFAULT NULL, - type_heures_id NUMERIC DEFAULT NULL, - etape_id NUMERIC DEFAULT NULL, - noeud_ids tnoeud_ids DEFAULT NULL - ) IS - BEGIN - PRECALC_HEURES_PARAMS.ANNEE_ID := ANNEE_ID; - PRECALC_HEURES_PARAMS.STRUCTURE_ID := STRUCTURE_ID; - PRECALC_HEURES_PARAMS.SCENARIO_ID := SCENARIO_ID; - PRECALC_HEURES_PARAMS.TYPE_HEURES_ID := TYPE_HEURES_ID; - PRECALC_HEURES_PARAMS.ETAPE_ID := ETAPE_ID; - PRECALC_HEURES_PARAMS.NOEUD_IDS := noeud_ids; - END; +-- SCENARIO_LIEN_PK +CREATE UNIQUE INDEX "SCENARIO_LIEN_PK" ON "SCENARIO_LIEN" ("ID"); + +-- SCENARIO_LIEN_SCENARIO_IDX +CREATE INDEX "SCENARIO_LIEN_SCENARIO_IDX" ON "SCENARIO_LIEN" ("SCENARIO_ID"); + +-- SCENARIO_LIEN_SOURCE_IDX +CREATE INDEX "SCENARIO_LIEN_SOURCE_IDX" ON "SCENARIO_LIEN" ("SOURCE_ID"); + +-- SCENARIO_LIEN_SRC_UN +CREATE UNIQUE INDEX "SCENARIO_LIEN_SRC_UN" ON "SCENARIO_LIEN" ("SOURCE_CODE", "HISTO_DESTRUCTION"); +-- SCENARIO_LIEN__UN +CREATE UNIQUE INDEX "SCENARIO_LIEN__UN" ON "SCENARIO_LIEN" ("SCENARIO_ID", "LIEN_ID", "HISTO_DESTRUCTION"); +-- SCENARIO_NOEUD_EFFECTIF_PK +CREATE UNIQUE INDEX "SCENARIO_NOEUD_EFFECTIF_PK" ON "SCENARIO_NOEUD_EFFECTIF" ("ID"); - FUNCTION MATCH_PRECALC_HEURES_PARAMS( - annee_id NUMERIC DEFAULT NULL, - structure_id NUMERIC DEFAULT NULL, - scenario_id NUMERIC DEFAULT NULL, - type_heures_id NUMERIC DEFAULT NULL, - etape_id NUMERIC DEFAULT NULL, - noeud_id NUMERIC DEFAULT NULL - ) RETURN NUMERIC IS - BEGIN +-- SCENARIO_NOEUD_EFFECTIF_SN_IDX +CREATE INDEX "SCENARIO_NOEUD_EFFECTIF_SN_IDX" ON "SCENARIO_NOEUD_EFFECTIF" ("SCENARIO_NOEUD_ID"); - IF PRECALC_HEURES_PARAMS.noeud_ids IS NOT NULL THEN - IF NOT (noeud_id MEMBER OF PRECALC_HEURES_PARAMS.noeud_ids) THEN - RETURN 0; - END IF; - END IF; +-- SCENARIO_NOEUD_EFFECTIF_TH_IDX +CREATE INDEX "SCENARIO_NOEUD_EFFECTIF_TH_IDX" ON "SCENARIO_NOEUD_EFFECTIF" ("TYPE_HEURES_ID"); - IF annee_id <> COALESCE(PRECALC_HEURES_PARAMS.annee_id, annee_id) THEN - RETURN 0; - END IF; +-- SCENARIO_NOEUD_EFF_ETP_IDX +CREATE INDEX "SCENARIO_NOEUD_EFF_ETP_IDX" ON "SCENARIO_NOEUD_EFFECTIF" ("ETAPE_ID"); - IF structure_id <> COALESCE(PRECALC_HEURES_PARAMS.structure_id, structure_id) THEN - RETURN 0; - END IF; +-- SCENARIO_NOEUD_HC_IDX +CREATE INDEX "SCENARIO_NOEUD_HC_IDX" ON "SCENARIO_NOEUD" ("HISTO_CREATEUR_ID"); - IF scenario_id <> COALESCE(PRECALC_HEURES_PARAMS.scenario_id, scenario_id) THEN - RETURN 0; - END IF; +-- SCENARIO_NOEUD_HD_IDX +CREATE INDEX "SCENARIO_NOEUD_HD_IDX" ON "SCENARIO_NOEUD" ("HISTO_DESTRUCTEUR_ID"); - IF type_heures_id <> COALESCE(PRECALC_HEURES_PARAMS.type_heures_id, type_heures_id) THEN - RETURN 0; - END IF; +-- SCENARIO_NOEUD_HM_IDX +CREATE INDEX "SCENARIO_NOEUD_HM_IDX" ON "SCENARIO_NOEUD" ("HISTO_MODIFICATEUR_ID"); - IF etape_id <> COALESCE(PRECALC_HEURES_PARAMS.etape_id, etape_id) THEN - RETURN 0; - END IF; +-- SCENARIO_NOEUD_NOEUD_IDX +CREATE INDEX "SCENARIO_NOEUD_NOEUD_IDX" ON "SCENARIO_NOEUD" ("NOEUD_ID"); - RETURN 1; - END; +-- SCENARIO_NOEUD_PK +CREATE UNIQUE INDEX "SCENARIO_NOEUD_PK" ON "SCENARIO_NOEUD" ("ID"); +-- SCENARIO_NOEUD_SCENARIO_IDX +CREATE INDEX "SCENARIO_NOEUD_SCENARIO_IDX" ON "SCENARIO_NOEUD" ("SCENARIO_ID"); - FUNCTION GET_PRECALC_HEURES_ANNEE RETURN NUMERIC IS - BEGIN - RETURN PRECALC_HEURES_PARAMS.ANNEE_ID; - END; +-- SCENARIO_NOEUD_SEUIL_PK +CREATE UNIQUE INDEX "SCENARIO_NOEUD_SEUIL_PK" ON "SCENARIO_NOEUD_SEUIL" ("ID"); +-- SCENARIO_NOEUD_SEUIL_SN_IDX +CREATE INDEX "SCENARIO_NOEUD_SEUIL_SN_IDX" ON "SCENARIO_NOEUD_SEUIL" ("SCENARIO_NOEUD_ID"); +-- SCENARIO_NOEUD_SEUIL_TI_IDX +CREATE INDEX "SCENARIO_NOEUD_SEUIL_TI_IDX" ON "SCENARIO_NOEUD_SEUIL" ("TYPE_INTERVENTION_ID"); - FUNCTION GET_PRECALC_HEURES_STRUCTURE RETURN NUMERIC IS - BEGIN - RETURN PRECALC_HEURES_PARAMS.STRUCTURE_ID; - END; +-- SCENARIO_NOEUD_SOURCE_IDX +CREATE INDEX "SCENARIO_NOEUD_SOURCE_IDX" ON "SCENARIO_NOEUD" ("SOURCE_ID"); +-- SCENARIO_NOEUD_SRC_UN +CREATE UNIQUE INDEX "SCENARIO_NOEUD_SRC_UN" ON "SCENARIO_NOEUD" ("SOURCE_CODE", "HISTO_DESTRUCTION"); +-- SCENARIO_NOEUD__UN +CREATE UNIQUE INDEX "SCENARIO_NOEUD__UN" ON "SCENARIO_NOEUD" ("SCENARIO_ID", "NOEUD_ID", "HISTO_DESTRUCTION"); - FUNCTION GET_PRECALC_HEURES_SCENARIO RETURN NUMERIC IS - BEGIN - RETURN PRECALC_HEURES_PARAMS.SCENARIO_ID; - END; +-- SCENARIO_PK +CREATE UNIQUE INDEX "SCENARIO_PK" ON "SCENARIO" ("ID"); +-- SCENARIO_STRUCTURE_IDX +CREATE INDEX "SCENARIO_STRUCTURE_IDX" ON "SCENARIO" ("STRUCTURE_ID"); +-- SERVICE_ETABLISSEMENT_FK_IDX +CREATE INDEX "SERVICE_ETABLISSEMENT_FK_IDX" ON "SERVICE" ("ETABLISSEMENT_ID"); - FUNCTION GET_PRECALC_HEURES_TYPE_HEURES RETURN NUMERIC IS - BEGIN - RETURN PRECALC_HEURES_PARAMS.TYPE_HEURES_ID; - END; +-- SERVICE_HCFK_IDX +CREATE INDEX "SERVICE_HCFK_IDX" ON "SERVICE" ("HISTO_CREATEUR_ID"); +-- SERVICE_HDFK_IDX +CREATE INDEX "SERVICE_HDFK_IDX" ON "SERVICE" ("HISTO_DESTRUCTEUR_ID"); +-- SERVICE_HMFK_IDX +CREATE INDEX "SERVICE_HMFK_IDX" ON "SERVICE" ("HISTO_MODIFICATEUR_ID"); - FUNCTION GET_PRECALC_HEURES_ETAPE RETURN NUMERIC IS - BEGIN - RETURN PRECALC_HEURES_PARAMS.ETAPE_ID; - END; +-- SERVICE_INTERVENANT_FK_IDX +CREATE INDEX "SERVICE_INTERVENANT_FK_IDX" ON "SERVICE" ("INTERVENANT_ID"); --- FUNCTION GET_PRECALC_HEURES_NOEUD RETURN NUMERIC IS --- BEGIN +-- SERVICE_PK +CREATE UNIQUE INDEX "SERVICE_PK" ON "SERVICE" ("ID"); --- END; +-- SERVICE_REFERENTIEL_HCFK_IDX +CREATE INDEX "SERVICE_REFERENTIEL_HCFK_IDX" ON "SERVICE_REFERENTIEL" ("HISTO_CREATEUR_ID"); -END OSE_CHARGENS; -/ +-- SERVICE_REFERENTIEL_HDFK_IDX +CREATE INDEX "SERVICE_REFERENTIEL_HDFK_IDX" ON "SERVICE_REFERENTIEL" ("HISTO_DESTRUCTEUR_ID"); --- OSE_DIVERS -CREATE OR REPLACE PACKAGE BODY "OSE_DIVERS" AS - OSE_UTILISATEUR_ID NUMERIC; - OSE_SOURCE_ID NUMERIC; +-- SERVICE_REFERENTIEL_HMFK_IDX +CREATE INDEX "SERVICE_REFERENTIEL_HMFK_IDX" ON "SERVICE_REFERENTIEL" ("HISTO_MODIFICATEUR_ID"); +-- SERVICE_REFERENTIEL_PK +CREATE UNIQUE INDEX "SERVICE_REFERENTIEL_PK" ON "SERVICE_REFERENTIEL" ("ID"); +-- SERVICE__UN +CREATE UNIQUE INDEX "SERVICE__UN" ON "SERVICE" ("INTERVENANT_ID", "ELEMENT_PEDAGOGIQUE_ID", "ETABLISSEMENT_ID", "HISTO_DESTRUCTION"); +-- SEUIL_CHARGE_ANNEE_IDX +CREATE INDEX "SEUIL_CHARGE_ANNEE_IDX" ON "SEUIL_CHARGE" ("ANNEE_ID"); -PROCEDURE CALCULER_TABLEAUX_BORD IS -BEGIN - FOR d IN ( - SELECT tbl_name - FROM tbl - WHERE tbl_name <> 'formule' -- TROP LONG !! - ORDER BY ordre - ) - LOOP - UNICAEN_TBL.CALCULER(d.tbl_name); - dbms_output.put_line('Calcul du tableau de bord "' || d.tbl_name || '" effectué'); - COMMIT; - END LOOP; -END; +-- SEUIL_CHARGE_GTF_IDX +CREATE INDEX "SEUIL_CHARGE_GTF_IDX" ON "SEUIL_CHARGE" ("GROUPE_TYPE_FORMATION_ID"); +-- SEUIL_CHARGE_HC_IDX +CREATE INDEX "SEUIL_CHARGE_HC_IDX" ON "SEUIL_CHARGE" ("HISTO_CREATEUR_ID"); +-- SEUIL_CHARGE_HD_IDX +CREATE INDEX "SEUIL_CHARGE_HD_IDX" ON "SEUIL_CHARGE" ("HISTO_DESTRUCTEUR_ID"); -FUNCTION GET_OSE_UTILISATEUR_ID RETURN NUMERIC IS -BEGIN - IF OSE_DIVERS.OSE_UTILISATEUR_ID IS NULL THEN - SELECT - to_number(valeur) INTO OSE_DIVERS.OSE_UTILISATEUR_ID - FROM - parametre - WHERE - nom = 'oseuser'; - END IF; +-- SEUIL_CHARGE_HM_IDX +CREATE INDEX "SEUIL_CHARGE_HM_IDX" ON "SEUIL_CHARGE" ("HISTO_MODIFICATEUR_ID"); - RETURN OSE_DIVERS.OSE_UTILISATEUR_ID; -END; +-- SEUIL_CHARGE_PK +CREATE UNIQUE INDEX "SEUIL_CHARGE_PK" ON "SEUIL_CHARGE" ("ID"); +-- SEUIL_CHARGE_SCENARIO_IDX +CREATE INDEX "SEUIL_CHARGE_SCENARIO_IDX" ON "SEUIL_CHARGE" ("SCENARIO_ID"); +-- SEUIL_CHARGE_STRUCTURE_IDX +CREATE INDEX "SEUIL_CHARGE_STRUCTURE_IDX" ON "SEUIL_CHARGE" ("STRUCTURE_ID"); -FUNCTION GET_OSE_SOURCE_ID RETURN NUMERIC IS -BEGIN - IF OSE_DIVERS.OSE_SOURCE_ID IS NULL THEN - SELECT - id INTO OSE_DIVERS.OSE_SOURCE_ID - FROM - source - WHERE - code = 'OSE'; - END IF; +-- SEUIL_CHARGE_TI_IDX +CREATE INDEX "SEUIL_CHARGE_TI_IDX" ON "SEUIL_CHARGE" ("TYPE_INTERVENTION_ID"); - RETURN OSE_DIVERS.OSE_SOURCE_ID; -END; +-- SI_SOURCE_FK_IDX +CREATE INDEX "SI_SOURCE_FK_IDX" ON "STATUT_INTERVENANT" ("SOURCE_ID"); +-- SOURCE_CODE_UN +CREATE UNIQUE INDEX "SOURCE_CODE_UN" ON "SOURCE" ("CODE"); +-- SOURCE_PK +CREATE UNIQUE INDEX "SOURCE_PK" ON "SOURCE" ("ID"); -FUNCTION INTERVENANT_HAS_PRIVILEGE( intervenant_id NUMERIC, privilege_name VARCHAR2 ) RETURN NUMERIC IS - statut statut_intervenant%rowtype; - itype type_intervenant%rowtype; - res NUMERIC; -BEGIN - res := 1; - SELECT si.* INTO statut FROM statut_intervenant si JOIN intervenant i ON i.statut_id = si.id WHERE i.id = intervenant_id; - SELECT ti.* INTO itype FROM type_intervenant ti WHERE ti.id = statut.type_intervenant_id; +-- SRFR_FK_IDX +CREATE INDEX "SRFR_FK_IDX" ON "SERVICE_REFERENTIEL" ("FONCTION_ID"); - /* DEPRECATED */ - IF 'saisie_service' = privilege_name THEN - res := statut.peut_saisir_service; - RETURN res; - ELSIF 'saisie_service_exterieur' = privilege_name THEN - --IF INTERVENANT_HAS_PRIVILEGE( intervenant_id, 'saisie_service' ) = 0 OR itype.code = 'E' THEN -- cascade - IF itype.code = 'E' THEN - res := 0; - END IF; - RETURN res; - ELSIF 'saisie_service_referentiel' = privilege_name THEN - IF itype.code = 'E' THEN - res := 0; - END IF; - RETURN res; - ELSIF 'saisie_service_referentiel_autre_structure' = privilege_name THEN - res := 1; - RETURN res; - ELSIF 'saisie_motif_non_paiement' = privilege_name THEN - res := statut.peut_saisir_motif_non_paiement; - RETURN res; - END IF; - /* FIN DE DEPRECATED */ +-- SR_INTERVENANT_FK_IDX +CREATE INDEX "SR_INTERVENANT_FK_IDX" ON "SERVICE_REFERENTIEL" ("INTERVENANT_ID"); - SELECT - count(*) - INTO - res - FROM - intervenant i - JOIN statut_privilege sp ON sp.statut_id = i.statut_id - JOIN privilege p ON p.id = sp.privilege_id - JOIN categorie_privilege cp ON cp.id = p.categorie_id - WHERE - i.id = INTERVENANT_HAS_PRIVILEGE.intervenant_id - AND cp.code || '-' || p.code = privilege_name; +-- SR_STRUCTURE_FK_IDX +CREATE INDEX "SR_STRUCTURE_FK_IDX" ON "SERVICE_REFERENTIEL" ("STRUCTURE_ID"); - RETURN res; -END; +-- STATUT_INTERVENANT_HCFK_IDX +CREATE INDEX "STATUT_INTERVENANT_HCFK_IDX" ON "STATUT_INTERVENANT" ("HISTO_CREATEUR_ID"); -FUNCTION implode(i_query VARCHAR2, i_seperator VARCHAR2 DEFAULT ',') RETURN VARCHAR2 AS - l_return CLOB:=''; - l_temp CLOB; - TYPE r_cursor is REF CURSOR; - rc r_cursor; -BEGIN - OPEN rc FOR i_query; - LOOP - FETCH rc INTO L_TEMP; - EXIT WHEN RC%NOTFOUND; - l_return:=l_return||L_TEMP||i_seperator; - END LOOP; - RETURN RTRIM(l_return,i_seperator); -END; +-- STATUT_INTERVENANT_HDFK_IDX +CREATE INDEX "STATUT_INTERVENANT_HDFK_IDX" ON "STATUT_INTERVENANT" ("HISTO_DESTRUCTEUR_ID"); -PROCEDURE intervenant_horodatage_service( INTERVENANT_ID NUMERIC, TYPE_VOLUME_HORAIRE_ID NUMERIC, REFERENTIEL NUMERIC, HISTO_MODIFICATEUR_ID NUMERIC, HISTO_MODIFICATION DATE ) AS -BEGIN - MERGE INTO histo_intervenant_service his USING dual ON ( +-- STATUT_INTERVENANT_HMFK_IDX +CREATE INDEX "STATUT_INTERVENANT_HMFK_IDX" ON "STATUT_INTERVENANT" ("HISTO_MODIFICATEUR_ID"); - his.INTERVENANT_ID = intervenant_horodatage_service.INTERVENANT_ID - AND NVL(his.TYPE_VOLUME_HORAIRE_ID,0) = NVL(intervenant_horodatage_service.TYPE_VOLUME_HORAIRE_ID,0) - AND his.REFERENTIEL = intervenant_horodatage_service.REFERENTIEL +-- STATUT_INTERVENANT_ODRE_UN +CREATE UNIQUE INDEX "STATUT_INTERVENANT_ODRE_UN" ON "STATUT_INTERVENANT" ("HISTO_DESTRUCTION", "ORDRE"); - ) WHEN MATCHED THEN UPDATE SET +-- STATUT_INTERVENANT_PK +CREATE UNIQUE INDEX "STATUT_INTERVENANT_PK" ON "STATUT_INTERVENANT" ("ID"); - HISTO_MODIFICATEUR_ID = intervenant_horodatage_service.HISTO_MODIFICATEUR_ID, - HISTO_MODIFICATION = intervenant_horodatage_service.HISTO_MODIFICATION +-- STATUT_INTERVENANT_TYPE_FK_IDX +CREATE INDEX "STATUT_INTERVENANT_TYPE_FK_IDX" ON "STATUT_INTERVENANT" ("TYPE_INTERVENANT_ID"); - WHEN NOT MATCHED THEN INSERT ( +-- STATUT_INTERVENANT__UN +CREATE UNIQUE INDEX "STATUT_INTERVENANT__UN" ON "STATUT_INTERVENANT" ("SOURCE_CODE"); - ID, - INTERVENANT_ID, - TYPE_VOLUME_HORAIRE_ID, - REFERENTIEL, - HISTO_MODIFICATEUR_ID, - HISTO_MODIFICATION - ) VALUES ( - HISTO_INTERVENANT_SERVI_ID_SEQ.NEXTVAL, - intervenant_horodatage_service.INTERVENANT_ID, - intervenant_horodatage_service.TYPE_VOLUME_HORAIRE_ID, - intervenant_horodatage_service.REFERENTIEL, - intervenant_horodatage_service.HISTO_MODIFICATEUR_ID, - intervenant_horodatage_service.HISTO_MODIFICATION +-- STATUT_PRIVILEGE_PK +CREATE UNIQUE INDEX "STATUT_PRIVILEGE_PK" ON "STATUT_PRIVILEGE" ("STATUT_ID", "PRIVILEGE_ID"); - ); -END; +-- STAT_PRIV_PRIVILEGE_FK_IDX +CREATE INDEX "STAT_PRIV_PRIVILEGE_FK_IDX" ON "STATUT_PRIVILEGE" ("PRIVILEGE_ID"); +-- STAT_PRIV_STATUT_FK_IDX +CREATE INDEX "STAT_PRIV_STATUT_FK_IDX" ON "STATUT_PRIVILEGE" ("STATUT_ID"); -FUNCTION NIVEAU_FORMATION_ID_CALC( gtf_id NUMERIC, gtf_pertinence_niveau NUMERIC, niveau NUMERIC DEFAULT NULL ) RETURN NUMERIC AS -BEGIN - IF 1 <> gtf_pertinence_niveau OR niveau IS NULL OR niveau < 1 OR gtf_id < 1 THEN RETURN NULL; END IF; - RETURN gtf_id * 256 + niveau; -END; +-- STRUCTURE_CODE_UN +CREATE UNIQUE INDEX "STRUCTURE_CODE_UN" ON "STRUCTURE" ("CODE", "HISTO_DESTRUCTION"); -FUNCTION STR_REDUCE( str CLOB ) RETURN CLOB IS -BEGIN - RETURN utl_raw.cast_to_varchar2((nlssort(str, 'nls_sort=binary_ai'))); -END; +-- STRUCTURE_HCFK_IDX +CREATE INDEX "STRUCTURE_HCFK_IDX" ON "STRUCTURE" ("HISTO_CREATEUR_ID"); -FUNCTION STR_FIND( haystack CLOB, needle VARCHAR2 ) RETURN NUMERIC IS -BEGIN - IF STR_REDUCE( haystack ) LIKE STR_REDUCE( '%' || needle || '%' ) THEN RETURN 1; END IF; - RETURN 0; -END; +-- STRUCTURE_HDFK_IDX +CREATE INDEX "STRUCTURE_HDFK_IDX" ON "STRUCTURE" ("HISTO_DESTRUCTEUR_ID"); -FUNCTION LIKED( haystack CLOB, needle CLOB ) RETURN NUMERIC IS -BEGIN - RETURN CASE WHEN STR_REDUCE(haystack) LIKE STR_REDUCE(needle) THEN 1 ELSE 0 END; -END; +-- STRUCTURE_HMFK_IDX +CREATE INDEX "STRUCTURE_HMFK_IDX" ON "STRUCTURE" ("HISTO_MODIFICATEUR_ID"); -PROCEDURE DO_NOTHING IS -BEGIN - RETURN; -END; +-- STRUCTURE_PK +CREATE UNIQUE INDEX "STRUCTURE_PK" ON "STRUCTURE" ("ID"); -PROCEDURE CALCUL_TAUX( eff_fi FLOAT, eff_fc FLOAT, eff_fa FLOAT, fi NUMERIC, fc NUMERIC, fa NUMERIC, r_fi OUT FLOAT, r_fc OUT FLOAT, r_fa OUT FLOAT, arrondi NUMERIC DEFAULT 15 ) IS - nt FLOAT; - bi FLOAT; - bc FLOAT; - ba FLOAT; - reste FLOAT; -BEGIN - bi := eff_fi * fi; - bc := eff_fc * fc; - ba := eff_fa * fa; - nt := bi + bc + ba; +-- STRUCTURE_SOURCE_CODE_UN +CREATE UNIQUE INDEX "STRUCTURE_SOURCE_CODE_UN" ON "STRUCTURE" ("SOURCE_CODE", "HISTO_DESTRUCTION"); - IF nt = 0 THEN -- au cas ou, alors on ne prend plus en compte les effectifs!! - bi := fi; - bc := fc; - ba := fa; - nt := bi + bc + ba; - END IF; +-- SYNC_LOG_PK +CREATE UNIQUE INDEX "SYNC_LOG_PK" ON "SYNC_LOG" ("ID"); - IF nt = 0 THEN -- toujours au cas ou... - bi := 1; - bc := 0; - ba := 0; - nt := bi + bc + ba; - END IF; +-- S_ELEMENT_PEDAGOGIQUE_FK_IDX +CREATE INDEX "S_ELEMENT_PEDAGOGIQUE_FK_IDX" ON "SERVICE" ("ELEMENT_PEDAGOGIQUE_ID"); - -- Calcul - r_fi := bi / nt; - r_fc := bc / nt; - r_fa := ba / nt; +-- TAS_STATUT_INTERVENANT_FK_IDX +CREATE INDEX "TAS_STATUT_INTERVENANT_FK_IDX" ON "TYPE_AGREMENT_STATUT" ("STATUT_INTERVENANT_ID"); - -- Arrondis - r_fi := ROUND( r_fi, arrondi ); - r_fc := ROUND( r_fc, arrondi ); - r_fa := ROUND( r_fa, arrondi ); +-- TAS_TYPE_AGREMENT_FK_IDX +CREATE INDEX "TAS_TYPE_AGREMENT_FK_IDX" ON "TYPE_AGREMENT_STATUT" ("TYPE_AGREMENT_ID"); - -- détermination du reste - reste := 1 - r_fi - r_fc - r_fa; +-- TAUX_HORAIRE_HETD_HCFK_IDX +CREATE INDEX "TAUX_HORAIRE_HETD_HCFK_IDX" ON "TAUX_HORAIRE_HETD" ("HISTO_CREATEUR_ID"); - -- répartition éventuelle du reste - IF reste <> 0 THEN - IF r_fi > 0 THEN r_fi := r_fi + reste; - ELSIF r_fc > 0 THEN r_fc := r_fc + reste; - ELSE r_fa := r_fa + reste; END IF; - END IF; +-- TAUX_HORAIRE_HETD_HDFK_IDX +CREATE INDEX "TAUX_HORAIRE_HETD_HDFK_IDX" ON "TAUX_HORAIRE_HETD" ("HISTO_DESTRUCTEUR_ID"); -END; +-- TAUX_HORAIRE_HETD_HMFK_IDX +CREATE INDEX "TAUX_HORAIRE_HETD_HMFK_IDX" ON "TAUX_HORAIRE_HETD" ("HISTO_MODIFICATEUR_ID"); +-- TAUX_HORAIRE_HETD_PK +CREATE UNIQUE INDEX "TAUX_HORAIRE_HETD_PK" ON "TAUX_HORAIRE_HETD" ("ID"); -FUNCTION CALCUL_TAUX_FI( eff_fi FLOAT, eff_fc FLOAT, eff_fa FLOAT, fi NUMERIC, fc NUMERIC, fa NUMERIC, arrondi NUMERIC DEFAULT 15 ) RETURN FLOAT IS - ri FLOAT; - rc FLOAT; - ra FLOAT; -BEGIN - CALCUL_TAUX( eff_fi, eff_fc, eff_fa, fi, fc, fa, ri, rc, ra, arrondi ); - RETURN ri; -END; +-- TBL_AGREMENT_PK_IDX +CREATE UNIQUE INDEX "TBL_AGREMENT_PK_IDX" ON "TBL_AGREMENT" ("ID"); + +-- TBL_AGREMENT__UN_IDX +CREATE UNIQUE INDEX "TBL_AGREMENT__UN_IDX" ON "TBL_AGREMENT" ("TYPE_AGREMENT_ID", "INTERVENANT_ID", "STRUCTURE_ID", "TO_DELETE"); + +-- TBL_AGR_AGREMENT_FK_IDX +CREATE INDEX "TBL_AGR_AGREMENT_FK_IDX" ON "TBL_AGREMENT" ("AGREMENT_ID"); + +-- TBL_AGR_ANNEE_FK_IDX +CREATE INDEX "TBL_AGR_ANNEE_FK_IDX" ON "TBL_AGREMENT" ("ANNEE_ID"); + +-- TBL_AGR_INTERVENANT_FK_IDX +CREATE INDEX "TBL_AGR_INTERVENANT_FK_IDX" ON "TBL_AGREMENT" ("INTERVENANT_ID"); + +-- TBL_AGR_STRUCTURE_FK_IDX +CREATE INDEX "TBL_AGR_STRUCTURE_FK_IDX" ON "TBL_AGREMENT" ("STRUCTURE_ID"); -FUNCTION CALCUL_TAUX_FC( eff_fi FLOAT, eff_fc FLOAT, eff_fa FLOAT, fi NUMERIC, fc NUMERIC, fa NUMERIC, arrondi NUMERIC DEFAULT 15 ) RETURN FLOAT IS - ri FLOAT; - rc FLOAT; - ra FLOAT; -BEGIN - CALCUL_TAUX( eff_fi, eff_fc, eff_fa, fi, fc, fa, ri, rc, ra, arrondi ); - RETURN rc; -END; +-- TBL_AGR_TYPE_AGREMENT_FK_IDX +CREATE INDEX "TBL_AGR_TYPE_AGREMENT_FK_IDX" ON "TBL_AGREMENT" ("TYPE_AGREMENT_ID"); -FUNCTION CALCUL_TAUX_FA( eff_fi FLOAT, eff_fc FLOAT, eff_fa FLOAT, fi NUMERIC, fc NUMERIC, fa NUMERIC, arrondi NUMERIC DEFAULT 15 ) RETURN FLOAT IS - ri FLOAT; - rc FLOAT; - ra FLOAT; -BEGIN - CALCUL_TAUX( eff_fi, eff_fc, eff_fa, fi, fc, fa, ri, rc, ra, arrondi ); - RETURN ra; -END; +-- TBL_CHARGENS_PK +CREATE UNIQUE INDEX "TBL_CHARGENS_PK" ON "TBL_CHARGENS" ("ID"); -FUNCTION STRUCTURE_UNIV_GET_ID RETURN NUMERIC IS - res NUMERIC; -BEGIN - SELECT id INTO res FROM structure WHERE source_code = 'UNIV'; - RETURN res; -END; +-- TBL_CHARGENS_SEUILS_DEF_PK +CREATE UNIQUE INDEX "TBL_CHARGENS_SEUILS_DEF_PK" ON "TBL_CHARGENS_SEUILS_DEF" ("ID"); -PROCEDURE SYNC_LOG( msg CLOB ) IS -BEGIN - INSERT INTO SYNC_LOG( id, date_sync, message ) VALUES ( sync_log_id_seq.nextval, systimestamp, msg ); -END; +-- TBL_CHARGENS_SEUILS_DEF__UN +CREATE UNIQUE INDEX "TBL_CHARGENS_SEUILS_DEF__UN" ON "TBL_CHARGENS_SEUILS_DEF" ("SCENARIO_ID", "TYPE_INTERVENTION_ID", "STRUCTURE_ID", "GROUPE_TYPE_FORMATION_ID", "ANNEE_ID"); -FUNCTION FORMATTED_RIB (bic VARCHAR2, iban VARCHAR2) RETURN VARCHAR2 IS -BEGIN - if bic is null and iban is null then - return null; - end if; - RETURN regexp_replace(bic, '[[:space:]]+', '') || '-' || regexp_replace(iban, '[[:space:]]+', ''); -END; +-- TBL_CHARGENS__UN +CREATE UNIQUE INDEX "TBL_CHARGENS__UN" ON "TBL_CHARGENS" ("ANNEE_ID", "NOEUD_ID", "SCENARIO_ID", "TYPE_HEURES_ID", "TYPE_INTERVENTION_ID", "ELEMENT_PEDAGOGIQUE_ID", "ETAPE_ID", "ETAPE_ENS_ID", "STRUCTURE_ID", "GROUPE_TYPE_FORMATION_ID"); -FUNCTION FORMATTED_ADRESSE( - no_voie VARCHAR2, - nom_voie VARCHAR2, - batiment VARCHAR2, - mention_complementaire VARCHAR2, - localite VARCHAR2, - code_postal VARCHAR2, - ville VARCHAR2, - pays_libelle VARCHAR2) - RETURN VARCHAR2 -IS -BEGIN - return - -- concaténation des éléments non null séparés par ', ' - trim(trim(',' FROM REPLACE(', ' || NVL(no_voie,'#') || ', ' || NVL(nom_voie,'#') || ', ' || NVL(batiment,'#') || ', ' || NVL(mention_complementaire,'#'), ', #', ''))) || - -- saut de ligne complet - chr(13) || chr(10) || - -- concaténation des éléments non null séparés par ', ' - trim(trim(',' FROM REPLACE(', ' || NVL(localite,'#') || ', ' || NVL(code_postal,'#') || ', ' || NVL(ville,'#') || ', ' || NVL(pays_libelle,'#'), ', #', ''))); -END; +-- TBL_CLOTURE_REALISE_ANN_FK_IDX +CREATE INDEX "TBL_CLOTURE_REALISE_ANN_FK_IDX" ON "TBL_CLOTURE_REALISE" ("ANNEE_ID"); +-- TBL_CLOTURE_REALISE_PK_IDX +CREATE UNIQUE INDEX "TBL_CLOTURE_REALISE_PK_IDX" ON "TBL_CLOTURE_REALISE" ("ID"); +-- TBL_CLOTURE_REALISE__UN_IDX +CREATE UNIQUE INDEX "TBL_CLOTURE_REALISE__UN_IDX" ON "TBL_CLOTURE_REALISE" ("INTERVENANT_ID", "TO_DELETE"); -FUNCTION GET_TRIGGER_BODY( TRIGGER_NAME VARCHAR2 ) RETURN VARCHAR2 IS - vlong long; -BEGIN - SELECT trigger_body INTO vlong FROM all_triggers WHERE trigger_name = GET_TRIGGER_BODY.TRIGGER_NAME; +-- TBL_CONTRAT_ANNEE_FK_IDX +CREATE INDEX "TBL_CONTRAT_ANNEE_FK_IDX" ON "TBL_CONTRAT" ("ANNEE_ID"); - RETURN substr(vlong, 1, 32767); -END; +-- TBL_CONTRAT_INTERVENANT_FK_IDX +CREATE INDEX "TBL_CONTRAT_INTERVENANT_FK_IDX" ON "TBL_CONTRAT" ("INTERVENANT_ID"); -END OSE_DIVERS; -/ +-- TBL_CONTRAT_PK_IDX +CREATE UNIQUE INDEX "TBL_CONTRAT_PK_IDX" ON "TBL_CONTRAT" ("ID"); --- OSE_EVENT -CREATE OR REPLACE PACKAGE BODY "OSE_EVENT" AS +-- TBL_CONTRAT_STRUCTURE_FK_IDX +CREATE INDEX "TBL_CONTRAT_STRUCTURE_FK_IDX" ON "TBL_CONTRAT" ("STRUCTURE_ID"); - PROCEDURE ON_BEFORE_FORMULE_RES_DELETE( INTERVENANT_ID NUMERIC ) IS - BEGIN +-- TBL_CONTRAT__UN_IDX +CREATE UNIQUE INDEX "TBL_CONTRAT__UN_IDX" ON "TBL_CONTRAT" ("INTERVENANT_ID", "STRUCTURE_ID", "TO_DELETE"); - -- recherche des services à payer prêts à être supprimés pour cet intervenant et check - FOR sap IN ( - SELECT - frs.id - FROM - FORMULE_RESULTAT_SERVICE frs - JOIN FORMULE_RESULTAT fr ON fr.id = frs.formule_resultat_id AND fr.intervenant_id = ON_BEFORE_FORMULE_RES_DELETE.intervenant_id - JOIN TYPE_VOLUME_HORAIRE tvh ON tvh.id = fr.type_volume_horaire_id AND tvh.code = 'REALISE' - JOIN ETAT_VOLUME_HORAIRE evh ON evh.id = fr.etat_volume_horaire_id AND evh.code = 'valide' - WHERE - frs.TO_DELETE = 1 - ) - LOOP - OSE_PAIEMENT.CHECK_BAD_PAIEMENTS( sap.id ); - END LOOP; +-- TBL_CSD_ANNEE_IDX +CREATE INDEX "TBL_CSD_ANNEE_IDX" ON "TBL_CHARGENS_SEUILS_DEF" ("ANNEE_ID"); - FOR sap IN ( - SELECT - frs.id - FROM - FORMULE_RESULTAT_SERVICE_REF frs - JOIN FORMULE_RESULTAT fr ON fr.id = frs.formule_resultat_id AND fr.intervenant_id = ON_BEFORE_FORMULE_RES_DELETE.intervenant_id - JOIN TYPE_VOLUME_HORAIRE tvh ON tvh.id = fr.type_volume_horaire_id AND tvh.code = 'REALISE' - JOIN ETAT_VOLUME_HORAIRE evh ON evh.id = fr.etat_volume_horaire_id AND evh.code = 'valide' - WHERE - frs.TO_DELETE = 1 - ) - LOOP - OSE_PAIEMENT.CHECK_BAD_PAIEMENTS( null, sap.id ); - END LOOP; +-- TBL_CSD_GTF_IDX +CREATE INDEX "TBL_CSD_GTF_IDX" ON "TBL_CHARGENS_SEUILS_DEF" ("GROUPE_TYPE_FORMATION_ID"); - DELETE FROM MISE_EN_PAIEMENT WHERE histo_destruction IS NOT NULL AND - formule_res_service_id IN ( - SELECT frs.id - FROM - formule_resultat_service frs - JOIN formule_resultat fr ON fr.id = frs.formule_resultat_id - WHERE - frs.to_delete = 1 - AND fr.intervenant_id = ON_BEFORE_FORMULE_RES_DELETE.INTERVENANT_ID - ); +-- TBL_CSD_SCENARIO_IDX +CREATE INDEX "TBL_CSD_SCENARIO_IDX" ON "TBL_CHARGENS_SEUILS_DEF" ("SCENARIO_ID"); - DELETE FROM MISE_EN_PAIEMENT WHERE histo_destruction IS NOT NULL AND - formule_res_service_ref_id IN ( - SELECT frsr.id - FROM - formule_resultat_service_ref frsr - JOIN formule_resultat fr ON fr.id = frsr.formule_resultat_id - WHERE - frsr.to_delete = 1 - AND fr.intervenant_id = ON_BEFORE_FORMULE_RES_DELETE.INTERVENANT_ID - ); - END; +-- TBL_CSD_STRUCTURE_IDX +CREATE INDEX "TBL_CSD_STRUCTURE_IDX" ON "TBL_CHARGENS_SEUILS_DEF" ("STRUCTURE_ID"); +-- TBL_CSD_TYPE_INTERVENTION_IDX +CREATE INDEX "TBL_CSD_TYPE_INTERVENTION_IDX" ON "TBL_CHARGENS_SEUILS_DEF" ("TYPE_INTERVENTION_ID"); +-- TBL_DEMS_TBL_NAME_IDX +CREATE INDEX "TBL_DEMS_TBL_NAME_IDX" ON "TBL_DEMS" ("TBL_NAME"); - PROCEDURE ON_AFTER_FORMULE_CALC( INTERVENANT_ID NUMERIC ) IS - p unicaen_tbl.t_params; - BEGIN - p := UNICAEN_TBL.make_params('INTERVENANT_ID', ON_AFTER_FORMULE_CALC.intervenant_id); +-- TBL_DMEP_LIQUIDATION_PK_IDX +CREATE UNIQUE INDEX "TBL_DMEP_LIQUIDATION_PK_IDX" ON "TBL_DMEP_LIQUIDATION" ("ID"); - UNICAEN_TBL.CALCULER( 'agrement', p ); - UNICAEN_TBL.CALCULER( 'paiement', p ); - UNICAEN_TBL.CALCULER( 'workflow', p ); - END; +-- TBL_DMEP_LIQUIDATION__UN_IDX +CREATE UNIQUE INDEX "TBL_DMEP_LIQUIDATION__UN_IDX" ON "TBL_DMEP_LIQUIDATION" ("ANNEE_ID", "TYPE_RESSOURCE_ID", "STRUCTURE_ID", "TO_DELETE"); -END OSE_EVENT; -/ +-- TBL_DMLIQ_ANNEE_FK_IDX +CREATE INDEX "TBL_DMLIQ_ANNEE_FK_IDX" ON "TBL_DMEP_LIQUIDATION" ("ANNEE_ID"); --- OSE_FORMULE -CREATE OR REPLACE PACKAGE BODY "OSE_FORMULE" AS +-- TBL_DMLIQ_STRUCTURE_FK_IDX +CREATE INDEX "TBL_DMLIQ_STRUCTURE_FK_IDX" ON "TBL_DMEP_LIQUIDATION" ("STRUCTURE_ID"); - v_date_obs DATE; - debug_level NUMERIC DEFAULT 0; - d_all_volume_horaire_ref t_lst_volume_horaire_ref; - d_all_volume_horaire t_lst_volume_horaire; - arrondi NUMERIC DEFAULT 2; +-- TBL_DMLIQ_TYPE_RESSOUR_FK +CREATE INDEX "TBL_DMLIQ_TYPE_RESSOUR_FK" ON "TBL_DMEP_LIQUIDATION" ("TYPE_RESSOURCE_ID"); - INTERVENANT_ID NUMERIC DEFAULT NULL; +-- TBL_DOSSIER_ANNEE_FK_IDX +CREATE INDEX "TBL_DOSSIER_ANNEE_FK_IDX" ON "TBL_DOSSIER" ("ANNEE_ID"); - FUNCTION GET_INTERVENANT_ID RETURN NUMERIC IS - BEGIN - RETURN INTERVENANT_ID; - END; +-- TBL_DOSSIER_DOSSIER_FK_IDX +CREATE INDEX "TBL_DOSSIER_DOSSIER_FK_IDX" ON "TBL_DOSSIER" ("DOSSIER_ID"); - FUNCTION GET_DATE_OBS RETURN DATE AS - BEGIN - RETURN COALESCE( v_date_obs, SYSDATE ); - END; +-- TBL_DOSSIER_PK_IDX +CREATE UNIQUE INDEX "TBL_DOSSIER_PK_IDX" ON "TBL_DOSSIER" ("ID"); - FUNCTION SET_DATE_OBS( DATE_OBS DATE DEFAULT NULL ) RETURN DATE IS - BEGIN - v_date_obs := DATE_OBS; - RETURN v_date_obs; - END; +-- TBL_DOSSIER_VALIDATION_FK_IDX +CREATE INDEX "TBL_DOSSIER_VALIDATION_FK_IDX" ON "TBL_DOSSIER" ("VALIDATION_ID"); - PROCEDURE SET_DEBUG_LEVEL( DEBUG_LEVEL NUMERIC ) IS - BEGIN - ose_formule.debug_level := SET_DEBUG_LEVEL.DEBUG_LEVEL; - END; +-- TBL_DOSSIER__UN_IDX +CREATE UNIQUE INDEX "TBL_DOSSIER__UN_IDX" ON "TBL_DOSSIER" ("INTERVENANT_ID", "TO_DELETE"); - FUNCTION GET_DEBUG_LEVEL RETURN NUMERIC IS - BEGIN - RETURN ose_formule.debug_level; - END; +-- TBL_LIEN_ACTIF_IDX +CREATE INDEX "TBL_LIEN_ACTIF_IDX" ON "TBL_LIEN" ("ACTIF"); - FUNCTION GET_TAUX_HORAIRE_HETD( DATE_OBS DATE DEFAULT NULL ) RETURN FLOAT IS - taux_hetd FLOAT; - BEGIN - SELECT valeur INTO taux_hetd - FROM taux_horaire_hetd t - WHERE - DATE_OBS BETWEEN t.histo_creation AND COALESCE(t.histo_destruction,GREATEST(SYSDATE,DATE_OBS)) - AND rownum = 1 - ORDER BY - histo_creation DESC; - RETURN taux_hetd; - END; +-- TBL_LIEN_LIEN_IDX +CREATE INDEX "TBL_LIEN_LIEN_IDX" ON "TBL_LIEN" ("LIEN_ID"); - PROCEDURE UPDATE_ANNEE_TAUX_HETD IS - BEGIN - UPDATE annee SET taux_hetd = GET_TAUX_HORAIRE_HETD(date_fin); - END; +-- TBL_LIEN_NOEUD_INF_IDX +CREATE INDEX "TBL_LIEN_NOEUD_INF_IDX" ON "TBL_LIEN" ("NOEUD_INF_ID"); +-- TBL_LIEN_NOEUD_SUP_IDX +CREATE INDEX "TBL_LIEN_NOEUD_SUP_IDX" ON "TBL_LIEN" ("NOEUD_SUP_ID"); +-- TBL_LIEN_PK +CREATE UNIQUE INDEX "TBL_LIEN_PK" ON "TBL_LIEN" ("ID"); - PROCEDURE CALCULER_TOUT( ANNEE_ID NUMERIC DEFAULT NULL ) IS - a_id NUMERIC; - BEGIN - a_id := NVL(CALCULER_TOUT.ANNEE_ID, OSE_PARAMETRE.GET_ANNEE); - FOR mp IN ( - SELECT DISTINCT - intervenant_id - FROM - service s - JOIN intervenant i ON i.id = s.intervenant_id - WHERE - s.histo_destruction IS NULL - AND i.annee_id = a_id +-- TBL_LIEN_SCENARIO_IDX +CREATE INDEX "TBL_LIEN_SCENARIO_IDX" ON "TBL_LIEN" ("SCENARIO_ID"); - UNION +-- TBL_LIEN_SCENARIO_LIEN_IDX +CREATE INDEX "TBL_LIEN_SCENARIO_LIEN_IDX" ON "TBL_LIEN" ("SCENARIO_LIEN_ID"); - SELECT DISTINCT - intervenant_id - FROM - service_referentiel sr - JOIN intervenant i ON i.id = sr.intervenant_id - WHERE - sr.histo_destruction IS NULL - AND i.annee_id = a_id +-- TBL_LIEN_STRUCTURE_IDX +CREATE INDEX "TBL_LIEN_STRUCTURE_IDX" ON "TBL_LIEN" ("STRUCTURE_ID"); - ) - LOOP - CALCULER( mp.intervenant_id ); - END LOOP; - END; +-- TBL_PAIEMENT_ANNEE_FK_IDX +CREATE INDEX "TBL_PAIEMENT_ANNEE_FK_IDX" ON "TBL_PAIEMENT" ("ANNEE_ID"); +-- TBL_PAIEMENT_FRSR_FK_IDX +CREATE INDEX "TBL_PAIEMENT_FRSR_FK_IDX" ON "TBL_PAIEMENT" ("FORMULE_RES_SERVICE_REF_ID"); +-- TBL_PAIEMENT_FRS_FK_IDX +CREATE INDEX "TBL_PAIEMENT_FRS_FK_IDX" ON "TBL_PAIEMENT" ("FORMULE_RES_SERVICE_ID"); - FUNCTION ENREGISTRER_RESULTAT( fr formule_resultat%rowtype ) RETURN NUMERIC IS - id NUMERIC; - ti_code VARCHAR(5); - BEGIN +-- TBL_PAIEMENT_INTERV_FK_IDX +CREATE INDEX "TBL_PAIEMENT_INTERV_FK_IDX" ON "TBL_PAIEMENT" ("INTERVENANT_ID"); - SELECT - ti.code INTO ti_code - FROM - type_intervenant ti - JOIN statut_intervenant si ON si.type_intervenant_id = ti.id - JOIN intervenant i ON i.statut_id = si.id - WHERE - i.id = fr.intervenant_id; +-- TBL_PAIEMENT_MEP_FK_IDX +CREATE INDEX "TBL_PAIEMENT_MEP_FK_IDX" ON "TBL_PAIEMENT" ("MISE_EN_PAIEMENT_ID"); +-- TBL_PAIEMENT_PERIODE_FK_IDX +CREATE INDEX "TBL_PAIEMENT_PERIODE_FK_IDX" ON "TBL_PAIEMENT" ("PERIODE_PAIEMENT_ID"); +-- TBL_PAIEMENT_PK_IDX +CREATE UNIQUE INDEX "TBL_PAIEMENT_PK_IDX" ON "TBL_PAIEMENT" ("ID"); - MERGE INTO formule_resultat tfr USING dual ON ( +-- TBL_PAIEMENT_STRUCTURE_FK_IDX +CREATE INDEX "TBL_PAIEMENT_STRUCTURE_FK_IDX" ON "TBL_PAIEMENT" ("STRUCTURE_ID"); - tfr.intervenant_id = fr.intervenant_id - AND tfr.type_volume_horaire_id = fr.type_volume_horaire_id - AND tfr.etat_volume_horaire_id = fr.etat_volume_horaire_id +-- TBL_PAIEMENT__UN +CREATE UNIQUE INDEX "TBL_PAIEMENT__UN" ON "TBL_PAIEMENT" ("INTERVENANT_ID", "TO_DELETE", "MISE_EN_PAIEMENT_ID", "FORMULE_RES_SERVICE_ID", "FORMULE_RES_SERVICE_REF_ID"); - ) WHEN MATCHED THEN UPDATE SET +-- TBL_PIECE_JOINTE_ANNEE_FK_IDX +CREATE INDEX "TBL_PIECE_JOINTE_ANNEE_FK_IDX" ON "TBL_PIECE_JOINTE" ("ANNEE_ID"); - service_du = ROUND( fr.service_du, arrondi ), - service_fi = ROUND( fr.service_fi, arrondi ), - service_fa = ROUND( fr.service_fa, arrondi ), - service_fc = ROUND( fr.service_fc, arrondi ), - service_referentiel = ROUND( fr.service_referentiel, arrondi ), - heures_compl_fi = ROUND( fr.heures_compl_fi, arrondi ), - heures_compl_fa = ROUND( fr.heures_compl_fa, arrondi ), - heures_compl_fc = ROUND( fr.heures_compl_fc, arrondi ), - heures_compl_fc_majorees = ROUND( fr.heures_compl_fc_majorees, arrondi ), - heures_compl_referentiel = ROUND( fr.heures_compl_referentiel, arrondi ), - total = ROUND( fr.total, arrondi ), - solde = ROUND( fr.solde, arrondi ), - sous_service = ROUND( fr.sous_service, arrondi ), - heures_compl = ROUND( fr.heures_compl, arrondi ), - to_delete = 0 +-- TBL_PIECE_JOINTE_PK_IDX +CREATE UNIQUE INDEX "TBL_PIECE_JOINTE_PK_IDX" ON "TBL_PIECE_JOINTE" ("ID"); - WHEN NOT MATCHED THEN INSERT ( +-- TBL_PIECE_JOINTE__UN_IDX +CREATE UNIQUE INDEX "TBL_PIECE_JOINTE__UN_IDX" ON "TBL_PIECE_JOINTE" ("TYPE_PIECE_JOINTE_ID", "INTERVENANT_ID", "TO_DELETE"); - ID, - INTERVENANT_ID, - TYPE_VOLUME_HORAIRE_ID, - ETAT_VOLUME_HORAIRE_ID, - SERVICE_DU, - SERVICE_FI, - SERVICE_FA, - SERVICE_FC, - SERVICE_REFERENTIEL, - HEURES_COMPL_FI, - HEURES_COMPL_FA, - HEURES_COMPL_FC, - HEURES_COMPL_FC_majorees, - HEURES_COMPL_REFERENTIEL, - TOTAL, - SOLDE, - SOUS_SERVICE, - HEURES_COMPL, - TO_DELETE, - type_intervenant_code +-- TBL_PJD_ANNEE_FK_IDX +CREATE INDEX "TBL_PJD_ANNEE_FK_IDX" ON "TBL_PIECE_JOINTE_DEMANDE" ("ANNEE_ID"); - ) VALUES ( +-- TBL_PJD_INTERVENANT_FK_IDX +CREATE INDEX "TBL_PJD_INTERVENANT_FK_IDX" ON "TBL_PIECE_JOINTE_DEMANDE" ("INTERVENANT_ID"); - FORMULE_RESULTAT_ID_SEQ.NEXTVAL, - fr.intervenant_id, - fr.type_volume_horaire_id, - fr.etat_volume_horaire_id, - ROUND( fr.service_du, arrondi ), - ROUND( fr.service_fi, arrondi ), - ROUND( fr.service_fa, arrondi ), - ROUND( fr.service_fc, arrondi ), - ROUND( fr.service_referentiel, arrondi ), - ROUND( fr.heures_compl_fi, arrondi ), - ROUND( fr.heures_compl_fa, arrondi ), - ROUND( fr.heures_compl_fc, arrondi ), - ROUND( fr.heures_compl_fc_majorees, arrondi ), - ROUND( fr.heures_compl_referentiel, arrondi ), - ROUND( fr.total, arrondi ), - ROUND( fr.solde, arrondi ), - ROUND( fr.sous_service, arrondi ), - ROUND( fr.heures_compl, arrondi ), - 0, - ti_code - ); +-- TBL_PJD_PK_IDX +CREATE UNIQUE INDEX "TBL_PJD_PK_IDX" ON "TBL_PIECE_JOINTE_DEMANDE" ("ID"); + +-- TBL_PJD_TPJ_FK_IDX +CREATE INDEX "TBL_PJD_TPJ_FK_IDX" ON "TBL_PIECE_JOINTE_DEMANDE" ("TYPE_PIECE_JOINTE_ID"); + +-- TBL_PJD_UN_IDX +CREATE UNIQUE INDEX "TBL_PJD_UN_IDX" ON "TBL_PIECE_JOINTE_DEMANDE" ("TYPE_PIECE_JOINTE_ID", "INTERVENANT_ID", "TO_DELETE"); + +-- TBL_PJF_ANNEE_FK_IDX +CREATE INDEX "TBL_PJF_ANNEE_FK_IDX" ON "TBL_PIECE_JOINTE_FOURNIE" ("ANNEE_ID"); + +-- TBL_PJF_FICHIER_FK_IDX +CREATE INDEX "TBL_PJF_FICHIER_FK_IDX" ON "TBL_PIECE_JOINTE_FOURNIE" ("FICHIER_ID"); + +-- TBL_PJF_INTERVENANT_FK_IDX +CREATE INDEX "TBL_PJF_INTERVENANT_FK_IDX" ON "TBL_PIECE_JOINTE_FOURNIE" ("INTERVENANT_ID"); + +-- TBL_PJF_PIECE_JOINTE_FK_IDX +CREATE INDEX "TBL_PJF_PIECE_JOINTE_FK_IDX" ON "TBL_PIECE_JOINTE_FOURNIE" ("PIECE_JOINTE_ID"); - SELECT id INTO id FROM formule_resultat tfr WHERE - tfr.intervenant_id = fr.intervenant_id - AND tfr.type_volume_horaire_id = fr.type_volume_horaire_id - AND tfr.etat_volume_horaire_id = fr.etat_volume_horaire_id; - RETURN id; - END; +-- TBL_PJF_PK_IDX +CREATE UNIQUE INDEX "TBL_PJF_PK_IDX" ON "TBL_PIECE_JOINTE_FOURNIE" ("ID"); +-- TBL_PJF_TPJ_FK_IDX +CREATE INDEX "TBL_PJF_TPJ_FK_IDX" ON "TBL_PIECE_JOINTE_FOURNIE" ("TYPE_PIECE_JOINTE_ID"); - FUNCTION ENREGISTRER_RESULTAT_SERVICE( fs formule_resultat_service%rowtype ) RETURN NUMERIC IS - id NUMERIC; - BEGIN - MERGE INTO formule_resultat_service tfs USING dual ON ( +-- TBL_PJF_UN_IDX +CREATE UNIQUE INDEX "TBL_PJF_UN_IDX" ON "TBL_PIECE_JOINTE_FOURNIE" ("TYPE_PIECE_JOINTE_ID", "INTERVENANT_ID", "VALIDATION_ID", "FICHIER_ID"); - tfs.formule_resultat_id = fs.formule_resultat_id - AND tfs.service_id = fs.service_id +-- TBL_PJF_VALIDATION_FK_IDX +CREATE INDEX "TBL_PJF_VALIDATION_FK_IDX" ON "TBL_PIECE_JOINTE_FOURNIE" ("VALIDATION_ID"); - ) WHEN MATCHED THEN UPDATE SET +-- TBL_PJ_INTERVENANT_FK_IDX +CREATE INDEX "TBL_PJ_INTERVENANT_FK_IDX" ON "TBL_PIECE_JOINTE" ("INTERVENANT_ID"); - service_fi = ROUND( fs.service_fi, arrondi ), - service_fa = ROUND( fs.service_fa, arrondi ), - service_fc = ROUND( fs.service_fc, arrondi ), - heures_compl_fi = ROUND( fs.heures_compl_fi, arrondi ), - heures_compl_fa = ROUND( fs.heures_compl_fa, arrondi ), - heures_compl_fc = ROUND( fs.heures_compl_fc, arrondi ), - heures_compl_fc_majorees = ROUND( fs.heures_compl_fc_majorees, arrondi ), - total = ROUND( fs.total, arrondi ), - TO_DELETE = 0 +-- TBL_PJ_TPJ_FK_IDX +CREATE INDEX "TBL_PJ_TPJ_FK_IDX" ON "TBL_PIECE_JOINTE" ("TYPE_PIECE_JOINTE_ID"); - WHEN NOT MATCHED THEN INSERT ( +-- TBL_PK +CREATE UNIQUE INDEX "TBL_PK" ON "TBL" ("TBL_NAME"); - ID, - FORMULE_RESULTAT_ID, - SERVICE_ID, - SERVICE_FI, - SERVICE_FA, - SERVICE_FC, - HEURES_COMPL_FI, - HEURES_COMPL_FA, - HEURES_COMPL_FC, - HEURES_COMPL_FC_majorees, - TOTAL, - TO_DELETE +-- TBL_SERVICE_ANNEE_FK_IDX +CREATE INDEX "TBL_SERVICE_ANNEE_FK_IDX" ON "TBL_SERVICE" ("ANNEE_ID"); - ) VALUES ( +-- TBL_SERVICE_ELEMENT_FK_IDX +CREATE INDEX "TBL_SERVICE_ELEMENT_FK_IDX" ON "TBL_SERVICE" ("ELEMENT_PEDAGOGIQUE_ID"); - FORMULE_RESULTAT_SERVIC_ID_SEQ.NEXTVAL, - fs.formule_resultat_id, - fs.service_id, - ROUND( fs.service_fi, arrondi ), - ROUND( fs.service_fa, arrondi ), - ROUND( fs.service_fc, arrondi ), - ROUND( fs.heures_compl_fi, arrondi ), - ROUND( fs.heures_compl_fa, arrondi ), - ROUND( fs.heures_compl_fc, arrondi ), - ROUND( fs.heures_compl_fc_majorees, arrondi ), - ROUND( fs.total, arrondi ), - 0 +-- TBL_SERVICE_ETAPE_FK_IDX +CREATE INDEX "TBL_SERVICE_ETAPE_FK_IDX" ON "TBL_SERVICE" ("ETAPE_ID"); - ); +-- TBL_SERVICE_INTERVENANT_FK_IDX +CREATE INDEX "TBL_SERVICE_INTERVENANT_FK_IDX" ON "TBL_SERVICE" ("INTERVENANT_ID"); - SELECT id INTO id FROM formule_resultat_service tfs WHERE - tfs.formule_resultat_id = fs.formule_resultat_id - AND tfs.service_id = fs.service_id; - RETURN id; - END; +-- TBL_SERVICE_PERIODE_EP_FK_IDX +CREATE INDEX "TBL_SERVICE_PERIODE_EP_FK_IDX" ON "TBL_SERVICE" ("ELEMENT_PEDAGOGIQUE_PERIODE_ID"); +-- TBL_SERVICE_PK_IDX +CREATE UNIQUE INDEX "TBL_SERVICE_PK_IDX" ON "TBL_SERVICE" ("ID"); - FUNCTION ENREGISTRER_RESULTAT_VH( fvh formule_resultat_vh%rowtype ) RETURN NUMERIC IS - id NUMERIC; - BEGIN - MERGE INTO formule_resultat_vh tfvh USING dual ON ( +-- TBL_SERVICE_REFERENTIEL_PK_IDX +CREATE UNIQUE INDEX "TBL_SERVICE_REFERENTIEL_PK_IDX" ON "TBL_SERVICE_REFERENTIEL" ("ID"); - tfvh.formule_resultat_id = fvh.formule_resultat_id - AND tfvh.volume_horaire_id = fvh.volume_horaire_id +-- TBL_SERVICE_REFERENTIEL_UN_IDX +CREATE UNIQUE INDEX "TBL_SERVICE_REFERENTIEL_UN_IDX" ON "TBL_SERVICE_REFERENTIEL" ("INTERVENANT_ID", "TYPE_VOLUME_HORAIRE_ID", "STRUCTURE_ID", "TO_DELETE"); - ) WHEN MATCHED THEN UPDATE SET +-- TBL_SERVICE_REF_ANNEE_FK_IDX +CREATE INDEX "TBL_SERVICE_REF_ANNEE_FK_IDX" ON "TBL_SERVICE_REFERENTIEL" ("ANNEE_ID"); - service_fi = ROUND( fvh.service_fi, arrondi ), - service_fa = ROUND( fvh.service_fa, arrondi ), - service_fc = ROUND( fvh.service_fc, arrondi ), - heures_compl_fi = ROUND( fvh.heures_compl_fi, arrondi ), - heures_compl_fa = ROUND( fvh.heures_compl_fa, arrondi ), - heures_compl_fc = ROUND( fvh.heures_compl_fc, arrondi ), - heures_compl_fc_majorees = ROUND( fvh.heures_compl_fc_majorees, arrondi ), - total = ROUND( fvh.total, arrondi ), - TO_DELETE = 0 +-- TBL_SERVICE_REF_INTERVENANT_FK +CREATE INDEX "TBL_SERVICE_REF_INTERVENANT_FK" ON "TBL_SERVICE_REFERENTIEL" ("INTERVENANT_ID"); - WHEN NOT MATCHED THEN INSERT ( +-- TBL_SERVICE_REF_STRUCTU_FK_IDX +CREATE INDEX "TBL_SERVICE_REF_STRUCTU_FK_IDX" ON "TBL_SERVICE_REFERENTIEL" ("STRUCTURE_ID"); - ID, - FORMULE_RESULTAT_ID, - VOLUME_HORAIRE_ID, - SERVICE_FI, - SERVICE_FA, - SERVICE_FC, - HEURES_COMPL_FI, - HEURES_COMPL_FA, - HEURES_COMPL_FC, - HEURES_COMPL_FC_MAJOREES, - TOTAL, - TO_DELETE +-- TBL_SERVICE_REF_TVH_FK_IDX +CREATE INDEX "TBL_SERVICE_REF_TVH_FK_IDX" ON "TBL_SERVICE_REFERENTIEL" ("TYPE_VOLUME_HORAIRE_ID"); - ) VALUES ( +-- TBL_SERVICE_SAISIE_ANNEE_FK +CREATE INDEX "TBL_SERVICE_SAISIE_ANNEE_FK" ON "TBL_SERVICE_SAISIE" ("ANNEE_ID"); - FORMULE_RESULTAT_VH_ID_SEQ.NEXTVAL, - fvh.formule_resultat_id, - fvh.volume_horaire_id, - ROUND( fvh.service_fi, arrondi ), - ROUND( fvh.service_fa, arrondi ), - ROUND( fvh.service_fc, arrondi ), - ROUND( fvh.heures_compl_fi, arrondi ), - ROUND( fvh.heures_compl_fa, arrondi ), - ROUND( fvh.heures_compl_fc, arrondi ), - ROUND( fvh.heures_compl_fc_majorees, arrondi ), - ROUND( fvh.total, arrondi ), - 0 +-- TBL_SERVICE_SAISIE_PK_IDX +CREATE UNIQUE INDEX "TBL_SERVICE_SAISIE_PK_IDX" ON "TBL_SERVICE_SAISIE" ("ID"); - ); +-- TBL_SERVICE_SAISIE_UN_IDX +CREATE UNIQUE INDEX "TBL_SERVICE_SAISIE_UN_IDX" ON "TBL_SERVICE_SAISIE" ("INTERVENANT_ID", "TO_DELETE"); - SELECT id INTO id FROM formule_resultat_vh tfvh WHERE - tfvh.formule_resultat_id = fvh.formule_resultat_id - AND tfvh.volume_horaire_id = fvh.volume_horaire_id; - RETURN id; - END; +-- TBL_SERVICE_SERVICE_FK_IDX +CREATE INDEX "TBL_SERVICE_SERVICE_FK_IDX" ON "TBL_SERVICE" ("SERVICE_ID"); +-- TBL_SERVICE_STRUCTURE_FKV1_IDX +CREATE INDEX "TBL_SERVICE_STRUCTURE_FKV1_IDX" ON "TBL_SERVICE" ("INTERVENANT_STRUCTURE_ID"); - FUNCTION ENREGISTRER_RESULTAT_SERV_REF( fr formule_resultat_service_ref%rowtype ) RETURN NUMERIC IS - id NUMERIC; - BEGIN - MERGE INTO formule_resultat_service_ref tfr USING dual ON ( +-- TBL_SERVICE_STRUCTURE_FK_IDX +CREATE INDEX "TBL_SERVICE_STRUCTURE_FK_IDX" ON "TBL_SERVICE" ("STRUCTURE_ID"); - tfr.formule_resultat_id = fr.formule_resultat_id - AND tfr.service_referentiel_id = fr.service_referentiel_id +-- TBL_SERVICE_TINTERV_FK_IDX +CREATE INDEX "TBL_SERVICE_TINTERV_FK_IDX" ON "TBL_SERVICE" ("TYPE_INTERVENANT_ID"); - ) WHEN MATCHED THEN UPDATE SET +-- TBL_SERVICE_TVH_FK_IDX +CREATE INDEX "TBL_SERVICE_TVH_FK_IDX" ON "TBL_SERVICE" ("TYPE_VOLUME_HORAIRE_ID"); - service_referentiel = ROUND( fr.service_referentiel, arrondi ), - heures_compl_referentiel = ROUND( fr.heures_compl_referentiel, arrondi ), - TO_DELETE = 0 +-- TBL_SERVICE_TVH_IDX_IDX +CREATE INDEX "TBL_SERVICE_TVH_IDX_IDX" ON "TBL_SERVICE" ("TYPE_VOLUME_HORAIRE_CODE"); - WHEN NOT MATCHED THEN INSERT ( +-- TBL_SERVICE_TYPE_INT_IDX +CREATE INDEX "TBL_SERVICE_TYPE_INT_IDX" ON "TBL_SERVICE" ("TYPE_INTERVENANT_CODE"); - ID, - FORMULE_RESULTAT_ID, - SERVICE_REFERENTIEL_ID, - SERVICE_REFERENTIEL, - HEURES_COMPL_REFERENTIEL, - TOTAL, - TO_DELETE +-- TBL_SERVICE__UN_IDX +CREATE UNIQUE INDEX "TBL_SERVICE__UN_IDX" ON "TBL_SERVICE" ("SERVICE_ID", "TYPE_VOLUME_HORAIRE_ID", "TO_DELETE"); - ) VALUES ( +-- TBL_VALIDATION_ENSEIGNEMENT_PK +CREATE UNIQUE INDEX "TBL_VALIDATION_ENSEIGNEMENT_PK" ON "TBL_VALIDATION_ENSEIGNEMENT" ("ID"); - FORMULE_RESULTAT_SERVIC_ID_SEQ.NEXTVAL, - fr.formule_resultat_id, - fr.service_referentiel_id, - ROUND( fr.service_referentiel, arrondi ), - ROUND( fr.heures_compl_referentiel, arrondi ), - fr.total, - 0 +-- TBL_VALIDATION_ENSEIGNEMENT_UN +CREATE UNIQUE INDEX "TBL_VALIDATION_ENSEIGNEMENT_UN" ON "TBL_VALIDATION_ENSEIGNEMENT" ("INTERVENANT_ID", "STRUCTURE_ID", "TYPE_VOLUME_HORAIRE_ID", "SERVICE_ID", "VOLUME_HORAIRE_ID", "VALIDATION_ID", "TO_DELETE"); - ); +-- TBL_VALIDATION_REFERENTIEL_PK +CREATE UNIQUE INDEX "TBL_VALIDATION_REFERENTIEL_PK" ON "TBL_VALIDATION_REFERENTIEL" ("ID"); - SELECT id INTO id FROM formule_resultat_service_ref tfr WHERE - tfr.formule_resultat_id = fr.formule_resultat_id - AND tfr.service_referentiel_id = fr.service_referentiel_id; +-- TBL_VALIDATION_REFERENTIEL__UN +CREATE UNIQUE INDEX "TBL_VALIDATION_REFERENTIEL__UN" ON "TBL_VALIDATION_REFERENTIEL" ("INTERVENANT_ID", "STRUCTURE_ID", "TYPE_VOLUME_HORAIRE_ID", "SERVICE_REFERENTIEL_ID", "VOLUME_HORAIRE_REF_ID", "VALIDATION_ID", "TO_DELETE"); - RETURN id; - END; +-- TBL_WORKFLOW_ANNEE_FK_IDX +CREATE INDEX "TBL_WORKFLOW_ANNEE_FK_IDX" ON "TBL_WORKFLOW" ("ANNEE_ID"); +-- TBL_WORKFLOW_EFK_IDX +CREATE INDEX "TBL_WORKFLOW_EFK_IDX" ON "TBL_WORKFLOW" ("ETAPE_ID"); - FUNCTION ENREGISTRER_RESULTAT_VH_REF( fvh formule_resultat_vh_ref%rowtype ) RETURN NUMERIC IS - id NUMERIC; - BEGIN - MERGE INTO formule_resultat_vh_ref tfvh USING dual ON ( +-- TBL_WORKFLOW_ETAPE_IDX +CREATE INDEX "TBL_WORKFLOW_ETAPE_IDX" ON "TBL_WORKFLOW" ("ETAPE_CODE"); - tfvh.formule_resultat_id = fvh.formule_resultat_id - AND tfvh.volume_horaire_ref_id = fvh.volume_horaire_ref_id +-- TBL_WORKFLOW_IFK_IDX +CREATE INDEX "TBL_WORKFLOW_IFK_IDX" ON "TBL_WORKFLOW" ("INTERVENANT_ID"); - ) WHEN MATCHED THEN UPDATE SET +-- TBL_WORKFLOW_PK_IDX +CREATE UNIQUE INDEX "TBL_WORKFLOW_PK_IDX" ON "TBL_WORKFLOW" ("ID"); - service_referentiel = ROUND( fvh.service_referentiel, arrondi ), - heures_compl_referentiel = ROUND( fvh.heures_compl_referentiel, arrondi ), - total = fvh.total, - TO_DELETE = 0 +-- TBL_WORKFLOW_SFK_IDX +CREATE INDEX "TBL_WORKFLOW_SFK_IDX" ON "TBL_WORKFLOW" ("STRUCTURE_ID"); - WHEN NOT MATCHED THEN INSERT ( +-- TBL_WORKFLOW_TINTERV_FK_IDX +CREATE INDEX "TBL_WORKFLOW_TINTERV_FK_IDX" ON "TBL_WORKFLOW" ("TYPE_INTERVENANT_ID"); - ID, - FORMULE_RESULTAT_ID, - VOLUME_HORAIRE_REF_ID, - SERVICE_REFERENTIEL, - HEURES_COMPL_REFERENTIEL, - TOTAL, - TO_DELETE +-- TBL_WORKFLOW_TYPE_INT_IDX +CREATE INDEX "TBL_WORKFLOW_TYPE_INT_IDX" ON "TBL_WORKFLOW" ("TYPE_INTERVENANT_CODE"); - ) VALUES ( +-- TD_TYPE_RESSOURCE_FK_IDX +CREATE INDEX "TD_TYPE_RESSOURCE_FK_IDX" ON "TYPE_DOTATION" ("TYPE_RESSOURCE_ID"); - FORMULE_RESULTAT_VH_ID_SEQ.NEXTVAL, - fvh.formule_resultat_id, - fvh.volume_horaire_ref_id, - ROUND( fvh.service_referentiel, arrondi ), - ROUND( fvh.heures_compl_referentiel, arrondi ), - fvh.total, - 0 +-- TEST_BUFFER_PK +CREATE UNIQUE INDEX "TEST_BUFFER_PK" ON "TEST_BUFFER" ("ID"); - ); +-- TIEP_EP_FK_IDX +CREATE INDEX "TIEP_EP_FK_IDX" ON "TYPE_INTERVENTION_EP" ("ELEMENT_PEDAGOGIQUE_ID"); - SELECT id INTO id FROM formule_resultat_vh_ref tfvh WHERE - tfvh.formule_resultat_id = fvh.formule_resultat_id - AND tfvh.volume_horaire_ref_id = fvh.volume_horaire_ref_id; - RETURN id; - END; +-- TIEP_SOURCE_FK_IDX +CREATE INDEX "TIEP_SOURCE_FK_IDX" ON "TYPE_INTERVENTION_EP" ("SOURCE_ID"); +-- TIEP_TYPE_INTERVENTION_FK_IDX +CREATE INDEX "TIEP_TYPE_INTERVENTION_FK_IDX" ON "TYPE_INTERVENTION_EP" ("TYPE_INTERVENTION_ID"); - PROCEDURE POPULATE_INTERVENANT( INTERVENANT_ID NUMERIC, d_intervenant OUT t_intervenant ) IS - BEGIN - SELECT - structure_id, - annee_id, - heures_service_statutaire, - depassement_service_du_sans_hc - INTO - d_intervenant.structure_id, - d_intervenant.annee_id, - d_intervenant.heures_service_statutaire, - d_intervenant.depassement_service_du_sans_hc - FROM - v_formule_intervenant fi - WHERE - fi.id = POPULATE_INTERVENANT.INTERVENANT_ID; +-- TIS_ANNEE_DEBUT_FK_IDX +CREATE INDEX "TIS_ANNEE_DEBUT_FK_IDX" ON "TYPE_INTERVENTION_STRUCTURE" ("ANNEE_DEBUT_ID"); - SELECT - NVL( SUM(heures), 0), - NVL( SUM(heures_decharge), 0) - INTO - d_intervenant.heures_service_modifie, - d_intervenant.heures_decharge - FROM - v_formule_service_modifie fsm - WHERE - fsm.intervenant_id = POPULATE_INTERVENANT.INTERVENANT_ID; +-- TIS_ANNEE_FIN_FK_IDX +CREATE INDEX "TIS_ANNEE_FIN_FK_IDX" ON "TYPE_INTERVENTION_STRUCTURE" ("ANNEE_FIN_ID"); - EXCEPTION WHEN NO_DATA_FOUND THEN - d_intervenant.structure_id := null; - d_intervenant.annee_id := null; - d_intervenant.heures_service_statutaire := 0; - d_intervenant.depassement_service_du_sans_hc := 0; - d_intervenant.heures_service_modifie := 0; - d_intervenant.heures_decharge := 0; - END; +-- TIS_HCFK_IDX +CREATE INDEX "TIS_HCFK_IDX" ON "TYPE_INTERVENTION_STRUCTURE" ("HISTO_CREATEUR_ID"); +-- TIS_HDFK_IDX +CREATE INDEX "TIS_HDFK_IDX" ON "TYPE_INTERVENTION_STRUCTURE" ("HISTO_DESTRUCTEUR_ID"); - PROCEDURE POPULATE_SERVICE_REF( INTERVENANT_ID NUMERIC, d_service_ref OUT t_lst_service_ref ) IS - i PLS_INTEGER; - BEGIN - d_service_ref.delete; +-- TIS_HMFK_IDX +CREATE INDEX "TIS_HMFK_IDX" ON "TYPE_INTERVENTION_STRUCTURE" ("HISTO_MODIFICATEUR_ID"); - FOR d IN ( - SELECT - fr.id, - fr.structure_id - FROM - v_formule_service_ref fr - WHERE - fr.intervenant_id = POPULATE_SERVICE_REF.INTERVENANT_ID - ) LOOP - d_service_ref( d.id ).id := d.id; - d_service_ref( d.id ).structure_id := d.structure_id; - END LOOP; - END; +-- TIS_STRUCTURE_FK_IDX +CREATE INDEX "TIS_STRUCTURE_FK_IDX" ON "TYPE_INTERVENTION_STRUCTURE" ("STRUCTURE_ID"); +-- TIS_TYPE_INTERVENTION_FK_IDX +CREATE INDEX "TIS_TYPE_INTERVENTION_FK_IDX" ON "TYPE_INTERVENTION_STRUCTURE" ("TYPE_INTERVENTION_ID"); - PROCEDURE POPULATE_SERVICE( INTERVENANT_ID NUMERIC, d_service OUT t_lst_service ) IS - BEGIN - d_service.delete; +-- TME_ELEMENT_PEDAGOGIQUE_FK_IDX +CREATE INDEX "TME_ELEMENT_PEDAGOGIQUE_FK_IDX" ON "TYPE_MODULATEUR_EP" ("ELEMENT_PEDAGOGIQUE_ID"); - FOR d IN ( - SELECT - id, - taux_fi, - taux_fa, - taux_fc, - structure_aff_id, - structure_ens_id, - ponderation_service_du, - ponderation_service_compl - FROM - v_formule_service fs - WHERE - fs.intervenant_id = POPULATE_SERVICE.INTERVENANT_ID - ) LOOP - d_service( d.id ).id := d.id; - d_service( d.id ).taux_fi := d.taux_fi; - d_service( d.id ).taux_fa := d.taux_fa; - d_service( d.id ).taux_fc := d.taux_fc; - d_service( d.id ).ponderation_service_du := d.ponderation_service_du; - d_service( d.id ).ponderation_service_compl := d.ponderation_service_compl; - d_service( d.id ).structure_aff_id := d.structure_aff_id; - d_service( d.id ).structure_ens_id := d.structure_ens_id; - END LOOP; - END; +-- TME_SOURCE_FK_IDX +CREATE INDEX "TME_SOURCE_FK_IDX" ON "TYPE_MODULATEUR_EP" ("SOURCE_ID"); - PROCEDURE POPULATE_VOLUME_HORAIRE_REF( INTERVENANT_ID NUMERIC, d_volume_horaire_ref OUT t_lst_volume_horaire_ref ) IS - BEGIN - d_volume_horaire_ref.delete; +-- TME_TYPE_MODULATEUR_FK_IDX +CREATE INDEX "TME_TYPE_MODULATEUR_FK_IDX" ON "TYPE_MODULATEUR_EP" ("TYPE_MODULATEUR_ID"); + +-- TMS_ANNEE_DEBUT_FK_IDX +CREATE INDEX "TMS_ANNEE_DEBUT_FK_IDX" ON "TYPE_MODULATEUR_STRUCTURE" ("ANNEE_DEBUT_ID"); + +-- TMS_ANNEE_FIN_FK_IDX +CREATE INDEX "TMS_ANNEE_FIN_FK_IDX" ON "TYPE_MODULATEUR_STRUCTURE" ("ANNEE_FIN_ID"); + +-- TMS_HCFK_IDX +CREATE INDEX "TMS_HCFK_IDX" ON "TYPE_MODULATEUR_STRUCTURE" ("HISTO_CREATEUR_ID"); + +-- TMS_HDFK_IDX +CREATE INDEX "TMS_HDFK_IDX" ON "TYPE_MODULATEUR_STRUCTURE" ("HISTO_DESTRUCTEUR_ID"); + +-- TMS_HMFK_IDX +CREATE INDEX "TMS_HMFK_IDX" ON "TYPE_MODULATEUR_STRUCTURE" ("HISTO_MODIFICATEUR_ID"); - FOR d IN ( - SELECT - id, - service_referentiel_id, - heures, - fvh.type_volume_horaire_id, - fvh.etat_volume_horaire_id, - fvh.etat_volume_horaire_ordre - FROM - v_formule_volume_horaire_ref fvh - WHERE - fvh.intervenant_id = POPULATE_VOLUME_HORAIRE_REF.INTERVENANT_ID - ) LOOP - d_volume_horaire_ref( d.id ).id := d.id; - d_volume_horaire_ref( d.id ).service_referentiel_id := d.service_referentiel_id; - d_volume_horaire_ref( d.id ).heures := d.heures; - d_volume_horaire_ref( d.id ).type_volume_horaire_id := d.type_volume_horaire_id; - d_volume_horaire_ref( d.id ).etat_volume_horaire_id := d.etat_volume_horaire_id; - d_volume_horaire_ref( d.id ).etat_volume_horaire_ordre := d.etat_volume_horaire_ordre; - END LOOP; - END; +-- TMS_STRUCTURE_FK_IDX +CREATE INDEX "TMS_STRUCTURE_FK_IDX" ON "TYPE_MODULATEUR_STRUCTURE" ("STRUCTURE_ID"); - PROCEDURE POPULATE_VOLUME_HORAIRE( INTERVENANT_ID NUMERIC, d_volume_horaire OUT t_lst_volume_horaire ) IS - BEGIN - d_volume_horaire.delete; +-- TMS_TYPE_MODUL_FK_IDX +CREATE INDEX "TMS_TYPE_MODUL_FK_IDX" ON "TYPE_MODULATEUR_STRUCTURE" ("TYPE_MODULATEUR_ID"); - FOR d IN ( - SELECT - id, - service_id, - heures, - taux_service_du, - taux_service_compl, - fvh.type_volume_horaire_id, - fvh.etat_volume_horaire_id, - fvh.etat_volume_horaire_ordre - FROM - v_formule_volume_horaire fvh - WHERE - fvh.intervenant_id = POPULATE_VOLUME_HORAIRE.INTERVENANT_ID - ) LOOP - d_volume_horaire( d.id ).id := d.id; - d_volume_horaire( d.id ).service_id := d.service_id; - d_volume_horaire( d.id ).heures := d.heures; - d_volume_horaire( d.id ).taux_service_du := d.taux_service_du; - d_volume_horaire( d.id ).taux_service_compl := d.taux_service_compl; - d_volume_horaire( d.id ).type_volume_horaire_id := d.type_volume_horaire_id; - d_volume_horaire( d.id ).etat_volume_horaire_id := d.etat_volume_horaire_id; - d_volume_horaire( d.id ).etat_volume_horaire_ordre := d.etat_volume_horaire_ordre; - END LOOP; - END; +-- TPJS_ANNEE_DEBUT_IDX +CREATE INDEX "TPJS_ANNEE_DEBUT_IDX" ON "TYPE_PIECE_JOINTE_STATUT" ("ANNEE_DEBUT_ID"); +-- TPJS_ANNEE_FIN_IDX +CREATE INDEX "TPJS_ANNEE_FIN_IDX" ON "TYPE_PIECE_JOINTE_STATUT" ("ANNEE_FIN_ID"); - PROCEDURE POPULATE_TYPE_ETAT_VH( d_volume_horaire t_lst_volume_horaire, d_volume_horaire_ref t_lst_volume_horaire_ref, d_type_etat_vh OUT t_lst_type_etat_vh ) IS - TYPE t_ordres IS TABLE OF NUMERIC INDEX BY PLS_INTEGER; +-- TPJS_HCFK_IDX +CREATE INDEX "TPJS_HCFK_IDX" ON "TYPE_PIECE_JOINTE_STATUT" ("HISTO_CREATEUR_ID"); - ordres_found t_ordres; - ordres_exists t_ordres; - type_volume_horaire_id PLS_INTEGER; - etat_volume_horaire_ordre PLS_INTEGER; - id PLS_INTEGER; - BEGIN - d_type_etat_vh.delete; +-- TPJS_HDFK_IDX +CREATE INDEX "TPJS_HDFK_IDX" ON "TYPE_PIECE_JOINTE_STATUT" ("HISTO_DESTRUCTEUR_ID"); - -- récupération des ID et ordres de volumes horaires - FOR evh IN ( - SELECT id, ordre - FROM etat_volume_horaire evh - ORDER BY ordre - ) LOOP - ordres_exists( evh.ordre ) := evh.id; - END LOOP; +-- TPJS_HMFK_IDX +CREATE INDEX "TPJS_HMFK_IDX" ON "TYPE_PIECE_JOINTE_STATUT" ("HISTO_MODIFICATEUR_ID"); - -- récupération des ordres maximum par type d'intervention - id := d_volume_horaire.FIRST; - LOOP EXIT WHEN id IS NULL; - IF NOT ordres_found.EXISTS(d_volume_horaire(id).type_volume_horaire_id) THEN - ordres_found( d_volume_horaire(id).type_volume_horaire_id ) := d_volume_horaire(id).etat_volume_horaire_ordre; - ELSIF ordres_found( d_volume_horaire(id).type_volume_horaire_id ) < d_volume_horaire(id).etat_volume_horaire_ordre THEN - ordres_found( d_volume_horaire(id).type_volume_horaire_id ) := d_volume_horaire(id).etat_volume_horaire_ordre; - END IF; - id := d_volume_horaire.NEXT(id); - END LOOP; +-- TPJS_STATUT_INTERVENANT_FK_IDX +CREATE INDEX "TPJS_STATUT_INTERVENANT_FK_IDX" ON "TYPE_PIECE_JOINTE_STATUT" ("STATUT_INTERVENANT_ID"); - id := d_volume_horaire_ref.FIRST; - LOOP EXIT WHEN id IS NULL; - IF NOT ordres_found.EXISTS(d_volume_horaire_ref(id).type_volume_horaire_id) THEN - ordres_found( d_volume_horaire_ref(id).type_volume_horaire_id ) := d_volume_horaire_ref(id).etat_volume_horaire_ordre; - ELSIF ordres_found( d_volume_horaire_ref(id).type_volume_horaire_id ) < d_volume_horaire_ref(id).etat_volume_horaire_ordre THEN - ordres_found( d_volume_horaire_ref(id).type_volume_horaire_id ) := d_volume_horaire_ref(id).etat_volume_horaire_ordre; - END IF; - id := d_volume_horaire_ref.NEXT(id); - END LOOP; +-- TPJS_TYPE_PIECE_JOINTE_FK_IDX +CREATE INDEX "TPJS_TYPE_PIECE_JOINTE_FK_IDX" ON "TYPE_PIECE_JOINTE_STATUT" ("TYPE_PIECE_JOINTE_ID"); - -- peuplement des t_lst_type_etat_vh - type_volume_horaire_id := ordres_found.FIRST; - LOOP EXIT WHEN type_volume_horaire_id IS NULL; - etat_volume_horaire_ordre := ordres_exists.FIRST; - LOOP EXIT WHEN etat_volume_horaire_ordre IS NULL; - IF etat_volume_horaire_ordre <= ordres_found(type_volume_horaire_id) THEN - d_type_etat_vh( type_volume_horaire_id + 100000 * etat_volume_horaire_ordre ).type_volume_horaire_id := type_volume_horaire_id; - d_type_etat_vh( type_volume_horaire_id + 100000 * etat_volume_horaire_ordre ).etat_volume_horaire_id := ordres_exists( etat_volume_horaire_ordre ); - END IF; - etat_volume_horaire_ordre := ordres_exists.NEXT(etat_volume_horaire_ordre); - END LOOP; +-- TVE_ANNEE_FK_IDX +CREATE INDEX "TVE_ANNEE_FK_IDX" ON "TBL_VALIDATION_ENSEIGNEMENT" ("ANNEE_ID"); - type_volume_horaire_id := ordres_found.NEXT(type_volume_horaire_id); - END LOOP; +-- TVE_INTERVENANT_FK_IDX +CREATE INDEX "TVE_INTERVENANT_FK_IDX" ON "TBL_VALIDATION_ENSEIGNEMENT" ("INTERVENANT_ID"); - END; +-- TVE_SERVICE_FK_IDX +CREATE INDEX "TVE_SERVICE_FK_IDX" ON "TBL_VALIDATION_ENSEIGNEMENT" ("SERVICE_ID"); +-- TVE_STRUCTURE_FK_IDX +CREATE INDEX "TVE_STRUCTURE_FK_IDX" ON "TBL_VALIDATION_ENSEIGNEMENT" ("STRUCTURE_ID"); - PROCEDURE POPULATE( INTERVENANT_ID NUMERIC ) IS - BEGIN - OSE_FORMULE.INTERVENANT_ID := POPULATE.INTERVENANT_ID; +-- TVE_TYPE_VOLUME_HORAIRE_FK_IDX +CREATE INDEX "TVE_TYPE_VOLUME_HORAIRE_FK_IDX" ON "TBL_VALIDATION_ENSEIGNEMENT" ("TYPE_VOLUME_HORAIRE_ID"); - POPULATE_INTERVENANT ( INTERVENANT_ID, d_intervenant ); - IF d_intervenant.heures_service_statutaire IS NOT NULL THEN -- sinon rien n'est à faire!! - POPULATE_SERVICE_REF ( INTERVENANT_ID, d_service_ref ); - POPULATE_SERVICE ( INTERVENANT_ID, d_service ); - POPULATE_VOLUME_HORAIRE_REF ( INTERVENANT_ID, d_all_volume_horaire_ref ); - POPULATE_VOLUME_HORAIRE ( INTERVENANT_ID, d_all_volume_horaire ); - POPULATE_TYPE_ETAT_VH ( d_all_volume_horaire, d_all_volume_horaire_ref, d_type_etat_vh ); - END IF; - END; +-- TVE_VALIDATION_FK_IDX +CREATE INDEX "TVE_VALIDATION_FK_IDX" ON "TBL_VALIDATION_ENSEIGNEMENT" ("VALIDATION_ID"); +-- TVE_VOLUME_HORAIRE_FK_IDX +CREATE INDEX "TVE_VOLUME_HORAIRE_FK_IDX" ON "TBL_VALIDATION_ENSEIGNEMENT" ("VOLUME_HORAIRE_ID"); - PROCEDURE POPULATE_FILTER( TYPE_VOLUME_HORAIRE_ID NUMERIC, ETAT_VOLUME_HORAIRE_ID NUMERIC ) IS - EVH_ORDRE NUMERIC; - id PLS_INTEGER; - BEGIN - d_volume_horaire.delete; - d_volume_horaire_ref.delete; +-- TVR_ANNEE_FK_IDX +CREATE INDEX "TVR_ANNEE_FK_IDX" ON "TBL_VALIDATION_REFERENTIEL" ("ANNEE_ID"); - SELECT ordre INTO EVH_ORDRE FROM etat_volume_horaire WHERE ID = ETAT_VOLUME_HORAIRE_ID; +-- TVR_INTERVENANT_FK_IDX +CREATE INDEX "TVR_INTERVENANT_FK_IDX" ON "TBL_VALIDATION_REFERENTIEL" ("INTERVENANT_ID"); - id := d_all_volume_horaire.FIRST; - LOOP EXIT WHEN id IS NULL; - IF - d_all_volume_horaire(id).type_volume_horaire_id = TYPE_VOLUME_HORAIRE_ID - AND d_all_volume_horaire(id).etat_volume_horaire_ordre >= EVH_ORDRE - THEN - d_volume_horaire(id) := d_all_volume_horaire(id); - END IF; - id := d_all_volume_horaire.NEXT(id); - END LOOP; +-- TVR_SERVICE_REFERENTIEL_FK_IDX +CREATE INDEX "TVR_SERVICE_REFERENTIEL_FK_IDX" ON "TBL_VALIDATION_REFERENTIEL" ("SERVICE_REFERENTIEL_ID"); - id := d_all_volume_horaire_ref.FIRST; - LOOP EXIT WHEN id IS NULL; - IF - d_all_volume_horaire_ref(id).type_volume_horaire_id = TYPE_VOLUME_HORAIRE_ID - AND d_all_volume_horaire_ref(id).etat_volume_horaire_ordre >= EVH_ORDRE - THEN - d_volume_horaire_ref(id) := d_all_volume_horaire_ref(id); - END IF; - id := d_all_volume_horaire_ref.NEXT(id); - END LOOP; - END; +-- TVR_STRUCTURE_FK_IDX +CREATE INDEX "TVR_STRUCTURE_FK_IDX" ON "TBL_VALIDATION_REFERENTIEL" ("STRUCTURE_ID"); +-- TVR_TYPE_VOLUME_HORAIRE_FK_IDX +CREATE INDEX "TVR_TYPE_VOLUME_HORAIRE_FK_IDX" ON "TBL_VALIDATION_REFERENTIEL" ("TYPE_VOLUME_HORAIRE_ID"); - PROCEDURE INIT_RESULTAT ( INTERVENANT_ID NUMERIC, TYPE_VOLUME_HORAIRE_ID NUMERIC, ETAT_VOLUME_HORAIRE_ID NUMERIC ) IS - BEGIN - d_resultat.intervenant_id := INTERVENANT_ID; - d_resultat.type_volume_horaire_id := TYPE_VOLUME_HORAIRE_ID; - d_resultat.etat_volume_horaire_id := ETAT_VOLUME_HORAIRE_ID; - d_resultat.service_du := 0; - d_resultat.solde := 0; - d_resultat.sous_service := 0; - d_resultat.heures_compl := 0; - d_resultat.volume_horaire.delete; - d_resultat.volume_horaire_ref.delete; - END; +-- TVR_VALIDATION_FK_IDX +CREATE INDEX "TVR_VALIDATION_FK_IDX" ON "TBL_VALIDATION_REFERENTIEL" ("VALIDATION_ID"); +-- TVR_VOLUME_HORAIRE_REF_FK_IDX +CREATE INDEX "TVR_VOLUME_HORAIRE_REF_FK_IDX" ON "TBL_VALIDATION_REFERENTIEL" ("VOLUME_HORAIRE_REF_ID"); - PROCEDURE CALC_RESULTAT IS - function_name VARCHAR2(30); - package_name VARCHAR2(30); - BEGIN - package_name := OSE_PARAMETRE.GET_FORMULE_PACKAGE_NAME; - function_name := OSE_PARAMETRE.GET_FORMULE_FUNCTION_NAME; +-- TYPE_AGREMENT_HCFK_IDX +CREATE INDEX "TYPE_AGREMENT_HCFK_IDX" ON "TYPE_AGREMENT" ("HISTO_CREATEUR_ID"); - EXECUTE IMMEDIATE - 'BEGIN ' || package_name || '.' || function_name || '( :1, :2, :3 ); END;' - USING - d_resultat.intervenant_id, d_resultat.type_volume_horaire_id, d_resultat.etat_volume_horaire_id; +-- TYPE_AGREMENT_HDFK_IDX +CREATE INDEX "TYPE_AGREMENT_HDFK_IDX" ON "TYPE_AGREMENT" ("HISTO_DESTRUCTEUR_ID"); - END; +-- TYPE_AGREMENT_HMFK_IDX +CREATE INDEX "TYPE_AGREMENT_HMFK_IDX" ON "TYPE_AGREMENT" ("HISTO_MODIFICATEUR_ID"); +-- TYPE_AGREMENT_PK +CREATE UNIQUE INDEX "TYPE_AGREMENT_PK" ON "TYPE_AGREMENT" ("ID"); - PROCEDURE SAVE_RESULTAT IS - res t_resultat_hetd; - res_ref t_resultat_hetd_ref; - res_service t_lst_resultat_hetd; - res_service_ref t_lst_resultat_hetd_ref; - id PLS_INTEGER; - sid PLS_INTEGER; - fr formule_resultat%rowtype; - frs formule_resultat_service%rowtype; - frsr formule_resultat_service_ref%rowtype; - frvh formule_resultat_vh%rowtype; - frvhr formule_resultat_vh_ref%rowtype; - dev_null PLS_INTEGER; - BEGIN - -- Calcul des données pour les services et le résultat global - fr.service_fi := 0; - fr.service_fa := 0; - fr.service_fc := 0; - fr.service_referentiel := 0; - fr.heures_compl_fi := 0; - fr.heures_compl_fa := 0; - fr.heures_compl_fc := 0; - fr.heures_compl_fc_majorees := 0; - fr.heures_compl_referentiel := 0; +-- TYPE_AGREMENT_STATUT_HCFK_IDX +CREATE INDEX "TYPE_AGREMENT_STATUT_HCFK_IDX" ON "TYPE_AGREMENT_STATUT" ("HISTO_CREATEUR_ID"); - id := d_resultat.volume_horaire.FIRST; - LOOP EXIT WHEN id IS NULL; - sid := d_volume_horaire(id).service_id; - IF NOT res_service.exists(sid) THEN res_service(sid).service_fi := 0; END IF; +-- TYPE_AGREMENT_STATUT_HDFK_IDX +CREATE INDEX "TYPE_AGREMENT_STATUT_HDFK_IDX" ON "TYPE_AGREMENT_STATUT" ("HISTO_DESTRUCTEUR_ID"); - res_service(sid).service_fi := res_service(sid).service_fi + d_resultat.volume_horaire(id).service_fi; - res_service(sid).service_fa := res_service(sid).service_fa + d_resultat.volume_horaire(id).service_fa; - res_service(sid).service_fc := res_service(sid).service_fc + d_resultat.volume_horaire(id).service_fc; - res_service(sid).heures_compl_fi := res_service(sid).heures_compl_fi + d_resultat.volume_horaire(id).heures_compl_fi; - res_service(sid).heures_compl_fa := res_service(sid).heures_compl_fa + d_resultat.volume_horaire(id).heures_compl_fa; - res_service(sid).heures_compl_fc := res_service(sid).heures_compl_fc + d_resultat.volume_horaire(id).heures_compl_fc; - res_service(sid).heures_compl_fc_majorees := res_service(sid).heures_compl_fc_majorees + d_resultat.volume_horaire(id).heures_compl_fc_majorees; +-- TYPE_AGREMENT_STATUT_HMFK_IDX +CREATE INDEX "TYPE_AGREMENT_STATUT_HMFK_IDX" ON "TYPE_AGREMENT_STATUT" ("HISTO_MODIFICATEUR_ID"); - fr.service_fi := fr.service_fi + d_resultat.volume_horaire(id).service_fi; - fr.service_fa := fr.service_fa + d_resultat.volume_horaire(id).service_fa; - fr.service_fc := fr.service_fc + d_resultat.volume_horaire(id).service_fc; - fr.heures_compl_fi := fr.heures_compl_fi + d_resultat.volume_horaire(id).heures_compl_fi; - fr.heures_compl_fa := fr.heures_compl_fa + d_resultat.volume_horaire(id).heures_compl_fa; - fr.heures_compl_fc := fr.heures_compl_fc + d_resultat.volume_horaire(id).heures_compl_fc; - fr.heures_compl_fc_majorees := fr.heures_compl_fc_majorees + d_resultat.volume_horaire(id).heures_compl_fc_majorees; - id := d_resultat.volume_horaire.NEXT(id); - END LOOP; +-- TYPE_AGREMENT_STATUT_PK +CREATE UNIQUE INDEX "TYPE_AGREMENT_STATUT_PK" ON "TYPE_AGREMENT_STATUT" ("ID"); - id := d_resultat.volume_horaire_ref.FIRST; - LOOP EXIT WHEN id IS NULL; - sid := d_volume_horaire_ref(id).service_referentiel_id; - IF NOT res_service_ref.exists(sid) THEN res_service_ref(sid).service_referentiel := 0; END IF; +-- TYPE_AGREMENT_STATUT__UN +CREATE UNIQUE INDEX "TYPE_AGREMENT_STATUT__UN" ON "TYPE_AGREMENT_STATUT" ("TYPE_AGREMENT_ID", "STATUT_INTERVENANT_ID", "PREMIER_RECRUTEMENT"); - res_service_ref(sid).service_referentiel := res_service_ref(sid).service_referentiel + d_resultat.volume_horaire_ref(id).service_referentiel; - res_service_ref(sid).heures_compl_referentiel := res_service_ref(sid).heures_compl_referentiel + d_resultat.volume_horaire_ref(id).heures_compl_referentiel; +-- TYPE_AGREMENT__UN +CREATE UNIQUE INDEX "TYPE_AGREMENT__UN" ON "TYPE_AGREMENT" ("CODE"); - fr.service_referentiel := fr.service_referentiel + d_resultat.volume_horaire_ref(id).service_referentiel; - fr.heures_compl_referentiel := fr.heures_compl_referentiel + d_resultat.volume_horaire_ref(id).heures_compl_referentiel; - id := d_resultat.volume_horaire_ref.NEXT(id); - END LOOP; +-- TYPE_CONTRAT_HCFK_IDX +CREATE INDEX "TYPE_CONTRAT_HCFK_IDX" ON "TYPE_CONTRAT" ("HISTO_CREATEUR_ID"); - -- Sauvegarde du résultat global - fr.id := NULL; - fr.intervenant_id := d_resultat.intervenant_id; - fr.type_volume_horaire_id := d_resultat.type_volume_horaire_id; - fr.etat_volume_horaire_id := d_resultat.etat_volume_horaire_id; - fr.service_du := d_resultat.service_du; - fr.total := fr.service_fi - + fr.service_fa - + fr.service_fc - + fr.service_referentiel - + fr.heures_compl_fi - + fr.heures_compl_fa - + fr.heures_compl_fc - + fr.heures_compl_fc_majorees - + fr.heures_compl_referentiel; - fr.solde := d_resultat.solde; - fr.sous_service := d_resultat.sous_service; - fr.heures_compl := d_resultat.heures_compl; - fr.id := OSE_FORMULE.ENREGISTRER_RESULTAT( fr ); +-- TYPE_CONTRAT_HDFK_IDX +CREATE INDEX "TYPE_CONTRAT_HDFK_IDX" ON "TYPE_CONTRAT" ("HISTO_DESTRUCTEUR_ID"); - -- sauvegarde des services - id := res_service.FIRST; - LOOP EXIT WHEN id IS NULL; - frs.id := NULL; - frs.formule_resultat_id := fr.id; - frs.service_id := id; - frs.service_fi := res_service(id).service_fi; - frs.service_fa := res_service(id).service_fa; - frs.service_fc := res_service(id).service_fc; - frs.heures_compl_fi := res_service(id).heures_compl_fi; - frs.heures_compl_fa := res_service(id).heures_compl_fa; - frs.heures_compl_fc := res_service(id).heures_compl_fc; - frs.heures_compl_fc_majorees := res_service(id).heures_compl_fc_majorees; - frs.total := frs.service_fi - + frs.service_fa - + frs.service_fc - + frs.heures_compl_fi - + frs.heures_compl_fa - + frs.heures_compl_fc - + frs.heures_compl_fc_majorees; - dev_null := OSE_FORMULE.ENREGISTRER_RESULTAT_SERVICE( frs ); - id := res_service.NEXT(id); - END LOOP; +-- TYPE_CONTRAT_HMFK_IDX +CREATE INDEX "TYPE_CONTRAT_HMFK_IDX" ON "TYPE_CONTRAT" ("HISTO_MODIFICATEUR_ID"); + +-- TYPE_CONTRAT_PK +CREATE UNIQUE INDEX "TYPE_CONTRAT_PK" ON "TYPE_CONTRAT" ("ID"); - -- sauvegarde des services référentiels - id := res_service_ref.FIRST; - LOOP EXIT WHEN id IS NULL; - frsr.id := NULL; - frsr.formule_resultat_id := fr.id; - frsr.service_referentiel_id := id; - frsr.service_referentiel := res_service_ref(id).service_referentiel; - frsr.heures_compl_referentiel := res_service_ref(id).heures_compl_referentiel; - frsr.total := res_service_ref(id).service_referentiel - + res_service_ref(id).heures_compl_referentiel; - dev_null := OSE_FORMULE.ENREGISTRER_RESULTAT_SERV_REF( frsr ); - id := res_service_ref.NEXT(id); - END LOOP; +-- TYPE_DOTATION_HCFK_IDX +CREATE INDEX "TYPE_DOTATION_HCFK_IDX" ON "TYPE_DOTATION" ("HISTO_CREATEUR_ID"); - -- sauvegarde des volumes horaires - id := d_resultat.volume_horaire.FIRST; - LOOP EXIT WHEN id IS NULL; - frvh.id := NULL; - frvh.formule_resultat_id := fr.id; - frvh.volume_horaire_id := id; - frvh.service_fi := d_resultat.volume_horaire(id).service_fi; - frvh.service_fa := d_resultat.volume_horaire(id).service_fa; - frvh.service_fc := d_resultat.volume_horaire(id).service_fc; - frvh.heures_compl_fi := d_resultat.volume_horaire(id).heures_compl_fi; - frvh.heures_compl_fa := d_resultat.volume_horaire(id).heures_compl_fa; - frvh.heures_compl_fc := d_resultat.volume_horaire(id).heures_compl_fc; - frvh.heures_compl_fc_majorees := d_resultat.volume_horaire(id).heures_compl_fc_majorees; - frvh.total := frvh.service_fi - + frvh.service_fa - + frvh.service_fc - + frvh.heures_compl_fi - + frvh.heures_compl_fa - + frvh.heures_compl_fc - + frvh.heures_compl_fc_majorees; - dev_null := OSE_FORMULE.ENREGISTRER_RESULTAT_VH( frvh ); - id := d_resultat.volume_horaire.NEXT(id); - END LOOP; +-- TYPE_DOTATION_HDFK_IDX +CREATE INDEX "TYPE_DOTATION_HDFK_IDX" ON "TYPE_DOTATION" ("HISTO_DESTRUCTEUR_ID"); - -- sauvegarde des volumes horaires référentiels - id := d_resultat.volume_horaire_ref.FIRST; - LOOP EXIT WHEN id IS NULL; - frvhr.id := NULL; - frvhr.formule_resultat_id := fr.id; - frvhr.volume_horaire_ref_id := id; - frvhr.service_referentiel := d_resultat.volume_horaire_ref(id).service_referentiel; - frvhr.heures_compl_referentiel := d_resultat.volume_horaire_ref(id).heures_compl_referentiel; - frvhr.total := frvhr.service_referentiel - + frvhr.heures_compl_referentiel; - dev_null := OSE_FORMULE.ENREGISTRER_RESULTAT_VH_REF( frvhr ); - id := d_resultat.volume_horaire_ref.NEXT(id); - END LOOP; - END; +-- TYPE_DOTATION_HMFK_IDX +CREATE INDEX "TYPE_DOTATION_HMFK_IDX" ON "TYPE_DOTATION" ("HISTO_MODIFICATEUR_ID"); - PROCEDURE DEBUG_INTERVENANT IS - BEGIN - ose_test.echo('d_intervenant'); - ose_test.echo(' .structure_id = ' || d_intervenant.structure_id || ' (' || ose_test.get_structure_by_id(d_intervenant.structure_id).libelle_court || ')' ); - ose_test.echo(' .heures_service_statutaire = ' || d_intervenant.heures_service_statutaire ); - ose_test.echo(' .heures_service_modifie = ' || d_intervenant.heures_service_modifie ); - ose_test.echo(' .depassement_service_du_sans_hc = ' || d_intervenant.depassement_service_du_sans_hc ); - ose_test.echo(''); - END; +-- TYPE_DOTATION_PK +CREATE UNIQUE INDEX "TYPE_DOTATION_PK" ON "TYPE_DOTATION" ("ID"); - PROCEDURE DEBUG_SERVICE( SERVICE_ID PLS_INTEGER ) IS - BEGIN - ose_test.echo('d_service(' || SERVICE_ID || ')' ); - ose_test.echo(' .taux_fi = ' || d_service(SERVICE_ID).taux_fi ); - ose_test.echo(' .taux_fa = ' || d_service(SERVICE_ID).taux_fa ); - ose_test.echo(' .taux_fc = ' || d_service(SERVICE_ID).taux_fc ); - ose_test.echo(' .ponderation_service_du = ' || d_service(SERVICE_ID).ponderation_service_du ); - ose_test.echo(' .ponderation_service_compl = ' || d_service(SERVICE_ID).ponderation_service_compl ); - ose_test.echo(' .structure_aff_id = ' || d_service(SERVICE_ID).structure_aff_id || ' (' || ose_test.get_structure_by_id(d_service(SERVICE_ID).structure_aff_id).libelle_court || ')' ); - ose_test.echo(' .structure_ens_id = ' || d_service(SERVICE_ID).structure_ens_id || ' (' || CASE WHEN d_service(SERVICE_ID).structure_ens_id IS NOT NULL THEN ose_test.get_structure_by_id(d_service(SERVICE_ID).structure_ens_id).libelle_court ELSE 'null' END || ')' ); - ose_test.echo(''); - END; +-- TYPE_DOTATION_SOURCE_FK_IDX +CREATE INDEX "TYPE_DOTATION_SOURCE_FK_IDX" ON "TYPE_DOTATION" ("SOURCE_ID"); - PROCEDURE DEBUG_SERVICE_REF( SERVICE_REF_ID PLS_INTEGER ) IS - BEGIN - ose_test.echo('d_service_ref(' || SERVICE_REF_ID || ')' ); - ose_test.echo(' .structure_id = ' || d_service_ref(SERVICE_REF_ID).structure_id || ' (' || ose_test.get_structure_by_id(d_service_ref(SERVICE_REF_ID).structure_id).libelle_court || ')' ); - ose_test.echo(''); - END; +-- TYPE_FORMATION_GROUPE_FK_IDX +CREATE INDEX "TYPE_FORMATION_GROUPE_FK_IDX" ON "TYPE_FORMATION" ("GROUPE_ID"); - PROCEDURE DEBUG_VOLUME_HORAIRE( VH_ID PLS_INTEGER ) IS - BEGIN - ose_test.echo('d_volume_horaire(' || VH_ID || ')' ); - ose_test.echo(' .service_id = ' || d_volume_horaire(VH_ID).service_id ); - ose_test.echo(' .type_volume_horaire_id = ' || d_volume_horaire(VH_ID).type_volume_horaire_id ); - ose_test.echo(' .etat_volume_horaire_id = ' || d_volume_horaire(VH_ID).etat_volume_horaire_id ); - ose_test.echo(' .etat_volume_horaire_ordre = ' || d_volume_horaire(VH_ID).etat_volume_horaire_ordre ); - ose_test.echo(' .heures = ' || d_volume_horaire(VH_ID).heures ); - ose_test.echo(' .taux_service_du = ' || d_volume_horaire(VH_ID).taux_service_du ); - ose_test.echo(' .taux_service_compl = ' || d_volume_horaire(VH_ID).taux_service_compl ); - ose_test.echo(''); - END; +-- TYPE_FORMATION_HCFK_IDX +CREATE INDEX "TYPE_FORMATION_HCFK_IDX" ON "TYPE_FORMATION" ("HISTO_CREATEUR_ID"); - PROCEDURE DEBUG_VOLUME_HORAIRE_REF( VH_REF_ID PLS_INTEGER ) IS - BEGIN - ose_test.echo('d_volume_horaire_ref(' || VH_REF_ID || ')' ); - ose_test.echo(' .service_referentiel_id = ' || d_volume_horaire_ref(VH_REF_ID).service_referentiel_id ); - ose_test.echo(' .type_volume_horaire_id = ' || d_volume_horaire_ref(VH_REF_ID).type_volume_horaire_id ); - ose_test.echo(' .etat_volume_horaire_id = ' || d_volume_horaire_ref(VH_REF_ID).etat_volume_horaire_id ); - ose_test.echo(' .etat_volume_horaire_ordre = ' || d_volume_horaire_ref(VH_REF_ID).etat_volume_horaire_ordre ); - ose_test.echo(' .heures = ' || d_volume_horaire_ref(VH_REF_ID).heures ); - ose_test.echo(''); - END; +-- TYPE_FORMATION_HDFK_IDX +CREATE INDEX "TYPE_FORMATION_HDFK_IDX" ON "TYPE_FORMATION" ("HISTO_DESTRUCTEUR_ID"); - PROCEDURE DEBUG_RESULTAT IS - BEGIN - ose_test.echo('d_resultat' ); - ose_test.echo(' .service_du = ' || d_resultat.service_du ); - ose_test.echo(' .solde = ' || d_resultat.solde ); - ose_test.echo(' .sous_service = ' || d_resultat.sous_service ); - ose_test.echo(' .heures_compl = ' || d_resultat.heures_compl ); - ose_test.echo(''); - END; +-- TYPE_FORMATION_HMFK_IDX +CREATE INDEX "TYPE_FORMATION_HMFK_IDX" ON "TYPE_FORMATION" ("HISTO_MODIFICATEUR_ID"); - PROCEDURE DEBUG_RESULTAT_VH( VH_ID PLS_INTEGER ) IS - BEGIN - ose_test.echo('d_resultat.volume_horaire(' || VH_ID || ')' ); - ose_test.echo(' .service_fi = ' || d_resultat.volume_horaire(VH_ID).service_fi ); - ose_test.echo(' .service_fa = ' || d_resultat.volume_horaire(VH_ID).service_fa ); - ose_test.echo(' .service_fc = ' || d_resultat.volume_horaire(VH_ID).service_fc ); - ose_test.echo(' .heures_compl_fi = ' || d_resultat.volume_horaire(VH_ID).heures_compl_fi ); - ose_test.echo(' .heures_compl_fa = ' || d_resultat.volume_horaire(VH_ID).heures_compl_fa ); - ose_test.echo(' .heures_compl_fc = ' || d_resultat.volume_horaire(VH_ID).heures_compl_fc ); - ose_test.echo(' .heures_compl_fc_majorees = ' || d_resultat.volume_horaire(VH_ID).heures_compl_fc_majorees ); - ose_test.echo(''); - END; +-- TYPE_FORMATION_PK +CREATE UNIQUE INDEX "TYPE_FORMATION_PK" ON "TYPE_FORMATION" ("ID"); - PROCEDURE DEBUG_RESULTAT_VH_REF( VH_REF_ID PLS_INTEGER ) IS - BEGIN - ose_test.echo('d_resultat.volume_horaire_ref(' || VH_REF_ID || ')' ); - ose_test.echo(' .service_referentiel = ' || d_resultat.volume_horaire_ref(VH_REF_ID).service_referentiel ); - ose_test.echo(' .heures_compl_referentiel = ' || d_resultat.volume_horaire_ref(VH_REF_ID).heures_compl_referentiel ); - ose_test.echo(''); - END; +-- TYPE_FORMATION_SOURCE_FK_IDX +CREATE INDEX "TYPE_FORMATION_SOURCE_FK_IDX" ON "TYPE_FORMATION" ("SOURCE_ID"); - PROCEDURE DEBUG_ALL( INTERVENANT_ID NUMERIC, TYPE_VOLUME_HORAIRE_ID NUMERIC, ETAT_VOLUME_HORAIRE_ID NUMERIC ) IS - id PLS_INTEGER; - i intervenant%rowtype; - a annee%rowtype; - tvh type_volume_horaire%rowtype; - evh etat_volume_horaire%rowtype; - BEGIN - IF GET_DEBUG_LEVEL >= 1 THEN - SELECT * INTO i FROM intervenant WHERE id = INTERVENANT_ID; - SELECT * INTO a FROM annee WHERE id = i.annee_id; - SELECT * INTO tvh FROM type_volume_horaire WHERE id = TYPE_VOLUME_HORAIRE_ID; - SELECT * INTO evh FROM etat_volume_horaire WHERE id = ETAT_VOLUME_HORAIRE_ID; +-- TYPE_FORMATION__UN +CREATE UNIQUE INDEX "TYPE_FORMATION__UN" ON "TYPE_FORMATION" ("SOURCE_CODE"); - ose_test.echo(''); - ose_test.echo('---------------------------------------------------------------------'); - ose_test.echo('Intervenant: ' || INTERVENANT_ID || ' : ' || i.prenom || ' ' || i.nom_usuel || ' (n° harp. ' || i.source_code || ')' ); - ose_test.echo( - 'Année: ' || a.libelle - || ', type ' || tvh.libelle - || ', état ' || evh.libelle - ); - ose_test.echo(''); - END IF; - IF GET_DEBUG_LEVEL >= 2 THEN - DEBUG_INTERVENANT; - END IF; +-- TYPE_HEURES_HCFK_IDX +CREATE INDEX "TYPE_HEURES_HCFK_IDX" ON "TYPE_HEURES" ("HISTO_CREATEUR_ID"); - IF GET_DEBUG_LEVEL >= 5 THEN - id := d_service.FIRST; - LOOP EXIT WHEN id IS NULL; - DEBUG_SERVICE( id ); - id := d_service.NEXT(id); - END LOOP; +-- TYPE_HEURES_HDFK_IDX +CREATE INDEX "TYPE_HEURES_HDFK_IDX" ON "TYPE_HEURES" ("HISTO_DESTRUCTEUR_ID"); - id := d_service_ref.FIRST; - LOOP EXIT WHEN id IS NULL; - DEBUG_SERVICE_REF( id ); - id := d_service_ref.NEXT(id); - END LOOP; - END IF; +-- TYPE_HEURES_HMFK_IDX +CREATE INDEX "TYPE_HEURES_HMFK_IDX" ON "TYPE_HEURES" ("HISTO_MODIFICATEUR_ID"); - IF GET_DEBUG_LEVEL >= 6 THEN - id := d_volume_horaire.FIRST; - LOOP EXIT WHEN id IS NULL; - DEBUG_VOLUME_HORAIRE( id ); - id := d_volume_horaire.NEXT(id); - END LOOP; +-- TYPE_HEURES_PK +CREATE UNIQUE INDEX "TYPE_HEURES_PK" ON "TYPE_HEURES" ("ID"); - id := d_volume_horaire_ref.FIRST; - LOOP EXIT WHEN id IS NULL; - DEBUG_VOLUME_HORAIRE_REF( id ); - id := d_volume_horaire_ref.NEXT(id); - END LOOP; - END IF; +-- TYPE_HEURES_TYPE_HEURES_FK_IDX +CREATE INDEX "TYPE_HEURES_TYPE_HEURES_FK_IDX" ON "TYPE_HEURES" ("TYPE_HEURES_ELEMENT_ID"); - IF GET_DEBUG_LEVEL >= 3 THEN - DEBUG_RESULTAT; - END IF; +-- TYPE_HEURES_UN +CREATE UNIQUE INDEX "TYPE_HEURES_UN" ON "TYPE_HEURES" ("CODE"); - IF GET_DEBUG_LEVEL >= 4 THEN - id := d_resultat.volume_horaire.FIRST; - LOOP EXIT WHEN id IS NULL; - DEBUG_RESULTAT_VH( id ); - id := d_resultat.volume_horaire.NEXT(id); - END LOOP; +-- TYPE_INTERVENANT_CODE_UN +CREATE UNIQUE INDEX "TYPE_INTERVENANT_CODE_UN" ON "TYPE_INTERVENANT" ("CODE"); - id := d_resultat.volume_horaire_ref.FIRST; - LOOP EXIT WHEN id IS NULL; - DEBUG_RESULTAT_VH_REF( id ); - id := d_resultat.volume_horaire_ref.NEXT(id); - END LOOP; - END IF; - END; +-- TYPE_INTERVENANT_HCFK_IDX +CREATE INDEX "TYPE_INTERVENANT_HCFK_IDX" ON "TYPE_INTERVENANT" ("HISTO_CREATEUR_ID"); +-- TYPE_INTERVENANT_HDFK_IDX +CREATE INDEX "TYPE_INTERVENANT_HDFK_IDX" ON "TYPE_INTERVENANT" ("HISTO_DESTRUCTEUR_ID"); +-- TYPE_INTERVENANT_HMFK_IDX +CREATE INDEX "TYPE_INTERVENANT_HMFK_IDX" ON "TYPE_INTERVENANT" ("HISTO_MODIFICATEUR_ID"); - PROCEDURE CALCULER( INTERVENANT_ID NUMERIC ) IS - id PLS_INTEGER; - found BOOLEAN; - function_name VARCHAR2(30); - package_name VARCHAR2(30); - BEGIN - package_name := OSE_PARAMETRE.GET_FORMULE_PACKAGE_NAME; - function_name := OSE_PARAMETRE.GET_FORMULE_FUNCTION_NAME; +-- TYPE_INTERVENANT_PK +CREATE UNIQUE INDEX "TYPE_INTERVENANT_PK" ON "TYPE_INTERVENANT" ("ID"); - -- détection de suppression des lignes de résultat obsolètes - UPDATE formule_resultat SET TO_DELETE = 1 WHERE intervenant_id = CALCULER.INTERVENANT_ID; - UPDATE FORMULE_RESULTAT_SERVICE_REF SET TO_DELETE = 1 WHERE formule_resultat_id IN (SELECT id FROM formule_resultat WHERE intervenant_id = CALCULER.INTERVENANT_ID); - UPDATE FORMULE_RESULTAT_SERVICE SET TO_DELETE = 1 WHERE formule_resultat_id IN (SELECT id FROM formule_resultat WHERE intervenant_id = CALCULER.INTERVENANT_ID); - UPDATE FORMULE_RESULTAT_VH_REF SET TO_DELETE = 1 WHERE formule_resultat_id IN (SELECT id FROM formule_resultat WHERE intervenant_id = CALCULER.INTERVENANT_ID); - UPDATE FORMULE_RESULTAT_VH SET TO_DELETE = 1 WHERE formule_resultat_id IN (SELECT id FROM formule_resultat WHERE intervenant_id = CALCULER.INTERVENANT_ID); +-- TYPE_INTERVENTION_EP_HCFK_IDX +CREATE INDEX "TYPE_INTERVENTION_EP_HCFK_IDX" ON "TYPE_INTERVENTION_EP" ("HISTO_CREATEUR_ID"); - POPULATE( INTERVENANT_ID ); - IF d_intervenant.heures_service_statutaire IS NOT NULL THEN -- sinon rien n'est à faire!! - -- lancement du calcul sur les nouvelles lignes ou sur les lignes existantes - id := d_type_etat_vh.FIRST; - LOOP EXIT WHEN id IS NULL; - POPULATE_FILTER( d_type_etat_vh(id).type_volume_horaire_id, d_type_etat_vh(id).etat_volume_horaire_id ); - DEBUG_ALL( INTERVENANT_ID, d_type_etat_vh(id).type_volume_horaire_id, d_type_etat_vh(id).etat_volume_horaire_id ); - OSE_FORMULE.INIT_RESULTAT( INTERVENANT_ID, d_type_etat_vh(id).type_volume_horaire_id, d_type_etat_vh(id).etat_volume_horaire_id ); - OSE_FORMULE.CALC_RESULTAT; - OSE_FORMULE.SAVE_RESULTAT; - id := d_type_etat_vh.NEXT(id); - END LOOP; - END IF; +-- TYPE_INTERVENTION_EP_HDFK_IDX +CREATE INDEX "TYPE_INTERVENTION_EP_HDFK_IDX" ON "TYPE_INTERVENTION_EP" ("HISTO_DESTRUCTEUR_ID"); - -- suppression des données devenues obsolètes - OSE_EVENT.ON_BEFORE_FORMULE_RES_DELETE( CALCULER.INTERVENANT_ID ); +-- TYPE_INTERVENTION_EP_HMFK_IDX +CREATE INDEX "TYPE_INTERVENTION_EP_HMFK_IDX" ON "TYPE_INTERVENTION_EP" ("HISTO_MODIFICATEUR_ID"); - DELETE FROM FORMULE_RESULTAT_SERVICE_REF WHERE TO_DELETE = 1 AND formule_resultat_id IN (SELECT id FROM formule_resultat WHERE intervenant_id = CALCULER.INTERVENANT_ID); - DELETE FROM FORMULE_RESULTAT_SERVICE WHERE TO_DELETE = 1 AND formule_resultat_id IN (SELECT id FROM formule_resultat WHERE intervenant_id = CALCULER.INTERVENANT_ID); - DELETE FROM FORMULE_RESULTAT_VH_REF WHERE TO_DELETE = 1 AND formule_resultat_id IN (SELECT id FROM formule_resultat WHERE intervenant_id = CALCULER.INTERVENANT_ID); - DELETE FROM FORMULE_RESULTAT_VH WHERE TO_DELETE = 1 AND formule_resultat_id IN (SELECT id FROM formule_resultat WHERE intervenant_id = CALCULER.INTERVENANT_ID); - DELETE FROM FORMULE_RESULTAT WHERE TO_DELETE = 1 AND intervenant_id = CALCULER.INTERVENANT_ID; +-- TYPE_INTERVENTION_EP_PK +CREATE UNIQUE INDEX "TYPE_INTERVENTION_EP_PK" ON "TYPE_INTERVENTION_EP" ("ID"); - OSE_EVENT.ON_AFTER_FORMULE_CALC( CALCULER.INTERVENANT_ID ); - END; +-- TYPE_INTERVENTION_HCFK_IDX +CREATE INDEX "TYPE_INTERVENTION_HCFK_IDX" ON "TYPE_INTERVENTION" ("HISTO_CREATEUR_ID"); +-- TYPE_INTERVENTION_HDFK_IDX +CREATE INDEX "TYPE_INTERVENTION_HDFK_IDX" ON "TYPE_INTERVENTION" ("HISTO_DESTRUCTEUR_ID"); +-- TYPE_INTERVENTION_HMFK_IDX +CREATE INDEX "TYPE_INTERVENTION_HMFK_IDX" ON "TYPE_INTERVENTION" ("HISTO_MODIFICATEUR_ID"); - PROCEDURE CALCULER_TBL( PARAMS UNICAEN_TBL.T_PARAMS ) IS - intervenant_id NUMERIC; - TYPE r_cursor IS REF CURSOR; - diff_cur r_cursor; - BEGIN - OPEN diff_cur FOR 'WITH interv AS (SELECT id intervenant_id, intervenant.* FROM intervenant) - SELECT intervenant_id FROM interv WHERE ' || unicaen_tbl.PARAMS_TO_CONDS( params ); - LOOP - FETCH diff_cur INTO intervenant_id; EXIT WHEN diff_cur%NOTFOUND; - BEGIN - CALCULER( intervenant_id ); - END; - END LOOP; - CLOSE diff_cur; - END; +-- TYPE_INTERVENTION_PK +CREATE UNIQUE INDEX "TYPE_INTERVENTION_PK" ON "TYPE_INTERVENTION" ("ID"); +-- TYPE_INTERVENTION_STRUCTURE_PK +CREATE UNIQUE INDEX "TYPE_INTERVENTION_STRUCTURE_PK" ON "TYPE_INTERVENTION_STRUCTURE" ("ID"); +-- TYPE_INTERV_ANNEE_DEBUT_IDX +CREATE INDEX "TYPE_INTERV_ANNEE_DEBUT_IDX" ON "TYPE_INTERVENTION" ("ANNEE_DEBUT_ID"); - FUNCTION GET_INTERVENANT RETURN NUMERIC IS - BEGIN - RETURN OSE_FORMULE.INTERVENANT_ID; - END; +-- TYPE_INTERV_ANNEE_FIN_IDX +CREATE INDEX "TYPE_INTERV_ANNEE_FIN_IDX" ON "TYPE_INTERVENTION" ("ANNEE_FIN_ID"); - PROCEDURE SET_INTERVENANT( INTERVENANT_ID NUMERIC DEFAULT NULL) IS - BEGIN - IF SET_INTERVENANT.INTERVENANT_ID = -1 THEN - OSE_FORMULE.INTERVENANT_ID := NULL; - ELSE - OSE_FORMULE.INTERVENANT_ID := SET_INTERVENANT.INTERVENANT_ID; - END IF; - END; +-- TYPE_MODULATEUR_EP_HCFK_IDX +CREATE INDEX "TYPE_MODULATEUR_EP_HCFK_IDX" ON "TYPE_MODULATEUR_EP" ("HISTO_CREATEUR_ID"); + +-- TYPE_MODULATEUR_EP_HDFK_IDX +CREATE INDEX "TYPE_MODULATEUR_EP_HDFK_IDX" ON "TYPE_MODULATEUR_EP" ("HISTO_DESTRUCTEUR_ID"); + +-- TYPE_MODULATEUR_EP_HMFK_IDX +CREATE INDEX "TYPE_MODULATEUR_EP_HMFK_IDX" ON "TYPE_MODULATEUR_EP" ("HISTO_MODIFICATEUR_ID"); + +-- TYPE_MODULATEUR_EP_PK +CREATE UNIQUE INDEX "TYPE_MODULATEUR_EP_PK" ON "TYPE_MODULATEUR_EP" ("ID"); + +-- TYPE_MODULATEUR_EP__UN +CREATE UNIQUE INDEX "TYPE_MODULATEUR_EP__UN" ON "TYPE_MODULATEUR_EP" ("SOURCE_CODE"); + +-- TYPE_MODULATEUR_EP__UNV1 +CREATE UNIQUE INDEX "TYPE_MODULATEUR_EP__UNV1" ON "TYPE_MODULATEUR_EP" ("TYPE_MODULATEUR_ID", "ELEMENT_PEDAGOGIQUE_ID"); + +-- TYPE_MODULATEUR_HCFK_IDX +CREATE INDEX "TYPE_MODULATEUR_HCFK_IDX" ON "TYPE_MODULATEUR" ("HISTO_CREATEUR_ID"); + +-- TYPE_MODULATEUR_HDFK_IDX +CREATE INDEX "TYPE_MODULATEUR_HDFK_IDX" ON "TYPE_MODULATEUR" ("HISTO_DESTRUCTEUR_ID"); + +-- TYPE_MODULATEUR_HMFK_IDX +CREATE INDEX "TYPE_MODULATEUR_HMFK_IDX" ON "TYPE_MODULATEUR" ("HISTO_MODIFICATEUR_ID"); + +-- TYPE_MODULATEUR_PK +CREATE UNIQUE INDEX "TYPE_MODULATEUR_PK" ON "TYPE_MODULATEUR" ("ID"); + +-- TYPE_MODULATEUR_STRUCTURE_PK +CREATE UNIQUE INDEX "TYPE_MODULATEUR_STRUCTURE_PK" ON "TYPE_MODULATEUR_STRUCTURE" ("ID"); - FUNCTION MATCH_INTERVENANT(INTERVENANT_ID NUMERIC DEFAULT NULL) RETURN NUMERIC IS - BEGIN - IF OSE_FORMULE.INTERVENANT_ID IS NULL OR OSE_FORMULE.INTERVENANT_ID = MATCH_INTERVENANT.INTERVENANT_ID THEN - RETURN 1; - ELSE - RETURN 0; - END IF; - END; -END OSE_FORMULE; -/ +-- TYPE_MODULATEUR_STRUCTURE_UN +CREATE UNIQUE INDEX "TYPE_MODULATEUR_STRUCTURE_UN" ON "TYPE_MODULATEUR_STRUCTURE" ("TYPE_MODULATEUR_ID", "STRUCTURE_ID"); --- OSE_HISTO -CREATE OR REPLACE PACKAGE BODY "OSE_HISTO" AS +-- TYPE_PIECE_JOINTE_HCFK_IDX +CREATE INDEX "TYPE_PIECE_JOINTE_HCFK_IDX" ON "TYPE_PIECE_JOINTE" ("HISTO_CREATEUR_ID"); - FUNCTION FILTRE( histo_debut NUMERIC, histo_fin NUMERIC ) RETURN NUMERIC IS - BEGIN - RETURN 1; - END; +-- TYPE_PIECE_JOINTE_HDFK_IDX +CREATE INDEX "TYPE_PIECE_JOINTE_HDFK_IDX" ON "TYPE_PIECE_JOINTE" ("HISTO_DESTRUCTEUR_ID"); -END OSE_HISTO; -/ +-- TYPE_PIECE_JOINTE_HMFK_IDX +CREATE INDEX "TYPE_PIECE_JOINTE_HMFK_IDX" ON "TYPE_PIECE_JOINTE" ("HISTO_MODIFICATEUR_ID"); --- OSE_PAIEMENT -CREATE OR REPLACE PACKAGE BODY "OSE_PAIEMENT" AS - - PROCEDURE CHECK_BAD_PAIEMENTS( FORMULE_RES_SERVICE_ID NUMERIC DEFAULT NULL, FORMULE_RES_SERVICE_REF_ID NUMERIC DEFAULT NULL ) IS - cc NUMERIC; - BEGIN - SELECT count(*) INTO cc - FROM mise_en_paiement mep - WHERE - mep.histo_destruction IS NULL - AND mep.formule_res_service_id = NVL( CHECK_BAD_PAIEMENTS.FORMULE_RES_SERVICE_ID, mep.formule_res_service_id ) - AND mep.formule_res_service_ref_id = NVL( CHECK_BAD_PAIEMENTS.FORMULE_RES_SERVICE_REF_ID, mep.formule_res_service_ref_id ) - ; +-- TYPE_PIECE_JOINTE_PK +CREATE UNIQUE INDEX "TYPE_PIECE_JOINTE_PK" ON "TYPE_PIECE_JOINTE" ("ID"); - IF (cc > 0) THEN - raise_application_error(-20101, 'Il est impossible d''effectuer cette action : des demandes de mise en paiement ont été saisies et ne peuvent pas être modifiées'); - ELSE - DELETE FROM mise_en_paiement WHERE - histo_destruction IS NOT NULL - AND formule_res_service_id = NVL( CHECK_BAD_PAIEMENTS.FORMULE_RES_SERVICE_ID, formule_res_service_id ) - AND formule_res_service_ref_id = NVL( CHECK_BAD_PAIEMENTS.FORMULE_RES_SERVICE_REF_ID, formule_res_service_ref_id ) - ; - END IF; - END; +-- TYPE_PIECE_JOINTE_STATUT_PK +CREATE UNIQUE INDEX "TYPE_PIECE_JOINTE_STATUT_PK" ON "TYPE_PIECE_JOINTE_STATUT" ("ID"); -END OSE_PAIEMENT; -/ +-- TYPE_RESSOURCE_FA +CREATE INDEX "TYPE_RESSOURCE_FA" ON "TYPE_RESSOURCE" ("FA"); --- OSE_PARAMETRE -CREATE OR REPLACE PACKAGE BODY "OSE_PARAMETRE" AS +-- TYPE_RESSOURCE_FC +CREATE INDEX "TYPE_RESSOURCE_FC" ON "TYPE_RESSOURCE" ("FC"); - cache_ose_user NUMERIC; - cache_annee_id NUMERIC; +-- TYPE_RESSOURCE_FI +CREATE INDEX "TYPE_RESSOURCE_FI" ON "TYPE_RESSOURCE" ("FI"); - function get_etablissement return Numeric AS - etab_id numeric; - BEGIN - select to_number(valeur) into etab_id from parametre where nom = 'etablissement'; - RETURN etab_id; - END get_etablissement; +-- TYPE_RESSOURCE_HCFK_IDX +CREATE INDEX "TYPE_RESSOURCE_HCFK_IDX" ON "TYPE_RESSOURCE" ("HISTO_CREATEUR_ID"); - function get_annee return Numeric AS - annee_id numeric; - BEGIN - IF cache_annee_id IS NOT NULL THEN RETURN cache_annee_id; END IF; - select to_number(valeur) into annee_id from parametre where nom = 'annee'; - cache_annee_id := annee_id; - RETURN cache_annee_id; - END get_annee; +-- TYPE_RESSOURCE_HDFK_IDX +CREATE INDEX "TYPE_RESSOURCE_HDFK_IDX" ON "TYPE_RESSOURCE" ("HISTO_DESTRUCTEUR_ID"); - FUNCTION get_annee_import RETURN NUMERIC AS - annee_id NUMERIC; - BEGIN - SELECT to_number(valeur) INTO annee_id FROM parametre WHERE nom = 'annee_import'; - RETURN annee_id; - END get_annee_import; +-- TYPE_RESSOURCE_HMFK_IDX +CREATE INDEX "TYPE_RESSOURCE_HMFK_IDX" ON "TYPE_RESSOURCE" ("HISTO_MODIFICATEUR_ID"); - function get_ose_user return Numeric AS - ose_user_id numeric; - BEGIN - IF cache_ose_user IS NOT NULL THEN RETURN cache_ose_user; END IF; - select to_number(valeur) into ose_user_id from parametre where nom = 'oseuser'; - cache_ose_user := ose_user_id; - RETURN cache_ose_user; - END get_ose_user; +-- TYPE_RESSOURCE_PK +CREATE UNIQUE INDEX "TYPE_RESSOURCE_PK" ON "TYPE_RESSOURCE" ("ID"); - function get_drh_structure_id return Numeric AS - drh_structure_id numeric; - BEGIN - select to_number(valeur) into drh_structure_id from parametre where nom = 'drh_structure_id'; - RETURN drh_structure_id; - END get_drh_structure_id; +-- TYPE_RESSOURCE_REF +CREATE INDEX "TYPE_RESSOURCE_REF" ON "TYPE_RESSOURCE" ("REFERENTIEL"); - FUNCTION get_date_fin_saisie_permanents RETURN DATE IS - date_fin_saisie_permanents date; - BEGIN - select TO_DATE(valeur, 'dd/mm/yyyy') into date_fin_saisie_permanents from parametre where nom = 'date_fin_saisie_permanents'; - RETURN date_fin_saisie_permanents; - END; +-- TYPE_VALIDATION_PK +CREATE UNIQUE INDEX "TYPE_VALIDATION_PK" ON "TYPE_VALIDATION" ("ID"); - FUNCTION get_ddeb_saisie_serv_real RETURN DATE IS - val date; - BEGIN - select TO_DATE(valeur, 'dd/mm/yyyy') into val from parametre where nom = 'date_debut_saisie_services_realises'; - RETURN val; - END; - - FUNCTION get_dfin_saisie_serv_real RETURN DATE IS - val date; - BEGIN - select TO_DATE(valeur, 'dd/mm/yyyy') into val from parametre where nom = 'date_fin_saisie_services_realises'; - RETURN val; - END; +-- TYPE_VOLUME_HORAIRE_PK +CREATE UNIQUE INDEX "TYPE_VOLUME_HORAIRE_PK" ON "TYPE_VOLUME_HORAIRE" ("ID"); - FUNCTION get_formule_package_name RETURN VARCHAR2 IS - formule_package_name VARCHAR2(30); - BEGIN - SELECT valeur INTO formule_package_name FROM parametre WHERE nom = 'formule_package_name'; - RETURN formule_package_name; - END; - - FUNCTION get_formule_function_name RETURN VARCHAR2 IS - formule_function_name VARCHAR2(30); - BEGIN - SELECT valeur INTO formule_function_name FROM parametre WHERE nom = 'formule_function_name'; - RETURN formule_function_name; - END; +-- TYPE_VOLUME_HORAIRE__UN +CREATE UNIQUE INDEX "TYPE_VOLUME_HORAIRE__UN" ON "TYPE_VOLUME_HORAIRE" ("CODE"); -END OSE_PARAMETRE; -/ +-- UTILISATEUR_PK +CREATE UNIQUE INDEX "UTILISATEUR_PK" ON "UTILISATEUR" ("ID"); --- OSE_TEST -CREATE OR REPLACE PACKAGE BODY "OSE_TEST" AS - TYPE OUT_LIST IS TABLE OF CLOB; - HTS TIMESTAMP; +-- UTILISATEUR_USERNAME_UN +CREATE UNIQUE INDEX "UTILISATEUR_USERNAME_UN" ON "UTILISATEUR" ("USERNAME"); - SUCCES_SHOWN BOOLEAN DEFAULT TRUE; - T_SUCCES_COUNT NUMERIC DEFAULT 0; - T_ECHECS_COUNT NUMERIC DEFAULT 0; - A_SUCCES_COUNT NUMERIC DEFAULT 0; - A_ECHECS_COUNT NUMERIC DEFAULT 0; - CURRENT_TEST CLOB; - CURRENT_TEST_OUTPUT_BUFFER OUT_LIST := OUT_LIST(); - CURRENT_TEST_OUTPUT_BUFFER_ERR BOOLEAN; +-- VALIDATION_HCFK_IDX +CREATE INDEX "VALIDATION_HCFK_IDX" ON "VALIDATION" ("HISTO_CREATEUR_ID"); - PROCEDURE SHOW_SUCCES IS - BEGIN - SUCCES_SHOWN := true; - END SHOW_SUCCES; +-- VALIDATION_HDFK_IDX +CREATE INDEX "VALIDATION_HDFK_IDX" ON "VALIDATION" ("HISTO_DESTRUCTEUR_ID"); - PROCEDURE HIDE_SUCCES IS - BEGIN - SUCCES_SHOWN := false; - END HIDE_SUCCES; +-- VALIDATION_HMFK_IDX +CREATE INDEX "VALIDATION_HMFK_IDX" ON "VALIDATION" ("HISTO_MODIFICATEUR_ID"); - PROCEDURE DEBUT( TEST_NAME CLOB ) IS - BEGIN - CURRENT_TEST := TEST_NAME; - CURRENT_TEST_OUTPUT_BUFFER_ERR := FALSE; - echo (' '); echo('TEST ' || TEST_NAME || ' >>>>>>>>>>' ); - END; +-- VALIDATION_INTERVENANT_FK_IDX +CREATE INDEX "VALIDATION_INTERVENANT_FK_IDX" ON "VALIDATION" ("INTERVENANT_ID"); - PROCEDURE FIN IS - TEST_NAME CLOB; - BEGIN - IF CURRENT_TEST_OUTPUT_BUFFER_ERR THEN - T_ECHECS_COUNT := T_ECHECS_COUNT + 1; - echo('>>>>>>>>>> FIN DU TEST ' || CURRENT_TEST ); echo (' '); - CURRENT_TEST := NULL; +-- VALIDATION_PK +CREATE UNIQUE INDEX "VALIDATION_PK" ON "VALIDATION" ("ID"); - FOR i IN 1 .. CURRENT_TEST_OUTPUT_BUFFER.COUNT LOOP - echo( CURRENT_TEST_OUTPUT_BUFFER(i) ); - END LOOP; - ELSE - T_SUCCES_COUNT := T_SUCCES_COUNT + 1; - TEST_NAME := CURRENT_TEST; - CURRENT_TEST := NULL; - echo('SUCCÈS DU TEST : ' || TEST_NAME ); - END IF; - CURRENT_TEST_OUTPUT_BUFFER.DELETE; -- clear buffer - END; +-- VALIDATION_STRUCTURE_FK_IDX +CREATE INDEX "VALIDATION_STRUCTURE_FK_IDX" ON "VALIDATION" ("STRUCTURE_ID"); - PROCEDURE ECHO( MSG CLOB ) IS - BEGIN - IF CURRENT_TEST IS NULL THEN - dbms_output.put_line(MSG); - ELSE - CURRENT_TEST_OUTPUT_BUFFER.EXTEND; - CURRENT_TEST_OUTPUT_BUFFER (CURRENT_TEST_OUTPUT_BUFFER.LAST) := MSG; - END IF; - END; +-- VALIDATION_TYPE_VALIDATION_FK +CREATE INDEX "VALIDATION_TYPE_VALIDATION_FK" ON "VALIDATION" ("TYPE_VALIDATION_ID"); - PROCEDURE INIT IS - BEGIN - T_SUCCES_COUNT := 0; - T_ECHECS_COUNT := 0; - A_SUCCES_COUNT := 0; - A_ECHECS_COUNT := 0; - CURRENT_TEST := NULL; - END INIT; +-- VALIDATION_VOL_HORAIRE_PK +CREATE UNIQUE INDEX "VALIDATION_VOL_HORAIRE_PK" ON "VALIDATION_VOL_HORAIRE" ("VALIDATION_ID", "VOLUME_HORAIRE_ID"); - PROCEDURE SHOW_STATS IS - BEGIN - echo ( ' ' ); - echo ( '********************************* STATISTIQUES *********************************' ); - echo ( ' ' ); - echo ( ' - nombre de tests passés avec succès : ' || T_SUCCES_COUNT ); - echo ( ' - nombre de tests ayant échoué : ' || T_ECHECS_COUNT ); - echo ( ' ' ); - echo ( ' - nombre d''assertions passés avec succès : ' || A_SUCCES_COUNT ); - echo ( ' - nombre d''assertions ayant échoué : ' || A_ECHECS_COUNT ); - echo ( ' ' ); - echo ( '********************************************************************************' ); - echo ( ' ' ); - END; +-- VALIDATION_VOL_HORAIRE_REF_PK +CREATE UNIQUE INDEX "VALIDATION_VOL_HORAIRE_REF_PK" ON "VALIDATION_VOL_HORAIRE_REF" ("VALIDATION_ID", "VOLUME_HORAIRE_REF_ID"); - PROCEDURE ASSERT( condition BOOLEAN, MSG CLOB ) IS - BEGIN - IF condition THEN - A_SUCCES_COUNT := A_SUCCES_COUNT + 1; - IF SUCCES_SHOWN THEN - ECHO(' SUCCÈS : ' || MSG ); - END IF; - ELSE - A_ECHECS_COUNT := A_ECHECS_COUNT + 1; - CURRENT_TEST_OUTPUT_BUFFER_ERR := TRUE; - ECHO(' ** ECHEC ** : ' || MSG ); - END IF; - END; +-- VERSION_PK +CREATE UNIQUE INDEX "VERSION_PK" ON "VERSION" ("NUMERO"); - PROCEDURE HOROINIT IS - BEGIN - HTS := systimestamp; - END; +-- VHC_HISTO_UN +CREATE UNIQUE INDEX "VHC_HISTO_UN" ON "VOLUME_HORAIRE_CHARGE" ("SOURCE_CODE", "HISTO_DESTRUCTION"); - PROCEDURE HORODATAGE( msg VARCHAR2 ) IS - diff INTERVAL DAY(9) TO SECOND(3); - BEGIN - IF HTS IS NULL THEN - HTS := systimestamp; - RETURN; - END IF; +-- VHENS_EP_FK_IDX +CREATE INDEX "VHENS_EP_FK_IDX" ON "VOLUME_HORAIRE_ENS" ("ELEMENT_PEDAGOGIQUE_ID"); - diff := systimestamp - HTS; - HTS := systimestamp; +-- VHENS_TYPE_INTERVENTION_FK_IDX +CREATE INDEX "VHENS_TYPE_INTERVENTION_FK_IDX" ON "VOLUME_HORAIRE_ENS" ("TYPE_INTERVENTION_ID"); - echo(msg || ' (' || diff || ')'); - END; +-- VHE_SOURCE_FK_IDX +CREATE INDEX "VHE_SOURCE_FK_IDX" ON "VOLUME_HORAIRE_ENS" ("SOURCE_ID"); - FUNCTION GET_STRUCTURE_BY_ID( id NUMERIC ) RETURN structure%rowtype IS - res structure%rowtype; - BEGIN - IF ID IS NULL THEN RETURN res; END IF; - SELECT * INTO res FROM structure WHERE id = GET_STRUCTURE_BY_ID.id; - RETURN res; - END; +-- VHIT_FK_IDX +CREATE INDEX "VHIT_FK_IDX" ON "VOLUME_HORAIRE" ("TYPE_INTERVENTION_ID"); -END OSE_TEST; -/ +-- VHMNP_FK_IDX +CREATE INDEX "VHMNP_FK_IDX" ON "VOLUME_HORAIRE" ("MOTIF_NON_PAIEMENT_ID"); --- OSE_VALIDATION -CREATE OR REPLACE PACKAGE BODY "OSE_VALIDATION" AS +-- VHR_SERVICE_REFERENTIEL_FK_IDX +CREATE INDEX "VHR_SERVICE_REFERENTIEL_FK_IDX" ON "VOLUME_HORAIRE_REF" ("SERVICE_REFERENTIEL_ID"); - FUNCTION can_devalider ( v validation%rowtype ) RETURN varchar2 IS - tv type_validation%rowtype; - nb NUMERIC; - result varchar2(500) default null; - BEGIN +-- VHR_TYPE_VOLUME_HORAIRE_FK_IDX +CREATE INDEX "VHR_TYPE_VOLUME_HORAIRE_FK_IDX" ON "VOLUME_HORAIRE_REF" ("TYPE_VOLUME_HORAIRE_ID"); - SELECT * INTO tv FROM type_validation WHERE id = v.type_validation_id; +-- VH_PERIODE_FK_IDX +CREATE INDEX "VH_PERIODE_FK_IDX" ON "VOLUME_HORAIRE" ("PERIODE_ID"); - IF tv.code = 'SERVICES_PAR_COMP' THEN +-- VH_SERVICES_FK_IDX +CREATE INDEX "VH_SERVICES_FK_IDX" ON "VOLUME_HORAIRE" ("SERVICE_ID"); - SELECT - SUM(CASE WHEN c.id IS NOT NULL THEN 1 ELSE 0 END) INTO nb - FROM - validation_vol_horaire vvh - JOIN volume_horaire vh ON vh.id = vvh.volume_horaire_id - LEFT JOIN contrat c ON c.id = vh.contrat_id AND c.histo_destruction IS NULL - WHERE - vvh.validation_id = v.id; +-- VH_TYPE_VOLUME_HORAIRE_FK_IDX +CREATE INDEX "VH_TYPE_VOLUME_HORAIRE_FK_IDX" ON "VOLUME_HORAIRE" ("TYPE_VOLUME_HORAIRE_ID"); - -- Si des volumes horaires ont déjà fait l'objet de contrats alors pas de dévalidation possible des heures - IF nb > 0 THEN - result := 'La dévalidation est impossible car des contrats ont déjà été édités sur la base de ces heures.'; - END IF; +-- VOLUME_HORAIRE_CHARGE_HC_IDX +CREATE INDEX "VOLUME_HORAIRE_CHARGE_HC_IDX" ON "VOLUME_HORAIRE_CHARGE" ("HISTO_CREATEUR_ID"); - END IF; +-- VOLUME_HORAIRE_CHARGE_HD_IDX +CREATE INDEX "VOLUME_HORAIRE_CHARGE_HD_IDX" ON "VOLUME_HORAIRE_CHARGE" ("HISTO_DESTRUCTEUR_ID"); - IF tv.code = 'CLOTURE_REALISE' THEN +-- VOLUME_HORAIRE_CHARGE_HM_IDX +CREATE INDEX "VOLUME_HORAIRE_CHARGE_HM_IDX" ON "VOLUME_HORAIRE_CHARGE" ("HISTO_MODIFICATEUR_ID"); - SELECT - COUNT(*) INTO nb - FROM - tbl_paiement p - WHERE - p.periode_paiement_id IS NOT NULL - AND p.intervenant_id = v.intervenant_id - AND ROWNUM = 1; +-- VOLUME_HORAIRE_CHARGE_PK +CREATE UNIQUE INDEX "VOLUME_HORAIRE_CHARGE_PK" ON "VOLUME_HORAIRE_CHARGE" ("ID"); + +-- VOLUME_HORAIRE_CHARGE_SC_IDX +CREATE INDEX "VOLUME_HORAIRE_CHARGE_SC_IDX" ON "VOLUME_HORAIRE_CHARGE" ("SCENARIO_ID"); + +-- VOLUME_HORAIRE_CHARGE_SRC_IDX +CREATE INDEX "VOLUME_HORAIRE_CHARGE_SRC_IDX" ON "VOLUME_HORAIRE_CHARGE" ("SOURCE_ID"); + +-- VOLUME_HORAIRE_CHARGE_TI_IDX +CREATE INDEX "VOLUME_HORAIRE_CHARGE_TI_IDX" ON "VOLUME_HORAIRE_CHARGE" ("TYPE_INTERVENTION_ID"); + +-- VOLUME_HORAIRE_CHARGE__UN +CREATE UNIQUE INDEX "VOLUME_HORAIRE_CHARGE__UN" ON "VOLUME_HORAIRE_CHARGE" ("ELEMENT_PEDAGOGIQUE_ID", "TYPE_INTERVENTION_ID", "HISTO_DESTRUCTION"); - IF nb > 0 THEN - result := 'La suppression de la clôture des services réalisés est impossible car des heures ont été payées ou bien le paiement a été demandé.'; - END IF; +-- VOLUME_HORAIRE_CONTRAT_FK_IDX +CREATE INDEX "VOLUME_HORAIRE_CONTRAT_FK_IDX" ON "VOLUME_HORAIRE" ("CONTRAT_ID"); - END IF; +-- VOLUME_HORAIRE_ENS_HCFK_IDX +CREATE INDEX "VOLUME_HORAIRE_ENS_HCFK_IDX" ON "VOLUME_HORAIRE_ENS" ("HISTO_CREATEUR_ID"); - RETURN result; - END; +-- VOLUME_HORAIRE_ENS_HDFK_IDX +CREATE INDEX "VOLUME_HORAIRE_ENS_HDFK_IDX" ON "VOLUME_HORAIRE_ENS" ("HISTO_DESTRUCTEUR_ID"); -END OSE_VALIDATION; -/ +-- VOLUME_HORAIRE_ENS_HMFK_IDX +CREATE INDEX "VOLUME_HORAIRE_ENS_HMFK_IDX" ON "VOLUME_HORAIRE_ENS" ("HISTO_MODIFICATEUR_ID"); --- OSE_WORKFLOW -CREATE OR REPLACE PACKAGE BODY "OSE_WORKFLOW" AS - INTERVENANT_ID NUMERIC DEFAULT NULL; +-- VOLUME_HORAIRE_ENS_PK +CREATE UNIQUE INDEX "VOLUME_HORAIRE_ENS_PK" ON "VOLUME_HORAIRE_ENS" ("ID"); - TYPE t_workflow IS TABLE OF tbl_workflow%rowtype INDEX BY PLS_INTEGER; +-- VOLUME_HORAIRE_ENS_UK1 +CREATE UNIQUE INDEX "VOLUME_HORAIRE_ENS_UK1" ON "VOLUME_HORAIRE_ENS" ("SOURCE_CODE", "HISTO_DESTRUCTION"); - TYPE t_dep IS TABLE OF wf_etape_dep%rowtype INDEX BY PLS_INTEGER; - TYPE t_deps IS TABLE OF t_dep INDEX BY PLS_INTEGER; - TYPE t_deps_bloquantes IS TABLE OF wf_dep_bloquante%rowtype INDEX BY PLS_INTEGER; +-- VOLUME_HORAIRE_HCFK_IDX +CREATE INDEX "VOLUME_HORAIRE_HCFK_IDX" ON "VOLUME_HORAIRE" ("HISTO_CREATEUR_ID"); - -- propre au calcul courant ! ! - etapes t_workflow; - deps t_deps; - deps_initialized boolean default false; - deps_bloquantes t_deps_bloquantes; - deps_bloquantes_index PLS_INTEGER DEFAULT 1; +-- VOLUME_HORAIRE_HDFK_IDX +CREATE INDEX "VOLUME_HORAIRE_HDFK_IDX" ON "VOLUME_HORAIRE" ("HISTO_DESTRUCTEUR_ID"); +-- VOLUME_HORAIRE_HEURES_IDX +CREATE INDEX "VOLUME_HORAIRE_HEURES_IDX" ON "VOLUME_HORAIRE" ("HEURES"); +-- VOLUME_HORAIRE_HMFK_IDX +CREATE INDEX "VOLUME_HORAIRE_HMFK_IDX" ON "VOLUME_HORAIRE" ("HISTO_MODIFICATEUR_ID"); +-- VOLUME_HORAIRE_PK +CREATE UNIQUE INDEX "VOLUME_HORAIRE_PK" ON "VOLUME_HORAIRE" ("ID"); - FUNCTION ETAPE_FRANCHIE( etape tbl_workflow%rowtype, need_done boolean default false ) RETURN FLOAT IS - res FLOAT DEFAULT 0; - BEGIN - IF etape.objectif = 0 THEN - IF need_done THEN RETURN 0; ELSE RETURN 1; END IF; - END IF; +-- VOLUME_HORAIRE_REF_HCFK_IDX +CREATE INDEX "VOLUME_HORAIRE_REF_HCFK_IDX" ON "VOLUME_HORAIRE_REF" ("HISTO_CREATEUR_ID"); - IF etape.atteignable = 0 THEN RETURN 0; END IF; +-- VOLUME_HORAIRE_REF_HDFK_IDX +CREATE INDEX "VOLUME_HORAIRE_REF_HDFK_IDX" ON "VOLUME_HORAIRE_REF" ("HISTO_DESTRUCTEUR_ID"); - IF etape.objectif > 0 THEN - res := etape.realisation / etape.objectif; - END IF; +-- VOLUME_HORAIRE_REF_HMFK_IDX +CREATE INDEX "VOLUME_HORAIRE_REF_HMFK_IDX" ON "VOLUME_HORAIRE_REF" ("HISTO_MODIFICATEUR_ID"); - IF res > 1 THEN - res := 1; - END IF; +-- VOLUME_HORAIRE_REF_PK +CREATE UNIQUE INDEX "VOLUME_HORAIRE_REF_PK" ON "VOLUME_HORAIRE_REF" ("ID"); - RETURN res; - END; +-- VVHR_VALIDATION_FK_IDX +CREATE INDEX "VVHR_VALIDATION_FK_IDX" ON "VALIDATION_VOL_HORAIRE_REF" ("VALIDATION_ID"); +-- VVHR_VOLUME_HORAIRE_REF_FK_IDX +CREATE INDEX "VVHR_VOLUME_HORAIRE_REF_FK_IDX" ON "VALIDATION_VOL_HORAIRE_REF" ("VOLUME_HORAIRE_REF_ID"); +-- VVH_VALIDATION_FK_IDX +CREATE INDEX "VVH_VALIDATION_FK_IDX" ON "VALIDATION_VOL_HORAIRE" ("VALIDATION_ID"); - PROCEDURE POPULATE_ETAPES( INTERVENANT_ID NUMERIC ) IS - i NUMERIC DEFAULT 0; - BEGIN - etapes.delete; -- initialisation +-- VVH_VOLUME_HORAIRE_FK_IDX +CREATE INDEX "VVH_VOLUME_HORAIRE_FK_IDX" ON "VALIDATION_VOL_HORAIRE" ("VOLUME_HORAIRE_ID"); - FOR wie IN ( - SELECT - wep.annee_id annee_id, - e.id etape_id, - w.structure_id structure_id, - ROUND(COALESCE(w.objectif,0),2) objectif, - CASE WHEN w.intervenant_id IS NULL THEN 0 ELSE 1 END atteignable, - ROUND(COALESCE(w.realisation,0),2) realisation, - wep.etape_code etape_code, - si.id statut_intervenant_id, - ti.id type_intervenant_id, - ti.code type_intervenant_code - FROM - v_workflow_etape_pertinente wep - JOIN wf_etape e ON e.code = wep.etape_code - JOIN intervenant i ON i.id = wep.intervenant_id - JOIN statut_intervenant si ON si.id = i.statut_id - JOIN type_intervenant ti ON ti.id = si.type_intervenant_id - LEFT JOIN v_tbl_workflow w ON w.intervenant_id = wep.intervenant_id AND w.etape_code = wep.etape_code - WHERE - wep.intervenant_id = POPULATE_ETAPES.INTERVENANT_ID - AND (e.obligatoire = 1 OR w.intervenant_id IS NOT NULL) - ORDER BY - e.ordre - ) LOOP - etapes( i ).annee_id := wie.annee_id; - etapes( i ).intervenant_id := intervenant_id; - etapes( i ).etape_id := wie.etape_id; - etapes( i ).structure_id := wie.structure_id; - etapes( i ).atteignable := wie.atteignable; - etapes( i ).objectif := wie.objectif; - etapes( i ).realisation := wie.realisation; - etapes( i ).etape_code := wie.etape_code; - etapes( i ).statut_intervenant_id := wie.statut_intervenant_id; - etapes( i ).type_intervenant_id := wie.type_intervenant_id; - etapes( i ).type_intervenant_code := wie.type_intervenant_code; - i := i + 1; - END LOOP; - END; +-- WE_PREC_WE_FK_IDX +CREATE INDEX "WE_PREC_WE_FK_IDX" ON "WF_ETAPE_DEP" ("ETAPE_PREC_ID"); +-- WE_SUIV_WE_FK_IDX +CREATE INDEX "WE_SUIV_WE_FK_IDX" ON "WF_ETAPE_DEP" ("ETAPE_SUIV_ID"); +-- WE_TYPE_INTERVENANT_FK_IDX +CREATE INDEX "WE_TYPE_INTERVENANT_FK_IDX" ON "WF_ETAPE_DEP" ("TYPE_INTERVENANT_ID"); - -- peuple l'arbre des dépendances entre étapes de workflow - PROCEDURE POPULATE_DEPS( INTERVENANT_ID NUMERIC ) IS - s PLS_INTEGER; -- index de l'étape suivante - p PLS_INTEGER; -- index de l'étape précédente - BEGIN - IF deps_initialized THEN RETURN; END IF; +-- WF_DB_ETAPE_DEP_FK_IDX +CREATE INDEX "WF_DB_ETAPE_DEP_FK_IDX" ON "WF_DEP_BLOQUANTE" ("WF_ETAPE_DEP_ID"); - FOR d IN ( - SELECT - wed.* - FROM - wf_etape_dep wed - JOIN intervenant i ON i.id = POPULATE_DEPS.INTERVENANT_ID - JOIN statut_intervenant si ON si.id = i.statut_id - WHERE - active = 1 - AND wed.type_intervenant_id IS NULL OR wed.type_intervenant_id = si.type_intervenant_id - ) LOOP - deps(d.etape_suiv_id)(d.etape_prec_id) := d; - END LOOP; +-- WF_DB_TBL_WORKFLOW_FK_IDX +CREATE INDEX "WF_DB_TBL_WORKFLOW_FK_IDX" ON "WF_DEP_BLOQUANTE" ("TBL_WORKFLOW_ID"); - deps_initialized := true; - END; +-- WF_DEPS_BLOQUANTES_PK_IDX +CREATE UNIQUE INDEX "WF_DEPS_BLOQUANTES_PK_IDX" ON "WF_DEP_BLOQUANTE" ("ID"); +-- WF_ETAPE_CODE_UN +CREATE UNIQUE INDEX "WF_ETAPE_CODE_UN" ON "WF_ETAPE" ("CODE"); +-- WF_ETAPE_DEP_PK +CREATE UNIQUE INDEX "WF_ETAPE_DEP_PK" ON "WF_ETAPE_DEP" ("ID"); - PROCEDURE ADD_DEP_BLOQUANTE( wf_etape_dep_id NUMERIC, tbl_workflow_id NUMERIC ) IS - BEGIN - deps_bloquantes_index := deps_bloquantes_index + 1; - deps_bloquantes(deps_bloquantes_index).wf_etape_dep_id := wf_etape_dep_id; - deps_bloquantes(deps_bloquantes_index).tbl_workflow_id := tbl_workflow_id; - END; +-- WF_ETAPE_DEP_PK_IDX +CREATE UNIQUE INDEX "WF_ETAPE_DEP_PK_IDX" ON "WF_ETAPE_DEP" ("ETAPE_PREC_ID", "ETAPE_SUIV_ID"); +-- WF_ETAPE_DEP__UN_IDX +CREATE UNIQUE INDEX "WF_ETAPE_DEP__UN_IDX" ON "WF_ETAPE_DEP" ("ETAPE_SUIV_ID", "ETAPE_PREC_ID"); +-- WF_ETAPE_ORDRE_UN +CREATE UNIQUE INDEX "WF_ETAPE_ORDRE_UN" ON "WF_ETAPE" ("ORDRE"); - PROCEDURE CALCUL_ATTEIGNABLE( s PLS_INTEGER, d wf_etape_dep%rowtype ) IS - count_tested PLS_INTEGER DEFAULT 0; - count_na PLS_INTEGER DEFAULT 0; - p PLS_INTEGER; -- index de l'étape précédente - BEGIN +-- WF_ETAPE_PK +CREATE UNIQUE INDEX "WF_ETAPE_PK" ON "WF_ETAPE" ("ID"); - p := etapes.FIRST; - LOOP EXIT WHEN p IS NULL; - IF etapes(p).etape_id = d.etape_prec_id THEN - -- on restreint en fonction du périmètre visé : - -- - si la dépendance n'est pas locale alors on teste - -- - si les structures aussi bien de l'étape testée que de l'étape dépendante sont nulles alors on teste aussi car elles sont "universelles" - -- - si les structures sont équivalentes alors on teste, sinon elles ne sont pas dans le périmètre local - IF - (d.locale = 0) - OR etapes(s).structure_id IS NULL - OR etapes(p).structure_id IS NULL - OR etapes(s).structure_id = etapes(p).structure_id - THEN - count_tested := count_tested + 1; +-------------------------------------------------- +-- triggers +-------------------------------------------------- - -- on teste le type de franchissement désiré et si ce n'est pas bon alors on déclare l'étape courante non atteignable +-- AFFECTATION_RECHERCHE_CK +CREATE OR REPLACE TRIGGER "AFFECTATION_RECHERCHE_CK" + BEFORE INSERT OR UPDATE ON "AFFECTATION_RECHERCHE" + REFERENCING FOR EACH ROW + DECLARE + pragma autonomous_transaction; + rows_found integer; +BEGIN - -- - idem si on a besoin d'une dépendance partiellement franchie est qu'elle ne l'est pas - IF d.partielle = 1 THEN - IF ETAPE_FRANCHIE(etapes(p), d.obligatoire=1) = 0 THEN -- si le franchissement est totalement inexistant - count_na := count_na + 1; - END IF; - -- - si on a besoin d'une dépendance complètement franchie est qu'elle ne l'est pas alors ce n'est pas atteignable - ELSE - IF ETAPE_FRANCHIE(etapes(p), d.obligatoire=1) < 1 THEN - count_na := count_na + 1; - END IF; - END IF; - END IF; + if :NEW.histo_destruction IS NOT NULL THEN RETURN; END IF; -- pas de check si c'est pour une historicisation - END IF; - p := etapes.next(p); - END LOOP; + select + count(*) into rows_found + from + affectation_recherche + where + intervenant_id = :new.intervenant_id + AND structure_id = :new.structure_id + AND histo_destruction IS NULL + AND id <> :NEW.id; - -- on applique le résultat uniquement si des étapes dépendantes ont été trouvées - IF count_tested > 0 THEN + if rows_found > 0 THEN + raise_application_error(-20101, 'Un enseignant (id=' || :NEW.intervenant_id || ') ne peut pas avoir plusieurs affectations de recherche pour une même structure'); + END IF; - -- si les étapes dépendantes ont été intégralement franchies - IF d.integrale = 1 THEN - -- si l'intégralité des étapes est atteignable = NON si au moins une ne l'est pas - IF count_na > 0 THEN - etapes(s).atteignable := 0; - ADD_DEP_BLOQUANTE( d.id, s ); - END IF; +END; - -- sinon... - ELSE - -- si au moins une étape est atteignable = NON si toutes ne sont pas atteignables - IF count_tested = count_na THEN - etapes(s).atteignable := 0; - ADD_DEP_BLOQUANTE( d.id, s ); - END IF; - END IF; - END IF; - END; +/ +ALTER TRIGGER "AFFECTATION_RECHERCHE_CK" ENABLE; +-- AGREMENT_CK +CREATE OR REPLACE TRIGGER "AGREMENT_CK" + BEFORE UPDATE ON "AGREMENT" + REFERENCING FOR EACH ROW + DECLARE + contrat_found INTEGER; +BEGIN - -- calcule si les étapes sont atteignables ou non - PROCEDURE CALCUL_ATTEIGNABLES IS - e PLS_INTEGER; -- index de l'étape courante - d PLS_INTEGER; -- ID de l'étape précédante - BEGIN - deps_bloquantes.delete; - e := etapes.FIRST; - LOOP EXIT WHEN e IS NULL; - IF deps.exists(etapes(e).etape_id) THEN -- s'il n'y a aucune dépendance alors pas de test!! - d := deps(etapes(e).etape_id).FIRST; - LOOP EXIT WHEN d IS NULL; + SELECT + COUNT(*) INTO contrat_found + FROM + contrat c + WHERE + c.INTERVENANT_ID = :NEW.intervenant_id + AND c.structure_id = NVL(:NEW.structure_id,c.structure_id) + AND c.histo_destruction IS NULL + AND ROWNUM = 1; - CALCUL_ATTEIGNABLE(e, deps(etapes(e).etape_id)(d)); + IF + 1 = contrat_found + AND :NEW.histo_destruction IS NOT NULL AND :OLD.histo_destruction IS NULL + THEN - d := deps(etapes(e).etape_id).next(d); - END LOOP; - END IF; - e := etapes.next(e); - END LOOP; - END; + IF :NEW.structure_id IS NULL THEN + raise_application_error(-20101, 'Cet agrément ne peut pas être supprimé car un contrat a été signé.'); + ELSE + raise_application_error(-20101, 'Cet agrément ne peut pas être supprimé car un contrat a été signé dans la même composante.'); + END IF; + END IF; +END; - FUNCTION ENREGISTRER_ETAPE( e tbl_workflow%rowtype ) RETURN NUMERIC IS - n_etape_id NUMERIC; +/ +ALTER TRIGGER "AGREMENT_CK" ENABLE; + +-- CALC_TAUX_HETD_ANNEES +CREATE OR REPLACE TRIGGER "CALC_TAUX_HETD_ANNEES" +AFTER INSERT OR UPDATE OR DELETE ON "TAUX_HORAIRE_HETD" +BEGIN + OSE_FORMULE.UPDATE_ANNEE_TAUX_HETD; +END; + +/ +ALTER TRIGGER "CALC_TAUX_HETD_ANNEES" ENABLE; + +-- CHARGENS_MAJ_EFFECTIFS +CREATE OR REPLACE TRIGGER "CHARGENS_MAJ_EFFECTIFS" + AFTER INSERT OR DELETE OR UPDATE ON "SCENARIO_NOEUD_EFFECTIF" + REFERENCING FOR EACH ROW BEGIN +RETURN; + return; + IF NOT ose_chargens.ENABLE_TRIGGER_EFFECTIFS THEN RETURN; END IF; + IF DELETING THEN + ose_chargens.DEM_CALC_SUB_EFFECTIF( :OLD.scenario_noeud_id, :OLD.type_heures_id, :OLD.etape_id, 0 ); + ELSE + ose_chargens.DEM_CALC_SUB_EFFECTIF( :NEW.scenario_noeud_id, :NEW.type_heures_id, :NEW.etape_id, :NEW.effectif ); + END IF; - MERGE INTO tbl_workflow w USING dual ON ( +END; - w.intervenant_id = e.intervenant_id - AND w.etape_id = e.etape_id - AND NVL(w.structure_id,0) = NVL(e.structure_id,0) - ) WHEN MATCHED THEN UPDATE SET +/ +ALTER TRIGGER "CHARGENS_MAJ_EFFECTIFS" ENABLE; - atteignable = e.atteignable, - objectif = e.objectif, - realisation = e.realisation, - etape_code = e.etape_code, - statut_intervenant_id = e.statut_intervenant_id, - type_intervenant_id = e.type_intervenant_id, - type_intervenant_code = e.type_intervenant_code, - to_delete = 0 +-- ELEMENT_PEDAGOGIQUE_CK +CREATE OR REPLACE TRIGGER "ELEMENT_PEDAGOGIQUE_CK" + BEFORE INSERT OR UPDATE ON "ELEMENT_PEDAGOGIQUE" + REFERENCING FOR EACH ROW + DECLARE + enseignement INTEGER; + source_id INTEGER; +BEGIN + SELECT id INTO source_id FROM source WHERE code = 'OSE'; - WHEN NOT MATCHED THEN INSERT ( + IF :NEW.source_id <> source_id THEN RETURN; END IF; -- impossible de checker car l'UPD par import se fait champ par champ... - id, - annee_id, - intervenant_id, - etape_id, - structure_id, - atteignable, - objectif, - realisation, - etape_code, - statut_intervenant_id, - type_intervenant_id, - type_intervenant_code, - to_delete + IF :NEW.fi = 0 AND :NEW.fc = 0 AND :NEW.fa = 0 THEN + raise_application_error(-20101, 'Un enseignement doit obligatoirement être au moins en FI, FC ou FA'); + END IF; - ) VALUES ( + IF 1 <> ROUND(:NEW.taux_fi + :NEW.taux_fc + :NEW.taux_fa, 2) THEN + raise_application_error( -20101, 'Le total des taux FI, FC et FA n''est pas égal à 100%'); + END IF; - TBL_WORKFLOW_ID_SEQ.NEXTVAL, - e.annee_id, - e.intervenant_id, - e.etape_id, - e.structure_id, - e.atteignable, - e.objectif, - e.realisation, - e.etape_code, - e.statut_intervenant_id, - e.type_intervenant_id, - e.type_intervenant_code, - 0 + IF :NEW.fi = 0 AND :NEW.taux_fi > 0 THEN + raise_application_error( -20101, 'Le taux FI doit être à 0 puisque la formation n''est pas dispensée en FI'); + END IF; - ); + IF :NEW.fa = 0 AND :NEW.taux_fa > 0 THEN + raise_application_error( -20101, 'Le taux FA doit être à 0 puisque la formation n''est pas dispensée en FA'); + END IF; - SELECT w.id INTO n_etape_id FROM tbl_workflow w WHERE - w.intervenant_id = e.intervenant_id - AND w.etape_id = e.etape_id - AND NVL(w.structure_id,0) = NVL(e.structure_id,0) - ; + IF :NEW.fc = 0 AND :NEW.taux_fc > 0 THEN + raise_application_error( -20101, 'Le taux FC doit être à 0 puisque la formation n''est pas dispensée en FC'); + END IF; - RETURN n_etape_id; - END; + IF :NEW.periode_id IS NOT NULL THEN + SELECT p.enseignement + INTO enseignement + FROM periode p + WHERE p.id = :NEW.periode_id; + IF enseignement <> 1 THEN + raise_application_error(-20101, 'Cette période n''est pas appliquable à cet élément pédagogique.'); + END IF; + END IF; +END; +/ +ALTER TRIGGER "ELEMENT_PEDAGOGIQUE_CK" ENABLE; - PROCEDURE ENREGISTRER_DEP_BLOQUANTE( db wf_dep_bloquante%rowtype ) IS +-- F_CONTRAT +CREATE OR REPLACE TRIGGER "F_CONTRAT" + AFTER DELETE OR UPDATE OF INTERVENANT_ID, STRUCTURE_ID, VALIDATION_ID, DATE_RETOUR_SIGNE, HISTO_CREATION, HISTO_DESTRUCTION ON "CONTRAT" + REFERENCING FOR EACH ROW BEGIN - MERGE INTO wf_dep_bloquante wdb USING dual ON ( - wdb.wf_etape_dep_id = db.wf_etape_dep_id - AND wdb.tbl_workflow_id = db.tbl_workflow_id + IF NOT UNICAEN_TBL.ACTIV_TRIGGERS THEN RETURN; END IF; - ) WHEN MATCHED THEN UPDATE SET + FOR p IN ( - to_delete = 0 + SELECT DISTINCT + s.intervenant_id + FROM + volume_horaire vh + JOIN service s ON s.id = vh.service_id AND s.histo_destruction IS NULL + WHERE + vh.histo_destruction IS NULL + AND (vh.contrat_id = :OLD.id OR vh.contrat_id = :NEW.id) - WHEN NOT MATCHED THEN INSERT ( + ) LOOP - id, - wf_etape_dep_id, - tbl_workflow_id, - to_delete + UNICAEN_TBL.DEMANDE_CALCUL('formule', UNICAEN_TBL.make_params('INTERVENANT_ID', p.intervenant_id) ); - ) VALUES ( + END LOOP; - WF_DEP_BLOQUANTE_ID_SEQ.NEXTVAL, - db.wf_etape_dep_id, - db.tbl_workflow_id, - 0 +END; - ); - END; +/ +ALTER TRIGGER "F_CONTRAT" ENABLE; + +-- F_CONTRAT_S +CREATE OR REPLACE TRIGGER "F_CONTRAT_S" + AFTER DELETE OR UPDATE ON "CONTRAT" + BEGIN + UNICAEN_TBL.CALCULER_DEMANDES; +END; +/ +ALTER TRIGGER "F_CONTRAT_S" ENABLE; - PROCEDURE ENREGISTRER( INTERVENANT_ID NUMERIC ) IS - i PLS_INTEGER; +-- F_ELEMENT_MODULATEUR +CREATE OR REPLACE TRIGGER "F_ELEMENT_MODULATEUR" + AFTER INSERT OR DELETE OR UPDATE ON "ELEMENT_MODULATEUR" + REFERENCING FOR EACH ROW BEGIN - UPDATE tbl_workflow SET to_delete = 1 WHERE intervenant_id = ENREGISTRER.INTERVENANT_ID; - UPDATE wf_dep_bloquante SET to_delete = 1 WHERE tbl_workflow_id IN (SELECT id FROM tbl_workflow WHERE intervenant_id = ENREGISTRER.INTERVENANT_ID); - - i := etapes.FIRST; - LOOP EXIT WHEN i IS NULL; - etapes(i).id := ENREGISTRER_ETAPE( etapes(i) ); - i := etapes.NEXT(i); - END LOOP; + IF NOT UNICAEN_TBL.ACTIV_TRIGGERS THEN RETURN; END IF; - i := deps_bloquantes.FIRST; - LOOP EXIT WHEN i IS NULL; - deps_bloquantes(i).tbl_workflow_id := etapes(deps_bloquantes(i).tbl_workflow_id).id; - ENREGISTRER_DEP_BLOQUANTE( deps_bloquantes(i) ); - i := deps_bloquantes.NEXT(i); - END LOOP; + FOR p IN ( - DELETE FROM tbl_workflow WHERE TO_DELETE = 1 AND intervenant_id = ENREGISTRER.INTERVENANT_ID; - DELETE FROM wf_dep_bloquante WHERE TO_DELETE = 1; - END; + SELECT DISTINCT + s.intervenant_id + FROM + service s + WHERE + s.histo_destruction IS NULL + AND (s.element_pedagogique_id = :OLD.element_id OR s.element_pedagogique_id = :NEW.element_id) + ) LOOP + UNICAEN_TBL.DEMANDE_CALCUL('formule', UNICAEN_TBL.make_params('INTERVENANT_ID', p.intervenant_id) ); - PROCEDURE DEP_CHECK( etape_suiv_id NUMERIC, etape_prec_id NUMERIC ) IS - eso NUMERIC; - epo NUMERIC; - BEGIN - SELECT ordre INTO eso FROM wf_etape WHERE id = etape_suiv_id; - SELECT ordre INTO epo FROM wf_etape WHERE id = etape_prec_id; + END LOOP; - IF eso < epo THEN - raise_application_error(-20101, 'Une étape de Workflow ne peut dépendre d''une étape située en aval'); - END IF; - IF eso = epo THEN - raise_application_error(-20101, 'Une étape de Workflow ne peut dépendre d''elle-même'); - END IF; - END; +END; +/ +ALTER TRIGGER "F_ELEMENT_MODULATEUR" ENABLE; - PROCEDURE DEBUG_CALCUL( INTERVENANT_ID NUMERIC ) IS - i PLS_INTEGER; - d PLS_INTEGER; - dep_desc VARCHAR2(200); +-- F_ELEMENT_MODULATEUR_S +CREATE OR REPLACE TRIGGER "F_ELEMENT_MODULATEUR_S" + AFTER INSERT OR DELETE OR UPDATE ON "ELEMENT_MODULATEUR" BEGIN - ose_test.echo(''); - ose_test.echo('-- DEBUG WORKFLOW ETAPE INTERVENANT_ID='|| INTERVENANT_ID ||' --'); - i := etapes.FIRST; - LOOP EXIT WHEN i IS NULL; - /*ose_test.echo( - 'etape=' || RPAD( ose_test.get_wf_etape_by_id(etapes(i).etape_id).code, 30, ' ' ) - || ', structure=' || RPAD( NVL(ose_test.get_structure_by_id(etapes(i).structure_id).libelle_court,' '), 20, ' ' ) - || ', ' || CASE WHEN etapes(i).atteignable=1 THEN 'atteignable' ELSE 'na' END - || ', objectif= ' || ROUND(etapes(i).objectif) - || ', realisation= ' || ROUND(etapes(i).realisation) - );*/ + UNICAEN_TBL.CALCULER_DEMANDES; +END; - d := deps_bloquantes.FIRST; - LOOP EXIT WHEN d IS NULL; - IF deps_bloquantes(d).tbl_workflow_id = i THEN - SELECT - we.desc_non_franchie INTO dep_desc - FROM - wf_etape_dep wed - JOIN wf_etape we ON we.id = wed.etape_prec_id - WHERE - wed.id = deps_bloquantes(d).wf_etape_dep_id; +/ +ALTER TRIGGER "F_ELEMENT_MODULATEUR_S" ENABLE; - ose_test.echo(' CAUSE =' || dep_desc); - END IF; - d := deps_bloquantes.NEXT(d); - END LOOP; +-- F_ELEMENT_PEDAGOGIQUE +CREATE OR REPLACE TRIGGER "F_ELEMENT_PEDAGOGIQUE" + AFTER DELETE OR UPDATE OF ID, STRUCTURE_ID, PERIODE_ID, TAUX_FI, TAUX_FC, TAUX_FA, TAUX_FOAD, FI, FC, FA, HISTO_CREATION, HISTO_DESTRUCTION, ANNEE_ID ON "ELEMENT_PEDAGOGIQUE" + REFERENCING FOR EACH ROW + BEGIN - i := etapes.NEXT(i); - END LOOP; - ose_test.echo(''); - END; + IF NOT UNICAEN_TBL.ACTIV_TRIGGERS THEN RETURN; END IF; + FOR p IN + ( SELECT DISTINCT s.intervenant_id + FROM service s + WHERE (s.element_pedagogique_id = :NEW.id + OR s.element_pedagogique_id = :OLD.id) + AND s.histo_destruction IS NULL + ) LOOP UNICAEN_TBL.DEMANDE_CALCUL('formule', UNICAEN_TBL.make_params('INTERVENANT_ID', p.intervenant_id) ); +END LOOP; +END; +/ +ALTER TRIGGER "F_ELEMENT_PEDAGOGIQUE" ENABLE; - -- calcul du workflow pour un intervenant - PROCEDURE CALCULER( INTERVENANT_ID NUMERIC ) IS +-- F_ELEMENT_PEDAGOGIQUE_S +CREATE OR REPLACE TRIGGER "F_ELEMENT_PEDAGOGIQUE_S" + AFTER DELETE OR UPDATE ON "ELEMENT_PEDAGOGIQUE" BEGIN - set_intervenant(intervenant_id); - POPULATE_ETAPES( INTERVENANT_ID ); - POPULATE_DEPS( INTERVENANT_ID ); - CALCUL_ATTEIGNABLES; - IF OSE_TEST.DEBUG_ENABLED THEN - DEBUG_CALCUL( INTERVENANT_ID ); - END IF; - ENREGISTRER( INTERVENANT_ID ); - set_intervenant(); - END; + UNICAEN_TBL.CALCULER_DEMANDES; +END; +/ +ALTER TRIGGER "F_ELEMENT_PEDAGOGIQUE_S" ENABLE; - PROCEDURE CALCULER_TOUT( ANNEE_ID NUMERIC DEFAULT NULL ) IS +-- F_INTERVENANT +CREATE OR REPLACE TRIGGER "F_INTERVENANT" + AFTER UPDATE OF ID, DATE_NAISSANCE, STATUT_ID, STRUCTURE_ID, HISTO_CREATION, HISTO_DESTRUCTION, PREMIER_RECRUTEMENT, ANNEE_ID ON "INTERVENANT" + REFERENCING FOR EACH ROW BEGIN - FOR mp IN ( - SELECT - id intervenant_id - FROM - intervenant i - WHERE - i.histo_destruction IS NULL - AND (CALCULER_TOUT.ANNEE_ID IS NULL OR i.annee_id = CALCULER_TOUT.ANNEE_ID) - ) - LOOP - CALCULER( mp.intervenant_id ); - END LOOP; - END; + IF NOT UNICAEN_TBL.ACTIV_TRIGGERS THEN RETURN; END IF; + + FOR p IN ( + SELECT DISTINCT + fr.intervenant_id + FROM + formule_resultat fr + WHERE + fr.intervenant_id = :NEW.id OR fr.intervenant_id = :OLD.id - PROCEDURE CALCULER_TBL( PARAMS UNICAEN_TBL.T_PARAMS ) IS - intervenant_id NUMERIC; - TYPE r_cursor IS REF CURSOR; - diff_cur r_cursor; - BEGIN - OPEN diff_cur FOR 'WITH interv AS (SELECT id intervenant_id, intervenant.* FROM intervenant) - SELECT intervenant_id FROM interv WHERE ' || unicaen_tbl.PARAMS_TO_CONDS( params ); - LOOP - FETCH diff_cur INTO intervenant_id; EXIT WHEN diff_cur%NOTFOUND; - BEGIN - CALCULER( intervenant_id ); - END; - END LOOP; - CLOSE diff_cur; - END; + ) LOOP + UNICAEN_TBL.DEMANDE_CALCUL('formule', UNICAEN_TBL.make_params('INTERVENANT_ID', p.intervenant_id) ); + END LOOP; - FUNCTION GET_INTERVENANT RETURN NUMERIC IS - BEGIN - RETURN OSE_WORKFLOW.INTERVENANT_ID; - END; +END; - PROCEDURE SET_INTERVENANT( INTERVENANT_ID NUMERIC DEFAULT NULL) IS - BEGIN - IF SET_INTERVENANT.INTERVENANT_ID = -1 THEN - OSE_WORKFLOW.INTERVENANT_ID := NULL; - ELSE - OSE_WORKFLOW.INTERVENANT_ID := SET_INTERVENANT.INTERVENANT_ID; - END IF; - END; - FUNCTION MATCH_INTERVENANT(INTERVENANT_ID NUMERIC DEFAULT NULL) RETURN NUMERIC IS - BEGIN - IF OSE_WORKFLOW.INTERVENANT_ID IS NULL OR OSE_WORKFLOW.INTERVENANT_ID = MATCH_INTERVENANT.INTERVENANT_ID THEN - RETURN 1; - ELSE - RETURN 0; - END IF; - END; -END OSE_WORKFLOW; / +ALTER TRIGGER "F_INTERVENANT" ENABLE; --- UCBN_LDAP -CREATE OR REPLACE PACKAGE BODY "UCBN_LDAP" AS +-- F_INTERVENANT_S +CREATE OR REPLACE TRIGGER "F_INTERVENANT_S" + AFTER UPDATE ON "INTERVENANT" + BEGIN + UNICAEN_TBL.CALCULER_DEMANDES; +END; ---=================================================================== ---=================================================================== --- version() ---=================================================================== -FUNCTION version RETURN VARCHAR2 IS -BEGIN - RETURN ' 0.7.1 (2017-05-16) '; -END version; +/ +ALTER TRIGGER "F_INTERVENANT_S" ENABLE; ---=================================================================== ---=================================================================== --- free() ---=================================================================== -FUNCTION free RETURN NUMBER IS - l_retval PLS_INTEGER ; -BEGIN +-- F_MODIF_SERVICE_DU +CREATE OR REPLACE TRIGGER "F_MODIF_SERVICE_DU" + AFTER INSERT OR DELETE OR UPDATE ON "MODIFICATION_SERVICE_DU" + REFERENCING FOR EACH ROW BEGIN - l_retval := DBMS_LDAP.unbind_s(ld => ldap_sess); - RETURN l_retval ; - EXCEPTION - WHEN DBMS_LDAP.INVALID_SESSION THEN - RETURN NULL ; - END; -END free ; + IF NOT UNICAEN_TBL.ACTIV_TRIGGERS THEN RETURN; END IF; + + IF DELETING OR UPDATING THEN + UNICAEN_TBL.DEMANDE_CALCUL('formule', UNICAEN_TBL.make_params('INTERVENANT_ID', :OLD.intervenant_id) ); + END IF; + IF INSERTING OR UPDATING THEN + UNICAEN_TBL.DEMANDE_CALCUL('formule', UNICAEN_TBL.make_params('INTERVENANT_ID', :NEW.intervenant_id) ); + END IF; ---=================================================================== ---=================================================================== --- ldap_connect() ---=================================================================== -FUNCTION ldap_connect RETURN NUMBER IS - ldap_host VARCHAR2(256 char) := 'ldap.unicaen.fr'; - ldap_port VARCHAR2(3 char) := '389'; - ldap_user VARCHAR2(256 char) := 'uid=oracle-ldap,ou=system,dc=unicaen,dc=fr' ; - ldap_passwd VARCHAR2(30 char) := 'HBHOe2CQgrAI' ; - ldap_base VARCHAR2(256 char) := 'ou=people,dc=unicaen,dc=fr'; +END; - l_retval PLS_INTEGER ; - resultat VARCHAR2(1024 char) := NULL ; +/ +ALTER TRIGGER "F_MODIF_SERVICE_DU" ENABLE; -BEGIN - -- Ouverture de connexion +-- F_MODIF_SERVICE_DU_S +CREATE OR REPLACE TRIGGER "F_MODIF_SERVICE_DU_S" + AFTER INSERT OR DELETE OR UPDATE ON "MODIFICATION_SERVICE_DU" BEGIN - ldap_sess := DBMS_LDAP.init(hostname => ldap_host, - portnum => ldap_port) ; - EXCEPTION - WHEN DBMS_LDAP.INIT_FAILED THEN - RETURN 1 ; - END; + UNICAEN_TBL.CALCULER_DEMANDES; +END; - -- Authentification +/ +ALTER TRIGGER "F_MODIF_SERVICE_DU_S" ENABLE; + +-- F_MODULATEUR +CREATE OR REPLACE TRIGGER "F_MODULATEUR" + AFTER DELETE OR UPDATE ON "MODULATEUR" + REFERENCING FOR EACH ROW BEGIN - l_retval := DBMS_LDAP.simple_bind_s(ld => ldap_sess, - dn => ldap_user, - passwd => ldap_passwd) ; - EXCEPTION - WHEN DBMS_LDAP.GENERAL_ERROR THEN - l_retval := DBMS_LDAP.unbind_s(ld => ldap_sess); - RETURN 2 ; - WHEN DBMS_LDAP.INVALID_SESSION THEN - l_retval := DBMS_LDAP.unbind_s(ld => ldap_sess); - RETURN 2 ; - END; - RETURN 0 ; -END ldap_connect; + IF NOT UNICAEN_TBL.ACTIV_TRIGGERS THEN RETURN; END IF; + FOR p IN ( + SELECT DISTINCT + s.intervenant_id + FROM + service s + JOIN element_modulateur em ON + em.element_id = s.element_pedagogique_id + AND em.histo_destruction IS NULL + WHERE + s.histo_destruction IS NULL + AND (em.modulateur_id = :OLD.id OR em.modulateur_id = :NEW.id) + ) LOOP + UNICAEN_TBL.DEMANDE_CALCUL('formule', UNICAEN_TBL.make_params('INTERVENANT_ID', p.intervenant_id) ); ---=================================================================== ---=================================================================== --- get(filtre, attribut) ---=================================================================== -FUNCTION get(filtre IN VARCHAR2, attribut IN VARCHAR2, v_multi IN VARCHAR2 DEFAULT 'N', a_multi OUT ARRAY_STR) RETURN VARCHAR2 IS - ldap_base VARCHAR2(256 char) := 'ou=people,dc=unicaen,dc=fr'; - l_retval PLS_INTEGER ; - l_attrs DBMS_LDAP.string_collection ; - l_message DBMS_LDAP.message ; - l_entry DBMS_LDAP.message ; - l_attr_name VARCHAR2(256 char) ; - l_ber_element DBMS_LDAP.ber_element; - l_vals DBMS_LDAP.string_collection; + END LOOP; +END; - i PLS_INTEGER ; - nb_res PLS_INTEGER ; - probleme EXCEPTION ; - resultat VARCHAR2(1024 char) := NULL ; - elapsed_since_used NUMBER ; +/ +ALTER TRIGGER "F_MODULATEUR" ENABLE; -BEGIN +-- F_MODULATEUR_S +CREATE OR REPLACE TRIGGER "F_MODULATEUR_S" + AFTER DELETE OR UPDATE ON "MODULATEUR" + BEGIN + UNICAEN_TBL.CALCULER_DEMANDES; +END; - -- On regarde depuis combien de temps la session n'a pas ete utilisee - elapsed_since_used:= to_number( to_char( SYSDATE,'yyyymmddhh24miss' ) ) - last_used ; - last_used := to_number( to_char( SYSDATE,'yyyymmddhh24miss' ) ) ; - - -- Si c'est trop vieux, on se reconnecte - IF elapsed_since_used > 10 THEN - l_retval := free() ; - END IF ; - - -- Si on n'est pas connecte: - IF ldap_sess IS NULL THEN - DBMS_OUTPUT.PUT_LINE('Reconnexion au serveur LDAP...'); - l_retval := ldap_connect() ; - CASE l_retval - WHEN 1 THEN RETURN '#Err 0010'; - WHEN 2 THEN RETURN '#Err 0011'; - ELSE NULL; - END CASE; - END IF ; - - -- On cherche le mail seulement - l_attrs(1) := attribut ; - BEGIN - l_retval := DBMS_LDAP.search_s(ld => ldap_sess, - base => ldap_base, - scope => DBMS_LDAP.SCOPE_SUBTREE, - filter => filtre, - attrs => l_attrs, - attronly => 0, - res => l_message) ; - EXCEPTION - WHEN DBMS_LDAP.GENERAL_ERROR THEN - DBMS_OUTPUT.PUT_LINE('Erreur: '||SQLERRM); - RETURN '#Err 0020' ; - WHEN DBMS_LDAP.INVALID_SESSION THEN - RETURN '#Err 0021' ; - WHEN DBMS_LDAP.invalid_search_scope THEN - RETURN '#Err 0022' ; - END; +/ +ALTER TRIGGER "F_MODULATEUR_S" ENABLE; +-- F_MOTIF_MODIFICATION_SERVICE +CREATE OR REPLACE TRIGGER "F_MOTIF_MODIFICATION_SERVICE" + AFTER DELETE OR UPDATE ON "MOTIF_MODIFICATION_SERVICE" + REFERENCING FOR EACH ROW BEGIN - nb_res := DBMS_LDAP.count_entries(ld => ldap_sess, msg => l_message) ; - EXCEPTION - WHEN DBMS_LDAP.INVALID_SESSION THEN - RETURN '#Err 0030' ; - WHEN DBMS_LDAP.INVALID_MESSAGE THEN - RETURN '#Err 0031' ; - WHEN DBMS_LDAP.count_entry_error THEN - RETURN '#Err 0032' ; - END; - IF nb_res < 1 THEN - -- Pas besoin de fermer la connexion puisqu'on en utilise qu'une... - -- l_retval := DBMS_LDAP.unbind_s(ld => ldap_sess); - -- RETURN '#Err 0033'; -- On retourne NULL depuis la 0.4.1 - RETURN NULL ; - END IF; + IF NOT UNICAEN_TBL.ACTIV_TRIGGERS THEN RETURN; END IF; - -- Les entrees retournees - BEGIN - l_entry := DBMS_LDAP.first_entry(ld => ldap_sess, msg => l_message); + FOR p IN ( - EXCEPTION - WHEN DBMS_LDAP.INVALID_SESSION THEN - RETURN '#Err 0034' ; - WHEN DBMS_LDAP.INVALID_MESSAGE THEN - RETURN '#Err 0035' ; - END; + SELECT DISTINCT + intervenant_id + FROM + modification_service_du msd + WHERE + msd.histo_destruction IS NULL + AND (msd.motif_id = :NEW.id OR msd.motif_id = :OLD.id) + ) LOOP - WHILE l_entry IS NOT NULL LOOP - -- Tous les attributs de l'entree: - BEGIN - l_attr_name := DBMS_LDAP.first_attribute(ld => ldap_sess, - ldapentry => l_entry, - ber_elem => l_ber_element); - EXCEPTION - WHEN DBMS_LDAP.INVALID_SESSION THEN - RETURN '#Err 0040' ; - WHEN DBMS_LDAP.INVALID_MESSAGE THEN - RETURN '#Err 0041' ; - END; + UNICAEN_TBL.DEMANDE_CALCUL('formule', UNICAEN_TBL.make_params('INTERVENANT_ID', p.intervenant_id) ); - WHILE l_attr_name IS NOT NULL LOOP - -- Les valeurs de cet attribut - BEGIN - l_vals := DBMS_LDAP.get_values (ld => ldap_sess, - ldapentry => l_entry, - attr => l_attr_name); - EXCEPTION - WHEN DBMS_LDAP.INVALID_SESSION THEN - RETURN '#Err 0044' ; - WHEN DBMS_LDAP.INVALID_MESSAGE THEN - RETURN '#Err 0045' ; - END; + END LOOP; - -- Si le nom de l'attribut ne correspond pas a l'attribut demande, next. - -- C'est pour empecher le retour de "supannAutreMail" quand on demande "mail" par exemple. - IF l_attr_name = attribut THEN - -- On ne retourne que la premiere valeur si mono-value - -- Sinon, on retourne le tableau a_multi - IF v_multi = 'N' THEN - resultat := l_vals(l_vals.FIRST) ; - ELSE - a_multi := ARRAY_STR() ; -- Initialisation du tableau - i := 0 ; -- tableau commence a 1 (d'ou i++ a l'entree du FOR) - FOR v IN l_vals.FIRST .. l_vals.LAST LOOP - i := i + 1 ; - a_multi.extend ; - a_multi(i) := l_vals(v) ; - END LOOP ; - resultat := '#Err Multi-value: '||i ; - END IF; - END IF; +END; - EXIT WHEN resultat IS NOT NULL ; - -- Attribut suivant - BEGIN - l_attr_name := DBMS_LDAP.next_attribute(ld => ldap_sess, - ldapentry => l_entry, - ber_elem => l_ber_element); - EXCEPTION - WHEN DBMS_LDAP.INVALID_SESSION THEN - RETURN '#Err 0042' ; - WHEN DBMS_LDAP.INVALID_MESSAGE THEN - RETURN '#Err 0043' ; - END; +/ +ALTER TRIGGER "F_MOTIF_MODIFICATION_SERVICE" ENABLE; - END LOOP ; -- LOOP Fin des attributs - IF l_ber_element IS NOT NULL THEN - DBMS_LDAP.ber_free(l_ber_element, 0) ; - END IF ; - EXIT WHEN resultat IS NOT NULL ; - BEGIN - l_entry := DBMS_LDAP.next_entry(ld => ldap_sess, - msg => l_entry); - EXCEPTION - WHEN DBMS_LDAP.INVALID_SESSION THEN - RETURN '#Err 0036' ; - WHEN DBMS_LDAP.INVALID_MESSAGE THEN - RETURN '#Err 0037' ; - END; - END LOOP ; -- LOOP Fin des entrees +-- F_MOTIF_MODIFICATION_SERVICE_S +CREATE OR REPLACE TRIGGER "F_MOTIF_MODIFICATION_SERVICE_S" + AFTER DELETE OR UPDATE ON "MOTIF_MODIFICATION_SERVICE" + BEGIN + UNICAEN_TBL.CALCULER_DEMANDES; +END; - -- Liberation de la memoire - --l_retval := DBMS_LDAP.msgfree(l_message) ; - IF l_entry IS NOT NULL THEN - l_retval := DBMS_LDAP.msgfree(l_entry) ; - END IF ; - -- Pas de deconnexion (on la reutilisera) - --l_retval := DBMS_LDAP.unbind_s(ld => l_session); - --DBMS_OUTPUT.PUT_LINE('L_RETVAL: ' || l_retval); +/ +ALTER TRIGGER "F_MOTIF_MODIFICATION_SERVICE_S" ENABLE; - RETURN resultat ; +-- F_STATUT_INTERVENANT +CREATE OR REPLACE TRIGGER "F_STATUT_INTERVENANT" + AFTER UPDATE OF SERVICE_STATUTAIRE, DEPASSEMENT, TYPE_INTERVENANT_ID, NON_AUTORISE ON "STATUT_INTERVENANT" + REFERENCING FOR EACH ROW + BEGIN -END get ; + IF NOT UNICAEN_TBL.ACTIV_TRIGGERS THEN RETURN; END IF; + FOR p IN ( + SELECT DISTINCT + fr.intervenant_id + FROM + intervenant i + JOIN formule_resultat fr ON fr.intervenant_id = i.id + WHERE + (i.statut_id = :NEW.id OR i.statut_id = :OLD.id) + AND i.histo_destruction IS NULL ---=================================================================== ---=================================================================== --- alias2mail(alias) ---=================================================================== -FUNCTION alias2mail(ldap_alias IN VARCHAR2) RETURN VARCHAR2 IS -BEGIN - RETURN get('supannAliasLogin='||ldap_alias, 'mail', 'N', a_multi) ; -END alias2mail; - ---=================================================================== ---=================================================================== --- uid2mail(ldap_uid) ---=================================================================== -FUNCTION uid2mail(ldap_uid IN VARCHAR2) RETURN VARCHAR2 IS -BEGIN - RETURN get('uid='||ldap_uid, 'mail', 'N', a_multi) ; -END uid2mail; + ) LOOP + UNICAEN_TBL.DEMANDE_CALCUL('formule', UNICAEN_TBL.make_params('INTERVENANT_ID', p.intervenant_id) ); ---=================================================================== ---=================================================================== --- hid2mail(harpege_uid) ---=================================================================== -FUNCTION hid2mail(harpege_uid IN NUMBER) RETURN VARCHAR2 IS -BEGIN - RETURN get('uid=p'||to_char(harpege_uid,'FM00000000'), 'mail', 'N', a_multi) ; -END hid2mail; + END LOOP; +END; ---=================================================================== ---=================================================================== --- etu2mail(code_etu) ---=================================================================== -FUNCTION etu2mail(code_etu IN NUMBER) RETURN VARCHAR2 IS -BEGIN - RETURN get('uid=e'||to_char(code_etu,'FM00000000'), 'mail', 'N', a_multi) ; -END etu2mail; +/ +ALTER TRIGGER "F_STATUT_INTERVENANT" ENABLE; +-- F_STATUT_INTERVENANT_S +CREATE OR REPLACE TRIGGER "F_STATUT_INTERVENANT_S" + AFTER UPDATE ON "STATUT_INTERVENANT" + BEGIN + UNICAEN_TBL.CALCULER_DEMANDES; +END; ---=================================================================== ---=================================================================== --- uid2alias(ldap_uid) ---=================================================================== -FUNCTION uid2alias(ldap_uid IN VARCHAR2) RETURN VARCHAR2 IS -BEGIN - RETURN get('uid='||ldap_uid, 'supannAliasLogin', 'N', a_multi) ; -END uid2alias; - ---=================================================================== ---=================================================================== --- hid2alias(harpege_uid) ---=================================================================== -FUNCTION hid2alias(harpege_uid IN NUMBER) RETURN VARCHAR2 IS -BEGIN - RETURN get('uid=p'||to_char(harpege_uid,'FM00000000'), 'supannAliasLogin', 'N', a_multi) ; -END hid2alias; +/ +ALTER TRIGGER "F_STATUT_INTERVENANT_S" ENABLE; ---=================================================================== ---=================================================================== --- uid2cn(ldap_uid) ---=================================================================== -FUNCTION uid2cn(ldap_uid IN VARCHAR2) RETURN VARCHAR2 IS -BEGIN - RETURN get('uid='||ldap_uid, 'cn', 'N', a_multi) ; -END uid2cn; +-- F_TYPE_INTERVENTION +CREATE OR REPLACE TRIGGER "F_TYPE_INTERVENTION" + AFTER UPDATE OF TAUX_HETD_SERVICE, TAUX_HETD_COMPLEMENTAIRE ON "TYPE_INTERVENTION" + REFERENCING FOR EACH ROW + BEGIN + IF NOT UNICAEN_TBL.ACTIV_TRIGGERS THEN RETURN; END IF; ---=================================================================== ---=================================================================== --- uid2sn(ldap_uid) ---=================================================================== -FUNCTION uid2sn(ldap_uid IN VARCHAR2) RETURN VARCHAR2 IS -BEGIN - RETURN get('uid='||ldap_uid, 'sn', 'N', a_multi) ; -END uid2sn; - ---=================================================================== ---=================================================================== --- uid2givenname(ldap_uid) ---=================================================================== -FUNCTION uid2givenname(ldap_uid IN VARCHAR2) RETURN VARCHAR2 IS -BEGIN - RETURN get('uid='||ldap_uid, 'givenname', 'N', a_multi) ; -END uid2givenname; - ---=================================================================== ---=================================================================== --- uid2gn(ldap_uid) ---=================================================================== -FUNCTION uid2gn(ldap_uid IN VARCHAR2) RETURN VARCHAR2 IS -BEGIN - RETURN get('uid='||ldap_uid, 'givenname', 'N', a_multi)||' '||get('uid='||ldap_uid, 'sn', 'N', a_multi) ; -END uid2gn; + FOR p IN ( + + SELECT DISTINCT + s.intervenant_id + FROM + volume_horaire vh + JOIN service s ON s.id = vh.service_id AND s.histo_destruction IS NULL + WHERE + vh.histo_destruction IS NULL + AND (vh.type_intervention_id = :NEW.id OR vh.type_intervention_id = :OLD.id) + ) LOOP + UNICAEN_TBL.DEMANDE_CALCUL('formule', UNICAEN_TBL.make_params('INTERVENANT_ID', p.intervenant_id) ); ---=================================================================== ---=================================================================== --- hidIsPrimaryTeacher(harpege_uid) --- --- Verifie eduPersonPrimaryAffiliation ---=================================================================== -FUNCTION hidIsPrimaryTeacher(harpege_uid IN NUMBER) RETURN VARCHAR2 IS - l_resultat VARCHAR2(1024 char) := NULL ; - isTeacher VARCHAR2(1) := 'N' ; -BEGIN - l_resultat := get('uid=p'||to_char(harpege_uid,'FM00000000'), 'eduPersonPrimaryAffiliation', 'N', a_multi) ; + END LOOP; +END; - IF l_resultat IS NULL THEN - RETURN NULL ; - END IF ; - IF SUBSTR( l_resultat, 1, 4 ) = '#Err' THEN - RETURN l_resultat ; - END IF ; +/ +ALTER TRIGGER "F_TYPE_INTERVENTION" ENABLE; - IF l_resultat = 'teacher' THEN - isTeacher := 'O' ; - END IF ; +-- F_TYPE_INTERVENTION_S +CREATE OR REPLACE TRIGGER "F_TYPE_INTERVENTION_S" + AFTER UPDATE ON "TYPE_INTERVENTION" + BEGIN + UNICAEN_TBL.CALCULER_DEMANDES; +END; - RETURN isTeacher ; -END hidIsPrimaryTeacher; +/ +ALTER TRIGGER "F_TYPE_INTERVENTION_S" ENABLE; +-- INDIC_TRG_MODIF_DOSSIER +CREATE OR REPLACE TRIGGER "INDIC_TRG_MODIF_DOSSIER" + AFTER INSERT OR UPDATE OF NOM_USUEL, NOM_PATRONYMIQUE, PRENOM, CIVILITE_ID, ADRESSE, RIB, DATE_NAISSANCE ON "DOSSIER" ---=================================================================== ---=================================================================== --- hidIsTeacher(harpege_uid) --- --- Retourne NULL si non trouve, --- O si flag teacher ou faculty --- N si pas ce flag. ---=================================================================== -FUNCTION hidIsTeacher(harpege_uid IN NUMBER) RETURN VARCHAR2 IS - l_resultat VARCHAR2(1024 char) := NULL ; - isTeacher VARCHAR2(1) := 'N' ; -BEGIN - l_resultat := get('uid=p'||to_char(harpege_uid,'FM00000000'), 'eduPersonAffiliation', 'Y', a_multi) ; - -- ici, l_resultat ne contient que '#Err Multi-value: i' - - -- On verifie qu'on a bien obtenu des resultats - IF l_resultat IS NULL OR SUBSTR( l_resultat, 1, 18) != '#Err Multi-value: ' THEN - RETURN l_resultat ; - END IF ; - - -- Le Nombre de resultats - IF a_multi.count = 0 THEN - RETURN NULL ; - END IF ; - - FOR i IN 1 .. a_multi.count LOOP - IF a_multi(i)='teacher' THEN - isTeacher := 'O' ; - END IF ; - END LOOP ; - - RETURN isTeacher ; - -END hidIsTeacher; - - ---=================================================================== ---=================================================================== --- getInvites() --- --- Reprend la fonction "get" mais ecrit les resultats dans une table ---=================================================================== -PROCEDURE getInvites(l_table IN VARCHAR2) IS - -- Les valeurs qu'on recherche - l_uid VARCHAR2(10 char) ; - l_ucbnstatus VARCHAR2(12 char) ; - l_login VARCHAR2(32 char) ; - l_nom_usuel VARCHAR2(128 char) ; - l_prenom VARCHAR2(128 char) ; - l_d_naissance VARCHAR2(8 char) ; - l_d_fin_insc VARCHAR2(8 char) ; - l_affectation VARCHAR2(8 char) ; - l_parrain_dn VARCHAR2(64 char) ; - - -- Les variables pour le requetage LDAP - ldap_base VARCHAR2(256 char) := 'ou=people,dc=unicaen,dc=fr'; - ldap_filtre VARCHAR2(256 char) ; - l_retval PLS_INTEGER ; - l_attrs DBMS_LDAP.string_collection ; - l_message DBMS_LDAP.message ; - l_entry DBMS_LDAP.message ; - l_attr_name VARCHAR2(256 char) ; - l_ber_element DBMS_LDAP.ber_element; - l_vals DBMS_LDAP.string_collection; - - i PLS_INTEGER ; - nb_res PLS_INTEGER ; - probleme EXCEPTION ; - resultat VARCHAR2(1024 char) := NULL ; - requete VARCHAR2(4000 char) ; - - elapsed_since_used NUMBER ; + FOR EACH ROW +/** + * But : mettre à jour la liste des PJ attendues. + */ +DECLARE + i integer := 1; + intervenantId NUMERIC; + found integer; + estCreationDossier integer; + type array_t is table of varchar2(1024); + + attrNames array_t := array_t(); + attrOldVals array_t := array_t(); + attrNewVals array_t := array_t(); + -- valeurs importées (format texte) : + impSourceName source.libelle%type; + impNomUsuel indic_modif_dossier.ATTR_NEW_VALUE%type; + impNomPatro indic_modif_dossier.ATTR_NEW_VALUE%type; + impPrenom indic_modif_dossier.ATTR_NEW_VALUE%type; + impCivilite indic_modif_dossier.ATTR_NEW_VALUE%type; + impDateNaiss indic_modif_dossier.ATTR_NEW_VALUE%type; + impAdresse indic_modif_dossier.ATTR_NEW_VALUE%type; + impRib indic_modif_dossier.ATTR_NEW_VALUE%type; + -- anciennes valeurs dans le dossier (format texte) : + oldSourceName source.libelle%type; + oldNomUsuel indic_modif_dossier.ATTR_NEW_VALUE%type; + oldNomPatro indic_modif_dossier.ATTR_NEW_VALUE%type; + oldPrenom indic_modif_dossier.ATTR_NEW_VALUE%type; + oldCivilite indic_modif_dossier.ATTR_NEW_VALUE%type; + oldDateNaiss indic_modif_dossier.ATTR_NEW_VALUE%type; + oldAdresse indic_modif_dossier.ATTR_NEW_VALUE%type; + oldRib indic_modif_dossier.ATTR_NEW_VALUE%type; + -- nouvelles valeurs dans le dossier (format texte) : + newSourceName source.libelle%type; + newNomUsuel indic_modif_dossier.ATTR_NEW_VALUE%type; + newNomPatro indic_modif_dossier.ATTR_NEW_VALUE%type; + newPrenom indic_modif_dossier.ATTR_NEW_VALUE%type; + newCivilite indic_modif_dossier.ATTR_NEW_VALUE%type; + newDateNaiss indic_modif_dossier.ATTR_NEW_VALUE%type; + newAdresse indic_modif_dossier.ATTR_NEW_VALUE%type; + newRib indic_modif_dossier.ATTR_NEW_VALUE%type; BEGIN - -- On fabrique le filtre a partir de la date en cours: - ldap_filtre := '(&(|(ucbnStatus=LECTEUR_SCD)(ucbnStatus=APPRENANT)(ucbnStatus=INVITE))(dateFinInscription>='||to_char(SYSDATE,'YYYYMMDD')||'))' ; - - -- On regarde depuis combien de temps la session n'a pas ete utilisee - elapsed_since_used:= to_number( to_char( SYSDATE,'yyyymmddhh24miss' ) ) - last_used ; - last_used := to_number( to_char( SYSDATE,'yyyymmddhh24miss' ) ) ; - - -- Si c'est trop vieux, on se reconnecte - IF elapsed_since_used > 10 THEN - l_retval := free() ; - END IF ; - - -- Si on n'est pas connecte: - IF ldap_sess IS NULL THEN - DBMS_OUTPUT.PUT_LINE('Reconnexion au serveur LDAP...'); - l_retval := ldap_connect() ; - CASE l_retval - WHEN 1 THEN DBMS_OUTPUT.PUT_LINE('#Err 0010') ; - WHEN 2 THEN DBMS_OUTPUT.PUT_LINE('#Err 0011') ; - ELSE NULL; - END CASE; - END IF ; - - -- Les attributs LDAP qu'on recherche: - l_attrs(1) := 'uid' ; - l_attrs(2) := 'sn' ; - l_attrs(3) := 'givenName' ; - l_attrs(4) := 'dateDeNaissance' ; - l_attrs(5) := 'dateFinInscription' ; - l_attrs(6) := 'supannAliasLogin' ; - l_attrs(7) := 'supannEntiteAffectation' ; - l_attrs(8) := 'ucbnStatus' ; - l_attrs(9) := 'supannParrainDN' ; - BEGIN - l_retval := DBMS_LDAP.search_s(ld => ldap_sess, - base => ldap_base, - scope => DBMS_LDAP.SCOPE_SUBTREE, - filter => ldap_filtre, - attrs => l_attrs, - attronly => 0, - res => l_message) ; - EXCEPTION - WHEN DBMS_LDAP.GENERAL_ERROR THEN - DBMS_OUTPUT.PUT_LINE('Erreur: '||SQLERRM); - DBMS_OUTPUT.PUT_LINE('#Err 0020') ; - WHEN DBMS_LDAP.INVALID_SESSION THEN - DBMS_OUTPUT.PUT_LINE('#Err 0021') ; - WHEN DBMS_LDAP.invalid_search_scope THEN - DBMS_OUTPUT.PUT_LINE('#Err 0022') ; - END; - - BEGIN - nb_res := DBMS_LDAP.count_entries(ld => ldap_sess, msg => l_message) ; - EXCEPTION - WHEN DBMS_LDAP.INVALID_SESSION THEN - DBMS_OUTPUT.PUT_LINE('#Err 0030') ; - WHEN DBMS_LDAP.INVALID_MESSAGE THEN - DBMS_OUTPUT.PUT_LINE('#Err 0031') ; - WHEN DBMS_LDAP.count_entry_error THEN - DBMS_OUTPUT.PUT_LINE('#Err 0032') ; - END; - - IF nb_res < 1 THEN - -- Pas besoin de fermer la connexion puisqu'on en utilise qu'une... - -- l_retval := DBMS_LDAP.unbind_s(ld => ldap_sess); - -- RETURN '#Err 0033'; -- On retourne NULL depuis la 0.4.1 - DBMS_OUTPUT.PUT_LINE('#Err 0033') ; - END IF; - - -- Les entrees retournees - BEGIN - l_entry := DBMS_LDAP.first_entry(ld => ldap_sess, msg => l_message); - - EXCEPTION - WHEN DBMS_LDAP.INVALID_SESSION THEN - DBMS_OUTPUT.PUT_LINE('#Err 0034') ; - WHEN DBMS_LDAP.INVALID_MESSAGE THEN - DBMS_OUTPUT.PUT_LINE('#Err 0035') ; - END; + -- + -- Témoin indiquant s'il s'agit d'une création de dossier (insert). + -- + estCreationDossier := case when inserting then 1 else 0 end; + -- + -- Fetch source OSE. + -- + select s.libelle into newSourceName from source s where s.code = 'OSE'; - WHILE l_entry IS NOT NULL LOOP - -- Tous les attributs de l'entree: - BEGIN - l_attr_name := DBMS_LDAP.first_attribute(ld => ldap_sess, - ldapentry => l_entry, - ber_elem => l_ber_element); - EXCEPTION - WHEN DBMS_LDAP.INVALID_SESSION THEN - DBMS_OUTPUT.PUT_LINE('#Err 0040') ; - WHEN DBMS_LDAP.INVALID_MESSAGE THEN - DBMS_OUTPUT.PUT_LINE('#Err 0041') ; - END; + -- + -- Fetch et formattage texte des valeurs importées. + -- + select + i.id, + s.libelle, + nvl(i.NOM_USUEL, '(Aucun)'), + nvl(i.NOM_PATRONYMIQUE, '(Aucun)'), + nvl(i.PRENOM, '(Aucun)'), + nvl(c.libelle_court, '(Aucune)'), + nvl(to_char(i.DATE_NAISSANCE, 'DD/MM/YYYY'), '(Aucune)'), + nvl(ose_divers.formatted_rib(i.bic, i.iban), '(Aucun)'), + case when a.id is not null + then ose_divers.formatted_adresse(a.NO_VOIE, a.NOM_VOIE, a.BATIMENT, a.MENTION_COMPLEMENTAIRE, a.LOCALITE, a.CODE_POSTAL, a.VILLE, a.PAYS_LIBELLE) + else '(Aucune)' + end + into + intervenantId, + oldSourceName, + impNomUsuel, + impNomPatro, + impPrenom, + impCivilite, + impDateNaiss, + impRib, + impAdresse + from intervenant i + join source s on s.id = i.source_id + left join civilite c on c.id = i.civilite_id + left join adresse_intervenant a on a.intervenant_id = i.id + where i.id = :NEW.intervenant_id; - WHILE l_attr_name IS NOT NULL LOOP - -- Les valeurs de cet attribut - BEGIN - l_vals := DBMS_LDAP.get_values (ld => ldap_sess, - ldapentry => l_entry, - attr => l_attr_name); - EXCEPTION - WHEN DBMS_LDAP.INVALID_SESSION THEN - DBMS_OUTPUT.PUT_LINE('#Err 0044') ; - WHEN DBMS_LDAP.INVALID_MESSAGE THEN - DBMS_OUTPUT.PUT_LINE('#Err 0045') ; - END; + -- + -- Anciennes valeurs dans le cas d'une création de dossier : ce sont les valeurs importées. + -- + if (1 = estCreationDossier) then + --dbms_output.put_line('inserting'); + oldNomUsuel := impNomUsuel; + oldNomPatro := impNomPatro; + oldPrenom := impPrenom; + oldCivilite := impCivilite; + oldDateNaiss := impDateNaiss; + oldAdresse := impAdresse; + oldRib := impRib; + -- + -- Anciennes valeurs dans le cas d'une mise à jour du dossier. + -- + else + --dbms_output.put_line('updating'); + oldNomUsuel := trim(:OLD.NOM_USUEL); + oldNomPatro := trim(:OLD.NOM_PATRONYMIQUE); + oldPrenom := trim(:OLD.PRENOM); + oldDateNaiss := case when :OLD.DATE_NAISSANCE is null then '(Aucune)' else to_char(:OLD.DATE_NAISSANCE, 'DD/MM/YYYY') end; + oldAdresse := trim(:OLD.ADRESSE); + oldRib := trim(:OLD.RIB); + if :OLD.CIVILITE_ID is not null then + select c.libelle_court into oldCivilite from civilite c where c.id = :OLD.CIVILITE_ID; + else + oldCivilite := '(Aucune)'; + end if; + select s.libelle into oldSourceName from source s where s.code = 'OSE'; + end if; - -- On ne retourne que la premiere valeur - CASE - WHEN l_attr_name = 'uid' THEN l_uid := l_vals(l_vals.FIRST) ; - WHEN l_attr_name = 'ucbnStatus' THEN l_ucbnstatus := l_vals(l_vals.FIRST) ; - WHEN l_attr_name = 'supannAliasLogin' THEN l_login := l_vals(l_vals.FIRST) ; - WHEN l_attr_name = 'sn' THEN l_nom_usuel := l_vals(l_vals.FIRST) ; - WHEN l_attr_name = 'givenName' THEN l_prenom := l_vals(l_vals.FIRST) ; - WHEN l_attr_name = 'dateDeNaissance' THEN l_d_naissance := l_vals(l_vals.FIRST) ; - WHEN l_attr_name = 'dateFinInscription' THEN l_d_fin_insc := l_vals(l_vals.FIRST) ; - WHEN l_attr_name = 'supannEntiteAffectation' THEN l_affectation := SUBSTR( l_vals(l_vals.FIRST), 4 ) ; - WHEN l_attr_name = 'supannParrainDN' THEN l_parrain_dn := l_vals(l_vals.FIRST) ; - END CASE ; - - -- Attribut suivant - BEGIN - l_attr_name := DBMS_LDAP.next_attribute(ld => ldap_sess, - ldapentry => l_entry, - ber_elem => l_ber_element); - EXCEPTION - WHEN DBMS_LDAP.INVALID_SESSION THEN - DBMS_OUTPUT.PUT_LINE('#Err 0042') ; - WHEN DBMS_LDAP.INVALID_MESSAGE THEN - DBMS_OUTPUT.PUT_LINE('#Err 0043') ; - END; - END LOOP ; -- LOOP Fin des attributs - - -- On insere les valeurs dans la table - dbms_output.put_line('uid= '||l_uid||' ('||l_affectation||') fin: '||l_d_fin_insc) ; - requete := 'SELECT count(*) FROM '||l_table||' WHERE ldap_uid= :l_uid' ; - EXECUTE IMMEDIATE requete INTO nb_res USING l_uid ; - IF nb_res = 0 THEN - -- un INSERT - requete := 'INSERT INTO '||l_table||'(ucbnstatus, login, nom_usuel, prenom, d_naissance, d_fin_insc, affectation, parrain_dn, ldap_uid) VALUES ' ; - requete := requete||'(:l_ucbnstatus, :l_login, :l_nom_usuel, :l_prenom, to_date(:l_d_naissance,''YYYYMMDD''), to_date(:l_d_fin_insc,''YYYYMMDD''), :l_affectation, :l_parrain_dn, :l_uid )' ; - dbms_output.put_line('req= '||requete) ; - ELSE - -- un UPDATE - requete := 'UPDATE '||l_table||' SET ' ; - requete := requete||'ucbnstatus=:l_ucbnstatus, login=:l_login, nom_usuel=:l_nom_usuel, prenom=:l_prenom, d_naissance=to_date(:l_d_naissance,''YYYYMMDD''), ' ; - requete := requete||'d_fin_insc=to_date(:l_d_fin_insc,''YYYYMMDD''), affectation=:l_affectation, parrain_dn=:l_parrain_dn ' ; - requete := requete||'WHERE ldap_uid=:l_uid' ; - dbms_output.put_line('req= '||requete) ; - END IF ; - -- Execution de la mise a jour de la table: - -- Attention, les variables sont bindees selon l'ordre, pas le nom !!!! - -- http://docs.oracle.com/cd/E11882_01/appdev.112/e25519/dynamic.htm#LNPLS631 - EXECUTE IMMEDIATE requete USING l_ucbnstatus, l_login, l_nom_usuel, l_prenom, l_d_naissance, l_d_fin_insc, l_affectation, l_parrain_dn, l_uid ; - - IF l_ber_element IS NOT NULL THEN - DBMS_LDAP.ber_free(l_ber_element, 0) ; - END IF ; - - BEGIN - l_entry := DBMS_LDAP.next_entry(ld => ldap_sess, - msg => l_entry); - EXCEPTION - WHEN DBMS_LDAP.INVALID_SESSION THEN - DBMS_OUTPUT.PUT_LINE('#Err 0036') ; - WHEN DBMS_LDAP.INVALID_MESSAGE THEN - DBMS_OUTPUT.PUT_LINE('#Err 0037') ; - END; + -- + -- Nouvelles valeurs saisies. + -- + newNomUsuel := trim(:NEW.NOM_USUEL); + newNomPatro := trim(:NEW.NOM_PATRONYMIQUE); + newPrenom := trim(:NEW.PRENOM); + newDateNaiss := case when :NEW.DATE_NAISSANCE is null then '(Aucune)' else to_char(:NEW.DATE_NAISSANCE, 'DD/MM/YYYY') end; + newAdresse := trim(:NEW.ADRESSE); + newRib := trim(:NEW.RIB); + if :NEW.CIVILITE_ID is not null then + select c.libelle_court into newCivilite from civilite c where c.id = :NEW.CIVILITE_ID; + else + newCivilite := '(Aucune)'; + end if; - END LOOP ; -- LOOP Fin des entrees + -- + -- Détection des différences. + -- + if newNomUsuel <> oldNomUsuel then + --dbms_output.put_line('NOM_USUEL ' || sourceLib || ' = ' || oldNomUsuel || ' --> NOM_USUEL OSE = ' || :NEW.NOM_USUEL); + attrNames.extend(1); + attrOldVals.extend(1); + attrNewVals.extend(1); + attrNames(i) := 'Nom usuel'; + attrOldVals(i) := oldNomUsuel; + attrNewVals(i) := newNomUsuel; + i := i + 1; + end if; + if newNomPatro <> oldNomPatro then + --dbms_output.put_line('NOM_PATRONYMIQUE ' || sourceLib || ' = ' || oldNomPatro || ' --> NOM_PATRONYMIQUE OSE = ' || :NEW.NOM_PATRONYMIQUE); + attrNames.extend(1); + attrOldVals.extend(1); + attrNewVals.extend(1); + attrNames(i) := 'Nom de naissance'; + attrOldVals(i) := oldNomPatro; + attrNewVals(i) := newNomPatro; + i := i + 1; + end if; + if newPrenom <> oldPrenom then + --dbms_output.put_line('PRENOM ' || sourceLib || ' = ' || oldPrenom || ' --> PRENOM OSE = ' || :NEW.PRENOM); + attrNames.extend(1); + attrOldVals.extend(1); + attrNewVals.extend(1); + attrNames(i) := 'Prénom'; + attrOldVals(i) := oldPrenom; + attrNewVals(i) := newPrenom; + i := i + 1; + end if; + if newCivilite <> oldCivilite then + --dbms_output.put_line('CIVILITE_ID ' || sourceLib || ' = ' || oldCivilite || ' --> CIVILITE_ID OSE = ' || :NEW.CIVILITE_ID); + attrNames.extend(1); + attrOldVals.extend(1); + attrNewVals.extend(1); + attrNames(i) := 'Civilité'; + attrOldVals(i) := oldCivilite; + attrNewVals(i) := newCivilite; + i := i + 1; + end if; + if newDateNaiss <> oldDateNaiss then + --dbms_output.put_line('DATE_NAISSANCE ' || sourceLib || ' = ' || oldDateNaiss || ' --> DATE_NAISSANCE OSE = ' || :NEW.DATE_NAISSANCE); + attrNames.extend(1); + attrOldVals.extend(1); + attrNewVals.extend(1); + attrNames(i) := 'Date de naissance'; + attrOldVals(i) := oldDateNaiss; + attrNewVals(i) := newDateNaiss; + i := i + 1; + end if; + if newAdresse <> oldAdresse then + --dbms_output.put_line('ADRESSE ' || sourceLib || ' = ' || oldAdresse || ' --> ADRESSE OSE = ' || :NEW.ADRESSE); + attrNames.extend(1); + attrOldVals.extend(1); + attrNewVals.extend(1); + attrNames(i) := 'Adresse postale'; + attrOldVals(i) := oldAdresse; + attrNewVals(i) := newAdresse; + i := i + 1; + end if; + if oldRib is null or newRib <> oldRib then + --dbms_output.put_line('RIB ' || sourceLib || ' = ' || oldRib || ' --> RIB OSE = ' || :NEW.RIB); + attrNames.extend(1); + attrOldVals.extend(1); + attrNewVals.extend(1); + attrNames(i) := 'RIB'; + attrOldVals(i) := oldRib; + attrNewVals(i) := newRib; + i := i + 1; + end if; - -- Liberation de la memoire - IF l_entry IS NOT NULL THEN - l_retval := DBMS_LDAP.msgfree(l_entry) ; - END IF ; + -- + -- Enregistrement des différences. + -- + for i in 1 .. attrNames.count loop + --dbms_output.put_line(attrNames(i) || ' ' || oldSourceName || ' = ' || attrOldVals(i) || ' --> ' || attrNames(i) || ' ' || newSourceName || ' = ' || attrNewVals(i)); - -- Pas de deconnexion (on la reutilisera) - -- Par contre on COMMIT : - commit ; + -- vérification que la même modif n'est pas déjà consignée + select count(*) into found from indic_modif_dossier + where INTERVENANT_ID = intervenantId + and ATTR_NAME = attrNames(i) + and ATTR_OLD_VALUE = to_char(attrOldVals(i)) + and ATTR_NEW_VALUE = to_char(attrNewVals(i)); + if found > 0 then + continue; + end if; -END getInvites ; + insert into INDIC_MODIF_DOSSIER( + id, + INTERVENANT_ID, + ATTR_NAME, + ATTR_OLD_SOURCE_NAME, + ATTR_OLD_VALUE, + ATTR_NEW_SOURCE_NAME, + ATTR_NEW_VALUE, + EST_CREATION_DOSSIER, -- témoin indiquant s'il s'agit d'une création ou d'une modification de dossier + HISTO_CREATION, -- NB: date de modification du dossier + HISTO_CREATEUR_ID, -- NB: auteur de la modification du dossier + HISTO_MODIFICATION, + HISTO_MODIFICATEUR_ID + ) + values ( + indic_modif_dossier_id_seq.nextval, + intervenantId, + attrNames(i), + oldSourceName, + to_char(attrOldVals(i)), + newSourceName, + to_char(attrNewVals(i)), + estCreationDossier, + :NEW.HISTO_MODIFICATION, + :NEW.HISTO_MODIFICATEUR_ID, + :NEW.HISTO_MODIFICATION, + :NEW.HISTO_MODIFICATEUR_ID + ); + end loop; +END; -END ucbn_ldap ; / +ALTER TRIGGER "INDIC_TRG_MODIF_DOSSIER" ENABLE; --- UNICAEN_IMPORT -CREATE OR REPLACE PACKAGE BODY "UNICAEN_IMPORT" AS - - v_current_user INTEGER; - v_current_annee INTEGER; - - - - FUNCTION get_current_user RETURN INTEGER IS - BEGIN - IF v_current_user IS NULL THEN - v_current_user := OSE_PARAMETRE.GET_OSE_USER(); - END IF; - RETURN v_current_user; - END get_current_user; - - PROCEDURE set_current_user (p_current_user INTEGER) is - BEGIN - v_current_user := p_current_user; - END set_current_user; - - - - FUNCTION get_current_annee RETURN INTEGER IS +-- INTERVENANT_HORO_SERVICE +CREATE OR REPLACE TRIGGER "INTERVENANT_HORO_SERVICE" + AFTER INSERT OR DELETE OR UPDATE ON "SERVICE" + REFERENCING FOR EACH ROW BEGIN - IF v_current_annee IS NULL THEN - v_current_annee := OSE_PARAMETRE.GET_ANNEE_IMPORT(); - END IF; - RETURN v_current_annee; - END get_current_annee; - PROCEDURE set_current_annee (p_current_annee INTEGER) IS - BEGIN - v_current_annee := p_current_annee; - END set_current_annee; + IF DELETING THEN + ose_divers.intervenant_horodatage_service( + :OLD.intervenant_id, + null, + 0, + :OLD.histo_modificateur_id, + :OLD.histo_modification + ); + ELSE - PROCEDURE SYNCHRONISATION( table_name VARCHAR2, SYNC_FILRE CLOB DEFAULT '', IGNORE_UPD_COLS CLOB DEFAULT '' ) IS - ok NUMERIC(1); - BEGIN - SELECT COUNT(*) INTO ok FROM import_tables it WHERE it.table_name = SYNCHRONISATION.table_name AND it.sync_enabled = 1 AND rownum = 1; + ose_divers.intervenant_horodatage_service( + :NEW.intervenant_id, + null, + 0, + :NEW.histo_modificateur_id, + :NEW.histo_modification + ); - IF 1 = ok THEN - z__SYNC_FILRE__z := SYNCHRONISATION.SYNC_FILRE; - z__IGNORE_UPD_COLS__z := SYNCHRONISATION.IGNORE_UPD_COLS; - EXECUTE IMMEDIATE 'BEGIN UNICAEN_IMPORT_AUTOGEN_PROCS__.' || table_name || '(); END;'; - END IF; - END; + END IF; +END; +/ +ALTER TRIGGER "INTERVENANT_HORO_SERVICE" ENABLE; - PROCEDURE REFRESH_MV( mview_name varchar2 ) IS +-- INTERVENANT_HORO_SERVICE_REF +CREATE OR REPLACE TRIGGER "INTERVENANT_HORO_SERVICE_REF" + AFTER INSERT OR DELETE OR UPDATE ON "SERVICE_REFERENTIEL" + REFERENCING FOR EACH ROW BEGIN - DBMS_MVIEW.REFRESH(mview_name, 'C'); - EXCEPTION WHEN OTHERS THEN - SYNC_LOG( SQLERRM, mview_name ); - END; + IF DELETING THEN + ose_divers.intervenant_horodatage_service( + :OLD.intervenant_id, + null, + 1, + :OLD.histo_modificateur_id, + :OLD.histo_modification + ); - PROCEDURE SYNC_LOG( message CLOB, table_name VARCHAR2 DEFAULT NULL, source_code VARCHAR2 DEFAULT NULL ) IS - BEGIN - INSERT INTO SYNC_LOG("ID","DATE_SYNC","MESSAGE","TABLE_NAME","SOURCE_CODE") VALUES (SYNC_LOG_ID_SEQ.NEXTVAL, SYSDATE, message,table_name,source_code); - END SYNC_LOG; + ELSE + ose_divers.intervenant_horodatage_service( + :NEW.intervenant_id, + null, + 1, + :NEW.histo_modificateur_id, + :NEW.histo_modification + ); + END IF; - FUNCTION IN_COLUMN_LIST( VALEUR VARCHAR2, CHAMPS CLOB ) RETURN NUMERIC IS - BEGIN - IF REGEXP_LIKE(CHAMPS, '(^|,)[ \t\r\n\v\f]*' || VALEUR || '[ \t\r\n\v\f]*(,|$)') THEN RETURN 1; END IF; - RETURN 0; - END; +END; -END UNICAEN_IMPORT; / +ALTER TRIGGER "INTERVENANT_HORO_SERVICE_REF" ENABLE; --- UNICAEN_OSE_FORMULE -CREATE OR REPLACE PACKAGE BODY "UNICAEN_OSE_FORMULE" AS +-- INTERVENANT_HORO_VH +CREATE OR REPLACE TRIGGER "INTERVENANT_HORO_VH" + AFTER INSERT OR DELETE OR UPDATE ON "VOLUME_HORAIRE" + REFERENCING FOR EACH ROW + DECLARE + intervenant_id NUMERIC; +BEGIN - /* Stockage des valeurs intermédiaires */ - TYPE t_valeurs IS TABLE OF FLOAT INDEX BY PLS_INTEGER; - TYPE t_tableau IS RECORD ( - valeurs t_valeurs, - total FLOAT DEFAULT 0 - ); - TYPE t_tableaux IS TABLE OF t_tableau INDEX BY PLS_INTEGER; - t t_tableaux; - current_id PLS_INTEGER; - /* Accès au stockage des valeurs intermédiaires */ - -- Initialisation des tableaux de valeurs intermédiaires - PROCEDURE V_INIT IS - BEGIN - t.delete; - END; - -- Setter d'une valeur intermédiaire au niveau case - PROCEDURE SV( tab_index PLS_INTEGER, id PLS_INTEGER, val FLOAT ) IS - BEGIN - t(tab_index).valeurs(id) := val; - t(tab_index).total := t(tab_index).total + val; - END; + IF DELETING THEN + SELECT s.intervenant_id INTO intervenant_id FROM service s WHERE s.id = :OLD.service_id; - -- Setter d'une valeur intermédiaire au niveau tableau - PROCEDURE SV( tab_index PLS_INTEGER, val FLOAT ) IS - BEGIN - t(tab_index).total := val; - END; + ose_divers.intervenant_horodatage_service( + intervenant_id, + :OLD.type_volume_horaire_id, + 0, + :OLD.histo_modificateur_id, + :OLD.histo_modification + ); - -- Getter d'une valeur intermédiaire, au niveau case - FUNCTION GV( tab_index PLS_INTEGER, id PLS_INTEGER DEFAULT NULL ) RETURN FLOAT IS - BEGIN - IF NOT t.exists(tab_index) THEN RETURN 0; END IF; - IF NOT t(tab_index).valeurs.exists( NVL(id,current_id) ) THEN RETURN 0; END IF; - RETURN t(tab_index).valeurs( NVL(id,current_id) ); - END; + ELSE + SELECT s.intervenant_id INTO intervenant_id FROM service s WHERE s.id = :NEW.service_id; - -- Getter d'une valeur intermédiaire, au niveau tableau - FUNCTION GT( tab_index PLS_INTEGER ) RETURN FLOAT IS - BEGIN - IF NOT t.exists(tab_index) THEN RETURN 0; END IF; - RETURN t(tab_index).total; - END; + ose_divers.intervenant_horodatage_service( + intervenant_id, + :NEW.type_volume_horaire_id, + 0, + :NEW.histo_modificateur_id, + :NEW.histo_modification + ); + END IF; - /* Débogage des valeurs intermédiaires */ - PROCEDURE DEBUG_TAB( tab_index PLS_INTEGER ) IS - id PLS_INTEGER; - BEGIN - ose_test.echo( 'Tableau numéro ' || tab_index ); +END; - id := ose_formule.d_service.FIRST; - LOOP EXIT WHEN id IS NULL; - dbms_output.put( 'Service id=' || lpad(id,6,' ') || ', data = ' ); +/ +ALTER TRIGGER "INTERVENANT_HORO_VH" ENABLE; - current_id := ose_formule.d_volume_horaire.FIRST; - LOOP EXIT WHEN current_id IS NULL; - dbms_output.put( lpad(gv(tab_index),10,' ') || ' | ' ); - current_id := ose_formule.d_volume_horaire.NEXT(current_id); - END LOOP; - dbms_output.new_line; - id := ose_formule.d_service.NEXT(id); - END LOOP; +-- INTERVENANT_HORO_VH_REF +CREATE OR REPLACE TRIGGER "INTERVENANT_HORO_VH_REF" + AFTER INSERT OR DELETE OR UPDATE ON "VOLUME_HORAIRE_REF" + REFERENCING FOR EACH ROW + DECLARE + intervenant_id NUMERIC; +BEGIN - ose_test.echo( 'TOTAL = ' || LPAD(gt(tab_index), 10, ' ') ); - END; + IF DELETING THEN + SELECT s.intervenant_id INTO intervenant_id FROM service_referentiel s WHERE s.id = :OLD.service_referentiel_id; - /* Calcul des valeurs intermédiaires */ - FUNCTION C2_11( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS - s ose_formule.t_service; - BEGIN - s := ose_formule.d_service( vh.service_id ); + ose_divers.intervenant_horodatage_service( + intervenant_id, + :OLD.type_volume_horaire_id, + 1, + :OLD.histo_modificateur_id, + :OLD.histo_modification + ); - IF NVL(s.structure_ens_id,0) = NVL(s.structure_aff_id,0) AND s.taux_fc < 1 THEN - RETURN vh.heures; - ELSE - RETURN 0; - END IF; - END; + ELSE + SELECT s.intervenant_id INTO intervenant_id FROM service_referentiel s WHERE s.id = :NEW.service_referentiel_id; - FUNCTION C3_11( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS - s ose_formule.t_service; - BEGIN - s := ose_formule.d_service( vh.service_id ); + ose_divers.intervenant_horodatage_service( + intervenant_id, + :NEW.type_volume_horaire_id, + 1, + :NEW.histo_modificateur_id, + :NEW.histo_modification + ); - IF NVL(s.structure_ens_id,0) = NVL(s.structure_aff_id,0) THEN - RETURN vh.heures * (s.taux_fi + s.taux_fa); - ELSE - RETURN 0; - END IF; - END; + END IF; - FUNCTION C2_12( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS - s ose_formule.t_service; - BEGIN - s := ose_formule.d_service( vh.service_id ); +END; - IF NVL(s.structure_ens_id,0) <> NVL(s.structure_aff_id,0) AND s.taux_fc < 1 THEN - RETURN vh.heures; - ELSE - RETURN 0; - END IF; - END; +/ +ALTER TRIGGER "INTERVENANT_HORO_VH_REF" ENABLE; - FUNCTION C3_12( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS - s ose_formule.t_service; +-- INTERVENANT_RECHERCHE +CREATE OR REPLACE TRIGGER "INTERVENANT_RECHERCHE" + BEFORE INSERT OR UPDATE OF NOM_USUEL, PRENOM, NOM_PATRONYMIQUE ON "INTERVENANT" + REFERENCING FOR EACH ROW BEGIN - s := ose_formule.d_service( vh.service_id ); - IF NVL(s.structure_ens_id,0) <> NVL(s.structure_aff_id,0) THEN - RETURN vh.heures * (s.taux_fi + s.taux_fa); - ELSE - RETURN 0; - END IF; - END; + :NEW.critere_recherche := ose_divers.str_reduce( :NEW.nom_usuel || ' ' || :NEW.nom_patronymique || ' ' || :NEW.prenom ); - FUNCTION C2_13( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS - s ose_formule.t_service; - BEGIN - s := ose_formule.d_service( vh.service_id ); +END; - IF NVL(s.structure_ens_id,0) = NVL(s.structure_aff_id,0) AND s.taux_fc = 1 THEN - RETURN vh.heures; - ELSE - RETURN 0; - END IF; - END; +/ +ALTER TRIGGER "INTERVENANT_RECHERCHE" ENABLE; - FUNCTION C3_13( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS - s ose_formule.t_service; - BEGIN - s := ose_formule.d_service( vh.service_id ); +-- MISE_EN_PAIEMENT_CK +CREATE OR REPLACE TRIGGER "MISE_EN_PAIEMENT_CK" + BEFORE INSERT OR UPDATE ON "MISE_EN_PAIEMENT" + REFERENCING FOR EACH ROW + DECLARE + has_validation NUMERIC; + has_mise_en_paiement NUMERIC; +BEGIN - IF NVL(s.structure_ens_id,0) = NVL(s.structure_aff_id,0) THEN - RETURN vh.heures * s.taux_fc; - ELSE - RETURN 0; - END IF; - END; + /* Initialisation des conditions */ + SELECT COUNT(*) INTO has_validation FROM validation v WHERE + v.id = :NEW.validation_id + AND v.histo_destruction IS NULL; - FUNCTION C2_14( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS - s ose_formule.t_service; - BEGIN - s := ose_formule.d_service( vh.service_id ); + IF :NEW.date_mise_en_paiement IS NULL THEN + has_mise_en_paiement := 0; + ELSE + has_mise_en_paiement := 1; + END IF; + + /* Mise en place des contraintes */ + IF :NEW.formule_res_service_id IS NULL AND :NEW.formule_res_service_ref_id IS NULL THEN + raise_application_error(-20101, 'La mise en paiement ne correspond à aucun service ou service référentiel.'); + END IF; + + IF 1 = has_validation AND :NEW.date_validation IS NULL THEN + raise_application_error(-20101, 'La validation de la mise en paiement numéro ' || :NEW.id || ' est bien renseignée mais la date de validation n''est pas précisée.'); + END IF; + + IF :NEW.periode_paiement_id IS NOT NULL AND :NEW.date_mise_en_paiement IS NULL THEN + raise_application_error(-20101, 'La mise en paiement numéro ' || :NEW.id || ' est bien effectuée mais la date de mise en paiement n''est pas précisée.'); + END IF; + +-- IF 0 = has_validation AND 1 = has_mise_en_paiement THEN +-- raise_application_error(-20101, 'La demande de mise en paiement numéro ' || :NEW.id || ' ne peut faire l''objet d''une mise en paiement tant qu''elle n''est pas validée.'); +-- END IF; - IF NVL(s.structure_ens_id,0) <> NVL(s.structure_aff_id,0) AND s.taux_fc = 1 THEN - RETURN vh.heures; - ELSE - RETURN 0; - END IF; - END; + IF + :OLD.validation_id IS NOT NULL AND :OLD.histo_destruction IS NULL + AND 1 = has_validation AND :NEW.histo_destruction IS NOT NULL + THEN + raise_application_error(-20101, 'Il est impossible de supprimer une mise en paiement validée.'); + END IF; +END; - FUNCTION C3_14( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS - s ose_formule.t_service; - BEGIN - s := ose_formule.d_service( vh.service_id ); - IF NVL(s.structure_ens_id,0) <> NVL(s.structure_aff_id,0) THEN - RETURN vh.heures * s.taux_fc; - ELSE - RETURN 0; - END IF; - END; +/ +ALTER TRIGGER "MISE_EN_PAIEMENT_CK" ENABLE; - FUNCTION C2_15( fr ose_formule.t_volume_horaire_ref ) RETURN FLOAT IS - f ose_formule.t_service_ref; - BEGIN - f := ose_formule.d_service_ref( fr.service_referentiel_id ); +-- MISE_EN_PAIEMENT_DEL_CK +CREATE OR REPLACE TRIGGER "MISE_EN_PAIEMENT_DEL_CK" + BEFORE DELETE ON "MISE_EN_PAIEMENT" + REFERENCING FOR EACH ROW + DECLARE + has_validation NUMERIC; +BEGIN - IF NVL(ose_formule.d_intervenant.structure_id,0) = NVL(f.structure_id,0) THEN - RETURN fr.heures; - ELSE - RETURN 0; - END IF; - END; + /* Initialisation des conditions */ + SELECT COUNT(*) INTO has_validation FROM validation v WHERE + v.id = :NEW.validation_id + AND v.histo_destruction IS NULL; - FUNCTION C2_16( fr ose_formule.t_volume_horaire_ref ) RETURN FLOAT IS - f ose_formule.t_service_ref; - BEGIN - f := ose_formule.d_service_ref( fr.service_referentiel_id ); + /* Mise en place des contraintes */ + IF + 1 = has_validation AND :OLD.histo_destruction IS NOT NULL + THEN + raise_application_error(-20101, 'Il est impossible de supprimer une mise en paiement validée.'); + END IF; +END; - IF NVL(ose_formule.d_intervenant.structure_id,0) <> NVL(f.structure_id,0) AND NVL(f.structure_id,0) <> ose_divers.STRUCTURE_UNIV_GET_ID THEN - RETURN fr.heures; - ELSE - RETURN 0; - END IF; - END; - FUNCTION C2_17( fr ose_formule.t_volume_horaire_ref ) RETURN FLOAT IS - f ose_formule.t_service_ref; - BEGIN - f := ose_formule.d_service_ref( fr.service_referentiel_id ); +/ +ALTER TRIGGER "MISE_EN_PAIEMENT_DEL_CK" ENABLE; - IF NVL(f.structure_id,0) = ose_divers.STRUCTURE_UNIV_GET_ID THEN - RETURN fr.heures; - ELSE - RETURN 0; - END IF; - END; +-- SERVICE_CK +CREATE OR REPLACE TRIGGER "SERVICE_CK" + BEFORE INSERT OR UPDATE ON "SERVICE" + REFERENCING FOR EACH ROW + DECLARE + etablissement integer; + res integer; +BEGIN - FUNCTION C2_21( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS - BEGIN - RETURN gv(11) * vh.taux_service_du; - END; + etablissement := OSE_PARAMETRE.GET_ETABLISSEMENT(); - FUNCTION C2_22( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS - BEGIN - RETURN gv(12) * vh.taux_service_du; - END; + IF :NEW.etablissement_id = etablissement AND :NEW.element_pedagogique_id IS NULL THEN + raise_application_error(-20101, 'Un enseignement doit obligatoirement être renseigné si le service est réalisé en interne.'); + END IF; - FUNCTION C2_23( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS - BEGIN - RETURN gv(13) * vh.taux_service_du; - END; - FUNCTION C2_24( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS - BEGIN - RETURN gv(14) * vh.taux_service_du; - END; + IF :NEW.etablissement_id <> etablissement AND OSE_DIVERS.INTERVENANT_HAS_PRIVILEGE(:NEW.intervenant_id, 'saisie_service_exterieur') = 0 THEN + raise_application_error(-20101, 'Les intervenants vacataires n''ont pas la possibilité de renseigner des enseignements pris à l''extérieur.'); + END IF; - FUNCTION C2_25( fr ose_formule.t_volume_horaire_ref ) RETURN FLOAT IS - BEGIN - RETURN gv(15); - END; + IF :NEW.intervenant_id IS NOT NULL AND :NEW.element_pedagogique_id IS NOT NULL THEN + SELECT + count(*) INTO res + FROM + intervenant i, + element_pedagogique ep + WHERE + i.id = :NEW.intervenant_id + AND ep.id = :NEW.element_pedagogique_id + AND ep.annee_id = i.annee_id + ; - FUNCTION C2_26( fr ose_formule.t_volume_horaire_ref ) RETURN FLOAT IS - BEGIN - RETURN gv(16); - END; + IF 0 = res THEN -- années non concomitantes + raise_application_error(-20101, 'L''année de l''intervenant ne correspond pas à l''année de l''élément pédagogique.'); + END IF; + END IF; - FUNCTION C2_27( fr ose_formule.t_volume_horaire_ref ) RETURN FLOAT IS - BEGIN - RETURN gv(17); - END; +END; - FUNCTION C2_31 RETURN FLOAT IS - BEGIN - RETURN GREATEST( ose_formule.d_resultat.service_du - gt(21), 0 ); - END; +/ +ALTER TRIGGER "SERVICE_CK" ENABLE; - FUNCTION C2_32 RETURN FLOAT IS - BEGIN - RETURN GREATEST( gt(31) - gt(22), 0 ); - END; +-- SERVICE_HISTO_CK +CREATE OR REPLACE TRIGGER "SERVICE_HISTO_CK" + BEFORE UPDATE OF intervenant_id, element_pedagogique_id, etablissement_id ON "SERVICE" + REFERENCING FOR EACH ROW + DECLARE + has_validation integer; +BEGIN + SELECT COUNT(*) INTO has_validation + FROM + VALIDATION_VOL_HORAIRE vvh + JOIN validation v ON v.id = VVH.VALIDATION_ID + JOIN volume_horaire vh ON vh.id = VVH.VOLUME_HORAIRE_ID + WHERE + V.HISTO_DESTRUCTION IS NULL + AND vh.service_ID = :NEW.ID; - FUNCTION C2_33 RETURN FLOAT IS - BEGIN - RETURN GREATEST( gt(32) - gt(23), 0 ); - END; + IF 0 <> has_validation THEN + raise_application_error(-20101, 'Il est impossible de modifier ou supprimer un service dont des heures ont déjà été validées.'); + END IF; - FUNCTION C2_34 RETURN FLOAT IS - BEGIN - RETURN GREATEST( gt(33) - gt(24), 0 ); - END; +END; - FUNCTION C2_35 RETURN FLOAT IS - BEGIN - RETURN GREATEST( gt(34) - gt(25), 0 ); - END; +/ +ALTER TRIGGER "SERVICE_HISTO_CK" ENABLE; - FUNCTION C2_36 RETURN FLOAT IS +-- SERVICE_HISTO_CK_S +CREATE OR REPLACE TRIGGER "SERVICE_HISTO_CK_S" + AFTER UPDATE ON "SERVICE" BEGIN - RETURN GREATEST( gt(35) - gt(26), 0 ); - END; + -- En cas de restauration d'un service, on ne restaure pas les historiques de volumes horaires pour ne pas récussiter d'éventuels volume horaires indésirables car préalablement supprimés + FOR s IN ( - FUNCTION C2_37 RETURN FLOAT IS - BEGIN - RETURN GREATEST( gt(36) - gt(27), 0 ); - END; + SELECT * + FROM + service s + WHERE + s.histo_destruction IS NOT NULL AND s.histo_destruction > SYSDATE - 1 - FUNCTION C2_41( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS - BEGIN - IF gt(21) <> 0 THEN - RETURN gv(21) / gt(21); - ELSE - RETURN 0; - END IF; - END; + ) LOOP - FUNCTION C2_42( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS - BEGIN - IF gt(22) <> 0 THEN - RETURN gv(22) / gt(22); - ELSE - RETURN 0; - END IF; - END; + UPDATE VOLUME_HORAIRE SET histo_destruction = s.histo_destruction, histo_destructeur_id = s.histo_destructeur_id WHERE service_id = s.id AND VOLUME_HORAIRE.histo_destruction IS NULL; - FUNCTION C2_43( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS - BEGIN - IF gt(23) <> 0 THEN - RETURN gv(23) / gt(23); - ELSE - RETURN 0; - END IF; - END; + END LOOP; - FUNCTION C2_44( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS - BEGIN - IF gt(24) <> 0 THEN - RETURN gv(24) / gt(24); - ELSE - RETURN 0; - END IF; - END; +END; - FUNCTION C2_45( fr ose_formule.t_volume_horaire_ref ) RETURN FLOAT IS - BEGIN - IF gt(25) <> 0 THEN - RETURN gv(25) / gt(25); - ELSE - RETURN 0; - END IF; - END; +/ +ALTER TRIGGER "SERVICE_HISTO_CK_S" ENABLE; - FUNCTION C2_46( fr ose_formule.t_volume_horaire_ref ) RETURN FLOAT IS - BEGIN - IF gt(26) <> 0 THEN - RETURN gv(26) / gt(26); - ELSE - RETURN 0; - END IF; - END; +-- SERVICE_REFERENTIEL_HISTO_CK +CREATE OR REPLACE TRIGGER "SERVICE_REFERENTIEL_HISTO_CK" + BEFORE UPDATE OF FONCTION_ID, INTERVENANT_ID, STRUCTURE_ID, HISTO_DESTRUCTION ON "SERVICE_REFERENTIEL" + REFERENCING FOR EACH ROW + DECLARE + has_validation integer; +BEGIN + SELECT COUNT(*) INTO has_validation + FROM + VALIDATION_VOL_HORAIRE_REF vvh + JOIN validation v ON v.id = VVH.VALIDATION_ID + JOIN volume_horaire_ref vh ON vh.id = vvh.volume_horaire_ref_id + WHERE + V.HISTO_DESTRUCTION IS NULL + AND vh.service_referentiel_id = :OLD.ID; + + IF 0 <> has_validation THEN + raise_application_error(-20101, 'Il est impossible de modifier ou supprimer du référentiel dont des heures ont déjà été validées.'); + END IF; - FUNCTION C2_47( fr ose_formule.t_volume_horaire_ref ) RETURN FLOAT IS - BEGIN - IF gt(27) <> 0 THEN - RETURN gv(27) / gt(27); - ELSE - RETURN 0; - END IF; - END; +END; - FUNCTION C2_51( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS - BEGIN - RETURN LEAST( ose_formule.d_resultat.service_du, gt(21) ) * gv(41); - END; +/ +ALTER TRIGGER "SERVICE_REFERENTIEL_HISTO_CK" ENABLE; - FUNCTION C2_52( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS +-- T_CRG_ETAPE +CREATE OR REPLACE TRIGGER "T_CRG_ETAPE" + AFTER INSERT OR DELETE OR UPDATE OF HISTO_DESTRUCTION ON "ETAPE" + REFERENCING FOR EACH ROW BEGIN - RETURN LEAST( gt(31), gt(22) ) * gv(42); - END; + IF NOT UNICAEN_TBL.ACTIV_TRIGGERS THEN RETURN; END IF; - FUNCTION C2_53( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS - BEGIN - RETURN LEAST( gt(32), gt(23) ) * gv(43); - END; + IF DELETING THEN + UNICAEN_TBL.DEMANDE_CALCUL( 'chargens', 'etape_id = ' || :OLD.id || ' OR etape_ens_id = ' || :OLD.id ); + ELSE + UNICAEN_TBL.DEMANDE_CALCUL( 'chargens', 'etape_id = ' || :NEW.id || ' OR etape_ens_id = ' || :NEW.id ); + END IF; - FUNCTION C2_54( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS - BEGIN - RETURN LEAST( gt(33), gt(24) ) * gv(44); - END; +END; - FUNCTION C2_55( fr ose_formule.t_volume_horaire_ref ) RETURN FLOAT IS - BEGIN - RETURN LEAST( gt(34), gt(25) ) * gv(45); - END; - FUNCTION C2_56( fr ose_formule.t_volume_horaire_ref ) RETURN FLOAT IS - BEGIN - RETURN LEAST( gt(35), gt(26) ) * gv(46); - END; +/ +ALTER TRIGGER "T_CRG_ETAPE" ENABLE; - FUNCTION C2_57( fr ose_formule.t_volume_horaire_ref ) RETURN FLOAT IS +-- T_CRG_ETAPE_S +CREATE OR REPLACE TRIGGER "T_CRG_ETAPE_S" + AFTER INSERT OR DELETE OR UPDATE ON "ETAPE" BEGIN - RETURN LEAST( gt(36), gt(27) ) * gv(47); - END; + UNICAEN_TBL.CALCULER_DEMANDES; +END; - FUNCTION C2_61( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS - s ose_formule.t_service; - BEGIN - s := ose_formule.d_service( vh.service_id ); - RETURN gv(51) * s.taux_fi; - END; +/ +ALTER TRIGGER "T_CRG_ETAPE_S" ENABLE; - FUNCTION C3_61( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS - s ose_formule.t_service; +-- T_CRG_SCENARIO_NOEUD +CREATE OR REPLACE TRIGGER "T_CRG_SCENARIO_NOEUD" + AFTER INSERT OR DELETE OR UPDATE OF SCENARIO_ID, NOEUD_ID, HISTO_DESTRUCTION ON "SCENARIO_NOEUD" + REFERENCING FOR EACH ROW BEGIN - s := ose_formule.d_service( vh.service_id ); + IF NOT UNICAEN_TBL.ACTIV_TRIGGERS THEN RETURN; END IF; - IF s.taux_fi + s.taux_fa > 0 THEN - RETURN gv(51) / (s.taux_fi + s.taux_fa) * s.taux_fi; - ELSE - RETURN 0; - END IF; - END; + IF DELETING THEN + UNICAEN_TBL.DEMANDE_CALCUL( 'chargens', unicaen_tbl.make_params('noeud_id', :OLD.noeud_id, 'scenario_id', :OLD.scenario_id ) ); + ELSE + UNICAEN_TBL.DEMANDE_CALCUL( 'chargens', unicaen_tbl.make_params('noeud_id', :NEW.noeud_id, 'scenario_id', :NEW.scenario_id ) ); + END IF; - FUNCTION C2_62( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS - s ose_formule.t_service; - BEGIN - s := ose_formule.d_service( vh.service_id ); +END; - RETURN gv(52) * s.taux_fi; - END; - FUNCTION C3_62( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS - s ose_formule.t_service; +/ +ALTER TRIGGER "T_CRG_SCENARIO_NOEUD" ENABLE; + +-- T_CRG_SCENARIO_NOEUD_EFFECTIF +CREATE OR REPLACE TRIGGER "T_CRG_SCENARIO_NOEUD_EFFECTIF" + AFTER INSERT OR DELETE OR UPDATE OF SCENARIO_NOEUD_ID, TYPE_HEURES_ID, EFFECTIF, ETAPE_ID ON "SCENARIO_NOEUD_EFFECTIF" + REFERENCING FOR EACH ROW BEGIN - s := ose_formule.d_service( vh.service_id ); + IF NOT UNICAEN_TBL.ACTIV_TRIGGERS THEN RETURN; END IF; - IF s.taux_fi + s.taux_fa > 0 THEN - RETURN gv(52) / (s.taux_fi + s.taux_fa) * s.taux_fi; - ELSE - RETURN 0; + FOR p IN ( + + SELECT + sn.noeud_id, sn.scenario_id, n.etape_id + FROM + scenario_noeud sn + JOIN noeud n ON n.id = sn.noeud_id + WHERE + sn.id = :OLD.scenario_noeud_id OR sn.id = :NEW.scenario_noeud_id + + ) LOOP + + IF p.etape_id IS NOT NULL THEN + UNICAEN_TBL.DEMANDE_CALCUL( 'chargens', unicaen_tbl.make_params('etape_ens_id', p.etape_id, 'scenario_id', p.scenario_id ) ); END IF; - END; + UNICAEN_TBL.DEMANDE_CALCUL( 'chargens', unicaen_tbl.make_params('noeud_id', p.noeud_id, 'scenario_id', p.scenario_id ) ); - FUNCTION C2_71( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS - s ose_formule.t_service; - BEGIN - s := ose_formule.d_service( vh.service_id ); + END LOOP; - RETURN gv(51) * s.taux_fa; - END; +END; - FUNCTION C3_71( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS - s ose_formule.t_service; - BEGIN - s := ose_formule.d_service( vh.service_id ); - IF s.taux_fi + s.taux_fa > 0 THEN - RETURN gv(51) / (s.taux_fi + s.taux_fa) * s.taux_fa; - ELSE - RETURN 0; - END IF; - END; +/ +ALTER TRIGGER "T_CRG_SCENARIO_NOEUD_EFFECTIF" ENABLE; - FUNCTION C2_72( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS - s ose_formule.t_service; +-- T_CRG_SCENARIO_NOEUD_SEUIL +CREATE OR REPLACE TRIGGER "T_CRG_SCENARIO_NOEUD_SEUIL" + AFTER INSERT OR DELETE OR UPDATE OF SCENARIO_NOEUD_ID, TYPE_INTERVENTION_ID, OUVERTURE, DEDOUBLEMENT, ASSIDUITE ON "SCENARIO_NOEUD_SEUIL" + REFERENCING FOR EACH ROW BEGIN - s := ose_formule.d_service( vh.service_id ); + IF NOT UNICAEN_TBL.ACTIV_TRIGGERS THEN RETURN; END IF; - RETURN gv(52) * s.taux_fa; - END; + FOR p IN ( - FUNCTION C3_72( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS - s ose_formule.t_service; - BEGIN - s := ose_formule.d_service( vh.service_id ); + SELECT + sn.noeud_id, sn.scenario_id, n.etape_id + FROM + scenario_noeud sn + JOIN noeud n ON n.id = sn.noeud_id + WHERE + sn.id = :OLD.scenario_noeud_id OR sn.id = :NEW.scenario_noeud_id - IF s.taux_fi + s.taux_fa > 0 THEN - RETURN gv(52) / (s.taux_fi + s.taux_fa) * s.taux_fa; - ELSE - RETURN 0; + ) LOOP + + IF p.etape_id IS NOT NULL THEN + UNICAEN_TBL.DEMANDE_CALCUL( 'chargens', unicaen_tbl.make_params('etape_ens_id', p.etape_id, 'scenario_id', p.scenario_id ) ); END IF; - END; + UNICAEN_TBL.DEMANDE_CALCUL( 'chargens', unicaen_tbl.make_params('noeud_id', p.noeud_id, 'scenario_id', p.scenario_id ) ); - FUNCTION C2_81( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS - s ose_formule.t_service; - BEGIN - s := ose_formule.d_service( vh.service_id ); + END LOOP; - RETURN gv(51) * s.taux_fc; - END; +END; - FUNCTION C2_82( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS - s ose_formule.t_service; - BEGIN - s := ose_formule.d_service( vh.service_id ); - RETURN gv(52) * s.taux_fc; - END; +/ +ALTER TRIGGER "T_CRG_SCENARIO_NOEUD_SEUIL" ENABLE; - FUNCTION C2_83( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS - s ose_formule.t_service; +-- T_CRG_TYPE_INTERVENTION +CREATE OR REPLACE TRIGGER "T_CRG_TYPE_INTERVENTION" + AFTER INSERT OR DELETE OR UPDATE ON "TYPE_INTERVENTION" BEGIN - s := ose_formule.d_service( vh.service_id ); + UNICAEN_TBL.CALCULER_DEMANDES; +END; - RETURN gv(53) * s.taux_fc; - END; - FUNCTION C3_83( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS - BEGIN - RETURN gv(53); - END; +/ +ALTER TRIGGER "T_CRG_TYPE_INTERVENTION" ENABLE; - FUNCTION C2_84( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS - s ose_formule.t_service; +-- T_CRG_VOLUME_HORAIRE_ENS +CREATE OR REPLACE TRIGGER "T_CRG_VOLUME_HORAIRE_ENS" + AFTER INSERT OR DELETE OR UPDATE OF ELEMENT_PEDAGOGIQUE_ID, TYPE_INTERVENTION_ID, HEURES, HISTO_DESTRUCTION ON "VOLUME_HORAIRE_ENS" + REFERENCING FOR EACH ROW BEGIN - s := ose_formule.d_service( vh.service_id ); + IF NOT UNICAEN_TBL.ACTIV_TRIGGERS THEN RETURN; END IF; - RETURN gv(54) * s.taux_fc; - END; + IF DELETING THEN + UNICAEN_TBL.DEMANDE_CALCUL( 'chargens', unicaen_tbl.make_params('element_pedagogique_id', :OLD.element_pedagogique_id ) ); + ELSE + UNICAEN_TBL.DEMANDE_CALCUL( 'chargens', unicaen_tbl.make_params('element_pedagogique_id', :NEW.element_pedagogique_id ) ); + END IF; - FUNCTION C3_84( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS - BEGIN - RETURN gv(54); - END; +END; - FUNCTION C2_91( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS - BEGIN - IF gv(21) <> 0 THEN - RETURN gv(51) / gv(21); - ELSE - RETURN 0; - END IF; - END; +/ +ALTER TRIGGER "T_CRG_VOLUME_HORAIRE_ENS" ENABLE; - FUNCTION C2_92( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS - BEGIN - IF gv(22) <> 0 THEN - RETURN gv(52) / gv(22); - ELSE - RETURN 0; - END IF; - END; +-- VALIDATION_CK +CREATE OR REPLACE TRIGGER "VALIDATION_CK" + BEFORE DELETE OR UPDATE OF HISTO_DESTRUCTION, HISTO_DESTRUCTEUR_ID ON "VALIDATION" + REFERENCING FOR EACH ROW + DECLARE + v validation%rowtype; + err varchar2(500) default null; + pragma autonomous_transaction; +BEGIN + + IF deleting THEN + v.id := :OLD.id; + v.type_validation_id := :OLD.type_validation_id; + v.intervenant_id := :OLD.intervenant_id; + v.structure_id := :OLD.structure_id; + + + ELSIF :OLD.histo_destruction IS NULL AND :NEW.histo_destruction IS NOT NULL THEN + + v.id := :NEW.id; + v.type_validation_id := :NEW.type_validation_id; + v.intervenant_id := :NEW.intervenant_id; + v.structure_id := :NEW.structure_id; - FUNCTION C2_93( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS - BEGIN - IF gv(23) <> 0 THEN - RETURN gv(53) / gv(23); - ELSE - RETURN 0; - END IF; - END; + END IF; - FUNCTION C2_94( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS - BEGIN - IF gv(24) <> 0 THEN - RETURN gv(54) / gv(24); - ELSE - RETURN 0; - END IF; - END; + err := ose_validation.can_devalider( v ); - FUNCTION C2_95( fr ose_formule.t_volume_horaire_ref ) RETURN FLOAT IS - BEGIN - IF gv(25) <> 0 THEN - RETURN gv(55) / gv(25); - ELSE - RETURN 0; - END IF; - END; + IF err is not null THEN + raise_application_error(-20101, err); + END IF; - FUNCTION C2_96( fr ose_formule.t_volume_horaire_ref ) RETURN FLOAT IS - BEGIN - IF gv(26) <> 0 THEN - RETURN gv(56) / gv(26); - ELSE - RETURN 0; - END IF; - END; +END; - FUNCTION C2_97( fr ose_formule.t_volume_horaire_ref ) RETURN FLOAT IS - BEGIN - IF gv(27) <> 0 THEN - RETURN gv(57) / gv(27); - ELSE - RETURN 0; - END IF; - END; +/ +ALTER TRIGGER "VALIDATION_CK" ENABLE; - FUNCTION C2_101( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS - BEGIN - IF gt(37) <> 0 THEN - RETURN 0; - ELSE - RETURN 1 - gv(91); - END IF; - END; +-- VALIDATION_VOL_HORAIRE_CK +CREATE OR REPLACE TRIGGER "VALIDATION_VOL_HORAIRE_CK" + BEFORE INSERT OR DELETE OR UPDATE ON "VALIDATION_VOL_HORAIRE" + REFERENCING FOR EACH ROW + DECLARE + contrat_blinde NUMERIC; + donnee_historisee NUMERIC; + pragma autonomous_transaction; +BEGIN - FUNCTION C2_102( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS - BEGIN - IF gt(37) <> 0 THEN - RETURN 0; - ELSE - RETURN 1 - gv(92); - END IF; - END; + if updating or deleting then - FUNCTION C2_103( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS - BEGIN - IF gt(37) <> 0 THEN - RETURN 0; - ELSE - RETURN 1 - gv(93); - END IF; - END; + SELECT count(*) INTO contrat_blinde + FROM volume_horaire vh + JOIN contrat c ON c.id = vh.contrat_id AND c.histo_destruction IS NULL + WHERE vh.id = :OLD.volume_horaire_id; - FUNCTION C2_104( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS - BEGIN - IF gt(37) <> 0 THEN - RETURN 0; - ELSE - RETURN 1 - gv(94); + -- Si des volumes horaires ont déjà fait l'objet de contrats alors pas de dévalidation possible des heures + IF contrat_blinde = 1 THEN + raise_application_error(-20101, 'La dévalidation est impossible car un contrat a déjà été édité sur la base de ces heures.'); END IF; - END; - FUNCTION C2_105( fr ose_formule.t_volume_horaire_ref ) RETURN FLOAT IS - BEGIN - IF gt(37) <> 0 THEN - RETURN 0; - ELSE - RETURN 1 - gv(95); - END IF; - END; + else - FUNCTION C2_106( fr ose_formule.t_volume_horaire_ref ) RETURN FLOAT IS - BEGIN - IF gt(37) <> 0 THEN - RETURN 0; - ELSE - RETURN 1 - gv(96); - END IF; - END; + -- si on en trouve un service, EP, étape ou VH historisé, problème + select count(*) into donnee_historisee + from service s + join element_pedagogique ep on s.element_pedagogique_id = ep.id + --join etape e on ep.etape_id = e.id + join volume_horaire vh on vh.service_id = s.id + where + vh.id = :NEW.volume_horaire_id + AND ( + s.histo_destructeur_id is not null + or ep.histo_destructeur_id is not null + --or e.histo_destructeur_id is not null + or (vh.histo_destructeur_id is not null) + ) + AND vh.heures > 0; - FUNCTION C2_107( fr ose_formule.t_volume_horaire_ref ) RETURN FLOAT IS - BEGIN - IF gt(37) <> 0 THEN - RETURN 0; - ELSE - RETURN 1 - gv(97); + IF donnee_historisee > 0 THEN + raise_application_error(-20101, :NEW.volume_horaire_id || ' La validation est impossible car elle porte sur des données historisées (supprimées).'); END IF; - END; - FUNCTION C2_111( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS - BEGIN - RETURN gv(11) * vh.taux_service_compl * gv(101); - END; + end if; - FUNCTION C2_112( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS - BEGIN - RETURN gv(12) * vh.taux_service_compl * gv(102); - END; +END; - FUNCTION C2_113( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS - BEGIN - RETURN gv(13) * vh.taux_service_compl * gv(103); - END; - FUNCTION C2_114( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS - BEGIN - RETURN gv(14) * vh.taux_service_compl * gv(104); - END; +/ +ALTER TRIGGER "VALIDATION_VOL_HORAIRE_CK" ENABLE; - FUNCTION C2_115( fr ose_formule.t_volume_horaire_ref ) RETURN FLOAT IS +-- VOLUME_HORAIRE_CK +CREATE OR REPLACE TRIGGER "VOLUME_HORAIRE_CK" + BEFORE INSERT OR UPDATE ON "VOLUME_HORAIRE" + REFERENCING FOR EACH ROW + DECLARE + has_validation NUMERIC; + modified BOOLEAN; + intervenant_id NUMERIC; BEGIN - RETURN gv(15) * gv(105); - END; + IF :OLD.motif_non_paiement_id IS NULL AND :NEW.motif_non_paiement_id IS NOT NULL THEN + SELECT s.intervenant_id INTO intervenant_id FROM service s WHERE s.id = :NEW.service_id; + IF 0 = ose_divers.intervenant_has_privilege( intervenant_id, 'saisie_motif_non_paiement') THEN + raise_application_error(-20101, 'Il est impossible d''associer un motif de non paiement à cet intervenant.'); + END IF; + END IF; - FUNCTION C2_116( fr ose_formule.t_volume_horaire_ref ) RETURN FLOAT IS - BEGIN - RETURN gv(16) * gv(106); - END; + IF :NEW.motif_non_paiement_id IS NOT NULL AND :NEW.contrat_id IS NOT NULL THEN + raise_application_error(-20101, 'Les heures ayant un motif de non paiement ne peuvent faire l''objet d''une contractualisation'); + END IF; - FUNCTION C2_117( fr ose_formule.t_volume_horaire_ref ) RETURN FLOAT IS - BEGIN - RETURN gv(17) * gv(107); - END; + modified := + NVL(:NEW.id,0) <> NVL(:OLD.id,0) + OR NVL(:NEW.type_volume_horaire_id,0) <> NVL(:OLD.type_volume_horaire_id,0) + OR NVL(:NEW.service_id,0) <> NVL(:OLD.service_id,0) + OR NVL(:NEW.periode_id,0) <> NVL(:OLD.periode_id,0) + OR NVL(:NEW.type_intervention_id,0) <> NVL(:OLD.type_intervention_id,0) + OR NVL(:NEW.heures,0) <> NVL(:OLD.heures,0) + OR NVL(:NEW.motif_non_paiement_id,0) <> NVL(:OLD.motif_non_paiement_id,0) + OR NVL(:NEW.histo_creation,SYSDATE) <> NVL(:OLD.histo_creation,SYSDATE) + OR NVL(:NEW.histo_createur_id,0) <> NVL(:OLD.histo_createur_id,0) + OR NVL(:NEW.histo_destruction,SYSDATE) <> NVL(:OLD.histo_destruction,SYSDATE) + OR NVL(:NEW.histo_destructeur_id,0) <> NVL(:OLD.histo_destructeur_id,0); - FUNCTION C2_123( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS - s ose_formule.t_service; - BEGIN - s := ose_formule.d_service( vh.service_id ); + SELECT + COUNT(*) + INTO + has_validation + FROM + VALIDATION_VOL_HORAIRE vvh + JOIN validation v ON v.id = VVH.VALIDATION_ID + WHERE + V.HISTO_DESTRUCTION IS NULL + AND vvh.VOLUME_HORAIRE_ID = :NEW.ID; - IF s.taux_fc = 1 THEN - RETURN gv(113) * s.ponderation_service_compl; - ELSE - RETURN gv(113); + IF modified AND 0 <> has_validation THEN + raise_application_error(-20101, 'Il est impossible de modifier des heures déjà validées.'); END IF; END; - FUNCTION C3_123( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS - s ose_formule.t_service; - BEGIN - s := ose_formule.d_service( vh.service_id ); +/ +ALTER TRIGGER "VOLUME_HORAIRE_CK" ENABLE; - IF s.taux_fc > 0 THEN - RETURN gv(113) * s.ponderation_service_compl; - ELSE - RETURN gv(113); - END IF; - END; +-- VOLUME_HORAIRE_DEL_CK +CREATE OR REPLACE TRIGGER "VOLUME_HORAIRE_DEL_CK" + BEFORE DELETE ON "VOLUME_HORAIRE" + REFERENCING FOR EACH ROW + DECLARE + has_validation INTEGER; + pragma autonomous_transaction; +BEGIN - FUNCTION C2_124( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS - s ose_formule.t_service; - BEGIN - s := ose_formule.d_service( vh.service_id ); + SELECT COUNT(*) INTO has_validation + FROM + VALIDATION_VOL_HORAIRE vvh + JOIN validation v ON v.id = VVH.VALIDATION_ID + WHERE + V.HISTO_DESTRUCTION IS NULL + AND vvh.VOLUME_HORAIRE_ID = :OLD.ID; - IF s.taux_fc = 1 THEN - RETURN gv(114) * s.ponderation_service_compl; - ELSE - RETURN gv(114); - END IF; - END; + IF 0 <> has_validation THEN + raise_application_error(-20101, 'Il est impossible de supprimer des heures déjà validées.'); + END IF; - FUNCTION C3_124( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS - s ose_formule.t_service; +END; + +/ +ALTER TRIGGER "VOLUME_HORAIRE_DEL_CK" ENABLE; + +-- VOLUME_HORAIRE_REF_CK +CREATE OR REPLACE TRIGGER "VOLUME_HORAIRE_REF_CK" + BEFORE UPDATE ON "VOLUME_HORAIRE_REF" + REFERENCING FOR EACH ROW + DECLARE + has_validation NUMERIC; BEGIN - s := ose_formule.d_service( vh.service_id ); - IF s.taux_fc > 0 THEN - RETURN gv(114) * s.ponderation_service_compl; - ELSE - RETURN gv(114); - END IF; - END; + SELECT + COUNT(*) + INTO + has_validation + FROM + VALIDATION_VOL_HORAIRE_REF vvh + JOIN validation v ON v.id = VVH.VALIDATION_ID + WHERE + V.HISTO_DESTRUCTION IS NULL + AND vvh.VOLUME_HORAIRE_REF_ID = :NEW.ID; - FUNCTION C2_131( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS - s ose_formule.t_service; - BEGIN - s := ose_formule.d_service( vh.service_id ); + IF 0 <> has_validation THEN + raise_application_error(-20101, 'Il est impossible de modifier des heures référentiel déjà validées.'); + END IF; +END; - RETURN gv(111) * s.taux_fi; - END; +/ +ALTER TRIGGER "VOLUME_HORAIRE_REF_CK" ENABLE; - FUNCTION C3_131( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS - s ose_formule.t_service; +-- VOLUME_HORAIRE_REF_DEL_CK +CREATE OR REPLACE TRIGGER "VOLUME_HORAIRE_REF_DEL_CK" + BEFORE DELETE ON "VOLUME_HORAIRE_REF" + REFERENCING FOR EACH ROW + DECLARE has_validation INTEGER; + pragma autonomous_transaction; BEGIN - s := ose_formule.d_service( vh.service_id ); - - IF s.taux_fi + s.taux_fa > 0 THEN - RETURN gv(111) / (s.taux_fi + s.taux_fa) * s.taux_fi; - ELSE - RETURN 0; + SELECT COUNT(*) + INTO has_validation + FROM VALIDATION_VOL_HORAIRE_REF vvh + JOIN validation v + ON v.id = VVH.VALIDATION_ID + WHERE V.HISTO_DESTRUCTION IS NULL + AND vvh.VOLUME_HORAIRE_REF_ID = :OLD.ID; + IF 0 <> has_validation THEN + raise_application_error(-20101, 'Il est impossible de supprimer des heures référentiel déjà validées.'); END IF; END; - FUNCTION C2_132( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS - s ose_formule.t_service; - BEGIN - s := ose_formule.d_service( vh.service_id ); +/ +ALTER TRIGGER "VOLUME_HORAIRE_REF_DEL_CK" ENABLE; - RETURN gv(112) * s.taux_fi; - END; +-- WF_ETAPE_DEP_CK +CREATE OR REPLACE TRIGGER "WF_ETAPE_DEP_CK" + BEFORE INSERT OR UPDATE ON "WF_ETAPE_DEP" + REFERENCING FOR EACH ROW +BEGIN - FUNCTION C3_132( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS - s ose_formule.t_service; - BEGIN - s := ose_formule.d_service( vh.service_id ); + OSE_WORKFLOW.DEP_CHECK( :new.etape_suiv_id, :new.etape_prec_id ); - IF s.taux_fi + s.taux_fa > 0 THEN - RETURN gv(112) / (s.taux_fi + s.taux_fa) * s.taux_fi; - ELSE - RETURN 0; - END IF; - END; +END; - FUNCTION C2_141( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS - s ose_formule.t_service; - BEGIN - s := ose_formule.d_service( vh.service_id ); +/ +ALTER TRIGGER "WF_ETAPE_DEP_CK" ENABLE; - RETURN gv(111) * s.taux_fa; - END; +-------------------------------------------------- +-- packages +-------------------------------------------------- - FUNCTION C3_141( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS - s ose_formule.t_service; - BEGIN - s := ose_formule.d_service( vh.service_id ); +-- OSE_CHARGENS +CREATE OR REPLACE PACKAGE "OSE_CHARGENS" AS + ENABLE_TRIGGER_EFFECTIFS BOOLEAN DEFAULT TRUE; - IF s.taux_fi + s.taux_fa > 0 THEN - RETURN gv(111) / (s.taux_fi + s.taux_fa) * s.taux_fa; - ELSE - RETURN 0; - END IF; - END; + TYPE tnoeud_ids IS TABLE OF NUMERIC; - FUNCTION C2_142( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS - s ose_formule.t_service; - BEGIN - s := ose_formule.d_service( vh.service_id ); + FUNCTION GET_SCENARIO RETURN NUMERIC; + PROCEDURE SET_SCENARIO( SCENARIO NUMERIC ); - RETURN gv(112) * s.taux_fa; - END; + FUNCTION GET_NOEUD RETURN NUMERIC; + PROCEDURE SET_NOEUD( NOEUD NUMERIC ); - FUNCTION C3_142( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS - s ose_formule.t_service; - BEGIN - s := ose_formule.d_service( vh.service_id ); + FUNCTION CALC_COEF( choix_min NUMERIC, choix_max NUMERIC, poids NUMERIC, max_poids NUMERIC, total_poids NUMERIC, nb_choix NUMERIC ) RETURN FLOAT; - IF s.taux_fi + s.taux_fa > 0 THEN - RETURN gv(112) / (s.taux_fi + s.taux_fa) * s.taux_fa; - ELSE - RETURN 0; - END IF; - END; + PROCEDURE DEM_CALC_SUB_EFFECTIF( scenario_noeud_id NUMERIC, type_heures_id NUMERIC, etape_id NUMERIC, effectif FLOAT ); + PROCEDURE CALC_SUB_EFFECTIF_DEM; - FUNCTION C2_151( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS - s ose_formule.t_service; - BEGIN - s := ose_formule.d_service( vh.service_id ); + PROCEDURE CALC_ALL_EFFECTIFS; - RETURN gv(111) * s.taux_fc; - END; + PROCEDURE CALC_EFFECTIF( noeud_id NUMERIC, scenario_id NUMERIC, type_heures_id NUMERIC DEFAULT NULL, etape_id NUMERIC DEFAULT NULL); + PROCEDURE CALC_SUB_EFFECTIF2( noeud_id NUMERIC, scenario_id NUMERIC, type_heures_id NUMERIC DEFAULT NULL, etape_id NUMERIC DEFAULT NULL); - FUNCTION C2_152( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS - s ose_formule.t_service; - BEGIN - s := ose_formule.d_service( vh.service_id ); + PROCEDURE DUPLIQUER( source_id NUMERIC, destination_id NUMERIC, utilisateur_id NUMERIC, structure_id NUMERIC, noeuds VARCHAR2 DEFAULT '', liens VARCHAR2 DEFAULT '' ); - RETURN gv(112) * s.taux_fc; - END; + PROCEDURE CONTROLE_SEUIL( ouverture NUMERIC, dedoublement NUMERIC ); - FUNCTION C2_153( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS - s ose_formule.t_service; - BEGIN - s := ose_formule.d_service( vh.service_id ); + FUNCTION GET_SCENARIO_NOEUD_ID( scenario_id NUMERIC, noeud_id NUMERIC ) RETURN NUMERIC; + FUNCTION CREER_SCENARIO_NOEUD( scenario_id NUMERIC, noeud_id NUMERIC, assiduite FLOAT DEFAULT 1 ) RETURN NUMERIC; - IF gv(123) = gv(113) THEN - RETURN gv(113) * s.taux_fc; - ELSE - RETURN 0; - END IF; - END; + PROCEDURE ADD_SCENARIO_NOEUD_EFFECTIF( scenario_noeud_id NUMERIC, type_heures_id NUMERIC, etape_id NUMERIC, effectif FLOAT ); - FUNCTION C3_153( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS - s ose_formule.t_service; - BEGIN - s := ose_formule.d_service( vh.service_id ); + PROCEDURE INIT_SCENARIO_NOEUD_EFFECTIF( + etape_id NUMERIC, + scenario_id NUMERIC, + type_heures_id NUMERIC, + effectif FLOAT, + surcharge BOOLEAN DEFAULT FALSE + ); - IF gv(123) = gv(113) THEN - RETURN gv(113); - ELSE - RETURN 0; - END IF; - END; + PROCEDURE SET_PRECALC_HEURES_PARAMS( + annee_id NUMERIC DEFAULT NULL, + structure_id NUMERIC DEFAULT NULL, + scenario_id NUMERIC DEFAULT NULL, + type_heures_id NUMERIC DEFAULT NULL, + etape_id NUMERIC DEFAULT NULL, + noeud_ids tnoeud_ids DEFAULT NULL + ); - FUNCTION C2_154( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS - s ose_formule.t_service; - BEGIN - s := ose_formule.d_service( vh.service_id ); + FUNCTION MATCH_PRECALC_HEURES_PARAMS( + annee_id NUMERIC DEFAULT NULL, + structure_id NUMERIC DEFAULT NULL, + scenario_id NUMERIC DEFAULT NULL, + type_heures_id NUMERIC DEFAULT NULL, + etape_id NUMERIC DEFAULT NULL, + noeud_id NUMERIC DEFAULT NULL + ) RETURN NUMERIC; - IF gv(124) = gv(114) THEN - RETURN gv(114) * s.taux_fc; - ELSE - RETURN 0; - END IF; - END; - FUNCTION C3_154( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS - s ose_formule.t_service; - BEGIN - s := ose_formule.d_service( vh.service_id ); +END OSE_CHARGENS; +/ - IF gv(124) = gv(114) THEN - RETURN gv(114); - ELSE - RETURN 0; - END IF; - END; +-- OSE_DIVERS +CREATE OR REPLACE PACKAGE "OSE_DIVERS" AS - FUNCTION C2_163( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS - s ose_formule.t_service; - BEGIN - s := ose_formule.d_service( vh.service_id ); + PROCEDURE CALCULER_TABLEAUX_BORD; - IF gv(123) <> gv(113) THEN - RETURN gv(123) * s.taux_fc; - ELSE - RETURN 0; - END IF; - END; + FUNCTION GET_OSE_UTILISATEUR_ID RETURN NUMERIC; + FUNCTION GET_OSE_SOURCE_ID RETURN NUMERIC; - FUNCTION C3_163( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS - s ose_formule.t_service; - BEGIN - s := ose_formule.d_service( vh.service_id ); + FUNCTION INTERVENANT_HAS_PRIVILEGE( intervenant_id NUMERIC, privilege_name VARCHAR2 ) RETURN NUMERIC; - IF gv(123) <> gv(113) THEN - RETURN gv(123); - ELSE - RETURN 0; - END IF; - END; + FUNCTION implode(i_query VARCHAR2, i_seperator VARCHAR2 DEFAULT ',') RETURN VARCHAR2; - FUNCTION C2_164( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS - s ose_formule.t_service; - BEGIN - s := ose_formule.d_service( vh.service_id ); + PROCEDURE intervenant_horodatage_service( INTERVENANT_ID NUMERIC, TYPE_VOLUME_HORAIRE_ID NUMERIC, REFERENTIEL NUMERIC, HISTO_MODIFICATEUR_ID NUMERIC, HISTO_MODIFICATION DATE ); - IF gv(124) <> gv(114) THEN - RETURN gv(124) * s.taux_fc; - ELSE - RETURN 0; - END IF; - END; + FUNCTION NIVEAU_FORMATION_ID_CALC( gtf_id NUMERIC, gtf_pertinence_niveau NUMERIC, niveau NUMERIC DEFAULT NULL ) RETURN NUMERIC; - FUNCTION C3_164( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS - s ose_formule.t_service; - BEGIN - s := ose_formule.d_service( vh.service_id ); + FUNCTION STR_REDUCE( str CLOB ) RETURN CLOB; - IF gv(124) <> gv(114) THEN - RETURN gv(124); - ELSE - RETURN 0; - END IF; - END; + FUNCTION STR_FIND( haystack CLOB, needle VARCHAR2 ) RETURN NUMERIC; + + FUNCTION LIKED( haystack CLOB, needle CLOB ) RETURN NUMERIC; + + FUNCTION CALCUL_TAUX_FI( eff_fi FLOAT, eff_fc FLOAT, eff_fa FLOAT, fi NUMERIC, fc NUMERIC, fa NUMERIC, arrondi NUMERIC DEFAULT 15 ) RETURN FLOAT; + FUNCTION CALCUL_TAUX_FC( eff_fi FLOAT, eff_fc FLOAT, eff_fa FLOAT, fi NUMERIC, fc NUMERIC, fa NUMERIC, arrondi NUMERIC DEFAULT 15 ) RETURN FLOAT; + FUNCTION CALCUL_TAUX_FA( eff_fi FLOAT, eff_fc FLOAT, eff_fa FLOAT, fi NUMERIC, fc NUMERIC, fa NUMERIC, arrondi NUMERIC DEFAULT 15 ) RETURN FLOAT; + FUNCTION STRUCTURE_UNIV_GET_ID RETURN NUMERIC; + PROCEDURE SYNC_LOG( msg CLOB ); + FUNCTION FORMATTED_RIB (bic VARCHAR2, iban VARCHAR2) RETURN VARCHAR2; + FUNCTION FORMATTED_ADRESSE( + no_voie VARCHAR2, + nom_voie VARCHAR2, + batiment VARCHAR2, + mention_complementaire VARCHAR2, + localite VARCHAR2, + code_postal VARCHAR2, + ville VARCHAR2, + pays_libelle VARCHAR2) + RETURN VARCHAR2; + FUNCTION GET_TRIGGER_BODY( TRIGGER_NAME VARCHAR2 ) RETURN VARCHAR2; +END OSE_DIVERS; +/ +-- OSE_EVENT +CREATE OR REPLACE PACKAGE "OSE_EVENT" AS + PROCEDURE ON_BEFORE_FORMULE_RES_DELETE( INTERVENANT_ID NUMERIC ); + PROCEDURE ON_AFTER_FORMULE_CALC( INTERVENANT_ID NUMERIC ); - PROCEDURE CALCUL_RESULTAT_V2( INTERVENANT_ID NUMERIC, TYPE_VOLUME_HORAIRE_ID NUMERIC, ETAT_VOLUME_HORAIRE_ID NUMERIC ) IS - current_tableau PLS_INTEGER; - id PLS_INTEGER; - val FLOAT; - TYPE t_liste_tableaux IS VARRAY (100) OF PLS_INTEGER; - liste_tableaux t_liste_tableaux; - resultat_total FLOAT; - res FLOAT; - vh ose_formule.t_volume_horaire; - vhr ose_formule.t_volume_horaire_ref; - BEGIN - V_INIT; +END OSE_EVENT; +/ - ose_formule.d_resultat.service_du := CASE - WHEN ose_formule.d_intervenant.depassement_service_du_sans_hc = 1 -- HC traitées comme du service - OR ose_formule.d_intervenant.heures_decharge < 0 -- s'il y a une décharge => aucune HC +-- OSE_FORMULE +CREATE OR REPLACE PACKAGE "OSE_FORMULE" AS - THEN 9999 - ELSE ose_formule.d_intervenant.heures_service_statutaire + ose_formule.d_intervenant.heures_service_modifie - END; + PACKAGE_SUJET VARCHAR2(80) DEFAULT 'OSE_FORMULE'; - liste_tableaux := t_liste_tableaux( - 11, 12, 13, 14, 15, 16, 17, - 21, 22, 23, 24, 25, 26, 27, - 31, 32, 33, 34, 35, 36, 37, - 41, 42, 43, 44, 45, 46, 47, - 51, 52, 53, 54, 55, 56, 57, - 61, 62, - 71, 72, - 81, 82, 83, 84, - 91, 92, 93, 94, 95, 96, 97, - 101, 102, 103, 104, 105, 106, 107, - 111, 112, 113, 114, 115, 116, 117, - 123, 124, - 131, 132, - 141, 142, - 151, 152, 153, 154, - 163, 164 - ); + TYPE t_intervenant IS RECORD ( + structure_id NUMERIC, + annee_id NUMERIC, + heures_decharge FLOAT DEFAULT 0, + heures_service_statutaire FLOAT DEFAULT 0, + heures_service_modifie FLOAT DEFAULT 0, + depassement_service_du_sans_hc FLOAT DEFAULT 0 + ); - FOR i IN liste_tableaux.FIRST .. liste_tableaux.LAST - LOOP - current_tableau := liste_tableaux(i); + TYPE t_type_etat_vh IS RECORD ( + type_volume_horaire_id NUMERIC, + etat_volume_horaire_id NUMERIC + ); + TYPE t_lst_type_etat_vh IS TABLE OF t_type_etat_vh INDEX BY PLS_INTEGER; - IF current_tableau IN ( -- calcul pour les volumes horaires des services - 11, 12, 13, 14, - 21, 22, 23, 24, - 41, 42, 43, 44, - 51, 52, 53, 54, - 61, 62, - 71, 72, - 81, 82, 83, 84, - 91, 92, 93, 94, - 101, 102, 103, 104, - 111, 112, 113, 114, - 123, 124, - 131, 132, - 141, 142, - 151, 152, 153, 154, - 163, 164 - ) THEN + TYPE t_service_ref IS RECORD ( + id NUMERIC, + structure_id NUMERIC + ); + TYPE t_lst_service_ref IS TABLE OF t_service_ref INDEX BY PLS_INTEGER; - current_id := ose_formule.d_volume_horaire.FIRST; - LOOP EXIT WHEN current_id IS NULL; - vh := ose_formule.d_volume_horaire(current_id); - res := CASE current_tableau - WHEN 11 THEN C2_11 (vh) WHEN 12 THEN C2_12 (vh) WHEN 13 THEN C2_13 (vh) WHEN 14 THEN C2_14 (vh) - WHEN 21 THEN C2_21 (vh) WHEN 22 THEN C2_22 (vh) WHEN 23 THEN C2_23 (vh) WHEN 24 THEN C2_24 (vh) - WHEN 41 THEN C2_41 (vh) WHEN 42 THEN C2_42 (vh) WHEN 43 THEN C2_43 (vh) WHEN 44 THEN C2_44 (vh) - WHEN 51 THEN C2_51 (vh) WHEN 52 THEN C2_52 (vh) WHEN 53 THEN C2_53 (vh) WHEN 54 THEN C2_54 (vh) - WHEN 61 THEN C2_61 (vh) WHEN 62 THEN C2_62 (vh) - WHEN 71 THEN C2_71 (vh) WHEN 72 THEN C2_72 (vh) - WHEN 81 THEN C2_81 (vh) WHEN 82 THEN C2_82 (vh) WHEN 83 THEN C2_83 (vh) WHEN 84 THEN C2_84 (vh) - WHEN 91 THEN C2_91 (vh) WHEN 92 THEN C2_92 (vh) WHEN 93 THEN C2_93 (vh) WHEN 94 THEN C2_94 (vh) - WHEN 101 THEN C2_101 (vh) WHEN 102 THEN C2_102 (vh) WHEN 103 THEN C2_103 (vh) WHEN 104 THEN C2_104 (vh) - WHEN 111 THEN C2_111 (vh) WHEN 112 THEN C2_112 (vh) WHEN 113 THEN C2_113 (vh) WHEN 114 THEN C2_114 (vh) - WHEN 123 THEN C2_123 (vh) WHEN 124 THEN C2_124 (vh) - WHEN 131 THEN C2_131 (vh) WHEN 132 THEN C2_132 (vh) - WHEN 141 THEN C2_141 (vh) WHEN 142 THEN C2_142 (vh) - WHEN 151 THEN C2_151 (vh) WHEN 152 THEN C2_152 (vh) WHEN 153 THEN C2_153 (vh) WHEN 154 THEN C2_154 (vh) - WHEN 163 THEN C2_163 (vh) WHEN 164 THEN C2_164 (vh) - END; - SV( current_tableau, current_id, res ); - current_id := ose_formule.d_volume_horaire.NEXT(current_id); - END LOOP; + TYPE t_service IS RECORD ( + id NUMERIC, + taux_fi FLOAT DEFAULT 1, + taux_fa FLOAT DEFAULT 0, + taux_fc FLOAT DEFAULT 0, + ponderation_service_du FLOAT DEFAULT 1, + ponderation_service_compl FLOAT DEFAULT 1, + structure_aff_id NUMERIC, + structure_ens_id NUMERIC + ); + TYPE t_lst_service IS TABLE OF t_service INDEX BY PLS_INTEGER; - ELSIF current_tableau IN ( -- calcul des services restants dus - 31, 32, 33, 34, 35, 36, 37 - ) THEN + TYPE t_volume_horaire_ref IS RECORD ( + id NUMERIC, + service_referentiel_id NUMERIC, + type_volume_horaire_id NUMERIC, + etat_volume_horaire_id NUMERIC, + etat_volume_horaire_ordre NUMERIC, + heures FLOAT DEFAULT 0 + ); + TYPE t_lst_volume_horaire_ref IS TABLE OF t_volume_horaire_ref INDEX BY PLS_INTEGER; - res := CASE current_tableau - WHEN 31 THEN C2_31 WHEN 32 THEN C2_32 WHEN 33 THEN C2_33 - WHEN 34 THEN C2_34 WHEN 35 THEN C2_35 WHEN 36 THEN C2_36 - WHEN 37 THEN C2_37 - END; - SV( current_tableau, res ); + TYPE t_volume_horaire IS RECORD ( + id NUMERIC, + service_id NUMERIC, + type_volume_horaire_id NUMERIC, + etat_volume_horaire_id NUMERIC, + etat_volume_horaire_ordre NUMERIC, + heures FLOAT DEFAULT 0, + taux_service_du FLOAT DEFAULT 1, + taux_service_compl FLOAT DEFAULT 1 + ); + TYPE t_lst_volume_horaire IS TABLE OF t_volume_horaire INDEX BY PLS_INTEGER; - ELSIF current_tableau IN ( -- tableaux de calcul des volumes horaires référentiels - 15, 16, 17, - 25, 26, 27, - 45, 46, 47, - 55, 56, 57, - 95, 96, 97, - 105, 106, 107, - 115, 116, 117 - ) THEN - current_id := ose_formule.d_volume_horaire_ref.FIRST; - LOOP EXIT WHEN current_id IS NULL; - vhr := ose_formule.d_volume_horaire_ref(current_id); - res := CASE current_tableau - WHEN 15 THEN C2_15 (vhr) WHEN 16 THEN C2_16 (vhr) WHEN 17 THEN C2_17 (vhr) - WHEN 25 THEN C2_25 (vhr) WHEN 26 THEN C2_26 (vhr) WHEN 27 THEN C2_27 (vhr) - WHEN 45 THEN C2_45 (vhr) WHEN 46 THEN C2_46 (vhr) WHEN 47 THEN C2_47 (vhr) - WHEN 55 THEN C2_55 (vhr) WHEN 56 THEN C2_56 (vhr) WHEN 57 THEN C2_57 (vhr) - WHEN 95 THEN C2_95 (vhr) WHEN 96 THEN C2_96 (vhr) WHEN 97 THEN C2_97 (vhr) - WHEN 105 THEN C2_105 (vhr) WHEN 106 THEN C2_106 (vhr) WHEN 107 THEN C2_107 (vhr) - WHEN 115 THEN C2_115 (vhr) WHEN 116 THEN C2_116 (vhr) WHEN 117 THEN C2_117 (vhr) - END; - SV(current_tableau, current_id, res); - current_id := ose_formule.d_volume_horaire_ref.NEXT(current_id); - END LOOP; - END IF; - END LOOP; + TYPE t_resultat_hetd IS RECORD ( + service_fi FLOAT DEFAULT 0, + service_fa FLOAT DEFAULT 0, + service_fc FLOAT DEFAULT 0, + heures_compl_fi FLOAT DEFAULT 0, + heures_compl_fa FLOAT DEFAULT 0, + heures_compl_fc FLOAT DEFAULT 0, + heures_compl_fc_majorees FLOAT DEFAULT 0 + ); + TYPE t_lst_resultat_hetd IS TABLE OF t_resultat_hetd INDEX BY PLS_INTEGER; - resultat_total := gt( 55) + gt( 56) + gt( 57) - + gt( 61) + gt( 62) - + gt( 71) + gt( 72) - + gt( 81) + gt( 82) + gt( 83) + gt( 84) - + gt(115) + gt(116) + gt(117) - + gt(131) + gt(132) - + gt(141) + gt(142) - + gt(151) + gt(152) + gt(153) + gt(154) - + gt(163) + gt(164); + TYPE t_resultat_hetd_ref IS RECORD ( + service_referentiel FLOAT DEFAULT 0, + heures_compl_referentiel FLOAT DEFAULT 0 + ); + TYPE t_lst_resultat_hetd_ref IS TABLE OF t_resultat_hetd_ref INDEX BY PLS_INTEGER; - ose_formule.d_resultat.service_du := CASE - WHEN ose_formule.d_intervenant.depassement_service_du_sans_hc = 1 OR ose_formule.d_intervenant.heures_decharge < 0 - THEN GREATEST(resultat_total, ose_formule.d_intervenant.heures_service_statutaire + ose_formule.d_intervenant.heures_service_modifie) - ELSE ose_formule.d_intervenant.heures_service_statutaire + ose_formule.d_intervenant.heures_service_modifie - END; - ose_formule.d_resultat.solde := resultat_total - ose_formule.d_resultat.service_du; - IF ose_formule.d_resultat.solde >= 0 THEN - ose_formule.d_resultat.sous_service := 0; - ose_formule.d_resultat.heures_compl := ose_formule.d_resultat.solde; - ELSE - ose_formule.d_resultat.sous_service := ose_formule.d_resultat.solde * -1; - ose_formule.d_resultat.heures_compl := 0; - END IF; + TYPE t_resultat IS RECORD ( + intervenant_id NUMERIC, + type_volume_horaire_id NUMERIC, + etat_volume_horaire_id NUMERIC, + service_du FLOAT DEFAULT 0, + solde FLOAT DEFAULT 0, + sous_service FLOAT DEFAULT 0, + heures_compl FLOAT DEFAULT 0, + volume_horaire t_lst_resultat_hetd, + volume_horaire_ref t_lst_resultat_hetd_ref + ); - -- répartition des résultats par volumes horaires - current_id := ose_formule.d_volume_horaire.FIRST; - LOOP EXIT WHEN current_id IS NULL; - ose_formule.d_resultat.volume_horaire(current_id).service_fi := gv( 61) + gv( 62); - ose_formule.d_resultat.volume_horaire(current_id).service_fa := gv( 71) + gv( 72); - ose_formule.d_resultat.volume_horaire(current_id).service_fc := gv( 81) + gv( 82) + gv( 83) + gv( 84); - ose_formule.d_resultat.volume_horaire(current_id).heures_compl_fi := gv(131) + gv(132); - ose_formule.d_resultat.volume_horaire(current_id).heures_compl_fa := gv(141) + gv(142); - ose_formule.d_resultat.volume_horaire(current_id).heures_compl_fc := gv(151) + gv(152) + gv(153) + gv(154); - ose_formule.d_resultat.volume_horaire(current_id).heures_compl_fc_majorees := gv(163) + gv(164); - current_id := ose_formule.d_volume_horaire.NEXT(current_id); - END LOOP; + d_intervenant t_intervenant; + d_type_etat_vh t_lst_type_etat_vh; + d_service_ref t_lst_service_ref; + d_service t_lst_service; + d_volume_horaire_ref t_lst_volume_horaire_ref; + d_volume_horaire t_lst_volume_horaire; + d_resultat t_resultat; - -- répartition des résultats par volumes horaires référentiel - current_id := ose_formule.d_volume_horaire_ref.FIRST; - LOOP EXIT WHEN current_id IS NULL; - ose_formule.d_resultat.volume_horaire_ref(current_id).service_referentiel := gv(55) + gv(56) + gv(57); - ose_formule.d_resultat.volume_horaire_ref(current_id).heures_compl_referentiel := gv(115) + gv(116) + gv(117); - current_id := ose_formule.d_volume_horaire_ref.NEXT(current_id); - END LOOP; + FUNCTION GET_INTERVENANT_ID RETURN NUMERIC; + FUNCTION GET_DATE_OBS RETURN DATE; + FUNCTION SET_DATE_OBS( DATE_OBS DATE DEFAULT NULL ) RETURN DATE; - END; + PROCEDURE SET_DEBUG_LEVEL( DEBUG_LEVEL NUMERIC ); + FUNCTION GET_DEBUG_LEVEL RETURN NUMERIC; + FUNCTION GET_TAUX_HORAIRE_HETD( DATE_OBS DATE DEFAULT NULL ) RETURN FLOAT; + PROCEDURE UPDATE_ANNEE_TAUX_HETD; + PROCEDURE CALCULER( INTERVENANT_ID NUMERIC ); + PROCEDURE CALCULER_TOUT( ANNEE_ID NUMERIC DEFAULT NULL ); -- mise à jour de TOUTES les données ! ! ! ! + PROCEDURE CALCULER_TBL( PARAMS UNICAEN_TBL.T_PARAMS ); + PROCEDURE SET_INTERVENANT(INTERVENANT_ID NUMERIC DEFAULT NULL); + FUNCTION GET_INTERVENANT RETURN NUMERIC; + FUNCTION MATCH_INTERVENANT(INTERVENANT_ID NUMERIC DEFAULT NULL) RETURN NUMERIC; +END OSE_FORMULE; +/ +-- OSE_HISTO +CREATE OR REPLACE PACKAGE "OSE_HISTO" AS + FUNCTION FILTRE( histo_debut NUMERIC, histo_fin NUMERIC ) RETURN NUMERIC; +END OSE_HISTO; +/ +-- OSE_PAIEMENT +CREATE OR REPLACE PACKAGE "OSE_PAIEMENT" AS + PROCEDURE CHECK_BAD_PAIEMENTS( FORMULE_RES_SERVICE_ID NUMERIC DEFAULT NULL, FORMULE_RES_SERVICE_REF_ID NUMERIC DEFAULT NULL ); +END OSE_PAIEMENT; +/ +-- OSE_PARAMETRE +CREATE OR REPLACE PACKAGE "OSE_PARAMETRE" AS + function get_etablissement return Numeric; + function get_annee return Numeric; + function get_annee_import return Numeric; + function get_ose_user return Numeric; + function get_drh_structure_id return Numeric; + function get_date_fin_saisie_permanents RETURN DATE; + function get_ddeb_saisie_serv_real RETURN DATE; + function get_dfin_saisie_serv_real RETURN DATE; + function get_formule_package_name RETURN VARCHAR2; + function get_formule_function_name RETURN VARCHAR2; +END OSE_PARAMETRE; +/ +-- OSE_TEST +CREATE OR REPLACE PACKAGE "OSE_TEST" AS - PROCEDURE CALCUL_RESULTAT_V3( INTERVENANT_ID NUMERIC, TYPE_VOLUME_HORAIRE_ID NUMERIC, ETAT_VOLUME_HORAIRE_ID NUMERIC ) IS - current_tableau PLS_INTEGER; - id PLS_INTEGER; - val FLOAT; - TYPE t_liste_tableaux IS VARRAY (100) OF PLS_INTEGER; - liste_tableaux t_liste_tableaux; - resultat_total FLOAT; - res FLOAT; - vh ose_formule.t_volume_horaire; - vhr ose_formule.t_volume_horaire_ref; - BEGIN + DEBUG_ENABLED BOOLEAN DEFAULT FALSE; - -- si l'année est antérieure à 2016/2017 alors on utilise la V2!! - IF ose_formule.d_intervenant.annee_id < 2016 THEN - CALCUL_RESULTAT_V2( INTERVENANT_ID, TYPE_VOLUME_HORAIRE_ID, ETAT_VOLUME_HORAIRE_ID ); - RETURN; - END IF; + -- SET SERVEROUTPUT ON - V_INIT; + PROCEDURE SHOW_SUCCES; - ose_formule.d_resultat.service_du := CASE - WHEN ose_formule.d_intervenant.depassement_service_du_sans_hc = 1 -- HC traitées comme du service - OR ose_formule.d_intervenant.heures_decharge < 0 -- s'il y a une décharge => aucune HC + PROCEDURE HIDE_SUCCES; - THEN 9999 - ELSE ose_formule.d_intervenant.heures_service_statutaire + ose_formule.d_intervenant.heures_service_modifie - END; + PROCEDURE ECHO( MSG CLOB ); - liste_tableaux := t_liste_tableaux( - 11, 12, 13, 14, 15, 16, 17, - 21, 22, 23, 24, 25, 26, 27, - 31, 32, 33, 34, 35, 36, 37, - 41, 42, 43, 44, 45, 46, 47, - 51, 52, 53, 54, 55, 56, 57, - 61, 62, - 71, 72, - 81, 82, 83, 84, - 91, 92, 93, 94, 95, 96, 97, - 101, 102, 103, 104, 105, 106, 107, - 111, 112, 113, 114, 115, 116, 117, - 123, 124, - 131, 132, - 141, 142, - 151, 152, 153, 154, - 163, 164 - ); + PROCEDURE INIT; - FOR i IN liste_tableaux.FIRST .. liste_tableaux.LAST - LOOP - current_tableau := liste_tableaux(i); + PROCEDURE SHOW_STATS; - IF current_tableau IN ( -- calcul pour les volumes horaires des services - 11, 12, 13, 14, - 21, 22, 23, 24, - 41, 42, 43, 44, - 51, 52, 53, 54, - 61, 62, - 71, 72, - 81, 82, 83, 84, - 91, 92, 93, 94, - 101, 102, 103, 104, - 111, 112, 113, 114, - 123, 124, - 131, 132, - 141, 142, - 151, 152, 153, 154, - 163, 164 - ) THEN + PROCEDURE DEBUT( TEST_NAME CLOB ); - current_id := ose_formule.d_volume_horaire.FIRST; - LOOP EXIT WHEN current_id IS NULL; - vh := ose_formule.d_volume_horaire(current_id); - res := CASE current_tableau - WHEN 11 THEN C3_11 (vh) WHEN 12 THEN C3_12 (vh) WHEN 13 THEN C3_13 (vh) WHEN 14 THEN C3_14 (vh) - WHEN 21 THEN C2_21 (vh) WHEN 22 THEN C2_22 (vh) WHEN 23 THEN C2_23 (vh) WHEN 24 THEN C2_24 (vh) - WHEN 41 THEN C2_41 (vh) WHEN 42 THEN C2_42 (vh) WHEN 43 THEN C2_43 (vh) WHEN 44 THEN C2_44 (vh) - WHEN 51 THEN C2_51 (vh) WHEN 52 THEN C2_52 (vh) WHEN 53 THEN C2_53 (vh) WHEN 54 THEN C2_54 (vh) - WHEN 61 THEN C3_61 (vh) WHEN 62 THEN C3_62 (vh) - WHEN 71 THEN C3_71 (vh) WHEN 72 THEN C3_72 (vh) - WHEN 83 THEN C3_83 (vh) WHEN 84 THEN C3_84 (vh) - WHEN 91 THEN C2_91 (vh) WHEN 92 THEN C2_92 (vh) WHEN 93 THEN C2_93 (vh) WHEN 94 THEN C2_94 (vh) - WHEN 101 THEN C2_101 (vh) WHEN 102 THEN C2_102 (vh) WHEN 103 THEN C2_103 (vh) WHEN 104 THEN C2_104 (vh) - WHEN 111 THEN C2_111 (vh) WHEN 112 THEN C2_112 (vh) WHEN 113 THEN C2_113 (vh) WHEN 114 THEN C2_114 (vh) - WHEN 123 THEN C3_123 (vh) WHEN 124 THEN C3_124 (vh) - WHEN 131 THEN C3_131 (vh) WHEN 132 THEN C3_132 (vh) - WHEN 141 THEN C3_141 (vh) WHEN 142 THEN C3_142 (vh) - WHEN 153 THEN C3_153 (vh) WHEN 154 THEN C3_154 (vh) - WHEN 163 THEN C3_163 (vh) WHEN 164 THEN C3_164 (vh) - END; - SV( current_tableau, current_id, res ); - current_id := ose_formule.d_volume_horaire.NEXT(current_id); - END LOOP; + PROCEDURE FIN; - ELSIF current_tableau IN ( -- calcul des services restants dus - 31, 32, 33, 34, 35, 36, 37 - ) THEN + PROCEDURE ASSERT( condition BOOLEAN, MSG CLOB ); - res := CASE current_tableau - WHEN 31 THEN C2_31 WHEN 32 THEN C2_32 WHEN 33 THEN C2_33 - WHEN 34 THEN C2_34 WHEN 35 THEN C2_35 WHEN 36 THEN C2_36 - WHEN 37 THEN C2_37 - END; - SV( current_tableau, res ); + PROCEDURE HOROINIT; - ELSIF current_tableau IN ( -- tableaux de calcul des volumes horaires référentiels - 15, 16, 17, - 25, 26, 27, - 45, 46, 47, - 55, 56, 57, - 95, 96, 97, - 105, 106, 107, - 115, 116, 117 - ) THEN + PROCEDURE HORODATAGE( msg VARCHAR2 ); - current_id := ose_formule.d_volume_horaire_ref.FIRST; - LOOP EXIT WHEN current_id IS NULL; - vhr := ose_formule.d_volume_horaire_ref(current_id); - res := CASE current_tableau - WHEN 15 THEN C2_15 (vhr) WHEN 16 THEN C2_16 (vhr) WHEN 17 THEN C2_17 (vhr) - WHEN 25 THEN C2_25 (vhr) WHEN 26 THEN C2_26 (vhr) WHEN 27 THEN C2_27 (vhr) - WHEN 45 THEN C2_45 (vhr) WHEN 46 THEN C2_46 (vhr) WHEN 47 THEN C2_47 (vhr) - WHEN 55 THEN C2_55 (vhr) WHEN 56 THEN C2_56 (vhr) WHEN 57 THEN C2_57 (vhr) - WHEN 95 THEN C2_95 (vhr) WHEN 96 THEN C2_96 (vhr) WHEN 97 THEN C2_97 (vhr) - WHEN 105 THEN C2_105 (vhr) WHEN 106 THEN C2_106 (vhr) WHEN 107 THEN C2_107 (vhr) - WHEN 115 THEN C2_115 (vhr) WHEN 116 THEN C2_116 (vhr) WHEN 117 THEN C2_117 (vhr) - END; - SV(current_tableau, current_id, res); - current_id := ose_formule.d_volume_horaire_ref.NEXT(current_id); - END LOOP; + FUNCTION GET_STRUCTURE_BY_ID( id NUMERIC ) RETURN structure%rowtype; - END IF; - END LOOP; +END OSE_TEST; +/ - resultat_total := gt( 55) + gt( 56) + gt( 57) - + gt( 61) + gt( 62) - + gt( 71) + gt( 72) - + gt( 83) + gt( 84) - + gt(115) + gt(116) + gt(117) - + gt(131) + gt(132) - + gt(141) + gt(142) - + gt(153) + gt(154) - + gt(163) + gt(164); +-- OSE_VALIDATION +CREATE OR REPLACE PACKAGE "OSE_VALIDATION" AS - ose_formule.d_resultat.service_du := CASE - WHEN ose_formule.d_intervenant.depassement_service_du_sans_hc = 1 OR ose_formule.d_intervenant.heures_decharge < 0 - THEN GREATEST(resultat_total, ose_formule.d_intervenant.heures_service_statutaire + ose_formule.d_intervenant.heures_service_modifie) - ELSE ose_formule.d_intervenant.heures_service_statutaire + ose_formule.d_intervenant.heures_service_modifie - END; - ose_formule.d_resultat.solde := resultat_total - ose_formule.d_resultat.service_du; - IF ose_formule.d_resultat.solde >= 0 THEN - ose_formule.d_resultat.sous_service := 0; - ose_formule.d_resultat.heures_compl := ose_formule.d_resultat.solde; - ELSE - ose_formule.d_resultat.sous_service := ose_formule.d_resultat.solde * -1; - ose_formule.d_resultat.heures_compl := 0; - END IF; + FUNCTION can_devalider ( v validation%rowtype ) RETURN varchar2; - -- répartition des résultats par volumes horaires - current_id := ose_formule.d_volume_horaire.FIRST; - LOOP EXIT WHEN current_id IS NULL; - ose_formule.d_resultat.volume_horaire(current_id).service_fi := gv( 61) + gv( 62); - ose_formule.d_resultat.volume_horaire(current_id).service_fa := gv( 71) + gv( 72); - ose_formule.d_resultat.volume_horaire(current_id).service_fc := gv( 83) + gv( 84); - ose_formule.d_resultat.volume_horaire(current_id).heures_compl_fi := gv(131) + gv(132); - ose_formule.d_resultat.volume_horaire(current_id).heures_compl_fa := gv(141) + gv(142); - ose_formule.d_resultat.volume_horaire(current_id).heures_compl_fc := gv(153) + gv(154); - ose_formule.d_resultat.volume_horaire(current_id).heures_compl_fc_majorees := gv(163) + gv(164); - current_id := ose_formule.d_volume_horaire.NEXT(current_id); - END LOOP; +END OSE_VALIDATION; +/ - -- répartition des résultats par volumes horaires référentiel - current_id := ose_formule.d_volume_horaire_ref.FIRST; - LOOP EXIT WHEN current_id IS NULL; - ose_formule.d_resultat.volume_horaire_ref(current_id).service_referentiel := gv(55) + gv(56) + gv(57); - ose_formule.d_resultat.volume_horaire_ref(current_id).heures_compl_referentiel := gv(115) + gv(116) + gv(117); - current_id := ose_formule.d_volume_horaire_ref.NEXT(current_id); - END LOOP; +-- OSE_WORKFLOW +CREATE OR REPLACE PACKAGE "OSE_WORKFLOW" AS - END; + PACKAGE_SUJET VARCHAR2(80) DEFAULT 'OSE_WORKFLOW'; + + PROCEDURE CALCULER( INTERVENANT_ID NUMERIC ); + PROCEDURE CALCULER_TOUT( ANNEE_ID NUMERIC DEFAULT NULL ); + PROCEDURE CALCULER_TBL( PARAMS UNICAEN_TBL.T_PARAMS ); + PROCEDURE DEP_CHECK( etape_suiv_id NUMERIC, etape_prec_id NUMERIC ); + PROCEDURE SET_INTERVENANT(INTERVENANT_ID NUMERIC DEFAULT NULL); + FUNCTION GET_INTERVENANT RETURN NUMERIC; + FUNCTION MATCH_INTERVENANT(INTERVENANT_ID NUMERIC DEFAULT NULL) RETURN NUMERIC; +END OSE_WORKFLOW; +/ +-- UNICAEN_IMPORT +CREATE OR REPLACE PACKAGE "UNICAEN_IMPORT" AS + z__SYNC_FILRE__z CLOB DEFAULT ''; + z__IGNORE_UPD_COLS__z CLOB DEFAULT ''; + PROCEDURE set_current_user(p_current_user IN INTEGER); + FUNCTION get_current_user return INTEGER; + FUNCTION get_current_annee RETURN INTEGER; + PROCEDURE set_current_annee (p_current_annee INTEGER); + FUNCTION IN_COLUMN_LIST( VALEUR VARCHAR2, CHAMPS CLOB ) RETURN NUMERIC; + PROCEDURE REFRESH_MV( mview_name varchar2 ); + PROCEDURE SYNC_LOG( message CLOB, table_name VARCHAR2 DEFAULT NULL, source_code VARCHAR2 DEFAULT NULL ); + PROCEDURE SYNCHRONISATION( table_name VARCHAR2, SYNC_FILRE CLOB DEFAULT '', IGNORE_UPD_COLS CLOB DEFAULT '' ); +END UNICAEN_IMPORT; +/ +-- UNICAEN_OSE_FORMULE +CREATE OR REPLACE PACKAGE "UNICAEN_OSE_FORMULE" AS + PROCEDURE CALCUL_RESULTAT_V2( INTERVENANT_ID NUMERIC, TYPE_VOLUME_HORAIRE_ID NUMERIC, ETAT_VOLUME_HORAIRE_ID NUMERIC ); - PROCEDURE PURGE_EM_NON_FC IS - BEGIN - FOR em IN ( - SELECT - em.id - FROM - ELEMENT_MODULATEUR em - JOIN element_pedagogique ep ON ep.id = em.element_id AND ep.histo_destruction IS NULL - WHERE - em.histo_destruction IS NULL - AND ep.taux_fc < 1 - ) LOOP - UPDATE - element_modulateur - SET - histo_destruction = SYSDATE, - histo_destructeur_id = ose_parametre.get_ose_user - WHERE - id = em.id - ; - END LOOP; - END; + PROCEDURE CALCUL_RESULTAT_V3( INTERVENANT_ID NUMERIC, TYPE_VOLUME_HORAIRE_ID NUMERIC, ETAT_VOLUME_HORAIRE_ID NUMERIC ); + + PROCEDURE PURGE_EM_NON_FC; END UNICAEN_OSE_FORMULE; / -- UNICAEN_TBL -CREATE OR REPLACE PACKAGE BODY "UNICAEN_TBL" AS +CREATE OR REPLACE PACKAGE "UNICAEN_TBL" AS + + TYPE t_params IS RECORD ( + c1 VARCHAR2(30), v1 VARCHAR2(80), + c2 VARCHAR2(30), v2 VARCHAR2(80), + c3 VARCHAR2(30), v3 VARCHAR2(80), + c4 VARCHAR2(30), v4 VARCHAR2(80), + c5 VARCHAR2(30), v5 VARCHAR2(80), + sqlcond CLOB + ); + + ACTIV_TRIGGERS BOOLEAN DEFAULT TRUE; + ACTIV_CALCULS BOOLEAN DEFAULT TRUE; + CALCUL_PROC_PARAMS t_params; FUNCTION MAKE_PARAMS( c1 VARCHAR2 DEFAULT NULL, v1 VARCHAR2 DEFAULT NULL, @@ -12929,5743 +13816,6414 @@ CREATE OR REPLACE PACKAGE BODY "UNICAEN_TBL" AS c4 VARCHAR2 DEFAULT NULL, v4 VARCHAR2 DEFAULT NULL, c5 VARCHAR2 DEFAULT NULL, v5 VARCHAR2 DEFAULT NULL, sqlcond CLOB DEFAULT NULL - ) RETURN t_params IS - params t_params; - BEGIN - IF c1 IS NOT NULL THEN - params.c1 := c1; - params.v1 := v1; - END IF; - IF c2 IS NOT NULL THEN - params.c2 := c2; - params.v2 := v2; - END IF; - IF c3 IS NOT NULL THEN - params.c3 := c3; - params.v3 := v3; - END IF; - IF c4 IS NOT NULL THEN - params.c4 := c4; - params.v4 := v4; - END IF; - IF c5 IS NOT NULL THEN - params.c5 := c5; - params.v5 := v5; - END IF; - params.sqlcond := sqlcond; + ) RETURN t_params; - RETURN params; - END; + FUNCTION PARAMS_FROM_DEMS( TBL_NAME VARCHAR2 ) RETURN t_params; + FUNCTION PARAMS_TO_CONDS ( PARAMS UNICAEN_TBL.T_PARAMS ) RETURN CLOB; + + PROCEDURE DEMANDE_CALCUL( TBL_NAME VARCHAR2 ); + PROCEDURE DEMANDE_CALCUL( TBL_NAME VARCHAR2, CONDS CLOB ); + PROCEDURE DEMANDE_CALCUL( TBL_NAME VARCHAR2, PARAMS t_params ); + PROCEDURE CALCULER( TBL_NAME VARCHAR2 ); + PROCEDURE CALCULER( TBL_NAME VARCHAR2, CONDS CLOB ); + PROCEDURE CALCULER( TBL_NAME VARCHAR2, PARAMS t_params ); + PROCEDURE ANNULER_DEMANDES; + PROCEDURE ANNULER_DEMANDES( TBL_NAME VARCHAR2 ); + PROCEDURE CALCULER_DEMANDES; - PROCEDURE DEMANDE_CALCUL( TBL_NAME VARCHAR2 ) IS - p t_params; - BEGIN - DEMANDE_CALCUL( tbl_name, p ); - END; + -- AUTOMATIC GENERATION -- + + PROCEDURE C_AGREMENT( PARAMS UNICAEN_TBL.T_PARAMS ); + PROCEDURE C_CHARGENS( PARAMS UNICAEN_TBL.T_PARAMS ); + PROCEDURE C_CHARGENS_SEUILS_DEF( PARAMS UNICAEN_TBL.T_PARAMS ); + PROCEDURE C_CLOTURE_REALISE( PARAMS UNICAEN_TBL.T_PARAMS ); + PROCEDURE C_CONTRAT( PARAMS UNICAEN_TBL.T_PARAMS ); + PROCEDURE C_DMEP_LIQUIDATION( PARAMS UNICAEN_TBL.T_PARAMS ); + PROCEDURE C_DOSSIER( PARAMS UNICAEN_TBL.T_PARAMS ); + PROCEDURE C_PAIEMENT( PARAMS UNICAEN_TBL.T_PARAMS ); + PROCEDURE C_PIECE_JOINTE( PARAMS UNICAEN_TBL.T_PARAMS ); + PROCEDURE C_PIECE_JOINTE_DEMANDE( PARAMS UNICAEN_TBL.T_PARAMS ); + PROCEDURE C_PIECE_JOINTE_FOURNIE( PARAMS UNICAEN_TBL.T_PARAMS ); + PROCEDURE C_SERVICE( PARAMS UNICAEN_TBL.T_PARAMS ); + PROCEDURE C_SERVICE_REFERENTIEL( PARAMS UNICAEN_TBL.T_PARAMS ); + PROCEDURE C_SERVICE_SAISIE( PARAMS UNICAEN_TBL.T_PARAMS ); + PROCEDURE C_VALIDATION_ENSEIGNEMENT( PARAMS UNICAEN_TBL.T_PARAMS ); + PROCEDURE C_VALIDATION_REFERENTIEL( PARAMS UNICAEN_TBL.T_PARAMS ); + + -- END OF AUTOMATIC GENERATION -- +END UNICAEN_TBL; +/ +-- OSE_CHARGENS +CREATE OR REPLACE PACKAGE BODY "OSE_CHARGENS" AS + SCENARIO NUMERIC; + NOEUD NUMERIC; + old_enable BOOLEAN DEFAULT TRUE; - PROCEDURE DEMANDE_CALCUL( TBL_NAME VARCHAR2, CONDS CLOB ) IS - p t_params; + TYPE T_PRECALC_HEURES_PARAMS IS RECORD ( + annee_id NUMERIC DEFAULT NULL, + structure_id NUMERIC DEFAULT NULL, + scenario_id NUMERIC DEFAULT NULL, + type_heures_id NUMERIC DEFAULT NULL, + etape_id NUMERIC DEFAULT NULL, + noeud_ids tnoeud_ids DEFAULT NULL + ); + + PRECALC_HEURES_PARAMS T_PRECALC_HEURES_PARAMS; + + + FUNCTION GET_SCENARIO RETURN NUMERIC IS BEGIN - p.sqlcond := CONDS; - DEMANDE_CALCUL( tbl_name, p ); + RETURN OSE_CHARGENS.SCENARIO; END; + PROCEDURE SET_SCENARIO( SCENARIO NUMERIC ) IS + BEGIN + OSE_CHARGENS.SCENARIO := SET_SCENARIO.SCENARIO; + END; - PROCEDURE DEMANDE_CALCUL( TBL_NAME VARCHAR2, PARAMS t_params ) IS + + FUNCTION GET_NOEUD RETURN NUMERIC IS BEGIN - INSERT INTO tbl_dems ( - ID, - TBL_NAME, - c1, v1, - c2, v2, - c3, v3, - c4, v4, - c5, v5, - sqlcond - ) VALUES ( - TBL_DEMS_ID_SEQ.NEXTVAL, - TBL_NAME, - PARAMS.c1, PARAMS.v1, - PARAMS.c2, PARAMS.v2, - PARAMS.c3, PARAMS.v3, - PARAMS.c4, PARAMS.v4, - PARAMS.c5, PARAMS.v5, - PARAMS.sqlcond - ); + RETURN OSE_CHARGENS.NOEUD; END; + PROCEDURE SET_NOEUD( NOEUD NUMERIC ) IS + BEGIN + OSE_CHARGENS.NOEUD := SET_NOEUD.NOEUD; + END; - FUNCTION PARAMS_FROM_DEMS( TBL_NAME VARCHAR2 ) RETURN t_params IS - res t_params; - conds CLOB := ''; - cond CLOB; - BEGIN - FOR d IN ( - SELECT * - FROM tbl_dems - WHERE tbl_name = PARAMS_FROM_DEMS.TBL_NAME - ) - LOOP - cond := ''; - IF d.c1 IS NOT NULL THEN - IF cond IS NOT NULL THEN cond := cond || ' AND '; END IF; - IF d.v1 IS NULL THEN - cond := cond || d.c1 || ' IS NULL'; - ELSE - cond := cond || d.c1 || '=' || d.v1; - END IF; - END IF; - IF d.c2 IS NOT NULL THEN - IF cond IS NOT NULL THEN cond := cond || ' AND '; END IF; - IF d.v2 IS NULL THEN - cond := cond || d.c2 || ' IS NULL'; - ELSE - cond := cond || d.c2 || '=' || d.v2; - END IF; - END IF; + FUNCTION CALC_COEF( choix_min NUMERIC, choix_max NUMERIC, poids NUMERIC, max_poids NUMERIC, total_poids NUMERIC, nb_choix NUMERIC ) RETURN FLOAT IS + cmin NUMERIC; + cmax NUMERIC; + coef_choix FLOAT; + coef_poids FLOAT; + max_coef_poids FLOAT; + correcteur FLOAT DEFAULT 1; + res FLOAT; + BEGIN + cmin := choix_min; + cmax := choix_max; - IF d.c3 IS NOT NULL THEN - IF cond IS NOT NULL THEN cond := cond || ' AND '; END IF; - IF d.v3 IS NULL THEN - cond := cond || d.c3 || ' IS NULL'; - ELSE - cond := cond || d.c3 || '=' || d.v3; - END IF; - END IF; + IF total_poids = 0 THEN RETURN 0; END IF; - IF d.c4 IS NOT NULL THEN - IF cond IS NOT NULL THEN cond := cond || ' AND '; END IF; - IF d.v4 IS NULL THEN - cond := cond || d.c4 || ' IS NULL'; - ELSE - cond := cond || d.c4 || '=' || d.v4; - END IF; - END IF; + IF cmax IS NULL OR cmax > nb_choix THEN + cmax := nb_choix; + END IF; + IF cmin IS NULL THEN + cmin := nb_choix; + ELSIF cmin > cmax THEN + cmin := cmax; + END IF; - IF d.c5 IS NOT NULL THEN - IF cond IS NOT NULL THEN cond := cond || ' AND '; END IF; - IF d.v5 IS NULL THEN - cond := cond || d.c5 || ' IS NULL'; - ELSE - cond := cond || d.c5 || '=' || d.v5; - END IF; - END IF; + coef_choix := (cmin + cmax) / 2 / nb_choix; - IF d.sqlcond IS NOT NULL THEN - IF cond IS NOT NULL THEN cond := cond || ' AND '; END IF; - cond := cond || '(' || d.sqlcond || ')'; - END IF; + coef_poids := poids / total_poids; - IF conds IS NOT NULL THEN - conds := conds || ' OR '; + max_coef_poids := max_poids / total_poids; + + IF (coef_choix * nb_choix * max_coef_poids) <= 1 THEN + res := coef_choix * nb_choix * coef_poids; + ELSE + correcteur := 1; + res := coef_choix * nb_choix * (coef_poids + (((1/nb_choix)-coef_poids)*correcteur)); END IF; - conds := conds || '(' || cond || ')'; - END LOOP; - res.sqlcond := conds; - DELETE FROM tbl_dems WHERE tbl_name = PARAMS_FROM_DEMS.TBL_NAME; - RETURN res; + --ose_test.echo('choix_min= ' || cmin || ', choix_max= ' || cmax || ', poids = ' || poids || ', max_poids = ' || max_poids || ', total_poids = ' || total_poids || ', nb_choix = ' || nb_choix || ', RES = ' || res); + RETURN res; END; - - FUNCTION PARAMS_TO_CONDS ( PARAMS UNICAEN_TBL.T_PARAMS ) RETURN CLOB IS - cond CLOB; + PROCEDURE DEM_CALC_SUB_EFFECTIF( scenario_noeud_id NUMERIC, type_heures_id NUMERIC, etape_id NUMERIC, effectif FLOAT ) IS BEGIN - IF params.c1 IS NOT NULL THEN - IF params.v1 IS NULL THEN - cond := cond || params.c1 || ' IS NULL'; - ELSE - cond := cond || params.c1 || '=' || params.v1; - END IF; - END IF; + INSERT INTO TMP_scenario_noeud_effectif( + scenario_noeud_id, type_heures_id, etape_id, effectif + ) VALUES( + scenario_noeud_id, type_heures_id, etape_id, effectif + ); + END; - IF params.c2 IS NOT NULL THEN - IF cond IS NOT NULL THEN cond := cond || ' AND '; END IF; - IF params.v2 IS NULL THEN - cond := cond || params.c2 || ' IS NULL'; - ELSE - cond := cond || params.c2 || '=' || params.v2; - END IF; - END IF; - IF params.c3 IS NOT NULL THEN - IF cond IS NOT NULL THEN cond := cond || ' AND '; END IF; - IF params.v3 IS NULL THEN - cond := cond || params.c3 || ' IS NULL'; - ELSE - cond := cond || params.c3 || '=' || params.v3; - END IF; - END IF; - IF params.c4 IS NOT NULL THEN - IF cond IS NOT NULL THEN cond := cond || ' AND '; END IF; - IF params.v4 IS NULL THEN - cond := cond || params.c4 || ' IS NULL'; - ELSE - cond := cond || params.c4 || '=' || params.v4; - END IF; - END IF; + PROCEDURE CALC_SUB_EFFECTIF_DEM IS + BEGIN + DELETE FROM TMP_scenario_noeud_effectif; + END; - IF params.c5 IS NOT NULL THEN - IF cond IS NOT NULL THEN cond := cond || ' AND '; END IF; - IF params.v5 IS NULL THEN - cond := cond || params.c5 || ' IS NULL'; - ELSE - cond := cond || params.c5 || '=' || params.v5; - END IF; - END IF; - IF params.sqlcond IS NOT NULL THEN - IF cond IS NOT NULL THEN cond := cond || ' AND '; END IF; - cond := cond || '(' || params.sqlcond || ')'; - END IF; + PROCEDURE CALC_ALL_EFFECTIFS IS + BEGIN + FOR p IN ( + + SELECT + sn.noeud_id, + sn.scenario_id, + sne.type_heures_id, + sne.etape_id + FROM + scenario_noeud_effectif sne + JOIN scenario_noeud sn ON sn.id = sne.scenario_noeud_id + JOIN noeud n ON n.id = sn.noeud_id + WHERE + n.etape_id IS NOT NULL - IF cond IS NULL THEN cond := '1=1'; END IF; + ) LOOP + + CALC_SUB_EFFECTIF2( p.noeud_id, p.scenario_id, p.type_heures_id, p.etape_id ); + END LOOP; - RETURN cond; END; - PROCEDURE CALCULER( TBL_NAME VARCHAR2 ) IS - p t_params; + PROCEDURE CALC_EFFECTIF( + noeud_id NUMERIC, + scenario_id NUMERIC, + type_heures_id NUMERIC DEFAULT NULL, + etape_id NUMERIC DEFAULT NULL + ) IS + snid NUMERIC; BEGIN - ANNULER_DEMANDES( TBL_NAME ); - CALCULER(TBL_NAME, p); - END; + UPDATE scenario_noeud_effectif SET effectif = 0 + WHERE + scenario_noeud_id = ( + SELECT id FROM scenario_noeud WHERE noeud_id = CALC_EFFECTIF.noeud_id AND scenario_id = CALC_EFFECTIF.scenario_id + ) + AND (type_heures_id = CALC_EFFECTIF.type_heures_id OR CALC_EFFECTIF.type_heures_id IS NULL) + AND (etape_id = CALC_EFFECTIF.etape_id OR CALC_EFFECTIF.etape_id IS NULL) + ; + FOR p IN ( + SELECT + * + FROM + v_chargens_calc_effectif cce + WHERE + cce.noeud_id = CALC_EFFECTIF.noeud_id + AND cce.scenario_id = CALC_EFFECTIF.scenario_id + AND (cce.type_heures_id = CALC_EFFECTIF.type_heures_id OR CALC_EFFECTIF.type_heures_id IS NULL) + AND (cce.etape_id = CALC_EFFECTIF.etape_id OR CALC_EFFECTIF.etape_id IS NULL) - PROCEDURE CALCULER( TBL_NAME VARCHAR2, CONDS CLOB ) IS - p t_params; - BEGIN - p.sqlcond := CONDS; - CALCULER(TBL_NAME, p); + ) LOOP + snid := OSE_CHARGENS.GET_SCENARIO_NOEUD_ID( p.scenario_id, p.noeud_id ); + IF snid IS NULL THEN + snid := OSE_CHARGENS.CREER_SCENARIO_NOEUD( p.scenario_id, p.noeud_id ); + END IF; + ADD_SCENARIO_NOEUD_EFFECTIF( snid, p.type_heures_id, p.etape_id, p.effectif ); + END LOOP; + CALC_SUB_EFFECTIF2( noeud_id, scenario_id, type_heures_id, etape_id ); END; - PROCEDURE CALCULER( TBL_NAME VARCHAR2, PARAMS t_params ) IS - calcul_proc varchar2(30); + PROCEDURE CALC_SUB_EFFECTIF2( noeud_id NUMERIC, scenario_id NUMERIC, type_heures_id NUMERIC DEFAULT NULL, etape_id NUMERIC DEFAULT NULL) IS BEGIN - IF NOT UNICAEN_TBL.ACTIV_CALCULS THEN RETURN; END IF; - - SELECT custom_calcul_proc INTO calcul_proc FROM tbl WHERE tbl_name = CALCULER.TBL_NAME; + FOR p IN ( - UNICAEN_TBL.CALCUL_PROC_PARAMS := PARAMS; - IF calcul_proc IS NOT NULL THEN - EXECUTE IMMEDIATE - 'BEGIN ' || calcul_proc || '(UNICAEN_TBL.CALCUL_PROC_PARAMS); END;' - ; - ELSE - EXECUTE IMMEDIATE - 'BEGIN UNICAEN_TBL.C_' || TBL_NAME || '(UNICAEN_TBL.CALCUL_PROC_PARAMS); END;' - ; - END IF; + SELECT * + FROM V_CHARGENS_GRANDS_LIENS cgl + WHERE cgl.noeud_sup_id = CALC_SUB_EFFECTIF2.noeud_id + ) LOOP + CALC_EFFECTIF( p.noeud_inf_id, scenario_id, type_heures_id, etape_id ); + END LOOP; END; - PROCEDURE ANNULER_DEMANDES IS + PROCEDURE DUPLIQUER( source_id NUMERIC, destination_id NUMERIC, utilisateur_id NUMERIC, structure_id NUMERIC, noeuds VARCHAR2 DEFAULT '', liens VARCHAR2 DEFAULT '' ) IS BEGIN - DELETE FROM tbl_dems; - END; + /* Destruction de tous les liens antérieurs de la destination */ + DELETE FROM + scenario_lien + WHERE + scenario_id = DUPLIQUER.destination_id + AND histo_destruction IS NULL + AND (DUPLIQUER.LIENS IS NULL OR DUPLIQUER.LIENS LIKE '%,' || lien_id || ',%' ) + AND (DUPLIQUER.STRUCTURE_ID IS NULL OR lien_id IN ( + SELECT id FROM lien WHERE lien.structure_id = DUPLIQUER.STRUCTURE_ID + )) + ; + /* Duplication des liens */ + INSERT INTO scenario_lien ( + id, + scenario_id, lien_id, + actif, poids, + choix_minimum, choix_maximum, + source_id, source_code, + histo_creation, histo_createur_id, + histo_modification, histo_modificateur_id + ) SELECT + scenario_lien_id_seq.nextval, + DUPLIQUER.destination_id, sl.lien_id, + sl.actif, sl.poids, + sl.choix_minimum, sl.choix_maximum, + source.id, 'dupli_' || sl.id || '_' || sl.lien_id || '_' || trunc(dbms_random.value(1,10000000000000)), + sysdate, DUPLIQUER.utilisateur_id, + sysdate, DUPLIQUER.utilisateur_id + FROM + scenario_lien sl + JOIN lien l ON l.id = sl.lien_id + JOIN source ON source.code = 'OSE' + WHERE + sl.scenario_id = DUPLIQUER.source_id + AND sl.histo_destruction IS NULL + AND (DUPLIQUER.LIENS IS NULL OR DUPLIQUER.LIENS LIKE '%,' || lien_id || ',%' ) + AND (DUPLIQUER.STRUCTURE_ID IS NULL OR l.structure_id = DUPLIQUER.STRUCTURE_ID) + ; - PROCEDURE ANNULER_DEMANDES( TBL_NAME VARCHAR2 ) IS - BEGIN - DELETE FROM tbl_dems WHERE tbl_name = ANNULER_DEMANDES.tbl_name; - END; + /* Destruction de tous les noeuds antérieurs de la destination */ + DELETE FROM + scenario_noeud + WHERE + scenario_id = DUPLIQUER.destination_id + AND histo_destruction IS NULL + AND (DUPLIQUER.NOEUDS IS NULL OR DUPLIQUER.NOEUDS LIKE '%,' || noeud_id || ',%' ) + AND (DUPLIQUER.STRUCTURE_ID IS NULL OR scenario_noeud.noeud_id IN ( + SELECT id FROM noeud WHERE noeud.structure_id = DUPLIQUER.STRUCTURE_ID + )) + ; + /* Duplication des noeuds */ + INSERT INTO scenario_noeud ( + id, + scenario_id, noeud_id, + assiduite, + source_id, source_code, + histo_creation, histo_createur_id, + histo_modification, histo_modificateur_id + ) SELECT + scenario_noeud_id_seq.nextval, + DUPLIQUER.destination_id, sn.noeud_id, + sn.assiduite, + source.id, 'dupli_' || sn.id || '_' || sn.noeud_id || '_' || trunc(dbms_random.value(1,10000000000000)), + sysdate, DUPLIQUER.utilisateur_id, + sysdate, DUPLIQUER.utilisateur_id + FROM + scenario_noeud sn + JOIN noeud n ON n.id = sn.noeud_id + JOIN source ON source.code = 'OSE' + WHERE + sn.scenario_id = DUPLIQUER.source_id + AND sn.histo_destruction IS NULL + AND (DUPLIQUER.NOEUDS IS NULL OR DUPLIQUER.NOEUDS LIKE '%,' || noeud_id || ',%' ) + AND (DUPLIQUER.STRUCTURE_ID IS NULL OR n.structure_id = DUPLIQUER.STRUCTURE_ID) + ; - FUNCTION HAS_DEMANDES RETURN BOOLEAN IS - has_dems NUMERIC; - BEGIN - SELECT count(*) INTO has_dems from tbl_dems where rownum = 1; + /* Duplication des effectifs */ + INSERT INTO scenario_noeud_effectif ( + id, + scenario_noeud_id, + type_heures_id, + effectif, + etape_id + ) SELECT + scenario_noeud_effectif_id_seq.nextval, + sn_dst.id, + sne.type_heures_id, + sne.effectif, + sne.etape_id + FROM + scenario_noeud_effectif sne + JOIN scenario_noeud sn_src ON sn_src.id = sne.scenario_noeud_id + JOIN scenario_noeud sn_dst ON sn_dst.scenario_id = DUPLIQUER.destination_id AND sn_dst.noeud_id = sn_src.noeud_id + JOIN noeud n ON n.id = sn_src.noeud_id + WHERE + sn_src.scenario_id = DUPLIQUER.source_id + AND sn_src.histo_destruction IS NULL + AND (DUPLIQUER.NOEUDS IS NULL OR DUPLIQUER.NOEUDS LIKE '%,' || sn_src.noeud_id || ',%' ) + AND (DUPLIQUER.STRUCTURE_ID IS NULL OR n.structure_id = DUPLIQUER.STRUCTURE_ID) + ; - RETURN has_dems = 1; + /* Duplication des seuils */ + INSERT INTO scenario_noeud_seuil ( + id, + scenario_noeud_id, + type_intervention_id, + ouverture, + dedoublement + ) SELECT + scenario_noeud_seuil_id_seq.nextval, + sn_dst.id, + sns.type_intervention_id, + sns.ouverture, + sns.dedoublement + FROM + scenario_noeud_seuil sns + JOIN scenario_noeud sn_src ON sn_src.id = sns.scenario_noeud_id + JOIN scenario_noeud sn_dst ON sn_dst.scenario_id = DUPLIQUER.destination_id AND sn_dst.noeud_id = sn_src.noeud_id + JOIN noeud n ON n.id = sn_src.noeud_id + WHERE + sn_src.scenario_id = DUPLIQUER.source_id + AND sn_src.histo_destruction IS NULL + AND (DUPLIQUER.NOEUDS IS NULL OR DUPLIQUER.NOEUDS LIKE '%,' || sn_src.noeud_id || ',%' ) + AND (DUPLIQUER.STRUCTURE_ID IS NULL OR n.structure_id = DUPLIQUER.STRUCTURE_ID) + ; END; - PROCEDURE CALCULER_DEMANDES IS - dems t_params; + PROCEDURE CONTROLE_SEUIL( ouverture NUMERIC, dedoublement NUMERIC ) IS BEGIN - FOR d IN ( - SELECT DISTINCT tbl_name FROM tbl_dems - ) LOOP - dems := PARAMS_FROM_DEMS( d.tbl_name ); - calculer( d.tbl_name, dems ); - END LOOP; + IF ouverture IS NOT NULL THEN + IF ouverture < 1 THEN + raise_application_error(-20101, 'Le seuil d''ouverture doit être supérieur ou égal à 1'); + END IF; + END IF; - IF HAS_DEMANDES THEN -- pour les boucles !! - CALCULER_DEMANDES; + IF dedoublement IS NOT NULL THEN + IF dedoublement < 1 THEN + raise_application_error(-20101, 'Le seuil de dédoublement doit être supérieur ou égal à 1'); + END IF; + END IF; + + IF ouverture IS NOT NULL AND dedoublement IS NOT NULL THEN + IF dedoublement < ouverture THEN + raise_application_error(-20101, 'Le seuil de dédoublement doit être supérieur ou égal au seuil d''ouverture'); + END IF; END IF; END; - - -- AUTOMATIC GENERATION -- - - PROCEDURE C_AGREMENT( PARAMS UNICAEN_TBL.T_PARAMS ) IS - conds CLOB; + FUNCTION CREER_SCENARIO_NOEUD( scenario_id NUMERIC, noeud_id NUMERIC, assiduite FLOAT DEFAULT 1 ) RETURN NUMERIC IS + new_id NUMERIC; + BEGIN + new_id := SCENARIO_NOEUD_ID_SEQ.NEXTVAL; +--ose_test.echo(scenario_id || '-' || noeud_id); + INSERT INTO SCENARIO_NOEUD( + ID, + SCENARIO_ID, + NOEUD_ID, + ASSIDUITE, + SOURCE_ID, + SOURCE_CODE, + HEURES, + HISTO_CREATION, + HISTO_CREATEUR_ID, + HISTO_MODIFICATION, + HISTO_MODIFICATEUR_ID + ) VALUES ( + new_id, + CREER_SCENARIO_NOEUD.scenario_id, + CREER_SCENARIO_NOEUD.noeud_id, + CREER_SCENARIO_NOEUD.assiduite, + OSE_DIVERS.GET_OSE_SOURCE_ID, + 'OSE_NEW_SN_' || new_id, + null, + SYSDATE, + OSE_DIVERS.GET_OSE_UTILISATEUR_ID, + SYSDATE, + OSE_DIVERS.GET_OSE_UTILISATEUR_ID + ); + RETURN new_id; + END; + + + FUNCTION GET_SCENARIO_NOEUD_ID(scenario_id NUMERIC, noeud_id NUMERIC) RETURN NUMERIC IS + res NUMERIC; BEGIN - conds := params_to_conds( params ); + SELECT + sn.id INTO res + FROM + scenario_noeud sn + WHERE + sn.noeud_id = GET_SCENARIO_NOEUD_ID.noeud_id + AND sn.scenario_id = GET_SCENARIO_NOEUD_ID.scenario_id + AND sn.histo_destruction IS NULL; - EXECUTE IMMEDIATE 'BEGIN + RETURN res; - UPDATE TBL_AGREMENT SET to_delete = 1 WHERE ' || conds || '; + EXCEPTION WHEN NO_DATA_FOUND THEN + RETURN NULL; + END; - MERGE INTO - TBL_AGREMENT t - USING ( - SELECT - tv.* - FROM - (WITH i_s AS ( - SELECT DISTINCT - fr.intervenant_id, - ep.structure_id - FROM - formule_resultat fr - JOIN type_volume_horaire tvh ON tvh.code = ''PREVU'' AND tvh.id = fr.type_volume_horaire_id - JOIN etat_volume_horaire evh ON evh.code = ''valide'' AND evh.id = fr.etat_volume_horaire_id - - JOIN formule_resultat_service frs ON frs.formule_resultat_id = fr.id - JOIN service s ON s.id = frs.service_id - JOIN element_pedagogique ep ON ep.id = s.element_pedagogique_id - WHERE - frs.total > 0 - ) - SELECT - i.annee_id annee_id, - tas.type_agrement_id type_agrement_id, - i.id intervenant_id, - null structure_id, - tas.obligatoire obligatoire, - a.id agrement_id - FROM - type_agrement ta - JOIN type_agrement_statut tas ON tas.type_agrement_id = ta.id - AND tas.histo_destruction IS NULL - - JOIN intervenant i ON i.histo_destruction IS NULL - AND (tas.premier_recrutement IS NULL OR NVL(i.premier_recrutement,0) = tas.premier_recrutement) - AND i.statut_id = tas.statut_intervenant_id - - LEFT JOIN agrement a ON a.type_agrement_id = ta.id - AND a.intervenant_id = i.id - AND a.histo_destruction IS NULL - WHERE - ta.code = ''CONSEIL_ACADEMIQUE'' - - UNION ALL - - SELECT - i.annee_id annee_id, - tas.type_agrement_id type_agrement_id, - i.id intervenant_id, - i_s.structure_id structure_id, - tas.obligatoire obligatoire, - a.id agrement_id - FROM - type_agrement ta - JOIN type_agrement_statut tas ON tas.type_agrement_id = ta.id - AND tas.histo_destruction IS NULL - - JOIN intervenant i ON i.histo_destruction IS NULL - AND (tas.premier_recrutement IS NULL OR NVL(i.premier_recrutement,0) = tas.premier_recrutement) - AND i.statut_id = tas.statut_intervenant_id - - JOIN i_s ON i_s.intervenant_id = i.id - - LEFT JOIN agrement a ON a.type_agrement_id = ta.id - AND a.intervenant_id = i.id - AND a.structure_id = i_s.structure_id - AND a.histo_destruction IS NULL - WHERE - ta.code = ''CONSEIL_RESTREINT'') tv - WHERE - ' || conds || ' + PROCEDURE ADD_SCENARIO_NOEUD_EFFECTIF( scenario_noeud_id NUMERIC, type_heures_id NUMERIC, etape_id NUMERIC, effectif FLOAT ) IS + old_enable BOOLEAN; + BEGIN + old_enable := ose_chargens.ENABLE_TRIGGER_EFFECTIFS; + ose_chargens.ENABLE_TRIGGER_EFFECTIFS := false; - ) v ON ( - t.TYPE_AGREMENT_ID = v.TYPE_AGREMENT_ID - AND t.INTERVENANT_ID = v.INTERVENANT_ID - AND COALESCE(t.STRUCTURE_ID,0) = COALESCE(v.STRUCTURE_ID,0) + MERGE INTO scenario_noeud_effectif sne USING dual ON ( + + sne.scenario_noeud_id = ADD_SCENARIO_NOEUD_EFFECTIF.scenario_noeud_id + AND sne.type_heures_id = ADD_SCENARIO_NOEUD_EFFECTIF.type_heures_id + AND sne.etape_id = ADD_SCENARIO_NOEUD_EFFECTIF.etape_id ) WHEN MATCHED THEN UPDATE SET - ANNEE_ID = v.ANNEE_ID, - OBLIGATOIRE = v.OBLIGATOIRE, - AGREMENT_ID = v.AGREMENT_ID, - to_delete = 0 + effectif = effectif + ADD_SCENARIO_NOEUD_EFFECTIF.effectif WHEN NOT MATCHED THEN INSERT ( ID, - ANNEE_ID, - TYPE_AGREMENT_ID, - INTERVENANT_ID, - STRUCTURE_ID, - OBLIGATOIRE, - AGREMENT_ID, - TO_DELETE + SCENARIO_NOEUD_ID, + TYPE_HEURES_ID, + ETAPE_ID, + EFFECTIF ) VALUES ( - TBL_AGREMENT_ID_SEQ.NEXTVAL, - v.ANNEE_ID, - v.TYPE_AGREMENT_ID, - v.INTERVENANT_ID, - v.STRUCTURE_ID, - v.OBLIGATOIRE, - v.AGREMENT_ID, - 0 + SCENARIO_NOEUD_EFFECTIF_ID_SEQ.NEXTVAL, + ADD_SCENARIO_NOEUD_EFFECTIF.scenario_noeud_id, + ADD_SCENARIO_NOEUD_EFFECTIF.type_heures_id, + ADD_SCENARIO_NOEUD_EFFECTIF.etape_id, + ADD_SCENARIO_NOEUD_EFFECTIF.effectif ); - DELETE TBL_AGREMENT WHERE to_delete = 1 AND ' || conds || '; - - END;'; + DELETE FROM scenario_noeud_effectif WHERE effectif = 0; + ose_chargens.ENABLE_TRIGGER_EFFECTIFS := old_enable; END; - PROCEDURE C_CHARGENS( PARAMS UNICAEN_TBL.T_PARAMS ) IS - conds CLOB; + PROCEDURE INIT_SCENARIO_NOEUD_EFFECTIF( + etape_id NUMERIC, + scenario_id NUMERIC, + type_heures_id NUMERIC, + effectif FLOAT, + surcharge BOOLEAN DEFAULT FALSE + ) IS + noeud_id NUMERIC; + scenario_noeud_id NUMERIC; + scenario_noeud_effectif_id NUMERIC; BEGIN - conds := params_to_conds( params ); + SELECT + n.id, sn.id, sne.id + INTO + noeud_id, scenario_noeud_id, scenario_noeud_effectif_id + FROM + noeud n + LEFT JOIN scenario_noeud sn ON sn.noeud_id = n.id + AND sn.histo_destruction IS NULL + AND sn.scenario_id = INIT_SCENARIO_NOEUD_EFFECTIF.scenario_id - EXECUTE IMMEDIATE 'BEGIN + LEFT JOIN scenario_noeud_effectif sne ON sne.scenario_noeud_id = sn.id + AND sne.type_heures_id = INIT_SCENARIO_NOEUD_EFFECTIF.type_heures_id + WHERE + n.etape_id = INIT_SCENARIO_NOEUD_EFFECTIF.etape_id + AND n.histo_destruction IS NULL + ; - UPDATE TBL_CHARGENS SET to_delete = 1 WHERE ' || conds || '; + IF noeud_id IS NULL THEN RETURN; END IF; - MERGE INTO - TBL_CHARGENS t - USING ( + IF scenario_noeud_id IS NULL THEN + scenario_noeud_id := CREER_SCENARIO_NOEUD( scenario_id, noeud_id ); + END IF; - SELECT - tv.* - FROM - (WITH t AS ( - SELECT - n.annee_id annee_id, - n.noeud_id noeud_id, - sn.scenario_id scenario_id, - sne.type_heures_id type_heures_id, - ti.id type_intervention_id, - - n.element_pedagogique_id element_pedagogique_id, - n.element_pedagogique_etape_id etape_id, - sne.etape_id etape_ens_id, - n.structure_id structure_id, - n.groupe_type_formation_id groupe_type_formation_id, - - vhe.heures heures, - vhe.heures * ti.taux_hetd_service hetd, - - GREATEST(COALESCE(sns.ouverture, 1),1) ouverture, - GREATEST(COALESCE(sns.dedoublement, snsetp.dedoublement, csdd.dedoublement,1),1) dedoublement, - COALESCE(sns.assiduite,1) assiduite, - sne.effectif*COALESCE(sns.assiduite,1) effectif, - - SUM(sne.effectif*COALESCE(sns.assiduite,1)) OVER (PARTITION BY n.noeud_id, sn.scenario_id, ti.id) t_effectif - - FROM - scenario_noeud_effectif sne - JOIN etape e ON e.id = sne.etape_id - AND e.histo_destruction IS NULL - - JOIN scenario_noeud sn ON sn.id = sne.scenario_noeud_id - AND sn.histo_destruction IS NULL - - JOIN tbl_noeud n ON n.noeud_id = sn.noeud_id - - JOIN volume_horaire_ens vhe ON vhe.element_pedagogique_id = n.element_pedagogique_id - AND vhe.histo_destruction IS NULL - AND vhe.heures > 0 - - JOIN type_intervention ti ON ti.id = vhe.type_intervention_id - - LEFT JOIN tbl_noeud netp ON netp.etape_id = e.id - - LEFT JOIN scenario_noeud snetp ON snetp.scenario_id = sn.scenario_id - AND snetp.noeud_id = netp.noeud_id - AND snetp.histo_destruction IS NULL - - LEFT JOIN scenario_noeud_seuil snsetp ON snsetp.scenario_noeud_id = snetp.id - AND snsetp.type_intervention_id = ti.id - - LEFT JOIN tbl_chargens_seuils_def csdd ON csdd.annee_id = n.annee_id - AND csdd.scenario_id = sn.scenario_id - AND csdd.type_intervention_id = ti.id - AND csdd.groupe_type_formation_id = n.groupe_type_formation_id - AND csdd.structure_id = n.structure_id - - LEFT JOIN scenario_noeud_seuil sns ON sns.scenario_noeud_id = sn.id - AND sns.type_intervention_id = ti.id - ) - SELECT - annee_id, - noeud_id, - scenario_id, - type_heures_id, - type_intervention_id, - - element_pedagogique_id, - etape_id, - etape_ens_id, - structure_id, - groupe_type_formation_id, - - ouverture, - dedoublement, - assiduite, - effectif, - heures heures_ens, - --t_effectif, - - CASE WHEN t_effectif < ouverture THEN 0 ELSE - CEIL( t_effectif / dedoublement ) * effectif / t_effectif - END groupes, - - CASE WHEN t_effectif < ouverture THEN 0 ELSE - CEIL( t_effectif / dedoublement ) * heures * effectif / t_effectif - END heures, - - CASE WHEN t_effectif < ouverture THEN 0 ELSE - CEIL( t_effectif / dedoublement ) * hetd * effectif / t_effectif - END hetd - - FROM - t) tv - WHERE - ' || conds || ' + IF scenario_noeud_effectif_id IS NULL THEN + scenario_noeud_effectif_id := SCENARIO_NOEUD_EFFECTIF_ID_SEQ.NEXTVAL; + INSERT INTO scenario_noeud_effectif ( + id, + scenario_noeud_id, + type_heures_id, + effectif, + etape_id + ) VALUES ( + scenario_noeud_effectif_id, + scenario_noeud_id, + INIT_SCENARIO_NOEUD_EFFECTIF.type_heures_id, + INIT_SCENARIO_NOEUD_EFFECTIF.effectif, + INIT_SCENARIO_NOEUD_EFFECTIF.etape_id + ); + ELSIF surcharge THEN + UPDATE scenario_noeud_effectif SET effectif = INIT_SCENARIO_NOEUD_EFFECTIF.effectif WHERE id = scenario_noeud_effectif_id; + END IF; + + CALC_SUB_EFFECTIF2( noeud_id, scenario_id, type_heures_id, etape_id ); + + EXCEPTION WHEN NO_DATA_FOUND THEN + RETURN; + END; - ) v ON ( - t.ANNEE_ID = v.ANNEE_ID - AND t.NOEUD_ID = v.NOEUD_ID - AND t.SCENARIO_ID = v.SCENARIO_ID - AND t.TYPE_HEURES_ID = v.TYPE_HEURES_ID - AND t.TYPE_INTERVENTION_ID = v.TYPE_INTERVENTION_ID - AND t.ELEMENT_PEDAGOGIQUE_ID = v.ELEMENT_PEDAGOGIQUE_ID - AND t.ETAPE_ID = v.ETAPE_ID - AND t.ETAPE_ENS_ID = v.ETAPE_ENS_ID - AND t.STRUCTURE_ID = v.STRUCTURE_ID - AND t.GROUPE_TYPE_FORMATION_ID = v.GROUPE_TYPE_FORMATION_ID - ) WHEN MATCHED THEN UPDATE SET - OUVERTURE = v.OUVERTURE, - DEDOUBLEMENT = v.DEDOUBLEMENT, - ASSIDUITE = v.ASSIDUITE, - EFFECTIF = v.EFFECTIF, - HEURES_ENS = v.HEURES_ENS, - GROUPES = v.GROUPES, - HEURES = v.HEURES, - HETD = v.HETD, - to_delete = 0 + PROCEDURE SET_PRECALC_HEURES_PARAMS( + annee_id NUMERIC DEFAULT NULL, + structure_id NUMERIC DEFAULT NULL, + scenario_id NUMERIC DEFAULT NULL, + type_heures_id NUMERIC DEFAULT NULL, + etape_id NUMERIC DEFAULT NULL, + noeud_ids tnoeud_ids DEFAULT NULL + ) IS + BEGIN + PRECALC_HEURES_PARAMS.ANNEE_ID := ANNEE_ID; + PRECALC_HEURES_PARAMS.STRUCTURE_ID := STRUCTURE_ID; + PRECALC_HEURES_PARAMS.SCENARIO_ID := SCENARIO_ID; + PRECALC_HEURES_PARAMS.TYPE_HEURES_ID := TYPE_HEURES_ID; + PRECALC_HEURES_PARAMS.ETAPE_ID := ETAPE_ID; + PRECALC_HEURES_PARAMS.NOEUD_IDS := noeud_ids; + END; - WHEN NOT MATCHED THEN INSERT ( - ID, - ANNEE_ID, - NOEUD_ID, - SCENARIO_ID, - TYPE_HEURES_ID, - TYPE_INTERVENTION_ID, - ELEMENT_PEDAGOGIQUE_ID, - ETAPE_ID, - ETAPE_ENS_ID, - STRUCTURE_ID, - GROUPE_TYPE_FORMATION_ID, - OUVERTURE, - DEDOUBLEMENT, - ASSIDUITE, - EFFECTIF, - HEURES_ENS, - GROUPES, - HEURES, - HETD, - TO_DELETE - ) VALUES ( + FUNCTION MATCH_PRECALC_HEURES_PARAMS( + annee_id NUMERIC DEFAULT NULL, + structure_id NUMERIC DEFAULT NULL, + scenario_id NUMERIC DEFAULT NULL, + type_heures_id NUMERIC DEFAULT NULL, + etape_id NUMERIC DEFAULT NULL, + noeud_id NUMERIC DEFAULT NULL + ) RETURN NUMERIC IS + BEGIN - TBL_CHARGENS_ID_SEQ.NEXTVAL, - v.ANNEE_ID, - v.NOEUD_ID, - v.SCENARIO_ID, - v.TYPE_HEURES_ID, - v.TYPE_INTERVENTION_ID, - v.ELEMENT_PEDAGOGIQUE_ID, - v.ETAPE_ID, - v.ETAPE_ENS_ID, - v.STRUCTURE_ID, - v.GROUPE_TYPE_FORMATION_ID, - v.OUVERTURE, - v.DEDOUBLEMENT, - v.ASSIDUITE, - v.EFFECTIF, - v.HEURES_ENS, - v.GROUPES, - v.HEURES, - v.HETD, - 0 + IF PRECALC_HEURES_PARAMS.noeud_ids IS NOT NULL THEN + IF NOT (noeud_id MEMBER OF PRECALC_HEURES_PARAMS.noeud_ids) THEN + RETURN 0; + END IF; + END IF; - ); + IF annee_id <> COALESCE(PRECALC_HEURES_PARAMS.annee_id, annee_id) THEN + RETURN 0; + END IF; - DELETE TBL_CHARGENS WHERE to_delete = 1 AND ' || conds || '; + IF structure_id <> COALESCE(PRECALC_HEURES_PARAMS.structure_id, structure_id) THEN + RETURN 0; + END IF; - END;'; + IF scenario_id <> COALESCE(PRECALC_HEURES_PARAMS.scenario_id, scenario_id) THEN + RETURN 0; + END IF; + + IF type_heures_id <> COALESCE(PRECALC_HEURES_PARAMS.type_heures_id, type_heures_id) THEN + RETURN 0; + END IF; + + IF etape_id <> COALESCE(PRECALC_HEURES_PARAMS.etape_id, etape_id) THEN + RETURN 0; + END IF; + RETURN 1; END; + FUNCTION GET_PRECALC_HEURES_ANNEE RETURN NUMERIC IS + BEGIN + RETURN PRECALC_HEURES_PARAMS.ANNEE_ID; + END; + - PROCEDURE C_CHARGENS_SEUILS_DEF( PARAMS UNICAEN_TBL.T_PARAMS ) IS - conds CLOB; + + FUNCTION GET_PRECALC_HEURES_STRUCTURE RETURN NUMERIC IS BEGIN - conds := params_to_conds( params ); + RETURN PRECALC_HEURES_PARAMS.STRUCTURE_ID; + END; - EXECUTE IMMEDIATE 'BEGIN - UPDATE TBL_CHARGENS_SEUILS_DEF SET to_delete = 1 WHERE ' || conds || '; - MERGE INTO - TBL_CHARGENS_SEUILS_DEF t - USING ( + FUNCTION GET_PRECALC_HEURES_SCENARIO RETURN NUMERIC IS + BEGIN + RETURN PRECALC_HEURES_PARAMS.SCENARIO_ID; + END; - SELECT - tv.* - FROM - (SELECT - sta.annee_id, - sta.scenario_id, - s.structure_id, - gtf.groupe_type_formation_id, - sta.type_intervention_id, - COALESCE(sc1.dedoublement, sc2.dedoublement, sc3.dedoublement, sc4.dedoublement) dedoublement - FROM - (SELECT DISTINCT scenario_id, type_intervention_id, annee_id FROM seuil_charge WHERE histo_destruction IS NULL) sta - JOIN (SELECT DISTINCT structure_id FROM noeud WHERE structure_id IS NOT NULL) s ON 1=1 - JOIN (SELECT id groupe_type_formation_id FROM groupe_type_formation) gtf ON 1=1 - - LEFT JOIN seuil_charge sc1 ON - sc1.histo_destruction IS NULL - AND sc1.annee_id = sta.annee_id - AND sc1.scenario_id = sta.scenario_id - AND sc1.type_intervention_id = sta.type_intervention_id - AND sc1.structure_id = s.structure_id - AND sc1.groupe_type_formation_id = gtf.groupe_type_formation_id - - LEFT JOIN seuil_charge sc2 ON - sc2.histo_destruction IS NULL - AND sc2.annee_id = sta.annee_id - AND sc2.scenario_id = sta.scenario_id - AND sc2.type_intervention_id = sta.type_intervention_id - AND sc2.structure_id = s.structure_id - AND sc2.groupe_type_formation_id IS NULL - - LEFT JOIN seuil_charge sc3 ON - sc3.histo_destruction IS NULL - AND sc3.annee_id = sta.annee_id - AND sc3.scenario_id = sta.scenario_id - AND sc3.type_intervention_id = sta.type_intervention_id - AND sc3.structure_id IS NULL - AND sc3.groupe_type_formation_id = gtf.groupe_type_formation_id - - LEFT JOIN seuil_charge sc4 ON - sc4.histo_destruction IS NULL - AND sc4.annee_id = sta.annee_id - AND sc4.scenario_id = sta.scenario_id - AND sc4.type_intervention_id = sta.type_intervention_id - AND sc4.structure_id IS NULL - AND sc4.groupe_type_formation_id IS NULL - WHERE - COALESCE(sc1.dedoublement, sc2.dedoublement, sc3.dedoublement, sc4.dedoublement, 1) <> 1) tv - WHERE - ' || conds || ' - ) v ON ( - t.ANNEE_ID = v.ANNEE_ID - AND t.SCENARIO_ID = v.SCENARIO_ID - AND t.STRUCTURE_ID = v.STRUCTURE_ID - AND t.GROUPE_TYPE_FORMATION_ID = v.GROUPE_TYPE_FORMATION_ID - AND t.TYPE_INTERVENTION_ID = v.TYPE_INTERVENTION_ID - ) WHEN MATCHED THEN UPDATE SET + FUNCTION GET_PRECALC_HEURES_TYPE_HEURES RETURN NUMERIC IS + BEGIN + RETURN PRECALC_HEURES_PARAMS.TYPE_HEURES_ID; + END; - DEDOUBLEMENT = v.DEDOUBLEMENT, - to_delete = 0 - WHEN NOT MATCHED THEN INSERT ( - ID, - ANNEE_ID, - SCENARIO_ID, - STRUCTURE_ID, - GROUPE_TYPE_FORMATION_ID, - TYPE_INTERVENTION_ID, - DEDOUBLEMENT, - TO_DELETE + FUNCTION GET_PRECALC_HEURES_ETAPE RETURN NUMERIC IS + BEGIN + RETURN PRECALC_HEURES_PARAMS.ETAPE_ID; + END; - ) VALUES ( +-- FUNCTION GET_PRECALC_HEURES_NOEUD RETURN NUMERIC IS +-- BEGIN + +-- END; + +END OSE_CHARGENS; +/ + +-- OSE_DIVERS +CREATE OR REPLACE PACKAGE BODY "OSE_DIVERS" AS + OSE_UTILISATEUR_ID NUMERIC; + OSE_SOURCE_ID NUMERIC; + + + + +PROCEDURE CALCULER_TABLEAUX_BORD IS +BEGIN + FOR d IN ( + SELECT tbl_name + FROM tbl + WHERE tbl_name <> 'formule' -- TROP LONG !! + ORDER BY ordre + ) + LOOP + UNICAEN_TBL.CALCULER(d.tbl_name); + dbms_output.put_line('Calcul du tableau de bord "' || d.tbl_name || '" effectué'); + COMMIT; + END LOOP; +END; + + + +FUNCTION GET_OSE_UTILISATEUR_ID RETURN NUMERIC IS +BEGIN + IF OSE_DIVERS.OSE_UTILISATEUR_ID IS NULL THEN + SELECT + to_number(valeur) INTO OSE_DIVERS.OSE_UTILISATEUR_ID + FROM + parametre + WHERE + nom = 'oseuser'; + END IF; + + RETURN OSE_DIVERS.OSE_UTILISATEUR_ID; +END; - TBL_CHARGENS_SEUILS_DEF_ID_SEQ.NEXTVAL, - v.ANNEE_ID, - v.SCENARIO_ID, - v.STRUCTURE_ID, - v.GROUPE_TYPE_FORMATION_ID, - v.TYPE_INTERVENTION_ID, - v.DEDOUBLEMENT, - 0 - ); - DELETE TBL_CHARGENS_SEUILS_DEF WHERE to_delete = 1 AND ' || conds || '; +FUNCTION GET_OSE_SOURCE_ID RETURN NUMERIC IS +BEGIN + IF OSE_DIVERS.OSE_SOURCE_ID IS NULL THEN + SELECT + id INTO OSE_DIVERS.OSE_SOURCE_ID + FROM + source + WHERE + code = 'OSE'; + END IF; - END;'; + RETURN OSE_DIVERS.OSE_SOURCE_ID; +END; - END; +FUNCTION INTERVENANT_HAS_PRIVILEGE( intervenant_id NUMERIC, privilege_name VARCHAR2 ) RETURN NUMERIC IS + statut statut_intervenant%rowtype; + itype type_intervenant%rowtype; + res NUMERIC; +BEGIN + res := 1; + SELECT si.* INTO statut FROM statut_intervenant si JOIN intervenant i ON i.statut_id = si.id WHERE i.id = intervenant_id; + SELECT ti.* INTO itype FROM type_intervenant ti WHERE ti.id = statut.type_intervenant_id; - PROCEDURE C_CLOTURE_REALISE( PARAMS UNICAEN_TBL.T_PARAMS ) IS - conds CLOB; - BEGIN - conds := params_to_conds( params ); + /* DEPRECATED */ + IF 'saisie_service' = privilege_name THEN + res := statut.peut_saisir_service; + RETURN res; + ELSIF 'saisie_service_exterieur' = privilege_name THEN + --IF INTERVENANT_HAS_PRIVILEGE( intervenant_id, 'saisie_service' ) = 0 OR itype.code = 'E' THEN -- cascade + IF itype.code = 'E' THEN + res := 0; + END IF; + RETURN res; + ELSIF 'saisie_service_referentiel' = privilege_name THEN + IF itype.code = 'E' THEN + res := 0; + END IF; + RETURN res; + ELSIF 'saisie_service_referentiel_autre_structure' = privilege_name THEN + res := 1; + RETURN res; + ELSIF 'saisie_motif_non_paiement' = privilege_name THEN + res := statut.peut_saisir_motif_non_paiement; + RETURN res; + END IF; + /* FIN DE DEPRECATED */ - EXECUTE IMMEDIATE 'BEGIN + SELECT + count(*) + INTO + res + FROM + intervenant i + JOIN statut_privilege sp ON sp.statut_id = i.statut_id + JOIN privilege p ON p.id = sp.privilege_id + JOIN categorie_privilege cp ON cp.id = p.categorie_id + WHERE + i.id = INTERVENANT_HAS_PRIVILEGE.intervenant_id + AND cp.code || '-' || p.code = privilege_name; - UPDATE TBL_CLOTURE_REALISE SET to_delete = 1 WHERE ' || conds || '; + RETURN res; +END; - MERGE INTO - TBL_CLOTURE_REALISE t - USING ( +FUNCTION implode(i_query VARCHAR2, i_seperator VARCHAR2 DEFAULT ',') RETURN VARCHAR2 AS + l_return CLOB:=''; + l_temp CLOB; + TYPE r_cursor is REF CURSOR; + rc r_cursor; +BEGIN + OPEN rc FOR i_query; + LOOP + FETCH rc INTO L_TEMP; + EXIT WHEN RC%NOTFOUND; + l_return:=l_return||L_TEMP||i_seperator; + END LOOP; + RETURN RTRIM(l_return,i_seperator); +END; - SELECT - tv.* - FROM - (WITH t AS ( - SELECT - i.annee_id annee_id, - i.id intervenant_id, - si.peut_cloturer_saisie peut_cloturer_saisie, - CASE WHEN v.id IS NULL THEN 0 ELSE 1 END cloture - FROM - intervenant i - JOIN statut_intervenant si ON si.id = i.statut_id - JOIN type_validation tv ON tv.code = ''CLOTURE_REALISE'' - - LEFT JOIN validation v ON v.intervenant_id = i.id - AND v.type_validation_id = tv.id - AND v.histo_destruction IS NULL - - WHERE - i.histo_destruction IS NULL - ) - SELECT - annee_id, - intervenant_id, - peut_cloturer_saisie, - CASE WHEN sum(cloture) = 0 THEN 0 ELSE 1 END cloture - FROM - t - GROUP BY - annee_id, - intervenant_id, - peut_cloturer_saisie) tv - WHERE - ' || conds || ' +PROCEDURE intervenant_horodatage_service( INTERVENANT_ID NUMERIC, TYPE_VOLUME_HORAIRE_ID NUMERIC, REFERENTIEL NUMERIC, HISTO_MODIFICATEUR_ID NUMERIC, HISTO_MODIFICATION DATE ) AS +BEGIN + MERGE INTO histo_intervenant_service his USING dual ON ( - ) v ON ( - t.INTERVENANT_ID = v.INTERVENANT_ID + his.INTERVENANT_ID = intervenant_horodatage_service.INTERVENANT_ID + AND NVL(his.TYPE_VOLUME_HORAIRE_ID,0) = NVL(intervenant_horodatage_service.TYPE_VOLUME_HORAIRE_ID,0) + AND his.REFERENTIEL = intervenant_horodatage_service.REFERENTIEL ) WHEN MATCHED THEN UPDATE SET - ANNEE_ID = v.ANNEE_ID, - PEUT_CLOTURER_SAISIE = v.PEUT_CLOTURER_SAISIE, - CLOTURE = v.CLOTURE, - to_delete = 0 + HISTO_MODIFICATEUR_ID = intervenant_horodatage_service.HISTO_MODIFICATEUR_ID, + HISTO_MODIFICATION = intervenant_horodatage_service.HISTO_MODIFICATION WHEN NOT MATCHED THEN INSERT ( ID, - ANNEE_ID, INTERVENANT_ID, - PEUT_CLOTURER_SAISIE, - CLOTURE, - TO_DELETE - + TYPE_VOLUME_HORAIRE_ID, + REFERENTIEL, + HISTO_MODIFICATEUR_ID, + HISTO_MODIFICATION ) VALUES ( - - TBL_CLOTURE_REALISE_ID_SEQ.NEXTVAL, - v.ANNEE_ID, - v.INTERVENANT_ID, - v.PEUT_CLOTURER_SAISIE, - v.CLOTURE, - 0 + HISTO_INTERVENANT_SERVI_ID_SEQ.NEXTVAL, + intervenant_horodatage_service.INTERVENANT_ID, + intervenant_horodatage_service.TYPE_VOLUME_HORAIRE_ID, + intervenant_horodatage_service.REFERENTIEL, + intervenant_horodatage_service.HISTO_MODIFICATEUR_ID, + intervenant_horodatage_service.HISTO_MODIFICATION ); - - DELETE TBL_CLOTURE_REALISE WHERE to_delete = 1 AND ' || conds || '; - - END;'; - - END; +END; +FUNCTION NIVEAU_FORMATION_ID_CALC( gtf_id NUMERIC, gtf_pertinence_niveau NUMERIC, niveau NUMERIC DEFAULT NULL ) RETURN NUMERIC AS +BEGIN + IF 1 <> gtf_pertinence_niveau OR niveau IS NULL OR niveau < 1 OR gtf_id < 1 THEN RETURN NULL; END IF; + RETURN gtf_id * 256 + niveau; +END; - PROCEDURE C_CONTRAT( PARAMS UNICAEN_TBL.T_PARAMS ) IS - conds CLOB; - BEGIN - conds := params_to_conds( params ); +FUNCTION STR_REDUCE( str CLOB ) RETURN CLOB IS +BEGIN + RETURN utl_raw.cast_to_varchar2((nlssort(str, 'nls_sort=binary_ai'))); +END; - EXECUTE IMMEDIATE 'BEGIN +FUNCTION STR_FIND( haystack CLOB, needle VARCHAR2 ) RETURN NUMERIC IS +BEGIN + IF STR_REDUCE( haystack ) LIKE STR_REDUCE( '%' || needle || '%' ) THEN RETURN 1; END IF; + RETURN 0; +END; - UPDATE TBL_CONTRAT SET to_delete = 1 WHERE ' || conds || '; +FUNCTION LIKED( haystack CLOB, needle CLOB ) RETURN NUMERIC IS +BEGIN + RETURN CASE WHEN STR_REDUCE(haystack) LIKE STR_REDUCE(needle) THEN 1 ELSE 0 END; +END; - MERGE INTO - TBL_CONTRAT t - USING ( +PROCEDURE DO_NOTHING IS +BEGIN + RETURN; +END; - SELECT - tv.* - FROM - (WITH t AS ( - SELECT - i.annee_id annee_id, - i.id intervenant_id, - si.peut_avoir_contrat peut_avoir_contrat, - NVL(ep.structure_id, i.structure_id) structure_id, - CASE WHEN evh.code IN (''contrat-edite'',''contrat-signe'') THEN 1 ELSE 0 END edite, - CASE WHEN evh.code IN (''contrat-signe'') THEN 1 ELSE 0 END signe - FROM - intervenant i - - JOIN statut_intervenant si ON si.id = i.statut_id - - JOIN service s ON s.intervenant_id = i.id - AND s.histo_destruction IS NULL - - JOIN type_volume_horaire tvh ON tvh.code = ''PREVU'' - - JOIN volume_horaire vh ON vh.service_id = s.id - AND vh.histo_destruction IS NULL - AND vh.heures <> 0 - AND vh.type_volume_horaire_id = tvh.id - - JOIN v_volume_horaire_etat vhe ON vhe.volume_horaire_id = vh.id - - JOIN etat_volume_horaire evh ON evh.id = vhe.etat_volume_horaire_id - AND evh.code IN (''valide'', ''contrat-edite'', ''contrat-signe'') - - JOIN element_pedagogique ep ON ep.id = s.element_pedagogique_id - - WHERE - i.histo_destruction IS NULL - AND NOT (si.peut_avoir_contrat = 0 AND evh.code = ''valide'') - - UNION ALL - - SELECT - i.annee_id annee_id, - i.id intervenant_id, - si.peut_avoir_contrat peut_avoir_contrat, - s.structure_id structure_id, - CASE WHEN evh.code IN (''contrat-edite'',''contrat-signe'') THEN 1 ELSE 0 END edite, - CASE WHEN evh.code IN (''contrat-signe'') THEN 1 ELSE 0 END signe - FROM - intervenant i - - JOIN statut_intervenant si ON si.id = i.statut_id - - JOIN service_referentiel s ON s.intervenant_id = i.id - AND s.histo_destruction IS NULL - - JOIN type_volume_horaire tvh ON tvh.code = ''PREVU'' - - JOIN volume_horaire_ref vh ON vh.service_referentiel_id = s.id - AND vh.histo_destruction IS NULL - AND vh.heures <> 0 - AND vh.type_volume_horaire_id = tvh.id - - JOIN v_volume_horaire_ref_etat vhe ON vhe.volume_horaire_ref_id = vh.id - - JOIN etat_volume_horaire evh ON evh.id = vhe.etat_volume_horaire_id - AND evh.code IN (''valide'', ''contrat-edite'', ''contrat-signe'') - - WHERE - i.histo_destruction IS NULL - AND NOT (si.peut_avoir_contrat = 0 AND evh.code = ''valide'') - ) - SELECT - annee_id, - intervenant_id, - peut_avoir_contrat, - structure_id, - count(*) as nbvh, - sum(edite) as edite, - sum(signe) as signe - FROM - t - GROUP BY - annee_id, - intervenant_id, - peut_avoir_contrat, - structure_id) tv - WHERE - ' || conds || ' +PROCEDURE CALCUL_TAUX( eff_fi FLOAT, eff_fc FLOAT, eff_fa FLOAT, fi NUMERIC, fc NUMERIC, fa NUMERIC, r_fi OUT FLOAT, r_fc OUT FLOAT, r_fa OUT FLOAT, arrondi NUMERIC DEFAULT 15 ) IS + nt FLOAT; + bi FLOAT; + bc FLOAT; + ba FLOAT; + reste FLOAT; +BEGIN + bi := eff_fi * fi; + bc := eff_fc * fc; + ba := eff_fa * fa; + nt := bi + bc + ba; - ) v ON ( - t.INTERVENANT_ID = v.INTERVENANT_ID - AND COALESCE(t.STRUCTURE_ID,0) = COALESCE(v.STRUCTURE_ID,0) + IF nt = 0 THEN -- au cas ou, alors on ne prend plus en compte les effectifs!! + bi := fi; + bc := fc; + ba := fa; + nt := bi + bc + ba; + END IF; - ) WHEN MATCHED THEN UPDATE SET + IF nt = 0 THEN -- toujours au cas ou... + bi := 1; + bc := 0; + ba := 0; + nt := bi + bc + ba; + END IF; - ANNEE_ID = v.ANNEE_ID, - PEUT_AVOIR_CONTRAT = v.PEUT_AVOIR_CONTRAT, - NBVH = v.NBVH, - EDITE = v.EDITE, - SIGNE = v.SIGNE, - to_delete = 0 + -- Calcul + r_fi := bi / nt; + r_fc := bc / nt; + r_fa := ba / nt; - WHEN NOT MATCHED THEN INSERT ( + -- Arrondis + r_fi := ROUND( r_fi, arrondi ); + r_fc := ROUND( r_fc, arrondi ); + r_fa := ROUND( r_fa, arrondi ); - ID, - ANNEE_ID, - INTERVENANT_ID, - PEUT_AVOIR_CONTRAT, - STRUCTURE_ID, - NBVH, - EDITE, - SIGNE, - TO_DELETE + -- détermination du reste + reste := 1 - r_fi - r_fc - r_fa; - ) VALUES ( + -- répartition éventuelle du reste + IF reste <> 0 THEN + IF r_fi > 0 THEN r_fi := r_fi + reste; + ELSIF r_fc > 0 THEN r_fc := r_fc + reste; + ELSE r_fa := r_fa + reste; END IF; + END IF; - TBL_CONTRAT_ID_SEQ.NEXTVAL, - v.ANNEE_ID, - v.INTERVENANT_ID, - v.PEUT_AVOIR_CONTRAT, - v.STRUCTURE_ID, - v.NBVH, - v.EDITE, - v.SIGNE, - 0 +END; - ); - DELETE TBL_CONTRAT WHERE to_delete = 1 AND ' || conds || '; +FUNCTION CALCUL_TAUX_FI( eff_fi FLOAT, eff_fc FLOAT, eff_fa FLOAT, fi NUMERIC, fc NUMERIC, fa NUMERIC, arrondi NUMERIC DEFAULT 15 ) RETURN FLOAT IS + ri FLOAT; + rc FLOAT; + ra FLOAT; +BEGIN + CALCUL_TAUX( eff_fi, eff_fc, eff_fa, fi, fc, fa, ri, rc, ra, arrondi ); + RETURN ri; +END; - END;'; +FUNCTION CALCUL_TAUX_FC( eff_fi FLOAT, eff_fc FLOAT, eff_fa FLOAT, fi NUMERIC, fc NUMERIC, fa NUMERIC, arrondi NUMERIC DEFAULT 15 ) RETURN FLOAT IS + ri FLOAT; + rc FLOAT; + ra FLOAT; +BEGIN + CALCUL_TAUX( eff_fi, eff_fc, eff_fa, fi, fc, fa, ri, rc, ra, arrondi ); + RETURN rc; +END; - END; +FUNCTION CALCUL_TAUX_FA( eff_fi FLOAT, eff_fc FLOAT, eff_fa FLOAT, fi NUMERIC, fc NUMERIC, fa NUMERIC, arrondi NUMERIC DEFAULT 15 ) RETURN FLOAT IS + ri FLOAT; + rc FLOAT; + ra FLOAT; +BEGIN + CALCUL_TAUX( eff_fi, eff_fc, eff_fa, fi, fc, fa, ri, rc, ra, arrondi ); + RETURN ra; +END; +FUNCTION STRUCTURE_UNIV_GET_ID RETURN NUMERIC IS + res NUMERIC; +BEGIN + SELECT id INTO res FROM structure WHERE source_code = 'UNIV'; + RETURN res; +END; +PROCEDURE SYNC_LOG( msg CLOB ) IS +BEGIN + INSERT INTO SYNC_LOG( id, date_sync, message ) VALUES ( sync_log_id_seq.nextval, systimestamp, msg ); +END; - PROCEDURE C_DMEP_LIQUIDATION( PARAMS UNICAEN_TBL.T_PARAMS ) IS - conds CLOB; - BEGIN - conds := params_to_conds( params ); +FUNCTION FORMATTED_RIB (bic VARCHAR2, iban VARCHAR2) RETURN VARCHAR2 IS +BEGIN + if bic is null and iban is null then + return null; + end if; + RETURN regexp_replace(bic, '[[:space:]]+', '') || '-' || regexp_replace(iban, '[[:space:]]+', ''); +END; - EXECUTE IMMEDIATE 'BEGIN +FUNCTION FORMATTED_ADRESSE( + no_voie VARCHAR2, + nom_voie VARCHAR2, + batiment VARCHAR2, + mention_complementaire VARCHAR2, + localite VARCHAR2, + code_postal VARCHAR2, + ville VARCHAR2, + pays_libelle VARCHAR2) + RETURN VARCHAR2 +IS +BEGIN + return + -- concaténation des éléments non null séparés par ', ' + trim(trim(',' FROM REPLACE(', ' || NVL(no_voie,'#') || ', ' || NVL(nom_voie,'#') || ', ' || NVL(batiment,'#') || ', ' || NVL(mention_complementaire,'#'), ', #', ''))) || + -- saut de ligne complet + chr(13) || chr(10) || + -- concaténation des éléments non null séparés par ', ' + trim(trim(',' FROM REPLACE(', ' || NVL(localite,'#') || ', ' || NVL(code_postal,'#') || ', ' || NVL(ville,'#') || ', ' || NVL(pays_libelle,'#'), ', #', ''))); +END; - UPDATE TBL_DMEP_LIQUIDATION SET to_delete = 1 WHERE ' || conds || '; - MERGE INTO - TBL_DMEP_LIQUIDATION t - USING ( - SELECT - tv.* - FROM - (SELECT - annee_id, - type_ressource_id, - structure_id, - SUM(heures) heures - FROM - ( - SELECT - i.annee_id, - cc.type_ressource_id, - COALESCE( ep.structure_id, i.structure_id ) structure_id, - mep.heures - FROM - mise_en_paiement mep - JOIN centre_cout cc ON cc.id = mep.centre_cout_id - JOIN formule_resultat_service frs ON frs.id = mep.formule_res_service_id - JOIN service s ON s.id = frs.service_id - JOIN intervenant i ON i.id = s.intervenant_id - LEFT JOIN element_pedagogique ep ON ep.id = s.element_pedagogique_id - WHERE - mep.histo_destruction IS NULL - - UNION ALL - - SELECT - i.annee_id, - cc.type_ressource_id, - sr.structure_id structure_id, - heures - FROM - mise_en_paiement mep - JOIN centre_cout cc ON cc.id = mep.centre_cout_id - JOIN formule_resultat_service_ref frsr ON frsr.id = mep.formule_res_service_ref_id - JOIN service_referentiel sr ON sr.id = frsr.service_referentiel_id - JOIN intervenant i ON i.id = sr.intervenant_id - - WHERE - mep.histo_destruction IS NULL - - ) t1 - GROUP BY - annee_id, type_ressource_id, structure_id) tv - WHERE - ' || conds || ' +FUNCTION GET_TRIGGER_BODY( TRIGGER_NAME VARCHAR2 ) RETURN VARCHAR2 IS + vlong long; +BEGIN + SELECT trigger_body INTO vlong FROM all_triggers WHERE trigger_name = GET_TRIGGER_BODY.TRIGGER_NAME; - ) v ON ( - t.ANNEE_ID = v.ANNEE_ID - AND t.TYPE_RESSOURCE_ID = v.TYPE_RESSOURCE_ID - AND t.STRUCTURE_ID = v.STRUCTURE_ID + RETURN substr(vlong, 1, 32767); +END; - ) WHEN MATCHED THEN UPDATE SET +END OSE_DIVERS; +/ - HEURES = v.HEURES, - to_delete = 0 +-- OSE_EVENT +CREATE OR REPLACE PACKAGE BODY "OSE_EVENT" AS - WHEN NOT MATCHED THEN INSERT ( + PROCEDURE ON_BEFORE_FORMULE_RES_DELETE( INTERVENANT_ID NUMERIC ) IS + BEGIN - ID, - ANNEE_ID, - TYPE_RESSOURCE_ID, - STRUCTURE_ID, - HEURES, - TO_DELETE + -- recherche des services à payer prêts à être supprimés pour cet intervenant et check + FOR sap IN ( + SELECT + frs.id + FROM + FORMULE_RESULTAT_SERVICE frs + JOIN FORMULE_RESULTAT fr ON fr.id = frs.formule_resultat_id AND fr.intervenant_id = ON_BEFORE_FORMULE_RES_DELETE.intervenant_id + JOIN TYPE_VOLUME_HORAIRE tvh ON tvh.id = fr.type_volume_horaire_id AND tvh.code = 'REALISE' + JOIN ETAT_VOLUME_HORAIRE evh ON evh.id = fr.etat_volume_horaire_id AND evh.code = 'valide' + WHERE + frs.TO_DELETE = 1 + ) + LOOP + OSE_PAIEMENT.CHECK_BAD_PAIEMENTS( sap.id ); + END LOOP; - ) VALUES ( + FOR sap IN ( + SELECT + frs.id + FROM + FORMULE_RESULTAT_SERVICE_REF frs + JOIN FORMULE_RESULTAT fr ON fr.id = frs.formule_resultat_id AND fr.intervenant_id = ON_BEFORE_FORMULE_RES_DELETE.intervenant_id + JOIN TYPE_VOLUME_HORAIRE tvh ON tvh.id = fr.type_volume_horaire_id AND tvh.code = 'REALISE' + JOIN ETAT_VOLUME_HORAIRE evh ON evh.id = fr.etat_volume_horaire_id AND evh.code = 'valide' + WHERE + frs.TO_DELETE = 1 + ) + LOOP + OSE_PAIEMENT.CHECK_BAD_PAIEMENTS( null, sap.id ); + END LOOP; - TBL_DMEP_LIQUIDATION_ID_SEQ.NEXTVAL, - v.ANNEE_ID, - v.TYPE_RESSOURCE_ID, - v.STRUCTURE_ID, - v.HEURES, - 0 + DELETE FROM MISE_EN_PAIEMENT WHERE histo_destruction IS NOT NULL AND + formule_res_service_id IN ( + SELECT frs.id + FROM + formule_resultat_service frs + JOIN formule_resultat fr ON fr.id = frs.formule_resultat_id + WHERE + frs.to_delete = 1 + AND fr.intervenant_id = ON_BEFORE_FORMULE_RES_DELETE.INTERVENANT_ID + ); + + DELETE FROM MISE_EN_PAIEMENT WHERE histo_destruction IS NOT NULL AND + formule_res_service_ref_id IN ( + SELECT frsr.id + FROM + formule_resultat_service_ref frsr + JOIN formule_resultat fr ON fr.id = frsr.formule_resultat_id + WHERE + frsr.to_delete = 1 + AND fr.intervenant_id = ON_BEFORE_FORMULE_RES_DELETE.INTERVENANT_ID + ); + END; - ); - DELETE TBL_DMEP_LIQUIDATION WHERE to_delete = 1 AND ' || conds || '; - END;'; + PROCEDURE ON_AFTER_FORMULE_CALC( INTERVENANT_ID NUMERIC ) IS + p unicaen_tbl.t_params; + BEGIN + p := UNICAEN_TBL.make_params('INTERVENANT_ID', ON_AFTER_FORMULE_CALC.intervenant_id); + UNICAEN_TBL.CALCULER( 'agrement', p ); + UNICAEN_TBL.CALCULER( 'paiement', p ); + UNICAEN_TBL.CALCULER( 'workflow', p ); END; +END OSE_EVENT; +/ +-- OSE_FORMULE +CREATE OR REPLACE PACKAGE BODY "OSE_FORMULE" AS - PROCEDURE C_DOSSIER( PARAMS UNICAEN_TBL.T_PARAMS ) IS - conds CLOB; - BEGIN - conds := params_to_conds( params ); - - EXECUTE IMMEDIATE 'BEGIN + v_date_obs DATE; + debug_level NUMERIC DEFAULT 0; + d_all_volume_horaire_ref t_lst_volume_horaire_ref; + d_all_volume_horaire t_lst_volume_horaire; + arrondi NUMERIC DEFAULT 2; - UPDATE TBL_DOSSIER SET to_delete = 1 WHERE ' || conds || '; + INTERVENANT_ID NUMERIC DEFAULT NULL; - MERGE INTO - TBL_DOSSIER t - USING ( + FUNCTION GET_INTERVENANT_ID RETURN NUMERIC IS + BEGIN + RETURN INTERVENANT_ID; + END; - SELECT - tv.* - FROM - (SELECT - i.annee_id, - i.id intervenant_id, - si.peut_saisir_dossier, - d.id dossier_id, - v.id validation_id - FROM - intervenant i - JOIN statut_intervenant si ON si.id = i.statut_id - LEFT JOIN dossier d ON d.intervenant_id = i.id - AND d.histo_destruction IS NULL - - JOIN type_validation tv ON tv.code = ''DONNEES_PERSO_PAR_COMP'' - LEFT JOIN validation v ON v.intervenant_id = i.id - AND v.type_validation_id = tv.id - AND v.histo_destruction IS NULL - WHERE - i.histo_destruction IS NULL) tv - WHERE - ' || conds || ' + FUNCTION GET_DATE_OBS RETURN DATE AS + BEGIN + RETURN COALESCE( v_date_obs, SYSDATE ); + END; - ) v ON ( - t.INTERVENANT_ID = v.INTERVENANT_ID + FUNCTION SET_DATE_OBS( DATE_OBS DATE DEFAULT NULL ) RETURN DATE IS + BEGIN + v_date_obs := DATE_OBS; + RETURN v_date_obs; + END; - ) WHEN MATCHED THEN UPDATE SET + PROCEDURE SET_DEBUG_LEVEL( DEBUG_LEVEL NUMERIC ) IS + BEGIN + ose_formule.debug_level := SET_DEBUG_LEVEL.DEBUG_LEVEL; + END; - ANNEE_ID = v.ANNEE_ID, - PEUT_SAISIR_DOSSIER = v.PEUT_SAISIR_DOSSIER, - DOSSIER_ID = v.DOSSIER_ID, - VALIDATION_ID = v.VALIDATION_ID, - to_delete = 0 + FUNCTION GET_DEBUG_LEVEL RETURN NUMERIC IS + BEGIN + RETURN ose_formule.debug_level; + END; - WHEN NOT MATCHED THEN INSERT ( + FUNCTION GET_TAUX_HORAIRE_HETD( DATE_OBS DATE DEFAULT NULL ) RETURN FLOAT IS + taux_hetd FLOAT; + BEGIN + SELECT valeur INTO taux_hetd + FROM taux_horaire_hetd t + WHERE + DATE_OBS BETWEEN t.histo_creation AND COALESCE(t.histo_destruction,GREATEST(SYSDATE,DATE_OBS)) + AND rownum = 1 + ORDER BY + histo_creation DESC; + RETURN taux_hetd; + END; - ID, - ANNEE_ID, - INTERVENANT_ID, - PEUT_SAISIR_DOSSIER, - DOSSIER_ID, - VALIDATION_ID, - TO_DELETE + PROCEDURE UPDATE_ANNEE_TAUX_HETD IS + BEGIN + UPDATE annee SET taux_hetd = GET_TAUX_HORAIRE_HETD(date_fin); + END; - ) VALUES ( - TBL_DOSSIER_ID_SEQ.NEXTVAL, - v.ANNEE_ID, - v.INTERVENANT_ID, - v.PEUT_SAISIR_DOSSIER, - v.DOSSIER_ID, - v.VALIDATION_ID, - 0 - ); + PROCEDURE CALCULER_TOUT( ANNEE_ID NUMERIC DEFAULT NULL ) IS + a_id NUMERIC; + BEGIN + a_id := NVL(CALCULER_TOUT.ANNEE_ID, OSE_PARAMETRE.GET_ANNEE); + FOR mp IN ( + SELECT DISTINCT + intervenant_id + FROM + service s + JOIN intervenant i ON i.id = s.intervenant_id + WHERE + s.histo_destruction IS NULL + AND i.annee_id = a_id - DELETE TBL_DOSSIER WHERE to_delete = 1 AND ' || conds || '; + UNION - END;'; + SELECT DISTINCT + intervenant_id + FROM + service_referentiel sr + JOIN intervenant i ON i.id = sr.intervenant_id + WHERE + sr.histo_destruction IS NULL + AND i.annee_id = a_id + ) + LOOP + CALCULER( mp.intervenant_id ); + END LOOP; END; - PROCEDURE C_PAIEMENT( PARAMS UNICAEN_TBL.T_PARAMS ) IS - conds CLOB; + FUNCTION ENREGISTRER_RESULTAT( fr formule_resultat%rowtype ) RETURN NUMERIC IS + id NUMERIC; + ti_code VARCHAR(5); BEGIN - conds := params_to_conds( params ); - EXECUTE IMMEDIATE 'BEGIN + SELECT + ti.code INTO ti_code + FROM + type_intervenant ti + JOIN statut_intervenant si ON si.type_intervenant_id = ti.id + JOIN intervenant i ON i.statut_id = si.id + WHERE + i.id = fr.intervenant_id; - UPDATE TBL_PAIEMENT SET to_delete = 1 WHERE ' || conds || '; - MERGE INTO - TBL_PAIEMENT t - USING ( - SELECT - tv.* - FROM - (SELECT - i.annee_id annee_id, - frs.id formule_res_service_id, - null formule_res_service_ref_id, - i.id intervenant_id, - COALESCE( ep.structure_id, i.structure_id ) structure_id, - mep.id mise_en_paiement_id, - mep.periode_paiement_id periode_paiement_id, - frs.heures_compl_fi + frs.heures_compl_fc + frs.heures_compl_fa + frs.heures_compl_fc_majorees heures_a_payer, - count(*) OVER(PARTITION BY frs.id) heures_a_payer_pond, - NVL(mep.heures,0) heures_demandees, - CASE WHEN mep.periode_paiement_id IS NULL THEN 0 ELSE mep.heures END heures_payees - FROM - formule_resultat_service frs - JOIN type_volume_horaire tvh ON tvh.code = ''REALISE'' - JOIN etat_volume_horaire evh ON evh.code = ''valide'' - JOIN formule_resultat fr ON fr.id = frs.formule_resultat_id - AND fr.type_volume_horaire_id = tvh.id - AND fr.etat_volume_horaire_id = evh.id - - JOIN intervenant i ON i.id = fr.intervenant_id - JOIN service s ON s.id = frs.service_id - LEFT JOIN element_pedagogique ep ON ep.id = s.element_pedagogique_id - LEFT JOIN mise_en_paiement mep ON mep.formule_res_service_id = frs.id - AND mep.histo_destruction IS NULL - - UNION ALL - - SELECT - i.annee_id annee_id, - null formule_res_service_id, - frs.id formule_res_service_ref_id, - i.id intervenant_id, - s.structure_id structure_id, - mep.id mise_en_paiement_id, - mep.periode_paiement_id periode_paiement_id, - frs.heures_compl_referentiel heures_a_payer, - count(*) OVER(PARTITION BY frs.id) heures_a_payer_pond, - NVL(mep.heures,0) heures_demandees, - CASE WHEN mep.periode_paiement_id IS NULL THEN 0 ELSE mep.heures END heures_payees - FROM - formule_resultat_service_ref frs - JOIN type_volume_horaire tvh ON tvh.code = ''REALISE'' - JOIN etat_volume_horaire evh ON evh.code = ''valide'' - JOIN formule_resultat fr ON fr.id = frs.formule_resultat_id - AND fr.type_volume_horaire_id = tvh.id - AND fr.etat_volume_horaire_id = evh.id - - JOIN intervenant i ON i.id = fr.intervenant_id - JOIN service_referentiel s ON s.id = frs.service_referentiel_id - LEFT JOIN mise_en_paiement mep ON mep.formule_res_service_ref_id = frs.id - AND mep.histo_destruction IS NULL) tv - WHERE - ' || conds || ' + MERGE INTO formule_resultat tfr USING dual ON ( - ) v ON ( - t.INTERVENANT_ID = v.INTERVENANT_ID - AND COALESCE(t.MISE_EN_PAIEMENT_ID,0) = COALESCE(v.MISE_EN_PAIEMENT_ID,0) - AND COALESCE(t.FORMULE_RES_SERVICE_ID,0) = COALESCE(v.FORMULE_RES_SERVICE_ID,0) - AND COALESCE(t.FORMULE_RES_SERVICE_REF_ID,0) = COALESCE(v.FORMULE_RES_SERVICE_REF_ID,0) + tfr.intervenant_id = fr.intervenant_id + AND tfr.type_volume_horaire_id = fr.type_volume_horaire_id + AND tfr.etat_volume_horaire_id = fr.etat_volume_horaire_id ) WHEN MATCHED THEN UPDATE SET - ANNEE_ID = v.ANNEE_ID, - STRUCTURE_ID = v.STRUCTURE_ID, - PERIODE_PAIEMENT_ID = v.PERIODE_PAIEMENT_ID, - HEURES_A_PAYER = v.HEURES_A_PAYER, - HEURES_A_PAYER_POND = v.HEURES_A_PAYER_POND, - HEURES_DEMANDEES = v.HEURES_DEMANDEES, - HEURES_PAYEES = v.HEURES_PAYEES, - to_delete = 0 + service_du = ROUND( fr.service_du, arrondi ), + service_fi = ROUND( fr.service_fi, arrondi ), + service_fa = ROUND( fr.service_fa, arrondi ), + service_fc = ROUND( fr.service_fc, arrondi ), + service_referentiel = ROUND( fr.service_referentiel, arrondi ), + heures_compl_fi = ROUND( fr.heures_compl_fi, arrondi ), + heures_compl_fa = ROUND( fr.heures_compl_fa, arrondi ), + heures_compl_fc = ROUND( fr.heures_compl_fc, arrondi ), + heures_compl_fc_majorees = ROUND( fr.heures_compl_fc_majorees, arrondi ), + heures_compl_referentiel = ROUND( fr.heures_compl_referentiel, arrondi ), + total = ROUND( fr.total, arrondi ), + solde = ROUND( fr.solde, arrondi ), + sous_service = ROUND( fr.sous_service, arrondi ), + heures_compl = ROUND( fr.heures_compl, arrondi ), + to_delete = 0 WHEN NOT MATCHED THEN INSERT ( ID, - ANNEE_ID, INTERVENANT_ID, - STRUCTURE_ID, - MISE_EN_PAIEMENT_ID, - PERIODE_PAIEMENT_ID, - HEURES_A_PAYER, - HEURES_A_PAYER_POND, - HEURES_DEMANDEES, - HEURES_PAYEES, - FORMULE_RES_SERVICE_ID, - FORMULE_RES_SERVICE_REF_ID, - TO_DELETE + TYPE_VOLUME_HORAIRE_ID, + ETAT_VOLUME_HORAIRE_ID, + SERVICE_DU, + SERVICE_FI, + SERVICE_FA, + SERVICE_FC, + SERVICE_REFERENTIEL, + HEURES_COMPL_FI, + HEURES_COMPL_FA, + HEURES_COMPL_FC, + HEURES_COMPL_FC_majorees, + HEURES_COMPL_REFERENTIEL, + TOTAL, + SOLDE, + SOUS_SERVICE, + HEURES_COMPL, + TO_DELETE, + type_intervenant_code ) VALUES ( - TBL_PAIEMENT_ID_SEQ.NEXTVAL, - v.ANNEE_ID, - v.INTERVENANT_ID, - v.STRUCTURE_ID, - v.MISE_EN_PAIEMENT_ID, - v.PERIODE_PAIEMENT_ID, - v.HEURES_A_PAYER, - v.HEURES_A_PAYER_POND, - v.HEURES_DEMANDEES, - v.HEURES_PAYEES, - v.FORMULE_RES_SERVICE_ID, - v.FORMULE_RES_SERVICE_REF_ID, - 0 - + FORMULE_RESULTAT_ID_SEQ.NEXTVAL, + fr.intervenant_id, + fr.type_volume_horaire_id, + fr.etat_volume_horaire_id, + ROUND( fr.service_du, arrondi ), + ROUND( fr.service_fi, arrondi ), + ROUND( fr.service_fa, arrondi ), + ROUND( fr.service_fc, arrondi ), + ROUND( fr.service_referentiel, arrondi ), + ROUND( fr.heures_compl_fi, arrondi ), + ROUND( fr.heures_compl_fa, arrondi ), + ROUND( fr.heures_compl_fc, arrondi ), + ROUND( fr.heures_compl_fc_majorees, arrondi ), + ROUND( fr.heures_compl_referentiel, arrondi ), + ROUND( fr.total, arrondi ), + ROUND( fr.solde, arrondi ), + ROUND( fr.sous_service, arrondi ), + ROUND( fr.heures_compl, arrondi ), + 0, + ti_code ); - DELETE TBL_PAIEMENT WHERE to_delete = 1 AND ' || conds || '; - - END;'; - + SELECT id INTO id FROM formule_resultat tfr WHERE + tfr.intervenant_id = fr.intervenant_id + AND tfr.type_volume_horaire_id = fr.type_volume_horaire_id + AND tfr.etat_volume_horaire_id = fr.etat_volume_horaire_id; + RETURN id; END; - - PROCEDURE C_PIECE_JOINTE( PARAMS UNICAEN_TBL.T_PARAMS ) IS - conds CLOB; + FUNCTION ENREGISTRER_RESULTAT_SERVICE( fs formule_resultat_service%rowtype ) RETURN NUMERIC IS + id NUMERIC; BEGIN - conds := params_to_conds( params ); - - EXECUTE IMMEDIATE 'BEGIN - - UPDATE TBL_PIECE_JOINTE SET to_delete = 1 WHERE ' || conds || '; - - MERGE INTO - TBL_PIECE_JOINTE t - USING ( - - SELECT - tv.* - FROM - (WITH pjf AS ( - SELECT - pjf.annee_id, - pjf.type_piece_jointe_id, - pjf.intervenant_id, - COUNT(*) count, - SUM(CASE WHEN validation_id IS NULL THEN 0 ELSE 1 END) validation, - SUM(CASE WHEN fichier_id IS NULL THEN 0 ELSE 1 END) fichier - FROM - tbl_piece_jointe_fournie pjf - GROUP BY - pjf.annee_id, - pjf.type_piece_jointe_id, - pjf.intervenant_id - ) - SELECT - NVL( pjd.annee_id, pjf.annee_id ) annee_id, - NVL( pjd.type_piece_jointe_id, pjf.type_piece_jointe_id ) type_piece_jointe_id, - NVL( pjd.intervenant_id, pjf.intervenant_id ) intervenant_id, - CASE WHEN pjd.intervenant_id IS NULL THEN 0 ELSE 1 END demandee, - CASE WHEN pjf.fichier = pjf.count THEN 1 ELSE 0 END fournie, - CASE WHEN pjf.validation = pjf.count THEN 1 ELSE 0 END validee, - NVL(pjd.heures_pour_seuil,0) heures_pour_seuil - FROM - tbl_piece_jointe_demande pjd - FULL JOIN pjf ON pjf.type_piece_jointe_id = pjd.type_piece_jointe_id AND pjf.intervenant_id = pjd.intervenant_id) tv - WHERE - ' || conds || ' + MERGE INTO formule_resultat_service tfs USING dual ON ( - ) v ON ( - t.TYPE_PIECE_JOINTE_ID = v.TYPE_PIECE_JOINTE_ID - AND t.INTERVENANT_ID = v.INTERVENANT_ID + tfs.formule_resultat_id = fs.formule_resultat_id + AND tfs.service_id = fs.service_id ) WHEN MATCHED THEN UPDATE SET - ANNEE_ID = v.ANNEE_ID, - DEMANDEE = v.DEMANDEE, - FOURNIE = v.FOURNIE, - VALIDEE = v.VALIDEE, - HEURES_POUR_SEUIL = v.HEURES_POUR_SEUIL, - to_delete = 0 + service_fi = ROUND( fs.service_fi, arrondi ), + service_fa = ROUND( fs.service_fa, arrondi ), + service_fc = ROUND( fs.service_fc, arrondi ), + heures_compl_fi = ROUND( fs.heures_compl_fi, arrondi ), + heures_compl_fa = ROUND( fs.heures_compl_fa, arrondi ), + heures_compl_fc = ROUND( fs.heures_compl_fc, arrondi ), + heures_compl_fc_majorees = ROUND( fs.heures_compl_fc_majorees, arrondi ), + total = ROUND( fs.total, arrondi ), + TO_DELETE = 0 WHEN NOT MATCHED THEN INSERT ( ID, - ANNEE_ID, - TYPE_PIECE_JOINTE_ID, - INTERVENANT_ID, - DEMANDEE, - FOURNIE, - VALIDEE, - HEURES_POUR_SEUIL, + FORMULE_RESULTAT_ID, + SERVICE_ID, + SERVICE_FI, + SERVICE_FA, + SERVICE_FC, + HEURES_COMPL_FI, + HEURES_COMPL_FA, + HEURES_COMPL_FC, + HEURES_COMPL_FC_majorees, + TOTAL, TO_DELETE ) VALUES ( - TBL_PIECE_JOINTE_ID_SEQ.NEXTVAL, - v.ANNEE_ID, - v.TYPE_PIECE_JOINTE_ID, - v.INTERVENANT_ID, - v.DEMANDEE, - v.FOURNIE, - v.VALIDEE, - v.HEURES_POUR_SEUIL, + FORMULE_RESULTAT_SERVIC_ID_SEQ.NEXTVAL, + fs.formule_resultat_id, + fs.service_id, + ROUND( fs.service_fi, arrondi ), + ROUND( fs.service_fa, arrondi ), + ROUND( fs.service_fc, arrondi ), + ROUND( fs.heures_compl_fi, arrondi ), + ROUND( fs.heures_compl_fa, arrondi ), + ROUND( fs.heures_compl_fc, arrondi ), + ROUND( fs.heures_compl_fc_majorees, arrondi ), + ROUND( fs.total, arrondi ), 0 ); - DELETE TBL_PIECE_JOINTE WHERE to_delete = 1 AND ' || conds || '; + SELECT id INTO id FROM formule_resultat_service tfs WHERE + tfs.formule_resultat_id = fs.formule_resultat_id + AND tfs.service_id = fs.service_id; + RETURN id; + END; - END;'; - END; + FUNCTION ENREGISTRER_RESULTAT_VH( fvh formule_resultat_vh%rowtype ) RETURN NUMERIC IS + id NUMERIC; + BEGIN + MERGE INTO formule_resultat_vh tfvh USING dual ON ( + tfvh.formule_resultat_id = fvh.formule_resultat_id + AND tfvh.volume_horaire_id = fvh.volume_horaire_id + ) WHEN MATCHED THEN UPDATE SET - PROCEDURE C_PIECE_JOINTE_DEMANDE( PARAMS UNICAEN_TBL.T_PARAMS ) IS - conds CLOB; - BEGIN - conds := params_to_conds( params ); + service_fi = ROUND( fvh.service_fi, arrondi ), + service_fa = ROUND( fvh.service_fa, arrondi ), + service_fc = ROUND( fvh.service_fc, arrondi ), + heures_compl_fi = ROUND( fvh.heures_compl_fi, arrondi ), + heures_compl_fa = ROUND( fvh.heures_compl_fa, arrondi ), + heures_compl_fc = ROUND( fvh.heures_compl_fc, arrondi ), + heures_compl_fc_majorees = ROUND( fvh.heures_compl_fc_majorees, arrondi ), + total = ROUND( fvh.total, arrondi ), + TO_DELETE = 0 - EXECUTE IMMEDIATE 'BEGIN + WHEN NOT MATCHED THEN INSERT ( - UPDATE TBL_PIECE_JOINTE_DEMANDE SET to_delete = 1 WHERE ' || conds || '; + ID, + FORMULE_RESULTAT_ID, + VOLUME_HORAIRE_ID, + SERVICE_FI, + SERVICE_FA, + SERVICE_FC, + HEURES_COMPL_FI, + HEURES_COMPL_FA, + HEURES_COMPL_FC, + HEURES_COMPL_FC_MAJOREES, + TOTAL, + TO_DELETE - MERGE INTO - TBL_PIECE_JOINTE_DEMANDE t - USING ( + ) VALUES ( - SELECT - tv.* - FROM - (WITH i_h AS ( - SELECT - s.intervenant_id, - sum(vh.heures) heures, - sum(ep.taux_fc) fc - FROM - service s - JOIN type_volume_horaire tvh ON tvh.code = ''PREVU'' - JOIN volume_horaire vh ON vh.service_id = s.id - AND vh.type_volume_horaire_id = tvh.id - AND vh.histo_destruction IS NULL - JOIN element_pedagogique ep ON ep.id = s.element_pedagogique_id -- Service sur l''établissement - WHERE - s.histo_destruction IS NULL - AND vh.motif_non_paiement_id IS NULL -- pas de motif de non paiement - GROUP BY - s.intervenant_id - ) - SELECT - i.annee_id annee_id, - i.id intervenant_id, - tpj.id type_piece_jointe_id, - MAX(COALESCE(i_h.heures, 0)) heures_pour_seuil - FROM - intervenant i - - LEFT JOIN dossier d ON d.intervenant_id = i.id - AND d.histo_destruction IS NULL - - JOIN type_piece_jointe_statut tpjs ON tpjs.statut_intervenant_id = i.statut_id - AND tpjs.histo_destruction IS NULL - AND i.annee_id BETWEEN COALESCE(tpjs.annee_debut_id,i.annee_id) AND COALESCE(tpjs.annee_fin_id,i.annee_id) - - JOIN type_piece_jointe tpj ON tpj.id = tpjs.type_piece_jointe_id - AND tpj.histo_destruction IS NULL - - LEFT JOIN i_h ON i_h.intervenant_id = i.id - WHERE - -- Gestion de l''historique - i.histo_destruction IS NULL - - -- Seuil HETD - AND (COALESCE(i_h.heures,0) > COALESCE(tpjs.seuil_hetd,-1)) - - -- En fonction du premier recrutement ou non - AND (tpjs.premier_recrutement = 0 OR COALESCE(i.premier_recrutement,0) = 1) - - -- Le RIB n''est demandé QUE s''il est différent!! - AND CASE - WHEN tpjs.changement_rib = 0 OR d.id IS NULL THEN 1 - ELSE CASE WHEN replace(i.bic, '' '', '''') || ''-'' || replace(i.iban, '' '', '''') = d.rib THEN 0 ELSE 1 END - END = 1 - - -- Filtre FC - AND (tpjs.fc = 0 OR i_h.fc > 0) - GROUP BY - i.annee_id, - i.id, - tpj.id) tv - WHERE - ' || conds || ' + FORMULE_RESULTAT_VH_ID_SEQ.NEXTVAL, + fvh.formule_resultat_id, + fvh.volume_horaire_id, + ROUND( fvh.service_fi, arrondi ), + ROUND( fvh.service_fa, arrondi ), + ROUND( fvh.service_fc, arrondi ), + ROUND( fvh.heures_compl_fi, arrondi ), + ROUND( fvh.heures_compl_fa, arrondi ), + ROUND( fvh.heures_compl_fc, arrondi ), + ROUND( fvh.heures_compl_fc_majorees, arrondi ), + ROUND( fvh.total, arrondi ), + 0 - ) v ON ( - t.TYPE_PIECE_JOINTE_ID = v.TYPE_PIECE_JOINTE_ID - AND t.INTERVENANT_ID = v.INTERVENANT_ID + ); + + SELECT id INTO id FROM formule_resultat_vh tfvh WHERE + tfvh.formule_resultat_id = fvh.formule_resultat_id + AND tfvh.volume_horaire_id = fvh.volume_horaire_id; + RETURN id; + END; + + + FUNCTION ENREGISTRER_RESULTAT_SERV_REF( fr formule_resultat_service_ref%rowtype ) RETURN NUMERIC IS + id NUMERIC; + BEGIN + MERGE INTO formule_resultat_service_ref tfr USING dual ON ( + + tfr.formule_resultat_id = fr.formule_resultat_id + AND tfr.service_referentiel_id = fr.service_referentiel_id ) WHEN MATCHED THEN UPDATE SET - ANNEE_ID = v.ANNEE_ID, - HEURES_POUR_SEUIL = v.HEURES_POUR_SEUIL, - to_delete = 0 + service_referentiel = ROUND( fr.service_referentiel, arrondi ), + heures_compl_referentiel = ROUND( fr.heures_compl_referentiel, arrondi ), + TO_DELETE = 0 WHEN NOT MATCHED THEN INSERT ( ID, - ANNEE_ID, - TYPE_PIECE_JOINTE_ID, - INTERVENANT_ID, - HEURES_POUR_SEUIL, + FORMULE_RESULTAT_ID, + SERVICE_REFERENTIEL_ID, + SERVICE_REFERENTIEL, + HEURES_COMPL_REFERENTIEL, + TOTAL, TO_DELETE ) VALUES ( - TBL_PIECE_JOINTE_DEMAND_ID_SEQ.NEXTVAL, - v.ANNEE_ID, - v.TYPE_PIECE_JOINTE_ID, - v.INTERVENANT_ID, - v.HEURES_POUR_SEUIL, + FORMULE_RESULTAT_SERVIC_ID_SEQ.NEXTVAL, + fr.formule_resultat_id, + fr.service_referentiel_id, + ROUND( fr.service_referentiel, arrondi ), + ROUND( fr.heures_compl_referentiel, arrondi ), + fr.total, 0 ); - DELETE TBL_PIECE_JOINTE_DEMANDE WHERE to_delete = 1 AND ' || conds || '; - - END;'; + SELECT id INTO id FROM formule_resultat_service_ref tfr WHERE + tfr.formule_resultat_id = fr.formule_resultat_id + AND tfr.service_referentiel_id = fr.service_referentiel_id; + RETURN id; END; - - PROCEDURE C_PIECE_JOINTE_FOURNIE( PARAMS UNICAEN_TBL.T_PARAMS ) IS - conds CLOB; + FUNCTION ENREGISTRER_RESULTAT_VH_REF( fvh formule_resultat_vh_ref%rowtype ) RETURN NUMERIC IS + id NUMERIC; BEGIN - conds := params_to_conds( params ); - - EXECUTE IMMEDIATE 'BEGIN - - UPDATE TBL_PIECE_JOINTE_FOURNIE SET to_delete = 1 WHERE ' || conds || '; - - MERGE INTO - TBL_PIECE_JOINTE_FOURNIE t - USING ( - - SELECT - tv.* - FROM - (SELECT - i.annee_id, - pj.type_piece_jointe_id, - pj.intervenant_id, - pj.id piece_jointe_id, - v.id validation_id, - f.id fichier_id - FROM - piece_jointe pj - JOIN intervenant i ON i.id = pj.intervenant_id - AND i.histo_destruction IS NULL - - JOIN piece_jointe_fichier pjf ON pjf.piece_jointe_id = pj.id - JOIN fichier f ON f.id = pjf.fichier_id - AND f.histo_destruction IS NULL - - LEFT JOIN validation v ON v.id = pj.validation_id - AND v.histo_destruction IS NULL - WHERE - pj.histo_destruction IS NULL) tv - WHERE - ' || conds || ' + MERGE INTO formule_resultat_vh_ref tfvh USING dual ON ( - ) v ON ( - t.TYPE_PIECE_JOINTE_ID = v.TYPE_PIECE_JOINTE_ID - AND t.INTERVENANT_ID = v.INTERVENANT_ID - AND COALESCE(t.VALIDATION_ID,0) = COALESCE(v.VALIDATION_ID,0) - AND COALESCE(t.FICHIER_ID,0) = COALESCE(v.FICHIER_ID,0) + tfvh.formule_resultat_id = fvh.formule_resultat_id + AND tfvh.volume_horaire_ref_id = fvh.volume_horaire_ref_id ) WHEN MATCHED THEN UPDATE SET - ANNEE_ID = v.ANNEE_ID, - PIECE_JOINTE_ID = v.PIECE_JOINTE_ID, - to_delete = 0 + service_referentiel = ROUND( fvh.service_referentiel, arrondi ), + heures_compl_referentiel = ROUND( fvh.heures_compl_referentiel, arrondi ), + total = fvh.total, + TO_DELETE = 0 WHEN NOT MATCHED THEN INSERT ( ID, - ANNEE_ID, - TYPE_PIECE_JOINTE_ID, - INTERVENANT_ID, - VALIDATION_ID, - FICHIER_ID, - PIECE_JOINTE_ID, + FORMULE_RESULTAT_ID, + VOLUME_HORAIRE_REF_ID, + SERVICE_REFERENTIEL, + HEURES_COMPL_REFERENTIEL, + TOTAL, TO_DELETE ) VALUES ( - TBL_PIECE_JOINTE_FOURNI_ID_SEQ.NEXTVAL, - v.ANNEE_ID, - v.TYPE_PIECE_JOINTE_ID, - v.INTERVENANT_ID, - v.VALIDATION_ID, - v.FICHIER_ID, - v.PIECE_JOINTE_ID, + FORMULE_RESULTAT_VH_ID_SEQ.NEXTVAL, + fvh.formule_resultat_id, + fvh.volume_horaire_ref_id, + ROUND( fvh.service_referentiel, arrondi ), + ROUND( fvh.heures_compl_referentiel, arrondi ), + fvh.total, 0 ); - DELETE TBL_PIECE_JOINTE_FOURNIE WHERE to_delete = 1 AND ' || conds || '; + SELECT id INTO id FROM formule_resultat_vh_ref tfvh WHERE + tfvh.formule_resultat_id = fvh.formule_resultat_id + AND tfvh.volume_horaire_ref_id = fvh.volume_horaire_ref_id; + RETURN id; + END; + + + PROCEDURE POPULATE_INTERVENANT( INTERVENANT_ID NUMERIC, d_intervenant OUT t_intervenant ) IS + BEGIN + SELECT + structure_id, + annee_id, + heures_service_statutaire, + depassement_service_du_sans_hc + INTO + d_intervenant.structure_id, + d_intervenant.annee_id, + d_intervenant.heures_service_statutaire, + d_intervenant.depassement_service_du_sans_hc + FROM + v_formule_intervenant fi + WHERE + fi.id = POPULATE_INTERVENANT.INTERVENANT_ID; + + SELECT + NVL( SUM(heures), 0), + NVL( SUM(heures_decharge), 0) + INTO + d_intervenant.heures_service_modifie, + d_intervenant.heures_decharge + FROM + v_formule_service_modifie fsm + WHERE + fsm.intervenant_id = POPULATE_INTERVENANT.INTERVENANT_ID; + + EXCEPTION WHEN NO_DATA_FOUND THEN + d_intervenant.structure_id := null; + d_intervenant.annee_id := null; + d_intervenant.heures_service_statutaire := 0; + d_intervenant.depassement_service_du_sans_hc := 0; + d_intervenant.heures_service_modifie := 0; + d_intervenant.heures_decharge := 0; + END; + + + PROCEDURE POPULATE_SERVICE_REF( INTERVENANT_ID NUMERIC, d_service_ref OUT t_lst_service_ref ) IS + i PLS_INTEGER; + BEGIN + d_service_ref.delete; + + FOR d IN ( + SELECT + fr.id, + fr.structure_id + FROM + v_formule_service_ref fr + WHERE + fr.intervenant_id = POPULATE_SERVICE_REF.INTERVENANT_ID + ) LOOP + d_service_ref( d.id ).id := d.id; + d_service_ref( d.id ).structure_id := d.structure_id; + END LOOP; + END; - END;'; + PROCEDURE POPULATE_SERVICE( INTERVENANT_ID NUMERIC, d_service OUT t_lst_service ) IS + BEGIN + d_service.delete; + + FOR d IN ( + SELECT + id, + taux_fi, + taux_fa, + taux_fc, + structure_aff_id, + structure_ens_id, + ponderation_service_du, + ponderation_service_compl + FROM + v_formule_service fs + WHERE + fs.intervenant_id = POPULATE_SERVICE.INTERVENANT_ID + ) LOOP + d_service( d.id ).id := d.id; + d_service( d.id ).taux_fi := d.taux_fi; + d_service( d.id ).taux_fa := d.taux_fa; + d_service( d.id ).taux_fc := d.taux_fc; + d_service( d.id ).ponderation_service_du := d.ponderation_service_du; + d_service( d.id ).ponderation_service_compl := d.ponderation_service_compl; + d_service( d.id ).structure_aff_id := d.structure_aff_id; + d_service( d.id ).structure_ens_id := d.structure_ens_id; + END LOOP; + END; + + PROCEDURE POPULATE_VOLUME_HORAIRE_REF( INTERVENANT_ID NUMERIC, d_volume_horaire_ref OUT t_lst_volume_horaire_ref ) IS + BEGIN + d_volume_horaire_ref.delete; + + FOR d IN ( + SELECT + id, + service_referentiel_id, + heures, + fvh.type_volume_horaire_id, + fvh.etat_volume_horaire_id, + fvh.etat_volume_horaire_ordre + FROM + v_formule_volume_horaire_ref fvh + WHERE + fvh.intervenant_id = POPULATE_VOLUME_HORAIRE_REF.INTERVENANT_ID + ) LOOP + d_volume_horaire_ref( d.id ).id := d.id; + d_volume_horaire_ref( d.id ).service_referentiel_id := d.service_referentiel_id; + d_volume_horaire_ref( d.id ).heures := d.heures; + d_volume_horaire_ref( d.id ).type_volume_horaire_id := d.type_volume_horaire_id; + d_volume_horaire_ref( d.id ).etat_volume_horaire_id := d.etat_volume_horaire_id; + d_volume_horaire_ref( d.id ).etat_volume_horaire_ordre := d.etat_volume_horaire_ordre; + END LOOP; + END; + + PROCEDURE POPULATE_VOLUME_HORAIRE( INTERVENANT_ID NUMERIC, d_volume_horaire OUT t_lst_volume_horaire ) IS + BEGIN + d_volume_horaire.delete; + + FOR d IN ( + SELECT + id, + service_id, + heures, + taux_service_du, + taux_service_compl, + fvh.type_volume_horaire_id, + fvh.etat_volume_horaire_id, + fvh.etat_volume_horaire_ordre + FROM + v_formule_volume_horaire fvh + WHERE + fvh.intervenant_id = POPULATE_VOLUME_HORAIRE.INTERVENANT_ID + ) LOOP + d_volume_horaire( d.id ).id := d.id; + d_volume_horaire( d.id ).service_id := d.service_id; + d_volume_horaire( d.id ).heures := d.heures; + d_volume_horaire( d.id ).taux_service_du := d.taux_service_du; + d_volume_horaire( d.id ).taux_service_compl := d.taux_service_compl; + d_volume_horaire( d.id ).type_volume_horaire_id := d.type_volume_horaire_id; + d_volume_horaire( d.id ).etat_volume_horaire_id := d.etat_volume_horaire_id; + d_volume_horaire( d.id ).etat_volume_horaire_ordre := d.etat_volume_horaire_ordre; + END LOOP; END; + PROCEDURE POPULATE_TYPE_ETAT_VH( d_volume_horaire t_lst_volume_horaire, d_volume_horaire_ref t_lst_volume_horaire_ref, d_type_etat_vh OUT t_lst_type_etat_vh ) IS + TYPE t_ordres IS TABLE OF NUMERIC INDEX BY PLS_INTEGER; - PROCEDURE C_SERVICE( PARAMS UNICAEN_TBL.T_PARAMS ) IS - conds CLOB; + ordres_found t_ordres; + ordres_exists t_ordres; + type_volume_horaire_id PLS_INTEGER; + etat_volume_horaire_ordre PLS_INTEGER; + id PLS_INTEGER; BEGIN - conds := params_to_conds( params ); + d_type_etat_vh.delete; - EXECUTE IMMEDIATE 'BEGIN + -- récupération des ID et ordres de volumes horaires + FOR evh IN ( + SELECT id, ordre + FROM etat_volume_horaire evh + ORDER BY ordre + ) LOOP + ordres_exists( evh.ordre ) := evh.id; + END LOOP; - UPDATE TBL_SERVICE SET to_delete = 1 WHERE ' || conds || '; + -- récupération des ordres maximum par type d'intervention + id := d_volume_horaire.FIRST; + LOOP EXIT WHEN id IS NULL; + IF NOT ordres_found.EXISTS(d_volume_horaire(id).type_volume_horaire_id) THEN + ordres_found( d_volume_horaire(id).type_volume_horaire_id ) := d_volume_horaire(id).etat_volume_horaire_ordre; + ELSIF ordres_found( d_volume_horaire(id).type_volume_horaire_id ) < d_volume_horaire(id).etat_volume_horaire_ordre THEN + ordres_found( d_volume_horaire(id).type_volume_horaire_id ) := d_volume_horaire(id).etat_volume_horaire_ordre; + END IF; + id := d_volume_horaire.NEXT(id); + END LOOP; - MERGE INTO - TBL_SERVICE t - USING ( + id := d_volume_horaire_ref.FIRST; + LOOP EXIT WHEN id IS NULL; + IF NOT ordres_found.EXISTS(d_volume_horaire_ref(id).type_volume_horaire_id) THEN + ordres_found( d_volume_horaire_ref(id).type_volume_horaire_id ) := d_volume_horaire_ref(id).etat_volume_horaire_ordre; + ELSIF ordres_found( d_volume_horaire_ref(id).type_volume_horaire_id ) < d_volume_horaire_ref(id).etat_volume_horaire_ordre THEN + ordres_found( d_volume_horaire_ref(id).type_volume_horaire_id ) := d_volume_horaire_ref(id).etat_volume_horaire_ordre; + END IF; + id := d_volume_horaire_ref.NEXT(id); + END LOOP; - SELECT - tv.* - FROM - (WITH t AS ( - SELECT - s.id service_id, - s.intervenant_id intervenant_id, - ep.structure_id structure_id, - ep.id element_pedagogique_id, - ep.periode_id element_pedagogique_periode_id, - etp.id etape_id, - - vh.type_volume_horaire_id type_volume_horaire_id, - vh.heures heures, - tvh.code type_volume_horaire_code, - - CASE WHEN ep.histo_destruction IS NULL THEN 1 ELSE 0 END element_pedagogique_histo, - CASE WHEN etp.histo_destruction IS NULL OR cp.id IS NOT NULL THEN 1 ELSE 0 END etape_histo, - - CASE WHEN ep.periode_id IS NOT NULL THEN - SUM( CASE WHEN vh.periode_id <> ep.periode_id THEN 1 ELSE 0 END ) OVER( PARTITION BY vh.service_id, vh.periode_id, vh.type_volume_horaire_id, vh.type_intervention_id ) - ELSE 0 END has_heures_mauvaise_periode, - - CASE WHEN v.id IS NULL THEN 0 ELSE 1 END valide - FROM - service s - LEFT JOIN element_pedagogique ep ON ep.id = s.element_pedagogique_id - LEFT JOIN etape etp ON etp.id = ep.etape_id - LEFT JOIN chemin_pedagogique cp ON cp.etape_id = etp.id - AND cp.element_pedagogique_id = ep.id - AND cp.histo_destruction IS NULL - - JOIN volume_horaire vh ON vh.service_id = s.id - AND vh.histo_destruction IS NULL - - JOIN type_volume_horaire tvh ON tvh.id = vh.type_volume_horaire_id - - LEFT JOIN validation_vol_horaire vvh ON vvh.volume_horaire_id = vh.id - - LEFT JOIN validation v ON v.id = vvh.validation_id - AND v.histo_destruction IS NULL - WHERE - s.histo_destruction IS NULL - ) - SELECT - i.annee_id annee_id, - i.id intervenant_id, - i.structure_id intervenant_structure_id, - NVL( t.structure_id, i.structure_id ) structure_id, - ti.id type_intervenant_id, - ti.code type_intervenant_code, - si.peut_saisir_service peut_saisir_service, - - t.element_pedagogique_id, - t.service_id, - t.element_pedagogique_periode_id, - t.etape_id, - t.type_volume_horaire_id, - t.type_volume_horaire_code, - t.element_pedagogique_histo, - t.etape_histo, - - CASE WHEN SUM(t.has_heures_mauvaise_periode) > 0 THEN 1 ELSE 0 END has_heures_mauvaise_periode, - - CASE WHEN type_volume_horaire_id IS NULL THEN 0 ELSE count(*) END nbvh, - CASE WHEN type_volume_horaire_id IS NULL THEN 0 ELSE sum(t.heures) END heures, - sum(valide) valide - FROM - t - JOIN intervenant i ON i.id = t.intervenant_id - JOIN statut_intervenant si ON si.id = i.statut_id - JOIN type_intervenant ti ON ti.id = si.type_intervenant_id - GROUP BY - i.annee_id, - i.id, - i.structure_id, - t.structure_id, - i.structure_id, - ti.id, - ti.code, - si.peut_saisir_service, - t.element_pedagogique_id, - t.service_id, - t.element_pedagogique_periode_id, - t.etape_id, - t.type_volume_horaire_id, - t.type_volume_horaire_code, - t.element_pedagogique_histo, - t.etape_histo) tv - WHERE - ' || conds || ' + -- peuplement des t_lst_type_etat_vh + type_volume_horaire_id := ordres_found.FIRST; + LOOP EXIT WHEN type_volume_horaire_id IS NULL; + etat_volume_horaire_ordre := ordres_exists.FIRST; + LOOP EXIT WHEN etat_volume_horaire_ordre IS NULL; + IF etat_volume_horaire_ordre <= ordres_found(type_volume_horaire_id) THEN + d_type_etat_vh( type_volume_horaire_id + 100000 * etat_volume_horaire_ordre ).type_volume_horaire_id := type_volume_horaire_id; + d_type_etat_vh( type_volume_horaire_id + 100000 * etat_volume_horaire_ordre ).etat_volume_horaire_id := ordres_exists( etat_volume_horaire_ordre ); + END IF; + etat_volume_horaire_ordre := ordres_exists.NEXT(etat_volume_horaire_ordre); + END LOOP; - ) v ON ( - COALESCE(t.TYPE_VOLUME_HORAIRE_ID,0) = COALESCE(v.TYPE_VOLUME_HORAIRE_ID,0) - AND t.SERVICE_ID = v.SERVICE_ID + type_volume_horaire_id := ordres_found.NEXT(type_volume_horaire_id); + END LOOP; - ) WHEN MATCHED THEN UPDATE SET + END; - ANNEE_ID = v.ANNEE_ID, - INTERVENANT_ID = v.INTERVENANT_ID, - PEUT_SAISIR_SERVICE = v.PEUT_SAISIR_SERVICE, - STRUCTURE_ID = v.STRUCTURE_ID, - NBVH = v.NBVH, - VALIDE = v.VALIDE, - ELEMENT_PEDAGOGIQUE_ID = v.ELEMENT_PEDAGOGIQUE_ID, - ELEMENT_PEDAGOGIQUE_PERIODE_ID = v.ELEMENT_PEDAGOGIQUE_PERIODE_ID, - ETAPE_ID = v.ETAPE_ID, - ELEMENT_PEDAGOGIQUE_HISTO = v.ELEMENT_PEDAGOGIQUE_HISTO, - ETAPE_HISTO = v.ETAPE_HISTO, - HAS_HEURES_MAUVAISE_PERIODE = v.HAS_HEURES_MAUVAISE_PERIODE, - INTERVENANT_STRUCTURE_ID = v.INTERVENANT_STRUCTURE_ID, - TYPE_INTERVENANT_ID = v.TYPE_INTERVENANT_ID, - TYPE_INTERVENANT_CODE = v.TYPE_INTERVENANT_CODE, - TYPE_VOLUME_HORAIRE_CODE = v.TYPE_VOLUME_HORAIRE_CODE, - HEURES = v.HEURES, - to_delete = 0 - WHEN NOT MATCHED THEN INSERT ( + PROCEDURE POPULATE( INTERVENANT_ID NUMERIC ) IS + BEGIN + OSE_FORMULE.INTERVENANT_ID := POPULATE.INTERVENANT_ID; - ID, - ANNEE_ID, - INTERVENANT_ID, - PEUT_SAISIR_SERVICE, - TYPE_VOLUME_HORAIRE_ID, - STRUCTURE_ID, - NBVH, - VALIDE, - ELEMENT_PEDAGOGIQUE_ID, - ELEMENT_PEDAGOGIQUE_PERIODE_ID, - ETAPE_ID, - ELEMENT_PEDAGOGIQUE_HISTO, - ETAPE_HISTO, - HAS_HEURES_MAUVAISE_PERIODE, - SERVICE_ID, - INTERVENANT_STRUCTURE_ID, - TYPE_INTERVENANT_ID, - TYPE_INTERVENANT_CODE, - TYPE_VOLUME_HORAIRE_CODE, - HEURES, - TO_DELETE + POPULATE_INTERVENANT ( INTERVENANT_ID, d_intervenant ); + IF d_intervenant.heures_service_statutaire IS NOT NULL THEN -- sinon rien n'est à faire!! + POPULATE_SERVICE_REF ( INTERVENANT_ID, d_service_ref ); + POPULATE_SERVICE ( INTERVENANT_ID, d_service ); + POPULATE_VOLUME_HORAIRE_REF ( INTERVENANT_ID, d_all_volume_horaire_ref ); + POPULATE_VOLUME_HORAIRE ( INTERVENANT_ID, d_all_volume_horaire ); + POPULATE_TYPE_ETAT_VH ( d_all_volume_horaire, d_all_volume_horaire_ref, d_type_etat_vh ); + END IF; + END; - ) VALUES ( - TBL_SERVICE_ID_SEQ.NEXTVAL, - v.ANNEE_ID, - v.INTERVENANT_ID, - v.PEUT_SAISIR_SERVICE, - v.TYPE_VOLUME_HORAIRE_ID, - v.STRUCTURE_ID, - v.NBVH, - v.VALIDE, - v.ELEMENT_PEDAGOGIQUE_ID, - v.ELEMENT_PEDAGOGIQUE_PERIODE_ID, - v.ETAPE_ID, - v.ELEMENT_PEDAGOGIQUE_HISTO, - v.ETAPE_HISTO, - v.HAS_HEURES_MAUVAISE_PERIODE, - v.SERVICE_ID, - v.INTERVENANT_STRUCTURE_ID, - v.TYPE_INTERVENANT_ID, - v.TYPE_INTERVENANT_CODE, - v.TYPE_VOLUME_HORAIRE_CODE, - v.HEURES, - 0 + PROCEDURE POPULATE_FILTER( TYPE_VOLUME_HORAIRE_ID NUMERIC, ETAT_VOLUME_HORAIRE_ID NUMERIC ) IS + EVH_ORDRE NUMERIC; + id PLS_INTEGER; + BEGIN + d_volume_horaire.delete; + d_volume_horaire_ref.delete; - ); + SELECT ordre INTO EVH_ORDRE FROM etat_volume_horaire WHERE ID = ETAT_VOLUME_HORAIRE_ID; - DELETE TBL_SERVICE WHERE to_delete = 1 AND ' || conds || '; + id := d_all_volume_horaire.FIRST; + LOOP EXIT WHEN id IS NULL; + IF + d_all_volume_horaire(id).type_volume_horaire_id = TYPE_VOLUME_HORAIRE_ID + AND d_all_volume_horaire(id).etat_volume_horaire_ordre >= EVH_ORDRE + THEN + d_volume_horaire(id) := d_all_volume_horaire(id); + END IF; + id := d_all_volume_horaire.NEXT(id); + END LOOP; + + id := d_all_volume_horaire_ref.FIRST; + LOOP EXIT WHEN id IS NULL; + IF + d_all_volume_horaire_ref(id).type_volume_horaire_id = TYPE_VOLUME_HORAIRE_ID + AND d_all_volume_horaire_ref(id).etat_volume_horaire_ordre >= EVH_ORDRE + THEN + d_volume_horaire_ref(id) := d_all_volume_horaire_ref(id); + END IF; + id := d_all_volume_horaire_ref.NEXT(id); + END LOOP; + END; - END;'; + PROCEDURE INIT_RESULTAT ( INTERVENANT_ID NUMERIC, TYPE_VOLUME_HORAIRE_ID NUMERIC, ETAT_VOLUME_HORAIRE_ID NUMERIC ) IS + BEGIN + d_resultat.intervenant_id := INTERVENANT_ID; + d_resultat.type_volume_horaire_id := TYPE_VOLUME_HORAIRE_ID; + d_resultat.etat_volume_horaire_id := ETAT_VOLUME_HORAIRE_ID; + d_resultat.service_du := 0; + d_resultat.solde := 0; + d_resultat.sous_service := 0; + d_resultat.heures_compl := 0; + d_resultat.volume_horaire.delete; + d_resultat.volume_horaire_ref.delete; END; - - PROCEDURE C_SERVICE_REFERENTIEL( PARAMS UNICAEN_TBL.T_PARAMS ) IS - conds CLOB; + PROCEDURE CALC_RESULTAT IS + function_name VARCHAR2(30); + package_name VARCHAR2(30); BEGIN - conds := params_to_conds( params ); + package_name := OSE_PARAMETRE.GET_FORMULE_PACKAGE_NAME; + function_name := OSE_PARAMETRE.GET_FORMULE_FUNCTION_NAME; - EXECUTE IMMEDIATE 'BEGIN + EXECUTE IMMEDIATE + 'BEGIN ' || package_name || '.' || function_name || '( :1, :2, :3 ); END;' + USING + d_resultat.intervenant_id, d_resultat.type_volume_horaire_id, d_resultat.etat_volume_horaire_id; - UPDATE TBL_SERVICE_REFERENTIEL SET to_delete = 1 WHERE ' || conds || '; + END; - MERGE INTO - TBL_SERVICE_REFERENTIEL t - USING ( - SELECT - tv.* - FROM - (WITH t AS ( - - SELECT - i.annee_id, - i.id intervenant_id, - si.peut_saisir_referentiel peut_saisir_service, - vh.type_volume_horaire_id, - s.structure_id, - CASE WHEN v.id IS NULL THEN 0 ELSE 1 END valide - FROM - intervenant i - - JOIN statut_intervenant si ON si.id = i.statut_id - - LEFT JOIN service_referentiel s ON s.intervenant_id = i.id - AND s.histo_destruction IS NULL - - LEFT JOIN volume_horaire_ref vh ON vh.service_referentiel_id = s.id - AND vh.histo_destruction IS NULL - - LEFT JOIN validation_vol_horaire_ref vvh ON vvh.volume_horaire_ref_id = vh.id - - LEFT JOIN validation v ON v.id = vvh.validation_id - AND v.histo_destruction IS NULL - WHERE - i.histo_destruction IS NULL - - ) - SELECT - annee_id, - intervenant_id, - peut_saisir_service, - type_volume_horaire_id, - structure_id, - CASE WHEN type_volume_horaire_id IS NULL THEN 0 ELSE count(*) END nbvh, - sum(valide) valide - FROM - t - WHERE - NOT (structure_id IS NOT NULL AND type_volume_horaire_id IS NULL) - GROUP BY - annee_id, - intervenant_id, - peut_saisir_service, - type_volume_horaire_id, - structure_id) tv - WHERE - ' || conds || ' + PROCEDURE SAVE_RESULTAT IS + res t_resultat_hetd; + res_ref t_resultat_hetd_ref; + res_service t_lst_resultat_hetd; + res_service_ref t_lst_resultat_hetd_ref; + id PLS_INTEGER; + sid PLS_INTEGER; + fr formule_resultat%rowtype; + frs formule_resultat_service%rowtype; + frsr formule_resultat_service_ref%rowtype; + frvh formule_resultat_vh%rowtype; + frvhr formule_resultat_vh_ref%rowtype; + dev_null PLS_INTEGER; + BEGIN + -- Calcul des données pour les services et le résultat global + fr.service_fi := 0; + fr.service_fa := 0; + fr.service_fc := 0; + fr.service_referentiel := 0; + fr.heures_compl_fi := 0; + fr.heures_compl_fa := 0; + fr.heures_compl_fc := 0; + fr.heures_compl_fc_majorees := 0; + fr.heures_compl_referentiel := 0; - ) v ON ( - t.INTERVENANT_ID = v.INTERVENANT_ID - AND COALESCE(t.TYPE_VOLUME_HORAIRE_ID,0) = COALESCE(v.TYPE_VOLUME_HORAIRE_ID,0) - AND COALESCE(t.STRUCTURE_ID,0) = COALESCE(v.STRUCTURE_ID,0) + id := d_resultat.volume_horaire.FIRST; + LOOP EXIT WHEN id IS NULL; + sid := d_volume_horaire(id).service_id; + IF NOT res_service.exists(sid) THEN res_service(sid).service_fi := 0; END IF; - ) WHEN MATCHED THEN UPDATE SET + res_service(sid).service_fi := res_service(sid).service_fi + d_resultat.volume_horaire(id).service_fi; + res_service(sid).service_fa := res_service(sid).service_fa + d_resultat.volume_horaire(id).service_fa; + res_service(sid).service_fc := res_service(sid).service_fc + d_resultat.volume_horaire(id).service_fc; + res_service(sid).heures_compl_fi := res_service(sid).heures_compl_fi + d_resultat.volume_horaire(id).heures_compl_fi; + res_service(sid).heures_compl_fa := res_service(sid).heures_compl_fa + d_resultat.volume_horaire(id).heures_compl_fa; + res_service(sid).heures_compl_fc := res_service(sid).heures_compl_fc + d_resultat.volume_horaire(id).heures_compl_fc; + res_service(sid).heures_compl_fc_majorees := res_service(sid).heures_compl_fc_majorees + d_resultat.volume_horaire(id).heures_compl_fc_majorees; - ANNEE_ID = v.ANNEE_ID, - PEUT_SAISIR_SERVICE = v.PEUT_SAISIR_SERVICE, - NBVH = v.NBVH, - VALIDE = v.VALIDE, - to_delete = 0 + fr.service_fi := fr.service_fi + d_resultat.volume_horaire(id).service_fi; + fr.service_fa := fr.service_fa + d_resultat.volume_horaire(id).service_fa; + fr.service_fc := fr.service_fc + d_resultat.volume_horaire(id).service_fc; + fr.heures_compl_fi := fr.heures_compl_fi + d_resultat.volume_horaire(id).heures_compl_fi; + fr.heures_compl_fa := fr.heures_compl_fa + d_resultat.volume_horaire(id).heures_compl_fa; + fr.heures_compl_fc := fr.heures_compl_fc + d_resultat.volume_horaire(id).heures_compl_fc; + fr.heures_compl_fc_majorees := fr.heures_compl_fc_majorees + d_resultat.volume_horaire(id).heures_compl_fc_majorees; + id := d_resultat.volume_horaire.NEXT(id); + END LOOP; - WHEN NOT MATCHED THEN INSERT ( + id := d_resultat.volume_horaire_ref.FIRST; + LOOP EXIT WHEN id IS NULL; + sid := d_volume_horaire_ref(id).service_referentiel_id; + IF NOT res_service_ref.exists(sid) THEN res_service_ref(sid).service_referentiel := 0; END IF; - ID, - ANNEE_ID, - INTERVENANT_ID, - PEUT_SAISIR_SERVICE, - TYPE_VOLUME_HORAIRE_ID, - STRUCTURE_ID, - NBVH, - VALIDE, - TO_DELETE + res_service_ref(sid).service_referentiel := res_service_ref(sid).service_referentiel + d_resultat.volume_horaire_ref(id).service_referentiel; + res_service_ref(sid).heures_compl_referentiel := res_service_ref(sid).heures_compl_referentiel + d_resultat.volume_horaire_ref(id).heures_compl_referentiel; - ) VALUES ( + fr.service_referentiel := fr.service_referentiel + d_resultat.volume_horaire_ref(id).service_referentiel; + fr.heures_compl_referentiel := fr.heures_compl_referentiel + d_resultat.volume_horaire_ref(id).heures_compl_referentiel; + id := d_resultat.volume_horaire_ref.NEXT(id); + END LOOP; - TBL_SERVICE_REFERENTIEL_ID_SEQ.NEXTVAL, - v.ANNEE_ID, - v.INTERVENANT_ID, - v.PEUT_SAISIR_SERVICE, - v.TYPE_VOLUME_HORAIRE_ID, - v.STRUCTURE_ID, - v.NBVH, - v.VALIDE, - 0 + -- Sauvegarde du résultat global + fr.id := NULL; + fr.intervenant_id := d_resultat.intervenant_id; + fr.type_volume_horaire_id := d_resultat.type_volume_horaire_id; + fr.etat_volume_horaire_id := d_resultat.etat_volume_horaire_id; + fr.service_du := d_resultat.service_du; + fr.total := fr.service_fi + + fr.service_fa + + fr.service_fc + + fr.service_referentiel + + fr.heures_compl_fi + + fr.heures_compl_fa + + fr.heures_compl_fc + + fr.heures_compl_fc_majorees + + fr.heures_compl_referentiel; + fr.solde := d_resultat.solde; + fr.sous_service := d_resultat.sous_service; + fr.heures_compl := d_resultat.heures_compl; + fr.id := OSE_FORMULE.ENREGISTRER_RESULTAT( fr ); - ); + -- sauvegarde des services + id := res_service.FIRST; + LOOP EXIT WHEN id IS NULL; + frs.id := NULL; + frs.formule_resultat_id := fr.id; + frs.service_id := id; + frs.service_fi := res_service(id).service_fi; + frs.service_fa := res_service(id).service_fa; + frs.service_fc := res_service(id).service_fc; + frs.heures_compl_fi := res_service(id).heures_compl_fi; + frs.heures_compl_fa := res_service(id).heures_compl_fa; + frs.heures_compl_fc := res_service(id).heures_compl_fc; + frs.heures_compl_fc_majorees := res_service(id).heures_compl_fc_majorees; + frs.total := frs.service_fi + + frs.service_fa + + frs.service_fc + + frs.heures_compl_fi + + frs.heures_compl_fa + + frs.heures_compl_fc + + frs.heures_compl_fc_majorees; + dev_null := OSE_FORMULE.ENREGISTRER_RESULTAT_SERVICE( frs ); + id := res_service.NEXT(id); + END LOOP; - DELETE TBL_SERVICE_REFERENTIEL WHERE to_delete = 1 AND ' || conds || '; + -- sauvegarde des services référentiels + id := res_service_ref.FIRST; + LOOP EXIT WHEN id IS NULL; + frsr.id := NULL; + frsr.formule_resultat_id := fr.id; + frsr.service_referentiel_id := id; + frsr.service_referentiel := res_service_ref(id).service_referentiel; + frsr.heures_compl_referentiel := res_service_ref(id).heures_compl_referentiel; + frsr.total := res_service_ref(id).service_referentiel + + res_service_ref(id).heures_compl_referentiel; + dev_null := OSE_FORMULE.ENREGISTRER_RESULTAT_SERV_REF( frsr ); + id := res_service_ref.NEXT(id); + END LOOP; - END;'; + -- sauvegarde des volumes horaires + id := d_resultat.volume_horaire.FIRST; + LOOP EXIT WHEN id IS NULL; + frvh.id := NULL; + frvh.formule_resultat_id := fr.id; + frvh.volume_horaire_id := id; + frvh.service_fi := d_resultat.volume_horaire(id).service_fi; + frvh.service_fa := d_resultat.volume_horaire(id).service_fa; + frvh.service_fc := d_resultat.volume_horaire(id).service_fc; + frvh.heures_compl_fi := d_resultat.volume_horaire(id).heures_compl_fi; + frvh.heures_compl_fa := d_resultat.volume_horaire(id).heures_compl_fa; + frvh.heures_compl_fc := d_resultat.volume_horaire(id).heures_compl_fc; + frvh.heures_compl_fc_majorees := d_resultat.volume_horaire(id).heures_compl_fc_majorees; + frvh.total := frvh.service_fi + + frvh.service_fa + + frvh.service_fc + + frvh.heures_compl_fi + + frvh.heures_compl_fa + + frvh.heures_compl_fc + + frvh.heures_compl_fc_majorees; + dev_null := OSE_FORMULE.ENREGISTRER_RESULTAT_VH( frvh ); + id := d_resultat.volume_horaire.NEXT(id); + END LOOP; + + -- sauvegarde des volumes horaires référentiels + id := d_resultat.volume_horaire_ref.FIRST; + LOOP EXIT WHEN id IS NULL; + frvhr.id := NULL; + frvhr.formule_resultat_id := fr.id; + frvhr.volume_horaire_ref_id := id; + frvhr.service_referentiel := d_resultat.volume_horaire_ref(id).service_referentiel; + frvhr.heures_compl_referentiel := d_resultat.volume_horaire_ref(id).heures_compl_referentiel; + frvhr.total := frvhr.service_referentiel + + frvhr.heures_compl_referentiel; + dev_null := OSE_FORMULE.ENREGISTRER_RESULTAT_VH_REF( frvhr ); + id := d_resultat.volume_horaire_ref.NEXT(id); + END LOOP; + END; + PROCEDURE DEBUG_INTERVENANT IS + BEGIN + ose_test.echo('d_intervenant'); + ose_test.echo(' .structure_id = ' || d_intervenant.structure_id || ' (' || ose_test.get_structure_by_id(d_intervenant.structure_id).libelle_court || ')' ); + ose_test.echo(' .heures_service_statutaire = ' || d_intervenant.heures_service_statutaire ); + ose_test.echo(' .heures_service_modifie = ' || d_intervenant.heures_service_modifie ); + ose_test.echo(' .depassement_service_du_sans_hc = ' || d_intervenant.depassement_service_du_sans_hc ); + ose_test.echo(''); END; - - - PROCEDURE C_SERVICE_SAISIE( PARAMS UNICAEN_TBL.T_PARAMS ) IS - conds CLOB; + PROCEDURE DEBUG_SERVICE( SERVICE_ID PLS_INTEGER ) IS BEGIN - conds := params_to_conds( params ); + ose_test.echo('d_service(' || SERVICE_ID || ')' ); + ose_test.echo(' .taux_fi = ' || d_service(SERVICE_ID).taux_fi ); + ose_test.echo(' .taux_fa = ' || d_service(SERVICE_ID).taux_fa ); + ose_test.echo(' .taux_fc = ' || d_service(SERVICE_ID).taux_fc ); + ose_test.echo(' .ponderation_service_du = ' || d_service(SERVICE_ID).ponderation_service_du ); + ose_test.echo(' .ponderation_service_compl = ' || d_service(SERVICE_ID).ponderation_service_compl ); + ose_test.echo(' .structure_aff_id = ' || d_service(SERVICE_ID).structure_aff_id || ' (' || ose_test.get_structure_by_id(d_service(SERVICE_ID).structure_aff_id).libelle_court || ')' ); + ose_test.echo(' .structure_ens_id = ' || d_service(SERVICE_ID).structure_ens_id || ' (' || CASE WHEN d_service(SERVICE_ID).structure_ens_id IS NOT NULL THEN ose_test.get_structure_by_id(d_service(SERVICE_ID).structure_ens_id).libelle_court ELSE 'null' END || ')' ); + ose_test.echo(''); + END; - EXECUTE IMMEDIATE 'BEGIN + PROCEDURE DEBUG_SERVICE_REF( SERVICE_REF_ID PLS_INTEGER ) IS + BEGIN + ose_test.echo('d_service_ref(' || SERVICE_REF_ID || ')' ); + ose_test.echo(' .structure_id = ' || d_service_ref(SERVICE_REF_ID).structure_id || ' (' || ose_test.get_structure_by_id(d_service_ref(SERVICE_REF_ID).structure_id).libelle_court || ')' ); + ose_test.echo(''); + END; - UPDATE TBL_SERVICE_SAISIE SET to_delete = 1 WHERE ' || conds || '; + PROCEDURE DEBUG_VOLUME_HORAIRE( VH_ID PLS_INTEGER ) IS + BEGIN + ose_test.echo('d_volume_horaire(' || VH_ID || ')' ); + ose_test.echo(' .service_id = ' || d_volume_horaire(VH_ID).service_id ); + ose_test.echo(' .type_volume_horaire_id = ' || d_volume_horaire(VH_ID).type_volume_horaire_id ); + ose_test.echo(' .etat_volume_horaire_id = ' || d_volume_horaire(VH_ID).etat_volume_horaire_id ); + ose_test.echo(' .etat_volume_horaire_ordre = ' || d_volume_horaire(VH_ID).etat_volume_horaire_ordre ); + ose_test.echo(' .heures = ' || d_volume_horaire(VH_ID).heures ); + ose_test.echo(' .taux_service_du = ' || d_volume_horaire(VH_ID).taux_service_du ); + ose_test.echo(' .taux_service_compl = ' || d_volume_horaire(VH_ID).taux_service_compl ); + ose_test.echo(''); + END; - MERGE INTO - TBL_SERVICE_SAISIE t - USING ( + PROCEDURE DEBUG_VOLUME_HORAIRE_REF( VH_REF_ID PLS_INTEGER ) IS + BEGIN + ose_test.echo('d_volume_horaire_ref(' || VH_REF_ID || ')' ); + ose_test.echo(' .service_referentiel_id = ' || d_volume_horaire_ref(VH_REF_ID).service_referentiel_id ); + ose_test.echo(' .type_volume_horaire_id = ' || d_volume_horaire_ref(VH_REF_ID).type_volume_horaire_id ); + ose_test.echo(' .etat_volume_horaire_id = ' || d_volume_horaire_ref(VH_REF_ID).etat_volume_horaire_id ); + ose_test.echo(' .etat_volume_horaire_ordre = ' || d_volume_horaire_ref(VH_REF_ID).etat_volume_horaire_ordre ); + ose_test.echo(' .heures = ' || d_volume_horaire_ref(VH_REF_ID).heures ); + ose_test.echo(''); + END; - SELECT - tv.* - FROM - (SELECT - i.annee_id, - i.id intervenant_id, - si.peut_saisir_service, - si.peut_saisir_referentiel, - SUM( CASE WHEN tvhs.code = ''PREVU'' THEN NVL(vh .heures,0) ELSE 0 END ) heures_service_prev, - SUM( CASE WHEN tvhs.code = ''PREVU'' THEN NVL(vhr.heures,0) ELSE 0 END ) heures_referentiel_prev, - SUM( CASE WHEN tvhs.code = ''REALISE'' THEN NVL(vh .heures,0) ELSE 0 END ) heures_service_real, - SUM( CASE WHEN tvhs.code = ''REALISE'' THEN NVL(vhr.heures,0) ELSE 0 END ) heures_referentiel_real - FROM - intervenant i - JOIN statut_intervenant si ON si.id = i.statut_id - LEFT JOIN service s ON s.intervenant_id = i.id AND s.histo_destruction IS NULL - LEFT JOIN volume_horaire vh ON vh.service_id = s.id AND vh.histo_destruction IS NULL - LEFT JOIN type_volume_horaire tvhs ON tvhs.id = vh.type_volume_horaire_id - - LEFT JOIN service_referentiel sr ON sr.intervenant_id = i.id AND sr.histo_destruction IS NULL - LEFT JOIN volume_horaire_ref vhr ON vhr.service_referentiel_id = sr.id AND vhr.histo_destruction IS NULL - LEFT JOIN type_volume_horaire tvhrs ON tvhrs.id = vhr.type_volume_horaire_id - WHERE - i.histo_destruction IS NULL - GROUP BY - i.annee_id, - i.id, - si.peut_saisir_service, - si.peut_saisir_referentiel) tv - WHERE - ' || conds || ' + PROCEDURE DEBUG_RESULTAT IS + BEGIN + ose_test.echo('d_resultat' ); + ose_test.echo(' .service_du = ' || d_resultat.service_du ); + ose_test.echo(' .solde = ' || d_resultat.solde ); + ose_test.echo(' .sous_service = ' || d_resultat.sous_service ); + ose_test.echo(' .heures_compl = ' || d_resultat.heures_compl ); + ose_test.echo(''); + END; - ) v ON ( - t.INTERVENANT_ID = v.INTERVENANT_ID + PROCEDURE DEBUG_RESULTAT_VH( VH_ID PLS_INTEGER ) IS + BEGIN + ose_test.echo('d_resultat.volume_horaire(' || VH_ID || ')' ); + ose_test.echo(' .service_fi = ' || d_resultat.volume_horaire(VH_ID).service_fi ); + ose_test.echo(' .service_fa = ' || d_resultat.volume_horaire(VH_ID).service_fa ); + ose_test.echo(' .service_fc = ' || d_resultat.volume_horaire(VH_ID).service_fc ); + ose_test.echo(' .heures_compl_fi = ' || d_resultat.volume_horaire(VH_ID).heures_compl_fi ); + ose_test.echo(' .heures_compl_fa = ' || d_resultat.volume_horaire(VH_ID).heures_compl_fa ); + ose_test.echo(' .heures_compl_fc = ' || d_resultat.volume_horaire(VH_ID).heures_compl_fc ); + ose_test.echo(' .heures_compl_fc_majorees = ' || d_resultat.volume_horaire(VH_ID).heures_compl_fc_majorees ); + ose_test.echo(''); + END; - ) WHEN MATCHED THEN UPDATE SET + PROCEDURE DEBUG_RESULTAT_VH_REF( VH_REF_ID PLS_INTEGER ) IS + BEGIN + ose_test.echo('d_resultat.volume_horaire_ref(' || VH_REF_ID || ')' ); + ose_test.echo(' .service_referentiel = ' || d_resultat.volume_horaire_ref(VH_REF_ID).service_referentiel ); + ose_test.echo(' .heures_compl_referentiel = ' || d_resultat.volume_horaire_ref(VH_REF_ID).heures_compl_referentiel ); + ose_test.echo(''); + END; - ANNEE_ID = v.ANNEE_ID, - PEUT_SAISIR_SERVICE = v.PEUT_SAISIR_SERVICE, - PEUT_SAISIR_REFERENTIEL = v.PEUT_SAISIR_REFERENTIEL, - HEURES_SERVICE_PREV = v.HEURES_SERVICE_PREV, - HEURES_REFERENTIEL_PREV = v.HEURES_REFERENTIEL_PREV, - HEURES_SERVICE_REAL = v.HEURES_SERVICE_REAL, - HEURES_REFERENTIEL_REAL = v.HEURES_REFERENTIEL_REAL, - to_delete = 0 + PROCEDURE DEBUG_ALL( INTERVENANT_ID NUMERIC, TYPE_VOLUME_HORAIRE_ID NUMERIC, ETAT_VOLUME_HORAIRE_ID NUMERIC ) IS + id PLS_INTEGER; + i intervenant%rowtype; + a annee%rowtype; + tvh type_volume_horaire%rowtype; + evh etat_volume_horaire%rowtype; + BEGIN + IF GET_DEBUG_LEVEL >= 1 THEN + SELECT * INTO i FROM intervenant WHERE id = INTERVENANT_ID; + SELECT * INTO a FROM annee WHERE id = i.annee_id; + SELECT * INTO tvh FROM type_volume_horaire WHERE id = TYPE_VOLUME_HORAIRE_ID; + SELECT * INTO evh FROM etat_volume_horaire WHERE id = ETAT_VOLUME_HORAIRE_ID; - WHEN NOT MATCHED THEN INSERT ( + ose_test.echo(''); + ose_test.echo('---------------------------------------------------------------------'); + ose_test.echo('Intervenant: ' || INTERVENANT_ID || ' : ' || i.prenom || ' ' || i.nom_usuel || ' (n° harp. ' || i.source_code || ')' ); + ose_test.echo( + 'Année: ' || a.libelle + || ', type ' || tvh.libelle + || ', état ' || evh.libelle + ); + ose_test.echo(''); + END IF; + IF GET_DEBUG_LEVEL >= 2 THEN + DEBUG_INTERVENANT; + END IF; - ID, - ANNEE_ID, - INTERVENANT_ID, - PEUT_SAISIR_SERVICE, - PEUT_SAISIR_REFERENTIEL, - HEURES_SERVICE_PREV, - HEURES_REFERENTIEL_PREV, - HEURES_SERVICE_REAL, - HEURES_REFERENTIEL_REAL, - TO_DELETE + IF GET_DEBUG_LEVEL >= 5 THEN + id := d_service.FIRST; + LOOP EXIT WHEN id IS NULL; + DEBUG_SERVICE( id ); + id := d_service.NEXT(id); + END LOOP; - ) VALUES ( + id := d_service_ref.FIRST; + LOOP EXIT WHEN id IS NULL; + DEBUG_SERVICE_REF( id ); + id := d_service_ref.NEXT(id); + END LOOP; + END IF; - TBL_SERVICE_SAISIE_ID_SEQ.NEXTVAL, - v.ANNEE_ID, - v.INTERVENANT_ID, - v.PEUT_SAISIR_SERVICE, - v.PEUT_SAISIR_REFERENTIEL, - v.HEURES_SERVICE_PREV, - v.HEURES_REFERENTIEL_PREV, - v.HEURES_SERVICE_REAL, - v.HEURES_REFERENTIEL_REAL, - 0 + IF GET_DEBUG_LEVEL >= 6 THEN + id := d_volume_horaire.FIRST; + LOOP EXIT WHEN id IS NULL; + DEBUG_VOLUME_HORAIRE( id ); + id := d_volume_horaire.NEXT(id); + END LOOP; - ); + id := d_volume_horaire_ref.FIRST; + LOOP EXIT WHEN id IS NULL; + DEBUG_VOLUME_HORAIRE_REF( id ); + id := d_volume_horaire_ref.NEXT(id); + END LOOP; + END IF; - DELETE TBL_SERVICE_SAISIE WHERE to_delete = 1 AND ' || conds || '; + IF GET_DEBUG_LEVEL >= 3 THEN + DEBUG_RESULTAT; + END IF; - END;'; + IF GET_DEBUG_LEVEL >= 4 THEN + id := d_resultat.volume_horaire.FIRST; + LOOP EXIT WHEN id IS NULL; + DEBUG_RESULTAT_VH( id ); + id := d_resultat.volume_horaire.NEXT(id); + END LOOP; + id := d_resultat.volume_horaire_ref.FIRST; + LOOP EXIT WHEN id IS NULL; + DEBUG_RESULTAT_VH_REF( id ); + id := d_resultat.volume_horaire_ref.NEXT(id); + END LOOP; + END IF; END; - PROCEDURE C_VALIDATION_ENSEIGNEMENT( PARAMS UNICAEN_TBL.T_PARAMS ) IS - conds CLOB; + PROCEDURE CALCULER( INTERVENANT_ID NUMERIC ) IS + id PLS_INTEGER; + found BOOLEAN; + function_name VARCHAR2(30); + package_name VARCHAR2(30); BEGIN - conds := params_to_conds( params ); - - EXECUTE IMMEDIATE 'BEGIN - - UPDATE TBL_VALIDATION_ENSEIGNEMENT SET to_delete = 1 WHERE ' || conds || '; + package_name := OSE_PARAMETRE.GET_FORMULE_PACKAGE_NAME; + function_name := OSE_PARAMETRE.GET_FORMULE_FUNCTION_NAME; - MERGE INTO - TBL_VALIDATION_ENSEIGNEMENT t - USING ( + -- détection de suppression des lignes de résultat obsolètes + UPDATE formule_resultat SET TO_DELETE = 1 WHERE intervenant_id = CALCULER.INTERVENANT_ID; + UPDATE FORMULE_RESULTAT_SERVICE_REF SET TO_DELETE = 1 WHERE formule_resultat_id IN (SELECT id FROM formule_resultat WHERE intervenant_id = CALCULER.INTERVENANT_ID); + UPDATE FORMULE_RESULTAT_SERVICE SET TO_DELETE = 1 WHERE formule_resultat_id IN (SELECT id FROM formule_resultat WHERE intervenant_id = CALCULER.INTERVENANT_ID); + UPDATE FORMULE_RESULTAT_VH_REF SET TO_DELETE = 1 WHERE formule_resultat_id IN (SELECT id FROM formule_resultat WHERE intervenant_id = CALCULER.INTERVENANT_ID); + UPDATE FORMULE_RESULTAT_VH SET TO_DELETE = 1 WHERE formule_resultat_id IN (SELECT id FROM formule_resultat WHERE intervenant_id = CALCULER.INTERVENANT_ID); - SELECT - tv.* - FROM - (SELECT DISTINCT - i.annee_id, - i.id intervenant_id, - CASE WHEN rsv.priorite = ''affectation'' THEN - COALESCE( i.structure_id, ep.structure_id ) - ELSE - COALESCE( ep.structure_id, i.structure_id ) - END structure_id, - vh.type_volume_horaire_id, - s.id service_id, - vh.id volume_horaire_id, - v.id validation_id - FROM - service s - JOIN volume_horaire vh ON vh.service_id = s.id AND vh.histo_destruction IS NULL - JOIN intervenant i ON i.id = s.intervenant_id AND i.histo_destruction IS NULL - JOIN statut_intervenant si ON si.id = i.statut_id - JOIN regle_structure_validation rsv ON rsv.type_intervenant_id = si.type_intervenant_id AND rsv.type_volume_horaire_id = vh.type_volume_horaire_id - LEFT JOIN element_pedagogique ep ON ep.id = s.element_pedagogique_id - LEFT JOIN validation_vol_horaire vvh ON vvh.volume_horaire_id = vh.id - LEFT JOIN validation v ON v.id = vvh.validation_id AND v.histo_destruction IS NULL - WHERE - s.histo_destruction IS NULL) tv - WHERE - ' || conds || ' + POPULATE( INTERVENANT_ID ); + IF d_intervenant.heures_service_statutaire IS NOT NULL THEN -- sinon rien n'est à faire!! + -- lancement du calcul sur les nouvelles lignes ou sur les lignes existantes + id := d_type_etat_vh.FIRST; + LOOP EXIT WHEN id IS NULL; + POPULATE_FILTER( d_type_etat_vh(id).type_volume_horaire_id, d_type_etat_vh(id).etat_volume_horaire_id ); + DEBUG_ALL( INTERVENANT_ID, d_type_etat_vh(id).type_volume_horaire_id, d_type_etat_vh(id).etat_volume_horaire_id ); + OSE_FORMULE.INIT_RESULTAT( INTERVENANT_ID, d_type_etat_vh(id).type_volume_horaire_id, d_type_etat_vh(id).etat_volume_horaire_id ); + OSE_FORMULE.CALC_RESULTAT; + OSE_FORMULE.SAVE_RESULTAT; + id := d_type_etat_vh.NEXT(id); + END LOOP; + END IF; - ) v ON ( - t.INTERVENANT_ID = v.INTERVENANT_ID - AND t.STRUCTURE_ID = v.STRUCTURE_ID - AND t.TYPE_VOLUME_HORAIRE_ID = v.TYPE_VOLUME_HORAIRE_ID - AND t.SERVICE_ID = v.SERVICE_ID - AND COALESCE(t.VALIDATION_ID,0) = COALESCE(v.VALIDATION_ID,0) - AND t.VOLUME_HORAIRE_ID = v.VOLUME_HORAIRE_ID + -- suppression des données devenues obsolètes + OSE_EVENT.ON_BEFORE_FORMULE_RES_DELETE( CALCULER.INTERVENANT_ID ); - ) WHEN MATCHED THEN UPDATE SET + UPDATE FORMULE_RESULTAT_SERVICE SET + to_delete = 0, + service_fi = 0, + service_fa = 0, + service_fc = 0, + heures_compl_fi = 0, + heures_compl_fa = 0, + heures_compl_fc = 0, + heures_compl_fc_majorees = 0, + total = 0 + WHERE + TO_DELETE = 1 + AND 0 < (SELECT COUNT(*) FROM mise_en_paiement mep WHERE mep.formule_res_service_id = FORMULE_RESULTAT_SERVICE.id) + AND formule_resultat_id IN (SELECT id FROM formule_resultat WHERE intervenant_id = CALCULER.INTERVENANT_ID); - ANNEE_ID = v.ANNEE_ID, - to_delete = 0 + DELETE FROM FORMULE_RESULTAT_SERVICE_REF WHERE TO_DELETE = 1 AND formule_resultat_id IN (SELECT id FROM formule_resultat WHERE intervenant_id = CALCULER.INTERVENANT_ID); + DELETE FROM FORMULE_RESULTAT_SERVICE WHERE TO_DELETE = 1 AND formule_resultat_id IN (SELECT id FROM formule_resultat WHERE intervenant_id = CALCULER.INTERVENANT_ID); + DELETE FROM FORMULE_RESULTAT_VH_REF WHERE TO_DELETE = 1 AND formule_resultat_id IN (SELECT id FROM formule_resultat WHERE intervenant_id = CALCULER.INTERVENANT_ID); + DELETE FROM FORMULE_RESULTAT_VH WHERE TO_DELETE = 1 AND formule_resultat_id IN (SELECT id FROM formule_resultat WHERE intervenant_id = CALCULER.INTERVENANT_ID); + DELETE FROM FORMULE_RESULTAT WHERE TO_DELETE = 1 AND intervenant_id = CALCULER.INTERVENANT_ID; - WHEN NOT MATCHED THEN INSERT ( + OSE_EVENT.ON_AFTER_FORMULE_CALC( CALCULER.INTERVENANT_ID ); + END; - ID, - ANNEE_ID, - INTERVENANT_ID, - STRUCTURE_ID, - TYPE_VOLUME_HORAIRE_ID, - SERVICE_ID, - VALIDATION_ID, - VOLUME_HORAIRE_ID, - TO_DELETE - ) VALUES ( - TBL_VALIDATION_ENSEIGNE_ID_SEQ.NEXTVAL, - v.ANNEE_ID, - v.INTERVENANT_ID, - v.STRUCTURE_ID, - v.TYPE_VOLUME_HORAIRE_ID, - v.SERVICE_ID, - v.VALIDATION_ID, - v.VOLUME_HORAIRE_ID, - 0 + PROCEDURE CALCULER_TBL( PARAMS UNICAEN_TBL.T_PARAMS ) IS + intervenant_id NUMERIC; + TYPE r_cursor IS REF CURSOR; + diff_cur r_cursor; + BEGIN + OPEN diff_cur FOR 'WITH interv AS (SELECT id intervenant_id, intervenant.* FROM intervenant) + SELECT intervenant_id FROM interv WHERE ' || unicaen_tbl.PARAMS_TO_CONDS( params ); + LOOP + FETCH diff_cur INTO intervenant_id; EXIT WHEN diff_cur%NOTFOUND; + BEGIN + CALCULER( intervenant_id ); + END; + END LOOP; + CLOSE diff_cur; + END; - ); - DELETE TBL_VALIDATION_ENSEIGNEMENT WHERE to_delete = 1 AND ' || conds || '; - END;'; + FUNCTION GET_INTERVENANT RETURN NUMERIC IS + BEGIN + RETURN OSE_FORMULE.INTERVENANT_ID; + END; + PROCEDURE SET_INTERVENANT( INTERVENANT_ID NUMERIC DEFAULT NULL) IS + BEGIN + IF SET_INTERVENANT.INTERVENANT_ID = -1 THEN + OSE_FORMULE.INTERVENANT_ID := NULL; + ELSE + OSE_FORMULE.INTERVENANT_ID := SET_INTERVENANT.INTERVENANT_ID; + END IF; END; + FUNCTION MATCH_INTERVENANT(INTERVENANT_ID NUMERIC DEFAULT NULL) RETURN NUMERIC IS + BEGIN + IF OSE_FORMULE.INTERVENANT_ID IS NULL OR OSE_FORMULE.INTERVENANT_ID = MATCH_INTERVENANT.INTERVENANT_ID THEN + RETURN 1; + ELSE + RETURN 0; + END IF; + END; +END OSE_FORMULE; +/ +-- OSE_HISTO +CREATE OR REPLACE PACKAGE BODY "OSE_HISTO" AS - PROCEDURE C_VALIDATION_REFERENTIEL( PARAMS UNICAEN_TBL.T_PARAMS ) IS - conds CLOB; + FUNCTION FILTRE( histo_debut NUMERIC, histo_fin NUMERIC ) RETURN NUMERIC IS BEGIN - conds := params_to_conds( params ); + RETURN 1; + END; - EXECUTE IMMEDIATE 'BEGIN +END OSE_HISTO; +/ - UPDATE TBL_VALIDATION_REFERENTIEL SET to_delete = 1 WHERE ' || conds || '; +-- OSE_PAIEMENT +CREATE OR REPLACE PACKAGE BODY "OSE_PAIEMENT" AS - MERGE INTO - TBL_VALIDATION_REFERENTIEL t - USING ( + PROCEDURE CHECK_BAD_PAIEMENTS( FORMULE_RES_SERVICE_ID NUMERIC DEFAULT NULL, FORMULE_RES_SERVICE_REF_ID NUMERIC DEFAULT NULL ) IS + cc NUMERIC; + BEGIN + SELECT count(*) INTO cc + FROM mise_en_paiement mep + WHERE + mep.histo_destruction IS NULL + AND mep.formule_res_service_id = NVL( CHECK_BAD_PAIEMENTS.FORMULE_RES_SERVICE_ID, mep.formule_res_service_id ) + AND mep.formule_res_service_ref_id = NVL( CHECK_BAD_PAIEMENTS.FORMULE_RES_SERVICE_REF_ID, mep.formule_res_service_ref_id ) + ; - SELECT - tv.* - FROM - (SELECT DISTINCT - i.annee_id, - i.id intervenant_id, - CASE WHEN rsv.priorite = ''affectation'' THEN - COALESCE( i.structure_id, s.structure_id ) - ELSE - COALESCE( s.structure_id, i.structure_id ) - END structure_id, - vh.type_volume_horaire_id, - s.id service_referentiel_id, - vh.id volume_horaire_ref_id, - v.id validation_id - FROM - service_referentiel s - JOIN volume_horaire_ref vh ON vh.service_referentiel_id = s.id AND vh.histo_destruction IS NULL - JOIN intervenant i ON i.id = s.intervenant_id AND i.histo_destruction IS NULL - JOIN statut_intervenant si ON si.id = i.statut_id - JOIN regle_structure_validation rsv ON rsv.type_intervenant_id = si.type_intervenant_id AND rsv.type_volume_horaire_id = vh.type_volume_horaire_id - LEFT JOIN validation_vol_horaire_ref vvh ON vvh.volume_horaire_ref_id = vh.id - LEFT JOIN validation v ON v.id = vvh.validation_id AND v.histo_destruction IS NULL - WHERE - s.histo_destruction IS NULL) tv - WHERE - ' || conds || ' + IF (cc > 0) THEN + raise_application_error(-20101, 'Il est impossible d''effectuer cette action : des demandes de mise en paiement ont été saisies et ne peuvent pas être modifiées'); + ELSE + DELETE FROM mise_en_paiement WHERE + histo_destruction IS NOT NULL + AND formule_res_service_id = NVL( CHECK_BAD_PAIEMENTS.FORMULE_RES_SERVICE_ID, formule_res_service_id ) + AND formule_res_service_ref_id = NVL( CHECK_BAD_PAIEMENTS.FORMULE_RES_SERVICE_REF_ID, formule_res_service_ref_id ) + ; + END IF; + END; - ) v ON ( - t.INTERVENANT_ID = v.INTERVENANT_ID - AND t.STRUCTURE_ID = v.STRUCTURE_ID - AND t.TYPE_VOLUME_HORAIRE_ID = v.TYPE_VOLUME_HORAIRE_ID - AND t.SERVICE_REFERENTIEL_ID = v.SERVICE_REFERENTIEL_ID - AND COALESCE(t.VALIDATION_ID,0) = COALESCE(v.VALIDATION_ID,0) - AND t.VOLUME_HORAIRE_REF_ID = v.VOLUME_HORAIRE_REF_ID +END OSE_PAIEMENT; +/ - ) WHEN MATCHED THEN UPDATE SET +-- OSE_PARAMETRE +CREATE OR REPLACE PACKAGE BODY "OSE_PARAMETRE" AS - ANNEE_ID = v.ANNEE_ID, - to_delete = 0 + cache_ose_user NUMERIC; + cache_annee_id NUMERIC; - WHEN NOT MATCHED THEN INSERT ( + function get_etablissement return Numeric AS + etab_id numeric; + BEGIN + select to_number(valeur) into etab_id from parametre where nom = 'etablissement'; + RETURN etab_id; + END get_etablissement; - ID, - ANNEE_ID, - INTERVENANT_ID, - STRUCTURE_ID, - TYPE_VOLUME_HORAIRE_ID, - SERVICE_REFERENTIEL_ID, - VALIDATION_ID, - VOLUME_HORAIRE_REF_ID, - TO_DELETE + function get_annee return Numeric AS + annee_id numeric; + BEGIN + IF cache_annee_id IS NOT NULL THEN RETURN cache_annee_id; END IF; + select to_number(valeur) into annee_id from parametre where nom = 'annee'; + cache_annee_id := annee_id; + RETURN cache_annee_id; + END get_annee; - ) VALUES ( + FUNCTION get_annee_import RETURN NUMERIC AS + annee_id NUMERIC; + BEGIN + SELECT to_number(valeur) INTO annee_id FROM parametre WHERE nom = 'annee_import'; + RETURN annee_id; + END get_annee_import; - TBL_VALIDATION_REFERENT_ID_SEQ.NEXTVAL, - v.ANNEE_ID, - v.INTERVENANT_ID, - v.STRUCTURE_ID, - v.TYPE_VOLUME_HORAIRE_ID, - v.SERVICE_REFERENTIEL_ID, - v.VALIDATION_ID, - v.VOLUME_HORAIRE_REF_ID, - 0 + function get_ose_user return Numeric AS + ose_user_id numeric; + BEGIN + IF cache_ose_user IS NOT NULL THEN RETURN cache_ose_user; END IF; + select to_number(valeur) into ose_user_id from parametre where nom = 'oseuser'; + cache_ose_user := ose_user_id; + RETURN cache_ose_user; + END get_ose_user; - ); + function get_drh_structure_id return Numeric AS + drh_structure_id numeric; + BEGIN + select to_number(valeur) into drh_structure_id from parametre where nom = 'drh_structure_id'; + RETURN drh_structure_id; + END get_drh_structure_id; - DELETE TBL_VALIDATION_REFERENTIEL WHERE to_delete = 1 AND ' || conds || '; + FUNCTION get_date_fin_saisie_permanents RETURN DATE IS + date_fin_saisie_permanents date; + BEGIN + select TO_DATE(valeur, 'dd/mm/yyyy') into date_fin_saisie_permanents from parametre where nom = 'date_fin_saisie_permanents'; + RETURN date_fin_saisie_permanents; + END; - END;'; + FUNCTION get_ddeb_saisie_serv_real RETURN DATE IS + val date; + BEGIN + select TO_DATE(valeur, 'dd/mm/yyyy') into val from parametre where nom = 'date_debut_saisie_services_realises'; + RETURN val; + END; + FUNCTION get_dfin_saisie_serv_real RETURN DATE IS + val date; + BEGIN + select TO_DATE(valeur, 'dd/mm/yyyy') into val from parametre where nom = 'date_fin_saisie_services_realises'; + RETURN val; END; - -- END OF AUTOMATIC GENERATION -- + FUNCTION get_formule_package_name RETURN VARCHAR2 IS + formule_package_name VARCHAR2(30); + BEGIN + SELECT valeur INTO formule_package_name FROM parametre WHERE nom = 'formule_package_name'; + RETURN formule_package_name; + END; -END UNICAEN_TBL; + FUNCTION get_formule_function_name RETURN VARCHAR2 IS + formule_function_name VARCHAR2(30); + BEGIN + SELECT valeur INTO formule_function_name FROM parametre WHERE nom = 'formule_function_name'; + RETURN formule_function_name; + END; + +END OSE_PARAMETRE; / --------------------------------------------------- --- Clés étrangères --------------------------------------------------- +-- OSE_TEST +CREATE OR REPLACE PACKAGE BODY "OSE_TEST" AS + TYPE OUT_LIST IS TABLE OF CLOB; + HTS TIMESTAMP; + + SUCCES_SHOWN BOOLEAN DEFAULT TRUE; + T_SUCCES_COUNT NUMERIC DEFAULT 0; + T_ECHECS_COUNT NUMERIC DEFAULT 0; + A_SUCCES_COUNT NUMERIC DEFAULT 0; + A_ECHECS_COUNT NUMERIC DEFAULT 0; + CURRENT_TEST CLOB; + CURRENT_TEST_OUTPUT_BUFFER OUT_LIST := OUT_LIST(); + CURRENT_TEST_OUTPUT_BUFFER_ERR BOOLEAN; --- ADRESSE_INTERVENANT_HCFK -ALTER TABLE "ADRESSE_INTERVENANT" ADD CONSTRAINT "ADRESSE_INTERVENANT_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + PROCEDURE SHOW_SUCCES IS + BEGIN + SUCCES_SHOWN := true; + END SHOW_SUCCES; --- ADRESSE_INTERVENANT_HDFK -ALTER TABLE "ADRESSE_INTERVENANT" ADD CONSTRAINT "ADRESSE_INTERVENANT_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + PROCEDURE HIDE_SUCCES IS + BEGIN + SUCCES_SHOWN := false; + END HIDE_SUCCES; --- ADRESSE_INTERVENANT_HMFK -ALTER TABLE "ADRESSE_INTERVENANT" ADD CONSTRAINT "ADRESSE_INTERVENANT_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + PROCEDURE DEBUT( TEST_NAME CLOB ) IS + BEGIN + CURRENT_TEST := TEST_NAME; + CURRENT_TEST_OUTPUT_BUFFER_ERR := FALSE; + echo (' '); echo('TEST ' || TEST_NAME || ' >>>>>>>>>>' ); + END; --- ADRESSE_INTERVENANT_SOURCE_FK -ALTER TABLE "ADRESSE_INTERVENANT" ADD CONSTRAINT "ADRESSE_INTERVENANT_SOURCE_FK" FOREIGN KEY ("SOURCE_ID") - REFERENCES "SOURCE" ("ID") ON DELETE CASCADE ENABLE; + PROCEDURE FIN IS + TEST_NAME CLOB; + BEGIN + IF CURRENT_TEST_OUTPUT_BUFFER_ERR THEN + T_ECHECS_COUNT := T_ECHECS_COUNT + 1; + echo('>>>>>>>>>> FIN DU TEST ' || CURRENT_TEST ); echo (' '); + CURRENT_TEST := NULL; --- ADRESSE_STRUCTURE_HCFK -ALTER TABLE "ADRESSE_STRUCTURE" ADD CONSTRAINT "ADRESSE_STRUCTURE_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + FOR i IN 1 .. CURRENT_TEST_OUTPUT_BUFFER.COUNT LOOP + echo( CURRENT_TEST_OUTPUT_BUFFER(i) ); + END LOOP; + ELSE + T_SUCCES_COUNT := T_SUCCES_COUNT + 1; + TEST_NAME := CURRENT_TEST; + CURRENT_TEST := NULL; + echo('SUCCÈS DU TEST : ' || TEST_NAME ); + END IF; + CURRENT_TEST_OUTPUT_BUFFER.DELETE; -- clear buffer + END; --- ADRESSE_STRUCTURE_HDFK -ALTER TABLE "ADRESSE_STRUCTURE" ADD CONSTRAINT "ADRESSE_STRUCTURE_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + PROCEDURE ECHO( MSG CLOB ) IS + BEGIN + IF CURRENT_TEST IS NULL THEN + dbms_output.put_line(MSG); + ELSE + CURRENT_TEST_OUTPUT_BUFFER.EXTEND; + CURRENT_TEST_OUTPUT_BUFFER (CURRENT_TEST_OUTPUT_BUFFER.LAST) := MSG; + END IF; + END; --- ADRESSE_STRUCTURE_HMFK -ALTER TABLE "ADRESSE_STRUCTURE" ADD CONSTRAINT "ADRESSE_STRUCTURE_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + PROCEDURE INIT IS + BEGIN + T_SUCCES_COUNT := 0; + T_ECHECS_COUNT := 0; + A_SUCCES_COUNT := 0; + A_ECHECS_COUNT := 0; + CURRENT_TEST := NULL; + END INIT; --- ADRESSE_STRUCTURE_SOURCE_FK -ALTER TABLE "ADRESSE_STRUCTURE" ADD CONSTRAINT "ADRESSE_STRUCTURE_SOURCE_FK" FOREIGN KEY ("SOURCE_ID") - REFERENCES "SOURCE" ("ID") ON DELETE CASCADE ENABLE; + PROCEDURE SHOW_STATS IS + BEGIN + echo ( ' ' ); + echo ( '********************************* STATISTIQUES *********************************' ); + echo ( ' ' ); + echo ( ' - nombre de tests passés avec succès : ' || T_SUCCES_COUNT ); + echo ( ' - nombre de tests ayant échoué : ' || T_ECHECS_COUNT ); + echo ( ' ' ); + echo ( ' - nombre d''assertions passés avec succès : ' || A_SUCCES_COUNT ); + echo ( ' - nombre d''assertions ayant échoué : ' || A_ECHECS_COUNT ); + echo ( ' ' ); + echo ( '********************************************************************************' ); + echo ( ' ' ); + END; --- ADRESSE_STRUCTURE_STRUCTURE_FK -ALTER TABLE "ADRESSE_STRUCTURE" ADD CONSTRAINT "ADRESSE_STRUCTURE_STRUCTURE_FK" FOREIGN KEY ("STRUCTURE_ID") - REFERENCES "STRUCTURE" ("ID") ON DELETE CASCADE ENABLE; + PROCEDURE ASSERT( condition BOOLEAN, MSG CLOB ) IS + BEGIN + IF condition THEN + A_SUCCES_COUNT := A_SUCCES_COUNT + 1; + IF SUCCES_SHOWN THEN + ECHO(' SUCCÈS : ' || MSG ); + END IF; + ELSE + A_ECHECS_COUNT := A_ECHECS_COUNT + 1; + CURRENT_TEST_OUTPUT_BUFFER_ERR := TRUE; + ECHO(' ** ECHEC ** : ' || MSG ); + END IF; + END; --- AFFECTATION_HCFK -ALTER TABLE "AFFECTATION" ADD CONSTRAINT "AFFECTATION_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + PROCEDURE HOROINIT IS + BEGIN + HTS := systimestamp; + END; --- AFFECTATION_HDFK -ALTER TABLE "AFFECTATION" ADD CONSTRAINT "AFFECTATION_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + PROCEDURE HORODATAGE( msg VARCHAR2 ) IS + diff INTERVAL DAY(9) TO SECOND(3); + BEGIN + IF HTS IS NULL THEN + HTS := systimestamp; + RETURN; + END IF; --- AFFECTATION_HMFK -ALTER TABLE "AFFECTATION" ADD CONSTRAINT "AFFECTATION_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + diff := systimestamp - HTS; + HTS := systimestamp; --- AFFECTATION_ROLE_FK -ALTER TABLE "AFFECTATION" ADD CONSTRAINT "AFFECTATION_ROLE_FK" FOREIGN KEY ("ROLE_ID") - REFERENCES "ROLE" ("ID") ON DELETE CASCADE ENABLE; + echo(msg || ' (' || diff || ')'); + END; --- AFFECTATION_R_HCFK -ALTER TABLE "AFFECTATION_RECHERCHE" ADD CONSTRAINT "AFFECTATION_R_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + FUNCTION GET_STRUCTURE_BY_ID( id NUMERIC ) RETURN structure%rowtype IS + res structure%rowtype; + BEGIN + IF ID IS NULL THEN RETURN res; END IF; + SELECT * INTO res FROM structure WHERE id = GET_STRUCTURE_BY_ID.id; + RETURN res; + END; --- AFFECTATION_R_HDFK -ALTER TABLE "AFFECTATION_RECHERCHE" ADD CONSTRAINT "AFFECTATION_R_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; +END OSE_TEST; +/ --- AFFECTATION_R_HMFK -ALTER TABLE "AFFECTATION_RECHERCHE" ADD CONSTRAINT "AFFECTATION_R_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; +-- OSE_VALIDATION +CREATE OR REPLACE PACKAGE BODY "OSE_VALIDATION" AS --- AFFECTATION_R_INTERVENANT_FK -ALTER TABLE "AFFECTATION_RECHERCHE" ADD CONSTRAINT "AFFECTATION_R_INTERVENANT_FK" FOREIGN KEY ("INTERVENANT_ID") - REFERENCES "INTERVENANT" ("ID") ON DELETE CASCADE ENABLE; + FUNCTION can_devalider ( v validation%rowtype ) RETURN varchar2 IS + tv type_validation%rowtype; + nb NUMERIC; + result varchar2(500) default null; + BEGIN --- AFFECTATION_R_SOURCE_FK -ALTER TABLE "AFFECTATION_RECHERCHE" ADD CONSTRAINT "AFFECTATION_R_SOURCE_FK" FOREIGN KEY ("SOURCE_ID") - REFERENCES "SOURCE" ("ID") ON DELETE CASCADE ENABLE; + SELECT * INTO tv FROM type_validation WHERE id = v.type_validation_id; --- AFFECTATION_R_STRUCTURE_FK -ALTER TABLE "AFFECTATION_RECHERCHE" ADD CONSTRAINT "AFFECTATION_R_STRUCTURE_FK" FOREIGN KEY ("STRUCTURE_ID") - REFERENCES "STRUCTURE" ("ID") ENABLE; + IF tv.code = 'SERVICES_PAR_COMP' THEN --- AFFECTATION_SOURCE_FK -ALTER TABLE "AFFECTATION" ADD CONSTRAINT "AFFECTATION_SOURCE_FK" FOREIGN KEY ("SOURCE_ID") - REFERENCES "SOURCE" ("ID") ENABLE; + SELECT + SUM(CASE WHEN c.id IS NOT NULL THEN 1 ELSE 0 END) INTO nb + FROM + validation_vol_horaire vvh + JOIN volume_horaire vh ON vh.id = vvh.volume_horaire_id + LEFT JOIN contrat c ON c.id = vh.contrat_id AND c.histo_destruction IS NULL + WHERE + vvh.validation_id = v.id; --- AFFECTATION_STRUCTURE_FK -ALTER TABLE "AFFECTATION" ADD CONSTRAINT "AFFECTATION_STRUCTURE_FK" FOREIGN KEY ("STRUCTURE_ID") - REFERENCES "STRUCTURE" ("ID") ENABLE; + -- Si des volumes horaires ont déjà fait l'objet de contrats alors pas de dévalidation possible des heures + IF nb > 0 THEN + result := 'La dévalidation est impossible car des contrats ont déjà été édités sur la base de ces heures.'; + END IF; --- AFFECTATION_UTILISATEUR_FK -ALTER TABLE "AFFECTATION" ADD CONSTRAINT "AFFECTATION_UTILISATEUR_FK" FOREIGN KEY ("UTILISATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + END IF; --- AGREMENTS_STRUCTURES_FK -ALTER TABLE "AGREMENT" ADD CONSTRAINT "AGREMENTS_STRUCTURES_FK" FOREIGN KEY ("STRUCTURE_ID") - REFERENCES "STRUCTURE" ("ID") ENABLE; + IF tv.code = 'CLOTURE_REALISE' THEN --- AGREMENT_HCFK -ALTER TABLE "AGREMENT" ADD CONSTRAINT "AGREMENT_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + SELECT + COUNT(*) INTO nb + FROM + tbl_paiement p + WHERE + p.periode_paiement_id IS NOT NULL + AND p.intervenant_id = v.intervenant_id + AND ROWNUM = 1; --- AGREMENT_HDFK -ALTER TABLE "AGREMENT" ADD CONSTRAINT "AGREMENT_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + IF nb > 0 THEN + result := 'La suppression de la clôture des services réalisés est impossible car des heures ont été payées ou bien le paiement a été demandé.'; + END IF; --- AGREMENT_HMFK -ALTER TABLE "AGREMENT" ADD CONSTRAINT "AGREMENT_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + END IF; --- AGREMENT_INTERVENANT_FK -ALTER TABLE "AGREMENT" ADD CONSTRAINT "AGREMENT_INTERVENANT_FK" FOREIGN KEY ("INTERVENANT_ID") - REFERENCES "INTERVENANT" ("ID") ON DELETE CASCADE ENABLE; + RETURN result; + END; --- AGREMENT_TYPE_AGREMENT_FK -ALTER TABLE "AGREMENT" ADD CONSTRAINT "AGREMENT_TYPE_AGREMENT_FK" FOREIGN KEY ("TYPE_AGREMENT_ID") - REFERENCES "TYPE_AGREMENT" ("ID") ON DELETE CASCADE ENABLE; +END OSE_VALIDATION; +/ --- AII_FK -ALTER TABLE "ADRESSE_INTERVENANT" ADD CONSTRAINT "AII_FK" FOREIGN KEY ("INTERVENANT_ID") - REFERENCES "INTERVENANT" ("ID") ON DELETE CASCADE ENABLE; +-- OSE_WORKFLOW +CREATE OR REPLACE PACKAGE BODY "OSE_WORKFLOW" AS + INTERVENANT_ID NUMERIC DEFAULT NULL; --- CAMPAGNE_SAISIE_ANNEE_FK -ALTER TABLE "CAMPAGNE_SAISIE" ADD CONSTRAINT "CAMPAGNE_SAISIE_ANNEE_FK" FOREIGN KEY ("ANNEE_ID") - REFERENCES "ANNEE" ("ID") ENABLE; + TYPE t_workflow IS TABLE OF tbl_workflow%rowtype INDEX BY PLS_INTEGER; --- CCEP_CENTRE_COUT_FK -ALTER TABLE "CENTRE_COUT_EP" ADD CONSTRAINT "CCEP_CENTRE_COUT_FK" FOREIGN KEY ("CENTRE_COUT_ID") - REFERENCES "CENTRE_COUT" ("ID") ON DELETE CASCADE ENABLE; + TYPE t_dep IS TABLE OF wf_etape_dep%rowtype INDEX BY PLS_INTEGER; + TYPE t_deps IS TABLE OF t_dep INDEX BY PLS_INTEGER; + TYPE t_deps_bloquantes IS TABLE OF wf_dep_bloquante%rowtype INDEX BY PLS_INTEGER; --- CCEP_ELEMENT_PEDAGOGIQUE_FK -ALTER TABLE "CENTRE_COUT_EP" ADD CONSTRAINT "CCEP_ELEMENT_PEDAGOGIQUE_FK" FOREIGN KEY ("ELEMENT_PEDAGOGIQUE_ID") - REFERENCES "ELEMENT_PEDAGOGIQUE" ("ID") ON DELETE CASCADE ENABLE; + -- propre au calcul courant ! ! + etapes t_workflow; + deps t_deps; + deps_initialized boolean default false; + deps_bloquantes t_deps_bloquantes; + deps_bloquantes_index PLS_INTEGER DEFAULT 1; --- CCEP_SOURCE_FK -ALTER TABLE "CENTRE_COUT_EP" ADD CONSTRAINT "CCEP_SOURCE_FK" FOREIGN KEY ("SOURCE_ID") - REFERENCES "SOURCE" ("ID") ON DELETE CASCADE ENABLE; --- CCEP_TYPE_HEURES_FK -ALTER TABLE "CENTRE_COUT_EP" ADD CONSTRAINT "CCEP_TYPE_HEURES_FK" FOREIGN KEY ("TYPE_HEURES_ID") - REFERENCES "TYPE_HEURES" ("ID") ON DELETE CASCADE ENABLE; --- CCS_CENTRE_COUT_FK -ALTER TABLE "CENTRE_COUT_STRUCTURE" ADD CONSTRAINT "CCS_CENTRE_COUT_FK" FOREIGN KEY ("CENTRE_COUT_ID") - REFERENCES "CENTRE_COUT" ("ID") ON DELETE CASCADE ENABLE; --- CCS_SOURCE_FK -ALTER TABLE "CENTRE_COUT_STRUCTURE" ADD CONSTRAINT "CCS_SOURCE_FK" FOREIGN KEY ("SOURCE_ID") - REFERENCES "SOURCE" ("ID") ENABLE; + FUNCTION ETAPE_FRANCHIE( etape tbl_workflow%rowtype, need_done boolean default false ) RETURN FLOAT IS + res FLOAT DEFAULT 0; + BEGIN + IF etape.objectif = 0 THEN + IF need_done THEN RETURN 0; ELSE RETURN 1; END IF; + END IF; --- CCS_STRUCTURE_FK -ALTER TABLE "CENTRE_COUT_STRUCTURE" ADD CONSTRAINT "CCS_STRUCTURE_FK" FOREIGN KEY ("STRUCTURE_ID") - REFERENCES "STRUCTURE" ("ID") ON DELETE CASCADE ENABLE; + IF etape.atteignable = 0 THEN RETURN 0; END IF; --- CC_ACTIVITE_HCFK -ALTER TABLE "CC_ACTIVITE" ADD CONSTRAINT "CC_ACTIVITE_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + IF etape.objectif > 0 THEN + res := etape.realisation / etape.objectif; + END IF; --- CC_ACTIVITE_HDFK -ALTER TABLE "CC_ACTIVITE" ADD CONSTRAINT "CC_ACTIVITE_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + IF res > 1 THEN + res := 1; + END IF; --- CC_ACTIVITE_HMFK -ALTER TABLE "CC_ACTIVITE" ADD CONSTRAINT "CC_ACTIVITE_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + RETURN res; + END; --- CENTRE_COUT_ACTIVITE_FK -ALTER TABLE "CENTRE_COUT" ADD CONSTRAINT "CENTRE_COUT_ACTIVITE_FK" FOREIGN KEY ("ACTIVITE_ID") - REFERENCES "CC_ACTIVITE" ("ID") ON DELETE CASCADE ENABLE; --- CENTRE_COUT_CENTRE_COUT_FK -ALTER TABLE "CENTRE_COUT" ADD CONSTRAINT "CENTRE_COUT_CENTRE_COUT_FK" FOREIGN KEY ("PARENT_ID") - REFERENCES "CENTRE_COUT" ("ID") ON DELETE CASCADE ENABLE; --- CENTRE_COUT_EP_HCFK -ALTER TABLE "CENTRE_COUT_EP" ADD CONSTRAINT "CENTRE_COUT_EP_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + PROCEDURE POPULATE_ETAPES( INTERVENANT_ID NUMERIC ) IS + i NUMERIC DEFAULT 0; + BEGIN + etapes.delete; -- initialisation --- CENTRE_COUT_EP_HDFK -ALTER TABLE "CENTRE_COUT_EP" ADD CONSTRAINT "CENTRE_COUT_EP_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + FOR wie IN ( + SELECT + wep.annee_id annee_id, + e.id etape_id, + w.structure_id structure_id, + ROUND(COALESCE(w.objectif,0),2) objectif, + CASE WHEN w.intervenant_id IS NULL THEN 0 ELSE 1 END atteignable, + ROUND(COALESCE(w.realisation,0),2) realisation, + wep.etape_code etape_code, + si.id statut_intervenant_id, + ti.id type_intervenant_id, + ti.code type_intervenant_code + FROM + v_workflow_etape_pertinente wep + JOIN wf_etape e ON e.code = wep.etape_code + JOIN intervenant i ON i.id = wep.intervenant_id + JOIN statut_intervenant si ON si.id = i.statut_id + JOIN type_intervenant ti ON ti.id = si.type_intervenant_id + LEFT JOIN v_tbl_workflow w ON w.intervenant_id = wep.intervenant_id AND w.etape_code = wep.etape_code + WHERE + wep.intervenant_id = POPULATE_ETAPES.INTERVENANT_ID + AND (e.obligatoire = 1 OR w.intervenant_id IS NOT NULL) + ORDER BY + e.ordre + ) LOOP + etapes( i ).annee_id := wie.annee_id; + etapes( i ).intervenant_id := intervenant_id; + etapes( i ).etape_id := wie.etape_id; + etapes( i ).structure_id := wie.structure_id; + etapes( i ).atteignable := wie.atteignable; + etapes( i ).objectif := wie.objectif; + etapes( i ).realisation := wie.realisation; + etapes( i ).etape_code := wie.etape_code; + etapes( i ).statut_intervenant_id := wie.statut_intervenant_id; + etapes( i ).type_intervenant_id := wie.type_intervenant_id; + etapes( i ).type_intervenant_code := wie.type_intervenant_code; + i := i + 1; + END LOOP; + END; --- CENTRE_COUT_EP_HMFK -ALTER TABLE "CENTRE_COUT_EP" ADD CONSTRAINT "CENTRE_COUT_EP_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; --- CENTRE_COUT_HCFK -ALTER TABLE "CENTRE_COUT" ADD CONSTRAINT "CENTRE_COUT_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; --- CENTRE_COUT_HDFK -ALTER TABLE "CENTRE_COUT" ADD CONSTRAINT "CENTRE_COUT_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + -- peuple l'arbre des dépendances entre étapes de workflow + PROCEDURE POPULATE_DEPS( INTERVENANT_ID NUMERIC ) IS + s PLS_INTEGER; -- index de l'étape suivante + p PLS_INTEGER; -- index de l'étape précédente + BEGIN + IF deps_initialized THEN RETURN; END IF; --- CENTRE_COUT_HMFK -ALTER TABLE "CENTRE_COUT" ADD CONSTRAINT "CENTRE_COUT_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + FOR d IN ( + SELECT + wed.* + FROM + wf_etape_dep wed + JOIN intervenant i ON i.id = POPULATE_DEPS.INTERVENANT_ID + JOIN statut_intervenant si ON si.id = i.statut_id + WHERE + active = 1 + AND wed.type_intervenant_id IS NULL OR wed.type_intervenant_id = si.type_intervenant_id + ) LOOP + deps(d.etape_suiv_id)(d.etape_prec_id) := d; + END LOOP; --- CENTRE_COUT_SOURCE_FK -ALTER TABLE "CENTRE_COUT" ADD CONSTRAINT "CENTRE_COUT_SOURCE_FK" FOREIGN KEY ("SOURCE_ID") - REFERENCES "SOURCE" ("ID") ON DELETE CASCADE ENABLE; + deps_initialized := true; + END; --- CENTRE_COUT_STRUCTURE_HCFK -ALTER TABLE "CENTRE_COUT_STRUCTURE" ADD CONSTRAINT "CENTRE_COUT_STRUCTURE_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; --- CENTRE_COUT_STRUCTURE_HDFK -ALTER TABLE "CENTRE_COUT_STRUCTURE" ADD CONSTRAINT "CENTRE_COUT_STRUCTURE_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; --- CENTRE_COUT_STRUCTURE_HMFK -ALTER TABLE "CENTRE_COUT_STRUCTURE" ADD CONSTRAINT "CENTRE_COUT_STRUCTURE_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + PROCEDURE ADD_DEP_BLOQUANTE( wf_etape_dep_id NUMERIC, tbl_workflow_id NUMERIC ) IS + BEGIN + deps_bloquantes_index := deps_bloquantes_index + 1; + deps_bloquantes(deps_bloquantes_index).wf_etape_dep_id := wf_etape_dep_id; + deps_bloquantes(deps_bloquantes_index).tbl_workflow_id := tbl_workflow_id; + END; --- CENTRE_COUT_TYPE_RESSOURCE_FK -ALTER TABLE "CENTRE_COUT" ADD CONSTRAINT "CENTRE_COUT_TYPE_RESSOURCE_FK" FOREIGN KEY ("TYPE_RESSOURCE_ID") - REFERENCES "TYPE_RESSOURCE" ("ID") ON DELETE CASCADE ENABLE; --- CHEMIN_PEDAGOGIQUE_ETAPE_FK -ALTER TABLE "CHEMIN_PEDAGOGIQUE" ADD CONSTRAINT "CHEMIN_PEDAGOGIQUE_ETAPE_FK" FOREIGN KEY ("ETAPE_ID") - REFERENCES "ETAPE" ("ID") ON DELETE CASCADE ENABLE; --- CHEMIN_PEDAGOGIQUE_HCFK -ALTER TABLE "CHEMIN_PEDAGOGIQUE" ADD CONSTRAINT "CHEMIN_PEDAGOGIQUE_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + PROCEDURE CALCUL_ATTEIGNABLE( s PLS_INTEGER, d wf_etape_dep%rowtype ) IS + count_tested PLS_INTEGER DEFAULT 0; + count_na PLS_INTEGER DEFAULT 0; + p PLS_INTEGER; -- index de l'étape précédente + BEGIN --- CHEMIN_PEDAGOGIQUE_HDFK -ALTER TABLE "CHEMIN_PEDAGOGIQUE" ADD CONSTRAINT "CHEMIN_PEDAGOGIQUE_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + p := etapes.FIRST; + LOOP EXIT WHEN p IS NULL; + IF etapes(p).etape_id = d.etape_prec_id THEN + -- on restreint en fonction du périmètre visé : + -- - si la dépendance n'est pas locale alors on teste + -- - si les structures aussi bien de l'étape testée que de l'étape dépendante sont nulles alors on teste aussi car elles sont "universelles" + -- - si les structures sont équivalentes alors on teste, sinon elles ne sont pas dans le périmètre local + IF + (d.locale = 0) + OR etapes(s).structure_id IS NULL + OR etapes(p).structure_id IS NULL + OR etapes(s).structure_id = etapes(p).structure_id + THEN + count_tested := count_tested + 1; --- CHEMIN_PEDAGOGIQUE_HMFK -ALTER TABLE "CHEMIN_PEDAGOGIQUE" ADD CONSTRAINT "CHEMIN_PEDAGOGIQUE_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + -- on teste le type de franchissement désiré et si ce n'est pas bon alors on déclare l'étape courante non atteignable --- CHEMIN_PEDAGOGIQUE_SOURCE_FK -ALTER TABLE "CHEMIN_PEDAGOGIQUE" ADD CONSTRAINT "CHEMIN_PEDAGOGIQUE_SOURCE_FK" FOREIGN KEY ("SOURCE_ID") - REFERENCES "SOURCE" ("ID") ON DELETE CASCADE ENABLE; + -- - idem si on a besoin d'une dépendance partiellement franchie est qu'elle ne l'est pas + IF d.partielle = 1 THEN + IF ETAPE_FRANCHIE(etapes(p), d.obligatoire=1) = 0 THEN -- si le franchissement est totalement inexistant + count_na := count_na + 1; + END IF; + -- - si on a besoin d'une dépendance complètement franchie est qu'elle ne l'est pas alors ce n'est pas atteignable + ELSE + IF ETAPE_FRANCHIE(etapes(p), d.obligatoire=1) < 1 THEN + count_na := count_na + 1; + END IF; + END IF; + END IF; --- CONTRAT_CONTRAT_FK -ALTER TABLE "CONTRAT" ADD CONSTRAINT "CONTRAT_CONTRAT_FK" FOREIGN KEY ("CONTRAT_ID") - REFERENCES "CONTRAT" ("ID") ON DELETE CASCADE ENABLE; + END IF; + p := etapes.next(p); + END LOOP; --- CONTRAT_FICHIER_FFK -ALTER TABLE "CONTRAT_FICHIER" ADD CONSTRAINT "CONTRAT_FICHIER_FFK" FOREIGN KEY ("FICHIER_ID") - REFERENCES "FICHIER" ("ID") ON DELETE CASCADE ENABLE; + -- on applique le résultat uniquement si des étapes dépendantes ont été trouvées + IF count_tested > 0 THEN --- CONTRAT_FICHIER_cFK -ALTER TABLE "CONTRAT_FICHIER" ADD CONSTRAINT "CONTRAT_FICHIER_cFK" FOREIGN KEY ("CONTRAT_ID") - REFERENCES "CONTRAT" ("ID") ON DELETE CASCADE ENABLE; + -- si les étapes dépendantes ont été intégralement franchies + IF d.integrale = 1 THEN + -- si l'intégralité des étapes est atteignable = NON si au moins une ne l'est pas + IF count_na > 0 THEN + etapes(s).atteignable := 0; + ADD_DEP_BLOQUANTE( d.id, s ); + END IF; --- CONTRAT_HCFK -ALTER TABLE "CONTRAT" ADD CONSTRAINT "CONTRAT_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + -- sinon... + ELSE + -- si au moins une étape est atteignable = NON si toutes ne sont pas atteignables + IF count_tested = count_na THEN + etapes(s).atteignable := 0; + ADD_DEP_BLOQUANTE( d.id, s ); + END IF; + END IF; + END IF; + END; --- CONTRAT_HDFK -ALTER TABLE "CONTRAT" ADD CONSTRAINT "CONTRAT_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; --- CONTRAT_HMFK -ALTER TABLE "CONTRAT" ADD CONSTRAINT "CONTRAT_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; --- CONTRAT_INTERVENANT_FK -ALTER TABLE "CONTRAT" ADD CONSTRAINT "CONTRAT_INTERVENANT_FK" FOREIGN KEY ("INTERVENANT_ID") - REFERENCES "INTERVENANT" ("ID") ON DELETE CASCADE ENABLE; + -- calcule si les étapes sont atteignables ou non + PROCEDURE CALCUL_ATTEIGNABLES IS + e PLS_INTEGER; -- index de l'étape courante + d PLS_INTEGER; -- ID de l'étape précédante + BEGIN + deps_bloquantes.delete; + e := etapes.FIRST; + LOOP EXIT WHEN e IS NULL; + IF deps.exists(etapes(e).etape_id) THEN -- s'il n'y a aucune dépendance alors pas de test!! + d := deps(etapes(e).etape_id).FIRST; + LOOP EXIT WHEN d IS NULL; --- CONTRAT_STRUCTURE_FK -ALTER TABLE "CONTRAT" ADD CONSTRAINT "CONTRAT_STRUCTURE_FK" FOREIGN KEY ("STRUCTURE_ID") - REFERENCES "STRUCTURE" ("ID") ENABLE; + CALCUL_ATTEIGNABLE(e, deps(etapes(e).etape_id)(d)); --- CONTRAT_TYPE_CONTRAT_FK -ALTER TABLE "CONTRAT" ADD CONSTRAINT "CONTRAT_TYPE_CONTRAT_FK" FOREIGN KEY ("TYPE_CONTRAT_ID") - REFERENCES "TYPE_CONTRAT" ("ID") ENABLE; + d := deps(etapes(e).etape_id).next(d); + END LOOP; + END IF; + e := etapes.next(e); + END LOOP; + END; --- CONTRAT_VALIDATION_FK -ALTER TABLE "CONTRAT" ADD CONSTRAINT "CONTRAT_VALIDATION_FK" FOREIGN KEY ("VALIDATION_ID") - REFERENCES "VALIDATION" ("ID") ON DELETE SET NULL ENABLE; --- CORPS_HCFK -ALTER TABLE "CORPS" ADD CONSTRAINT "CORPS_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; --- CORPS_HDFK -ALTER TABLE "CORPS" ADD CONSTRAINT "CORPS_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + FUNCTION ENREGISTRER_ETAPE( e tbl_workflow%rowtype ) RETURN NUMERIC IS + n_etape_id NUMERIC; + BEGIN + + MERGE INTO tbl_workflow w USING dual ON ( + + w.intervenant_id = e.intervenant_id + AND w.etape_id = e.etape_id + AND NVL(w.structure_id,0) = NVL(e.structure_id,0) --- CORPS_HMFK -ALTER TABLE "CORPS" ADD CONSTRAINT "CORPS_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + ) WHEN MATCHED THEN UPDATE SET --- CORPS_SOURCE_FK -ALTER TABLE "CORPS" ADD CONSTRAINT "CORPS_SOURCE_FK" FOREIGN KEY ("SOURCE_ID") - REFERENCES "SOURCE" ("ID") ON DELETE CASCADE ENABLE; + atteignable = e.atteignable, + objectif = e.objectif, + realisation = e.realisation, + etape_code = e.etape_code, + statut_intervenant_id = e.statut_intervenant_id, + type_intervenant_id = e.type_intervenant_id, + type_intervenant_code = e.type_intervenant_code, + to_delete = 0 --- CPEP_FK -ALTER TABLE "CHEMIN_PEDAGOGIQUE" ADD CONSTRAINT "CPEP_FK" FOREIGN KEY ("ELEMENT_PEDAGOGIQUE_ID") - REFERENCES "ELEMENT_PEDAGOGIQUE" ("ID") ON DELETE CASCADE ENABLE; + WHEN NOT MATCHED THEN INSERT ( --- CS_TYPE_INTERVENANT_FK -ALTER TABLE "CAMPAGNE_SAISIE" ADD CONSTRAINT "CS_TYPE_INTERVENANT_FK" FOREIGN KEY ("TYPE_INTERVENANT_ID") - REFERENCES "TYPE_INTERVENANT" ("ID") ENABLE; + id, + annee_id, + intervenant_id, + etape_id, + structure_id, + atteignable, + objectif, + realisation, + etape_code, + statut_intervenant_id, + type_intervenant_id, + type_intervenant_code, + to_delete --- CS_TYPE_VOLUME_HORAIRE_FK -ALTER TABLE "CAMPAGNE_SAISIE" ADD CONSTRAINT "CS_TYPE_VOLUME_HORAIRE_FK" FOREIGN KEY ("TYPE_VOLUME_HORAIRE_ID") - REFERENCES "TYPE_VOLUME_HORAIRE" ("ID") ENABLE; + ) VALUES ( --- DEPARTEMENT_HCFK -ALTER TABLE "DEPARTEMENT" ADD CONSTRAINT "DEPARTEMENT_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + TBL_WORKFLOW_ID_SEQ.NEXTVAL, + e.annee_id, + e.intervenant_id, + e.etape_id, + e.structure_id, + e.atteignable, + e.objectif, + e.realisation, + e.etape_code, + e.statut_intervenant_id, + e.type_intervenant_id, + e.type_intervenant_code, + 0 --- DEPARTEMENT_HDFK -ALTER TABLE "DEPARTEMENT" ADD CONSTRAINT "DEPARTEMENT_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + ); --- DEPARTEMENT_HMFK -ALTER TABLE "DEPARTEMENT" ADD CONSTRAINT "DEPARTEMENT_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + SELECT w.id INTO n_etape_id FROM tbl_workflow w WHERE + w.intervenant_id = e.intervenant_id + AND w.etape_id = e.etape_id + AND NVL(w.structure_id,0) = NVL(e.structure_id,0) + ; --- DEPARTEMENT_SOURCE_FK -ALTER TABLE "DEPARTEMENT" ADD CONSTRAINT "DEPARTEMENT_SOURCE_FK" FOREIGN KEY ("SOURCE_ID") - REFERENCES "SOURCE" ("ID") ON DELETE CASCADE ENABLE; + RETURN n_etape_id; + END; --- DISCIPLINE_HCFK -ALTER TABLE "DISCIPLINE" ADD CONSTRAINT "DISCIPLINE_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; --- DISCIPLINE_HDFK -ALTER TABLE "DISCIPLINE" ADD CONSTRAINT "DISCIPLINE_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; --- DISCIPLINE_HMFK -ALTER TABLE "DISCIPLINE" ADD CONSTRAINT "DISCIPLINE_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + PROCEDURE ENREGISTRER_DEP_BLOQUANTE( db wf_dep_bloquante%rowtype ) IS + BEGIN + MERGE INTO wf_dep_bloquante wdb USING dual ON ( --- DISCIPLINE_SOURCE_FK -ALTER TABLE "DISCIPLINE" ADD CONSTRAINT "DISCIPLINE_SOURCE_FK" FOREIGN KEY ("SOURCE_ID") - REFERENCES "SOURCE" ("ID") ENABLE; + wdb.wf_etape_dep_id = db.wf_etape_dep_id + AND wdb.tbl_workflow_id = db.tbl_workflow_id --- DOMAINE_FONCTIONNEL_HCFK -ALTER TABLE "DOMAINE_FONCTIONNEL" ADD CONSTRAINT "DOMAINE_FONCTIONNEL_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + ) WHEN MATCHED THEN UPDATE SET --- DOMAINE_FONCTIONNEL_HDFK -ALTER TABLE "DOMAINE_FONCTIONNEL" ADD CONSTRAINT "DOMAINE_FONCTIONNEL_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + to_delete = 0 --- DOMAINE_FONCTIONNEL_HMFK -ALTER TABLE "DOMAINE_FONCTIONNEL" ADD CONSTRAINT "DOMAINE_FONCTIONNEL_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + WHEN NOT MATCHED THEN INSERT ( --- DOMAINE_FONCTIONNEL_SOURCE_FK -ALTER TABLE "DOMAINE_FONCTIONNEL" ADD CONSTRAINT "DOMAINE_FONCTIONNEL_SOURCE_FK" FOREIGN KEY ("SOURCE_ID") - REFERENCES "SOURCE" ("ID") ON DELETE CASCADE ENABLE; + id, + wf_etape_dep_id, + tbl_workflow_id, + to_delete --- DOSSIER_D_FK -ALTER TABLE "DOSSIER" ADD CONSTRAINT "DOSSIER_D_FK" FOREIGN KEY ("DEPT_NAISSANCE_ID") - REFERENCES "DEPARTEMENT" ("ID") ENABLE; + ) VALUES ( --- DOSSIER_HCFK -ALTER TABLE "DOSSIER" ADD CONSTRAINT "DOSSIER_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + WF_DEP_BLOQUANTE_ID_SEQ.NEXTVAL, + db.wf_etape_dep_id, + db.tbl_workflow_id, + 0 --- DOSSIER_HDFK -ALTER TABLE "DOSSIER" ADD CONSTRAINT "DOSSIER_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + ); + END; --- DOSSIER_HMFK -ALTER TABLE "DOSSIER" ADD CONSTRAINT "DOSSIER_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; --- DOSSIER_INTERVENANT_FK -ALTER TABLE "DOSSIER" ADD CONSTRAINT "DOSSIER_INTERVENANT_FK" FOREIGN KEY ("INTERVENANT_ID") - REFERENCES "INTERVENANT" ("ID") ENABLE; --- DOSSIER_P_FK -ALTER TABLE "DOSSIER" ADD CONSTRAINT "DOSSIER_P_FK" FOREIGN KEY ("PAYS_NAISSANCE_ID") - REFERENCES "PAYS" ("ID") ENABLE; + PROCEDURE ENREGISTRER( INTERVENANT_ID NUMERIC ) IS + i PLS_INTEGER; + BEGIN --- DOTATION_ANNEE_FK -ALTER TABLE "DOTATION" ADD CONSTRAINT "DOTATION_ANNEE_FK" FOREIGN KEY ("ANNEE_ID") - REFERENCES "ANNEE" ("ID") ON DELETE CASCADE ENABLE; + UPDATE tbl_workflow SET to_delete = 1 WHERE intervenant_id = ENREGISTRER.INTERVENANT_ID; + UPDATE wf_dep_bloquante SET to_delete = 1 WHERE tbl_workflow_id IN (SELECT id FROM tbl_workflow WHERE intervenant_id = ENREGISTRER.INTERVENANT_ID); --- DOTATION_HCFK -ALTER TABLE "DOTATION" ADD CONSTRAINT "DOTATION_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + i := etapes.FIRST; + LOOP EXIT WHEN i IS NULL; + etapes(i).id := ENREGISTRER_ETAPE( etapes(i) ); + i := etapes.NEXT(i); + END LOOP; --- DOTATION_HDFK -ALTER TABLE "DOTATION" ADD CONSTRAINT "DOTATION_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + i := deps_bloquantes.FIRST; + LOOP EXIT WHEN i IS NULL; + deps_bloquantes(i).tbl_workflow_id := etapes(deps_bloquantes(i).tbl_workflow_id).id; + ENREGISTRER_DEP_BLOQUANTE( deps_bloquantes(i) ); + i := deps_bloquantes.NEXT(i); + END LOOP; --- DOTATION_HMFK -ALTER TABLE "DOTATION" ADD CONSTRAINT "DOTATION_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + DELETE FROM tbl_workflow WHERE TO_DELETE = 1 AND intervenant_id = ENREGISTRER.INTERVENANT_ID; + DELETE FROM wf_dep_bloquante WHERE TO_DELETE = 1; + END; --- DOTATION_STRUCTURE_FK -ALTER TABLE "DOTATION" ADD CONSTRAINT "DOTATION_STRUCTURE_FK" FOREIGN KEY ("STRUCTURE_ID") - REFERENCES "STRUCTURE" ("ID") ON DELETE CASCADE ENABLE; --- DOTATION_TYPE_RESSOURCE_FK -ALTER TABLE "DOTATION" ADD CONSTRAINT "DOTATION_TYPE_RESSOURCE_FK" FOREIGN KEY ("TYPE_RESSOURCE_ID") - REFERENCES "TYPE_RESSOURCE" ("ID") ENABLE; --- DS_MDS_FK -ALTER TABLE "MODIFICATION_SERVICE_DU" ADD CONSTRAINT "DS_MDS_FK" FOREIGN KEY ("MOTIF_ID") - REFERENCES "MOTIF_MODIFICATION_SERVICE" ("ID") ENABLE; + PROCEDURE DEP_CHECK( etape_suiv_id NUMERIC, etape_prec_id NUMERIC ) IS + eso NUMERIC; + epo NUMERIC; + BEGIN + SELECT ordre INTO eso FROM wf_etape WHERE id = etape_suiv_id; + SELECT ordre INTO epo FROM wf_etape WHERE id = etape_prec_id; --- EFFECTIFS_ELEMENT_FK -ALTER TABLE "EFFECTIFS" ADD CONSTRAINT "EFFECTIFS_ELEMENT_FK" FOREIGN KEY ("ELEMENT_PEDAGOGIQUE_ID") - REFERENCES "ELEMENT_PEDAGOGIQUE" ("ID") ON DELETE CASCADE ENABLE; + IF eso < epo THEN + raise_application_error(-20101, 'Une étape de Workflow ne peut dépendre d''une étape située en aval'); + END IF; + IF eso = epo THEN + raise_application_error(-20101, 'Une étape de Workflow ne peut dépendre d''elle-même'); + END IF; + END; --- EFFECTIFS_FK -ALTER TABLE "EFFECTIFS" ADD CONSTRAINT "EFFECTIFS_FK" FOREIGN KEY ("ANNEE_ID") - REFERENCES "ANNEE" ("ID") ENABLE; --- EFFECTIFS_HCFK -ALTER TABLE "EFFECTIFS" ADD CONSTRAINT "EFFECTIFS_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; --- EFFECTIFS_HDFK -ALTER TABLE "EFFECTIFS" ADD CONSTRAINT "EFFECTIFS_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + PROCEDURE DEBUG_CALCUL( INTERVENANT_ID NUMERIC ) IS + i PLS_INTEGER; + d PLS_INTEGER; + dep_desc VARCHAR2(200); + BEGIN + ose_test.echo(''); + ose_test.echo('-- DEBUG WORKFLOW ETAPE INTERVENANT_ID='|| INTERVENANT_ID ||' --'); + i := etapes.FIRST; + LOOP EXIT WHEN i IS NULL; + /*ose_test.echo( + 'etape=' || RPAD( ose_test.get_wf_etape_by_id(etapes(i).etape_id).code, 30, ' ' ) + || ', structure=' || RPAD( NVL(ose_test.get_structure_by_id(etapes(i).structure_id).libelle_court,' '), 20, ' ' ) + || ', ' || CASE WHEN etapes(i).atteignable=1 THEN 'atteignable' ELSE 'na' END + || ', objectif= ' || ROUND(etapes(i).objectif) + || ', realisation= ' || ROUND(etapes(i).realisation) + );*/ --- EFFECTIFS_HMFK -ALTER TABLE "EFFECTIFS" ADD CONSTRAINT "EFFECTIFS_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + d := deps_bloquantes.FIRST; + LOOP EXIT WHEN d IS NULL; + IF deps_bloquantes(d).tbl_workflow_id = i THEN --- EFFECTIFS_SOURCE_FK -ALTER TABLE "EFFECTIFS" ADD CONSTRAINT "EFFECTIFS_SOURCE_FK" FOREIGN KEY ("SOURCE_ID") - REFERENCES "SOURCE" ("ID") ON DELETE CASCADE ENABLE; + SELECT + we.desc_non_franchie INTO dep_desc + FROM + wf_etape_dep wed + JOIN wf_etape we ON we.id = wed.etape_prec_id + WHERE + wed.id = deps_bloquantes(d).wf_etape_dep_id; --- ELEMENT_MODULATEUR_HCFK -ALTER TABLE "ELEMENT_MODULATEUR" ADD CONSTRAINT "ELEMENT_MODULATEUR_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + ose_test.echo(' CAUSE =' || dep_desc); + END IF; + d := deps_bloquantes.NEXT(d); + END LOOP; --- ELEMENT_MODULATEUR_HDFK -ALTER TABLE "ELEMENT_MODULATEUR" ADD CONSTRAINT "ELEMENT_MODULATEUR_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + i := etapes.NEXT(i); + END LOOP; + ose_test.echo(''); + END; --- ELEMENT_MODULATEUR_HMFK -ALTER TABLE "ELEMENT_MODULATEUR" ADD CONSTRAINT "ELEMENT_MODULATEUR_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; --- ELEMENT_PEDAGOGIQUE_ANNEE_FK -ALTER TABLE "ELEMENT_PEDAGOGIQUE" ADD CONSTRAINT "ELEMENT_PEDAGOGIQUE_ANNEE_FK" FOREIGN KEY ("ANNEE_ID") - REFERENCES "ANNEE" ("ID") ENABLE; --- ELEMENT_PEDAGOGIQUE_ETAPE_FK -ALTER TABLE "ELEMENT_PEDAGOGIQUE" ADD CONSTRAINT "ELEMENT_PEDAGOGIQUE_ETAPE_FK" FOREIGN KEY ("ETAPE_ID") - REFERENCES "ETAPE" ("ID") ENABLE; + -- calcul du workflow pour un intervenant + PROCEDURE CALCULER( INTERVENANT_ID NUMERIC ) IS + BEGIN + set_intervenant(intervenant_id); + POPULATE_ETAPES( INTERVENANT_ID ); + POPULATE_DEPS( INTERVENANT_ID ); + CALCUL_ATTEIGNABLES; + IF OSE_TEST.DEBUG_ENABLED THEN + DEBUG_CALCUL( INTERVENANT_ID ); + END IF; + ENREGISTRER( INTERVENANT_ID ); + set_intervenant(); + END; --- ELEMENT_PEDAGOGIQUE_HCFK -ALTER TABLE "ELEMENT_PEDAGOGIQUE" ADD CONSTRAINT "ELEMENT_PEDAGOGIQUE_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; --- ELEMENT_PEDAGOGIQUE_HDFK -ALTER TABLE "ELEMENT_PEDAGOGIQUE" ADD CONSTRAINT "ELEMENT_PEDAGOGIQUE_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; --- ELEMENT_PEDAGOGIQUE_HMFK -ALTER TABLE "ELEMENT_PEDAGOGIQUE" ADD CONSTRAINT "ELEMENT_PEDAGOGIQUE_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + PROCEDURE CALCULER_TOUT( ANNEE_ID NUMERIC DEFAULT NULL ) IS + BEGIN + FOR mp IN ( + SELECT + id intervenant_id + FROM + intervenant i + WHERE + i.histo_destruction IS NULL + AND (CALCULER_TOUT.ANNEE_ID IS NULL OR i.annee_id = CALCULER_TOUT.ANNEE_ID) + ) + LOOP + CALCULER( mp.intervenant_id ); + END LOOP; + END; --- ELEMENT_PEDAGOGIQUE_PERIODE_FK -ALTER TABLE "ELEMENT_PEDAGOGIQUE" ADD CONSTRAINT "ELEMENT_PEDAGOGIQUE_PERIODE_FK" FOREIGN KEY ("PERIODE_ID") - REFERENCES "PERIODE" ("ID") ENABLE; --- ELEMENT_PEDAGOGIQUE_SOURCE_FK -ALTER TABLE "ELEMENT_PEDAGOGIQUE" ADD CONSTRAINT "ELEMENT_PEDAGOGIQUE_SOURCE_FK" FOREIGN KEY ("SOURCE_ID") - REFERENCES "SOURCE" ("ID") ON DELETE CASCADE ENABLE; --- ELEMENT_TAUX_REGIMES_HCFK -ALTER TABLE "ELEMENT_TAUX_REGIMES" ADD CONSTRAINT "ELEMENT_TAUX_REGIMES_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + PROCEDURE CALCULER_TBL( PARAMS UNICAEN_TBL.T_PARAMS ) IS + intervenant_id NUMERIC; + TYPE r_cursor IS REF CURSOR; + diff_cur r_cursor; + BEGIN + OPEN diff_cur FOR 'WITH interv AS (SELECT id intervenant_id, intervenant.* FROM intervenant) + SELECT intervenant_id FROM interv WHERE ' || unicaen_tbl.PARAMS_TO_CONDS( params ); + LOOP + FETCH diff_cur INTO intervenant_id; EXIT WHEN diff_cur%NOTFOUND; + BEGIN + CALCULER( intervenant_id ); + END; + END LOOP; + CLOSE diff_cur; + END; --- ELEMENT_TAUX_REGIMES_HDFK -ALTER TABLE "ELEMENT_TAUX_REGIMES" ADD CONSTRAINT "ELEMENT_TAUX_REGIMES_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; --- ELEMENT_TAUX_REGIMES_HMFK -ALTER TABLE "ELEMENT_TAUX_REGIMES" ADD CONSTRAINT "ELEMENT_TAUX_REGIMES_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; --- EM_ELEMENT_PEDAGOGIQUE_FK -ALTER TABLE "ELEMENT_MODULATEUR" ADD CONSTRAINT "EM_ELEMENT_PEDAGOGIQUE_FK" FOREIGN KEY ("ELEMENT_ID") - REFERENCES "ELEMENT_PEDAGOGIQUE" ("ID") ON DELETE CASCADE ENABLE; + FUNCTION GET_INTERVENANT RETURN NUMERIC IS + BEGIN + RETURN OSE_WORKFLOW.INTERVENANT_ID; + END; --- EM_MODULATEUR_FK -ALTER TABLE "ELEMENT_MODULATEUR" ADD CONSTRAINT "EM_MODULATEUR_FK" FOREIGN KEY ("MODULATEUR_ID") - REFERENCES "MODULATEUR" ("ID") ENABLE; + PROCEDURE SET_INTERVENANT( INTERVENANT_ID NUMERIC DEFAULT NULL) IS + BEGIN + IF SET_INTERVENANT.INTERVENANT_ID = -1 THEN + OSE_WORKFLOW.INTERVENANT_ID := NULL; + ELSE + OSE_WORKFLOW.INTERVENANT_ID := SET_INTERVENANT.INTERVENANT_ID; + END IF; + END; --- EPS_FK -ALTER TABLE "ELEMENT_PEDAGOGIQUE" ADD CONSTRAINT "EPS_FK" FOREIGN KEY ("STRUCTURE_ID") - REFERENCES "STRUCTURE" ("ID") ENABLE; + FUNCTION MATCH_INTERVENANT(INTERVENANT_ID NUMERIC DEFAULT NULL) RETURN NUMERIC IS + BEGIN + IF OSE_WORKFLOW.INTERVENANT_ID IS NULL OR OSE_WORKFLOW.INTERVENANT_ID = MATCH_INTERVENANT.INTERVENANT_ID THEN + RETURN 1; + ELSE + RETURN 0; + END IF; + END; +END OSE_WORKFLOW; +/ --- EP_DISCIPLINE_FK -ALTER TABLE "ELEMENT_PEDAGOGIQUE" ADD CONSTRAINT "EP_DISCIPLINE_FK" FOREIGN KEY ("DISCIPLINE_ID") - REFERENCES "DISCIPLINE" ("ID") ENABLE; +-- UNICAEN_IMPORT +CREATE OR REPLACE PACKAGE BODY "UNICAEN_IMPORT" AS --- ETABLISSEMENT_HCFK -ALTER TABLE "ETABLISSEMENT" ADD CONSTRAINT "ETABLISSEMENT_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + v_current_user INTEGER; + v_current_annee INTEGER; --- ETABLISSEMENT_HDFK -ALTER TABLE "ETABLISSEMENT" ADD CONSTRAINT "ETABLISSEMENT_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; --- ETABLISSEMENT_HMFK -ALTER TABLE "ETABLISSEMENT" ADD CONSTRAINT "ETABLISSEMENT_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; --- ETABLISSEMENT_SOURCE_FK -ALTER TABLE "ETABLISSEMENT" ADD CONSTRAINT "ETABLISSEMENT_SOURCE_FK" FOREIGN KEY ("SOURCE_ID") - REFERENCES "SOURCE" ("ID") ON DELETE CASCADE ENABLE; + FUNCTION get_current_user RETURN INTEGER IS + BEGIN + IF v_current_user IS NULL THEN + v_current_user := OSE_PARAMETRE.GET_OSE_USER(); + END IF; + RETURN v_current_user; + END get_current_user; --- ETAPE_ANNEE_FK -ALTER TABLE "ETAPE" ADD CONSTRAINT "ETAPE_ANNEE_FK" FOREIGN KEY ("ANNEE_ID") - REFERENCES "ANNEE" ("ID") ENABLE; + PROCEDURE set_current_user (p_current_user INTEGER) is + BEGIN + v_current_user := p_current_user; + END set_current_user; --- ETAPE_DOMAINE_FONCTIONNEL_FK -ALTER TABLE "ETAPE" ADD CONSTRAINT "ETAPE_DOMAINE_FONCTIONNEL_FK" FOREIGN KEY ("DOMAINE_FONCTIONNEL_ID") - REFERENCES "DOMAINE_FONCTIONNEL" ("ID") ENABLE; --- ETAPE_HCFK -ALTER TABLE "ETAPE" ADD CONSTRAINT "ETAPE_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; --- ETAPE_HDFK -ALTER TABLE "ETAPE" ADD CONSTRAINT "ETAPE_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + FUNCTION get_current_annee RETURN INTEGER IS + BEGIN + IF v_current_annee IS NULL THEN + v_current_annee := OSE_PARAMETRE.GET_ANNEE_IMPORT(); + END IF; + RETURN v_current_annee; + END get_current_annee; --- ETAPE_HMFK -ALTER TABLE "ETAPE" ADD CONSTRAINT "ETAPE_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + PROCEDURE set_current_annee (p_current_annee INTEGER) IS + BEGIN + v_current_annee := p_current_annee; + END set_current_annee; --- ETAPE_SOURCE_FK -ALTER TABLE "ETAPE" ADD CONSTRAINT "ETAPE_SOURCE_FK" FOREIGN KEY ("SOURCE_ID") - REFERENCES "SOURCE" ("ID") ON DELETE CASCADE ENABLE; --- ETAPE_STRUCTURE_FK -ALTER TABLE "ETAPE" ADD CONSTRAINT "ETAPE_STRUCTURE_FK" FOREIGN KEY ("STRUCTURE_ID") - REFERENCES "STRUCTURE" ("ID") ENABLE; --- ETAPE_TYPE_FORMATION_FK -ALTER TABLE "ETAPE" ADD CONSTRAINT "ETAPE_TYPE_FORMATION_FK" FOREIGN KEY ("TYPE_FORMATION_ID") - REFERENCES "TYPE_FORMATION" ("ID") ENABLE; + PROCEDURE SYNCHRONISATION( table_name VARCHAR2, SYNC_FILRE CLOB DEFAULT '', IGNORE_UPD_COLS CLOB DEFAULT '' ) IS + ok NUMERIC(1); + BEGIN + SELECT COUNT(*) INTO ok FROM import_tables it WHERE it.table_name = SYNCHRONISATION.table_name AND it.sync_enabled = 1 AND rownum = 1; --- ETR_ELEMENT_FK -ALTER TABLE "ELEMENT_TAUX_REGIMES" ADD CONSTRAINT "ETR_ELEMENT_FK" FOREIGN KEY ("ELEMENT_PEDAGOGIQUE_ID") - REFERENCES "ELEMENT_PEDAGOGIQUE" ("ID") ON DELETE CASCADE ENABLE; + IF 1 = ok THEN + z__SYNC_FILRE__z := SYNCHRONISATION.SYNC_FILRE; + z__IGNORE_UPD_COLS__z := SYNCHRONISATION.IGNORE_UPD_COLS; + EXECUTE IMMEDIATE 'BEGIN UNICAEN_IMPORT_AUTOGEN_PROCS__.' || table_name || '(); END;'; + END IF; + END; --- ETR_SOURCE_FK -ALTER TABLE "ELEMENT_TAUX_REGIMES" ADD CONSTRAINT "ETR_SOURCE_FK" FOREIGN KEY ("SOURCE_ID") - REFERENCES "SOURCE" ("ID") ENABLE; --- FICHIER_HCFK -ALTER TABLE "FICHIER" ADD CONSTRAINT "FICHIER_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; --- FICHIER_HDFK -ALTER TABLE "FICHIER" ADD CONSTRAINT "FICHIER_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + PROCEDURE REFRESH_MV( mview_name varchar2 ) IS + BEGIN + DBMS_MVIEW.REFRESH(mview_name, 'C'); + EXCEPTION WHEN OTHERS THEN + SYNC_LOG( SQLERRM, mview_name ); + END; --- FICHIER_HMFK -ALTER TABLE "FICHIER" ADD CONSTRAINT "FICHIER_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; --- FICHIER_VALID_FK -ALTER TABLE "FICHIER" ADD CONSTRAINT "FICHIER_VALID_FK" FOREIGN KEY ("VALIDATION_ID") - REFERENCES "VALIDATION" ("ID") ON DELETE SET NULL ENABLE; --- FONCTION_REFERENTIEL_HCFK -ALTER TABLE "FONCTION_REFERENTIEL" ADD CONSTRAINT "FONCTION_REFERENTIEL_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + PROCEDURE SYNC_LOG( message CLOB, table_name VARCHAR2 DEFAULT NULL, source_code VARCHAR2 DEFAULT NULL ) IS + BEGIN + INSERT INTO SYNC_LOG("ID","DATE_SYNC","MESSAGE","TABLE_NAME","SOURCE_CODE") VALUES (SYNC_LOG_ID_SEQ.NEXTVAL, SYSDATE, message,table_name,source_code); + END SYNC_LOG; --- FONCTION_REFERENTIEL_HDFK -ALTER TABLE "FONCTION_REFERENTIEL" ADD CONSTRAINT "FONCTION_REFERENTIEL_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; --- FONCTION_REFERENTIEL_HMFK -ALTER TABLE "FONCTION_REFERENTIEL" ADD CONSTRAINT "FONCTION_REFERENTIEL_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; --- FONCTION_REFERENTIEL_SFK -ALTER TABLE "FONCTION_REFERENTIEL" ADD CONSTRAINT "FONCTION_REFERENTIEL_SFK" FOREIGN KEY ("STRUCTURE_ID") - REFERENCES "STRUCTURE" ("ID") ENABLE; + FUNCTION IN_COLUMN_LIST( VALEUR VARCHAR2, CHAMPS CLOB ) RETURN NUMERIC IS + BEGIN + IF REGEXP_LIKE(CHAMPS, '(^|,)[ \t\r\n\v\f]*' || VALEUR || '[ \t\r\n\v\f]*(,|$)') THEN RETURN 1; END IF; + RETURN 0; + END; --- FONC_REF_DOMAINE_FONCT_FK -ALTER TABLE "FONCTION_REFERENTIEL" ADD CONSTRAINT "FONC_REF_DOMAINE_FONCT_FK" FOREIGN KEY ("DOMAINE_FONCTIONNEL_ID") - REFERENCES "DOMAINE_FONCTIONNEL" ("ID") ENABLE; +END UNICAEN_IMPORT; +/ --- FRES_ETAT_VOLUME_HORAIRE_FK -ALTER TABLE "FORMULE_RESULTAT" ADD CONSTRAINT "FRES_ETAT_VOLUME_HORAIRE_FK" FOREIGN KEY ("ETAT_VOLUME_HORAIRE_ID") - REFERENCES "ETAT_VOLUME_HORAIRE" ("ID") ON DELETE CASCADE ENABLE; +-- UNICAEN_OSE_FORMULE +CREATE OR REPLACE PACKAGE BODY "UNICAEN_OSE_FORMULE" AS --- FRES_INTERVENANT_FK -ALTER TABLE "FORMULE_RESULTAT" ADD CONSTRAINT "FRES_INTERVENANT_FK" FOREIGN KEY ("INTERVENANT_ID") - REFERENCES "INTERVENANT" ("ID") ON DELETE CASCADE ENABLE; + /* Stockage des valeurs intermédiaires */ + TYPE t_valeurs IS TABLE OF FLOAT INDEX BY PLS_INTEGER; + TYPE t_tableau IS RECORD ( + valeurs t_valeurs, + total FLOAT DEFAULT 0 + ); + TYPE t_tableaux IS TABLE OF t_tableau INDEX BY PLS_INTEGER; + t t_tableaux; + current_id PLS_INTEGER; + + /* Accès au stockage des valeurs intermédiaires */ + -- Initialisation des tableaux de valeurs intermédiaires + PROCEDURE V_INIT IS + BEGIN + t.delete; + END; --- FRES_TYPE_VOLUME_HORAIRE_FK -ALTER TABLE "FORMULE_RESULTAT" ADD CONSTRAINT "FRES_TYPE_VOLUME_HORAIRE_FK" FOREIGN KEY ("TYPE_VOLUME_HORAIRE_ID") - REFERENCES "TYPE_VOLUME_HORAIRE" ("ID") ON DELETE CASCADE ENABLE; + -- Setter d'une valeur intermédiaire au niveau case + PROCEDURE SV( tab_index PLS_INTEGER, id PLS_INTEGER, val FLOAT ) IS + BEGIN + t(tab_index).valeurs(id) := val; + t(tab_index).total := t(tab_index).total + val; + END; --- FRR_FORMULE_RESULTAT_FK -ALTER TABLE "FORMULE_RESULTAT_SERVICE_REF" ADD CONSTRAINT "FRR_FORMULE_RESULTAT_FK" FOREIGN KEY ("FORMULE_RESULTAT_ID") - REFERENCES "FORMULE_RESULTAT" ("ID") ON DELETE CASCADE ENABLE; + -- Setter d'une valeur intermédiaire au niveau tableau + PROCEDURE SV( tab_index PLS_INTEGER, val FLOAT ) IS + BEGIN + t(tab_index).total := val; + END; --- FRSR_SERVICE_REFERENTIEL_FK -ALTER TABLE "FORMULE_RESULTAT_SERVICE_REF" ADD CONSTRAINT "FRSR_SERVICE_REFERENTIEL_FK" FOREIGN KEY ("SERVICE_REFERENTIEL_ID") - REFERENCES "SERVICE_REFERENTIEL" ("ID") ON DELETE CASCADE ENABLE; + -- Getter d'une valeur intermédiaire, au niveau case + FUNCTION GV( tab_index PLS_INTEGER, id PLS_INTEGER DEFAULT NULL ) RETURN FLOAT IS + BEGIN + IF NOT t.exists(tab_index) THEN RETURN 0; END IF; + IF NOT t(tab_index).valeurs.exists( NVL(id,current_id) ) THEN RETURN 0; END IF; + RETURN t(tab_index).valeurs( NVL(id,current_id) ); + END; --- FRS_FORMULE_RESULTAT_FK -ALTER TABLE "FORMULE_RESULTAT_SERVICE" ADD CONSTRAINT "FRS_FORMULE_RESULTAT_FK" FOREIGN KEY ("FORMULE_RESULTAT_ID") - REFERENCES "FORMULE_RESULTAT" ("ID") ON DELETE CASCADE ENABLE; + -- Getter d'une valeur intermédiaire, au niveau tableau + FUNCTION GT( tab_index PLS_INTEGER ) RETURN FLOAT IS + BEGIN + IF NOT t.exists(tab_index) THEN RETURN 0; END IF; + RETURN t(tab_index).total; + END; --- FRS_SERVICE_FK -ALTER TABLE "FORMULE_RESULTAT_SERVICE" ADD CONSTRAINT "FRS_SERVICE_FK" FOREIGN KEY ("SERVICE_ID") - REFERENCES "SERVICE" ("ID") ON DELETE CASCADE ENABLE; --- FRVHR_FORMULE_RESULTAT_FK -ALTER TABLE "FORMULE_RESULTAT_VH_REF" ADD CONSTRAINT "FRVHR_FORMULE_RESULTAT_FK" FOREIGN KEY ("FORMULE_RESULTAT_ID") - REFERENCES "FORMULE_RESULTAT" ("ID") ON DELETE CASCADE ENABLE; + /* Débogage des valeurs intermédiaires */ + PROCEDURE DEBUG_TAB( tab_index PLS_INTEGER ) IS + id PLS_INTEGER; + BEGIN + ose_test.echo( 'Tableau numéro ' || tab_index ); --- FRVHR_VOLUME_HORAIRE_REF_FK -ALTER TABLE "FORMULE_RESULTAT_VH_REF" ADD CONSTRAINT "FRVHR_VOLUME_HORAIRE_REF_FK" FOREIGN KEY ("VOLUME_HORAIRE_REF_ID") - REFERENCES "VOLUME_HORAIRE_REF" ("ID") ON DELETE CASCADE ENABLE; + id := ose_formule.d_service.FIRST; + LOOP EXIT WHEN id IS NULL; + dbms_output.put( 'Service id=' || lpad(id,6,' ') || ', data = ' ); --- FRVH_FORMULE_RESULTAT_FK -ALTER TABLE "FORMULE_RESULTAT_VH" ADD CONSTRAINT "FRVH_FORMULE_RESULTAT_FK" FOREIGN KEY ("FORMULE_RESULTAT_ID") - REFERENCES "FORMULE_RESULTAT" ("ID") ON DELETE CASCADE ENABLE; + current_id := ose_formule.d_volume_horaire.FIRST; + LOOP EXIT WHEN current_id IS NULL; + dbms_output.put( lpad(gv(tab_index),10,' ') || ' | ' ); + current_id := ose_formule.d_volume_horaire.NEXT(current_id); + END LOOP; + dbms_output.new_line; + id := ose_formule.d_service.NEXT(id); + END LOOP; --- FRVH_VOLUME_HORAIRE_FK -ALTER TABLE "FORMULE_RESULTAT_VH" ADD CONSTRAINT "FRVH_VOLUME_HORAIRE_FK" FOREIGN KEY ("VOLUME_HORAIRE_ID") - REFERENCES "VOLUME_HORAIRE" ("ID") ON DELETE CASCADE ENABLE; + ose_test.echo( 'TOTAL = ' || LPAD(gt(tab_index), 10, ' ') ); + END; --- GRADE_CORPS_FK -ALTER TABLE "GRADE" ADD CONSTRAINT "GRADE_CORPS_FK" FOREIGN KEY ("CORPS_ID") - REFERENCES "CORPS" ("ID") ENABLE; --- GRADE_HCFK -ALTER TABLE "GRADE" ADD CONSTRAINT "GRADE_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; --- GRADE_HDFK -ALTER TABLE "GRADE" ADD CONSTRAINT "GRADE_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + /* Calcul des valeurs intermédiaires */ + FUNCTION C2_11( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS + s ose_formule.t_service; + BEGIN + s := ose_formule.d_service( vh.service_id ); --- GRADE_HMFK -ALTER TABLE "GRADE" ADD CONSTRAINT "GRADE_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + IF NVL(s.structure_ens_id,0) = NVL(s.structure_aff_id,0) AND s.taux_fc < 1 THEN + RETURN vh.heures; + ELSE + RETURN 0; + END IF; + END; --- GRADE_SOURCE_FK -ALTER TABLE "GRADE" ADD CONSTRAINT "GRADE_SOURCE_FK" FOREIGN KEY ("SOURCE_ID") - REFERENCES "SOURCE" ("ID") ENABLE; + FUNCTION C3_11( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS + s ose_formule.t_service; + BEGIN + s := ose_formule.d_service( vh.service_id ); --- GROUPE_ELEMENT_PEDAGOGIQUE_FK -ALTER TABLE "GROUPE" ADD CONSTRAINT "GROUPE_ELEMENT_PEDAGOGIQUE_FK" FOREIGN KEY ("ELEMENT_PEDAGOGIQUE_ID") - REFERENCES "ELEMENT_PEDAGOGIQUE" ("ID") ON DELETE CASCADE ENABLE; + IF NVL(s.structure_ens_id,0) = NVL(s.structure_aff_id,0) THEN + RETURN vh.heures * (s.taux_fi + s.taux_fa); + ELSE + RETURN 0; + END IF; + END; --- GROUPE_HCFK -ALTER TABLE "GROUPE" ADD CONSTRAINT "GROUPE_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + FUNCTION C2_12( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS + s ose_formule.t_service; + BEGIN + s := ose_formule.d_service( vh.service_id ); --- GROUPE_HDFK -ALTER TABLE "GROUPE" ADD CONSTRAINT "GROUPE_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + IF NVL(s.structure_ens_id,0) <> NVL(s.structure_aff_id,0) AND s.taux_fc < 1 THEN + RETURN vh.heures; + ELSE + RETURN 0; + END IF; + END; --- GROUPE_HMFK -ALTER TABLE "GROUPE" ADD CONSTRAINT "GROUPE_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + FUNCTION C3_12( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS + s ose_formule.t_service; + BEGIN + s := ose_formule.d_service( vh.service_id ); --- GROUPE_TYPE_FORMATION_HCFK -ALTER TABLE "GROUPE_TYPE_FORMATION" ADD CONSTRAINT "GROUPE_TYPE_FORMATION_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + IF NVL(s.structure_ens_id,0) <> NVL(s.structure_aff_id,0) THEN + RETURN vh.heures * (s.taux_fi + s.taux_fa); + ELSE + RETURN 0; + END IF; + END; --- GROUPE_TYPE_FORMATION_HDFK -ALTER TABLE "GROUPE_TYPE_FORMATION" ADD CONSTRAINT "GROUPE_TYPE_FORMATION_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + FUNCTION C2_13( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS + s ose_formule.t_service; + BEGIN + s := ose_formule.d_service( vh.service_id ); --- GROUPE_TYPE_FORMATION_HMFK -ALTER TABLE "GROUPE_TYPE_FORMATION" ADD CONSTRAINT "GROUPE_TYPE_FORMATION_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + IF NVL(s.structure_ens_id,0) = NVL(s.structure_aff_id,0) AND s.taux_fc = 1 THEN + RETURN vh.heures; + ELSE + RETURN 0; + END IF; + END; --- GROUPE_TYPE_INTERVENTION_FK -ALTER TABLE "GROUPE" ADD CONSTRAINT "GROUPE_TYPE_INTERVENTION_FK" FOREIGN KEY ("TYPE_INTERVENTION_ID") - REFERENCES "TYPE_INTERVENTION" ("ID") ENABLE; + FUNCTION C3_13( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS + s ose_formule.t_service; + BEGIN + s := ose_formule.d_service( vh.service_id ); --- GTYPE_FORMATION_SOURCE_FK -ALTER TABLE "GROUPE_TYPE_FORMATION" ADD CONSTRAINT "GTYPE_FORMATION_SOURCE_FK" FOREIGN KEY ("SOURCE_ID") - REFERENCES "SOURCE" ("ID") ON DELETE CASCADE ENABLE; + IF NVL(s.structure_ens_id,0) = NVL(s.structure_aff_id,0) THEN + RETURN vh.heures * s.taux_fc; + ELSE + RETURN 0; + END IF; + END; --- HSM_INTERVENANT_FK -ALTER TABLE "HISTO_INTERVENANT_SERVICE" ADD CONSTRAINT "HSM_INTERVENANT_FK" FOREIGN KEY ("INTERVENANT_ID") - REFERENCES "INTERVENANT" ("ID") ON DELETE CASCADE ENABLE; + FUNCTION C2_14( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS + s ose_formule.t_service; + BEGIN + s := ose_formule.d_service( vh.service_id ); --- HSM_TYPE_VOLUME_HORAIRE_FK -ALTER TABLE "HISTO_INTERVENANT_SERVICE" ADD CONSTRAINT "HSM_TYPE_VOLUME_HORAIRE_FK" FOREIGN KEY ("TYPE_VOLUME_HORAIRE_ID") - REFERENCES "TYPE_VOLUME_HORAIRE" ("ID") ON DELETE CASCADE ENABLE; + IF NVL(s.structure_ens_id,0) <> NVL(s.structure_aff_id,0) AND s.taux_fc = 1 THEN + RETURN vh.heures; + ELSE + RETURN 0; + END IF; + END; --- HSM_UTILISATEUR_FK -ALTER TABLE "HISTO_INTERVENANT_SERVICE" ADD CONSTRAINT "HSM_UTILISATEUR_FK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ON DELETE CASCADE ENABLE; + FUNCTION C3_14( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS + s ose_formule.t_service; + BEGIN + s := ose_formule.d_service( vh.service_id ); --- INDIC_MODIF_DOSSIER_HCFK -ALTER TABLE "INDIC_MODIF_DOSSIER" ADD CONSTRAINT "INDIC_MODIF_DOSSIER_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + IF NVL(s.structure_ens_id,0) <> NVL(s.structure_aff_id,0) THEN + RETURN vh.heures * s.taux_fc; + ELSE + RETURN 0; + END IF; + END; --- INDIC_MODIF_DOSSIER_HDFK -ALTER TABLE "INDIC_MODIF_DOSSIER" ADD CONSTRAINT "INDIC_MODIF_DOSSIER_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + FUNCTION C2_15( fr ose_formule.t_volume_horaire_ref ) RETURN FLOAT IS + f ose_formule.t_service_ref; + BEGIN + f := ose_formule.d_service_ref( fr.service_referentiel_id ); --- INDIC_MODIF_DOSSIER_HMFK -ALTER TABLE "INDIC_MODIF_DOSSIER" ADD CONSTRAINT "INDIC_MODIF_DOSSIER_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + IF NVL(ose_formule.d_intervenant.structure_id,0) = NVL(f.structure_id,0) THEN + RETURN fr.heures; + ELSE + RETURN 0; + END IF; + END; --- INTERVENANTS_CIVILITES_FK -ALTER TABLE "INTERVENANT" ADD CONSTRAINT "INTERVENANTS_CIVILITES_FK" FOREIGN KEY ("CIVILITE_ID") - REFERENCES "CIVILITE" ("ID") ENABLE; + FUNCTION C2_16( fr ose_formule.t_volume_horaire_ref ) RETURN FLOAT IS + f ose_formule.t_service_ref; + BEGIN + f := ose_formule.d_service_ref( fr.service_referentiel_id ); --- INTERVENANT_ANNEE_FK -ALTER TABLE "INTERVENANT" ADD CONSTRAINT "INTERVENANT_ANNEE_FK" FOREIGN KEY ("ANNEE_ID") - REFERENCES "ANNEE" ("ID") ENABLE; + IF NVL(ose_formule.d_intervenant.structure_id,0) <> NVL(f.structure_id,0) AND NVL(f.structure_id,0) <> ose_divers.STRUCTURE_UNIV_GET_ID THEN + RETURN fr.heures; + ELSE + RETURN 0; + END IF; + END; --- INTERVENANT_DEPARTEMENT_FK -ALTER TABLE "INTERVENANT" ADD CONSTRAINT "INTERVENANT_DEPARTEMENT_FK" FOREIGN KEY ("DEP_NAISSANCE_ID") - REFERENCES "DEPARTEMENT" ("ID") ENABLE; + FUNCTION C2_17( fr ose_formule.t_volume_horaire_ref ) RETURN FLOAT IS + f ose_formule.t_service_ref; + BEGIN + f := ose_formule.d_service_ref( fr.service_referentiel_id ); --- INTERVENANT_DISCIPLINE_FK -ALTER TABLE "INTERVENANT" ADD CONSTRAINT "INTERVENANT_DISCIPLINE_FK" FOREIGN KEY ("DISCIPLINE_ID") - REFERENCES "DISCIPLINE" ("ID") ENABLE; + IF NVL(f.structure_id,0) = ose_divers.STRUCTURE_UNIV_GET_ID THEN + RETURN fr.heures; + ELSE + RETURN 0; + END IF; + END; + + FUNCTION C2_21( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS + BEGIN + RETURN gv(11) * vh.taux_service_du; + END; --- INTERVENANT_GRADE_FK -ALTER TABLE "INTERVENANT" ADD CONSTRAINT "INTERVENANT_GRADE_FK" FOREIGN KEY ("GRADE_ID") - REFERENCES "GRADE" ("ID") ENABLE; + FUNCTION C2_22( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS + BEGIN + RETURN gv(12) * vh.taux_service_du; + END; --- INTERVENANT_HCFK -ALTER TABLE "INTERVENANT" ADD CONSTRAINT "INTERVENANT_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + FUNCTION C2_23( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS + BEGIN + RETURN gv(13) * vh.taux_service_du; + END; --- INTERVENANT_HDFK -ALTER TABLE "INTERVENANT" ADD CONSTRAINT "INTERVENANT_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + FUNCTION C2_24( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS + BEGIN + RETURN gv(14) * vh.taux_service_du; + END; --- INTERVENANT_HMFK -ALTER TABLE "INTERVENANT" ADD CONSTRAINT "INTERVENANT_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + FUNCTION C2_25( fr ose_formule.t_volume_horaire_ref ) RETURN FLOAT IS + BEGIN + RETURN gv(15); + END; --- INTERVENANT_PAYS_NAISS_FK -ALTER TABLE "INTERVENANT" ADD CONSTRAINT "INTERVENANT_PAYS_NAISS_FK" FOREIGN KEY ("PAYS_NAISSANCE_ID") - REFERENCES "PAYS" ("ID") ENABLE; + FUNCTION C2_26( fr ose_formule.t_volume_horaire_ref ) RETURN FLOAT IS + BEGIN + RETURN gv(16); + END; --- INTERVENANT_PAYS_NAT_FK -ALTER TABLE "INTERVENANT" ADD CONSTRAINT "INTERVENANT_PAYS_NAT_FK" FOREIGN KEY ("PAYS_NATIONALITE_ID") - REFERENCES "PAYS" ("ID") ENABLE; + FUNCTION C2_27( fr ose_formule.t_volume_horaire_ref ) RETURN FLOAT IS + BEGIN + RETURN gv(17); + END; --- INTERVENANT_SAISIE_INTERV_FK -ALTER TABLE "INTERVENANT_SAISIE" ADD CONSTRAINT "INTERVENANT_SAISIE_INTERV_FK" FOREIGN KEY ("INTERVENANT_ID") - REFERENCES "INTERVENANT" ("ID") ON DELETE CASCADE ENABLE; + FUNCTION C2_31 RETURN FLOAT IS + BEGIN + RETURN GREATEST( ose_formule.d_resultat.service_du - gt(21), 0 ); + END; --- INTERVENANT_SOURCE_FK -ALTER TABLE "INTERVENANT" ADD CONSTRAINT "INTERVENANT_SOURCE_FK" FOREIGN KEY ("SOURCE_ID") - REFERENCES "SOURCE" ("ID") ON DELETE CASCADE ENABLE; + FUNCTION C2_32 RETURN FLOAT IS + BEGIN + RETURN GREATEST( gt(31) - gt(22), 0 ); + END; --- INTERVENANT_STATUT_FK -ALTER TABLE "INTERVENANT" ADD CONSTRAINT "INTERVENANT_STATUT_FK" FOREIGN KEY ("STATUT_ID") - REFERENCES "STATUT_INTERVENANT" ("ID") ENABLE; + FUNCTION C2_33 RETURN FLOAT IS + BEGIN + RETURN GREATEST( gt(32) - gt(23), 0 ); + END; --- INTERVENANT_STRUCTURE_FK -ALTER TABLE "INTERVENANT" ADD CONSTRAINT "INTERVENANT_STRUCTURE_FK" FOREIGN KEY ("STRUCTURE_ID") - REFERENCES "STRUCTURE" ("ID") ENABLE; + FUNCTION C2_34 RETURN FLOAT IS + BEGIN + RETURN GREATEST( gt(33) - gt(24), 0 ); + END; --- IS_STATUT_INTERVENANT_FK -ALTER TABLE "INTERVENANT_SAISIE" ADD CONSTRAINT "IS_STATUT_INTERVENANT_FK" FOREIGN KEY ("STATUT_ID") - REFERENCES "STATUT_INTERVENANT" ("ID") ENABLE; + FUNCTION C2_35 RETURN FLOAT IS + BEGIN + RETURN GREATEST( gt(34) - gt(25), 0 ); + END; --- LIEN_HCFK -ALTER TABLE "LIEN" ADD CONSTRAINT "LIEN_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + FUNCTION C2_36 RETURN FLOAT IS + BEGIN + RETURN GREATEST( gt(35) - gt(26), 0 ); + END; --- LIEN_HDFK -ALTER TABLE "LIEN" ADD CONSTRAINT "LIEN_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + FUNCTION C2_37 RETURN FLOAT IS + BEGIN + RETURN GREATEST( gt(36) - gt(27), 0 ); + END; --- LIEN_HMFK -ALTER TABLE "LIEN" ADD CONSTRAINT "LIEN_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + FUNCTION C2_41( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS + BEGIN + IF gt(21) <> 0 THEN + RETURN gv(21) / gt(21); + ELSE + RETURN 0; + END IF; + END; --- LIEN_NOEUD_INF_FK -ALTER TABLE "LIEN" ADD CONSTRAINT "LIEN_NOEUD_INF_FK" FOREIGN KEY ("NOEUD_INF_ID") - REFERENCES "NOEUD" ("ID") ON DELETE CASCADE ENABLE; + FUNCTION C2_42( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS + BEGIN + IF gt(22) <> 0 THEN + RETURN gv(22) / gt(22); + ELSE + RETURN 0; + END IF; + END; --- LIEN_NOEUD_SUP_FK -ALTER TABLE "LIEN" ADD CONSTRAINT "LIEN_NOEUD_SUP_FK" FOREIGN KEY ("NOEUD_SUP_ID") - REFERENCES "NOEUD" ("ID") ON DELETE CASCADE ENABLE; + FUNCTION C2_43( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS + BEGIN + IF gt(23) <> 0 THEN + RETURN gv(23) / gt(23); + ELSE + RETURN 0; + END IF; + END; --- LIEN_SOURCE_FK -ALTER TABLE "LIEN" ADD CONSTRAINT "LIEN_SOURCE_FK" FOREIGN KEY ("SOURCE_ID") - REFERENCES "SOURCE" ("ID") ENABLE; + FUNCTION C2_44( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS + BEGIN + IF gt(24) <> 0 THEN + RETURN gv(24) / gt(24); + ELSE + RETURN 0; + END IF; + END; --- LIEN_STRUCTURE_FK -ALTER TABLE "LIEN" ADD CONSTRAINT "LIEN_STRUCTURE_FK" FOREIGN KEY ("STRUCTURE_ID") - REFERENCES "STRUCTURE" ("ID") ENABLE; + FUNCTION C2_45( fr ose_formule.t_volume_horaire_ref ) RETURN FLOAT IS + BEGIN + IF gt(25) <> 0 THEN + RETURN gv(25) / gt(25); + ELSE + RETURN 0; + END IF; + END; --- MEP_CENTRE_COUT_FK -ALTER TABLE "MISE_EN_PAIEMENT" ADD CONSTRAINT "MEP_CENTRE_COUT_FK" FOREIGN KEY ("CENTRE_COUT_ID") - REFERENCES "CENTRE_COUT" ("ID") ON DELETE CASCADE ENABLE; + FUNCTION C2_46( fr ose_formule.t_volume_horaire_ref ) RETURN FLOAT IS + BEGIN + IF gt(26) <> 0 THEN + RETURN gv(26) / gt(26); + ELSE + RETURN 0; + END IF; + END; --- MEP_DOMAINE_FONCTIONNEL_FK -ALTER TABLE "MISE_EN_PAIEMENT" ADD CONSTRAINT "MEP_DOMAINE_FONCTIONNEL_FK" FOREIGN KEY ("DOMAINE_FONCTIONNEL_ID") - REFERENCES "DOMAINE_FONCTIONNEL" ("ID") ENABLE; + FUNCTION C2_47( fr ose_formule.t_volume_horaire_ref ) RETURN FLOAT IS + BEGIN + IF gt(27) <> 0 THEN + RETURN gv(27) / gt(27); + ELSE + RETURN 0; + END IF; + END; --- MEP_FR_SERVICE_FK -ALTER TABLE "MISE_EN_PAIEMENT" ADD CONSTRAINT "MEP_FR_SERVICE_FK" FOREIGN KEY ("FORMULE_RES_SERVICE_ID") - REFERENCES "FORMULE_RESULTAT_SERVICE" ("ID") ENABLE; + FUNCTION C2_51( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS + BEGIN + RETURN LEAST( ose_formule.d_resultat.service_du, gt(21) ) * gv(41); + END; --- MEP_FR_SERVICE_REF_FK -ALTER TABLE "MISE_EN_PAIEMENT" ADD CONSTRAINT "MEP_FR_SERVICE_REF_FK" FOREIGN KEY ("FORMULE_RES_SERVICE_REF_ID") - REFERENCES "FORMULE_RESULTAT_SERVICE_REF" ("ID") ENABLE; + FUNCTION C2_52( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS + BEGIN + RETURN LEAST( gt(31), gt(22) ) * gv(42); + END; --- MEP_TYPE_HEURES_FK -ALTER TABLE "MISE_EN_PAIEMENT" ADD CONSTRAINT "MEP_TYPE_HEURES_FK" FOREIGN KEY ("TYPE_HEURES_ID") - REFERENCES "TYPE_HEURES" ("ID") ON DELETE CASCADE ENABLE; + FUNCTION C2_53( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS + BEGIN + RETURN LEAST( gt(32), gt(23) ) * gv(43); + END; --- MISE_EN_PAIEMENT_HCFK -ALTER TABLE "MISE_EN_PAIEMENT" ADD CONSTRAINT "MISE_EN_PAIEMENT_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + FUNCTION C2_54( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS + BEGIN + RETURN LEAST( gt(33), gt(24) ) * gv(44); + END; --- MISE_EN_PAIEMENT_HDFK -ALTER TABLE "MISE_EN_PAIEMENT" ADD CONSTRAINT "MISE_EN_PAIEMENT_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + FUNCTION C2_55( fr ose_formule.t_volume_horaire_ref ) RETURN FLOAT IS + BEGIN + RETURN LEAST( gt(34), gt(25) ) * gv(45); + END; --- MISE_EN_PAIEMENT_HMFK -ALTER TABLE "MISE_EN_PAIEMENT" ADD CONSTRAINT "MISE_EN_PAIEMENT_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + FUNCTION C2_56( fr ose_formule.t_volume_horaire_ref ) RETURN FLOAT IS + BEGIN + RETURN LEAST( gt(35), gt(26) ) * gv(46); + END; --- MISE_EN_PAIEMENT_PERIODE_FK -ALTER TABLE "MISE_EN_PAIEMENT" ADD CONSTRAINT "MISE_EN_PAIEMENT_PERIODE_FK" FOREIGN KEY ("PERIODE_PAIEMENT_ID") - REFERENCES "PERIODE" ("ID") ENABLE; + FUNCTION C2_57( fr ose_formule.t_volume_horaire_ref ) RETURN FLOAT IS + BEGIN + RETURN LEAST( gt(36), gt(27) ) * gv(47); + END; --- MISE_EN_PAIEMENT_VALIDATION_FK -ALTER TABLE "MISE_EN_PAIEMENT" ADD CONSTRAINT "MISE_EN_PAIEMENT_VALIDATION_FK" FOREIGN KEY ("VALIDATION_ID") - REFERENCES "VALIDATION" ("ID") ON DELETE CASCADE ENABLE; + FUNCTION C2_61( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS + s ose_formule.t_service; + BEGIN + s := ose_formule.d_service( vh.service_id ); --- MODIFICATION_SERVICE_DU_HCFK -ALTER TABLE "MODIFICATION_SERVICE_DU" ADD CONSTRAINT "MODIFICATION_SERVICE_DU_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + RETURN gv(51) * s.taux_fi; + END; --- MODIFICATION_SERVICE_DU_HDFK -ALTER TABLE "MODIFICATION_SERVICE_DU" ADD CONSTRAINT "MODIFICATION_SERVICE_DU_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + FUNCTION C3_61( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS + s ose_formule.t_service; + BEGIN + s := ose_formule.d_service( vh.service_id ); --- MODIFICATION_SERVICE_DU_HMFK -ALTER TABLE "MODIFICATION_SERVICE_DU" ADD CONSTRAINT "MODIFICATION_SERVICE_DU_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + IF s.taux_fi + s.taux_fa > 0 THEN + RETURN gv(51) / (s.taux_fi + s.taux_fa) * s.taux_fi; + ELSE + RETURN 0; + END IF; + END; --- MODULATEUR_HCFK -ALTER TABLE "MODULATEUR" ADD CONSTRAINT "MODULATEUR_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + FUNCTION C2_62( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS + s ose_formule.t_service; + BEGIN + s := ose_formule.d_service( vh.service_id ); --- MODULATEUR_HDFK -ALTER TABLE "MODULATEUR" ADD CONSTRAINT "MODULATEUR_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + RETURN gv(52) * s.taux_fi; + END; --- MODULATEUR_HMFK -ALTER TABLE "MODULATEUR" ADD CONSTRAINT "MODULATEUR_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + FUNCTION C3_62( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS + s ose_formule.t_service; + BEGIN + s := ose_formule.d_service( vh.service_id ); --- MODULATEUR_TYPE_MODULATEUR_FK -ALTER TABLE "MODULATEUR" ADD CONSTRAINT "MODULATEUR_TYPE_MODULATEUR_FK" FOREIGN KEY ("TYPE_MODULATEUR_ID") - REFERENCES "TYPE_MODULATEUR" ("ID") ON DELETE CASCADE ENABLE; + IF s.taux_fi + s.taux_fa > 0 THEN + RETURN gv(52) / (s.taux_fi + s.taux_fa) * s.taux_fi; + ELSE + RETURN 0; + END IF; + END; --- MOTIF_MODIFICATION_SERVIC_HCFK -ALTER TABLE "MOTIF_MODIFICATION_SERVICE" ADD CONSTRAINT "MOTIF_MODIFICATION_SERVIC_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + FUNCTION C2_71( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS + s ose_formule.t_service; + BEGIN + s := ose_formule.d_service( vh.service_id ); --- MOTIF_MODIFICATION_SERVIC_HDFK -ALTER TABLE "MOTIF_MODIFICATION_SERVICE" ADD CONSTRAINT "MOTIF_MODIFICATION_SERVIC_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + RETURN gv(51) * s.taux_fa; + END; --- MOTIF_MODIFICATION_SERVIC_HMFK -ALTER TABLE "MOTIF_MODIFICATION_SERVICE" ADD CONSTRAINT "MOTIF_MODIFICATION_SERVIC_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + FUNCTION C3_71( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS + s ose_formule.t_service; + BEGIN + s := ose_formule.d_service( vh.service_id ); --- MOTIF_NON_PAIEMENT_HCFK -ALTER TABLE "MOTIF_NON_PAIEMENT" ADD CONSTRAINT "MOTIF_NON_PAIEMENT_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + IF s.taux_fi + s.taux_fa > 0 THEN + RETURN gv(51) / (s.taux_fi + s.taux_fa) * s.taux_fa; + ELSE + RETURN 0; + END IF; + END; --- MOTIF_NON_PAIEMENT_HDFK -ALTER TABLE "MOTIF_NON_PAIEMENT" ADD CONSTRAINT "MOTIF_NON_PAIEMENT_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + FUNCTION C2_72( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS + s ose_formule.t_service; + BEGIN + s := ose_formule.d_service( vh.service_id ); --- MOTIF_NON_PAIEMENT_HMFK -ALTER TABLE "MOTIF_NON_PAIEMENT" ADD CONSTRAINT "MOTIF_NON_PAIEMENT_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + RETURN gv(52) * s.taux_fa; + END; --- MSD_INTERVENANT_FK -ALTER TABLE "MODIFICATION_SERVICE_DU" ADD CONSTRAINT "MSD_INTERVENANT_FK" FOREIGN KEY ("INTERVENANT_ID") - REFERENCES "INTERVENANT" ("ID") ON DELETE CASCADE ENABLE; + FUNCTION C3_72( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS + s ose_formule.t_service; + BEGIN + s := ose_formule.d_service( vh.service_id ); --- NOEUD_ANNEE_FK -ALTER TABLE "NOEUD" ADD CONSTRAINT "NOEUD_ANNEE_FK" FOREIGN KEY ("ANNEE_ID") - REFERENCES "ANNEE" ("ID") ENABLE; + IF s.taux_fi + s.taux_fa > 0 THEN + RETURN gv(52) / (s.taux_fi + s.taux_fa) * s.taux_fa; + ELSE + RETURN 0; + END IF; + END; --- NOEUD_ELEMENT_PEDAGOGIQUE_FK -ALTER TABLE "NOEUD" ADD CONSTRAINT "NOEUD_ELEMENT_PEDAGOGIQUE_FK" FOREIGN KEY ("ELEMENT_PEDAGOGIQUE_ID") - REFERENCES "ELEMENT_PEDAGOGIQUE" ("ID") ON DELETE CASCADE ENABLE; + FUNCTION C2_81( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS + s ose_formule.t_service; + BEGIN + s := ose_formule.d_service( vh.service_id ); --- NOEUD_ETAPE_FK -ALTER TABLE "NOEUD" ADD CONSTRAINT "NOEUD_ETAPE_FK" FOREIGN KEY ("ETAPE_ID") - REFERENCES "ETAPE" ("ID") ON DELETE CASCADE ENABLE; + RETURN gv(51) * s.taux_fc; + END; --- NOEUD_HCFK -ALTER TABLE "NOEUD" ADD CONSTRAINT "NOEUD_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + FUNCTION C2_82( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS + s ose_formule.t_service; + BEGIN + s := ose_formule.d_service( vh.service_id ); --- NOEUD_HDFK -ALTER TABLE "NOEUD" ADD CONSTRAINT "NOEUD_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + RETURN gv(52) * s.taux_fc; + END; --- NOEUD_HMFK -ALTER TABLE "NOEUD" ADD CONSTRAINT "NOEUD_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + FUNCTION C2_83( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS + s ose_formule.t_service; + BEGIN + s := ose_formule.d_service( vh.service_id ); --- NOEUD_SOURCE_FK -ALTER TABLE "NOEUD" ADD CONSTRAINT "NOEUD_SOURCE_FK" FOREIGN KEY ("SOURCE_ID") - REFERENCES "SOURCE" ("ID") ENABLE; + RETURN gv(53) * s.taux_fc; + END; --- NOEUD_STRUCTURE_FK -ALTER TABLE "NOEUD" ADD CONSTRAINT "NOEUD_STRUCTURE_FK" FOREIGN KEY ("STRUCTURE_ID") - REFERENCES "STRUCTURE" ("ID") ENABLE; + FUNCTION C3_83( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS + BEGIN + RETURN gv(53); + END; --- NOTIF_INDICATEUR_IFK -ALTER TABLE "NOTIFICATION_INDICATEUR" ADD CONSTRAINT "NOTIF_INDICATEUR_IFK" FOREIGN KEY ("INDICATEUR_ID") - REFERENCES "INDICATEUR" ("ID") ON DELETE CASCADE ENABLE; + FUNCTION C2_84( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS + s ose_formule.t_service; + BEGIN + s := ose_formule.d_service( vh.service_id ); --- PARAMETRE_HCFK -ALTER TABLE "PARAMETRE" ADD CONSTRAINT "PARAMETRE_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + RETURN gv(54) * s.taux_fc; + END; --- PARAMETRE_HDFK -ALTER TABLE "PARAMETRE" ADD CONSTRAINT "PARAMETRE_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + FUNCTION C3_84( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS + BEGIN + RETURN gv(54); + END; --- PARAMETRE_HMFK -ALTER TABLE "PARAMETRE" ADD CONSTRAINT "PARAMETRE_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + FUNCTION C2_91( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS + BEGIN + IF gv(21) <> 0 THEN + RETURN gv(51) / gv(21); + ELSE + RETURN 0; + END IF; + END; --- PAYS_HCFK -ALTER TABLE "PAYS" ADD CONSTRAINT "PAYS_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + FUNCTION C2_92( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS + BEGIN + IF gv(22) <> 0 THEN + RETURN gv(52) / gv(22); + ELSE + RETURN 0; + END IF; + END; --- PAYS_HDFK -ALTER TABLE "PAYS" ADD CONSTRAINT "PAYS_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + FUNCTION C2_93( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS + BEGIN + IF gv(23) <> 0 THEN + RETURN gv(53) / gv(23); + ELSE + RETURN 0; + END IF; + END; --- PAYS_HMFK -ALTER TABLE "PAYS" ADD CONSTRAINT "PAYS_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + FUNCTION C2_94( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS + BEGIN + IF gv(24) <> 0 THEN + RETURN gv(54) / gv(24); + ELSE + RETURN 0; + END IF; + END; --- PAYS_SOURCE_FK -ALTER TABLE "PAYS" ADD CONSTRAINT "PAYS_SOURCE_FK" FOREIGN KEY ("SOURCE_ID") - REFERENCES "SOURCE" ("ID") ON DELETE CASCADE ENABLE; + FUNCTION C2_95( fr ose_formule.t_volume_horaire_ref ) RETURN FLOAT IS + BEGIN + IF gv(25) <> 0 THEN + RETURN gv(55) / gv(25); + ELSE + RETURN 0; + END IF; + END; --- PERIODE_HCFK -ALTER TABLE "PERIODE" ADD CONSTRAINT "PERIODE_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + FUNCTION C2_96( fr ose_formule.t_volume_horaire_ref ) RETURN FLOAT IS + BEGIN + IF gv(26) <> 0 THEN + RETURN gv(56) / gv(26); + ELSE + RETURN 0; + END IF; + END; --- PERIODE_HDFK -ALTER TABLE "PERIODE" ADD CONSTRAINT "PERIODE_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + FUNCTION C2_97( fr ose_formule.t_volume_horaire_ref ) RETURN FLOAT IS + BEGIN + IF gv(27) <> 0 THEN + RETURN gv(57) / gv(27); + ELSE + RETURN 0; + END IF; + END; --- PERIODE_HMFK -ALTER TABLE "PERIODE" ADD CONSTRAINT "PERIODE_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + FUNCTION C2_101( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS + BEGIN + IF gt(37) <> 0 THEN + RETURN 0; + ELSE + RETURN 1 - gv(91); + END IF; + END; --- PIECE_JOINTE_FICHIER_FFK -ALTER TABLE "PIECE_JOINTE_FICHIER" ADD CONSTRAINT "PIECE_JOINTE_FICHIER_FFK" FOREIGN KEY ("FICHIER_ID") - REFERENCES "FICHIER" ("ID") ENABLE; + FUNCTION C2_102( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS + BEGIN + IF gt(37) <> 0 THEN + RETURN 0; + ELSE + RETURN 1 - gv(92); + END IF; + END; --- PIECE_JOINTE_FICHIER_PJFK -ALTER TABLE "PIECE_JOINTE_FICHIER" ADD CONSTRAINT "PIECE_JOINTE_FICHIER_PJFK" FOREIGN KEY ("PIECE_JOINTE_ID") - REFERENCES "PIECE_JOINTE" ("ID") ON DELETE CASCADE ENABLE; + FUNCTION C2_103( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS + BEGIN + IF gt(37) <> 0 THEN + RETURN 0; + ELSE + RETURN 1 - gv(93); + END IF; + END; --- PIECE_JOINTE_HCFK -ALTER TABLE "PIECE_JOINTE" ADD CONSTRAINT "PIECE_JOINTE_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + FUNCTION C2_104( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS + BEGIN + IF gt(37) <> 0 THEN + RETURN 0; + ELSE + RETURN 1 - gv(94); + END IF; + END; --- PIECE_JOINTE_HDFK -ALTER TABLE "PIECE_JOINTE" ADD CONSTRAINT "PIECE_JOINTE_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + FUNCTION C2_105( fr ose_formule.t_volume_horaire_ref ) RETURN FLOAT IS + BEGIN + IF gt(37) <> 0 THEN + RETURN 0; + ELSE + RETURN 1 - gv(95); + END IF; + END; --- PIECE_JOINTE_HMFK -ALTER TABLE "PIECE_JOINTE" ADD CONSTRAINT "PIECE_JOINTE_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + FUNCTION C2_106( fr ose_formule.t_volume_horaire_ref ) RETURN FLOAT IS + BEGIN + IF gt(37) <> 0 THEN + RETURN 0; + ELSE + RETURN 1 - gv(96); + END IF; + END; --- PIECE_JOINTE_INTERVENANT_FK -ALTER TABLE "PIECE_JOINTE" ADD CONSTRAINT "PIECE_JOINTE_INTERVENANT_FK" FOREIGN KEY ("INTERVENANT_ID") - REFERENCES "INTERVENANT" ("ID") ENABLE; + FUNCTION C2_107( fr ose_formule.t_volume_horaire_ref ) RETURN FLOAT IS + BEGIN + IF gt(37) <> 0 THEN + RETURN 0; + ELSE + RETURN 1 - gv(97); + END IF; + END; --- PIECE_JOINTE_VFK -ALTER TABLE "PIECE_JOINTE" ADD CONSTRAINT "PIECE_JOINTE_VFK" FOREIGN KEY ("VALIDATION_ID") - REFERENCES "VALIDATION" ("ID") ON DELETE SET NULL ENABLE; + FUNCTION C2_111( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS + BEGIN + RETURN gv(11) * vh.taux_service_compl * gv(101); + END; --- PJ_TYPE_PIECE_JOINTE_FK -ALTER TABLE "PIECE_JOINTE" ADD CONSTRAINT "PJ_TYPE_PIECE_JOINTE_FK" FOREIGN KEY ("TYPE_PIECE_JOINTE_ID") - REFERENCES "TYPE_PIECE_JOINTE" ("ID") ON DELETE CASCADE ENABLE; + FUNCTION C2_112( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS + BEGIN + RETURN gv(12) * vh.taux_service_compl * gv(102); + END; --- PLAFONDAPP_ANNEE_DFK -ALTER TABLE "PLAFOND_APPLICATION" ADD CONSTRAINT "PLAFONDAPP_ANNEE_DFK" FOREIGN KEY ("ANNEE_DEBUT_ID") - REFERENCES "ANNEE" ("ID") ENABLE; + FUNCTION C2_113( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS + BEGIN + RETURN gv(13) * vh.taux_service_compl * gv(103); + END; --- PLAFONDAPP_ANNEE_FFK -ALTER TABLE "PLAFOND_APPLICATION" ADD CONSTRAINT "PLAFONDAPP_ANNEE_FFK" FOREIGN KEY ("ANNEE_FIN_ID") - REFERENCES "ANNEE" ("ID") ENABLE; + FUNCTION C2_114( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS + BEGIN + RETURN gv(14) * vh.taux_service_compl * gv(104); + END; --- PLAFONDAPP_PLAFOND_ETAT_FK -ALTER TABLE "PLAFOND_APPLICATION" ADD CONSTRAINT "PLAFONDAPP_PLAFOND_ETAT_FK" FOREIGN KEY ("PLAFOND_ETAT_ID") - REFERENCES "PLAFOND_ETAT" ("ID") ON DELETE CASCADE ENABLE; + FUNCTION C2_115( fr ose_formule.t_volume_horaire_ref ) RETURN FLOAT IS + BEGIN + RETURN gv(15) * gv(105); + END; --- PLAFONDAPP_PLAFOND_FK -ALTER TABLE "PLAFOND_APPLICATION" ADD CONSTRAINT "PLAFONDAPP_PLAFOND_FK" FOREIGN KEY ("PLAFOND_ID") - REFERENCES "PLAFOND" ("ID") ON DELETE CASCADE ENABLE; + FUNCTION C2_116( fr ose_formule.t_volume_horaire_ref ) RETURN FLOAT IS + BEGIN + RETURN gv(16) * gv(106); + END; --- PLAFONDAPP_TVH_FK -ALTER TABLE "PLAFOND_APPLICATION" ADD CONSTRAINT "PLAFONDAPP_TVH_FK" FOREIGN KEY ("TYPE_VOLUME_HORAIRE_ID") - REFERENCES "TYPE_VOLUME_HORAIRE" ("ID") ON DELETE CASCADE ENABLE; + FUNCTION C2_117( fr ose_formule.t_volume_horaire_ref ) RETURN FLOAT IS + BEGIN + RETURN gv(17) * gv(107); + END; --- PRIVILEGE_CATEGORIE_FK -ALTER TABLE "PRIVILEGE" ADD CONSTRAINT "PRIVILEGE_CATEGORIE_FK" FOREIGN KEY ("CATEGORIE_ID") - REFERENCES "CATEGORIE_PRIVILEGE" ("ID") ON DELETE CASCADE ENABLE; + FUNCTION C2_123( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS + s ose_formule.t_service; + BEGIN + s := ose_formule.d_service( vh.service_id ); --- ROLE_HCFK -ALTER TABLE "ROLE" ADD CONSTRAINT "ROLE_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + IF s.taux_fc = 1 THEN + RETURN gv(113) * s.ponderation_service_compl; + ELSE + RETURN gv(113); + END IF; + END; --- ROLE_HDFK -ALTER TABLE "ROLE" ADD CONSTRAINT "ROLE_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + FUNCTION C3_123( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS + s ose_formule.t_service; + BEGIN + s := ose_formule.d_service( vh.service_id ); --- ROLE_HMFK -ALTER TABLE "ROLE" ADD CONSTRAINT "ROLE_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + IF s.taux_fc > 0 THEN + RETURN gv(113) * s.ponderation_service_compl; + ELSE + RETURN gv(113); + END IF; + END; --- ROLE_PERIMETRE_FK -ALTER TABLE "ROLE" ADD CONSTRAINT "ROLE_PERIMETRE_FK" FOREIGN KEY ("PERIMETRE_ID") - REFERENCES "PERIMETRE" ("ID") ENABLE; + FUNCTION C2_124( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS + s ose_formule.t_service; + BEGIN + s := ose_formule.d_service( vh.service_id ); --- ROLE_PRIVILEGE_PRIVILEGE_FK -ALTER TABLE "ROLE_PRIVILEGE" ADD CONSTRAINT "ROLE_PRIVILEGE_PRIVILEGE_FK" FOREIGN KEY ("PRIVILEGE_ID") - REFERENCES "PRIVILEGE" ("ID") ON DELETE CASCADE ENABLE; + IF s.taux_fc = 1 THEN + RETURN gv(114) * s.ponderation_service_compl; + ELSE + RETURN gv(114); + END IF; + END; --- ROLE_PRIVILEGE_ROLE_FK -ALTER TABLE "ROLE_PRIVILEGE" ADD CONSTRAINT "ROLE_PRIVILEGE_ROLE_FK" FOREIGN KEY ("ROLE_ID") - REFERENCES "ROLE" ("ID") ON DELETE CASCADE ENABLE; + FUNCTION C3_124( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS + s ose_formule.t_service; + BEGIN + s := ose_formule.d_service( vh.service_id ); --- RSV_TYPE_INTERVENANT_FK -ALTER TABLE "REGLE_STRUCTURE_VALIDATION" ADD CONSTRAINT "RSV_TYPE_INTERVENANT_FK" FOREIGN KEY ("TYPE_INTERVENANT_ID") - REFERENCES "TYPE_INTERVENANT" ("ID") ENABLE; + IF s.taux_fc > 0 THEN + RETURN gv(114) * s.ponderation_service_compl; + ELSE + RETURN gv(114); + END IF; + END; --- RSV_TYPE_VOLUME_HORAIRE_FK -ALTER TABLE "REGLE_STRUCTURE_VALIDATION" ADD CONSTRAINT "RSV_TYPE_VOLUME_HORAIRE_FK" FOREIGN KEY ("TYPE_VOLUME_HORAIRE_ID") - REFERENCES "TYPE_VOLUME_HORAIRE" ("ID") ENABLE; + FUNCTION C2_131( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS + s ose_formule.t_service; + BEGIN + s := ose_formule.d_service( vh.service_id ); --- SCENARIO_HCFK -ALTER TABLE "SCENARIO" ADD CONSTRAINT "SCENARIO_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + RETURN gv(111) * s.taux_fi; + END; --- SCENARIO_HDFK -ALTER TABLE "SCENARIO" ADD CONSTRAINT "SCENARIO_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + FUNCTION C3_131( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS + s ose_formule.t_service; + BEGIN + s := ose_formule.d_service( vh.service_id ); --- SCENARIO_HMFK -ALTER TABLE "SCENARIO" ADD CONSTRAINT "SCENARIO_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + IF s.taux_fi + s.taux_fa > 0 THEN + RETURN gv(111) / (s.taux_fi + s.taux_fa) * s.taux_fi; + ELSE + RETURN 0; + END IF; + END; --- SCENARIO_LIEN_HCFK -ALTER TABLE "SCENARIO_LIEN" ADD CONSTRAINT "SCENARIO_LIEN_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + FUNCTION C2_132( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS + s ose_formule.t_service; + BEGIN + s := ose_formule.d_service( vh.service_id ); --- SCENARIO_LIEN_HDFK -ALTER TABLE "SCENARIO_LIEN" ADD CONSTRAINT "SCENARIO_LIEN_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + RETURN gv(112) * s.taux_fi; + END; --- SCENARIO_LIEN_HMFK -ALTER TABLE "SCENARIO_LIEN" ADD CONSTRAINT "SCENARIO_LIEN_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + FUNCTION C3_132( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS + s ose_formule.t_service; + BEGIN + s := ose_formule.d_service( vh.service_id ); --- SCENARIO_LIEN_LIEN_FK -ALTER TABLE "SCENARIO_LIEN" ADD CONSTRAINT "SCENARIO_LIEN_LIEN_FK" FOREIGN KEY ("LIEN_ID") - REFERENCES "LIEN" ("ID") ON DELETE CASCADE ENABLE; + IF s.taux_fi + s.taux_fa > 0 THEN + RETURN gv(112) / (s.taux_fi + s.taux_fa) * s.taux_fi; + ELSE + RETURN 0; + END IF; + END; --- SCENARIO_LIEN_SCENARIO_FK -ALTER TABLE "SCENARIO_LIEN" ADD CONSTRAINT "SCENARIO_LIEN_SCENARIO_FK" FOREIGN KEY ("SCENARIO_ID") - REFERENCES "SCENARIO" ("ID") ON DELETE CASCADE ENABLE; + FUNCTION C2_141( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS + s ose_formule.t_service; + BEGIN + s := ose_formule.d_service( vh.service_id ); --- SCENARIO_LIEN_SOURCE_FK -ALTER TABLE "SCENARIO_LIEN" ADD CONSTRAINT "SCENARIO_LIEN_SOURCE_FK" FOREIGN KEY ("SOURCE_ID") - REFERENCES "SOURCE" ("ID") ENABLE; + RETURN gv(111) * s.taux_fa; + END; --- SCENARIO_NOEUD_HCFK -ALTER TABLE "SCENARIO_NOEUD" ADD CONSTRAINT "SCENARIO_NOEUD_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + FUNCTION C3_141( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS + s ose_formule.t_service; + BEGIN + s := ose_formule.d_service( vh.service_id ); --- SCENARIO_NOEUD_HDFK -ALTER TABLE "SCENARIO_NOEUD" ADD CONSTRAINT "SCENARIO_NOEUD_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + IF s.taux_fi + s.taux_fa > 0 THEN + RETURN gv(111) / (s.taux_fi + s.taux_fa) * s.taux_fa; + ELSE + RETURN 0; + END IF; + END; --- SCENARIO_NOEUD_HMFK -ALTER TABLE "SCENARIO_NOEUD" ADD CONSTRAINT "SCENARIO_NOEUD_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + FUNCTION C2_142( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS + s ose_formule.t_service; + BEGIN + s := ose_formule.d_service( vh.service_id ); --- SCENARIO_NOEUD_NOEUD_FK -ALTER TABLE "SCENARIO_NOEUD" ADD CONSTRAINT "SCENARIO_NOEUD_NOEUD_FK" FOREIGN KEY ("NOEUD_ID") - REFERENCES "NOEUD" ("ID") ON DELETE CASCADE ENABLE; + RETURN gv(112) * s.taux_fa; + END; --- SCENARIO_NOEUD_SCENARIO_FK -ALTER TABLE "SCENARIO_NOEUD" ADD CONSTRAINT "SCENARIO_NOEUD_SCENARIO_FK" FOREIGN KEY ("SCENARIO_ID") - REFERENCES "SCENARIO" ("ID") ON DELETE CASCADE ENABLE; + FUNCTION C3_142( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS + s ose_formule.t_service; + BEGIN + s := ose_formule.d_service( vh.service_id ); + + IF s.taux_fi + s.taux_fa > 0 THEN + RETURN gv(112) / (s.taux_fi + s.taux_fa) * s.taux_fa; + ELSE + RETURN 0; + END IF; + END; --- SCENARIO_NOEUD_SOURCE_FK -ALTER TABLE "SCENARIO_NOEUD" ADD CONSTRAINT "SCENARIO_NOEUD_SOURCE_FK" FOREIGN KEY ("SOURCE_ID") - REFERENCES "SOURCE" ("ID") ENABLE; + FUNCTION C2_151( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS + s ose_formule.t_service; + BEGIN + s := ose_formule.d_service( vh.service_id ); --- SCENARIO_STRUCTURE_FK -ALTER TABLE "SCENARIO" ADD CONSTRAINT "SCENARIO_STRUCTURE_FK" FOREIGN KEY ("STRUCTURE_ID") - REFERENCES "STRUCTURE" ("ID") ENABLE; + RETURN gv(111) * s.taux_fc; + END; --- SERVICE_ELEMENT_PEDAGOGIQUE_FK -ALTER TABLE "SERVICE" ADD CONSTRAINT "SERVICE_ELEMENT_PEDAGOGIQUE_FK" FOREIGN KEY ("ELEMENT_PEDAGOGIQUE_ID") - REFERENCES "ELEMENT_PEDAGOGIQUE" ("ID") ENABLE; + FUNCTION C2_152( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS + s ose_formule.t_service; + BEGIN + s := ose_formule.d_service( vh.service_id ); --- SERVICE_ETABLISSEMENT_FK -ALTER TABLE "SERVICE" ADD CONSTRAINT "SERVICE_ETABLISSEMENT_FK" FOREIGN KEY ("ETABLISSEMENT_ID") - REFERENCES "ETABLISSEMENT" ("ID") ENABLE; + RETURN gv(112) * s.taux_fc; + END; --- SERVICE_HCFK -ALTER TABLE "SERVICE" ADD CONSTRAINT "SERVICE_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + FUNCTION C2_153( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS + s ose_formule.t_service; + BEGIN + s := ose_formule.d_service( vh.service_id ); --- SERVICE_HDFK -ALTER TABLE "SERVICE" ADD CONSTRAINT "SERVICE_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + IF gv(123) = gv(113) THEN + RETURN gv(113) * s.taux_fc; + ELSE + RETURN 0; + END IF; + END; --- SERVICE_HMFK -ALTER TABLE "SERVICE" ADD CONSTRAINT "SERVICE_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + FUNCTION C3_153( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS + s ose_formule.t_service; + BEGIN + s := ose_formule.d_service( vh.service_id ); --- SERVICE_INTERVENANT_FK -ALTER TABLE "SERVICE" ADD CONSTRAINT "SERVICE_INTERVENANT_FK" FOREIGN KEY ("INTERVENANT_ID") - REFERENCES "INTERVENANT" ("ID") ENABLE; + IF gv(123) = gv(113) THEN + RETURN gv(113); + ELSE + RETURN 0; + END IF; + END; --- SERVICE_REFERENTIEL_HCFK -ALTER TABLE "SERVICE_REFERENTIEL" ADD CONSTRAINT "SERVICE_REFERENTIEL_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + FUNCTION C2_154( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS + s ose_formule.t_service; + BEGIN + s := ose_formule.d_service( vh.service_id ); --- SERVICE_REFERENTIEL_HDFK -ALTER TABLE "SERVICE_REFERENTIEL" ADD CONSTRAINT "SERVICE_REFERENTIEL_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + IF gv(124) = gv(114) THEN + RETURN gv(114) * s.taux_fc; + ELSE + RETURN 0; + END IF; + END; --- SERVICE_REFERENTIEL_HMFK -ALTER TABLE "SERVICE_REFERENTIEL" ADD CONSTRAINT "SERVICE_REFERENTIEL_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + FUNCTION C3_154( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS + s ose_formule.t_service; + BEGIN + s := ose_formule.d_service( vh.service_id ); --- SEUIL_CHARGE_ANNEE_FK -ALTER TABLE "SEUIL_CHARGE" ADD CONSTRAINT "SEUIL_CHARGE_ANNEE_FK" FOREIGN KEY ("ANNEE_ID") - REFERENCES "ANNEE" ("ID") ENABLE; + IF gv(124) = gv(114) THEN + RETURN gv(114); + ELSE + RETURN 0; + END IF; + END; --- SEUIL_CH_GT_FORMATION_FK -ALTER TABLE "SEUIL_CHARGE" ADD CONSTRAINT "SEUIL_CH_GT_FORMATION_FK" FOREIGN KEY ("GROUPE_TYPE_FORMATION_ID") - REFERENCES "GROUPE_TYPE_FORMATION" ("ID") ENABLE; + FUNCTION C2_163( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS + s ose_formule.t_service; + BEGIN + s := ose_formule.d_service( vh.service_id ); --- SEUIL_CH_SCENARIO_FK -ALTER TABLE "SEUIL_CHARGE" ADD CONSTRAINT "SEUIL_CH_SCENARIO_FK" FOREIGN KEY ("SCENARIO_ID") - REFERENCES "SCENARIO" ("ID") ENABLE; + IF gv(123) <> gv(113) THEN + RETURN gv(123) * s.taux_fc; + ELSE + RETURN 0; + END IF; + END; --- SEUIL_CH_STRUCTURE_FK -ALTER TABLE "SEUIL_CHARGE" ADD CONSTRAINT "SEUIL_CH_STRUCTURE_FK" FOREIGN KEY ("STRUCTURE_ID") - REFERENCES "STRUCTURE" ("ID") ENABLE; + FUNCTION C3_163( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS + s ose_formule.t_service; + BEGIN + s := ose_formule.d_service( vh.service_id ); --- SEUIL_CH_TYPE_INTERVENTION_FK -ALTER TABLE "SEUIL_CHARGE" ADD CONSTRAINT "SEUIL_CH_TYPE_INTERVENTION_FK" FOREIGN KEY ("TYPE_INTERVENTION_ID") - REFERENCES "TYPE_INTERVENTION" ("ID") ENABLE; + IF gv(123) <> gv(113) THEN + RETURN gv(123); + ELSE + RETURN 0; + END IF; + END; --- SEUIL_CH_UTILISATEUR_HCFK -ALTER TABLE "SEUIL_CHARGE" ADD CONSTRAINT "SEUIL_CH_UTILISATEUR_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + FUNCTION C2_164( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS + s ose_formule.t_service; + BEGIN + s := ose_formule.d_service( vh.service_id ); --- SEUIL_CH_UTILISATEUR_HDFK -ALTER TABLE "SEUIL_CHARGE" ADD CONSTRAINT "SEUIL_CH_UTILISATEUR_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + IF gv(124) <> gv(114) THEN + RETURN gv(124) * s.taux_fc; + ELSE + RETURN 0; + END IF; + END; --- SEUIL_CH_UTILISATEUR_HMFK -ALTER TABLE "SEUIL_CHARGE" ADD CONSTRAINT "SEUIL_CH_UTILISATEUR_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + FUNCTION C3_164( vh ose_formule.t_volume_horaire ) RETURN FLOAT IS + s ose_formule.t_service; + BEGIN + s := ose_formule.d_service( vh.service_id ); --- SNE_ETAPE_FK -ALTER TABLE "SCENARIO_NOEUD_EFFECTIF" ADD CONSTRAINT "SNE_ETAPE_FK" FOREIGN KEY ("ETAPE_ID") - REFERENCES "ETAPE" ("ID") ENABLE; + IF gv(124) <> gv(114) THEN + RETURN gv(124); + ELSE + RETURN 0; + END IF; + END; --- SNE_SCENARIO_NOEUD_FK -ALTER TABLE "SCENARIO_NOEUD_EFFECTIF" ADD CONSTRAINT "SNE_SCENARIO_NOEUD_FK" FOREIGN KEY ("SCENARIO_NOEUD_ID") - REFERENCES "SCENARIO_NOEUD" ("ID") ON DELETE CASCADE ENABLE; --- SNE_TYPE_HEURES_FK -ALTER TABLE "SCENARIO_NOEUD_EFFECTIF" ADD CONSTRAINT "SNE_TYPE_HEURES_FK" FOREIGN KEY ("TYPE_HEURES_ID") - REFERENCES "TYPE_HEURES" ("ID") ON DELETE CASCADE ENABLE; --- SNS_SCENARIO_NOEUD_FK -ALTER TABLE "SCENARIO_NOEUD_SEUIL" ADD CONSTRAINT "SNS_SCENARIO_NOEUD_FK" FOREIGN KEY ("SCENARIO_NOEUD_ID") - REFERENCES "SCENARIO_NOEUD" ("ID") ON DELETE CASCADE ENABLE; --- SNS_TYPE_INTERVENTION_FK -ALTER TABLE "SCENARIO_NOEUD_SEUIL" ADD CONSTRAINT "SNS_TYPE_INTERVENTION_FK" FOREIGN KEY ("TYPE_INTERVENTION_ID") - REFERENCES "TYPE_INTERVENTION" ("ID") ON DELETE CASCADE ENABLE; --- SRFR_FK -ALTER TABLE "SERVICE_REFERENTIEL" ADD CONSTRAINT "SRFR_FK" FOREIGN KEY ("FONCTION_ID") - REFERENCES "FONCTION_REFERENTIEL" ("ID") ENABLE; --- SR_INTERVENANT_FK -ALTER TABLE "SERVICE_REFERENTIEL" ADD CONSTRAINT "SR_INTERVENANT_FK" FOREIGN KEY ("INTERVENANT_ID") - REFERENCES "INTERVENANT" ("ID") ON DELETE CASCADE ENABLE; --- SR_STRUCTURE_FK -ALTER TABLE "SERVICE_REFERENTIEL" ADD CONSTRAINT "SR_STRUCTURE_FK" FOREIGN KEY ("STRUCTURE_ID") - REFERENCES "STRUCTURE" ("ID") ENABLE; --- STATUT_INTERVENANT_HCFK -ALTER TABLE "STATUT_INTERVENANT" ADD CONSTRAINT "STATUT_INTERVENANT_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; --- STATUT_INTERVENANT_HDFK -ALTER TABLE "STATUT_INTERVENANT" ADD CONSTRAINT "STATUT_INTERVENANT_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; --- STATUT_INTERVENANT_HMFK -ALTER TABLE "STATUT_INTERVENANT" ADD CONSTRAINT "STATUT_INTERVENANT_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + PROCEDURE CALCUL_RESULTAT_V2( INTERVENANT_ID NUMERIC, TYPE_VOLUME_HORAIRE_ID NUMERIC, ETAT_VOLUME_HORAIRE_ID NUMERIC ) IS + current_tableau PLS_INTEGER; + id PLS_INTEGER; + val FLOAT; + TYPE t_liste_tableaux IS VARRAY (100) OF PLS_INTEGER; + liste_tableaux t_liste_tableaux; + resultat_total FLOAT; + res FLOAT; + vh ose_formule.t_volume_horaire; + vhr ose_formule.t_volume_horaire_ref; + BEGIN + V_INIT; --- STATUT_INTERVENANT_SOURCE_FK -ALTER TABLE "STATUT_INTERVENANT" ADD CONSTRAINT "STATUT_INTERVENANT_SOURCE_FK" FOREIGN KEY ("SOURCE_ID") - REFERENCES "SOURCE" ("ID") ON DELETE CASCADE ENABLE; + ose_formule.d_resultat.service_du := CASE + WHEN ose_formule.d_intervenant.depassement_service_du_sans_hc = 1 -- HC traitées comme du service + OR ose_formule.d_intervenant.heures_decharge < 0 -- s'il y a une décharge => aucune HC --- STATUT_INTERVENANT_TYPE_FK -ALTER TABLE "STATUT_INTERVENANT" ADD CONSTRAINT "STATUT_INTERVENANT_TYPE_FK" FOREIGN KEY ("TYPE_INTERVENANT_ID") - REFERENCES "TYPE_INTERVENANT" ("ID") ENABLE; + THEN 9999 + ELSE ose_formule.d_intervenant.heures_service_statutaire + ose_formule.d_intervenant.heures_service_modifie + END; --- STAT_PRIV_PRIVILEGE_FK -ALTER TABLE "STATUT_PRIVILEGE" ADD CONSTRAINT "STAT_PRIV_PRIVILEGE_FK" FOREIGN KEY ("PRIVILEGE_ID") - REFERENCES "PRIVILEGE" ("ID") ON DELETE CASCADE ENABLE; + liste_tableaux := t_liste_tableaux( + 11, 12, 13, 14, 15, 16, 17, + 21, 22, 23, 24, 25, 26, 27, + 31, 32, 33, 34, 35, 36, 37, + 41, 42, 43, 44, 45, 46, 47, + 51, 52, 53, 54, 55, 56, 57, + 61, 62, + 71, 72, + 81, 82, 83, 84, + 91, 92, 93, 94, 95, 96, 97, + 101, 102, 103, 104, 105, 106, 107, + 111, 112, 113, 114, 115, 116, 117, + 123, 124, + 131, 132, + 141, 142, + 151, 152, 153, 154, + 163, 164 + ); --- STAT_PRIV_STATUT_FK -ALTER TABLE "STATUT_PRIVILEGE" ADD CONSTRAINT "STAT_PRIV_STATUT_FK" FOREIGN KEY ("STATUT_ID") - REFERENCES "STATUT_INTERVENANT" ("ID") ON DELETE CASCADE ENABLE; + FOR i IN liste_tableaux.FIRST .. liste_tableaux.LAST + LOOP + current_tableau := liste_tableaux(i); --- STRUCTURE_HCFK -ALTER TABLE "STRUCTURE" ADD CONSTRAINT "STRUCTURE_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + IF current_tableau IN ( -- calcul pour les volumes horaires des services + 11, 12, 13, 14, + 21, 22, 23, 24, + 41, 42, 43, 44, + 51, 52, 53, 54, + 61, 62, + 71, 72, + 81, 82, 83, 84, + 91, 92, 93, 94, + 101, 102, 103, 104, + 111, 112, 113, 114, + 123, 124, + 131, 132, + 141, 142, + 151, 152, 153, 154, + 163, 164 + ) THEN --- STRUCTURE_HDFK -ALTER TABLE "STRUCTURE" ADD CONSTRAINT "STRUCTURE_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + current_id := ose_formule.d_volume_horaire.FIRST; + LOOP EXIT WHEN current_id IS NULL; + vh := ose_formule.d_volume_horaire(current_id); + res := CASE current_tableau + WHEN 11 THEN C2_11 (vh) WHEN 12 THEN C2_12 (vh) WHEN 13 THEN C2_13 (vh) WHEN 14 THEN C2_14 (vh) + WHEN 21 THEN C2_21 (vh) WHEN 22 THEN C2_22 (vh) WHEN 23 THEN C2_23 (vh) WHEN 24 THEN C2_24 (vh) + WHEN 41 THEN C2_41 (vh) WHEN 42 THEN C2_42 (vh) WHEN 43 THEN C2_43 (vh) WHEN 44 THEN C2_44 (vh) + WHEN 51 THEN C2_51 (vh) WHEN 52 THEN C2_52 (vh) WHEN 53 THEN C2_53 (vh) WHEN 54 THEN C2_54 (vh) + WHEN 61 THEN C2_61 (vh) WHEN 62 THEN C2_62 (vh) + WHEN 71 THEN C2_71 (vh) WHEN 72 THEN C2_72 (vh) + WHEN 81 THEN C2_81 (vh) WHEN 82 THEN C2_82 (vh) WHEN 83 THEN C2_83 (vh) WHEN 84 THEN C2_84 (vh) + WHEN 91 THEN C2_91 (vh) WHEN 92 THEN C2_92 (vh) WHEN 93 THEN C2_93 (vh) WHEN 94 THEN C2_94 (vh) + WHEN 101 THEN C2_101 (vh) WHEN 102 THEN C2_102 (vh) WHEN 103 THEN C2_103 (vh) WHEN 104 THEN C2_104 (vh) + WHEN 111 THEN C2_111 (vh) WHEN 112 THEN C2_112 (vh) WHEN 113 THEN C2_113 (vh) WHEN 114 THEN C2_114 (vh) + WHEN 123 THEN C2_123 (vh) WHEN 124 THEN C2_124 (vh) + WHEN 131 THEN C2_131 (vh) WHEN 132 THEN C2_132 (vh) + WHEN 141 THEN C2_141 (vh) WHEN 142 THEN C2_142 (vh) + WHEN 151 THEN C2_151 (vh) WHEN 152 THEN C2_152 (vh) WHEN 153 THEN C2_153 (vh) WHEN 154 THEN C2_154 (vh) + WHEN 163 THEN C2_163 (vh) WHEN 164 THEN C2_164 (vh) + END; + SV( current_tableau, current_id, res ); + current_id := ose_formule.d_volume_horaire.NEXT(current_id); + END LOOP; --- STRUCTURE_HMFK -ALTER TABLE "STRUCTURE" ADD CONSTRAINT "STRUCTURE_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + ELSIF current_tableau IN ( -- calcul des services restants dus + 31, 32, 33, 34, 35, 36, 37 + ) THEN --- STRUCTURE_SOURCE_FK -ALTER TABLE "STRUCTURE" ADD CONSTRAINT "STRUCTURE_SOURCE_FK" FOREIGN KEY ("SOURCE_ID") - REFERENCES "SOURCE" ("ID") ON DELETE CASCADE ENABLE; + res := CASE current_tableau + WHEN 31 THEN C2_31 WHEN 32 THEN C2_32 WHEN 33 THEN C2_33 + WHEN 34 THEN C2_34 WHEN 35 THEN C2_35 WHEN 36 THEN C2_36 + WHEN 37 THEN C2_37 + END; + SV( current_tableau, res ); --- TAS_STATUT_INTERVENANT_FK -ALTER TABLE "TYPE_AGREMENT_STATUT" ADD CONSTRAINT "TAS_STATUT_INTERVENANT_FK" FOREIGN KEY ("STATUT_INTERVENANT_ID") - REFERENCES "STATUT_INTERVENANT" ("ID") ON DELETE CASCADE ENABLE; + ELSIF current_tableau IN ( -- tableaux de calcul des volumes horaires référentiels + 15, 16, 17, + 25, 26, 27, + 45, 46, 47, + 55, 56, 57, + 95, 96, 97, + 105, 106, 107, + 115, 116, 117 + ) THEN --- TAS_TYPE_AGREMENT_FK -ALTER TABLE "TYPE_AGREMENT_STATUT" ADD CONSTRAINT "TAS_TYPE_AGREMENT_FK" FOREIGN KEY ("TYPE_AGREMENT_ID") - REFERENCES "TYPE_AGREMENT" ("ID") ON DELETE CASCADE ENABLE; + current_id := ose_formule.d_volume_horaire_ref.FIRST; + LOOP EXIT WHEN current_id IS NULL; + vhr := ose_formule.d_volume_horaire_ref(current_id); + res := CASE current_tableau + WHEN 15 THEN C2_15 (vhr) WHEN 16 THEN C2_16 (vhr) WHEN 17 THEN C2_17 (vhr) + WHEN 25 THEN C2_25 (vhr) WHEN 26 THEN C2_26 (vhr) WHEN 27 THEN C2_27 (vhr) + WHEN 45 THEN C2_45 (vhr) WHEN 46 THEN C2_46 (vhr) WHEN 47 THEN C2_47 (vhr) + WHEN 55 THEN C2_55 (vhr) WHEN 56 THEN C2_56 (vhr) WHEN 57 THEN C2_57 (vhr) + WHEN 95 THEN C2_95 (vhr) WHEN 96 THEN C2_96 (vhr) WHEN 97 THEN C2_97 (vhr) + WHEN 105 THEN C2_105 (vhr) WHEN 106 THEN C2_106 (vhr) WHEN 107 THEN C2_107 (vhr) + WHEN 115 THEN C2_115 (vhr) WHEN 116 THEN C2_116 (vhr) WHEN 117 THEN C2_117 (vhr) + END; + SV(current_tableau, current_id, res); + current_id := ose_formule.d_volume_horaire_ref.NEXT(current_id); + END LOOP; --- TAUX_HORAIRE_HETD_HCFK -ALTER TABLE "TAUX_HORAIRE_HETD" ADD CONSTRAINT "TAUX_HORAIRE_HETD_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + END IF; + END LOOP; --- TAUX_HORAIRE_HETD_HDFK -ALTER TABLE "TAUX_HORAIRE_HETD" ADD CONSTRAINT "TAUX_HORAIRE_HETD_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + resultat_total := gt( 55) + gt( 56) + gt( 57) + + gt( 61) + gt( 62) + + gt( 71) + gt( 72) + + gt( 81) + gt( 82) + gt( 83) + gt( 84) + + gt(115) + gt(116) + gt(117) + + gt(131) + gt(132) + + gt(141) + gt(142) + + gt(151) + gt(152) + gt(153) + gt(154) + + gt(163) + gt(164); --- TAUX_HORAIRE_HETD_HMFK -ALTER TABLE "TAUX_HORAIRE_HETD" ADD CONSTRAINT "TAUX_HORAIRE_HETD_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + ose_formule.d_resultat.service_du := CASE + WHEN ose_formule.d_intervenant.depassement_service_du_sans_hc = 1 OR ose_formule.d_intervenant.heures_decharge < 0 + THEN GREATEST(resultat_total, ose_formule.d_intervenant.heures_service_statutaire + ose_formule.d_intervenant.heures_service_modifie) + ELSE ose_formule.d_intervenant.heures_service_statutaire + ose_formule.d_intervenant.heures_service_modifie + END; + ose_formule.d_resultat.solde := resultat_total - ose_formule.d_resultat.service_du; + IF ose_formule.d_resultat.solde >= 0 THEN + ose_formule.d_resultat.sous_service := 0; + ose_formule.d_resultat.heures_compl := ose_formule.d_resultat.solde; + ELSE + ose_formule.d_resultat.sous_service := ose_formule.d_resultat.solde * -1; + ose_formule.d_resultat.heures_compl := 0; + END IF; --- TBCH_ANNEE_FK -ALTER TABLE "TBL_CHARGENS" ADD CONSTRAINT "TBCH_ANNEE_FK" FOREIGN KEY ("ANNEE_ID") - REFERENCES "ANNEE" ("ID") ON DELETE CASCADE ENABLE; + -- répartition des résultats par volumes horaires + current_id := ose_formule.d_volume_horaire.FIRST; + LOOP EXIT WHEN current_id IS NULL; + ose_formule.d_resultat.volume_horaire(current_id).service_fi := gv( 61) + gv( 62); + ose_formule.d_resultat.volume_horaire(current_id).service_fa := gv( 71) + gv( 72); + ose_formule.d_resultat.volume_horaire(current_id).service_fc := gv( 81) + gv( 82) + gv( 83) + gv( 84); + ose_formule.d_resultat.volume_horaire(current_id).heures_compl_fi := gv(131) + gv(132); + ose_formule.d_resultat.volume_horaire(current_id).heures_compl_fa := gv(141) + gv(142); + ose_formule.d_resultat.volume_horaire(current_id).heures_compl_fc := gv(151) + gv(152) + gv(153) + gv(154); + ose_formule.d_resultat.volume_horaire(current_id).heures_compl_fc_majorees := gv(163) + gv(164); + current_id := ose_formule.d_volume_horaire.NEXT(current_id); + END LOOP; --- TBCH_ELEMENT_PEDAGOGIQUE_FK -ALTER TABLE "TBL_CHARGENS" ADD CONSTRAINT "TBCH_ELEMENT_PEDAGOGIQUE_FK" FOREIGN KEY ("ELEMENT_PEDAGOGIQUE_ID") - REFERENCES "ELEMENT_PEDAGOGIQUE" ("ID") ON DELETE CASCADE ENABLE; + -- répartition des résultats par volumes horaires référentiel + current_id := ose_formule.d_volume_horaire_ref.FIRST; + LOOP EXIT WHEN current_id IS NULL; + ose_formule.d_resultat.volume_horaire_ref(current_id).service_referentiel := gv(55) + gv(56) + gv(57); + ose_formule.d_resultat.volume_horaire_ref(current_id).heures_compl_referentiel := gv(115) + gv(116) + gv(117); + current_id := ose_formule.d_volume_horaire_ref.NEXT(current_id); + END LOOP; --- TBCH_ETAPE_FK -ALTER TABLE "TBL_CHARGENS" ADD CONSTRAINT "TBCH_ETAPE_FK" FOREIGN KEY ("ETAPE_ID") - REFERENCES "ETAPE" ("ID") ON DELETE CASCADE ENABLE; + END; --- TBCH_ETAPE_FKV1 -ALTER TABLE "TBL_CHARGENS" ADD CONSTRAINT "TBCH_ETAPE_FKV1" FOREIGN KEY ("ETAPE_ENS_ID") - REFERENCES "ETAPE" ("ID") ON DELETE CASCADE ENABLE; --- TBCH_GROUPE_TYPE_FORMATION_FK -ALTER TABLE "TBL_CHARGENS" ADD CONSTRAINT "TBCH_GROUPE_TYPE_FORMATION_FK" FOREIGN KEY ("GROUPE_TYPE_FORMATION_ID") - REFERENCES "GROUPE_TYPE_FORMATION" ("ID") ON DELETE CASCADE ENABLE; --- TBCH_NOEUD_FK -ALTER TABLE "TBL_CHARGENS" ADD CONSTRAINT "TBCH_NOEUD_FK" FOREIGN KEY ("NOEUD_ID") - REFERENCES "NOEUD" ("ID") ON DELETE CASCADE ENABLE; --- TBCH_SCENARIO_FK -ALTER TABLE "TBL_CHARGENS" ADD CONSTRAINT "TBCH_SCENARIO_FK" FOREIGN KEY ("SCENARIO_ID") - REFERENCES "SCENARIO" ("ID") ON DELETE CASCADE ENABLE; --- TBCH_STRUCTURE_FK -ALTER TABLE "TBL_CHARGENS" ADD CONSTRAINT "TBCH_STRUCTURE_FK" FOREIGN KEY ("STRUCTURE_ID") - REFERENCES "STRUCTURE" ("ID") ON DELETE CASCADE ENABLE; --- TBCH_TYPE_HEURES_FK -ALTER TABLE "TBL_CHARGENS" ADD CONSTRAINT "TBCH_TYPE_HEURES_FK" FOREIGN KEY ("TYPE_HEURES_ID") - REFERENCES "TYPE_HEURES" ("ID") ON DELETE CASCADE ENABLE; --- TBCH_TYPE_INTERVENTION_FK -ALTER TABLE "TBL_CHARGENS" ADD CONSTRAINT "TBCH_TYPE_INTERVENTION_FK" FOREIGN KEY ("TYPE_INTERVENTION_ID") - REFERENCES "TYPE_INTERVENTION" ("ID") ON DELETE CASCADE ENABLE; --- TBL_AGR_AGREMENT_FK -ALTER TABLE "TBL_AGREMENT" ADD CONSTRAINT "TBL_AGR_AGREMENT_FK" FOREIGN KEY ("AGREMENT_ID") - REFERENCES "AGREMENT" ("ID") ON DELETE CASCADE ENABLE; --- TBL_AGR_ANNEE_FK -ALTER TABLE "TBL_AGREMENT" ADD CONSTRAINT "TBL_AGR_ANNEE_FK" FOREIGN KEY ("ANNEE_ID") - REFERENCES "ANNEE" ("ID") ON DELETE CASCADE ENABLE; --- TBL_AGR_INTERVENANT_FK -ALTER TABLE "TBL_AGREMENT" ADD CONSTRAINT "TBL_AGR_INTERVENANT_FK" FOREIGN KEY ("INTERVENANT_ID") - REFERENCES "INTERVENANT" ("ID") ON DELETE CASCADE ENABLE; --- TBL_AGR_STRUCTURE_FK -ALTER TABLE "TBL_AGREMENT" ADD CONSTRAINT "TBL_AGR_STRUCTURE_FK" FOREIGN KEY ("STRUCTURE_ID") - REFERENCES "STRUCTURE" ("ID") ON DELETE CASCADE ENABLE; --- TBL_AGR_TYPE_AGREMENT_FK -ALTER TABLE "TBL_AGREMENT" ADD CONSTRAINT "TBL_AGR_TYPE_AGREMENT_FK" FOREIGN KEY ("TYPE_AGREMENT_ID") - REFERENCES "TYPE_AGREMENT" ("ID") ON DELETE CASCADE ENABLE; --- TBL_CLOTURE_REALISE_ANNEE_FK -ALTER TABLE "TBL_CLOTURE_REALISE" ADD CONSTRAINT "TBL_CLOTURE_REALISE_ANNEE_FK" FOREIGN KEY ("ANNEE_ID") - REFERENCES "ANNEE" ("ID") ON DELETE CASCADE ENABLE; --- TBL_CLO_REAL_INTERVENANT_FK -ALTER TABLE "TBL_CLOTURE_REALISE" ADD CONSTRAINT "TBL_CLO_REAL_INTERVENANT_FK" FOREIGN KEY ("INTERVENANT_ID") - REFERENCES "INTERVENANT" ("ID") ON DELETE CASCADE ENABLE; + PROCEDURE CALCUL_RESULTAT_V3( INTERVENANT_ID NUMERIC, TYPE_VOLUME_HORAIRE_ID NUMERIC, ETAT_VOLUME_HORAIRE_ID NUMERIC ) IS + current_tableau PLS_INTEGER; + id PLS_INTEGER; + val FLOAT; + TYPE t_liste_tableaux IS VARRAY (100) OF PLS_INTEGER; + liste_tableaux t_liste_tableaux; + resultat_total FLOAT; + res FLOAT; + vh ose_formule.t_volume_horaire; + vhr ose_formule.t_volume_horaire_ref; + BEGIN --- TBL_CONTRAT_ANNEE_FK -ALTER TABLE "TBL_CONTRAT" ADD CONSTRAINT "TBL_CONTRAT_ANNEE_FK" FOREIGN KEY ("ANNEE_ID") - REFERENCES "ANNEE" ("ID") ON DELETE CASCADE ENABLE; + -- si l'année est antérieure à 2016/2017 alors on utilise la V2!! + IF ose_formule.d_intervenant.annee_id < 2016 THEN + CALCUL_RESULTAT_V2( INTERVENANT_ID, TYPE_VOLUME_HORAIRE_ID, ETAT_VOLUME_HORAIRE_ID ); + RETURN; + END IF; --- TBL_CONTRAT_INTERVENANT_FK -ALTER TABLE "TBL_CONTRAT" ADD CONSTRAINT "TBL_CONTRAT_INTERVENANT_FK" FOREIGN KEY ("INTERVENANT_ID") - REFERENCES "INTERVENANT" ("ID") ON DELETE CASCADE ENABLE; + V_INIT; --- TBL_CONTRAT_STRUCTURE_FK -ALTER TABLE "TBL_CONTRAT" ADD CONSTRAINT "TBL_CONTRAT_STRUCTURE_FK" FOREIGN KEY ("STRUCTURE_ID") - REFERENCES "STRUCTURE" ("ID") ON DELETE CASCADE ENABLE; + ose_formule.d_resultat.service_du := CASE + WHEN ose_formule.d_intervenant.depassement_service_du_sans_hc = 1 -- HC traitées comme du service + OR ose_formule.d_intervenant.heures_decharge < 0 -- s'il y a une décharge => aucune HC --- TBL_CSD_ANNEE_FK -ALTER TABLE "TBL_CHARGENS_SEUILS_DEF" ADD CONSTRAINT "TBL_CSD_ANNEE_FK" FOREIGN KEY ("ANNEE_ID") - REFERENCES "ANNEE" ("ID") ENABLE; + THEN 9999 + ELSE ose_formule.d_intervenant.heures_service_statutaire + ose_formule.d_intervenant.heures_service_modifie + END; --- TBL_CSD_GTF_FK -ALTER TABLE "TBL_CHARGENS_SEUILS_DEF" ADD CONSTRAINT "TBL_CSD_GTF_FK" FOREIGN KEY ("GROUPE_TYPE_FORMATION_ID") - REFERENCES "GROUPE_TYPE_FORMATION" ("ID") ENABLE; + liste_tableaux := t_liste_tableaux( + 11, 12, 13, 14, 15, 16, 17, + 21, 22, 23, 24, 25, 26, 27, + 31, 32, 33, 34, 35, 36, 37, + 41, 42, 43, 44, 45, 46, 47, + 51, 52, 53, 54, 55, 56, 57, + 61, 62, + 71, 72, + 81, 82, 83, 84, + 91, 92, 93, 94, 95, 96, 97, + 101, 102, 103, 104, 105, 106, 107, + 111, 112, 113, 114, 115, 116, 117, + 123, 124, + 131, 132, + 141, 142, + 151, 152, 153, 154, + 163, 164 + ); --- TBL_CSD_SCENARIO_FK -ALTER TABLE "TBL_CHARGENS_SEUILS_DEF" ADD CONSTRAINT "TBL_CSD_SCENARIO_FK" FOREIGN KEY ("SCENARIO_ID") - REFERENCES "SCENARIO" ("ID") ENABLE; + FOR i IN liste_tableaux.FIRST .. liste_tableaux.LAST + LOOP + current_tableau := liste_tableaux(i); --- TBL_CSD_STRUCTURE_FK -ALTER TABLE "TBL_CHARGENS_SEUILS_DEF" ADD CONSTRAINT "TBL_CSD_STRUCTURE_FK" FOREIGN KEY ("STRUCTURE_ID") - REFERENCES "STRUCTURE" ("ID") ENABLE; + IF current_tableau IN ( -- calcul pour les volumes horaires des services + 11, 12, 13, 14, + 21, 22, 23, 24, + 41, 42, 43, 44, + 51, 52, 53, 54, + 61, 62, + 71, 72, + 81, 82, 83, 84, + 91, 92, 93, 94, + 101, 102, 103, 104, + 111, 112, 113, 114, + 123, 124, + 131, 132, + 141, 142, + 151, 152, 153, 154, + 163, 164 + ) THEN --- TBL_CSD_TYPE_INTERVENTION_FK -ALTER TABLE "TBL_CHARGENS_SEUILS_DEF" ADD CONSTRAINT "TBL_CSD_TYPE_INTERVENTION_FK" FOREIGN KEY ("TYPE_INTERVENTION_ID") - REFERENCES "TYPE_INTERVENTION" ("ID") ENABLE; + current_id := ose_formule.d_volume_horaire.FIRST; + LOOP EXIT WHEN current_id IS NULL; + vh := ose_formule.d_volume_horaire(current_id); + res := CASE current_tableau + WHEN 11 THEN C3_11 (vh) WHEN 12 THEN C3_12 (vh) WHEN 13 THEN C3_13 (vh) WHEN 14 THEN C3_14 (vh) + WHEN 21 THEN C2_21 (vh) WHEN 22 THEN C2_22 (vh) WHEN 23 THEN C2_23 (vh) WHEN 24 THEN C2_24 (vh) + WHEN 41 THEN C2_41 (vh) WHEN 42 THEN C2_42 (vh) WHEN 43 THEN C2_43 (vh) WHEN 44 THEN C2_44 (vh) + WHEN 51 THEN C2_51 (vh) WHEN 52 THEN C2_52 (vh) WHEN 53 THEN C2_53 (vh) WHEN 54 THEN C2_54 (vh) + WHEN 61 THEN C3_61 (vh) WHEN 62 THEN C3_62 (vh) + WHEN 71 THEN C3_71 (vh) WHEN 72 THEN C3_72 (vh) + WHEN 83 THEN C3_83 (vh) WHEN 84 THEN C3_84 (vh) + WHEN 91 THEN C2_91 (vh) WHEN 92 THEN C2_92 (vh) WHEN 93 THEN C2_93 (vh) WHEN 94 THEN C2_94 (vh) + WHEN 101 THEN C2_101 (vh) WHEN 102 THEN C2_102 (vh) WHEN 103 THEN C2_103 (vh) WHEN 104 THEN C2_104 (vh) + WHEN 111 THEN C2_111 (vh) WHEN 112 THEN C2_112 (vh) WHEN 113 THEN C2_113 (vh) WHEN 114 THEN C2_114 (vh) + WHEN 123 THEN C3_123 (vh) WHEN 124 THEN C3_124 (vh) + WHEN 131 THEN C3_131 (vh) WHEN 132 THEN C3_132 (vh) + WHEN 141 THEN C3_141 (vh) WHEN 142 THEN C3_142 (vh) + WHEN 153 THEN C3_153 (vh) WHEN 154 THEN C3_154 (vh) + WHEN 163 THEN C3_163 (vh) WHEN 164 THEN C3_164 (vh) + END; + SV( current_tableau, current_id, res ); + current_id := ose_formule.d_volume_horaire.NEXT(current_id); + END LOOP; --- TBL_DEMS_TBL_FK -ALTER TABLE "TBL_DEMS" ADD CONSTRAINT "TBL_DEMS_TBL_FK" FOREIGN KEY ("TBL_NAME") - REFERENCES "TBL" ("TBL_NAME") ON DELETE CASCADE ENABLE; + ELSIF current_tableau IN ( -- calcul des services restants dus + 31, 32, 33, 34, 35, 36, 37 + ) THEN --- TBL_DMLIQ_ANNEE_FK -ALTER TABLE "TBL_DMEP_LIQUIDATION" ADD CONSTRAINT "TBL_DMLIQ_ANNEE_FK" FOREIGN KEY ("ANNEE_ID") - REFERENCES "ANNEE" ("ID") ON DELETE CASCADE ENABLE; + res := CASE current_tableau + WHEN 31 THEN C2_31 WHEN 32 THEN C2_32 WHEN 33 THEN C2_33 + WHEN 34 THEN C2_34 WHEN 35 THEN C2_35 WHEN 36 THEN C2_36 + WHEN 37 THEN C2_37 + END; + SV( current_tableau, res ); --- TBL_DMLIQ_STRUCTURE_FK -ALTER TABLE "TBL_DMEP_LIQUIDATION" ADD CONSTRAINT "TBL_DMLIQ_STRUCTURE_FK" FOREIGN KEY ("STRUCTURE_ID") - REFERENCES "STRUCTURE" ("ID") ON DELETE CASCADE ENABLE; + ELSIF current_tableau IN ( -- tableaux de calcul des volumes horaires référentiels + 15, 16, 17, + 25, 26, 27, + 45, 46, 47, + 55, 56, 57, + 95, 96, 97, + 105, 106, 107, + 115, 116, 117 + ) THEN --- TBL_DMLIQ_TYPE_RESSOURCE_FK -ALTER TABLE "TBL_DMEP_LIQUIDATION" ADD CONSTRAINT "TBL_DMLIQ_TYPE_RESSOURCE_FK" FOREIGN KEY ("TYPE_RESSOURCE_ID") - REFERENCES "TYPE_RESSOURCE" ("ID") ON DELETE CASCADE ENABLE; + current_id := ose_formule.d_volume_horaire_ref.FIRST; + LOOP EXIT WHEN current_id IS NULL; + vhr := ose_formule.d_volume_horaire_ref(current_id); + res := CASE current_tableau + WHEN 15 THEN C2_15 (vhr) WHEN 16 THEN C2_16 (vhr) WHEN 17 THEN C2_17 (vhr) + WHEN 25 THEN C2_25 (vhr) WHEN 26 THEN C2_26 (vhr) WHEN 27 THEN C2_27 (vhr) + WHEN 45 THEN C2_45 (vhr) WHEN 46 THEN C2_46 (vhr) WHEN 47 THEN C2_47 (vhr) + WHEN 55 THEN C2_55 (vhr) WHEN 56 THEN C2_56 (vhr) WHEN 57 THEN C2_57 (vhr) + WHEN 95 THEN C2_95 (vhr) WHEN 96 THEN C2_96 (vhr) WHEN 97 THEN C2_97 (vhr) + WHEN 105 THEN C2_105 (vhr) WHEN 106 THEN C2_106 (vhr) WHEN 107 THEN C2_107 (vhr) + WHEN 115 THEN C2_115 (vhr) WHEN 116 THEN C2_116 (vhr) WHEN 117 THEN C2_117 (vhr) + END; + SV(current_tableau, current_id, res); + current_id := ose_formule.d_volume_horaire_ref.NEXT(current_id); + END LOOP; --- TBL_DOSSIER_ANNEE_FK -ALTER TABLE "TBL_DOSSIER" ADD CONSTRAINT "TBL_DOSSIER_ANNEE_FK" FOREIGN KEY ("ANNEE_ID") - REFERENCES "ANNEE" ("ID") ON DELETE CASCADE ENABLE; + END IF; + END LOOP; --- TBL_DOSSIER_DOSSIER_FK -ALTER TABLE "TBL_DOSSIER" ADD CONSTRAINT "TBL_DOSSIER_DOSSIER_FK" FOREIGN KEY ("DOSSIER_ID") - REFERENCES "DOSSIER" ("ID") ON DELETE CASCADE ENABLE; + resultat_total := gt( 55) + gt( 56) + gt( 57) + + gt( 61) + gt( 62) + + gt( 71) + gt( 72) + + gt( 83) + gt( 84) + + gt(115) + gt(116) + gt(117) + + gt(131) + gt(132) + + gt(141) + gt(142) + + gt(153) + gt(154) + + gt(163) + gt(164); --- TBL_DOSSIER_INTERVENANT_FK -ALTER TABLE "TBL_DOSSIER" ADD CONSTRAINT "TBL_DOSSIER_INTERVENANT_FK" FOREIGN KEY ("INTERVENANT_ID") - REFERENCES "INTERVENANT" ("ID") ON DELETE CASCADE ENABLE; + ose_formule.d_resultat.service_du := CASE + WHEN ose_formule.d_intervenant.depassement_service_du_sans_hc = 1 OR ose_formule.d_intervenant.heures_decharge < 0 + THEN GREATEST(resultat_total, ose_formule.d_intervenant.heures_service_statutaire + ose_formule.d_intervenant.heures_service_modifie) + ELSE ose_formule.d_intervenant.heures_service_statutaire + ose_formule.d_intervenant.heures_service_modifie + END; + ose_formule.d_resultat.solde := resultat_total - ose_formule.d_resultat.service_du; + IF ose_formule.d_resultat.solde >= 0 THEN + ose_formule.d_resultat.sous_service := 0; + ose_formule.d_resultat.heures_compl := ose_formule.d_resultat.solde; + ELSE + ose_formule.d_resultat.sous_service := ose_formule.d_resultat.solde * -1; + ose_formule.d_resultat.heures_compl := 0; + END IF; --- TBL_DOSSIER_VALIDATION_FK -ALTER TABLE "TBL_DOSSIER" ADD CONSTRAINT "TBL_DOSSIER_VALIDATION_FK" FOREIGN KEY ("VALIDATION_ID") - REFERENCES "VALIDATION" ("ID") ON DELETE CASCADE ENABLE; + -- répartition des résultats par volumes horaires + current_id := ose_formule.d_volume_horaire.FIRST; + LOOP EXIT WHEN current_id IS NULL; + ose_formule.d_resultat.volume_horaire(current_id).service_fi := gv( 61) + gv( 62); + ose_formule.d_resultat.volume_horaire(current_id).service_fa := gv( 71) + gv( 72); + ose_formule.d_resultat.volume_horaire(current_id).service_fc := gv( 83) + gv( 84); + ose_formule.d_resultat.volume_horaire(current_id).heures_compl_fi := gv(131) + gv(132); + ose_formule.d_resultat.volume_horaire(current_id).heures_compl_fa := gv(141) + gv(142); + ose_formule.d_resultat.volume_horaire(current_id).heures_compl_fc := gv(153) + gv(154); + ose_formule.d_resultat.volume_horaire(current_id).heures_compl_fc_majorees := gv(163) + gv(164); + current_id := ose_formule.d_volume_horaire.NEXT(current_id); + END LOOP; --- TBL_LIEN_LIEN_FK -ALTER TABLE "TBL_LIEN" ADD CONSTRAINT "TBL_LIEN_LIEN_FK" FOREIGN KEY ("LIEN_ID") - REFERENCES "LIEN" ("ID") ENABLE; + -- répartition des résultats par volumes horaires référentiel + current_id := ose_formule.d_volume_horaire_ref.FIRST; + LOOP EXIT WHEN current_id IS NULL; + ose_formule.d_resultat.volume_horaire_ref(current_id).service_referentiel := gv(55) + gv(56) + gv(57); + ose_formule.d_resultat.volume_horaire_ref(current_id).heures_compl_referentiel := gv(115) + gv(116) + gv(117); + current_id := ose_formule.d_volume_horaire_ref.NEXT(current_id); + END LOOP; --- TBL_LIEN_NOEUD_INF_FK -ALTER TABLE "TBL_LIEN" ADD CONSTRAINT "TBL_LIEN_NOEUD_INF_FK" FOREIGN KEY ("NOEUD_INF_ID") - REFERENCES "NOEUD" ("ID") ENABLE; + END; --- TBL_LIEN_NOEUD_SUP_FK -ALTER TABLE "TBL_LIEN" ADD CONSTRAINT "TBL_LIEN_NOEUD_SUP_FK" FOREIGN KEY ("NOEUD_SUP_ID") - REFERENCES "NOEUD" ("ID") ENABLE; --- TBL_LIEN_SCENARIO_FK -ALTER TABLE "TBL_LIEN" ADD CONSTRAINT "TBL_LIEN_SCENARIO_FK" FOREIGN KEY ("SCENARIO_ID") - REFERENCES "SCENARIO" ("ID") ENABLE; --- TBL_LIEN_SCENARIO_LIEN_FK -ALTER TABLE "TBL_LIEN" ADD CONSTRAINT "TBL_LIEN_SCENARIO_LIEN_FK" FOREIGN KEY ("SCENARIO_LIEN_ID") - REFERENCES "SCENARIO_LIEN" ("ID") ENABLE; --- TBL_LIEN_STRUCTURE_FK -ALTER TABLE "TBL_LIEN" ADD CONSTRAINT "TBL_LIEN_STRUCTURE_FK" FOREIGN KEY ("STRUCTURE_ID") - REFERENCES "STRUCTURE" ("ID") ENABLE; --- TBL_PAIEMENT_ANNEE_FK -ALTER TABLE "TBL_PAIEMENT" ADD CONSTRAINT "TBL_PAIEMENT_ANNEE_FK" FOREIGN KEY ("ANNEE_ID") - REFERENCES "ANNEE" ("ID") ON DELETE CASCADE ENABLE; --- TBL_PAIEMENT_FRSR_FK -ALTER TABLE "TBL_PAIEMENT" ADD CONSTRAINT "TBL_PAIEMENT_FRSR_FK" FOREIGN KEY ("FORMULE_RES_SERVICE_REF_ID") - REFERENCES "FORMULE_RESULTAT_SERVICE_REF" ("ID") ON DELETE CASCADE ENABLE; --- TBL_PAIEMENT_FRS_FK -ALTER TABLE "TBL_PAIEMENT" ADD CONSTRAINT "TBL_PAIEMENT_FRS_FK" FOREIGN KEY ("FORMULE_RES_SERVICE_ID") - REFERENCES "FORMULE_RESULTAT_SERVICE" ("ID") ON DELETE CASCADE ENABLE; --- TBL_PAIEMENT_INTERVENANT_FK -ALTER TABLE "TBL_PAIEMENT" ADD CONSTRAINT "TBL_PAIEMENT_INTERVENANT_FK" FOREIGN KEY ("INTERVENANT_ID") - REFERENCES "INTERVENANT" ("ID") ON DELETE CASCADE ENABLE; --- TBL_PAIEMENT_MEP_FK -ALTER TABLE "TBL_PAIEMENT" ADD CONSTRAINT "TBL_PAIEMENT_MEP_FK" FOREIGN KEY ("MISE_EN_PAIEMENT_ID") - REFERENCES "MISE_EN_PAIEMENT" ("ID") ON DELETE CASCADE ENABLE; --- TBL_PAIEMENT_PERIODE_FK -ALTER TABLE "TBL_PAIEMENT" ADD CONSTRAINT "TBL_PAIEMENT_PERIODE_FK" FOREIGN KEY ("PERIODE_PAIEMENT_ID") - REFERENCES "PERIODE" ("ID") ON DELETE CASCADE ENABLE; --- TBL_PAIEMENT_STRUCTURE_FK -ALTER TABLE "TBL_PAIEMENT" ADD CONSTRAINT "TBL_PAIEMENT_STRUCTURE_FK" FOREIGN KEY ("STRUCTURE_ID") - REFERENCES "STRUCTURE" ("ID") ON DELETE CASCADE ENABLE; --- TBL_PIECE_JOINTE_ANNEE_FK -ALTER TABLE "TBL_PIECE_JOINTE" ADD CONSTRAINT "TBL_PIECE_JOINTE_ANNEE_FK" FOREIGN KEY ("ANNEE_ID") - REFERENCES "ANNEE" ("ID") ON DELETE CASCADE ENABLE; --- TBL_PJD_ANNEE_FK -ALTER TABLE "TBL_PIECE_JOINTE_DEMANDE" ADD CONSTRAINT "TBL_PJD_ANNEE_FK" FOREIGN KEY ("ANNEE_ID") - REFERENCES "ANNEE" ("ID") ON DELETE CASCADE ENABLE; --- TBL_PJD_INTERVENANT_FK -ALTER TABLE "TBL_PIECE_JOINTE_DEMANDE" ADD CONSTRAINT "TBL_PJD_INTERVENANT_FK" FOREIGN KEY ("INTERVENANT_ID") - REFERENCES "INTERVENANT" ("ID") ON DELETE CASCADE ENABLE; --- TBL_PJD_TYPE_PIECE_JOINTE_FK -ALTER TABLE "TBL_PIECE_JOINTE_DEMANDE" ADD CONSTRAINT "TBL_PJD_TYPE_PIECE_JOINTE_FK" FOREIGN KEY ("TYPE_PIECE_JOINTE_ID") - REFERENCES "TYPE_PIECE_JOINTE" ("ID") ON DELETE CASCADE ENABLE; + PROCEDURE PURGE_EM_NON_FC IS + BEGIN + FOR em IN ( + SELECT + em.id + FROM + ELEMENT_MODULATEUR em + JOIN element_pedagogique ep ON ep.id = em.element_id AND ep.histo_destruction IS NULL + WHERE + em.histo_destruction IS NULL + AND ep.taux_fc < 1 + ) LOOP + UPDATE + element_modulateur + SET + histo_destruction = SYSDATE, + histo_destructeur_id = ose_parametre.get_ose_user + WHERE + id = em.id + ; + END LOOP; + END; --- TBL_PJF_ANNEE_FK -ALTER TABLE "TBL_PIECE_JOINTE_FOURNIE" ADD CONSTRAINT "TBL_PJF_ANNEE_FK" FOREIGN KEY ("ANNEE_ID") - REFERENCES "ANNEE" ("ID") ON DELETE CASCADE ENABLE; +END UNICAEN_OSE_FORMULE; +/ --- TBL_PJF_FICHIER_FK -ALTER TABLE "TBL_PIECE_JOINTE_FOURNIE" ADD CONSTRAINT "TBL_PJF_FICHIER_FK" FOREIGN KEY ("FICHIER_ID") - REFERENCES "FICHIER" ("ID") ON DELETE CASCADE ENABLE; +-- UNICAEN_TBL +CREATE OR REPLACE PACKAGE BODY "UNICAEN_TBL" AS --- TBL_PJF_INTERVENANT_FK -ALTER TABLE "TBL_PIECE_JOINTE_FOURNIE" ADD CONSTRAINT "TBL_PJF_INTERVENANT_FK" FOREIGN KEY ("INTERVENANT_ID") - REFERENCES "INTERVENANT" ("ID") ON DELETE CASCADE ENABLE; + FUNCTION MAKE_PARAMS( + c1 VARCHAR2 DEFAULT NULL, v1 VARCHAR2 DEFAULT NULL, + c2 VARCHAR2 DEFAULT NULL, v2 VARCHAR2 DEFAULT NULL, + c3 VARCHAR2 DEFAULT NULL, v3 VARCHAR2 DEFAULT NULL, + c4 VARCHAR2 DEFAULT NULL, v4 VARCHAR2 DEFAULT NULL, + c5 VARCHAR2 DEFAULT NULL, v5 VARCHAR2 DEFAULT NULL, + sqlcond CLOB DEFAULT NULL + ) RETURN t_params IS + params t_params; + BEGIN + IF c1 IS NOT NULL THEN + params.c1 := c1; + params.v1 := v1; + END IF; + IF c2 IS NOT NULL THEN + params.c2 := c2; + params.v2 := v2; + END IF; + IF c3 IS NOT NULL THEN + params.c3 := c3; + params.v3 := v3; + END IF; + IF c4 IS NOT NULL THEN + params.c4 := c4; + params.v4 := v4; + END IF; + IF c5 IS NOT NULL THEN + params.c5 := c5; + params.v5 := v5; + END IF; + params.sqlcond := sqlcond; --- TBL_PJF_PIECE_JOINTE_FK -ALTER TABLE "TBL_PIECE_JOINTE_FOURNIE" ADD CONSTRAINT "TBL_PJF_PIECE_JOINTE_FK" FOREIGN KEY ("PIECE_JOINTE_ID") - REFERENCES "PIECE_JOINTE" ("ID") ON DELETE CASCADE ENABLE; + RETURN params; + END; --- TBL_PJF_TYPE_PIECE_JOINTE_FK -ALTER TABLE "TBL_PIECE_JOINTE_FOURNIE" ADD CONSTRAINT "TBL_PJF_TYPE_PIECE_JOINTE_FK" FOREIGN KEY ("TYPE_PIECE_JOINTE_ID") - REFERENCES "TYPE_PIECE_JOINTE" ("ID") ON DELETE CASCADE ENABLE; --- TBL_PJF_VALIDATION_FK -ALTER TABLE "TBL_PIECE_JOINTE_FOURNIE" ADD CONSTRAINT "TBL_PJF_VALIDATION_FK" FOREIGN KEY ("VALIDATION_ID") - REFERENCES "VALIDATION" ("ID") ON DELETE CASCADE ENABLE; --- TBL_PJ_INTERVENANT_FK -ALTER TABLE "TBL_PIECE_JOINTE" ADD CONSTRAINT "TBL_PJ_INTERVENANT_FK" FOREIGN KEY ("INTERVENANT_ID") - REFERENCES "INTERVENANT" ("ID") ON DELETE CASCADE ENABLE; + PROCEDURE DEMANDE_CALCUL( TBL_NAME VARCHAR2 ) IS + p t_params; + BEGIN + DEMANDE_CALCUL( tbl_name, p ); + END; --- TBL_PJ_TYPE_PIECE_JOINTE_FK -ALTER TABLE "TBL_PIECE_JOINTE" ADD CONSTRAINT "TBL_PJ_TYPE_PIECE_JOINTE_FK" FOREIGN KEY ("TYPE_PIECE_JOINTE_ID") - REFERENCES "TYPE_PIECE_JOINTE" ("ID") ON DELETE CASCADE ENABLE; --- TBL_SERVICE_ANNEE_FK -ALTER TABLE "TBL_SERVICE" ADD CONSTRAINT "TBL_SERVICE_ANNEE_FK" FOREIGN KEY ("ANNEE_ID") - REFERENCES "ANNEE" ("ID") ON DELETE CASCADE ENABLE; --- TBL_SERVICE_ELEMENT_FK -ALTER TABLE "TBL_SERVICE" ADD CONSTRAINT "TBL_SERVICE_ELEMENT_FK" FOREIGN KEY ("ELEMENT_PEDAGOGIQUE_ID") - REFERENCES "ELEMENT_PEDAGOGIQUE" ("ID") ON DELETE CASCADE ENABLE; + PROCEDURE DEMANDE_CALCUL( TBL_NAME VARCHAR2, CONDS CLOB ) IS + p t_params; + BEGIN + p.sqlcond := CONDS; + DEMANDE_CALCUL( tbl_name, p ); + END; --- TBL_SERVICE_ETAPE_FK -ALTER TABLE "TBL_SERVICE" ADD CONSTRAINT "TBL_SERVICE_ETAPE_FK" FOREIGN KEY ("ETAPE_ID") - REFERENCES "ETAPE" ("ID") ON DELETE CASCADE ENABLE; --- TBL_SERVICE_INTERVENANT_FK -ALTER TABLE "TBL_SERVICE" ADD CONSTRAINT "TBL_SERVICE_INTERVENANT_FK" FOREIGN KEY ("INTERVENANT_ID") - REFERENCES "INTERVENANT" ("ID") ON DELETE CASCADE ENABLE; --- TBL_SERVICE_PERIODE_EP_FK -ALTER TABLE "TBL_SERVICE" ADD CONSTRAINT "TBL_SERVICE_PERIODE_EP_FK" FOREIGN KEY ("ELEMENT_PEDAGOGIQUE_PERIODE_ID") - REFERENCES "PERIODE" ("ID") ON DELETE CASCADE ENABLE; + PROCEDURE DEMANDE_CALCUL( TBL_NAME VARCHAR2, PARAMS t_params ) IS + BEGIN + INSERT INTO tbl_dems ( + ID, + TBL_NAME, + c1, v1, + c2, v2, + c3, v3, + c4, v4, + c5, v5, + sqlcond + ) VALUES ( + TBL_DEMS_ID_SEQ.NEXTVAL, + TBL_NAME, + PARAMS.c1, PARAMS.v1, + PARAMS.c2, PARAMS.v2, + PARAMS.c3, PARAMS.v3, + PARAMS.c4, PARAMS.v4, + PARAMS.c5, PARAMS.v5, + PARAMS.sqlcond + ); + END; --- TBL_SERVICE_REF_ANNEE_FK -ALTER TABLE "TBL_SERVICE_REFERENTIEL" ADD CONSTRAINT "TBL_SERVICE_REF_ANNEE_FK" FOREIGN KEY ("ANNEE_ID") - REFERENCES "ANNEE" ("ID") ON DELETE CASCADE ENABLE; --- TBL_SERVICE_REF_INTERVENANT_FK -ALTER TABLE "TBL_SERVICE_REFERENTIEL" ADD CONSTRAINT "TBL_SERVICE_REF_INTERVENANT_FK" FOREIGN KEY ("INTERVENANT_ID") - REFERENCES "INTERVENANT" ("ID") ON DELETE CASCADE ENABLE; --- TBL_SERVICE_REF_STRUCTURE_FK -ALTER TABLE "TBL_SERVICE_REFERENTIEL" ADD CONSTRAINT "TBL_SERVICE_REF_STRUCTURE_FK" FOREIGN KEY ("STRUCTURE_ID") - REFERENCES "STRUCTURE" ("ID") ON DELETE CASCADE ENABLE; + FUNCTION PARAMS_FROM_DEMS( TBL_NAME VARCHAR2 ) RETURN t_params IS + res t_params; + conds CLOB := ''; + cond CLOB; + BEGIN + FOR d IN ( + SELECT * + FROM tbl_dems + WHERE tbl_name = PARAMS_FROM_DEMS.TBL_NAME + ) + LOOP --- TBL_SERVICE_REF_TVH_FK -ALTER TABLE "TBL_SERVICE_REFERENTIEL" ADD CONSTRAINT "TBL_SERVICE_REF_TVH_FK" FOREIGN KEY ("TYPE_VOLUME_HORAIRE_ID") - REFERENCES "TYPE_VOLUME_HORAIRE" ("ID") ON DELETE CASCADE ENABLE; + cond := ''; --- TBL_SERVICE_SAISIE_ANNEE_FK -ALTER TABLE "TBL_SERVICE_SAISIE" ADD CONSTRAINT "TBL_SERVICE_SAISIE_ANNEE_FK" FOREIGN KEY ("ANNEE_ID") - REFERENCES "ANNEE" ("ID") ON DELETE CASCADE ENABLE; + IF d.c1 IS NOT NULL THEN + IF cond IS NOT NULL THEN cond := cond || ' AND '; END IF; + IF d.v1 IS NULL THEN + cond := cond || d.c1 || ' IS NULL'; + ELSE + cond := cond || d.c1 || '=' || d.v1; + END IF; + END IF; --- TBL_SERVICE_SERVICE_FK -ALTER TABLE "TBL_SERVICE" ADD CONSTRAINT "TBL_SERVICE_SERVICE_FK" FOREIGN KEY ("SERVICE_ID") - REFERENCES "SERVICE" ("ID") ON DELETE CASCADE ENABLE; + IF d.c2 IS NOT NULL THEN + IF cond IS NOT NULL THEN cond := cond || ' AND '; END IF; + IF d.v2 IS NULL THEN + cond := cond || d.c2 || ' IS NULL'; + ELSE + cond := cond || d.c2 || '=' || d.v2; + END IF; + END IF; --- TBL_SERVICE_STRUCTURE_FK -ALTER TABLE "TBL_SERVICE" ADD CONSTRAINT "TBL_SERVICE_STRUCTURE_FK" FOREIGN KEY ("STRUCTURE_ID") - REFERENCES "STRUCTURE" ("ID") ON DELETE CASCADE ENABLE; + IF d.c3 IS NOT NULL THEN + IF cond IS NOT NULL THEN cond := cond || ' AND '; END IF; + IF d.v3 IS NULL THEN + cond := cond || d.c3 || ' IS NULL'; + ELSE + cond := cond || d.c3 || '=' || d.v3; + END IF; + END IF; --- TBL_SERVICE_STRUCTURE_FKV1 -ALTER TABLE "TBL_SERVICE" ADD CONSTRAINT "TBL_SERVICE_STRUCTURE_FKV1" FOREIGN KEY ("INTERVENANT_STRUCTURE_ID") - REFERENCES "STRUCTURE" ("ID") ON DELETE CASCADE ENABLE; + IF d.c4 IS NOT NULL THEN + IF cond IS NOT NULL THEN cond := cond || ' AND '; END IF; + IF d.v4 IS NULL THEN + cond := cond || d.c4 || ' IS NULL'; + ELSE + cond := cond || d.c4 || '=' || d.v4; + END IF; + END IF; --- TBL_SERVICE_TINTERVENANT_FK -ALTER TABLE "TBL_SERVICE" ADD CONSTRAINT "TBL_SERVICE_TINTERVENANT_FK" FOREIGN KEY ("TYPE_INTERVENANT_ID") - REFERENCES "TYPE_INTERVENANT" ("ID") ON DELETE CASCADE ENABLE; + IF d.c5 IS NOT NULL THEN + IF cond IS NOT NULL THEN cond := cond || ' AND '; END IF; + IF d.v5 IS NULL THEN + cond := cond || d.c5 || ' IS NULL'; + ELSE + cond := cond || d.c5 || '=' || d.v5; + END IF; + END IF; --- TBL_SERVICE_TVH_FK -ALTER TABLE "TBL_SERVICE" ADD CONSTRAINT "TBL_SERVICE_TVH_FK" FOREIGN KEY ("TYPE_VOLUME_HORAIRE_ID") - REFERENCES "TYPE_VOLUME_HORAIRE" ("ID") ON DELETE CASCADE ENABLE; + IF d.sqlcond IS NOT NULL THEN + IF cond IS NOT NULL THEN cond := cond || ' AND '; END IF; + cond := cond || '(' || d.sqlcond || ')'; + END IF; --- TBL_SRV_SAISIE_INTERVENANT_FK -ALTER TABLE "TBL_SERVICE_SAISIE" ADD CONSTRAINT "TBL_SRV_SAISIE_INTERVENANT_FK" FOREIGN KEY ("INTERVENANT_ID") - REFERENCES "INTERVENANT" ("ID") ON DELETE CASCADE ENABLE; + IF conds IS NOT NULL THEN + conds := conds || ' OR '; + END IF; + conds := conds || '(' || cond || ')'; + END LOOP; --- TBL_WORKFLOW_ANNEE_FK -ALTER TABLE "TBL_WORKFLOW" ADD CONSTRAINT "TBL_WORKFLOW_ANNEE_FK" FOREIGN KEY ("ANNEE_ID") - REFERENCES "ANNEE" ("ID") ON DELETE CASCADE ENABLE; + res.sqlcond := conds; + DELETE FROM tbl_dems WHERE tbl_name = PARAMS_FROM_DEMS.TBL_NAME; + RETURN res; + END; --- TBL_WORKFLOW_EFK -ALTER TABLE "TBL_WORKFLOW" ADD CONSTRAINT "TBL_WORKFLOW_EFK" FOREIGN KEY ("ETAPE_ID") - REFERENCES "WF_ETAPE" ("ID") ON DELETE CASCADE ENABLE; --- TBL_WORKFLOW_IFK -ALTER TABLE "TBL_WORKFLOW" ADD CONSTRAINT "TBL_WORKFLOW_IFK" FOREIGN KEY ("INTERVENANT_ID") - REFERENCES "INTERVENANT" ("ID") ON DELETE CASCADE ENABLE; --- TBL_WORKFLOW_SFK -ALTER TABLE "TBL_WORKFLOW" ADD CONSTRAINT "TBL_WORKFLOW_SFK" FOREIGN KEY ("STRUCTURE_ID") - REFERENCES "STRUCTURE" ("ID") ON DELETE CASCADE ENABLE; + FUNCTION PARAMS_TO_CONDS ( PARAMS UNICAEN_TBL.T_PARAMS ) RETURN CLOB IS + cond CLOB; + BEGIN + IF params.c1 IS NOT NULL THEN + IF params.v1 IS NULL THEN + cond := cond || params.c1 || ' IS NULL'; + ELSE + cond := cond || params.c1 || '=' || params.v1; + END IF; + END IF; --- TBL_WORKFLOW_STATUT_FK -ALTER TABLE "TBL_WORKFLOW" ADD CONSTRAINT "TBL_WORKFLOW_STATUT_FK" FOREIGN KEY ("STATUT_INTERVENANT_ID") - REFERENCES "STATUT_INTERVENANT" ("ID") ON DELETE CASCADE ENABLE; + IF params.c2 IS NOT NULL THEN + IF cond IS NOT NULL THEN cond := cond || ' AND '; END IF; + IF params.v2 IS NULL THEN + cond := cond || params.c2 || ' IS NULL'; + ELSE + cond := cond || params.c2 || '=' || params.v2; + END IF; + END IF; --- TBL_WORKFLOW_TINTERVENANT_FK -ALTER TABLE "TBL_WORKFLOW" ADD CONSTRAINT "TBL_WORKFLOW_TINTERVENANT_FK" FOREIGN KEY ("TYPE_INTERVENANT_ID") - REFERENCES "TYPE_INTERVENANT" ("ID") ON DELETE CASCADE ENABLE; + IF params.c3 IS NOT NULL THEN + IF cond IS NOT NULL THEN cond := cond || ' AND '; END IF; + IF params.v3 IS NULL THEN + cond := cond || params.c3 || ' IS NULL'; + ELSE + cond := cond || params.c3 || '=' || params.v3; + END IF; + END IF; --- TD_TYPE_RESSOURCE_FK -ALTER TABLE "TYPE_DOTATION" ADD CONSTRAINT "TD_TYPE_RESSOURCE_FK" FOREIGN KEY ("TYPE_RESSOURCE_ID") - REFERENCES "TYPE_RESSOURCE" ("ID") ENABLE; + IF params.c4 IS NOT NULL THEN + IF cond IS NOT NULL THEN cond := cond || ' AND '; END IF; + IF params.v4 IS NULL THEN + cond := cond || params.c4 || ' IS NULL'; + ELSE + cond := cond || params.c4 || '=' || params.v4; + END IF; + END IF; --- TIEP_ELEMENT_PEDAGOGIQUE_FK -ALTER TABLE "TYPE_INTERVENTION_EP" ADD CONSTRAINT "TIEP_ELEMENT_PEDAGOGIQUE_FK" FOREIGN KEY ("ELEMENT_PEDAGOGIQUE_ID") - REFERENCES "ELEMENT_PEDAGOGIQUE" ("ID") ON DELETE CASCADE ENABLE; + IF params.c5 IS NOT NULL THEN + IF cond IS NOT NULL THEN cond := cond || ' AND '; END IF; + IF params.v5 IS NULL THEN + cond := cond || params.c5 || ' IS NULL'; + ELSE + cond := cond || params.c5 || '=' || params.v5; + END IF; + END IF; --- TIEP_TYPE_INTERVENTION_FK -ALTER TABLE "TYPE_INTERVENTION_EP" ADD CONSTRAINT "TIEP_TYPE_INTERVENTION_FK" FOREIGN KEY ("TYPE_INTERVENTION_ID") - REFERENCES "TYPE_INTERVENTION" ("ID") ON DELETE CASCADE ENABLE; + IF params.sqlcond IS NOT NULL THEN + IF cond IS NOT NULL THEN cond := cond || ' AND '; END IF; + cond := cond || '(' || params.sqlcond || ')'; + END IF; --- TIS_ANNEE_DEBUT_FK -ALTER TABLE "TYPE_INTERVENTION_STRUCTURE" ADD CONSTRAINT "TIS_ANNEE_DEBUT_FK" FOREIGN KEY ("ANNEE_DEBUT_ID") - REFERENCES "ANNEE" ("ID") ENABLE; + IF cond IS NULL THEN cond := '1=1'; END IF; --- TIS_ANNEE_FIN_FK -ALTER TABLE "TYPE_INTERVENTION_STRUCTURE" ADD CONSTRAINT "TIS_ANNEE_FIN_FK" FOREIGN KEY ("ANNEE_FIN_ID") - REFERENCES "ANNEE" ("ID") ENABLE; + RETURN cond; + END; --- TIS_STRUCTURE_FK -ALTER TABLE "TYPE_INTERVENTION_STRUCTURE" ADD CONSTRAINT "TIS_STRUCTURE_FK" FOREIGN KEY ("STRUCTURE_ID") - REFERENCES "STRUCTURE" ("ID") ON DELETE CASCADE ENABLE; --- TIS_TYPE_INTERVENTION_FK -ALTER TABLE "TYPE_INTERVENTION_STRUCTURE" ADD CONSTRAINT "TIS_TYPE_INTERVENTION_FK" FOREIGN KEY ("TYPE_INTERVENTION_ID") - REFERENCES "TYPE_INTERVENTION" ("ID") ON DELETE CASCADE ENABLE; --- TI_TYPE_INTERVENTION_FK -ALTER TABLE "TYPE_INTERVENTION" ADD CONSTRAINT "TI_TYPE_INTERVENTION_FK" FOREIGN KEY ("TYPE_INTERVENTION_MAQUETTE_ID") - REFERENCES "TYPE_INTERVENTION" ("ID") ENABLE; + PROCEDURE CALCULER( TBL_NAME VARCHAR2 ) IS + p t_params; + BEGIN + ANNULER_DEMANDES( TBL_NAME ); + CALCULER(TBL_NAME, p); + END; --- TME_ELEMENT_PEDAGOGIQUE_FK -ALTER TABLE "TYPE_MODULATEUR_EP" ADD CONSTRAINT "TME_ELEMENT_PEDAGOGIQUE_FK" FOREIGN KEY ("ELEMENT_PEDAGOGIQUE_ID") - REFERENCES "ELEMENT_PEDAGOGIQUE" ("ID") ON DELETE CASCADE ENABLE; --- TME_SOURCE_FK -ALTER TABLE "TYPE_MODULATEUR_EP" ADD CONSTRAINT "TME_SOURCE_FK" FOREIGN KEY ("SOURCE_ID") - REFERENCES "SOURCE" ("ID") ON DELETE CASCADE ENABLE; --- TME_TYPE_MODULATEUR_FK -ALTER TABLE "TYPE_MODULATEUR_EP" ADD CONSTRAINT "TME_TYPE_MODULATEUR_FK" FOREIGN KEY ("TYPE_MODULATEUR_ID") - REFERENCES "TYPE_MODULATEUR" ("ID") ON DELETE CASCADE ENABLE; + PROCEDURE CALCULER( TBL_NAME VARCHAR2, CONDS CLOB ) IS + p t_params; + BEGIN + p.sqlcond := CONDS; + CALCULER(TBL_NAME, p); + END; --- TMS_ANNEE_DEBUT_FK -ALTER TABLE "TYPE_MODULATEUR_STRUCTURE" ADD CONSTRAINT "TMS_ANNEE_DEBUT_FK" FOREIGN KEY ("ANNEE_DEBUT_ID") - REFERENCES "ANNEE" ("ID") ENABLE; --- TMS_ANNEE_FIN_FK -ALTER TABLE "TYPE_MODULATEUR_STRUCTURE" ADD CONSTRAINT "TMS_ANNEE_FIN_FK" FOREIGN KEY ("ANNEE_FIN_ID") - REFERENCES "ANNEE" ("ID") ENABLE; --- TMS_STRUCTURE_FK -ALTER TABLE "TYPE_MODULATEUR_STRUCTURE" ADD CONSTRAINT "TMS_STRUCTURE_FK" FOREIGN KEY ("STRUCTURE_ID") - REFERENCES "STRUCTURE" ("ID") ENABLE; + PROCEDURE CALCULER( TBL_NAME VARCHAR2, PARAMS t_params ) IS + calcul_proc varchar2(30); + BEGIN + IF NOT UNICAEN_TBL.ACTIV_CALCULS THEN RETURN; END IF; --- TMS_TYPE_MODUL_FK -ALTER TABLE "TYPE_MODULATEUR_STRUCTURE" ADD CONSTRAINT "TMS_TYPE_MODUL_FK" FOREIGN KEY ("TYPE_MODULATEUR_ID") - REFERENCES "TYPE_MODULATEUR" ("ID") ON DELETE CASCADE ENABLE; + SELECT custom_calcul_proc INTO calcul_proc FROM tbl WHERE tbl_name = CALCULER.TBL_NAME; --- TPJS_ANNEE_DEB_FK -ALTER TABLE "TYPE_PIECE_JOINTE_STATUT" ADD CONSTRAINT "TPJS_ANNEE_DEB_FK" FOREIGN KEY ("ANNEE_DEBUT_ID") - REFERENCES "ANNEE" ("ID") ON DELETE CASCADE ENABLE; + UNICAEN_TBL.CALCUL_PROC_PARAMS := PARAMS; + IF calcul_proc IS NOT NULL THEN + EXECUTE IMMEDIATE + 'BEGIN ' || calcul_proc || '(UNICAEN_TBL.CALCUL_PROC_PARAMS); END;' + ; + ELSE + EXECUTE IMMEDIATE + 'BEGIN UNICAEN_TBL.C_' || TBL_NAME || '(UNICAEN_TBL.CALCUL_PROC_PARAMS); END;' + ; + END IF; --- TPJS_ANNEE_FIN_FK -ALTER TABLE "TYPE_PIECE_JOINTE_STATUT" ADD CONSTRAINT "TPJS_ANNEE_FIN_FK" FOREIGN KEY ("ANNEE_FIN_ID") - REFERENCES "ANNEE" ("ID") ON DELETE CASCADE ENABLE; + END; --- TPJS_STATUT_INTERVENANT_FK -ALTER TABLE "TYPE_PIECE_JOINTE_STATUT" ADD CONSTRAINT "TPJS_STATUT_INTERVENANT_FK" FOREIGN KEY ("STATUT_INTERVENANT_ID") - REFERENCES "STATUT_INTERVENANT" ("ID") ON DELETE CASCADE ENABLE; --- TPJS_TYPE_PIECE_JOINTE_FK -ALTER TABLE "TYPE_PIECE_JOINTE_STATUT" ADD CONSTRAINT "TPJS_TYPE_PIECE_JOINTE_FK" FOREIGN KEY ("TYPE_PIECE_JOINTE_ID") - REFERENCES "TYPE_PIECE_JOINTE" ("ID") ON DELETE CASCADE ENABLE; --- TVE_ANNEE_FK -ALTER TABLE "TBL_VALIDATION_ENSEIGNEMENT" ADD CONSTRAINT "TVE_ANNEE_FK" FOREIGN KEY ("ANNEE_ID") - REFERENCES "ANNEE" ("ID") ON DELETE CASCADE ENABLE; + PROCEDURE ANNULER_DEMANDES IS + BEGIN + DELETE FROM tbl_dems; + END; --- TVE_INTERVENANT_FK -ALTER TABLE "TBL_VALIDATION_ENSEIGNEMENT" ADD CONSTRAINT "TVE_INTERVENANT_FK" FOREIGN KEY ("INTERVENANT_ID") - REFERENCES "INTERVENANT" ("ID") ON DELETE CASCADE ENABLE; --- TVE_SERVICE_FK -ALTER TABLE "TBL_VALIDATION_ENSEIGNEMENT" ADD CONSTRAINT "TVE_SERVICE_FK" FOREIGN KEY ("SERVICE_ID") - REFERENCES "SERVICE" ("ID") ON DELETE CASCADE ENABLE; --- TVE_STRUCTURE_FK -ALTER TABLE "TBL_VALIDATION_ENSEIGNEMENT" ADD CONSTRAINT "TVE_STRUCTURE_FK" FOREIGN KEY ("STRUCTURE_ID") - REFERENCES "STRUCTURE" ("ID") ON DELETE CASCADE ENABLE; + PROCEDURE ANNULER_DEMANDES( TBL_NAME VARCHAR2 ) IS + BEGIN + DELETE FROM tbl_dems WHERE tbl_name = ANNULER_DEMANDES.tbl_name; + END; --- TVE_TYPE_VOLUME_HORAIRE_FK -ALTER TABLE "TBL_VALIDATION_ENSEIGNEMENT" ADD CONSTRAINT "TVE_TYPE_VOLUME_HORAIRE_FK" FOREIGN KEY ("TYPE_VOLUME_HORAIRE_ID") - REFERENCES "TYPE_VOLUME_HORAIRE" ("ID") ON DELETE CASCADE ENABLE; --- TVE_VALIDATION_FK -ALTER TABLE "TBL_VALIDATION_ENSEIGNEMENT" ADD CONSTRAINT "TVE_VALIDATION_FK" FOREIGN KEY ("VALIDATION_ID") - REFERENCES "VALIDATION" ("ID") ON DELETE CASCADE ENABLE; --- TVE_VOLUME_HORAIRE_FK -ALTER TABLE "TBL_VALIDATION_ENSEIGNEMENT" ADD CONSTRAINT "TVE_VOLUME_HORAIRE_FK" FOREIGN KEY ("VOLUME_HORAIRE_ID") - REFERENCES "VOLUME_HORAIRE" ("ID") ON DELETE CASCADE ENABLE; + FUNCTION HAS_DEMANDES RETURN BOOLEAN IS + has_dems NUMERIC; + BEGIN + SELECT count(*) INTO has_dems from tbl_dems where rownum = 1; --- TVR_ANNEE_FK -ALTER TABLE "TBL_VALIDATION_REFERENTIEL" ADD CONSTRAINT "TVR_ANNEE_FK" FOREIGN KEY ("ANNEE_ID") - REFERENCES "ANNEE" ("ID") ON DELETE CASCADE ENABLE; + RETURN has_dems = 1; + END; --- TVR_INTERVENANT_FK -ALTER TABLE "TBL_VALIDATION_REFERENTIEL" ADD CONSTRAINT "TVR_INTERVENANT_FK" FOREIGN KEY ("INTERVENANT_ID") - REFERENCES "INTERVENANT" ("ID") ON DELETE CASCADE ENABLE; --- TVR_SERVICE_REFERENTIEL_FK -ALTER TABLE "TBL_VALIDATION_REFERENTIEL" ADD CONSTRAINT "TVR_SERVICE_REFERENTIEL_FK" FOREIGN KEY ("SERVICE_REFERENTIEL_ID") - REFERENCES "SERVICE_REFERENTIEL" ("ID") ON DELETE CASCADE ENABLE; --- TVR_STRUCTURE_FK -ALTER TABLE "TBL_VALIDATION_REFERENTIEL" ADD CONSTRAINT "TVR_STRUCTURE_FK" FOREIGN KEY ("STRUCTURE_ID") - REFERENCES "STRUCTURE" ("ID") ON DELETE CASCADE ENABLE; + PROCEDURE CALCULER_DEMANDES IS + dems t_params; + BEGIN + FOR d IN ( + SELECT DISTINCT tbl_name FROM tbl_dems + ) LOOP + dems := PARAMS_FROM_DEMS( d.tbl_name ); + calculer( d.tbl_name, dems ); + END LOOP; --- TVR_TYPE_VOLUME_HORAIRE_FK -ALTER TABLE "TBL_VALIDATION_REFERENTIEL" ADD CONSTRAINT "TVR_TYPE_VOLUME_HORAIRE_FK" FOREIGN KEY ("TYPE_VOLUME_HORAIRE_ID") - REFERENCES "TYPE_VOLUME_HORAIRE" ("ID") ON DELETE CASCADE ENABLE; + IF HAS_DEMANDES THEN -- pour les boucles !! + CALCULER_DEMANDES; + END IF; + END; --- TVR_VALIDATION_FK -ALTER TABLE "TBL_VALIDATION_REFERENTIEL" ADD CONSTRAINT "TVR_VALIDATION_FK" FOREIGN KEY ("VALIDATION_ID") - REFERENCES "VALIDATION" ("ID") ON DELETE CASCADE ENABLE; --- TVR_VOLUME_HORAIRE_REF_FK -ALTER TABLE "TBL_VALIDATION_REFERENTIEL" ADD CONSTRAINT "TVR_VOLUME_HORAIRE_REF_FK" FOREIGN KEY ("VOLUME_HORAIRE_REF_ID") - REFERENCES "VOLUME_HORAIRE_REF" ("ID") ON DELETE CASCADE ENABLE; --- TYPE_AGREMENT_HCFK -ALTER TABLE "TYPE_AGREMENT" ADD CONSTRAINT "TYPE_AGREMENT_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + -- AUTOMATIC GENERATION -- --- TYPE_AGREMENT_HDFK -ALTER TABLE "TYPE_AGREMENT" ADD CONSTRAINT "TYPE_AGREMENT_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + PROCEDURE C_AGREMENT( PARAMS UNICAEN_TBL.T_PARAMS ) IS + conds CLOB; + BEGIN + conds := params_to_conds( params ); --- TYPE_AGREMENT_HMFK -ALTER TABLE "TYPE_AGREMENT" ADD CONSTRAINT "TYPE_AGREMENT_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + EXECUTE IMMEDIATE 'BEGIN --- TYPE_AGREMENT_STATUT_HCFK -ALTER TABLE "TYPE_AGREMENT_STATUT" ADD CONSTRAINT "TYPE_AGREMENT_STATUT_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + UPDATE TBL_AGREMENT SET to_delete = 1 WHERE ' || conds || '; --- TYPE_AGREMENT_STATUT_HDFK -ALTER TABLE "TYPE_AGREMENT_STATUT" ADD CONSTRAINT "TYPE_AGREMENT_STATUT_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + MERGE INTO + TBL_AGREMENT t + USING ( --- TYPE_AGREMENT_STATUT_HMFK -ALTER TABLE "TYPE_AGREMENT_STATUT" ADD CONSTRAINT "TYPE_AGREMENT_STATUT_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + SELECT + tv.* + FROM + (WITH i_s AS ( + SELECT DISTINCT + fr.intervenant_id, + ep.structure_id + FROM + formule_resultat fr + JOIN type_volume_horaire tvh ON tvh.code = ''PREVU'' AND tvh.id = fr.type_volume_horaire_id + JOIN etat_volume_horaire evh ON evh.code = ''valide'' AND evh.id = fr.etat_volume_horaire_id --- TYPE_CONTRAT_HCFK -ALTER TABLE "TYPE_CONTRAT" ADD CONSTRAINT "TYPE_CONTRAT_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + JOIN formule_resultat_service frs ON frs.formule_resultat_id = fr.id + JOIN service s ON s.id = frs.service_id + JOIN element_pedagogique ep ON ep.id = s.element_pedagogique_id + WHERE + frs.total > 0 + ) + SELECT + i.annee_id annee_id, + tas.type_agrement_id type_agrement_id, + i.id intervenant_id, + null structure_id, + tas.obligatoire obligatoire, + a.id agrement_id + FROM + type_agrement ta + JOIN type_agrement_statut tas ON tas.type_agrement_id = ta.id + AND tas.histo_destruction IS NULL --- TYPE_CONTRAT_HDFK -ALTER TABLE "TYPE_CONTRAT" ADD CONSTRAINT "TYPE_CONTRAT_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + JOIN intervenant i ON i.histo_destruction IS NULL + AND (tas.premier_recrutement IS NULL OR NVL(i.premier_recrutement,0) = tas.premier_recrutement) + AND i.statut_id = tas.statut_intervenant_id --- TYPE_CONTRAT_HMFK -ALTER TABLE "TYPE_CONTRAT" ADD CONSTRAINT "TYPE_CONTRAT_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + LEFT JOIN agrement a ON a.type_agrement_id = ta.id + AND a.intervenant_id = i.id + AND a.histo_destruction IS NULL + WHERE + ta.code = ''CONSEIL_ACADEMIQUE'' --- TYPE_DOTATION_HCFK -ALTER TABLE "TYPE_DOTATION" ADD CONSTRAINT "TYPE_DOTATION_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + UNION ALL --- TYPE_DOTATION_HDFK -ALTER TABLE "TYPE_DOTATION" ADD CONSTRAINT "TYPE_DOTATION_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + SELECT + i.annee_id annee_id, + tas.type_agrement_id type_agrement_id, + i.id intervenant_id, + i_s.structure_id structure_id, + tas.obligatoire obligatoire, + a.id agrement_id + FROM + type_agrement ta + JOIN type_agrement_statut tas ON tas.type_agrement_id = ta.id + AND tas.histo_destruction IS NULL --- TYPE_DOTATION_HMFK -ALTER TABLE "TYPE_DOTATION" ADD CONSTRAINT "TYPE_DOTATION_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + JOIN intervenant i ON i.histo_destruction IS NULL + AND (tas.premier_recrutement IS NULL OR NVL(i.premier_recrutement,0) = tas.premier_recrutement) + AND i.statut_id = tas.statut_intervenant_id --- TYPE_DOTATION_SOURCE_FK -ALTER TABLE "TYPE_DOTATION" ADD CONSTRAINT "TYPE_DOTATION_SOURCE_FK" FOREIGN KEY ("SOURCE_ID") - REFERENCES "SOURCE" ("ID") ON DELETE CASCADE ENABLE; + JOIN i_s ON i_s.intervenant_id = i.id --- TYPE_FORMATION_GROUPE_FK -ALTER TABLE "TYPE_FORMATION" ADD CONSTRAINT "TYPE_FORMATION_GROUPE_FK" FOREIGN KEY ("GROUPE_ID") - REFERENCES "GROUPE_TYPE_FORMATION" ("ID") ENABLE; + LEFT JOIN agrement a ON a.type_agrement_id = ta.id + AND a.intervenant_id = i.id + AND a.structure_id = i_s.structure_id + AND a.histo_destruction IS NULL + WHERE + ta.code = ''CONSEIL_RESTREINT'') tv + WHERE + ' || conds || ' --- TYPE_FORMATION_HCFK -ALTER TABLE "TYPE_FORMATION" ADD CONSTRAINT "TYPE_FORMATION_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + ) v ON ( + t.TYPE_AGREMENT_ID = v.TYPE_AGREMENT_ID + AND t.INTERVENANT_ID = v.INTERVENANT_ID + AND COALESCE(t.STRUCTURE_ID,0) = COALESCE(v.STRUCTURE_ID,0) --- TYPE_FORMATION_HDFK -ALTER TABLE "TYPE_FORMATION" ADD CONSTRAINT "TYPE_FORMATION_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + ) WHEN MATCHED THEN UPDATE SET --- TYPE_FORMATION_HMFK -ALTER TABLE "TYPE_FORMATION" ADD CONSTRAINT "TYPE_FORMATION_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + ANNEE_ID = v.ANNEE_ID, + OBLIGATOIRE = v.OBLIGATOIRE, + AGREMENT_ID = v.AGREMENT_ID, + to_delete = 0 --- TYPE_FORMATION_SOURCE_FK -ALTER TABLE "TYPE_FORMATION" ADD CONSTRAINT "TYPE_FORMATION_SOURCE_FK" FOREIGN KEY ("SOURCE_ID") - REFERENCES "SOURCE" ("ID") ENABLE; + WHEN NOT MATCHED THEN INSERT ( --- TYPE_HEURES_HCFK -ALTER TABLE "TYPE_HEURES" ADD CONSTRAINT "TYPE_HEURES_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + ID, + ANNEE_ID, + TYPE_AGREMENT_ID, + INTERVENANT_ID, + STRUCTURE_ID, + OBLIGATOIRE, + AGREMENT_ID, + TO_DELETE --- TYPE_HEURES_HDFK -ALTER TABLE "TYPE_HEURES" ADD CONSTRAINT "TYPE_HEURES_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + ) VALUES ( --- TYPE_HEURES_HMFK -ALTER TABLE "TYPE_HEURES" ADD CONSTRAINT "TYPE_HEURES_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + TBL_AGREMENT_ID_SEQ.NEXTVAL, + v.ANNEE_ID, + v.TYPE_AGREMENT_ID, + v.INTERVENANT_ID, + v.STRUCTURE_ID, + v.OBLIGATOIRE, + v.AGREMENT_ID, + 0 --- TYPE_HEURES_TYPE_HEURES_FK -ALTER TABLE "TYPE_HEURES" ADD CONSTRAINT "TYPE_HEURES_TYPE_HEURES_FK" FOREIGN KEY ("TYPE_HEURES_ELEMENT_ID") - REFERENCES "TYPE_HEURES" ("ID") ON DELETE CASCADE ENABLE; + ); --- TYPE_INTERVENANT_HCFK -ALTER TABLE "TYPE_INTERVENANT" ADD CONSTRAINT "TYPE_INTERVENANT_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + DELETE TBL_AGREMENT WHERE to_delete = 1 AND ' || conds || '; --- TYPE_INTERVENANT_HDFK -ALTER TABLE "TYPE_INTERVENANT" ADD CONSTRAINT "TYPE_INTERVENANT_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + END;'; --- TYPE_INTERVENANT_HMFK -ALTER TABLE "TYPE_INTERVENANT" ADD CONSTRAINT "TYPE_INTERVENANT_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + END; --- TYPE_INTERVENTION_ANNEE_FK -ALTER TABLE "TYPE_INTERVENTION" ADD CONSTRAINT "TYPE_INTERVENTION_ANNEE_FK" FOREIGN KEY ("ANNEE_DEBUT_ID") - REFERENCES "ANNEE" ("ID") ENABLE; --- TYPE_INTERVENTION_ANNEE_FKV1 -ALTER TABLE "TYPE_INTERVENTION" ADD CONSTRAINT "TYPE_INTERVENTION_ANNEE_FKV1" FOREIGN KEY ("ANNEE_FIN_ID") - REFERENCES "ANNEE" ("ID") ENABLE; --- TYPE_INTERVENTION_EP_HCFK -ALTER TABLE "TYPE_INTERVENTION_EP" ADD CONSTRAINT "TYPE_INTERVENTION_EP_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + PROCEDURE C_CHARGENS( PARAMS UNICAEN_TBL.T_PARAMS ) IS + conds CLOB; + BEGIN + conds := params_to_conds( params ); --- TYPE_INTERVENTION_EP_HDFK -ALTER TABLE "TYPE_INTERVENTION_EP" ADD CONSTRAINT "TYPE_INTERVENTION_EP_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + EXECUTE IMMEDIATE 'BEGIN --- TYPE_INTERVENTION_EP_HMFK -ALTER TABLE "TYPE_INTERVENTION_EP" ADD CONSTRAINT "TYPE_INTERVENTION_EP_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + UPDATE TBL_CHARGENS SET to_delete = 1 WHERE ' || conds || '; --- TYPE_INTERVENTION_EP_SOURCE_FK -ALTER TABLE "TYPE_INTERVENTION_EP" ADD CONSTRAINT "TYPE_INTERVENTION_EP_SOURCE_FK" FOREIGN KEY ("SOURCE_ID") - REFERENCES "SOURCE" ("ID") ON DELETE CASCADE ENABLE; + MERGE INTO + TBL_CHARGENS t + USING ( --- TYPE_INTERVENTION_HCFK -ALTER TABLE "TYPE_INTERVENTION" ADD CONSTRAINT "TYPE_INTERVENTION_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + SELECT + tv.* + FROM + (WITH t AS ( + SELECT + n.annee_id annee_id, + n.noeud_id noeud_id, + sn.scenario_id scenario_id, + sne.type_heures_id type_heures_id, + ti.id type_intervention_id, --- TYPE_INTERVENTION_HDFK -ALTER TABLE "TYPE_INTERVENTION" ADD CONSTRAINT "TYPE_INTERVENTION_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + n.element_pedagogique_id element_pedagogique_id, + n.element_pedagogique_etape_id etape_id, + sne.etape_id etape_ens_id, + n.structure_id structure_id, + n.groupe_type_formation_id groupe_type_formation_id, --- TYPE_INTERVENTION_HMFK -ALTER TABLE "TYPE_INTERVENTION" ADD CONSTRAINT "TYPE_INTERVENTION_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + vhe.heures heures, + vhe.heures * ti.taux_hetd_service hetd, --- TYPE_INTERVENTION_STRUCTU_HCFK -ALTER TABLE "TYPE_INTERVENTION_STRUCTURE" ADD CONSTRAINT "TYPE_INTERVENTION_STRUCTU_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + GREATEST(COALESCE(sns.ouverture, 1),1) ouverture, + GREATEST(COALESCE(sns.dedoublement, snsetp.dedoublement, csdd.dedoublement,1),1) dedoublement, + COALESCE(sns.assiduite,1) assiduite, + sne.effectif*COALESCE(sns.assiduite,1) effectif, --- TYPE_INTERVENTION_STRUCTU_HDFK -ALTER TABLE "TYPE_INTERVENTION_STRUCTURE" ADD CONSTRAINT "TYPE_INTERVENTION_STRUCTU_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + SUM(sne.effectif*COALESCE(sns.assiduite,1)) OVER (PARTITION BY n.noeud_id, sn.scenario_id, ti.id) t_effectif --- TYPE_INTERVENTION_STRUCTU_HMFK -ALTER TABLE "TYPE_INTERVENTION_STRUCTURE" ADD CONSTRAINT "TYPE_INTERVENTION_STRUCTU_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + FROM + scenario_noeud_effectif sne + JOIN etape e ON e.id = sne.etape_id + AND e.histo_destruction IS NULL --- TYPE_MODULATEUR_EP_HCFK -ALTER TABLE "TYPE_MODULATEUR_EP" ADD CONSTRAINT "TYPE_MODULATEUR_EP_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + JOIN scenario_noeud sn ON sn.id = sne.scenario_noeud_id + AND sn.histo_destruction IS NULL --- TYPE_MODULATEUR_EP_HDFK -ALTER TABLE "TYPE_MODULATEUR_EP" ADD CONSTRAINT "TYPE_MODULATEUR_EP_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + JOIN tbl_noeud n ON n.noeud_id = sn.noeud_id --- TYPE_MODULATEUR_EP_HMFK -ALTER TABLE "TYPE_MODULATEUR_EP" ADD CONSTRAINT "TYPE_MODULATEUR_EP_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + JOIN volume_horaire_ens vhe ON vhe.element_pedagogique_id = n.element_pedagogique_id + AND vhe.histo_destruction IS NULL + AND vhe.heures > 0 --- TYPE_MODULATEUR_HCFK -ALTER TABLE "TYPE_MODULATEUR" ADD CONSTRAINT "TYPE_MODULATEUR_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + JOIN type_intervention ti ON ti.id = vhe.type_intervention_id --- TYPE_MODULATEUR_HDFK -ALTER TABLE "TYPE_MODULATEUR" ADD CONSTRAINT "TYPE_MODULATEUR_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + LEFT JOIN tbl_noeud netp ON netp.etape_id = e.id --- TYPE_MODULATEUR_HMFK -ALTER TABLE "TYPE_MODULATEUR" ADD CONSTRAINT "TYPE_MODULATEUR_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + LEFT JOIN scenario_noeud snetp ON snetp.scenario_id = sn.scenario_id + AND snetp.noeud_id = netp.noeud_id + AND snetp.histo_destruction IS NULL --- TYPE_MODULATEUR_STRUCTURE_HCFK -ALTER TABLE "TYPE_MODULATEUR_STRUCTURE" ADD CONSTRAINT "TYPE_MODULATEUR_STRUCTURE_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + LEFT JOIN scenario_noeud_seuil snsetp ON snsetp.scenario_noeud_id = snetp.id + AND snsetp.type_intervention_id = ti.id --- TYPE_MODULATEUR_STRUCTURE_HDFK -ALTER TABLE "TYPE_MODULATEUR_STRUCTURE" ADD CONSTRAINT "TYPE_MODULATEUR_STRUCTURE_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + LEFT JOIN tbl_chargens_seuils_def csdd ON csdd.annee_id = n.annee_id + AND csdd.scenario_id = sn.scenario_id + AND csdd.type_intervention_id = ti.id + AND csdd.groupe_type_formation_id = n.groupe_type_formation_id + AND csdd.structure_id = n.structure_id --- TYPE_MODULATEUR_STRUCTURE_HMFK -ALTER TABLE "TYPE_MODULATEUR_STRUCTURE" ADD CONSTRAINT "TYPE_MODULATEUR_STRUCTURE_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + LEFT JOIN scenario_noeud_seuil sns ON sns.scenario_noeud_id = sn.id + AND sns.type_intervention_id = ti.id + ) + SELECT + annee_id, + noeud_id, + scenario_id, + type_heures_id, + type_intervention_id, --- TYPE_PIECE_JOINTE_HCFK -ALTER TABLE "TYPE_PIECE_JOINTE" ADD CONSTRAINT "TYPE_PIECE_JOINTE_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + element_pedagogique_id, + etape_id, + etape_ens_id, + structure_id, + groupe_type_formation_id, --- TYPE_PIECE_JOINTE_HDFK -ALTER TABLE "TYPE_PIECE_JOINTE" ADD CONSTRAINT "TYPE_PIECE_JOINTE_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + ouverture, + dedoublement, + assiduite, + effectif, + heures heures_ens, + --t_effectif, --- TYPE_PIECE_JOINTE_HMFK -ALTER TABLE "TYPE_PIECE_JOINTE" ADD CONSTRAINT "TYPE_PIECE_JOINTE_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + CASE WHEN t_effectif < ouverture THEN 0 ELSE + CEIL( t_effectif / dedoublement ) * effectif / t_effectif + END groupes, --- TYPE_PIECE_JOINTE_STATUT_HCFK -ALTER TABLE "TYPE_PIECE_JOINTE_STATUT" ADD CONSTRAINT "TYPE_PIECE_JOINTE_STATUT_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + CASE WHEN t_effectif < ouverture THEN 0 ELSE + CEIL( t_effectif / dedoublement ) * heures * effectif / t_effectif + END heures, --- TYPE_PIECE_JOINTE_STATUT_HDFK -ALTER TABLE "TYPE_PIECE_JOINTE_STATUT" ADD CONSTRAINT "TYPE_PIECE_JOINTE_STATUT_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + CASE WHEN t_effectif < ouverture THEN 0 ELSE + CEIL( t_effectif / dedoublement ) * hetd * effectif / t_effectif + END hetd --- TYPE_PIECE_JOINTE_STATUT_HMFK -ALTER TABLE "TYPE_PIECE_JOINTE_STATUT" ADD CONSTRAINT "TYPE_PIECE_JOINTE_STATUT_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + FROM + t) tv + WHERE + ' || conds || ' --- TYPE_RESSOURCE_HCFK -ALTER TABLE "TYPE_RESSOURCE" ADD CONSTRAINT "TYPE_RESSOURCE_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + ) v ON ( + t.ANNEE_ID = v.ANNEE_ID + AND t.NOEUD_ID = v.NOEUD_ID + AND t.SCENARIO_ID = v.SCENARIO_ID + AND t.TYPE_HEURES_ID = v.TYPE_HEURES_ID + AND t.TYPE_INTERVENTION_ID = v.TYPE_INTERVENTION_ID + AND t.ELEMENT_PEDAGOGIQUE_ID = v.ELEMENT_PEDAGOGIQUE_ID + AND t.ETAPE_ID = v.ETAPE_ID + AND t.ETAPE_ENS_ID = v.ETAPE_ENS_ID + AND t.STRUCTURE_ID = v.STRUCTURE_ID + AND t.GROUPE_TYPE_FORMATION_ID = v.GROUPE_TYPE_FORMATION_ID --- TYPE_RESSOURCE_HDFK -ALTER TABLE "TYPE_RESSOURCE" ADD CONSTRAINT "TYPE_RESSOURCE_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + ) WHEN MATCHED THEN UPDATE SET --- TYPE_RESSOURCE_HMFK -ALTER TABLE "TYPE_RESSOURCE" ADD CONSTRAINT "TYPE_RESSOURCE_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + OUVERTURE = v.OUVERTURE, + DEDOUBLEMENT = v.DEDOUBLEMENT, + ASSIDUITE = v.ASSIDUITE, + EFFECTIF = v.EFFECTIF, + HEURES_ENS = v.HEURES_ENS, + GROUPES = v.GROUPES, + HEURES = v.HEURES, + HETD = v.HETD, + to_delete = 0 --- VALIDATION_HCFK -ALTER TABLE "VALIDATION" ADD CONSTRAINT "VALIDATION_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + WHEN NOT MATCHED THEN INSERT ( --- VALIDATION_HDFK -ALTER TABLE "VALIDATION" ADD CONSTRAINT "VALIDATION_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + ID, + ANNEE_ID, + NOEUD_ID, + SCENARIO_ID, + TYPE_HEURES_ID, + TYPE_INTERVENTION_ID, + ELEMENT_PEDAGOGIQUE_ID, + ETAPE_ID, + ETAPE_ENS_ID, + STRUCTURE_ID, + GROUPE_TYPE_FORMATION_ID, + OUVERTURE, + DEDOUBLEMENT, + ASSIDUITE, + EFFECTIF, + HEURES_ENS, + GROUPES, + HEURES, + HETD, + TO_DELETE --- VALIDATION_HMFK -ALTER TABLE "VALIDATION" ADD CONSTRAINT "VALIDATION_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + ) VALUES ( --- VALIDATION_INTERVENANT_FK -ALTER TABLE "VALIDATION" ADD CONSTRAINT "VALIDATION_INTERVENANT_FK" FOREIGN KEY ("INTERVENANT_ID") - REFERENCES "INTERVENANT" ("ID") ON DELETE CASCADE ENABLE; + TBL_CHARGENS_ID_SEQ.NEXTVAL, + v.ANNEE_ID, + v.NOEUD_ID, + v.SCENARIO_ID, + v.TYPE_HEURES_ID, + v.TYPE_INTERVENTION_ID, + v.ELEMENT_PEDAGOGIQUE_ID, + v.ETAPE_ID, + v.ETAPE_ENS_ID, + v.STRUCTURE_ID, + v.GROUPE_TYPE_FORMATION_ID, + v.OUVERTURE, + v.DEDOUBLEMENT, + v.ASSIDUITE, + v.EFFECTIF, + v.HEURES_ENS, + v.GROUPES, + v.HEURES, + v.HETD, + 0 --- VALIDATION_STRUCTURE_FK -ALTER TABLE "VALIDATION" ADD CONSTRAINT "VALIDATION_STRUCTURE_FK" FOREIGN KEY ("STRUCTURE_ID") - REFERENCES "STRUCTURE" ("ID") ON DELETE CASCADE ENABLE; + ); --- VALIDATION_TYPE_VALIDATION_FK -ALTER TABLE "VALIDATION" ADD CONSTRAINT "VALIDATION_TYPE_VALIDATION_FK" FOREIGN KEY ("TYPE_VALIDATION_ID") - REFERENCES "TYPE_VALIDATION" ("ID") ON DELETE CASCADE ENABLE; + DELETE TBL_CHARGENS WHERE to_delete = 1 AND ' || conds || '; --- VHC_ELEMENT_PEDAGOGIQUE_FK -ALTER TABLE "VOLUME_HORAIRE_CHARGE" ADD CONSTRAINT "VHC_ELEMENT_PEDAGOGIQUE_FK" FOREIGN KEY ("ELEMENT_PEDAGOGIQUE_ID") - REFERENCES "ELEMENT_PEDAGOGIQUE" ("ID") ENABLE; + END;'; --- VHC_SCENARIO_FK -ALTER TABLE "VOLUME_HORAIRE_CHARGE" ADD CONSTRAINT "VHC_SCENARIO_FK" FOREIGN KEY ("SCENARIO_ID") - REFERENCES "SCENARIO" ("ID") ON DELETE CASCADE ENABLE; + END; --- VHC_SOURCE_FK -ALTER TABLE "VOLUME_HORAIRE_CHARGE" ADD CONSTRAINT "VHC_SOURCE_FK" FOREIGN KEY ("SOURCE_ID") - REFERENCES "SOURCE" ("ID") ENABLE; --- VHC_TYPE_INTERVENTION_FK -ALTER TABLE "VOLUME_HORAIRE_CHARGE" ADD CONSTRAINT "VHC_TYPE_INTERVENTION_FK" FOREIGN KEY ("TYPE_INTERVENTION_ID") - REFERENCES "TYPE_INTERVENTION" ("ID") ENABLE; --- VHENS_ELEMENT_PEDAGOGIQUE_FK -ALTER TABLE "VOLUME_HORAIRE_ENS" ADD CONSTRAINT "VHENS_ELEMENT_PEDAGOGIQUE_FK" FOREIGN KEY ("ELEMENT_PEDAGOGIQUE_ID") - REFERENCES "ELEMENT_PEDAGOGIQUE" ("ID") ENABLE; + PROCEDURE C_CHARGENS_SEUILS_DEF( PARAMS UNICAEN_TBL.T_PARAMS ) IS + conds CLOB; + BEGIN + conds := params_to_conds( params ); + + EXECUTE IMMEDIATE 'BEGIN --- VHENS_TYPE_INTERVENTION_FK -ALTER TABLE "VOLUME_HORAIRE_ENS" ADD CONSTRAINT "VHENS_TYPE_INTERVENTION_FK" FOREIGN KEY ("TYPE_INTERVENTION_ID") - REFERENCES "TYPE_INTERVENTION" ("ID") ON DELETE CASCADE ENABLE; + UPDATE TBL_CHARGENS_SEUILS_DEF SET to_delete = 1 WHERE ' || conds || '; --- VHIT_FK -ALTER TABLE "VOLUME_HORAIRE" ADD CONSTRAINT "VHIT_FK" FOREIGN KEY ("TYPE_INTERVENTION_ID") - REFERENCES "TYPE_INTERVENTION" ("ID") ENABLE; + MERGE INTO + TBL_CHARGENS_SEUILS_DEF t + USING ( --- VHMNP_FK -ALTER TABLE "VOLUME_HORAIRE" ADD CONSTRAINT "VHMNP_FK" FOREIGN KEY ("MOTIF_NON_PAIEMENT_ID") - REFERENCES "MOTIF_NON_PAIEMENT" ("ID") ENABLE; + SELECT + tv.* + FROM + (SELECT + sta.annee_id, + sta.scenario_id, + s.structure_id, + gtf.groupe_type_formation_id, + sta.type_intervention_id, + COALESCE(sc1.dedoublement, sc2.dedoublement, sc3.dedoublement, sc4.dedoublement) dedoublement + FROM + (SELECT DISTINCT scenario_id, type_intervention_id, annee_id FROM seuil_charge WHERE histo_destruction IS NULL) sta + JOIN (SELECT DISTINCT structure_id FROM noeud WHERE structure_id IS NOT NULL) s ON 1=1 + JOIN (SELECT id groupe_type_formation_id FROM groupe_type_formation) gtf ON 1=1 --- VHR_SERVICE_REFERENTIEL_FK -ALTER TABLE "VOLUME_HORAIRE_REF" ADD CONSTRAINT "VHR_SERVICE_REFERENTIEL_FK" FOREIGN KEY ("SERVICE_REFERENTIEL_ID") - REFERENCES "SERVICE_REFERENTIEL" ("ID") ENABLE; + LEFT JOIN seuil_charge sc1 ON + sc1.histo_destruction IS NULL + AND sc1.annee_id = sta.annee_id + AND sc1.scenario_id = sta.scenario_id + AND sc1.type_intervention_id = sta.type_intervention_id + AND sc1.structure_id = s.structure_id + AND sc1.groupe_type_formation_id = gtf.groupe_type_formation_id --- VHR_TYPE_VOLUME_HORAIRE_FK -ALTER TABLE "VOLUME_HORAIRE_REF" ADD CONSTRAINT "VHR_TYPE_VOLUME_HORAIRE_FK" FOREIGN KEY ("TYPE_VOLUME_HORAIRE_ID") - REFERENCES "TYPE_VOLUME_HORAIRE" ("ID") ENABLE; + LEFT JOIN seuil_charge sc2 ON + sc2.histo_destruction IS NULL + AND sc2.annee_id = sta.annee_id + AND sc2.scenario_id = sta.scenario_id + AND sc2.type_intervention_id = sta.type_intervention_id + AND sc2.structure_id = s.structure_id + AND sc2.groupe_type_formation_id IS NULL --- VH_PERIODE_FK -ALTER TABLE "VOLUME_HORAIRE" ADD CONSTRAINT "VH_PERIODE_FK" FOREIGN KEY ("PERIODE_ID") - REFERENCES "PERIODE" ("ID") ENABLE; + LEFT JOIN seuil_charge sc3 ON + sc3.histo_destruction IS NULL + AND sc3.annee_id = sta.annee_id + AND sc3.scenario_id = sta.scenario_id + AND sc3.type_intervention_id = sta.type_intervention_id + AND sc3.structure_id IS NULL + AND sc3.groupe_type_formation_id = gtf.groupe_type_formation_id --- VH_TYPE_VOLUME_HORAIRE_FK -ALTER TABLE "VOLUME_HORAIRE" ADD CONSTRAINT "VH_TYPE_VOLUME_HORAIRE_FK" FOREIGN KEY ("TYPE_VOLUME_HORAIRE_ID") - REFERENCES "TYPE_VOLUME_HORAIRE" ("ID") ENABLE; + LEFT JOIN seuil_charge sc4 ON + sc4.histo_destruction IS NULL + AND sc4.annee_id = sta.annee_id + AND sc4.scenario_id = sta.scenario_id + AND sc4.type_intervention_id = sta.type_intervention_id + AND sc4.structure_id IS NULL + AND sc4.groupe_type_formation_id IS NULL + WHERE + COALESCE(sc1.dedoublement, sc2.dedoublement, sc3.dedoublement, sc4.dedoublement, 1) <> 1) tv + WHERE + ' || conds || ' --- VOLUMES_HORAIRES_SERVICES_FK -ALTER TABLE "VOLUME_HORAIRE" ADD CONSTRAINT "VOLUMES_HORAIRES_SERVICES_FK" FOREIGN KEY ("SERVICE_ID") - REFERENCES "SERVICE" ("ID") ENABLE; + ) v ON ( + t.ANNEE_ID = v.ANNEE_ID + AND t.SCENARIO_ID = v.SCENARIO_ID + AND t.STRUCTURE_ID = v.STRUCTURE_ID + AND t.GROUPE_TYPE_FORMATION_ID = v.GROUPE_TYPE_FORMATION_ID + AND t.TYPE_INTERVENTION_ID = v.TYPE_INTERVENTION_ID --- VOLUME_HORAIRE_CHARGE_HCFK -ALTER TABLE "VOLUME_HORAIRE_CHARGE" ADD CONSTRAINT "VOLUME_HORAIRE_CHARGE_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + ) WHEN MATCHED THEN UPDATE SET --- VOLUME_HORAIRE_CHARGE_HDFK -ALTER TABLE "VOLUME_HORAIRE_CHARGE" ADD CONSTRAINT "VOLUME_HORAIRE_CHARGE_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + DEDOUBLEMENT = v.DEDOUBLEMENT, + to_delete = 0 --- VOLUME_HORAIRE_CHARGE_HMFK -ALTER TABLE "VOLUME_HORAIRE_CHARGE" ADD CONSTRAINT "VOLUME_HORAIRE_CHARGE_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + WHEN NOT MATCHED THEN INSERT ( --- VOLUME_HORAIRE_CONTRAT_FK -ALTER TABLE "VOLUME_HORAIRE" ADD CONSTRAINT "VOLUME_HORAIRE_CONTRAT_FK" FOREIGN KEY ("CONTRAT_ID") - REFERENCES "CONTRAT" ("ID") ENABLE; + ID, + ANNEE_ID, + SCENARIO_ID, + STRUCTURE_ID, + GROUPE_TYPE_FORMATION_ID, + TYPE_INTERVENTION_ID, + DEDOUBLEMENT, + TO_DELETE --- VOLUME_HORAIRE_ENS_HCFK -ALTER TABLE "VOLUME_HORAIRE_ENS" ADD CONSTRAINT "VOLUME_HORAIRE_ENS_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + ) VALUES ( --- VOLUME_HORAIRE_ENS_HDFK -ALTER TABLE "VOLUME_HORAIRE_ENS" ADD CONSTRAINT "VOLUME_HORAIRE_ENS_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + TBL_CHARGENS_SEUILS_DEF_ID_SEQ.NEXTVAL, + v.ANNEE_ID, + v.SCENARIO_ID, + v.STRUCTURE_ID, + v.GROUPE_TYPE_FORMATION_ID, + v.TYPE_INTERVENTION_ID, + v.DEDOUBLEMENT, + 0 --- VOLUME_HORAIRE_ENS_HMFK -ALTER TABLE "VOLUME_HORAIRE_ENS" ADD CONSTRAINT "VOLUME_HORAIRE_ENS_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + ); --- VOLUME_HORAIRE_ENS_SOURCE_FK -ALTER TABLE "VOLUME_HORAIRE_ENS" ADD CONSTRAINT "VOLUME_HORAIRE_ENS_SOURCE_FK" FOREIGN KEY ("SOURCE_ID") - REFERENCES "SOURCE" ("ID") ON DELETE CASCADE ENABLE; + DELETE TBL_CHARGENS_SEUILS_DEF WHERE to_delete = 1 AND ' || conds || '; --- VOLUME_HORAIRE_HCFK -ALTER TABLE "VOLUME_HORAIRE" ADD CONSTRAINT "VOLUME_HORAIRE_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + END;'; --- VOLUME_HORAIRE_HDFK -ALTER TABLE "VOLUME_HORAIRE" ADD CONSTRAINT "VOLUME_HORAIRE_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + END; --- VOLUME_HORAIRE_HMFK -ALTER TABLE "VOLUME_HORAIRE" ADD CONSTRAINT "VOLUME_HORAIRE_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; --- VOLUME_HORAIRE_REF_HCFK -ALTER TABLE "VOLUME_HORAIRE_REF" ADD CONSTRAINT "VOLUME_HORAIRE_REF_HCFK" FOREIGN KEY ("HISTO_CREATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; --- VOLUME_HORAIRE_REF_HDFK -ALTER TABLE "VOLUME_HORAIRE_REF" ADD CONSTRAINT "VOLUME_HORAIRE_REF_HDFK" FOREIGN KEY ("HISTO_DESTRUCTEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + PROCEDURE C_CLOTURE_REALISE( PARAMS UNICAEN_TBL.T_PARAMS ) IS + conds CLOB; + BEGIN + conds := params_to_conds( params ); --- VOLUME_HORAIRE_REF_HMFK -ALTER TABLE "VOLUME_HORAIRE_REF" ADD CONSTRAINT "VOLUME_HORAIRE_REF_HMFK" FOREIGN KEY ("HISTO_MODIFICATEUR_ID") - REFERENCES "UTILISATEUR" ("ID") ENABLE; + EXECUTE IMMEDIATE 'BEGIN --- VVHR_VALIDATION_FK -ALTER TABLE "VALIDATION_VOL_HORAIRE_REF" ADD CONSTRAINT "VVHR_VALIDATION_FK" FOREIGN KEY ("VALIDATION_ID") - REFERENCES "VALIDATION" ("ID") ON DELETE CASCADE ENABLE; + UPDATE TBL_CLOTURE_REALISE SET to_delete = 1 WHERE ' || conds || '; --- VVHR_VOLUME_HORAIRE_REF_FK -ALTER TABLE "VALIDATION_VOL_HORAIRE_REF" ADD CONSTRAINT "VVHR_VOLUME_HORAIRE_REF_FK" FOREIGN KEY ("VOLUME_HORAIRE_REF_ID") - REFERENCES "VOLUME_HORAIRE_REF" ("ID") ON DELETE CASCADE ENABLE; + MERGE INTO + TBL_CLOTURE_REALISE t + USING ( --- VVH_VALIDATION_FK -ALTER TABLE "VALIDATION_VOL_HORAIRE" ADD CONSTRAINT "VVH_VALIDATION_FK" FOREIGN KEY ("VALIDATION_ID") - REFERENCES "VALIDATION" ("ID") ON DELETE CASCADE ENABLE; + SELECT + tv.* + FROM + (WITH t AS ( + SELECT + i.annee_id annee_id, + i.id intervenant_id, + si.peut_cloturer_saisie peut_cloturer_saisie, + CASE WHEN v.id IS NULL THEN 0 ELSE 1 END cloture + FROM + intervenant i + JOIN statut_intervenant si ON si.id = i.statut_id + JOIN type_validation tv ON tv.code = ''CLOTURE_REALISE'' --- VVH_VOLUME_HORAIRE_FK -ALTER TABLE "VALIDATION_VOL_HORAIRE" ADD CONSTRAINT "VVH_VOLUME_HORAIRE_FK" FOREIGN KEY ("VOLUME_HORAIRE_ID") - REFERENCES "VOLUME_HORAIRE" ("ID") ON DELETE CASCADE ENABLE; + LEFT JOIN validation v ON v.intervenant_id = i.id + AND v.type_validation_id = tv.id + AND v.histo_destruction IS NULL --- WE_PREC_WE_FK -ALTER TABLE "WF_ETAPE_DEP" ADD CONSTRAINT "WE_PREC_WE_FK" FOREIGN KEY ("ETAPE_PREC_ID") - REFERENCES "WF_ETAPE" ("ID") ON DELETE CASCADE ENABLE; + WHERE + i.histo_destruction IS NULL + ) + SELECT + annee_id, + intervenant_id, + peut_cloturer_saisie, + CASE WHEN sum(cloture) = 0 THEN 0 ELSE 1 END cloture + FROM + t + GROUP BY + annee_id, + intervenant_id, + peut_cloturer_saisie) tv + WHERE + ' || conds || ' --- WE_SUIV_WE_FK -ALTER TABLE "WF_ETAPE_DEP" ADD CONSTRAINT "WE_SUIV_WE_FK" FOREIGN KEY ("ETAPE_SUIV_ID") - REFERENCES "WF_ETAPE" ("ID") ON DELETE CASCADE ENABLE; + ) v ON ( + t.INTERVENANT_ID = v.INTERVENANT_ID --- WE_TYPE_INTERVENANT_FK -ALTER TABLE "WF_ETAPE_DEP" ADD CONSTRAINT "WE_TYPE_INTERVENANT_FK" FOREIGN KEY ("TYPE_INTERVENANT_ID") - REFERENCES "TYPE_INTERVENANT" ("ID") ON DELETE CASCADE ENABLE; + ) WHEN MATCHED THEN UPDATE SET --- WF_DB_ETAPE_DEP_FK -ALTER TABLE "WF_DEP_BLOQUANTE" ADD CONSTRAINT "WF_DB_ETAPE_DEP_FK" FOREIGN KEY ("WF_ETAPE_DEP_ID") - REFERENCES "WF_ETAPE_DEP" ("ID") ON DELETE CASCADE ENABLE; + ANNEE_ID = v.ANNEE_ID, + PEUT_CLOTURER_SAISIE = v.PEUT_CLOTURER_SAISIE, + CLOTURE = v.CLOTURE, + to_delete = 0 --- WF_DB_TBL_WORKFLOW_FK -ALTER TABLE "WF_DEP_BLOQUANTE" ADD CONSTRAINT "WF_DB_TBL_WORKFLOW_FK" FOREIGN KEY ("TBL_WORKFLOW_ID") - REFERENCES "TBL_WORKFLOW" ("ID") ON DELETE CASCADE ENABLE; + WHEN NOT MATCHED THEN INSERT ( --- indic_diff_dossier_INT_FK -ALTER TABLE "INDIC_MODIF_DOSSIER" ADD CONSTRAINT "indic_diff_dossier_INT_FK" FOREIGN KEY ("INTERVENANT_ID") - REFERENCES "INTERVENANT" ("ID") ON DELETE CASCADE ENABLE; + ID, + ANNEE_ID, + INTERVENANT_ID, + PEUT_CLOTURER_SAISIE, + CLOTURE, + TO_DELETE --------------------------------------------------- --- Triggers --------------------------------------------------- + ) VALUES ( --- AFFECTATION_RECHERCHE_CK -CREATE OR REPLACE TRIGGER "AFFECTATION_RECHERCHE_CK" - BEFORE INSERT OR UPDATE ON "AFFECTATION_RECHERCHE" - REFERENCING FOR EACH ROW - DECLARE - pragma autonomous_transaction; - rows_found integer; -BEGIN + TBL_CLOTURE_REALISE_ID_SEQ.NEXTVAL, + v.ANNEE_ID, + v.INTERVENANT_ID, + v.PEUT_CLOTURER_SAISIE, + v.CLOTURE, + 0 - if :NEW.histo_destruction IS NOT NULL THEN RETURN; END IF; -- pas de check si c'est pour une historicisation + ); - select - count(*) into rows_found - from - affectation_recherche - where - intervenant_id = :new.intervenant_id - AND structure_id = :new.structure_id - AND histo_destruction IS NULL - AND id <> :NEW.id; + DELETE TBL_CLOTURE_REALISE WHERE to_delete = 1 AND ' || conds || '; - if rows_found > 0 THEN - raise_application_error(-20101, 'Un enseignant (id=' || :NEW.intervenant_id || ') ne peut pas avoir plusieurs affectations de recherche pour une même structure'); - END IF; + END;'; + + END; -END; -/ -ALTER TRIGGER "AFFECTATION_RECHERCHE_CK" ENABLE; + PROCEDURE C_CONTRAT( PARAMS UNICAEN_TBL.T_PARAMS ) IS + conds CLOB; + BEGIN + conds := params_to_conds( params ); --- AGREMENT_CK -CREATE OR REPLACE TRIGGER "AGREMENT_CK" - BEFORE UPDATE ON "AGREMENT" - REFERENCING FOR EACH ROW - DECLARE - contrat_found INTEGER; -BEGIN + EXECUTE IMMEDIATE 'BEGIN - SELECT - COUNT(*) INTO contrat_found - FROM - contrat c - WHERE - c.INTERVENANT_ID = :NEW.intervenant_id - AND c.structure_id = NVL(:NEW.structure_id,c.structure_id) - AND c.histo_destruction IS NULL - AND ROWNUM = 1; + UPDATE TBL_CONTRAT SET to_delete = 1 WHERE ' || conds || '; - IF - 1 = contrat_found - AND :NEW.histo_destruction IS NOT NULL AND :OLD.histo_destruction IS NULL - THEN + MERGE INTO + TBL_CONTRAT t + USING ( - IF :NEW.structure_id IS NULL THEN - raise_application_error(-20101, 'Cet agrément ne peut pas être supprimé car un contrat a été signé.'); - ELSE - raise_application_error(-20101, 'Cet agrément ne peut pas être supprimé car un contrat a été signé dans la même composante.'); - END IF; - END IF; + SELECT + tv.* + FROM + (WITH t AS ( + SELECT + i.annee_id annee_id, + i.id intervenant_id, + si.peut_avoir_contrat peut_avoir_contrat, + NVL(ep.structure_id, i.structure_id) structure_id, + CASE WHEN evh.code IN (''contrat-edite'',''contrat-signe'') THEN 1 ELSE 0 END edite, + CASE WHEN evh.code IN (''contrat-signe'') THEN 1 ELSE 0 END signe + FROM + intervenant i -END; + JOIN statut_intervenant si ON si.id = i.statut_id + JOIN service s ON s.intervenant_id = i.id + AND s.histo_destruction IS NULL -/ -ALTER TRIGGER "AGREMENT_CK" ENABLE; + JOIN type_volume_horaire tvh ON tvh.code = ''PREVU'' --- CALC_TAUX_HETD_ANNEES -CREATE OR REPLACE TRIGGER "CALC_TAUX_HETD_ANNEES" -AFTER INSERT OR UPDATE OR DELETE ON "TAUX_HORAIRE_HETD" -BEGIN - OSE_FORMULE.UPDATE_ANNEE_TAUX_HETD; -END; + JOIN volume_horaire vh ON vh.service_id = s.id + AND vh.histo_destruction IS NULL + AND vh.heures <> 0 + AND vh.type_volume_horaire_id = tvh.id -/ -ALTER TRIGGER "CALC_TAUX_HETD_ANNEES" ENABLE; + JOIN v_volume_horaire_etat vhe ON vhe.volume_horaire_id = vh.id --- CHARGENS_MAJ_EFFECTIFS -CREATE OR REPLACE TRIGGER "CHARGENS_MAJ_EFFECTIFS" - AFTER INSERT OR DELETE OR UPDATE ON "SCENARIO_NOEUD_EFFECTIF" - REFERENCING FOR EACH ROW - BEGIN -RETURN; - return; - IF NOT ose_chargens.ENABLE_TRIGGER_EFFECTIFS THEN RETURN; END IF; - IF DELETING THEN - ose_chargens.DEM_CALC_SUB_EFFECTIF( :OLD.scenario_noeud_id, :OLD.type_heures_id, :OLD.etape_id, 0 ); - ELSE - ose_chargens.DEM_CALC_SUB_EFFECTIF( :NEW.scenario_noeud_id, :NEW.type_heures_id, :NEW.etape_id, :NEW.effectif ); - END IF; + JOIN etat_volume_horaire evh ON evh.id = vhe.etat_volume_horaire_id + AND evh.code IN (''valide'', ''contrat-edite'', ''contrat-signe'') -END; + JOIN element_pedagogique ep ON ep.id = s.element_pedagogique_id + WHERE + i.histo_destruction IS NULL + AND NOT (si.peut_avoir_contrat = 0 AND evh.code = ''valide'') -/ -ALTER TRIGGER "CHARGENS_MAJ_EFFECTIFS" ENABLE; + UNION ALL --- ELEMENT_PEDAGOGIQUE_CK -CREATE OR REPLACE TRIGGER "ELEMENT_PEDAGOGIQUE_CK" - BEFORE INSERT OR UPDATE ON "ELEMENT_PEDAGOGIQUE" - REFERENCING FOR EACH ROW - DECLARE - enseignement INTEGER; - source_id INTEGER; -BEGIN - SELECT id INTO source_id FROM source WHERE code = 'OSE'; + SELECT + i.annee_id annee_id, + i.id intervenant_id, + si.peut_avoir_contrat peut_avoir_contrat, + s.structure_id structure_id, + CASE WHEN evh.code IN (''contrat-edite'',''contrat-signe'') THEN 1 ELSE 0 END edite, + CASE WHEN evh.code IN (''contrat-signe'') THEN 1 ELSE 0 END signe + FROM + intervenant i - IF :NEW.source_id <> source_id THEN RETURN; END IF; -- impossible de checker car l'UPD par import se fait champ par champ... - - IF :NEW.fi = 0 AND :NEW.fc = 0 AND :NEW.fa = 0 THEN - raise_application_error(-20101, 'Un enseignement doit obligatoirement être au moins en FI, FC ou FA'); - END IF; + JOIN statut_intervenant si ON si.id = i.statut_id - IF 1 <> ROUND(:NEW.taux_fi + :NEW.taux_fc + :NEW.taux_fa, 2) THEN - raise_application_error( -20101, 'Le total des taux FI, FC et FA n''est pas égal à 100%'); - END IF; + JOIN service_referentiel s ON s.intervenant_id = i.id + AND s.histo_destruction IS NULL - IF :NEW.fi = 0 AND :NEW.taux_fi > 0 THEN - raise_application_error( -20101, 'Le taux FI doit être à 0 puisque la formation n''est pas dispensée en FI'); - END IF; + JOIN type_volume_horaire tvh ON tvh.code = ''PREVU'' - IF :NEW.fa = 0 AND :NEW.taux_fa > 0 THEN - raise_application_error( -20101, 'Le taux FA doit être à 0 puisque la formation n''est pas dispensée en FA'); - END IF; - - IF :NEW.fc = 0 AND :NEW.taux_fc > 0 THEN - raise_application_error( -20101, 'Le taux FC doit être à 0 puisque la formation n''est pas dispensée en FC'); - END IF; + JOIN volume_horaire_ref vh ON vh.service_referentiel_id = s.id + AND vh.histo_destruction IS NULL + AND vh.heures <> 0 + AND vh.type_volume_horaire_id = tvh.id - IF :NEW.periode_id IS NOT NULL THEN - SELECT p.enseignement - INTO enseignement - FROM periode p - WHERE p.id = :NEW.periode_id; - IF enseignement <> 1 THEN - raise_application_error(-20101, 'Cette période n''est pas appliquable à cet élément pédagogique.'); - END IF; - END IF; + JOIN v_volume_horaire_ref_etat vhe ON vhe.volume_horaire_ref_id = vh.id -END; + JOIN etat_volume_horaire evh ON evh.id = vhe.etat_volume_horaire_id + AND evh.code IN (''valide'', ''contrat-edite'', ''contrat-signe'') -/ -ALTER TRIGGER "ELEMENT_PEDAGOGIQUE_CK" ENABLE; + WHERE + i.histo_destruction IS NULL + AND NOT (si.peut_avoir_contrat = 0 AND evh.code = ''valide'') + ) + SELECT + annee_id, + intervenant_id, + peut_avoir_contrat, + structure_id, + count(*) as nbvh, + sum(edite) as edite, + sum(signe) as signe + FROM + t + GROUP BY + annee_id, + intervenant_id, + peut_avoir_contrat, + structure_id) tv + WHERE + ' || conds || ' --- F_CONTRAT -CREATE OR REPLACE TRIGGER "F_CONTRAT" - AFTER DELETE OR UPDATE OF INTERVENANT_ID, STRUCTURE_ID, VALIDATION_ID, DATE_RETOUR_SIGNE, HISTO_CREATION, HISTO_DESTRUCTION ON "CONTRAT" - REFERENCING FOR EACH ROW - BEGIN + ) v ON ( + t.INTERVENANT_ID = v.INTERVENANT_ID + AND COALESCE(t.STRUCTURE_ID,0) = COALESCE(v.STRUCTURE_ID,0) - IF NOT UNICAEN_TBL.ACTIV_TRIGGERS THEN RETURN; END IF; + ) WHEN MATCHED THEN UPDATE SET - FOR p IN ( + ANNEE_ID = v.ANNEE_ID, + PEUT_AVOIR_CONTRAT = v.PEUT_AVOIR_CONTRAT, + NBVH = v.NBVH, + EDITE = v.EDITE, + SIGNE = v.SIGNE, + to_delete = 0 - SELECT DISTINCT - s.intervenant_id - FROM - volume_horaire vh - JOIN service s ON s.id = vh.service_id AND s.histo_destruction IS NULL - WHERE - vh.histo_destruction IS NULL - AND (vh.contrat_id = :OLD.id OR vh.contrat_id = :NEW.id) + WHEN NOT MATCHED THEN INSERT ( - ) LOOP + ID, + ANNEE_ID, + INTERVENANT_ID, + PEUT_AVOIR_CONTRAT, + STRUCTURE_ID, + NBVH, + EDITE, + SIGNE, + TO_DELETE - UNICAEN_TBL.DEMANDE_CALCUL('formule', UNICAEN_TBL.make_params('INTERVENANT_ID', p.intervenant_id) ); + ) VALUES ( - END LOOP; + TBL_CONTRAT_ID_SEQ.NEXTVAL, + v.ANNEE_ID, + v.INTERVENANT_ID, + v.PEUT_AVOIR_CONTRAT, + v.STRUCTURE_ID, + v.NBVH, + v.EDITE, + v.SIGNE, + 0 -END; + ); -/ -ALTER TRIGGER "F_CONTRAT" ENABLE; + DELETE TBL_CONTRAT WHERE to_delete = 1 AND ' || conds || '; --- F_CONTRAT_S -CREATE OR REPLACE TRIGGER "F_CONTRAT_S" - AFTER DELETE OR UPDATE ON "CONTRAT" - BEGIN - UNICAEN_TBL.CALCULER_DEMANDES; -END; + END;'; + END; -/ -ALTER TRIGGER "F_CONTRAT_S" ENABLE; --- F_ELEMENT_MODULATEUR -CREATE OR REPLACE TRIGGER "F_ELEMENT_MODULATEUR" - AFTER INSERT OR DELETE OR UPDATE ON "ELEMENT_MODULATEUR" - REFERENCING FOR EACH ROW + + PROCEDURE C_DMEP_LIQUIDATION( PARAMS UNICAEN_TBL.T_PARAMS ) IS + conds CLOB; BEGIN + conds := params_to_conds( params ); - IF NOT UNICAEN_TBL.ACTIV_TRIGGERS THEN RETURN; END IF; + EXECUTE IMMEDIATE 'BEGIN - FOR p IN ( + UPDATE TBL_DMEP_LIQUIDATION SET to_delete = 1 WHERE ' || conds || '; + + MERGE INTO + TBL_DMEP_LIQUIDATION t + USING ( + + SELECT + tv.* + FROM + (SELECT + annee_id, + type_ressource_id, + structure_id, + SUM(heures) heures + FROM + ( + SELECT + i.annee_id, + cc.type_ressource_id, + COALESCE( ep.structure_id, i.structure_id ) structure_id, + mep.heures + FROM + mise_en_paiement mep + JOIN centre_cout cc ON cc.id = mep.centre_cout_id + JOIN formule_resultat_service frs ON frs.id = mep.formule_res_service_id + JOIN service s ON s.id = frs.service_id + JOIN intervenant i ON i.id = s.intervenant_id + LEFT JOIN element_pedagogique ep ON ep.id = s.element_pedagogique_id + WHERE + mep.histo_destruction IS NULL - SELECT DISTINCT - s.intervenant_id - FROM - service s - WHERE - s.histo_destruction IS NULL - AND (s.element_pedagogique_id = :OLD.element_id OR s.element_pedagogique_id = :NEW.element_id) + UNION ALL - ) LOOP + SELECT + i.annee_id, + cc.type_ressource_id, + sr.structure_id structure_id, + heures + FROM + mise_en_paiement mep + JOIN centre_cout cc ON cc.id = mep.centre_cout_id + JOIN formule_resultat_service_ref frsr ON frsr.id = mep.formule_res_service_ref_id + JOIN service_referentiel sr ON sr.id = frsr.service_referentiel_id + JOIN intervenant i ON i.id = sr.intervenant_id - UNICAEN_TBL.DEMANDE_CALCUL('formule', UNICAEN_TBL.make_params('INTERVENANT_ID', p.intervenant_id) ); + WHERE + mep.histo_destruction IS NULL - END LOOP; + ) t1 + GROUP BY + annee_id, type_ressource_id, structure_id) tv + WHERE + ' || conds || ' -END; + ) v ON ( + t.ANNEE_ID = v.ANNEE_ID + AND t.TYPE_RESSOURCE_ID = v.TYPE_RESSOURCE_ID + AND t.STRUCTURE_ID = v.STRUCTURE_ID + ) WHEN MATCHED THEN UPDATE SET -/ -ALTER TRIGGER "F_ELEMENT_MODULATEUR" ENABLE; + HEURES = v.HEURES, + to_delete = 0 --- F_ELEMENT_MODULATEUR_S -CREATE OR REPLACE TRIGGER "F_ELEMENT_MODULATEUR_S" - AFTER INSERT OR DELETE OR UPDATE ON "ELEMENT_MODULATEUR" - BEGIN - UNICAEN_TBL.CALCULER_DEMANDES; -END; + WHEN NOT MATCHED THEN INSERT ( + ID, + ANNEE_ID, + TYPE_RESSOURCE_ID, + STRUCTURE_ID, + HEURES, + TO_DELETE -/ -ALTER TRIGGER "F_ELEMENT_MODULATEUR_S" ENABLE; + ) VALUES ( --- F_ELEMENT_PEDAGOGIQUE -CREATE OR REPLACE TRIGGER "F_ELEMENT_PEDAGOGIQUE" - AFTER DELETE OR UPDATE OF ID, STRUCTURE_ID, PERIODE_ID, TAUX_FI, TAUX_FC, TAUX_FA, TAUX_FOAD, FI, FC, FA, HISTO_CREATION, HISTO_DESTRUCTION, ANNEE_ID ON "ELEMENT_PEDAGOGIQUE" - REFERENCING FOR EACH ROW - BEGIN + TBL_DMEP_LIQUIDATION_ID_SEQ.NEXTVAL, + v.ANNEE_ID, + v.TYPE_RESSOURCE_ID, + v.STRUCTURE_ID, + v.HEURES, + 0 - IF NOT UNICAEN_TBL.ACTIV_TRIGGERS THEN RETURN; END IF; + ); - FOR p IN - ( SELECT DISTINCT s.intervenant_id - FROM service s - WHERE (s.element_pedagogique_id = :NEW.id - OR s.element_pedagogique_id = :OLD.id) - AND s.histo_destruction IS NULL - ) LOOP UNICAEN_TBL.DEMANDE_CALCUL('formule', UNICAEN_TBL.make_params('INTERVENANT_ID', p.intervenant_id) ); -END LOOP; -END; + DELETE TBL_DMEP_LIQUIDATION WHERE to_delete = 1 AND ' || conds || '; -/ -ALTER TRIGGER "F_ELEMENT_PEDAGOGIQUE" ENABLE; + END;'; --- F_ELEMENT_PEDAGOGIQUE_S -CREATE OR REPLACE TRIGGER "F_ELEMENT_PEDAGOGIQUE_S" - AFTER DELETE OR UPDATE ON "ELEMENT_PEDAGOGIQUE" - BEGIN - UNICAEN_TBL.CALCULER_DEMANDES; -END; + END; -/ -ALTER TRIGGER "F_ELEMENT_PEDAGOGIQUE_S" ENABLE; --- F_INTERVENANT -CREATE OR REPLACE TRIGGER "F_INTERVENANT" - AFTER UPDATE OF ID, DATE_NAISSANCE, STATUT_ID, STRUCTURE_ID, HISTO_CREATION, HISTO_DESTRUCTION, PREMIER_RECRUTEMENT, ANNEE_ID ON "INTERVENANT" - REFERENCING FOR EACH ROW + PROCEDURE C_DOSSIER( PARAMS UNICAEN_TBL.T_PARAMS ) IS + conds CLOB; BEGIN + conds := params_to_conds( params ); - IF NOT UNICAEN_TBL.ACTIV_TRIGGERS THEN RETURN; END IF; + EXECUTE IMMEDIATE 'BEGIN - FOR p IN ( + UPDATE TBL_DOSSIER SET to_delete = 1 WHERE ' || conds || '; - SELECT DISTINCT - fr.intervenant_id - FROM - formule_resultat fr - WHERE - fr.intervenant_id = :NEW.id OR fr.intervenant_id = :OLD.id + MERGE INTO + TBL_DOSSIER t + USING ( - ) LOOP + SELECT + tv.* + FROM + (SELECT + i.annee_id, + i.id intervenant_id, + si.peut_saisir_dossier, + d.id dossier_id, + v.id validation_id + FROM + intervenant i + JOIN statut_intervenant si ON si.id = i.statut_id + LEFT JOIN dossier d ON d.intervenant_id = i.id + AND d.histo_destruction IS NULL - UNICAEN_TBL.DEMANDE_CALCUL('formule', UNICAEN_TBL.make_params('INTERVENANT_ID', p.intervenant_id) ); + JOIN type_validation tv ON tv.code = ''DONNEES_PERSO_PAR_COMP'' + LEFT JOIN validation v ON v.intervenant_id = i.id + AND v.type_validation_id = tv.id + AND v.histo_destruction IS NULL + WHERE + i.histo_destruction IS NULL) tv + WHERE + ' || conds || ' - END LOOP; + ) v ON ( + t.INTERVENANT_ID = v.INTERVENANT_ID -END; + ) WHEN MATCHED THEN UPDATE SET + ANNEE_ID = v.ANNEE_ID, + PEUT_SAISIR_DOSSIER = v.PEUT_SAISIR_DOSSIER, + DOSSIER_ID = v.DOSSIER_ID, + VALIDATION_ID = v.VALIDATION_ID, + to_delete = 0 -/ -ALTER TRIGGER "F_INTERVENANT" ENABLE; + WHEN NOT MATCHED THEN INSERT ( --- F_INTERVENANT_S -CREATE OR REPLACE TRIGGER "F_INTERVENANT_S" - AFTER UPDATE ON "INTERVENANT" - BEGIN - UNICAEN_TBL.CALCULER_DEMANDES; -END; + ID, + ANNEE_ID, + INTERVENANT_ID, + PEUT_SAISIR_DOSSIER, + DOSSIER_ID, + VALIDATION_ID, + TO_DELETE + ) VALUES ( -/ -ALTER TRIGGER "F_INTERVENANT_S" ENABLE; + TBL_DOSSIER_ID_SEQ.NEXTVAL, + v.ANNEE_ID, + v.INTERVENANT_ID, + v.PEUT_SAISIR_DOSSIER, + v.DOSSIER_ID, + v.VALIDATION_ID, + 0 --- F_MODIF_SERVICE_DU -CREATE OR REPLACE TRIGGER "F_MODIF_SERVICE_DU" - AFTER INSERT OR DELETE OR UPDATE ON "MODIFICATION_SERVICE_DU" - REFERENCING FOR EACH ROW - BEGIN + ); - IF NOT UNICAEN_TBL.ACTIV_TRIGGERS THEN RETURN; END IF; + DELETE TBL_DOSSIER WHERE to_delete = 1 AND ' || conds || '; - IF DELETING OR UPDATING THEN - UNICAEN_TBL.DEMANDE_CALCUL('formule', UNICAEN_TBL.make_params('INTERVENANT_ID', :OLD.intervenant_id) ); - END IF; - IF INSERTING OR UPDATING THEN - UNICAEN_TBL.DEMANDE_CALCUL('formule', UNICAEN_TBL.make_params('INTERVENANT_ID', :NEW.intervenant_id) ); - END IF; + END;'; -END; + END; -/ -ALTER TRIGGER "F_MODIF_SERVICE_DU" ENABLE; --- F_MODIF_SERVICE_DU_S -CREATE OR REPLACE TRIGGER "F_MODIF_SERVICE_DU_S" - AFTER INSERT OR DELETE OR UPDATE ON "MODIFICATION_SERVICE_DU" + PROCEDURE C_PAIEMENT( PARAMS UNICAEN_TBL.T_PARAMS ) IS + conds CLOB; BEGIN - UNICAEN_TBL.CALCULER_DEMANDES; -END; + conds := params_to_conds( params ); + EXECUTE IMMEDIATE 'BEGIN -/ -ALTER TRIGGER "F_MODIF_SERVICE_DU_S" ENABLE; + UPDATE TBL_PAIEMENT SET to_delete = 1 WHERE ' || conds || '; --- F_MODULATEUR -CREATE OR REPLACE TRIGGER "F_MODULATEUR" - AFTER DELETE OR UPDATE ON "MODULATEUR" - REFERENCING FOR EACH ROW - BEGIN + MERGE INTO + TBL_PAIEMENT t + USING ( - IF NOT UNICAEN_TBL.ACTIV_TRIGGERS THEN RETURN; END IF; + SELECT + tv.* + FROM + (SELECT + i.annee_id annee_id, + frs.id formule_res_service_id, + null formule_res_service_ref_id, + i.id intervenant_id, + COALESCE( ep.structure_id, i.structure_id ) structure_id, + mep.id mise_en_paiement_id, + mep.periode_paiement_id periode_paiement_id, + frs.heures_compl_fi + frs.heures_compl_fc + frs.heures_compl_fa + frs.heures_compl_fc_majorees heures_a_payer, + count(*) OVER(PARTITION BY frs.id) heures_a_payer_pond, + NVL(mep.heures,0) heures_demandees, + CASE WHEN mep.periode_paiement_id IS NULL THEN 0 ELSE mep.heures END heures_payees + FROM + formule_resultat_service frs + JOIN type_volume_horaire tvh ON tvh.code = ''REALISE'' + JOIN etat_volume_horaire evh ON evh.code = ''valide'' + JOIN formule_resultat fr ON fr.id = frs.formule_resultat_id + AND fr.type_volume_horaire_id = tvh.id + AND fr.etat_volume_horaire_id = evh.id - FOR p IN ( + JOIN intervenant i ON i.id = fr.intervenant_id + JOIN service s ON s.id = frs.service_id + LEFT JOIN element_pedagogique ep ON ep.id = s.element_pedagogique_id + LEFT JOIN mise_en_paiement mep ON mep.formule_res_service_id = frs.id + AND mep.histo_destruction IS NULL - SELECT DISTINCT - s.intervenant_id - FROM - service s - JOIN element_modulateur em ON - em.element_id = s.element_pedagogique_id - AND em.histo_destruction IS NULL - WHERE - s.histo_destruction IS NULL - AND (em.modulateur_id = :OLD.id OR em.modulateur_id = :NEW.id) + UNION ALL + + SELECT + i.annee_id annee_id, + null formule_res_service_id, + frs.id formule_res_service_ref_id, + i.id intervenant_id, + s.structure_id structure_id, + mep.id mise_en_paiement_id, + mep.periode_paiement_id periode_paiement_id, + frs.heures_compl_referentiel heures_a_payer, + count(*) OVER(PARTITION BY frs.id) heures_a_payer_pond, + NVL(mep.heures,0) heures_demandees, + CASE WHEN mep.periode_paiement_id IS NULL THEN 0 ELSE mep.heures END heures_payees + FROM + formule_resultat_service_ref frs + JOIN type_volume_horaire tvh ON tvh.code = ''REALISE'' + JOIN etat_volume_horaire evh ON evh.code = ''valide'' + JOIN formule_resultat fr ON fr.id = frs.formule_resultat_id + AND fr.type_volume_horaire_id = tvh.id + AND fr.etat_volume_horaire_id = evh.id + + JOIN intervenant i ON i.id = fr.intervenant_id + JOIN service_referentiel s ON s.id = frs.service_referentiel_id + LEFT JOIN mise_en_paiement mep ON mep.formule_res_service_ref_id = frs.id + AND mep.histo_destruction IS NULL) tv + WHERE + ' || conds || ' - ) LOOP + ) v ON ( + t.INTERVENANT_ID = v.INTERVENANT_ID + AND COALESCE(t.MISE_EN_PAIEMENT_ID,0) = COALESCE(v.MISE_EN_PAIEMENT_ID,0) + AND COALESCE(t.FORMULE_RES_SERVICE_ID,0) = COALESCE(v.FORMULE_RES_SERVICE_ID,0) + AND COALESCE(t.FORMULE_RES_SERVICE_REF_ID,0) = COALESCE(v.FORMULE_RES_SERVICE_REF_ID,0) - UNICAEN_TBL.DEMANDE_CALCUL('formule', UNICAEN_TBL.make_params('INTERVENANT_ID', p.intervenant_id) ); + ) WHEN MATCHED THEN UPDATE SET - END LOOP; -END; + ANNEE_ID = v.ANNEE_ID, + STRUCTURE_ID = v.STRUCTURE_ID, + PERIODE_PAIEMENT_ID = v.PERIODE_PAIEMENT_ID, + HEURES_A_PAYER = v.HEURES_A_PAYER, + HEURES_A_PAYER_POND = v.HEURES_A_PAYER_POND, + HEURES_DEMANDEES = v.HEURES_DEMANDEES, + HEURES_PAYEES = v.HEURES_PAYEES, + to_delete = 0 + WHEN NOT MATCHED THEN INSERT ( -/ -ALTER TRIGGER "F_MODULATEUR" ENABLE; + ID, + ANNEE_ID, + INTERVENANT_ID, + STRUCTURE_ID, + MISE_EN_PAIEMENT_ID, + PERIODE_PAIEMENT_ID, + HEURES_A_PAYER, + HEURES_A_PAYER_POND, + HEURES_DEMANDEES, + HEURES_PAYEES, + FORMULE_RES_SERVICE_ID, + FORMULE_RES_SERVICE_REF_ID, + TO_DELETE --- F_MODULATEUR_S -CREATE OR REPLACE TRIGGER "F_MODULATEUR_S" - AFTER DELETE OR UPDATE ON "MODULATEUR" - BEGIN - UNICAEN_TBL.CALCULER_DEMANDES; -END; + ) VALUES ( + TBL_PAIEMENT_ID_SEQ.NEXTVAL, + v.ANNEE_ID, + v.INTERVENANT_ID, + v.STRUCTURE_ID, + v.MISE_EN_PAIEMENT_ID, + v.PERIODE_PAIEMENT_ID, + v.HEURES_A_PAYER, + v.HEURES_A_PAYER_POND, + v.HEURES_DEMANDEES, + v.HEURES_PAYEES, + v.FORMULE_RES_SERVICE_ID, + v.FORMULE_RES_SERVICE_REF_ID, + 0 -/ -ALTER TRIGGER "F_MODULATEUR_S" ENABLE; + ); --- F_MOTIF_MODIFICATION_SERVICE -CREATE OR REPLACE TRIGGER "F_MOTIF_MODIFICATION_SERVICE" - AFTER DELETE OR UPDATE ON "MOTIF_MODIFICATION_SERVICE" - REFERENCING FOR EACH ROW - BEGIN + DELETE TBL_PAIEMENT WHERE to_delete = 1 AND ' || conds || '; - IF NOT UNICAEN_TBL.ACTIV_TRIGGERS THEN RETURN; END IF; + END;'; - FOR p IN ( + END; - SELECT DISTINCT - intervenant_id - FROM - modification_service_du msd - WHERE - msd.histo_destruction IS NULL - AND (msd.motif_id = :NEW.id OR msd.motif_id = :OLD.id) - ) LOOP - UNICAEN_TBL.DEMANDE_CALCUL('formule', UNICAEN_TBL.make_params('INTERVENANT_ID', p.intervenant_id) ); + PROCEDURE C_PIECE_JOINTE( PARAMS UNICAEN_TBL.T_PARAMS ) IS + conds CLOB; + BEGIN + conds := params_to_conds( params ); - END LOOP; + EXECUTE IMMEDIATE 'BEGIN -END; + UPDATE TBL_PIECE_JOINTE SET to_delete = 1 WHERE ' || conds || '; + MERGE INTO + TBL_PIECE_JOINTE t + USING ( -/ -ALTER TRIGGER "F_MOTIF_MODIFICATION_SERVICE" ENABLE; + SELECT + tv.* + FROM + (WITH pjf AS ( + SELECT + pjf.annee_id, + pjf.type_piece_jointe_id, + pjf.intervenant_id, + COUNT(*) count, + SUM(CASE WHEN validation_id IS NULL THEN 0 ELSE 1 END) validation, + SUM(CASE WHEN fichier_id IS NULL THEN 0 ELSE 1 END) fichier + FROM + tbl_piece_jointe_fournie pjf + GROUP BY + pjf.annee_id, + pjf.type_piece_jointe_id, + pjf.intervenant_id + ) + SELECT + NVL( pjd.annee_id, pjf.annee_id ) annee_id, + NVL( pjd.type_piece_jointe_id, pjf.type_piece_jointe_id ) type_piece_jointe_id, + NVL( pjd.intervenant_id, pjf.intervenant_id ) intervenant_id, + CASE WHEN pjd.intervenant_id IS NULL THEN 0 ELSE 1 END demandee, + CASE WHEN pjf.fichier = pjf.count THEN 1 ELSE 0 END fournie, + CASE WHEN pjf.validation = pjf.count THEN 1 ELSE 0 END validee, + NVL(pjd.heures_pour_seuil,0) heures_pour_seuil + FROM + tbl_piece_jointe_demande pjd + FULL JOIN pjf ON pjf.type_piece_jointe_id = pjd.type_piece_jointe_id AND pjf.intervenant_id = pjd.intervenant_id) tv + WHERE + ' || conds || ' --- F_MOTIF_MODIFICATION_SERVICE_S -CREATE OR REPLACE TRIGGER "F_MOTIF_MODIFICATION_SERVICE_S" - AFTER DELETE OR UPDATE ON "MOTIF_MODIFICATION_SERVICE" - BEGIN - UNICAEN_TBL.CALCULER_DEMANDES; -END; + ) v ON ( + t.TYPE_PIECE_JOINTE_ID = v.TYPE_PIECE_JOINTE_ID + AND t.INTERVENANT_ID = v.INTERVENANT_ID + ) WHEN MATCHED THEN UPDATE SET -/ -ALTER TRIGGER "F_MOTIF_MODIFICATION_SERVICE_S" ENABLE; + ANNEE_ID = v.ANNEE_ID, + DEMANDEE = v.DEMANDEE, + FOURNIE = v.FOURNIE, + VALIDEE = v.VALIDEE, + HEURES_POUR_SEUIL = v.HEURES_POUR_SEUIL, + to_delete = 0 --- F_STATUT_INTERVENANT -CREATE OR REPLACE TRIGGER "F_STATUT_INTERVENANT" - AFTER UPDATE OF SERVICE_STATUTAIRE, DEPASSEMENT, TYPE_INTERVENANT_ID, NON_AUTORISE ON "STATUT_INTERVENANT" - REFERENCING FOR EACH ROW - BEGIN + WHEN NOT MATCHED THEN INSERT ( - IF NOT UNICAEN_TBL.ACTIV_TRIGGERS THEN RETURN; END IF; + ID, + ANNEE_ID, + TYPE_PIECE_JOINTE_ID, + INTERVENANT_ID, + DEMANDEE, + FOURNIE, + VALIDEE, + HEURES_POUR_SEUIL, + TO_DELETE - FOR p IN ( + ) VALUES ( - SELECT DISTINCT - fr.intervenant_id - FROM - intervenant i - JOIN formule_resultat fr ON fr.intervenant_id = i.id - WHERE - (i.statut_id = :NEW.id OR i.statut_id = :OLD.id) - AND i.histo_destruction IS NULL + TBL_PIECE_JOINTE_ID_SEQ.NEXTVAL, + v.ANNEE_ID, + v.TYPE_PIECE_JOINTE_ID, + v.INTERVENANT_ID, + v.DEMANDEE, + v.FOURNIE, + v.VALIDEE, + v.HEURES_POUR_SEUIL, + 0 - ) LOOP + ); - UNICAEN_TBL.DEMANDE_CALCUL('formule', UNICAEN_TBL.make_params('INTERVENANT_ID', p.intervenant_id) ); + DELETE TBL_PIECE_JOINTE WHERE to_delete = 1 AND ' || conds || '; - END LOOP; -END; + END;'; + END; -/ -ALTER TRIGGER "F_STATUT_INTERVENANT" ENABLE; --- F_STATUT_INTERVENANT_S -CREATE OR REPLACE TRIGGER "F_STATUT_INTERVENANT_S" - AFTER UPDATE ON "STATUT_INTERVENANT" + + PROCEDURE C_PIECE_JOINTE_DEMANDE( PARAMS UNICAEN_TBL.T_PARAMS ) IS + conds CLOB; BEGIN - UNICAEN_TBL.CALCULER_DEMANDES; -END; + conds := params_to_conds( params ); + EXECUTE IMMEDIATE 'BEGIN -/ -ALTER TRIGGER "F_STATUT_INTERVENANT_S" ENABLE; + UPDATE TBL_PIECE_JOINTE_DEMANDE SET to_delete = 1 WHERE ' || conds || '; --- F_TYPE_INTERVENTION -CREATE OR REPLACE TRIGGER "F_TYPE_INTERVENTION" - AFTER UPDATE OF TAUX_HETD_SERVICE, TAUX_HETD_COMPLEMENTAIRE ON "TYPE_INTERVENTION" - REFERENCING FOR EACH ROW - BEGIN + MERGE INTO + TBL_PIECE_JOINTE_DEMANDE t + USING ( - IF NOT UNICAEN_TBL.ACTIV_TRIGGERS THEN RETURN; END IF; + SELECT + tv.* + FROM + (WITH i_h AS ( + SELECT + s.intervenant_id, + sum(vh.heures) heures, + sum(ep.taux_fc) fc + FROM + service s + JOIN type_volume_horaire tvh ON tvh.code = ''PREVU'' + JOIN volume_horaire vh ON vh.service_id = s.id + AND vh.type_volume_horaire_id = tvh.id + AND vh.histo_destruction IS NULL + JOIN element_pedagogique ep ON ep.id = s.element_pedagogique_id -- Service sur l''établissement + WHERE + s.histo_destruction IS NULL + AND vh.motif_non_paiement_id IS NULL -- pas de motif de non paiement + GROUP BY + s.intervenant_id + ) + SELECT + i.annee_id annee_id, + i.id intervenant_id, + tpj.id type_piece_jointe_id, + MAX(COALESCE(i_h.heures, 0)) heures_pour_seuil + FROM + intervenant i - FOR p IN ( + LEFT JOIN dossier d ON d.intervenant_id = i.id + AND d.histo_destruction IS NULL - SELECT DISTINCT - s.intervenant_id - FROM - volume_horaire vh - JOIN service s ON s.id = vh.service_id AND s.histo_destruction IS NULL - WHERE - vh.histo_destruction IS NULL - AND (vh.type_intervention_id = :NEW.id OR vh.type_intervention_id = :OLD.id) + JOIN type_piece_jointe_statut tpjs ON tpjs.statut_intervenant_id = i.statut_id + AND tpjs.histo_destruction IS NULL + AND i.annee_id BETWEEN COALESCE(tpjs.annee_debut_id,i.annee_id) AND COALESCE(tpjs.annee_fin_id,i.annee_id) - ) LOOP + JOIN type_piece_jointe tpj ON tpj.id = tpjs.type_piece_jointe_id + AND tpj.histo_destruction IS NULL - UNICAEN_TBL.DEMANDE_CALCUL('formule', UNICAEN_TBL.make_params('INTERVENANT_ID', p.intervenant_id) ); + LEFT JOIN i_h ON i_h.intervenant_id = i.id + WHERE + -- Gestion de l''historique + i.histo_destruction IS NULL - END LOOP; -END; + -- Seuil HETD + AND (COALESCE(i_h.heures,0) > COALESCE(tpjs.seuil_hetd,-1)) + -- En fonction du premier recrutement ou non + AND (tpjs.premier_recrutement = 0 OR COALESCE(i.premier_recrutement,0) = 1) -/ -ALTER TRIGGER "F_TYPE_INTERVENTION" ENABLE; + -- Le RIB n''est demandé QUE s''il est différent!! + AND CASE + WHEN tpjs.changement_rib = 0 OR d.id IS NULL THEN 1 + ELSE CASE WHEN replace(i.bic, '' '', '''') || ''-'' || replace(i.iban, '' '', '''') = d.rib THEN 0 ELSE 1 END + END = 1 --- F_TYPE_INTERVENTION_S -CREATE OR REPLACE TRIGGER "F_TYPE_INTERVENTION_S" - AFTER UPDATE ON "TYPE_INTERVENTION" - BEGIN - UNICAEN_TBL.CALCULER_DEMANDES; -END; + -- Filtre FC + AND (tpjs.fc = 0 OR i_h.fc > 0) + GROUP BY + i.annee_id, + i.id, + tpj.id) tv + WHERE + ' || conds || ' + ) v ON ( + t.TYPE_PIECE_JOINTE_ID = v.TYPE_PIECE_JOINTE_ID + AND t.INTERVENANT_ID = v.INTERVENANT_ID -/ -ALTER TRIGGER "F_TYPE_INTERVENTION_S" ENABLE; + ) WHEN MATCHED THEN UPDATE SET --- INDIC_TRG_MODIF_DOSSIER -CREATE OR REPLACE TRIGGER "INDIC_TRG_MODIF_DOSSIER" - AFTER INSERT OR UPDATE OF NOM_USUEL, NOM_PATRONYMIQUE, PRENOM, CIVILITE_ID, ADRESSE, RIB, DATE_NAISSANCE ON "DOSSIER" + ANNEE_ID = v.ANNEE_ID, + HEURES_POUR_SEUIL = v.HEURES_POUR_SEUIL, + to_delete = 0 - FOR EACH ROW -/** - * But : mettre à jour la liste des PJ attendues. - */ -DECLARE - i integer := 1; - intervenantId NUMERIC; - found integer; - estCreationDossier integer; - type array_t is table of varchar2(1024); - - attrNames array_t := array_t(); - attrOldVals array_t := array_t(); - attrNewVals array_t := array_t(); - - -- valeurs importées (format texte) : - impSourceName source.libelle%type; - impNomUsuel indic_modif_dossier.ATTR_NEW_VALUE%type; - impNomPatro indic_modif_dossier.ATTR_NEW_VALUE%type; - impPrenom indic_modif_dossier.ATTR_NEW_VALUE%type; - impCivilite indic_modif_dossier.ATTR_NEW_VALUE%type; - impDateNaiss indic_modif_dossier.ATTR_NEW_VALUE%type; - impAdresse indic_modif_dossier.ATTR_NEW_VALUE%type; - impRib indic_modif_dossier.ATTR_NEW_VALUE%type; - -- anciennes valeurs dans le dossier (format texte) : - oldSourceName source.libelle%type; - oldNomUsuel indic_modif_dossier.ATTR_NEW_VALUE%type; - oldNomPatro indic_modif_dossier.ATTR_NEW_VALUE%type; - oldPrenom indic_modif_dossier.ATTR_NEW_VALUE%type; - oldCivilite indic_modif_dossier.ATTR_NEW_VALUE%type; - oldDateNaiss indic_modif_dossier.ATTR_NEW_VALUE%type; - oldAdresse indic_modif_dossier.ATTR_NEW_VALUE%type; - oldRib indic_modif_dossier.ATTR_NEW_VALUE%type; - -- nouvelles valeurs dans le dossier (format texte) : - newSourceName source.libelle%type; - newNomUsuel indic_modif_dossier.ATTR_NEW_VALUE%type; - newNomPatro indic_modif_dossier.ATTR_NEW_VALUE%type; - newPrenom indic_modif_dossier.ATTR_NEW_VALUE%type; - newCivilite indic_modif_dossier.ATTR_NEW_VALUE%type; - newDateNaiss indic_modif_dossier.ATTR_NEW_VALUE%type; - newAdresse indic_modif_dossier.ATTR_NEW_VALUE%type; - newRib indic_modif_dossier.ATTR_NEW_VALUE%type; -BEGIN - -- - -- Témoin indiquant s'il s'agit d'une création de dossier (insert). - -- - estCreationDossier := case when inserting then 1 else 0 end; - - -- - -- Fetch source OSE. - -- - select s.libelle into newSourceName from source s where s.code = 'OSE'; - - -- - -- Fetch et formattage texte des valeurs importées. - -- - select - i.id, - s.libelle, - nvl(i.NOM_USUEL, '(Aucun)'), - nvl(i.NOM_PATRONYMIQUE, '(Aucun)'), - nvl(i.PRENOM, '(Aucun)'), - nvl(c.libelle_court, '(Aucune)'), - nvl(to_char(i.DATE_NAISSANCE, 'DD/MM/YYYY'), '(Aucune)'), - nvl(ose_divers.formatted_rib(i.bic, i.iban), '(Aucun)'), - case when a.id is not null - then ose_divers.formatted_adresse(a.NO_VOIE, a.NOM_VOIE, a.BATIMENT, a.MENTION_COMPLEMENTAIRE, a.LOCALITE, a.CODE_POSTAL, a.VILLE, a.PAYS_LIBELLE) - else '(Aucune)' - end - into - intervenantId, - oldSourceName, - impNomUsuel, - impNomPatro, - impPrenom, - impCivilite, - impDateNaiss, - impRib, - impAdresse - from intervenant i - join source s on s.id = i.source_id - left join civilite c on c.id = i.civilite_id - left join adresse_intervenant a on a.intervenant_id = i.id - where i.id = :NEW.intervenant_id; - - -- - -- Anciennes valeurs dans le cas d'une création de dossier : ce sont les valeurs importées. - -- - if (1 = estCreationDossier) then - --dbms_output.put_line('inserting'); - oldNomUsuel := impNomUsuel; - oldNomPatro := impNomPatro; - oldPrenom := impPrenom; - oldCivilite := impCivilite; - oldDateNaiss := impDateNaiss; - oldAdresse := impAdresse; - oldRib := impRib; - -- - -- Anciennes valeurs dans le cas d'une mise à jour du dossier. - -- - else - --dbms_output.put_line('updating'); - oldNomUsuel := trim(:OLD.NOM_USUEL); - oldNomPatro := trim(:OLD.NOM_PATRONYMIQUE); - oldPrenom := trim(:OLD.PRENOM); - oldDateNaiss := case when :OLD.DATE_NAISSANCE is null then '(Aucune)' else to_char(:OLD.DATE_NAISSANCE, 'DD/MM/YYYY') end; - oldAdresse := trim(:OLD.ADRESSE); - oldRib := trim(:OLD.RIB); - if :OLD.CIVILITE_ID is not null then - select c.libelle_court into oldCivilite from civilite c where c.id = :OLD.CIVILITE_ID; - else - oldCivilite := '(Aucune)'; - end if; - select s.libelle into oldSourceName from source s where s.code = 'OSE'; - end if; - - -- - -- Nouvelles valeurs saisies. - -- - newNomUsuel := trim(:NEW.NOM_USUEL); - newNomPatro := trim(:NEW.NOM_PATRONYMIQUE); - newPrenom := trim(:NEW.PRENOM); - newDateNaiss := case when :NEW.DATE_NAISSANCE is null then '(Aucune)' else to_char(:NEW.DATE_NAISSANCE, 'DD/MM/YYYY') end; - newAdresse := trim(:NEW.ADRESSE); - newRib := trim(:NEW.RIB); - if :NEW.CIVILITE_ID is not null then - select c.libelle_court into newCivilite from civilite c where c.id = :NEW.CIVILITE_ID; - else - newCivilite := '(Aucune)'; - end if; - - -- - -- Détection des différences. - -- - if newNomUsuel <> oldNomUsuel then - --dbms_output.put_line('NOM_USUEL ' || sourceLib || ' = ' || oldNomUsuel || ' --> NOM_USUEL OSE = ' || :NEW.NOM_USUEL); - attrNames.extend(1); - attrOldVals.extend(1); - attrNewVals.extend(1); - attrNames(i) := 'Nom usuel'; - attrOldVals(i) := oldNomUsuel; - attrNewVals(i) := newNomUsuel; - i := i + 1; - end if; - if newNomPatro <> oldNomPatro then - --dbms_output.put_line('NOM_PATRONYMIQUE ' || sourceLib || ' = ' || oldNomPatro || ' --> NOM_PATRONYMIQUE OSE = ' || :NEW.NOM_PATRONYMIQUE); - attrNames.extend(1); - attrOldVals.extend(1); - attrNewVals.extend(1); - attrNames(i) := 'Nom de naissance'; - attrOldVals(i) := oldNomPatro; - attrNewVals(i) := newNomPatro; - i := i + 1; - end if; - if newPrenom <> oldPrenom then - --dbms_output.put_line('PRENOM ' || sourceLib || ' = ' || oldPrenom || ' --> PRENOM OSE = ' || :NEW.PRENOM); - attrNames.extend(1); - attrOldVals.extend(1); - attrNewVals.extend(1); - attrNames(i) := 'Prénom'; - attrOldVals(i) := oldPrenom; - attrNewVals(i) := newPrenom; - i := i + 1; - end if; - if newCivilite <> oldCivilite then - --dbms_output.put_line('CIVILITE_ID ' || sourceLib || ' = ' || oldCivilite || ' --> CIVILITE_ID OSE = ' || :NEW.CIVILITE_ID); - attrNames.extend(1); - attrOldVals.extend(1); - attrNewVals.extend(1); - attrNames(i) := 'Civilité'; - attrOldVals(i) := oldCivilite; - attrNewVals(i) := newCivilite; - i := i + 1; - end if; - if newDateNaiss <> oldDateNaiss then - --dbms_output.put_line('DATE_NAISSANCE ' || sourceLib || ' = ' || oldDateNaiss || ' --> DATE_NAISSANCE OSE = ' || :NEW.DATE_NAISSANCE); - attrNames.extend(1); - attrOldVals.extend(1); - attrNewVals.extend(1); - attrNames(i) := 'Date de naissance'; - attrOldVals(i) := oldDateNaiss; - attrNewVals(i) := newDateNaiss; - i := i + 1; - end if; - if newAdresse <> oldAdresse then - --dbms_output.put_line('ADRESSE ' || sourceLib || ' = ' || oldAdresse || ' --> ADRESSE OSE = ' || :NEW.ADRESSE); - attrNames.extend(1); - attrOldVals.extend(1); - attrNewVals.extend(1); - attrNames(i) := 'Adresse postale'; - attrOldVals(i) := oldAdresse; - attrNewVals(i) := newAdresse; - i := i + 1; - end if; - if oldRib is null or newRib <> oldRib then - --dbms_output.put_line('RIB ' || sourceLib || ' = ' || oldRib || ' --> RIB OSE = ' || :NEW.RIB); - attrNames.extend(1); - attrOldVals.extend(1); - attrNewVals.extend(1); - attrNames(i) := 'RIB'; - attrOldVals(i) := oldRib; - attrNewVals(i) := newRib; - i := i + 1; - end if; - - -- - -- Enregistrement des différences. - -- - for i in 1 .. attrNames.count loop - --dbms_output.put_line(attrNames(i) || ' ' || oldSourceName || ' = ' || attrOldVals(i) || ' --> ' || attrNames(i) || ' ' || newSourceName || ' = ' || attrNewVals(i)); - - -- vérification que la même modif n'est pas déjà consignée - select count(*) into found from indic_modif_dossier - where INTERVENANT_ID = intervenantId - and ATTR_NAME = attrNames(i) - and ATTR_OLD_VALUE = to_char(attrOldVals(i)) - and ATTR_NEW_VALUE = to_char(attrNewVals(i)); - if found > 0 then - continue; - end if; - - insert into INDIC_MODIF_DOSSIER( - id, - INTERVENANT_ID, - ATTR_NAME, - ATTR_OLD_SOURCE_NAME, - ATTR_OLD_VALUE, - ATTR_NEW_SOURCE_NAME, - ATTR_NEW_VALUE, - EST_CREATION_DOSSIER, -- témoin indiquant s'il s'agit d'une création ou d'une modification de dossier - HISTO_CREATION, -- NB: date de modification du dossier - HISTO_CREATEUR_ID, -- NB: auteur de la modification du dossier - HISTO_MODIFICATION, - HISTO_MODIFICATEUR_ID - ) - values ( - indic_modif_dossier_id_seq.nextval, - intervenantId, - attrNames(i), - oldSourceName, - to_char(attrOldVals(i)), - newSourceName, - to_char(attrNewVals(i)), - estCreationDossier, - :NEW.HISTO_MODIFICATION, - :NEW.HISTO_MODIFICATEUR_ID, - :NEW.HISTO_MODIFICATION, - :NEW.HISTO_MODIFICATEUR_ID - ); - end loop; - -END; + WHEN NOT MATCHED THEN INSERT ( -/ -ALTER TRIGGER "INDIC_TRG_MODIF_DOSSIER" ENABLE; + ID, + ANNEE_ID, + TYPE_PIECE_JOINTE_ID, + INTERVENANT_ID, + HEURES_POUR_SEUIL, + TO_DELETE --- INTERVENANT_HORO_SERVICE -CREATE OR REPLACE TRIGGER "INTERVENANT_HORO_SERVICE" - AFTER INSERT OR DELETE OR UPDATE ON "SERVICE" - REFERENCING FOR EACH ROW - BEGIN - - IF DELETING THEN - - ose_divers.intervenant_horodatage_service( - :OLD.intervenant_id, - null, - 0, - :OLD.histo_modificateur_id, - :OLD.histo_modification - ); - - ELSE + ) VALUES ( + + TBL_PIECE_JOINTE_DEMAND_ID_SEQ.NEXTVAL, + v.ANNEE_ID, + v.TYPE_PIECE_JOINTE_ID, + v.INTERVENANT_ID, + v.HEURES_POUR_SEUIL, + 0 - ose_divers.intervenant_horodatage_service( - :NEW.intervenant_id, - null, - 0, - :NEW.histo_modificateur_id, - :NEW.histo_modification ); - - END IF; -END; + DELETE TBL_PIECE_JOINTE_DEMANDE WHERE to_delete = 1 AND ' || conds || '; -/ -ALTER TRIGGER "INTERVENANT_HORO_SERVICE" ENABLE; + END;'; --- INTERVENANT_HORO_SERVICE_REF -CREATE OR REPLACE TRIGGER "INTERVENANT_HORO_SERVICE_REF" - AFTER INSERT OR DELETE OR UPDATE ON "SERVICE_REFERENTIEL" - REFERENCING FOR EACH ROW + END; + + + + PROCEDURE C_PIECE_JOINTE_FOURNIE( PARAMS UNICAEN_TBL.T_PARAMS ) IS + conds CLOB; BEGIN - - IF DELETING THEN - - ose_divers.intervenant_horodatage_service( - :OLD.intervenant_id, - null, - 1, - :OLD.histo_modificateur_id, - :OLD.histo_modification - ); - - ELSE + conds := params_to_conds( params ); - ose_divers.intervenant_horodatage_service( - :NEW.intervenant_id, - null, - 1, - :NEW.histo_modificateur_id, - :NEW.histo_modification - ); - - END IF; + EXECUTE IMMEDIATE 'BEGIN -END; + UPDATE TBL_PIECE_JOINTE_FOURNIE SET to_delete = 1 WHERE ' || conds || '; -/ -ALTER TRIGGER "INTERVENANT_HORO_SERVICE_REF" ENABLE; + MERGE INTO + TBL_PIECE_JOINTE_FOURNIE t + USING ( --- INTERVENANT_HORO_VH -CREATE OR REPLACE TRIGGER "INTERVENANT_HORO_VH" - AFTER INSERT OR DELETE OR UPDATE ON "VOLUME_HORAIRE" - REFERENCING FOR EACH ROW - DECLARE - intervenant_id NUMERIC; -BEGIN - - - - IF DELETING THEN - SELECT s.intervenant_id INTO intervenant_id FROM service s WHERE s.id = :OLD.service_id; - - ose_divers.intervenant_horodatage_service( - intervenant_id, - :OLD.type_volume_horaire_id, - 0, - :OLD.histo_modificateur_id, - :OLD.histo_modification - ); - - ELSE - SELECT s.intervenant_id INTO intervenant_id FROM service s WHERE s.id = :NEW.service_id; - - ose_divers.intervenant_horodatage_service( - intervenant_id, - :NEW.type_volume_horaire_id, - 0, - :NEW.histo_modificateur_id, - :NEW.histo_modification - ); - - END IF; + SELECT + tv.* + FROM + (SELECT + i.annee_id, + pj.type_piece_jointe_id, + pj.intervenant_id, + pj.id piece_jointe_id, + v.id validation_id, + f.id fichier_id + FROM + piece_jointe pj + JOIN intervenant i ON i.id = pj.intervenant_id + AND i.histo_destruction IS NULL -END; + JOIN piece_jointe_fichier pjf ON pjf.piece_jointe_id = pj.id + JOIN fichier f ON f.id = pjf.fichier_id + AND f.histo_destruction IS NULL -/ -ALTER TRIGGER "INTERVENANT_HORO_VH" ENABLE; + LEFT JOIN validation v ON v.id = pj.validation_id + AND v.histo_destruction IS NULL + WHERE + pj.histo_destruction IS NULL) tv + WHERE + ' || conds || ' + + ) v ON ( + t.TYPE_PIECE_JOINTE_ID = v.TYPE_PIECE_JOINTE_ID + AND t.INTERVENANT_ID = v.INTERVENANT_ID + AND COALESCE(t.VALIDATION_ID,0) = COALESCE(v.VALIDATION_ID,0) + AND COALESCE(t.FICHIER_ID,0) = COALESCE(v.FICHIER_ID,0) + + ) WHEN MATCHED THEN UPDATE SET + + ANNEE_ID = v.ANNEE_ID, + PIECE_JOINTE_ID = v.PIECE_JOINTE_ID, + to_delete = 0 + + WHEN NOT MATCHED THEN INSERT ( + + ID, + ANNEE_ID, + TYPE_PIECE_JOINTE_ID, + INTERVENANT_ID, + VALIDATION_ID, + FICHIER_ID, + PIECE_JOINTE_ID, + TO_DELETE + + ) VALUES ( + + TBL_PIECE_JOINTE_FOURNI_ID_SEQ.NEXTVAL, + v.ANNEE_ID, + v.TYPE_PIECE_JOINTE_ID, + v.INTERVENANT_ID, + v.VALIDATION_ID, + v.FICHIER_ID, + v.PIECE_JOINTE_ID, + 0 --- INTERVENANT_HORO_VH_REF -CREATE OR REPLACE TRIGGER "INTERVENANT_HORO_VH_REF" - AFTER INSERT OR DELETE OR UPDATE ON "VOLUME_HORAIRE_REF" - REFERENCING FOR EACH ROW - DECLARE - intervenant_id NUMERIC; -BEGIN - - - - IF DELETING THEN - SELECT s.intervenant_id INTO intervenant_id FROM service_referentiel s WHERE s.id = :OLD.service_referentiel_id; - - ose_divers.intervenant_horodatage_service( - intervenant_id, - :OLD.type_volume_horaire_id, - 1, - :OLD.histo_modificateur_id, - :OLD.histo_modification - ); - - ELSE - SELECT s.intervenant_id INTO intervenant_id FROM service_referentiel s WHERE s.id = :NEW.service_referentiel_id; - - ose_divers.intervenant_horodatage_service( - intervenant_id, - :NEW.type_volume_horaire_id, - 1, - :NEW.histo_modificateur_id, - :NEW.histo_modification ); - - END IF; -END; + DELETE TBL_PIECE_JOINTE_FOURNIE WHERE to_delete = 1 AND ' || conds || '; -/ -ALTER TRIGGER "INTERVENANT_HORO_VH_REF" ENABLE; + END;'; --- INTERVENANT_RECHERCHE -CREATE OR REPLACE TRIGGER "INTERVENANT_RECHERCHE" - BEFORE INSERT OR UPDATE OF NOM_USUEL, PRENOM, NOM_PATRONYMIQUE ON "INTERVENANT" - REFERENCING FOR EACH ROW - BEGIN + END; - :NEW.critere_recherche := ose_divers.str_reduce( :NEW.nom_usuel || ' ' || :NEW.nom_patronymique || ' ' || :NEW.prenom ); - -END; -/ -ALTER TRIGGER "INTERVENANT_RECHERCHE" ENABLE; --- MISE_EN_PAIEMENT_CK -CREATE OR REPLACE TRIGGER "MISE_EN_PAIEMENT_CK" - BEFORE INSERT OR UPDATE ON "MISE_EN_PAIEMENT" - REFERENCING FOR EACH ROW - DECLARE - has_validation NUMERIC; - has_mise_en_paiement NUMERIC; -BEGIN + PROCEDURE C_SERVICE( PARAMS UNICAEN_TBL.T_PARAMS ) IS + conds CLOB; + BEGIN + conds := params_to_conds( params ); - /* Initialisation des conditions */ - SELECT COUNT(*) INTO has_validation FROM validation v WHERE - v.id = :NEW.validation_id - AND v.histo_destruction IS NULL; + EXECUTE IMMEDIATE 'BEGIN - IF :NEW.date_mise_en_paiement IS NULL THEN - has_mise_en_paiement := 0; - ELSE - has_mise_en_paiement := 1; - END IF; + UPDATE TBL_SERVICE SET to_delete = 1 WHERE ' || conds || '; - /* Mise en place des contraintes */ - IF :NEW.formule_res_service_id IS NULL AND :NEW.formule_res_service_ref_id IS NULL THEN - raise_application_error(-20101, 'La mise en paiement ne correspond à aucun service ou service référentiel.'); - END IF; + MERGE INTO + TBL_SERVICE t + USING ( - IF 1 = has_validation AND :NEW.date_validation IS NULL THEN - raise_application_error(-20101, 'La validation de la mise en paiement numéro ' || :NEW.id || ' est bien renseignée mais la date de validation n''est pas précisée.'); - END IF; + SELECT + tv.* + FROM + (WITH t AS ( + SELECT + s.id service_id, + s.intervenant_id intervenant_id, + ep.structure_id structure_id, + ep.id element_pedagogique_id, + ep.periode_id element_pedagogique_periode_id, + etp.id etape_id, - IF :NEW.periode_paiement_id IS NOT NULL AND :NEW.date_mise_en_paiement IS NULL THEN - raise_application_error(-20101, 'La mise en paiement numéro ' || :NEW.id || ' est bien effectuée mais la date de mise en paiement n''est pas précisée.'); - END IF; + vh.type_volume_horaire_id type_volume_horaire_id, + vh.heures heures, + tvh.code type_volume_horaire_code, --- IF 0 = has_validation AND 1 = has_mise_en_paiement THEN --- raise_application_error(-20101, 'La demande de mise en paiement numéro ' || :NEW.id || ' ne peut faire l''objet d''une mise en paiement tant qu''elle n''est pas validée.'); --- END IF; + CASE WHEN ep.histo_destruction IS NULL THEN 1 ELSE 0 END element_pedagogique_histo, + CASE WHEN etp.histo_destruction IS NULL OR cp.id IS NOT NULL THEN 1 ELSE 0 END etape_histo, - IF - :OLD.validation_id IS NOT NULL AND :OLD.histo_destruction IS NULL - AND 1 = has_validation AND :NEW.histo_destruction IS NOT NULL - THEN - raise_application_error(-20101, 'Il est impossible de supprimer une mise en paiement validée.'); - END IF; -END; + CASE WHEN ep.periode_id IS NOT NULL THEN + SUM( CASE WHEN vh.periode_id <> ep.periode_id THEN 1 ELSE 0 END ) OVER( PARTITION BY vh.service_id, vh.periode_id, vh.type_volume_horaire_id, vh.type_intervention_id ) + ELSE 0 END has_heures_mauvaise_periode, + + CASE WHEN v.id IS NULL THEN 0 ELSE 1 END valide + FROM + service s + LEFT JOIN element_pedagogique ep ON ep.id = s.element_pedagogique_id + LEFT JOIN etape etp ON etp.id = ep.etape_id + LEFT JOIN chemin_pedagogique cp ON cp.etape_id = etp.id + AND cp.element_pedagogique_id = ep.id + AND cp.histo_destruction IS NULL + JOIN volume_horaire vh ON vh.service_id = s.id + AND vh.histo_destruction IS NULL -/ -ALTER TRIGGER "MISE_EN_PAIEMENT_CK" ENABLE; + JOIN type_volume_horaire tvh ON tvh.id = vh.type_volume_horaire_id --- MISE_EN_PAIEMENT_DEL_CK -CREATE OR REPLACE TRIGGER "MISE_EN_PAIEMENT_DEL_CK" - BEFORE DELETE ON "MISE_EN_PAIEMENT" - REFERENCING FOR EACH ROW - DECLARE - has_validation NUMERIC; -BEGIN + LEFT JOIN validation_vol_horaire vvh ON vvh.volume_horaire_id = vh.id - /* Initialisation des conditions */ - SELECT COUNT(*) INTO has_validation FROM validation v WHERE - v.id = :NEW.validation_id - AND v.histo_destruction IS NULL; + LEFT JOIN validation v ON v.id = vvh.validation_id + AND v.histo_destruction IS NULL + WHERE + s.histo_destruction IS NULL + ) + SELECT + i.annee_id annee_id, + i.id intervenant_id, + i.structure_id intervenant_structure_id, + NVL( t.structure_id, i.structure_id ) structure_id, + ti.id type_intervenant_id, + ti.code type_intervenant_code, + si.peut_saisir_service peut_saisir_service, - /* Mise en place des contraintes */ - IF - 1 = has_validation AND :OLD.histo_destruction IS NOT NULL - THEN - raise_application_error(-20101, 'Il est impossible de supprimer une mise en paiement validée.'); - END IF; -END; + t.element_pedagogique_id, + t.service_id, + t.element_pedagogique_periode_id, + t.etape_id, + t.type_volume_horaire_id, + t.type_volume_horaire_code, + t.element_pedagogique_histo, + t.etape_histo, + CASE WHEN SUM(t.has_heures_mauvaise_periode) > 0 THEN 1 ELSE 0 END has_heures_mauvaise_periode, -/ -ALTER TRIGGER "MISE_EN_PAIEMENT_DEL_CK" ENABLE; + CASE WHEN type_volume_horaire_id IS NULL THEN 0 ELSE count(*) END nbvh, + CASE WHEN type_volume_horaire_id IS NULL THEN 0 ELSE sum(t.heures) END heures, + sum(valide) valide + FROM + t + JOIN intervenant i ON i.id = t.intervenant_id + JOIN statut_intervenant si ON si.id = i.statut_id + JOIN type_intervenant ti ON ti.id = si.type_intervenant_id + GROUP BY + i.annee_id, + i.id, + i.structure_id, + t.structure_id, + i.structure_id, + ti.id, + ti.code, + si.peut_saisir_service, + t.element_pedagogique_id, + t.service_id, + t.element_pedagogique_periode_id, + t.etape_id, + t.type_volume_horaire_id, + t.type_volume_horaire_code, + t.element_pedagogique_histo, + t.etape_histo) tv + WHERE + ' || conds || ' --- SERVICE_CK -CREATE OR REPLACE TRIGGER "SERVICE_CK" - BEFORE INSERT OR UPDATE ON "SERVICE" - REFERENCING FOR EACH ROW - DECLARE - etablissement integer; - res integer; -BEGIN + ) v ON ( + COALESCE(t.TYPE_VOLUME_HORAIRE_ID,0) = COALESCE(v.TYPE_VOLUME_HORAIRE_ID,0) + AND t.SERVICE_ID = v.SERVICE_ID - etablissement := OSE_PARAMETRE.GET_ETABLISSEMENT(); + ) WHEN MATCHED THEN UPDATE SET - IF :NEW.etablissement_id = etablissement AND :NEW.element_pedagogique_id IS NULL THEN - raise_application_error(-20101, 'Un enseignement doit obligatoirement être renseigné si le service est réalisé en interne.'); - END IF; + ANNEE_ID = v.ANNEE_ID, + INTERVENANT_ID = v.INTERVENANT_ID, + PEUT_SAISIR_SERVICE = v.PEUT_SAISIR_SERVICE, + STRUCTURE_ID = v.STRUCTURE_ID, + NBVH = v.NBVH, + VALIDE = v.VALIDE, + ELEMENT_PEDAGOGIQUE_ID = v.ELEMENT_PEDAGOGIQUE_ID, + ELEMENT_PEDAGOGIQUE_PERIODE_ID = v.ELEMENT_PEDAGOGIQUE_PERIODE_ID, + ETAPE_ID = v.ETAPE_ID, + ELEMENT_PEDAGOGIQUE_HISTO = v.ELEMENT_PEDAGOGIQUE_HISTO, + ETAPE_HISTO = v.ETAPE_HISTO, + HAS_HEURES_MAUVAISE_PERIODE = v.HAS_HEURES_MAUVAISE_PERIODE, + INTERVENANT_STRUCTURE_ID = v.INTERVENANT_STRUCTURE_ID, + TYPE_INTERVENANT_ID = v.TYPE_INTERVENANT_ID, + TYPE_INTERVENANT_CODE = v.TYPE_INTERVENANT_CODE, + TYPE_VOLUME_HORAIRE_CODE = v.TYPE_VOLUME_HORAIRE_CODE, + HEURES = v.HEURES, + to_delete = 0 + WHEN NOT MATCHED THEN INSERT ( - IF :NEW.etablissement_id <> etablissement AND OSE_DIVERS.INTERVENANT_HAS_PRIVILEGE(:NEW.intervenant_id, 'saisie_service_exterieur') = 0 THEN - raise_application_error(-20101, 'Les intervenants vacataires n''ont pas la possibilité de renseigner des enseignements pris à l''extérieur.'); - END IF; + ID, + ANNEE_ID, + INTERVENANT_ID, + PEUT_SAISIR_SERVICE, + TYPE_VOLUME_HORAIRE_ID, + STRUCTURE_ID, + NBVH, + VALIDE, + ELEMENT_PEDAGOGIQUE_ID, + ELEMENT_PEDAGOGIQUE_PERIODE_ID, + ETAPE_ID, + ELEMENT_PEDAGOGIQUE_HISTO, + ETAPE_HISTO, + HAS_HEURES_MAUVAISE_PERIODE, + SERVICE_ID, + INTERVENANT_STRUCTURE_ID, + TYPE_INTERVENANT_ID, + TYPE_INTERVENANT_CODE, + TYPE_VOLUME_HORAIRE_CODE, + HEURES, + TO_DELETE - IF :NEW.intervenant_id IS NOT NULL AND :NEW.element_pedagogique_id IS NOT NULL THEN - SELECT - count(*) INTO res - FROM - intervenant i, - element_pedagogique ep - WHERE - i.id = :NEW.intervenant_id - AND ep.id = :NEW.element_pedagogique_id - AND ep.annee_id = i.annee_id - ; + ) VALUES ( - IF 0 = res THEN -- années non concomitantes - raise_application_error(-20101, 'L''année de l''intervenant ne correspond pas à l''année de l''élément pédagogique.'); - END IF; - END IF; + TBL_SERVICE_ID_SEQ.NEXTVAL, + v.ANNEE_ID, + v.INTERVENANT_ID, + v.PEUT_SAISIR_SERVICE, + v.TYPE_VOLUME_HORAIRE_ID, + v.STRUCTURE_ID, + v.NBVH, + v.VALIDE, + v.ELEMENT_PEDAGOGIQUE_ID, + v.ELEMENT_PEDAGOGIQUE_PERIODE_ID, + v.ETAPE_ID, + v.ELEMENT_PEDAGOGIQUE_HISTO, + v.ETAPE_HISTO, + v.HAS_HEURES_MAUVAISE_PERIODE, + v.SERVICE_ID, + v.INTERVENANT_STRUCTURE_ID, + v.TYPE_INTERVENANT_ID, + v.TYPE_INTERVENANT_CODE, + v.TYPE_VOLUME_HORAIRE_CODE, + v.HEURES, + 0 -END; + ); -/ -ALTER TRIGGER "SERVICE_CK" ENABLE; + DELETE TBL_SERVICE WHERE to_delete = 1 AND ' || conds || '; --- SERVICE_HISTO_CK -CREATE OR REPLACE TRIGGER "SERVICE_HISTO_CK" - BEFORE UPDATE OF intervenant_id, element_pedagogique_id, etablissement_id ON "SERVICE" - REFERENCING FOR EACH ROW - DECLARE - has_validation integer; -BEGIN - SELECT COUNT(*) INTO has_validation - FROM - VALIDATION_VOL_HORAIRE vvh - JOIN validation v ON v.id = VVH.VALIDATION_ID - JOIN volume_horaire vh ON vh.id = VVH.VOLUME_HORAIRE_ID - WHERE - V.HISTO_DESTRUCTION IS NULL - AND vh.service_ID = :NEW.ID; + END;'; - IF 0 <> has_validation THEN - raise_application_error(-20101, 'Il est impossible de modifier ou supprimer un service dont des heures ont déjà été validées.'); - END IF; + END; -END; -/ -ALTER TRIGGER "SERVICE_HISTO_CK" ENABLE; --- SERVICE_HISTO_CK_S -CREATE OR REPLACE TRIGGER "SERVICE_HISTO_CK_S" - AFTER UPDATE ON "SERVICE" + PROCEDURE C_SERVICE_REFERENTIEL( PARAMS UNICAEN_TBL.T_PARAMS ) IS + conds CLOB; BEGIN - -- En cas de restauration d'un service, on ne restaure pas les historiques de volumes horaires pour ne pas récussiter d'éventuels volume horaires indésirables car préalablement supprimés - FOR s IN ( + conds := params_to_conds( params ); - SELECT * - FROM - service s - WHERE - s.histo_destruction IS NOT NULL AND s.histo_destruction > SYSDATE - 1 + EXECUTE IMMEDIATE 'BEGIN - ) LOOP + UPDATE TBL_SERVICE_REFERENTIEL SET to_delete = 1 WHERE ' || conds || '; - UPDATE VOLUME_HORAIRE SET histo_destruction = s.histo_destruction, histo_destructeur_id = s.histo_destructeur_id WHERE service_id = s.id AND VOLUME_HORAIRE.histo_destruction IS NULL; + MERGE INTO + TBL_SERVICE_REFERENTIEL t + USING ( - END LOOP; - -END; + SELECT + tv.* + FROM + (WITH t AS ( -/ -ALTER TRIGGER "SERVICE_HISTO_CK_S" ENABLE; + SELECT + i.annee_id, + i.id intervenant_id, + si.peut_saisir_referentiel peut_saisir_service, + vh.type_volume_horaire_id, + s.structure_id, + CASE WHEN v.id IS NULL THEN 0 ELSE 1 END valide + FROM + intervenant i --- SERVICE_REFERENTIEL_HISTO_CK -CREATE OR REPLACE TRIGGER "SERVICE_REFERENTIEL_HISTO_CK" - BEFORE UPDATE OF FONCTION_ID, INTERVENANT_ID, STRUCTURE_ID, HISTO_DESTRUCTION ON "SERVICE_REFERENTIEL" - REFERENCING FOR EACH ROW - DECLARE - has_validation integer; -BEGIN - SELECT COUNT(*) INTO has_validation - FROM - VALIDATION_VOL_HORAIRE_REF vvh - JOIN validation v ON v.id = VVH.VALIDATION_ID - JOIN volume_horaire_ref vh ON vh.id = vvh.volume_horaire_ref_id - WHERE - V.HISTO_DESTRUCTION IS NULL - AND vh.service_referentiel_id = :OLD.ID; + JOIN statut_intervenant si ON si.id = i.statut_id - IF 0 <> has_validation THEN - raise_application_error(-20101, 'Il est impossible de modifier ou supprimer du référentiel dont des heures ont déjà été validées.'); - END IF; + LEFT JOIN service_referentiel s ON s.intervenant_id = i.id + AND s.histo_destruction IS NULL -END; + LEFT JOIN volume_horaire_ref vh ON vh.service_referentiel_id = s.id + AND vh.histo_destruction IS NULL -/ -ALTER TRIGGER "SERVICE_REFERENTIEL_HISTO_CK" ENABLE; + LEFT JOIN validation_vol_horaire_ref vvh ON vvh.volume_horaire_ref_id = vh.id --- T_CRG_ETAPE -CREATE OR REPLACE TRIGGER "T_CRG_ETAPE" - AFTER INSERT OR DELETE OR UPDATE OF HISTO_DESTRUCTION ON "ETAPE" - REFERENCING FOR EACH ROW - BEGIN - IF NOT UNICAEN_TBL.ACTIV_TRIGGERS THEN RETURN; END IF; + LEFT JOIN validation v ON v.id = vvh.validation_id + AND v.histo_destruction IS NULL + WHERE + i.histo_destruction IS NULL - IF DELETING THEN - UNICAEN_TBL.DEMANDE_CALCUL( 'chargens', 'etape_id = ' || :OLD.id || ' OR etape_ens_id = ' || :OLD.id ); - ELSE - UNICAEN_TBL.DEMANDE_CALCUL( 'chargens', 'etape_id = ' || :NEW.id || ' OR etape_ens_id = ' || :NEW.id ); - END IF; + ) + SELECT + annee_id, + intervenant_id, + peut_saisir_service, + type_volume_horaire_id, + structure_id, + CASE WHEN type_volume_horaire_id IS NULL THEN 0 ELSE count(*) END nbvh, + sum(valide) valide + FROM + t + WHERE + NOT (structure_id IS NOT NULL AND type_volume_horaire_id IS NULL) + GROUP BY + annee_id, + intervenant_id, + peut_saisir_service, + type_volume_horaire_id, + structure_id) tv + WHERE + ' || conds || ' -END; + ) v ON ( + t.INTERVENANT_ID = v.INTERVENANT_ID + AND COALESCE(t.TYPE_VOLUME_HORAIRE_ID,0) = COALESCE(v.TYPE_VOLUME_HORAIRE_ID,0) + AND COALESCE(t.STRUCTURE_ID,0) = COALESCE(v.STRUCTURE_ID,0) + ) WHEN MATCHED THEN UPDATE SET -/ -ALTER TRIGGER "T_CRG_ETAPE" ENABLE; + ANNEE_ID = v.ANNEE_ID, + PEUT_SAISIR_SERVICE = v.PEUT_SAISIR_SERVICE, + NBVH = v.NBVH, + VALIDE = v.VALIDE, + to_delete = 0 --- T_CRG_ETAPE_S -CREATE OR REPLACE TRIGGER "T_CRG_ETAPE_S" - AFTER INSERT OR DELETE OR UPDATE ON "ETAPE" - BEGIN - UNICAEN_TBL.CALCULER_DEMANDES; -END; + WHEN NOT MATCHED THEN INSERT ( + ID, + ANNEE_ID, + INTERVENANT_ID, + PEUT_SAISIR_SERVICE, + TYPE_VOLUME_HORAIRE_ID, + STRUCTURE_ID, + NBVH, + VALIDE, + TO_DELETE -/ -ALTER TRIGGER "T_CRG_ETAPE_S" ENABLE; + ) VALUES ( --- T_CRG_SCENARIO_NOEUD -CREATE OR REPLACE TRIGGER "T_CRG_SCENARIO_NOEUD" - AFTER INSERT OR DELETE OR UPDATE OF SCENARIO_ID, NOEUD_ID, HISTO_DESTRUCTION ON "SCENARIO_NOEUD" - REFERENCING FOR EACH ROW - BEGIN - IF NOT UNICAEN_TBL.ACTIV_TRIGGERS THEN RETURN; END IF; + TBL_SERVICE_REFERENTIEL_ID_SEQ.NEXTVAL, + v.ANNEE_ID, + v.INTERVENANT_ID, + v.PEUT_SAISIR_SERVICE, + v.TYPE_VOLUME_HORAIRE_ID, + v.STRUCTURE_ID, + v.NBVH, + v.VALIDE, + 0 - IF DELETING THEN - UNICAEN_TBL.DEMANDE_CALCUL( 'chargens', unicaen_tbl.make_params('noeud_id', :OLD.noeud_id, 'scenario_id', :OLD.scenario_id ) ); - ELSE - UNICAEN_TBL.DEMANDE_CALCUL( 'chargens', unicaen_tbl.make_params('noeud_id', :NEW.noeud_id, 'scenario_id', :NEW.scenario_id ) ); - END IF; + ); -END; + DELETE TBL_SERVICE_REFERENTIEL WHERE to_delete = 1 AND ' || conds || '; + END;'; -/ -ALTER TRIGGER "T_CRG_SCENARIO_NOEUD" ENABLE; + END; --- T_CRG_SCENARIO_NOEUD_EFFECTIF -CREATE OR REPLACE TRIGGER "T_CRG_SCENARIO_NOEUD_EFFECTIF" - AFTER INSERT OR DELETE OR UPDATE OF SCENARIO_NOEUD_ID, TYPE_HEURES_ID, EFFECTIF, ETAPE_ID ON "SCENARIO_NOEUD_EFFECTIF" - REFERENCING FOR EACH ROW - BEGIN - IF NOT UNICAEN_TBL.ACTIV_TRIGGERS THEN RETURN; END IF; - FOR p IN ( - SELECT - sn.noeud_id, sn.scenario_id, n.etape_id - FROM - scenario_noeud sn - JOIN noeud n ON n.id = sn.noeud_id - WHERE - sn.id = :OLD.scenario_noeud_id OR sn.id = :NEW.scenario_noeud_id + PROCEDURE C_SERVICE_SAISIE( PARAMS UNICAEN_TBL.T_PARAMS ) IS + conds CLOB; + BEGIN + conds := params_to_conds( params ); - ) LOOP + EXECUTE IMMEDIATE 'BEGIN - IF p.etape_id IS NOT NULL THEN - UNICAEN_TBL.DEMANDE_CALCUL( 'chargens', unicaen_tbl.make_params('etape_ens_id', p.etape_id, 'scenario_id', p.scenario_id ) ); - END IF; - UNICAEN_TBL.DEMANDE_CALCUL( 'chargens', unicaen_tbl.make_params('noeud_id', p.noeud_id, 'scenario_id', p.scenario_id ) ); + UPDATE TBL_SERVICE_SAISIE SET to_delete = 1 WHERE ' || conds || '; - END LOOP; + MERGE INTO + TBL_SERVICE_SAISIE t + USING ( -END; + SELECT + tv.* + FROM + (SELECT + i.annee_id, + i.id intervenant_id, + si.peut_saisir_service, + si.peut_saisir_referentiel, + SUM( CASE WHEN tvhs.code = ''PREVU'' THEN NVL(vh .heures,0) ELSE 0 END ) heures_service_prev, + SUM( CASE WHEN tvhs.code = ''PREVU'' THEN NVL(vhr.heures,0) ELSE 0 END ) heures_referentiel_prev, + SUM( CASE WHEN tvhs.code = ''REALISE'' THEN NVL(vh .heures,0) ELSE 0 END ) heures_service_real, + SUM( CASE WHEN tvhs.code = ''REALISE'' THEN NVL(vhr.heures,0) ELSE 0 END ) heures_referentiel_real + FROM + intervenant i + JOIN statut_intervenant si ON si.id = i.statut_id + LEFT JOIN service s ON s.intervenant_id = i.id AND s.histo_destruction IS NULL + LEFT JOIN volume_horaire vh ON vh.service_id = s.id AND vh.histo_destruction IS NULL + LEFT JOIN type_volume_horaire tvhs ON tvhs.id = vh.type_volume_horaire_id + LEFT JOIN service_referentiel sr ON sr.intervenant_id = i.id AND sr.histo_destruction IS NULL + LEFT JOIN volume_horaire_ref vhr ON vhr.service_referentiel_id = sr.id AND vhr.histo_destruction IS NULL + LEFT JOIN type_volume_horaire tvhrs ON tvhrs.id = vhr.type_volume_horaire_id + WHERE + i.histo_destruction IS NULL + GROUP BY + i.annee_id, + i.id, + si.peut_saisir_service, + si.peut_saisir_referentiel) tv + WHERE + ' || conds || ' -/ -ALTER TRIGGER "T_CRG_SCENARIO_NOEUD_EFFECTIF" ENABLE; + ) v ON ( + t.INTERVENANT_ID = v.INTERVENANT_ID --- T_CRG_SCENARIO_NOEUD_SEUIL -CREATE OR REPLACE TRIGGER "T_CRG_SCENARIO_NOEUD_SEUIL" - AFTER INSERT OR DELETE OR UPDATE OF SCENARIO_NOEUD_ID, TYPE_INTERVENTION_ID, OUVERTURE, DEDOUBLEMENT, ASSIDUITE ON "SCENARIO_NOEUD_SEUIL" - REFERENCING FOR EACH ROW - BEGIN - IF NOT UNICAEN_TBL.ACTIV_TRIGGERS THEN RETURN; END IF; + ) WHEN MATCHED THEN UPDATE SET - FOR p IN ( + ANNEE_ID = v.ANNEE_ID, + PEUT_SAISIR_SERVICE = v.PEUT_SAISIR_SERVICE, + PEUT_SAISIR_REFERENTIEL = v.PEUT_SAISIR_REFERENTIEL, + HEURES_SERVICE_PREV = v.HEURES_SERVICE_PREV, + HEURES_REFERENTIEL_PREV = v.HEURES_REFERENTIEL_PREV, + HEURES_SERVICE_REAL = v.HEURES_SERVICE_REAL, + HEURES_REFERENTIEL_REAL = v.HEURES_REFERENTIEL_REAL, + to_delete = 0 - SELECT - sn.noeud_id, sn.scenario_id, n.etape_id - FROM - scenario_noeud sn - JOIN noeud n ON n.id = sn.noeud_id - WHERE - sn.id = :OLD.scenario_noeud_id OR sn.id = :NEW.scenario_noeud_id + WHEN NOT MATCHED THEN INSERT ( - ) LOOP + ID, + ANNEE_ID, + INTERVENANT_ID, + PEUT_SAISIR_SERVICE, + PEUT_SAISIR_REFERENTIEL, + HEURES_SERVICE_PREV, + HEURES_REFERENTIEL_PREV, + HEURES_SERVICE_REAL, + HEURES_REFERENTIEL_REAL, + TO_DELETE - IF p.etape_id IS NOT NULL THEN - UNICAEN_TBL.DEMANDE_CALCUL( 'chargens', unicaen_tbl.make_params('etape_ens_id', p.etape_id, 'scenario_id', p.scenario_id ) ); - END IF; - UNICAEN_TBL.DEMANDE_CALCUL( 'chargens', unicaen_tbl.make_params('noeud_id', p.noeud_id, 'scenario_id', p.scenario_id ) ); + ) VALUES ( - END LOOP; + TBL_SERVICE_SAISIE_ID_SEQ.NEXTVAL, + v.ANNEE_ID, + v.INTERVENANT_ID, + v.PEUT_SAISIR_SERVICE, + v.PEUT_SAISIR_REFERENTIEL, + v.HEURES_SERVICE_PREV, + v.HEURES_REFERENTIEL_PREV, + v.HEURES_SERVICE_REAL, + v.HEURES_REFERENTIEL_REAL, + 0 -END; + ); + DELETE TBL_SERVICE_SAISIE WHERE to_delete = 1 AND ' || conds || '; -/ -ALTER TRIGGER "T_CRG_SCENARIO_NOEUD_SEUIL" ENABLE; + END;'; --- T_CRG_TYPE_INTERVENTION -CREATE OR REPLACE TRIGGER "T_CRG_TYPE_INTERVENTION" - AFTER INSERT OR DELETE OR UPDATE ON "TYPE_INTERVENTION" - BEGIN - UNICAEN_TBL.CALCULER_DEMANDES; -END; + END; -/ -ALTER TRIGGER "T_CRG_TYPE_INTERVENTION" ENABLE; --- T_CRG_VOLUME_HORAIRE_ENS -CREATE OR REPLACE TRIGGER "T_CRG_VOLUME_HORAIRE_ENS" - AFTER INSERT OR DELETE OR UPDATE OF ELEMENT_PEDAGOGIQUE_ID, TYPE_INTERVENTION_ID, HEURES, HISTO_DESTRUCTION ON "VOLUME_HORAIRE_ENS" - REFERENCING FOR EACH ROW + PROCEDURE C_VALIDATION_ENSEIGNEMENT( PARAMS UNICAEN_TBL.T_PARAMS ) IS + conds CLOB; BEGIN - IF NOT UNICAEN_TBL.ACTIV_TRIGGERS THEN RETURN; END IF; - - IF DELETING THEN - UNICAEN_TBL.DEMANDE_CALCUL( 'chargens', unicaen_tbl.make_params('element_pedagogique_id', :OLD.element_pedagogique_id ) ); - ELSE - UNICAEN_TBL.DEMANDE_CALCUL( 'chargens', unicaen_tbl.make_params('element_pedagogique_id', :NEW.element_pedagogique_id ) ); - END IF; - -END; - -/ -ALTER TRIGGER "T_CRG_VOLUME_HORAIRE_ENS" ENABLE; - --- VALIDATION_CK -CREATE OR REPLACE TRIGGER "VALIDATION_CK" - BEFORE DELETE OR UPDATE OF HISTO_DESTRUCTION, HISTO_DESTRUCTEUR_ID ON "VALIDATION" - REFERENCING FOR EACH ROW - DECLARE - v validation%rowtype; - err varchar2(500) default null; - pragma autonomous_transaction; -BEGIN + conds := params_to_conds( params ); - IF deleting THEN - v.id := :OLD.id; - v.type_validation_id := :OLD.type_validation_id; - v.intervenant_id := :OLD.intervenant_id; - v.structure_id := :OLD.structure_id; - + EXECUTE IMMEDIATE 'BEGIN - ELSIF :OLD.histo_destruction IS NULL AND :NEW.histo_destruction IS NOT NULL THEN + UPDATE TBL_VALIDATION_ENSEIGNEMENT SET to_delete = 1 WHERE ' || conds || '; - v.id := :NEW.id; - v.type_validation_id := :NEW.type_validation_id; - v.intervenant_id := :NEW.intervenant_id; - v.structure_id := :NEW.structure_id; + MERGE INTO + TBL_VALIDATION_ENSEIGNEMENT t + USING ( - END IF; - - err := ose_validation.can_devalider( v ); - - IF err is not null THEN - raise_application_error(-20101, err); - END IF; + SELECT + tv.* + FROM + (SELECT DISTINCT + i.annee_id, + i.id intervenant_id, + CASE WHEN rsv.priorite = ''affectation'' THEN + COALESCE( i.structure_id, ep.structure_id ) + ELSE + COALESCE( ep.structure_id, i.structure_id ) + END structure_id, + vh.type_volume_horaire_id, + s.id service_id, + vh.id volume_horaire_id, + v.id validation_id + FROM + service s + JOIN volume_horaire vh ON vh.service_id = s.id AND vh.histo_destruction IS NULL + JOIN intervenant i ON i.id = s.intervenant_id AND i.histo_destruction IS NULL + JOIN statut_intervenant si ON si.id = i.statut_id + JOIN regle_structure_validation rsv ON rsv.type_intervenant_id = si.type_intervenant_id AND rsv.type_volume_horaire_id = vh.type_volume_horaire_id + LEFT JOIN element_pedagogique ep ON ep.id = s.element_pedagogique_id + LEFT JOIN validation_vol_horaire vvh ON vvh.volume_horaire_id = vh.id + LEFT JOIN validation v ON v.id = vvh.validation_id AND v.histo_destruction IS NULL + WHERE + s.histo_destruction IS NULL) tv + WHERE + ' || conds || ' -END; + ) v ON ( + t.INTERVENANT_ID = v.INTERVENANT_ID + AND t.STRUCTURE_ID = v.STRUCTURE_ID + AND t.TYPE_VOLUME_HORAIRE_ID = v.TYPE_VOLUME_HORAIRE_ID + AND t.SERVICE_ID = v.SERVICE_ID + AND COALESCE(t.VALIDATION_ID,0) = COALESCE(v.VALIDATION_ID,0) + AND t.VOLUME_HORAIRE_ID = v.VOLUME_HORAIRE_ID -/ -ALTER TRIGGER "VALIDATION_CK" ENABLE; + ) WHEN MATCHED THEN UPDATE SET --- VALIDATION_VOL_HORAIRE_CK -CREATE OR REPLACE TRIGGER "VALIDATION_VOL_HORAIRE_CK" - BEFORE INSERT OR DELETE OR UPDATE ON "VALIDATION_VOL_HORAIRE" - REFERENCING FOR EACH ROW - DECLARE - contrat_blinde NUMERIC; - donnee_historisee NUMERIC; - pragma autonomous_transaction; -BEGIN + ANNEE_ID = v.ANNEE_ID, + to_delete = 0 - if updating or deleting then + WHEN NOT MATCHED THEN INSERT ( - SELECT count(*) INTO contrat_blinde - FROM volume_horaire vh - JOIN contrat c ON c.id = vh.contrat_id AND c.histo_destruction IS NULL - WHERE vh.id = :OLD.volume_horaire_id; + ID, + ANNEE_ID, + INTERVENANT_ID, + STRUCTURE_ID, + TYPE_VOLUME_HORAIRE_ID, + SERVICE_ID, + VALIDATION_ID, + VOLUME_HORAIRE_ID, + TO_DELETE - -- Si des volumes horaires ont déjà fait l'objet de contrats alors pas de dévalidation possible des heures - IF contrat_blinde = 1 THEN - raise_application_error(-20101, 'La dévalidation est impossible car un contrat a déjà été édité sur la base de ces heures.'); - END IF; + ) VALUES ( - else + TBL_VALIDATION_ENSEIGNE_ID_SEQ.NEXTVAL, + v.ANNEE_ID, + v.INTERVENANT_ID, + v.STRUCTURE_ID, + v.TYPE_VOLUME_HORAIRE_ID, + v.SERVICE_ID, + v.VALIDATION_ID, + v.VOLUME_HORAIRE_ID, + 0 - -- si on en trouve un service, EP, étape ou VH historisé, problème - select count(*) into donnee_historisee - from service s - join element_pedagogique ep on s.element_pedagogique_id = ep.id - --join etape e on ep.etape_id = e.id - join volume_horaire vh on vh.service_id = s.id - where - vh.id = :NEW.volume_horaire_id - AND ( - s.histo_destructeur_id is not null - or ep.histo_destructeur_id is not null - --or e.histo_destructeur_id is not null - or (vh.histo_destructeur_id is not null) - ) - AND vh.heures > 0; + ); - IF donnee_historisee > 0 THEN - raise_application_error(-20101, :NEW.volume_horaire_id || ' La validation est impossible car elle porte sur des données historisées (supprimées).'); - END IF; + DELETE TBL_VALIDATION_ENSEIGNEMENT WHERE to_delete = 1 AND ' || conds || '; - end if; + END;'; -END; + END; -/ -ALTER TRIGGER "VALIDATION_VOL_HORAIRE_CK" ENABLE; --- VOLUME_HORAIRE_CK -CREATE OR REPLACE TRIGGER "VOLUME_HORAIRE_CK" - BEFORE INSERT OR UPDATE ON "VOLUME_HORAIRE" - REFERENCING FOR EACH ROW - DECLARE - has_validation NUMERIC; - modified BOOLEAN; - intervenant_id NUMERIC; + PROCEDURE C_VALIDATION_REFERENTIEL( PARAMS UNICAEN_TBL.T_PARAMS ) IS + conds CLOB; BEGIN - IF :OLD.motif_non_paiement_id IS NULL AND :NEW.motif_non_paiement_id IS NOT NULL THEN - SELECT s.intervenant_id INTO intervenant_id FROM service s WHERE s.id = :NEW.service_id; - IF 0 = ose_divers.intervenant_has_privilege( intervenant_id, 'saisie_motif_non_paiement') THEN - raise_application_error(-20101, 'Il est impossible d''associer un motif de non paiement à cet intervenant.'); - END IF; - END IF; - - IF :NEW.motif_non_paiement_id IS NOT NULL AND :NEW.contrat_id IS NOT NULL THEN - raise_application_error(-20101, 'Les heures ayant un motif de non paiement ne peuvent faire l''objet d''une contractualisation'); - END IF; + conds := params_to_conds( params ); - modified := - NVL(:NEW.id,0) <> NVL(:OLD.id,0) - OR NVL(:NEW.type_volume_horaire_id,0) <> NVL(:OLD.type_volume_horaire_id,0) - OR NVL(:NEW.service_id,0) <> NVL(:OLD.service_id,0) - OR NVL(:NEW.periode_id,0) <> NVL(:OLD.periode_id,0) - OR NVL(:NEW.type_intervention_id,0) <> NVL(:OLD.type_intervention_id,0) - OR NVL(:NEW.heures,0) <> NVL(:OLD.heures,0) - OR NVL(:NEW.motif_non_paiement_id,0) <> NVL(:OLD.motif_non_paiement_id,0) - OR NVL(:NEW.histo_creation,SYSDATE) <> NVL(:OLD.histo_creation,SYSDATE) - OR NVL(:NEW.histo_createur_id,0) <> NVL(:OLD.histo_createur_id,0) - OR NVL(:NEW.histo_destruction,SYSDATE) <> NVL(:OLD.histo_destruction,SYSDATE) - OR NVL(:NEW.histo_destructeur_id,0) <> NVL(:OLD.histo_destructeur_id,0); - - SELECT - COUNT(*) - INTO - has_validation - FROM - VALIDATION_VOL_HORAIRE vvh - JOIN validation v ON v.id = VVH.VALIDATION_ID - WHERE - V.HISTO_DESTRUCTION IS NULL - AND vvh.VOLUME_HORAIRE_ID = :NEW.ID; - - IF modified AND 0 <> has_validation THEN - raise_application_error(-20101, 'Il est impossible de modifier des heures déjà validées.'); - END IF; - END; + EXECUTE IMMEDIATE 'BEGIN -/ -ALTER TRIGGER "VOLUME_HORAIRE_CK" ENABLE; + UPDATE TBL_VALIDATION_REFERENTIEL SET to_delete = 1 WHERE ' || conds || '; --- VOLUME_HORAIRE_DEL_CK -CREATE OR REPLACE TRIGGER "VOLUME_HORAIRE_DEL_CK" - BEFORE DELETE ON "VOLUME_HORAIRE" - REFERENCING FOR EACH ROW - DECLARE - has_validation INTEGER; - pragma autonomous_transaction; -BEGIN - - SELECT COUNT(*) INTO has_validation - FROM - VALIDATION_VOL_HORAIRE vvh - JOIN validation v ON v.id = VVH.VALIDATION_ID - WHERE - V.HISTO_DESTRUCTION IS NULL - AND vvh.VOLUME_HORAIRE_ID = :OLD.ID; + MERGE INTO + TBL_VALIDATION_REFERENTIEL t + USING ( - IF 0 <> has_validation THEN - raise_application_error(-20101, 'Il est impossible de supprimer des heures déjà validées.'); - END IF; + SELECT + tv.* + FROM + (SELECT DISTINCT + i.annee_id, + i.id intervenant_id, + CASE WHEN rsv.priorite = ''affectation'' THEN + COALESCE( i.structure_id, s.structure_id ) + ELSE + COALESCE( s.structure_id, i.structure_id ) + END structure_id, + vh.type_volume_horaire_id, + s.id service_referentiel_id, + vh.id volume_horaire_ref_id, + v.id validation_id + FROM + service_referentiel s + JOIN volume_horaire_ref vh ON vh.service_referentiel_id = s.id AND vh.histo_destruction IS NULL + JOIN intervenant i ON i.id = s.intervenant_id AND i.histo_destruction IS NULL + JOIN statut_intervenant si ON si.id = i.statut_id + JOIN regle_structure_validation rsv ON rsv.type_intervenant_id = si.type_intervenant_id AND rsv.type_volume_horaire_id = vh.type_volume_horaire_id + LEFT JOIN validation_vol_horaire_ref vvh ON vvh.volume_horaire_ref_id = vh.id + LEFT JOIN validation v ON v.id = vvh.validation_id AND v.histo_destruction IS NULL + WHERE + s.histo_destruction IS NULL) tv + WHERE + ' || conds || ' -END; + ) v ON ( + t.INTERVENANT_ID = v.INTERVENANT_ID + AND t.STRUCTURE_ID = v.STRUCTURE_ID + AND t.TYPE_VOLUME_HORAIRE_ID = v.TYPE_VOLUME_HORAIRE_ID + AND t.SERVICE_REFERENTIEL_ID = v.SERVICE_REFERENTIEL_ID + AND COALESCE(t.VALIDATION_ID,0) = COALESCE(v.VALIDATION_ID,0) + AND t.VOLUME_HORAIRE_REF_ID = v.VOLUME_HORAIRE_REF_ID -/ -ALTER TRIGGER "VOLUME_HORAIRE_DEL_CK" ENABLE; + ) WHEN MATCHED THEN UPDATE SET --- VOLUME_HORAIRE_REF_CK -CREATE OR REPLACE TRIGGER "VOLUME_HORAIRE_REF_CK" - BEFORE UPDATE ON "VOLUME_HORAIRE_REF" - REFERENCING FOR EACH ROW - DECLARE - has_validation NUMERIC; - BEGIN - - SELECT - COUNT(*) - INTO - has_validation - FROM - VALIDATION_VOL_HORAIRE_REF vvh - JOIN validation v ON v.id = VVH.VALIDATION_ID - WHERE - V.HISTO_DESTRUCTION IS NULL - AND vvh.VOLUME_HORAIRE_REF_ID = :NEW.ID; - - IF 0 <> has_validation THEN - raise_application_error(-20101, 'Il est impossible de modifier des heures référentiel déjà validées.'); - END IF; -END; + ANNEE_ID = v.ANNEE_ID, + to_delete = 0 -/ -ALTER TRIGGER "VOLUME_HORAIRE_REF_CK" ENABLE; + WHEN NOT MATCHED THEN INSERT ( --- VOLUME_HORAIRE_REF_DEL_CK -CREATE OR REPLACE TRIGGER "VOLUME_HORAIRE_REF_DEL_CK" - BEFORE DELETE ON "VOLUME_HORAIRE_REF" - REFERENCING FOR EACH ROW - DECLARE has_validation INTEGER; - pragma autonomous_transaction; - BEGIN - SELECT COUNT(*) - INTO has_validation - FROM VALIDATION_VOL_HORAIRE_REF vvh - JOIN validation v - ON v.id = VVH.VALIDATION_ID - WHERE V.HISTO_DESTRUCTION IS NULL - AND vvh.VOLUME_HORAIRE_REF_ID = :OLD.ID; - IF 0 <> has_validation THEN - raise_application_error(-20101, 'Il est impossible de supprimer des heures référentiel déjà validées.'); - END IF; - END; + ID, + ANNEE_ID, + INTERVENANT_ID, + STRUCTURE_ID, + TYPE_VOLUME_HORAIRE_ID, + SERVICE_REFERENTIEL_ID, + VALIDATION_ID, + VOLUME_HORAIRE_REF_ID, + TO_DELETE -/ -ALTER TRIGGER "VOLUME_HORAIRE_REF_DEL_CK" ENABLE; + ) VALUES ( --- WF_ETAPE_DEP_CK -CREATE OR REPLACE TRIGGER "WF_ETAPE_DEP_CK" - BEFORE INSERT OR UPDATE ON "WF_ETAPE_DEP" - REFERENCING FOR EACH ROW -BEGIN + TBL_VALIDATION_REFERENT_ID_SEQ.NEXTVAL, + v.ANNEE_ID, + v.INTERVENANT_ID, + v.STRUCTURE_ID, + v.TYPE_VOLUME_HORAIRE_ID, + v.SERVICE_REFERENTIEL_ID, + v.VALIDATION_ID, + v.VOLUME_HORAIRE_REF_ID, + 0 - OSE_WORKFLOW.DEP_CHECK( :new.etape_suiv_id, :new.etape_prec_id ); + ); -END; + DELETE TBL_VALIDATION_REFERENTIEL WHERE to_delete = 1 AND ' || conds || '; -/ -ALTER TRIGGER "WF_ETAPE_DEP_CK" ENABLE; + END;'; + END; + -- END OF AUTOMATIC GENERATION -- + +END UNICAEN_TBL; +/ --- Table SOURCE -INSERT INTO SOURCE(ID, CODE, LIBELLE, IMPORTABLE) VALUES (SOURCE_ID_SEQ.NEXTVAL, q'[OSE]', q'[OSE]', 0); -- Table ANNEE @@ -19128,6 +20686,10 @@ INSERT INTO PRIVILEGE(ID, CODE, LIBELLE, CATEGORIE_ID, ORDRE) VALUES (PRIVILEGE_ INSERT INTO PRIVILEGE(ID, CODE, LIBELLE, CATEGORIE_ID, ORDRE) VALUES (PRIVILEGE_ID_SEQ.NEXTVAL, q'[tables-visualisation]', q'[Tables (visualisation)]', (SELECT ID FROM CATEGORIE_PRIVILEGE WHERE ROWNUM = 1 AND CODE = q'[import]'), 8); +-- Table SOURCE +INSERT INTO SOURCE(ID, CODE, LIBELLE, IMPORTABLE) VALUES (SOURCE_ID_SEQ.NEXTVAL, q'[OSE]', q'[OSE]', 0); + + -- Table TBL INSERT INTO TBL(TBL_NAME, TABLE_NAME, VIEW_NAME, SEQUENCE_NAME, CONSTRAINT_NAME, CUSTOM_CALCUL_PROC, ORDRE) VALUES (q'[chargens_seuils_def]', q'[TBL_CHARGENS_SEUILS_DEF]', q'[V_TBL_CHARGENS_SEUILS_DEF]', NULL, q'[TBL_CHARGENS_SEUILS_DEF__UN]', NULL, 1); INSERT INTO TBL(TBL_NAME, TABLE_NAME, VIEW_NAME, SEQUENCE_NAME, CONSTRAINT_NAME, CUSTOM_CALCUL_PROC, ORDRE) VALUES (q'[agrement]', q'[TBL_AGREMENT]', q'[V_TBL_AGREMENT]', NULL, q'[TBL_AGREMENT__UN]', NULL, 1); @@ -19168,6 +20730,10 @@ INSERT INTO TYPE_VOLUME_HORAIRE(ID, CODE, LIBELLE, ORDRE) VALUES (TYPE_VOLUME_HO INSERT INTO UTILISATEUR(ID, USERNAME, EMAIL, DISPLAY_NAME, PASSWORD, STATE, CODE) VALUES (UTILISATEUR_ID_SEQ.NEXTVAL, q'[oseappli]', q'[dsi.applications@unicaen.fr]', q'[Application OSE]', 'x', 1, NULL); +-- Table VERSION +INSERT INTO VERSION(NUMERO) VALUES (1); + + -- Table WF_ETAPE INSERT INTO WF_ETAPE(ID, CODE, ORDRE, DESC_NON_FRANCHIE, DESC_SANS_OBJECTIF, LIBELLE_AUTRES, LIBELLE_INTERVENANT, OBLIGATOIRE, ROUTE, ROUTE_INTERVENANT) VALUES (WF_ETAPE_ID_SEQ.NEXTVAL, q'[REFERENTIEL_VALIDATION_REALISE]', 130, q'[Le référentiel réalisé n'a pas été intégralement validé]', NULL, q'[Je visualise la validation du référentiel réalisé]', q'[Je visualise la validation de mon référentiel réalisé]', 0, q'[intervenant/validation/referentiel/realise]', NULL); INSERT INTO WF_ETAPE(ID, CODE, ORDRE, DESC_NON_FRANCHIE, DESC_SANS_OBJECTIF, LIBELLE_AUTRES, LIBELLE_INTERVENANT, OBLIGATOIRE, ROUTE, ROUTE_INTERVENANT) VALUES (WF_ETAPE_ID_SEQ.NEXTVAL, q'[CLOTURE_REALISE]', 115, q'[La clôture de saisie des services réalisés n'a pas été effectuée]', NULL, q'[Je visualise la clôture de la saisie des services réalisés]', q'[Je visualise la clôture de la saisie de mes services réalisés]', 1, q'[intervenant/services-realises]', NULL); @@ -19287,7 +20853,6 @@ INSERT INTO CORPS(ID, LIBELLE_LONG, LIBELLE_COURT, SOURCE_ID, SOURCE_CODE, HISTO INSERT INTO CORPS(ID, LIBELLE_LONG, LIBELLE_COURT, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (CORPS_ID_SEQ.NEXTVAL, q'[PROFESSEURS SANS CHAIRE]', q'[PROF. SANS CHAIRE]', (SELECT id FROM source WHERE code = 'OSE'), q'[H01]', SYSDATE, 1, SYSDATE, 1); INSERT INTO CORPS(ID, LIBELLE_LONG, LIBELLE_COURT, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (CORPS_ID_SEQ.NEXTVAL, q'[PROFESSEURS TITULAIRES]', q'[PROF. TITULAIRES ]', (SELECT id FROM source WHERE code = 'OSE'), q'[H02]', SYSDATE, 1, SYSDATE, 1); INSERT INTO CORPS(ID, LIBELLE_LONG, LIBELLE_COURT, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (CORPS_ID_SEQ.NEXTVAL, q'[PROF. TITULAIRES A TITRE PERSONNEL]', q'[PR. TIT. TITRE PERS.]', (SELECT id FROM source WHERE code = 'OSE'), q'[H03]', SYSDATE, 1, SYSDATE, 1); -INSERT INTO CORPS(ID, LIBELLE_LONG, LIBELLE_COURT, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (CORPS_ID_SEQ.NEXTVAL, q'[CHARGE D'ETUDES DOCUMENTAIRES (CULTURE)]', q'[CHARGE ET.DOC (CULT)]', (SELECT id FROM source WHERE code = 'OSE'), q'[296]', SYSDATE, 1, SYSDATE, 1); INSERT INTO CORPS(ID, LIBELLE_LONG, LIBELLE_COURT, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (CORPS_ID_SEQ.NEXTVAL, q'[DIRECTEUR DE RECHERCHE EPST]', q'[DR]', (SELECT id FROM source WHERE code = 'OSE'), q'[H04]', SYSDATE, 1, SYSDATE, 1); INSERT INTO CORPS(ID, LIBELLE_LONG, LIBELLE_COURT, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (CORPS_ID_SEQ.NEXTVAL, q'[CHARGE DE RECHERCHE EPST]', q'[CR]', (SELECT id FROM source WHERE code = 'OSE'), q'[H05]', SYSDATE, 1, SYSDATE, 1); INSERT INTO CORPS(ID, LIBELLE_LONG, LIBELLE_COURT, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (CORPS_ID_SEQ.NEXTVAL, q'[ASSISTANT NON AGREGE ET ASSIMILE]', q'[AS N-AGR.]', (SELECT id FROM source WHERE code = 'OSE'), q'[304]', SYSDATE, 1, SYSDATE, 1); @@ -19486,6 +21051,7 @@ INSERT INTO CORPS(ID, LIBELLE_LONG, LIBELLE_COURT, SOURCE_ID, SOURCE_CODE, HISTO INSERT INTO CORPS(ID, LIBELLE_LONG, LIBELLE_COURT, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (CORPS_ID_SEQ.NEXTVAL, q'[SOUS-DIRECTEUR DE LABO. DU CNAM]', q'[SOUS-DIR.LABO.CNAM]', (SELECT id FROM source WHERE code = 'OSE'), q'[361]', SYSDATE, 1, SYSDATE, 1); INSERT INTO CORPS(ID, LIBELLE_LONG, LIBELLE_COURT, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (CORPS_ID_SEQ.NEXTVAL, q'[PROFESSEUR DE L'ENSAM]', q'[PROF. DE L'ENSAM]', (SELECT id FROM source WHERE code = 'OSE'), q'[364]', SYSDATE, 1, SYSDATE, 1); INSERT INTO CORPS(ID, LIBELLE_LONG, LIBELLE_COURT, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (CORPS_ID_SEQ.NEXTVAL, q'[PROF. TECH. ADJOINT ET CHEF DE TP ENSAM]', q'[PROF.T.A.CH.TP ENSAM]', (SELECT id FROM source WHERE code = 'OSE'), q'[365]', SYSDATE, 1, SYSDATE, 1); +INSERT INTO CORPS(ID, LIBELLE_LONG, LIBELLE_COURT, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (CORPS_ID_SEQ.NEXTVAL, q'[CHARGE D'ETUDES DOCUMENTAIRES (CULTURE)]', q'[CHARGE ET.DOC.]', (SELECT id FROM source WHERE code = 'OSE'), q'[981]', SYSDATE, 1, SYSDATE, 1); INSERT INTO CORPS(ID, LIBELLE_LONG, LIBELLE_COURT, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (CORPS_ID_SEQ.NEXTVAL, q'[DIRE GENE CROUS]', q'[DG CROUS]', (SELECT id FROM source WHERE code = 'OSE'), q'[005]', SYSDATE, 1, SYSDATE, 1); INSERT INTO CORPS(ID, LIBELLE_LONG, LIBELLE_COURT, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (CORPS_ID_SEQ.NEXTVAL, q'[DIRECTEUR GENERAL DES SERVICES EPSCP]', q'[DGS EPSCP]', (SELECT id FROM source WHERE code = 'OSE'), q'[029]', SYSDATE, 1, SYSDATE, 1); INSERT INTO CORPS(ID, LIBELLE_LONG, LIBELLE_COURT, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (CORPS_ID_SEQ.NEXTVAL, q'[SOUS DIRECTEUR DE CNOUS]', q'[SDIR CNOUS]', (SELECT id FROM source WHERE code = 'OSE'), q'[224]', SYSDATE, 1, SYSDATE, 1); @@ -27716,7 +29282,7 @@ INSERT INTO ETABLISSEMENT(ID, LIBELLE, LOCALISATION, DEPARTEMENT, SOURCE_ID, SOU INSERT INTO ETABLISSEMENT(ID, LIBELLE, LOCALISATION, DEPARTEMENT, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (ETABLISSEMENT_ID_SEQ.NEXTVAL, q'[EC DE MANAGEMENT DE PARIS]', q'[EM PARIS]', q'[075]', (SELECT id FROM source WHERE code = 'OSE'), q'[0752103D]', SYSDATE, 1, SYSDATE, 1); INSERT INTO ETABLISSEMENT(ID, LIBELLE, LOCALISATION, DEPARTEMENT, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (ETABLISSEMENT_ID_SEQ.NEXTVAL, q'[EC PREP PRATIQUE DES AFFAIRES]', q'[EPPA PARIS]', q'[075]', (SELECT id FROM source WHERE code = 'OSE'), q'[0752219E]', SYSDATE, 1, SYSDATE, 1); INSERT INTO ETABLISSEMENT(ID, LIBELLE, LOCALISATION, DEPARTEMENT, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (ETABLISSEMENT_ID_SEQ.NEXTVAL, q'[INST SUP SC TECH ECO COM PARIS]', q'[ISSTEC PAR]', q'[075]', (SELECT id FROM source WHERE code = 'OSE'), q'[0752304X]', SYSDATE, 1, SYSDATE, 1); -INSERT INTO ETABLISSEMENT(ID, LIBELLE, LOCALISATION, DEPARTEMENT, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (ETABLISSEMENT_ID_SEQ.NEXTVAL, q'[EC SUP LIBRE SC COMMERC APPLIQ]', q'[ESSCA PARI]', q'[075]', (SELECT id FROM source WHERE code = 'OSE'), q'[0752790A]', SYSDATE, 1, SYSDATE, 1); +INSERT INTO ETABLISSEMENT(ID, LIBELLE, LOCALISATION, DEPARTEMENT, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (ETABLISSEMENT_ID_SEQ.NEXTVAL, q'[EC SUP LIBRE SC COMMERC APPLIQ]', q'[ESLSCA]', q'[075]', (SELECT id FROM source WHERE code = 'OSE'), q'[0752790A]', SYSDATE, 1, SYSDATE, 1); INSERT INTO ETABLISSEMENT(ID, LIBELLE, LOCALISATION, DEPARTEMENT, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (ETABLISSEMENT_ID_SEQ.NEXTVAL, q'[INST PREP ADM GESTION PARIS]', q'[IPAG PARIS]', q'[075]', (SELECT id FROM source WHERE code = 'OSE'), q'[0752792C]', SYSDATE, 1, SYSDATE, 1); INSERT INTO ETABLISSEMENT(ID, LIBELLE, LOCALISATION, DEPARTEMENT, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (ETABLISSEMENT_ID_SEQ.NEXTVAL, q'[INST DE RECHERCHE ACTION COMM]', q'[IRAC PARIS]', q'[075]', (SELECT id FROM source WHERE code = 'OSE'), q'[0752887F]', SYSDATE, 1, SYSDATE, 1); INSERT INTO ETABLISSEMENT(ID, LIBELLE, LOCALISATION, DEPARTEMENT, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (ETABLISSEMENT_ID_SEQ.NEXTVAL, q'[INST SUP EUROPEEN DE GESTION]', q'[ISEG PARIS]', q'[075]', (SELECT id FROM source WHERE code = 'OSE'), q'[0752972Y]', SYSDATE, 1, SYSDATE, 1); @@ -29208,6 +30774,19 @@ INSERT INTO ETABLISSEMENT(ID, LIBELLE, LOCALISATION, DEPARTEMENT, SOURCE_ID, SOU INSERT INTO ETABLISSEMENT(ID, LIBELLE, LOCALISATION, DEPARTEMENT, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (ETABLISSEMENT_ID_SEQ.NEXTVAL, q'[AFTRAL Tours]', q'[AFTRAL]', q'[037]', (SELECT id FROM source WHERE code = 'OSE'), q'[03700000]', SYSDATE, 1, SYSDATE, 1); INSERT INTO ETABLISSEMENT(ID, LIBELLE, LOCALISATION, DEPARTEMENT, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (ETABLISSEMENT_ID_SEQ.NEXTVAL, q'[AFTRAL Orléans]', q'[AFTRAL]', q'[045]', (SELECT id FROM source WHERE code = 'OSE'), q'[0450000]', SYSDATE, 1, SYSDATE, 1); INSERT INTO ETABLISSEMENT(ID, LIBELLE, LOCALISATION, DEPARTEMENT, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (ETABLISSEMENT_ID_SEQ.NEXTVAL, q'[CFA du transport et de la logistique - AFTRAL]', q'[AFTRAL]', q'[006]', (SELECT id FROM source WHERE code = 'OSE'), q'[0061989E]', SYSDATE, 1, SYSDATE, 1); +INSERT INTO ETABLISSEMENT(ID, LIBELLE, LOCALISATION, DEPARTEMENT, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (ETABLISSEMENT_ID_SEQ.NEXTVAL, q'[Charité - Université de médecine Berlin]', q'[Charité]', q'[099]', (SELECT id FROM source WHERE code = 'OSE'), q'[ETR1171]', SYSDATE, 1, SYSDATE, 1); +INSERT INTO ETABLISSEMENT(ID, LIBELLE, LOCALISATION, DEPARTEMENT, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (ETABLISSEMENT_ID_SEQ.NEXTVAL, q'[Institut Régional de Formation et Techniciens de Laboratoire Médical]', q'[IRFTLM]', q'[037]', (SELECT id FROM source WHERE code = 'OSE'), q'[0371470X]', SYSDATE, 1, SYSDATE, 1); +INSERT INTO ETABLISSEMENT(ID, LIBELLE, LOCALISATION, DEPARTEMENT, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (ETABLISSEMENT_ID_SEQ.NEXTVAL, q'[AXENS GROUP]', q'[AXENS]', q'[092]', (SELECT id FROM source WHERE code = 'OSE'), q'[AXENS]', SYSDATE, 1, SYSDATE, 1); +INSERT INTO ETABLISSEMENT(ID, LIBELLE, LOCALISATION, DEPARTEMENT, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (ETABLISSEMENT_ID_SEQ.NEXTVAL, q'[Total Petrochemicals Research Feluy]', q'[Total]', q'[099]', (SELECT id FROM source WHERE code = 'OSE'), q'[ETR1175]', SYSDATE, 1, SYSDATE, 1); +INSERT INTO ETABLISSEMENT(ID, LIBELLE, LOCALISATION, DEPARTEMENT, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (ETABLISSEMENT_ID_SEQ.NEXTVAL, q'[University of California Santa Barbara]', q'[University]', q'[099]', (SELECT id FROM source WHERE code = 'OSE'), q'[ETR1176]', SYSDATE, 1, SYSDATE, 1); +INSERT INTO ETABLISSEMENT(ID, LIBELLE, LOCALISATION, DEPARTEMENT, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (ETABLISSEMENT_ID_SEQ.NEXTVAL, q'[Universität Kaiserslautern]', q'[Univ KAIS.]', q'[099]', (SELECT id FROM source WHERE code = 'OSE'), q'[ETR1177]', SYSDATE, 1, SYSDATE, 1); +INSERT INTO ETABLISSEMENT(ID, LIBELLE, LOCALISATION, DEPARTEMENT, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (ETABLISSEMENT_ID_SEQ.NEXTVAL, q'[American University of Paris]', q'[Amer.uni.]', q'[075]', (SELECT id FROM source WHERE code = 'OSE'), q'[ETR1178]', SYSDATE, 1, SYSDATE, 1); +INSERT INTO ETABLISSEMENT(ID, LIBELLE, LOCALISATION, DEPARTEMENT, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (ETABLISSEMENT_ID_SEQ.NEXTVAL, q'[FIM CCI Formation - Campus 1]', q'[FIM CCI]', q'[050]', (SELECT id FROM source WHERE code = 'OSE'), q'[05000000]', SYSDATE, 1, SYSDATE, 1); +INSERT INTO ETABLISSEMENT(ID, LIBELLE, LOCALISATION, DEPARTEMENT, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (ETABLISSEMENT_ID_SEQ.NEXTVAL, q'[Faculté des métiers de la CCI]', q'[FACULTE 35]', q'[035]', (SELECT id FROM source WHERE code = 'OSE'), q'[0351884H]', SYSDATE, 1, SYSDATE, 1); +INSERT INTO ETABLISSEMENT(ID, LIBELLE, LOCALISATION, DEPARTEMENT, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (ETABLISSEMENT_ID_SEQ.NEXTVAL, q'[MENSA]', q'[MENSA]', q'[035]', (SELECT id FROM source WHERE code = 'OSE'), q'[0352779F]', SYSDATE, 1, SYSDATE, 1); +INSERT INTO ETABLISSEMENT(ID, LIBELLE, LOCALISATION, DEPARTEMENT, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (ETABLISSEMENT_ID_SEQ.NEXTVAL, q'[Faculté des sciences d'Oujda]', q'[F. Oujda]', q'[099]', (SELECT id FROM source WHERE code = 'OSE'), q'[ETR1172]', SYSDATE, 1, SYSDATE, 1); +INSERT INTO ETABLISSEMENT(ID, LIBELLE, LOCALISATION, DEPARTEMENT, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (ETABLISSEMENT_ID_SEQ.NEXTVAL, q'[Faculté des sciences et techniques de Fès]', q'[F. Fès]', q'[099]', (SELECT id FROM source WHERE code = 'OSE'), q'[ETR1173]', SYSDATE, 1, SYSDATE, 1); +INSERT INTO ETABLISSEMENT(ID, LIBELLE, LOCALISATION, DEPARTEMENT, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (ETABLISSEMENT_ID_SEQ.NEXTVAL, q'[Ecole Supérieure de Technologie]', q'[EST Maroc]', q'[099]', (SELECT id FROM source WHERE code = 'OSE'), q'[ETR1174]', SYSDATE, 1, SYSDATE, 1); -- Table GRADE @@ -29623,9 +31202,6 @@ INSERT INTO GRADE(ID, LIBELLE_LONG, LIBELLE_COURT, ECHELLE, CORPS_ID, SOURCE_ID, INSERT INTO GRADE(ID, LIBELLE_LONG, LIBELLE_COURT, ECHELLE, CORPS_ID, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (GRADE_ID_SEQ.NEXTVAL, q'[PROF. TITULAIRES A TITRE PERSONNEL]', q'[PR. TIT. TITRE PERS]', NULL, (SELECT ID FROM CORPS WHERE ROWNUM = 1 AND SOURCE_CODE = q'[H03]'), (SELECT id FROM source WHERE code = 'OSE'), q'[H030]', SYSDATE, 1, SYSDATE, 1); INSERT INTO GRADE(ID, LIBELLE_LONG, LIBELLE_COURT, ECHELLE, CORPS_ID, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (GRADE_ID_SEQ.NEXTVAL, q'[MAITRE DE CONFERENCE CL. NORMALE]', q'[MT.CONF.CL NORM.]', NULL, (SELECT ID FROM CORPS WHERE ROWNUM = 1 AND SOURCE_CODE = q'[301]'), (SELECT id FROM source WHERE code = 'OSE'), q'[3014]', SYSDATE, 1, SYSDATE, 1); INSERT INTO GRADE(ID, LIBELLE_LONG, LIBELLE_COURT, ECHELLE, CORPS_ID, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (GRADE_ID_SEQ.NEXTVAL, q'[BIBLIOTHECAIRE]', q'[BIBLIOTHECAIRE]', NULL, (SELECT ID FROM CORPS WHERE ROWNUM = 1 AND SOURCE_CODE = q'[806]'), (SELECT id FROM source WHERE code = 'OSE'), q'[8063]', SYSDATE, 1, SYSDATE, 1); -INSERT INTO GRADE(ID, LIBELLE_LONG, LIBELLE_COURT, ECHELLE, CORPS_ID, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (GRADE_ID_SEQ.NEXTVAL, q'[CHARGE D'ETUDES DOCUMENTAIRES (CULTURE)]', q'[CHARGE ET.DOC (CULT)]', NULL, (SELECT ID FROM CORPS WHERE ROWNUM = 1 AND SOURCE_CODE = q'[296]'), (SELECT id FROM source WHERE code = 'OSE'), q'[2961]', SYSDATE, 1, SYSDATE, 1); -INSERT INTO GRADE(ID, LIBELLE_LONG, LIBELLE_COURT, ECHELLE, CORPS_ID, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (GRADE_ID_SEQ.NEXTVAL, q'[CHARGE ETUDES DOC PAL 2CL (CULT)]', q'[CH.ET.DOC P2CL(CULT)]', NULL, (SELECT ID FROM CORPS WHERE ROWNUM = 1 AND SOURCE_CODE = q'[296]'), (SELECT id FROM source WHERE code = 'OSE'), q'[2962]', SYSDATE, 1, SYSDATE, 1); -INSERT INTO GRADE(ID, LIBELLE_LONG, LIBELLE_COURT, ECHELLE, CORPS_ID, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (GRADE_ID_SEQ.NEXTVAL, q'[CHARGE ETUDES DOC PAL 1CL (CULT)]', q'[CH.ET.DOC P1CL(CULT)]', NULL, (SELECT ID FROM CORPS WHERE ROWNUM = 1 AND SOURCE_CODE = q'[296]'), (SELECT id FROM source WHERE code = 'OSE'), q'[2963]', SYSDATE, 1, SYSDATE, 1); INSERT INTO GRADE(ID, LIBELLE_LONG, LIBELLE_COURT, ECHELLE, CORPS_ID, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (GRADE_ID_SEQ.NEXTVAL, q'[PHYSICIEN ADJOINT CL NORMALE]', q'[PHYS.ADJ.CN]', NULL, (SELECT ID FROM CORPS WHERE ROWNUM = 1 AND SOURCE_CODE = q'[333]'), (SELECT id FROM source WHERE code = 'OSE'), q'[3334]', SYSDATE, 1, SYSDATE, 1); INSERT INTO GRADE(ID, LIBELLE_LONG, LIBELLE_COURT, ECHELLE, CORPS_ID, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (GRADE_ID_SEQ.NEXTVAL, q'[ASTRONOME ADJOINT CL NORMALE]', q'[ASTRO.ADJ.CN]', NULL, (SELECT ID FROM CORPS WHERE ROWNUM = 1 AND SOURCE_CODE = q'[332]'), (SELECT id FROM source WHERE code = 'OSE'), q'[3324]', SYSDATE, 1, SYSDATE, 1); INSERT INTO GRADE(ID, LIBELLE_LONG, LIBELLE_COURT, ECHELLE, CORPS_ID, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (GRADE_ID_SEQ.NEXTVAL, q'[MAITRE DE CONF.DU MUSEUM HIST.NAT.C.N]', q'[MAIT.CF.MUSEUM CN]', NULL, (SELECT ID FROM CORPS WHERE ROWNUM = 1 AND SOURCE_CODE = q'[351]'), (SELECT id FROM source WHERE code = 'OSE'), q'[3514]', SYSDATE, 1, SYSDATE, 1); @@ -29723,12 +31299,12 @@ INSERT INTO GRADE(ID, LIBELLE_LONG, LIBELLE_COURT, ECHELLE, CORPS_ID, SOURCE_ID, INSERT INTO GRADE(ID, LIBELLE_LONG, LIBELLE_COURT, ECHELLE, CORPS_ID, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (GRADE_ID_SEQ.NEXTVAL, q'[PSYCHOLOGUE EDUCATION NATIONALE HC]', q'[PSY.EN.HC]', NULL, (SELECT ID FROM CORPS WHERE ROWNUM = 1 AND SOURCE_CODE = q'[522]'), (SELECT id FROM source WHERE code = 'OSE'), q'[5222]', SYSDATE, 1, SYSDATE, 1); INSERT INTO GRADE(ID, LIBELLE_LONG, LIBELLE_COURT, ECHELLE, CORPS_ID, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (GRADE_ID_SEQ.NEXTVAL, q'[PSYCHOLOGUE EDUCATION NATIONALE CN]', q'[PSY.EN.CN]', NULL, (SELECT ID FROM CORPS WHERE ROWNUM = 1 AND SOURCE_CODE = q'[522]'), (SELECT id FROM source WHERE code = 'OSE'), q'[5221]', SYSDATE, 1, SYSDATE, 1); INSERT INTO GRADE(ID, LIBELLE_LONG, LIBELLE_COURT, ECHELLE, CORPS_ID, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (GRADE_ID_SEQ.NEXTVAL, q'[ARCHITECTE URBANISTE GENERAL DE L'ETAT]', q'[ARC URB GEN ETAT]', NULL, (SELECT ID FROM CORPS WHERE ROWNUM = 1 AND SOURCE_CODE = q'[281]'), (SELECT id FROM source WHERE code = 'OSE'), q'[2815]', SYSDATE, 1, SYSDATE, 1); -INSERT INTO GRADE(ID, LIBELLE_LONG, LIBELLE_COURT, ECHELLE, CORPS_ID, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (GRADE_ID_SEQ.NEXTVAL, q'[ADJ TECH PRINC DE RECH ET DE FORM DE 1CL]', q'[ATRF P1C]', q'[2]', (SELECT ID FROM CORPS WHERE ROWNUM = 1 AND SOURCE_CODE = q'[941]'), (SELECT id FROM source WHERE code = 'OSE'), q'[9412]', SYSDATE, 1, SYSDATE, 1); +INSERT INTO GRADE(ID, LIBELLE_LONG, LIBELLE_COURT, ECHELLE, CORPS_ID, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (GRADE_ID_SEQ.NEXTVAL, q'[ADJ TECH PRINC DE RECH ET DE FORM DE 2CL]', q'[ATRF P2C]', q'[3]', (SELECT ID FROM CORPS WHERE ROWNUM = 1 AND SOURCE_CODE = q'[941]'), (SELECT id FROM source WHERE code = 'OSE'), q'[9412]', SYSDATE, 1, SYSDATE, 1); INSERT INTO GRADE(ID, LIBELLE_LONG, LIBELLE_COURT, ECHELLE, CORPS_ID, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (GRADE_ID_SEQ.NEXTVAL, q'[ADJOINT ADMINISTRATIF PRINCIPAL DE 1CL]', q'[ADJ P1C]', q'[3]', (SELECT ID FROM CORPS WHERE ROWNUM = 1 AND SOURCE_CODE = q'[057]'), (SELECT id FROM source WHERE code = 'OSE'), q'[0573]', SYSDATE, 1, SYSDATE, 1); INSERT INTO GRADE(ID, LIBELLE_LONG, LIBELLE_COURT, ECHELLE, CORPS_ID, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (GRADE_ID_SEQ.NEXTVAL, q'[MAG PRINCIPAL DES BIBLIOTHEQUES DE 2CL]', q'[MAG P2C]', q'[2]', (SELECT ID FROM CORPS WHERE ROWNUM = 1 AND SOURCE_CODE = q'[942]'), (SELECT id FROM source WHERE code = 'OSE'), q'[9422]', SYSDATE, 1, SYSDATE, 1); INSERT INTO GRADE(ID, LIBELLE_LONG, LIBELLE_COURT, ECHELLE, CORPS_ID, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (GRADE_ID_SEQ.NEXTVAL, q'[ADJ. TEC. DES ETAB. D'ENSEIGNEMENT]', q'[ATEC]', q'[1]', (SELECT ID FROM CORPS WHERE ROWNUM = 1 AND SOURCE_CODE = q'[943]'), (SELECT id FROM source WHERE code = 'OSE'), q'[9431]', SYSDATE, 1, SYSDATE, 1); INSERT INTO GRADE(ID, LIBELLE_LONG, LIBELLE_COURT, ECHELLE, CORPS_ID, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (GRADE_ID_SEQ.NEXTVAL, q'[ADJ. TEC. PRINCIPAL DE 1CL DES ETAB ENS]', q'[ATEC P1C]', q'[3]', (SELECT ID FROM CORPS WHERE ROWNUM = 1 AND SOURCE_CODE = q'[943]'), (SELECT id FROM source WHERE code = 'OSE'), q'[9433]', SYSDATE, 1, SYSDATE, 1); -INSERT INTO GRADE(ID, LIBELLE_LONG, LIBELLE_COURT, ECHELLE, CORPS_ID, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (GRADE_ID_SEQ.NEXTVAL, q'[ADJ TECH PRINC DE RECH ET DE FORM DE 2CL]', q'[ATRF P2C]', q'[3]', (SELECT ID FROM CORPS WHERE ROWNUM = 1 AND SOURCE_CODE = q'[941]'), (SELECT id FROM source WHERE code = 'OSE'), q'[9413]', SYSDATE, 1, SYSDATE, 1); +INSERT INTO GRADE(ID, LIBELLE_LONG, LIBELLE_COURT, ECHELLE, CORPS_ID, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (GRADE_ID_SEQ.NEXTVAL, q'[ADJ TECH PRINC DE RECH ET DE FORM DE 1CL]', q'[ATRF P1C]', q'[2]', (SELECT ID FROM CORPS WHERE ROWNUM = 1 AND SOURCE_CODE = q'[941]'), (SELECT id FROM source WHERE code = 'OSE'), q'[9413]', SYSDATE, 1, SYSDATE, 1); INSERT INTO GRADE(ID, LIBELLE_LONG, LIBELLE_COURT, ECHELLE, CORPS_ID, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (GRADE_ID_SEQ.NEXTVAL, q'[ADJOINT ADMINISTRATIF]', q'[ADJAENES]', q'[1]', (SELECT ID FROM CORPS WHERE ROWNUM = 1 AND SOURCE_CODE = q'[057]'), (SELECT id FROM source WHERE code = 'OSE'), q'[0571]', SYSDATE, 1, SYSDATE, 1); INSERT INTO GRADE(ID, LIBELLE_LONG, LIBELLE_COURT, ECHELLE, CORPS_ID, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (GRADE_ID_SEQ.NEXTVAL, q'[MAGASINIER DES BIBLIOTHEQUES]', q'[MAG]', q'[1]', (SELECT ID FROM CORPS WHERE ROWNUM = 1 AND SOURCE_CODE = q'[942]'), (SELECT id FROM source WHERE code = 'OSE'), q'[9421]', SYSDATE, 1, SYSDATE, 1); INSERT INTO GRADE(ID, LIBELLE_LONG, LIBELLE_COURT, ECHELLE, CORPS_ID, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (GRADE_ID_SEQ.NEXTVAL, q'[ADJOINT ADMINISTRATIF PRINCIPAL DE 2CL]', q'[ADJ P2C]', q'[2]', (SELECT ID FROM CORPS WHERE ROWNUM = 1 AND SOURCE_CODE = q'[057]'), (SELECT id FROM source WHERE code = 'OSE'), q'[0572]', SYSDATE, 1, SYSDATE, 1); @@ -29751,6 +31327,10 @@ INSERT INTO GRADE(ID, LIBELLE_LONG, LIBELLE_COURT, ECHELLE, CORPS_ID, SOURCE_ID, INSERT INTO GRADE(ID, LIBELLE_LONG, LIBELLE_COURT, ECHELLE, CORPS_ID, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (GRADE_ID_SEQ.NEXTVAL, q'[SECRETAIRE GENERAL D'ACADEMIE GROUPE I]', q'[SGA GP I]', NULL, (SELECT ID FROM CORPS WHERE ROWNUM = 1 AND SOURCE_CODE = q'[091]'), (SELECT id FROM source WHERE code = 'OSE'), q'[0911]', SYSDATE, 1, SYSDATE, 1); INSERT INTO GRADE(ID, LIBELLE_LONG, LIBELLE_COURT, ECHELLE, CORPS_ID, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (GRADE_ID_SEQ.NEXTVAL, q'[CONSEILLER DE RECTEUR OU DE VICE RECTEUR]', q'[CONSEILLER RECTEUR]', NULL, (SELECT ID FROM CORPS WHERE ROWNUM = 1 AND SOURCE_CODE = q'[093]'), (SELECT id FROM source WHERE code = 'OSE'), q'[0931]', SYSDATE, 1, SYSDATE, 1); INSERT INTO GRADE(ID, LIBELLE_LONG, LIBELLE_COURT, ECHELLE, CORPS_ID, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (GRADE_ID_SEQ.NEXTVAL, q'[VICE-RECTEUR GROUPE II]', q'[VICE-RECTEUR GP II]', NULL, (SELECT ID FROM CORPS WHERE ROWNUM = 1 AND SOURCE_CODE = q'[090]'), (SELECT id FROM source WHERE code = 'OSE'), q'[0902]', SYSDATE, 1, SYSDATE, 1); +INSERT INTO GRADE(ID, LIBELLE_LONG, LIBELLE_COURT, ECHELLE, CORPS_ID, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (GRADE_ID_SEQ.NEXTVAL, q'[MEDECIN DE L'E.N. HORS CLASSE]', q'[MED.EN.HC]', NULL, (SELECT ID FROM CORPS WHERE ROWNUM = 1 AND SOURCE_CODE = q'[997]'), (SELECT id FROM source WHERE code = 'OSE'), q'[9973]', SYSDATE, 1, SYSDATE, 1); +INSERT INTO GRADE(ID, LIBELLE_LONG, LIBELLE_COURT, ECHELLE, CORPS_ID, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (GRADE_ID_SEQ.NEXTVAL, q'[CHARGE D'ETUDES DOCUMENTAIRES]', q'[CED]', NULL, (SELECT ID FROM CORPS WHERE ROWNUM = 1 AND SOURCE_CODE = q'[981]'), (SELECT id FROM source WHERE code = 'OSE'), q'[9811]', SYSDATE, 1, SYSDATE, 1); +INSERT INTO GRADE(ID, LIBELLE_LONG, LIBELLE_COURT, ECHELLE, CORPS_ID, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (GRADE_ID_SEQ.NEXTVAL, q'[CHARGE D'ETUDES DOCUMENTAIRES PRINCIPAL]', q'[CED P]', NULL, (SELECT ID FROM CORPS WHERE ROWNUM = 1 AND SOURCE_CODE = q'[981]'), (SELECT id FROM source WHERE code = 'OSE'), q'[9812]', SYSDATE, 1, SYSDATE, 1); +INSERT INTO GRADE(ID, LIBELLE_LONG, LIBELLE_COURT, ECHELLE, CORPS_ID, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (GRADE_ID_SEQ.NEXTVAL, q'[CHARGE D'ETUDES DOCUMENTAIRES HC]', q'[CED HC]', NULL, (SELECT ID FROM CORPS WHERE ROWNUM = 1 AND SOURCE_CODE = q'[981]'), (SELECT id FROM source WHERE code = 'OSE'), q'[9813]', SYSDATE, 1, SYSDATE, 1); INSERT INTO GRADE(ID, LIBELLE_LONG, LIBELLE_COURT, ECHELLE, CORPS_ID, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (GRADE_ID_SEQ.NEXTVAL, q'[DIRECTEUR GENERAL DES SERVICES GR III]', q'[DGS GR III]', NULL, (SELECT ID FROM CORPS WHERE ROWNUM = 1 AND SOURCE_CODE = q'[029]'), (SELECT id FROM source WHERE code = 'OSE'), q'[0293]', SYSDATE, 1, SYSDATE, 1); INSERT INTO GRADE(ID, LIBELLE_LONG, LIBELLE_COURT, ECHELLE, CORPS_ID, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (GRADE_ID_SEQ.NEXTVAL, q'[AGENT COMPTABLE CROUS GROUPE I]', q'[AC CROUS G1]', NULL, (SELECT ID FROM CORPS WHERE ROWNUM = 1 AND SOURCE_CODE = q'[052]'), (SELECT id FROM source WHERE code = 'OSE'), q'[0521]', SYSDATE, 1, SYSDATE, 1); INSERT INTO GRADE(ID, LIBELLE_LONG, LIBELLE_COURT, ECHELLE, CORPS_ID, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (GRADE_ID_SEQ.NEXTVAL, q'[PROFESSEUR D'EPS CLASSE EXCEPTIONNELLE]', q'[EPS CE]', NULL, (SELECT ID FROM CORPS WHERE ROWNUM = 1 AND SOURCE_CODE = q'[531]'), (SELECT id FROM source WHERE code = 'OSE'), q'[5314]', SYSDATE, 1, SYSDATE, 1); -- GitLab