2149 lines
96 KiB
SQL
2149 lines
96 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);
|
|
v_youforce_excl VARCHAR2(1);
|
|
|
|
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
|
|
v_youforce_excl:='0';
|
|
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,
|
|
COALESCE((SELECT pkl.prs_kenmerklink_waarde from prs_kenmerklink pkl, prs_kenmerk pk
|
|
WHERE pk.prs_kenmerk_code='YOUFORCE_EXCLUDE'
|
|
AND pkl.prs_kenmerk_key=pkl.prs_kenmerk_key
|
|
AND pkl.prs_link_key=p.prs_perslid_key
|
|
AND pk.prs_kenmerk_niveau='P'
|
|
AND pk.prs_kenmerk_verwijder IS NULL),'0') youforce_excl
|
|
INTO v_perslid_key,
|
|
v_youforce_excl
|
|
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,
|
|
COALESCE((SELECT pkl.prs_kenmerklink_waarde from prs_kenmerklink pkl, prs_kenmerk pk
|
|
WHERE pk.prs_kenmerk_code='YOUFORCE_EXCLUDE'
|
|
AND pkl.prs_kenmerk_key=pkl.prs_kenmerk_key
|
|
AND pkl.prs_link_key=p.prs_perslid_key
|
|
AND pk.prs_kenmerk_niveau='P'
|
|
AND pk.prs_kenmerk_verwijder IS NULL),'0') youforce_excl
|
|
INTO v_perslid_key,
|
|
v_youforce_excl
|
|
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, COALESCE(k.prs_perslid_key,-1), 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_kpn_budgethouder_key=-1 OR 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 en youforce_excl =0 update dan prs_perslid met de afdeling_key,
|
|
IF v_perslid_key>0 AND v_afdeling_key>0 AND v_youforce_excl='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;
|
|
|
|
-- Lijst met meerdaagse uitleenbare objecten en status
|
|
CREATE OR REPLACE VIEW STER_V_UITLEENLIJST
|
|
(
|
|
ins_deel_key,
|
|
discipline,
|
|
groep,
|
|
soort,
|
|
omschrijving,
|
|
opmerking,
|
|
uitgeleend,
|
|
status,
|
|
mld_url
|
|
)
|
|
AS
|
|
SELECT i.ins_deel_key,
|
|
id.ins_discipline_omschrijving,
|
|
ig.ins_srtgroep_omschrijving,
|
|
isd.ins_srtdeel_omschrijving,
|
|
i.ins_deel_omschrijving,
|
|
i.ins_deel_opmerking,
|
|
DECODE (i.ins_alg_ruimte_key_org, NULL, 'Nee', 'Ja') uigeleend,
|
|
DECODE ((SELECT COUNT (*)
|
|
FROM mld_melding m, mld_melding_object mmo
|
|
WHERE m.mld_stdmelding_key = msm.mld_stdmelding_key
|
|
AND mmo.mld_melding_key = m.mld_melding_key
|
|
AND mmo.ins_deel_key = i.ins_deel_key
|
|
AND m.mld_melding_status in (2,3,4)),1,'Gereserveerd', 'Beschikbaar') status,
|
|
'appl/mld/mld_melding.asp?urole=fe'||CHR(38)||'mld_defaultstdmelding='||msm.mld_stdmelding_key||CHR(38)||'ins_key='||i.INS_DEEL_KEY mld_url
|
|
FROM ins_deel i,
|
|
ins_discipline id,
|
|
ins_srtgroep ig,
|
|
ins_srtdeel isd,
|
|
mld_stdmelding msm
|
|
WHERE isd.ins_srtdeel_uitleenbaar = 1
|
|
AND isd.ins_srtdeel_key = i.ins_srtdeel_key
|
|
AND id.ins_discipline_key = ig.ins_discipline_key
|
|
AND ig.ins_srtgroep_key = isd.ins_srtgroep_key
|
|
AND msm.mld_stdmelding_code='RESERVEER';
|
|
|
|
|
|
|
|
--
|
|
-- 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,
|
|
res_notitie
|
|
)
|
|
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,
|
|
(SELECT rkw.res_kenmerkreservering_waarde
|
|
FROM res_kenmerk rk, res_srtkenmerk rsk, res_kenmerkwaarde rkw
|
|
WHERE rk.res_srtkenmerk_key = rsk.res_srtkenmerk_key
|
|
and rsk.res_srtkenmerk_code='NOTES'
|
|
AND rk.res_activiteit_key=ra.res_activiteit_key
|
|
AND rkw.res_kenmerk_key = rk.res_kenmerk_key
|
|
AND rkw.res_rsv_ruimte_key=rrr.res_rsv_ruimte_key
|
|
AND rk.res_kenmerk_verwijder IS NULL) res_notitie
|
|
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,
|
|
COALESCE(rra.res_rsv_artikel_omschrijving,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%');
|
|
|
|
CREATE OR REPLACE VIEW STER_V_CATERING_NOTI
|
|
(
|
|
xkey,
|
|
key,
|
|
code,
|
|
sender,
|
|
receiver,
|
|
text,
|
|
xemail,
|
|
xmobile
|
|
)
|
|
AS
|
|
SELECT distinct rrr.res_rsv_ruimte_key xkey,
|
|
rrr.res_reservering_key key,
|
|
'CUST03' code,
|
|
NULL sender,
|
|
NULL receiver,
|
|
'Catering voor reservering '||res_reservering_key||'/'||rrr.res_rsv_ruimte_volgnr||' is gewijzigd.' text,
|
|
'catering@sterkhuis.nl' xemail,
|
|
NULL xmobile
|
|
FROM res_rsv_ruimte rrr,
|
|
res_rsv_artikel rra,
|
|
res_artikel ra,
|
|
fac_notificatie_job fnj
|
|
WHERE rrr.res_rsv_ruimte_key = rra.res_rsv_ruimte_key
|
|
AND ra.res_artikel_key = rra.res_artikel_key
|
|
AND rrr.res_status_fo_key=2
|
|
AND rrr.res_rsv_ruimte_verwijder IS NULL
|
|
AND rrr.res_rsv_ruimte_dirtlevel=0
|
|
AND fnj.fac_notificatie_job_view='STER_V_CATERING_NOTI'
|
|
AND COALESCE(rra.res_rsv_artikel_mutatie, rra.res_rsv_artikel_aanmaak) > fnj.fac_notificatie_job_lastrun;
|
|
|
|
|
|
|
|
|
|
|
|
------ 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
|
|
|