Files
Customer/FZKH/FZKH.sql
Norbert Wassink 43e9e19ec3 FZKH#87266 -- Implementatie - MT Notificatie job
svn path=/Customer/trunk/; revision=70372
2025-09-19 14:51:20 +00:00

4853 lines
218 KiB
SQL
Raw Blame History

--
-- $Id$
--
-- Script containing customer specific sql statements for the FACILITOR database.
DEFINE thisfile = 'FZKH.SQL'
DEFINE dbuser = '^FZKH'
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 PACKAGE FZKH
AS
FUNCTION getfirststartdate(p_startdatum IN DATE, p_refdatum IN DATE, p_cyclus IN NUMBER)
RETURN DATE;
PROCEDURE update_prs2kpnvgr;
END;
/
CREATE OR REPLACE PACKAGE BODY FZKH
AS
FUNCTION getfirststartdate (p_startdatum IN DATE, p_refdatum IN DATE, p_cyclus IN NUMBER)
RETURN DATE
AS
v_startdatum DATE;
BEGIN
IF (p_startdatum < p_refdatum AND p_cyclus > 0)
THEN
v_startdatum := ADD_MONTHS (p_startdatum, p_cyclus * 12);
IF (v_startdatum < p_refdatum)
THEN
v_startdatum := fzkh.getfirststartdate (v_startdatum, p_refdatum, p_cyclus);
END IF;
ELSE
v_startdatum := p_startdatum;
END IF;
RETURN v_startdatum;
END;
-- Bijwerken vervangersgroepen (vgr) met FZKH-personen (prs) uit afdelingen
-- met dezelfde kostenplaats (kpn)!
PROCEDURE update_prs2kpnvgr
AS
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_count NUMBER (10);
-- Toevoegen vervangersgroepen voor nieuwe kostenplaatsen (waarvoor
-- nog geen vervangersgroep bestaat).
CURSOR c1 IS
SELECT '[' || TO_CHAR (kp.prs_kostenplaats_key) || '|' || kp.prs_kostenplaats_nr || '] ' aanduiding,
kp.prs_kostenplaats_key,
kp.prs_kostenplaats_nr || '_' || SUBSTR (kp.prs_kostenplaats_omschrijving, 1, 29 - LENGTH (kp.prs_kostenplaats_nr)) vervangersgroep
FROM prs_v_aanwezigkostenplaats kp
WHERE EXISTS -- SCIM-kostenplaats (in principe)
(SELECT 1
FROM prs_afdeling
WHERE prs_afdeling_verwijder IS NULL
AND prs_bedrijf_key = 2 -- Flevoziekenhuis
AND prs_kostenplaats_key = kp.prs_kostenplaats_key)
AND NOT EXISTS
(SELECT 1
FROM fac_groep
WHERE fac_groep_collega = 1
AND fac_groep_omschrijving LIKE kp.prs_kostenplaats_nr || '_%')
ORDER BY 2;
-- Toekennen vervangersgroep aan personen (= met externid) volgens
-- (afdelings)kostenplaats.
CURSOR c2 IS
SELECT '[' || TO_CHAR (g.fac_groep_key) || '|' || TO_CHAR (p.prs_perslid_key) || '] ' aanduiding,
g.fac_groep_key,
p.prs_perslid_key
FROM prs_v_aanwezigperslid p,
prs_afdeling a,
prs_v_aanwezigkostenplaats kp,
(SELECT * FROM fac_groep WHERE fac_groep_collega = 1) g
WHERE p.prs_perslid_externid IS NOT NULL -- FZKH-persoon
AND p.prs_afdeling_key = a.prs_afdeling_key
AND a.prs_afdeling_verwijder IS NULL
AND a.prs_bedrijf_key = 2 -- Flevoziekenhuis
AND a.prs_kostenplaats_key = kp.prs_kostenplaats_key
AND kp.prs_kostenplaats_nr || '_' = SUBSTR (g.fac_groep_omschrijving, 1, INSTR (g.fac_groep_omschrijving, '_'))
AND NOT EXISTS
(SELECT 1
FROM fac_gebruikersgroep
WHERE fac_groep_key = g.fac_groep_key
AND prs_perslid_key = p.prs_perslid_key)
ORDER BY 2, 3;
-- Afnemen vervangersgroep van personen (= met externid) niet volgens
-- (afdelings)kostenplaats.
CURSOR c3 IS
SELECT '[' || TO_CHAR (gg.fac_groep_key) || '|' || TO_CHAR (gg.prs_perslid_key) || '] ' aanduiding,
gg.fac_gebruikersgroep_key
FROM fac_gebruikersgroep gg,
prs_v_aanwezigperslid p,
prs_afdeling a,
prs_v_aanwezigkostenplaats pkp
WHERE gg.prs_perslid_key = p.prs_perslid_key
AND p.prs_perslid_externid IS NOT NULL -- FZKH-persoon
AND p.prs_afdeling_key = a.prs_afdeling_key
AND a.prs_afdeling_verwijder IS NULL
AND a.prs_bedrijf_key = 2 -- Flevoziekenhuis
AND a.prs_kostenplaats_key = pkp.prs_kostenplaats_key
AND EXISTS -- Alleen vervangersgroepen beginnend met prs_kostenplaats_nr afnemen!
(SELECT 1
FROM fac_groep g, prs_v_aanwezigkostenplaats gkp
WHERE g.fac_groep_collega = 1
AND g.fac_groep_omschrijving LIKE gkp.prs_kostenplaats_nr || '_%'
AND g.fac_groep_key = gg.fac_groep_key)
AND NOT EXISTS -- Vervangersgroep niet volgens (afdelings)kostenplaats!
(SELECT 1
FROM fac_groep g
WHERE g.fac_groep_collega = 1
AND g.fac_groep_omschrijving LIKE pkp.prs_kostenplaats_nr || '_%'
AND g.fac_groep_key = gg.fac_groep_key)
ORDER BY 2;
BEGIN
-- Toevoegen vervangersgroepen voor nieuwe kostenplaatsen (waarvoor
-- nog geen vervangersgroep bestaat).
v_count := 0;
v_errormsg := 'Fout toevoegen vervangersgroep';
FOR rec IN c1
LOOP
BEGIN
INSERT INTO fac_groep (fac_groep_omschrijving, fac_groep_collega)
VALUES (rec.vervangersgroep, 1);
v_count := v_count + 1;
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 ('PRS2KPNVGR', 'W', rec.aanduiding || v_errormsg, '');
END;
END LOOP;
fac.writelog ('PRS2KPNVGR', 'S', 'Vervangersgroep/#toegevoegd: ' || TO_CHAR (v_count), '');
-- Toekennen vervangersgroep aan personen (= met externid) volgens
-- (afdelings)kostenplaats.
v_count := 0;
v_errormsg := 'Fout toewijzen vervangersgroep';
FOR rec IN c2
LOOP
BEGIN
INSERT INTO fac_gebruikersgroep (fac_groep_key, prs_perslid_key)
VALUES (rec.fac_groep_key, rec.prs_perslid_key);
v_count := v_count + 1;
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 ('PRS2KPNVGR', 'W', rec.aanduiding || v_errormsg, '');
END;
END LOOP;
fac.writelog ('PRS2KPNVGR', 'S', 'Vervangersgroep/#toegekend: ' || TO_CHAR (v_count), '');
-- Afnemen vervangersgroep van personen (= met externid) niet volgens
-- (afdelings)kostenplaats.
v_count := 0;
v_errormsg := 'Fout afnemen vervangersgroep';
FOR rec IN c3
LOOP
BEGIN
DELETE FROM fac_gebruikersgroep
WHERE fac_gebruikersgroep_key = rec.fac_gebruikersgroep_key;
v_count := v_count + 1;
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 ('PRS2KPNVGR', 'W', rec.aanduiding || v_errormsg, '');
END;
END LOOP;
fac.writelog ('PRS2KPNVGR', 'S', 'Vervangersgroep/#afgenomen: ' || TO_CHAR (v_count), '');
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.writelog ('PRS2KPNVGR', 'E', v_errormsg, '');
END update_prs2kpnvgr;
END;
/
CREATE OR REPLACE PROCEDURE FZKH_import_mjobelementen (p_import_key IN NUMBER)
IS
c_delim VARCHAR2 (2) := fac.import_delimiter(p_import_key);
v_newline fac_imp_file.fac_imp_file_line%TYPE; -- Input line
v_errormsg VARCHAR2 (1000);
v_errorhint VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
header_is_valid NUMBER;
v_count_tot NUMBER (10);
v_count_import NUMBER (10);
v_ongeldig NUMBER (1);
v_aanduiding VARCHAR (400);
v_dummy VARCHAR (255);
v_ins_kenmerk_key1 VARCHAR2 (255);
v_ins_kenmerk_key2 VARCHAR2 (255);
v_ins_kenmerk_key3 VARCHAR2 (255);
v_ins_kenmerk_key4 VARCHAR2 (255);
v_ins_kenmerk_key5 VARCHAR2 (255);
v_ins_kenmerk_key6 VARCHAR2 (255);
v_ins_kenmerk_key7 VARCHAR2 (255);
v_ins_kenmerk_key8 VARCHAR2 (255);
v_ins_kenmerk_key9 VARCHAR2 (255);
v_ins_kenmerk_key10 VARCHAR2 (255);
v_ins_kenmerk_key11 VARCHAR2 (255);
v_ins_kenmerk_key12 VARCHAR2 (255);
v_ins_kenmerk_key13 VARCHAR2 (255);
v_ins_kenmerk_key14 VARCHAR2 (255);
v_ins_kenmerk_key15 VARCHAR2 (255);
v_ins_kenmerk_key16 VARCHAR2 (255);
v_ins_kenmerk_key17 VARCHAR2 (255);
v_ins_kenmerk_key18 VARCHAR2 (255);
v_ins_kenmerk_key19 VARCHAR2 (255);
v_ins_kenmerk_key20 VARCHAR2 (255);
-- De importvelden
v_ins_discipline_omschrijving VARCHAR2 (255); -- C60
v_ins_discipline_kostensoort VARCHAR2 (255); --C60
v_ins_srtgroep_omschrijving VARCHAR2 (255); -- C60
v_ins_srtdeel_code VARCHAR2 (255); -- C10
v_ins_srtdeel_omschrijving VARCHAR2 (255); -- C100
v_ins_deel_omschrijving VARCHAR2 (255); -- C60
v_ins_deel_opmerking VARCHAR2 (1000); -- C320
v_ins_deel_externnr VARCHAR2 (255); -- C60
v_alg_locatie_code VARCHAR2 (255); -- C10
v_alg_gebouw_code VARCHAR2 (255); -- C12
v_oprognose_gebouw_code VARCHAR2 (255);
v_alg_verdieping_volgnr VARCHAR2 (255); -- N3
v_alg_ruimte_nr VARCHAR2 (255); -- C20
v_ins_kenmerkwaarde1 VARCHAR2 (4053);
v_ins_kenmerkwaarde2 VARCHAR2 (4053);
v_ins_kenmerkwaarde3 VARCHAR2 (4053);
v_ins_kenmerkwaarde4 VARCHAR2 (4053);
v_ins_kenmerkwaarde5 VARCHAR2 (4053);
v_ins_kenmerkwaarde6 VARCHAR2 (4053);
v_ins_kenmerkwaarde7 VARCHAR2 (4053);
v_ins_kenmerkwaarde8 VARCHAR2 (4053);
v_ins_kenmerkwaarde9 VARCHAR2 (4053);
v_ins_kenmerkwaarde10 VARCHAR2 (4053);
v_ins_kenmerkwaarde11 VARCHAR2 (4053);
v_ins_kenmerkwaarde12 VARCHAR2 (4053);
v_ins_kenmerkwaarde13 VARCHAR2 (4053);
v_ins_kenmerkwaarde14 VARCHAR2 (4053);
v_ins_kenmerkwaarde15 VARCHAR2 (4053);
v_ins_kenmerkwaarde16 VARCHAR2 (4053);
v_ins_kenmerkwaarde17 VARCHAR2 (4053);
v_ins_kenmerkwaarde18 VARCHAR2 (4053);
v_ins_kenmerkwaarde19 VARCHAR2 (4053);
v_ins_kenmerkwaarde20 VARCHAR2 (4053);
v_ins_deel_aanmaak VARCHAR2 (255); -- DATE
v_ins_deel_aanmaak_d DATE;
v_ins_deel_vervaldatum VARCHAR2 (255); -- DATE
v_ins_deel_vervaldatum_d DATE;
v_ins_deel_aantal VARCHAR2 (255); -- N8,2
v_ins_deel_aantal_n NUMBER(8, 2);
v_file_index NUMBER;
v_alg_gebouw_key NUMBER;
v_alg_verdieping_key NUMBER;
v_alg_ruimte_key NUMBER;
v_ins_deel_key NUMBER;
v_ins_srtdeel_key NUMBER;
v_ins_srtgroep_key NUMBER;
v_ins_discipline_key NUMBER;
v_ins_deel_volgnr NUMBER;
-- Overige velden:
CURSOR c1
IS
SELECT *
FROM fac_imp_file
WHERE fac_import_key = p_import_key
ORDER BY fac_imp_file_index;
CURSOR c IS
SELECT *
FROM fac_imp_ins
ORDER BY alg_gebouw_code, ins_deel_omschrijving;
-- Controleer tijdens import-fase alleen op het bestaan van een kenmerk met de meegegeven omschrijving of kenmerk key.
-- De omschrijving (header van kolom) kan de omschrijving zijn van het kenmerksoort of het kenmerk.
-- De omschrijving van het kenmerksoort kan namelijk overruled worden door de omschrijving van het kenmerk.
-- Daarnaast kan hetzelfde kenmerk vaker voorkomen voor verschillende groepen.
-- Of het kenmerksoort/kenmerk wel is gedefinieerd voor de betreffende
-- object-discipline/groep/soort, volgt pas tijdens de update-fase)!
--
-- p_kw is bijvoorbeeld 'Parkeercode', 'Parkeercode|3', 234 of 234|3 waarbij de tweede en laatste in groep 3 zitten
-- het resultaat is NULL (als niet gevonden) of Parkeercode|3 of 234|3 voor kenmer_key 234 in groep 3
-- Als geen groep is meegegeven dan wordt 'Parkeercode|0' opgeleverd (de default groep)
FUNCTION bepaal_kenmerk (p_kw IN VARCHAR)
RETURN VARCHAR
IS
v_kenmerk_key NUMBER;
v_kenmerk_groep NUMBER;
v_kw VARCHAR(250);
BEGIN
v_kenmerk_groep := 0;
v_kw := p_kw;
IF INSTR (v_kw, '|') > 1
THEN
v_kenmerk_groep := SUBSTR (v_kw, INSTR (v_kw, '|') + 1);
v_kw := SUBSTR (v_kw, 1, INSTR (v_kw, '|') - 1);
END IF;
IF fac.safe_to_number (v_kw) IS NULL
THEN -- kenmerkwaarde is alfanumeriek (dus omschrijving)!
SELECT MIN(k.ins_kenmerk_key)
INTO v_kenmerk_key
FROM ins_v_aanwezigkenmerk k,
ins_v_aanwezigsrtkenmerk sk
WHERE k.ins_srtkenmerk_key = sk.ins_srtkenmerk_key
AND k.ins_kenmerk_groep = v_kenmerk_groep
AND COALESCE(UPPER(k.ins_kenmerk_omschrijving), sk.ins_srtkenmerk_upper) = UPPER(v_kw)
AND sk.ins_srtkenmerk_kenmerktype IN ('C', 'D', 'N', 'R', 'S', 'X', 'B', 'V');
ELSE -- kenmerkwaarde is numeriek (dus key)!
SELECT k.ins_kenmerk_key
INTO v_kenmerk_key
FROM ins_v_aanwezigkenmerk k,
ins_v_aanwezigsrtkenmerk sk
WHERE k.ins_srtkenmerk_key = sk.ins_srtkenmerk_key
AND k.ins_kenmerk_groep = v_kenmerk_groep
AND k.ins_kenmerk_key = fac.safe_to_number (v_kw)
AND sk.ins_srtkenmerk_kenmerktype IN ('C', 'D', 'N', 'R', 'S', 'X', 'B', 'V');
END IF;
IF v_kenmerk_key IS NULL
THEN
RETURN NULL;
ELSE
-- Er is een kenmerksoort of kenmerk aanwezig met de omschrijving/kenmerk_key (v_kw)
RETURN v_kw || '|' || TO_CHAR(v_kenmerk_groep);
END IF;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
IF p_kw IS NULL OR UPPER (p_kw) LIKE 'KENMERK%'
THEN
RETURN NULL;
ELSE
fac.imp_writelog (p_import_key,
'W',
'Fout bij bepalen kenmerk [' || p_kw || ']',
'Bestaat niet of type ongeldig');
COMMIT;
RETURN NULL;
END IF;
END;
BEGIN
-- Eerst opruiming
DELETE FROM fac_imp_ins;
COMMIT;
v_count_tot := 0;
v_count_import := 0;
header_is_valid := 0;
FOR rec1 IN c1
LOOP
BEGIN
v_newline := rec1.fac_imp_file_line;
v_file_index := rec1.fac_imp_file_index;
v_errormsg := 'Fout bij opvragen importregel';
v_aanduiding := '';
v_ongeldig := 0;
-- Lees alle veldwaarden
fac.imp_getfield (v_newline, c_delim, v_oprognose_gebouw_code); -- Objectcode
fac.imp_getfield (v_newline, c_delim, v_ins_srtdeel_code); -- Componentcode
fac.imp_getfield (v_newline, c_delim, v_ins_deel_externnr); -- Element-ID
fac.imp_getfield (v_newline, c_delim, v_ins_deel_opmerking); -- Component omschrijving
-- fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde1); -- Opmerkingen//
fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde2); -- Fabrikant
fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde3); -- Kenmerken
fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde4); -- Type
fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde5); -- Cap
fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde6); -- Eenheid Cap
fac.imp_getfield (v_newline, c_delim, v_ins_deel_aantal); -- Aantal
fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde7); -- Eenheid aantal
fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde8); -- Bouwjaar
fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde9); -- Foto
fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde10);
fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde11);
fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde12);
fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde13);
fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde14);
fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde15);
fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde16);
fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde17);
fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde18);
fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde19);
fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde20);
v_aanduiding :=
'['
|| v_alg_gebouw_code
|| '|'
|| v_ins_deel_externnr
|| '|'
|| v_ins_srtdeel_code
|| '] ';
-- Ik controleer of ik een geldige header heb, dat is: in de juiste kolommen
-- de juiste kolomkop. Ik controleer daarbij alle NIET-kenmerk kolommen!
-- Ik negeer alles totdat ik een geldige header ben gepasseerd.
IF (header_is_valid = 0)
THEN
IF UPPER (v_oprognose_gebouw_code) = 'GEBOUW_CODE'
AND UPPER (v_ins_srtdeel_code) = 'SRTDEEL_CODE'
AND UPPER (v_ins_deel_externnr) = 'DEEL_EXTERNNR'
AND UPPER (v_ins_deel_opmerking) = 'DEEL_OPMERKING'
AND UPPER (v_ins_kenmerkwaarde2) = 'FABRIKANT'
AND UPPER (v_ins_kenmerkwaarde3) = 'OPMERKINGEN'
AND UPPER (v_ins_kenmerkwaarde4) = 'TYPE'
AND UPPER (v_ins_kenmerkwaarde5) = 'CAP'
AND UPPER (v_ins_kenmerkwaarde6) = 'EENHEID CAP'
AND UPPER (v_ins_deel_aantal) = 'DEEL_AANTAL'
AND UPPER (v_ins_kenmerkwaarde7) = 'EENHEID AANTAL'
AND UPPER (v_ins_kenmerkwaarde8) = 'BOUWJAAR'
AND UPPER (v_ins_kenmerkwaarde9) = 'FOTO'
THEN
v_ins_kenmerk_key1 := bepaal_kenmerk (v_ins_kenmerkwaarde1);
v_ins_kenmerk_key2 := bepaal_kenmerk (v_ins_kenmerkwaarde2);
v_ins_kenmerk_key3 := bepaal_kenmerk (v_ins_kenmerkwaarde3);
v_ins_kenmerk_key4 := bepaal_kenmerk (v_ins_kenmerkwaarde4);
v_ins_kenmerk_key5 := bepaal_kenmerk (v_ins_kenmerkwaarde5);
v_ins_kenmerk_key6 := bepaal_kenmerk (v_ins_kenmerkwaarde6);
v_ins_kenmerk_key7 := bepaal_kenmerk (v_ins_kenmerkwaarde7);
v_ins_kenmerk_key8 := bepaal_kenmerk (v_ins_kenmerkwaarde8);
v_ins_kenmerk_key9 := bepaal_kenmerk (v_ins_kenmerkwaarde9);
v_ins_kenmerk_key10 := bepaal_kenmerk (v_ins_kenmerkwaarde10);
v_ins_kenmerk_key11 := bepaal_kenmerk (v_ins_kenmerkwaarde11);
v_ins_kenmerk_key12 := bepaal_kenmerk (v_ins_kenmerkwaarde12);
v_ins_kenmerk_key13 := bepaal_kenmerk (v_ins_kenmerkwaarde13);
v_ins_kenmerk_key14 := bepaal_kenmerk (v_ins_kenmerkwaarde14);
v_ins_kenmerk_key15 := bepaal_kenmerk (v_ins_kenmerkwaarde15);
v_ins_kenmerk_key16 := bepaal_kenmerk (v_ins_kenmerkwaarde16);
v_ins_kenmerk_key17 := bepaal_kenmerk (v_ins_kenmerkwaarde17);
v_ins_kenmerk_key18 := bepaal_kenmerk (v_ins_kenmerkwaarde18);
v_ins_kenmerk_key19 := bepaal_kenmerk (v_ins_kenmerkwaarde19);
v_ins_kenmerk_key20 := bepaal_kenmerk (v_ins_kenmerkwaarde20);
header_is_valid := 1;
ELSE
IF rec1.fac_imp_file_index = 1
THEN
fac.imp_writelog (p_import_key,
'E',
'Ongeldige header aangetroffen:',
'GEBOUW_CODE: ' || UPPER (v_oprognose_gebouw_code) || CHR(10) ||
'SRTDEEL_CODE: ' || UPPER (v_ins_srtdeel_code) || CHR(10) ||
'DEEL_EXTERNNR: ' || UPPER (v_ins_deel_externnr) || CHR(10) ||
'DEEL_OPMERKING: ' || UPPER (v_ins_deel_opmerking) || CHR(10) ||
'FABRIKANT: ' || UPPER (v_ins_kenmerkwaarde2) || CHR(10) ||
'OPMERKINGEN: ' || UPPER (v_ins_kenmerkwaarde3) || CHR(10) ||
'TYPE: ' || UPPER (v_ins_kenmerkwaarde4) || CHR(10) ||
'CAP: ' || UPPER (v_ins_kenmerkwaarde5) || CHR(10) ||
'EENHEID CAP: ' || UPPER (v_ins_kenmerkwaarde6) || CHR(10) ||
'DEEL_AANTAL: ' || UPPER (v_ins_deel_aantal) || CHR(10) ||
'EENHEID AANTAL: ' || UPPER (v_ins_kenmerkwaarde7) || CHR(10) ||
'BOUWJAAR: ' || UPPER (v_ins_kenmerkwaarde8) || CHR(10) ||
'FOTO: ' || UPPER (v_ins_kenmerkwaarde9));
END IF;
END IF;
ELSE
v_count_tot := v_count_tot + 1;
-- Controleer alle veldwaarden
v_errormsg := 'Gebouwcode kan niet gevonden worden';
v_oprognose_gebouw_code := TRIM (v_oprognose_gebouw_code);
SELECT alg_gebouw_key, alg_gebouw_code, alg_locatie_code
INTO v_alg_gebouw_key, v_alg_gebouw_code, v_alg_locatie_code
FROM alg_gebouw g, alg_locatie l, alg_onrgoedkenmerk aok, alg_kenmerk ak
WHERE g.alg_locatie_key = l.alg_locatie_key
AND alg_gebouw_verwijder IS NULL
AND aok.alg_onrgoed_key = g.alg_gebouw_key
AND aok.alg_onrgoed_niveau='G'
AND ak.alg_kenmerk_key = aok.alg_kenmerk_key
AND ak.alg_kenmerk_code='OPROGNOSE_CODE'
AND UPPER(aok.alg_onrgoedkenmerk_waarde) = UPPER(v_oprognose_gebouw_code);
v_alg_verdieping_volgnr := 0;
BEGIN
SELECT alg_verdieping_key
INTO v_alg_verdieping_key
FROM alg_verdieping
WHERE alg_verdieping_verwijder IS NULL
AND alg_gebouw_key = v_alg_gebouw_key
AND alg_verdieping_volgnr = 0;
EXCEPTION WHEN NO_DATA_FOUND
THEN
INSERT INTO alg_verdieping (alg_gebouw_key, alg_verdieping_volgnr, alg_verdieping_omschrijving, alg_verdieping_code)
VALUES (v_alg_gebouw_key, 0, 'Begane grond', '0')
RETURNING alg_verdieping_key INTO v_alg_verdieping_key;
fac.imp_writelog (p_import_key, 'I', v_aanduiding, 'Verdieping aangemaakt');
END;
v_alg_ruimte_nr := '_';
BEGIN
SELECT alg_ruimte_key
INTO v_alg_ruimte_key
FROM alg_ruimte
WHERE alg_ruimte_verwijder IS NULL
AND alg_verdieping_key = v_alg_verdieping_key
AND alg_ruimte_nr = '_';
EXCEPTION WHEN NO_DATA_FOUND
THEN
INSERT INTO alg_ruimte (alg_verdieping_key, alg_ruimte_nr, alg_ruimte_omschrijving)
VALUES (v_alg_verdieping_key, '_', 'MJOP ruimte')
RETURNING alg_ruimte_key INTO v_alg_ruimte_key;
fac.imp_writelog (p_import_key, 'I', v_aanduiding, 'Ruimte aangemaakt');
END;
--
v_errormsg := 'Bepaal objectsoort';
BEGIN
v_ins_srtdeel_code := TRIM(v_ins_srtdeel_code);
SELECT ins_srtdeel_omschrijving, ins_srtdeel_key, ins_srtgroep_key
INTO v_ins_srtdeel_omschrijving, v_ins_srtdeel_key, v_ins_srtgroep_key
FROM ins_srtdeel
WHERE ins_srtdeel_verwijder IS NULL
AND ins_srtdeel_code = SUBSTR(v_ins_srtdeel_code,1,4);
v_errormsg := 'Bepaal objectgroep';
SELECT ins_srtgroep_omschrijving, ins_discipline_key
INTO v_ins_srtgroep_omschrijving, v_ins_discipline_key
FROM ins_srtgroep
WHERE ins_srtgroep_key = v_ins_srtgroep_key;
v_errormsg := 'Bepaal discipline';
SELECT ins_discipline_omschrijving
INTO v_ins_discipline_omschrijving
FROM ins_discipline
WHERE ins_discipline_key = v_ins_discipline_key;
EXCEPTION WHEN NO_DATA_FOUND
THEN
v_errormsg := 'Nieuwe NL/SfB code';
v_ins_discipline_omschrijving := 'MJOB';
v_ins_srtdeel_omschrijving := SUBSTR(v_ins_srtdeel_code,1,4) || '-Onbekend';
BEGIN
SELECT ins_srtgroep_omschrijving
INTO v_ins_srtgroep_omschrijving
FROM ins_v_srtgroep_gegevens
WHERE ins_discipline_omschrijving = 'MJOB'
AND SUBSTR(v_ins_srtdeel_code, 1, 2) = SUBSTR(ins_srtgroep_omschrijving, 1,2);
EXCEPTION WHEN NO_DATA_FOUND
THEN
v_ins_srtgroep_omschrijving := SUBSTR(v_ins_srtdeel_code, 1, 2) || '-Onbekend';
END;
END;
BEGIN
v_errormsg := 'Bepaal object id - Kijk of het externnr bestaat';
SELECT d.ins_deel_omschrijving
INTO v_ins_deel_omschrijving
FROM ins_v_deel_gegevens dg, ins_deel d
WHERE dg.ins_deel_key = d.ins_deel_key
AND dg.alg_gebouw_upper = v_alg_gebouw_code
AND d.ins_deel_externnr = v_ins_deel_externnr;
EXCEPTION WHEN NO_DATA_FOUND
THEN
v_ins_deel_omschrijving := NULL;
END;
IF v_ins_deel_omschrijving IS NULL
THEN
v_errormsg := 'Bepaal object id - maak een nieuw nummer aan';
SELECT MAX(FAC.safe_to_number(SUBSTR(ins_deel_omschrijving, INSTR(ins_deel_omschrijving, '-')+1, 100)))
INTO v_ins_deel_volgnr
FROM ins_v_deel_gegevens
WHERE ins_discipline_omschrijving = 'MJOB'
AND ins_deel_omschrijving LIKE v_ins_srtdeel_code || '%';
IF v_ins_deel_volgnr IS NULL
THEN
v_ins_deel_volgnr := 0;
END IF;
-- v_ins_deel_omschrijving := v_ins_srtdeel_code || LPAD(v_ins_deel_volgnr + 1, 3, '0');
v_ins_deel_omschrijving := v_ins_srtdeel_code||'-'||v_ins_deel_externnr;
END IF;
v_errormsg := 'Objectopmerking ongeldig';
v_ins_deel_opmerking := TRIM (v_ins_deel_opmerking);
IF LENGTH (v_ins_deel_opmerking) > 320
THEN
v_ins_deel_opmerking := SUBSTR (v_ins_deel_opmerking, 1, 320);
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding || v_errormsg,
'Objectopmerking wordt afgebroken tot ['
|| v_ins_deel_opmerking
|| ']'
);
END IF;
--
v_errormsg := 'Aantal ongeldig; maximale grootte 999999.99';
v_ins_deel_aantal := TRIM (v_ins_deel_aantal);
v_ins_deel_aantal := REPLACE (v_ins_deel_aantal, ',', '.');
v_ins_deel_aantal_n := NULL;
IF (v_ins_deel_aantal IS NOT NULL AND fac.getSetting('ins_explode_objects') = 0)
THEN
IF (fac.safe_to_number (v_ins_deel_aantal) = 0)
THEN
v_ins_deel_aantal_n:=999;
ELSIF (fac.safe_to_number (v_ins_deel_aantal) IS NULL)
THEN
v_ongeldig := 1;
fac.imp_writelog (p_import_key,
'W',
v_aanduiding || v_errormsg,
'Regel wordt overgeslagen!');
ELSE
v_ins_deel_aantal_n := fac.safe_to_number (v_ins_deel_aantal);
END IF;
ELSE
v_ins_deel_aantal_n := 1;
END IF;
--
v_errorhint := 'Bepaling registratiedatum';
v_ins_kenmerkwaarde8 := TRIM(v_ins_kenmerkwaarde8);
IF v_ins_kenmerkwaarde8 IS NOT NULL AND LENGTH(v_ins_kenmerkwaarde8) = 4
THEN
v_ins_deel_aanmaak := '01-01-' || TRIM(v_ins_kenmerkwaarde8);
v_ins_deel_aanmaak_d := TO_DATE(v_ins_deel_aanmaak, 'dd-mm-yyyy');
END IF;
-- De rest alleen ff trimmen.
v_ins_kenmerkwaarde1 := TRIM (v_ins_kenmerkwaarde1);
v_ins_kenmerkwaarde2 := TRIM (v_ins_kenmerkwaarde2);
v_ins_kenmerkwaarde3 := TRIM (v_ins_kenmerkwaarde3);
v_ins_kenmerkwaarde4 := TRIM (v_ins_kenmerkwaarde4);
v_ins_kenmerkwaarde5 := TRIM (v_ins_kenmerkwaarde5);
v_ins_kenmerkwaarde6 := TRIM (v_ins_kenmerkwaarde6);
v_ins_kenmerkwaarde7 := TRIM (v_ins_kenmerkwaarde7);
v_ins_kenmerkwaarde8 := TRIM (v_ins_kenmerkwaarde8);
v_ins_kenmerkwaarde9 := TRIM (v_ins_kenmerkwaarde9);
v_ins_kenmerkwaarde10 := TRIM (v_ins_kenmerkwaarde10);
v_ins_kenmerkwaarde11 := TRIM (v_ins_kenmerkwaarde11);
v_ins_kenmerkwaarde12 := TRIM (v_ins_kenmerkwaarde12);
v_ins_kenmerkwaarde13 := TRIM (v_ins_kenmerkwaarde13);
v_ins_kenmerkwaarde14 := TRIM (v_ins_kenmerkwaarde14);
v_ins_kenmerkwaarde15 := TRIM (v_ins_kenmerkwaarde15);
v_ins_kenmerkwaarde16 := TRIM (v_ins_kenmerkwaarde16);
v_ins_kenmerkwaarde17 := TRIM (v_ins_kenmerkwaarde17);
v_ins_kenmerkwaarde18 := TRIM (v_ins_kenmerkwaarde18);
v_ins_kenmerkwaarde19 := TRIM (v_ins_kenmerkwaarde19);
v_ins_kenmerkwaarde20 := TRIM (v_ins_kenmerkwaarde20);
-- Insert geformatteerde import record
IF v_ongeldig = 0
THEN
BEGIN
v_errormsg := 'Fout bij wegschrijven importregel';
-- Als uit kenmerkheader een geldige kenmerksoort-key volgt,
-- dan is kenmerkwaarde<n> gevuld met <key>=<waarde>; zoniet,
-- dan is kenmerkwaarde<n> gevuld met <waarde>!
-- NB. Een NULL-waarde resulteert NIET in het wissen van een
-- kenmerkveld (bijwerken kan wel, maar wissen dus niet)!
INSERT INTO fac_imp_ins (
ins_discipline_omschrijving,
ins_discipline_kostensoort,
ins_srtgroep_omschrijving,
ins_srtdeel_code,
ins_srtdeel_omschrijving,
ins_deel_omschrijving,
ins_deel_opmerking,
alg_locatie_code,
alg_gebouw_code,
alg_verdieping_volgnr,
alg_ruimte_nr,
ins_kenmerkwaarde1,
ins_kenmerkwaarde2,
ins_kenmerkwaarde3,
ins_kenmerkwaarde4,
ins_kenmerkwaarde5,
ins_kenmerkwaarde6,
ins_kenmerkwaarde7,
ins_kenmerkwaarde8,
ins_kenmerkwaarde9,
ins_kenmerkwaarde10,
ins_kenmerkwaarde11,
ins_kenmerkwaarde12,
ins_kenmerkwaarde13,
ins_kenmerkwaarde14,
ins_kenmerkwaarde15,
ins_kenmerkwaarde16,
ins_kenmerkwaarde17,
ins_kenmerkwaarde18,
ins_kenmerkwaarde19,
ins_kenmerkwaarde20,
ins_deel_aanmaak,
ins_deel_aantal,
ins_deel_externnr
)
VALUES (
v_ins_discipline_omschrijving,
v_ins_discipline_kostensoort,
v_ins_srtgroep_omschrijving,
SUBSTR(v_ins_srtdeel_code,1,4),
v_ins_srtdeel_omschrijving,
v_ins_deel_omschrijving,
v_ins_deel_opmerking,
v_alg_locatie_code,
v_alg_gebouw_code,
v_alg_verdieping_volgnr,
v_alg_ruimte_nr,
DECODE (v_ins_kenmerk_key1, NULL, v_ins_kenmerkwaarde1, DECODE(v_ins_kenmerk_key1, NULL, NULL, TO_CHAR (v_ins_kenmerk_key1) || '=' || SUBSTR (v_ins_kenmerkwaarde1, 1, 3900))),
DECODE (v_ins_kenmerk_key2, NULL, v_ins_kenmerkwaarde2, DECODE(v_ins_kenmerk_key2, NULL, NULL, TO_CHAR (v_ins_kenmerk_key2) || '=' || SUBSTR (v_ins_kenmerkwaarde2, 1, 3900))),
DECODE (v_ins_kenmerk_key3, NULL, v_ins_kenmerkwaarde3, DECODE(v_ins_kenmerk_key3, NULL, NULL, TO_CHAR (v_ins_kenmerk_key3) || '=' || SUBSTR (v_ins_kenmerkwaarde3, 1, 3900))),
DECODE (v_ins_kenmerk_key4, NULL, v_ins_kenmerkwaarde4, DECODE(v_ins_kenmerk_key4, NULL, NULL, TO_CHAR (v_ins_kenmerk_key4) || '=' || SUBSTR (v_ins_kenmerkwaarde4, 1, 3900))),
DECODE (v_ins_kenmerk_key5, NULL, v_ins_kenmerkwaarde5, DECODE(v_ins_kenmerk_key5, NULL, NULL, TO_CHAR (v_ins_kenmerk_key5) || '=' || SUBSTR (v_ins_kenmerkwaarde5, 1, 3900))),
DECODE (v_ins_kenmerk_key6, NULL, v_ins_kenmerkwaarde6, DECODE(v_ins_kenmerk_key6, NULL, NULL, TO_CHAR (v_ins_kenmerk_key6) || '=' || SUBSTR (v_ins_kenmerkwaarde6, 1, 3900))),
DECODE (v_ins_kenmerk_key7, NULL, v_ins_kenmerkwaarde7, DECODE(v_ins_kenmerk_key7, NULL, NULL, TO_CHAR (v_ins_kenmerk_key7) || '=' || SUBSTR (v_ins_kenmerkwaarde7, 1, 3900))),
DECODE (v_ins_kenmerk_key8, NULL, v_ins_kenmerkwaarde8, DECODE(v_ins_kenmerk_key8, NULL, NULL, TO_CHAR (v_ins_kenmerk_key8) || '=' || SUBSTR (v_ins_kenmerkwaarde8, 1, 3900))),
DECODE (v_ins_kenmerk_key9, NULL, v_ins_kenmerkwaarde9, DECODE(v_ins_kenmerk_key9, NULL, NULL, TO_CHAR (v_ins_kenmerk_key9) || '=' || SUBSTR (v_ins_kenmerkwaarde9, 1, 3900))),
DECODE (v_ins_kenmerk_key10, NULL, v_ins_kenmerkwaarde10, DECODE(v_ins_kenmerk_key10, NULL, NULL, TO_CHAR (v_ins_kenmerk_key10) || '=' || SUBSTR (v_ins_kenmerkwaarde10, 1, 3900))),
DECODE (v_ins_kenmerk_key11, NULL, v_ins_kenmerkwaarde11, DECODE(v_ins_kenmerk_key11, NULL, NULL, TO_CHAR (v_ins_kenmerk_key11) || '=' || SUBSTR (v_ins_kenmerkwaarde11, 1, 3900))),
DECODE (v_ins_kenmerk_key12, NULL, v_ins_kenmerkwaarde12, DECODE(v_ins_kenmerk_key12, NULL, NULL, TO_CHAR (v_ins_kenmerk_key12) || '=' || SUBSTR (v_ins_kenmerkwaarde12, 1, 3900))),
DECODE (v_ins_kenmerk_key13, NULL, v_ins_kenmerkwaarde13, DECODE(v_ins_kenmerk_key13, NULL, NULL, TO_CHAR (v_ins_kenmerk_key13) || '=' || SUBSTR (v_ins_kenmerkwaarde13, 1, 3900))),
DECODE (v_ins_kenmerk_key14, NULL, v_ins_kenmerkwaarde14, DECODE(v_ins_kenmerk_key14, NULL, NULL, TO_CHAR (v_ins_kenmerk_key14) || '=' || SUBSTR (v_ins_kenmerkwaarde14, 1, 3900))),
DECODE (v_ins_kenmerk_key15, NULL, v_ins_kenmerkwaarde15, DECODE(v_ins_kenmerk_key15, NULL, NULL, TO_CHAR (v_ins_kenmerk_key15) || '=' || SUBSTR (v_ins_kenmerkwaarde15, 1, 3900))),
DECODE (v_ins_kenmerk_key16, NULL, v_ins_kenmerkwaarde16, DECODE(v_ins_kenmerk_key16, NULL, NULL, TO_CHAR (v_ins_kenmerk_key16) || '=' || SUBSTR (v_ins_kenmerkwaarde16, 1, 3900))),
DECODE (v_ins_kenmerk_key17, NULL, v_ins_kenmerkwaarde17, DECODE(v_ins_kenmerk_key17, NULL, NULL, TO_CHAR (v_ins_kenmerk_key17) || '=' || SUBSTR (v_ins_kenmerkwaarde17, 1, 3900))),
DECODE (v_ins_kenmerk_key18, NULL, v_ins_kenmerkwaarde18, DECODE(v_ins_kenmerk_key18, NULL, NULL, TO_CHAR (v_ins_kenmerk_key18) || '=' || SUBSTR (v_ins_kenmerkwaarde18, 1, 3900))),
DECODE (v_ins_kenmerk_key19, NULL, v_ins_kenmerkwaarde19, DECODE(v_ins_kenmerk_key19, NULL, NULL, TO_CHAR (v_ins_kenmerk_key19) || '=' || SUBSTR (v_ins_kenmerkwaarde19, 1, 3900))),
DECODE (v_ins_kenmerk_key20, NULL, v_ins_kenmerkwaarde20, DECODE(v_ins_kenmerk_key20, NULL, NULL, TO_CHAR (v_ins_kenmerk_key20) || '=' || SUBSTR (v_ins_kenmerkwaarde20, 1, 3900))),
v_ins_deel_aanmaak_d,
v_ins_deel_aantal_n,
v_ins_deel_externnr
);
COMMIT;
v_count_import := v_count_import + 1;
END;
END IF;
END IF;
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.imp_writelog (p_import_key,
'W',
v_aanduiding || v_errormsg,
'');
COMMIT;
END;
END LOOP;
IF (header_is_valid = 1)
THEN
fac.imp_writelog (
p_import_key,
'S',
'Objecten/aantal ingelezen importregels: ' || TO_CHAR (v_count_tot),
''
);
fac.imp_writelog (
p_import_key,
'S',
'Objecten/aantal ongeldige niet ingelezen importregels: '
|| TO_CHAR (v_count_tot - v_count_import),
''
);
END IF;
COMMIT;
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.imp_writelog (p_import_key,
'E',
v_aanduiding || v_errormsg,
'Inleesproces objecten afgebroken! regel:' || v_file_index);
END;
/
CREATE OR REPLACE PROCEDURE fzkh_update_mjobelementen (
p_import_key IN NUMBER)
IS
v_aanduiding VARCHAR (400);
v_kenmerk_foto NUMBER;
BEGIN
fac_update_ins (p_import_key);
BEGIN
v_aanduiding:='Ophalen oprognose kenmerk key is mislukt';
SELECT i.ins_kenmerk_key
INTO v_kenmerk_foto
FROM ins_kenmerk i
where i.ins_kenmerk_code='OPROGNOSE_FOTO'
AND i.ins_kenmerk_verwijder IS NULL;
UPDATE ins_deel i
SET i.ins_deel_image = (SELECT ins_kenmerkdeel_waarde
FROM ins_kenmerkdeel
WHERE ins_deel_key=i.ins_deel_key
AND ins_kenmerk_key=v_kenmerk_foto)
WHERE i.ins_deel_key IN (SELECT ins_deel_key
FROM ins_kenmerkdeel
WHERE ins_kenmerk_key=v_kenmerk_foto);
EXCEPTION
WHEN NO_DATA_FOUND THEN
fac.imp_writelog (p_import_key,
'W',
v_aanduiding,
'Afbeelding objecten updaten !');
END;
END;
/
-- EINE MJOB Elementen Import
CREATE OR REPLACE PROCEDURE fzkh_import_mjobtaken (p_import_key IN NUMBER)
IS
c_delim VARCHAR2 (2) := fac.import_delimiter(p_import_key);
v_newline fac_imp_file.fac_imp_file_line%TYPE; -- Input line
v_errormsg VARCHAR2 (1000);
v_errorhint VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
header_is_valid NUMBER;
v_count_tot NUMBER (10);
v_count_import NUMBER (10);
v_ongeldig NUMBER (1);
v_aanduiding VARCHAR (400);
v_dummy VARCHAR (255);
v_oprognose_gebouw_code VARCHAR2 (255);
v_alg_gebouw_code VARCHAR2 (255); --VARCHAR2(12),
v_alg_locatie_code VARCHAR2 (255); --VARCHAR2(12),
v_ins_deel_externnr VARCHAR2 (255); --VARCHAR2(256),
v_ins_deel_omschrijving VARCHAR2 (255); --VARCHAR2(60),
v_ins_srtcontrole_omschrijving VARCHAR2 (255); --VARCHAR2(60),
v_ins_srtcontrole_level VARCHAR2 (255); --NUMBER(3),
v_ins_srtcontroledl_xcp_materia VARCHAR2 (255); --NUMBER(9,2),
v_ins_srtcontroledl_xcp_aantal VARCHAR2 (255); --NUMBER(8,2),
v_ins_srtcontroledl_xcp_startdat VARCHAR2 (255); --DATE,
v_ins_srtcontroledl_xcp_periode VARCHAR2 (255); --NUMBER(6,2)
v_ins_srtcontroledl_xcp_perc VARCHAR2 (255); --NUMBER(3)
v_ins_srtcontroledl_xcp_eenh VARCHAR2 (255);
v_file_index NUMBER;
CURSOR c1
IS
SELECT *
FROM fac_imp_file
WHERE fac_import_key = p_import_key
ORDER BY fac_imp_file_index;
BEGIN
-- Eerst opruiming
v_count_tot := 0;
v_count_import := 0;
header_is_valid := 0;
FOR rec1 IN c1
LOOP
BEGIN
v_newline := rec1.fac_imp_file_line;
v_file_index := rec1.fac_imp_file_index;
v_errormsg := 'Fout bij opvragen importregel';
v_aanduiding := '';
v_ongeldig := 0;
-- Lees alle veldwaarden
fac.imp_getfield (v_newline, c_delim, v_oprognose_gebouw_code);
fac.imp_getfield (v_newline, c_delim, v_ins_deel_externnr);
fac.imp_getfield (v_newline, c_delim, v_ins_deel_omschrijving);
fac.imp_getfield (v_newline, c_delim, v_ins_srtcontrole_omschrijving);
fac.imp_getfield (v_newline, c_delim, v_ins_srtcontroledl_xcp_materia);
fac.imp_getfield (v_newline, c_delim, v_ins_srtcontroledl_xcp_aantal);
fac.imp_getfield (v_newline, c_delim, v_ins_srtcontrole_level);
fac.imp_getfield (v_newline, c_delim, v_ins_srtcontroledl_xcp_startdat);
fac.imp_getfield (v_newline, c_delim, v_ins_srtcontroledl_xcp_periode);
fac.imp_getfield (v_newline, c_delim, v_ins_srtcontroledl_xcp_perc);
fac.imp_getfield (v_newline, c_delim, v_ins_srtcontroledl_xcp_eenh);
v_aanduiding :=
'['
|| v_alg_gebouw_code
|| '|'
|| v_ins_deel_externnr
|| '|'
|| v_ins_deel_omschrijving
|| '|'
|| v_ins_srtcontrole_omschrijving
|| '] ';
-- Ik controleer of ik een geldige header heb, dat is: in de juiste kolommen
-- de juiste kolomkop. Ik controleer daarbij alle NIET-kenmerk kolommen!
-- Ik negeer alles totdat ik een geldige header ben gepasseerd.
IF (header_is_valid = 0)
THEN
IF UPPER (v_oprognose_gebouw_code) = 'GEBOUW_CODE'
AND UPPER (v_ins_deel_externnr) = 'DEEL_EXTERNNR'
AND UPPER (v_ins_deel_omschrijving) = 'DEEL_OMSCHRIJVING'
AND UPPER (v_ins_srtcontrole_omschrijving) = 'SRTCONTROLE_OMSCHRIJVING'
AND UPPER (v_ins_srtcontroledl_xcp_materia) = 'SRTCONTROLEDL_XCP_MATERIA'
AND UPPER (v_ins_srtcontroledl_xcp_aantal) = 'SRTCONTROLEDL_XCP_AANTAL'
AND UPPER (v_ins_srtcontrole_level) = 'SRTCONTROLE_LEVEL'
AND UPPER (v_ins_srtcontroledl_xcp_startdat) = 'SRTCONTROLE_STARTJAAR'
AND UPPER (v_ins_srtcontroledl_xcp_periode) = 'SRTCONTROLE_PERIODE'
AND UPPER (v_ins_srtcontroledl_xcp_perc) = 'SRTCONTROLE_PERCENTAGE'
THEN
header_is_valid := 1;
ELSE
IF rec1.fac_imp_file_index = 1
THEN
fac.imp_writelog (p_import_key,
'E',
'Ongeldige header aangetroffen:',
'GEBOUW_CODE: ' || UPPER (v_oprognose_gebouw_code) || CHR(10) ||
'DEEL_EXTERNNR: ' || UPPER (v_ins_deel_externnr) || CHR(10) ||
'DEEL_OMSCHRIJVING: ' || UPPER (v_ins_deel_omschrijving) || CHR(10) ||
'SRTCONTROLE_OMSCHRIJVING: ' || UPPER (v_ins_srtcontrole_omschrijving) || CHR(10) ||
'SRTCONTROLEDL_XCP_MATERIA: ' || UPPER (v_ins_srtcontroledl_xcp_materia) || CHR(10) ||
'SRTCONTROLEDL_XCP_AANTAL: ' || UPPER (v_ins_srtcontroledl_xcp_aantal) || CHR(10) ||
'SRTCONTROLE_LEVEL: ' || UPPER (v_ins_srtcontrole_level) || CHR(10) ||
'SRTCONTROLE_STARTJAAR: ' || UPPER (v_ins_srtcontroledl_xcp_startdat) || CHR(10) ||
'SRTCONTROLE_PERIODE: ' || UPPER (v_ins_srtcontroledl_xcp_periode) || CHR(10) ||
'SRTCONTROLE_PERCENTAGE: ' || UPPER (v_ins_srtcontroledl_xcp_perc));
END IF;
END IF;
ELSE
v_count_tot := v_count_tot + 1;
-- Controleer alle veldwaarden
v_errormsg := 'Gebouwcode kan niet gevonden worden';
v_oprognose_gebouw_code := TRIM (v_oprognose_gebouw_code);
BEGIN
SELECT g.alg_gebouw_code, l.alg_locatie_code
INTO v_alg_gebouw_code, v_alg_locatie_code
FROM alg_gebouw g, alg_onrgoedkenmerk aok, alg_kenmerk ak, alg_locatie l
WHERE g.alg_gebouw_verwijder IS NULL
AND aok.alg_onrgoed_key = g.alg_gebouw_key
AND aok.alg_onrgoed_niveau='G'
AND ak.alg_kenmerk_key = aok.alg_kenmerk_key
AND ak.alg_kenmerk_code='OPROGNOSE_CODE'
AND UPPER(aok.alg_onrgoedkenmerk_waarde) = UPPER(v_oprognose_gebouw_code)
AND l.alg_locatie_key=g.alg_locatie_key;
EXCEPTION WHEN NO_DATA_FOUND
THEN
fac.imp_writelog (
p_import_key,
'E',
v_aanduiding || v_errormsg,
'Gebouw is niet gevonden'
);
v_ongeldig := 1;
END;
v_errormsg := 'Object externnr kan niet gevonden worden';
v_ins_deel_externnr := TRIM (v_ins_deel_externnr);
IF v_ins_deel_externnr IS NOT NULL
THEN
BEGIN
SELECT 1
INTO v_dummy
FROM ins_v_deel_gegevens dg, ins_deel d
WHERE dg.ins_deel_key = d.ins_deel_key
AND UPPER(d.ins_deel_externnr) = UPPER(v_ins_deel_externnr)
AND dg.alg_gebouw_upper = UPPER(v_alg_gebouw_code);
EXCEPTION WHEN NO_DATA_FOUND
THEN
fac.imp_writelog (
p_import_key,
'E',
v_aanduiding || v_errormsg,
'Object is niet gevonden op extern id '
);
v_ongeldig := 1;
END;
END IF;
v_errormsg := 'Controle op kosten';
IF FAC.safe_to_number(v_ins_srtcontroledl_xcp_materia) IS NULL
THEN
fac.imp_writelog (
p_import_key,
'E',
v_aanduiding || v_errormsg,''
);
v_ongeldig := 1;
END IF;
v_errormsg := 'Controle op aantal';
IF v_ins_srtcontroledl_xcp_aantal IS NOT NULL AND FAC.safe_to_number(v_ins_srtcontroledl_xcp_aantal) IS NULL
THEN
fac.imp_writelog (
p_import_key,
'E',
v_aanduiding || v_errormsg,''
);
v_ongeldig := 1;
END IF;
v_errormsg := 'Controle op startjaar';
IF v_ins_srtcontroledl_xcp_startdat IS NOT NULL AND FAC.safe_to_date('01-01-' || v_ins_srtcontroledl_xcp_startdat, 'dd-mm-yyyy') IS NULL
THEN
fac.imp_writelog (
p_import_key,
'E',
v_aanduiding || v_errormsg,''
);
v_ongeldig := 1;
END IF;
v_errormsg := 'Controle op periode';
IF v_ins_srtcontroledl_xcp_periode IS NOT NULL AND FAC.safe_to_number(v_ins_srtcontroledl_xcp_periode) IS NULL
THEN
fac.imp_writelog (
p_import_key,
'E',
v_aanduiding || v_errormsg,''
);
v_ongeldig := 1;
END IF;
v_errormsg := 'Controle op percentage';
IF v_ins_srtcontroledl_xcp_perc IS NOT NULL AND FAC.safe_to_number(v_ins_srtcontroledl_xcp_perc) IS NULL
THEN
fac.imp_writelog (
p_import_key,
'E',
v_aanduiding || v_errormsg,''
);
v_ongeldig := 1;
END IF;
-- Insert geformatteerde import record
IF v_ongeldig = 0
THEN
BEGIN
v_errormsg := 'Fout bij wegschrijven importregel';
-- Als uit kenmerkheader een geldige kenmerksoort-key volgt,
-- dan is kenmerkwaarde<n> gevuld met <key>=<waarde>; zoniet,
-- dan is kenmerkwaarde<n> gevuld met <waarde>!
-- NB. Een NULL-waarde resulteert NIET in het wissen van een
-- kenmerkveld (bijwerken kan wel, maar wissen dus niet)!
INSERT INTO fac_imp_csv (FAC_IMPORT_KEY,
fac_imp_csv_index,
fac_imp_csv_col01,
fac_imp_csv_col02,
fac_imp_csv_col03,
fac_imp_csv_col04,
fac_imp_csv_col05,
fac_imp_csv_col06,
fac_imp_csv_col07,
fac_imp_csv_col08,
fac_imp_csv_col09,
fac_imp_csv_col10,
fac_imp_csv_col11,
fac_imp_csv_col12)
VALUES ( p_import_key,
v_file_index,
SUBSTR(v_alg_gebouw_code,1,12),
SUBSTR(v_ins_deel_externnr,1,256),
SUBSTR(v_ins_deel_omschrijving,1,60),
SUBSTR(v_ins_srtcontrole_omschrijving,1,60),
FAC.safe_to_number(v_ins_srtcontrole_level),
FAC.safe_to_number(v_ins_srtcontroledl_xcp_materia), -- de prijs m,oet per stuk zijn.
FAC.safe_to_number(v_ins_srtcontroledl_xcp_aantal),
'01-01-' || v_ins_srtcontroledl_xcp_startdat,
v_ins_srtcontroledl_xcp_periode,
FAC.safe_to_number(v_ins_srtcontroledl_xcp_perc),
v_ins_srtcontroledl_xcp_eenh,
SUBSTR(v_alg_locatie_code,1,12));
COMMIT;
v_count_import := v_count_import + 1;
END;
END IF;
END IF;
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.imp_writelog (p_import_key,
'W',
v_aanduiding || v_errormsg,
'');
COMMIT;
END;
END LOOP;
IF (header_is_valid = 1)
THEN
fac.imp_writelog (
p_import_key,
'S',
'Taken/aantal ingelezen importregels: ' || TO_CHAR (v_count_tot),
''
);
fac.imp_writelog (
p_import_key,
'S',
'Taken/aantal ongeldige niet ingelezen importregels: '
|| TO_CHAR (v_count_tot - v_count_import),
''
);
END IF;
COMMIT;
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.imp_writelog (p_import_key,
'E',
v_aanduiding || v_errormsg,
'Inleesproces taken afgebroken! regel:' || v_file_index);
END fzkh_import_mjobtaken;
/
CREATE OR REPLACE PROCEDURE fzkh_update_mjobtaken (
p_import_key IN NUMBER)
IS
CURSOR c IS
SELECT fac_imp_csv_col01 alg_gebouw_code,
fac_imp_csv_col02 ins_deel_externnr,
fac_imp_csv_col03 ins_deel_omschrijving,
fac_imp_csv_col04 ins_srtcontrole_omschrijving,
fac_imp_csv_col05 ins_srtcontrole_level,
fac_imp_csv_col06 ins_srtcontroledl_xcp_materia,
fac_imp_csv_col07 ins_srtcontroledl_xcp_aantal,
fac_imp_csv_col08 ins_srtcontroledl_xcp_startdat,
fac_imp_csv_col09 ins_srtcontroledl_xcp_periode,
fac_imp_csv_col10 ins_srtcontroledl_xcp_perc,
fac_imp_csv_col11 ins_srtcontroledl_xcp_eenh,
fac_imp_csv_col12 alg_locatie_code
FROM fac_imp_csv
WHERE fac_import_key=p_import_key;
v_errormsg VARCHAR2 (1000);
v_errorhint VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_count_tot NUMBER (10);
v_count_import NUMBER (10);
v_ongeldig NUMBER (1);
v_aanduiding VARCHAR (400);
v_ins_deel_key NUMBER;
v_ins_deel_aantal NUMBER;
v_ins_srtdeel_key NUMBER;
v_ins_srtcontrole_key NUMBER;
v_ins_srtcontroledl_xcp_key NUMBER;
v_ctr_discipline_key NUMBER;
v_alg_gebouw_key NUMBER;
v_ins_srtdeel_code INS_SRTDEEL.INS_SRTDEEL_CODE%TYPE;
v_ins_deel_eenheid VARCHAR2(30);
v_ins_srtcontroledl_xcp_startdat DATE;
v_ins_srtcontroledl_xcp_aantal NUMBER;
v_ins_srtcontroledl_xcp_perc NUMBER;
v_refdate DATE;
BEGIN
SELECT MIN(ctr_ins_discipline_key)
INTO v_ctr_discipline_key
FROM ctr_disc_params
WHERE ctr_disc_params_ismjob = 1;
-- controleer op verwijderde records
FOR rec IN c
LOOP
BEGIN
v_ins_deel_key := NULL;
v_aanduiding := rec.alg_gebouw_code || '|' || rec.ins_deel_omschrijving || '|' || rec.ins_deel_externnr || '|' || rec.ins_srtcontrole_omschrijving;
v_errormsg := 'Gebouwcode kan niet gevonden worden';
BEGIN
SELECT g.alg_gebouw_key
INTO v_alg_gebouw_key
FROM alg_gebouw g, alg_locatie l
WHERE alg_gebouw_verwijder IS NULL
AND UPPER(alg_gebouw_code) = rec.alg_gebouw_code
AND l.alg_locatie_key=g.alg_locatie_key
AND l.alg_locatie_code=rec.alg_locatie_code;
EXCEPTION WHEN NO_DATA_FOUND
THEN
fac.imp_writelog (
p_import_key,
'E',
v_aanduiding || v_errormsg,
'Gebouw is niet gevonden'
);
END;
v_errormsg := 'Objectid kan niet gevonden worden';
IF rec.ins_deel_omschrijving IS NOT NULL
THEN
BEGIN
SELECT dg.ins_deel_key,
sd.ins_srtdeel_key,
sd.ins_srtdeel_code,
dg.ins_deel_aantal,
ken.ins_kenmerkdeel_waarde
INTO v_ins_deel_key, v_ins_srtdeel_key, v_ins_srtdeel_code, v_ins_deel_aantal, v_ins_deel_eenheid
FROM ins_v_deel_gegevens dg,
ins_srtdeel sd,
(SELECT ikd.ins_deel_key, ikd.ins_kenmerkdeel_waarde
FROM ins_kenmerkdeel ikd, ins_kenmerk ik
WHERE ikd.ins_kenmerk_key = ik.ins_kenmerk_key
AND ik.ins_kenmerk_code = 'MJOB_EENHEID_AANTAL'
AND ikd.ins_kenmerkdeel_verwijder IS NULL) ken
WHERE dg.ins_srtdeel_key = sd.ins_srtdeel_key
AND UPPER(dg.ins_deel_omschrijving) = UPPER(rec.ins_deel_omschrijving)
AND ken.ins_deel_key(+) = dg.ins_deel_key
AND dg.alg_gebouw_key = v_alg_gebouw_key;
EXCEPTION WHEN NO_DATA_FOUND
THEN
fac.imp_writelog (
p_import_key,
'E',
v_aanduiding || v_errormsg,
'Object is niet gevonden op id '
);
v_ongeldig := 1;
END;
END IF;
v_errormsg := 'Object externnr kan niet gevonden worden';
IF rec.ins_deel_externnr IS NOT NULL AND v_ins_deel_key IS NULL
THEN
BEGIN
SELECT d.ins_deel_key, sd.ins_srtdeel_key, sd.ins_srtdeel_code, d.ins_deel_aantal
INTO v_ins_deel_key, v_ins_srtdeel_key, v_ins_srtdeel_code, v_ins_deel_aantal
FROM ins_v_deel_gegevens dg, ins_deel d, ins_srtdeel sd
WHERE dg.ins_deel_key = d.ins_deel_key
AND d.ins_srtdeel_key = sd.ins_srtdeel_key
AND UPPER(d.ins_deel_externnr) = UPPER(rec.ins_deel_externnr)
AND dg.alg_gebouw_key = v_alg_gebouw_key;
EXCEPTION WHEN NO_DATA_FOUND
THEN
fac.imp_writelog (
p_import_key,
'E',
v_aanduiding || v_errormsg,
'Object is niet gevonden op extern id '
);
v_ongeldig := 1;
END;
END IF;
-- kijk of de srtcontrole al bestaat
v_errormsg := 'Kijk of de taak al bestaat';
BEGIN
SELECT ins_srtcontrole_key
INTO v_ins_srtcontrole_key
FROM ins_srtcontrole
WHERE ins_srtinstallatie_key = v_ins_srtdeel_key
AND ins_srtcontrole_niveau = 'S'
AND ins_srtcontrole_omschrijving = SUBSTR(v_ins_srtdeel_code || ' - ' || rec.ins_srtcontrole_omschrijving, 1, 60)
AND ctr_discipline_key = v_ctr_discipline_key;
UPDATE ins_srtcontrole
SET ins_srtcontrole_level = rec.ins_srtcontrole_level
WHERE ins_srtcontrole_key = v_ins_srtcontrole_key;
EXCEPTION WHEN NO_DATA_FOUND
THEN
v_errormsg := 'Aanmaken nieuwe taak';
INSERT INTO ins_srtcontrole (ins_srtinstallatie_key,
ins_srtcontrole_niveau,
ins_srtcontrole_omschrijving,
ctr_discipline_key,
ins_srtcontrole_periode,
ins_srtcontrole_eenheid,
ins_srtcontrole_level,
ins_srtcontrole_materiaal,
ins_srtcontrole_percentage)
VALUES (v_ins_srtdeel_key,
'S',
SUBSTR(v_ins_srtdeel_code || ' - ' || rec.ins_srtcontrole_omschrijving, 1, 60),
v_ctr_discipline_key,
0, -- periode wordt in het xcp record opgegeven
4, -- standaard jaar voor MJOB
rec.ins_srtcontrole_level,
0, -- kosten worden in het xcp record vermeld.
100)
RETURNING ins_srtcontrole_key INTO v_ins_srtcontrole_key;
END;
v_ins_srtcontroledl_xcp_perc:=FAC.safe_to_number(rec.ins_srtcontroledl_xcp_perc)*100;
IF v_ins_srtcontroledl_xcp_perc>100 THEN
v_ins_srtcontroledl_xcp_perc:=100;
END IF;
IF v_ins_srtcontroledl_xcp_perc < 100 THEN
v_ins_srtcontroledl_xcp_aantal:=NULL;
ELSE
IF rec.ins_srtcontroledl_xcp_aantal <> v_ins_deel_aantal THEN
v_ins_srtcontroledl_xcp_aantal:=FAC.safe_to_number(rec.ins_srtcontroledl_xcp_aantal);
ELSE
v_ins_srtcontroledl_xcp_aantal:=NULL;
END IF;
END IF;
-- wat is het aantal op de taak (in de oprognose staat een hvh_reken die we hier gebruiken ipv de ins_deel_aantal)
-- v_ins_srtcontroledl_xcp_aantal := FAC.safe_to_number(rec.ins_srtcontroledl_xcp_aantal);
-- IF (v_ins_srtcontroledl_xcp_aantal=1 AND v_ins_deel_aantal>1)
-- THEN
-- v_ins_srtcontroledl_xcp_aantal:= v_ins_deel_aantal;
-- END IF;
-- Ophalen freeze jaar en eerst stardatum
v_ins_srtcontroledl_xcp_startdat:=FAC.safe_to_date(rec.ins_srtcontroledl_xcp_startdat, 'dd-mm-yyyy');
v_refdate := FAC.safe_to_date('01-01-'||fac.getsetting('mjb_start_year'),'DD-MM-YYYY');
IF (v_ins_srtcontroledl_xcp_startdat<=v_refdate)
THEN
v_ins_srtcontroledl_xcp_startdat := fzkh.getfirststartdate(v_ins_srtcontroledl_xcp_startdat, v_refdate,rec.ins_srtcontroledl_xcp_periode);
END IF;
-- kijk of de taak uitzondering al bestaat
v_errormsg := 'Kijk of de XCP taak al bestaat';
BEGIN
SELECT ins_srtcontroledl_xcp_key
INTO v_ins_srtcontroledl_xcp_key
FROM ins_srtcontroledl_xcp
WHERE ins_deel_key = v_ins_deel_key
AND ins_srtcontrole_key = v_ins_srtcontrole_key;
UPDATE ins_srtcontroledl_xcp
SET ins_srtcontroledl_xcp_periode = FAC.safe_to_number(rec.ins_srtcontroledl_xcp_periode),
ins_srtcontroledl_xcp_aantal = v_ins_srtcontroledl_xcp_aantal,
ins_srtcontroledl_xcp_materia = FAC.safe_to_number(rec.ins_srtcontroledl_xcp_materia),
ins_srtcontroledl_xcp_perc = v_ins_srtcontroledl_xcp_perc,
ins_srtcontroledl_xcp_startdat = v_ins_srtcontroledl_xcp_startdat
WHERE ins_srtcontroledl_xcp_key = v_ins_srtcontroledl_xcp_key;
EXCEPTION WHEN NO_DATA_FOUND
THEN
v_errormsg := 'Aanmaken nieuwe taak uitzondering ';
INSERT INTO ins_srtcontroledl_xcp (ins_deel_key,
ins_srtcontrole_key,
ins_srtcontroledl_xcp_periode,
ins_srtcontroledl_xcp_aantal,
ins_srtcontroledl_xcp_materia,
ins_srtcontroledl_xcp_perc,
ins_srtcontroledl_xcp_startdat,
ins_srtcontroledl_xcp_aanteh)
VALUES (v_ins_deel_key,
v_ins_srtcontrole_key,
FAC.safe_to_number(rec.ins_srtcontroledl_xcp_periode),
v_ins_srtcontroledl_xcp_aantal,
FAC.safe_to_number(rec.ins_srtcontroledl_xcp_materia),
v_ins_srtcontroledl_xcp_perc,
v_ins_srtcontroledl_xcp_startdat,
rec.ins_srtcontroledl_xcp_eenh)
RETURNING ins_srtcontroledl_xcp_key INTO v_ins_srtcontroledl_xcp_key;
END;
-- Moeten we nu kijken welke XCP taken er zijn aangemaakt en of deze al afgerond hadden moeten zijn zodat ze niet worden doorgeschoven naar het volgene jaar ?
fac.imp_writelog (p_import_key, 'I', v_aanduiding || 'Taak is aangemaakt: ' || v_aanduiding, '');
COMMIT;
-- TODO moeten we ook taken gaan verwijderen?
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.imp_writelog (p_import_key,
'E',
v_aanduiding || v_errormsg,
'');
COMMIT;
END;
END LOOP;
END;
/
-- EIND MJOB Taken
CREATE OR REPLACE PROCEDURE FZKH_IMPORT_INSPECTIES(p_import_key IN NUMBER)
AS
BEGIN
--fac_import_inspectie(p_import_key);
NULL;
END;
/
CREATE OR REPLACE PROCEDURE FZKH_UPDATE_INSPECTIES(p_import_key IN NUMBER)
AS
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
header_is_valid NUMBER;
v_count_error NUMBER (10);
v_count NUMBER (10);
v_count_tot NUMBER (10);
v_count_import NUMBER (10);
v_ongeldig NUMBER (1);
v_aanduiding VARCHAR2 (200);
v_errorhint VARCHAR2 (1000);
v_ins_srtinstallatie_key NUMBER (10);
v_ins_srtcontrole_niveau VARCHAR (1);
v_week_bits NUMBER (10);
v_maand_bits NUMBER (10);
v_ctr_ins_discipline_key NUMBER;
CURSOR c_inspecties
IS
SELECT fac_imp_csv_col01 INS_DISCIPLINE_OMSCHRIJVING,
fac_imp_csv_col02 INS_SRTGROEP_OMSCHRIJVING,
fac_imp_csv_col03 INS_SRTDEEL_CODE,
fac_imp_csv_col04 INS_SRTCONTROLE_OMSCHRIJVING,
fac_imp_csv_col05 INS_SRTCONTROLE_INFO,
fac_imp_csv_col06 INS_SRTCONTROLE_PERIODE,
fac_imp_csv_col07 INS_SRTCONTROLE_MODE,
fac_imp_csv_col08 INS_SRTCONTROLE_EENHEID,
fac_imp_csv_col09 INS_SRTCONTROLE_BITS,
fac_imp_csv_col10 INS_SRTCONTROLE_OPMERKING
FROM fac_imp_csv
WHERE fac_import_key=p_import_key;
-- MAIN
BEGIN
FOR rec_ins IN c_inspecties
LOOP
BEGIN
v_count_tot := v_count_tot + 1;
v_aanduiding :=
rec_ins.ins_discipline_omschrijving
|| ' - '
|| rec_ins.ins_srtgroep_omschrijving
|| '-'
|| rec_ins.ins_srtdeel_code;
v_errorhint := 'Fout bij bepalen discipline';
IF rec_ins.ins_discipline_omschrijving IS NULL
THEN
fac.imp_writelog (
p_import_key,
'E',
v_aanduiding,
'Discipline mag niet leeg zijn: inspectie wordt niet toegevoegd.');
ELSE
SELECT ins_discipline_key, 'D'
INTO v_ins_srtinstallatie_key, v_ins_srtcontrole_niveau
FROM ins_tab_discipline
WHERE UPPER (ins_discipline_omschrijving) =
UPPER (rec_ins.ins_discipline_omschrijving)
AND ins_discipline_module = 'INS'
AND ins_discipline_verwijder IS NULL;
IF rec_ins.ins_srtgroep_omschrijving IS NOT NULL
THEN
SELECT ins_srtgroep_key, 'G'
INTO v_ins_srtinstallatie_key, v_ins_srtcontrole_niveau
FROM ins_srtgroep
WHERE UPPER (ins_srtgroep_omschrijving) =
UPPER (rec_ins.ins_srtgroep_omschrijving)
AND ins_srtgroep_module = 'INS'
AND ins_srtgroep_verwijder IS NULL
AND ins_discipline_key = v_ins_srtinstallatie_key;
IF rec_ins.ins_srtdeel_code IS NOT NULL
THEN
SELECT ins_srtdeel_key, 'S'
INTO v_ins_srtinstallatie_key, v_ins_srtcontrole_niveau
FROM ins_srtdeel
WHERE UPPER (ins_srtdeel_code) = UPPER (rec_ins.ins_srtdeel_code)
AND ins_srtdeel_module = 'INS'
AND ins_srtdeel_verwijder IS NULL
AND ins_srtgroep_key = v_ins_srtinstallatie_key;
END IF;
END IF;
-- Alleen de gezette bits van de dagen van de week.
SELECT COALESCE(BITAND(rec_ins.ins_srtcontrole_bits, 127), 0)
INTO v_week_bits
FROM DUAL;
-- Alleen de gezette bits van de y-ste xxxdag van de maand.
SELECT COALESCE(BITAND(rec_ins.ins_srtcontrole_bits, 256 + 512 + 1024) / 256, 0)
INTO v_maand_bits
FROM DUAL;
v_aanduiding:='Taak categorie '||rec_ins.ins_srtcontrole_info||' niet gevonden';
SELECT ctr_ins_discipline_key
INTO v_ctr_ins_discipline_key
FROM ctr_disc_params csp,
ctr_discipline i
WHERE i.ins_discipline_omschrijving=rec_ins.ins_srtcontrole_info
AND i.ins_discipline_verwijder IS NULL
AND csp.ctr_ins_discipline_key = i.ins_discipline_key
AND csp.ctr_disc_params_controle_type=1 ;
IF rec_ins.ins_srtcontrole_omschrijving IS NOT NULL AND
rec_ins.ins_srtcontrole_periode IS NOT NULL AND
((rec_ins.ins_srtcontrole_eenheid = 0)
OR (rec_ins.ins_srtcontrole_eenheid > 0 AND MOD(rec_ins.ins_srtcontrole_periode, 1) = 0)) AND
rec_ins.ins_srtcontrole_eenheid IS NOT NULL AND
rec_ins.ins_srtcontrole_mode IS NOT NULL AND
(rec_ins.ins_srtcontrole_mode = 1 OR (1=1))
THEN
INSERT INTO ins_srtcontrole (ins_srtinstallatie_key,
ins_srtcontrole_niveau,
ins_srtcontrole_omschrijving,
ins_srtcontrole_info,
ins_srtcontrole_periode,
ins_srtcontrole_eenheid, -- 0=uurlijks, 1=dagelijks, 2=wekelijk, 3=maandelijk, 4=jaarlijks, null=niet
ins_srtcontrole_mode, -- 0=moment-modus of 1=interval-modus
ins_srtcontrole_bits, -- 1=Jan, 2=Feb, 4=mart, 8=april enz
ctr_discipline_key,
ins_srtcontrole_opmerking
)
VALUES (v_ins_srtinstallatie_key,
v_ins_srtcontrole_niveau,
rec_ins.ins_srtcontrole_omschrijving,
rec_ins.ins_srtcontrole_info,
rec_ins.ins_srtcontrole_periode,
rec_ins.ins_srtcontrole_eenheid,
rec_ins.ins_srtcontrole_mode,
rec_ins.ins_srtcontrole_bits,
v_ctr_ins_discipline_key,
rec_ins.ins_srtcontrole_opmerking
);
ELSE
IF rec_ins.ins_srtcontrole_mode = 0 AND (v_week_bits = 0 OR v_maand_bits = 0)
THEN v_errorhint := 'Het verplichte veld "Moment" is niet (goed) ingevuld: inspectie wordt niet toegevoegd.';
ELSIF rec_ins.ins_srtcontrole_eenheid > 0 AND MOD(rec_ins.ins_srtcontrole_periode, 1) > 0
THEN v_errorhint := 'Periode moet een geheel getal zijn voor dagelijkse, wekelijkse, maandelijkse en jaarlijkse taken: inspectie wordt niet toegevoegd.';
ELSE v_errorhint := '<EFBFBD><EFBFBD>n of meerdere van de verplichte velden "Omschrijving", "Period", "Eenheid" of "Mode" zijn niet ingevuld: inspectie wordt niet toegevoegd.';
END IF;
fac.imp_writelog (
p_import_key,
'E',
v_aanduiding,
v_errorhint);
END IF;
END IF;
EXCEPTION
WHEN OTHERS
THEN
v_count_error := v_count_error + 1;
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := 'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key,
'E',
v_aanduiding || v_errormsg,
v_errorhint);
COMMIT;
END;
END LOOP;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 150);
v_errormsg :=
v_errormsg || 'ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key,
'E',
'Importproces inspecties afgebroken!',
v_errormsg);
END FZKH_UPDATE_INSPECTIES;
/
CREATE OR REPLACE PROCEDURE FZKH_IMPORT_SLEUTELS (p_import_key IN NUMBER)
AS
CURSOR c1
IS
SELECT *
FROM fac_imp_ins;
v_count NUMBER;
v_vervaldatum DATE;
BEGIN
fac_import_ins(p_import_key);
FOR rec in c1
LOOP
IF rec.prs_perslid_matchcode='4'
THEN
SELECT COUNT(*)
INTO v_count
FROM prs_perslid p
WHERE p.prs_perslid_nr = rec.prs_perslid_matchwaarde
AND p.prs_perslid_verwijder IS NULL
AND ( p.prs_perslid_inactief IS NULL
OR p.prs_perslid_inactief > SYSDATE);
ELSIF rec.prs_perslid_matchcode='3'
THEN
SELECT COUNT(*)
INTO v_count
FROM prs_v_perslid_fullnames p
WHERE p.prs_perslid_naam_full = rec.prs_perslid_matchwaarde;
ELSE
v_count:=0;
END IF;
v_vervaldatum := NULL;
IF UPPER(rec.ins_kenmerkwaarde1) = 'VERMIST'
THEN
v_vervaldatum := fac.safe_to_date(rec.ins_kenmerkwaarde2,'DD-MM-YYYY');
END IF;
IF v_count=0
THEN
UPDATE fac_imp_ins
SET alg_locatie_code = 'FZKH',
alg_gebouw_code = 'FZKH',
alg_verdieping_volgnr = '2',
alg_ruimte_nr = 'F201',
prs_perslid_matchcode = NULL,
prs_perslid_matchwaarde = NULL,
ins_deel_vervaldatum = v_vervaldatum
WHERE ins_deel_omschrijving=rec.ins_deel_omschrijving
AND ins_kenmerkwaarde3=rec.ins_kenmerkwaarde3;
END IF;
END LOOP;
END;
/
CREATE OR REPLACE PROCEDURE FZKH_UPDATE_SLEUTELS (p_import_key IN NUMBER)
AS
BEGIN
fac_update_ins (p_import_key);
END;
/
CREATE OR REPLACE PROCEDURE FZKH_IMPORT_MT_KENMERKEN (p_import_key IN NUMBER)
AS
BEGIN
NULL;
END;
/
CREATE OR REPLACE PROCEDURE FZKH_UPDATE_MT_KENMERKEN (p_import_key IN NUMBER)
AS
CURSOR sel
IS
SELECT fac_imp_csv_col01 ins_deel_omschrijving,
fac_imp_csv_col03 ins_kenmerk_label,
fac_imp_csv_col08 ins_kenmerk_waarde
FROM fac_imp_csv
WHERE fac_import_key=p_import_key
ORDER BY fac_imp_csv_key;
v_ins_deel_key NUMBER;
v_ins_deel_omschrijving VARCHAR2(50);
v_ins_kenmerk_key NUMBER;
v_errormsg VARCHAR2 (1000) := '-';
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_aanduiding VARCHAR2 (200);
BEGIN
FOR rec IN sel
LOOP
IF rec.ins_kenmerk_label<>'ftrdescr'
THEN
BEGIN
v_ins_deel_omschrijving:=rec.ins_deel_omschrijving;
IF LENGTH(v_ins_deel_omschrijving)<6
THEN
v_ins_deel_omschrijving:=LPAD(rec.ins_deel_omschrijving,6, '0');
END IF;
v_aanduiding := 'Object '||v_ins_deel_omschrijving||' is niet gevonden en wordt overgeslagen';
SELECT ins_deel_key
INTO v_ins_deel_key
FROM ins_deel
WHERE ins_deel_omschrijving=v_ins_deel_omschrijving
AND ins_deel_verwijder IS NULL;
IF v_ins_deel_key >0
THEN
v_aanduiding:='kenmerk : ' || TO_CHAR (rec.ins_kenmerk_label)||' voor object '||rec.ins_deel_omschrijving||' is niet gevonden en wordt overgeslagen';
SELECT ins_kenmerk_key
INTO v_ins_kenmerk_key
FROM ins_kenmerk ik, ins_v_aanwezigdiscipline i
WHERE UPPER(ik.ins_kenmerk_omschrijving) = UPPER(rec.ins_kenmerk_label)
AND UPPER(i.ins_discipline_omschrijving)=UPPER('Medische techniek')
AND ik.ins_srtinstallatie_key=i.ins_discipline_key
AND ik.ins_kenmerk_niveau='D'
AND ik.ins_kenmerk_verwijder IS NULL;
IF v_ins_kenmerk_key>0 AND rec.ins_kenmerk_waarde <>'NULL'
THEN
IF LENGTH(rec.ins_kenmerk_waarde)>50 AND rec.ins_kenmerk_label<>'Configuratie'
THEN
flx.setflex('INS',v_ins_kenmerk_key,v_ins_deel_key,SUBSTR(rec.ins_kenmerk_waarde,0,49));
ELSE
flx.setflex('INS',v_ins_kenmerk_key,v_ins_deel_key,rec.ins_kenmerk_waarde);
END IF;
v_aanduiding:='Kenmerk : ' || TO_CHAR (rec.ins_kenmerk_label)||'='||rec.ins_kenmerk_waarde||' voor object '||rec.ins_deel_omschrijving||' is toegevoegd.';
fac.imp_writelog (p_import_key,
'I',
v_aanduiding,
'');
END IF;
END IF;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
fac.imp_writelog (p_import_key,
'W',
v_aanduiding,
'');
END;
END IF;
END LOOP;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 150);
v_errormsg :=
v_errormsg || 'ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key,
'E',
'Importproces MT Kenmerken afgebroken!',
v_errormsg);
END;
/
CREATE OR REPLACE PROCEDURE FZKH_IMPORT_RESERVERINGEN (p_import_key IN NUMBER)
AS
BEGIN
NULL;
END;
/
CREATE OR REPLACE PROCEDURE FZKH_UPDATE_RESERVERINGEN (p_import_key IN NUMBER)
AS
CURSOR sel
IS
SELECT fac_imp_csv_key csv_key,
fac_imp_csv_col02 ultimo_code,
fac_imp_csv_col01 ultimo_code_volgnr,
fac_imp_csv_col13 res_ruimte_nr,
fac_imp_csv_col04 res_startdatum,
fac_imp_csv_col05 res_einddatum,
fac_imp_csv_col10 res_aanvrager,
fac_imp_csv_col06 res_omschrijving
FROM fac_imp_csv
WHERE fac_import_key=p_import_key
AND fac_imp_csv_col15='FLEVO'
AND UPPER(fac_imp_csv_col02) <> UPPER('Reserveringen')
ORDER BY fac_imp_csv_key;
v_res_startdatum DATE;
v_res_einddatum DATE;
v_prs_perslid_key NUMBER;
v_prs_perslid_key_nu NUMBER;
v_res_ruimte_opstel_key NUMBER;
v_res_activiteit_key NUMBER;
v_rsv_ruimte_key NUMBER;
v_reservering_key NUMBER;
v_res_kenmerk_key NUMBER;
v_status_bo NUMBER;
v_status_fo NUMBER;
v_volgnr NUMBER;
v_no_show NUMBER;
v_count NUMBER;
v_errormsg VARCHAR2 (1000) := '-';
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_aanduiding VARCHAR2 (200);
BEGIN
v_res_kenmerk_key:=-1;
v_errormsg :='Kenmerk tbv tultimo code is niet gevonde';
SELECT res_kenmerk_key
INTO v_res_kenmerk_key
FROm res_kenmerk rk
WHERE rk.res_kenmerk_code='ULTIMO_CODE'
AND rk.res_kenmerk_verwijder IS NULL
AND rk.res_activiteit_key=10;
IF v_res_kenmerk_key>0
THEN
FOR rec IN sel
LOOP
IF rec.ultimo_code <>'Reserveringen'
THEN
-- Heb ik de reserverig al
v_volgnr:=fac.safe_to_number(rec.ultimo_code_volgnr);
v_reservering_key:=0;
BEGIN
SELECT prs_perslid_key
INTO v_prs_perslid_key
FROM prs_perslid p
WHERE UPPER(p.prs_perslid_email) = UPPER(rec.res_aanvrager);
EXCEPTION
WHEN NO_DATA_FOUND THEN
v_prs_perslid_key:=3;
END;
BEGIN
SELECT r.res_reservering_key , rrr.res_rsv_ruimte_key, rrr.res_rsv_ruimte_contact_key
INTO v_reservering_key, v_rsv_ruimte_key, v_prs_perslid_key_nu
FROM res_reservering r, res_rsv_ruimte rrr
WHERE r.res_reservering_externnr=rec.ultimo_code
AND rrr.res_reservering_key=r.res_reservering_key
AND rrr.res_rsv_ruimte_volgnr = v_volgnr
AND rrr.res_rsv_ruimte_verwijder IS NULL;
IF v_prs_perslid_key<> v_prs_perslid_key_nu
THEN
UPDATE res_rsv_ruimte
SET res_rsv_ruimte_contact_key=v_prs_perslid_key,
res_rsv_ruimte_host_key=v_prs_perslid_key
WHERE res_rsv_ruimte_key=v_rsv_ruimte_key;
END IF;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
v_reservering_key:=-1;
END;
v_res_startdatum := fac.safe_to_date(SUBSTR(rec.res_startdatum,1,16),'YYYY-MM-DD HH24:MI');
v_res_einddatum := fac.safe_to_date(SUBSTR(rec.res_einddatum,1,16),'YYYY-MM-DD HH24:MI');
IF v_reservering_key < 0 -- alleen aanmaken als we hem nog niet hebben
THEN
v_aanduiding := 'Reservering '||rec.ultimo_code||' voor ruimte met ruimte Nr :'||rec.res_ruimte_nr||' is niet gevonden';
SELECT MIN(rro.res_ruimte_opstel_key)
INTO v_res_ruimte_opstel_key
from res_ruimte rr, res_ruimte_opstelling rro
WHERE rr.res_ruimte_verwijder IS NULL
AND rr.res_ruimte_nr LIKE rec.res_ruimte_nr||'%'
AND rro.res_ruimte_key=rr.res_ruimte_key;
BEGIN
SELECT ra.res_activiteit_key
INTO v_res_activiteit_key
FROM res_activiteit ra
where ra.res_activiteit_omschrijving='Vergadering';
EXCEPTION
WHEN NO_DATA_FOUND
THEN
v_res_activiteit_key:=10;
END;
v_status_bo := 2; -- Alles op Geregistreerd (want alleen lopende reserveringen)
v_status_fo := 2; -- Alles op Definitief (want alleen lopende reserveringen)
v_no_show := TO_NUMBER (NULL);
IF v_prs_perslid_key>0 AND v_res_ruimte_opstel_key >0
THEN
IF v_reservering_key=-1
THEN
v_errormsg := 'Fout toevoegen res_reservering ('||rec.csv_key||').';
INSERT INTO res_reservering (res_reservering_verwijder, res_reservering_externnr)
VALUES (NULL, rec.ultimo_code)
RETURNING res_reservering_key
INTO v_reservering_key;
END IF;
v_errormsg := 'Fout toevoegen res_rsv_ruimte ('||rec.csv_key||').';
INSERT INTO res_rsv_ruimte (res_reservering_key,
res_rsv_ruimte_volgnr,
res_rsv_ruimte_opmerking,
res_rsv_ruimte_omschrijving,
prs_kostenplaats_key,
res_rsv_ruimte_contact_key,
res_rsv_ruimte_host_key,
--alg_ruimte_key,
res_ruimte_opstel_key,
res_rsv_ruimte_cvab_mode,
res_activiteit_key,
res_rsv_ruimte_van,
res_rsv_ruimte_tot,
res_rsv_ruimte_bezoekers,
res_rsv_ruimte_bezoekers_shown,
res_status_bo_key,
res_status_fo_key,
res_rsv_ruimte_noshow,
res_rsv_ruimte_externnr)
VALUES (v_reservering_key,
v_volgnr,
NULL,
SUBSTR(rec.res_omschrijving,1,60),
TO_NUMBER (NULL),
v_prs_perslid_key,
v_prs_perslid_key,
v_res_ruimte_opstel_key,
NULL, -- CVAB-mode op Afhalen!
v_res_activiteit_key,
v_res_startdatum,
v_res_einddatum,
TO_NUMBER (NULL),
v_no_show,
v_status_bo,
v_status_fo,
v_no_show,
NULL)
RETURNING res_rsv_ruimte_key
INTO v_rsv_ruimte_key;
flx.setflex('RES',v_res_kenmerk_key,v_rsv_ruimte_key,rec.ultimo_code||'/'||v_volgnr);
fac.trackaction ('#RESNEW', v_rsv_ruimte_key, NULL, SYSDATE, 'Gemigreerd vanuit Ultimo');
fac.imp_writelog (p_import_key,
'I',
'Reservering '||v_reservering_key||' aangemaakt voor ultimo reservering '|| rec.ultimo_code,
'');
END IF;
ELSE
fac.imp_writelog (p_import_key,
'I',
'Reservering voor ultimo reservering '|| rec.ultimo_code||' reeds aangemaakt.',
'');
END IF;
END IF;
END LOOP;
END IF;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 150);
v_errormsg :=
v_errormsg || 'ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key,
'E',
'Importproces Ultimo reserveringen afgebroken!',
v_errormsg);
END;
/
CREATE OR REPLACE PROCEDURE FZKH_IMPORT_CATERING (
p_import_key IN NUMBER)
AS
BEGIN
NULL;
END;
/
CREATE OR REPLACE PROCEDURE FZKH_UPDATE_CATERING (
p_import_key IN NUMBER)
AS
CURSOR catres IS
WITH
rr_set
AS
(SELECT rr.res_reservering_externnr,
rrr.res_rsv_ruimte_volgnr,
rr.res_reservering_key,
rrr.res_rsv_ruimte_key,
/* voeg hier de kolommen toe die je nodig hebt uit rr/rrr */
ROW_NUMBER ()
OVER (
PARTITION BY rr.res_reservering_externnr,
rrr.res_rsv_ruimte_volgnr
ORDER BY rr.res_reservering_key DESC -- kies je eigen logica
) rn
FROM res_reservering rr
JOIN res_rsv_ruimte rrr
ON rrr.res_reservering_key =
rr.res_reservering_key)
SELECT fac_imp_csv_col02 AS ultimo_code,
fac_imp_csv_col01 AS ultimo_code_volgnr,
fac_imp_csv_col13 AS ultimo_art_nr,
fac_imp_csv_col14 AS ultimo_art_omschrijving,
art.RES_ARTIKEL_key AS artikel_key,
fac_imp_csv_col12 AS aantal,
fac.safe_to_date (
TO_CHAR (
CAST (
TO_TIMESTAMP_TZ (
fac_imp_csv_col04,
'YYYY-MM-DD HH24:MI:SS.FF7 TZH:TZM')
AT LOCAL
AS DATE),
'DD/MM/YYYY HH24:MI:SS'),
'DD/MM/YYYY HH24:MI:SS') AS van,
rs.res_rsv_ruimte_key AS res_rsv_ruimte_key,
rs.res_reservering_key AS reservering_key,
rs.res_rsv_ruimte_volgnr AS res_rsv_ruimte_volgnr
FROM fac_imp_csv fac
LEFT JOIN res_artikel art
ON fac.safe_to_number (fac.fac_imp_csv_col13) =
fac.safe_to_number (art.res_artikel_nr)
LEFT JOIN rr_set rs
ON rs.res_reservering_externnr=fac.fac_imp_csv_col02
AND fac.safe_to_number(res_rsv_ruimte_volgnr)=fac.safe_to_number(fac_imp_csv_col01)
AND rs.rn = 1
WHERE fac_import_key = p_import_key
AND fac_imp_csv_col02 <> 'Reservering'
AND fac_imp_csv_col15 = 'NULL'
ORDER BY fac_imp_csv_key;
-- v_res_startdatum DATE;
-- v_res_einddatum DATE;
-- v_prs_perslid_key NUMBER;
-- v_res_ruimte_opstel_key NUMBER;
-- v_res_activiteit_key NUMBER;
-- v_rsv_ruimte_key NUMBER;
-- v_reservering_key NUMBER;
c_fielddelimitor VARCHAR2 (1) := ';';
v_newline VARCHAR2 (1000); -- Input line
v_errormsg VARCHAR2 (1000) := '-';
v_errorhint VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_aanduiding VARCHAR2 (500);
v_reservering_key NUMBER;
v_res_rsv_ruimte_key NUMBER;
v_res_rsv_artikel_key NUMBER;
v_ruimte_opstel_key NUMBER;
v_soort VARCHAR2 (200);
-- v_count NUMBER;
-- v_res_kenmerk_key NUMBER;
-- v_status_bo NUMBER;
-- v_status_fo NUMBER;
-- v_volgnr NUMBER;
-- v_no_show NUMBER;
BEGIN
FOR rec IN catres
LOOP
BEGIN
v_aanduiding :=
rec.ultimo_code || '-' || rec.ultimo_art_nr || '/1';
v_errormsg := 'Fout toevoegen rsv_artikel';
IF rec.artikel_key IS NOT NULL
THEN
INSERT INTO res_rsv_artikel (res_artikel_key,
res_rsv_artikel_aantal,
res_rsv_artikel_levering,
res_status_bo_key,
res_rsv_ruimte_key)
VALUES (rec.artikel_key,
rec.aantal,
rec.van,
2,
rec.res_rsv_ruimte_key)
RETURNING res_rsv_artikel_key
INTO v_res_rsv_artikel_key;
FAC.trackaction (
'#RESUPD',
rec.res_rsv_ruimte_key,
3,
SYSDATE,
'Reservering '
|| rec.reservering_key
|| '/'
|| rec.res_rsv_ruimte_volgnr
|| ' gewijzigd'
|| CHR (13)
|| 'Artikel '
|| rec.ultimo_art_omschrijving
|| ' toegevoegd');
fac.imp_writelog (
p_import_key,
'I',
'Catering '
|| rec.reservering_key
|| ' bijgevoegd bij Ultimo reservering '
|| rec.ultimo_code,
'');
ELSE
fac.imp_writelog (
p_import_key,
'E',
'Catering '
|| rec.reservering_key
|| ' NIET bijgevoegd bij Ultimo reservering '
|| rec.ultimo_code,
'Error: Artikel_key is NULL, geen insert uitgevoerd.');
END IF;
EXCEPTION
WHEN OTHERS
THEN
fac.imp_writelog (
p_import_key,
'E',
'Catering '
|| rec.reservering_key
|| ' NIET bijgevoegd bij Ultimo reservering '
|| rec.ultimo_code,
'Error: ' || SQLERRM);
END;
END LOOP;
END;
/
CREATE OR REPLACE PROCEDURE FZKH_IMPORT_ULTIMO_MLD(p_import IN NUMBER)
AS
BEGIN
NULL;
END;
/
CREATE OR REPLACE PROCEDURE FZKH_UPDATE_ULTIMO_MLD(p_import_key IN NUMBER)
AS
CURSOR sel
IS
SELECT fac_imp_csv_col01 ultimo_nr,
fac_imp_csv_col02 mld_onderwerp,
fac_imp_csv_col03 prs_perslid_behandelaar,
fac_imp_csv_col04 mld_melding_plandatum,
fac_imp_csv_col05 mld_melding_datum,
fac_imp_csv_col05 prs_afdeling,
fac_imp_csv_col07 mld_note,
fac_imp_csv_col08 ins_deel_omschrijving,
fac_imp_csv_col12 mld_stdmelding,
fac_imp_csv_col13 mld_status,
fac_imp_csv_col14 mld_substatus,
fac_imp_csv_col15 mld_melding_gereeddatum,
fac_imp_csv_col17 prs_perslid_melder,
fac_imp_csv_col19 prs_kostenplaats_nr,
fac_imp_csv_key
FROM fac_imp_csv
WHERE fac_import_key=p_import_key
ORDER BY fac_imp_csv_key;
v_errormsg VARCHAR2 (1000) := '-';
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_aanduiding VARCHAR2 (200);
v_counter NUMBER;
v_count_deel_ok NUMBER;
v_count_deel NUMBER;
v_stdmelding_key NUMBER;
v_alg_onrgoed_niveau VARCHAR2(1);
v_prs_perslid_melder NUMBER;
v_mld_meldbron_key NUMBER;
v_kenmerk_key NUMBER;
v_ins_deel_key NUMBER;
v_prs_perslid_behandelaar NUMBER;
v_meldingsdatum DATE;
v_melding_gereeddatum DATE;
v_mld_key NUMBER;
v_status_key NUMBER;
V_prs_kostenplaats_key NUMBER;
v_fac_imp_key NUMBER;
BEGIN
v_stdmelding_key := 1; -- standaard worden alle migratie meldingen op de stdmelding overig gezet
v_mld_meldbron_key :=5;
v_counter:=0;
v_aanduiding :='Ophalen melding kenmerk key met code=ULTIMO_NR is muslukt';
SELECT mld_kenmerk_key
INTO v_kenmerk_key
FROM mld_kenmerk
WHERE mld_kenmerk_code='ULTIMO_NR';
FOR rec IN sel
LOOP
v_fac_imp_key:= rec.fac_imp_csv_key;
IF rec.ultimo_nr<>'Code'
THEN
BEGIN
SELECT mld_melding_key
INTO v_mld_key
FROM mld_melding
where mld_melding_externnr=rec.ultimo_nr;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
v_mld_key:=-1;
END;
IF v_mld_key=-1
THEN
BEGIN
v_aanduiding:='Ophalen std melding gaat fout :('||rec.fac_imp_csv_key||')'|| rec.mld_stdmelding;
SELECT ms.mld_stdmelding_key, ms.alg_onrgoed_niveau
INTO v_stdmelding_key, v_alg_onrgoed_niveau
FROM mld_stdmelding ms , ins_srtdiscipline vgt, MLD_DISCIPLINE vg
WHERE UPPER(vgt.ins_srtdiscipline_omschrijving)=UPPER('Medische Techniek')
AND vg.ins_srtdiscipline_key = vgt.ins_srtdiscipline_key
AND vg.ins_discipline_key = ms.mld_ins_discipline_key
AND ms.mld_stdmelding_omschrijving=rec.mld_stdmelding
AND ms.MLD_STDMELDING_VERWIJDER IS NULL;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
SELECT ms.mld_stdmelding_key, ms.alg_onrgoed_niveau
INTO v_stdmelding_key, v_alg_onrgoed_niveau
FROM mld_stdmelding ms , ins_srtdiscipline vgt, MLD_DISCIPLINE vg
WHERE UPPER(vgt.ins_srtdiscipline_omschrijving)=UPPER('Medische Techniek')
AND vg.ins_srtdiscipline_key = vgt.ins_srtdiscipline_key
AND vg.ins_discipline_key = ms.mld_ins_discipline_key
AND UPPER(ms.mld_stdmelding_omschrijving)='MIGRATIE'
AND ms.MLD_STDMELDING_VERWIJDER IS NULL;
END;
v_aanduiding:= 'Ophalen van het asset '||rec.ins_deel_omschrijving || ' is mislukt. ('||rec.fac_imp_csv_key||')';
BEGIN
SELECT ins_deel_key
INTO v_ins_deel_key
FROM ins_deel
WHERE ins_deel_omschrijving=rec.ins_deel_omschrijving
AND ins_deel_verwijder IS NULL;
v_count_deel_ok:=v_count_deel_ok+1;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
v_ins_deel_key:=NULL;
v_count_deel:=v_count_deel+1;
END;
-- Opahlen aanvrger
v_aanduiding:= 'Ophalen van de aanvrager '||rec.prs_perslid_melder || ' is mislukt.('||rec.fac_imp_csv_key||')';
BEGIN
SELECT prs_perslid_key
INTO v_prs_perslid_melder
FROM prs_v_aanwezigperslid
WHERE prs_perslid_naam=rec.prs_perslid_melder;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
SELECT prs_perslid_key
INTO v_prs_perslid_melder
FROM prs_v_aanwezigperslid
WHERE prs_perslid_naam='MT Migratie gebruiker';
-- v_prs_perslid_melder:=3;
END;
v_aanduiding:= 'Ophalen van de behandelaar '||rec.prs_perslid_behandelaar || ' is mislukt. ('||rec.fac_imp_csv_key||')';
BEGIN
SELECT prs_perslid_key
INTO v_prs_perslid_behandelaar
FROM prs_v_aanwezigperslid
WHERE prs_perslid_naam=rec.prs_perslid_behandelaar;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
v_prs_perslid_behandelaar:=NULL;
END;
v_aanduiding:= 'Ophalen van de kostenplaats '||rec.prs_kostenplaats_nr || ' is mislukt.('||rec.fac_imp_csv_key||')';
BEGIN
SELECT prs_kostenplaats_key
INTO v_prs_kostenplaats_key
FROM prs_kostenplaats k
WHERE k.prs_kostenplaats_nr=rec.prs_kostenplaats_nr
AND k.prs_kostenplaats_verwijder IS NULL;
ExCEPTION
WHEN NO_DATA_FOUND
THEN
v_prs_kostenplaats_key:=NULL;
END;
-- Status
SELECT DECODE(rec.mld_status,'Gesloten',6,'Nieuw',2,'Goedgekeurd',2,'Geregistreerd',2,'In behandeling',4,'Afgemeld',5,6)
INTO v_status_key
FROM DUAL; -- Historie \(6) is default
IF rec.mld_melding_datum IS NOT null
THEN
v_meldingsdatum:= fac.safe_to_date(rec.mld_melding_datum,'DD-MM-YYYY HH24:MI.SS');
v_aanduiding:= 'meldingsdatum is Ultimo meldings datum :'||TO_CHAR(v_meldingsdatum,'DD-MM-YYYY HH24:MI:SS');
ELSIF rec.mld_melding_plandatum IS NOT NULL
THEN
-- Ik heb geen melddatum in de epxort zitten dan maar de plandatum die altijd gevuld is.
v_meldingsdatum:= fac.safe_to_date(rec.mld_melding_plandatum,'DD-MM-YYYY HH24:MI.SS');
v_aanduiding:= 'meldingsdatum is Ultimo meldings plan datum :'||TO_CHAR(v_meldingsdatum,'DD-MM-YYYY HH24:MI:SS');
ELSIF rec.mld_melding_gereeddatum IS NOT null
THEN
-- Ik heb geen mld_melding_plandatum in de epxort zitten dan maar de mld_melding_gereeddatum die altijd gevuld is.
v_meldingsdatum:= fac.safe_to_date(rec.mld_melding_gereeddatum,'DD-MM-YYYY HH24:MI.SS');
v_aanduiding:= 'meldingsdatum is Ultimo meldings gereed datum :'||TO_CHAR(v_meldingsdatum,'DD-MM-YYYY HH24:MI:SS');
ELSE
v_meldingsdatum:=SYSDATE;
v_aanduiding:= 'meldingsdatum is Ultimo meldings SYSDATE datum :'||TO_CHAR(SYSDATE,'DD-MM-YYYY HH24:MI:SS');
END IF;
IF rec.mld_melding_gereeddatum IS NOT NULL
THEN
v_melding_gereeddatum := fac.safe_to_date(rec.mld_melding_gereeddatum,'DD-MM-YYYY HH24:MI.SS');
ELSE
v_melding_gereeddatum:=NULL;
END IF;
IF v_stdmelding_key>-1
THEN
v_counter:=v_counter+1;
INSERT INTO mld_melding (mld_melding_module,
mld_meldbron_key,
mld_alg_locatie_key,
mld_alg_onroerendgoed_keys,
mld_melding_datum,
mld_melding_onderwerp,
mld_melding_omschrijving,
mld_melding_opmerking,
mld_melding_behandelaar_key,
mld_melding_behandelaar2_key,
mld_ins_discipline_key,
mld_stdmelding_key,
mld_melding_t_uitvoertijd,
mld_melding_einddatum,
prs_perslid_key,
prs_perslid_key_voor,
prs_kostenplaats_key,
mld_melding_status,
mld_melding_spoed,
MLD_MELDING_EXTERNNR)
VALUES ('MLD',
v_mld_meldbron_key,
NULL,
NULL,
v_meldingsdatum,
rec.mld_onderwerp,
rec.mld_onderwerp,
rec.mld_note,
v_prs_perslid_behandelaar, -- mld_melding_behandelaar_key
TO_NUMBER(NULL), -- mld_melding_behandelaar2_key
TO_NUMBER(NULL),
v_stdmelding_key,
NULL,
v_melding_gereeddatum,
v_prs_perslid_melder,
v_prs_perslid_melder,
v_prs_kostenplaats_key,
v_status_key,
3,
rec.ultimo_nr
)
RETURNING mld_melding_key
INTO v_mld_key;
flx.setflex('MLD',v_kenmerk_key,v_mld_key,rec.ultimo_nr);
IF v_status_key = 2
THEN
fac.trackaction ('#MLDNEW', v_mld_key, NULL, v_meldingsdatum, 'Ultimo melding '||rec.ultimo_nr||' aangemaakt');
ELSIF v_status_key = 4
THEN
fac.trackaction ('#MLDNEW', v_mld_key, NULL, v_meldingsdatum, 'Ultimo melding '||rec.ultimo_nr||' aangemaakt.');
fac.trackaction ('#MLDACP', v_mld_key, NULL, v_meldingsdatum, 'Ultimo melding '||rec.ultimo_nr||' geaccepteerd.');
ELSIF v_status_key = 6
THEN
fac.trackaction ('#MLDNEW', v_mld_key, NULL, v_meldingsdatum, 'Ultimo melding '||rec.ultimo_nr||' aangemaakt.');
fac.trackaction ('#MLDACP', v_mld_key, NULL, v_meldingsdatum, 'Ultimo melding '||rec.ultimo_nr||' geaccepteerd.');
fac.trackaction ('#MLDAFM', v_mld_key, NULL, v_melding_gereeddatum, 'Ultimo melding '||rec.ultimo_nr||' afgemeld');
ELSE
fac.trackaction ('#MLDTRK', v_mld_key, NULL, NULL, 'Ultimo melding '||rec.ultimo_nr||' gemigreerd.');
END IF;
IF v_mld_key>1 AND LENGTH(rec.mld_note)>0
THEN
INSERT INTO mld_melding_note (mld_melding_key,
mld_melding_note_aanmaak,
mld_melding_note_wijzigdatum,
prs_perslid_key,
mld_melding_note_omschrijving,
mld_melding_note_flag)
VALUES (v_mld_key,
v_meldingsdatum,
SYSDATE,
3, -- Facilitor
'Migratie melding Ultimo melding: ' || rec.ultimo_nr||CHR(10)||'Aanvrager: '|| rec.prs_perslid_melder,
0);
INSERT INTO mld_melding_note (mld_melding_key,
mld_melding_note_aanmaak,
mld_melding_note_wijzigdatum,
prs_perslid_key,
mld_melding_note_omschrijving,
mld_melding_note_flag)
VALUES (v_mld_key,
v_meldingsdatum,
SYSDATE,
3, -- Facilitor
SUBSTR(rec.mld_note,1,3999),
0);
END IF;
IF v_ins_deel_key > 0
THEN
INSERT INTO mld_melding_object(ins_deel_key,
mld_melding_key,
mld_melding_object_aanmaak)
VALUES(v_ins_deel_key,
v_mld_key,
v_meldingsdatum);
END IF;
END IF;
ELSE
fac.imp_writelog (p_import_key,
'I',
'Ultimo melding '||rec.ultimo_nr||' is al bekend onder melding :'||v_mld_key,
'Ultimo meldingen aanmaak');
END IF;
END IF;
-- haal het object op
-- haal de melder op
-- haal de evt hebandelar op
-- haal de stdmelding op,
-- haal de status op,
END LOOP;
fac.imp_writelog (p_import_key,
'I',
'Er zijn in totaal '||v_counter||' meldingen aangemaakt.',
'Ultimo meldingen aanmaak');
fac.imp_writelog (p_import_key,
'I',
'Daar zijn intotaal '||v_count_deel_ok||' objecten aangekoppeld.',
'Ultimo meldingen aanmaak');
fac.imp_writelog (p_import_key,
'I',
'In totaal zijn '||v_count_deel||' objecten niet gevonden.',
'Ultimo meldingen aanmaak');
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 150);
v_errormsg :=
v_errormsg || 'ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key,
'E',
'Importproces Ultimo meldingen afgebroken! ('||v_fac_imp_key||')'||v_aanduiding,
v_errormsg);
END;
/
CREATE OR REPLACE PROCEDURE FZKH_IMPORT_AOC_CODES(p_import IN NUMBER)
AS
BEGIN
NULL;
END;
/
-- AOC structuur "ID";"Descr";"ValidFromDate";"LastMutationDate";"MainGroupAocId";"GroupAocId";"Level"
CREATE OR REPLACE PROCEDURE FZKH_UPDATE_AOC_CODES(p_import_key IN NUMBER)
AS
CURSOR sel
IS
SELECT fac_imp_csv_col01 id,
fac_imp_csv_col02 Omschrijving,
fac_imp_csv_col03 ValidFrom,
fac_imp_csv_col04 MutationDate,
fac_imp_csv_col05 aoc_disciplne_code,
fac_imp_csv_col06 aoc_groep_code,
fac_imp_csv_col07 aoc_level,
fac_imp_csv_key csv_key
FROM fac_imp_csv
WHERE fac_import_key=p_import_key
AND fac_imp_csv_col01<>'ID'
ORDER by fac_imp_csv_key;
v_ins_discipline_key NUMBER;
v_srtgroep_key NUMBER;
v_srtdeel_key NUMBER;
v_groep_count NUMBER;
v_srtdeel_count NUMBER;
v_groep_totalcount NUMBER;
v_srtdeel_totalcount NUMBER;
v_csv_key NUMBER;
v_errormsg VARCHAR2 (1000) := '-';
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_aanduiding VARCHAR2 (200);
BEGIN
v_srtdeel_count:=0;
v_groep_count:=0;
v_aanduiding:='Ophalen discipline Medische Techniek is mislukt. Import wordt afgebroken';
SELECT ins_discipline_key
INTO v_ins_discipline_key
FROM ins_discipline
WHERE UPPER(ins_discipline_omschrijving)=UPPER('Medische Techniek')
AND ins_discipline_module='INS'
AND ins_discipline_verwijder IS NULL;
FOR rec in sel
LOOP
v_csv_key:=rec.csv_key;
IF rec.aoc_level='2'
THEN
BEGIN
SELECT ins_srtgroep_key
INTO v_srtgroep_key
from ins_srtgroep
WHERE UPPER(ins_srtgroep_omschrijving)=UPPER(SUBSTR(rec.aoc_groep_code||' '||rec.omschrijving,1,60))
AND ins_discipline_key=v_ins_discipline_key
AND ins_srtgroep_module='INS'
AND ins_srtgroep_verwijder IS NULL;
v_groep_totalcount:=v_groep_totalcount+1;
EXCEPTION
WHEN NO_DATA_FOUND THEN
INSERT INTO ins_srtgroep (ins_discipline_key,
ins_srtgroep_module,
ins_srtgroep_omschrijving
)
VALUES (v_ins_discipline_key,
'INS',
SUBSTR (TRIM (rec.aoc_groep_code||' '||rec.omschrijving), 1, 60)
)
RETURNING ins_srtgroep_key
INTO v_srtgroep_key;
v_groep_count:=v_groep_count+1;
END;
END IF;
IF rec.aoc_level=3
THEN
BEGIN
v_aanduiding:='Objectgroep niet gevonden :'||rec.aoc_groep_code;
SELECT ins_srtgroep_key
INTO v_srtgroep_key
FROM ins_srtgroep
WHERE SUBSTR(ins_srtgroep_omschrijving,1,5)=rec.aoc_groep_code
AND ins_srtgroep_verwijder IS NULL;
v_aanduiding:='Objectsoort niet gevonden :'||rec.aoc_groep_code;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
v_srtgroep_key:=-1;
fac.imp_writelog (p_import_key,
'W',
'Objectgroep niet gevonden :'||rec.aoc_groep_code,'');
END;
IF v_srtgroep_key>0
THEN
BEGIN
SELECT ins_srtdeel_key
INTO v_srtdeel_key
FROM ins_srtdeel
WHERE ins_srtdeel_code=rec.Id
AND ins_srtgroep_key=v_srtgroep_key
AND ins_srtdeel_verwijder IS NULL;
v_srtdeel_totalcount:=v_srtdeel_totalcount+1;
EXCEPTION
WHEN NO_DATA_FOUND THEN
INSERT INTO ins_srtdeel (ins_srtgroep_key,
ins_srtdeel_module,
ins_srtdeel_code,
ins_srtdeel_omschrijving,
ins_srtdeel_binding)
VALUES (v_srtgroep_key,
'INS',
rec.id,
rec.omschrijving,
9); -- aan ruimte en organisatie
v_srtdeel_count:=v_srtdeel_count+1;
END;
ELSE
fac.imp_writelog (p_import_key,
'W',
'Objectsrtdeel '||rec.id||' '||rec.omschrijving||'niet aangemaakt om bovenliggende groep niet is gevonden','');
END IF;
END IF;
END LOOP;
fac.imp_writelog (p_import_key,
'S',
'Objectgroepen/aantal toegevoegd: ' || TO_CHAR (v_groep_count)||'/'||TO_CHAR (v_groep_totalcount),
'');
fac.imp_writelog (p_import_key,
'S',
'Objectsoorten/aantal toegevoegd: ' || TO_CHAR (v_srtdeel_count)||'/'||TO_CHAR (v_srtdeel_totalcount),
'');
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg :=
v_errormsg || ' (error ' || oracle_err_num || '/' || oracle_err_mes || ') ('||v_csv_key||')';
fac.imp_writelog (p_import_key,
'E',
v_errormsg,
'Importproces AOC codering afgebroken!');
END;
/
-- Import rotine tbv de L:answeeper koppeling
-- Data wordt direct naar fac_imp_csv verwerkt
CREATE OR REPLACE PROCEDURE FZKH_IMPORT_LANSWEEPER(p_import IN NUMBER)
AS
BEGIN
NULL;
END;
/
-- fac_imp-ins wordt gevuld en verwerkt
-- URL en key woirden iund e kenmerken wegegschreven,
-- srtdeel
CREATE OR REPLACE PROCEDURE FZKH_UPDATE_LANSWEEPER(p_import_key IN NUMBER)
AS
CURSOR sel
IS
SELECT fac_imp_csv_col01 asset_key,
fac_imp_csv_col02 asset_name,
fac_imp_csv_col03 asset_type,
fac_imp_csv_col04 asset_url
FROM fac_imp_csv
WHERE fac_import_key=p_import_key
ORDER BY fac_imp_csv_key;
v_errormsg VARCHAR2 (1000) := '-';
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_aanduiding VARCHAR2 (200);
v_count NUMBER:=0;
v_discipline VARCHAR2(50);
v_srtdeel_code VARCHAR2(10);
v_srtdeel_omschrijving VARCHAR2(100);
--v_srtgroup_omschrijving VARCHAR2(100);
BEGIN
v_aanduiding := 'Ophalen disipline met key 421 is mislukt';
SELECT ins_discipline_omschrijving
INTO v_discipline
FROM ins_discipline where ins_discipline_key=421;
-- v_discipline := 'CMDB';
v_aanduiding:='Fout bij inlezen van de Lansweeper assets';
-- zorgen dat er geen andere data in de wegzit.
DELETE FROM fac_imp_ins;
COMMIT;
FOR rec in sel
LOOP
-- v_srtgroup_omschrijving:=DECODE(UPPER(SUBSTR(rec.asset_name,1,3)),'FZS','Server','FZT','Terminal','FZW','Workstation','FZL','Laptop','FZK','Kiosk','Overig');
--key",
-- "name",
-- "type",
-- "url",
IF UPPER(rec.asset_type)<>'KEY'
AND UPPER(rec.asset_type)<>'NAME'
AND UPPER(rec.asset_type)<>'TYPE'
AND UPPER(rec.asset_type)<>'URL'
THEN
IF rec.asset_type=NULL
THEN
v_srtdeel_omschrijving:='NB';
v_srtdeel_code:='NB';
END IF;
v_count:=v_count+1;
INSERT INTO fac_imp_ins(ins_discipline_omschrijving,
ins_srtgroep_omschrijving,
ins_srtdeel_code,
ins_srtdeel_omschrijving,
ins_deel_omschrijving,
ins_deel_aantal,
alg_locatie_code,
alg_gebouw_code,
alg_verdieping_volgnr,
alg_ruimte_nr,
ins_deel_externnr,
ins_kenmerkwaarde1,
ins_kenmerkwaarde2)
VALUES( v_discipline,
DECODE(UPPER(SUBSTR(rec.asset_name,1,3)),'FZS','Server','FZT','Terminal','FZW','Workstation','FZL','Laptop','FZK','Kiosk','Overig'),
COALESCE(SUBSTR(rec.asset_type,1,4),v_srtdeel_code),
COALESCE(rec.asset_type,v_srtdeel_omschrijving),
rec.asset_name,
'1',
'FZKH',
'FZKH',
'0',
'_CMDB',
rec.asset_key,
'Lansweeper Key|0='||rec.asset_key,
'Lansweeper URL|0='||rec.asset_url);
END IF;
END LOOP;
fac.imp_writelog (p_import_key,
'I',
'Er zijn '||v_count||' '||v_discipline||'-assets toegevoegd voor verwerking','');
fac_update_ins(p_import_key);
END;
/
CREATE OR REPLACE PROCEDURE FZKH_IMPORT_TD_ASSETS(p_import_key IN NUMBER)
AS
CURSOR sel
IS
SELECT fac_imp_csv_col01 ins_deel_omschrijving,
fac_imp_csv_col02 ins_kenm_intern,
fac_imp_csv_col03 ins_deel_opmerking,
TRIM(SUBSTR(TRIM(fac_imp_csv_col04),6)) ins_srtdeel_omschrijving,
TRIM(SUBSTR(TRIM(fac_imp_csv_col04),1,5)) ins_srtdeel_code,
fac_imp_csv_col05 ins_kenm_locatiecode,
fac_imp_csv_col06 ins_kenm_locatienaam,
fac_imp_csv_col07 ins_kenm_ruimtenr,
fac_imp_csv_col08 ins_kenm_eigncode,
fac_imp_csv_col09 ins_kenm_eignnaam,
TRIM(fac_imp_csv_col11) ins_groep,
-- fac_imp_csv_col1 ins_verval_datum,
fac_imp_csv_col12 ins_kenm_status,
fac_imp_csv_col16 ins_kenm_fabrikant,
fac_imp_csv_col17 ins_kenm_ruimtenaam,
fac_imp_csv_col18 ins_kenm_leverancier,
fac_imp_csv_col19 ins_kenm_bouwjaar,
fac_imp_csv_col20 ins_kenm_type,
fac_imp_csv_col21 ins_kenm_model,
fac_imp_csv_col22 ins_kenm_serienr,
fac_imp_csv_col23 ins_kenm_garantie,
fac_imp_csv_col24 ins_kenm_instaldatum,
fac_imp_csv_col25 ins_kenm_mdd_clas,
fac_imp_csv_col26 ins_onderhoud_datum,
fac_imp_csv_col27 ins_onderhoud_datum_laatst,
fac_imp_csv_col32 ins_srtgroep_fb,
fac_imp_csv_col33 ins_kenm_aanschafprijs
FROM fac_imp_csv
WHERE fac_import_key=p_import_key
ORDER BY fac_imp_csv_key;
v_count NUMBER;
v_ins_groep VARCHAR2(60);
v_locatie_code VARCHAR2(10);
v_gebouw_code VARCHAR2(10);
v_verdieping_nr VARCHAR2(10);
v_ruimte_nr VARCHAR2(25);
v_huidige_locatie VARCHAR2(100);
v_huidige_fys_locatie VARCHAR2(100);
v_installdatum DATE;
v_vervaldatum DATE;
v_klantstatus VARCHAR2(100);
BEGIN
fac_import_file2csv(p_import_key);
DELETE FROM fac_imp_ins;
COMMIT;
FOR rec in sel
LOOP
IF UPPER(rec.ins_deel_omschrijving) <>'ULTIMONR'
THEN
v_huidige_locatie:='';
IF rec.ins_kenm_locatiecode IS NOT NULL
THEN
v_huidige_locatie:=rec.ins_kenm_locatiecode||'-'||rec.ins_kenm_locatienaam;
ELSE
v_huidige_locatie:='';
END IF;
IF rec.ins_kenm_ruimtenr IS NOT NULL
THEN
v_huidige_fys_locatie:=rec.ins_kenm_ruimtenr||'-'||rec.ins_kenm_ruimtenaam;
ELSE
v_huidige_fys_locatie:='';
END IF;
IF LENGTH(rec.ins_kenm_instaldatum)>1
THEN
v_installdatum := fac.safe_to_date(rec.ins_kenm_instaldatum,'DD-MM-YYYY');
ELSE
v_installdatum:=TRUNC(SYSDATE);
END IF;
IF LENGTH(rec.ins_groep)=0
THEN
IF LENGTH(rec.ins_srtgroep_fb)=0
THEN
v_ins_groep:='ONBEKEND';
ELSE
v_ins_groep:=rec.ins_srtgroep_fb;
END IF;
ELSE
v_ins_groep:=rec.ins_groep;
END IF;
IF LENGTH(rec.ins_kenm_ruimtenr)>0
THEN
BEGIN
SELECT 'FZKH', 'FZKH',alg_verdieping_code,alg_ruimte_nr
INTO v_locatie_code,v_gebouw_code,v_verdieping_nr,v_ruimte_nr
FROM alg_v_ruimte_gegevens a
WHERE a.alg_ruimte_nr=rec.ins_kenm_ruimtenr;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
v_locatie_code:='FZKH';
v_gebouw_code:='FZKH';
v_verdieping_nr:='0';
v_ruimte_nr := '_TD_MIGRATIE';
END;
ELSE
v_locatie_code:='FZKH';
v_gebouw_code:='FZKH';
v_verdieping_nr:='0';
v_ruimte_nr := '_TD_MIGRATIE';
END IF;
-- hebben we hem al
SELECT COUNT(*)
INTO v_count
FROM ins_deel
WHERE ins_deel_omschrijving=rec.ins_deel_omschrijving
AND ins_deel_verwijder IS NULL;
IF v_count=0 THEN
INSERT INTO fac_imp_ins (ins_discipline_omschrijving,
ins_srtgroep_omschrijving,
ins_srtdeel_code,
ins_srtdeel_omschrijving,
ins_deel_omschrijving,
ins_deel_opmerking,
ins_deel_aanmaak,
ins_deel_vervaldatum,
alg_locatie_code,
alg_gebouw_code,
alg_verdieping_volgnr,
alg_ruimte_nr,
ins_deel_aantal,
ins_kenmerkwaarde1,
ins_kenmerkwaarde2,
ins_kenmerkwaarde3,
ins_kenmerkwaarde4,
ins_kenmerkwaarde5,
ins_kenmerkwaarde6,
ins_kenmerkwaarde7,
ins_kenmerkwaarde8,
ins_kenmerkwaarde9,
ins_kenmerkwaarde10,
ins_kenmerkwaarde11,
ins_kenmerkwaarde12,
ins_kenmerkwaarde13,
ins_kenmerkwaarde14,
ins_kenmerkwaarde15
)
VALUES ('Technische Dienst',
v_ins_groep,
SUBSTR(rec.ins_srtdeel_code,1,8),
rec.ins_srtdeel_omschrijving,
rec.ins_deel_omschrijving,
rec.ins_deel_opmerking,
v_installdatum,
v_vervaldatum,
v_locatie_code,
v_gebouw_code,
v_verdieping_nr,
v_ruimte_nr,
1,
'Locatie|0='||v_huidige_locatie,
'Model|0='||rec.ins_kenm_model,
'TypeNr|0='||rec.ins_kenm_type,
'Serienummer|0='||rec.ins_kenm_serienr,
'Bouwjaar|0='||rec.ins_kenm_bouwjaar,
'Leverancier|0='||rec.ins_kenm_leverancier,
'Fabrikant|0='||rec.ins_kenm_fabrikant,
'MDD-Classificatie|0='||TRIM(rec.ins_kenm_mdd_clas),
'Einde Garantie|0='||rec.ins_kenm_garantie,
'Status|0='||rec.ins_kenm_status,
'Installatie datum|0='||rec.ins_kenm_instaldatum,
'Onderhouddatum|0='||rec.ins_onderhoud_datum,
'Fysieke Locatie|0='||v_huidige_fys_locatie,
'InternNr|0='||rec.ins_kenm_intern,
'Aanschafprijs|0='||rec.ins_kenm_aanschafprijs
);
ELSE
fac.imp_writelog (p_import_key,
'W',
'Object : '||rec.ins_deel_omschrijving || ' is al bekend en wordt dus overgeslagen','');
END IF;
END IF;
END LOOP;
END;
/
CREATE OR REPLACE PROCEDURE FZKH_UPDATE_TD_ASSETS(p_import_key IN NUMBER)
AS
CURSOR sel
IS
SELECT csv.fac_imp_csv_key regel_key,
csv.fac_imp_csv_col01 ins_deel_omschrijving,
csv.fac_imp_csv_col08 prs_afdeling_code
FROM fac_imp_csv csv , fac_imp_ins i
WHERE csv.fac_import_key=p_import_key
AND UPPER(csv.fac_imp_csv_col01) <> 'ULTIMONR'
AND fac_imp_csv_col01=i.ins_deel_omschrijving
AND i.alg_ruimte_nr='_TD_MIGRATIE'
ORDER BY fac_imp_csv_key;
CURSOR sel_ctr
IS
SELECT fac_imp_csv_key regel_key,
fac_imp_csv_col01 ins_deel_omschrijving,
TRIM(SUBSTR(TRIM(fac_imp_csv_col04),6)) ins_srtdeel_omschrijving,
TRIM(SUBSTR(TRIM(fac_imp_csv_col04),1,5)) ins_srtdeel_code,
fac_imp_csv_col11 ins_groep,
fac_imp_csv_col08 prs_afdeling_code,
fac_imp_csv_col26 ctr_datum_next,
fac_imp_csv_col27 ctr_datum_last
FROM fac_imp_csv
WHERE fac_import_key=p_import_key
AND UPPER(fac_imp_csv_col01) <> 'ULTIMONR'
AND ( fac_imp_csv_col26 IS NOT NULL
OR fac_imp_csv_col27 IS NOT NULL)
ORDER BY fac_imp_csv_key;
v_errormsg VARCHAR2 (1000) := '-';
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_aanduiding VARCHAR2 (200);
v_error NUMBER;
v_ins_deel_key NUMBER;
v_prs_afdeling_key NUMBER;
v_ins_srtdeel_key NUMBER;
v_ins_disciplne_key NUMBER;
v_ins_srtgroep_key NUMBER;
v_srtcontrole_key NUMBER;
v_count NUMBER;
v_counter NUMBER;
v_counter_update NUMBER;
v_ins_deelsrtcontrole_key NUMBER;
v_ctr_groep VARCHAR2(20);
v_ctr_omschrijving VARCHAR2(20);
v_ctr_periode NUMBER;
v_ctr_eenheid NUMBER;
v_ctr_mode NUMBER;
v_ctr_onderhoud_datum DATE;
v_ctr_discipline_key NUMBER;
v_jaren NUMBER;
BEGIN
v_counter:=0;
v_counter_update :=0;
-- Objecten verwerken
fac_update_ins(p_import_key);
-- Nu alle objectsoorten updaten naar dat ze een ruimte of afdeling ondersteunen.
UPDATE ins_srtdeel
SET ins_srtdeel_binding=9
WHERE ins_srtdeel_key IN (select ins_srtdeel_key
from ins_srtdeel isd, ins_srtgroep isg
where isg.ins_discipline_key=641 -- Technische Dienst
AND isd.ins_srtgroep_key = isg.ins_srtgroep_key);
-- Objcten aan de juite afdeling koppelen
FOR rec IN sel
LOOP
v_aanduiding :='UPDATE AFDELING: Verwerken fout in fac_imp_csv_key '||rec.regel_key;
BEGIN
SELECT ins_deel_key
INTO v_ins_deel_key
FROM ins_deel
WHERE ins_deel_omschrijving=rec.ins_deel_omschrijving
AND ins_deel_verwijder IS NULL;
EXCEPTION
WHEN NO_DATA_FOUND THEN
v_ins_deel_key:=-1;
fac.imp_writelog (
p_import_key,
'W',
'Objecten niet gevonden :'||rec.ins_deel_omschrijving,'');
END;
SELECT COUNT(*)
INTO v_count
FROM prs_afdeling a, prs_kostenplaats k
WHERE k.prs_kostenplaats_nr = rec.prs_afdeling_code
and a.prs_kostenplaats_key = k.prs_kostenplaats_key
AND prs_afdeling_verwijder IS NULL;
IF v_count=1
THEN
SELECT prs_afdeling_key
INTO v_prs_afdeling_key
FROM prs_afdeling a,
prs_kostenplaats k
WHERE k.prs_kostenplaats_nr = rec.prs_afdeling_code
AND a.prs_kostenplaats_key = k.prs_kostenplaats_key
AND prs_afdeling_verwijder IS NULL;
ELSIF v_count>1
THEN
SELECT MIN(prs_afdeling_key)
INTO v_prs_afdeling_key
FROM prs_afdeling a,
prs_kostenplaats k
WHERE k.prs_kostenplaats_nr = rec.prs_afdeling_code
AND a.prs_kostenplaats_key = k.prs_kostenplaats_key
AND UPPER(a.prs_afdeling_omschrijving) NOT LIKE 'T-%' -- Pakken we de teamleiders afdeling
AND UPPER(a.prs_afdeling_omschrijving) NOT LIKE 'STAGIARE%' -- Pakken we de teamleiders afdeling
AND prs_afdeling_verwijder IS NULL;
ELSE
v_prs_afdeling_key:=-1;
fac.imp_writelog (p_import_key,
'W',
'Afdeling niet gevonden :'||rec.prs_afdeling_code||' voor object :'||rec.ins_deel_omschrijving,'');
END IF;
IF v_ins_deel_key>0 AND v_prs_afdeling_key>0
THEN
UPDATE ins_deel
SET ins_alg_ruimte_key=v_prs_afdeling_key,
ins_alg_ruimte_type='A'
WHERE ins_deel_key=v_ins_deel_key;
END IF;
END LOOP;
-- Taken aanmaken voor assets
v_error:=0;
BEGIN
SELECT ins_discipline_key
INTO v_ctr_discipline_key
FROM ctr_discipline
WHERE ins_discipline_omschrijving='TD-Onderhoud';
ExCEPTION
WHEN NO_DATA_FOUND THEN
v_error:=1;
END;
IF v_error=0 THEN
v_ctr_omschrijving :='Onderhoud';
v_ctr_periode:=1;
v_ctr_eenheid:=4;
v_ctr_mode:=1;
FOR rec_ctr IN sel_ctr
LOOP
v_aanduiding :='AANMAKEN TAKEN: Verwerken fouut in fac_imp_csv_key '||rec_ctr.regel_key;
BEGIN
v_error:=0;
SELECT ins_srtdeel_key, ins_deel_key
INTo v_ins_srtdeel_key, v_ins_deel_key
FROm ins_v_deel_gegevens
where ins_srtdeel_upper=UPPER(rec_ctr.ins_srtdeel_omschrijving)
AND UPPER(ins_discipline_omschrijving)=UPPER('Technische Dienst')
AND ins_deel_omschrijving=rec_ctr.ins_deel_omschrijving;
EXCEPTION
WHEN NO_DATA_FOUND THEN
v_error:=1;
END;
IF v_error=0
THEN
BEGIN
SELECT MIN(ins_srtcontrole_key)
INTO v_srtcontrole_key
FROM ins_srtcontrole
WHERE ins_srtinstallatie_key=v_ins_srtdeel_key
AND ins_srtcontrole_niveau='S'
AND UPPER(ins_srtcontrole_omschrijving) like UPPER('Onderhoud')
GROUP BY ins_srtcontrole_key;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
INSERT INTO ins_srtcontrole (INS_SRTINSTALLATIE_KEY,
ins_srtcontrole_niveau,
ins_srtcontrole_omschrijving,
ctr_discipline_key,
ins_srtcontrole_info,
ins_srtcontrole_periode,
ins_srtcontrole_eenheid,
ins_srtcontrole_bits,
ins_srtcontrole_mode,
ins_srtcontrole_level)
VALUES (v_ins_srtdeel_key,
'S',
'Onderhoud',
v_ctr_discipline_key,
'TD Onderhoud',
1,
4,
NULL,
1,
10)
RETURN ins_srtcontrole_key
INTO v_srtcontrole_key;
END ;
-- gaan we nu de geplande dtum bepalen
--
IF rec_ctr.ctr_datum_next IS NULL
THEN
v_ctr_onderhoud_datum := TO_DATE(rec_ctr.ctr_datum_last,'DD-MM-YYYY');
ELSE
v_ctr_onderhoud_datum := TO_DATE(rec_ctr.ctr_datum_next,'DD-MM-YYYY');
END IF;
IF v_ctr_onderhoud_datum < TO_DATE('10-2025','MM-YYYY')
THEN
IF TO_CHAR(v_ctr_onderhoud_datum,'MM')='11' OR TO_CHAR(v_ctr_onderhoud_datum,'MM')='12'
THEN
v_jaren := 2025-fac.safe_to_number(TO_CHAR(v_ctr_onderhoud_datum,'YYYY'));
ELSE
v_jaren := 2025-fac.safe_to_number(TO_CHAR(v_ctr_onderhoud_datum,'YYYY'))+1;
END IF;
IF v_jaren>0 THEN
v_ctr_onderhoud_datum := ADD_MONTHS(v_ctr_onderhoud_datum,12*v_jaren);
END IF;
ELSIF v_ctr_onderhoud_datum = TO_DATE('10-2025','MM-YYYY')
THEN
v_ctr_onderhoud_datum := ADD_MONTHS(v_ctr_onderhoud_datum,1);
END IF;
SELECT COUNT(*)
INTO v_count
FROM ins_deelsrtcontrole
WHERE ins_deel_key=v_ins_deel_key
AND ins_srtcontrole_key = v_srtcontrole_key
-- AND ins_deelsrtcontrole_plandatum = fac.safe_to_date(c.ctr_onderhoud_datum,'DD-MM-YYYY')
AND ins_scenario_key=1;
IF v_count=0
THEN
INSERT INTO ins_deelsrtcontrole( ins_deel_key,
ins_srtcontrole_key,
ins_deelsrtcontrole_plandatum,
ins_deelsrtcontrole_status,
ins_scenario_key,
prs_perslid_key)
VALUES(v_ins_deel_key,
v_srtcontrole_key,
v_ctr_onderhoud_datum,
0, --status ingepland
1, -- sceario
3); -- Facilitor
v_counter:=v_counter+1;
ELSIF v_count=1
THEN
UPDATE ins_deelsrtcontrole
SET ins_deelsrtcontrole_plandatum= v_ctr_onderhoud_datum
WHERE ins_deel_key =v_ins_deel_key
AND ins_srtcontrole_key=v_srtcontrole_key;
v_counter_update:=v_counter_update+1;
END IF;
ELSE
fac.imp_writelog (p_import_key,'W',
'Asset '||rec_ctr.ins_srtdeel_omschrijving||' niet kunnen achterhalen, taak aanmaken op datum '||TO_CHAR(v_ctr_onderhoud_datum,'DD-MM-YYYY')||' wordt overgeslagen',
'Taak overgeslagen');
END IF;
END LOOP;
ELSE
fac.imp_writelog (p_import_key,
'E',
'Taak groep : TD-Onderhoud is niet bekend en aanmaken taken wordt dus overgeslagen','');
END IF;
fac.imp_writelog (p_import_key,
'I',
'Taak aanmaak : Er zijn '||v_counter||' taken aangemaakt','');
fac.imp_writelog (p_import_key,
'I',
'Taak update : Er zijn '||v_counter_update ||' taken geupdate','');
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 150);
v_errormsg :=
v_errormsg || 'ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key,
'E',
'Importproces TD assets afgebroken! ('||v_aanduiding||')',
v_errormsg);
END;
/
CREATE OR REPLACE PROCEDURE FZKH_IMPORT_MT_ASSETS(p_import_key IN NUMBER)
AS
CURSOR sel
IS
SELECT fac_imp_csv_col01 ins_discipline,
COALESCE(fac_imp_csv_col04,'MIGRATIE') ins_groep,
COALESCE(fac_imp_csv_col05,'MIGRATIE') ins_srtdeel_code,
COALESCE(fac_imp_csv_col06,'MIGRATIE') ins_srtdeel_omschrijving,
fac_imp_csv_col07 ins_deel_opmerking,
fac_imp_csv_col08 ins_deel_omschrijving,
fac_imp_csv_col12 ins_kenm_aanschafprijs,
fac_imp_csv_col17 ins_kenm_ruimtenr,
fac_imp_csv_col18 ins_kenm_ruimtenaam,
fac_imp_csv_col24 ins_kenm_eigenaar,
fac_imp_csv_col25 ins_kenm_locatiecode,
fac_imp_csv_col26 ins_kenm_locatienaam,
fac_imp_csv_col27 ins_kenm_instaldatum,
fac_imp_csv_col28 ins_verval_datum,
fac_imp_csv_col33 ins_kenm_model,
fac_imp_csv_col34 ins_kenm_type,
fac_imp_csv_col35 ins_kenm_serienr,
fac_imp_csv_col36 ins_kenm_bouwjaar,
fac_imp_csv_col38 ins_kenm_leverancier,
fac_imp_csv_col40 ins_kenm_service_leverancier,
fac_imp_csv_col42 ins_kenm_fabrikant,
fac_imp_csv_col43 ins_kenm_mdd_clas,
fac_imp_csv_col44 ins_kenm_udi,
fac_imp_csv_col46 ins_kenm_garantie,
fac_imp_csv_col48 ins_onderhoud_datum,
fac_imp_csv_col50 ins_kenm_status,
fac_imp_csv_col57 ins_kenm_ordernummer
FROM fac_imp_csv
WHERE fac_import_key=p_import_key
ORDER BY fac_imp_csv_key;
v_count NUMBER;
v_locatie_code VARCHAR2(10);
v_gebouw_code VARCHAR2(10);
v_verdieping_nr VARCHAR2(10);
v_ruimte_nr VARCHAR2(25);
v_huidige_locatie VARCHAR2(100);
v_huidige_fys_locatie VARCHAR2(100);
v_installdatum DATE;
v_vervaldatum DATE;
v_klantstatus VARCHAR2(100);
BEGIN
fac_import_file2csv(p_import_key);
v_locatie_code:='FZKH';
v_gebouw_code:='FZKH';
v_verdieping_nr:='0';
v_ruimte_nr := '_MT_MIGRATIE';
DELETE FROM fac_imp_ins;
COMMIT;
FOR rec in sel
LOOP
IF UPPER(rec.ins_discipline) <>'VAKGROEP'
THEN
v_huidige_locatie:='';
IF rec.ins_kenm_locatiecode IS NOT NULL
THEN
v_huidige_locatie:=rec.ins_kenm_locatiecode||'-'||rec.ins_kenm_locatienaam;
ELSE
v_huidige_locatie:='';
END IF;
IF rec.ins_kenm_ruimtenr IS NOT NULL
THEN
v_huidige_fys_locatie:=rec.ins_kenm_ruimtenr||'-'||rec.ins_kenm_ruimtenaam;
ELSE
v_huidige_fys_locatie:='';
END IF;
IF LENGTH(rec.ins_kenm_instaldatum)>1
THEN
v_installdatum := fac.safe_to_date(rec.ins_kenm_instaldatum,'DD-MM-YYYY');
ELSE
v_installdatum:=TRUNC(SYSDATE);
END IF;
SELECT COUNT(*)
INTO v_count
FROM ins_deel
WHERE ins_deel_omschrijving=rec.ins_deel_omschrijving
AND ins_deel_verwijder IS NULL;
IF UPPER(rec.ins_kenm_status)='AF TE VOEREN'
THEN
IF INSTR(rec.ins_verval_datum,' ')>0
THEN
v_vervaldatum:= fac.safe_to_date(SUBSTR(rec.ins_verval_datum,1,INSTR(rec.ins_verval_datum,' ')),'DD-MM-YYYY');
ELSE
v_vervaldatum:= fac.safe_to_date(rec.ins_verval_datum,'DD-MM-YYYY');
END IF;
ELSE
v_vervaldatum:=NULL;
END IF;
SELECT DECODE (rec.ins_kenm_status,'Actief','Actief','Vermist','Vermist','')
INTO v_klantstatus
FROM dual;
IF v_count=0 THEN
INSERT INTO fac_imp_ins (ins_discipline_omschrijving,
ins_srtgroep_omschrijving,
ins_srtdeel_code,
ins_srtdeel_omschrijving,
ins_deel_omschrijving,
ins_deel_opmerking,
ins_deel_aanmaak,
ins_deel_vervaldatum,
alg_locatie_code,
alg_gebouw_code,
alg_verdieping_volgnr,
alg_ruimte_nr,
ins_deel_aantal,
ins_kenmerkwaarde1,
ins_kenmerkwaarde2,
ins_kenmerkwaarde3,
ins_kenmerkwaarde4,
ins_kenmerkwaarde5,
ins_kenmerkwaarde6,
ins_kenmerkwaarde7,
ins_kenmerkwaarde8,
ins_kenmerkwaarde9,
ins_kenmerkwaarde10,
ins_kenmerkwaarde11,
ins_kenmerkwaarde12,
ins_kenmerkwaarde13,
ins_kenmerkwaarde14,
ins_kenmerkwaarde15,
ins_kenmerkwaarde16,
ins_kenmerkwaarde17,
ins_kenmerkwaarde18,
ins_kenmerkwaarde19
)
VALUES (rec.ins_discipline,
rec.ins_groep,
SUBSTR(rec.ins_srtdeel_code,1,8),
rec.ins_srtdeel_omschrijving,
rec.ins_deel_omschrijving,
rec.ins_deel_opmerking,
v_installdatum,
v_vervaldatum,
v_locatie_code,
v_gebouw_code,
v_verdieping_nr,
v_ruimte_nr,
1,
'Locatie|0='||v_huidige_locatie,
'Model|0='||rec.ins_kenm_model,
'TypeNr|0='||rec.ins_kenm_type,
'Serienummer|0='||rec.ins_kenm_serienr,
'Bouwjaar|0='||rec.ins_kenm_bouwjaar,
'Leverancier|0='||rec.ins_kenm_leverancier,
'ServiceLeverancier|0='||rec.ins_kenm_service_leverancier,
'Fabrikant|0='||rec.ins_kenm_fabrikant,
'MDD-Classificatie|0='||TRIM(rec.ins_kenm_mdd_clas),
'Einde Garantie|0='||rec.ins_kenm_garantie,
'Status|0='||rec.ins_kenm_status,
'Aanschafprijs|0='||TRIM(rec.ins_kenm_aanschafprijs),
'Installatie datum|0='||rec.ins_kenm_instaldatum,
'Onderhouddatum|0='||rec.ins_onderhoud_datum,
'Klantstatus|0='||v_klantstatus,
'Afvoer datum|0='||v_vervaldatum,
'Fysieke Locatie|0='||v_huidige_fys_locatie,
'UDI|0='||rec.ins_kenm_udi,
'Ordernummer|0='||rec.ins_kenm_ordernummer
);
ELSE
fac.imp_writelog (p_import_key,
'W',
'Object : '||rec.ins_deel_omschrijving || ' is al bekend en wordt dus overgeslagen','');
END IF;
END IF;
END LOOP;
END;
/
CREATE OR REPLACE PROCEDURE FZKH_UPDATE_MT_ASSETS(p_import_key IN NUMBER)
AS
CURSOR sel
IS
SELECT fac_imp_csv_col08 ins_deel_omschrijving,
fac_imp_csv_col24 prs_afdeling_code
FROM fac_imp_csv
WHERE fac_import_key=p_import_key
ORDER BY fac_imp_csv_key;
CURSOR sel_controle
IS
SELECT fac_imp_csv_col08 ins_deel_omschrijving,
fac_imp_csv_col48 ctr_onderhoud_datum
FROM fac_imp_csv
WHERE fac_import_key=p_import_key
AND fac_imp_csv_col45='ONWAAR'
AND fac_imp_csv_col48 IS NOT NULL
AND fac_imp_csv_col50='Actief'
ORDER BY fac_imp_csv_key;
CURSOR sel_controle_skip(p_ins_srtdeel_key IN NUMBER, p_ins_srtcontrole_key IN NUMBER)
IS
SELECT ins_srtcontrole_key
from ins_srtcontrole isc
WHERE isc.ins_srtinstallatie_key=p_ins_srtdeel_key
AND isc.ins_srtcontrole_key <> p_ins_srtcontrole_key;
v_errormsg VARCHAR2 (1000) := '-';
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_aanduiding VARCHAR2 (200);
v_ins_deel_key NUMBER;
v_prs_afdeling_key NUMBER;
v_ins_srtdeel_key NUMBER;
v_srtcontrole_key NUMBER;
v_count NUMBER;
v_counter NUMBER;
v_ins_deelsrtcontrole_key NUMBER;
v_maand VARChar2(15);
BEGIN
fac_update_ins(p_import_key);
-- Gaan we nu die MT objecten die een verval datum hebben (status : Af te voeren') op inactief zetten ins_deel_actief=0
-- FIP sheet ondersteund geen ins_deel_inactief
UPDATE ins_deel i
SET i.ins_deel_actief = 0
WHERE ins_deel_key IN
(SELECT i.ins_deel_key
from INS_V_DEEL_GEGEVENS i, ins_deel id, ins_kenmerkdeel ikd
WHERE UPPER (i.INS_DISCIPLINE_OMSCHRIJVING) =
UPPER ('Medische Techniek')
AND id.INS_DEEL_KEY = i.INS_DEEL_KEY
AND id.ins_deel_vervaldatum IS NOT NULL
AND id.ins_deel_vervaldatum < TRUNC(SYSDATE)
AND id.ins_deel_actief=1
AND ikd.INS_DEEL_KEY = i.INS_DEEL_KEY
AND fac.safe_to_number(ikd.INS_KENMERKDEEL_WAARDE)=191); -- Af te voeren
v_counter:=0;
-- Gaan we nu de objecten aan de juiste afdeling koppelen
FOR rec IN sel
LOOP
BEGIN
SELECT ins_deel_key
INTO v_ins_deel_key
FROM ins_deel
WHERE ins_deel_omschrijving=rec.ins_deel_omschrijving
AND ins_deel_verwijder IS NULL;
EXCEPTION
WHEN NO_DATA_FOUND THEN
v_ins_deel_key:=-1;
fac.imp_writelog (
p_import_key,
'W',
'Objecten niet gevonden :'||rec.ins_deel_omschrijving,'');
END;
SELECT COUNT(*)
INTO v_count
FROM prs_afdeling a, prs_kostenplaats k
WHERE k.prs_kostenplaats_nr = rec.prs_afdeling_code
and a.prs_kostenplaats_key = k.prs_kostenplaats_key
AND prs_afdeling_verwijder IS NULL;
IF v_count=1
THEN
SELECT prs_afdeling_key
INTO v_prs_afdeling_key
FROM prs_afdeling a,
prs_kostenplaats k
WHERE k.prs_kostenplaats_nr = rec.prs_afdeling_code
AND a.prs_kostenplaats_key = k.prs_kostenplaats_key
AND prs_afdeling_verwijder IS NULL;
ELSIF v_count>1
THEN
SELECT MIN(prs_afdeling_key)
INTO v_prs_afdeling_key
FROM prs_afdeling a,
prs_kostenplaats k
WHERE k.prs_kostenplaats_nr = rec.prs_afdeling_code
AND a.prs_kostenplaats_key = k.prs_kostenplaats_key
AND UPPER(a.prs_afdeling_omschrijving) NOT LIKE 'T-%' -- Pakken we de teamleiders afdeling
AND UPPER(a.prs_afdeling_omschrijving) NOT LIKE 'STAGIARE%' -- Pakken we de teamleiders afdeling
AND prs_afdeling_verwijder IS NULL;
ELSE
v_prs_afdeling_key:=-1;
fac.imp_writelog (p_import_key,
'W',
'Afdeling niet gevonden :'||rec.prs_afdeling_code||' voor object :'||rec.ins_deel_omschrijving,'');
END IF;
IF v_ins_deel_key>0 AND v_prs_afdeling_key>0
THEN
UPDATE ins_deel
SET ins_alg_ruimte_key=v_prs_afdeling_key,
ins_alg_ruimte_type='A'
WHERE ins_deel_key=v_ins_deel_key;
END IF;
END LOOP;
-- gaan we nu de periodiek taken maken en aan de xcp records met de juiste taak start datum
v_counter:=0;
FOR c IN sel_controle
LOOP
v_counter:=v_counter+1;
-- Welk maand met het onderhoud plaats vinden
SELECT CASE TO_CHAR(TO_DATE(c.ctr_onderhoud_datum,'DD-MM-YYYY'),'MM')
WHEN '01' THEN 'Januari'
WHEN '02' THEN 'Februari'
WHEN '03' THEN 'Maart'
WHEN '04' THEN 'April'
WHEN '05' THEN 'Mei'
WHEN '06' THEN 'Juni'
WHEN '07' THEN 'Juli'
WHEN '08' THEN 'Augustus'
WHEN '09' THEN 'September'
WHEN '10' THEN 'Oktober'
WHEN '11' THEN 'November'
WHEN '12' THEN 'December'
ELSE 'ONBEKEND'
END
INTO v_maand
FROM DUAL;
BEGIN
v_aanduiding := 'Ophalen van srtcontrole voor object '|| c.ins_deel_omschrijving||' in '||v_maand||' gaat fout. - '||v_counter;
SELECT MIN(isc.ins_srtcontrole_key),
i.ins_deel_key,
i.ins_srtdeel_key
INTO v_srtcontrole_key,
v_ins_deel_key,
v_ins_srtdeel_key
FROM ins_srtcontrole isc,
ins_deel i,
ins_srtdeel isd,
ins_srtgroep isg,
ins_discipline id
WHERE i.ins_deel_omschrijving=c.ins_deel_omschrijving
AND isd.ins_srtdeel_key=i.INS_SRTDEEL_KEY
AND isg.ins_srtgroep_key = isd.ins_srtgroep_key
AND id.ins_discipline_key=isg.ins_discipline_key
AND UPPER(id.ins_discipline_omschrijving)=UPPER('Medische Techniek')
AND isc.ins_srtinstallatie_key=i.ins_srtdeel_key
AND UPPER(isc.ins_srtcontrole_omschrijving) like UPPER('Onderhoud %'||v_maand||'%')
GROUP BY i.ins_deel_key,i.ins_srtdeel_key;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
BEGIN
v_aanduiding := 'Ophalen van srtcontrole voor object '|| c.ins_deel_omschrijving||' gaat fout. - '||v_counter;
SELECT MIN(isc.ins_srtcontrole_key),
i.ins_deel_key,
i.ins_srtdeel_key
INTO v_srtcontrole_key,
v_ins_deel_key,
v_ins_srtdeel_key
from ins_srtcontrole isc,
ins_deel i,
ins_srtdeel isd,
ins_srtgroep isg,
ins_discipline id
WHERE i.ins_deel_omschrijving=c.ins_deel_omschrijving
AND isd.ins_srtdeel_key=i.INS_SRTDEEL_KEY
AND isg.ins_srtgroep_key = isd.ins_srtgroep_key
AND id.ins_discipline_key=isg.ins_discipline_key
AND UPPER(id.ins_discipline_omschrijving)=UPPER('Medische Techniek')
AND isc.ins_srtinstallatie_key=i.ins_srtdeel_key
AND UPPER(isc.ins_srtcontrole_omschrijving) like UPPER('Onderhoud %')
GROUP BY i.ins_deel_key,i.ins_srtdeel_key;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
v_srtcontrole_key:=-1;
fac.imp_writelog (p_import_key,
'W',
v_aanduiding,
'Taak niet toegevoegd');
END;
END;-- v_aanduiding:='Uitzonderingstaak niet gevonden';
-- v_count:=0;
-- SELECT count(*)
-- INTO v_count
-- from ins_srtcontroledl_xcp isx
-- WHERE isx.ins_srtcontrole_key=v_srtcontrole_key
-- AND ins_deel_key=v_ins_deel_key;
-- IF v_count=0
-- THEN
-- INSERT INTO ins_srtcontroledl_xcp (ins_deel_key,
-- ins_srtcontrole_key,
-- ins_srtcontroledl_xcp_startdat)
-- VALUES (v_ins_deel_key,
-- v_srtcontrole_key,
-- fac.safe_to_date(c.ctr_onderhoud_datum,'DD-MM-YYYY'));
-- END IF;
-- Gaan we nu de srtcontrole die niet gelden voor dit asset een xcp record aanmaken met einddatum
FOR c2 IN sel_controle_skip(v_ins_srtdeel_key, v_srtcontrole_key)
LOOP
SELECT count(*)
INTO v_count
from ins_srtcontroledl_xcp isx
WHERE isx.ins_srtcontrole_key=c2.ins_srtcontrole_key
AND ins_deel_key=v_ins_deel_key;
IF v_count=0
THEN
INSERT INTO ins_srtcontroledl_xcp (ins_deel_key,
ins_srtcontrole_key,
ins_srtcontroledl_xcp_eind)
VALUES (v_ins_deel_key,
c2.ins_srtcontrole_key,
fac.safe_to_date('31-12-2024','DD-MM-YYYY'));
END IF;
END LOOP;
-- gaan we hem ook gelijk inplannen
IF v_ins_deel_key>0 AND v_srtcontrole_key>0
THEN
SELECT COUNT(*)
INTO v_count
FROM ins_deelsrtcontrole
WHERE ins_deel_key=v_ins_deel_key
AND ins_srtcontrole_key = v_srtcontrole_key
AND ins_deelsrtcontrole_plandatum = fac.safe_to_date(c.ctr_onderhoud_datum,'DD-MM-YYYY')
AND ins_scenario_key=1;
IF v_count=0
THEN
INSERT INTO ins_deelsrtcontrole( ins_deel_key,
ins_srtcontrole_key,
ins_deelsrtcontrole_plandatum,
ins_deelsrtcontrole_status,
ins_scenario_key,
prs_perslid_key)
VALUES(v_ins_deel_key,
v_srtcontrole_key,
fac.safe_to_date(c.ctr_onderhoud_datum,'DD-MM-YYYY'),
0, --status ingepland
1, -- sceario
3); -- Facilitor
ELSIF v_count=1
THEN
UPDATE ins_deelsrtcontrole
SET ins_deelsrtcontrole_plandatum= fac.safe_to_date(c.ctr_onderhoud_datum,'DD-MM-YYYY')
WHERE ins_deel_key =v_ins_deel_key
AND ins_srtcontrole_key=v_srtcontrole_key;
END IF;
END IF;
END LOOP;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 150);
v_errormsg :=
v_errormsg || 'ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key,
'E',
'Importproces MT assets afgebroken! ('||v_counter||')',
v_errormsg);
END;
/
CREATE OR REPLACE PROCEDURE FZKH_INSERT_ULTIMO_ASSETPIC(p_import_key IN NUMBER)
AS
BEGIN
NULL;
END;
/
CREATE OR REPLACE PROCEDURE FZKH_UPDATE_ULTIMO_ASSETPIC(p_import_key IN NUMBER)
AS
CURSOR c1
IS
SELECT fac_imp_csv_key csv_key,
fac_imp_csv_col01 ultimoNr,
fac_imp_csv_col02 ultimo_omschrijving,
fac_imp_csv_col03 file_path1,
fac_imp_csv_col04 file_path2,
fac_imp_csv_col05 file_path3,
fac_imp_csv_col06 file_path4
FROM fac_imp_csv
WHERE fac_import_key=p_import_key
AND UPPER(fac_imp_csv_col01) <> UPPER('instrumentnummer')
AND fac_imp_csv_col03 <>'NULL';
v_errormsg VARCHAR2 (1000) := '-';
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_aanduiding VARCHAR2 (200);
v_code VARCHAR2(10);
v_image VARCHAR(255);
v_ultimonr VARCHAR2(10);
v_count NUMBER:=0;
V_total_count NUMBER:=0;
BEGIN
SELECT COUNT(*)
INTO V_total_count
FROM fac_imp_csv
WHERE fac_import_key=p_import_key
AND UPPER(fac_imp_csv_col01) <> UPPER('instrumentnummer')
AND fac_imp_csv_col03 <>'NULL';
FOR rec in c1
LOOP
IF LENGTH(rec.ultimonr)<>6
THEN
v_ultimoNr:=LPAD(rec.ultimonr,'0');
ELSE
v_ultimonr:=rec.ultimonr;
END IF;
v_image := SUBSTR(rec.file_path1, INSTR(rec.file_path1,'\',1,3)+1);
UPDATE ins_deel i
SET i.ins_deel_image = v_image
WHERE ins_deel_omschrijving=v_ultimonr;
v_count:=v_count+1;
END LOOP;
fac.imp_writelog (p_import_key,
'I',
'Afbeeldingen ingelezen :'||v_total_count||' waarvan er '||v_count||' zijn verwerkt.',
'');
END;
/
CREATE OR REPLACE PROCEDURE FZKH_INSERT_ULTIMO_BIJLAGES(p_import_key IN NUMBER)
AS
BEGIN
NULL;
END;
/
CREATE OR REPLACE PROCEDURE FZKH_UPDATE_ULTIMO_BIJLAGES(p_import_key IN NUMBER)
AS
CURSOR c1
IS
SELECT fac_imp_csv_key csv_key,
fac_imp_csv_col03 classificatie
FROM fac_imp_csv
WHERE fac_import_key=p_import_key
AND fac_imp_csv_col01<>'instrumentnummer';
v_code VARCHAR2(10);
BEGIN
FOR rec IN c1
LOOP
BEGIN
SELECT MIN(f.FAC_USRDATA_OMSCHR) code
INTO v_code
FROM FAC_USRDATA f, FAC_USRTAB fut
WHERE fut.FAC_USRTAB_NAAM= 'BIJLAGE_MIGRATIE'
AND f.FAC_USRTAB_KEY = fut.FAC_USRTAB_KEY
AND LOWER(rec.classificatie) LIKE '%'||LOWER(f.FAC_USRDATA_code)||'%';
EXCEPTION
WHEN NO_DATA_FOUND
THEN
v_code:='OVER';
END;
UPDATE fac_imp_csv SET fac_imp_csv_col06=v_code WHERE fac_imp_csv_key=rec.csv_key;
END LOOP;
COMMIT;
END;
/
-- RAPORTAGE VIEWS
-- MT : RAPPORT TBV PROEFPLAATSINGEN
-- EINDE RAPPORTAGE VIEWS
-- Domeinveld MT assets
CREATE OR REPLACE VIEW FZKH_V_MT_ASSETS
(
ins_deel_key,
ins_deel_omschrijving,
ins_srtdeel,
ins_deel_status
)
AS
SELECT i.ins_deel_key, iv.ins_deel_omschrijving, iv.ins_srtdeel_omschrijving, i.ins_deel_actief
FROM ins_v_deel_gegevens iv , ins_deel i, ins_kenmerkdeel ikd, ins_kenmerk ik
WHERE UPPER(iv.ins_discipline_omschrijving)=UPPER('Medische Techniek')
AND i.ins_deel_key = iv.ins_deel_key
AND ( i.ins_deel_vervaldatum IS NULL
OR i.ins_deel_vervaldatum > SYSDATE)
AND ikd.ins_deel_key = i.ins_deel_key
AND ikd.ins_kenmerk_key = ik.ins_kenmerk_key
AND ik.ins_kenmerk_code='ASSET_CUSTSTATUS'
AND ikd.ins_kenmerkdeel_waarde=882; -- IN ONDERHOUD
-- Domeinveld MT ruimktes
CREATE OR REPLACE VIEW FZKH_V_MT_RUIMTES
(
alg_ruimte_key,
alg_ruimte_tekst
)
AS
SELECT alg_ruimte_key,
CONCAT(CONCAT(alg_ruimte_nr,' - '),alg_ruimte_omschrijving) alg_ruimte_tekst
FROM alg_v_ruimte_gegevens;
-- Domeinveld Alle MT-Teamleiders
CREATE OR REPLACE VIEW FZKH_V_MT_TEAMLEIDERS
(
prs_perslid_key,
prs_perslid_naam_full,
prs_perslid_naam_friendly,
prs_perslid_verwijder
)
AS
SELECT pf.prs_perslid_key, pf.prs_perslid_naam_full, pf.prs_perslid_naam_friendly, pf.prs_perslid_verwijder
FROM fac_gebruikersgroep gg, prs_perslid p, prs_v_perslid_fullnames_all pf
WHERE gg.fac_groep_key = 661 -- Alle MT-Teamleiders A=661 P=601
AND gg.prs_perslid_key = p.prs_perslid_key
AND p.prs_perslid_apikey IS NULL
AND p.prs_perslid_externid IS NOT NULL
AND p.prs_perslid_key = pf.prs_perslid_key
UNION ALL -- Personen behouden als ooit gebruikt!
SELECT DISTINCT pf.prs_perslid_key, pf.prs_perslid_naam_full, pf.prs_perslid_naam_friendly, TRUNC (SYSDATE, 'yyyy')
FROM fac_kenmerkdomein kd, mld_srtkenmerk sk, mld_kenmerk k, mld_kenmerkmelding km, prs_v_perslid_fullnames_all pf
WHERE UPPER (kd.fac_kenmerkdomein_objectnaam) = 'FZKH_V_MT_TEAMLEIDERS'
AND kd.fac_kenmerkdomein_key = sk.fac_kenmerkdomein_key
AND sk.mld_srtkenmerk_key = k.mld_srtkenmerk_key
AND k.mld_kenmerk_key = km.mld_kenmerk_key
AND fac.safe_to_number (km.mld_kenmerkmelding_waarde) = pf.prs_perslid_key
AND NOT EXISTS
(SELECT 1
FROM fac_gebruikersgroep
WHERE fac_groep_key = 661 -- Alle MT-Teamleiders A=661 P=601
AND prs_perslid_key = pf.prs_perslid_key);
-- Domeinveld Alle Teamleiders in FZKH
CREATE OR REPLACE VIEW FZKH_V_TEAMLEIDERS_ALL
(
prs_perslid_key,
prs_perslid_naam_full,
prs_afdeling_naam,
prs_perslid_verwijder
)
AS
SELECT pf.prs_perslid_key, pf.prs_perslid_naam_full, a.prs_afdeling_omschrijving, pf.prs_perslid_verwijder
FROM fac_gebruikersgroep gg, prs_perslid p, prs_v_perslid_fullnames_all pf, prs_afdeling a
WHERE gg.fac_groep_key = 701 -- Alle MT-Teamleiders A=701 P=
AND gg.prs_perslid_key = p.prs_perslid_key
AND p.prs_perslid_apikey IS NULL
AND p.prs_perslid_externid IS NOT NULL
AND p.prs_perslid_key = pf.prs_perslid_key
AND p.prs_afdeling_key = a.prs_afdeling_key
UNION ALL -- Personen behouden als ooit gebruikt!
SELECT DISTINCT pf.prs_perslid_key, pf.prs_perslid_naam_full, a.prs_afdeling_omschrijving , TRUNC (SYSDATE, 'yyyy')
FROM fac_kenmerkdomein kd, mld_srtkenmerk sk, mld_kenmerk k, mld_kenmerkmelding km, prs_v_perslid_fullnames_all pf, prs_perslid p,prs_afdeling a
WHERE UPPER (kd.fac_kenmerkdomein_objectnaam) = 'FZKH_V_TEAMLEIDERS_ALL'
AND kd.fac_kenmerkdomein_key = sk.fac_kenmerkdomein_key
AND sk.mld_srtkenmerk_key = k.mld_srtkenmerk_key
AND k.mld_kenmerk_key = km.mld_kenmerk_key
AND fac.safe_to_number (km.mld_kenmerkmelding_waarde) = pf.prs_perslid_key
AND pf.prs_perslid_key=p.prs_perslid_key
AND P.prs_afdeling_key = a.prs_afdeling_key
AND NOT EXISTS
(SELECT 1
FROM fac_gebruikersgroep
WHERE fac_groep_key = 701 -- Alle MT-Teamleiders A=661 P=601
AND prs_perslid_key = pf.prs_perslid_key);
-- Domeinveld Medewerkers
CREATE OR REPLACE VIEW FZKH_V_MEDEWERKERS
(
prs_perslid_key,
prs_perslid_naam_full,
prs_perslid_naam_friendly,
prs_perslid_verwijder
)
AS
SELECT pf.prs_perslid_key, pf.prs_perslid_naam_full, pf.prs_perslid_naam_friendly, pf.prs_perslid_verwijder
FROM prs_perslid p, prs_v_perslid_fullnames_all pf
WHERE p.prs_perslid_apikey IS NULL
AND p.prs_perslid_externid IS NOT NULL -- Via SCIM
AND p.prs_perslid_key = pf.prs_perslid_key;
-- Domeinveld Hoofden (ICT)
CREATE OR REPLACE VIEW FZKH_V_HOOFDEN_ICT
(
prs_perslid_key,
prs_perslid_naam_full,
prs_perslid_naam_friendly,
prs_perslid_verwijder
)
AS
SELECT pf.prs_perslid_key, pf.prs_perslid_naam_full, pf.prs_perslid_naam_friendly, pf.prs_perslid_verwijder
FROM fac_gebruikersgroep gg, prs_perslid p, prs_v_perslid_fullnames_all pf
WHERE gg.fac_groep_key = 101 -- Hoofden (ICT)
AND gg.prs_perslid_key = p.prs_perslid_key
AND p.prs_perslid_apikey IS NULL
AND p.prs_perslid_externid IS NOT NULL
AND p.prs_perslid_key = pf.prs_perslid_key
UNION ALL -- Personen behouden als ooit gebruikt!
SELECT DISTINCT pf.prs_perslid_key, pf.prs_perslid_naam_full, pf.prs_perslid_naam_friendly, TRUNC (SYSDATE, 'yyyy')
FROM fac_kenmerkdomein kd, mld_srtkenmerk sk, mld_kenmerk k, mld_kenmerkmelding km, prs_v_perslid_fullnames_all pf
WHERE UPPER (kd.fac_kenmerkdomein_objectnaam) = 'FZKH_V_HOOFDEN_ICT'
AND kd.fac_kenmerkdomein_key = sk.fac_kenmerkdomein_key
AND sk.mld_srtkenmerk_key = k.mld_srtkenmerk_key
AND k.mld_kenmerk_key = km.mld_kenmerk_key
AND fac.safe_to_number (km.mld_kenmerkmelding_waarde) = pf.prs_perslid_key
AND NOT EXISTS
(SELECT 1
FROM fac_gebruikersgroep
WHERE fac_groep_key = 101 -- Hoofden (ICT)
AND prs_perslid_key = pf.prs_perslid_key);
-- Domeinveld Architecten (ICT)
CREATE OR REPLACE VIEW FZKH_V_ARCHITECTEN_ICT
(
prs_perslid_key,
prs_perslid_naam_full,
prs_perslid_naam_friendly,
prs_perslid_verwijder
)
AS
SELECT pf.prs_perslid_key, pf.prs_perslid_naam_full, pf.prs_perslid_naam_friendly, pf.prs_perslid_verwijder
FROM fac_gebruikersgroep gg, prs_perslid p, prs_v_perslid_fullnames_all pf
WHERE gg.fac_groep_key = 102 -- Architecten (ICT)
AND gg.prs_perslid_key = p.prs_perslid_key
AND p.prs_perslid_apikey IS NULL
AND p.prs_perslid_externid IS NOT NULL
AND p.prs_perslid_key = pf.prs_perslid_key
UNION ALL -- Personen behouden als ooit gebruikt!
SELECT DISTINCT pf.prs_perslid_key, pf.prs_perslid_naam_full, pf.prs_perslid_naam_friendly, TRUNC (SYSDATE, 'yyyy')
FROM fac_kenmerkdomein kd, mld_srtkenmerk sk, mld_kenmerk k, mld_kenmerkmelding km, prs_v_perslid_fullnames_all pf
WHERE UPPER (kd.fac_kenmerkdomein_objectnaam) = 'FZKH_V_ARCHITECTEN_ICT'
AND kd.fac_kenmerkdomein_key = sk.fac_kenmerkdomein_key
AND sk.mld_srtkenmerk_key = k.mld_srtkenmerk_key
AND k.mld_kenmerk_key = km.mld_kenmerk_key
AND fac.safe_to_number (km.mld_kenmerkmelding_waarde) = pf.prs_perslid_key
AND NOT EXISTS
(SELECT 1
FROM fac_gebruikersgroep
WHERE fac_groep_key = 102 -- Architecten (ICT)
AND prs_perslid_key = pf.prs_perslid_key);
-- Domeinveld Teamleiders (ICT)
CREATE OR REPLACE VIEW FZKH_V_TEAMLEIDERS_ICT
(
prs_perslid_key,
prs_perslid_naam_full,
prs_perslid_naam_friendly,
prs_perslid_verwijder
)
AS
SELECT pf.prs_perslid_key, pf.prs_perslid_naam_full, pf.prs_perslid_naam_friendly, pf.prs_perslid_verwijder
FROM fac_gebruikersgroep gg, prs_perslid p, prs_v_perslid_fullnames_all pf
WHERE gg.fac_groep_key = 103 -- Teamleiders (ICT)
AND gg.prs_perslid_key = p.prs_perslid_key
AND p.prs_perslid_apikey IS NULL
AND p.prs_perslid_externid IS NOT NULL
AND p.prs_perslid_key = pf.prs_perslid_key
UNION ALL -- Personen behouden als ooit gebruikt!
SELECT DISTINCT pf.prs_perslid_key, pf.prs_perslid_naam_full, pf.prs_perslid_naam_friendly, TRUNC (SYSDATE, 'yyyy')
FROM fac_kenmerkdomein kd, mld_srtkenmerk sk, mld_kenmerk k, mld_kenmerkmelding km, prs_v_perslid_fullnames_all pf
WHERE UPPER (kd.fac_kenmerkdomein_objectnaam) = 'FZKH_V_TEAMLEIDERS_ICT'
AND kd.fac_kenmerkdomein_key = sk.fac_kenmerkdomein_key
AND sk.mld_srtkenmerk_key = k.mld_srtkenmerk_key
AND k.mld_kenmerk_key = km.mld_kenmerk_key
AND fac.safe_to_number (km.mld_kenmerkmelding_waarde) = pf.prs_perslid_key
AND NOT EXISTS
(SELECT 1
FROM fac_gebruikersgroep
WHERE fac_groep_key = 103 -- Teamleiders (ICT)
AND prs_perslid_key = pf.prs_perslid_key);
-- Domeinveld Alle ICT-ers
CREATE OR REPLACE VIEW FZKH_V_ICT_ALL
(
prs_perslid_key,
prs_perslid_naam_full,
prs_perslid_naam_friendly,
prs_perslid_verwijder
)
AS
SELECT pf.prs_perslid_key, pf.prs_perslid_naam_full, pf.prs_perslid_naam_friendly, pf.prs_perslid_verwijder
FROM fac_gebruikersgroep gg, prs_perslid p, prs_v_perslid_fullnames_all pf
WHERE gg.fac_groep_key = 104 -- Alle ICT-ers
AND gg.prs_perslid_key = p.prs_perslid_key
AND p.prs_perslid_apikey IS NULL
AND p.prs_perslid_externid IS NOT NULL
AND p.prs_perslid_key = pf.prs_perslid_key
UNION ALL -- Personen behouden als ooit gebruikt!
SELECT DISTINCT pf.prs_perslid_key, pf.prs_perslid_naam_full, pf.prs_perslid_naam_friendly, TRUNC (SYSDATE, 'yyyy')
FROM fac_kenmerkdomein kd, mld_srtkenmerk sk, mld_kenmerk k, mld_kenmerkmelding km, prs_v_perslid_fullnames_all pf
WHERE UPPER (kd.fac_kenmerkdomein_objectnaam) = 'FZKH_V_ICT_ALL'
AND kd.fac_kenmerkdomein_key = sk.fac_kenmerkdomein_key
AND sk.mld_srtkenmerk_key = k.mld_srtkenmerk_key
AND k.mld_kenmerk_key = km.mld_kenmerk_key
AND fac.safe_to_number (km.mld_kenmerkmelding_waarde) = pf.prs_perslid_key
AND NOT EXISTS
(SELECT 1
FROM fac_gebruikersgroep
WHERE fac_groep_key = 104 -- Alle ICT-ers
AND prs_perslid_key = pf.prs_perslid_key);
-- ICT-notificaties (CUST01 t/m CUST08) op basis van kenmerkvelden!
--481 Wijziging Business Analisten Request for analyse 4 uren 2 dagen Algemeen
--482 Wijziging Architecten Request for change 4 uren 2 dagen Algemeen
--483 Wijziging Standaard wijziging Standaard wijziging 4 uren 2 dagen Standaard wijziging
--484 Wijziging Repeating change Repeating change 4 uren 2 dagen Repeating change
--485 Wijziging Emergency change Emergency change 4 uren 2 dagen Emergency change
--486 Wijziging Configuratie change Configuratie change (algemeen) 4 uren 2 dagen Configuratie change
--487 Wijziging Configuratie change Configuratie change HiX 4 uren 2 dagen Configuratie change
--462 Project Project Aanhaken bestaand project 4 uren 2 dagen Project
--461 Project Project Project 4 uren 2 dagen Project
--101 Service Request HiX Autorisaties 4 uren 2 dagen HiX
--105 Service Request HiX Tijdelijke rechten HiX 4 uren 2 dagen HiX
CREATE OR REPLACE VIEW FZKH_V_NOTI_ICT_APPR
(
code,
sender,
receiver,
text,
key,
par1,
par2,
xkey,
xemail,
xmobile,
fac_srtnotificatie_key,
attachments,
xsender,
prs_bedrijfadres_key
)
AS
SELECT sn.fac_srtnotificatie_code,
NULL,
NULL,
REPLACE (REPLACE (sn.fac_srtnotificatie_oms, '##KEY##', TO_CHAR (m.mld_melding_key)), '##STDMLD##', sm.mld_stdmelding_omschrijving),
m.mld_melding_key,
NULL,
NULL,
NULL,
p.prs_perslid_email xemail,
NULL xmobile,
NULL fac_srtnotificatie_key,
NULL attachments,
NULL xsender,
NULL prs_bedrijfadres_key
FROM mld_melding m,
mld_stdmelding sm,
mld_v_aanwezigkenmerkmelding km,
--mld_v_aanwezigkenmerk k,
prs_perslid p,
fac_srtnotificatie sn,
fac_notificatie_job nj
WHERE m.mld_stdmelding_key IN (483, 484, 485) -- Standaard wijziging/Repeating change/Emergency change
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
AND m.mld_melding_key = km.mld_melding_key
--AND km.mld_kenmerk_key = k.mld_kenmerk_key
--AND k.mld_srtkenmerk_key IN (-1)
AND km.mld_kenmerk_key IN (391, 511, 611) -- Goedkeuring intake (hoofd of teamleider)
AND fac.safe_to_number (km.mld_kenmerkmelding_waarde) = p.prs_perslid_key
AND sn.fac_srtnotificatie_code = 'CUST01'
AND nj.fac_notificatie_job_view = 'FZKH_V_NOTI_ICT_APPR'
AND km.mld_kenmerkmelding_aanmaak > COALESCE (nj.fac_notificatie_job_lastrun, TRUNC (SYSDATE))
UNION ALL
SELECT sn.fac_srtnotificatie_code,
NULL,
NULL,
REPLACE (REPLACE (sn.fac_srtnotificatie_oms, '##KEY##', TO_CHAR (m.mld_melding_key)), '##STDMLD##', sm.mld_stdmelding_omschrijving),
m.mld_melding_key,
NULL,
NULL,
NULL,
ud.fac_usrdata_omschr2 xemail,
NULL xmobile,
NULL fac_srtnotificatie_key,
NULL attachments,
NULL xsender,
NULL prs_bedrijfadres_key
FROM mld_melding m,
mld_stdmelding sm,
mld_v_aanwezigkenmerkmelding km,
--mld_v_aanwezigkenmerk k,
fac_v_aanwezigusrdata ud,
fac_srtnotificatie sn,
fac_notificatie_job nj
WHERE m.mld_stdmelding_key IN (483, 485) -- Standaard wijziging/Emergency change
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
AND m.mld_melding_key = km.mld_melding_key
--AND km.mld_kenmerk_key = k.mld_kenmerk_key
--AND k.mld_srtkenmerk_key IN (-1)
AND km.mld_kenmerk_key IN (444, 664) -- Goedkeuring analyse (architecten)
AND fac.safe_to_number (km.mld_kenmerkmelding_waarde) = ud.fac_usrdata_key
AND sn.fac_srtnotificatie_code = 'CUST02'
AND nj.fac_notificatie_job_view = 'FZKH_V_NOTI_ICT_APPR'
AND km.mld_kenmerkmelding_aanmaak > COALESCE (nj.fac_notificatie_job_lastrun, TRUNC (SYSDATE))
UNION ALL
SELECT sn.fac_srtnotificatie_code,
NULL,
NULL,
REPLACE (REPLACE (sn.fac_srtnotificatie_oms, '##KEY##', TO_CHAR (m.mld_melding_key)), '##STDMLD##', sm.mld_stdmelding_omschrijving),
m.mld_melding_key,
NULL,
NULL,
NULL,
p.prs_perslid_email xemail,
NULL xmobile,
NULL fac_srtnotificatie_key,
NULL attachments,
NULL xsender,
NULL prs_bedrijfadres_key
FROM mld_melding m,
mld_stdmelding sm,
mld_v_aanwezigkenmerkmelding km,
--mld_v_aanwezigkenmerk k,
prs_perslid p,
fac_srtnotificatie sn,
fac_notificatie_job nj
WHERE m.mld_stdmelding_key = 484 -- Repeating change
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
AND m.mld_melding_key = km.mld_melding_key
--AND km.mld_kenmerk_key = k.mld_kenmerk_key
--AND k.mld_srtkenmerk_key IN (-1)
AND km.mld_kenmerk_key IN (564) -- Goedkeuring analyse (teamleider)
AND fac.safe_to_number (km.mld_kenmerkmelding_waarde) = p.prs_perslid_key
AND sn.fac_srtnotificatie_code = 'CUST02'
AND nj.fac_notificatie_job_view = 'FZKH_V_NOTI_ICT_APPR'
AND km.mld_kenmerkmelding_aanmaak > COALESCE (nj.fac_notificatie_job_lastrun, TRUNC (SYSDATE))
UNION ALL
SELECT sn.fac_srtnotificatie_code,
NULL,
NULL,
REPLACE (REPLACE (sn.fac_srtnotificatie_oms, '##KEY##', TO_CHAR (m.mld_melding_key)), '##STDMLD##', sm.mld_stdmelding_omschrijving),
m.mld_melding_key,
NULL,
NULL,
NULL,
p.prs_perslid_email xemail,
NULL xmobile,
NULL fac_srtnotificatie_key,
NULL attachments,
NULL xsender,
NULL prs_bedrijfadres_key
FROM mld_melding m,
mld_stdmelding sm,
mld_v_aanwezigkenmerkmelding km,
--mld_v_aanwezigkenmerk k,
prs_perslid p,
fac_srtnotificatie sn,
fac_notificatie_job nj
WHERE m.mld_stdmelding_key IN (483, 484, 485) -- Standaard wijziging/Repeating change/Emergency change
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
AND m.mld_melding_key = km.mld_melding_key
--AND km.mld_kenmerk_key = k.mld_kenmerk_key
--AND k.mld_srtkenmerk_key IN (-1)
AND km.mld_kenmerk_key IN (452, 570, 672) -- Goedkeuring (teamleider)
AND fac.safe_to_number (km.mld_kenmerkmelding_waarde) = p.prs_perslid_key
AND sn.fac_srtnotificatie_code = 'CUST03'
AND nj.fac_notificatie_job_view = 'FZKH_V_NOTI_ICT_APPR'
AND km.mld_kenmerkmelding_aanmaak > COALESCE (nj.fac_notificatie_job_lastrun, TRUNC (SYSDATE))
UNION ALL
SELECT sn.fac_srtnotificatie_code,
NULL,
NULL,
REPLACE (REPLACE (sn.fac_srtnotificatie_oms, '##KEY##', TO_CHAR (m.mld_melding_key)), '##STDMLD##', sm.mld_stdmelding_omschrijving),
m.mld_melding_key,
NULL,
NULL,
NULL,
p.prs_perslid_email xemail,
NULL xmobile,
NULL fac_srtnotificatie_key,
NULL attachments,
NULL xsender,
NULL prs_bedrijfadres_key
FROM mld_melding m,
mld_stdmelding sm,
mld_v_aanwezigkenmerkmelding km,
--mld_v_aanwezigkenmerk k,
prs_perslid p,
fac_srtnotificatie sn,
fac_notificatie_job nj
WHERE m.mld_stdmelding_key IN (483, 484, 485) -- Standaard wijziging/Repeating change/Emergency change
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
AND m.mld_melding_key = km.mld_melding_key
--AND km.mld_kenmerk_key = k.mld_kenmerk_key
--AND k.mld_srtkenmerk_key IN (-1)
AND km.mld_kenmerk_key IN (464, 582, 684) -- Buddy check door (Alle ICT-ers)
AND fac.safe_to_number (km.mld_kenmerkmelding_waarde) = p.prs_perslid_key
AND sn.fac_srtnotificatie_code = 'CUST04'
AND nj.fac_notificatie_job_view = 'FZKH_V_NOTI_ICT_APPR'
AND km.mld_kenmerkmelding_aanmaak > COALESCE (nj.fac_notificatie_job_lastrun, TRUNC (SYSDATE))
UNION ALL
SELECT sn.fac_srtnotificatie_code,
NULL,
NULL,
REPLACE (REPLACE (sn.fac_srtnotificatie_oms, '##KEY##', TO_CHAR (m.mld_melding_key)), '##STDMLD##', sm.mld_stdmelding_omschrijving),
m.mld_melding_key,
NULL,
NULL,
NULL,
p.prs_perslid_email xemail,
NULL xmobile,
NULL fac_srtnotificatie_key,
NULL attachments,
NULL xsender,
NULL prs_bedrijfadres_key
FROM mld_melding m,
mld_stdmelding sm,
mld_v_aanwezigkenmerkmelding km,
--mld_v_aanwezigkenmerk k,
prs_perslid p,
fac_srtnotificatie sn,
fac_notificatie_job nj
WHERE m.mld_stdmelding_key IN (486, 487) -- Configuratie change
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
AND m.mld_melding_key = km.mld_melding_key
--AND km.mld_kenmerk_key = k.mld_kenmerk_key
--AND k.mld_srtkenmerk_key IN (-1)
AND km.mld_kenmerk_key IN (707, 727) -- Teamleider akkoord
AND fac.safe_to_number (km.mld_kenmerkmelding_waarde) = p.prs_perslid_key
AND sn.fac_srtnotificatie_code = 'CUST05'
AND nj.fac_notificatie_job_view = 'FZKH_V_NOTI_ICT_APPR'
AND km.mld_kenmerkmelding_aanmaak > COALESCE (nj.fac_notificatie_job_lastrun, TRUNC (SYSDATE))
UNION ALL
SELECT sn.fac_srtnotificatie_code,
NULL,
NULL,
REPLACE (REPLACE (sn.fac_srtnotificatie_oms, '##KEY##', TO_CHAR (m.mld_melding_key)), '##STDMLD##', sm.mld_stdmelding_omschrijving),
m.mld_melding_key,
NULL,
NULL,
NULL,
ud.fac_usrdata_omschr2 xemail,
NULL xmobile,
NULL fac_srtnotificatie_key,
NULL attachments,
NULL xsender,
NULL prs_bedrijfadres_key
FROM mld_melding m,
mld_stdmelding sm,
mld_v_aanwezigkenmerkmelding km,
--mld_v_aanwezigkenmerk k,
fac_v_aanwezigusrdata ud,
fac_srtnotificatie sn,
fac_notificatie_job nj
WHERE m.mld_stdmelding_key IN (486, 487) -- Configuratie change
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
AND m.mld_melding_key = km.mld_melding_key
--AND km.mld_kenmerk_key = k.mld_kenmerk_key
--AND k.mld_srtkenmerk_key IN (-1)
AND km.mld_kenmerk_key = 729 -- Autorisatiecommissie akkoord benodigd
AND fac.safe_to_number (km.mld_kenmerkmelding_waarde) = ud.fac_usrdata_key
AND sn.fac_srtnotificatie_code = 'CUST06'
AND nj.fac_notificatie_job_view = 'FZKH_V_NOTI_ICT_APPR'
AND km.mld_kenmerkmelding_aanmaak > COALESCE (nj.fac_notificatie_job_lastrun, TRUNC (SYSDATE))
UNION ALL
SELECT sn.fac_srtnotificatie_code,
NULL,
NULL,
REPLACE (REPLACE (sn.fac_srtnotificatie_oms, '##KEY##', TO_CHAR (m.mld_melding_key)), '##STDMLD##', sm.mld_stdmelding_omschrijving),
m.mld_melding_key,
NULL,
NULL,
NULL,
ud.fac_usrdata_omschr2 xemail,
NULL xmobile,
NULL fac_srtnotificatie_key,
NULL attachments,
NULL xsender,
NULL prs_bedrijfadres_key
FROM mld_melding m,
mld_stdmelding sm,
mld_v_aanwezigkenmerkmelding km,
--mld_v_aanwezigkenmerk k,
fac_v_aanwezigusrdata ud,
fac_srtnotificatie sn,
fac_notificatie_job nj
WHERE m.mld_stdmelding_key IN (461, 462) -- Project/Aanhaken bestaand project
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
AND m.mld_melding_key = km.mld_melding_key
--AND km.mld_kenmerk_key = k.mld_kenmerk_key
--AND k.mld_srtkenmerk_key IN (-1)
AND km.mld_kenmerk_key IN (329, 354) -- Goedkeuring (architecten)
AND fac.safe_to_number (km.mld_kenmerkmelding_waarde) = ud.fac_usrdata_key
AND sn.fac_srtnotificatie_code = 'CUST07'
AND nj.fac_notificatie_job_view = 'FZKH_V_NOTI_ICT_APPR'
AND km.mld_kenmerkmelding_aanmaak > COALESCE (nj.fac_notificatie_job_lastrun, TRUNC (SYSDATE))
UNION ALL
SELECT sn.fac_srtnotificatie_code,
NULL,
NULL,
REPLACE (REPLACE (sn.fac_srtnotificatie_oms, '##KEY##', TO_CHAR (m.mld_melding_key)), '##STDMLD##', sm.mld_stdmelding_omschrijving),
m.mld_melding_key,
NULL,
NULL,
NULL,
p.prs_perslid_email xemail,
NULL xmobile,
NULL fac_srtnotificatie_key,
NULL attachments,
NULL xsender,
NULL prs_bedrijfadres_key
FROM mld_melding m,
mld_stdmelding sm,
mld_v_aanwezigkenmerkmelding km,
--mld_v_aanwezigkenmerk k,
prs_perslid p,
fac_srtnotificatie sn,
fac_notificatie_job nj
WHERE m.mld_stdmelding_key IN (101, 105, 481, 482) -- Request for analyse/Request for change/HiX-Autorisaties/HiX-Tijdelijke rechten
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
AND m.mld_melding_key = km.mld_melding_key
--AND km.mld_kenmerk_key = k.mld_kenmerk_key
--AND k.mld_srtkenmerk_key IN (-1)
AND km.mld_kenmerk_key IN (164, 170, 744, 754) -- Akkoord leidinggevende
AND fac.safe_to_number (km.mld_kenmerkmelding_waarde) = p.prs_perslid_key
AND sn.fac_srtnotificatie_code = 'CUST08'
AND nj.fac_notificatie_job_view = 'FZKH_V_NOTI_ICT_APPR'
AND km.mld_kenmerkmelding_aanmaak > COALESCE (nj.fac_notificatie_job_lastrun, TRUNC (SYSDATE))
;
-- Notificaties MT
-- CUST09 naar teameldier afdeling bij afmelding acceptatie
-- CUST11 naar MT Teamleider die NOn-Conform moet goedkeuren,
-- CUST12 naar Teamledier die Non-Conform moet goedkeuren
CREATE OR REPLACE VIEW FZKH_V_NOTI_MT
(
code,
sender,
receiver,
text,
key,
par1,
par2,
xkey,
xemail,
xmobile,
fac_srtnotificatie_key,
attachments,
xsender,
prs_bedrijfadres_key
)
AS
SELECT sn.fac_srtnotificatie_code code,
NULL sender,
NULL receiver,
'Asset '||iv.ins_deel_omschrijving||' ('||iv.ins_deel_opmerking||') is vrijgegeven' text,
m.mld_melding_key key,
NULL par1,
NULL par2,
iv.ins_deel_key xkey,
(SELECT (MAX(p.prs_perslid_email)||';medischetechniek@flevoziekenhuis.nl')
FROM prs_perslid p, prs_afdeling pa
WHERE UPPER(pa.prs_afdeling_omschrijving) = UPPER('T-' || COALESCE (iv.prs_afdeling_omschrijving, iv.alg_ruimte_nr))
AND p.prs_afdeling_key = pa.prs_afdeling_key
AND pa.prs_afdeling_verwijder IS NULL
AND p.prs_perslid_verwijder IS NULL) xemail,
NULL xmobile,
NULL fac_srtnotificatie_key,
NULL attachments,
NULL xsender,
NULL prs_bedrijfadres_key
FROM mld_melding m,
fac_tracking ft,
mld_melding_object mmo,
ins_v_deel_gegevens iv,
fac_srtnotificatie sn,
FAC_NOTIFICATIE_JOB fnj
WHERE m.mld_stdmelding_key=501 --- A=501
AND m.mld_melding_status=5
AND mmo.mld_melding_key=m.mld_melding_key
AND iv.ins_deel_key = mmo.ins_deel_key
AND ft.fac_tracking_refkey=m.mld_melding_key
AND ft.fac_srtnotificatie_key=47
AND sn.fac_srtnotificatie_code = 'CUST09'
AND fnj.FAC_NOTIFICATIE_JOB_VIEW='FZKH_V_NOTI_MT'
AND ft.FAC_TRACKING_DATUM> COALESCE (fnj.fac_notificatie_job_lastrun, TRUNC (SYSDATE));
UNION ALL
SELECT sn.fac_srtnotificatie_code code,
NULL sender,
NULL receiver,
'Graag uw goedkeuring op Non-Conform aanvraag.' text,
m.mld_melding_key key,
NULL par1,
NULL par2,
NULL xkey,
p.prs_perslid_email||';medischetechniek@flevoziekenhuis.nl' xemail,
NULL xmobile,
NULL fac_srtnotificatie_key,
NULL attachments,
NULL xsender,
NULL prs_bedrijfadres_key
FROM mld_melding m,
mld_stdmelding sm,
mld_v_aanwezigkenmerkmelding km,
mld_v_aanwezigkenmerkmelding km2,
prs_perslid p,
fac_srtnotificatie sn,
fac_notificatie_job nj
WHERE m.mld_stdmelding_key = 503 -- Non_conform
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
AND m.mld_melding_key = km.mld_melding_key
--AND km.mld_kenmerk_key = k.mld_kenmerk_key
--AND k.mld_srtkenmerk_key IN (-1)
AND km.mld_kenmerk_key = 901 -- Akkoord ophalen kenmerk
AND fac.safe_to_number(km.mld_kenmerkmelding_waarde)=61
AND m.mld_melding_key = km2.mld_melding_key
AND km2.mld_kenmerk_key=921 -- MT Teamleider
AND fac.safe_to_number(km2.mld_kenmerkmelding_waarde)=p.prs_perslid_key
AND sn.fac_srtnotificatie_code = 'CUST11'
AND nj.fac_notificatie_job_view = 'FZKH_V_NOTI_MT'
AND km.mld_kenmerkmelding_aanmaak > COALESCE (nj.fac_notificatie_job_lastrun, TRUNC (SYSDATE));
-- Object overzicjt per afdefling
CREATE OR REPLACE VIEW FZKH_V_MT_OBJECT_AFDELING
(
fclt_3d_afdeling_key,
ins_deel_key,
ins_deel_omschrijving,
ins_deel_opmerking,
prs_afdelin_naam,
prs_afdeling_omschrijving,
ins_srt_controle,
volgende_datum_onderhoud,
installatie_datum
)
AS
SELECT pa.PRS_AFDELING_key,
iv.ins_deel_key,
iv.INS_DEEL_OMSCHRIJVING,
iv.INS_DEEL_OPMERKING,
pa.PRS_AFDELING_NAAM,
pa.PRS_AFDELING_OMSCHRIJVING,
isc.INS_SRTCONTROLE_OMSCHRIJVING,
CASE WHEN ids.INS_DEELSRTCONTROLE_PLANDATUM=NULL
THEN
TO_CHAR(ins.nextcyclusdate(iv.ins_deel_key,isc.INS_SRTCONTROLE_key,1),'DD-MM-YYYY')
ELSE
TO_CHAR( ids.INS_DEELSRTCONTROLE_PLANDATUM,'DD-MM-YYYY')
END
volgende_datum_onderhoud,
(SELECT ikd.INS_KENMERKDEEL_WAARDE
from INS_KENMERKDEEL ikd, ins_kenmerk ik
WHERE ikd.INS_KENMERK_KEY = ik.INS_KENMERK_KEY
AND ikd.INS_DEEL_KEY=iv.ins_deel_key
AND ik.INS_KENMERK_CODE='INSTAL_DATUM') installate_datum
FROM INS_V_DEEL_GEGEVENS iv, ins_deelsrtcontrole ids, ins_srtcontrole isc, prs_afdeling pa
WHERE UPPER (iv.INS_DISCIPLINE_OMSCHRIJVING) =
UPPER ('Medische Techniek')
AND iv.INS_DEEL_KEY = ids.INS_DEEL_KEY(+)
AND isc.INS_SRTCONTROLE_KEY(+) = ids.INS_SRTCONTROLE_KEY
AND iv.PRS_AFDELING_key=pa.PRS_AFDELING_key;
CREATE OR REPLACE VIEW FZKH_V_MT_NEXT_OBJECTNR
(
ins_deel_omschrijving
)
AS
SELECT MAX(i.ins_deel_omschrijving)+1
FROM ins_v_deel_gegevens i
WHERE fac.safe_to_number(i.ins_deel_omschrijving) IS NOT NULL
AND SUBSTR(I.ins_deel_omschrijving,1,2)=TO_CHAR(SYSDATE,'YY')
AND i.ins_discipline_key IN (281, 641); -- 281='MEDISCHE TECHNIEK', 641=Technische Dienst
-- MT Manadleijks onderhgoud notificatie view initiele oppzet
CREATE OR REPLACE VIEW FZKH_V_MT_TAKEN_MAAND
(
ins_deel_key,
ins_deel_omschrijving,
ins_deel_opmerking,
eigenaar_soort,
extra_key,
locatie,
ins_srtcontrole,
status,
plandatum,
email
)
AS
SELECT sel.*,
(SELECT COALESCE(MAX(p.prs_perslid_email),'medischetechniek@flevoziekenhuis.nl') email
FROM prs_perslid p, prs_afdeling pa
WHERE UPPER(pa.PRS_AFDELING_omschrijving) = UPPER('T-' || sel.locatie)
AND p.PRS_AFDELING_KEY = pa.PRS_AFDELING_KEY
AND pa.PRS_AFDELING_VERWIJDER IS NULL
AND p.PRS_PERSLID_VERWIJDER IS NULL) email
FROM (SELECT iv.ins_deel_key,
iv.INS_DEEL_OMSCHRIJVING,
iv.INS_DEEL_OPMERKING,
CASE WHEN iv.PRS_AFDELING_key > 0 THEN 'Afdeling' ELSE 'Ruimte' END
eigenaar_soort,
COALESCE (iv.PRS_AFDELING_key, iv.ALG_RUIMTE_KEY)
eigenaar_key,
COALESCE (iv.PRS_AFDELING_OMSCHRIJVING, iv.ALG_RUIMTE_NR)
locatie,
isc.INS_SRTCONTROLE_OMSCHRIJVING,
'Verwacht'
status,
TRUNC (ids.INS_DEELSRTCONTROLE_PLANDATUM)
plandatum
FROM INS_V_DEEL_GEGEVENS iv, ins_deelsrtcontrole ids, ins_srtcontrole isc
WHERE UPPER (iv.INS_DISCIPLINE_OMSCHRIJVING) =
UPPER ('Medische Techniek')
AND ids.INS_DEEL_KEY = iv.INS_DEEL_KEY
AND isc.INS_SRTCONTROLE_KEY = ids.INS_SRTCONTROLE_KEY
AND TRUNC (ids.INS_DEELSRTCONTROLE_PLANDATUM) BETWEEN TRUNC(ADD_MONTHS(SYSDATE,1),'MM') AND TRUNC(LAST_DAY(ADD_MONTHS(SYSDATE,1)))
UNION
SELECT iv.ins_deel_key,
iv.INS_DEEL_OMSCHRIJVING,
iv.INS_DEEL_OPMERKING,
CASE WHEN iv.PRS_AFDELING_key > 0 THEN 'Afdeling' ELSE 'Ruimte' END
eigenaar_soort,
COALESCE (iv.PRS_AFDELING_key, iv.ALG_RUIMTE_KEY)
eigenaar_key,
COALESCE (iv.PRS_AFDELING_OMSCHRIJVING, iv.ALG_RUIMTE_NR)
locatie,
isc.INS_SRTCONTROLE_OMSCHRIJVING,
'In behandeling'
status,
TRUNC (ids.INS_DEELSRTCONTROLE_PLANDATUM)
plandatum
FROM INS_V_DEEL_GEGEVENS iv, ins_deelsrtcontrole ids, ins_srtcontrole isc
WHERE ids.INS_DEEL_KEY = iv.INS_DEEL_KEY
AND TRUNC (ids.INS_DEELSRTCONTROLE_PLANDATUM) <= TRUNC (SYSDATE - 1)
AND ids.INS_DEELSRTCONTROLE_STATUS IN (0,1,2) -- Ingepland, gestart of ter uitvoering
AND isc.INS_SRTCONTROLE_KEY = ids.INS_SRTCONTROLE_KEY
AND (TRUNC (ids.INS_DEELSRTCONTROLE_PLANDATUM) BETWEEN TO_DATE('30-01-2024','DD-MM-YYYY') AND TRUNC(SYSDATE- 1))
) sel
WHERE sel.eigenaar_soort = 'Afdeling'
ORDER BY 5,9;
CREATE OR REPLACE VIEW FZKH_V_NOTI_MTTAKEN
(
xkey,
code,
sender,
receiver,
xemail,
xsender,
text,
key,
xmobile
)
AS
SELECT distinct f.extra_key extra_key,
'CUST10',
NULL,
NULL,
-- f.email||';medischetechniek@flevoziekenhuis.nl' xemail,
'medischetechniek@flevoziekenhuis.nl' xemail,
NULL xsender,
'Lijst met taken maand '||TO_CHAR(ADD_MONTHS(TRUNC(SYSDATE,'MM'),1),'DD-MM-YYYY')||' voor afdeling '||f.locatie,
r.fac_usrrap_key,
NULL
FROM fzkh_v_MT_taken_maand f, fac_usrrap r
WHERE r.fac_usrrap_code='MT_TAKEN_RAPPORT';
CREATE OR REPLACE VIEW FZKH_V_MT_ACCEPTATIEOBJECT
(
code,
sender,
receiver,
key,
text,
xemail,
xsender,
xmobile
)
AS
SELECT
'CUST09' code,
NULL sender,
NULL receiver,
m.mld_melding_key key,
'Acceptatie object melding' text,
'norbert@ipdesign.nl' xemail,
'medischetechniek@flevoziekenhuis.nl' xsender,
NULL xmobile
FROM mld_melding m ,
mld_stdmelding sm,
fac_tracking ft ,
fac_notificatie_job fj
WHERE m.mld_stdmelding_key=sm.mld_stdmelding_key
AND sm.mld_stdmelding_code='MT_ACCEPTATIE_OBJECT'
AND m.mld_melding_status=5
AND ft.fac_srtnotificatie_key=47
AND ft.fac_tracking_refkey=m.mld_melding_key
AND fj.fac_notificatie_job_view='FZKH_V_MT_ACCEPTATIEOBJECT'
AND ft.fac_tracking_datum>COALESCE(fj.fac_notificatie_job_lastrun,SYSDATE);
CREATE OR REPLACE PROCEDURE FZKH_DAILY
AS
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
BEGIN
-- Bijwerken vervangersgroepen (vgr) met FZKH-personen (prs) uit afdelingen
-- met dezelfde kostenplaats (kpn)!
fzkh.update_prs2kpnvgr;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := 'ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.writelog ('DAILY', 'E', 'Proces afgebroken!', v_errormsg);
END FZKH_DAILY;
/
------ 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