Files
Database/_UP/425TO426.SRC
Erik Groener 064861d39c akza lognr 186
ins-package aangepast zodat gebruik kan worden gemaakt van een database-setting voor de history-mode. Hiervoor de fac_message FAC_HISTORY_MODE toegevoegd.

svn path=/Database/trunk/; revision=8154
2003-02-24 14:16:48 +00:00

991 lines
34 KiB
Plaintext

SET TERMOUT ON
SET FEEDBACK OFF
SET ECHO OFF
--
-- Update script van Facilitor versie 4.25 naar 4.26
--
/*
* Dit script wordt geprecompileerd dus is het mogelijk (verplicht)
* om #ifdef's te gebruiken voor de diverse modules.
*
* Gebruik daar waar in de *.SQL-variant geen commentaar-tekst moet komen de
* C-style van uitcommentarieren. Daar waar WEL tekst in de uitvoer moet komen
* moet -- gebruikt worden.
*/
#include "modules.h"
#include "comsql.h"
#include "INS\inssql.h"
/*
* Test eerst of de vorige versie van module FAC zoals genoemd in tabel
* fac_module wel het te verwachten versienummer heeft
* als dat niet zo is dient de gebruiker het script ZELF af te breken middels
* control-c.
* Als dat wel zo is vervolgt het script en zal aan het einde van het script
* het interne versienummer en de datum worden bijgewerkt.
*/
/* !!BELANGRIJK!!
* Als er bij de upgrade een NIEUWE tabel of view wordt gecreeerd, moeten ook
* de daarvoor benodigde GRANTS en SYNONYMS worden geregeld!!!
* Dit doen we in de $..after.sql, die ook hier wordt gegenereerd.
*/
#ifdef MASTER
SPOOL OFF
SET HEADING OFF
CLEAR SCREEN
PROMPT ***********************************************************************
PROMPT
PROMPT UPGRADE SCRIPT van Facilitor versie 04.25 naar 4.26
PROMPT
SELECT 'De huidige versie van Facilitor zou moeten zijn 04.25 en is: '
|| fac_module_version
FROM fac_module
WHERE fac_module_name='FAC';
PROMPT
PROMPT Indien de huidige versie NIET de verwachte versie is mag dit script
PROMPT niet worden gerund! In dit geval dient het script nu middels
PROMPT CONTROL-C te worden afgebroken.
PROMPT
PROMPT Indien de versies overeenkomen dient nu ENTER te worden gedrukt...
PROMPT
PROMPT ***********************************************************************
ACCEPT nix PROMPT ''
PROMPT
PROMPT De upgrade wordt vervolgd. Even geduld a.u.b...
PROMPT
SET TERMOUT OFF
SET HEADING OFF
SET FEEDBACK OFF
SET ECHO OFF
SET VERIFY OFF
SET LINESIZE 1000
SET SERVEROUTPUT ON;
SPOOL $425to426.SQL
PROMPT SET ECHO ON
PROMPT SPOOL $425to426.LST;
UPDMOD(FAC,425to426)
UPDMOD(ALG,425to426)
UPDMOD(PRS,425to426)
UPDMOD(INS,425to426)
UPDMOD(MLD,425to426)
UPDMOD(CAD,425to426)
UPDMOD(AKZ,425to426)
UPDMOD(PRJ,425to426)
UPDMOD(RES,425to426)
UPDMOD(BES,425to426)
UPDMOD(BEZ,425to426)
UPDMOD(SCH,425to426)
UPDMOD(SLE,425to426)
UPDMOD(CNT,425to426)
UPDMOD(WEB,425to426)
UPDMOD(PRA,425to426)
UPDATE_VERSION('04.26.1');
COMMIT;
PROMPT SPOOL OFF;
PROMPT START $425to426after.SQL
SPOOL OFF
SPOOL $425to426after.sql
PROMPT SET ECHO ON
PROMPT SPOOL $425to426after.lst
-- Geef execute rechten aan de laagste role voor alle stored packages, procedures etc.
-- Bedoeld voor de nieuwe, maar is niet erg voor de oude.
SELECT DISTINCT 'GRANT execute ON ' || US.name ||' TO '||USER||'_ALG_SMALL_ROLE;'
FROM user_source US;
-- Geef alle rechten aan de laagste role voor alle sequences
-- Bedoeld voor de nieuwe, maar is niet erg voor de oude.
SELECT 'GRANT all ON ' || USEQ.sequence_name ||' TO '||USER||'_ALG_SMALL_ROLE;'
FROM user_sequences USEQ;
/* ADD SYNONYMS ROUTINE HERE FOR ALL SECONDARY USERS */
PROMPT SPOOL OFF
SPOOL OFF
START $425to426.SQL
SET ECHO OFF
PROMPT De upgrade is gereed.. Controleer de LST-files.
#endif // MASTER
/****************************** PLAATS HIERONDER DE UPDATES ******************************/
#ifdef ALG
CREATE_VIEW(alg_v_ruimte_gegevens,ALG_NORMAAL_PRIVILEGE) AS
SELECT ALG_L.alg_locatie_key, ALG_L.alg_district_key,
ALG_L.alg_locatie_omschrijving, ALG_L.alg_locatie_code,
ALG_L.alg_locatie_upper,
ALG_G.alg_gebouw_key, ALG_G.alg_srtgebouw_key,
ALG_G.alg_gebouw_omschrijving, ALG_G.alg_gebouw_upper,
ALG_V.alg_verdieping_key,
ALG_V.alg_verdieping_omschrijving, ALG_V.alg_verdieping_upper,
ALG_V.alg_verdieping_volgnr,
ALG_V.alg_verdieping_tekening, ALG_R.alg_ruimte_key,
ALG_S.alg_srtruimte_key, ALG_R.alg_ruimte_nr,
ALG_R.alg_ruimte_acadkey,
ALG_R.alg_ruimte_omschrijving, ALG_R.alg_ruimte_upper_nr,
ALG_S.alg_srtruimte_omschrijving,
ALG_R.alg_ruimte_vloer_omschrijving,
ALG_R.alg_ruimte_bruto_vloeropp,
ALG_R.alg_ruimte_opp_gevelglas,
ALG_R.alg_ruimte_opp_separatieglas,
ALG_R.alg_ruimte_opp_gevelbekleding,
ALG_G.alg_gebouw_code ||' - '
|| to_char(ALG_V.alg_verdieping_volgnr) ||' - '
|| ALG_R.alg_ruimte_nr ALG_RUIMTE_AANDUIDING,
ALG_R.alg_ruimte_omtrek,
ALG_R.alg_ruimte_inhoud,
ALG_R.alg_ruimte_getekend
,ALG_R.ALG_RUIMTE_OPMERKING
FROM alg_locatie ALG_L, alg_gebouw ALG_G,
alg_verdieping ALG_V, alg_v_aanwezigruimte ALG_R,
alg_v_aanwezigsrtruimte ALG_S
WHERE
ALG_V.alg_verdieping_key = ALG_R.alg_verdieping_key AND
ALG_G.alg_gebouw_key = ALG_V.alg_gebouw_key AND
ALG_L.alg_locatie_key = ALG_G.alg_locatie_key AND
ALG_R.alg_srtruimte_key = ALG_S.alg_srtruimte_key (+);
CREATE OR REPLACE FUNCTION ALG_F_GetRefWaarde (sk_key IN NUMBER, waarde IN VARCHAR2) RETURN VARCHAR2 IS
sResult VARCHAR2(255);
kolomnaam VARCHAR2(50);
kolomtxt VARCHAR2(50);
objectnaam VARCHAR2(50);
tab_key NUMBER(10);
ttype VARCHAR2(1);
BEGIN
-- Doel is het resultaat van:
-- select [kolomtxt] from [objectnaam] where [kolomnaam]= waarde
-- of
-- select [kolomtxt] from [objectnaam] where [kolomnaam]= waarde and fac_usrtab_key=tab_key
SELECT RSK.alg_refkenmerk_kolomnaam,
RSK.alg_refkenmerk_kolomtxt,
RSK.alg_refkenmerk_objectnaam,
RSK.fac_usrtab_key,
UT.fac_usrtab_view
INTO kolomnaam, kolomtxt,objectnaam, tab_key, ttype
FROM alg_REFKENMERK RSK, alg_KENMERK SK, fac_usrtab UT
WHERE SK.alg_kenmerk_key=sk_key
AND RSK.fac_usrtab_key=UT.fac_usrtab_key(+)
AND SK.alg_refkenmerk_key=RSK.alg_refkenmerk_key;
IF tab_key IS NULL OR ttype = 'V' OR ttype IS NULL THEN
-- select [kolomtxt] into sResult from [objectnaam] where [kolomnaam]=waarde
-- maak een cursor/recordgroup oid voor deze query. Precies 1 rowresultaat
sResult:='Select '||kolomtxt||' from '||objectnaam||' where '||kolomnaam||'='||waarde;
ELSE
-- select [kolomtxt] from [objectnaam] where [kolomnaam]= waarde and fac_usrtab_key=tab_key
sResult:='Select '||kolomtxt||' from '||objectnaam||' where '||kolomnaam||'='||waarde||' and fac_usrtab_key = '||TO_CHAR(tab_key);
END IF;
RETURN sResult;
END;
/
#endif //ALG
#ifdef CAD
CREATE_VIEW(cad_v_lpn_ins_deel_2, FAC_NORMAAL_PRIVILEGE) AS
SELECT
D.ins_deel_key,
ins_srtkenmerk_omschrijving,
KD.ins_kenmerkdeel_waarde ||' '|| SK.ins_srtkenmerk_dimensie INS_KENMERKDEEL_WAARDE2
FROM
ins_srtkenmerk SK,
ins_kenmerk K,
ins_kenmerkdeel KD,
ins_deel D
WHERE SK.ins_srtkenmerk_key=K.ins_srtkenmerk_key
AND K.ins_kenmerk_key=KD.ins_kenmerk_key
AND KD.ins_deel_key=D.ins_deel_key
AND KD.ins_kenmerkdeel_verwijder IS NULL;
#endif// CAD
#ifdef INS
CREATE OR REPLACE PACKAGE Ins AS
PROCEDURE Ins_Update_Kenmerkdeel(kenmerkdeel_key IN NUMBER
,deel_key IN NUMBER
,kenmerk_key IN NUMBER
,waarde IN VARCHAR2
,historymode IN VARCHAR2
,mselect IN VARCHAR2);
PROCEDURE Kmd_Update_Kenmerkdeel(kenmerkdeel_key IN NUMBER
,deel_key IN NUMBER
,kenmerk_key IN NUMBER
,waarde IN VARCHAR2
,historymode IN VARCHAR2
,mselect IN VARCHAR2);
PROCEDURE Kmd_Insert(p_deel_key IN NUMBER
,p_kenmerk_key IN NUMBER
,p_waarde IN VARCHAR2
,p_historymode IN VARCHAR2);
PROCEDURE Kmd_Delete(p_kenmerkdeel_key IN NUMBER
,p_historymode IN VARCHAR2);
PROCEDURE Kmd_Update(p_kenmerkdeel_key IN NUMBER
,p_waarde IN VARCHAR2
,p_historymode IN VARCHAR2);
END Ins;
/
CREATE OR REPLACE PACKAGE BODY Ins AS
PROCEDURE Ins_Update_Kenmerkdeel(kenmerkdeel_key IN NUMBER
,deel_key IN NUMBER
,kenmerk_key IN NUMBER
,waarde IN VARCHAR2
,historymode IN VARCHAR2
,mselect IN VARCHAR2) IS
v_history_mode fac_message.fac_message_text%TYPE;
BEGIN
-- Het is eigenlijk voldoende om hier alleen Kmd_Update()
-- aan te roepen omdat daar alle situaties worden
-- gecontroleerd en de bijbehorende actie wordt uitgevoerd.
-- De onderstaande Select zorgt er dus alleen voor dat
-- indien er geen actueel record bestaat, of een die
-- vandaag is gesloten er een nieuw record wordt gemaakt,
-- hetgeen in Kmd_Update() ook wordt gedaan zodat de tweede
-- insert een foutmelding geeft.
-- Daarom alleen Kmd_Update() aanroepen met een dummy waarde
-- voor ins_kenmerkdeel_key.
--
IF historymode IS NULL
THEN
BEGIN
SELECT DECODE(fac_message_text,'TRUE','1','FALSE','0','0')
INTO v_history_mode
FROM fac_message
WHERE fac_message_code = 'FAC_HISTORYMODE_VALUE';
EXCEPTION
WHEN NO_DATA_FOUND THEN v_history_mode := '0';
END;
ELSE
v_history_mode := historymode;
END IF;
--
Ins.Kmd_Update_Kenmerkdeel(kenmerkdeel_key
,deel_key
,kenmerk_key
,waarde
,v_history_mode
,mselect);
END Ins_Update_Kenmerkdeel;
PROCEDURE Kmd_Insert(p_deel_key IN NUMBER
,p_kenmerk_key IN NUMBER
,p_waarde IN VARCHAR2
,p_historymode IN VARCHAR2) IS
BEGIN
IF p_waarde IS NOT NULL
THEN
INSERT INTO ins_kenmerkdeel
( ins_kenmerk_key
, ins_deel_Key
, ins_kenmerkdeel_waarde)
VALUES(p_kenmerk_key
, p_deel_key
, p_waarde);
END IF;
END Kmd_Insert;
PROCEDURE Kmd_Delete(p_kenmerkdeel_key IN NUMBER
,p_historymode IN VARCHAR2) IS
BEGIN
IF p_historymode = '0'
THEN
--NON HISTORY MODE
DELETE
FROM ins_kenmerkdeel
WHERE ins_kenmerkdeel_key = p_kenmerkdeel_key;
ELSE
--HISTORY MODE
UPDATE ins_kenmerkdeel
SET ins_kenmerkdeel_verwijder = SYSDATE
WHERE ins_kenmerkdeel_key = p_kenmerkdeel_key;
END IF;
END Kmd_Delete;
PROCEDURE Kmd_update(p_kenmerkdeel_key IN NUMBER
,p_waarde IN VARCHAR2
,p_historymode IN VARCHAR2) IS
BEGIN
UPDATE ins_kenmerkdeel
SET ins_kenmerkdeel_waarde = p_waarde
, ins_kenmerkdeel_verwijder = NULL
WHERE ins_kenmerkdeel_key = p_kenmerkdeel_key;
END Kmd_Update;
PROCEDURE Kmd_Update_Kenmerkdeel(kenmerkdeel_key IN NUMBER
,deel_key IN NUMBER
,kenmerk_key IN NUMBER
,waarde IN VARCHAR2
,historymode IN VARCHAR2
,mselect IN VARCHAR2) IS
v_kenmerkdeelkey NUMBER(10);
BEGIN
IF historymode = '0'
THEN
IF waarde IS NOT NULL
THEN
IF kenmerkdeel_key IS NOT NULL AND mselect='0'
THEN
Ins.Kmd_Update(kenmerkdeel_key
,waarde
,historymode);
ELSIF kenmerkdeel_key IS NULL AND mselect='1'
THEN
-- kenmerkdeel vanuit form in mselectmode is null
-- deelkey komt uit fac_selectie daar kan kenmerkdeel niet aan toegevoegd worden.
-- Oplossing : zoek a.h.v. Deelkey en Kenmerkkey de kenmerkdeel_key
-- Bij Insert is kenmerkdeel_key ook NULL, maar dit gaat goed aangezien mselect daar nooit '1' kan zijn.
BEGIN
SELECT ins_kenmerkdeel_Key
INTO v_kenmerkdeelkey
FROM ins_v_aanwezigkenmerkdeel
WHERE ins_deel_key = deel_key
AND ins_kenmerk_key = kenmerk_key;
--
Ins.Kmd_Update(v_kenmerkdeelkey
,waarde
,historymode);
EXCEPTION
WHEN NO_DATA_FOUND THEN
Ins.Kmd_Insert(deel_key
,kenmerk_key
,waarde
,historymode);
END;
ELSE
Ins.Kmd_Insert(deel_key
,kenmerk_key
,waarde
,historymode);
END IF;
ELSE
Ins.Kmd_Delete(kenmerkdeel_key
,historymode);
END IF;
ELSIF historymode = '1'
THEN
DECLARE
-- Zoek alle records voor een gegeven object en kenmerk
-- en zet de meest recente bovenaan.
--
CURSOR c_kenmerkdeel(p_kenmerk_key IN NUMBER
,p_deel_key IN NUMBER) IS
SELECT ins_kenmerkdeel_key
, trunc(ins_kenmerkdeel_aanmaak) ins_kenmerkdeel_aanmaak
, trunc(ins_kenmerkdeel_verwijder) ins_kenmerkdeel_verwijder
FROM ins_kenmerkdeel
WHERE ins_kenmerk_key = p_kenmerk_key
AND ins_deel_key = p_deel_key
ORDER BY ins_kenmerkdeel_key DESC
;
r_kenmerkdeel c_kenmerkdeel%ROWTYPE;
BEGIN
OPEN c_kenmerkdeel(kenmerk_key,deel_key);
FETCH c_kenmerkdeel INTO r_kenmerkdeel;
IF c_kenmerkdeel%NOTFOUND
THEN
-- Voor dit object en kenmerk bestaat nog geen record
-- dus toevoegen. Behalve als de toe te voegen waarde
-- null is, dan wil je niets toevoegen dus dan ook
-- geen actie.
IF waarde IS NOT NULL
THEN
Ins.Kmd_Insert(deel_key
,kenmerk_key
,waarde
,historymode);
END IF;
ELSE
-- Er bestaat een record voor het object en kenmerk.
--
IF waarde IS NOT NULL
THEN
-- Er is een nieuwe waarde voor een bepaald object en kenmerk.
--
IF r_kenmerkdeel.ins_kenmerkdeel_aanmaak <= trunc(sysdate)
AND r_kenmerkdeel.ins_kenmerkdeel_verwijder IS NULL
THEN
-- Het record is nog actueel, dus moet eerst gesloten worden
-- door het als verwijderd te markeren.
--
Ins.Kmd_Delete(r_kenmerkdeel.ins_kenmerkdeel_key
,historymode);
END IF;
--
-- Er bestaat nu tijdelijk geen actueel record meer voor
-- het object en kenmerk !!
--
IF r_kenmerkdeel.ins_kenmerkdeel_aanmaak < trunc(sysdate)
AND ( r_kenmerkdeel.ins_kenmerkdeel_verwijder <= trunc(sysdate)
OR r_kenmerkdeel.ins_kenmerkdeel_verwijder IS NULL)
THEN
-- Het laatste record voor kenmerk bij een object heeft langer
-- dan een dag bestaan. Voeg daarom een nieuwe toe.
--
Ins.Kmd_Insert(deel_key
,kenmerk_key
,waarde
,historymode);
ELSIF r_kenmerkdeel.ins_kenmerkdeel_aanmaak = trunc(sysdate)
THEN
-- Het record voor kenmerk bij een object is vandaag
-- aangemaakt dus wordt er geen nieuwe toegevoegd maar
-- de huidige aangepast.
--
Ins.Kmd_Update(r_kenmerkdeel.ins_kenmerkdeel_key
,waarde
,historymode);
END IF;
ELSE
-- De nieuwe waarde voor het object en kenmerk is leeg, dus
-- moet het als verwijderd gemarkeerd worden.
-- Behalve als er in MSelect-mode gewijzigd wordt.
--
IF mselect = '0'
THEN
Ins.Kmd_Delete(r_kenmerkdeel.ins_kenmerkdeel_key
,historymode);
END IF;
END IF;
END IF;
CLOSE c_kenmerkdeel;
END;
END IF;
END Kmd_Update_Kenmerkdeel;
END Ins;
/
CREATE OR REPLACE FUNCTION INS_F_GetRefWaarde (sk_key IN NUMBER, waarde IN VARCHAR2) RETURN VARCHAR2 IS
sResult VARCHAR2(255);
kolomnaam VARCHAR2(50);
kolomtxt VARCHAR2(50);
objectnaam VARCHAR2(50);
tab_key NUMBER(10);
ttype VARCHAR2(1); --Pseudo(T)able or (V)iew
BEGIN
-- Doel is het resultaat van:
-- select [kolomtxt] from [objectnaam] where [kolomnaam]= waarde
-- of
-- select [kolomtxt] from [objectnaam] where [kolomnaam]= waarde and fac_usrtab_key=tab_key
SELECT RSK.ins_refsrtkenmerk_kolomnaam,
RSK.ins_refsrtkenmerk_kolomtxt,
RSK.ins_refsrtkenmerk_objectnaam,
RSK.fac_usrtab_key,
UT.fac_usrtab_view
INTO kolomnaam, kolomtxt,objectnaam, tab_key, ttype
FROM INS_REFSRTKENMERK RSK , INS_SRTKENMERK SK, FAC_USRTAB UT
WHERE SK.ins_srtkenmerk_key=sk_key
AND RSK.fac_usrtab_key = UT.fac_usrtab_key (+)
AND SK.ins_refsrtkenmerk_key=RSK.ins_refsrtkenmerk_key;
IF tab_key IS NULL OR ttype = 'V' OR ttype IS NULL THEN
-- select [kolomtxt] into sResult from [objectnaam] where [kolomnaam]= waarde
-- maak een cursor/recordgroup oid voor deze query. Precies 1 row resultaat
sResult:='Select '||kolomtxt||' from '||objectnaam||' where '||kolomnaam||'='||waarde;
ELSE
-- select [kolomtxt] from [objectnaam] where [kolomnaam]= waarde and fac_usrtab_key=tab_key
sResult:='Select '||kolomtxt||' from '||objectnaam||' where '||kolomnaam||'='||waarde||' AND fac_usrtab_key = '||TO_CHAR(tab_key);
END IF;
RETURN sResult;
END;
/
#endif //INS
#ifdef FAC
UPDATE FAC_MESSAGE
SET FAC_MESSAGE_TEXT = 'Facilitor 4.26'
WHERE FAC_MESSAGE_CODE = 'FAC_M002';
UPDATE FAC_MESSAGE
SET FAC_MESSAGE_TEXT = 'Welkom bij Facilitor 4.26'
WHERE FAC_MESSAGE_CODE = 'FAC_M035';
DEF_FAC_MESSAGE ('FAC_HISTORYMODE_VALUE','TRUE','TRUE');
CREATE OR REPLACE PACKAGE webfac AS
FUNCTION fac_f_usrrap_query (p_tabelnaam IN VARCHAR2) RETURN VARCHAR2;
FUNCTION fac_f_usrrap_orderby (p_tabelnaam IN VARCHAR2) RETURN VARCHAR2;
END webfac;
/
CREATE OR REPLACE PACKAGE BODY webfac AS
FUNCTION fac_f_usrrap_query (p_tabelnaam VARCHAR2) RETURN VARCHAR2 IS
QueryString VARCHAR2(2000);
Kolomnaam VARCHAR(64);
BEGIN
DECLARE
CURSOR Zoek_label IS
SELECT column_name
, data_type
, data_length
, data_precision
, Column_id
FROM all_tab_columns
WHERE table_name = UPPER(p_tabelnaam)
AND owner = user
ORDER BY COLUMN_ID;
BEGIN
QueryString := 'Select ';
FOR LabelRec in zoek_label LOOP
IF LabelRec.data_type = 'NUMBER'
THEN
QueryString := QueryString ||'to_number(to_char('|| LabelRec.column_name ||',''99999999D9999'')) "'||LabelRec.column_name||'",';
ELSE
IF LabelRec.data_type = 'DATE'
THEN
QueryString := QueryString ||'to_char('|| LabelRec.column_name ||',''MM-DD-YYYY'') "'||LabelRec.column_name||'",';
ELSE
QueryString := QueryString ||' ' || LabelRec.column_name ||',';
END IF;
END IF;
END LOOP;
END;
QueryString := Substr(QueryString,1,(length(QueryString)-1))||' from '|| p_tabelnaam ;
RETURN QueryString;
END fac_f_usrrap_query;
FUNCTION fac_f_usrrap_orderby (p_tabelnaam VARCHAR2) RETURN VARCHAR2 IS
AantalRecords NUMBER(10);
OrderBy VARCHAR2(5);
BEGIN
SELECT count(*)
INTO AantalRecords
FROM all_tab_columns
WHERE table_name = UPPER(p_tabelnaam)
AND owner = user;
--
IF AantalRecords = 1
THEN
OrderBy := '1';
ELSIF AantalRecords = 2
THEN
OrderBy := '1,2';
ELSE
OrderBy := '1,2,3';
END IF;
RETURN ' ORDER BY ' || OrderBy;
END fac_f_usrrap_orderby;
END webfac;
/
#endif //FAC
#ifdef PRS
ALTER TABLE prs_eenheid MODIFY(prs_eenheid_code VARCHAR2(10));
ALTER TABLE prs_eenheid MODIFY(prs_eenheid_upper VARCHAR2(10));
CREATE OR REPLACE VIEW PRS_V_PERSLID_GEGEVENS ( PRS_PERSLID_KEY,
PRS_PERSLID_NAAM, PRS_PERSLID_UPPER, PRS_PERSLID_VOORLETTERS, PRS_PERSLID_VOORNAAM, PRS_PERSLID_INITIALEN,
PRS_PERSLID_INIT_UPPER, PRS_PERSLID_NR, PRS_PERSLID_TELEFOONNR, PRS_PERSLID_OSLOGIN,
PRS_PERSLID_WACHTWOORD, PRS_AFDELING_KEY, PRS_AFDELING_NAAM, PRS_AFDELING_UPPER, PRS_AFDELING_OMSCHRIJVING,
PRS_SRTPERSLID_OMSCHRIJVING, PRS_EENHEID_CODE, PRS_EENHEID_OMSCHRIJVING
) AS SELECT PRS_P.prs_perslid_key,
PRS_P.prs_perslid_naam,
PRS_P.prs_perslid_upper,
PRS_P.prs_perslid_voorletters,
PRS_P.prs_perslid_voornaam,
PRS_P.prs_perslid_initialen,
PRS_P.prs_perslid_init_upper,
PRS_P.prs_perslid_nr,
PRS_P.prs_perslid_telefoonnr,
PRS_P.prs_perslid_oslogin,
PRS_P.prs_perslid_wachtwoord,
PRS_P.prs_afdeling_key,
PRS_A.prs_afdeling_naam,
PRS_A.prs_afdeling_upper,
PRS_A.prs_afdeling_omschrijving,
PRS_S.prs_srtperslid_omschrijving,
PRS_E.prs_eenheid_code,
PRS_E.prs_eenheid_omschrijving
FROM prs_v_aanwezigperslid PRS_P, prs_afdeling PRS_A,
prs_srtperslid PRS_S, prs_eenheid PRS_E
WHERE PRS_P.prs_afdeling_key = PRS_A.prs_afdeling_key (+)
AND PRS_P.prs_srtperslid_key = PRS_S.prs_srtperslid_key
AND PRS_A.prs_eenheid_key = PRS_E.prs_eenheid_key (+);
CREATE_VIEW (prs_v_perslid_filter,PRS_NORMAAL_PRIVILEGE) AS
SELECT PL.prs_perslid_key
, SPL.prs_srtperslid_omschrijving -- Functie
, PL.prs_perslid_telefoonnr -- Telefoon
, SPL.prs_srtperslid_opp -- Functie opp.
, PL.prs_perslid_opp -- Toegestane opp.
, PL.prs_perslid_uurloon -- Uurloon
, AFD.prs_afdeling_kostenplaats -- Kostenplaats
, EEN.prs_eenheid_code prs_afdeling_eenheid -- Business Unit
FROM prs_v_aanwezigperslid PL , prs_v_aanwezigsrtperslid SPL, prs_v_aanwezigafdeling AFD, prs_v_aanwezigeenheid EEN
WHERE PL.prs_srtperslid_key = SPL.prs_srtperslid_key
AND PL.prs_afdeling_key = AFD.prs_afdeling_key (+)
AND AFD.prs_eenheid_key = EEN.prs_eenheid_key (+);
CREATE_VIEW(prs_v_werkplek_gegevens,PRS_NORMAAL_PRIVILEGE)
( prs_werkplek_key
, prs_werkplek_volgnr
, prs_werkplek_omschrijving
, prs_werkplek_opp
, prs_werkplek_module
, alg_ruimte_key
, alg_ruimte_nr
, alg_ruimte_upper_nr
, alg_ruimte_bruto_vloeropp
, alg_verdieping_key
, alg_verdieping_volgnr
, alg_verdieping_omschrijving
, alg_gebouw_key
, alg_gebouw_code
, alg_gebouw_omschrijving
, alg_gebouw_upper
, alg_locatie_key
, prs_werkplek_aanduiding
, prs_werkplek_getekend
, alg_ruimte_omschrijving
, prs_werkplek_vastopp )
AS SELECT PRS_W.prs_werkplek_key
, PRS_W.prs_werkplek_volgnr
, PRS_W.prs_werkplek_omschrijving
, PRS_P_PRS_BepaalWerkplekOpp(PRS_W.prs_werkplek_key
,ALG_R.alg_ruimte_key
,ALG_R.alg_ruimte_bruto_vloeropp
,PRS_W.prs_werkplek_vastopp
,PRS_W.prs_werkplek_opp
,NULL)
, PRS_W.prs_werkplek_module
, ALG_R.alg_ruimte_key
, ALG_R.alg_ruimte_nr
, ALG_R.alg_ruimte_upper_nr
, ALG_R.alg_ruimte_bruto_vloeropp
, ALG_V.alg_verdieping_key
, ALG_V.alg_verdieping_volgnr
, ALG_V.alg_verdieping_omschrijving
, ALG_G.alg_gebouw_key
, ALG_G.alg_gebouw_code
, ALG_G.alg_gebouw_omschrijving
, ALG_G.alg_gebouw_upper
, ALG_G.alg_locatie_key
, ALG_G.alg_gebouw_code ||' - '
|| to_char(ALG_V.alg_verdieping_volgnr) ||' - '
|| ALG_R.alg_ruimte_nr ||'/'
|| to_char(PRS_W.prs_werkplek_volgnr)
, PRS_W.prs_werkplek_getekend
, ALG_R.alg_ruimte_omschrijving
, PRS_W.prs_werkplek_vastopp
FROM all_v_aanwezigwerkplek PRS_W
, alg_ruimte ALG_R
, alg_verdieping ALG_V
, alg_gebouw ALG_G
WHERE ALG_R.alg_verdieping_key = ALG_V.alg_verdieping_key
AND ALG_V.alg_gebouw_key = ALG_G.alg_gebouw_key
AND PRS_W.prs_alg_ruimte_key = ALG_R.alg_ruimte_key;
#endif //PRS
#ifdef MLD
CREATE_VIEW(mld_v_melding_status_gegevens,MLD_NORMAAL_PRIVILEGE) AS
SELECT M.mld_melding_key,
M.mld_melding_status,
S.mld_statuses_omschrijving,
DECODE(mld_melding_status,
1,mld_melding_afgewezen,
2,mld_melding_datum,
3,mld_melding_ingezien,
4,mld_melding_geaccepteerd,
5,mld_melding_afgemeld,
6,mld_melding_verwerkt,
7,mld_melding_geaccepteerd,
NULL) mld_melding_lastdate,
M.mld_melding_datum,
'['||MD.ins_discipline_omschrijving||'/'||SM.mld_stdmelding_omschrijving||'] '||m.mld_melding_omschrijving mld_melding_omschrijving,
AF.prs_afdeling_key,AF.prs_afdeling_omschrijving,
P.prs_perslid_key,P.prs_perslid_naam,
M.mld_alg_onroerendgoed_keys,
L.alg_locatie_code||
DECODE(G.alg_gebouw_code,NULL,'','-'||G.alg_gebouw_code)||
DECODE(G.alg_verdieping_volgnr,NULL,'','-'||G.alg_verdieping_volgnr)||
DECODE(G.alg_ruimte_nr,NULL,'','-'||G.alg_ruimte_nr)||
DECODE(G.alg_terreinsector_code,NULL,'','-'||G.alg_terreinsector_code) alg_plaats_omschrijving,
M.mld_stdmelding_key,
E.prs_eenheid_upper,
AF.prs_eenheid_key,
M.mld_alg_locatie_key,
M.mld_melding_melder_naam,
AF.prs_afdeling_kostenplaats,
M.mld_ins_discipline_key,
P.prs_perslid_upper,
AF.prs_afdeling_upper,
M.mld_melding_username,
G.alg_gebouw_key,
G.alg_verdieping_key,
G.alg_ruimte_key,
P.prs_perslid_voorletters,
P.prs_perslid_voornaam
FROM mld_melding M,
mld_statuses S,
ins_tab_discipline MD,
mld_stdmelding SM,
prs_afdeling AF,
prs_perslid P,
prs_eenheid E,
alg_v_allonrgoed_gegevens G,
alg_locatie L
WHERE M.mld_melding_status=S.mld_statuses_key
AND M.mld_ins_discipline_key=MD.ins_discipline_key
AND M.mld_stdmelding_key=SM.mld_stdmelding_key
AND M.prs_afdeling_key=AF.prs_afdeling_key (+)
AND M.prs_perslid_key=P.prs_perslid_key (+)
AND AF.prs_eenheid_key=E.prs_eenheid_key (+)
AND M.mld_alg_locatie_key=L.alg_locatie_key (+)
AND M.mld_alg_onroerendgoed_keys=G.alg_onroerendgoed_keys (+);
#endif //MLD
#ifdef RES
-- FSN118
CREATE_TABLE(res_statuses, RES_NORMAAL_PRIVILEGE)
( res_statuses_key
NUMBER (10)
CONSTRAINT res_k_res_statuses_key PRIMARY KEY,
res_statuses_omschrijving
VARCHAR2 (30)
);
INSERT INTO res_statuses VALUES ( 1, 'Afgewezen');
INSERT INTO res_statuses VALUES ( 2, 'Ingevoerd');
INSERT INTO res_statuses VALUES ( 3, 'Ingezien');
INSERT INTO res_statuses VALUES ( 4, 'Geaccepteerd');
INSERT INTO res_statuses VALUES ( 5, 'Uitgevoerd');
INSERT INTO res_statuses VALUES ( 6, 'Verwerkt');
INSERT INTO res_statuses VALUES ( 7, 'Uitgegeven');
ALTER TABLE res_rsv_deel
ADD res_rsv_deel_status
NUMBER(2)
DEFAULT 2
CONSTRAINT res_r_res_status_key REFERENCES res_statuses;
ALTER TABLE res_rsv_artikel
ADD res_rsv_artikel_status
NUMBER(2)
DEFAULT 2
CONSTRAINT res_r_res_status_key2 REFERENCES res_statuses;
ALTER TABLE res_reservering
ADD res_reservering_status_key
NUMBER(2)
DEFAULT 2
CONSTRAINT res_r_res_status_key3 REFERENCES res_statuses;
DEFINIEER_VIEW_AANWEZIG(res_rsv_artikel, res_rsv_artikel_verwijder,
res_v_aanwezigrsv_artikel, RES_NORMAAL_PRIVILEGE);
DEFINIEER_VIEW_AANWEZIG(res_rsv_deel, res_rsv_deel_verwijder,
res_v_aanwezigrsv_deel, RES_NORMAAL_PRIVILEGE);
DEFINIEER_VIEW_AANWEZIG(res_reservering, res_reservering_verwijder,
res_v_aanwezigreservering, RES_NORMAAL_PRIVILEGE);
UPDATE res_reservering
SET res_reservering_status_key = 5
WHERE res_reservering_status = 'Afgemeld';
UPDATE res_reservering
SET res_reservering_status_key = 2
WHERE res_reservering_status <> 'Afgemeld';
UPDATE res_rsv_artikel A
SET res_rsv_artikel_status =
(SELECT res_reservering_status_key
FROM res_reservering
WHERE res_reservering_key = A.res_reservering_key)
WHERE res_rsv_artikel_status IS NULL;
UPDATE res_rsv_deel D
SET res_rsv_deel_status =
(SELECT res_reservering_status_key
FROM res_reservering
WHERE res_reservering_key = D.res_reservering_key)
WHERE res_rsv_deel_status IS NULL;
#endif //RES
#ifdef BES
CREATE OR REPLACE FUNCTION FAC_Bestelling_Items (besKey in number) RETURN VARCHAR2 AS
ret VARCHAR2(512);
first NUMBER;
last NUMBER;
CURSOR query(resKey NUMBER) IS
SELECT BI.BES_BESTELLING_ITEM_AANTAL ||'x '||
S.INS_SRTDEEL_OMSCHRIJVING||' ('||S.INS_SRTDEEL_EENHEID ||') ' BESITEMDSC
FROM BES_BESTELLING B, BES_BESTELLING_ITEM BI,
INS_SRTDEEL S, INS_SRTGROEP G, INS_TAB_DISCIPLINE D
WHERE B.BES_BESTELLING_KEY = besKey
AND B.BES_BESTELLING_KEY = BI.BES_BESTELLING_KEY
AND BI.ins_srtdeel_key = S.ins_srtdeel_key
AND S.ins_srtgroep_key = G.ins_srtgroep_key
AND G.ins_discipline_key = D.ins_discipline_key
ORDER BY S.INS_SRTDEEL_OMSCHRIJVING;
BEGIN
ret := null;
first := 0;
last:= 0;
FOR besitem_rec IN query(besKey) LOOP
IF first = 0 THEN
BEGIN
ret := besitem_rec.BESITEMDSC;
first := 1;
END;
ELSE
IF last = 0 THEN
IF LENGTH(ret)+LENGTH(besitem_rec.BESITEMDSC)<(512-3) THEN
ret := ret || CHR(10) || besitem_rec.BESITEMDSC;
ELSE
ret := ret || CHR(10) || '...';
last := 1;
END IF;
END IF;
END IF;
END LOOP;
RETURN ret;
END;
/
CREATE OR REPLACE FUNCTION FAC_Bestelopdr_Items (besKey IN NUMBER) RETURN VARCHAR2 AS
ret VARCHAR2(512);
first NUMBER;
last NUMBER;
CURSOR query(resKey NUMBER) IS
SELECT BI.BES_BESTELOPDR_ITEM_AANTAL ||'x '||
S.INS_SRTDEEL_OMSCHRIJVING||' ('||S.INS_SRTDEEL_EENHEID ||') ' BESITEMDSC
from BES_BESTELOPDR B, BES_BESTELOPDR_ITEM BI,
INS_SRTDEEL S, INS_SRTGROEP G,
INS_TAB_DISCIPLINE D
WHERE B.BES_BESTELOPDR_KEY = besKey
AND B.BES_BESTELOPDR_KEY = BI.BES_BESTELOPDR_KEY
AND BI.ins_srtdeel_key = S.ins_srtdeel_key
AND S.ins_srtgroep_key = G.ins_srtgroep_key
AND G.ins_discipline_key = D.ins_discipline_key;
BEGIN
ret := null;
first := 0;
last:= 0;
FOR besitem_rec IN query(besKey) LOOP
IF first = 0 THEN
BEGIN
ret := besitem_rec.BESITEMDSC;
first := 1;
END;
ELSE
IF last = 0 THEN
IF LENGTH(ret)+LENGTH(besitem_rec.BESITEMDSC)<(512-3) THEN
ret := ret || CHR(10) || besitem_rec.BESITEMDSC;
ELSE
ret := ret || CHR(10) || '...';
last := 1;
END IF;
END IF;
END IF;
END LOOP;
RETURN ret;
END;
/
#endif //BES
#ifdef BEZ
#endif //BEZ
#ifdef CNT
#endif //CNT
#ifdef WEB
ALTER TABLE web_helpsystem
ADD help_modes varchar2(100);
CREATE OR REPLACE TRIGGER web_t_web_mes_on_changeres
AFTER UPDATE ON RES_RESERVERING
FOR EACH ROW
BEGIN
DECLARE mes VARCHAR2(255);
actkey NUMBER;
code VARCHAR2(6);
keepmes NUMBER;
BEGIN
code := null;
IF :old.RES_RESERVERING_STATUS = 'Optie' AND :new.RES_RESERVERING_STATUS = 'Definitief' THEN
code := 'BEVRES';
-- ELSIF :old.RES_RESERVERING_AANMAAK IS NOT NULL THEN
-- code := 'UPDRES';
END IF;
IF code IS NOT NULL THEN
BEGIN
SELECT web_user_mess_text_dsc, web_user_mess_actions_key
INTO mes, actkey
FROM web_user_mess_text
WHERE web_user_mess_text_code = code;
EXCEPTION
WHEN NO_DATA_FOUND THEN NULL;
END;
IF actkey IS NOT NULL
THEN
INSERT INTO web_user_messages
(prs_perslid_key_sender,
prs_perslid_key_receiver,
web_user_mess_actions_key,
web_user_mess_dsc,
web_user_mess_action_status,
web_user_mess_action_params) VALUES
(NULL,
:new.RES_RESERVERING_USER_KEY,
actkey,
mes,
1,
:new.RES_RESERVERING_KEY);
END IF;
END IF;
keepmes := 5;
DELETE FROM web_user_messages
WHERE web_user_mess_action_datum < (SYSDATE - keepmes);
END;
END;
/
#endif //WEB
#ifdef SCH
#endif //SCH
#ifdef PRA
#endif //PRA