Files
Customer/SINN/sinn.sql
2024-03-21 16:57:11 +00:00

1741 lines
74 KiB
SQL
Raw Blame History

--
-- $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 <annette.grannetia@sinnekinderopvang.nl>
-- 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!
IF fac.getsetting ('mld_melding_actiecode') = 1
THEN
UPDATE mld_melding
SET mld_melding_actiecode = 1 + 128 -- BO + Attentie
WHERE mld_melding_key = v_melding_key;
END IF;
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: <20>gedeeld postvak<61>, <20>generiek account<6E>, <20>OC<4F>, <20>RvT<76>, "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
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); -- IN PRODUCTIE KEY = 1020
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
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
MUTATIE_AFD_BEZETTING
)
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,
'klik hier - nog uitw!'
mutatie_afd_bezetting
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 ;
-- 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;
------ 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