Files
Customer/TDNL/TDNL.sql
Norbert Wassink dad9fdc3f4 TDNL#90363 -- Inrichting MJOB via oPrognose-import.
svn path=/Customer/trunk/; revision=70072
2025-08-21 12:21:23 +00:00

4372 lines
181 KiB
MySQL

--
-- $$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 = 'TDNL.SQL'
DEFINE dbuser = 'TDNL'
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 TDNL
AS
FUNCTION getemaillist(contract_key IN NUMBER) RETURN varchar2;
FUNCTION get_flex_value (pmodule IN VARCHAR2,
p_kenmerk_key IN NUMBER,
p_ref_key IN NUMBER,
p_kenmerkdomein_key IN NUMBER,
p_niveau IN VARCHAR2 DEFAULT NULL)
RETURN VARCHAR2;
FUNCTION getfirststartdate(p_startdatum IN DATE, p_refdatum IN DATE, p_cyclus IN NUMBER)
RETURN DATE;
END;
/
CREATE OR REPLACE PACKAGE BODY TDNL AS
-- functie voor het opahlen van email adressen bi contract die plaats egnodnen zijn
-- email adressen zijn van de kenmerken concessie diecteir, operationeel manager en locatie manager
FUNCTION getemaillist(contract_key IN NUMBER) RETURN varchar2
AS
v_count NUMBER;
v_alg_plaats_key cnt_contract_plaats.cnt_alg_plaats_key%TYPE;
v_alg_plaats_code cnt_contract_plaats.cnt_alg_plaats_code%TYPE;
v_emails VARCHAR2(2000);
BEGIN
SELECT COUNT(*) INTo v_count
from cnt_contract_plaats
where cnt_contract_key=contract_key AND cnt_contract_plaats_verwijder IS NULL;
IF v_count=1 THEN
-- Ophalen welke locatie/plaats het betreft
SELECT cnt_alg_plaats_key, cnt_alg_plaats_code
INTO v_alg_plaats_key, v_alg_plaats_code
FROM cnt_contract_plaats
WHERE cnt_contract_key=contract_key;
-- Gaan we kijken of we een concessie directeur kunnen vinden
SELECT LISTAGG(email,';') WITHIN GROUP (ORDER BY email)
INTO v_emails
FROM (
SELECT
(SELECT p.prs_perslid_email
FROM prs_perslid p
WHERE p.prs_perslid_key=aok.alg_onrgoedkenmerk_waarde
AND p.prs_perslid_verwijder IS NULL) email
FROM alg_onrgoedkenmerk aok,
alg_kenmerk ak
WHERE aok.alg_onrgoed_key=v_alg_plaats_key
AND aok.alg_onrgoed_niveau='D'
AND UPPER(ak.alg_kenmerk_omschrijving)='CONCESSIE DIRECTEUR'
AND aok.alg_kenmerk_key = ak.alg_kenmerk_key
UNION
SELECT
(SELECT p.prs_perslid_email
FROM prs_perslid p
WHERE p.prs_perslid_key=aok.alg_onrgoedkenmerk_waarde
AND p.prs_perslid_verwijder IS NULL) email
FROM alg_onrgoedkenmerk aok,
alg_kenmerk ak
WHERE aok.alg_onrgoed_key=v_alg_plaats_key
AND aok.alg_onrgoed_niveau='D'
AND UPPER(ak.alg_kenmerk_omschrijving)='OPERATIONEEL MANAGER'
AND aok.alg_kenmerk_key = ak.alg_kenmerk_key
UNION
SELECT
(SELECT p.prs_perslid_email
FROM prs_perslid p
WHERE p.prs_perslid_key=aok.alg_onrgoedkenmerk_waarde
AND p.prs_perslid_verwijder IS NULL) email
FROM alg_onrgoedkenmerk aok,
alg_kenmerk ak
WHERE aok.alg_onrgoed_key=v_alg_plaats_key
AND aok.alg_onrgoed_niveau='L'
AND UPPER(ak.alg_kenmerk_omschrijving)='LOCATIE MANAGER'
AND aok.alg_kenmerk_key = ak.alg_kenmerk_key
UNION
SELECT
(SELECT p.prs_perslid_email
FROM prs_perslid p
WHERE p.prs_perslid_key=aok.alg_onrgoedkenmerk_waarde
AND p.prs_perslid_verwijder IS NULL) email
FROM alg_onrgoedkenmerk aok,
alg_kenmerk ak
WHERE aok.alg_onrgoed_key=v_alg_plaats_key
AND aok.alg_onrgoed_niveau='D'
AND UPPER(ak.alg_kenmerk_omschrijving)='MANAGER FACILITAIR'
AND aok.alg_kenmerk_key = ak.alg_kenmerk_key
UNION
SELECT
(SELECT p.prs_perslid_email
FROM prs_perslid p
WHERE p.prs_perslid_key=aok.alg_onrgoedkenmerk_waarde
AND p.prs_perslid_verwijder IS NULL) email
FROM alg_onrgoedkenmerk aok,
alg_kenmerk ak
WHERE aok.alg_onrgoed_key=v_alg_plaats_key
AND aok.alg_onrgoed_niveau='D'
AND UPPER(ak.alg_kenmerk_omschrijving)='MANAGER VASTGOED'
AND aok.alg_kenmerk_key = ak.alg_kenmerk_key
UNION
SELECT p.prs_perslid_email
FROM prs_perslid p,
cnt_contract c
WHERE c.cnt_contract_key=contract_key
AND p.prs_perslid_key = c.prs_perslid_key_beh
);
END IF;
RETURN v_emails;
END;
FUNCTION get_flex_value (
pmodule IN VARCHAR2,
p_kenmerk_key IN NUMBER,
p_ref_key IN NUMBER,
p_kenmerkdomein_key IN NUMBER,
p_niveau IN VARCHAR2 DEFAULT NULL)
RETURN VARCHAR2
AS
v_value VARCHAR2 (4000);
v_kenmerkdomein_key NUMBER (10);
BEGIN
v_value :=
flx.getflex (pmodule,
p_kenmerk_key,
p_ref_key,
p_niveau);
IF p_kenmerkdomein_key IS NOT NULL
THEN
v_value := flx.getdomeinwaarde (p_kenmerkdomein_key, v_value);
END IF;
RETURN v_value;
END;
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:=tdnl.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 TDNL_IMPORT_PERSLID_WP(p_import_key IN NUMBER)
AS
BEGIN
fac_import_perslid(p_import_key);
END;
/
CREATE OR REPLACE PROCEDURE TDNL_UPDATE_PERSLID_WP(p_import_key IN NUMBER)
AS
BEGIN
prs.update_perslid (p_import_key, 'NR', 'G', 1);
END;
/
-- Import KPN aan gebouw koppelen
CREATE OR REPLACE PROCEDURE TDNL_IMPORT_GEBOUW_KPN(p_import_key IN NUMBER)
AS
BEGIN
NULL;
END;
/
CREATE OR REPLACE PROCEDURE TDNL_UPDATE_GEBOUW_KPN(p_import_key IN NUMBER)
AS
CURSOR c
IS
SELECT fac_imp_csv_key fac_imp_csv_key,
fac_imp_csv_col02 locatie_code,
fac_imp_csv_col07 KPN_nr
FROM fac_imp_csv
WHERE fac_import_key = p_import_key;
v_errormsg VARCHAR2 (1000);
v_errorhint VARCHAR2 (1000);
v_aanduiding VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_error NUMBER;
v_count NUMBER;
v_alg_locatie_key NUMBER;
v_kostenplaats_key NUMBER;
BEGIN
v_count:=0;
FOR rec IN C
LOOP
IF LOWER(rec.locatie_code) <>'locatiecode'
AND LOWER(rec.kpn_nr) <> 'kostenplaats'
THEN
BEGIN
v_aanduiding:='Locatie met code :'||rec.locatie_code||' niet gevonden of uitbeheer';
SELECT l.alg_locatie_key
INTO v_alg_locatie_key
FROM alg_locatie l
WHERE l.alg_locatie_code=rec.locatie_code
AND l.alg_locatie_verwijder IS NULL
AND (l.alg_locatie_vervaldatum IS NULL
OR l.alg_locatie_vervaldatum > SYSDATE);
v_aanduiding:='Kostenplaats met code :'||rec.KPN_NR||' niet gevonden';
SELECT k.prs_kostenplaats_key
INTO v_kostenplaats_key
FROM prs_kostenplaats k
WHERE k.prs_kostenplaats_nr=rec.KPN_nr
AND k.prs_kostenplaats_verwijder IS NULL;
UPDATE alg_gebouw g
SET g.prs_kostenplaats_key=v_kostenplaats_key
WHERE g.alg_locatie_key=v_alg_locatie_key;
v_count:=v_count+1;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
v_errorhint := v_errormsg || ' - ' || v_aanduiding;
fac.imp_writelog (p_import_key,
'W',
v_errormsg,
v_errorhint);
END;
END IF;
END LOOP;
DELETE FROM fac_imp_csv
WHERE fac_import_key = p_import_key;
fac.imp_writelog (p_import_key,
'I',
'Succes',
'Er zijn '||v_count||' locaties voorzien van een kostenplaats');
EXCEPTION
WHEN OTHERS THEN
v_errorhint := v_errormsg || ' - ' || v_aanduiding;
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg := 'error ' || oracle_err_num || '/' || oracle_err_mes;
fac.imp_writelog (p_import_key,
'E',
v_errormsg,
v_errorhint);
END;
/
-- Imports verbruiks objecten met evt niet aanweizge ruimtes
CREATE OR REPLACE PROCEDURE TDNL_IMPORT_VERBRUIKSOBJ (p_import_key IN NUMBER)
AS
CURSOR c
IS
SELECT fac_imp_csv_key fac_imp_csv_key,
fac_imp_csv_col01 ins_deel_key_org,
fac_imp_csv_col02 ins_discipline_omschrijving,
fac_imp_csv_col03 ins_kostenplaats,
fac_imp_csv_col04 ins_srtgroep_omschrijving,
fac_imp_csv_col05 ins_srtdeel_code,
fac_imp_csv_col06 ins_srtdeel_omschrijving,
fac_imp_csv_col07 ins_deel_omschrijving,
fac_imp_csv_col08 ins_deel_opmerking,
fac_imp_csv_col09 ins_deel_resreveerbaar,
fac_imp_csv_col10 ins_deel_eenheid,
fac_imp_csv_col11 prijs,
fac_imp_csv_col12 alg_locatie_code,
fac_imp_csv_col13 alg_gebouw_code,
fac_imp_csv_col14 alg_verdipeing_nr,
fac_imp_csv_col15 alg_ruimte_nr,
fac_imp_csv_col22 ins_deel_aanmaak,
fac_imp_csv_col23 ins_deel_vervaldatum,
fac_imp_csv_col24 ins_deel_aantal
from fac_imp_csv
WHERE fac_import_key = p_import_key;
v_errormsg VARCHAR2 (1000);
v_errorhint VARCHAR2 (1000);
v_aanduiding VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_error NUMBER;
v_count NUMBER;
v_alg_locatie_key NUMBER;
v_alg_gebouw_key NUMBER;
v_alg_verdieping_key NUMBER;
v_alg_ruimte_key NUMBER;
BEGIN
FOR rec IN C
LOOP
v_errorhint:='Locatie niet gevonden';
v_error:=1;
SELECT l.alg_locatie_key INTO v_alg_locatie_key
FROM alg_locatie l
WHERE l.alg_locatie_code =rec.alg_locatie_code
AND l.alg_locatie_verwijder IS NULL;
v_errorhint:='Gebouw niet gevonden';
v_error:=2;
SELECT g.alg_gebouw_key INTO v_alg_gebouw_key
FROM alg_gebouw g
WHERE g.alg_gebouw_code=rec.alg_locatie_code
AND g.alg_locatie_key = v_alg_locatie_key
AND g.alg_gebouw_verwijder IS NULL;
v_errorhint:='Verdieping niet gevonden';
v_error:=3;
BEGIN
SELECT v.alg_verdieping_key INTO v_alg_verdieping_key
FROM alg_verdieping v
WHERE v.alg_verdieping_volgnr=0 -- we willen een verdpeing 0 hebben onafhanleijk wat in de csv staat.
AND v.alg_gebouw_key=v_alg_gebouw_key
AND v.alg_verdieping_verwijder IS NULL;
EXCEPTION WHEN NO_DATA_FOUND THEN
INSERT INTO alg_verdieping (alg_gebouw_key,
alg_verdieping_code,
alg_verdieping_omschrijving,
alg_verdieping_volgnr,
alg_verdieping_aanmaak)
VALUES (v_alg_gebouw_key,
'00',
'Verdieping 0',
0,
SYSDATE)
RETURN alg_verdieping_key INTO v_alg_verdieping_key; -- Gaan we v_error op 4 zetten want als er geen verdieping si moet er ook een ruimte worden aangemaakt.
UPDATE fac_imp_csv
SET fac_imp_csv_col14 = '0'
WHERE fac_imp_csv_key = rec.fac_imp_csv_key;
END;
v_errorhint:='Ruimte niet gevonden';
v_error:=4;
BEGIN
SELECT r.alg_ruimte_key INTO v_alg_ruimte_key
FROM alg_ruimte r
WHERE r.alg_ruimte_nr='0.00'
AND r.alg_verdieping_key=v_alg_verdieping_key
AND r.alg_ruimte_verwijder IS NULL;
EXCEPTION WHEN NO_DATA_FOUND THEN
v_errorhint:='Fout bij aanmkaken ruimte';
INSERT INTO alg_ruimte (alg_verdieping_key,
alg_ruimte_nr,
alg_ruimte_upper_nr,
alg_ruimte_omschrijving,
alg_ruimte_aanmaak)
VALUES (v_alg_verdieping_key,
'0.00',
UPPER ('0.00'),
'Gehele gebouw',
SYSDATE);
UPDATE fac_imp_csv
SET fac_imp_csv_col15 = '0.00'
WHERE fac_imp_csv_key = rec.fac_imp_csv_key; -- Gaan we de imp_+cscv aanpassen zodat dit nieuw aangemaakt ruimteNr gebruikt wordt
END;
END LOOP;
-- eerste even opschonen
DELETE FROM fac_imp_ins;
-- Gaan we nu de fac_imp_ins vullen
INSERT INTO fac_imp_ins
(ins_discipline_omschrijving,
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_deel_AANMAAK,
ins_deel_vervaldatum,
ins_deel_aantal)
SELECT fac_imp_csv_col02,
fac_imp_csv_col04,
fac_imp_csv_col05,
fac_imp_csv_col06,
fac_imp_csv_col07,
fac_imp_csv_col08,
fac_imp_csv_col12,
fac_imp_csv_col12,
'0',
'0.00',
TO_DATE(fac_imp_csv_col22,'DD-MM-YYYY'),
TO_DATE(fac_imp_csv_col23,'DD-MM-YYYY'),
fac_imp_csv_col24
FROM fac_imp_csv
WHERE fac_import_key = p_import_key;
EXCEPTION
WHEN OTHERS THEN
v_errorhint := v_errormsg || ' - ' || v_aanduiding;
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg := 'error ' || oracle_err_num || '/' || oracle_err_mes;
fac.imp_writelog (p_import_key,
'E',
v_errormsg,
v_errorhint);
END;
/
CREATE OR REPLACE PROCEDURE TDNL_UPDATE_VERBRUIKSOBJ (p_import_key IN NUMBER)
AS
BEGIN
fac_update_ins(p_import_key);
-- De csv tabel opruimen
DELETE
FROM fac_imp_csv
WHERE fac_import_key = p_import_key;
END;
/
CREATE OR REPLACE PROCEDURE TDNL_IMPORT_VERBRUIKSWAARDES (p_import_key IN NUMBER)
AS
BEGIN
NULL;
END;
/
CREATE OR REPLACE PROCEDURE TDNL_UPDATE_VERBRUIKSWAARDES (p_import_key IN NUMBER)
AS
CURSOR c
IS
SELECT fac_imp_csv_key fac_imp_csv_key,
fac_imp_csv_col01 ins_deel_omschrijving,
fac_imp_csv_col02 kenmerk_waarde,
fac_imp_csv_col03 kenmerk_aanmaakdatum,
fac_imp_csv_col04 kenmerk_verwijderdatum,
fac_imp_csv_col05 ins_srtdeel
from fac_imp_csv
WHERE fac_import_key = p_import_key
ORDER BY fac_imp_csv_index;
v_errormsg VARCHAR2 (1000);
v_errorhint VARCHAR2 (1000);
v_aanduiding VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_error NUMBER;
v_count NUMBER;
v_counter NUMBER;
v_records NUMBER;
v_ins_kenmerk_key NUMBER;
v_ins_deel_key NUMBER;
v_kenmerk_aanmaakdatum DATE;
v_kenmerk_verwijderdatum DATE;
BEGIN
v_records:=0;
v_counter:=0;
v_aanduiding := 'Kenmerk key voor Meterstand niet gevonden';
SELECT ins_kenmerk_key INTO v_ins_kenmerk_key
FROM ins_kenmerk ik
WHERE ik.ins_kenmerk_code='METERSTAND' AND ik.ins_kenmerk_verwijder IS NULL;
IF v_ins_kenmerk_key>0 THEN
FOR rec IN c
LOOP
IF v_counter>0 THEN --- De header lezen we niet in
BEGIN -- gaan we eerst het object opzoeken als de ins_deel_omschrijving anders dan de vorige
v_aanduiding:= 'Object met omschrijving '||rec.ins_deel_omschrijving||' is niet gevonden';
SELECT i.ins_deel_key INTO v_ins_deel_key
FROM ins_deel i
WHERE i.ins_deel_omschrijving=rec.ins_deel_omschrijving
AND i.ins_deel_verwijder IS NULL;
--AND sd.INS_SRTDEEL_KEY=i.INS_SRTDEEL_KEY
--AND UPPER(sd.INS_SRTDEEL_OMSCHRIJVING) = UPPER(rec.ins_srtdeel);
v_kenmerk_aanmaakdatum:= fac.safe_to_date(rec.kenmerk_aanmaakdatum,'DD-MM-YYYY HH24:MI:SS');
v_kenmerk_verwijderdatum:=fac.safe_to_date(rec.kenmerk_verwijderdatum,'DD-MM-YYYY HH24:MI:SS');
v_aanduiding:= '1-Fout bij wegschrijven van Meterstand voor object '||rec.ins_deel_omschrijving||'-'||v_ins_deel_key||' met waarde '||rec.kenmerk_waarde;
-- KIJKEN OF ER AL EEN KENMERK IS op de deel_key, kenmerk-key en aanmaak datum en verwijder datum
SELECT COUNT(*) INTO v_count
FROM ins_kenmerkdeel
WHERE ins_deel_key=v_ins_deel_key
AND ins_kenmerk_key=v_ins_kenmerk_key
AND ins_kenmerkdeel_aanmaak = v_kenmerk_aanmaakdatum
-- AND ins_kenmerkdeel_verwijder=v_kenmerk_verwijderdatum
AND ins_kenmerkdeel_waarde=rec.kenmerk_waarde;
IF v_count=0 AND v_ins_deel_key >0 THEN
INSERT INTO ins_kenmerkdeel (ins_deel_key,
ins_kenmerk_key,
ins_kenmerkdeel_aanmaak,
ins_kenmerkdeel_verwijder,
ins_kenmerkdeel_waarde)
VALUES (v_ins_deel_key,
v_ins_kenmerk_key,
v_kenmerk_aanmaakdatum,
v_kenmerk_verwijderdatum,
rec.kenmerk_waarde);
v_records:=v_records+1;
ELSE
fac.imp_writelog (p_import_key,
'W',
'Reeds aanwezig',
v_aanduiding);
END IF;
EXCEPTION
WHEN NO_DATA_FOUND THEN
fac.imp_writelog (p_import_key,
'W',
'Niet gevonden',
v_aanduiding);
WHEN TOO_MANY_ROWS THEN
fac.imp_writelog (p_import_key,
'W',
'Vaker gevonden',
v_aanduiding);
END;
ELSE
v_counter:=v_counter+1;
END IF;
END LOOP;
END IF;
fac.imp_writelog (p_import_key,
'S',
'Er zijn '||v_records||' regels aan ins_Kenmerkdeel toegeovegd',
'');
-- Nu de csv data weer verwijderen
DELETE FROM fac_imp_csv
WHERE fac_import_key = p_import_key;
EXCEPTION
WHEN OTHERS THEN
v_errorhint := v_errormsg || ' - ' || v_aanduiding;
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg := 'error ' || oracle_err_num || '/' || oracle_err_mes;
fac.imp_writelog (p_import_key,
'E',
v_errormsg,
v_errorhint);
END;
/
-- Import meldingen uit CONN omgeveing
CREATE OR REPLACE PROCEDURE TDNL_IMPORT_MELDINGEN(p_import_key IN NUMBER)
AS
BEGIN
NULL;
END;
/
CREATE OR REPLACE PROCEDURE TDNL_UPDATE_MELDINGEN(p_import_key IN NUMBER)
AS
CURSOR sel
IS
SELECT fac_imp_csv_col01 mld_org_melding_key,
fac_imp_csv_col02 alg_onrgoed_niveau,
fac_imp_csv_col03 alg_locatie_code,
fac_imp_csv_col03 alg_gebouw_code, -- DIT DIEN WE EXTRA OMDAT DE locatie_code in de oude omgeviung voor oude gebouw en niet goed is.
fac_imp_csv_col05 alg_verdieping_code,
fac_imp_csv_col06 alg_ruimte_nr,
fac_imp_csv_col07 mld_stdmelding_key,
fac_imp_csv_col08 mld_melding_datum,
fac_imp_csv_col09 mld_melding_afmelddatum,
fac_imp_csv_col10 mld_melding_onderwerp,
fac_imp_csv_col11 mld_melding_status,
COALESCE(fac_imp_csv_col12,'migratie@transdev.nl') prs_aanvrager_oslogin,
fac_imp_csv_col13 prs_aanvrager_naam,
COALESCE(fac_imp_csv_col14,'migratie@transdev.nl') prs_behandelaar_oslogin,
fac_imp_csv_col15 prs_behandelaar_naam,
fac_imp_csv_col16 prs_kostenplaats_code,
fac_imp_csv_col17 mld_melding_kenmerken,
fac_imp_csv_col19 mld_melding_omschrijving
FROm fac_imp_csv
WHERE fac_import_key = p_import_key
ORDER BY fac_imp_csv_key;
v_errormsg VARCHAR2 (1000);
v_errorhint VARCHAR2 (1000);
v_aanduiding VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_error NUMBER;
v_count NUMBER;
v_alg_onrgoed_niveau VARCHAR2(10);
v_alg_locatie_key NUMBER;
v_alg_gebouw_key NUMBER;
v_alg_ruimte_key NUMBER;
v_alg_onrgoed_key NUMBER;
v_prs_aanvrager_key NUMBER;
v_naam_aanvrager VARCHAR2(100);
v_naam_behandelaar VARCHAR2(100);
v_prs_behandelaar_key NUMBER;
v_stdmelding_key NUMBER;
v_kostenplaats_key NUMBER;
v_mld_meldbron_key NUMBER;
v_mldkey NUMBER;
v_aantal NUMBER;
v_migratie NUMBER;
v_aanvrager VARCHAR2(100);
v_behandelaar VARCHAR2(100);
v_kenmerk_key NUMBER;
BEGIN
v_stdmelding_key := 1; -- standaard worden alle migratie meldingen op de stdmelding overig gezet
v_mld_meldbron_key :=5;
v_aanduiding :='Ophalen melding kenmerk key met code=CONN_MLD_KEY is muslukt';
SELECT mld_kenmerk_key
INTO v_kenmerk_key
FROM mld_kenmerk
WHERE mld_kenmerk_code='CONN_MLD_KEY';
FOR rec IN sel
LOOP
v_error:=0;
v_migratie :=0;
v_count:=0;
v_aanduiding :='De melding met nr : '||rec.mld_org_melding_key||' is reeds bekend';
SELECT COUNT(*)
INTO v_count
FROM mld_melding
WHERE mld_melding_externnr=rec.mld_org_melding_key;
IF v_count=0
THEN
BEGIN
v_aanduiding:='Ophalen std melding gaat fout :'|| rec.mld_stdmelding_key;
SELECT alg_onrgoed_niveau, mld_stdmelding_key
INTO v_alg_onrgoed_niveau, v_stdmelding_key
FROM mld_stdmelding ms
WHERE ms.mld_stdmelding_key=rec.mld_stdmelding_key;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
SELECT alg_onrgoed_niveau, mld_stdmelding_key
INTO v_alg_onrgoed_niveau, v_stdmelding_key
FROM mld_stdmelding ms
WHERE ms.mld_stdmelding_code='MIGRATIE';
END;
BEGIN
v_aanduiding:='Ophalen locatie gaat fout :'|| rec.alg_locatie_code;
SELECT l.alg_locatie_key, g.alg_gebouw_key
INTO v_alg_locatie_key, v_alg_gebouw_key
FROM alg_gebouw g, alg_locatie l
WHERE g.alg_gebouw_code=rec.alg_gebouw_code
AND (g.ALG_GEBOUW_VERWIJDER IS NULL OR g.ALG_GEBOUW_VERVALDATUM> SYSDATE)
AND l.ALG_LOCATIE_KEY = g.ALG_LOCATIE_KEY
AND l.alg_locatie_code=rec.alg_locatie_code
AND (l.ALG_locatie_VERWIJDER IS NULL OR l.ALG_locatie_VERVALDATUM> SYSDATE);
EXCEPTION
WHEN NO_DATA_FOUND
THEN
SELECT l.alg_locatie_key, g.alg_gebouw_key
INTO v_alg_locatie_key, v_alg_gebouw_key
FROM alg_gebouw g, alg_locatie l
WHERE g.alg_gebouw_code='0000'
AND l.ALG_LOCATIE_KEY = g.ALG_LOCATIE_KEY
AND l.alg_locatie_code='0000';
v_migratie:=1;
END;
IF v_alg_onrgoed_niveau='G'
THEN
v_alg_onrgoed_key:=v_alg_gebouw_key;
ELSE
v_alg_onrgoed_key:=v_alg_locatie_key;
END IF;
-- Ophalen aanvrager
v_aanduiding:='Ophalen aanvrager op oslogin gaat fout :'|| rec.prs_aanvrager_oslogin;
v_error:=0;
SELECT COUNT(*), MAX(prs_perslid_key)
INTO v_aantal, v_prs_aanvrager_key
FROM prs_perslid p
WHERE UPPER(prs_perslid_oslogin)=UPPER(rec.prs_aanvrager_oslogin);
v_error:=0;
IF v_aantal=0
THEN
BEGIN
v_aanduiding:='Ophalen aanvrager op naam gaat fout :'|| rec.prs_aanvrager_oslogin;
IF INSTR(rec.prs_aanvrager_oslogin,'@') >0 THEN
v_aanvrager:=UPPER(SUBSTR(rec.prs_aanvrager_oslogin,0,INSTR(rec.prs_aanvrager_oslogin,'@')-1));
ELSE
v_aanvrager:=UPPER(rec.prs_aanvrager_oslogin);
END IF;
SELECT prs_perslid_key
INTO v_prs_aanvrager_key
FROM prs_perslid p
WHERE UPPER(prs_perslid_oslogin) LIKE v_aanvrager||'%';
EXCEPTION
WHEN NO_DATA_FOUND
THEN
SELECT prs_perslid_key
INTO v_prs_aanvrager_key
FROM prs_perslid p
WHERE UPPER(prs_perslid_oslogin)= '_MIGRATIE';
END;
END IF;
v_aanduiding:='Ophalen behandelaar op oslogin gaat fout :'|| rec.prs_behandelaar_oslogin;
v_naam_behandelaar := SUBSTR(rec.prs_behandelaar_oslogin,0, INSTR(rec.prs_behandelaar_oslogin,'@')-1);
SELECT COUNT(*), MAX(prs_perslid_key)
INTO v_aantal, v_prs_behandelaar_key
FROM prs_perslid p
WHERE UPPER(prs_perslid_oslogin)=UPPER(rec.prs_behandelaar_oslogin);
IF v_aantal =0
THEN
BEGIN
v_aanduiding:='Ophalen behandelaar op naam gaat fout :'|| rec.prs_behandelaar_oslogin;
IF INSTR(rec.prs_behandelaar_oslogin,'@') >0 THEN
v_behandelaar:=UPPER(SUBSTR(rec.prs_behandelaar_oslogin,0,INSTR(rec.prs_behandelaar_oslogin,'@')-1));
ELSE
v_behandelaar:=UPPER(rec.prs_behandelaar_oslogin);
END IF;
SELECT prs_perslid_key
INTO v_prs_aanvrager_key
FROM prs_perslid p
WHERE UPPER(prs_perslid_email) LIKE v_behandelaar||'%';
EXCEPTION
WHEN NO_DATA_FOUND
THEN
-- v_prs_behandelaar_key:=3; -- Nader te bepalen nu even facilitor
SELECT prs_perslid_key
INTO v_prs_behandelaar_key
FROM prs_perslid p
WHERE UPPER(prs_perslid_oslogin)= '_MIGRATIE_BEHANDELAAR';
END;
END IF;
-- Ophalen kostenplaats
BEGIN
v_aanduiding:='Ophalen kostenplaats gaat fout :'|| rec.prs_kostenplaats_code;
SELECT prs_kostenplaats_key
INTO v_kostenplaats_key
FROM prs_kostenplaats
WHERE prs_kostenplaats_nr = rec.prs_kostenplaats_code
AND prs_kostenplaats_verwijder IS NULL;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
v_kostenplaats_key:=NULL;
END;
-- gaan we nu verwerken
IF v_error=0
THEN
-- fac.imp_writelog (p_import_key,'I','stdmelding_key',v_stdmelding_key);
-- fac.imp_writelog (p_import_key,'I','Locatie_key',v_alg_locatie_key);
-- fac.imp_writelog (p_import_key,'I','Onrgd_key',v_alg_onrgoed_key);
-- fac.imp_writelog (p_import_key,'I','behandelaar_key',v_prs_behandelaar_key);
-- fac.imp_writelog (p_import_key,'I','aanvrager_key',v_prs_aanvrager_key);
-- fac.imp_writelog (p_import_key,'I','meld datum',rec.mld_melding_datum);
v_aanduiding:='Toevoegen melding gaat fout :'|| rec.mld_org_melding_key;
INSERT INTO mld_melding (mld_melding_module,
mld_meldbron_key,
mld_alg_locatie_key,
mld_alg_onroerendgoed_keys,
mld_melding_datum,
mld_melding_onderwerp,
mld_melding_omschrijving,
mld_melding_behandelaar_key,
mld_melding_behandelaar2_key,
mld_ins_discipline_key,
mld_stdmelding_key,
mld_melding_t_uitvoertijd,
mld_melding_einddatum,
prs_perslid_key,
prs_perslid_key_voor,
mld_melding_status,
mld_melding_spoed,
MLD_MELDING_EXTERNNR)
VALUES ('MLD',
v_mld_meldbron_key,
v_alg_locatie_key,
v_alg_onrgoed_key,
fac.safe_to_date(rec.mld_melding_datum,'DD-MM-YYYY HH24:MI.SS'),
rec.mld_melding_onderwerp,
rec.mld_melding_omschrijving,
v_prs_behandelaar_key, -- mld_melding_behandelaar_key
TO_NUMBER(NULL), -- mld_melding_behandelaar2_key
TO_NUMBER(NULL),
v_stdmelding_key,
NULL,
fac.safe_to_date(rec.mld_melding_afmelddatum,'DD-MM-YYYY HH24:MI.SS'),
v_prs_aanvrager_key,
v_prs_aanvrager_key,
rec.mld_melding_status,
3,
rec.mld_org_melding_key
)
RETURNING mld_melding_key
INTO v_mldkey;
v_aanduiding:='Aanmaken kenmerk CONN meldingsNr is mislukt.';
flx.setflex('MLD',v_kenmerk_key,v_mldkey,rec.mld_org_melding_key);
v_aanduiding := 'Toevoegen notities bij melding '||rec.mld_org_melding_key|| 'gaat fout';
INSERT INTO mld_melding_note (mld_melding_key,
mld_melding_note_aanmaak,
mld_melding_note_wijzigdatum,
prs_perslid_key,
mld_melding_note_omschrijving,
mld_melding_note_flag)
VALUES (v_mldkey,
fac.safe_to_date(rec.mld_melding_datum,'DD-MM-YYYY HH24:MI.SS'),
SYSDATE,
3, -- Facilitor
'Migratie melding CONN melding: ' || rec.mld_org_melding_key||CHR(10)||'Aanvrager: '|| rec.prs_aanvrager_naam,
0);
IF rec.mld_melding_kenmerken IS NOT NULL
THEN
INSERT INTO mld_melding_note (mld_melding_key,
mld_melding_note_aanmaak,
mld_melding_note_wijzigdatum,
prs_perslid_key,
mld_melding_note_omschrijving,
mld_melding_note_flag)
VALUES (v_mldkey,
fac.safe_to_date(rec.mld_melding_datum,'DD-MM-YYYY HH24:MI.SS'),
SYSDATE,
3, -- Facilitor
'Kenmerken :' ||CHR(10)|| REPLACE(rec.mld_melding_kenmerken,';',CHR(10)),
0);
END IF;
fac.imp_writelog (p_import_key,
'I',
'Melding toegevoegd',
'melding '|| v_mldkey||' aangemaakt voor migratie melding :'||rec.mld_org_melding_key);
ELSE
fac.imp_writelog (p_import_key,
'E',
'Niet gevonden',
v_aanduiding);
END IF;
ELSE
fac.imp_writelog (p_import_key,
'E',
'Reeds aanwezig',
v_aanduiding);
END IF;
END LOOP;
COMMIT;
EXCEPTION
WHEN OTHERS THEN
v_errorhint := v_errormsg || ' - ' || v_aanduiding;
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg := 'error ' || oracle_err_num || '/' || oracle_err_mes;
fac.imp_writelog (p_import_key,
'E',
v_errormsg,
v_errorhint);
END;
/
-- EINDE meldingen import
-- Import opdrachten
CREATE OR REPLACE PROCEDURE TDNL_IMPORT_OPDRACHTEN(p_import_key IN NUMBER)
AS
BEGIN
NULL;
END;
/
CREATE OR REPLACE PROCEDURE TDNL_UPDATE_OPDRACHTEN(p_import_key IN NUMBER)
AS
CURSOR sel
IS
SELECT fac_imp_csv.FAC_IMP_CSV_INDEX regel,
fac_imp_csv_col01 mld_org_melding_key,
fac_imp_csv_col02 mld_opdr_volgnr,
fac_imp_csv_col03 mld_statusopdr_key,
fac_imp_csv_col04 mld_opdrtype,
fac_imp_csv_col05 mld_opdr_discipline_key,
fac_imp_csv_col06 prs_leverancier_nr,
fac_imp_csv_col07 mld_opdr_omschrijving,
fac_imp_csv_col08 mld_opdr_begindatum,
fac_imp_csv_col09 mld_opdr_einddatum,
fac_imp_csv_col10 prs_kostenplaats_nr,
fac_imp_csv_col11 mld_opdr_kosten,
fac_imp_csv_col12 prs_perslid_oslogin,
fac_imp_csv_col13 prs_leverancier_naam,
fac_imp_csv_col14 mld_org_opdr_key,
fac_imp_csv_col15 ken_coupa_onderwerp,
fac_imp_csv_col16 ken_coupa_id,
fac_imp_csv_col17 ken_coupa_inkoopnr
FROM fac_imp_csv
WHERE fac_import_key = p_import_key
ORDER BY fac_imp_csv_key;
v_errormsg VARCHAR2 (1000);
v_errorhint VARCHAR2 (1000);
v_aanduiding VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_error NUMBER;
v_count NUMBER;
v_regel NUMBER;
v_melding_key NUMBER;
v_mld_opdr_key NUMBER;
v_prs_kostenplaats_key NUMBER;
v_mld_ins_discipline_key NUMBER;
v_mld_typeopdr_key NUMBER;
v_prs_perslid_key NUMBER;
v_uitvoerende_key NUMBER;
v_coupa_onderwerp_key NUMBER;
v_coupa_id_key NUMBER;
v_coupa_inkoopnr_key NUMBER;
v_opdr_status_key NUMBER;
v_mld_status_key NUMBER;
v_conn_opdr_nr NUMBER;
v_mld_datum DATE;
BEGIN
v_error:=0;
FOR rec in sel
LOOP
v_regel:=rec.regel;
v_error:=0;
v_count:=0;
v_aanduiding:='Ophalen kenmerk COUPA ONDERWERP is mislukt';
BEGIN
SELECT mld_kenmerk_key
INTO v_coupa_onderwerp_key
FROM mld_kenmerk k
WHERE UPPER(k.MLD_KENMERK_OMSCHRIJVING)='COUPA ONDERWERP'
AND k.MLD_KENMERK_NIVEAU='O';
EXCEPTION
WHEN NO_DATA_FOUND
THEN
v_error:=1;
END;
v_aanduiding:='Ophalen kenmerk AANVRAAGNR is mislukt';
BEGIN
SELECT mld_kenmerk_key
INTO v_coupa_id_key
FROM mld_kenmerk k
WHERE UPPER(k.MLD_KENMERK_OMSCHRIJVING)='AANVRAAGNR'
AND k.MLD_KENMERK_NIVEAU='O';
EXCEPTION
WHEN NO_DATA_FOUND
THEN
v_error:=1;
END;
v_aanduiding:='Ophalen kenmerk INKOOPNR is mislukt';
BEGIN
SELECT mld_kenmerk_key
INTO v_coupa_inkoopnr_key
FROM mld_kenmerk k
WHERE UPPER(k.MLD_KENMERK_OMSCHRIJVING)='INKOOPNR'
AND k.MLD_KENMERK_NIVEAU='O';
EXCEPTION
WHEN NO_DATA_FOUND
THEN
v_error:=1;
END;
v_aanduiding:='Ophalen kenmerk CONN OPDRACHTNR is mislukt';
BEGIN
SELECT mld_kenmerk_key
INTO v_conn_opdr_nr
FROM mld_kenmerk k
WHERE UPPER(k.MLD_KENMERK_OMSCHRIJVING)='CONN OPDRACHTNR'
AND k.MLD_KENMERK_NIVEAU='O';
EXCEPTION
WHEN NO_DATA_FOUND
THEN
v_error:=1;
END;
-- Wat is het m,elding_key van dze opdracht,
-- Wat is d eins_discipine van deze melding , nodig bij opdarcht insert
-- Welke relatie is het verstuurd, haal die op en anders fall back leverancier
--
v_aanduiding:='Ophalen van meldning met nr:'||rec.mld_org_melding_key||' is mislukt';
BEGIN
SELECT m.mld_melding_key , msm.mld_ins_discipline_key, mld_melding_status, mld_melding_datum
INTO v_melding_key, v_mld_ins_discipline_key, v_mld_status_key, v_mld_datum
FROM mld_melding m, mld_stdmelding msm
WHERE m.mld_melding_externnr=rec.mld_org_melding_key
AND msm.mld_stdmelding_key = m.mld_stdmelding_key;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
v_error:=1;
END;
IF v_melding_key>0 AND v_error=0 AND rec.mld_opdr_volgnr=1
THEN
IF v_mld_status_key=5 OR v_mld_status_key=6
THEN
fac.trackaction('#MLDTRK',v_melding_key,NULL, v_mld_datum,'Migratie melding aangemaakt');
ELSE
fac.trackaction('#MLDNEW',v_melding_key,NULL, v_mld_datum,'Migratie melding aangemaakt');
END IF;
END IF;
IF v_error=0 THEN
v_aanduiding:='Opdracht is al bekend :'||v_melding_key||'/'||rec.mld_opdr_volgnr ||'(regel: '||v_regel||')';
SELECT COUNT(*)
INTO v_count
FROM mld_opdr o
WHERE o.mld_melding_key=v_melding_key
AND o.mld_opdr_bedrijfopdr_volgnr=rec.mld_opdr_volgnr;
IF v_count>0 THEN
v_error:=1;
END IF;
END IF;
IF v_error=0 THEN
BEGIN
v_aanduiding:='Ophalen van kostenplaats nr :'||rec.prs_kostenplaats_nr||' is mislukt.';
SELECT p.prs_kostenplaats_key
INTO v_prs_kostenplaats_key
FROM prs_kostenplaats p
WHERE p.prs_kostenplaats_nr=rec.prs_kostenplaats_nr
AND p.prs_kostenplaats_verwijder IS NULL;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
SELECT p.prs_kostenplaats_key
INTO v_prs_kostenplaats_key
FROM prs_kostenplaats p
WHERE p.prs_kostenplaats_nr='1000'
AND p.prs_kostenplaats_verwijder IS NULL;
END;
BEGIN
v_aanduiding:='Ophalen van opdracht type is mislukt.';
SELECT mld_typeopdr_key
INTO v_mld_typeopdr_key
FROM mld_typeopdr o
WHERE UPPER(o.mld_typeopdr_omschrijving)='UITVOERINGSOPDRACHT';
EXCEPTION
WHEN NO_DATA_FOUND
THEN
v_error:=1;
END;
END IF;
IF v_error=0 THEN
v_aanduiding:='Ophalen van perslid.';
BEGIN
SELECT p.prs_perslid_key
INTO v_prs_perslid_key
from prs_perslid p
WHERE UPPER(p.prs_perslid_oslogin)=UPPER(rec.prs_perslid_oslogin);
EXCEPTION
WHEN NO_DATA_FOUND THEN
-- v_prs_behandelaar_key:=3; -- Nader te bepalen nu even facilitor
SELECT prs_perslid_key
INTO v_prs_perslid_key
FROM prs_perslid p
WHERE UPPER(prs_perslid_oslogin)= '_MIGRATIE_BEHANDELAAR';
END;
END IF;
IF v_error=0 THEN
v_aanduiding:='Ophalen van leverenacier '||rec.prs_leverancier_nr||' is mislukt.';
BEGIN
SElECT prs_bedrijf_key
INTO v_uitvoerende_key
FROM prs_bedrijf p
WHERE UPPER(p.prs_leverancier_nr)=UPPER(rec.prs_leverancier_nr)
AND p.prs_bedrijf_verwijder IS NULL;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
v_aanduiding:='Ophalen van Fall Back leverenacier '||rec.prs_leverancier_nr||' is mislukt.';
SElECT prs_bedrijf_key
INTO v_uitvoerende_key
FROM prs_bedrijf p
WHERE p.prs_leverancier_nr='999999'
AND p.prs_bedrijf_verwijder IS NULL;
END;
END IF;
IF v_error=0 AND v_count=0
THEN
IF v_mld_status_key=5 OR v_mld_status_key=6 THEN
v_opdr_status_key:=6;
ELSE
v_opdr_status_key:=rec.mld_statusopdr_key;
END IF;
v_aanduiding:='Aanmaken opdarcht is mislukt.';
INSERT INTO mld_opdr (mld_melding_key,
prs_kostenplaats_key,
mld_statusopdr_key,
mld_typeopdr_key,
prs_perslid_key,
mld_uitvoerende_keys,
mld_opdr_discipline_key,
mld_opdr_datumbegin,
mld_opdr_einddatum,
mld_opdr_module,
mld_opdr_omschrijving,
mld_opdr_kosten,
mld_opdr_bedrijfopdr_volgnr,
mld_opdr_externnr)
VALUES( v_melding_key,
v_prs_kostenplaats_key,
v_opdr_status_key,
v_mld_typeopdr_key,
v_prs_perslid_key,
v_uitvoerende_key,
v_mld_ins_discipline_key,
fac.safe_to_date(rec.mld_opdr_begindatum,'DD-MM-YYYY HH24:MI.SS'),
fac.safe_to_date(rec.mld_opdr_einddatum,'DD-MM-YYYY HH24:MI.SS'),
'MLD',
rec.mld_opdr_omschrijving,
fac.safe_to_number(rec.mld_opdr_kosten),
rec.mld_opdr_volgnr,
rec.mld_org_opdr_key)
RETURNING mld_opdr_key
INTO v_mld_opdr_key;
IF v_opdr_status_key = 6 THEN
fac.trackaction('#ORDTRK',v_mld_opdr_key,NULL, NULL,'Migratie opdracht aangemaakt');
ELSE
fac.trackaction('#ORDNEW',v_mld_opdr_key,NULL, SYSDATE,'Migratie opdracht aangemaakt');
END IF;
INSERT INTO mld_opdr_note (mld_opdr_key,
mld_opdr_note_aanmaak,
mld_opdr_note_wijzigdatum,
prs_perslid_key,
mld_opdr_note_omschrijving,
mld_opdr_note_flag)
VALUES (v_mld_opdr_key,
fac.safe_to_date(rec.mld_opdr_begindatum,'DD-MM-YYYY HH24:MI.SS'),
SYSDATE,
3, -- Facilitor
'Migratie opdracht CONN melding: ' || rec.mld_org_melding_key||CHR(10)||' leverancier :'|| rec.prs_leverancier_naam,
0);
fac.imp_writelog (p_import_key,
'I',
'Opdacht aangemaakt',
'Opdracht '||v_melding_key||'/'||rec.mld_opdr_volgnr||'('||v_mld_opdr_key||') is aangemaakt.');
v_aanduiding:='Aanmaken kenmerk CONN OPdr Nr is mislukt.';
flx.setflex('OPD',v_conn_opdr_nr,v_mld_opdr_key,rec.mld_org_melding_key||'/'||rec.mld_opdr_volgnr);
IF LENGTH(rec.ken_coupa_onderwerp)>0
THEN
v_aanduiding:='Aanmaken kenmerk coupa onderwerp is mislukt.';
flx.setflex('OPD',v_coupa_onderwerp_key,v_mld_opdr_key,rec.ken_coupa_onderwerp);
END IF;
IF LENGTH(rec.ken_coupa_id)>0
THEN
v_aanduiding:='Aanmaken coupa ID is mislukt.';
flx.setflex('OPD',v_coupa_id_key,v_mld_opdr_key,rec.ken_coupa_id);
END IF;
IF LENGTH(rec.ken_coupa_inkoopnr)>0
THEN
v_aanduiding:='Aanmaken inkoopnr is mislukt.';
flx.setflex('OPD',v_coupa_inkoopnr_key,v_mld_opdr_key,rec.ken_coupa_inkoopnr);
END IF;
ELSE
fac.imp_writelog (p_import_key,
'E',
'Niet gevonden',
v_aanduiding);
END IF;
END LOOP;
EXCEPTION
WHEN OTHERS
THEN
v_errorhint := v_errormsg || ' - ' || v_aanduiding||'('||v_regel||')';
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg := 'error ' || oracle_err_num || '/' || oracle_err_mes;
fac.imp_writelog (p_import_key,
'E',
v_errormsg,
v_errorhint);
END;
/
-- Einden import opdrachten
-- Import tracking
CREATE OR REPLACE PROCEDURE TDNL_IMPORT_TRACKING(p_import_key IN NUMBER)
AS
BEGIN
NULL;
END;
/
CREATE OR REPLACE PROCEDURE TDNL_UPDATE_TRACKING(p_import_key IN NUMBER)
AS
CURSOR c
IS
SELECT fac_imp_csv_col01 module,
fac_imp_csv_col02 entity_id,
fac_imp_csv_col03 fac_tracking_oms,
fac_imp_csv_col04 fac_srtnotificatie_key,
fac_imp_csv_col05 fac_tracking_datum,
fac_imp_csv_col06 prs_perslid_email,
fac_imp_csv_col07 prs_perslid_oslogin
from fac_imp_csv
WHERE fac_import_key = p_import_key;
v_errormsg VARCHAR2 (1000);
v_errorhint VARCHAR2 (1000);
v_aanduiding VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_error NUMBER;
v_count NUMBER;
v_entity_key NUMBER;
v_prs_perslid_key NUMBER;
BEGIN
FOR rec in c
LOOP
BEGIN
v_errormsg:='Ophalen van '||rec.module||' met key '||rec.entity_id||' is mislukt';
IF rec.module='CNT'
THEN
SElect cnt_contract_key into v_entity_key
FROM cnt_contract c
where c.cnt_contract_nummer=rec.entity_id
AND c.cnt_contract_verwijder IS NULL;
ELSIF rec.module='INS'
THEN
SELECT ins_deel_key
INTO v_entity_key
FROM ins_deel i
WHERE i.ins_deel_omschrijving=rec.entity_id
AND i.ins_deel_verwijder IS NULL;
END IF;
v_errormsg:='Ophalen van '||rec.prs_perslid_email||'/'||rec.prs_perslid_oslogin||' is mislukt';
SELECT prs_perslid_key
into v_prs_perslid_key
FROM prs_perslid p
where p.prs_perslid_email=rec.prs_perslid_email
OR p.prs_perslid_oslogin=rec.prs_perslid_oslogin;
INSERT INTO fac_tracking( fac_tracking_refkey,
fac_tracking_oms,
fac_srtnotificatie_key,
fac_tracking_datum,
prs_perslid_key)
VALUES( v_entity_key,
rec.fac_tracking_oms,
rec.fac_srtnotificatie_key,
rec.fac_tracking_datum,
v_prs_perslid_key);
EXCEPTION
WHEN NO_DATA_FOUND THEN
v_error:=1;
fac.imp_writelog (p_import_key,
'E',
v_errormsg,
v_errorhint);
END;
END LOOP;
END;
/
-- EINDE IMPORT MELDINGEN
-- IMPORT Notities
CREATE OR REPLACE PROCEDURE TDNL_IMPORT_NOTITIES(p_import_key IN NUMBER)
AS
BEGIN
NULL;
END;
/
CREATE OR REPLACE PROCEDURE TDNL_UPDATE_NOTITIES(p_import_key IN NUMBER)
AS
CURSOR c
IS
SELECT fac_imp_csv.FAC_IMP_CSV_INDEX regel,
fac_imp_csv_col01 module_key,
fac_imp_csv_col02 module,
fac_imp_csv_col03 deel,
fac_imp_csv_col04 prs_perslid_oslogin,
fac_imp_csv_col05 notitie,
fac_imp_csv_col06 notitie_datum,
fac_imp_csv_col07 volgnr
from fac_imp_csv
WHERE fac_import_key = p_import_key
ORDER BY fac_imp_csv_key;
v_errormsg VARCHAR2 (1000);
v_errorhint VARCHAR2 (1000);
v_aanduiding VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_error NUMBER;
v_count NUMBER;
v_entity_key NUMBER;
v_prs_perslid_key NUMBER;
v_mld_counter NUMBER;
v_opdr_counter NUMBER;
v_cnt_counter NUMBER;
v_melding_key NUMBER;
v_opdr_key NUMBER;
v_regel NUMBER;
v_module_key NUMBER;
v_note_key NUMBER;
BEGIN
v_mld_counter:=0;
v_opdr_counter:=0;
v_cnt_counter:=0;
v_count:=0;
FOR rec IN C
LOOP
v_regel:=rec.regel;
v_count:=v_count+1;
v_error:=0;
BEGIN
SELECT prs_perslid_key
INTO v_prs_perslid_key
FROM prs_perslid p
WHERE p.prs_perslid_oslogin=COALESCE(rec.prs_perslid_oslogin,'_MIGRATIE');
EXCEPTION
WHEN NO_DATA_FOUND
THEN
v_prs_perslid_key:=3;
END;
IF rec.module='MLD'
THEN
v_aanduiding:='Melding met nr '||rec.module_key||' is niet gevonden, regel wordt overgeslagen';
BEGIN
SELECT mld_melding_key
INTO v_module_key
FROM mld_melding
WHERE mld_melding_externnr=rec.module_key;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
v_error:=1;
END;
ELSIF rec.module='OPD'
THEN
v_aanduiding:='Opdracht met nr '||rec.module_key||'/'||rec.volgnr||' is niet gevonden, regel wordt overgeslagen';
BEGIN
SELECT o.mld_opdr_key
INTO v_module_key
FROM mld_opdr o, mld_kenmerkopdr mko, mld_kenmerk mk
WHERE mko.mld_kenmerkopdr_waarde=(rec.module_key||'/'||rec.volgnr)
AND mk.mld_kenmerk_key = mko.mld_kenmerk_key
AND UPPER(mk.mld_kenmerk_omschrijving)='CONN OPDRACHTNR'
AND mk.mld_kenmerk_niveau='O'
AND o.mld_opdr_key = mko.mld_opdr_key;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
v_error:=1;
END;
ELSIF rec.module='CNT'
THEN
v_aanduiding:='contract met nr '||rec.module_key||' is niet gevonden, regel wordt overgeslagen';
BEGIN
SELECT cnt_contract_key
INTO v_module_key
FROM cnt_contract
where cnt_contract_nummer_intern=rec.module_key
AND cnt_contract_verwijder IS NULL;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
v_error:=1;
END;
END IF;
IF v_error=0 THEN
IF rec.module='MLD' THEN
BEGIN
SELECT mld_melding_note_key INTO v_note_key
FROM mld_melding_note
WHERE mld_melding_key = v_module_key
AND mld_melding_note_aanmaak=fac.safe_to_date(rec.notitie_datum,'DD-MM-YYYY HH24:MI.SS')
AND prs_perslid_key=v_prs_perslid_key
AND mld_melding_note_omschrijving = rec.notitie
AND mld_melding_note_flag=0;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
INSERT INTO mld_melding_note (mld_melding_key,
mld_melding_note_aanmaak,
mld_melding_note_wijzigdatum,
prs_perslid_key,
mld_melding_note_omschrijving,
mld_melding_note_flag)
VALUES (v_module_key,
fac.safe_to_date(rec.notitie_datum,'DD-MM-YYYY HH24:MI.SS'),
SYSDATE,
v_prs_perslid_key,
rec.notitie,
0);
v_mld_counter:=v_mld_counter+1;
END;
ELSIF rec.module='OPD' THEN
BEGIN
SELECT mld_opdr_note_key INTO v_note_key
FROM mld_opdr_note
WHERE mld_opdr_key = v_module_key
AND mld_opdr_note_aanmaak=fac.safe_to_date(rec.notitie_datum,'DD-MM-YYYY HH24:MI.SS')
AND prs_perslid_key=v_prs_perslid_key
AND mld_opdr_note_omschrijving = rec.notitie
AND mld_opdr_note_flag=0;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
INSERT INTO mld_opdr_note (mld_opdr_key,
mld_opdr_note_aanmaak,
mld_opdr_note_wijzigdatum,
prs_perslid_key,
mld_opdr_note_omschrijving,
mld_opdr_note_flag)
VALUES (v_module_key,
fac.safe_to_date(rec.notitie_datum,'DD-MM-YYYY HH24:MI.SS'),
SYSDATE,
v_prs_perslid_key,
rec.notitie,
0);
v_opdr_counter:=v_opdr_counter+1;
END;
ELSIF rec.module='CNT' THEN
BEGIN
SELECT cnt_contract_note_key
INTO v_note_key
FROM cnt_contract_note
WHERE cnt_contract_key = v_module_key
AND cnt_contract_note_aanmaak=fac.safe_to_date(rec.notitie_datum,'DD-MM-YYYY HH24:MI.SS')
AND prs_perslid_key=v_prs_perslid_key
AND cnt_contract_note_omschrijving = rec.notitie;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
INSERT INTO cnt_contract_note (cnt_contract_key,
cnt_contract_note_aanmaak,
prs_perslid_key,
cnt_contract_note_omschrijving)
VALUES (v_module_key,
fac.safe_to_date(rec.notitie_datum,'DD-MM-YYYY HH24:MI.SS'),
v_prs_perslid_key,
rec.notitie);
v_cnt_counter:=v_cnt_counter+1;
END;
END IF;
ELSE
fac.imp_writelog (p_import_key,
'E',
'Niet gevonden',
v_aanduiding);
END If;
END LOOP;
fac.imp_writelog (p_import_key,
'I',
'Melding Notie',
v_mld_counter||'/'||v_count||' Melding notities aangemaakt.');
fac.imp_writelog (p_import_key,
'I',
'Opdracht Notie',
v_opdr_counter||'/'||v_count||' Opdracht notities aangemaakt.');
fac.imp_writelog (p_import_key,
'I',
'Contract Notie',
v_cnt_counter||'/'||v_count||' Contract notities aangemaakt.');
EXCEPTION
WHEN OTHERS
THEN
v_errorhint := v_errormsg || ' - ' || v_aanduiding||'('||v_regel||')';
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg := 'error ' || oracle_err_num || '/' || oracle_err_mes;
fac.imp_writelog (p_import_key,
'E',
v_errormsg,
v_errorhint);
END;
/
CREATE OR REPLACE PROCEDURE TDNL_IMPORT_KENMERK_BIJLAGES(p_import_key IN NUMBER)
AS
BEGIN
NULL;
-- Lezen standaard CSV in bestaat uit.
-- module;key;kenmerk_key; path old;filenaam; digest; size
--
END;
/
CREATE OR REPLACE PROCEDURE TDNL_UPDATE_KENMERK_BIJLAGES(p_import_key IN NUMBER)
AS
CURSOR sel
IS
SELECT f.fac_imp_csv_key fac_imp_csv_key,
f.fac_imp_csv_col01 module,
f.fac_imp_csv_col02 master_key,
f.fac_imp_csv_col03 master_volgnr,
f.fac_imp_csv_col04 kenmerk_key,
f.fac_imp_csv_col05 path_old,
f.fac_imp_csv_col06 filenaam,
f.fac_imp_csv_col07 digest,
f.fac_imp_csv_col08 file_size
FROM fac_imp_csv f
WHERE f.fac_import_key = p_import_key;
v_errormsg VARCHAR2 (1000);
v_errorhint VARCHAR2 (1000);
v_aanduiding VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_error NUMBER;
v_regel NUMBER;
v_count NUMBER;
v_ref_key NUMBER;
v_kenmerk_key NUMBER;
v_fac_bijlagen_key NUMBER;
v_path VARCHAR2(1000);
v_copy VARCHAR2(1000);
BEGIN
v_regel:=0;
FOR rec in sel
LOOP
v_regel:=v_regel+1;
-- eerst de master key ophalen
BEGIN
IF rec.module = 'CNT'
THEN
v_aanduiding := 'Ophalen van het contract gaat fout ('||rec.master_key||')' ;
SELECT cnt_contract_key
INTO v_ref_key
FROM cnt_contract
WHERE cnt_contract_nummer_intern=rec.master_key;
v_aanduiding:='Ophalen van het contractkenmerk gaat fout';
SELECT cnt_kenmerk_key
INTO v_kenmerk_key
FROM cnt_kenmerk
WHERE cnt_kenmerk_key=rec.kenmerk_key
AND cnt_kenmerk_verwijder IS NULL;
v_path:=rec.module||'/'||SUBSTR(rec.module,1,1)||RPAD(LPAD(SUBSTR(v_ref_key,1,2),4,0),7,'_')||'/'||SUBSTR(rec.module,1,1)||v_ref_key||'/'|| v_kenmerk_key;
ELSIF rec.module='MLD'
THEN
IF rec.path_old LIKE 'MLD/M%'
THEN
v_aanduiding := 'Ophalen van het melding gaat fout ('||rec.master_key||')' ;
SELECT mld_melding_key
INTO v_ref_key
FROM mld_melding
WHERE mld_melding_externnr=rec.master_key;
v_aanduiding:='Ophalen van het meldingkenmerk '||rec.kenmerk_key||' gaat fout';
SELECT mld_kenmerk_key
INTO v_kenmerk_key
FROM mld_kenmerk
WHERE mld_kenmerk_key=rec.kenmerk_key
AND mld_kenmerk_verwijder IS NULL;
v_path:=rec.module||'/'||SUBSTR(rec.module,1,1)||RPAD(LPAD(SUBSTR(v_ref_key,1,2),4,0),7,'_')||'/'||SUBSTR(rec.module,1,1)||v_ref_key||'/'|| v_kenmerk_key;
ELSE
v_aanduiding := 'Ophalen van het opdracht gaat fout ('||rec.master_key||'/'||rec.master_volgnr||')' ;
SELECT mld_opdr_key
INTO v_ref_key
FROM mld_opdr
WHERE mld_opdr_externnr=rec.master_key||'/'||rec.master_volgnr;
v_aanduiding:='Ophalen van het opdracht kenmerk '||rec.kenmerk_key||' gaat fout';
SELECT mld_kenmerk_key
INTO v_kenmerk_key
FROM mld_kenmerk
WHERE mld_kenmerk_key=rec.kenmerk_key
AND mld_kenmerk_verwijder IS NULL;
v_path:=rec.module||'/'||SUBSTR(rec.module,1,1)||RPAD(LPAD(SUBSTR(v_ref_key,1,2),4,0),7,'_')||'/'||SUBSTR('O',1,1)||v_ref_key||'/'|| v_kenmerk_key;
END IF;
END IF;
v_aanduiding := 'Bijlage '||rec.filenaam||' is al ingelezen bij '||rec.module||' '||v_ref_key||'('||rec.master_key||')';
SELECT COUNT(*)
INTO v_count
from fac_bijlagen
where fac_bijlagen_module=rec.module
AND fac_bijlagen_refkey=v_ref_key
AND fac_bijlagen_kenmerk_key=v_kenmerk_key
AND fac_bijlagen_disk_directory=v_path
AND fac_bijlagen_filename=rec.filenaam;
IF v_count=0 AND v_ref_key >0 AND v_kenmerk_key>0
THEN
-- Gaanw we nu de key ophalen voor de nieuwe bijlage
SELECT fac_s_fac_bijlagen_key.nextval
INTO v_fac_bijlagen_key
FROM DUAL;
INSERT INTO fac_bijlagen( fac_bijlagen_key,
fac_bijlagen_module,
fac_bijlagen_refkey,
fac_bijlagen_kenmerk_key,
fac_bijlagen_disk_directory,
fac_bijlagen_filename,
fac_bijlagen_digest,
fac_bijlagen_file_size,
fac_bijlagen_root_key)
VALUES( v_fac_bijlagen_key,
rec.module,
v_ref_key,
v_kenmerk_key,
v_path,
rec.filenaam,
rec.digest,
rec.file_size,
v_fac_bijlagen_key);
v_copy:= 'xcopy /I "'||REPLACE(rec.path_old,CHR(47),CHR(92))||CHR(92)||rec.filenaam||'" e:'||CHR(92)||'temp'||CHR(92)||REPLACE(v_path, chr(47), chr(92))||CHR(92);
fac.imp_writelog(p_import_key, 'I', 'COPY',v_copy);
ELSE
fac.imp_writelog(p_import_key, 'W', 'al bekend',v_aanduiding);
END IF;
UPDATE fac_imp_csv
set fac_imp_csv_col10=v_path, fac_imp_csv_col11=v_copy, fac_imp_csv_col12=v_fac_bijlagen_key
WHERE fac_imp_csv_key = rec.fac_imp_csv_key;
COMMIT;
EXCEPTION
WHEN NO_DATA_FOUND THEN
v_error:=1;
fac.imp_writelog (p_import_key,
'E',
v_errormsg,
v_aanduiding);
END;
END LOOP;
EXCEPTION
WHEN OTHERS
THEN
v_errorhint := v_errormsg || ' - ' || v_aanduiding||'('||v_regel||')';
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg := 'error ' || oracle_err_num || '/' || oracle_err_mes;
fac.imp_writelog (p_import_key,
'E',
v_errormsg,
v_errorhint);
END;
/
CREATE OR REPLACE PROCEDURE TDNL_IMPORT_WPRESERVERING(p_import_key IN NUMBER)
AS
BEGIN
NULL;
END;
/
CREATE OR REPLACE PROCEDURE TDNL_UPDATE_WPRESERVERING(p_import_key IN NUMBER)
AS
CURSOR sel
IS
SELECT f.fac_imp_csv_key fac_imp_csv_key,
f.fac_imp_csv_col01 reservering_key,
f.fac_imp_csv_col02 res_van,
f.fac_imp_csv_col03 res_tot,
f.fac_imp_csv_col04 res_aanmaak,
f.fac_imp_csv_col05 kostenplaats_nr,
f.fac_imp_csv_col06 contact_login,
f.fac_imp_csv_col07 contact_email,
f.fac_imp_csv_col08 CVAB_mode,
f.fac_imp_csv_col09 alg_ruimte_nr,
f.fac_imp_csv_col10 alg_gebouw_code,
f.fac_imp_csv_col11 activiteit,
f.fac_imp_csv_col12 werkplek,
f.fac_imp_csv_col13 res_volgnr
FROM fac_imp_csv f
WHERE f.fac_import_key = p_import_key
ORDER BY f.fac_import_key;
v_errormsg VARCHAR2 (1000);
v_errorhint VARCHAR2 (1000);
v_aanduiding VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_error NUMBER;
v_regel NUMBER;
v_count NUMBER;
v_reservering_key NUMBER;
v_rsv_ruimte_key NUMBER;
v_res_activiteit_key NUMBER;
v_kenmerk_key NUMBER;
v_prs_perslid_key NUMBER;
v_res_deel_key NUMBER;
v_alg_ruimte_key NUMBER;
v_prs_kostenplaats_key NUMBER;
v_status_fo NUMBER;
v_status_bo NUMBER;
v_no_show NUMBER;
v_datumaanmaak DATE;
v_datum_van DATE;
v_datum_tot DATE;
BEGIN
v_regel:=0;
v_aanduiding:='Ophalen kenmerk key voor kenmerk CONN_RESNR is mislukt';
SELECT res_kenmerk_key
INTO v_kenmerk_key
FROM res_kenmerk
WHERE res_kenmerk_code='CONN_RESNR';
FOR rec IN sel
LOOP
v_error:=0;
v_count:=0;
SELECT count(*)
INTO v_count
FROM res_rsv_ruimte r, res_kenmerkwaarde rk
where rk.res_kenmerkreservering_waarde= rec.reservering_key||'/'|| rec.res_volgnr
AND rk.RES_KENMERK_KEY=v_kenmerk_key
AND r.res_rsv_ruimte_key = rk.res_rsv_ruimte_key
AND r.res_rsv_ruimte_verwijder IS NULL;
IF v_count=0
THEN
-- haal de werkplek op , biij niet gevionden skip record,
BEGIN
v_aanduiding:='Ophalen werkplek '||rec.werkplek||' is mislukt.';
SELECT res_deel_key
INTO v_res_deel_key
FROM res_deel r
WHERE UPPER(r.res_deel_omschrijving)=UPPER(rec.werkplek)
AND r.res_deel_verwijder IS NULL;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
fac.imp_writelog (p_import_key, 'W', 'WP niet gevonden'|| rec.werkplek,'');
v_error :=1 ;
END;
-- haal alg_ruimte key op op bais van alg_ruimte nr en gebouw_code,
BEGIN
v_aanduiding:='Ophalen ruimte'||rec.alg_ruimte_nr||'-'||rec.alg_gebouw_code||' is mislukt.';
SELECT alg_ruimte_key
INTO v_alg_ruimte_key
FROM alg_v_allonrgoed_gegevens a
WHERE UPPER(a.alg_ruimte_nr)=UPPER(rec.alg_ruimte_nr)
AND UPPER(a.alg_gebouw_code) = UPPER(rec.alg_gebouw_code);
EXCEPTION
WHEN NO_DATA_FOUND
THEN
v_error :=1 ;
fac.imp_writelog (p_import_key, 'W', 'ALG RUIMTE niet gevonden'|| rec.alg_ruimte_nr||'-'||rec.alg_gebouw_code,'');
END;
BEGIN
v_aanduiding:='Ophalen activiteit '||rec.activiteit||' is mislukt.';
SELECT res_activiteit_key
INTO v_res_activiteit_key
FROM res_activiteit
WHERE UPPER(res_activiteit_omschrijving)=UPPER(rec.activiteit)
AND res_activiteit_verwijder IS NULL;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
v_error:=1;
fac.imp_writelog (p_import_key, 'W', 'Activiteit niet gevonden'|| rec.activiteit,'');
END;
v_aanduiding:='Ophalen persoon '||rec.contact_login||'op bais van oslogin is mislukt.';
BEGIN
SELECT p.prs_perslid_key
INTO v_prs_perslid_key
FROM prs_perslid p
WHERE p.prs_perslid_oslogin=rec.contact_login
AND p.prs_perslid_verwijder IS NULL;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
v_error:=1;
fac.imp_writelog (p_import_key, 'W', 'Persoon niet gevonden : '|| rec.contact_login,'');
END;
IF v_error=0
THEN
-- haal kostenplaats op als deze er is,
BEGIN
v_aanduiding:='Ophalen kostenplaats '||rec.kostenplaats_nr||' is mislukt.';
SELECT prs_kostenplaats_key
INTO v_prs_kostenplaats_key
FROM prs_kostenplaats
WHERE UPPER(prs_kostenplaats_nr)=UPPER(rec.kostenplaats_nr)
AND prs_kostenplaats_verwijder IS NULL;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
v_prs_kostenplaats_key:=NULL;
END;
-- haal kostenplaats op als deze er is,
v_status_bo := 2; -- Alles op Geregistreerd (want alleen lopende reserveringen)
v_status_fo := 2; -- Alles op Definitief (want alleen lopende reserveringen)
v_no_show := TO_NUMBER (NULL);
v_datumaanmaak:= fac.safe_to_date(rec.res_aanmaak,'DD-MM-YYYY HH24:MI:SS');
v_datum_van:= fac.safe_to_date(rec.res_van,'DD-MM-YYYY HH24:MI:SS');
v_datum_tot:= fac.safe_to_date(rec.res_tot,'DD-MM-YYYY HH24:MI:SS');
SELECT count(*) INTO v_count
FROM res_rsv_ruimte rrr,
res_rsv_deel rd
WHERE rrr.res_rsv_ruimte_van =v_datum_van
AND rrr.res_rsv_ruimte_tot = v_datum_tot
AND rd.res_rsv_ruimte_key= rrr.res_rsv_ruimte_key
AND rd.res_deel_key=v_res_deel_key
AND rrr.res_rsv_ruimte_verwijder IS NULL;
IF v_count=0
THEN
v_regel:=v_regel+1;
v_errormsg := 'Fout toevoegen res_reservering';
INSERT INTO res_reservering (res_reservering_verwijder)
VALUES (NULL)
RETURNING res_reservering_key
INTO v_reservering_key;
v_errormsg := 'Fout toevoegen res_rsv_ruimte.';
INSERT INTO res_rsv_ruimte (res_reservering_key,
res_rsv_ruimte_volgnr,
res_rsv_ruimte_opmerking,
res_rsv_ruimte_omschrijving,
prs_kostenplaats_key,
res_rsv_ruimte_contact_key,
res_rsv_ruimte_host_key,
alg_ruimte_key,
--res_ruimte_opstel_key,
res_rsv_ruimte_cvab_mode,
res_activiteit_key,
res_rsv_ruimte_van,
res_rsv_ruimte_tot,
res_rsv_ruimte_bezoekers,
res_rsv_ruimte_bezoekers_shown,
res_status_bo_key,
res_status_fo_key,
res_rsv_ruimte_noshow,
res_rsv_ruimte_externnr)
VALUES (v_reservering_key,
1,
NULL,
NULL,
TO_NUMBER (NULL),
v_prs_perslid_key,
v_prs_perslid_key,
v_alg_ruimte_key,
2, -- CVAB-mode op Afhalen!
v_res_activiteit_key,
v_datum_van,
v_datum_tot,
TO_NUMBER (NULL),
v_no_show,
TO_NUMBER (NULL),
v_status_fo,
v_no_show,
NULL) -- Externnr moet uniek zijn en TD-nr is dat niet!
RETURNING res_rsv_ruimte_key
INTO v_rsv_ruimte_key;
v_errormsg := 'Fout toevoegen res_rsv_deel.';
INSERT INTO res_rsv_deel (res_deel_key,
res_rsv_deel_aantal,
res_status_bo_key,
res_rsv_ruimte_key,
res_rsv_deel_van,
res_rsv_deel_tot)
VALUES (v_res_deel_key,
1,
v_status_bo,
v_rsv_ruimte_key,
v_datum_van,
v_datum_tot);
-- Toevoegen Reserveringsnummer TOPdesk
v_errormsg := 'Fout toevoegen Reserveringsnummer TOPdesk';
flx.setflex('RES',v_kenmerk_key,v_rsv_ruimte_key,rec.reservering_key||'/1');
fac.trackaction ('RESNEW', v_rsv_ruimte_key, NULL, SYSDATE, 'Gemigreerd vanuit CONN');
ELSE
fac.imp_writelog (p_import_key, 'W', ' WP '|| rec.werkplek||' is al bezet op '||TO_CHAR(v_datum_van,'DD-MM-YYYY HH24:MI:SS')||'.','');
END IF;
ELSE
fac.imp_writelog (p_import_key, 'W', ' WP reserveringen '|| rec.reservering_key||' niet verwerkt','');
END IF;
ELSE
fac.imp_writelog (p_import_key, 'W', ' WP reserveringen '|| rec.reservering_key||'/'||rec.res_volgnr||' is al bekend.','');
END IF;
END LOOP;
fac.imp_writelog (p_import_key, 'S', v_regel||' WP reserveringen toegevoegd: ' || TO_CHAR (SYSDATE, 'DD-MM-YYYY HH24:MI:SS'), '');
EXCEPTION
WHEN OTHERS
THEN
v_errorhint := v_errormsg || ' - ' || v_aanduiding||'('||v_regel||')';
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg := 'error ' || oracle_err_num || '/' || oracle_err_mes;
fac.imp_writelog (p_import_key,
'E',
v_errormsg,
v_errorhint);
END;
/
CREATE OR REPLACE PROCEDURE TDNL_IMPORT_LAADINFRA(p_import_key in NUMBER)
AS
BEGIN
fac_import_ins(p_import_key);
END;
/
CREATE OR REPLACE PROCEDURE TDNL_UPDATE_LAADINFRA(p_import_key in NUMBER)
AS
CURSOR sel
IS
SELECT ins_srtdeel_code,
ins_deel_omschrijving,
INS_KENMERKWAARDE19 ins_srtdeel_parent,
INS_KENMERKWAARDE20 ins_deel_parent,
INS_KENMERKWAARDE16 ins_deel_breedte,
INS_KENMERKWAARDE17 ins_deel_lengte
FROM fac_imp_ins
WHERE INS_KENMERKWAARDE19 IS NOT NULL
AND INS_KENMERKWAARDE20 IS NOT NULL;
v_errormsg VARCHAR2 (1000);
v_errorhint VARCHAR2 (1000);
v_aanduiding VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_error NUMBER;
v_regel NUMBER;
v_ins_deel_key NUMBER;
v_ins_deel_parent_key NUMBER;
v_ins_deelkoppeling_count NUMBER;
BEGIN
fac_update_ins(p_import_key);
commit;
FOR rec in sel
LOOP
v_ins_deel_key:=0;
v_ins_deel_parent_key:=0;
BEGIN
v_errormsg := 'Object '||rec.ins_deel_omschrijving||' niet gevonden, regel wordt overgeslagen.';
SELECT ins_deel_key
INTO v_ins_deel_key
FROM ins_v_aanwezigdeel i , ins_srtdeel id
WHERE UPPER(i.ins_deel_omschrijving)=UPPER(rec.ins_deel_omschrijving)
AND id.ins_srtdeel_code=UPPER(rec.ins_srtdeel_code)
AND i.ins_srtdeel_key=id.ins_srtdeel_key;
v_errormsg := 'Parent Object '||rec.ins_deel_parent||' ('||rec.ins_srtdeel_parent||') niet gevonden, regel wordt overgeslagen.-'||v_ins_deel_key;
SELECT ins_deel_key
INTO v_ins_deel_parent_key
FROM ins_v_aanwezigdeel i, ins_srtdeel id
WHERE UPPER(i.ins_deel_omschrijving)=UPPER(rec.ins_deel_parent)
AND id.ins_srtdeel_upper=UPPER(rec.ins_srtdeel_parent)
AND i.ins_srtdeel_key=id.ins_srtdeel_key
AND id.ins_srtdeel_verwijder IS NULL
AND id.ins_srtdeel_module = 'INS';
EXCEPTION
WHEN NO_DATA_FOUND
THEN
fac.imp_writelog(p_import_key, 'E',v_errormsg,'Fout ophalen object');
END;
v_errormsg := 'Object '||v_ins_deel_key||' updaten gaat fout met '||rec.ins_deel_breedte|| '-'||rec.ins_deel_lengte;
IF v_ins_deel_key> 0 AND LENGTH(rec.ins_deel_breedte)>1 AND LENGTH(rec.ins_deel_lengte)>1
THEN
UPDATE ins_deel
SET ins_deel_x=fac.safe_to_number(rec.ins_deel_breedte), ins_deel_y=fac.safe_to_number(rec.ins_deel_lengte)
WHERE ins_deel_key=v_ins_deel_key;
END IF;
IF v_ins_deel_key>0 AND v_ins_deel_parent_key>0
THEN
SELECT COUNT(*)
INTO v_ins_deelkoppeling_count
from ins_deelkoppeling
where ins_deelkoppeling_van_key=v_ins_deel_parent_key
AND ins_deelkoppeling_naar_key=v_ins_deel_key
AND ins_deelkoppeling_verwijder IS NULL;
IF v_ins_deelkoppeling_count =0
THEN
INSERT INTO ins_deelkoppeling(ins_deelkoppeling_van_key, ins_deelkoppeling_naar_key, ins_deelkoppeling_aanmaak)
VALUES(v_ins_deel_parent_key, v_ins_deel_key,SYSDATE);
fac.imp_writelog(p_import_key,'I','Objecten '||rec.ins_deel_omschrijving||' is gekoppeld aan '||rec.ins_deel_parent,'GEKOPPELD');
COMMIT;
END IF;
END IF;
END LOOP;
EXCEPTION
WHEN OTHERS
THEN
v_errorhint := v_errormsg || ' - ' || v_aanduiding||'('||v_regel||')';
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg := 'error ' || oracle_err_num || '/' || oracle_err_mes;
fac.imp_writelog (p_import_key,
'E',
v_errormsg,
v_errorhint);
END;
/
CREATE OR REPLACE PROCEDURE tdnl_import_mjobelementen (p_import_key IN NUMBER)
IS
c_delim VARCHAR2 (2) := fac.import_delimiter(p_import_key);
v_newline fac_imp_file.fac_imp_file_line%TYPE; -- Input line
v_errormsg VARCHAR2 (1000);
v_errorhint VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
header_is_valid NUMBER;
v_count_tot NUMBER (10);
v_count_import NUMBER (10);
v_ongeldig NUMBER (1);
v_aanduiding VARCHAR (400);
v_dummy VARCHAR (255);
v_ins_kenmerk_key1 VARCHAR2 (255);
v_ins_kenmerk_key2 VARCHAR2 (255);
v_ins_kenmerk_key3 VARCHAR2 (255);
v_ins_kenmerk_key4 VARCHAR2 (255);
v_ins_kenmerk_key5 VARCHAR2 (255);
v_ins_kenmerk_key6 VARCHAR2 (255);
v_ins_kenmerk_key7 VARCHAR2 (255);
v_ins_kenmerk_key8 VARCHAR2 (255);
v_ins_kenmerk_key9 VARCHAR2 (255);
v_ins_kenmerk_key10 VARCHAR2 (255);
v_ins_kenmerk_key11 VARCHAR2 (255);
v_ins_kenmerk_key12 VARCHAR2 (255);
v_ins_kenmerk_key13 VARCHAR2 (255);
v_ins_kenmerk_key14 VARCHAR2 (255);
v_ins_kenmerk_key15 VARCHAR2 (255);
v_ins_kenmerk_key16 VARCHAR2 (255);
v_ins_kenmerk_key17 VARCHAR2 (255);
v_ins_kenmerk_key18 VARCHAR2 (255);
v_ins_kenmerk_key19 VARCHAR2 (255);
v_ins_kenmerk_key20 VARCHAR2 (255);
-- De importvelden
v_ins_discipline_omschrijving VARCHAR2 (255); -- C60
v_ins_discipline_kostensoort VARCHAR2 (255); --C60
v_ins_srtgroep_omschrijving VARCHAR2 (255); -- C60
v_ins_srtdeel_code VARCHAR2 (255); -- C10
v_ins_srtdeel_omschrijving VARCHAR2 (255); -- C100
v_ins_deel_omschrijving VARCHAR2 (255); -- C60
v_ins_deel_opmerking VARCHAR2 (1000); -- C320
v_ins_deel_externnr VARCHAR2 (255); -- C60
v_alg_locatie_code VARCHAR2 (255); -- C10
v_alg_gebouw_code VARCHAR2 (255); -- C12
v_oprognose_gebouw_code VARCHAR2 (255);
v_alg_verdieping_volgnr VARCHAR2 (255); -- N3
v_alg_ruimte_nr VARCHAR2 (255); -- C20
v_ins_kenmerkwaarde1 VARCHAR2 (4053);
v_ins_kenmerkwaarde2 VARCHAR2 (4053);
v_ins_kenmerkwaarde3 VARCHAR2 (4053);
v_ins_kenmerkwaarde4 VARCHAR2 (4053);
v_ins_kenmerkwaarde5 VARCHAR2 (4053);
v_ins_kenmerkwaarde6 VARCHAR2 (4053);
v_ins_kenmerkwaarde7 VARCHAR2 (4053);
v_ins_kenmerkwaarde8 VARCHAR2 (4053);
v_ins_kenmerkwaarde9 VARCHAR2 (4053);
v_ins_kenmerkwaarde10 VARCHAR2 (4053);
v_ins_kenmerkwaarde11 VARCHAR2 (4053);
v_ins_kenmerkwaarde12 VARCHAR2 (4053);
v_ins_kenmerkwaarde13 VARCHAR2 (4053);
v_ins_kenmerkwaarde14 VARCHAR2 (4053);
v_ins_kenmerkwaarde15 VARCHAR2 (4053);
v_ins_kenmerkwaarde16 VARCHAR2 (4053);
v_ins_kenmerkwaarde17 VARCHAR2 (4053);
v_ins_kenmerkwaarde18 VARCHAR2 (4053);
v_ins_kenmerkwaarde19 VARCHAR2 (4053);
v_ins_kenmerkwaarde20 VARCHAR2 (4053);
v_ins_deel_aanmaak VARCHAR2 (255); -- DATE
v_ins_deel_aanmaak_d DATE;
v_ins_deel_vervaldatum VARCHAR2 (255); -- DATE
v_ins_deel_vervaldatum_d DATE;
v_ins_deel_aantal VARCHAR2 (255); -- N8,2
v_ins_deel_aantal_n NUMBER(8, 2);
v_file_index NUMBER;
v_alg_gebouw_key NUMBER;
v_alg_verdieping_key NUMBER;
v_alg_ruimte_key NUMBER;
v_ins_deel_key NUMBER;
v_ins_srtdeel_key NUMBER;
v_ins_srtgroep_key NUMBER;
v_ins_discipline_key NUMBER;
v_ins_deel_volgnr NUMBER;
-- Overige velden:
CURSOR c1
IS
SELECT *
FROM fac_imp_file
WHERE fac_import_key = p_import_key
ORDER BY fac_imp_file_index;
CURSOR c IS
SELECT *
FROM fac_imp_ins
ORDER BY alg_gebouw_code, ins_deel_omschrijving;
-- Controleer tijdens import-fase alleen op het bestaan van een kenmerk met de meegegeven omschrijving of kenmerk key.
-- De omschrijving (header van kolom) kan de omschrijving zijn van het kenmerksoort of het kenmerk.
-- De omschrijving van het kenmerksoort kan namelijk overruled worden door de omschrijving van het kenmerk.
-- Daarnaast kan hetzelfde kenmerk vaker voorkomen voor verschillende groepen.
-- Of het kenmerksoort/kenmerk wel is gedefinieerd voor de betreffende
-- object-discipline/groep/soort, volgt pas tijdens de update-fase)!
--
-- p_kw is bijvoorbeeld 'Parkeercode', 'Parkeercode|3', 234 of 234|3 waarbij de tweede en laatste in groep 3 zitten
-- het resultaat is NULL (als niet gevonden) of Parkeercode|3 of 234|3 voor kenmer_key 234 in groep 3
-- Als geen groep is meegegeven dan wordt 'Parkeercode|0' opgeleverd (de default groep)
FUNCTION bepaal_kenmerk (p_kw IN VARCHAR)
RETURN VARCHAR
IS
v_kenmerk_key NUMBER;
v_kenmerk_groep NUMBER;
v_kw VARCHAR(250);
BEGIN
v_kenmerk_groep := 0;
v_kw := p_kw;
IF INSTR (v_kw, '|') > 1
THEN
v_kenmerk_groep := SUBSTR (v_kw, INSTR (v_kw, '|') + 1);
v_kw := SUBSTR (v_kw, 1, INSTR (v_kw, '|') - 1);
END IF;
IF fac.safe_to_number (v_kw) IS NULL
THEN -- kenmerkwaarde is alfanumeriek (dus omschrijving)!
SELECT MIN(k.ins_kenmerk_key)
INTO v_kenmerk_key
FROM ins_v_aanwezigkenmerk k,
ins_v_aanwezigsrtkenmerk sk
WHERE k.ins_srtkenmerk_key = sk.ins_srtkenmerk_key
AND k.ins_kenmerk_groep = v_kenmerk_groep
AND COALESCE(UPPER(k.ins_kenmerk_omschrijving), sk.ins_srtkenmerk_upper) = UPPER(v_kw)
AND sk.ins_srtkenmerk_kenmerktype IN ('C', 'D', 'N', 'R', 'S', 'X', 'B', 'V');
ELSE -- kenmerkwaarde is numeriek (dus key)!
SELECT k.ins_kenmerk_key
INTO v_kenmerk_key
FROM ins_v_aanwezigkenmerk k,
ins_v_aanwezigsrtkenmerk sk
WHERE k.ins_srtkenmerk_key = sk.ins_srtkenmerk_key
AND k.ins_kenmerk_groep = v_kenmerk_groep
AND k.ins_kenmerk_key = fac.safe_to_number (v_kw)
AND sk.ins_srtkenmerk_kenmerktype IN ('C', 'D', 'N', 'R', 'S', 'X', 'B', 'V');
END IF;
IF v_kenmerk_key IS NULL
THEN
RETURN NULL;
ELSE
-- Er is een kenmerksoort of kenmerk aanwezig met de omschrijving/kenmerk_key (v_kw)
RETURN v_kw || '|' || TO_CHAR(v_kenmerk_groep);
END IF;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
IF p_kw IS NULL OR UPPER (p_kw) LIKE 'KENMERK%'
THEN
RETURN NULL;
ELSE
fac.imp_writelog (p_import_key,
'W',
'Fout bij bepalen kenmerk [' || p_kw || ']',
'Bestaat niet of type ongeldig');
COMMIT;
RETURN NULL;
END IF;
END;
BEGIN
-- Eerst opruiming
DELETE FROM fac_imp_ins;
COMMIT;
v_count_tot := 0;
v_count_import := 0;
header_is_valid := 0;
FOR rec1 IN c1
LOOP
BEGIN
v_newline := rec1.fac_imp_file_line;
v_file_index := rec1.fac_imp_file_index;
v_errormsg := 'Fout bij opvragen importregel';
v_aanduiding := '';
v_ongeldig := 0;
-- Lees alle veldwaarden
fac.imp_getfield (v_newline, c_delim, v_oprognose_gebouw_code); -- Objectcode
fac.imp_getfield (v_newline, c_delim, v_ins_srtdeel_code); -- Componentcode
fac.imp_getfield (v_newline, c_delim, v_ins_deel_externnr); -- Element-ID
fac.imp_getfield (v_newline, c_delim, v_ins_deel_opmerking); -- Component omschrijving
-- fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde1); -- Opmerkingen//
fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde2); -- Fabrikant
fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde3); -- Kenmerken
fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde4); -- Type
fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde5); -- Cap
fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde6); -- Eenheid Cap
fac.imp_getfield (v_newline, c_delim, v_ins_deel_aantal); -- Aantal
fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde7); -- Eenheid aantal
fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde8); -- Bouwjaar
fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde9); -- Foto
fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde10);
fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde11);
fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde12);
fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde13);
fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde14);
fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde15);
fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde16);
fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde17);
fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde18);
fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde19);
fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde20);
v_aanduiding :=
'['
|| v_alg_gebouw_code
|| '|'
|| v_ins_deel_externnr
|| '|'
|| v_ins_srtdeel_code
|| '] ';
-- Ik controleer of ik een geldige header heb, dat is: in de juiste kolommen
-- de juiste kolomkop. Ik controleer daarbij alle NIET-kenmerk kolommen!
-- Ik negeer alles totdat ik een geldige header ben gepasseerd.
IF (header_is_valid = 0)
THEN
IF UPPER (v_oprognose_gebouw_code) = 'GEBOUW_CODE'
AND UPPER (v_ins_srtdeel_code) = 'SRTDEEL_CODE'
AND UPPER (v_ins_deel_externnr) = 'DEEL_EXTERNNR'
AND UPPER (v_ins_deel_opmerking) = 'DEEL_OPMERKING'
AND UPPER (v_ins_kenmerkwaarde2) = 'FABRIKANT'
AND UPPER (v_ins_kenmerkwaarde3) = 'OPMERKINGEN'
AND UPPER (v_ins_kenmerkwaarde4) = 'TYPE'
AND UPPER (v_ins_kenmerkwaarde5) = 'CAP'
AND UPPER (v_ins_kenmerkwaarde6) = 'EENHEID CAP'
AND UPPER (v_ins_deel_aantal) = 'DEEL_AANTAL'
AND UPPER (v_ins_kenmerkwaarde7) = 'EENHEID AANTAL'
AND UPPER (v_ins_kenmerkwaarde8) = 'BOUWJAAR'
AND UPPER (v_ins_kenmerkwaarde9) = 'FOTO'
THEN
v_ins_kenmerk_key1 := bepaal_kenmerk (v_ins_kenmerkwaarde1);
v_ins_kenmerk_key2 := bepaal_kenmerk (v_ins_kenmerkwaarde2);
v_ins_kenmerk_key3 := bepaal_kenmerk (v_ins_kenmerkwaarde3);
v_ins_kenmerk_key4 := bepaal_kenmerk (v_ins_kenmerkwaarde4);
v_ins_kenmerk_key5 := bepaal_kenmerk (v_ins_kenmerkwaarde5);
v_ins_kenmerk_key6 := bepaal_kenmerk (v_ins_kenmerkwaarde6);
v_ins_kenmerk_key7 := bepaal_kenmerk (v_ins_kenmerkwaarde7);
v_ins_kenmerk_key8 := bepaal_kenmerk (v_ins_kenmerkwaarde8);
v_ins_kenmerk_key9 := bepaal_kenmerk (v_ins_kenmerkwaarde9);
v_ins_kenmerk_key10 := bepaal_kenmerk (v_ins_kenmerkwaarde10);
v_ins_kenmerk_key11 := bepaal_kenmerk (v_ins_kenmerkwaarde11);
v_ins_kenmerk_key12 := bepaal_kenmerk (v_ins_kenmerkwaarde12);
v_ins_kenmerk_key13 := bepaal_kenmerk (v_ins_kenmerkwaarde13);
v_ins_kenmerk_key14 := bepaal_kenmerk (v_ins_kenmerkwaarde14);
v_ins_kenmerk_key15 := bepaal_kenmerk (v_ins_kenmerkwaarde15);
v_ins_kenmerk_key16 := bepaal_kenmerk (v_ins_kenmerkwaarde16);
v_ins_kenmerk_key17 := bepaal_kenmerk (v_ins_kenmerkwaarde17);
v_ins_kenmerk_key18 := bepaal_kenmerk (v_ins_kenmerkwaarde18);
v_ins_kenmerk_key19 := bepaal_kenmerk (v_ins_kenmerkwaarde19);
v_ins_kenmerk_key20 := bepaal_kenmerk (v_ins_kenmerkwaarde20);
header_is_valid := 1;
ELSE
IF rec1.fac_imp_file_index = 1
THEN
fac.imp_writelog (p_import_key,
'E',
'Ongeldige header aangetroffen:',
'GEBOUW_CODE: ' || UPPER (v_oprognose_gebouw_code) || CHR(10) ||
'SRTDEEL_CODE: ' || UPPER (v_ins_srtdeel_code) || CHR(10) ||
'DEEL_EXTERNNR: ' || UPPER (v_ins_deel_externnr) || CHR(10) ||
'DEEL_OPMERKING: ' || UPPER (v_ins_deel_opmerking) || CHR(10) ||
'FABRIKANT: ' || UPPER (v_ins_kenmerkwaarde2) || CHR(10) ||
'OPMERKINGEN: ' || UPPER (v_ins_kenmerkwaarde3) || CHR(10) ||
'TYPE: ' || UPPER (v_ins_kenmerkwaarde4) || CHR(10) ||
'CAP: ' || UPPER (v_ins_kenmerkwaarde5) || CHR(10) ||
'EENHEID CAP: ' || UPPER (v_ins_kenmerkwaarde6) || CHR(10) ||
'DEEL_AANTAL: ' || UPPER (v_ins_deel_aantal) || CHR(10) ||
'EENHEID AANTAL: ' || UPPER (v_ins_kenmerkwaarde7) || CHR(10) ||
'BOUWJAAR: ' || UPPER (v_ins_kenmerkwaarde8) || CHR(10) ||
'FOTO: ' || UPPER (v_ins_kenmerkwaarde9));
END IF;
END IF;
ELSE
v_count_tot := v_count_tot + 1;
-- Controleer alle veldwaarden
v_errormsg := 'Gebouwcode kan niet gevonden worden';
v_oprognose_gebouw_code := TRIM (v_oprognose_gebouw_code);
SELECT alg_gebouw_key, alg_gebouw_code, alg_locatie_code
INTO v_alg_gebouw_key, v_alg_gebouw_code, v_alg_locatie_code
FROM alg_gebouw g, alg_locatie l, alg_onrgoedkenmerk aok, alg_kenmerk ak
WHERE g.alg_locatie_key = l.alg_locatie_key
AND alg_gebouw_verwijder IS NULL
AND aok.alg_onrgoed_key = g.alg_gebouw_key
AND aok.alg_onrgoed_niveau='G'
AND ak.alg_kenmerk_key = aok.alg_kenmerk_key
AND ak.alg_kenmerk_code='OPROGNOSE_CODE'
AND UPPER(aok.alg_onrgoedkenmerk_waarde) = UPPER(v_oprognose_gebouw_code);
v_alg_verdieping_volgnr := 0;
BEGIN
SELECT alg_verdieping_key
INTO v_alg_verdieping_key
FROM alg_verdieping
WHERE alg_verdieping_verwijder IS NULL
AND alg_gebouw_key = v_alg_gebouw_key
AND alg_verdieping_volgnr = 0;
EXCEPTION WHEN NO_DATA_FOUND
THEN
INSERT INTO alg_verdieping (alg_gebouw_key, alg_verdieping_volgnr, alg_verdieping_omschrijving, alg_verdieping_code)
VALUES (v_alg_gebouw_key, 0, 'Begane grond', '0')
RETURNING alg_verdieping_key INTO v_alg_verdieping_key;
fac.imp_writelog (p_import_key, 'I', v_aanduiding, 'Verdieping aangemaakt');
END;
v_alg_ruimte_nr := '_';
BEGIN
SELECT alg_ruimte_key
INTO v_alg_ruimte_key
FROM alg_ruimte
WHERE alg_ruimte_verwijder IS NULL
AND alg_verdieping_key = v_alg_verdieping_key
AND alg_ruimte_nr = '_';
EXCEPTION WHEN NO_DATA_FOUND
THEN
INSERT INTO alg_ruimte (alg_verdieping_key, alg_ruimte_nr, alg_ruimte_omschrijving)
VALUES (v_alg_verdieping_key, '_', 'MJOP ruimte')
RETURNING alg_ruimte_key INTO v_alg_ruimte_key;
fac.imp_writelog (p_import_key, 'I', v_aanduiding, 'Ruimte aangemaakt');
END;
--
v_errormsg := 'Bepaal objectsoort';
BEGIN
v_ins_srtdeel_code := TRIM(v_ins_srtdeel_code);
SELECT ins_srtdeel_omschrijving, ins_srtdeel_key, ins_srtgroep_key
INTO v_ins_srtdeel_omschrijving, v_ins_srtdeel_key, v_ins_srtgroep_key
FROM ins_srtdeel
WHERE ins_srtdeel_verwijder IS NULL
AND ins_srtdeel_code = SUBSTR(v_ins_srtdeel_code,1,4);
v_errormsg := 'Bepaal objectgroep';
SELECT ins_srtgroep_omschrijving, ins_discipline_key
INTO v_ins_srtgroep_omschrijving, v_ins_discipline_key
FROM ins_srtgroep
WHERE ins_srtgroep_key = v_ins_srtgroep_key;
v_errormsg := 'Bepaal discipline';
SELECT ins_discipline_omschrijving
INTO v_ins_discipline_omschrijving
FROM ins_discipline
WHERE ins_discipline_key = v_ins_discipline_key;
EXCEPTION WHEN NO_DATA_FOUND
THEN
v_errormsg := 'Nieuwe NL/SfB code';
v_ins_discipline_omschrijving := 'MJOB';
v_ins_srtdeel_omschrijving := SUBSTR(v_ins_srtdeel_code,1,4) || '-Onbekend';
BEGIN
SELECT ins_srtgroep_omschrijving
INTO v_ins_srtgroep_omschrijving
FROM ins_v_srtgroep_gegevens
WHERE ins_discipline_omschrijving = 'MJOB'
AND SUBSTR(v_ins_srtdeel_code, 1, 2) = SUBSTR(ins_srtgroep_omschrijving, 1,2);
EXCEPTION WHEN NO_DATA_FOUND
THEN
v_ins_srtgroep_omschrijving := SUBSTR(v_ins_srtdeel_code, 1, 2) || '-Onbekend';
END;
END;
BEGIN
v_errormsg := 'Bepaal object id - Kijk of het externnr bestaat';
SELECT d.ins_deel_omschrijving
INTO v_ins_deel_omschrijving
FROM ins_v_deel_gegevens dg, ins_deel d
WHERE dg.ins_deel_key = d.ins_deel_key
AND dg.alg_gebouw_upper = v_alg_gebouw_code
AND d.ins_deel_externnr = v_ins_deel_externnr;
EXCEPTION WHEN NO_DATA_FOUND
THEN
v_ins_deel_omschrijving := NULL;
END;
IF v_ins_deel_omschrijving IS NULL
THEN
v_errormsg := 'Bepaal object id - maak een nieuw nummer aan';
SELECT MAX(FAC.safe_to_number(SUBSTR(ins_deel_omschrijving, INSTR(ins_deel_omschrijving, '-')+1, 100)))
INTO v_ins_deel_volgnr
FROM ins_v_deel_gegevens
WHERE ins_discipline_omschrijving = 'MJOB'
AND ins_deel_omschrijving LIKE v_ins_srtdeel_code || '%';
IF v_ins_deel_volgnr IS NULL
THEN
v_ins_deel_volgnr := 0;
END IF;
-- v_ins_deel_omschrijving := v_ins_srtdeel_code || LPAD(v_ins_deel_volgnr + 1, 3, '0');
v_ins_deel_omschrijving := v_ins_srtdeel_code||'-'||v_ins_deel_externnr;
END IF;
v_errormsg := 'Objectopmerking ongeldig';
v_ins_deel_opmerking := TRIM (v_ins_deel_opmerking);
IF LENGTH (v_ins_deel_opmerking) > 320
THEN
v_ins_deel_opmerking := SUBSTR (v_ins_deel_opmerking, 1, 320);
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding || v_errormsg,
'Objectopmerking wordt afgebroken tot ['
|| v_ins_deel_opmerking
|| ']'
);
END IF;
--
v_errormsg := 'Aantal ongeldig; maximale grootte 999999.99';
v_ins_deel_aantal := TRIM (v_ins_deel_aantal);
v_ins_deel_aantal := REPLACE (v_ins_deel_aantal, ',', '.');
v_ins_deel_aantal_n := NULL;
IF (v_ins_deel_aantal IS NOT NULL AND fac.getSetting('ins_explode_objects') = 0)
THEN
IF (fac.safe_to_number (v_ins_deel_aantal) IS NULL)
THEN
v_ongeldig := 1;
fac.imp_writelog (p_import_key,
'W',
v_aanduiding || v_errormsg,
'Regel wordt overgeslagen!');
ELSE
v_ins_deel_aantal_n := fac.safe_to_number (v_ins_deel_aantal);
END IF;
ELSE
v_ins_deel_aantal_n := 1;
END IF;
--
v_errorhint := 'Bepaling registratiedatum';
v_ins_kenmerkwaarde8 := TRIM(v_ins_kenmerkwaarde8);
IF v_ins_kenmerkwaarde8 IS NOT NULL AND LENGTH(v_ins_kenmerkwaarde8) = 4
THEN
v_ins_deel_aanmaak := '01-01-' || TRIM(v_ins_kenmerkwaarde8);
v_ins_deel_aanmaak_d := TO_DATE(v_ins_deel_aanmaak, 'dd-mm-yyyy');
END IF;
-- De rest alleen ff trimmen.
v_ins_kenmerkwaarde1 := TRIM (v_ins_kenmerkwaarde1);
v_ins_kenmerkwaarde2 := TRIM (v_ins_kenmerkwaarde2);
v_ins_kenmerkwaarde3 := TRIM (v_ins_kenmerkwaarde3);
v_ins_kenmerkwaarde4 := TRIM (v_ins_kenmerkwaarde4);
v_ins_kenmerkwaarde5 := TRIM (v_ins_kenmerkwaarde5);
v_ins_kenmerkwaarde6 := TRIM (v_ins_kenmerkwaarde6);
v_ins_kenmerkwaarde7 := TRIM (v_ins_kenmerkwaarde7);
v_ins_kenmerkwaarde8 := TRIM (v_ins_kenmerkwaarde8);
v_ins_kenmerkwaarde9 := TRIM (v_ins_kenmerkwaarde9);
v_ins_kenmerkwaarde10 := TRIM (v_ins_kenmerkwaarde10);
v_ins_kenmerkwaarde11 := TRIM (v_ins_kenmerkwaarde11);
v_ins_kenmerkwaarde12 := TRIM (v_ins_kenmerkwaarde12);
v_ins_kenmerkwaarde13 := TRIM (v_ins_kenmerkwaarde13);
v_ins_kenmerkwaarde14 := TRIM (v_ins_kenmerkwaarde14);
v_ins_kenmerkwaarde15 := TRIM (v_ins_kenmerkwaarde15);
v_ins_kenmerkwaarde16 := TRIM (v_ins_kenmerkwaarde16);
v_ins_kenmerkwaarde17 := TRIM (v_ins_kenmerkwaarde17);
v_ins_kenmerkwaarde18 := TRIM (v_ins_kenmerkwaarde18);
v_ins_kenmerkwaarde19 := TRIM (v_ins_kenmerkwaarde19);
v_ins_kenmerkwaarde20 := TRIM (v_ins_kenmerkwaarde20);
-- Insert geformatteerde import record
IF v_ongeldig = 0
THEN
BEGIN
v_errormsg := 'Fout bij wegschrijven importregel';
-- Als uit kenmerkheader een geldige kenmerksoort-key volgt,
-- dan is kenmerkwaarde<n> gevuld met <key>=<waarde>; zoniet,
-- dan is kenmerkwaarde<n> gevuld met <waarde>!
-- NB. Een NULL-waarde resulteert NIET in het wissen van een
-- kenmerkveld (bijwerken kan wel, maar wissen dus niet)!
INSERT INTO fac_imp_ins (
ins_discipline_omschrijving,
ins_discipline_kostensoort,
ins_srtgroep_omschrijving,
ins_srtdeel_code,
ins_srtdeel_omschrijving,
ins_deel_omschrijving,
ins_deel_opmerking,
alg_locatie_code,
alg_gebouw_code,
alg_verdieping_volgnr,
alg_ruimte_nr,
ins_kenmerkwaarde1,
ins_kenmerkwaarde2,
ins_kenmerkwaarde3,
ins_kenmerkwaarde4,
ins_kenmerkwaarde5,
ins_kenmerkwaarde6,
ins_kenmerkwaarde7,
ins_kenmerkwaarde8,
ins_kenmerkwaarde9,
ins_kenmerkwaarde10,
ins_kenmerkwaarde11,
ins_kenmerkwaarde12,
ins_kenmerkwaarde13,
ins_kenmerkwaarde14,
ins_kenmerkwaarde15,
ins_kenmerkwaarde16,
ins_kenmerkwaarde17,
ins_kenmerkwaarde18,
ins_kenmerkwaarde19,
ins_kenmerkwaarde20,
ins_deel_aanmaak,
ins_deel_aantal,
ins_deel_externnr
)
VALUES (
v_ins_discipline_omschrijving,
v_ins_discipline_kostensoort,
v_ins_srtgroep_omschrijving,
SUBSTR(v_ins_srtdeel_code,1,4),
v_ins_srtdeel_omschrijving,
v_ins_deel_omschrijving,
v_ins_deel_opmerking,
v_alg_locatie_code,
v_alg_gebouw_code,
v_alg_verdieping_volgnr,
v_alg_ruimte_nr,
DECODE (v_ins_kenmerk_key1, NULL, v_ins_kenmerkwaarde1, DECODE(v_ins_kenmerk_key1, NULL, NULL, TO_CHAR (v_ins_kenmerk_key1) || '=' || SUBSTR (v_ins_kenmerkwaarde1, 1, 3900))),
DECODE (v_ins_kenmerk_key2, NULL, v_ins_kenmerkwaarde2, DECODE(v_ins_kenmerk_key2, NULL, NULL, TO_CHAR (v_ins_kenmerk_key2) || '=' || SUBSTR (v_ins_kenmerkwaarde2, 1, 3900))),
DECODE (v_ins_kenmerk_key3, NULL, v_ins_kenmerkwaarde3, DECODE(v_ins_kenmerk_key3, NULL, NULL, TO_CHAR (v_ins_kenmerk_key3) || '=' || SUBSTR (v_ins_kenmerkwaarde3, 1, 3900))),
DECODE (v_ins_kenmerk_key4, NULL, v_ins_kenmerkwaarde4, DECODE(v_ins_kenmerk_key4, NULL, NULL, TO_CHAR (v_ins_kenmerk_key4) || '=' || SUBSTR (v_ins_kenmerkwaarde4, 1, 3900))),
DECODE (v_ins_kenmerk_key5, NULL, v_ins_kenmerkwaarde5, DECODE(v_ins_kenmerk_key5, NULL, NULL, TO_CHAR (v_ins_kenmerk_key5) || '=' || SUBSTR (v_ins_kenmerkwaarde5, 1, 3900))),
DECODE (v_ins_kenmerk_key6, NULL, v_ins_kenmerkwaarde6, DECODE(v_ins_kenmerk_key6, NULL, NULL, TO_CHAR (v_ins_kenmerk_key6) || '=' || SUBSTR (v_ins_kenmerkwaarde6, 1, 3900))),
DECODE (v_ins_kenmerk_key7, NULL, v_ins_kenmerkwaarde7, DECODE(v_ins_kenmerk_key7, NULL, NULL, TO_CHAR (v_ins_kenmerk_key7) || '=' || SUBSTR (v_ins_kenmerkwaarde7, 1, 3900))),
DECODE (v_ins_kenmerk_key8, NULL, v_ins_kenmerkwaarde8, DECODE(v_ins_kenmerk_key8, NULL, NULL, TO_CHAR (v_ins_kenmerk_key8) || '=' || SUBSTR (v_ins_kenmerkwaarde8, 1, 3900))),
DECODE (v_ins_kenmerk_key9, NULL, v_ins_kenmerkwaarde9, DECODE(v_ins_kenmerk_key9, NULL, NULL, TO_CHAR (v_ins_kenmerk_key9) || '=' || SUBSTR (v_ins_kenmerkwaarde9, 1, 3900))),
DECODE (v_ins_kenmerk_key10, NULL, v_ins_kenmerkwaarde10, DECODE(v_ins_kenmerk_key10, NULL, NULL, TO_CHAR (v_ins_kenmerk_key10) || '=' || SUBSTR (v_ins_kenmerkwaarde10, 1, 3900))),
DECODE (v_ins_kenmerk_key11, NULL, v_ins_kenmerkwaarde11, DECODE(v_ins_kenmerk_key11, NULL, NULL, TO_CHAR (v_ins_kenmerk_key11) || '=' || SUBSTR (v_ins_kenmerkwaarde11, 1, 3900))),
DECODE (v_ins_kenmerk_key12, NULL, v_ins_kenmerkwaarde12, DECODE(v_ins_kenmerk_key12, NULL, NULL, TO_CHAR (v_ins_kenmerk_key12) || '=' || SUBSTR (v_ins_kenmerkwaarde12, 1, 3900))),
DECODE (v_ins_kenmerk_key13, NULL, v_ins_kenmerkwaarde13, DECODE(v_ins_kenmerk_key13, NULL, NULL, TO_CHAR (v_ins_kenmerk_key13) || '=' || SUBSTR (v_ins_kenmerkwaarde13, 1, 3900))),
DECODE (v_ins_kenmerk_key14, NULL, v_ins_kenmerkwaarde14, DECODE(v_ins_kenmerk_key14, NULL, NULL, TO_CHAR (v_ins_kenmerk_key14) || '=' || SUBSTR (v_ins_kenmerkwaarde14, 1, 3900))),
DECODE (v_ins_kenmerk_key15, NULL, v_ins_kenmerkwaarde15, DECODE(v_ins_kenmerk_key15, NULL, NULL, TO_CHAR (v_ins_kenmerk_key15) || '=' || SUBSTR (v_ins_kenmerkwaarde15, 1, 3900))),
DECODE (v_ins_kenmerk_key16, NULL, v_ins_kenmerkwaarde16, DECODE(v_ins_kenmerk_key16, NULL, NULL, TO_CHAR (v_ins_kenmerk_key16) || '=' || SUBSTR (v_ins_kenmerkwaarde16, 1, 3900))),
DECODE (v_ins_kenmerk_key17, NULL, v_ins_kenmerkwaarde17, DECODE(v_ins_kenmerk_key17, NULL, NULL, TO_CHAR (v_ins_kenmerk_key17) || '=' || SUBSTR (v_ins_kenmerkwaarde17, 1, 3900))),
DECODE (v_ins_kenmerk_key18, NULL, v_ins_kenmerkwaarde18, DECODE(v_ins_kenmerk_key18, NULL, NULL, TO_CHAR (v_ins_kenmerk_key18) || '=' || SUBSTR (v_ins_kenmerkwaarde18, 1, 3900))),
DECODE (v_ins_kenmerk_key19, NULL, v_ins_kenmerkwaarde19, DECODE(v_ins_kenmerk_key19, NULL, NULL, TO_CHAR (v_ins_kenmerk_key19) || '=' || SUBSTR (v_ins_kenmerkwaarde19, 1, 3900))),
DECODE (v_ins_kenmerk_key20, NULL, v_ins_kenmerkwaarde20, DECODE(v_ins_kenmerk_key20, NULL, NULL, TO_CHAR (v_ins_kenmerk_key20) || '=' || SUBSTR (v_ins_kenmerkwaarde20, 1, 3900))),
v_ins_deel_aanmaak_d,
v_ins_deel_aantal_n,
v_ins_deel_externnr
);
COMMIT;
v_count_import := v_count_import + 1;
END;
END IF;
END IF;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg :=
v_errormsg
|| ' ORACLE (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.imp_writelog (p_import_key,
'W',
v_aanduiding || v_errormsg,
'');
COMMIT;
END;
END LOOP;
IF (header_is_valid = 1)
THEN
fac.imp_writelog (
p_import_key,
'S',
'Objecten/aantal ingelezen importregels: ' || TO_CHAR (v_count_tot),
''
);
fac.imp_writelog (
p_import_key,
'S',
'Objecten/aantal ongeldige niet ingelezen importregels: '
|| TO_CHAR (v_count_tot - v_count_import),
''
);
END IF;
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg :=
v_errormsg
|| ' ORACLE (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.imp_writelog (p_import_key,
'E',
v_aanduiding || v_errormsg,
'Inleesproces objecten afgebroken! regel:' || v_file_index);
END;
/
CREATE OR REPLACE PROCEDURE tdnl_update_mjobelementen (
p_import_key IN NUMBER)
IS
v_aanduiding VARCHAR (400);
v_kenmerk_foto NUMBER;
BEGIN
fac_update_ins (p_import_key);
BEGIN
v_aanduiding:='Ophalen oprognose kenmerk key is mislukt';
SELECT i.ins_kenmerk_key
INTO v_kenmerk_foto
FROM ins_kenmerk i
where i.ins_kenmerk_code='OPROGNOSE_FOTO'
AND i.ins_kenmerk_verwijder IS NULL;
UPDATE ins_deel i
SET i.ins_deel_image = (SELECT ins_kenmerkdeel_waarde
FROM ins_kenmerkdeel
WHERE ins_deel_key=i.ins_deel_key
AND ins_kenmerk_key=v_kenmerk_foto)
WHERE i.ins_deel_key IN (SELECT ins_deel_key
FROM ins_kenmerkdeel
WHERE ins_kenmerk_key=v_kenmerk_foto);
EXCEPTION
WHEN NO_DATA_FOUND THEN
fac.imp_writelog (p_import_key,
'W',
v_aanduiding,
'Afbeelding objecten updaten !');
END;
END;
/
-- EINE MJOB Elementen Import
CREATE OR REPLACE PROCEDURE tdnl_import_mjobtaken (p_import_key IN NUMBER)
IS
c_delim VARCHAR2 (2) := fac.import_delimiter(p_import_key);
v_newline fac_imp_file.fac_imp_file_line%TYPE; -- Input line
v_errormsg VARCHAR2 (1000);
v_errorhint VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
header_is_valid NUMBER;
v_count_tot NUMBER (10);
v_count_import NUMBER (10);
v_ongeldig NUMBER (1);
v_aanduiding VARCHAR (400);
v_dummy VARCHAR (255);
v_oprognose_gebouw_code VARCHAR2 (255);
v_alg_gebouw_code VARCHAR2 (255); --VARCHAR2(12),
v_alg_locatie_code VARCHAR2 (255); --VARCHAR2(12),
v_ins_deel_externnr VARCHAR2 (255); --VARCHAR2(256),
v_ins_deel_omschrijving VARCHAR2 (255); --VARCHAR2(60),
v_ins_srtcontrole_omschrijving VARCHAR2 (255); --VARCHAR2(60),
v_ins_srtcontrole_level VARCHAR2 (255); --NUMBER(3),
v_ins_srtcontroledl_xcp_materia VARCHAR2 (255); --NUMBER(9,2),
v_ins_srtcontroledl_xcp_aantal VARCHAR2 (255); --NUMBER(8,2),
v_ins_srtcontroledl_xcp_startdat VARCHAR2 (255); --DATE,
v_ins_srtcontroledl_xcp_periode VARCHAR2 (255); --NUMBER(6,2)
v_ins_srtcontroledl_xcp_perc VARCHAR2 (255); --NUMBER(3)
v_ins_srtcontroledl_xcp_eenh VARCHAR2 (255);
v_file_index NUMBER;
CURSOR c1
IS
SELECT *
FROM fac_imp_file
WHERE fac_import_key = p_import_key
ORDER BY fac_imp_file_index;
BEGIN
-- Eerst opruiming
v_count_tot := 0;
v_count_import := 0;
header_is_valid := 0;
FOR rec1 IN c1
LOOP
BEGIN
v_newline := rec1.fac_imp_file_line;
v_file_index := rec1.fac_imp_file_index;
v_errormsg := 'Fout bij opvragen importregel';
v_aanduiding := '';
v_ongeldig := 0;
-- Lees alle veldwaarden
fac.imp_getfield (v_newline, c_delim, v_oprognose_gebouw_code);
fac.imp_getfield (v_newline, c_delim, v_ins_deel_externnr);
fac.imp_getfield (v_newline, c_delim, v_ins_deel_omschrijving);
fac.imp_getfield (v_newline, c_delim, v_ins_srtcontrole_omschrijving);
fac.imp_getfield (v_newline, c_delim, v_ins_srtcontroledl_xcp_materia);
fac.imp_getfield (v_newline, c_delim, v_ins_srtcontroledl_xcp_aantal);
fac.imp_getfield (v_newline, c_delim, v_ins_srtcontrole_level);
fac.imp_getfield (v_newline, c_delim, v_ins_srtcontroledl_xcp_startdat);
fac.imp_getfield (v_newline, c_delim, v_ins_srtcontroledl_xcp_periode);
fac.imp_getfield (v_newline, c_delim, v_ins_srtcontroledl_xcp_perc);
fac.imp_getfield (v_newline, c_delim, v_ins_srtcontroledl_xcp_eenh);
v_aanduiding :=
'['
|| v_alg_gebouw_code
|| '|'
|| v_ins_deel_externnr
|| '|'
|| v_ins_deel_omschrijving
|| '|'
|| v_ins_srtcontrole_omschrijving
|| '] ';
-- Ik controleer of ik een geldige header heb, dat is: in de juiste kolommen
-- de juiste kolomkop. Ik controleer daarbij alle NIET-kenmerk kolommen!
-- Ik negeer alles totdat ik een geldige header ben gepasseerd.
IF (header_is_valid = 0)
THEN
IF UPPER (v_oprognose_gebouw_code) = 'GEBOUW_CODE'
AND UPPER (v_ins_deel_externnr) = 'DEEL_EXTERNNR'
AND UPPER (v_ins_deel_omschrijving) = 'DEEL_OMSCHRIJVING'
AND UPPER (v_ins_srtcontrole_omschrijving) = 'SRTCONTROLE_OMSCHRIJVING'
AND UPPER (v_ins_srtcontroledl_xcp_materia) = 'SRTCONTROLEDL_XCP_MATERIA'
AND UPPER (v_ins_srtcontroledl_xcp_aantal) = 'SRTCONTROLEDL_XCP_AANTAL'
AND UPPER (v_ins_srtcontrole_level) = 'SRTCONTROLE_LEVEL'
AND UPPER (v_ins_srtcontroledl_xcp_startdat) = 'SRTCONTROLE_STARTJAAR'
AND UPPER (v_ins_srtcontroledl_xcp_periode) = 'SRTCONTROLE_PERIODE'
AND UPPER (v_ins_srtcontroledl_xcp_perc) = 'SRTCONTROLE_PERCENTAGE'
THEN
header_is_valid := 1;
ELSE
IF rec1.fac_imp_file_index = 1
THEN
fac.imp_writelog (p_import_key,
'E',
'Ongeldige header aangetroffen:',
'GEBOUW_CODE: ' || UPPER (v_oprognose_gebouw_code) || CHR(10) ||
'DEEL_EXTERNNR: ' || UPPER (v_ins_deel_externnr) || CHR(10) ||
'DEEL_OMSCHRIJVING: ' || UPPER (v_ins_deel_omschrijving) || CHR(10) ||
'SRTCONTROLE_OMSCHRIJVING: ' || UPPER (v_ins_srtcontrole_omschrijving) || CHR(10) ||
'SRTCONTROLEDL_XCP_MATERIA: ' || UPPER (v_ins_srtcontroledl_xcp_materia) || CHR(10) ||
'SRTCONTROLEDL_XCP_AANTAL: ' || UPPER (v_ins_srtcontroledl_xcp_aantal) || CHR(10) ||
'SRTCONTROLE_LEVEL: ' || UPPER (v_ins_srtcontrole_level) || CHR(10) ||
'SRTCONTROLE_STARTJAAR: ' || UPPER (v_ins_srtcontroledl_xcp_startdat) || CHR(10) ||
'SRTCONTROLE_PERIODE: ' || UPPER (v_ins_srtcontroledl_xcp_periode) || CHR(10) ||
'SRTCONTROLE_PERCENTAGE: ' || UPPER (v_ins_srtcontroledl_xcp_perc));
END IF;
END IF;
ELSE
v_count_tot := v_count_tot + 1;
-- Controleer alle veldwaarden
v_errormsg := 'Gebouwcode kan niet gevonden worden';
v_oprognose_gebouw_code := TRIM (v_oprognose_gebouw_code);
BEGIN
SELECT g.alg_gebouw_code, l.alg_locatie_code
INTO v_alg_gebouw_code, v_alg_locatie_code
FROM alg_gebouw g, alg_onrgoedkenmerk aok, alg_kenmerk ak, alg_locatie l
WHERE g.alg_gebouw_verwijder IS NULL
AND aok.alg_onrgoed_key = g.alg_gebouw_key
AND aok.alg_onrgoed_niveau='G'
AND ak.alg_kenmerk_key = aok.alg_kenmerk_key
AND ak.alg_kenmerk_code='OPROGNOSE_CODE'
AND UPPER(aok.alg_onrgoedkenmerk_waarde) = UPPER(v_oprognose_gebouw_code)
AND l.alg_locatie_key=g.alg_locatie_key;
EXCEPTION WHEN NO_DATA_FOUND
THEN
fac.imp_writelog (
p_import_key,
'E',
v_aanduiding || v_errormsg,
'Gebouw is niet gevonden'
);
v_ongeldig := 1;
END;
v_errormsg := 'Object externnr kan niet gevonden worden';
v_ins_deel_externnr := TRIM (v_ins_deel_externnr);
IF v_ins_deel_externnr IS NOT NULL
THEN
BEGIN
SELECT 1
INTO v_dummy
FROM ins_v_deel_gegevens dg, ins_deel d
WHERE dg.ins_deel_key = d.ins_deel_key
AND UPPER(d.ins_deel_externnr) = UPPER(v_ins_deel_externnr)
AND dg.alg_gebouw_upper = UPPER(v_alg_gebouw_code);
EXCEPTION WHEN NO_DATA_FOUND
THEN
fac.imp_writelog (
p_import_key,
'E',
v_aanduiding || v_errormsg,
'Object is niet gevonden op extern id '
);
v_ongeldig := 1;
END;
END IF;
v_errormsg := 'Controle op kosten';
IF FAC.safe_to_number(v_ins_srtcontroledl_xcp_materia) IS NULL
THEN
fac.imp_writelog (
p_import_key,
'E',
v_aanduiding || v_errormsg,''
);
v_ongeldig := 1;
END IF;
v_errormsg := 'Controle op aantal';
IF v_ins_srtcontroledl_xcp_aantal IS NOT NULL AND FAC.safe_to_number(v_ins_srtcontroledl_xcp_aantal) IS NULL
THEN
fac.imp_writelog (
p_import_key,
'E',
v_aanduiding || v_errormsg,''
);
v_ongeldig := 1;
END IF;
v_errormsg := 'Controle op startjaar';
IF v_ins_srtcontroledl_xcp_startdat IS NOT NULL AND FAC.safe_to_date('01-01-' || v_ins_srtcontroledl_xcp_startdat, 'dd-mm-yyyy') IS NULL
THEN
fac.imp_writelog (
p_import_key,
'E',
v_aanduiding || v_errormsg,''
);
v_ongeldig := 1;
END IF;
v_errormsg := 'Controle op periode';
IF v_ins_srtcontroledl_xcp_periode IS NOT NULL AND FAC.safe_to_number(v_ins_srtcontroledl_xcp_periode) IS NULL
THEN
fac.imp_writelog (
p_import_key,
'E',
v_aanduiding || v_errormsg,''
);
v_ongeldig := 1;
END IF;
v_errormsg := 'Controle op percentage';
IF v_ins_srtcontroledl_xcp_perc IS NOT NULL AND FAC.safe_to_number(v_ins_srtcontroledl_xcp_perc) IS NULL
THEN
fac.imp_writelog (
p_import_key,
'E',
v_aanduiding || v_errormsg,''
);
v_ongeldig := 1;
END IF;
-- Insert geformatteerde import record
IF v_ongeldig = 0
THEN
BEGIN
v_errormsg := 'Fout bij wegschrijven importregel';
-- Als uit kenmerkheader een geldige kenmerksoort-key volgt,
-- dan is kenmerkwaarde<n> gevuld met <key>=<waarde>; zoniet,
-- dan is kenmerkwaarde<n> gevuld met <waarde>!
-- NB. Een NULL-waarde resulteert NIET in het wissen van een
-- kenmerkveld (bijwerken kan wel, maar wissen dus niet)!
INSERT INTO fac_imp_csv (FAC_IMPORT_KEY,
fac_imp_csv_index,
fac_imp_csv_col01,
fac_imp_csv_col02,
fac_imp_csv_col03,
fac_imp_csv_col04,
fac_imp_csv_col05,
fac_imp_csv_col06,
fac_imp_csv_col07,
fac_imp_csv_col08,
fac_imp_csv_col09,
fac_imp_csv_col10,
fac_imp_csv_col11,
fac_imp_csv_col12)
VALUES ( p_import_key,
v_file_index,
SUBSTR(v_alg_gebouw_code,1,12),
SUBSTR(v_ins_deel_externnr,1,256),
SUBSTR(v_ins_deel_omschrijving,1,60),
SUBSTR(v_ins_srtcontrole_omschrijving,1,60),
FAC.safe_to_number(v_ins_srtcontrole_level),
FAC.safe_to_number(v_ins_srtcontroledl_xcp_materia), -- de prijs m,oet per stuk zijn.
FAC.safe_to_number(v_ins_srtcontroledl_xcp_aantal),
'01-01-' || v_ins_srtcontroledl_xcp_startdat,
v_ins_srtcontroledl_xcp_periode,
FAC.safe_to_number(v_ins_srtcontroledl_xcp_perc),
v_ins_srtcontroledl_xcp_eenh,
SUBSTR(v_alg_locatie_code,1,12));
COMMIT;
v_count_import := v_count_import + 1;
END;
END IF;
END IF;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg :=
v_errormsg
|| ' ORACLE (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.imp_writelog (p_import_key,
'W',
v_aanduiding || v_errormsg,
'');
COMMIT;
END;
END LOOP;
IF (header_is_valid = 1)
THEN
fac.imp_writelog (
p_import_key,
'S',
'Taken/aantal ingelezen importregels: ' || TO_CHAR (v_count_tot),
''
);
fac.imp_writelog (
p_import_key,
'S',
'Taken/aantal ongeldige niet ingelezen importregels: '
|| TO_CHAR (v_count_tot - v_count_import),
''
);
END IF;
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg :=
v_errormsg
|| ' ORACLE (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.imp_writelog (p_import_key,
'E',
v_aanduiding || v_errormsg,
'Inleesproces taken afgebroken! regel:' || v_file_index);
END tdnl_import_mjobtaken;
/
CREATE OR REPLACE PROCEDURE tdnl_update_mjobtaken (
p_import_key IN NUMBER)
IS
CURSOR c IS
SELECT fac_imp_csv_col01 alg_gebouw_code,
fac_imp_csv_col02 ins_deel_externnr,
fac_imp_csv_col03 ins_deel_omschrijving,
fac_imp_csv_col04 ins_srtcontrole_omschrijving,
fac_imp_csv_col05 ins_srtcontrole_level,
fac_imp_csv_col06 ins_srtcontroledl_xcp_materia,
fac_imp_csv_col07 ins_srtcontroledl_xcp_aantal,
fac_imp_csv_col08 ins_srtcontroledl_xcp_startdat,
fac_imp_csv_col09 ins_srtcontroledl_xcp_periode,
fac_imp_csv_col10 ins_srtcontroledl_xcp_perc,
fac_imp_csv_col11 ins_srtcontroledl_xcp_eenh,
fac_imp_csv_col12 alg_locatie_code
FROM fac_imp_csv
WHERE fac_import_key=p_import_key;
v_errormsg VARCHAR2 (1000);
v_errorhint VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_count_tot NUMBER (10);
v_count_import NUMBER (10);
v_ongeldig NUMBER (1);
v_aanduiding VARCHAR (400);
v_ins_deel_key NUMBER;
v_ins_deel_aantal NUMBER;
v_ins_srtdeel_key NUMBER;
v_ins_srtcontrole_key NUMBER;
v_ins_srtcontroledl_xcp_key NUMBER;
v_ctr_discipline_key NUMBER;
v_alg_gebouw_key NUMBER;
v_ins_srtdeel_code INS_SRTDEEL.INS_SRTDEEL_CODE%TYPE;
v_ins_deel_eenheid VARCHAR2(30);
v_ins_srtcontroledl_xcp_startdat DATE;
v_ins_srtcontroledl_xcp_aantal NUMBER;
v_ins_srtcontroledl_xcp_perc NUMBER;
v_refdate DATE;
BEGIN
SELECT MIN(ctr_ins_discipline_key)
INTO v_ctr_discipline_key
FROM ctr_disc_params
WHERE ctr_disc_params_ismjob = 1;
-- controleer op verwijderde records
FOR rec IN c
LOOP
BEGIN
v_ins_deel_key := NULL;
v_aanduiding := rec.alg_gebouw_code || '|' || rec.ins_deel_omschrijving || '|' || rec.ins_deel_externnr || '|' || rec.ins_srtcontrole_omschrijving;
v_errormsg := 'Gebouwcode kan niet gevonden worden';
BEGIN
SELECT g.alg_gebouw_key
INTO v_alg_gebouw_key
FROM alg_gebouw g, alg_locatie l
WHERE alg_gebouw_verwijder IS NULL
AND UPPER(alg_gebouw_code) = rec.alg_gebouw_code
AND l.alg_locatie_key=g.alg_locatie_key
AND l.alg_locatie_code=rec.alg_locatie_code;
EXCEPTION WHEN NO_DATA_FOUND
THEN
fac.imp_writelog (
p_import_key,
'E',
v_aanduiding || v_errormsg,
'Gebouw is niet gevonden'
);
END;
v_errormsg := 'Objectid kan niet gevonden worden';
IF rec.ins_deel_omschrijving IS NOT NULL
THEN
BEGIN
SELECT dg.ins_deel_key,
sd.ins_srtdeel_key,
sd.ins_srtdeel_code,
dg.ins_deel_aantal,
ken.ins_kenmerkdeel_waarde
INTO v_ins_deel_key, v_ins_srtdeel_key, v_ins_srtdeel_code, v_ins_deel_aantal, v_ins_deel_eenheid
FROM ins_v_deel_gegevens dg,
ins_srtdeel sd,
(SELECT ikd.ins_deel_key, ikd.ins_kenmerkdeel_waarde
FROM ins_kenmerkdeel ikd, ins_kenmerk ik
WHERE ikd.ins_kenmerk_key = ik.ins_kenmerk_key
AND ik.ins_kenmerk_code = 'MJOB_EENHEID_AANTAL'
AND ikd.ins_kenmerkdeel_verwijder IS NULL) ken
WHERE dg.ins_srtdeel_key = sd.ins_srtdeel_key
AND UPPER(dg.ins_deel_omschrijving) = UPPER(rec.ins_deel_omschrijving)
AND ken.ins_deel_key(+) = dg.ins_deel_key
AND dg.alg_gebouw_key = v_alg_gebouw_key;
EXCEPTION WHEN NO_DATA_FOUND
THEN
fac.imp_writelog (
p_import_key,
'E',
v_aanduiding || v_errormsg,
'Object is niet gevonden op id '
);
v_ongeldig := 1;
END;
END IF;
v_errormsg := 'Object externnr kan niet gevonden worden';
IF rec.ins_deel_externnr IS NOT NULL AND v_ins_deel_key IS NULL
THEN
BEGIN
SELECT d.ins_deel_key, sd.ins_srtdeel_key, sd.ins_srtdeel_code, d.ins_deel_aantal
INTO v_ins_deel_key, v_ins_srtdeel_key, v_ins_srtdeel_code, v_ins_deel_aantal
FROM ins_v_deel_gegevens dg, ins_deel d, ins_srtdeel sd
WHERE dg.ins_deel_key = d.ins_deel_key
AND d.ins_srtdeel_key = sd.ins_srtdeel_key
AND UPPER(d.ins_deel_externnr) = UPPER(rec.ins_deel_externnr)
AND dg.alg_gebouw_key = v_alg_gebouw_key;
EXCEPTION WHEN NO_DATA_FOUND
THEN
fac.imp_writelog (
p_import_key,
'E',
v_aanduiding || v_errormsg,
'Object is niet gevonden op extern id '
);
v_ongeldig := 1;
END;
END IF;
-- kijk of de srtcontrole al bestaat
v_errormsg := 'Kijk of de taak al bestaat';
BEGIN
SELECT ins_srtcontrole_key
INTO v_ins_srtcontrole_key
FROM ins_srtcontrole
WHERE ins_srtinstallatie_key = v_ins_srtdeel_key
AND ins_srtcontrole_niveau = 'S'
AND ins_srtcontrole_omschrijving = SUBSTR(v_ins_srtdeel_code || ' - ' || rec.ins_srtcontrole_omschrijving, 1, 60)
AND ctr_discipline_key = v_ctr_discipline_key;
UPDATE ins_srtcontrole
SET ins_srtcontrole_level = rec.ins_srtcontrole_level
WHERE ins_srtcontrole_key = v_ins_srtcontrole_key;
EXCEPTION WHEN NO_DATA_FOUND
THEN
v_errormsg := 'Aanmaken nieuwe taak';
INSERT INTO ins_srtcontrole (ins_srtinstallatie_key,
ins_srtcontrole_niveau,
ins_srtcontrole_omschrijving,
ctr_discipline_key,
ins_srtcontrole_periode,
ins_srtcontrole_eenheid,
ins_srtcontrole_level,
ins_srtcontrole_materiaal,
ins_srtcontrole_percentage)
VALUES (v_ins_srtdeel_key,
'S',
SUBSTR(v_ins_srtdeel_code || ' - ' || rec.ins_srtcontrole_omschrijving, 1, 60),
v_ctr_discipline_key,
0, -- periode wordt in het xcp record opgegeven
4, -- standaard jaar voor MJOB
rec.ins_srtcontrole_level,
0, -- kosten worden in het xcp record vermeld.
100)
RETURNING ins_srtcontrole_key INTO v_ins_srtcontrole_key;
END;
v_ins_srtcontroledl_xcp_perc:=FAC.safe_to_number(rec.ins_srtcontroledl_xcp_perc)*100;
IF v_ins_srtcontroledl_xcp_perc>100 THEN
v_ins_srtcontroledl_xcp_perc:=100;
END IF;
IF v_ins_srtcontroledl_xcp_perc < 100 THEN
v_ins_srtcontroledl_xcp_aantal:=NULL;
ELSE
IF rec.ins_srtcontroledl_xcp_aantal <> v_ins_deel_aantal THEN
v_ins_srtcontroledl_xcp_aantal:=FAC.safe_to_number(rec.ins_srtcontroledl_xcp_aantal);
ELSE
v_ins_srtcontroledl_xcp_aantal:=NULL;
END IF;
END IF;
-- wat is het aantal op de taak (in de oprognose staat een hvh_reken die we hier gebruiken ipv de ins_deel_aantal)
-- v_ins_srtcontroledl_xcp_aantal := FAC.safe_to_number(rec.ins_srtcontroledl_xcp_aantal);
-- IF (v_ins_srtcontroledl_xcp_aantal=1 AND v_ins_deel_aantal>1)
-- THEN
-- v_ins_srtcontroledl_xcp_aantal:= v_ins_deel_aantal;
-- END IF;
-- Ophalen freeze jaar en eerst stardatum
v_ins_srtcontroledl_xcp_startdat:=FAC.safe_to_date(rec.ins_srtcontroledl_xcp_startdat, 'dd-mm-yyyy');
v_refdate := FAC.safe_to_date('01-01-'||fac.getsetting('mjb_start_year'),'DD-MM-YYYY');
IF (v_ins_srtcontroledl_xcp_startdat<=v_refdate)
THEN
v_ins_srtcontroledl_xcp_startdat := tdnl.getfirststartdate(v_ins_srtcontroledl_xcp_startdat, v_refdate,rec.ins_srtcontroledl_xcp_periode);
END IF;
-- kijk of de taak uitzondering al bestaat
v_errormsg := 'Kijk of de XCP taak al bestaat';
BEGIN
SELECT ins_srtcontroledl_xcp_key
INTO v_ins_srtcontroledl_xcp_key
FROM ins_srtcontroledl_xcp
WHERE ins_deel_key = v_ins_deel_key
AND ins_srtcontrole_key = v_ins_srtcontrole_key;
UPDATE ins_srtcontroledl_xcp
SET ins_srtcontroledl_xcp_periode = FAC.safe_to_number(rec.ins_srtcontroledl_xcp_periode),
ins_srtcontroledl_xcp_aantal = v_ins_srtcontroledl_xcp_aantal,
ins_srtcontroledl_xcp_materia = FAC.safe_to_number(rec.ins_srtcontroledl_xcp_materia),
ins_srtcontroledl_xcp_perc = v_ins_srtcontroledl_xcp_perc,
ins_srtcontroledl_xcp_startdat = v_ins_srtcontroledl_xcp_startdat
WHERE ins_srtcontroledl_xcp_key = v_ins_srtcontroledl_xcp_key;
EXCEPTION WHEN NO_DATA_FOUND
THEN
v_errormsg := 'Aanmaken nieuwe taak uitzondering ';
INSERT INTO ins_srtcontroledl_xcp (ins_deel_key,
ins_srtcontrole_key,
ins_srtcontroledl_xcp_periode,
ins_srtcontroledl_xcp_aantal,
ins_srtcontroledl_xcp_materia,
ins_srtcontroledl_xcp_perc,
ins_srtcontroledl_xcp_startdat,
ins_srtcontroledl_xcp_aanteh)
VALUES (v_ins_deel_key,
v_ins_srtcontrole_key,
FAC.safe_to_number(rec.ins_srtcontroledl_xcp_periode),
v_ins_srtcontroledl_xcp_aantal,
FAC.safe_to_number(rec.ins_srtcontroledl_xcp_materia),
v_ins_srtcontroledl_xcp_perc,
v_ins_srtcontroledl_xcp_startdat,
rec.ins_srtcontroledl_xcp_eenh)
RETURNING ins_srtcontroledl_xcp_key INTO v_ins_srtcontroledl_xcp_key;
END;
-- Moeten we nu kijken welke XCP taken er zijn aangemaakt en of deze al afgerond hadden moeten zijn zodat ze niet worden doorgeschoven naar het volgene jaar ?
fac.imp_writelog (p_import_key, 'I', v_aanduiding || 'Taak is aangemaakt: ' || v_aanduiding, '');
COMMIT;
-- TODO moeten we ook taken gaan verwijderen?
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg :=
v_errormsg
|| ' ORACLE (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.imp_writelog (p_import_key,
'E',
v_aanduiding || v_errormsg,
'');
COMMIT;
END;
END LOOP;
END;
/
-- EIND MJOB Taken
CREATE OR REPLACE VIEW tdnl_v_gebouw_xy
(
id,
coordx,
coordy,
waarde,
title,
regio,
consessie,
color
)
AS
SELECT l.alg_locatie_key id,
l.alg_locatie_x coordx,
l.alg_locatie_y coordy,
l.alg_locatie_code waarde,
l.ALG_LOCATIE_OMSCHRIJVING title,
rg.alg_regio_omschrijving regio,
d.alg_district_omschrijving concessie,
COALESCE((SELECT fud.fac_usrdata_omschr
FROM fac_usrtab fut,
fac_usrdata fud
WHERE UPPER(fut.fac_usrtab_naam)=UPPER('ProdLijnKleur')
AND fud.fac_usrtab_key = fut.fac_usrtab_key
AND UPPER(fud.fac_usrdata_code)=UPPER(SUBSTR(rg.alg_regio_upper,1,2))),'#A3CAB8') color
FROM alg_v_aanweziglocatie l,
alg_v_aanwezigdistrict d,
alg_v_aanwezigregio rg
WHERE l.alg_locatie_x IS NOT NULL
AND l.alg_locatie_y IS NOT NULL
AND d.alg_district_key = l.alg_district_key
AND rg.alg_regio_key = d.alg_regio_key;
CREATE OR REPLACE VIEW tdnl_v_gebouw_rap
(
alg_productlijn,
alg_regio,
alg_locatie_code,
alg_locatie,
alg_locatie_x,
alg_locatie_y,
alg_gebouw_code,
alg_gebouw,
alg_gebouw_x,
alg_gebouw_y,
kenmerk,
kenmerkwaarde
)
AS
SELECT r.alg_regio_omschrijving,
d.alg_district_omschrijving,
l.alg_locatie_code,
l.alg_locatie_omschrijving,
l.alg_locatie_x,
l.alg_locatie_y,
g.alg_gebouw_code,
g.alg_gebouw_omschrijving,
g.alg_gebouw_x,
g.alg_gebouw_y,
ak.alg_kenmerk_omschrijving kenmerk,
tdnl.get_flex_value ('ALG',
ak.alg_kenmerk_key,
g.alg_gebouw_key,
fkd.fac_kenmerkdomein_key,
'G')
kenmerkwaarde
FROM alg_regio r,
alg_district d,
alg_locatie l,
alg_gebouw g,
alg_kenmerk ak,
alg_onrgoedkenmerk ao,
fac_kenmerkdomein fkd
WHERE l.alg_locatie_key = g.alg_locatie_key
and d.alg_district_key = l.alg_district_key
and r.alg_regio_key = d.alg_regio_key
AND ao.alg_kenmerk_key = ak.alg_kenmerk_key
AND ao.alg_onrgoed_key = g.alg_gebouw_key
AND fkd.fac_kenmerkdomein_key(+) = ak.fac_kenmerkdomein_key
AND ao.alg_onrgoed_niveau = 'G';
CREATE OR REPLACE VIEW tdnl_v_concessie_locatie_matrix
(
concessie_key,
Concessie,
locatie_key,
locatie,
concessie_directeur_key,
concessie_directeur,
operationeel_manager_key,
operationeel_manager,
locatie_manager_key,
locatie_manager
)
AS
SELECT c.alg_district_key concessie_key,
c .alg_district_omschrijving Concessie,
l.alg_locatie_key locatie_key,
l.alg_locatie_omschrijving locatie,
(SELECT p.prs_perslid_key
FROM alg_onrgoedkenmerk ok, prs_v_perslid_fullnames p
WHERE ok.alg_onrgoed_key = c.alg_district_key
AND ok.alg_kenmerk_key = 1001
AND ok.alg_onrgoed_niveau = 'D'
AND p.prs_perslid_key =
FAC.SAFE_TO_NUMBER (ok.alg_onrgoedkenmerk_waarde))
concessie_directeur_key,
(SELECT p.prs_perslid_naam_full
FROM alg_onrgoedkenmerk ok, prs_v_perslid_fullnames p
WHERE ok.alg_onrgoed_key = c.alg_district_key
AND ok.alg_kenmerk_key = 1001
AND ok.alg_onrgoed_niveau = 'D'
AND p.prs_perslid_key =
FAC.SAFE_TO_NUMBER (ok.alg_onrgoedkenmerk_waarde))
concessie_directeur,
(SELECT p.prs_perslid_key
FROM alg_onrgoedkenmerk ok, prs_v_perslid_fullnames p
WHERE ok.alg_onrgoed_key = c.alg_district_key
AND ok.alg_kenmerk_key = 1002
AND ok.alg_onrgoed_niveau = 'D'
AND p.prs_perslid_key =
FAC.SAFE_TO_NUMBER (ok.alg_onrgoedkenmerk_waarde))
operationeel_manager_key,
(SELECT p.prs_perslid_naam_full
FROM alg_onrgoedkenmerk ok, prs_v_perslid_fullnames p
WHERE ok.alg_onrgoed_key = c.alg_district_key
AND ok.alg_kenmerk_key = 1002
AND ok.alg_onrgoed_niveau = 'D'
AND p.prs_perslid_key =
FAC.SAFE_TO_NUMBER (ok.alg_onrgoedkenmerk_waarde))
operationeel_manager,
(SELECT p.prs_perslid_key
FROM alg_onrgoedkenmerk ok, prs_v_perslid_fullnames p
WHERE ok.alg_onrgoed_key = c.alg_district_key
AND ok.alg_kenmerk_key = 1003
AND ok.alg_onrgoed_niveau = 'L'
AND p.prs_perslid_key =
FAC.SAFE_TO_NUMBER (ok.alg_onrgoedkenmerk_waarde))
locatie_manager_key,
(SELECT p.prs_perslid_naam_full
FROM alg_onrgoedkenmerk ok, prs_v_perslid_fullnames p
WHERE ok.alg_onrgoed_key = c.alg_district_key
AND ok.alg_kenmerk_key = 1003
AND ok.alg_onrgoed_niveau = 'L'
AND p.prs_perslid_key =
FAC.SAFE_TO_NUMBER (ok.alg_onrgoedkenmerk_waarde))
locatie_manager
FROM alg_district c,
alg_locatie l
WHERE l.alg_district_key = c.alg_district_key;
CREATE OR REPLACE VIEW TDN_V_MLD_LAADPALEN
(
locatie_code,
locatie_omschrijving,
mld_status,
aantal
)
AS
SELECT l.alg_locatie_code,
l.alg_locatie_omschrijving,
mstat.mld_statuses_omschrijving,
COUNT (*)
FROM mld_melding m,
mld_stdmelding sm,
mld_statuses mstat,
alg_locatie l
WHERE m.mld_stdmelding_key = sm.mld_stdmelding_key
AND sm.mld_stdmelding_code = 'LAADPAALSTORING'
AND l.alg_locatie_key = m.mld_alg_locatie_key
AND m.mld_melding_status = mstat.mld_statuses_key
AND mstat.mld_statuses_omschrijving IN
('Nieuw', 'Te accepteren', 'Uitgegeven',' In behandeling','Afgemeld')
GROUP BY l.alg_locatie_code, l.alg_locatie_omschrijving,mstat.mld_statuses_omschrijving;
CREATE OR REPLACE VIEW TDNL_V_CONCESSIEDIRECTEUREN
(
PRS_PERSLID_KEY,
PRS_PERSLID_NAAM
)
AS
SELECT pf.prs_perslid_key,
pf.prs_perslid_naam_friendly
FROM prs_perslid p,
prs_v_perslid_fullnames pf,
prs_kenmerk pk,
prs_kenmerklink pkl
WHERE UPPER (pk.prs_kenmerk_omschrijving) = 'IS CONCESSIE DIRECTEUR'
AND pkl.prs_kenmerk_key = pk.prs_kenmerk_key
AND pkl.prs_kenmerklink_waarde = '1'
AND p.prs_perslid_key = pkl.prs_link_key
AND p.prs_perslid_verwijder IS NULL
AND pf.prs_perslid_key = p.prs_perslid_key;
CREATE OR REPLACE VIEW TDNL_V_OPERATMANAGER
(
PRS_PERSLID_KEY,
PRS_PERSLID_NAAM
)
AS
SELECT pf.prs_perslid_key,
pf.prs_perslid_naam_friendly
FROM prs_perslid p,
prs_v_perslid_fullnames pf,
prs_kenmerk pk,
prs_kenmerklink pkl
WHERE UPPER (pk.prs_kenmerk_omschrijving) = 'IS OPERATIONAAL MANAGER'
AND pkl.prs_kenmerk_key = pk.prs_kenmerk_key
AND pkl.prs_kenmerklink_waarde = '1'
AND p.prs_perslid_key = pkl.prs_link_key
AND p.prs_perslid_verwijder IS NULL
AND pf.prs_perslid_key = p.prs_perslid_key;
CREATE OR REPLACE VIEW TDNL_V_LOCATIEMANAGER
(
PRS_PERSLID_KEY,
PRS_PERSLID_NAAM
)
AS
SELECT pf.prs_perslid_key,
pf.prs_perslid_naam_friendly
FROM prs_perslid p,
prs_v_perslid_fullnames pf,
prs_kenmerk pk,
prs_kenmerklink pkl
WHERE UPPER (pk.prs_kenmerk_omschrijving) = 'IS LOCATIE MANAGER'
AND pkl.prs_kenmerk_key = pk.prs_kenmerk_key
AND pkl.prs_kenmerklink_waarde = '1'
AND p.prs_perslid_key = pkl.prs_link_key
AND p.prs_perslid_verwijder IS NULL
AND pf.prs_perslid_key = p.prs_perslid_key;
CREATE OR REPLACE VIEW TDNL_V_FACILITAIRMANAGER
(
PRS_PERSLID_KEY,
PRS_PERSLID_NAAM
)
AS
SELECT pf.prs_perslid_key,
pf.prs_perslid_naam_friendly
FROM prs_perslid p,
prs_v_perslid_fullnames pf,
prs_kenmerk pk,
prs_kenmerklink pkl
WHERE UPPER (pk.prs_kenmerk_omschrijving) = 'IS MANAGER FACILITAIR'
AND pkl.prs_kenmerk_key = pk.prs_kenmerk_key
AND pkl.prs_kenmerklink_waarde = '1'
AND p.prs_perslid_key = pkl.prs_link_key
AND p.prs_perslid_verwijder IS NULL
AND pf.prs_perslid_key = p.prs_perslid_key;
CREATE OR REPLACE VIEW TDNL_V_FACILITAIRAANSP
(
PRS_PERSLID_KEY,
PRS_PERSLID_NAAM
)
AS
SELECT pf.prs_perslid_key,
pf.prs_perslid_naam_friendly
FROM prs_perslid p,
prs_v_perslid_fullnames pf,
prs_kenmerk pk,
prs_kenmerklink pkl
WHERE UPPER (pk.prs_kenmerk_omschrijving) = 'IS FACILITAIR AANSPREEKPUNT'
AND pkl.prs_kenmerk_key = pk.prs_kenmerk_key
AND pkl.prs_kenmerklink_waarde = '1'
AND p.prs_perslid_key = pkl.prs_link_key
AND p.prs_perslid_verwijder IS NULL
AND pf.prs_perslid_key = p.prs_perslid_key;
CREATE OR REPLACE VIEW TDNL_V_VASTGOEDMANAGER
(
PRS_PERSLID_KEY,
PRS_PERSLID_NAAM
)
AS
SELECT pf.prs_perslid_key,
pf.prs_perslid_naam_friendly
FROM prs_perslid p,
prs_v_perslid_fullnames pf,
prs_kenmerk pk,
prs_kenmerklink pkl
WHERE UPPER (pk.prs_kenmerk_omschrijving) = 'IS MANAGER VASTGOED'
AND pkl.prs_kenmerk_key = pk.prs_kenmerk_key
AND pkl.prs_kenmerklink_waarde = '1'
AND p.prs_perslid_key = pkl.prs_link_key
AND p.prs_perslid_verwijder IS NULL
AND pf.prs_perslid_key = p.prs_perslid_key;
CREATE OR REPLACE VIEW TDNL_V_WERKPLAATSMANAGER
(
PRS_PERSLID_KEY,
PRS_PERSLID_NAAM
)
AS
SELECT pf.prs_perslid_key,
pf.prs_perslid_naam_friendly
FROM prs_perslid p,
prs_v_perslid_fullnames pf,
prs_kenmerk pk,
prs_kenmerklink pkl
WHERE UPPER (pk.prs_kenmerk_omschrijving) = 'IS MANAGER WERKPLAATS'
AND pkl.prs_kenmerk_key = pk.prs_kenmerk_key
AND pkl.prs_kenmerklink_waarde = '1'
AND p.prs_perslid_key = pkl.prs_link_key
AND p.prs_perslid_verwijder IS NULL
AND pf.prs_perslid_key = p.prs_perslid_key;
CREATE OR REPLACE VIEW TDNL_V_SChOONMAAKRONDES
(
melding_key,
melding_datum,
melding_status,
melding_melder,
locatie_code,
locatie_omschrijving,
damestoilet,
damestoiet_opm,
herentoilet,
herentoilet_opm,
middelen,
middelen_opm,
vloer,
vloer_opm,
gang,
gang_opm,
bureau,
bureau_opm,
werkkast,
werkkast_opm,
trap,
trap_opm,
glasbewassing,
glasbewassing_opm
)
AS
SELECT m.mld_melding_key,
TRUNC (m.MLD_MELDING_DATUM)
melding_datum,
stat.mld_statuses_omschrijving status,
p.prs_perslid_naam_friendly melder,
l.alg_locatie_code,
l.alg_locatie_omschrijving,
(SELECT fud.fac_usrdata_omschr
FROM mld_kenmerk k, mld_kenmerkmelding mkm, fac_usrdata fud
WHERE mkm.mld_melding_key = m.mld_melding_key
AND k.mld_kenmerk_key = mkm.mld_kenmerk_key
AND k.mld_kenmerk_code = 'DAMESTOILET'
AND fud.fac_usrdata_key = mkm.mld_kenmerkmelding_waarde)
damestoilet,
(SELECT mkm.mld_kenmerkmelding_waarde
FROM mld_kenmerk k, mld_kenmerkmelding mkm
WHERE mkm.mld_melding_key = m.mld_melding_key
AND k.mld_kenmerk_key = mkm.mld_kenmerk_key
AND k.mld_kenmerk_code = 'DAMESTOILET_OPM')
damestoilet_opm,
(SELECT fud.fac_usrdata_omschr
FROM mld_kenmerk k, mld_kenmerkmelding mkm, fac_usrdata fud
WHERE mkm.mld_melding_key = m.mld_melding_key
AND k.mld_kenmerk_key = mkm.mld_kenmerk_key
AND k.mld_kenmerk_code = 'HERENTOILET'
AND fud.fac_usrdata_key = mkm.mld_kenmerkmelding_waarde)
herentoilet,
(SELECT mkm.mld_kenmerkmelding_waarde
FROM mld_kenmerk k, mld_kenmerkmelding mkm
WHERE mkm.mld_melding_key = m.mld_melding_key
AND k.mld_kenmerk_key = mkm.mld_kenmerk_key
AND k.mld_kenmerk_code = 'HERENTOILET_OPM')
herentoilet_opm,
(SELECT fud.fac_usrdata_omschr
FROM mld_kenmerk k, mld_kenmerkmelding mkm, fac_usrdata fud
WHERE mkm.mld_melding_key = m.mld_melding_key
AND k.mld_kenmerk_key = mkm.mld_kenmerk_key
AND k.mld_kenmerk_code = 'MIDDELEN'
AND fud.fac_usrdata_key = mkm.mld_kenmerkmelding_waarde)
middelen,
(SELECT mkm.mld_kenmerkmelding_waarde
FROM mld_kenmerk k, mld_kenmerkmelding mkm
WHERE mkm.mld_melding_key = m.mld_melding_key
AND k.mld_kenmerk_key = mkm.mld_kenmerk_key
AND k.mld_kenmerk_code = 'MIDDELEN_OPM')
middelen_opm,
(SELECT fud.fac_usrdata_omschr
FROM mld_kenmerk k, mld_kenmerkmelding mkm, fac_usrdata fud
WHERE mkm.mld_melding_key = m.mld_melding_key
AND k.mld_kenmerk_key = mkm.mld_kenmerk_key
AND k.mld_kenmerk_code = 'VLOER'
AND fud.fac_usrdata_key = mkm.mld_kenmerkmelding_waarde)
vloer,
(SELECT mkm.mld_kenmerkmelding_waarde
FROM mld_kenmerk k, mld_kenmerkmelding mkm
WHERE mkm.mld_melding_key = m.mld_melding_key
AND k.mld_kenmerk_key = mkm.mld_kenmerk_key
AND k.mld_kenmerk_code = 'VLOER_OPM')
vloer_opm,
(SELECT fud.fac_usrdata_omschr
FROM mld_kenmerk k, mld_kenmerkmelding mkm, fac_usrdata fud
WHERE mkm.mld_melding_key = m.mld_melding_key
AND k.mld_kenmerk_key = mkm.mld_kenmerk_key
AND k.mld_kenmerk_code = 'GANG'
AND fud.fac_usrdata_key = mkm.mld_kenmerkmelding_waarde)
gang,
(SELECT mkm.mld_kenmerkmelding_waarde
FROM mld_kenmerk k, mld_kenmerkmelding mkm
WHERE mkm.mld_melding_key = m.mld_melding_key
AND k.mld_kenmerk_key = mkm.mld_kenmerk_key
AND k.mld_kenmerk_code = 'GANG_OPM')
gang_opm,
(SELECT fud.fac_usrdata_omschr
FROM mld_kenmerk k, mld_kenmerkmelding mkm, fac_usrdata fud
WHERE mkm.mld_melding_key = m.mld_melding_key
AND k.mld_kenmerk_key = mkm.mld_kenmerk_key
AND k.mld_kenmerk_code = 'BUREAU'
AND fud.fac_usrdata_key = mkm.mld_kenmerkmelding_waarde)
bureau,
(SELECT mkm.mld_kenmerkmelding_waarde
FROM mld_kenmerk k, mld_kenmerkmelding mkm
WHERE mkm.mld_melding_key = m.mld_melding_key
AND k.mld_kenmerk_key = mkm.mld_kenmerk_key
AND k.mld_kenmerk_code = 'BUREAU_OPM')
bureau_opm,
(SELECT fud.fac_usrdata_omschr
FROM mld_kenmerk k, mld_kenmerkmelding mkm, fac_usrdata fud
WHERE mkm.mld_melding_key = m.mld_melding_key
AND k.mld_kenmerk_key = mkm.mld_kenmerk_key
AND k.mld_kenmerk_code = 'WERKKAST'
AND fud.fac_usrdata_key = mkm.mld_kenmerkmelding_waarde)
werkkast,
(SELECT mkm.mld_kenmerkmelding_waarde
FROM mld_kenmerk k, mld_kenmerkmelding mkm
WHERE mkm.mld_melding_key = m.mld_melding_key
AND k.mld_kenmerk_key = mkm.mld_kenmerk_key
AND k.mld_kenmerk_code = 'WERKKAST_OPM')
werkkast_opm,
(SELECT fud.fac_usrdata_omschr
FROM mld_kenmerk k, mld_kenmerkmelding mkm, fac_usrdata fud
WHERE mkm.mld_melding_key = m.mld_melding_key
AND k.mld_kenmerk_key = mkm.mld_kenmerk_key
AND k.mld_kenmerk_code = 'TRAP'
AND fud.fac_usrdata_key = mkm.mld_kenmerkmelding_waarde)
trap,
(SELECT mkm.mld_kenmerkmelding_waarde
FROM mld_kenmerk k, mld_kenmerkmelding mkm
WHERE mkm.mld_melding_key = m.mld_melding_key
AND k.mld_kenmerk_key = mkm.mld_kenmerk_key
AND k.mld_kenmerk_code = 'TRAP_OPM')
trap_opm,
(SELECT fud.fac_usrdata_omschr
FROM mld_kenmerk k, mld_kenmerkmelding mkm, fac_usrdata fud
WHERE mkm.mld_melding_key = m.mld_melding_key
AND k.mld_kenmerk_key = mkm.mld_kenmerk_key
AND k.mld_kenmerk_code = 'GLASBEWAS'
AND fud.fac_usrdata_key = mkm.mld_kenmerkmelding_waarde)
glasbewassing,
(SELECT mkm.mld_kenmerkmelding_waarde
FROM mld_kenmerk k, mld_kenmerkmelding mkm
WHERE mkm.mld_melding_key = m.mld_melding_key
AND k.mld_kenmerk_key = mkm.mld_kenmerk_key
AND k.mld_kenmerk_code = 'GLASBEWAS_OPM')
glasbewassing_opm
FROM mld_melding m,
prs_v_perslid_fullnames_all p,
mld_statuses stat,
alg_v_aanweziglocatie l
WHERE m.mld_stdmelding_key = 33
AND stat.mld_statuses_key = m.mld_melding_status
AND p.prs_perslid_key = m.prs_perslid_key
AND l.alg_locatie_key = m.mld_alg_locatie_key;
CREATE OR REPLACE VIEW tdnl_v_coupa_exp_error
( opdr_key,
melding,
melder,
omschrijving,
track_datum,
opdr_datum)
AS
SELECT DISTINCT o.mld_opdr_key,
o.mld_melding_key||'/'||o.mld_opdr_bedrijfopdr_volgnr,
(SELECT p.prs_perslid_naam_friendly
FROM prs_v_perslid_fullnames p
WHERE p.prs_perslid_key=o.prs_perslid_key) aanvrager,
ft.fac_tracking_oms,
ft.fac_tracking_datum,
o.mld_opdr_datumbegin
FROM mld_opdr o, fac_tracking ft, fac_srtnotificatie fs
WHERE ft.fac_tracking_refkey=o.mld_opdr_key
AND fs.fac_srtnotificatie_code='ORDSNX'
AND ft.fac_srtnotificatie_key=fs.fac_srtnotificatie_key
AND (upper(ft.fac_tracking_oms) like 'COUPA_FAIL%' OR upper(ft.fac_tracking_oms) like '%COUPA ERROR%');
-- View die voor die opdrachten die gereed gezet zijn voor export naar coupa
-- met aanvraagnr en InkoopNr.
CREATE OR REPLACE VIEW tdnl_v_coupa_rapport
AS
SELECT o.mld_melding_key opdrachtnr,
o.mld_opdr_bedrijfopdr_volgnr volgnr,
o.mld_opdr_key opdr_key,
(SELECT p.prs_perslid_naam_friendly
FROM prs_v_perslid_fullnames p
WHERE p.prs_perslid_key=o.prs_perslid_key) aanvrager,
(SELECT ko2.mld_kenmerkopdr_waarde
FROM mld_kenmerkopdr ko2
WHERE ko2.mld_opdr_key = o.mld_opdr_key
AND ko2.mld_kenmerk_key=84) aanvraagnr,
(SELECT ko1.mld_kenmerkopdr_waarde
FROM mld_kenmerkopdr ko1
WHERE ko1.mld_opdr_key = o.mld_opdr_key
AND ko1.mld_kenmerk_key=85) inkoopnr,
o.mld_opdr_datumbegin opd_datumbegin,
(SELECT ft.fac_tracking_datum
FROM fac_tracking ft
WHERE ft.fac_srtnotificatie_key=92 -- ORDSNT
AND lower(ft.fac_tracking_oms)='opdracht in bestand klaargezet'
AND ft.fac_tracking_refkey=o.mld_opdr_key) datum_verstuurd
FROM mld_opdr o, mld_kenmerkopdr ko
WHERE o.mld_statusopdr_key=5
AND ko.mld_opdr_key = o.mld_opdr_key
AND ko.mld_kenmerk_key=84
AND ko.mld_kenmerkopdr_waarde IS NOT NULL;
CREATE OR REPLACE VIEW TDNL_V_OVERZICHTTAKEN
AS
SELECT x.*,
CASE
WHEN TRUNC(x.taak_datum)-TRUNC(SYSDATE)>=30 THEN
'Volgende maand'
WHEN TRUNC(x.taak_datum)-TRUNC(SYSDATE)>=14 AND TRUNC(x.taak_datum)-TRUNC(SYSDATE)<30 THEN
'Deze maand'
WHEN TRUNC(x.taak_datum)-TRUNC(SYSDATE)>=7 AND TRUNC(x.taak_datum)-TRUNC(SYSDATE)<14 THEN
'Komende week'
WHEN TRUNC(x.taak_datum)-TRUNC(SYSDATE)>=0 AND TRUNC(x.taak_datum)-TRUNC(SYSDATE)<7 THEN
'Deze week'
ELSE
'Te laat'
END taak_status,
TRUNC(taak_datum)-TRUNC(SYSDATE) dagen_tot
FROM (
SELECT i.ins_deel_key,
i.ins_deel_omschrijving,
id.ins_discipline_omschrijving,
isg.ins_srtgroep_omschrijving,
isd.ins_srtdeel_omschrijving,
l.alg_locatie_code,
l.ALG_LOCATIE_OMSCHRIJVING,
r.alg_regio_omschrijving,
d.alg_district_omschrijving,
isc.ins_srtcontrole_omschrijving,
INS.NEXTCYCLUSDATE(
i.ins_deel_key,
isc.ins_srtcontrole_key,
1,
0
) taak_datum,
(SELECT MAX(idsc.ins_deelsrtcontrole_datum)
FROM ins_deelsrtcontrole idsc
WHERE idsc.ins_deel_key=i.ins_deel_key
AND idsc.ins_srtcontrole_key=isc.ins_srtcontrole_key) laatste_taakdatum,
(SELECT MAX(idsc.ins_deelsrtcontrole_plandatum)
from ins_deelsrtcontrole idsc
WHERE idsc.ins_deel_key=i.ins_deel_key
AND idsc.ins_srtcontrole_key=isc.ins_srtcontrole_key
AND idsc.ins_deelsrtcontrole_status=0 ) plan_taakdatum
FROM ins_deel i,
ins_srtdeel isd,
ins_discipline id,
ins_srtgroep isg,
ins_srtcontrole isc,
alg_v_allonrgoed_gegevens a,
alg_district d,
alg_regio r,
alg_locatie l
WHERE isd.ins_srtdeel_key = i.ins_srtdeel_key
AND isg.ins_srtgroep_key = isd.ins_srtgroep_key
AND id.ins_discipline_key = isg.ins_discipline_key
AND isc.ins_srtinstallatie_key = isd.ins_srtdeel_key
AND i.ins_alg_ruimte_key = a.alg_ruimte_key
AND a.alg_locatie_key = l.alg_locatie_key
AND l.alg_district_key = d.alg_district_key
AND ( TRUNC(l.alg_locatie_vervaldatum) > TRUNC(sysdate)
OR l.alg_locatie_vervaldatum IS NULL )
AND d.alg_regio_key = r.alg_regio_key) x;
--AND i.ins_deel_omschrijving='BR_Blsr0034') x;
CREATE OR REPLACE VIEW TDNL_V_OVERZICHTTAKEN_2
AS
SELECT x.*,
CASE
WHEN TRUNC(x.taak_datum)-TRUNC(SYSDATE)>=30 THEN
1
ELSE
0
END volgende_maand,
CASE
WHEN TRUNC(x.taak_datum)-TRUNC(SYSDATE)>=14 AND TRUNC(x.taak_datum)-TRUNC(SYSDATE)<30 THEN
1
ELSE
0
END Deze_maand,
CASE
WHEN TRUNC(x.taak_datum)-TRUNC(SYSDATE)>=7 AND TRUNC(x.taak_datum)-TRUNC(SYSDATE)<14 THEN
1
ELSE
0
END komende_week,
CASE
WHEN TRUNC(x.taak_datum)-TRUNC(SYSDATE)>=0 AND TRUNC(x.taak_datum)-TRUNC(SYSDATE)<7 THEN
1
ELSE
0
END Deze_week,
CASE
WHEN TRUNC(x.taak_datum)-TRUNC(SYSDATE)<0 THEN
1
ELSE
0
END Te_laat,
TRUNC(taak_datum)-TRUNC(SYSDATE) dagen_tot
FROM (
SELECT i.ins_deel_key,
i.ins_deel_omschrijving,
id.ins_discipline_omschrijving,
isg.ins_srtgroep_omschrijving,
isd.ins_srtdeel_omschrijving,
l.alg_locatie_code,
l.ALG_LOCATIE_OMSCHRIJVING,
l.alg_locatie_key,
r.alg_regio_omschrijving,
d.alg_district_omschrijving,
d.ALG_DISTRICT_KEY,
isc.ins_srtcontrole_omschrijving,
INS.NEXTCYCLUSDATE(
i.ins_deel_key,
isc.ins_srtcontrole_key,
1,
0
) taak_datum,
(SELECT MAX(idsc.ins_deelsrtcontrole_datum)
FROM ins_deelsrtcontrole idsc
WHERE idsc.ins_deel_key=i.ins_deel_key
AND idsc.ins_srtcontrole_key=isc.ins_srtcontrole_key) laatste_taakdatum,
(SELECT MAX(idsc.ins_deelsrtcontrole_plandatum)
from ins_deelsrtcontrole idsc
WHERE idsc.ins_deel_key=i.ins_deel_key
AND idsc.ins_srtcontrole_key=isc.ins_srtcontrole_key
AND idsc.ins_deelsrtcontrole_status=0 ) plan_taakdatum
FROM ins_deel i,
ins_srtdeel isd,
ins_discipline id,
ins_srtgroep isg,
ins_srtcontrole isc,
alg_v_allonrgoed_gegevens a,
alg_district d,
alg_regio r,
alg_locatie l
WHERE isd.ins_srtdeel_key = i.ins_srtdeel_key
AND isg.ins_srtgroep_key = isd.ins_srtgroep_key
AND id.ins_discipline_key = isg.ins_discipline_key
AND isc.ins_srtinstallatie_key = isd.ins_srtdeel_key
AND i.ins_alg_ruimte_key = a.alg_ruimte_key
AND a.alg_locatie_key = l.alg_locatie_key
AND l.alg_district_key = d.alg_district_key
AND ( TRUNC(l.alg_locatie_vervaldatum) > TRUNC(sysdate)
OR l.alg_locatie_vervaldatum IS NULL )
AND d.alg_regio_key = r.alg_regio_key) x;
CREATE OR REPLACE VIEW TDNL_V_MLD_ACCEPTATIE_UREN
AS
SELECT vakgroeptype,
mld_melding_key,
CASE
WHEN ROUND ((accept_datum - gevalideerde_datum) * 24, 2) < 0
THEN
0
ELSE
ROUND ((accept_datum - gevalideerde_datum) * 24, 2)
END
AS accept_uren,
accept_datum,
gevalideerde_datum,
mld_melding_datum,
mld_melding_behandelaar_key
FROM (SELECT m.mld_melding_key,
id.ins_srtdiscipline_omschrijving
vakgroeptype,
md.ins_discipline_omschrijving
vakgroep,
sm.mld_stdmelding_omschrijving
stdmelding,
m.mld_melding_datum,
fac.gettrackingdate ('MLDACP', m.mld_melding_key)
accept_datum,
CASE
WHEN TO_CHAR (m.mld_melding_datum, 'HH24:MI') < '08:00'
THEN
TO_DATE (
TO_CHAR (m.mld_melding_datum, 'YYYY-MM-DD')
|| ' 08:00',
'YYYY-MM-DD HH24:MI')
WHEN TO_CHAR (m.mld_melding_datum, 'HH24:MI') > '17:00'
THEN
TO_DATE (
TO_CHAR (m.mld_melding_datum + 1, 'YYYY-MM-DD')
|| ' 08:00',
'YYYY-MM-DD HH24:MI')
ELSE
m.mld_melding_datum
END
AS gevalideerde_datum,
m.mld_melding_behandelaar_key
FROM mld_melding m,
mld_stdmelding sm,
mld_discipline md,
ins_srtdiscipline id
WHERE sm.mld_stdmelding_key = m.mld_stdmelding_key
AND md.ins_discipline_key = sm.mld_ins_discipline_key
AND id.ins_srtdiscipline_key = md.ins_srtdiscipline_key
AND TO_CHAR (m.mld_melding_datum, 'YYYY') = '2025')
WHERE accept_datum IS NOT NULL;
-- EINDE VIEWS
-- COUPA EXPORT VIEWS/PROCEDURES
-- Bijlage view tbv export naar coupa
CREATE OR REPLACE VIEW tdnl_v_coupa_bijlages
AS
SELECT o.mld_opdr_key,
o.mld_opdr_externsyncdate extern_syncdate,
(SELECT ko.mld_kenmerkopdr_waarde
FROM mld_kenmerkopdr ko
WHERE ko.mld_opdr_key = o.mld_opdr_key
AND ko.mld_kenmerk_key=84 -- A=62 P=204
AND ko.mld_kenmerkopdr_waarde IS NOT NULL) coupa_id,
fb.fac_bijlagen_filename bestand,
fb.fac_bijlagen_disk_directory path,
fb.fac_bijlagen_aanmaak bijlage_aanmaak
FROM mld_opdr o, fac_v_bijlagen fb
WHERE fb.fac_bijlagen_refkey=o.mld_opdr_key
AND o.mld_statusopdr_key IN (4,5)
AND fb.fac_bijlagen_kenmerk_key=83 -- A=64 P=97
AND fb.fac_bijlagen_module='MLD';
-- NOTIFICATIE JOBS
-- Notificatie tbv rappeltermijn conrtracten
CREATE OR REPLACE VIEW TDNL_V_NOTI_CNTRAPPEL
(
code,
sender,
receiver,
text,
key,
par1,
par2,
xkey,
xemail,
xmobile,
fac_srtnotificatie_key,
attachments,
xsender,
prs_bedrijfadres_key
)
AS
SELECT 'CUST01',
'',
c.prs_perslid_key_beh,
'Rappel: Contract '
|| c.cnt_contract_nummer_intern||DECODE(cnt_contract_versie, NULL, '', '.'||cnt_contract_versie)
|| ' ('
|| c.cnt_contract_omschrijving
|| ' '
|| b.prs_bedrijf_naam
|| ')'
|| ' moet uiterlijk per '
|| TO_CHAR (cnt.cnt_getopzegdatum (c.cnt_contract_key), 'DD-MM-YYYY')
|| ' worden verlengd of opgezegd.',
c.cnt_contract_key,
c.cnt_contract_nummer_intern,
cnt.cnt_getopzegdatum (c.cnt_contract_key),
NULL,
TDNL.getemaillist(c.cnt_contract_key) xemail,
NULL xmobile,
NULL fac_srtnotificatie_key,
NULL attachments,
NULL xsender,
NULL prs_bedrijfadres_key
FROM cnt_v_aanwezigcontract c, prs_bedrijf b
WHERE b.prs_bedrijf_key = c.cnt_prs_bedrijf_key
AND cnt_contract_verwijder IS NULL
AND cnt_contract_status = 0 /* actief */
AND (SYSDATE BETWEEN cnt.cnt_getrappeldatum (c.cnt_contract_key) AND cnt.cnt_getopzegdatum (c.cnt_contract_key))
AND cnt.getnieuwsteversiekey(c.cnt_contract_key) = c.cnt_contract_key;
-- Notificatie naar bezoekers op de dag van het bezoek
CREATE OR REPLACE VIEW tdnl_v_noti_bezoeker
(
sender,
receiver,
text,
code,
key,
xkey,
xemail,
xmobile,
par1
)
AS
SELECT NULL sender,
NULL receiver,
'Uw bezoek aan Transdev op '
|| TO_CHAR (bez_afspraak_datum, 'DD-MM-YYYY')
|| ' , '
|| TO_CHAR (bez_afspraak_datum, 'HH24:MI') text,
'CUST03' code,
a.bez_afspraak_key key,
bez_bezoekers_key xkey,
bez_bezoekers_email xemail,
NULL xmobile,
a.bez_afspraak_datum
FROM bez_afspraak a, bez_bezoekers b
WHERE a.bez_afspraak_key = b.bez_afspraak_key
AND TRUNC(a.bez_afspraak_datum) = TRUNC(SYSDATE)
AND b.bez_bezoekers_email IS NOT NULL
AND NOT EXISTS
(SELECT 1
FROM fac_tracking t
WHERE t.fac_srtnotificatie_key =209
AND t.fac_tracking_refkey = a.bez_afspraak_key
AND t.fac_tracking_oms LIKE '%CUST03%');
-- Notificatie op dag van aanmaak van de afspraak
CREATE OR REPLACE VIEW TDNL_V_NOTI_BEZ_AANMAAK
(
sender,
receiver,
text,
code,
key,
xkey,
xemail,
xmobile,
par1
)
AS
SELECT NULL sender,
NULL receiver,
'Uw bezoek aan Transdev op '
|| TO_CHAR (bez_afspraak_datum, 'DD-MM-YYYY')
|| ' , '
|| TO_CHAR (bez_afspraak_datum, 'HH24:MI') text,
'CUST02' code,
a.bez_afspraak_key key,
bez_bezoekers_key xkey,
bez_bezoekers_email xemail,
NULL xmobile,
a.bez_afspraak_datum
FROM bez_afspraak a, bez_bezoekers b, fac_notificatie_job f
WHERE a.bez_afspraak_key = b.bez_afspraak_key
AND f.fac_notificatie_job_view='TDNL_V_NOTI_BEZ_AANMAAK'
AND a.bez_afspraak_aanmaak BETWEEN f.fac_notificatie_job_lastrun AND f.fac_notificatie_job_nextrun
AND b.bez_bezoekers_email IS NOT NULL
AND NOT EXISTS
(SELECT 1
FROM fac_tracking t
WHERE t.fac_srtnotificatie_key = 209
AND t.fac_tracking_refkey = a.bez_afspraak_key
AND t.fac_tracking_oms LIKE '%CUST02%');
-- EIND NOTIFICATIE JOBS
------ 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