Files
Customer/STER/STER.sql
2025-02-05 12:48:01 +00:00

2044 lines
92 KiB
SQL

--
-- $Id$
--
-- Script containing customer specific sql statements for the FACILITOR database
-- Voor dbuser invullen: - indien script voor 1 klant is: 'AADS' (de klantcode, zoals vermeld in fac_version_cust)
-- - script is voor meerdere klanten: 'AAXX' (de groepcode, zoals vermeld in fac_version_group)
-- - script is voor meerdere klanten met naam volgens een bepaald patroon: '^AA|^ASMS|^GULU|^NMMS|^RABO|^ZKHM'
-- Ook als het script gedraaid wordt voor de verkeerde cust wordt er een logfile gemaakt.
-- (dit in tegenstelling tot sample_xxxx.sql)
DEFINE thisfile = 'STER.SQL'
DEFINE dbuser = 'STER'
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 STER
AS
FUNCTION getfirststartdate(p_startdatum IN DATE, p_refdatum IN DATE, p_cyclus IN NUMBER)
RETURN DATE;
END;
/
CREATE OR REPLACE PACKAGE BODY STER
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:=ster.getfirststartdate(v_startdatum, p_refdatum, p_cyclus);
END IF;
ELSE
v_startdatum:=p_startdatum;
END IF;
RETURN v_startdatum;
END;
END;
/
-- IMPORTS
CREATE OR REPLACE PROCEDURE STER_IMPORT_YOUFORCE (p_import_key IN NUMBER)
IS
BEGIN
NULL;
END;
/
CREATE OR REPLACE PROCEDURE STER_UPDATE_YOUFORCE (p_import_key IN NUMBER)
IS
CURSOR c
IS
SELECT fac_imp_csv_index file_index,
FAC_IMP_CSV_COL01 prs_perslid_nr,
FAC_IMP_CSV_COL02 prs_perslid_email,
FAC_IMP_CSV_COL03 prs_kostenplaats_code,
FAC_IMP_CSV_COL04 dienstverband_code,
FAC_IMP_CSV_COL05 budgethouder_nr,
FAC_IMP_CSV_COL06 budgethouder_email,
FAC_IMP_CSV_COL07 uren
from fac_imp_csv
WHERE fac_import_key = p_import_key
ORDER BY fac_imp_csv_index;
CURSOR aut(v_kostenplaats_nr IN VARCHAR2)
IS
SELECT fac.safe_to_number(SUBSTR(fud.fac_usrdata_code,1,INSTR(fud.fac_usrdata_code,'-')-1)) fac_groep_key
FROM fac_usrdata fud , fac_usrtab fut
WHERE UPPER(fut.fac_usrtab_naam)='AUTH_MATRI_RO'
AND fut.fac_usrtab_verwijder IS NULL
AND fud.fac_usrtab_key = fut.fac_usrtab_key
AND fud.fac_usrdata_verwijder IS NULL
AND SUBSTR(fud.fac_usrdata_code,INSTR(fud.fac_usrdata_code,'-')+1)=v_kostenplaats_nr;
v_errormsg VARCHAR2 (1000);
v_errorhint VARCHAR2 (1000);
v_aanduiding VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_file_index NUMBER;
v_afdeling_key NUMBER;
v_afd_verantw_key NUMBER;
v_perslid_key NUMBER;
v_prs_kostenplaats_key NUMBER;
v_kpn_budgethouder_key NUMBER;
v_budgethouder_key NUMBER;
v_count NUMBER;
v_primary_kostcode VARCHAR2(12);
BEGIN
-- OPhalen alle regels uit de fac_imp_csv
-- loop
-- Controleer of p[ersoon met personeelsnr kolom bestaat
v_count:=0;
FOR rec IN c
LOOP
IF UPPER(rec.prs_perslid_nr) <> 'PERSOONSNUMMER' AND
UPPER(rec.prs_kostenplaats_code) <> 'KOSTENPLAATS'
THEN
v_file_index:=rec.file_index;
v_aanduiding := 'Persoon kan niet gevonden worden op basis van personeels nr'|| rec.prs_perslid_nr;
BEGIN
SELECT p.prs_perslid_key
INTO v_perslid_key
FROM prs_perslid p
WHERE p.PRS_perslid_NR=rec.prs_perslid_nr
AND p.prs_perslid_verwijder IS NULL;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
v_perslid_key:=-1;
END;
IF v_perslid_key=-1 THEN
BEGIN
v_aanduiding := 'Persoon kan niet gevonden worden op basis van personeels nr'|| rec.prs_perslid_nr||' of email '||rec.prs_perslid_email;
SELECT p.prs_perslid_key
INTO v_perslid_key
FROM prs_perslid p
WHERE UPPER(p.prs_perslid_email)=UPPER(rec.prs_perslid_email)
AND p.prs_perslid_verwijder IS NULL;
EXCEPTION
WHEN NO_DATA_FOUND THEN
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding || v_errormsg,
'Persoon niet gevonden');
END;
END IF;
-- Maar nu moeten we de afdeling hebben met het maximaal aantal uren
BEGIN
v_primary_kostcode:=NULL;
v_aanduiding := 'Max aantal uren ophalen gaat fout bij personeels nr'|| rec.prs_perslid_nr;
SELECT fac_imp_csv_col03
INTO v_primary_kostcode
from (
SELECT fac_imp_csv_col03
FROM fac_imp_csv
WHERE fac_import_key=p_import_key
AND fac_imp_csv_col01=rec.prs_perslid_nr
ORDER BY fac_imp_csv_col07 DESC
) WHERE rownum=1;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding || v_errormsg,
'Persoon niet gevonden');
END;
-- als niet dan fout loggen
-- chcek of afdeling kolom2 bestaat via de kostenplaats
BEGIN
v_aanduiding := 'Kostenplaats/Afdeling kan niet gevonden worden op basis van kostenplaats code'|| rec.prs_kostenplaats_code;
SELECT a.prs_afdeling_key, a.prs_perslid_key_verantw, k.prs_perslid_key, k.prs_kostenplaats_key
INTO v_afdeling_key, v_afd_verantw_key, v_kpn_budgethouder_key, v_prs_kostenplaats_key
FROM prs_kostenplaats k, prs_afdeling a
WHERE k.prs_kostenplaats_nr=COALESCE(v_primary_kostcode,rec.prs_kostenplaats_code)
AND k.prs_kostenplaats_verwijder IS NULL
AND a.prs_kostenplaats_key = k.prs_kostenplaats_key
AND a.prs_afdeling_verwijder IS NULL;
IF (rec.budgethouder_nr IS NOT NULL)
THEN
BEGIN
v_aanduiding := 'Budgethouder kan niet gevonden worden op basis van budgethouder personeelssnr : '|| rec.budgethouder_nr;
SELECT p.prs_perslid_key
INTO v_budgethouder_key
FROM prs_perslid p
where p.prs_perslid_nr=rec.budgethouder_nr
AND p.prs_perslid_verwijder IS NULL
AND p.prs_perslid_inactief IS NULL OR TRUNC(p.prs_perslid_inactief) > TRUNC(SYSDATE);
EXCEPTION
WHEN NO_DATA_FOUND THEN
v_budgethouder_key:=-1;
END;
IF v_budgethouder_key=-1 THEN
BEGIN
v_aanduiding := 'Budgethouder kan niet gevonden worden op basis van budgethouder personeelssnr : '|| rec.budgethouder_nr ||' en email adres '||rec.budgethouder_email;
SELECT p.prs_perslid_key
INTO v_budgethouder_key
FROM prs_perslid p
where UPPER(p.prs_perslid_email)=UPPER(rec.budgethouder_email)
AND p.prs_perslid_verwijder IS NULL
AND p.prs_perslid_inactief IS NULL OR TRUNC(p.prs_perslid_inactief) > TRUNC(SYSDATE);
EXCEPTION
WHEN NO_DATA_FOUND THEN
v_budgethouder_key:=-1;
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding || v_errormsg,
'Budgethouder niet gevonden');
END;
END IF;
IF v_budgethouder_key <> -1 AND v_budgethouder_key<>v_kpn_budgethouder_key
THEN
UPDATE prs_kostenplaats
SET prs_perslid_key=v_budgethouder_key
WHERE prs_kostenplaats_key= v_prs_kostenplaats_key;
END IF;
IF v_budgethouder_key<>-1 AND v_budgethouder_key<>v_afd_verantw_key
THEN
UPDATE prs_afdeling
SET prs_perslid_key_verantw=v_budgethouder_key
WHERE prs_afdeling_key= v_afdeling_key;
END IF;
END IF;
--
-- Moeten we de persoon ook nog een werkplek geven op de locatei vnd e afdelingen waar ze ondervalt
EXCEPTION
WHEN NO_DATA_FOUND
THEN
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding || v_errormsg,
'Kostenplaats/afdeling niet gevonden');
END;
-- ALs ik v_perslid_key heb en een v_afdeling_key update prs_perslid met de afdeling_key,
IF v_perslid_key>0 AND v_afdeling_key>0
THEN
v_count:=v_count+1;
UPDATE prs_perslid
set prs_afdeling_key=v_afdeling_key
WHERE prs_perslid_key=v_perslid_key;
END IF;
FOR rec_aut IN aut(v_primary_kostcode)
LOOP
SELECT COUNT(*)
INTO v_count
FROM fac_gebruikersgroep
WHERE fac_groep_key = rec_aut.fac_groep_key
AND prs_perslid_key = v_perslid_key;
IF v_count=0 AND v_perslid_key >0 THEN
v_aanduiding := 'Fout bij toevoegen persoon '||v_perslid_key||' aan autorisatiegroep'|| rec_aut.fac_groep_key;
INSERT INTO fac_gebruikersgroep(fac_groep_key,
prs_perslid_key)
VALUES(rec_aut.fac_groep_key,
v_perslid_key);
END IF;
END LOOP;
END IF;
END LOOP;
fac.imp_writelog (p_import_key,
'I',
'Er zijn '||v_count||' personen geupdate',
'Update info');
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;
/
-- MJOB elementen import van O-Prognose XML Object export
CREATE OR REPLACE PROCEDURE ster_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);
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'
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_alg_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));
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
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 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 = v_ins_srtdeel_code;
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 := v_ins_srtdeel_code || '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) 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,
v_ins_srtdeel_code,
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;
-- We gaan nu de nummering van de objecten aanpassen. Ze hebben allemaal het hoogste bestaande nummer + 1 meegekregen.
--v_alg_gebouw_code := 'Leeg'; Niet gebruiken bij STER want we lezen 1 gebouw per keer in.
-- v_ins_srtdeel_code := 'Leeg';
--
-- FOR rec IN c
-- LOOP
-- BEGIN
-- IF rec.alg_gebouw_code <> v_alg_gebouw_code
-- OR rec.ins_srtdeel_code <> v_ins_srtdeel_code
-- THEN
-- v_ins_deel_volgnr :=
-- FAC.safe_to_number (
-- SUBSTR (rec.ins_deel_omschrijving, INSTR (rec.ins_deel_omschrijving, '-', 1) + 1, 100));
-- v_alg_gebouw_code := rec.alg_gebouw_code;
-- v_ins_srtdeel_code := rec.ins_srtdeel_code;
-- ELSE
-- v_ins_deel_volgnr := v_ins_deel_volgnr + 1;
--
-- UPDATE fac_imp_ins
-- SET ins_deel_omschrijving =
-- rec.ins_srtdeel_code
-- || LPAD (v_ins_deel_volgnr, 3, '0')
-- WHERE ins_deel_externnr = rec.ins_deel_externnr
-- AND alg_gebouw_code = v_alg_gebouw_code;
-- END IF;
-- 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 ster_import_mjobelementen;
/
CREATE OR REPLACE PROCEDURE ster_update_mjobelementen (
p_import_key IN NUMBER)
IS
BEGIN
fac_update_ins (p_import_key);
END;
/
-- EINE MJOB Elementen Import
CREATE OR REPLACE PROCEDURE ster_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_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_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);
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
INTO v_alg_gebouw_code
FROM alg_gebouw g, alg_onrgoedkenmerk aok
WHERE g.alg_gebouw_verwijder IS NULL
AND aok.alg_onrgoed_key = g.alg_gebouw_key
AND aok.alg_onrgoed_niveau='G'
AND UPPER(aok.alg_onrgoedkenmerk_waarde) = UPPER(v_oprognose_gebouw_code);
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 := 'Objectid kan niet gevonden worden';
v_ins_deel_omschrijving := TRIM (v_ins_deel_omschrijving);
IF v_ins_deel_omschrijving IS NOT NULL
THEN
BEGIN
SELECT 1
INTO v_dummy
FROM ins_v_deel_gegevens
WHERE UPPER(ins_deel_omschrijving) = UPPER(v_ins_deel_omschrijving)
AND 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 id '
);
v_ongeldig := 1;
END;
END IF;
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)
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));
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 ster_import_mjobtaken;
/
CREATE OR REPLACE PROCEDURE ster_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
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_srtcontroledl_xcp_startdat DATE;
v_ins_srtcontroledl_xcp_aantal 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 alg_gebouw_key
INTO v_alg_gebouw_key
FROM alg_gebouw g
WHERE alg_gebouw_verwijder IS NULL
AND UPPER(alg_gebouw_code) = rec.alg_gebouw_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
INTO v_ins_deel_key, v_ins_srtdeel_key, v_ins_srtdeel_code, v_ins_deel_aantal
FROM ins_v_deel_gegevens dg, ins_srtdeel sd
WHERE dg.ins_srtdeel_key = sd.ins_srtdeel_key
AND UPPER(dg.ins_deel_omschrijving) = UPPER(rec.ins_deel_omschrijving)
AND dg.alg_gebouw_upper = UPPER(rec.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 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_upper = UPPER(rec.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;
-- 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;
-- 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 := ster.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 = FAC.safe_to_number(rec.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)
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),
FAC.safe_to_number(rec.ins_srtcontroledl_xcp_perc),
v_ins_srtcontroledl_xcp_startdat)
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
-- Rapportage Views
CREATE OR REPLACE VIEW STER_V_MOB_MLD_NOTES
AS
SELECT distinct m.mld_melding_key,
COALESCE(m.mld_melding_onderwerp,
(SELECT msm.mld_stdmelding_omschrijving
FROM mld_stdmelding msm
WHERE msm.mld_stdmelding_key=m.mld_stdmelding_key)) onderwerp,
ms.mld_statuses_omschrijving status,
(SELECT TO_CHAR(MAX(mld_melding_note_aanmaak),'DD-MM-YYYY HH24:MI')
FROM mld_melding_note
where mld_melding_key=m.mld_melding_key
GROUP BY mld_melding_key)||'-'||
(SELECT *
FROM (SELECT mn.mld_melding_note_omschrijving||' ('||p.prs_perslid_naam_friendly||')'
FROM mld_melding_note mn , prs_v_perslid_fullnames p
WHERE mn.mld_melding_key=m.mld_melding_key
AND p.PRS_PERSLID_KEY = mn.PRS_PERSLID_KEY
ORDER BY mn.mld_melding_note_aanmaak desc)
WHERE ROWNUM = 1) laatste_notitie
FROM mld_melding m,
mld_melding_note mo,
mld_statuses ms
WHERE m.mld_melding_key = mo.mld_melding_key(+)
AND ms.mld_statuses_key=m.mld_melding_status
AND m.mld_melding_status IN (2,3,4,7)
ORDER BY mld_melding_key;
--
-- Looplijst Cateraar
--
CREATE OR REPLACE VIEW ster_v_cat_reserveringincl
(
key,
nummer,
res_omschrijving,
invoerdatum,
datum,
gastheer,
contact,
gastheer_email,
gastheer_telefoon,
contact_email,
contact_telefoon,
invoerder,
kostensoortgroep,
kostensoort,
kpn,
kpn_omschrijving,
kpn_extern,
fclt_3d_divisie_key,
divisie_naam,
divisie_omschrijving,
fclt_3d_afdeling_key,
afdeling_code,
afdeling_omschrijving,
regio_omschrijving,
district_omschijving,
fclt_3d_locatie_key,
locatie,
locatie_omschrijving,
locatie_plaats,
gebouw,
verdieping,
ruimte,
opstelling,
capaciteit,
no_show,
mandaat,
personeelsnr,
fclt_3d_discipline_key,
catalogus_key,
catalogus,
reserveerbare_ruimte,
bezoekers,
van,
tot,
duur,
status,
bostatus,
activiteit,
srtactiviteit_key,
activiteitsoort,
opmerking,
voorziening_discipline_key,
voorziening_type,
voorziening_catalogus,
leverancier,
voorziening_product_key,
voorziening_product,
voorziening_totaalprijs,
voorziening_totaalprijsex,
voorziening_van,
voorziening_tot,
voorziening_aantal,
voorziening_prijs,
voorziening_opmerking
)
AS
SELECT rrr.res_rsv_ruimte_key,
res.res_reservering_key || '/' || rrr.res_rsv_ruimte_volgnr,
rrr.res_rsv_ruimte_omschrijving,
COALESCE (rrr.res_rsv_ruimte_aanmaak, voorz.van),
rrr.res_rsv_ruimte_van,
(SELECT prs_perslid_naam_full
FROM prs_v_perslid_fullnames_all pf
WHERE pf.prs_perslid_key = rrr.res_rsv_ruimte_host_key),
(SELECT prs_perslid_naam_full
FROM prs_v_perslid_fullnames_all pf
WHERE pf.prs_perslid_key = rrr.res_rsv_ruimte_contact_key),
(SELECT ph.prs_perslid_email
FROM prs_perslid ph
WHERE ph.prs_perslid_key = rrr.res_rsv_ruimte_host_key),
(SELECT ph.prs_perslid_telefoonnr
FROM prs_perslid ph
WHERE ph.prs_perslid_key = rrr.res_rsv_ruimte_host_key),
(SELECT pc.prs_perslid_email
FROM prs_perslid pc
WHERE pc.prs_perslid_key = rrr.res_rsv_ruimte_contact_key),
(SELECT pc.prs_perslid_telefoonnr
FROM prs_perslid pc
WHERE pc.prs_perslid_key = rrr.res_rsv_ruimte_contact_key),
(SELECT pf.prs_perslid_naam_full
FROM fac_tracking tr, fac_srtnotificatie str, prs_v_perslid_fullnames_all pf
WHERE tr.prs_perslid_key = pf.prs_perslid_key
AND str.fac_srtnotificatie_code = 'RESNEW'
AND tr.fac_srtnotificatie_key = str.fac_srtnotificatie_key
AND tr.fac_tracking_refkey = rrr.res_rsv_ruimte_key),
(SELECT ksg.prs_kostensoortgrp_oms
FROM prs_kostensoortgrp ksg, prs_kostensoort ks
WHERE ksg.prs_kostensoortgrp_key = ks.prs_kostensoortgrp_key
AND ks.prs_kostensoort_key =
(SELECT disc.prs_kostensoort_key
FROM res_discipline disc
WHERE disc.ins_discipline_key =
COALESCE (
voorz.ins_discipline_key,
(SELECT ins_discipline_key
FROM ins_tab_discipline d,
res_ruimte_opstelling ro,
res_ruimte rr
WHERE rrr.res_ruimte_opstel_key = ro.res_ruimte_opstel_key
AND ro.res_ruimte_key = rr.res_ruimte_key
AND rr.res_discipline_key = d.ins_discipline_key))))
kostensoortgroep,
(SELECT ks.prs_kostensoort_oms
FROM prs_kostensoort ks
WHERE ks.prs_kostensoort_key =
(SELECT disc.prs_kostensoort_key
FROM res_discipline disc
WHERE disc.ins_discipline_key =
COALESCE (
voorz.ins_discipline_key,
(SELECT ins_discipline_key
FROM ins_tab_discipline d,
res_ruimte_opstelling ro,
res_ruimte rr
WHERE rrr.res_ruimte_opstel_key = ro.res_ruimte_opstel_key
AND ro.res_ruimte_key = rr.res_ruimte_key
AND rr.res_discipline_key = d.ins_discipline_key))))
kostensoort,
k.prs_kostenplaats_nr,
k.prs_kostenplaats_omschrijving,
k.prs_kostenplaats_extern,
an.prs_afdeling_key,
an.prs_afdeling_naam,
an.prs_afdeling_omschrijving,
a.prs_afdeling_key,
a.prs_afdeling_naam,
a.prs_afdeling_omschrijving,
(SELECT rg.alg_regio_omschrijving
FROM alg_regio rg,
alg_district d,
alg_locatie l,
alg_gebouw g,
alg_verdieping v,
alg_ruimte r
WHERE rg.alg_regio_key = d.alg_regio_key
AND d.alg_district_key = l.alg_district_key
AND l.alg_locatie_key = g.alg_locatie_key
AND g.alg_gebouw_key = v.alg_gebouw_key
AND v.alg_verdieping_key = r.alg_verdieping_key
AND r.alg_ruimte_key = r2a.alg_ruimte_key),
(SELECT d.alg_district_omschrijving
FROM alg_district d,
alg_locatie l,
alg_gebouw g,
alg_verdieping v,
alg_ruimte r
WHERE d.alg_district_key = l.alg_district_key
AND l.alg_locatie_key = g.alg_locatie_key
AND g.alg_gebouw_key = v.alg_gebouw_key
AND v.alg_verdieping_key = r.alg_verdieping_key
AND r.alg_ruimte_key = r2a.alg_ruimte_key),
(SELECT l.alg_locatie_key
FROM alg_locatie l,
alg_gebouw g,
alg_verdieping v,
alg_ruimte r
WHERE l.alg_locatie_key = g.alg_locatie_key
AND g.alg_gebouw_key = v.alg_gebouw_key
AND v.alg_verdieping_key = r.alg_verdieping_key
AND r.alg_ruimte_key = r2a.alg_ruimte_key),
(SELECT alg_locatie_code
FROM alg_locatie l,
alg_gebouw g,
alg_verdieping v,
alg_ruimte r
WHERE l.alg_locatie_key = g.alg_locatie_key
AND g.alg_gebouw_key = v.alg_gebouw_key
AND v.alg_verdieping_key = r.alg_verdieping_key
AND r.alg_ruimte_key = r2a.alg_ruimte_key),
(SELECT alg_locatie_omschrijving
FROM alg_locatie l,
alg_gebouw g,
alg_verdieping v,
alg_ruimte r
WHERE l.alg_locatie_key = g.alg_locatie_key
AND g.alg_gebouw_key = v.alg_gebouw_key
AND v.alg_verdieping_key = r.alg_verdieping_key
AND r.alg_ruimte_key = r2a.alg_ruimte_key),
(SELECT alg_locatie_plaats
FROM alg_locatie l,
alg_gebouw g,
alg_verdieping v,
alg_ruimte r
WHERE l.alg_locatie_key = g.alg_locatie_key
AND g.alg_gebouw_key = v.alg_gebouw_key
AND v.alg_verdieping_key = r.alg_verdieping_key
AND r.alg_ruimte_key = r2a.alg_ruimte_key),
(SELECT alg_gebouw_naam
FROM alg_gebouw g, alg_verdieping v, alg_ruimte r
WHERE g.alg_gebouw_key = v.alg_gebouw_key
AND v.alg_verdieping_key = r.alg_verdieping_key
AND r.alg_ruimte_key = r2a.alg_ruimte_key),
(SELECT alg_verdieping_code
FROM alg_verdieping v, alg_ruimte r
WHERE v.alg_verdieping_key = r.alg_verdieping_key
AND r.alg_ruimte_key = r2a.alg_ruimte_key),
r2a.ruimte_nr,
r2a.opstelling,
r2a.capaciteit,
rrr.res_rsv_ruimte_noshow,
NVL ( (SELECT pr.fac_profiel_limiet
FROM fac_profiel pr
WHERE p.fac_profiel_key = pr.fac_profiel_key), 0),
prs_perslid_nr,
COALESCE (
voorz.ins_discipline_key,
(SELECT ins_discipline_key
FROM ins_tab_discipline d, res_ruimte_opstelling ro, res_ruimte rr
WHERE rrr.res_ruimte_opstel_key = ro.res_ruimte_opstel_key
AND ro.res_ruimte_key = rr.res_ruimte_key
AND rr.res_discipline_key = d.ins_discipline_key)),
(SELECT ins_discipline_key
FROM ins_tab_discipline d, res_ruimte_opstelling ro, res_ruimte rr
WHERE rrr.res_ruimte_opstel_key = ro.res_ruimte_opstel_key
AND ro.res_ruimte_key = rr.res_ruimte_key
AND rr.res_discipline_key = d.ins_discipline_key),
(SELECT ins_discipline_omschrijving
FROM ins_tab_discipline d, res_ruimte_opstelling ro, res_ruimte rr
WHERE rrr.res_ruimte_opstel_key = ro.res_ruimte_opstel_key
AND ro.res_ruimte_key = rr.res_ruimte_key
AND rr.res_discipline_key = d.ins_discipline_key),
DECODE (rrr.alg_ruimte_key, NULL, 'Ja', 'Nee'),
rrr.res_rsv_ruimte_bezoekers,
rrr.res_rsv_ruimte_van,
rrr.res_rsv_ruimte_tot,
COALESCE ( (rrr.res_rsv_ruimte_tot - rrr.res_rsv_ruimte_van) * 24, 0),
(SELECT res_status_fo_omschrijving
FROM res_status_fo rs
WHERE rs.res_status_fo_key = rrr.res_status_fo_key),
(SELECT res_status_bo_omschrijving
FROM res_status_bo rs
WHERE rs.res_status_bo_key = rrr.res_status_bo_key),
ra.res_activiteit_omschrijving,
rsa.res_srtactiviteit_key,
rsa.res_srtactiviteit_omschrijving,
rrr.res_rsv_ruimte_opmerking,
voorz.ins_discipline_key,
voorz.vtype,
voorz.catalogus,
(SELECT prs_bedrijf_naam
FROM res_disc_params rdp, prs_bedrijf b
WHERE rdp.prs_bedrijf_key = b.prs_bedrijf_key
AND rdp.res_ins_discipline_key = voorz.ins_discipline_key),
voorz.product_key,
voorz.product,
voorz.totaalprijs,
voorz.totaalprijs_ex,
TO_CHAR (voorz.van, 'hh24:mi'),
TO_CHAR (voorz.tot, 'hh24:mi'),
voorz.aantal,
ROUND(voorz.prijs,2),
(SELECT rk.res_kenmerkartikel_waarde
FROM res_kenmerkartikel rk
WHERE rk.res_rsv_artikel_key=voorz.rrr_dl_art_key
AND rk.res_kenmerkartikel_verwijder IS NULL) voorz_opm
FROM res_v_aanwezigrsv_ruimte rrr,
res_activiteit ra,
res_srtactiviteit rsa,
res_reservering res,
prs_kostenplaats k,
prs_perslid p,
prs_afdeling a,
prs_afdeling an,
prs_v_afdeling_boom ab,
( SELECT res_rsv_ruimte_key,
MAX (o.res_opstelling_omschrijving) opstelling,
MAX (ro.res_ruimte_opstel_bezoekers) capaciteit,
MAX (ra.alg_ruimte_key) alg_ruimte_key,
MAX (rr.res_ruimte_nr) ruimte_nr
FROM res_rsv_ruimte r,
res_ruimte_opstelling ro,
res_opstelling o,
res_ruimte rr,
res_alg_ruimte ra
WHERE r.res_rsv_ruimte_verwijder IS NULL
AND r.res_ruimte_opstel_key = ro.res_ruimte_opstel_key
AND ro.res_ruimte_key = rr.res_ruimte_key
AND ro.res_opstelling_key = o.res_opstelling_key
AND rr.res_ruimte_key = ra.res_ruimte_key
GROUP BY res_rsv_ruimte_key
UNION ALL
SELECT res_rsv_ruimte_key,
'' opstelling,
NULL capaciteit,
rrr.alg_ruimte_key,
r.alg_ruimte_nr
FROM res_rsv_ruimte rrr, alg_ruimte r
WHERE rrr.alg_ruimte_key IS NOT NULL AND r.alg_ruimte_key = rrr.alg_ruimte_key) r2a,
(SELECT rrd.res_rsv_ruimte_key res_rsv_ruimte_key,
null rrr_dl_art_key,
rd.res_deel_key product_key,
rd.res_deel_omschrijving product,
DECODE (
rd.res_deel_prijs_vast,
1,
NVL (rrd.res_rsv_deel_prijs, rd.res_deel_prijs),
(rrd.res_rsv_deel_tot - rrd.res_rsv_deel_van)
* 24
* NVL (rrd.res_rsv_deel_prijs, rd.res_deel_prijs))
totaalprijs,
NULL totaalprijs_ex,
rrd.res_rsv_deel_van van,
rrd.res_rsv_deel_tot tot,
(rrd.res_rsv_deel_tot - rrd.res_rsv_deel_van) * 24 aantal,
NVL (rrd.res_rsv_deel_prijs, rd.res_deel_prijs) prijs,
c.ins_discipline_key ins_discipline_key,
c.ins_discipline_omschrijving catalogus,
'object' vtype
FROM res_v_aanwezigrsv_deel rrd,
res_deel rd,
ins_deel d,
ins_tab_discipline c
WHERE rrd.res_deel_key = rd.res_deel_key
AND d.ins_deel_key = rd.res_ins_deel_key
AND rrd.res_rsv_ruimte_key IS NOT NULL
AND c.ins_discipline_key = rd.res_discipline_key
UNION ALL
SELECT rra.res_rsv_ruimte_key res_rsv_ruimte_key,
rra.res_rsv_artikel_key rrr_dl_art_key,
ra.res_artikel_key product_key,
ra.res_artikel_omschrijving product,
NVL (rra.res_rsv_artikel_prijs, rra.res_rsv_artikel_aantal * res_artikel_prijs)
totaalprijs,
NVL (rra.res_rsv_artikel_prijs/(1+NVL(res_artikel_btw/100,0)), rra.res_rsv_artikel_aantal * res_artikel_prijs/(1+NVL(res_artikel_btw/100,0)))
totaalprijs_ex,
rra.res_rsv_artikel_levering van,
NULL tot,
rra.res_rsv_artikel_aantal aantal,
NVL (rra.res_rsv_artikel_prijs / rra.res_rsv_artikel_aantal, res_artikel_prijs)
prijs,
c.ins_discipline_key ins_discipline_key,
c.ins_discipline_omschrijving catalogus,
'consumable' vtype
FROM res_v_aanwezigrsv_artikel rra, res_artikel ra, ins_tab_discipline c
WHERE rra.res_artikel_key = ra.res_artikel_key
AND ra.res_discipline_key = c.ins_discipline_key) voorz
WHERE rrr.res_reservering_key = res.res_reservering_key
AND rrr.res_rsv_ruimte_key = r2a.res_rsv_ruimte_key(+)
AND rrr.prs_kostenplaats_key = k.prs_kostenplaats_key(+)
AND rrr.res_rsv_ruimte_key = voorz.res_rsv_ruimte_key
AND rrr.res_activiteit_key = ra.res_activiteit_key
AND ra.res_srtactiviteit_key = rsa.res_srtactiviteit_key
AND rrr.res_rsv_ruimte_host_key = p.prs_perslid_key
AND p.prs_afdeling_key = a.prs_afdeling_key
AND p.prs_afdeling_key = ab.prs_afdeling_key
AND ab.prs_afdeling_key1 = an.prs_afdeling_key
AND (rrr.res_ruimte_opstel_key IS NOT NULL OR voorz.res_rsv_ruimte_key IS NOT NULL)
AND rrr.res_rsv_ruimte_van >= TO_DATE ('01-01-2010', 'DD-MM-YYYY');
CREATE OR REPLACE VIEW STER_V_MELDING_BEHANDELTEAM
AS
SELECT m.mld_melding_key,
l.alg_locatie_omschrijving
|| '-'
|| a.alg_gebouw_naam
|| ' '
|| a.alg_ruimte_nr locatie,
m.mld_melding_onderwerp onderwerp,
TO_CHAR (SUBSTR (m.mld_melding_omschrijving, 1, 50)) omschrijving,
vg.ins_discipline_omschrijving behandelteam,
p.prs_perslid_naam_friendly aanvrager,
ms.mld_statuses_omschrijving status
FROM mld_melding m,
mld_discipline vg,
alg_v_onroerendgoed_gegevens a,
alg_locatie l,
prs_v_perslid_fullnames p,
mld_statuses ms
WHERE m.mld_melding_status = ms.mld_statuses_key
AND ms.mld_statuses_omschrijving IN ('Nieuw', 'In behandeling')
AND vg.ins_discipline_key(+) = m.mld_ins_discipline_key
AND a.alg_onroerendgoed_keys(+) = m.mld_alg_onroerendgoed_keys
AND l.alg_locatie_key = a.alg_locatie_key
AND p.prs_perslid_key = m.prs_perslid_key;
CREATE OR REPLACE VIEW STER_V_NOTI_RES_REMINDER
(
key,
code,
sender,
receiver,
text,
xkey,
xemail,
xmobile
)
AS
SELECT rrr.res_rsv_ruimte_key key,
'CUST01' code,
NULL sender,
rrr.res_rsv_ruimte_contact_key receiver,
'Herinnering van je reservering '||rrr.res_reservering_key||'/'||rrr.RES_RSV_RUIMTE_VOLGNR||' op '||TO_CHAR(rrr.res_rsv_ruimte_van,'DD-MM-YYYY')||' om '||TO_CHAR(rrr.res_rsv_ruimte_van,'HH24:MI') text,
NULL xkey,
NULL xemail,
NULL xmobile
FROM res_rsv_ruimte rrr
WHERE FAC.count_Work_Days (SYSDATE, rrr.res_rsv_ruimte_van) = 2
AND FAC.count_Work_Days (rrr.res_rsv_ruimte_aanmaak, SYSDATE) >= 0 -- als kort van te voren (2 dagen) aangemaakt dan sturen we geen noti
AND rrr.res_activiteit_key IN (170,171) -- Alleen reservering uit Outlook
AND rrr.res_rsv_ruimte_verwijder IS NULL
AND NOT EXISTS
(SELECT 1
FROM fac_tracking t
WHERE t.fac_srtnotificatie_key = 228
AND t.fac_tracking_refkey = rrr.res_rsv_ruimte_key
AND t.fac_tracking_oms LIKE '%CUST01%');
------ 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