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