-- -- $Id$ -- -- Script containing customer specific sql statements for the FACILITOR database DEFINE thisfile = 'sinn.SQL' DEFINE dbuser = 'SINN' SET ECHO ON SET DEFINE ON COLUMN fcltlogfile NEW_VALUE fcltlogfile NOPRINT; COLUMN fcltcusttxt NEW_VALUE fcltcusttxt NOPRINT; WHENEVER SQLERROR CONTINUE; SELECT adm.getscriptspoolfile('&thisfile') AS fcltlogfile FROM DUAL; SPOOL &fcltlogfile WHENEVER SQLERROR EXIT; SELECT adm.checkscriptcust('&dbuser') AS fcltcusttxt FROM DUAL; WHENEVER SQLERROR CONTINUE; --------------------------------------- PROMPT &fcltcusttxt --------------------------------------- SET DEFINE OFF ------ payload begin ------ CREATE OR REPLACE FUNCTION sinn_get_kenmerkwaarde ( p_kenmerk_type VARCHAR2, p_kenmerkdomein_key NUMBER, p_kenmerk_waarde VARCHAR2) RETURN VARCHAR2 AS v_result VARCHAR2(4000); BEGIN IF p_kenmerk_type = 'R' OR p_kenmerk_type = 'S' THEN v_result := fac.getdomeinwaarde (p_kenmerkdomein_key, p_kenmerk_waarde); ELSIF p_kenmerk_type = 'D' THEN v_result := TO_CHAR (fac.safe_to_date (p_kenmerk_waarde, 'dd-mm-yyyy'), 'yyyy-mm-dd'); ELSE v_result := p_kenmerk_waarde; END IF; return v_result; END; / CREATE OR REPLACE FUNCTION sinn_get_kenmerk (p_module IN VARCHAR2, p_kenmerk_key IN NUMBER, p_link_key IN NUMBER) RETURN VARCHAR2 AS v_kenmerk_type mld_srtkenmerk.mld_srtkenmerk_kenmerktype%TYPE; v_kenmerk_waarde mld_kenmerkmelding.mld_kenmerkmelding_waarde%TYPE; v_kenmerkdomein_key fac_kenmerkdomein.fac_kenmerkdomein_key%TYPE; v_kenmerk_niveau ins_kenmerk.ins_kenmerk_niveau%TYPE; BEGIN CASE p_module WHEN 'MLD' THEN SELECT mld_srtkenmerk_kenmerktype, sk.fac_kenmerkdomein_key, km.mld_kenmerkmelding_waarde INTO v_kenmerk_type, v_kenmerkdomein_key, v_kenmerk_waarde FROM mld_v_aanwezigkenmerkmelding km, mld_kenmerk k, mld_srtkenmerk sk WHERE km.mld_melding_key = p_link_key AND km.mld_kenmerk_key = p_kenmerk_key AND km.mld_kenmerk_key = k.mld_kenmerk_key AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key; WHEN 'CNT' THEN SELECT cnt_srtkenmerk_kenmerktype, sk.fac_kenmerkdomein_key, kc.cnt_kenmerkcontract_waarde INTO v_kenmerk_type, v_kenmerkdomein_key, v_kenmerk_waarde FROM cnt_kenmerkcontract kc, cnt_kenmerk k, cnt_srtkenmerk sk WHERE kc.cnt_contract_key = p_link_key AND kc.cnt_kenmerk_key = p_kenmerk_key AND kc.cnt_kenmerk_key = k.cnt_kenmerk_key AND k.cnt_srtkenmerk_key = sk.cnt_srtkenmerk_key; WHEN 'ALG' THEN SELECT alg_kenmerk_kenmerktype, k.fac_kenmerkdomein_key, aogk.alg_onrgoedkenmerk_waarde INTO v_kenmerk_type, v_kenmerkdomein_key, v_kenmerk_waarde FROM alg_onrgoedkenmerk aogk, alg_kenmerk k WHERE aogk.alg_onrgoed_key = p_link_key AND aogk.alg_kenmerk_key = p_kenmerk_key AND aogk.alg_kenmerk_key = k.alg_kenmerk_key; WHEN 'INS' THEN SELECT k.ins_kenmerk_niveau INTO v_kenmerk_niveau FROM ins_kenmerk k WHERE ins_kenmerk_key = p_kenmerk_key; IF v_kenmerk_niveau = 'C' THEN SELECT sk.ins_srtkenmerk_kenmerktype, sk.fac_kenmerkdomein_key, ikds.ins_kmdeelsrtcontr_waarde INTO v_kenmerk_type, v_kenmerkdomein_key, v_kenmerk_waarde FROM ins_kmdeelsrtcontr ikds, ins_kenmerk k, ins_srtkenmerk sk WHERE ikds.ins_deelsrtcontrole_key = p_link_key AND ikds.ins_kmdeelsrtcontr_verwijder IS NULL AND ikds.ins_kenmerk_key = p_kenmerk_key AND ikds.ins_kenmerk_key = k.ins_kenmerk_key AND k.ins_srtkenmerk_key = sk.ins_srtkenmerk_key; ELSE SELECT sk.ins_srtkenmerk_kenmerktype, sk.fac_kenmerkdomein_key, ikd.ins_kenmerkdeel_waarde INTO v_kenmerk_type, v_kenmerkdomein_key, v_kenmerk_waarde FROM ins_kenmerkdeel ikd, ins_kenmerk k, ins_srtkenmerk sk WHERE ikd.ins_deel_key = p_link_key AND ikd.ins_kenmerkdeel_verwijder IS NULL AND ikd.ins_kenmerk_key = p_kenmerk_key AND ikd.ins_kenmerk_key = k.ins_kenmerk_key AND k.ins_srtkenmerk_key = sk.ins_srtkenmerk_key; END IF; END CASE; RETURN sinn_get_kenmerkwaarde (v_kenmerk_type, v_kenmerkdomein_key, v_kenmerk_waarde); END; / -- Mail2Melding - Basis uit SVRZ overgenomen: --- M2M : std_mld_key= 1 (Melding via mail - Nog te rubriceren) CREATE OR REPLACE PROCEDURE sinn_processemail ( pfrom IN VARCHAR2, pto IN VARCHAR2, psubject IN VARCHAR2, pbody IN VARCHAR2, psessionid IN VARCHAR2, pemailkey IN NUMBER) AS c_onbekend_key NUMBER (10) := 41 ; -- Melder onbekend -- c_std_mld_key NUMBER (10) := 1 ; -- Melding via mail - Nog te rubriceren -- c_locatie_key NUMBER (10) := 57 ; -- NOG GOED VULLEN !!!! v_prs_werkplek_key NUMBER (10); v_locatie_key NUMBER (10); v_gebouw_key NUMBER (10); v_stdmelding_key NUMBER (10); v_errormsg VARCHAR2 (1000); oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); v_exist_ticket VARCHAR2 (255) := ''; v_perslid_key NUMBER (10); v_kostenplaats_key NUMBER (10); v_discipline_key NUMBER (10); v_melding_key NUMBER (10); v_folder_kkey NUMBER (10); v_count NUMBER (10); v_count_wp NUMBER (10); v_fac_result_from VARCHAR2 (250); v_fac_result_fromaddr VARCHAR2 (250); v_fw_from VARCHAR2 (1000) := ''; v_from_string VARCHAR2 (1000) := NULL; v_voor_at VARCHAR2 (1000) := ''; v_na_at VARCHAR2 (1000) := ''; BEGIN CASE WHEN UPPER (pto) LIKE 'SERVICECENTRUM@%' THEN -- 1. HANDMATIG doorgestuurd vanuit facilitair@sinnekinderopvang.nl -- Voorbeeld SINNE: Van: Annette Grannetia -- Dus eerst op zoek naar eerste VAN-regel v_from_string := SUBSTR(pbody, REGEXP_INSTR(pbody,'Van:|From:|E-mail:',1,1), INSTR(pbody,CHR(10),REGEXP_INSTR(pbody,'Van:|From:|E-mail:',1,1),1)-REGEXP_INSTR(pbody,'Van:|From:|E-mail:',1,1)) ; -- Als deze bestaat dan gaan we via die kant het from-adres-bebepalen IF v_from_string IS NOT NULL AND INSTR(v_from_string,'@')>0 THEN IF INSTR(v_from_string, '<',1,1)>0 THEN v_na_at := SUBSTR(v_from_string, INSTR(v_from_string,'@',1,1)+1, INSTR(v_from_string,'.nl')+3 - INSTR(v_from_string,'@',1,1)-1) ; v_voor_at := SUBSTR (v_from_string, INSTR (v_from_string, '<',1,1) + 1, INSTR (v_from_string, '@',1,1) - INSTR (v_from_string, '<',1,1) -1); v_fw_from := v_voor_at || '@' || v_na_at; ELSE v_na_at := SUBSTR(v_from_string, INSTR(v_from_string,'@',1,1)+1, REGEXP_INSTR(v_from_string,'$')-INSTR(v_from_string,'@',1,1)-1) ; v_voor_at := SUBSTR (v_from_string, INSTR (v_from_string, ':',1,1) + 2, INSTR (v_from_string, '@',1,1) - INSTR (v_from_string, ':',1,1) -2); v_fw_from := v_voor_at || '@' || v_na_at; END IF; ELSE -- 2. AUTOMATISCH doorgestuurde mail OF geen "Van: met email-adres" in de body. Dan dus maar terugvallen op de v_fromaddr... SELECT fac_result_waarde INTO v_fac_result_fromaddr FROM fac_result WHERE fac_result_sessionid = psessionid AND fac_result_naam = 'fromaddr' ; v_fac_result_fromaddr := REPLACE(REPLACE(v_fac_result_fromaddr,'>',''),'<','') ; v_fw_from := v_fac_result_fromaddr; END IF; v_fw_from := SUBSTR (v_fw_from, 1, 50); -- Bepaal de melder/noteur op basis van e-mail adres zoals in pfrom? v_errormsg := 'Fout bepalen melder ' || COALESCE (pfrom, '???'); SELECT COUNT (*), max(prs_perslid_key) INTO v_count, v_perslid_key FROM prs_v_aanwezigperslid WHERE UPPER (prs_perslid_email) LIKE UPPER (v_fw_from) || '%' AND v_fw_from IS NOT NULL; -- Als er persoon gevonden is, dan ff checken of er ook werkplekkoppelingen onder zijn aangemaakt IF v_count >= 1 THEN SELECT COUNT (*) INTO v_count_wp FROM prs_perslidwerkplek WHERE prs_perslid_key = v_perslid_key; END IF; -- Als er persoon gevonden is, dan ff checken of er op gekoppelde Afdeling ook een kostenplaats is gekoppeld IF v_count >= 1 THEN SELECT MIN(a.prs_kostenplaats_key) INTO v_kostenplaats_key FROM prs_v_aanwezigperslid p, prs_afdeling a WHERE prs_perslid_key = v_perslid_key AND p.prs_afdeling_key = a.prs_afdeling_key ; END IF; -- Locatie erbij halen IF v_count >= 1 AND v_count_wp > 0 THEN SELECT p.prs_perslid_key, MIN (wpg.prs_werkplek_key) INTO v_perslid_key, v_prs_werkplek_key FROM prs_v_aanwezigperslid p, prs_v_werkplekperslid_gegevens wpg WHERE p.prs_perslid_key = v_perslid_key AND p.prs_perslid_key = wpg.prs_perslid_key GROUP BY p.prs_perslid_key; IF v_prs_werkplek_key IS NOT NULL THEN SELECT v.alg_locatie_key, v.alg_gebouw_key INTO v_locatie_key, v_gebouw_key FROM prs_werkplek wp, alg_v_onroerendgoed_gegevens v WHERE wp.prs_alg_ruimte_key = v.alg_onroerendgoed_keys AND prs_werkplek_key = v_prs_werkplek_key; END IF; END IF; -- Geen werkplek of Melder onbekend - Dan melding op locatie_key 4 (Servicecentrum Sixmastraat 3) IF (v_count >= 1 AND v_count_wp = 0) OR v_count = 0 THEN v_locatie_key := 57; -- vullen met juiste key v_gebouw_key := 67; END IF; -- Melder kan niet bepaald worden, dus inlezen onder 'Melder onbekend (M2M)' -- Op deze 'Melder onbekend' is aan voorkant wel afdeling en bijbehorende kostenplaats gekoppeld. Deze kp halen we er daarom nu ook bij IF v_count = 0 THEN SELECT p.prs_perslid_key, a.prs_kostenplaats_key INTO v_perslid_key, v_kostenplaats_key FROM prs_v_aanwezigperslid p, prs_afdeling a WHERE p.prs_afdeling_key = a.prs_afdeling_key AND p.prs_perslid_key = c_onbekend_key; END IF; v_errormsg := 'Fout bepalen bestaande melding'; v_exist_ticket := psubject; IF REGEXP_INSTR (v_exist_ticket, '\d') > 0 THEN v_exist_ticket := SUBSTR (v_exist_ticket, REGEXP_INSTR (v_exist_ticket, '\d')) || 'x'; -- Gedeelte vanaf eerste cijfer in v_exist_ticket plus 'x'! v_exist_ticket := SUBSTR (v_exist_ticket, 1, REGEXP_INSTR (v_exist_ticket, '\D') - 1); -- Gedeelte tot eerste niet-cijfer in v_exist_ticket! ELSE v_exist_ticket := 'x'; END IF; SELECT COUNT (*) INTO v_count FROM mld_melding WHERE mld_melding_key = fac.safe_to_number (v_exist_ticket); -- Om te voorkomen dat huisnummers in het Onderwerp resulteren in het -- toevoegen van Notities, dit alleen doen voor nummers > 10000! IF v_count = 1 AND fac.safe_to_number (v_exist_ticket) > 10000 THEN -- Notitie bij bestaande melding! SELECT mld_stdmelding_key, mld_melding_key INTO v_stdmelding_key, v_melding_key FROM mld_melding WHERE mld_melding_key = fac.safe_to_number (v_exist_ticket); v_errormsg := 'Fout toevoegen notitie'; INSERT INTO mld_melding_note (mld_melding_key, prs_perslid_key, mld_melding_note_omschrijving, mld_melding_note_flag) VALUES (v_melding_key, v_perslid_key, pfrom || CHR (13) || CHR (10) || psubject || CHR (13) || CHR (10) || SUBSTR (pbody, 1, 2000), 0); INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde) VALUES (psessionid, 'maillog', 'Notitie onder exist-melding ' || v_melding_key); -- Vlaggetjes zetten zoals mld_edit_note.asp dat doet! UPDATE mld_melding SET mld_melding_actiecode = 1 + 128 -- BO + Attentie WHERE mld_melding_key = v_melding_key; ELSE -- Nieuwe melding! -- Bepaal de afgesproken soortmelding met key= 1 Melding via mail - Nog te rubriceren v_errormsg := 'Fout bepalen soortmelding'; SELECT mld_ins_discipline_key, mld_stdmelding_key INTO v_discipline_key, v_stdmelding_key FROM mld_stdmelding WHERE mld_stdmelding_key = 1; -- Key = 1 voor Melding via mail - Nog te rubriceren -- Suggested extensions: -- - Check for MLDUSE-write autorisations -- - Parse the subject to find the appropriate stdmelding, if uniquely possible -- - Append (as a note?) to an existing melding if #key is found in the subject v_errormsg := 'Fout toevoegen melding'; INSERT INTO mld_melding (mld_melding_module, mld_meldbron_key, mld_alg_locatie_key, mld_alg_onroerendgoed_keys, mld_melding_datum, mld_melding_omschrijving, mld_stdmelding_key, mld_melding_t_uitvoertijd, prs_kostenplaats_key, prs_perslid_key, prs_perslid_key_voor, mld_melding_status, mld_melding_spoed, mld_melding_onderwerp, mld_melding_behandelaar2_key, mld_ins_discipline_key) VALUES ('MLD', 4, -- email v_locatie_key, v_gebouw_key, --v_onrgoed_keys, SYSDATE, 'From-adres: ' || v_fw_from || CHR (13) || CHR (10) || SUBSTR (pbody, 1, 2000), v_stdmelding_key, NULL, v_kostenplaats_key, v_perslid_key, v_perslid_key, NULL, 3, -- prio normaal SUBSTR (psubject, 1, 80), NULL, NULL) RETURNING mld_melding_key INTO v_melding_key; mld.setmeldingstatus (v_melding_key, 2, v_perslid_key); INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde) VALUES (psessionid, 'maillog', 'Geregistreerd onder melding ' || v_melding_key); END IF; -- Find the lowest volgnummer of the Folder-flexfield. SELECT MIN (k1.mld_kenmerk_key) INTO v_folder_kkey FROM mld_stdmelding sm1, ins_tab_discipline td1, mld_kenmerk k1, mld_srtkenmerk sk1 WHERE sm1.mld_stdmelding_key = v_stdmelding_key AND sm1.mld_ins_discipline_key = td1.ins_discipline_key AND k1.mld_kenmerk_verwijder IS NULL AND k1.mld_srtkenmerk_key = sk1.mld_srtkenmerk_key AND sk1.mld_srtkenmerk_kenmerktype = 'M' AND ((k1.mld_stdmelding_key = sm1.mld_stdmelding_key AND k1.mld_kenmerk_niveau = 'S') OR (k1.mld_stdmelding_key = td1.ins_discipline_key AND k1.mld_kenmerk_niveau = 'D') OR (k1.mld_stdmelding_key = td1.ins_srtdiscipline_key AND k1.mld_kenmerk_niveau = 'T') OR (k1.mld_kenmerk_niveau = 'A') ) AND NOT EXISTS (SELECT 1 FROM mld_stdmelding sm2, ins_tab_discipline td2, mld_kenmerk k2, mld_srtkenmerk sk2 WHERE sm2.mld_stdmelding_key = v_stdmelding_key AND sm2.mld_ins_discipline_key = td2.ins_discipline_key AND k2.mld_kenmerk_verwijder IS NULL AND k2.mld_srtkenmerk_key = sk2.mld_srtkenmerk_key AND sk2.mld_srtkenmerk_kenmerktype = 'M' AND ((k2.mld_stdmelding_key = sm2.mld_stdmelding_key AND k2.mld_kenmerk_niveau = 'S') OR (k2.mld_stdmelding_key = td2.ins_discipline_key AND k2.mld_kenmerk_niveau = 'D') OR (k2.mld_stdmelding_key = td2.ins_srtdiscipline_key AND k2.mld_kenmerk_niveau = 'T') OR (k1.mld_kenmerk_niveau = 'A') ) AND k2.mld_kenmerk_volgnummer < k1.mld_kenmerk_volgnummer); IF v_folder_kkey IS NOT NULL THEN INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde) VALUES (psessionid, 'kenmerkpath', 'MLD\M' || TO_CHAR (TRUNC (v_melding_key / 1000), 'FM0000') || '___\M' || v_melding_key || '\' || v_folder_kkey || '\'); -- originele email wordt opgeslagen bij de melding INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde) VALUES (psessionid, 'kenmerkorgmailpath', 'MLD\M' || TO_CHAR (TRUNC (v_melding_key / 1000), 'FM0000') || '___\M' || v_melding_key || '\' || v_folder_kkey || '\'); END IF; ELSE INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde) VALUES (psessionid, 'errormsg', 'Ontvanger ongeldig - Neem contact op met uw systeembeheerder '); END CASE; EXCEPTION WHEN OTHERS THEN oracle_err_num := SQLCODE; oracle_err_mes := SUBSTR (SQLERRM, 1, 200); v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')'; fac.writelog ('PROCESSEMAIL', 'E', 'BLOS_processemail afgebroken!', '[' || pfrom || '] ' || v_errormsg); INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde) VALUES (psessionid, 'errormsg', 'Database fout - Neem contact op met uw systeembeheerder '); COMMIT; END; / -- Basisview en rapportview voor de telefoon-objecten mobiel CREATE OR REPLACE VIEW SINN_V_TELEFOONNR_KLANTOBJECT ( PRS_PERSLID_KEY, PRS_NAAM, SOORT, SOORT_KEY, NUMMER_OBJECT, INS_DEEL_KEY, INS_DEEL_AANMAAK, MOBIELNR_HUIDIG ) AS SELECT p.prs_perslid_key, prs_perslid_naam || ' (' || prs_perslid_voornaam || ')' AS naam_werknemer, sd.ins_srtdeel_omschrijving, sd.ins_srtdeel_key, d.ins_deel_upper, d.ins_deel_key, d.ins_deel_aanmaak, p.prs_perslid_mobiel FROM prs_perslid p, ins_deel d, ins_srtdeel sd, prs_v_aanwezigafdeling v WHERE p.prs_perslid_key = d.ins_alg_ruimte_key AND d.ins_srtdeel_key = 22 -- Mobiele telefoonnr's AND d.ins_alg_ruimte_type = 'P' AND d.ins_deel_verwijder IS NULL AND d.ins_deel_actief = 1 AND ( d.ins_deel_vervaldatum IS NULL OR TRUNC (d.ins_deel_vervaldatum) > TRUNC (SYSDATE)) AND d.ins_srtdeel_key = sd.ins_srtdeel_key AND p.prs_perslid_verwijder IS NULL AND p.prs_afdeling_key = v.prs_afdeling_key AND v.prs_bedrijf_key = 21 -- Personen binnen bedrijf Sinne Kinderopvang ; CREATE OR REPLACE PROCEDURE sinn_import_perslid (p_import_key IN NUMBER) AS oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); v_errormsg VARCHAR2 (400); v_errorhint VARCHAR2 (400); v_aantal_in_fclt NUMBER; -- overige variabelen v_prs_afdeling_key NUMBER(10); c_prs_afdeling_key NUMBER(10) := 62 ; -- Fallback-afdeling 'ONBEKEND_SINN' v_alg_locatie_key NUMBER(10); v_alg_locatie_code VARCHAR2(10); v_alg_gebouw_key NUMBER(10); v_alg_gebouw_code VARCHAR2(12); v_alg_verdieping_key NUMBER(10); v_alg_verdieping_volgnr NUMBER(3); v_alg_ruimte_key NUMBER(10); v_alg_ruimte_nr VARCHAR2(20); CURSOR c_afd IS SELECT fac_imp_file_index, prs_kenmerk1, prs_afdeling_naam FROM fac_imp_perslid WHERE fac_import_key = p_import_key ; CURSOR c_loc IS SELECT fac_imp_file_index, prs_kenmerk4 FROM fac_imp_perslid WHERE fac_import_key = p_import_key ; CURSOR c_mob IS SELECT fac_imp_file_index, i.prs_perslid_oslogin, p.prs_perslid_key, v.ins_deel_key, SUBSTR(v.nummer_object,1,15) nummer_object, p.prs_perslid_mobiel, p.prs_perslid_telefoonnr FROM fac_imp_perslid i, prs_perslid p, sinn_v_telefoonnr_klantobject v WHERE fac_import_key = p_import_key AND i.prs_perslid_oslogin = p.prs_perslid_oslogin AND p.prs_perslid_verwijder IS NULL AND p.prs_perslid_key = v.prs_perslid_key (+) AND (v.ins_deel_key IS NULL OR v.ins_deel_key IN (select min(ins_deel_key) from sinn_v_telefoonnr_klantobject where prs_perslid_key = p.prs_perslid_key)) ; BEGIN -- Het aangeleverde bestand heeft de gegevens komma gescheiden ipv ; v_errorhint := 'Delimiter goed zetten'; UPDATE fac_imp_file SET fac_imp_file_line = REPLACE (fac_imp_file_line, ',', ';') WHERE fac_import_key = p_import_key; -- Het aangeleverde bestand heeft aanhalingstekens om de invoervelden.. UPDATE fac_imp_file SET fac_imp_file_line = REPLACE (fac_imp_file_line, '"', '') WHERE fac_import_key = p_import_key; v_errorhint := 'Generieke update'; -- De sequence array staat beschreven in PRS_PAC.SRC bij de prs.import_perslid procedure -- Afdeling is verplicht veld (nr7) - Niet altijd gevuld, dus tijdelijk gaan we die vullen met GebruikerLocatie, wamt anders komt dit record dus niet door de IMPORT! --- Afdelingsnaam uit CSV (Department) wordt op kenmerk1 gevuld (nr27) en later gebruikt om de juiste afdeling te koppelen -- Naam is ook verplicht veld (nr8) - Ook deze niet altijd goed gevuld in CSV en dus deze ook eerst vullen met GebruikerLocatie en in kenmerk2 (nr28) wordt uit csv de Surname gezet -- Functie is ook verplicht veld (nr21) - Omdat deze ook niet altijd gevuld is in CSV gaan we deze ook vullen met UserPrincipalName en in kenmerk3 (nr29) wordt uit csv de JobTitle gezet -- Locatie uit CSV (PhysicalDeliveryOfficeName) wordt op kenmerk4 gevuld (nr30) en later gebruikt om juiste werkplek-koppeling te maken -- Login (nr 22) wordt bij de import nog wel uit het bestand gehaald 3e kolom, maar later omgezet naar emailadres. -- UserPRincipalName wordt gevuld op Kenmerk5 - Om later records op te deleten (@friesekleintjes.nl) prs.import_perslid ( p_import_key, '0;0;0;0;0;0;1;1;0;3;' || '0;0;0;0;0;0;0;5;0;9;' || '1;0;0;0;0;0;7;4;6;8;' || '2;0;0;0;0;0;0;0;0;0;' || '0;0;0;0;0;0', 'Country;UserPrincipalName;GivenName;Surname;Mail;JobTitle;Department;PhysicalDeliveryOfficeName;EmployeeId%'); -- Country;UserPrincipalName;GivenName;Surname;Mail;JobTitle;Department;PhysicalDeliveryOfficeName;EmployeeId -- DEF. BESTAND bij SINN : "Country","UserPrincipalName","GivenName","Surname","Mail","JobTitle","Department","PhysicalDeliveryOfficeName","EmployeeId" v_errorhint := 'Login afleiden van emailadres'; -- Loginnaam afleiden van emailadres UPDATE fac_imp_perslid SET prs_perslid_oslogin = UPPER((SUBSTR (prs_perslid_email, 0, INSTR (prs_perslid_email, '@') - 1))) WHERE (UPPER (prs_perslid_email) LIKE '%SINNEKINDEROPVANG.NL' OR UPPER (prs_perslid_email) LIKE '%FRIESEKLEINTJES.NL') AND prs_perslid_email IS NOT NULL AND LENGTH((SUBSTR (prs_perslid_email, 0, INSTR (prs_perslid_email, '@') - 1))) <=30 ; v_errorhint := 'Delete record op basis klantregels'; -- Delete uit AD SINN - Opschoning -- Functie: “gedeeld postvak”, “generiek account”, “OC”, “RvT”, "Resources" of leeg -- UserPrincipalName afwijkend @sinnekinderopvang.nl DELETE fac_imp_perslid WHERE UPPER (prs_kenmerk3) IN ('GEDEELD POSTVAK','GENERIEK ACCOUNT', 'OC', 'RVT', 'RESOURCES') OR prs_kenmerk3 IS NULL; DELETE fac_imp_perslid WHERE UPPER (prs_kenmerk5) NOT LIKE '%SINNEKINDEROPVANG.NL'; v_errorhint := 'Functie goed vullen'; -- Functie is niet altijd gevuld, eerst gevuld met Gebruikerslocatie, nu vullen met kenmerk3 (of 'Onbekend'). UPDATE fac_imp_perslid SET prs_srtperslid_omschrijving = DECODE (prs_kenmerk3, NULL, 'Onbekend', prs_kenmerk3); v_errorhint := 'Naam goed vullen'; -- Naam is niet altijd gevuld, eerst gevuld met Gebruikerslocatie, nu vullen met kenmerk2 (of 'Algemeen'). UPDATE fac_imp_perslid SET prs_perslid_naam = DECODE (prs_kenmerk2, NULL, 'Algemeen', prs_kenmerk2); v_errorhint := 'Afdeling bepalen en vullen'; -- Afdeling bepalen waar persoon onder komt te vallen FOR rec IN c_afd LOOP BEGIN v_errorhint := 'Persoon aan Afdeling koppelen'; SELECT min(prs_afdeling_key) INTO v_prs_afdeling_key FROM prs_v_afdeling WHERE UPPER(prs_afdeling_naam) = UPPER(rec.prs_kenmerk1) AND prs_bedrijf_key = 21 -- bedrijf SINNE AND prs_afdeling_verwijder IS NULL ; IF v_prs_afdeling_key IS NOT NULL THEN UPDATE fac_imp_perslid SET prs_afdeling_naam = (SELECT prs_afdeling_upper FROM prs_afdeling WHERE prs_afdeling_key = v_prs_afdeling_key) WHERE fac_imp_file_index = rec.fac_imp_file_index ; ELSE UPDATE fac_imp_perslid SET prs_afdeling_naam = (SELECT prs_afdeling_upper FROM prs_afdeling WHERE prs_afdeling_key = c_prs_afdeling_key) WHERE fac_imp_file_index = rec.fac_imp_file_index ; END IF; END; END LOOP; v_errorhint := 'Locatie bepalen en vullen'; -- Default Locatie / Standplaats bepalen voor persoon FOR rec IN c_loc LOOP BEGIN v_errorhint := 'Persoon aan Locatie-Ruimte koppelen'; v_alg_locatie_key := NULL; v_alg_gebouw_key := NULL; v_alg_verdieping_key := NULL; v_alg_ruimte_key := NULL; SELECT min(alg_locatie_key) INTO v_alg_locatie_key FROM alg_locatie WHERE UPPER(alg_locatie_omschrijving) = UPPER(rec.prs_kenmerk4) AND (TRUNC(alg_locatie_vervaldatum) > TRUNC(sysdate) OR alg_locatie_vervaldatum IS NULL ) AND alg_locatie_verwijder IS NULL ; IF v_alg_locatie_key IS NOT NULL THEN -- Locatie_code ophalen SELECT alg_locatie_code INTO v_alg_locatie_code FROM alg_locatie WHERE alg_locatie_key = v_alg_locatie_key ; -- Gebouw_key ophalen SELECT min(alg_gebouw_key) INTO v_alg_gebouw_key FROM alg_gebouw WHERE alg_locatie_key = v_alg_locatie_key AND alg_gebouw_verwijder IS NULL AND (TRUNC(alg_gebouw_vervaldatum) > TRUNC(sysdate) OR alg_gebouw_vervaldatum IS NULL ) ; -- Om bij update dit kenmerkveld weg te kunnen schrijven naar kenmerkveld 'default standplaats' UPDATE fac_imp_perslid SET prs_kenmerk6 = (SELECT UPPER(alg_locatie_code) || alg_locatie_omschrijving FROM alg_locatie WHERE alg_locatie_key = v_alg_locatie_key) WHERE fac_imp_file_index = rec.fac_imp_file_index ; IF v_alg_gebouw_key IS NOT NULL THEN -- Gebouw_code ophalen SELECT alg_gebouw_code INTO v_alg_gebouw_code FROM alg_gebouw WHERE alg_gebouw_key = v_alg_gebouw_key ; -- Verdiepings_key ophalen SELECT min(alg_verdieping_key) INTO v_alg_verdieping_key FROM alg_verdieping WHERE alg_gebouw_key = v_alg_gebouw_key AND alg_verdieping_verwijder IS NULL ; END IF; IF v_alg_verdieping_key IS NOT NULL THEN -- Verdieping_volgnr ophalen SELECT alg_verdieping_volgnr INTO v_alg_verdieping_volgnr FROM alg_verdieping WHERE alg_verdieping_key = v_alg_verdieping_key ; -- Ruimte_key ophalen SELECT min(alg_ruimte_key) INTO v_alg_ruimte_key FROM alg_ruimte WHERE alg_verdieping_key = v_alg_verdieping_key AND alg_ruimte_verwijder IS NULL ; END IF; IF v_alg_ruimte_key IS NOT NULL THEN -- Ruimte_nr ophalen SELECT alg_ruimte_nr INTO v_alg_ruimte_nr FROM alg_ruimte WHERE alg_ruimte_key = v_alg_ruimte_key ; -- Vullen vastgoed-keten in import-tabel UPDATE fac_imp_perslid SET alg_locatie_code = v_alg_locatie_code, alg_gebouw_code = v_alg_gebouw_code, alg_verdieping_volgnr = v_alg_verdieping_volgnr, alg_ruimte_nr = v_alg_ruimte_nr WHERE fac_imp_file_index = rec.fac_imp_file_index ; END IF; ELSE -- Geen Locatie/Vastgoedketen kunnen vinden UPDATE fac_imp_perslid SET prs_kenmerk6 = 'LOCATIE ONBEKEND' WHERE fac_imp_file_index = rec.fac_imp_file_index ; END IF; END; END LOOP; v_errorhint := 'Telefoonnr bepalen en vullen'; -- Heeft medewerker een Objectmobiel dan deze overnemen naar personenkaart.. FOR rec IN c_mob LOOP BEGIN IF rec.nummer_object IS NOT NULL THEN UPDATE fac_imp_perslid SET prs_perslid_mobiel = rec.nummer_object WHERE fac_imp_file_index = rec.fac_imp_file_index ; END IF; IF rec.nummer_object IS NULL AND rec.prs_perslid_mobiel IS NOT NULL THEN UPDATE fac_imp_perslid SET prs_perslid_mobiel = rec.prs_perslid_mobiel WHERE fac_imp_file_index = rec.fac_imp_file_index ; END IF; IF rec.prs_perslid_telefoonnr IS NOT NULL THEN UPDATE fac_imp_perslid SET prs_perslid_telefoonnr = rec.prs_perslid_telefoonnr WHERE fac_imp_file_index = rec.fac_imp_file_index ; END IF; END; END LOOP; COMMIT; EXCEPTION WHEN OTHERS THEN oracle_err_num := SQLCODE; oracle_err_mes := SUBSTR (SQLERRM, 1, 100); v_errormsg := 'Error ' || oracle_err_num || '/' || oracle_err_mes; fac.imp_writelog (p_import_key, 'E', v_errormsg, v_errorhint); END sinn_import_perslid; / CREATE OR REPLACE PROCEDURE sinn_update_perslid (p_import_key IN NUMBER) IS -- Alle personen verwijderen die niet meer in het import bestand voorkomen -- Personen in de juiste autorisatiegroep zetten. -- Match bij SINNE KINDEROPVANG is Email. -- Geen acties tenzij het aantal records in de importtabel meer dan 50 medewerkers betreft. CURSOR c_del IS SELECT p.prs_perslid_key, p.prs_perslid_nr, pf.prs_perslid_naam_full FROM prs_perslid p, prs_v_perslid_fullnames pf WHERE (UPPER (p.prs_perslid_email) LIKE '%SINNEKINDEROPVANG.NL' OR UPPER (p.prs_perslid_email) LIKE '%FRIESEKLEINTJES.NL') AND NOT EXISTS (SELECT 1 FROM fac_imp_perslid WHERE INSTR(UPPER (p.prs_perslid_email),UPPER (prs_perslid_email) ) > 0 ) AND pf.prs_perslid_key = p.prs_perslid_key ; CURSOR c_flex -- Voor updaten van de algemene flex-kenmerkvelden op actuele medewerkers IS SELECT p.prs_perslid_key, i.prs_kenmerk4, i.prs_kenmerk1 FROM prs_v_aanwezigperslid p, fac_imp_perslid i WHERE p.prs_perslid_key = i.prs_perslid_key ORDER BY 1; v_count NUMBER; oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); v_errormsg VARCHAR2 (400); v_errorhint VARCHAR2 (400); BEGIN v_errorhint := 'Niet genoeg personen in bestand, import afgebroken'; SELECT COUNT ( * ) INTO v_count FROM fac_imp_perslid; IF v_count >= 100 THEN v_errorhint := 'Verwerken persoonsgegevens'; -- Geldig importbestand wat betreft aantal personen COMMIT; -- generic update -- 'EMAIL' betekent dat op basis van Email wordt gematched. -- 'NULL' betekent altijd geen werkplekken verwijderen prs.update_perslid (p_import_key, 'EMAIL', NULL); v_errorhint := 'Verwijderen persoonsgegevens'; -- Verwijder personen die niet meer in de import voorkomen. FOR rec IN c_del LOOP BEGIN -- zie ticket SINN#74504 DELETE FROM fac_kenmwaarden WHERE prs_perslid_key = rec.prs_perslid_key ; prs.delete_perslid (p_import_key, rec.prs_perslid_key); END; END LOOP; FOR rec IN c_flex LOOP BEGIN v_errorhint:='Fout bijwerken kenmerkveld4 - Standplaats'; PRS.upsertkenmerk (1020, rec.prs_perslid_key, rec.prs_kenmerk4); v_errorhint:='Fout bijwerken kenmerkveld1 - Department)'; PRS.upsertkenmerk (1380, rec.prs_perslid_key, rec.prs_kenmerk1); END; END LOOP; ELSE fac.imp_writelog (p_import_key, 'E', v_errormsg, v_errorhint); COMMIT; END IF; COMMIT; EXCEPTION WHEN OTHERS THEN oracle_err_num := SQLCODE; oracle_err_mes := SUBSTR (SQLERRM, 1, 100); v_errormsg := 'Error ' || oracle_err_num || '/' || oracle_err_mes; fac.imp_writelog (p_import_key, 'E', v_errormsg, v_errorhint); END sinn_update_perslid; / -- Voor keuzelijstjes (kenmerk domein) CREATE OR REPLACE VIEW sinn_v_personenlijst ( KEY, NAAM, PERSONEELSNUMMER ) AS SELECT p.prs_perslid_key, p.prs_perslid_voornaam || ' ' || p.prs_perslid_naam naam, p.prs_perslid_nr FROM prs_perslid p, prs_v_afdeling a, prs_bedrijf b WHERE p.prs_afdeling_key = a.prs_afdeling_key AND a.prs_bedrijf_key = b.prs_bedrijf_key AND b.prs_bedrijf_key = 21 AND p.prs_perslid_voornaam !='TEAM' -- Voor team-accounts ORDER BY p.prs_perslid_naam ; -- Bedrijf EXTERN - Voor aanduiding 'Eigenaar/Huurder van Gebouw(onderdeel)' in vastgoedketen CREATE OR REPLACE VIEW SINN_V_EIGENAAR_VERHUURDER ( PRS_AFDELING_KEY, NAAM, CODE ) AS SELECT a.prs_afdeling_key, a.prs_afdeling_omschrijving, a.prs_afdeling_upper FROM prs_v_afdeling a, prs_bedrijf b WHERE a.prs_bedrijf_key = b.prs_bedrijf_key AND b.prs_bedrijf_key = 61 -- Extern EV (eigenaren en verhuurderspartijen van SINNE AND a.niveau = 1 ORDER BY a.prs_afdeling_omschrijving; -- Rapportage Veiligheid en Gezondheid - Ongeval Kind CREATE OR REPLACE VIEW SINN_V_MLD_ONGEVAL_KIND ( MLD_MELDING_KEY, MLD_MELDING_NR, DATUM_GEMELD, MLD_AANVRAGER, MLD_STDMELDING_OMSCHRIJVING, MLD_MELDING_ONDERWERP, MLD_MELDING_OMSCHRIJVING, MLD_MELDING_OPMERKING, MLD_STATUS, ALG_DISTRICT_OMSCHRIJVING, ALG_LOCATIE_OMSCHRIJVING, ALG_GEBOUW_NAAM, -- Kenmerkvelden uit formulier GEMELD_DOOR, GROEP, OPVANGSOORT, DATUM_ONGEVAL, TIJDSTIP_ONGEVAL, INITIALEN_KIND, LEEFTIJD_KIND, BETROKKENE, BETROKKENE_WIE, PLAATS_ONGEVAL, PLAATS_ONGEVAL_ANDERS, SOORT_ONGEVAL, SOORT_ONGEVAL_OMSCHREVEN, LETSEL_KIND, LETSEL_SOORT_1, LETSEL_SOORT_2, LETSEL_SOORT_3, LETSEL_AAN_1, LETSEL_AAN_2, CONTACT_OUDERS, CONTACT_OUDERS_WIE, CONTACT_OUDERS_WAT, IMPACT_ONGEVAL, TE_VOORKOMEN, MAATREGELEN_GETROFFEN, MAATREGEL_1, MAATREGEL_1_EFFECT, MAATREGEL_2, MAATREGEL_2_EFFECT, MAATREGEL_3, MAATREGEL_3_EFFECT, MAATREGEL_4, MAATREGEL_4_EFFECT ) AS SELECT m.mld_melding_key, sd.ins_srtdiscipline_prefix || m.mld_melding_key mld_melding_nr, m.mld_melding_datum, COALESCE(p.prs_perslid_naam_full, 'oude account'), sm.mld_stdmelding_omschrijving, m.mld_melding_onderwerp, m.mld_melding_omschrijving, m.mld_melding_opmerking, st.mld_statuses_omschrijving, d.alg_district_omschrijving, l.alg_locatie_omschrijving, v.alg_gebouw_naam, -- Kenmerkvelden uit formulier sinn_get_kenmerk('MLD', 155 , m.mld_melding_key) gemeld_door, sinn_get_kenmerk('MLD', 157 , m.mld_melding_key) groep, sinn_get_kenmerk('MLD', 192, m.mld_melding_key) opvangsoort, sinn_get_kenmerk('MLD', 146 , m.mld_melding_key) datum_ongeval, sinn_get_kenmerk('MLD', 199 , m.mld_melding_key) tijdstip_ongeval, sinn_get_kenmerk('MLD', 161 , m.mld_melding_key) initialen_kind, sinn_get_kenmerk('MLD', 164 , m.mld_melding_key) leeftijd_kind, sinn_get_kenmerk('MLD', 136 , m.mld_melding_key) betrokkene, sinn_get_kenmerk('MLD', 137 , m.mld_melding_key) betrokkene_wie, sinn_get_kenmerk('MLD', 194 , m.mld_melding_key) plaats_ongeval, sinn_get_kenmerk('MLD', 205 , m.mld_melding_key) plaats_ongeval_anders, sinn_get_kenmerk('MLD', 196 , m.mld_melding_key) soort_ongeval, sinn_get_kenmerk('MLD', 197 , m.mld_melding_key) soort_ongeval_omschreven, sinn_get_kenmerk('MLD', 341 , m.mld_melding_key) letsel_kind, sinn_get_kenmerk('MLD', 168 , m.mld_melding_key) letsel_soort_1, sinn_get_kenmerk('MLD', 302 , m.mld_melding_key) letsel_soort_2, sinn_get_kenmerk('MLD', 303 , m.mld_melding_key) letsel_soort_3, sinn_get_kenmerk('MLD', 167 , m.mld_melding_key) letsel_aan_1, sinn_get_kenmerk('MLD', 381 , m.mld_melding_key) letsel_aan_2, sinn_get_kenmerk('MLD', 144 , m.mld_melding_key) contact_ouders, sinn_get_kenmerk('MLD', 142 , m.mld_melding_key) contact_ouders_wie, sinn_get_kenmerk('MLD', 143 , m.mld_melding_key) contact_ouders_wat, sinn_get_kenmerk('MLD', 160 , m.mld_melding_key) impact_ongeval, sinn_get_kenmerk('MLD', 198 , m.mld_melding_key) te_voorkomen, sinn_get_kenmerk('MLD', 178 , m.mld_melding_key) maatregelen_getroffen, sinn_get_kenmerk('MLD', 169 , m.mld_melding_key) maatregel_1, sinn_get_kenmerk('MLD', 149 , m.mld_melding_key) maatregel_1_effect, sinn_get_kenmerk('MLD', 170 , m.mld_melding_key) maatregel_2, sinn_get_kenmerk('MLD', 150 , m.mld_melding_key) maatregel_2_effect, sinn_get_kenmerk('MLD', 171 , m.mld_melding_key) maatregel_3, sinn_get_kenmerk('MLD', 151 , m.mld_melding_key) maatregel_3_effect, sinn_get_kenmerk('MLD', 172 , m.mld_melding_key) maatregel_4, sinn_get_kenmerk('MLD', 152 , m.mld_melding_key) maatregel_4_effect FROM mld_melding m, prs_v_perslid_fullnames p, mld_stdmelding sm, mld_discipline md, ins_srtdiscipline sd, alg_locatie l, alg_district d, alg_v_allonrgoed_gegevens v, mld_statuses st WHERE m.mld_stdmelding_key = sm.mld_stdmelding_key AND sm.mld_ins_discipline_key = md.ins_discipline_key AND m.mld_alg_locatie_key = l.alg_locatie_key AND l.alg_district_key = d.alg_district_key AND m.mld_alg_onroerendgoed_keys = v.alg_onroerendgoed_keys AND m.mld_melding_status = st.mld_statuses_key AND md.ins_discipline_key = 36 AND md.ins_srtdiscipline_key = sd.ins_srtdiscipline_key AND m.mld_stdmelding_key = 42 -- Voor ONGEVAL KIND AND m.prs_perslid_key = p.prs_perslid_key(+) ; -- Bronview gekoppelde afdelingen aan ruimtes ---- Tbv rapportage gebouwbeheer - M2-bepalingen CREATE OR REPLACE VIEW SINN_V_ALG_ONROERENDGOED_ORG ( ALG_RUIMTE_KEY, BVO_M2, PRS_AFDELING_KEY, PRS_AFDELING_OMSCHRIJVING, EXTERNE_EV, -- is het een EV-partij (eigenaar/verhuurder - uit domeinview sinn_v_eigenaar_verhuurder) PRS_RUIMTEAFDELING_BEZETTING, PRS_RUIMTEAFDELING_M2 ) AS SELECT r.alg_ruimte_key, r.alg_ruimte_bruto_vloeropp, a.prs_afdeling_key, a.prs_afdeling_omschrijving, DECODE(v.prs_afdeling_key, NULL, 'nee', 'ja') externe_ev, ra.prs_ruimteafdeling_bezetting, ROUND(r.alg_ruimte_bruto_vloeropp * (ra.prs_ruimteafdeling_bezetting/100), 2) prs_ruimteafdeling_m2 FROM alg_ruimte r, prs_ruimteafdeling ra, prs_afdeling a, sinn_v_eigenaar_verhuurder v WHERE r.alg_ruimte_key = ra.alg_ruimte_key AND ra.prs_afdeling_key = a.prs_afdeling_key AND a.prs_afdeling_key = v.prs_afdeling_key (+) AND ra.prs_ruimteafdeling_verwijder IS NULL AND ra.prs_ruimteafdeling_ingangsdatum <= TRUNC(SYSDATE) AND COALESCE(ra.prs_ruimteafdeling_einddatum, TRUNC(SYSDATE)) <= TRUNC(SYSDATE) ; -- Rapportage Gebouwbeheer - basislijst per ruimte CREATE OR REPLACE VIEW SINN_V_ALG_ONROERENDGOED ( KOEPEL, ALG_LOCATIE_KEY, LOCATIE, LOCATIE_CODE, ALG_GEBOUW_KEY, GEBOUW, -- gegevens uit gebouwkaart GEBRUIKSRECHT, EIGENAAR_VERHUURDER_1, EIGENAAR_VERHUURDER_2, EIGENAAR_VERHUURDER_3, EIGENAARSCHAP_TOELICHTING, DOV, SLG, BSO, VSO, DOV_LRK, SLG_LRK, BSO_LRK, VSO_LRK, -- VERDIEPING, ALG_RUIMTE_KEY, RUIMTENR, RUIMTE_OMSCHRIJVING, RUIMTEFUNCTIE, BVO_M2, -- kenmerken ruimte VLOERSOORT, DOV_R, SLG_R, BSO_R, VSO_R, -- M2 verdeelsleutel opvangsoorten AANTAL_OPVANGSOORT_R, M2_DOV, M2_SLG, M2_BSO, M2_VSO, M2_OVERIG, -- Externe partijen EXTERNE_EV_R, -- welke externe eigenaren/verhuurders zitten op deze ruimte - via afdeling-koppeling - m2 bezetting EXTERNE_EV_R_PERC, -- idem - % bezetting EXTERNE_EV_M2 -- en hoeveel M2 hebben zij ) AS SELECT d.alg_district_omschrijving, l.alg_locatie_key, l.alg_locatie_omschrijving, l.alg_locatie_code, v.alg_gebouw_key, v.alg_gebouw_code || ' - ' || v.alg_gebouw_naam gebouw, kmg.gebruiksrecht, kmg.eigenaar_verhuurder_1, kmg.eigenaar_verhuurder_2, kmg.eigenaar_verhuurder_3, kmg.eigenaarschap_toelichting, kmg.dov, kmg.slg, kmg.bso, kmg.vso, kmg.dov_lrk, kmg.slg_lrk, kmg.bso_lrk, kmg.vso_lrk, v.alg_verdieping_omschrijving || ' - ' || v.alg_verdieping_code verdieping, v.alg_ruimte_key, v.alg_ruimte_nr, v.alg_ruimte_omschrijving, sr.alg_srtruimte_omschrijving, r.alg_ruimte_bruto_vloeropp, kmr.vloersoort, kmr.dov_r, kmr.slg_r, kmr.bso_r, kmr.vso_r, -- M2 verdeelsleutel opvangsoorten kmr.aantal_opvangsoorten_r, CASE WHEN kmr.dov_r = 1 THEN r.alg_ruimte_bruto_vloeropp/kmr.aantal_opvangsoorten_r ELSE 0 END m2_dov, CASE WHEN kmr.slg_r = 1 THEN r.alg_ruimte_bruto_vloeropp/kmr.aantal_opvangsoorten_r ELSE 0 END m2_slg, CASE WHEN kmr.bso_r = 1 THEN r.alg_ruimte_bruto_vloeropp/kmr.aantal_opvangsoorten_r ELSE 0 END m2_bso, CASE WHEN kmr.vso_r = 1 THEN r.alg_ruimte_bruto_vloeropp/kmr.aantal_opvangsoorten_r ELSE 0 END m2_vso, CASE WHEN kmr.aantal_opvangsoorten_r = 0 THEN r.alg_ruimte_bruto_vloeropp ELSE 0 END m2_overig, -- M2 externe partijen ra.externe_ev_r, ra.externe_ev_r_perc, ra.externe_ev_m2 FROM alg_v_onroerendgoed_gegevens v, alg_locatie l, alg_district d, (SELECT g.alg_gebouw_key, flx.getdomeinwaarde(18, flx.getflex('ALG',1011, g.alg_gebouw_key, 'G')) gebruiksrecht, flx.getdomeinwaarde(41, flx.getflex('ALG',1103, g.alg_gebouw_key, 'G')) eigenaar_verhuurder_1, flx.getdomeinwaarde(41, flx.getflex('ALG',1104, g.alg_gebouw_key, 'G')) eigenaar_verhuurder_2, flx.getdomeinwaarde(41, flx.getflex('ALG',1105, g.alg_gebouw_key, 'G')) eigenaar_verhuurder_3, flx.getflex('ALG',1012, g.alg_gebouw_key, 'G') eigenaarschap_toelichting, flx.getflex('ALG',1040, g.alg_gebouw_key, 'G') DOV, flx.getflex('ALG',1041, g.alg_gebouw_key, 'G') SLG, flx.getflex('ALG',1042, g.alg_gebouw_key, 'G') BSO, flx.getflex('ALG',1360, g.alg_gebouw_key, 'G') VSO, flx.getflex('ALG',1035, g.alg_gebouw_key, 'G') DOV_LRK, flx.getflex('ALG',1120, g.alg_gebouw_key, 'G') SLG_LRK, flx.getflex('ALG',1121, g.alg_gebouw_key, 'G') BSO_LRK, 'nvt?' vso_lrk FROM alg_gebouw g ) kmg, -- kenmerken gebouw alg_ruimte r, (SELECT r.alg_ruimte_key, flx.getdomeinwaarde(17, flx.getflex('ALG',1006, r.alg_ruimte_key, 'R')) vloersoort, flx.getflex('ALG',1341, r.alg_ruimte_key, 'R') DOV_R, flx.getflex('ALG',1342, r.alg_ruimte_key, 'R') SLG_R, flx.getflex('ALG',1343, r.alg_ruimte_key, 'R') BSO_R, flx.getflex('ALG',1380, r.alg_ruimte_key, 'R') VSO_R, COALESCE(fac.safe_to_number(flx.getflex('ALG',1341, r.alg_ruimte_key, 'R')), 0) + COALESCE(fac.safe_to_number(flx.getflex('ALG',1342, r.alg_ruimte_key, 'R')), 0) + COALESCE(fac.safe_to_number(flx.getflex('ALG',1343, r.alg_ruimte_key, 'R')), 0) + COALESCE(fac.safe_to_number(flx.getflex('ALG',1380, r.alg_ruimte_key, 'R')), 0) aantal_opvangsoorten_r FROM alg_ruimte r ) kmr, -- kenmerken ruimte alg_srtruimte sr, (SELECT v.alg_ruimte_key, sum(v.prs_ruimteafdeling_m2) externe_ev_m2, LISTAGG (v.prs_afdeling_omschrijving || ' (' || v.prs_ruimteafdeling_m2 || ' m2)' || DECODE(v.externe_ev, 'nee', ' !!!!', ''), CHR(10)) WITHIN GROUP (ORDER BY v.prs_afdeling_omschrijving) AS externe_ev_r, LISTAGG (v.prs_afdeling_omschrijving || ' (' || v.prs_ruimteafdeling_bezetting || ' %)' || DECODE(v.externe_ev, 'nee', ' !!!!', ''), CHR(10)) WITHIN GROUP (ORDER BY v.prs_afdeling_omschrijving) AS externe_ev_r_perc FROM sinn_v_alg_onroerendgoed_org v GROUP BY alg_ruimte_key) ra -- ruimte_afdelingen gekoppeld WHERE v.alg_locatie_key = l.alg_locatie_key AND l.alg_district_key = d.alg_district_key AND v.alg_type IN ('R') AND v.alg_gebouw_key = kmg.alg_gebouw_key AND v.alg_ruimte_key = r.alg_ruimte_key AND r.alg_ruimte_verwijder IS NULL AND r.alg_ruimte_key = kmr.alg_ruimte_key (+) AND r.alg_srtruimte_key = sr.alg_srtruimte_key (+) AND r.alg_ruimte_key = ra.alg_ruimte_key (+) ORDER BY d.alg_district_omschrijving, l.alg_locatie_code, v.alg_gebouw_code, v.alg_verdieping_code, v.alg_ruimte_nr ; -- Rapportage Gebouwbeheer - een 2e basislijst per ruimte/externe partij (in geval een ruimte door meerdere externe partijen wordt bezet) CREATE OR REPLACE VIEW SINN_V_ALG_ONROERENDGOED2 AS SELECT v1.*, v2.prs_afdeling_omschrijving, v2.externe_ev, v2.prs_ruimteafdeling_m2 FROM sinn_v_alg_onroerendgoed v1, sinn_v_alg_onroerendgoed_org v2 WHERE v1.alg_ruimte_key = v2.alg_ruimte_key (+) ; -- RIE - INSPECTIES --- -- 1. Basislijst uitgevoerde inspecties -- 2. De ingevoerde vragenlijst - Gestylde versie voor GGD CREATE OR REPLACE VIEW SINN_V_RIE_UITGEVOERD ( INS_SRTCONTROLE_OMSCHRIJVING, PLAATSAANDUIDING, KOEPEL, INS_DEELSRTCONTROLE_KEY, UITVOER_X, INS_DEEL_KEY, INS_DEELSRTCONTROLE_DATUM, INS_DEELSRTCONTROLE_JAAR, INS_DEELSRTCONTROLE_STATUS, UITVOERDATUM_GEPLAND, UITVOERDATUM_INBEHANDELING, UITVOERDATUM_GEREED, SUCCES, ACTIE_VEREIST, DATUM_AFGEMELD, DATUM_VERWERKT, UITVOERDATUM_ORIGINEEL, UITGEVOERD_DOOR, OPVANGSOORTEN ) AS SELECT sc.ins_srtcontrole_omschrijving, l.alg_locatie_omschrijving || ' - ' || g.alg_gebouw_naam locatie_gebouw, d.alg_district_omschrijving, dc.ins_deelsrtcontrole_key, (SELECT COUNT (*) + 1 FROM ins_deelsrtcontrole dc2 WHERE dc2.ins_deelsrtcontrole_key < dc.ins_deelsrtcontrole_key AND dc2.ins_deel_key = dc.ins_deel_key AND dc2.ins_srtcontrole_key = dc.ins_srtcontrole_key AND dc2.ins_scenario_key = dc.ins_scenario_key) uitvoer_x, d.ins_deel_key, COALESCE ( dc.ins_deelsrtcontrole_datum, (SELECT MAX (fac_tracking_datum) -- Datum in behandeling genomen / gestart FROM fac_tracking ft WHERE ft.fac_srtnotificatie_key = 139 -- INSCBE AND fac_tracking_refkey = dc.ins_deelsrtcontrole_key), dc.ins_deelsrtcontrole_plandatum) ins_deelsrtcontrole_datum, --fac.safe_to_number( fac.safe_to_number ( TO_CHAR ( COALESCE ( dc.ins_deelsrtcontrole_datum, (SELECT MAX (fac_tracking_datum) -- Datum in behandeling genomen / gestart FROM fac_tracking ft WHERE ft.fac_srtnotificatie_key = 139 -- INSCBE AND fac_tracking_refkey = dc.ins_deelsrtcontrole_key), dc.ins_deelsrtcontrole_plandatum), 'yyyy')) ins_deelsrtcontrole_jaar, DECODE (dc.ins_deelsrtcontrole_status, 0, 'Ingepland', 2, 'In behandeling', 5, 'Afgemeld', 6, 'Voltooid') status, dc.ins_deelsrtcontrole_plandatum uitvoerdatum_gepland, tr.datum_inbehandeling uitvoerdatum_inbehandeling, dc.ins_deelsrtcontrole_datum uitvoerdatum_gereed, (SELECT CASE WHEN cm.ins_controlemode_success = 1 THEN 'ja' ELSE 'nee' END FROM ins_controlemode cm WHERE cm.ins_controlemode_key = dc.ins_controlemode_key) succes, CASE WHEN dc.ins_deelsrtcontrole_status = 5 THEN 'ja' WHEN dc.ins_deelsrtcontrole_status = 6 THEN 'nee' ELSE '' END actie_vereist, tr.datum_afgemeld, -- Afgemeld op (= gereed/voltooid met vervolgactie..) tr.datum_verwerkt, -- Verwerkt op (= voltooid zonder vervolgactie / vervolgactie voltooid) dc.ins_deelsrtcontrole_datum_org uitvoerdatum_origineel, --- Algemene gegevens (SELECT p.prs_perslid_naam_friendly FROM ins_kmdeelsrtcontr v, prs_v_perslid_fullnames_all p WHERE v.ins_deelsrtcontrole_key = dc.ins_deelsrtcontrole_key AND v.ins_kenmerk_key = 41 AND p.prs_perslid_key = fac.safe_to_number (v.ins_kmdeelsrtcontr_waarde)) uitgevoerd_door, (SELECT ud.fac_usrdata_omschr FROM ins_kmdeelsrtcontr v, fac_usrdata ud WHERE v.ins_deelsrtcontrole_key = dc.ins_deelsrtcontrole_key AND v.ins_kenmerk_key = 201 AND ud.fac_usrdata_key = fac.safe_to_number (v.ins_kmdeelsrtcontr_waarde) AND ud.fac_usrtab_key = 61) opvangsoorten FROM ins_deelsrtcontrole dc, ins_deel d, ins_v_defined_inspect_xcp sc, alg_v_onroerendgoed og, alg_gebouw g, alg_locatie l, alg_district d, (SELECT dc.ins_deelsrtcontrole_key, (SELECT MAX (fac_tracking_datum) FROM fac_tracking ft WHERE ft.fac_srtnotificatie_key = 139 -- INSCBE AND fac_tracking_refkey = dc.ins_deelsrtcontrole_key) datum_inbehandeling, (SELECT MAX (ft.fac_tracking_datum) FROM fac_tracking ft WHERE ft.fac_srtnotificatie_key = 140 -- INSCAF AND ft.fac_tracking_refkey = dc.ins_deelsrtcontrole_key) datum_afgemeld, (SELECT MAX (ft.fac_tracking_datum) FROM fac_tracking ft WHERE ft.fac_srtnotificatie_key = 141 -- INSCVE AND ft.fac_tracking_refkey = dc.ins_deelsrtcontrole_key) datum_verwerkt FROM ins_deelsrtcontrole dc) tr WHERE d.ins_deel_key = sc.ins_deel_key AND sc.ins_srtcontrole_key = 10 -- Risico inventarisatie en evaluatie AND sc.ins_scenario_key = 1 AND sc.ins_srtcontrole_key = dc.ins_srtcontrole_key AND sc.ins_deel_key = dc.ins_deel_key AND dc.ins_deelsrtcontrole_key = tr.ins_deelsrtcontrole_key AND d.ins_alg_ruimte_key = og.alg_ruimte_key AND og.alg_gebouw_key = g.alg_gebouw_key AND g.alg_locatie_key = l.alg_locatie_key AND l.alg_district_key = d.alg_district_key; CREATE OR REPLACE VIEW SINN_V_RIE_UITGEVOERD_LIJST ( INS_SRTCONTROLE_OMSCHRIJVING, PLAATSAANDUIDING, KOEPEL, INS_DEELSRTCONTROLE_KEY, UITVOER_X, INS_DEEL_KEY, INS_DEELSRTCONTROLE_DATUM, INS_DEELSRTCONTROLE_JAAR, INS_DEELSRTCONTROLE_STATUS, UITVOERDATUM_GEPLAND, UITVOERDATUM_INBEHANDELING, UITVOERDATUM_GEREED, SUCCES, ACTIE_VEREIST, DATUM_AFGEMELD, DATUM_VERWERKT, UITVOERDATUM_ORIGINEEL, UITGEVOERD_DOOR, OPVANGSOORTEN, BLOK, VOLGNR, VRAAG, ANTWOORD, TOELICHTING ) AS SELECT v.ins_srtcontrole_omschrijving, v.plaatsaanduiding, v.koepel, v.ins_deelsrtcontrole_key, v.uitvoer_x, v.ins_deel_key, v.ins_deelsrtcontrole_datum, v.ins_deelsrtcontrole_jaar, v.ins_deelsrtcontrole_status, v.uitvoerdatum_gepland, v.uitvoerdatum_inbehandeling, v.uitvoerdatum_gereed, v.succes, v.actie_vereist, v.datum_afgemeld, v.datum_verwerkt, v.uitvoerdatum_origineel, v.uitgevoerd_door, v.opvangsoorten, rie.blok, rie.volgnr, rie.vraag, rie.antwoord, rie.toelichting FROM sinn_v_rie_uitgevoerd v, ( SELECT b.ins_deelsrtcontrole_key, b.blok, b.volgnr, b.vraag, b.antwoord, b.toelichting FROM (SELECT dc.ins_deelsrtcontrole_key, 'ALGEMEEN' blok, k.ins_kenmerk_volgnummer volgnr, CASE WHEN k.ins_kenmerk_hint IS NULL THEN sk.ins_srtkenmerk_omschrijving ELSE sk.ins_srtkenmerk_omschrijving || ' - ' || k.ins_kenmerk_hint END vraag, DECODE (v.ins_kmdeelsrtcontr_waarde, '141', 'ja', 'nee') antwoord, (SELECT kmw.ins_kmdeelsrtcontr_waarde FROM ins_kmdeelsrtcontr kmw, ins_kenmerk km WHERE kmw.ins_deelsrtcontrole_key = dc.ins_deelsrtcontrole_key AND kmw.ins_kenmerk_key = km.ins_kenmerk_key AND km.ins_srtkenmerk_key = 101 -- Alleen de toelichtingen AND km.ins_kenmerk_volgnummer = fac.safe_to_number ( k.ins_kenmerk_volgnummer + 1)) toelichting FROM ins_deelsrtcontrole dc, ins_kmdeelsrtcontr v, ins_kenmerk k, ins_srtkenmerk sk WHERE dc.ins_deelsrtcontrole_key = v.ins_deelsrtcontrole_key AND v.ins_kenmerk_key = k.ins_kenmerk_key AND k.ins_srtkenmerk_key = sk.ins_srtkenmerk_key AND k.ins_kenmerk_volgnummer BETWEEN 10 AND 199 AND sk.fac_kenmerkdomein_key = 81 -- alleen de ja/nee vragen pakken UNION -- BLOK TRAP - 200-reeks SELECT dc.ins_deelsrtcontrole_key, 'TRAP' blok, k.ins_kenmerk_volgnummer volgnr, CASE WHEN k.ins_kenmerk_hint IS NULL THEN sk.ins_srtkenmerk_omschrijving ELSE sk.ins_srtkenmerk_omschrijving || ' - ' || k.ins_kenmerk_hint END vraag, DECODE (v.ins_kmdeelsrtcontr_waarde, '141', 'ja', 'nee') antwoord, (SELECT kmw.ins_kmdeelsrtcontr_waarde FROM ins_kmdeelsrtcontr kmw, ins_kenmerk km WHERE kmw.ins_deelsrtcontrole_key = dc.ins_deelsrtcontrole_key AND kmw.ins_kenmerk_key = km.ins_kenmerk_key AND km.ins_srtkenmerk_key = 101 -- Alleen de toelichtingen AND km.ins_kenmerk_volgnummer = fac.safe_to_number ( k.ins_kenmerk_volgnummer + 1)) toelichting FROM ins_deelsrtcontrole dc, ins_kmdeelsrtcontr v, ins_kenmerk k, ins_srtkenmerk sk WHERE dc.ins_deelsrtcontrole_key = v.ins_deelsrtcontrole_key AND v.ins_kenmerk_key = k.ins_kenmerk_key AND k.ins_srtkenmerk_key = sk.ins_srtkenmerk_key AND k.ins_kenmerk_volgnummer BETWEEN 200 AND 299 AND sk.fac_kenmerkdomein_key = 81 -- alleen de ja/nee vragen pakken UNION -- BLOK SLAAPKAMERS - 300-reeks SELECT dc.ins_deelsrtcontrole_key, 'SLAAPKAMERS' blok, k.ins_kenmerk_volgnummer volgnr, CASE WHEN k.ins_kenmerk_hint IS NULL THEN sk.ins_srtkenmerk_omschrijving ELSE sk.ins_srtkenmerk_omschrijving || ' - ' || k.ins_kenmerk_hint END vraag, DECODE (v.ins_kmdeelsrtcontr_waarde, '141', 'ja', 'nee') antwoord, (SELECT kmw.ins_kmdeelsrtcontr_waarde FROM ins_kmdeelsrtcontr kmw, ins_kenmerk km WHERE kmw.ins_deelsrtcontrole_key = dc.ins_deelsrtcontrole_key AND kmw.ins_kenmerk_key = km.ins_kenmerk_key AND km.ins_srtkenmerk_key = 101 -- Alleen de toelichtingen AND km.ins_kenmerk_volgnummer = fac.safe_to_number ( k.ins_kenmerk_volgnummer + 1)) toelichting FROM ins_deelsrtcontrole dc, ins_kmdeelsrtcontr v, ins_kenmerk k, ins_srtkenmerk sk WHERE dc.ins_deelsrtcontrole_key = v.ins_deelsrtcontrole_key AND v.ins_kenmerk_key = k.ins_kenmerk_key AND k.ins_srtkenmerk_key = sk.ins_srtkenmerk_key AND k.ins_kenmerk_volgnummer BETWEEN 300 AND 399 AND sk.fac_kenmerkdomein_key = 81 -- alleen de ja/nee vragen pakken UNION -- BLOK SANITAIR - 400-reeks SELECT dc.ins_deelsrtcontrole_key, 'SANITAIRE RUIMTES' blok, k.ins_kenmerk_volgnummer volgnr, CASE WHEN k.ins_kenmerk_hint IS NULL THEN sk.ins_srtkenmerk_omschrijving ELSE sk.ins_srtkenmerk_omschrijving || ' - ' || k.ins_kenmerk_hint END vraag, DECODE (v.ins_kmdeelsrtcontr_waarde, '141', 'ja', 'nee') antwoord, (SELECT kmw.ins_kmdeelsrtcontr_waarde FROM ins_kmdeelsrtcontr kmw, ins_kenmerk km WHERE kmw.ins_deelsrtcontrole_key = dc.ins_deelsrtcontrole_key AND kmw.ins_kenmerk_key = km.ins_kenmerk_key AND km.ins_srtkenmerk_key = 101 -- Alleen de toelichtingen AND km.ins_kenmerk_volgnummer = fac.safe_to_number ( k.ins_kenmerk_volgnummer + 1)) toelichting FROM ins_deelsrtcontrole dc, ins_kmdeelsrtcontr v, ins_kenmerk k, ins_srtkenmerk sk WHERE dc.ins_deelsrtcontrole_key = v.ins_deelsrtcontrole_key AND v.ins_kenmerk_key = k.ins_kenmerk_key AND k.ins_srtkenmerk_key = sk.ins_srtkenmerk_key AND k.ins_kenmerk_volgnummer BETWEEN 400 AND 499 AND sk.fac_kenmerkdomein_key = 81 -- alleen de ja/nee vragen pakken UNION -- BLOK BUITENRUIMTE - 500-reeks SELECT dc.ins_deelsrtcontrole_key, 'BUITENRUIMTE' blok, k.ins_kenmerk_volgnummer volgnr, CASE WHEN k.ins_kenmerk_hint IS NULL THEN sk.ins_srtkenmerk_omschrijving ELSE sk.ins_srtkenmerk_omschrijving || ' - ' || k.ins_kenmerk_hint END vraag, DECODE (v.ins_kmdeelsrtcontr_waarde, '141', 'ja', 'nee') antwoord, (SELECT kmw.ins_kmdeelsrtcontr_waarde FROM ins_kmdeelsrtcontr kmw, ins_kenmerk km WHERE kmw.ins_deelsrtcontrole_key = dc.ins_deelsrtcontrole_key AND kmw.ins_kenmerk_key = km.ins_kenmerk_key AND km.ins_srtkenmerk_key = 101 -- Alleen de toelichtingen AND km.ins_kenmerk_volgnummer = fac.safe_to_number ( k.ins_kenmerk_volgnummer + 1)) toelichting FROM ins_deelsrtcontrole dc, ins_kmdeelsrtcontr v, ins_kenmerk k, ins_srtkenmerk sk WHERE dc.ins_deelsrtcontrole_key = v.ins_deelsrtcontrole_key AND v.ins_kenmerk_key = k.ins_kenmerk_key AND k.ins_srtkenmerk_key = sk.ins_srtkenmerk_key AND k.ins_kenmerk_volgnummer BETWEEN 500 AND 599 AND sk.fac_kenmerkdomein_key = 81 -- alleen de ja/nee vragen pakken UNION -- BLOK KENNIS VAN DE MEDEWERKERS - 600-reeks SELECT dc.ins_deelsrtcontrole_key, 'KENNIS VAN DE MEDEWERKERS' blok, k.ins_kenmerk_volgnummer volgnr, CASE WHEN k.ins_kenmerk_hint IS NULL THEN sk.ins_srtkenmerk_omschrijving ELSE sk.ins_srtkenmerk_omschrijving || ' - ' || k.ins_kenmerk_hint END vraag, DECODE (v.ins_kmdeelsrtcontr_waarde, '141', 'ja', 'nee') antwoord, (SELECT kmw.ins_kmdeelsrtcontr_waarde FROM ins_kmdeelsrtcontr kmw, ins_kenmerk km WHERE kmw.ins_deelsrtcontrole_key = dc.ins_deelsrtcontrole_key AND kmw.ins_kenmerk_key = km.ins_kenmerk_key AND km.ins_srtkenmerk_key = 101 -- Alleen de toelichtingen AND km.ins_kenmerk_volgnummer = fac.safe_to_number ( k.ins_kenmerk_volgnummer + 1)) toelichting FROM ins_deelsrtcontrole dc, ins_kmdeelsrtcontr v, ins_kenmerk k, ins_srtkenmerk sk WHERE dc.ins_deelsrtcontrole_key = v.ins_deelsrtcontrole_key AND v.ins_kenmerk_key = k.ins_kenmerk_key AND k.ins_srtkenmerk_key = sk.ins_srtkenmerk_key AND k.ins_kenmerk_volgnummer BETWEEN 600 AND 799 AND sk.fac_kenmerkdomein_key = 81 -- alleen de ja/nee vragen pakken ) b ORDER BY b.ins_deelsrtcontrole_key, b.volgnr) rie WHERE v.ins_deelsrtcontrole_key = rie.ins_deelsrtcontrole_key; -- PROCES OPDRAVCHTEN EN PLANNING --- View tbv planbord calenderweergave CREATE OR REPLACE VIEW sinn_v_rap_opdrachten ( INTERN, TYPE, MLD_OPDR_KEY, MLD_UITVOERENDE_KEY, OPDRACHTNR, STATUS, MELDING, BEHANDELAAR, DISTRICT_OMSCHRIJVING, -- KOEPEL LOCATIE_PLAATS, LOCATIE_OMSCHRIJVING, GEBOUW_OMSCHRIJVING, OPDRACHT_AANMAAKDATUM, GEPLANDE_AANVANG, GEPLANDE_AANVANG_B, -- berekend voor kalenderweergave GEPLANDE_EINDDATUM, GEPLANDE_EINDDATUM_B, -- berekend voor kalenderweergave OPDRACHT_EINDDATUM, MELDING_EINDDATUM, OMSCHRIJVING, PRS_PERSLID_KEY, NAAM_UITVOERDER, AFMELD_DATUM, OPDRACHT_TYPE, TD_NAAM, PRIORITEIT, STATUS_KALENDER, -- t.b.v. kalenderweergave INS_SRTDISCIPLINE_KEY ) AS SELECT mu.intern, CASE WHEN mu.TYPE = 'B' AND mu.intern = 1 THEN 'Poule-opdracht' WHEN mu.TYPE = 'P' AND mu.intern = 1 THEN 'Klus-opdracht' WHEN mu.intern = 0 THEN 'Externe opdracht' ELSE '' END TYPE, o.mld_opdr_key, mu.mld_uitvoerende_key mld_uitvoerende_key, TO_CHAR (o.mld_melding_key) || '/' || o.mld_opdr_bedrijfopdr_volgnr opdrachtnummer, DECODE ( os.mld_statusopdr_key, 8, DECODE (o.mld_opdr_halted, 1, 'Onderbroken', os.mld_statusopdr_omschrijving), os.mld_statusopdr_omschrijving) status, std.mld_stdmelding_omschrijving, COALESCE (p.prs_perslid_naam_full, '') behandelaar, d.alg_district_omschrijving, l.alg_locatie_plaats, l.alg_locatie_omschrijving, (SELECT g.alg_gebouw_naam FROM alg_v_onroerendgoed_gegevens v, alg_gebouw g WHERE v.alg_gebouw_key = g.alg_gebouw_key AND v.alg_onroerendgoed_keys = m.mld_alg_onroerendgoed_keys) gebouw_omschrijving, o.mld_opdr_datumbegin, o.mld_opdr_plandatum geplande_aanvang, CASE WHEN o.mld_opdr_plandatum IS NOT NULL THEN o.mld_opdr_plandatum ELSE o.mld_opdr_datumbegin END geplande_aanvang_b, o.mld_opdr_plandatum2 geplande_einddatum, CASE WHEN o.mld_opdr_plandatum2 IS NOT NULL AND o.mld_opdr_plandatum IS NOT NULL THEN o.mld_opdr_plandatum2 WHEN o.mld_opdr_plandatum2 IS NULL AND o.mld_opdr_plandatum IS NOT NULL THEN o.mld_opdr_plandatum + 2/24 ELSE o.mld_opdr_datumbegin + 2/24 END geplande_einddatum_b, o.mld_opdr_einddatum, m.mld_melding_einddatum, TRIM ( REGEXP_REPLACE ( REGEXP_SUBSTR (o.mld_opdr_omschrijving, '(([^ ]*)( |$)*){10}'), '[[:space:]]', ' ')) || '...' omschrijving, p.prs_perslid_key, mu.naam naam_uitvoerder, (SELECT MAX (ft.fac_tracking_datum) FROM fac_tracking ft WHERE ft.fac_tracking_refkey = o.mld_opdr_key AND ft.fac_srtnotificatie_key = 80) -- ORDAFM afmeld_datum, ot.mld_typeopdr_omschrijving, CASE WHEN mu.TYPE = 'B' AND mu.intern = 1 THEN COALESCE (p.prs_perslid_naam_full, '') WHEN mu.TYPE = 'P' AND mu.intern = 1 THEN mu.naam ELSE '' END td_naam, COALESCE(v.prioriteit,'3 - NORMAAL') prioriteit, CASE WHEN os.mld_statusopdr_omschrijving = 'Afgemeld' THEN 'Afgemeld' WHEN os.mld_statusopdr_omschrijving = 'Afgewezen' THEN 'Afgewezen' WHEN os.mld_statusopdr_omschrijving = 'Afgerond' THEN 'Afgerond' WHEN mu.intern = 1 AND os.mld_statusopdr_omschrijving = 'Toegekend' AND o.mld_opdr_plandatum IS NULL THEN 'Nog inplannen' WHEN mu.intern = 1 AND os.mld_statusopdr_omschrijving = 'Toegekend' AND o.mld_opdr_plandatum IS NOT NULL THEN 'Ingepland' WHEN mu.intern = 0 AND os.mld_statusopdr_omschrijving = 'Toegekend' AND o.mld_opdr_plandatum IS NULL THEN 'Nog niet bevestigd' WHEN mu.intern = 0 AND os.mld_statusopdr_omschrijving = 'Toegekend' AND o.mld_opdr_plandatum IS NOT NULL THEN 'Bevestigd' ELSE '' END status_kalender, d.ins_srtdiscipline_key FROM mld_opdr o, mld_melding m, mld_typeopdr ot, prs_v_perslid_fullnames p, ins_tab_discipline d, mld_stdmelding std, alg_locatie l, alg_district d, mld_v_uitvoerende mu, mld_statusopdr os, ( SELECT ko.mld_opdr_key, ud.fac_usrdata_code prioriteit FROM mld_kenmerkopdr ko, fac_usrdata ud WHERE fac.safe_to_number(ko.mld_kenmerkopdr_waarde) = ud.fac_usrdata_key AND fac_usrtab_key = 62 -- keuzelijst eigen tabel Prioriteit AND ko.mld_kenmerk_key IN (265) -- kenmerk Prioriteit ) v WHERE o.mld_melding_key = m.mld_melding_key(+) AND o.prs_perslid_key = p.prs_perslid_key(+) AND o.mld_typeopdr_key = ot.mld_typeopdr_key AND ot.mld_typeopdr_isofferte = 0 -- Alleen werkopdrachten AND o.fac_activiteit_key IS NULL -- Geen schaduwopdrachten uit geplande acties AND m.mld_stdmelding_key = std.mld_stdmelding_key(+) AND std.mld_ins_discipline_key = d.ins_discipline_key(+) AND m.mld_alg_locatie_key = l.alg_locatie_key -- alle std-meldingen hebben verplicht-niveau locatie/gebouw AND l.alg_district_key = d.alg_district_key AND o.mld_uitvoerende_keys = mu.mld_uitvoerende_key AND os.mld_statusopdr_key = o.mld_statusopdr_key AND o.mld_opdr_key = v.mld_opdr_key(+); -- bijbehorende calenderview CREATE OR REPLACE VIEW sinn_v_cal_opdrachten ( USER_KEY, TITLE, VAN, TOT, ITEM_KEY, COLOR, TEXTCOLOR, NAAM_UITVOERRDER, LOCATIE_PLAATS, STATUS_KALENDER, INTERN, OPDRACHT_TYPE, INS_SRTDISCIPLINE_KEY ) AS SELECT mld_uitvoerende_key, ' - ' || opdrachtnr || CHR(10) || naam_uitvoerder || CHR(10) || district_omschrijving || ' - ' || locatie_omschrijving || CHR(10) || gebouw_omschrijving || CHR(10) || 'Status: ' || status_kalender || CHR(10) || CASE WHEN geplande_aanvang IS NOT NULL AND geplande_einddatum IS NOT NULL THEN 'Van ' || TO_CHAR(geplande_aanvang_b) || ' tot ' || TO_CHAR(geplande_einddatum_b) WHEN geplande_aanvang IS NOT NULL AND geplande_einddatum IS NULL THEN 'Aanvang: ' || TO_CHAR(geplande_aanvang_b) WHEN geplande_aanvang IS NULL AND geplande_einddatum IS NOT NULL THEN 'Einddatum: ' || TO_CHAR(geplande_einddatum_b) ELSE '' END || CHR(10) || 'Prio: ' || prioriteit title, geplande_aanvang_b van, geplande_einddatum_b tot, mld_opdr_key, DECODE (intern, 1, DECODE (status_kalender, 'Afgewezen', '#C0C0C0', -- grijs 'Afgemeld', '#C0C0C0', -- grijs 'Afgerond', '#C0C0C0', -- grijs 'Nog inplannen', '#f58a20', -- oranje 'Ingepland', '#20b2f5', -- lichtblauw '#0000FF'), 0, DECODE (status_kalender, 'Afgewezen', '#C0C0C0', -- grijs 'Afgemeld', '#C0C0C0', -- grijs 'Afgerond', '#C0C0C0', -- grijs 'Nog niet bevestigd', '#F5ED5D', -- lichtgeel 'Bevestigd', '#DED304', -- donkergeel '#0000FF'), '#0000FF' ) color, -- DECODE (intern, 1, DECODE (status_kalender, 'Afgewezen', '#bf0b3b', -- rood 'Afgemeld', '#000000', -- zwart 'Afgerond', '#000000', -- zwart 'Nog inplannen', '#FFFFFF', -- wit, 'Ingepland', DECODE (LOWER(prioriteit), '3 - normaal', '#FFFFFF', -- wit '4 - laag', '#FFFFFF', -- wit '2 - hoog', '#f58a20', -- oranje '1 - kritiek', '#bf0b3b', -- rood '#000000'), '#000000'), 0, DECODE (status_kalender, 'Afgewezen', '#bf0b3b', -- rood 'Afgemeld', '#000000', -- zwart 'Afgerond', '#000000', -- zwart 'Nog niet bevestigd', '#000000', -- zwart 'Bevestigd', '#000000', -- zwart 'Toegekend', '#FFFFFF', -- wit, '#0000FF'), '#000000' ) textcolor, naam_uitvoerder, locatie_plaats, status_kalender, CASE WHEN intern = 0 THEN 'nee' WHEN intern = 1 THEN 'ja' ELSE NULL END intern, opdracht_type, ins_srtdiscipline_key FROM sinn_v_rap_opdrachten ORDER BY geplande_aanvang_b ; ------ payload end ------ SET DEFINE OFF BEGIN adm.systrackscriptId ('$Id$', 0); END; / COMMIT; SET ECHO OFF SPOOL OFF SET DEFINE ON PROMPT Logfile of this upgrade is: &fcltlogfile