Files
Customer/AA/aaxx.sql
2022-01-18 20:53:13 +00:00

25084 lines
1.1 MiB
Raw Blame History

--
-- $Id$
--
-- Script containing customer generic configuration sql statements for HEYDAY
DEFINE thisfile = 'AAXX.SQL'
DEFINE dbuser = 'AAXX'
SET ECHO ON
SET DEFINE ON
COLUMN fcltlogfile NEW_VALUE fcltlogfile NOPRINT;
WHENEVER SQLERROR EXIT;
SELECT adm.scriptspoolfile('&dbuser', '&thisfile') AS fcltlogfile FROM DUAL;
WHENEVER SQLERROR CONTINUE;
SPOOL &fcltlogfile
SET DEFINE OFF
@@aa_prs_pack.sql;
--=============================================================================
-- EXPORTFUNCTIES GENERIEK
-------------------------------------------------------------------------------
CREATE OR REPLACE FUNCTION aaxx_exp_escape (a VARCHAR2) RETURN VARCHAR2
AS
BEGIN
RETURN replace(a, '"', '''');
END aaxx_exp_escape;
/
CREATE OR REPLACE FUNCTION aaxx_get_user
RETURN VARCHAR2
AS
v_user VARCHAR2 (20);
BEGIN
v_user := SUBSTR (USER, 1, 4);
-- DWH views komen binnen onder user AAFM. Dan werkt get user niet meer. In dat geval
-- halen we nu de informatie uit de fac_version tabel
IF v_user = 'AAFM' THEN
SELECT UPPER(fac_version_cust)
INTO v_user
FROM fac_version;
END IF;
IF v_user = 'AAAH' THEN RETURN 'AH'; END IF;
IF v_user = 'AAAR' THEN RETURN 'ARCADIS'; END IF;
IF v_user = 'AADO' THEN RETURN 'DOW'; END IF;
IF v_user = 'AADS' THEN RETURN 'DSM'; END IF;
IF v_user = 'AAES' THEN RETURN 'ESSENT'; END IF;
IF v_user = 'AAGN' THEN RETURN 'GN'; END IF;
IF v_user = 'AAIT' THEN RETURN 'IT'; END IF;
IF v_user = 'AASA' THEN RETURN 'SABIC'; END IF;
IF v_user = 'AAVG' THEN RETURN 'VG'; END IF;
IF v_user = 'CVGZ' THEN RETURN 'VGZ'; END IF;
IF v_user = 'GULU' THEN RETURN 'GUL'; END IF;
IF v_user = 'INLO' THEN RETURN 'INLO'; END IF;
IF v_user = 'NMMS' THEN RETURN 'NMM'; END IF;
IF v_user = 'RABO' THEN RETURN 'RABO'; END IF;
IF v_user = 'SMKA' THEN RETURN 'SMKA'; END IF;
RETURN v_user;
END aaxx_get_user;
/
-- functie om geimporteerde bedragen te converteren naar getallen.
CREATE OR REPLACE FUNCTION aaxx_get_imp_float (f_float VARCHAR2)
RETURN NUMBER
AS
v_komma_pos NUMBER;
v_punt_pos NUMBER;
v_float_text VARCHAR2 (100);
BEGIN
v_punt_pos := INSTR (f_float, '.');
v_komma_pos := INSTR (f_float, ',');
IF v_punt_pos <> 0 AND v_komma_pos <> 0
THEN
IF v_punt_pos > v_komma_pos
THEN
v_float_text := REPLACE (f_float, ',', '');
ELSE
v_float_text := REPLACE (f_float, '.', '');
END IF;
ELSE
v_float_text := f_float;
END IF;
RETURN fac.safe_to_number (REPLACE (v_float_text, ',', '.'));
END;
/
-- view met gegevens over een bestelling en bestelopdracht
CREATE OR REPLACE VIEW aaxx_v_bestelgegevens
AS
SELECT boi.bes_bestelopdr_key,
bes_bestelopdr_id,
sg.ins_discipline_key,
be.mld_adres_key_lev,
be.bes_bestelling_leverdatum,
bo.prs_bedrijf_key
FROM bes_bestelling be,
bes_bestelling_item bi,
bes_bestelopdr bo,
bes_bestelopdr_item boi,
bes_srtdeel sd,
bes_srtgroep sg
WHERE be.bes_bestelling_key = bi.bes_bestelling_key
AND bi.bes_bestelopdr_item_key = boi.bes_bestelopdr_item_key
AND boi.bes_bestelopdr_key = bo.bes_bestelopdr_key
AND bi.bes_srtdeel_key = sd.bes_srtdeel_key
AND sd.bes_srtgroep_key = sg.bes_srtgroep_key;
-- View om de exact code van een gebouw te bepalen.
-- Dit kenmerk heeft voor de verschillende klanten een andere key.
CREATE OR REPLACE VIEW aaxx_v_exact_code_gebouw (
alg_gebouw_key,
exact_code)
AS
SELECT alg_onrgoed_key alg_gebouw_key,
alg_onrgoedkenmerk_waarde exact_code
FROM alg_onrgoedkenmerk
WHERE alg_onrgoed_niveau = 'G'
AND alg_kenmerk_key = DECODE(aaxx_get_user,
'IT', 1021,
'SABIC', 1120,
1020);
-- View om de exact code van een district te bepalen.
-- Dit kenmerk heeft potentieel voor verschillende klanten een andere key. Voor DSM en voor SMKA (zie ticket 57789)
CREATE OR REPLACE VIEW aaxx_v_exact_code_district
(
alg_district_key,
exact_code
)
AS
SELECT alg_onrgoed_key alg_district_key,
alg_onrgoedkenmerk_waarde exact_code
FROM alg_onrgoedkenmerk
WHERE alg_onrgoed_niveau = 'D'
AND alg_kenmerk_key = DECODE (aaxx_get_user, 'DSM', 1100,
'SMKA',1080,
1100);
-- View om de klantcode van een gebouw te bepalen.
-- Vooralsnog specifieke inrichting voor INLO (ticket 57359)
CREATE OR REPLACE VIEW aaxx_v_klantcode_gebouw
(
alg_gebouw_key,
klantcode
)
AS
SELECT g.alg_gebouw_key, fud.fac_usrdata_upper
FROM alg_gebouw g, alg_onrgoedkenmerk k, fac_usrdata fud
WHERE g.alg_gebouw_key = k.alg_onrgoed_key
AND k.alg_onrgoed_niveau = 'G'
AND alg_kenmerk_key = DECODE (aaxx_get_user, 'INLO', 1100, 1100)
AND fac.safe_to_number(k.alg_onrgoedkenmerk_waarde) = fud.fac_usrdata_key;
-- View om de exact code van een gebouw te bepalen op basis van een factuurkey
-- Op dit moment ondersteunen we dit alleen bij opdrachten en contracten
CREATE OR REPLACE VIEW aaxx_v_exact_code_gebouw_fac
(
fin_factuur_key,
exact_code
)
AS
SELECT fin_factuur_key, exact_code
FROM fin_factuur f,
mld_opdr o,
mld_melding m,
alg_v_onroerendgoed og,
aaxx_v_exact_code_gebouw eg
WHERE f.mld_opdr_key = o.mld_opdr_key
AND o.mld_melding_key = m.mld_melding_key
AND m.mld_alg_onroerendgoed_keys = og.alg_onroerendgoed_keys
AND og.alg_gebouw_key = eg.alg_gebouw_key
UNION ALL
SELECT fin_factuur_key, exact_code
FROM fin_factuur f, cnt_contract_plaats cp, aaxx_v_exact_code_gebouw eg
WHERE f.cnt_contract_key = cp.cnt_contract_key
AND cp.cnt_alg_plaats_key = eg.alg_gebouw_key
AND cp.cnt_alg_plaats_code = 'G'
UNION ALL
SELECT DISTINCT fin_factuur_key, exact_code
FROM fin_factuur f,
aaxx_v_bestelgegevens bg,
mld_adres ma,
aaxx_v_exact_code_gebouw eg,
alg_gebouw g
WHERE f.bes_bestelopdr_key = bg.bes_bestelopdr_key
AND bg.mld_adres_key_lev = ma.mld_adres_key(+)
AND ma.mld_adres_gebouw_ruimte = g.alg_gebouw_code(+)
AND g.alg_gebouw_key = eg.alg_gebouw_key(+);
-- View om de exact code van een district te bepalen op basis van een factuurkey
-- Op dit moment alleen nog voor DSM
CREATE OR REPLACE VIEW aaxx_v_exact_code_district_fac
(
fin_factuur_key,
exact_code
)
AS
SELECT fin_factuur_key, exact_code
FROM fin_factuur f,
mld_opdr o,
mld_melding m,
alg_v_allonrgoed_gegevens og,
alg_locatie l,
aaxx_v_exact_code_district aed
WHERE f.mld_opdr_key = o.mld_opdr_key
AND o.mld_melding_key = m.mld_melding_key
AND m.mld_alg_onroerendgoed_keys = og.alg_onroerendgoed_keys
AND og.alg_locatie_key = l.alg_locatie_key
AND l.alg_district_key = aed.alg_district_key
UNION ALL
SELECT fin_factuur_key, exact_code
FROM fin_factuur f,
cnt_contract_plaats cp,
alg_gebouw g,
alg_locatie l,
aaxx_v_exact_code_district aed
WHERE f.cnt_contract_key = cp.cnt_contract_key
AND cp.cnt_alg_plaats_key = g.alg_gebouw_key
AND g.alg_locatie_key = l.alg_locatie_key
AND l.alg_district_key = aed.alg_district_key
AND cp.cnt_alg_plaats_code = 'G'
GROUP BY fin_factuur_key, exact_code
UNION ALL
SELECT fin_factuur_key, exact_code
FROM fin_factuur f,
cnt_contract_plaats cp,
alg_locatie l,
aaxx_v_exact_code_district aed
WHERE f.cnt_contract_key = cp.cnt_contract_key
AND cp.cnt_alg_plaats_key = l.alg_locatie_key
AND l.alg_district_key = aed.alg_district_key
AND cp.cnt_alg_plaats_code = 'L'
GROUP BY fin_factuur_key, exact_code
UNION ALL
SELECT DISTINCT fin_factuur_key, exact_code
FROM fin_factuur f,
aaxx_v_bestelgegevens bg,
mld_adres ma,
aaxx_v_exact_code_district aed,
(SELECT g.alg_gebouw_key, g.alg_gebouw_code, l.alg_district_key
FROM alg_gebouw g, alg_locatie l
WHERE g.alg_locatie_key = l.alg_locatie_key) vg
WHERE f.bes_bestelopdr_key = bg.bes_bestelopdr_key
AND bg.mld_adres_key_lev = ma.mld_adres_key(+)
AND ma.mld_adres_gebouw_ruimte = vg.alg_gebouw_code(+)
AND vg.alg_district_key = aed.alg_district_key(+);
-- View om de klantcode van een gebouw te bepalen op basis van een factuurkey
-- Vooralsnog specifieke inrichting voor INLO (ticket 57359)
CREATE OR REPLACE VIEW aaxx_v_klantcode_gebouw_fac
(
fin_factuur_key,
klantcode
)
AS
SELECT fin_factuur_key, klantcode
FROM fin_factuur f,
mld_opdr o,
mld_melding m,
alg_v_onroerendgoed og,
aaxx_v_klantcode_gebouw kg
WHERE f.mld_opdr_key = o.mld_opdr_key
AND o.mld_melding_key = m.mld_melding_key
AND m.mld_alg_onroerendgoed_keys = og.alg_onroerendgoed_keys
AND og.alg_gebouw_key = kg.alg_gebouw_key
UNION ALL
SELECT fin_factuur_key, klantcode
FROM fin_factuur f, cnt_contract_plaats cp, aaxx_v_klantcode_gebouw kg
WHERE f.cnt_contract_key = cp.cnt_contract_key
AND cp.cnt_alg_plaats_key = kg.alg_gebouw_key
AND cp.cnt_alg_plaats_code = 'G'
UNION ALL
SELECT DISTINCT fin_factuur_key, klantcode
FROM fin_factuur f,
aaxx_v_bestelgegevens bg,
mld_adres ma,
aaxx_v_klantcode_gebouw kg,
alg_gebouw g
WHERE f.bes_bestelopdr_key = bg.bes_bestelopdr_key
AND bg.mld_adres_key_lev = ma.mld_adres_key(+)
AND ma.mld_adres_gebouw_ruimte = g.alg_gebouw_code(+)
AND g.alg_gebouw_key = kg.alg_gebouw_key(+);
-- Functie om bij facturen met een btw tarief dat verlegd is, voor de verkoopfactuur toch een geldige
-- btw code te genereren. De klant moet namelijk wel BTW betalen.
CREATE OR REPLACE FUNCTION aaxx_get_verkoop_btw_code (p_btwtabelwaarde_key IN NUMBER) RETURN VARCHAR2
AS
v_verlegd NUMBER;
v_perc NUMBER(5,3);
v_code VARCHAR2(10);
v_btwtabel_key NUMBER;
BEGIN
SELECT COALESCE(fin_btwtabelwaarde_verlegd,0),
fin_btwtabelwaarde_perc,
fin_btwtabelwaarde_code,
fin_btwtabel_key
INTO v_verlegd,
v_perc,
v_code,
v_btwtabel_key
FROM fin_btwtabelwaarde
WHERE fin_btwtabelwaarde_key = p_btwtabelwaarde_key;
IF v_verlegd = 1 THEN
IF v_perc = 21 THEN v_code := 5; END IF; -- Bij 21 procent staandaard code 5 teruggeven
IF v_perc = 6 THEN v_code := 2; END IF; -- Bij 6 procent staandaard code 2 teruggeven
END IF;
IF v_verlegd = 0 AND v_code = 40 THEN v_code := 5; -- Ticket INLO#66863 (code 40 intercompany voor verkoopinterface standaard op 21%)
END IF;
RETURN v_code;
END aaxx_get_verkoop_btw_code;
/
-- script om uurlijks terugkerende scripts aan te roepen. Kan aangeroepen worden vanuit de klantomgeving
-- indien er voor die klant ook specifieke zaken dagelijks geregeld moeten worden.
CREATE OR REPLACE PROCEDURE aaxx_hourly_task (p_applname IN VARCHAR2, p_applrun IN VARCHAR2)
AS
BEGIN
-- vul bij de opdrachten het kenmerk relatietype in voor opdrachten
-- die vandaag aangemaakt zijn. Dit doen we door naar de eerste datum in
-- de tracking te kijken.
-- het kenmerk mag niet al aanwezig zijn.
INSERT INTO mld_kenmerkopdr (mld_kenmerk_key, mld_opdr_key, mld_kenmerkopdr_waarde)
SELECT k.mld_kenmerk_key, o.mld_opdr_key, b.prs_relatietype_key
FROM mld_opdr o,
mld_kenmerk k,
mld_srtkenmerk sk,
prs_bedrijf b
WHERE k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
AND sk.mld_srtkenmerk_omschrijving = 'Relatietype'
AND o.mld_typeopdr_key = k.mld_typeopdr_key
AND o.mld_uitvoerende_keys = b.prs_bedrijf_key
AND (SELECT TRUNC (MIN (fac_tracking_datum))
FROM fac_tracking t, fac_srtnotificatie sn
WHERE t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
AND sn.fac_srtnotificatie_xmlnode = 'opdracht'
AND fac_tracking_refkey = o.mld_opdr_key) = TRUNC (SYSDATE)
AND NOT EXISTS
(SELECT mld_kenmerkopdr_key
FROM mld_kenmerkopdr ko
WHERE ko.mld_opdr_key = o.mld_opdr_key AND ko.mld_kenmerk_key = k.mld_kenmerk_key);
-- dit zelfde gaan we nu ook bij contracten doen waar het kenmerk nog niet aanwezig is.
INSERT INTO fac_kenmerkdomein (fac_kenmerkdomein_module,
fac_kenmerkdomein_omschrijving,
fac_kenmerkdomein_objectnaam,
fac_kenmerkdomein_kolomnaam,
fac_kenmerkdomein_kolomtxt,
fac_kenmerkdomein_verval)
SELECT 'CNT',
'PRS_RELATIETYPE',
'PRS_RELATIETYPE',
'PRS_RELATIETYPE_KEY',
'PRS_RELATIETYPE_OMSCHRIJVING',
'PRS_RELATIETYPE_VERWIJDER'
FROM DUAL
WHERE NOT EXISTS
(SELECT fac_kenmerkdomein_key
FROM fac_kenmerkdomein
WHERE fac_kenmerkdomein_module = 'CNT'
AND fac_kenmerkdomein_objectnaam = 'PRS_RELATIETYPE');
INSERT INTO cnt_srtkenmerk (cnt_srtkenmerk_omschrijving, cnt_srtkenmerk_kenmerktype, fac_kenmerkdomein_key)
SELECT 'Relatietype', 'R', fac_kenmerkdomein_key
FROM fac_kenmerkdomein
WHERE fac_kenmerkdomein_module = 'CNT'
AND fac_kenmerkdomein_objectnaam = 'PRS_RELATIETYPE'
AND NOT EXISTS (SELECT cnt_srtkenmerk_key
FROM cnt_srtkenmerk
WHERE cnt_srtkenmerk_omschrijving = 'Relatietype');
INSERT INTO cnt_kenmerk (cnt_srtkenmerk_key,
cnt_srtcontract_key,
cnt_kenmerk_niveau,
cnt_kenmerk_toonbaar,
cnt_kenmerk_volgnummer)
SELECT cnt_srtkenmerk_key,
ins_discipline_key,
'S',
1,
100
FROM cnt_srtkenmerk sk, cnt_discipline d
WHERE cnt_srtkenmerk_omschrijving = 'Relatietype'
AND NOT EXISTS
(SELECT cnt_kenmerk_key
FROM cnt_kenmerk k
WHERE k.cnt_srtkenmerk_key = sk.cnt_srtkenmerk_key
AND k.cnt_srtcontract_key = d.ins_discipline_key);
INSERT INTO cnt_kenmerkcontract (cnt_kenmerk_key, cnt_contract_key, cnt_kenmerkcontract_waarde)
SELECT k.cnt_kenmerk_key, c.cnt_contract_key, b.prs_relatietype_key
FROM cnt_contract c,
cnt_kenmerk k,
cnt_srtkenmerk sk,
prs_bedrijf b
WHERE k.cnt_srtkenmerk_key = sk.cnt_srtkenmerk_key
AND sk.cnt_srtkenmerk_omschrijving = 'Relatietype'
AND c.ins_discipline_key = k.cnt_srtcontract_key
AND c.cnt_prs_bedrijf_key = b.prs_bedrijf_key
AND b.prs_relatietype_key IS NOT NULL
AND NOT EXISTS
(SELECT cnt_kenmerkcontract_key
FROM cnt_kenmerkcontract kc
WHERE kc.cnt_contract_key = c.cnt_contract_key
AND kc.cnt_kenmerk_key = k.cnt_kenmerk_key);
-- dit zelfde gaan we nu ook bij bestellingen doen waar het kenmerk nog niet aanwezig is.
INSERT INTO fac_kenmerkdomein (fac_kenmerkdomein_module,
fac_kenmerkdomein_omschrijving,
fac_kenmerkdomein_objectnaam,
fac_kenmerkdomein_kolomnaam,
fac_kenmerkdomein_kolomtxt,
fac_kenmerkdomein_verval)
SELECT 'BES',
'PRS_RELATIETYPE',
'PRS_RELATIETYPE',
'PRS_RELATIETYPE_KEY',
'PRS_RELATIETYPE_OMSCHRIJVING',
'PRS_RELATIETYPE_VERWIJDER'
FROM DUAL
WHERE NOT EXISTS
(SELECT fac_kenmerkdomein_key
FROM fac_kenmerkdomein
WHERE fac_kenmerkdomein_module = 'BES'
AND fac_kenmerkdomein_objectnaam = 'PRS_RELATIETYPE');
INSERT INTO bes_srtkenmerk (bes_srtkenmerk_omschrijving, bes_srtkenmerk_kenmerktype, fac_kenmerkdomein_key)
SELECT 'Relatietype', 'R', fac_kenmerkdomein_key
FROM fac_kenmerkdomein
WHERE fac_kenmerkdomein_module = 'BES'
AND fac_kenmerkdomein_objectnaam = 'PRS_RELATIETYPE'
AND NOT EXISTS (SELECT bes_srtkenmerk_key
FROM bes_srtkenmerk
WHERE bes_srtkenmerk_omschrijving = 'Relatietype');
INSERT INTO bes_kenmerk (bes_srtkenmerk_key,
bes_srtinstallatie_key,
bes_kenmerk_type,
bes_kenmerk_niveau,
bes_kenmerk_toonbaar,
bes_kenmerk_volgnummer)
SELECT bes_srtkenmerk_key,
ins_discipline_key,
'B',
'D',
1,
100
FROM bes_srtkenmerk sk, bes_discipline d
WHERE bes_srtkenmerk_omschrijving = 'Relatietype'
AND NOT EXISTS
(SELECT bes_kenmerk_key
FROM bes_kenmerk k
WHERE k.bes_srtkenmerk_key = sk.bes_srtkenmerk_key
AND k.bes_srtinstallatie_key = d.ins_discipline_key);
INSERT INTO bes_kenmerkbestell (bes_kenmerk_key, bes_bestelling_key, bes_kenmerkbestell_waarde)
SELECT k.bes_kenmerk_key, bi.bes_bestelling_key, bd.prs_relatietype_key
FROM bes_bestelling_item bi,
bes_bestelopdr_item boi,
bes_bestelopdr bo,
bes_kenmerk k,
bes_srtkenmerk sk,
prs_bedrijf bd,
bes_srtdeel sd,
bes_srtgroep sg
WHERE bi.bes_bestelopdr_item_key = boi.bes_bestelopdr_item_key
AND boi.bes_bestelopdr_key = bo.bes_bestelopdr_key
AND bo.prs_bedrijf_key = bd.prs_bedrijf_key
AND k.bes_srtkenmerk_key = sk.bes_srtkenmerk_key
AND sk.bes_srtkenmerk_omschrijving = 'Relatietype'
AND bi.bes_srtdeel_key = sd.bes_srtdeel_key
AND sd.bes_srtgroep_key = sg.bes_srtgroep_key
AND sg.ins_discipline_key = k.bes_srtinstallatie_key
AND bd.prs_relatietype_key IS NOT NULL
AND NOT EXISTS
(SELECT bes_kenmerkbestell_key
FROM bes_kenmerkbestell kb
WHERE kb.bes_bestelling_key = bi.bes_bestelling_key
AND kb.bes_kenmerk_key = k.bes_kenmerk_key)
GROUP BY k.bes_kenmerk_key, bi.bes_bestelling_key, bd.prs_relatietype_key;
END;
/
-- script om dagelijks terugkerende scripts aan te roepen. Indien er geen klantspecifieke versie is.
CREATE OR REPLACE PROCEDURE aaxx_select_hourly_task (p_applname IN VARCHAR2, p_applrun IN VARCHAR2)
AS
BEGIN
aaxx_hourly_task (p_applname, p_applrun);
END;
/
-- script om dagelijks terugkerende scripts aan te roepen. Kan aangeroepen worden vanuit de klantomgeving
-- indien er voor die klant ook specifieke zaken dagelijks geregeld moeten worden.
CREATE OR REPLACE PROCEDURE aaxx_daily_task (p_applname IN VARCHAR2, p_applrun IN VARCHAR2)
AS
BEGIN
-- job om flexkenmerken bij projectorders in te vullen
IF aaxx_get_user <> 'GUL' THEN
aaxx_select_dwh_set_kenmerken (p_applname, p_applrun);
END IF;
-- job om gebruikers die recentelijk niet ingelogd zijn de rechten te ontnemen.
IF aaxx_get_user = 'ARCADIS' -- AAAR#26433 / weer aangezet AAAR#60481
OR aaxx_get_user = 'DOW'
OR aaxx_get_user = 'DSM'
OR aaxx_get_user = 'SABIC'
OR aaxx_get_user = 'GUL'
OR aaxx_get_user = 'ESSENT' -- AAES#65629
THEN
aaxx_delete_non_active_users (p_applname, p_applrun);
END IF;
-- verwijder key users met ORDBO2 rechten
IF -- aaxx_get_user = 'ARCADIS' AAAR#26433
-- OR
aaxx_get_user = 'AH'
OR aaxx_get_user = 'DOW'
OR aaxx_get_user = 'DSM'
OR aaxx_get_user = 'SABIC'
OR aaxx_get_user = 'VG'
OR aaxx_get_user = 'GUL'
OR aaxx_get_user = 'NMM'
OR aaxx_get_user = 'RABO'
THEN
aaxx_delete_non_active_key (p_applname, p_applrun);
END IF;
-- Haal de mensen die we zojuist de login hebben ontnomen ook uit de autorisatiegroepen.
DELETE fac_gebruikersgroep gg
WHERE EXISTS
(SELECT p.prs_perslid_key
FROM prs_perslid p
WHERE prs_perslid_oslogin IS NULL
AND prs_perslid_oslogin2 IS NULL
AND p.prs_perslid_key = gg.prs_perslid_key);
-- job om bij to houden welke gebruikers vandaag ingelogd zijn geweest.
aaxx_export_login (p_applname, p_applrun);
-- job om complimenten af te melden.
aaxx_afmelden_complimenten (p_applname, p_applrun);
-- job om ordercorrecties door te voeren.
aaxx_ordercorrecties (p_applname, p_applrun);
END;
/
-- script om dagelijks terugkerende scripts aan te roepen. Indien er geen klantspecifieke versie is.
CREATE OR REPLACE PROCEDURE aaxx_select_daily_task (p_applname IN VARCHAR2, p_applrun IN VARCHAR2)
AS
BEGIN
aaxx_daily_task (p_applname, p_applrun);
END;
/
CREATE OR REPLACE PROCEDURE aaxx_imp_writelog (
p_import_key IN NUMBER,
p_severity IN VARCHAR2,
p_errormsg IN VARCHAR2,
p_errorhint IN VARCHAR2)
AS
PRAGMA AUTONOMOUS_TRANSACTION;
BEGIN
fac.imp_writelog (p_import_key,
p_severity,
SUBSTR(p_errormsg,1,1000),
SUBSTR(p_errorhint,1,1000));
COMMIT;
END;
/
CREATE OR REPLACE PROCEDURE aaxx_add_xml_row_p (
p_bestand IN VARCHAR2,
p_prefix IN VARCHAR2,
p_regel IN VARCHAR2)
AS
v_index NUMBER;
BEGIN
SELECT COALESCE( MAX(fac_rapport_volgnr), 0) + 1
INTO v_index
FROM fac_rapport
WHERE fac_rapport_node = p_bestand;
INSERT INTO fac_rapport (
fac_rapport_node,
fac_rapport_volgnr,
fac_rapport_regel)
VALUES (p_bestand,
v_index,
p_prefix || p_regel);
END;
/
CREATE OR REPLACE PROCEDURE aaxx_add_xml_element_p (
p_bestand IN VARCHAR2,
p_prefix IN VARCHAR2,
p_tag IN VARCHAR2,
p_value IN VARCHAR2)
AS
BEGIN
aaxx_add_xml_row_p(p_bestand,
p_prefix,
'<' || p_tag || '>'
|| xml.char_to_html(p_value)
|| '</' || p_tag || '>');
END;
/
CREATE OR REPLACE PROCEDURE aaxx_add_xml_row (
p_bestand IN VARCHAR2,
p_regel IN VARCHAR2)
AS
BEGIN
aaxx_add_xml_row_p (p_bestand, NULL, p_regel);
END;
/
CREATE OR REPLACE PROCEDURE aaxx_add_xml_element (
p_bestand IN VARCHAR2,
p_tag IN VARCHAR2,
p_value IN VARCHAR2)
AS
BEGIN
aaxx_add_xml_element_p (p_bestand, NULL, p_tag, p_value);
END;
/
CREATE OR REPLACE FUNCTION aaxx_get_kenmerk (p_module IN VARCHAR2,
p_kenmerk_key IN NUMBER,
p_link_key IN NUMBER)
RETURN VARCHAR2
AS
v_kenmerk_type mld_srtkenmerk.mld_srtkenmerk_kenmerktype%TYPE;
v_kenmerk_waarde mld_kenmerkmelding.mld_kenmerkmelding_waarde%TYPE;
v_kenmerkdomein_key fac_kenmerkdomein.fac_kenmerkdomein_key%TYPE;
v_kenmerk_niveau ins_kenmerk.ins_kenmerk_niveau%TYPE;
BEGIN
CASE p_module
WHEN 'MLD'
THEN
SELECT mld_srtkenmerk_kenmerktype,
sk.fac_kenmerkdomein_key,
km.mld_kenmerkmelding_waarde
INTO v_kenmerk_type,
v_kenmerkdomein_key,
v_kenmerk_waarde
FROM mld_v_aanwezigkenmerkmelding km,
mld_kenmerk k,
mld_srtkenmerk sk
WHERE km.mld_melding_key = p_link_key
AND km.mld_kenmerk_key = p_kenmerk_key
AND km.mld_kenmerk_key = k.mld_kenmerk_key
AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key;
WHEN 'CNT'
THEN
SELECT cnt_srtkenmerk_kenmerktype,
sk.fac_kenmerkdomein_key,
kc.cnt_kenmerkcontract_waarde
INTO v_kenmerk_type,
v_kenmerkdomein_key,
v_kenmerk_waarde
FROM cnt_kenmerkcontract kc,
cnt_kenmerk k,
cnt_srtkenmerk sk
WHERE kc.cnt_contract_key = p_link_key
AND kc.cnt_kenmerk_key = p_kenmerk_key
AND kc.cnt_kenmerk_key = k.cnt_kenmerk_key
AND k.cnt_srtkenmerk_key = sk.cnt_srtkenmerk_key;
WHEN 'ALG'
THEN
SELECT alg_kenmerk_kenmerktype,
k.fac_kenmerkdomein_key,
aogk.alg_onrgoedkenmerk_waarde
INTO v_kenmerk_type,
v_kenmerkdomein_key,
v_kenmerk_waarde
FROM alg_onrgoedkenmerk aogk, alg_kenmerk k
WHERE aogk.alg_onrgoed_key = p_link_key
AND aogk.alg_kenmerk_key = p_kenmerk_key
AND aogk.alg_kenmerk_key = k.alg_kenmerk_key;
WHEN 'INS'
THEN
SELECT k.ins_kenmerk_niveau
INTO v_kenmerk_niveau
FROM ins_kenmerk k
WHERE ins_kenmerk_key = p_kenmerk_key;
IF v_kenmerk_niveau = 'C' THEN
SELECT sk.ins_srtkenmerk_kenmerktype,
sk.fac_kenmerkdomein_key,
ikds.ins_kmdeelsrtcontr_waarde
INTO v_kenmerk_type,
v_kenmerkdomein_key,
v_kenmerk_waarde
FROM ins_kmdeelsrtcontr ikds, ins_kenmerk k, ins_srtkenmerk sk
WHERE ikds.ins_deelsrtcontrole_key = p_link_key
AND ikds.ins_kmdeelsrtcontr_verwijder IS NULL
AND ikds.ins_kenmerk_key = p_kenmerk_key
AND ikds.ins_kenmerk_key = k.ins_kenmerk_key
AND k.ins_srtkenmerk_key = sk.ins_srtkenmerk_key;
ELSE
SELECT sk.ins_srtkenmerk_kenmerktype,
sk.fac_kenmerkdomein_key,
ikd.ins_kenmerkdeel_waarde
INTO v_kenmerk_type,
v_kenmerkdomein_key,
v_kenmerk_waarde
FROM ins_kenmerkdeel ikd, ins_kenmerk k, ins_srtkenmerk sk
WHERE ikd.ins_deel_key = p_link_key
AND ikd.ins_kenmerkdeel_verwijder IS NULL
AND ikd.ins_kenmerk_key = p_kenmerk_key
AND ikd.ins_kenmerk_key = k.ins_kenmerk_key
AND k.ins_srtkenmerk_key = sk.ins_srtkenmerk_key;
END IF;
END CASE;
RETURN aaxx_get_kenmerkwaarde (v_kenmerk_type,
v_kenmerkdomein_key,
v_kenmerk_waarde);
END;
/
CREATE OR REPLACE FUNCTION aaxx_get_kenmerkwaarde (
p_kenmerk_type VARCHAR2,
p_kenmerkdomein_key NUMBER,
p_kenmerk_waarde VARCHAR2)
RETURN VARCHAR2
AS
v_result VARCHAR2(4000);
BEGIN
IF p_kenmerk_type = 'R' OR p_kenmerk_type = 'S' THEN
v_result := fac.getdomeinwaarde (p_kenmerkdomein_key,
p_kenmerk_waarde);
ELSIF p_kenmerk_type = 'D' THEN
v_result := TO_CHAR (fac.safe_to_date (p_kenmerk_waarde, 'dd-mm-yyyy'), 'yyyy-mm-dd');
ELSE
v_result := p_kenmerk_waarde;
END IF;
return v_result;
END aaxx_get_kenmerkwaarde;
/
CREATE OR REPLACE PROCEDURE aaxx_set_kenmerk(p_module IN VARCHAR2,
p_kenmerk_key IN NUMBER,
p_link_key IN NUMBER,
p_kenmerk_waarde IN VARCHAR2,
p_history IN NUMBER)
AS
v_count NUMBER;
v_niveau VARCHAR2 (1);
BEGIN
CASE p_module
WHEN 'PRS'
THEN
-- niveau van prs_kenmerk ophalen, omdat deze ook in prs_kenmerklink wordt
-- opgeslagen (da's dus redundant..?)
SELECT prs_kenmerk_niveau
INTO v_niveau
FROM prs_kenmerk
WHERE prs_kenmerk_key = p_kenmerk_key;
SELECT COUNT ( * )
INTO v_count
FROM prs_kenmerklink
WHERE prs_link_key = p_link_key
AND prs_kenmerk_key = p_kenmerk_key
AND prs_kenmerklink_verwijder IS NULL;
IF v_count = 1
THEN
IF p_kenmerk_waarde IS NULL
THEN
DELETE prs_kenmerklink
WHERE prs_link_key = p_link_key
AND prs_kenmerk_key = p_kenmerk_key
AND prs_kenmerklink_verwijder IS NULL;
ELSE
UPDATE prs_kenmerklink
SET prs_kenmerklink_waarde = p_kenmerk_waarde
WHERE prs_link_key = p_link_key
AND prs_kenmerk_key = p_kenmerk_key
AND prs_kenmerklink_verwijder IS NULL;
END IF;
ELSE
IF p_kenmerk_key IS NOT NULL AND p_kenmerk_waarde IS NOT NULL
THEN
INSERT INTO prs_kenmerklink (prs_kenmerk_key,
prs_link_key,
prs_kenmerklink_niveau,
prs_kenmerklink_waarde)
VALUES (p_kenmerk_key,
p_link_key,
v_niveau,
p_kenmerk_waarde);
END IF;
END IF;
WHEN 'ALG'
THEN
-- niveau van prs_kenmerk ophalen, omdat deze ook in prs_kenmerklink wordt
-- opgeslagen (da's dus redundant..?)
SELECT alg_kenmerk_niveau
INTO v_niveau
FROM alg_kenmerk
WHERE alg_kenmerk_key = p_kenmerk_key;
SELECT COUNT ( * )
INTO v_count
FROM alg_onrgoedkenmerk
WHERE alg_onrgoed_key = p_link_key
AND alg_kenmerk_key = p_kenmerk_key
AND alg_onrgoedkenmerk_verwijder IS NULL;
IF v_count = 1
THEN
IF p_kenmerk_waarde IS NULL
THEN
DELETE alg_onrgoedkenmerk
WHERE alg_onrgoed_key = p_link_key
AND alg_kenmerk_key = p_kenmerk_key
AND alg_onrgoedkenmerk_verwijder IS NULL;
ELSE
UPDATE alg_onrgoedkenmerk
SET alg_onrgoedkenmerk_waarde = p_kenmerk_waarde
WHERE alg_onrgoed_key = p_link_key
AND alg_kenmerk_key = p_kenmerk_key
AND alg_onrgoedkenmerk_verwijder IS NULL;
END IF;
ELSE
IF p_kenmerk_key IS NOT NULL AND p_kenmerk_waarde IS NOT NULL
THEN
INSERT INTO alg_onrgoedkenmerk (alg_kenmerk_key,
alg_onrgoed_key,
alg_onrgoed_niveau,
alg_onrgoedkenmerk_waarde)
VALUES (p_kenmerk_key,
p_link_key,
v_niveau,
p_kenmerk_waarde);
END IF;
END IF;
WHEN 'MLD'
THEN
-- melding- of opdrachtkenmerk?
SELECT mld_kenmerk_niveau
INTO v_niveau
FROM mld_kenmerk
WHERE mld_kenmerk_key = p_kenmerk_key;
CASE v_niveau
WHEN 'O'
THEN
SELECT COUNT ( * )
INTO v_count
FROM mld_kenmerkopdr
WHERE mld_opdr_key = p_link_key
AND mld_kenmerk_key = p_kenmerk_key
AND mld_kenmerkopdr_verwijder IS NULL;
IF v_count = 1
THEN
IF p_kenmerk_waarde IS NULL
THEN
DELETE mld_kenmerkopdr
WHERE mld_opdr_key = p_link_key
AND mld_kenmerk_key = p_kenmerk_key
AND mld_kenmerkopdr_verwijder IS NULL;
ELSE
UPDATE mld_kenmerkopdr
SET mld_kenmerkopdr_waarde = p_kenmerk_waarde
WHERE mld_opdr_key = p_link_key
AND mld_kenmerk_key = p_kenmerk_key
AND mld_kenmerkopdr_verwijder IS NULL;
END IF;
ELSE
IF p_kenmerk_key IS NOT NULL AND p_kenmerk_waarde IS NOT NULL
THEN
INSERT INTO mld_kenmerkopdr (mld_kenmerk_key,
mld_opdr_key,
mld_kenmerkopdr_waarde)
VALUES (p_kenmerk_key,
p_link_key,
p_kenmerk_waarde);
END IF;
END IF;
WHEN 'S'
THEN
SELECT COUNT ( * )
INTO v_count
FROM mld_kenmerkmelding
WHERE mld_melding_key = p_link_key
AND mld_kenmerk_key = p_kenmerk_key
AND mld_kenmerkmelding_verwijder IS NULL;
IF v_count = 1
THEN
IF p_kenmerk_waarde IS NULL
THEN
DELETE mld_kenmerkmelding
WHERE mld_melding_key = p_link_key
AND mld_kenmerk_key = p_kenmerk_key
AND mld_kenmerkmelding_verwijder IS NULL;
ELSE
UPDATE mld_kenmerkmelding
SET mld_kenmerkmelding_waarde = p_kenmerk_waarde
WHERE mld_melding_key = p_link_key
AND mld_kenmerk_key = p_kenmerk_key
AND mld_kenmerkmelding_verwijder IS NULL;
END IF;
ELSE
IF p_kenmerk_key IS NOT NULL AND p_kenmerk_waarde IS NOT NULL
THEN
INSERT INTO mld_kenmerkmelding (mld_kenmerk_key,
mld_melding_key,
mld_kenmerkmelding_waarde)
VALUES (p_kenmerk_key,
p_link_key,
p_kenmerk_waarde);
END IF;
END IF;
END CASE;
WHEN 'RES'
THEN
-- melding- of opdrachtkenmerk?
SELECT res_kenmerk_niveau
INTO v_niveau
FROM res_kenmerk
WHERE res_kenmerk_key = p_kenmerk_key;
CASE v_niveau
WHEN 'A'
THEN
SELECT COUNT ( * )
INTO v_count
FROM res_kenmerkwaarde
WHERE res_rsv_ruimte_key = p_link_key
AND res_kenmerk_key = p_kenmerk_key
AND res_kenmerkwaarde_verwijder IS NULL;
IF v_count = 1
THEN
IF p_kenmerk_waarde IS NULL
THEN
DELETE res_kenmerkwaarde
WHERE res_rsv_ruimte_key = p_link_key
AND res_kenmerk_key = p_kenmerk_key
AND res_kenmerkwaarde_verwijder IS NULL;
ELSE
UPDATE res_kenmerkwaarde
SET res_kenmerkreservering_waarde = p_kenmerk_waarde
WHERE res_rsv_ruimte_key = p_link_key
AND res_kenmerk_key = p_kenmerk_key
AND res_kenmerkwaarde_verwijder IS NULL;
END IF;
ELSE
IF p_kenmerk_key IS NOT NULL AND p_kenmerk_waarde IS NOT NULL
THEN
INSERT INTO res_kenmerkwaarde (res_kenmerk_key,
res_rsv_ruimte_key,
res_kenmerkreservering_waarde)
VALUES (p_kenmerk_key,
p_link_key,
p_kenmerk_waarde);
END IF;
END IF;
-- Voorlopig alleen op ruimte niveau.
END CASE;
WHEN 'FIN'
THEN
-- niveau van prs_kenmerk ophalen, omdat deze ook in prs_kenmerklink wordt
-- opgeslagen (da's dus redundant..?)
SELECT fin_kenmerk_type
INTO v_niveau
FROM fin_kenmerk
WHERE fin_kenmerk_key = p_kenmerk_key;
IF v_niveau = 'F'
THEN
SELECT COUNT ( * )
INTO v_count
FROM fin_kenmerkfactuur
WHERE fin_factuur_key = p_link_key
AND fin_kenmerk_key = p_kenmerk_key
AND fin_kenmerkfactuur_verwijder IS NULL;
IF v_count = 1
THEN
IF p_kenmerk_waarde IS NULL
THEN
DELETE fin_kenmerkfactuur
WHERE fin_factuur_key = p_link_key
AND fin_kenmerk_key = p_kenmerk_key
AND fin_kenmerkfactuur_verwijder IS NULL;
ELSE
UPDATE fin_kenmerkfactuur
SET fin_kenmerkfactuur_waarde = p_kenmerk_waarde
WHERE fin_factuur_key = p_link_key
AND fin_kenmerk_key = p_kenmerk_key
AND fin_kenmerkfactuur_verwijder IS NULL;
END IF;
ELSE
IF p_kenmerk_key IS NOT NULL AND p_kenmerk_waarde IS NOT NULL
THEN
INSERT INTO fin_kenmerkfactuur (fin_kenmerk_key,
fin_factuur_key,
fin_kenmerkfactuur_waarde)
VALUES (p_kenmerk_key,
p_link_key,
p_kenmerk_waarde);
END IF;
END IF;
ELSE
-- Kenmerk bij factuurregel
SELECT COUNT ( * )
INTO v_count
FROM fin_kenmerkfactregel
WHERE fin_factuurregel_key = p_link_key
AND fin_kenmerk_key = p_kenmerk_key
AND fin_kenmerkfactregel_verwijder IS NULL;
IF v_count = 1
THEN
IF p_kenmerk_waarde IS NULL
THEN
DELETE fin_kenmerkfactregel
WHERE fin_factuurregel_key = p_link_key
AND fin_kenmerk_key = p_kenmerk_key
AND fin_kenmerkfactregel_verwijder IS NULL;
ELSE
UPDATE fin_kenmerkfactregel
SET fin_kenmerkfactregel_waarde = p_kenmerk_waarde
WHERE fin_factuurregel_key = p_link_key
AND fin_kenmerk_key = p_kenmerk_key
AND fin_kenmerkfactregel_verwijder IS NULL;
END IF;
ELSE
IF p_kenmerk_key IS NOT NULL AND p_kenmerk_waarde IS NOT NULL
THEN
INSERT INTO fin_kenmerkfactregel (fin_kenmerk_key,
fin_factuurregel_key,
fin_kenmerkfactregel_waarde)
VALUES (p_kenmerk_key,
p_link_key,
p_kenmerk_waarde);
END IF;
END IF;
END IF;
END CASE;
END;
/
CREATE OR REPLACE FUNCTION aaxx_get_NEN2767_kenmerkwaarde (p_melding_key IN NUMBER, p_srtkenmerk_code IN VARCHAR2)
RETURN VARCHAR2
AS
v_kenmerkwaarde MLD_KENMERKMELDING.MLD_KENMERKMELDING_WAARDE%TYPE;
BEGIN
SELECT mld_kenmerkmelding_waarde
INTO v_kenmerkwaarde
FROM mld_kenmerkmelding km, mld_kenmerk k, mld_srtkenmerk sk
WHERE km.mld_kenmerk_key = k.mld_kenmerk_key
AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
AND sk.mld_srtkenmerk_code = p_srtkenmerk_code
AND km.mld_melding_key = p_melding_key;
RETURN v_kenmerkwaarde;
EXCEPTION WHEN NO_DATA_FOUND
THEN
RETURN NULL;
END;
/
CREATE OR REPLACE FUNCTION aaxx_get_NEN2767_instelling (p_instelling IN VARCHAR2)
RETURN NUMBER
AS
v_usrdata_prijs NUMBER;
BEGIN
SELECT ud.fac_usrdata_prijs
INTO v_usrdata_prijs
FROM fac_usrdata ud, fac_usrtab ut
WHERE ud.fac_usrtab_key = ut.fac_usrtab_key
AND ut.fac_usrtab_naam = '$PlatoNEN2727'
AND ud.fac_usrdata_code = p_instelling
AND ud.fac_usrdata_verwijder IS NULL;
RETURN v_usrdata_prijs;
END;
/
CREATE OR REPLACE FUNCTION aaxx_get_cnt_cont_plaats_index (p_contract_plaats_key number
)
RETURN NUMBER
AS
CURSOR c (c_cnt_contract_key number)
IS
SELECT cnt_contract_plaats_key
FROM cnt_contract_plaats
WHERE cnt_contract_key = c_cnt_contract_key
ORDER BY cnt_contract_plaats_key;
v_contract_key NUMBER (10);
v_index NUMBER (10);
BEGIN
v_index := 1;
SELECT cnt_contract_key
INTO v_contract_key
FROM cnt_contract_plaats
WHERE cnt_contract_plaats_key = p_contract_plaats_key;
FOR rec IN c(v_contract_key)
LOOP
IF rec.cnt_contract_plaats_key = p_contract_plaats_key
THEN
RETURN (v_index);
END IF;
v_index := v_index + 1;
END LOOP;
END;
/
CREATE OR REPLACE FUNCTION aaxx_get_dep_code (p_prs_kostenplaats_nr VARCHAR2) RETURN VARCHAR2
AS
v_result VARCHAR2(100);
BEGIN
v_result := 'Onbekend - ' || p_prs_kostenplaats_nr;
BEGIN
SELECT prs_afdeling_upper
INTO v_result
FROM prs_v_aanwezigafdeling a, prs_kostenplaats k
WHERE niveau = 1
AND a.prs_kostenplaats_key = k.prs_kostenplaats_key
AND k.prs_kostenplaats_nr = p_prs_kostenplaats_nr;
RETURN v_result;
EXCEPTION WHEN NO_DATA_FOUND
THEN
BEGIN
SELECT prs_afdeling_upper
INTO v_result
FROM prs_v_aanwezigafdeling a, prs_kostenplaats k
WHERE niveau = 2
AND a.prs_kostenplaats_key = k.prs_kostenplaats_key
AND k.prs_kostenplaats_nr = p_prs_kostenplaats_nr;
RETURN v_result;
EXCEPTION WHEN OTHERS
THEN
RETURN v_result;
END;
END;
END aaxx_get_dep_code;
/
-- zoek naar de afdelingscode van het hoogste niveau afdeling
CREATE OR REPLACE FUNCTION aaxx_get_top_dep_code (p_prs_kostenplaats_nr VARCHAR2) RETURN VARCHAR2
AS
CURSOR c IS
SELECT ta.prs_afdeling_naam
FROM prs_kostenplaats kp,
prs_afdeling a,
prs_v_afdeling_boom ab,
prs_afdeling ta
WHERE kp.prs_kostenplaats_key = a.prs_kostenplaats_key
AND a.prs_afdeling_key = ab.prs_afdeling_key
AND ab.prs_afdeling_key1 = ta.prs_afdeling_key
AND kp.prs_kostenplaats_nr = p_prs_kostenplaats_nr
ORDER BY COALESCE(a.prs_afdeling_verwijder, sysdate) DESC;
v_result VARCHAR2(100);
BEGIN
v_result := 'Onbekend - ' || p_prs_kostenplaats_nr;
BEGIN
FOR rec IN C
LOOP
BEGIN
RETURN rec.prs_afdeling_naam;
END;
END LOOP;
RETURN v_result;
EXCEPTION WHEN OTHERS THEN
RETURN v_result;
END;
END aaxx_get_top_dep_code;
/
-- zoek naar de bedrijf_key van het hoogste niveau afdeling
CREATE OR REPLACE FUNCTION aaxx_get_top_bedrijf_key (p_prs_kostenplaats_nr VARCHAR2) RETURN NUMBER
AS
CURSOR c IS
SELECT ta.prs_afdeling_naam, ta.prs_bedrijf_key
FROM prs_kostenplaats kp,
prs_afdeling a,
prs_v_afdeling_boom ab,
prs_afdeling ta
WHERE kp.prs_kostenplaats_key = a.prs_kostenplaats_key
AND a.prs_afdeling_key = ab.prs_afdeling_key
AND ab.prs_afdeling_key1 = ta.prs_afdeling_key
AND kp.prs_kostenplaats_nr = p_prs_kostenplaats_nr
ORDER BY COALESCE(a.prs_afdeling_verwijder, sysdate) DESC;
v_result NUMBER;
BEGIN
v_result := NULL;
BEGIN
FOR rec IN C
LOOP
BEGIN
RETURN rec.prs_bedrijf_key;
END;
END LOOP;
RETURN v_result;
EXCEPTION WHEN OTHERS THEN
RETURN v_result;
END;
END aaxx_get_top_bedrijf_key;
/
-- zoek naar de kostenplaats_key van het hoogste niveau afdeling
CREATE OR REPLACE FUNCTION aaxx_get_top_kpn_key (p_prs_kostenplaats_key NUMBER) RETURN VARCHAR2
AS
CURSOR c IS
SELECT ta.prs_kostenplaats_key
FROM prs_afdeling a,
prs_v_afdeling_boom ab,
prs_afdeling ta
WHERE p_prs_kostenplaats_key = a.prs_kostenplaats_key
AND a.prs_afdeling_key = ab.prs_afdeling_key
AND ab.prs_afdeling_key1 = ta.prs_afdeling_key
ORDER BY COALESCE(a.prs_afdeling_verwijder, sysdate) DESC;
v_result NUMBER;
BEGIN
v_result := NULL;
BEGIN
FOR rec IN C
LOOP
BEGIN
RETURN rec.prs_kostenplaats_key;
END;
END LOOP;
RETURN v_result;
EXCEPTION WHEN OTHERS THEN
RETURN v_result;
END;
END aaxx_get_top_kpn_key;
/
-- Zoek bovenliggende afdelingsniveau 1 en de daarbij vastgelegde kostenplaats bij kenmerkwaarde-veld 'Kostenplaats'
-- Nieuwe structuur voor interface voor bepaling DEBITEUR voor SMKA (zie ticket 57797)
CREATE OR REPLACE FUNCTION aaxx_get_top_afdeling_kpkenm (p_prs_kostenplaats_key VARCHAR2) RETURN VARCHAR2
AS
CURSOR c IS
SELECT kp.prs_kostenplaats_nr
FROM prs_kenmerklink km,
prs_kostenplaats kp,
(SELECT kp.prs_kostenplaats_key,
a.prs_afdeling_key,
ab.prs_afdeling_key1
FROM prs_afdeling a, prs_v_afdeling_boom ab, prs_kostenplaats kp
WHERE a.prs_afdeling_key = ab.prs_afdeling_key
AND a.prs_kostenplaats_key = p_prs_kostenplaats_key
AND prs_afdeling_verwijder IS NULL) v
WHERE km.prs_link_key = v.prs_afdeling_key1
AND km.prs_kenmerklink_niveau = 'A'
AND km.prs_kenmerklink_waarde = kp.prs_kostenplaats_key
AND km.prs_kenmerk_key = 1000 ;
v_result VARCHAR2(100);
BEGIN
v_result := '';
BEGIN
FOR rec IN C
LOOP
BEGIN
RETURN rec.prs_kostenplaats_nr;
END;
END LOOP;
RETURN v_result;
EXCEPTION WHEN OTHERS THEN
RETURN v_result;
END;
END aaxx_get_top_afdeling_kpkenm;
/
-- zoek naar de afdelingscode van het <20><>n na hoogste niveau afdeling
CREATE OR REPLACE FUNCTION aaxx_get_lev2_dep_code (p_prs_kostenplaats_nr VARCHAR2) RETURN VARCHAR2
AS
v_result VARCHAR2(100);
BEGIN
v_result := 'Onbekend - ' || p_prs_kostenplaats_nr;
BEGIN
SELECT ta.prs_afdeling_naam
INTO v_result
FROM prs_kostenplaats kp,
prs_afdeling a,
prs_v_afdeling_boom ab,
prs_afdeling ta
WHERE kp.prs_kostenplaats_key = a.prs_kostenplaats_key
AND a.prs_afdeling_key = ab.prs_afdeling_key
AND ab.prs_afdeling_key2 = ta.prs_afdeling_key
AND kp.prs_kostenplaats_nr = p_prs_kostenplaats_nr;
RETURN v_result;
EXCEPTION WHEN OTHERS THEN
RETURN v_result;
END;
END aaxx_get_lev2_dep_code;
/
CREATE OR REPLACE FUNCTION aaxx_bestelling_items (bes_key IN NUMBER)
RETURN VARCHAR2
IS
lret VARCHAR2 (512);
lfirst NUMBER;
llast NUMBER;
CURSOR items
IS
SELECT TO_CHAR (bi.bes_bestelling_item_aantal)
|| 'x '
|| s.bes_srtdeel_omschrijving /* lcl.x()?*/
|| ' ('
|| s.bes_srtdeel_eenheid
|| ') ' besitemdsc
FROM bes_bestelling_item bi, bes_srtdeel s
WHERE bi.bes_srtdeel_key = s.bes_srtdeel_key
AND bi.bes_bestelling_key = bes_key;
BEGIN
lret := NULL;
lfirst := 0;
llast := 0;
FOR besitem_rec IN items
LOOP
IF lfirst = 0
THEN
BEGIN
lret := besitem_rec.besitemdsc;
lfirst := 1;
END;
ELSE
IF llast = 0
THEN
IF LENGTH (lret) + LENGTH (besitem_rec.besitemdsc) < (512 - 5)
THEN
lret := lret || CHR (10) || besitem_rec.besitemdsc;
ELSE
lret := lret || CHR (10) || '...';
llast := 1;
END IF;
END IF;
END IF;
END LOOP;
RETURN lret;
END;
/
CREATE OR REPLACE PROCEDURE aaxx_delete_non_active_users (p_applname IN VARCHAR2, p_applrun IN VARCHAR2)
AS
BEGIN
UPDATE prs_perslid p
SET prs_perslid_oslogin = NULL,
prs_perslid_oslogin2 = NULL
WHERE prs_perslid_verwijder IS NULL
AND (prs_perslid_oslogin IS NOT NULL OR prs_perslid_oslogin2 IS NOT NULL)
AND ( SYSDATE - prs_perslid_aanmaak > 90
AND ( prs_perslid_login IS NULL
OR SYSDATE - prs_perslid_login > 90
)
)
AND NOT EXISTS
(SELECT fac_groep_omschrijving
FROM fac_gebruikersgroep gg, fac_groep g
WHERE p.prs_perslid_key = gg.prs_perslid_key
AND gg.fac_groep_key = g.fac_groep_key
AND UPPER(g.fac_groep_omschrijving) LIKE '%EXTENDED LOGIN%'
AND SYSDATE - prs_perslid_login < 276)
AND NOT EXISTS
( SELECT fac_tracking_refkey
FROM fac_tracking t, fac_srtnotificatie sn
WHERE fac_tracking_refkey = p.prs_perslid_key
AND t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
AND sn.fac_srtnotificatie_code = 'PRSUPD'
AND SYSDATE - t.fac_tracking_datum < 90)
AND NOT EXISTS
( SELECT prs_afdeling_key
FROM prs_afdeling a
WHERE a.prs_afdeling_key = p.prs_afdeling_key
AND (a.prs_afdeling_omschrijving = 'AAFM' OR a.prs_afdeling_naam = 'HEYDAY'))
AND SUBSTR(COALESCE(prs_perslid_oslogin, 'Q'), 1, 1) <> '_'
AND NOT EXISTS
( SELECT prs_srtperslid_key
FROM prs_srtperslid ps
WHERE ps.prs_srtperslid_key = p.prs_srtperslid_key
AND prs_srtperslid_verwijder IS NULL
AND UPPER (ps.prs_srtperslid_omschrijving) = 'LEV AFMELDSCHERM');
END;
/
CREATE OR REPLACE PROCEDURE aaxx_delete_non_active_key (p_applname IN VARCHAR2, p_applrun IN VARCHAR2)
AS
BEGIN
UPDATE prs_perslid p
SET prs_perslid_oslogin = NULL,
prs_perslid_oslogin2 = NULL
WHERE prs_perslid_verwijder IS NULL
AND (prs_perslid_oslogin IS NOT NULL OR prs_perslid_oslogin2 IS NOT NULL)
AND ( SYSDATE - prs_perslid_aanmaak > 30
AND ( prs_perslid_login IS NULL
OR SYSDATE - prs_perslid_login > 30
)
)
AND EXISTS
( SELECT gg.fac_groep_key
FROM fac_gebruikersgroep gg, fac_groeprechten gr, fac_functie f
WHERE f.fac_functie_key = gr.fac_functie_key
AND f.fac_functie_code = 'WEB_EXTORD'
AND gr.fac_groep_key = gg.fac_groep_key
AND gg.prs_perslid_key = p.prs_perslid_key)
AND NOT EXISTS
( SELECT fac_tracking_refkey
FROM fac_tracking t, fac_srtnotificatie sn
WHERE fac_tracking_refkey = p.prs_perslid_key
AND t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
AND sn.fac_srtnotificatie_code = 'PRSUPD'
AND SYSDATE - t.fac_tracking_datum < 30)
AND NOT EXISTS
( SELECT prs_afdeling_key
FROM prs_afdeling a
WHERE a.prs_afdeling_key = p.prs_afdeling_key
AND (a.prs_afdeling_omschrijving = 'AAFM' OR a.prs_afdeling_naam = 'HEYDAY'))
AND SUBSTR(COALESCE(prs_perslid_oslogin, 'Q'), 1, 1) <> '_'
AND NOT EXISTS
( SELECT prs_srtperslid_key
FROM prs_srtperslid ps
WHERE ps.prs_srtperslid_key = p.prs_srtperslid_key
AND prs_srtperslid_verwijder IS NULL
AND UPPER (ps.prs_srtperslid_omschrijving) = 'LEV AFMELDSCHERM');
END;
/
CREATE OR REPLACE VIEW aaxx_v_noti_non_active_users
(
sender,
receiver,
text,
code,
fac_srtnotificatie_key,
key,
xkey,
xemail,
xmobile
)
AS
SELECT NULL sender,
prs_perslid_key receiver,
'Uw account voor FACILITOR is bijna verlopen. ' text,
'CUST05' code,
NULL fac_srtnotificatie_key,
p.prs_perslid_key key,
NULL xkey,
NULL xemail,
NULL xmobile
FROM prs_perslid p
WHERE p.prs_perslid_email IS NOT NULL
AND p.prs_perslid_verwijder IS NULL
AND TRUNC (p.prs_perslid_login) = TRUNC (SYSDATE - 90 + 7)
AND NOT EXISTS
(SELECT prs_afdeling_key
FROM prs_afdeling a
WHERE a.prs_afdeling_key = p.prs_afdeling_key
AND (a.prs_afdeling_omschrijving = 'AAFM' OR a.prs_afdeling_naam = 'HEYDAY'))
AND SUBSTR (prs_perslid_oslogin, 1, 1) <> '_'
AND NOT EXISTS
( SELECT prs_srtperslid_key
FROM prs_srtperslid ps
WHERE ps.prs_srtperslid_key = p.prs_srtperslid_key
AND prs_srtperslid_verwijder IS NULL
AND UPPER (ps.prs_srtperslid_omschrijving) = 'LEV AFMELDSCHERM');
CREATE OR REPLACE PROCEDURE aaxx_export_login (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2
)
AS
BEGIN
INSERT INTO aaxx_perslid_login
(prs_perslid_key, login_datum)
(SELECT prs_perslid_key, prs_perslid_login
FROM prs_perslid
WHERE TRUNC (prs_perslid_login) = TRUNC (SYSDATE));
END;
/
-- Job om meldingen onder de vakgroeptype AA Complimenten binnen de SLA automatisch af te melden
-- Hierbij wordt in de afhandeling de afmeldtekst gebruikt die standaard geconfigureerd staat.
CREATE OR REPLACE PROCEDURE aaxx_afmelden_complimenten (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2
)
AS
CURSOR c
IS
SELECT m.*, a.mld_afmeldtekst_omschrijving
FROM mld_melding m,
mld_stdmelding std,
ins_tab_discipline d,
ins_srtdiscipline sd,
mld_afmeldtekst a
WHERE m.mld_stdmelding_key = std.mld_stdmelding_key
AND std.mld_ins_discipline_key = d.ins_discipline_key
AND d.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
AND sd.ins_srtdiscipline_prefix = 'AA'
AND a.mld_ins_discipline_key = std.mld_ins_discipline_key
AND a.mld_stdmelding_key IS NULL
AND m.mld_melding_status IN (2, 3, 4)
AND m.mld_melding_einddatum_std < SYSDATE + 1;
BEGIN
FOR rec in c
LOOP
BEGIN
UPDATE mld_melding
SET mld_melding_opmerking = rec.mld_afmeldtekst_omschrijving
WHERE mld_melding_key = rec.mld_melding_key;
-- Als status is nieuw of te accepteren dan eerst op geaccepteerd zetten.
IF rec.mld_melding_status = 2 OR rec.mld_melding_status = 3
THEN
mld.setmeldingstatus(rec.mld_melding_key, 4, NULL);
END IF;
-- nu de status op afgemeld zetten.
mld.setmeldingstatus(rec.mld_melding_key, 5, NULL);
END;
END LOOP;
END;
/
-- Correcties op meldingen/opdrachten/facturen bestaan uit aanpassingen in de kostenplaats
-- of standaardmelding (kostensoort). De originele opdracht is dan al verwerkt en naar Exact
-- gehaald. Daar willen we niet aan gaan zitten knutselen.
-- Daarom kan aan een melding die ingelegd is op een verkeerde stdmelding of kostenplaats
-- een vervolgmelding (Ordercorrectie) gekoppeld worden. Deze ordercorrectiemelding heeft
-- flexvelden voor de nieuwe kostenplaats en nieuwe stdmelding. Onderstaande procedure
-- maakt nu een nieuwe structuur van melding/opdrach(en)/factuur(en) aan die gelijk is aan
-- de structuur van de originele melding maar met de tegenboeking (negatieve bedragen). Als
-- tweede wordt dezelfde structuur nog een keer aangemaakt voor de correctiemelding. Deze
-- structuur bevat de originele bedragen maar bevat de nieuwe kostenplaats en/of stdmelding.
-- Correctiemeldingen worden pas uitgevoerd op het moment dat ze afgemeld zijn. Aan het
-- einde van deze procedure wordt de correctiemelding op afgerond gezet zodat deze niet
-- nogmaals uitgevoerd wordt.
CREATE OR REPLACE PROCEDURE aaxx_ordercorrecties (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2
)
AS
CURSOR c
IS
SELECT m.mld_melding_start_key,
m.mld_melding_key,
COALESCE (
(SELECT fac.safe_to_number (km.mld_kenmerkmelding_waarde)
FROM mld_kenmerkmelding km,
mld_kenmerk k,
mld_srtkenmerk sk
WHERE km.mld_kenmerk_key = k.mld_kenmerk_key
AND km.mld_melding_key = m.mld_melding_key
AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
AND sk.mld_srtkenmerk_upper = 'NIEUWE KOSTENPLAATS'),
m_org.prs_kostenplaats_key)
nieuwe_kostenplaats,
COALESCE (
(SELECT fac.safe_to_number (km.mld_kenmerkmelding_waarde)
FROM mld_kenmerkmelding km,
mld_kenmerk k,
mld_srtkenmerk sk
WHERE km.mld_kenmerk_key = k.mld_kenmerk_key
AND km.mld_melding_key = m.mld_melding_key
AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
AND sk.mld_srtkenmerk_upper = 'NIEUWE MELDING'),
m_org.prs_kostenplaats_key)
nieuwe_melding
FROM mld_melding m, mld_stdmelding std, mld_melding m_org
WHERE m.mld_stdmelding_key = std.mld_stdmelding_key
AND std.mld_stdmelding_omschrijving = 'Ordercorrecties'
AND m.mld_melding_start_key = m_org.mld_melding_key
AND m.mld_melding_status = 5
AND m.mld_melding_afgerond = 0;
CURSOR c_o (c_melding_key NUMBER)
IS
SELECT *
FROM mld_opdr
WHERE mld_melding_key = c_melding_key;
CURSOR c_f (c_opdr_key NUMBER)
IS
SELECT *
FROM fin_factuur
WHERE mld_opdr_key = c_opdr_key AND fin_factuur_verwijder IS NULL;
CURSOR c_fr (c_factuur_key NUMBER)
IS
SELECT *
FROM fin_factuurregel
WHERE fin_factuur_key = c_factuur_key;
v_melding_tegenb_key NUMBER;
v_opdr_tegenb_key NUMBER;
v_factuur_tegenb_key NUMBER;
v_factuurregel_tegenb_key NUMBER;
v_melding_cor_key NUMBER;
v_opdr_cor_key NUMBER;
v_factuur_cor_key NUMBER;
v_factuurregel_cor_key NUMBER;
BEGIN
FOR rec IN c
LOOP
BEGIN
-- Maak een tegenboeking aan met dezelfde stdmelding/kostenplaats
SELECT mld_s_mld_melding_key.NEXTVAL
INTO v_melding_tegenb_key
FROM DUAL;
INSERT INTO mld_melding (mld_melding_key,
mld_melding_module,
mld_meldbron_key,
mld_alg_locatie_key,
mld_alg_onroerendgoed_keys,
mld_melding_datum,
mld_melding_omschrijving,
mld_melding_opmerking,
mld_stdmelding_key,
mld_melding_status,
mld_kosten_klant,
mld_melding_document,
prs_kostenplaats_key,
prs_perslid_key,
mld_adres_key,
mld_melding_ordernr,
mld_melding_spoed,
mld_melding_onderwerp,
mld_melding_start_key)
SELECT v_melding_tegenb_key,
mld_melding_module,
mld_meldbron_key,
mld_alg_locatie_key,
mld_alg_onroerendgoed_keys,
mld_melding_datum,
SUBSTR (
'Tegenboeking'
|| CHR (10)
|| mld_melding_omschrijving,
1,
4000),
SUBSTR (
'Tegenboeking'
|| CHR (10)
|| mld_melding_opmerking,
1,
4000),
mld_stdmelding_key,
2,
mld_kosten_klant,
mld_melding_document,
prs_kostenplaats_key,
prs_perslid_key,
mld_adres_key,
mld_melding_ordernr,
mld_melding_spoed,
SUBSTR ('Tegenboeking: ' || mld_melding_onderwerp, 1, 60),
mld_melding_key
FROM mld_melding
WHERE mld_melding_key = rec.mld_melding_start_key;
fac.trackaction ('MLDNEW',
v_melding_tegenb_key,
NULL,
NULL,
NULL);
mld.setmeldingstatus (v_melding_tegenb_key, 4, NULL);
-- Maak een correctie melding aan met de nieuwe stdmelding en nieuwe kostenplaats
SELECT mld_s_mld_melding_key.NEXTVAL
INTO v_melding_cor_key
FROM DUAL;
INSERT INTO mld_melding (mld_melding_key,
mld_melding_module,
mld_meldbron_key,
mld_alg_locatie_key,
mld_alg_onroerendgoed_keys,
mld_melding_datum,
mld_melding_omschrijving,
mld_melding_opmerking,
mld_stdmelding_key,
mld_melding_status,
mld_kosten_klant,
mld_melding_document,
prs_kostenplaats_key,
prs_perslid_key,
mld_adres_key,
mld_melding_ordernr,
mld_melding_spoed,
mld_melding_onderwerp,
mld_melding_start_key)
SELECT v_melding_cor_key,
mld_melding_module,
mld_meldbron_key,
mld_alg_locatie_key,
mld_alg_onroerendgoed_keys,
mld_melding_datum,
SUBSTR (
'Correctie melding'
|| CHR (10)
|| mld_melding_omschrijving,
1,
4000),
SUBSTR (
'Correctie melding'
|| CHR (10)
|| mld_melding_opmerking,
1,
4000),
rec.nieuwe_melding,
2,
mld_kosten_klant,
mld_melding_document,
rec.nieuwe_kostenplaats,
prs_perslid_key,
mld_adres_key,
mld_melding_ordernr,
mld_melding_spoed,
SUBSTR ('Correctie: ' || mld_melding_onderwerp, 1, 60),
mld_melding_key
FROM mld_melding
WHERE mld_melding_key = rec.mld_melding_start_key;
fac.trackaction ('MLDNEW',
v_melding_cor_key,
NULL,
NULL,
NULL);
mld.setmeldingstatus (v_melding_cor_key, 4, NULL);
DBMS_OUTPUT.put_line (
'Originele melding_key:' || rec.mld_melding_start_key);
FOR rec_o IN c_o (rec.mld_melding_start_key)
LOOP
BEGIN
DBMS_OUTPUT.put_line (
'Originele opdracht_key:' || rec_o.mld_opdr_key);
-- Maak voor iedere opdracht onder de originele melding een tegenboekingsopdracht aan.
SELECT mld_s_mld_opdr_key.NEXTVAL
INTO v_opdr_tegenb_key
FROM DUAL;
DBMS_OUTPUT.put_line (
'Tegenboeking opdracht_key:' || v_opdr_tegenb_key);
INSERT INTO mld_opdr (mld_opdr_key,
mld_opdr_module,
mld_melding_key,
mld_alg_locatie_key,
mld_alg_onroerendgoed_keys,
mld_uitvoerende_keys,
mld_typeopdr_key,
mld_statusopdr_key,
mld_standaardopdr_key,
mld_opdr_omschrijving,
mld_opdr_datumbegin,
mld_opdr_dagen,
mld_opdr_einddatum,
mld_opdr_werkzaamheden,
mld_opdr_uren,
mld_opdr_materiaal,
mld_opdr_kosten,
prs_kostenplaats_key,
mld_opdr_ordernr,
mld_opdr_contactpersoon,
mld_opdr_bedrijfopdr_volgnr,
mld_opdr_teverzenden,
mld_opdr_uurloon,
prs_perslid_key,
prs_contactpersoon_key,
mld_opdr_opmerking_fiat,
fac_activiteit_key,
mld_opdr_opmerking,
cnt_contract_key,
cnt_contract_dienst_key,
mld_opdr_plandatum,
mld_opdr_id)
SELECT v_opdr_tegenb_key,
mld_opdr_module,
v_melding_tegenb_key,
mld_alg_locatie_key,
mld_alg_onroerendgoed_keys,
mld_uitvoerende_keys,
mld_typeopdr_key,
5, -- toegekend
mld_standaardopdr_key,
mld_opdr_omschrijving,
mld_opdr_datumbegin,
mld_opdr_dagen,
mld_opdr_einddatum,
mld_opdr_werkzaamheden,
0,
0,
-1 * mld_opdr_kosten,
prs_kostenplaats_key,
mld_opdr_ordernr,
mld_opdr_contactpersoon,
mld_opdr_bedrijfopdr_volgnr,
NULL, -- mld_opdr_teverzenden
mld_opdr_uurloon,
prs_perslid_key,
prs_contactpersoon_key,
mld_opdr_opmerking_fiat,
fac_activiteit_key,
SUBSTR (
'Tegenboeking'
|| CHR (10)
|| mld_opdr_opmerking,
1,
4000),
cnt_contract_key,
cnt_contract_dienst_key,
mld_opdr_plandatum,
mld_opdr_id
FROM mld_opdr
WHERE mld_opdr_key = rec_o.mld_opdr_key;
fac.trackaction ('ORDNEW',
v_opdr_tegenb_key,
NULL,
NULL,
NULL);
-- Maak voor iedere opdracht onder de originele melding een correctieopdracht aan.
SELECT mld_s_mld_opdr_key.NEXTVAL
INTO v_opdr_cor_key
FROM DUAL;
DBMS_OUTPUT.put_line (
'Correctie opdracht_key:' || v_opdr_cor_key);
INSERT INTO mld_opdr (mld_opdr_key,
mld_opdr_module,
mld_melding_key,
mld_alg_locatie_key,
mld_alg_onroerendgoed_keys,
mld_uitvoerende_keys,
mld_typeopdr_key,
mld_statusopdr_key,
mld_standaardopdr_key,
mld_opdr_omschrijving,
mld_opdr_datumbegin,
mld_opdr_dagen,
mld_opdr_einddatum,
mld_opdr_werkzaamheden,
mld_opdr_uren,
mld_opdr_materiaal,
mld_opdr_kosten,
prs_kostenplaats_key,
mld_opdr_ordernr,
mld_opdr_contactpersoon,
mld_opdr_bedrijfopdr_volgnr,
mld_opdr_teverzenden,
mld_opdr_uurloon,
prs_perslid_key,
prs_contactpersoon_key,
mld_opdr_opmerking_fiat,
fac_activiteit_key,
mld_opdr_opmerking,
cnt_contract_key,
cnt_contract_dienst_key,
mld_opdr_plandatum,
mld_opdr_id)
SELECT v_opdr_cor_key,
mld_opdr_module,
v_melding_cor_key,
mld_alg_locatie_key,
mld_alg_onroerendgoed_keys,
mld_uitvoerende_keys,
mld_typeopdr_key,
5, -- toegekend
mld_standaardopdr_key,
mld_opdr_omschrijving,
mld_opdr_datumbegin,
mld_opdr_dagen,
mld_opdr_einddatum,
mld_opdr_werkzaamheden,
mld_opdr_uren,
mld_opdr_materiaal,
mld_opdr_kosten,
rec.nieuwe_kostenplaats,
mld_opdr_ordernr,
mld_opdr_contactpersoon,
mld_opdr_bedrijfopdr_volgnr,
NULL, -- mld_opdr_teverzenden
mld_opdr_uurloon,
prs_perslid_key,
prs_contactpersoon_key,
mld_opdr_opmerking_fiat,
fac_activiteit_key,
SUBSTR (
'Correctie'
|| CHR (10)
|| mld_opdr_opmerking,
1,
4000),
cnt_contract_key,
cnt_contract_dienst_key,
mld_opdr_plandatum,
mld_opdr_id
FROM mld_opdr
WHERE mld_opdr_key = rec_o.mld_opdr_key;
fac.trackaction ('ORDNEW',
v_opdr_cor_key,
NULL,
NULL,
NULL);
FOR rec_f IN c_f (rec_o.mld_opdr_key)
LOOP
BEGIN
DBMS_OUTPUT.put_line (
'Originele factuur_key:' || rec_f.fin_factuur_key);
-- Maak voor iedere factuur onder de originele opdracht een tegenboekingsfactuur aan.
SELECT fin_s_fin_factuur_key.NEXTVAL
INTO v_factuur_tegenb_key
FROM DUAL;
DBMS_OUTPUT.put_line (
'Tegenboekingsfactuur_key:' || v_factuur_tegenb_key);
INSERT INTO fin_factuur (fin_factuur_key,
mld_opdr_key,
fin_factuur_nr,
fin_factuur_totaal,
fin_factuur_totaal_btw,
prs_perslid_key_user,
fin_factuur_datum,
fin_factuur_boekmaand,
fin_factuur_debiteur_nr,
prs_kostensoort_key,
fin_factuur_opmerking,
fin_factuur_statuses_key)
SELECT v_factuur_tegenb_key,
v_opdr_tegenb_key,
fin_factuur_nr,
-1 * fin_factuur_totaal,
-1 * fin_factuur_totaal_btw,
prs_perslid_key_user,
fin_factuur_datum,
fin_factuur_boekmaand,
fin_factuur_debiteur_nr,
prs_kostensoort_key,
SUBSTR (
'Tegenboeking'
|| CHR (10)
|| fin_factuur_opmerking,
1,
4000),
6 -- goedgekeurd
FROM fin_factuur
WHERE fin_factuur_key = rec_f.fin_factuur_key;
INSERT INTO fin_kenmerkfactuur (fin_factuur_key, fin_kenmerk_key, fin_kenmerkfactuur_waarde)
SELECT v_factuur_tegenb_key,
fin_kenmerk_key,
fin_kenmerkfactuur_waarde
FROM fin_kenmerkfactuur
WHERE fin_factuur_key = rec_f.fin_factuur_key;
fac.trackaction ('FINNEW',
v_factuur_tegenb_key,
NULL,
NULL,
NULL);
-- Maak voor iedere factuur onder de originele opdracht een correctiefactuur aan.
SELECT fin_s_fin_factuur_key.NEXTVAL
INTO v_factuur_cor_key
FROM DUAL;
DBMS_OUTPUT.put_line (
'Correctie factuur_key:' || v_factuur_cor_key);
INSERT INTO fin_factuur (fin_factuur_key,
mld_opdr_key,
fin_factuur_nr,
fin_factuur_totaal,
fin_factuur_totaal_btw,
prs_perslid_key_user,
fin_factuur_datum,
fin_factuur_boekmaand,
fin_factuur_debiteur_nr,
prs_kostensoort_key,
fin_factuur_opmerking,
fin_factuur_statuses_key)
SELECT v_factuur_cor_key,
v_opdr_cor_key,
fin_factuur_nr,
fin_factuur_totaal,
fin_factuur_totaal_btw,
prs_perslid_key_user,
fin_factuur_datum,
fin_factuur_boekmaand,
fin_factuur_debiteur_nr,
(SELECT COALESCE (std.prs_kostensoort_key,
d.prs_kostensoort_key)
FROM mld_stdmelding std,
ins_tab_discipline d
WHERE std.mld_ins_discipline_key =
d.ins_discipline_key
AND std.mld_stdmelding_key =
rec.nieuwe_melding),
SUBSTR (
'Correctie'
|| CHR (10)
|| fin_factuur_opmerking,
1,
4000),
6 -- goedgekeurd
FROM fin_factuur
WHERE fin_factuur_key = rec_f.fin_factuur_key;
fac.trackaction ('FINNEW',
v_factuur_cor_key,
NULL,
NULL,
NULL);
INSERT INTO fin_kenmerkfactuur (fin_factuur_key, fin_kenmerk_key, fin_kenmerkfactuur_waarde)
SELECT v_factuur_cor_key,
fin_kenmerk_key,
fin_kenmerkfactuur_waarde
FROM fin_kenmerkfactuur
WHERE fin_factuur_key = rec_f.fin_factuur_key;
FOR rec_fr IN c_fr (rec_f.fin_factuur_key)
LOOP
BEGIN
DBMS_OUTPUT.put_line('Originele factuurregel_key:'
|| rec_fr.fin_factuurregel_key);
-- Maak voor iedere factuurregel onder de originele factuur een tegenboekings factuurregel aan.
SELECT fin_s_fin_factuurregel_key.NEXTVAL
INTO v_factuurregel_tegenb_key
FROM DUAL;
DBMS_OUTPUT.put_line('Tegenboekings factuurregel_key:'
|| v_factuurregel_tegenb_key);
INSERT INTO fin_factuurregel (fin_factuurregel_key,
fin_factuur_key,
fin_factuurregel_nr,
fin_factuurregel_totaal,
fin_factuurregel_btw,
fin_factuurregel_omschrijving,
fin_factuurregel_referentie,
fin_btwtabelwaarde_key,
prs_kostensoort_key)
SELECT v_factuurregel_tegenb_key,
v_factuur_tegenb_key,
fin_factuurregel_nr,
-1 * fin_factuurregel_totaal,
-1 * fin_factuurregel_btw,
fin_factuurregel_omschrijving,
fin_factuurregel_referentie,
fin_btwtabelwaarde_key,
prs_kostensoort_key
FROM fin_factuurregel
WHERE fin_factuurregel_key =
rec_fr.fin_factuurregel_key;
-- Maak voor iedere factuurregel onder de originele factuur een correctie factuurregel aan.
SELECT fin_s_fin_factuurregel_key.NEXTVAL
INTO v_factuurregel_cor_key
FROM DUAL;
DBMS_OUTPUT.put_line('Correctie factuurregel_key:'
|| v_factuurregel_cor_key);
INSERT INTO fin_factuurregel (fin_factuurregel_key,
fin_factuur_key,
fin_factuurregel_nr,
fin_factuurregel_totaal,
fin_factuurregel_btw,
fin_factuurregel_omschrijving,
fin_factuurregel_referentie,
fin_btwtabelwaarde_key,
prs_kostensoort_key)
SELECT v_factuurregel_cor_key,
v_factuur_cor_key,
fin_factuurregel_nr,
fin_factuurregel_totaal,
fin_factuurregel_btw,
fin_factuurregel_omschrijving,
fin_factuurregel_referentie,
fin_btwtabelwaarde_key,
(SELECT COALESCE (
std.prs_kostensoort_key,
d.prs_kostensoort_key)
FROM mld_stdmelding std,
ins_tab_discipline d
WHERE std.mld_ins_discipline_key =
d.ins_discipline_key
AND std.mld_stdmelding_key =
rec.nieuwe_melding)
FROM fin_factuurregel
WHERE fin_factuurregel_key =
rec_fr.fin_factuurregel_key;
END;
END LOOP;
END;
END LOOP;
-- set opdrachtstatus op technisch gereed
mld.setopdrachtstatus (v_opdr_tegenb_key, 6, NULL);
mld.setopdrachtstatus (v_opdr_cor_key, 6, NULL);
END;
END LOOP;
-- zet meldingstatus op technisch gereed
mld.updatemeldingstatus (v_melding_tegenb_key, 1, NULL);
mld.updatemeldingstatus (v_melding_cor_key, 1, NULL);
-- zet de status van de correctiemelding op afgerond zodat deze niet opnieuw verwerkt wordt.
UPDATE mld_melding
SET mld_melding_afgerond = 1
WHERE mld_melding_key = rec.mld_melding_key;
END;
END LOOP;
END;
/
-- view om stdmeldingen als suggest bij kenmerk te tonen.
CREATE OR REPLACE VIEW aaxx_v_stdmelding_gegevens
AS
SELECT sd.ins_srtdiscipline_key,
ins_srtdiscipline_prefix,
ins_srtdiscipline_omschrijving,
ins_discipline_key,
ins_discipline_omschrijving,
mld_stdmelding_key,
mld_stdmelding_omschrijving,
ins_discipline_omschrijving || '/' || mld_stdmelding_omschrijving
discstd,
mld_stdmelding_verwijder
FROM ins_tab_discipline d, ins_srtdiscipline sd, mld_stdmelding std
WHERE sd.ins_srtdiscipline_key = d.ins_srtdiscipline_key
AND d.ins_discipline_key = std.mld_ins_discipline_key;
--=============================================================================
-- EXPORTFUNCTIES Reserveringen NoShow.
-- Exportfunctie moet voor de putorders van de betreffende klant gescheduled worden.
-- 10 minuten na aanvang wordt bij no_show een noshow reminder gestuurd
-- 15 minuten na aanvang wordt de reservering als noshow aangemerkt en
-- wordt de ruimte vrijgegeven.
-------------------------------------------------------------------------------
CREATE OR REPLACE PROCEDURE aaxx_select_noshow_reminder (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2)
AS
CURSOR c (
c_srtnotificatie_key NUMBER)
IS
SELECT DISTINCT rrr.res_rsv_ruimte_host_key,
rr.res_ruimte_nr,
pf.prs_perslid_naam_full,
rrr.res_reservering_key,
rrr.res_rsv_ruimte_key
FROM cad_v_thema_srtruimtesensor s,
res_v_rsv_ruimte_2_alg_ruimte r2a,
res_rsv_ruimte rrr,
res_ruimte rr,
prs_v_perslid_fullnames pf
WHERE waarde = 'NoShow'
AND res_rsv_ruimte_host_key = pf.prs_perslid_key
AND s.alg_ruimte_key = r2a.alg_ruimte_key
AND r2a.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key
AND r2a.res_ruimte_key = rr.res_ruimte_key
AND SYSDATE BETWEEN rrr.res_rsv_ruimte_van
AND rrr.res_rsv_ruimte_tot
AND rrr.res_rsv_ruimte_van < SYSDATE - 1 / (24 * 6) -- verder dan tien minuten
AND rrr.res_rsv_ruimte_van > SYSDATE - 2 / (24 * 6) -- niet verder dan twintig minuten
AND NOT EXISTS
(SELECT fac_tracking_key
FROM fac_tracking t
WHERE t.fac_srtnotificatie_key = c_srtnotificatie_key
AND fac_tracking_refkey = rrr.res_rsv_ruimte_key);
CURSOR c2 (
c_srtnotificatie_key NUMBER)
IS
SELECT DISTINCT r2a.res_rsv_ruimte_key
FROM cad_v_thema_srtruimtesensor s, res_v_rsv_ruimte_2_alg_ruimte r2a
WHERE waarde = 'NoShow' AND s.alg_ruimte_key = r2a.alg_ruimte_key
AND SYSDATE BETWEEN r2a.res_rsv_ruimte_van
AND r2a.res_rsv_ruimte_tot
AND r2a.res_rsv_ruimte_van < SYSDATE - 1 / (24 * 4) -- verder dan een kwartier
AND r2a.res_rsv_ruimte_van > SYSDATE - 2 / (24 * 4) -- niet verder dan een half uur
AND EXISTS
(SELECT fac_tracking_key
FROM fac_tracking t
WHERE t.fac_srtnotificatie_key = c_srtnotificatie_key
AND fac_tracking_refkey = r2a.res_rsv_ruimte_key);
v_srtnotificatie_key NUMBER;
BEGIN
SELECT fac_srtnotificatie_key
INTO v_srtnotificatie_key
FROM fac_srtnotificatie
WHERE fac_srtnotificatie_code = 'CUST06'; -- herinnering noshow
FOR rec IN c (v_srtnotificatie_key)
LOOP
BEGIN
fac.putnotificationsrtprio (
NULL,
rec.res_rsv_ruimte_host_key,
'CUST06',
rec.res_reservering_key,
'No-show waarschuwing reservering ' || rec.res_ruimte_nr,
2, -- mail
NULL, -- geen specifiek mail adres
NULL, -- geen specifiek mobile nummer
rec.res_rsv_ruimte_key,
1, -- hoge prioriteit
NULL);
fac.trackaction (
'#CUST06',
rec.res_rsv_ruimte_key,
NULL,
NULL,
'No-show waarschuwing verzonden naar: '
|| rec.prs_perslid_naam_full);
END;
END LOOP;
FOR rec IN c2 (v_srtnotificatie_key)
LOOP
BEGIN
UPDATE res_rsv_ruimte
SET res_rsv_ruimte_bezoekers_shown = 0,
res_rsv_ruimte_tot =
GREATEST (
res_rsv_ruimte_van,
LEAST (res_rsv_ruimte_tot, TRUNC (SYSDATE, 'MI')))
WHERE res_rsv_ruimte_key = rec.res_rsv_ruimte_key;
UPDATE res_rsv_deel
SET res_rsv_deel_tot =
LEAST (
res_rsv_deel_tot,
(SELECT res_rsv_ruimte_tot
FROM res_rsv_ruimte
WHERE res_rsv_ruimte_key = rec.res_rsv_ruimte_key))
WHERE res_rsv_ruimte_key = rec.res_rsv_ruimte_key;
fac.trackaction ('RESNOS',
rec.res_rsv_ruimte_key,
NULL,
NULL,
NULL);
END;
END LOOP;
COMMIT;
END;
/
--=============================================================================
-- EXPORTFUNCTIES EXACT - Inkoopinterface
-------------------------------------------------------------------------------
-------------------------------------------------------------------------------
-- EXPORTFUNCTIE - Export exact
-------------------------------------------------------------------------------
CREATE OR REPLACE VIEW aaxx_v_aanwezigfactuur
(
FIN_FACTUUR_KEY,
FIN_FACTUUR_NR,
FIN_FACTUUR_TOTAAL,
FIN_FACTUUR_TOTAAL_BTW,
MLD_OPDR_KEY,
CNT_CONTRACT_KEY,
BES_BESTELOPDR_KEY,
PRS_PERSLID_KEY_USER,
FIN_FACTUUR_DATUM,
FIN_FACTUUR_BOEKMAAND,
FIN_FACTUUR_DEBITEUR_NR,
PRS_KOSTENSOORT_KEY,
FIN_FACTUUR_OPMERKING,
FIN_FACTUUR_STATUSES_KEY,
FIN_FACTUUR_VERWIJDER
)
AS
SELECT FIN_FACTUUR_KEY,
FIN_FACTUUR_NR,
FIN_FACTUUR_TOTAAL,
FIN_FACTUUR_TOTAAL_BTW,
MLD_OPDR_KEY,
CNT_CONTRACT_KEY,
BES_BESTELOPDR_KEY,
PRS_PERSLID_KEY_USER,
FIN_FACTUUR_DATUM,
FIN_FACTUUR_BOEKMAAND,
FIN_FACTUUR_DEBITEUR_NR,
PRS_KOSTENSOORT_KEY,
FIN_FACTUUR_OPMERKING,
FIN_FACTUUR_STATUSES_KEY,
FIN_FACTUUR_VERWIJDER
FROM fin_factuur
WHERE fin_factuur_verwijder IS NULL AND fin_factuur_statuses_key > 1;
-- fin_kenmerk_key 2 is de keuze of dit de laatste factuur van de opdracht is.
CREATE OR REPLACE VIEW aaxx_v_factuur_gegevens (
fin_factuur_key,
opdracht_id,
fin_factuur_datum,
fin_factuur_nr,
prs_bedrijf_key,
fin_factuurregel_totaal,
fin_factuurregel_btw,
fin_btwtabelwaarde_code,
fin_btwtabelwaarde_key,
fin_factuurregel_nr,
fin_factuur_debiteur_nr,
fin_factuur_opmerking,
fin_factuur_boekmaand,
opdr_datum,
laatste_factuur,
project_nummer,
project_nummer_kp,
project_naam,
prs_kostensoort_oms,
prs_kostensoort_refcode,
prs_kostensoort_key,
prs_kostenplaats_key,
mld_opdr_key,
cnt_contract_key,
bes_bestelopdr_key,
fin_factuur_statuses_key,
lev_kpn,
fin_factuur_controle,
fin_factuur_controle_ok
)
AS
SELECT f.fin_factuur_key,
DECODE (c.cnt_contract_key, null,
DECODE (bo.bes_bestelopdr_key, null,
(SELECT sd.ins_srtdiscipline_prefix
|| m.mld_melding_key
|| '/'
|| o.mld_opdr_bedrijfopdr_volgnr
FROM mld_melding m,
mld_stdmelding std,
ins_tab_discipline d,
ins_srtdiscipline sd
WHERE m.mld_melding_key = o.mld_melding_key
AND m.mld_stdmelding_key = std.mld_stdmelding_key
AND std.mld_ins_discipline_key = d.ins_discipline_key
AND d.ins_srtdiscipline_key = sd.ins_srtdiscipline_key)
, bo.bes_bestelopdr_id)
, 'C' || TO_CHAR (cnt_contract_nummer_intern)
|| DECODE (cnt_contract_versie, NULL, NULL, '.' || cnt_contract_versie)
)
opdracht_id,
DECODE (to_char(f.fin_factuur_datum, 'yyyy'),
'2010', to_date('20110102', 'YYYYMMDD'),
'2011', to_date('20120102', 'YYYYMMDD'),
f.fin_factuur_datum),
f.fin_factuur_nr,
COALESCE (b_c.prs_bedrijf_key, COALESCE(b_o.prs_bedrijf_key, b_b.prs_bedrijf_key)) prs_bedrijf_key,
fr.fin_factuurregel_totaal,
round(fr.fin_factuurregel_totaal* DECODE(btw.fin_btwtabelwaarde_verlegd, 1, 0, btw.fin_btwtabelwaarde_perc/100),2) fin_factuurregel_btw,
btw.fin_btwtabelwaarde_code,
btw.fin_btwtabelwaarde_key,
fr.fin_factuurregel_nr,
f.fin_factuur_debiteur_nr,
f.fin_factuur_opmerking,
f.fin_factuur_boekmaand,
coalesce (o.mld_opdr_datumbegin, coalesce(DECODE(aaxx_get_user, 'INLO', DECODE (aaxx_get_top_bedrijf_key ((SELECT prs_kostenplaats_nr from prs_kostenplaats where prs_kostenplaats_key = c.prs_kostenplaats_key)), 2082,TO_DATE(fin_factuur_boekmaand, 'yyyy-mm'), -- VEH
c.cnt_contract_looptijd_tot),
c.cnt_contract_looptijd_tot),
bo.bes_bestelopdr_datum)) opdr_datum,
COALESCE ( (SELECT fac.safe_to_number (fac_usrdata_code)
FROM fin_kenmerkfactuur fk, fac_usrdata ud
WHERE fk.fin_factuur_key = f.fin_factuur_key
AND fk.fin_kenmerk_key = 2
AND fac.safe_to_number (fin_kenmerkfactuur_waarde) =
fac_usrdata_key),
1
),
TO_CHAR (DECODE (ot.mld_typeopdr_omschrijving,
'Projectorder', ( (SELECT sd.ins_srtdiscipline_prefix
|| m.mld_melding_key
FROM mld_melding m,
mld_stdmelding std,
ins_tab_discipline d,
ins_srtdiscipline sd
WHERE m.mld_melding_key =
o.mld_melding_key
AND m.mld_stdmelding_key = std.mld_stdmelding_key
AND std.mld_ins_discipline_key =
d.ins_discipline_key
AND d.ins_srtdiscipline_key =
sd.ins_srtdiscipline_key)),
NULL)
)
projectnummer,
CASE
WHEN aaxx_get_user = 'IT'
AND ( ot.mld_typeopdr_omschrijving = 'Workorder'
OR c.cnt_contract_key IS NOT NULL)
THEN -- Zie ticket AAIT#69225
COALESCE (
(SELECT DECODE (kpi.prs_kostenplaats_module,
'PRJ', kpi.prs_kostenplaats_nr,
NULL)
FROM prs_kostenplaats kpi
WHERE kpi.prs_kostenplaats_key =
o.prs_kostenplaats_key),
COALESCE (
(SELECT DECODE (kpi.prs_kostenplaats_module,
'PRJ', kpi.prs_kostenplaats_nr,
NULL)
FROM prs_kostenplaats kpi
WHERE kpi.prs_kostenplaats_key =
c.prs_kostenplaats_key),
(SELECT DISTINCT
DECODE (kpi.prs_kostenplaats_module,
'PRJ', kpi.prs_kostenplaats_nr,
NULL)
FROM bes_bestelling b,
bes_bestelopdr_item boi,
bes_bestelling_item bi,
prs_kostenplaats kpi
WHERE bo.bes_bestelopdr_key =
boi.bes_bestelopdr_key
AND boi.bes_bestelopdr_item_key =
bi.bes_bestelopdr_item_key
AND bi.bes_bestelling_key =
b.bes_bestelling_key
AND b.prs_kostenplaats_key =
kpi.prs_kostenplaats_key)))
ELSE
NULL
END
project_nummer_kp,
TO_CHAR ((SELECT DISTINCT COALESCE(mld_kenmerkmelding_waarde, '')
FROM mld_kenmerkmelding km,
mld_kenmerk k,
mld_srtkenmerk sk
WHERE km.mld_melding_key = o.mld_melding_key
AND k.mld_kenmerk_key = km.mld_kenmerk_key
AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
AND km.mld_kenmerkmelding_verwijder is null
AND k.mld_kenmerk_verwijder is null
AND sk.mld_srtkenmerk_omschrijving = 'Projectnaam')
)
projectnaam,
prs_kostensoort_oms,
DECODE (
aaxx_get_user,
'DOW', DECODE (
COALESCE (
TO_CHAR (o.mld_opdr_datumbegin, 'yyyy'),
COALESCE (
TO_CHAR (c.cnt_contract_looptijd_tot,
'yyyy'),
TO_CHAR (bo.bes_bestelopdr_datum, 'yyyy'))),
'2022', k.prs_kostensoort_refcode,
DECODE (
SUBSTR (k.prs_kostensoort_upper, 1, 2),
'CO', DECODE (
SUBSTR (k.prs_kostensoort_upper,
1,
7),
'COR VAR', '1350808',
'1350807'),
'NC', DECODE (
SUBSTR (k.prs_kostensoort_upper,
1,
5),
'NC P ', '1350817',
'1350809'),
'Onbekend')),
-- Gul is uitgeschakeld (Sander Vogels dec-2019). Is dus ook niet meegenomen bij aanpassing interface 2020 ivm balansrekeningen voorgaande boekjaar (AAX#60595)
-- Gul kent een andere methode. Deze gaat niet mee in de jaarafsluiting. Met GULU#38855 is
-- bepaald dat de kosten vanaf 2017 op andere rekeningnummers komen dan de kosten uit voorafgaande
-- jaren.
'GUL', DECODE (
COALESCE (
TO_CHAR (o.mld_opdr_datumbegin, 'yyyy'),
COALESCE (
TO_CHAR (c.cnt_contract_looptijd_tot,
'yyyy'),
TO_CHAR (bo.bes_bestelopdr_datum, 'yyyy'))),
'2019', k.prs_kostensoort_refcode,
'2018', DECODE (
SUBSTR (k.prs_kostensoort_upper, 1, 2),
'CF', '1350830',
'CV', '1350831',
'Onbekend'),
'2017', DECODE (
SUBSTR (k.prs_kostensoort_upper, 1, 2),
'CF', '1350801',
'CV', '1350802',
'Onbekend'),
DECODE (SUBSTR (k.prs_kostensoort_upper, 1, 2),
'CF', '1350803',
'CV', '1350804',
'Onbekend')),
-- INLO uit standaard overgenomen. Zie ticket 57775.
'INLO', DECODE (
COALESCE (
TO_CHAR (o.mld_opdr_datumbegin, 'yyyy'),
COALESCE (
TO_CHAR (
DECODE (
aaxx_get_top_bedrijf_key (
(SELECT prs_kostenplaats_nr
FROM prs_kostenplaats
WHERE prs_kostenplaats_key =
c.prs_kostenplaats_key)),
2082, TO_DATE (
fin_factuur_boekmaand,
'yyyy-mm'),
c.cnt_contract_looptijd_tot),
'yyyy'),
TO_CHAR (bo.bes_bestelopdr_datum, 'yyyy'))),
'2022', k.prs_kostensoort_refcode,
DECODE (
SUBSTR (k.prs_kostensoort_upper, 1, 3),
'CF ', '1350807',
'CFE', '1350807',
'CV ', '1350808',
'CVE', '1350809',
'NC ', DECODE (
SUBSTR (k.prs_kostensoort_upper,
1,
7),
'NC PROJ', '1350817',
'1350809'),
'Onbekend')),
'IT', DECODE (
COALESCE (
TO_CHAR (o.mld_opdr_datumbegin, 'yyyy'),
COALESCE (
TO_CHAR (c.cnt_contract_looptijd_tot,
'yyyy'),
TO_CHAR (bo.bes_bestelopdr_datum, 'yyyy'))),
'2022', k.prs_kostensoort_refcode,
'2021', k.prs_kostensoort_refcode,
'2020', k.prs_kostensoort_refcode,
DECODE (
SUBSTR (k.prs_kostensoort_upper, 1, 2),
'CF', '1350822',
'CV', '1350823',
'NC', DECODE (
SUBSTR (k.prs_kostensoort_upper, 1, 7),
'NC PROJ', '1350817',
'1350824'),
k.prs_kostensoort_refcode)),
--NIEUW DSM ivm gebruik L-code #56150
'DSM', DECODE (
COALESCE (
TO_CHAR (o.mld_opdr_datumbegin, 'yyyy'),
COALESCE (
TO_CHAR (c.cnt_contract_looptijd_tot,
'yyyy'),
TO_CHAR (bo.bes_bestelopdr_datum, 'yyyy'))),
'2022', k.prs_kostensoort_refcode,
DECODE (
SUBSTR (k.prs_kostensoort_upper, 1, 2),
'L ', DECODE (
SUBSTR (k.prs_kostensoort_upper,
1,
5),
'L CF ', '1350807',
'L CFE', '1350807',
'L CV ', '1350808',
'L CVE', '1350809',
'L NC ', DECODE (
SUBSTR (
k.prs_kostensoort_upper,
1,
9),
'L NC PROJ', '1350817',
'1350809'),
'Onbekend'),
DECODE (
SUBSTR (k.prs_kostensoort_upper, 1, 3),
'CF ', '1350818',
'CFE', '1350818',
'CV ', '1350819',
'CVE', '1350820',
'NC ', DECODE (
SUBSTR (k.prs_kostensoort_upper,
1,
7),
'NC PROJ', '1350817',
'1350820'),
'Onbekend'))),
-- standaard keuze werkt voor de meeste accounts.
DECODE (
COALESCE (
TO_CHAR (o.mld_opdr_datumbegin, 'yyyy'),
COALESCE (
TO_CHAR (c.cnt_contract_looptijd_tot, 'yyyy'),
TO_CHAR (bo.bes_bestelopdr_datum, 'yyyy'))),
'2022', k.prs_kostensoort_refcode,
DECODE (
SUBSTR (k.prs_kostensoort_upper, 1, 3),
'CF ', '1350807',
'CFE', '1350807',
'CV ', '1350808',
'CVE', '1350809',
'NC ', DECODE (SUBSTR (k.prs_kostensoort_upper, 1, 7),
'NC PROJ', '1350817',
'1350809'),
'Onbekend'))),
k.prs_kostensoort_key,
COALESCE(o.prs_kostenplaats_key,
COALESCE(c.prs_kostenplaats_key,
(SELECT DISTINCT b.prs_kostenplaats_key
FROM bes_bestelling b,
bes_bestelopdr_item boi,
bes_bestelling_item bi
WHERE bo.bes_bestelopdr_key = boi.bes_bestelopdr_key
AND boi.bes_bestelopdr_item_key = bi.bes_bestelopdr_item_key
AND bi.bes_bestelling_key = b.bes_bestelling_key)
)
) prs_kostenplaats_key,
o.mld_opdr_key,
c.cnt_contract_key,
bo.bes_bestelopdr_key,
( -- status van de factuur is ingevoerd als er facturen van dezelfde leverancier en nummer zijn
-- met status ingevoerd, afgewezen of incompleet
SELECT DECODE(count(*), 0, f.fin_factuur_statuses_key, 2)
FROM fin_factuur f_t, cnt_contract c_t, bes_bestelopdr b_t, mld_opdr o_t
WHERE f_t.fin_factuur_verwijder is null
AND f_t.mld_opdr_key = o_t.mld_opdr_key(+)
AND f_t.cnt_contract_key = c_t.cnt_contract_key(+)
AND f_t.bes_bestelopdr_key = b_t.bes_bestelopdr_key(+)
AND COALESCE(o_t.mld_uitvoerende_keys, COALESCE(b_t.prs_bedrijf_key, c_t.cnt_prs_bedrijf_key))
= COALESCE(o.mld_uitvoerende_keys, COALESCE(bo.prs_bedrijf_key, c.cnt_prs_bedrijf_key))
AND f.fin_factuur_nr = f_t.fin_factuur_nr
AND f_t.fin_factuur_statuses_key in (1,2,3)
AND f.fin_factuur_statuses_key = 6) fin_factuur_statuses_key,
lk.prs_kostenplaats_nr lev_kpn,
(SELECT fin_kenmerkfactuur_waarde
FROM fin_kenmerkfactuur fk, fin_kenmerk k
WHERE fk.fin_kenmerk_key = k.fin_kenmerk_key
AND k.fin_kenmerk_verwijder IS NULL
AND UPPER (fin_kenmerk_omschrijving) = 'EXTRA CONTROLE?'
AND fk.fin_factuur_key = f.fin_factuur_key) fin_factuur_controle,
(SELECT fin_kenmerkfactuur_waarde
FROM fin_kenmerkfactuur fk, fin_kenmerk k
WHERE fk.fin_kenmerk_key = k.fin_kenmerk_key
AND k.fin_kenmerk_verwijder IS NULL
AND UPPER (fin_kenmerk_omschrijving) = 'GECONTROLEERD'
AND fk.fin_factuur_key = f.fin_factuur_key) fin_factuur_controle_ok
FROM fin_factuur f,
fin_factuurregel fr,
fin_btwtabelwaarde btw,
mld_opdr o,
mld_typeopdr ot,
cnt_contract c,
bes_bestelopdr bo,
prs_bedrijf b_o,
prs_bedrijf b_c,
prs_bedrijf b_b,
prs_kostensoort k,
prs_kostensoortgrp kg,
prs_kostenplaats lk
WHERE f.fin_factuur_key = fr.fin_factuur_key
AND fr.fin_btwtabelwaarde_key = btw.fin_btwtabelwaarde_key
AND f.mld_opdr_key = o.mld_opdr_key(+)
AND o.mld_typeopdr_key = ot.mld_typeopdr_key(+)
AND f.cnt_contract_key = c.cnt_contract_key(+)
AND f.bes_bestelopdr_key = bo.bes_bestelopdr_key(+)
AND bo.prs_bedrijf_key = b_b.prs_bedrijf_key(+)
AND o.mld_uitvoerende_keys = b_o.prs_bedrijf_key(+)
AND c.cnt_prs_bedrijf_key = b_c.prs_bedrijf_key(+)
AND f.prs_kostensoort_key = k.prs_kostensoort_key(+)
AND k.prs_kostenplaats_key = lk.prs_kostenplaats_key(+)
AND k.prs_kostensoortgrp_key = kg.prs_kostensoortgrp_key(+)
AND f.fin_factuur_verwijder IS NULL;
-- De exact export kan voor AAIT meerdere administraties bevatten. In dat geval wordt de
-- regel opgeslagen met een prefix van het administratienummer met een ##
-- Hier splitsen we deze weer naar losse velden in de view. De kolom adm_exact is de bestandsnaam
-- zoals deze in de importdefinitie bepaald is.
CREATE OR REPLACE VIEW aaxx_v_export_exact_xml (
result,
result_order,
adm_exact
)
AS
SELECT SUBSTR (fac_rapport_regel, INSTR (fac_rapport_regel, '##') + 2),
fac_rapport_volgnr,
SUBSTR (fac_rapport_regel, 1, INSTR (fac_rapport_regel, '##') - 1)
FROM fac_rapport
WHERE fac_rapport_node = 'EXACT' AND INSTR (fac_rapport_regel, '##') <> 0
UNION ALL
SELECT fac_rapport_regel, fac_rapport_volgnr, NULL
FROM fac_rapport
WHERE fac_rapport_node = 'EXACT' AND INSTR (fac_rapport_regel, '##') = 0;
/* nieuwe view om oude aaxx_v_export_exact_xml view op termijn te vervangen. Door gebruik te maken
van de nieuwe view hoeft er per klant geen specifieke export in de cust.sql. De prefix in de
export tabel staat dan op AAXX */
CREATE OR REPLACE VIEW aaxx_v_export_exact (
result,
result_order,
adm_exact
)
AS
SELECT result, result_order, adm_exact
FROM aaxx_v_export_exact_xml;
CREATE OR REPLACE VIEW aaxx_v_bron_export_exact_xml
(
fin_factuur_key,
oms25,
opdracht_id,
factuur_nr,
datum,
crdnr,
projectnr,
projectnr_kp,
projectnaam,
bedrag_txt,
bedrag,
bedrag_incl,
betaalref,
itemcode,
reknr,
kstplcode,
kstdrcode,
btw_code,
lev_kpn,
administratie
)
AS
SELECT fin_factuur_key,
fin_factuur_nr
|| ' - '
|| REPLACE (SUBSTR (fin_factuur_opmerking, 1, 30), ',', '')
oms25,
opdracht_id,
fin_factuur_nr,
TO_CHAR (fin_factuur_datum, 'yyyy-mm-dd') datum,
(SELECT prs_leverancier_nr
FROM prs_bedrijf b
WHERE b.prs_bedrijf_key = fg.prs_bedrijf_key)
crdnr,
project_nummer,
project_nummer_kp,
project_naam,
REPLACE (TO_CHAR (bedrag), ',', '.') bedrag_txt,
bedrag,
bedrag_incl,
fin_factuur_nr || '/' || fin_factuur_debiteur_nr betaalref,
prs_kostensoort_oms itemcode,
prs_kostensoort_refcode reknr,
DECODE (
aaxx_get_user,
'IT', (SELECT DECODE (INSTR(prs_kostenplaats_nr, '/'), 0, prs_kostenplaats_nr, SUBSTR(prs_kostenplaats_nr, 1, INSTR(prs_kostenplaats_nr, '/')-1))
FROM prs_kostenplaats kp
WHERE kp.prs_kostenplaats_key = fg.prs_kostenplaats_key),
'GUL',
(select exact_code from aaxx_v_exact_code_gebouw_fac ecgf where ecgf.fin_factuur_key = fg.fin_factuur_key),
'INLO',
(select klantcode from aaxx_v_klantcode_gebouw_fac kcgf where kcgf.fin_factuur_key = fg.fin_factuur_key),
'ARCADIS',
DECODE (cnt_contract_key, NULL,
(select exact_code from aaxx_v_exact_code_gebouw_fac ecgf where ecgf.fin_factuur_key = fg.fin_factuur_key),
'999999'),
'DSM',
(select exact_code from aaxx_v_exact_code_district_fac ecgf where ecgf.fin_factuur_key = fg.fin_factuur_key),
'EXPO',
DECODE (
(SELECT MAX(l.alg_district_key)
FROM (SELECT l.alg_locatie_key
FROM alg_locatie l, mld_melding m, mld_opdr o
WHERE l.alg_locatie_key = m.mld_alg_locatie_key
AND m.mld_melding_key = o.mld_melding_key
AND o.mld_opdr_key = fg.mld_opdr_key
UNION
SELECT cnt_alg_plaats_key
FROM cnt_contract_plaats cp
WHERE cp.cnt_contract_key = fg.cnt_contract_key
AND cnt_alg_plaats_code = 'L'
UNION
SELECT g.alg_locatie_key
FROM cnt_contract_plaats cp, alg_gebouw g
WHERE cp.cnt_contract_key = fg.cnt_contract_key
AND cnt_alg_plaats_code = 'G'
AND cp.cnt_alg_plaats_key = g.alg_gebouw_key) lg,
alg_locatie l
WHERE l.alg_locatie_key = lg.alg_locatie_key),
61, '03701000', -- 03701000 Nationale Nederlanden
62, '03700000', -- 4001 Handel Amsterdam
'Onbekend'),
'SABIC',
DECODE (
(SELECT MAX(alg_locatie_key)
FROM (SELECT l.alg_locatie_key
FROM alg_locatie l, mld_melding m, mld_opdr o
WHERE l.alg_locatie_key = m.mld_alg_locatie_key
AND m.mld_melding_key = o.mld_melding_key
AND o.mld_opdr_key = fg.mld_opdr_key
UNION
SELECT cnt_alg_plaats_key
FROM cnt_contract_plaats cp
WHERE cp.cnt_contract_key = fg.cnt_contract_key
AND cnt_alg_plaats_code = 'L'
UNION
SELECT g.alg_locatie_key
FROM cnt_contract_plaats cp, alg_gebouw g
WHERE cp.cnt_contract_key = fg.cnt_contract_key
AND cnt_alg_plaats_code = 'G'
AND cp.cnt_alg_plaats_key = g.alg_gebouw_key
UNION -- Ticket 57282 - Aanvulling interface met Bestelopdr
SELECT ma.alg_locatie_key
FROM bes_bestelopdr bo, mld_adres ma
WHERE bo.bes_bestelopdr_key = fg.bes_bestelopdr_key
AND bo.mld_adres_key_lev = ma.mld_adres_key )),
101, -- Bergen op Zoom BOZ
'00601000',
102, -- Raamsdonksveer RDV
'00601000',
121, -- Genk AASA#66258
'00602000',
'00600000'), -- AASA#51917
'SMKA',
(select exact_code from aaxx_v_exact_code_district_fac ecgf where ecgf.fin_factuur_key = fg.fin_factuur_key),
'999999'
) kstplcode,
DECODE (
aaxx_get_user,
'IT', (SELECT DECODE (kp.prs_kostenplaats_nr, '00100001', (SELECT exact_code FROM aaxx_v_exact_code_gebouw_fac ecgf WHERE ecgf.fin_factuur_key = fg.fin_factuur_key),
DECODE (INSTR(prs_kostenplaats_nr, '/'), 0, '99999999',
SUBSTR(prs_kostenplaats_nr, INSTR(prs_kostenplaats_nr, '/')+1)))
FROM prs_kostenplaats kp
WHERE kp.prs_kostenplaats_key = fg.prs_kostenplaats_key),
'KD999999') kstdrcode,
fin_btwtabelwaarde_code btw_code,
lev_kpn,
administratie
FROM ( SELECT g.fin_factuur_key,
opdracht_id,
project_nummer,
project_nummer_kp,
project_naam,
fin_factuur_datum,
fin_factuur_nr,
prs_bedrijf_key,
fin_factuur_debiteur_nr,
fin_factuur_opmerking,
SUM (fin_factuurregel_totaal) bedrag,
SUM (fin_factuurregel_totaal + fin_factuurregel_btw) bedrag_incl,
fin_btwtabelwaarde_code,
prs_kostensoort_oms,
prs_kostensoort_refcode,
mld_opdr_key,
cnt_contract_key,
bes_bestelopdr_key,
prs_kostenplaats_key,
lev_kpn,
administratie
FROM aaxx_v_factuur_gegevens g, aaxx_exp_factuur e
WHERE fin_factuur_statuses_key = 6
AND g.fin_factuur_key = e.fin_factuur_key
GROUP BY g.fin_factuur_key,
opdracht_id,
project_nummer,
project_nummer_kp,
project_naam,
fin_factuur_datum,
fin_factuur_nr,
prs_bedrijf_key,
fin_factuur_debiteur_nr,
fin_factuur_opmerking,
fin_btwtabelwaarde_code,
prs_kostensoort_oms,
prs_kostensoort_refcode,
mld_opdr_key,
cnt_contract_key,
bes_bestelopdr_key,
prs_kostenplaats_key,
lev_kpn,
administratie) fg;
-- View om te bepalen welke administatie we moeten gebruiken. AAIT heeft vijf administraties.
-- De andere accounts vooralsnog <20><>n
CREATE OR REPLACE VIEW aaxx_v_administratie
AS
SELECT '001' administratie
FROM DUAL
WHERE aaxx_get_user = 'IT'
UNION ALL
SELECT '012'
FROM DUAL
WHERE aaxx_get_user = 'IT'
UNION ALL
SELECT '013'
FROM DUAL
WHERE aaxx_get_user = 'IT'
UNION ALL
SELECT '400'
FROM DUAL
WHERE aaxx_get_user = 'IT'
UNION ALL
SELECT '500'
FROM DUAL
WHERE aaxx_get_user = 'IT'
UNION ALL
SELECT NULL
FROM DUAL
WHERE aaxx_get_user <> 'IT';
-- Procedure om alle facturen te exporteren naar exact.
CREATE OR REPLACE PROCEDURE aaxx_select_exact_xml (p_applname IN VARCHAR2,
p_applrun IN VARCHAR2
)
AS
CURSOR c (c_administratie VARCHAR2)
IS
SELECT crdnr, factuur_nr, MAX(datum) datum
FROM aaxx_v_bron_export_exact_xml
WHERE COALESCE(administratie, 'LEEG') = COALESCE(c_administratie, 'LEEG')
GROUP BY crdnr, factuur_nr;
CURSOR c_sub (c_administratie VARCHAR2, c_crdnr VARCHAR2, c_factuur_nr VARCHAR2)
IS
SELECT *
FROM aaxx_v_bron_export_exact_xml
WHERE COALESCE(crdnr, 'CrdNr') = COALESCE(c_crdnr, 'CrdNr')
AND factuur_nr = c_factuur_nr
AND COALESCE(administratie, 'LEEG') = COALESCE(c_administratie, 'LEEG');
CURSOR c_adm
IS
SELECT * FROM aaxx_v_administratie;
v_order_count NUMBER;
v_amount_sum NUMBER(10,2);
v_amount_sum_incl NUMBER(10,2);
v_count NUMBER;
v_sub_count NUMBER;
v_bestand VARCHAR2(12);
v_boekstuknummer NUMBER;
v_crdnr PRS_BEDRIJF.PRS_LEVERANCIER_NR%TYPE;
v_factuur_nr FIN_FACTUUR.FIN_FACTUUR_NR%TYPE;
v_prefix VARCHAR2(10);
BEGIN
v_order_count := 0;
v_amount_sum := 0;
v_amount_sum_incl := 0;
v_bestand := SUBSTR(p_applname, 1, 12);
v_crdnr := 'Q';
v_factuur_nr := 'Q';
-- Eerst opruiming
DELETE FROM imp_log
WHERE imp_log_applicatie = p_applname;
DELETE fac_rapport
WHERE fac_rapport_node = v_bestand;
-- Verwijder het kenmerk boekstuknummer van de facturen die niet op verwerkt staan
-- ## AAIT#36589
DELETE fin_kenmerkfactuur kf
WHERE fin_kenmerk_key = 3
AND fin_factuur_key IN (SELECT fin_factuur_key
FROM fin_factuur
WHERE fin_factuur_statuses_key <> 7);
-- Bewaar de factuur keys in een tijdelijke tabel zodat bij het verwerken (nieuwe export)
-- deze keys gebruikt kunnen worden.
DELETE aaxx_exp_factuur;
INSERT INTO aaxx_exp_factuur (fin_factuur_key, administratie)
( SELECT DISTINCT fin_factuur_key, DECODE(aaxx_get_user, 'IT', SUBSTR(prs_kostenplaatsgrp_nr,1,3), NULL)
FROM aaxx_v_factuur_gegevens fg, prs_kostenplaats kp, prs_kostenplaatsgrp kpg
WHERE fg.prs_kostenplaats_key = kp.prs_kostenplaats_key
AND kp.prs_kostenplaatsgrp_key = kpg.prs_kostenplaatsgrp_key(+)
AND fg.fin_factuur_statuses_key = 6
AND (fg.fin_factuur_controle IS NULL OR fg.fin_factuur_controle = 1 AND fg.fin_factuur_controle_ok = 1)
AND fg.fin_factuur_datum > SYSDATE - (5 * 365) -- Check op geldige factuurdatum:
AND fg.fin_factuur_datum < SYSDATE + 365 -- facturen mogen niet ouder zijn dan 5 jaar of meer dan <20><>n jaar in de toekomst.
);
-- Bepaal het boekstuknummer (key 3) met het hoogste nummer van dit jaar
-- ## AAIT#36589
SELECT MAX(fin_kenmerkfactuur_waarde)
INTO v_boekstuknummer
FROM fin_kenmerkfactuur
WHERE fin_kenmerk_key = 3
AND SUBSTR(fin_kenmerkfactuur_waarde,1,2) = TO_CHAR(SYSDATE, 'YY');
IF v_boekstuknummer IS NULL
THEN
v_boekstuknummer := FAC.safe_to_number(TO_CHAR(SYSDATE, 'YY') || '000000');
END IF;
FOR rec_adm IN c_adm
LOOP
BEGIN
v_order_count := 0;
v_amount_sum := 0;
v_amount_sum_incl := 0;
IF rec_adm.administratie IS NULL
THEN
v_prefix := NULL;
ELSE
v_prefix := rec_adm.administratie || '##';
END IF;
-- header
aaxx_add_xml_row_p (v_bestand, v_prefix, '<?xml version="1.0" encoding="windows-1252"?>');
aaxx_add_xml_row_p (v_bestand, v_prefix, '<eExact>');
aaxx_add_xml_row_p (v_bestand, v_prefix, '<GLEntries>');
FOR rec IN c(rec_adm.administratie)
LOOP
BEGIN
-- Als we een nieuwe leverancier/factuurnummer tegenkomen gaan we het boekstuknummer ophogen.
IF rec.crdnr <> v_crdnr OR rec.factuur_nr <> v_factuur_nr
THEN
v_boekstuknummer := v_boekstuknummer + 1;
v_crdnr := rec.crdnr;
v_factuur_nr := rec.factuur_nr;
END IF;
aaxx_add_xml_row_p (v_bestand, v_prefix, '<GLEntry status="E" entry="' || xml.char_to_html(v_boekstuknummer) || '">');
aaxx_add_xml_element_p (v_bestand, v_prefix, 'Description', rec.factuur_nr);
aaxx_add_xml_element_p (v_bestand, v_prefix, 'Date', rec.datum);
aaxx_add_xml_element_p (v_bestand, v_prefix, 'DocumentDate', TO_CHAR(SYSDATE, 'YYYY-MM-DD') );
aaxx_add_xml_row_p (v_bestand, v_prefix, '<Journal type="I" code="42"/>');
v_sub_count := 1;
FOR rec1 IN c_sub (rec_adm.administratie, v_crdnr, v_factuur_nr)
LOOP
BEGIN
-- Eerst maar even een kenmerk voor het boestuknummer aanmaken
aaxx_set_kenmerk('FIN', 3, rec1.fin_factuur_key, v_boekstuknummer, 0);
aaxx_add_xml_row_p (v_bestand, v_prefix, '<FinEntryLine number="' || v_sub_count || '" subtype="T" type="N">');
aaxx_add_xml_element_p (v_bestand, v_prefix, 'Date', rec1.datum);
aaxx_add_xml_row_p (v_bestand, v_prefix, '<GLAccount code="' || xml.char_to_html(rec1.reknr) || '"/>');
-- Meldingnummer alleen vermelden voor opdrachten met type 'Projectorder'
IF (rec1.projectnr IS NOT NULL)
THEN
aaxx_add_xml_element_p (v_bestand, v_prefix, 'Description', rec1.oms25);
aaxx_add_xml_row_p (v_bestand, v_prefix, '<Project code="' || rec1.projectnr || '" type="I" status="A">');
aaxx_add_xml_element_p (v_bestand, v_prefix, 'Description', rec1.projectnaam);
aaxx_add_xml_row_p (v_bestand, v_prefix, '</Project>');
ELSE IF (rec1.projectnr_kp IS NOT NULL)
THEN
aaxx_add_xml_element_p (v_bestand, v_prefix, 'Description', rec1.oms25);
aaxx_add_xml_row_p (v_bestand, v_prefix, '<Project code="' || rec1.projectnr_kp || '" type="I" status="A">');
aaxx_add_xml_element_p (v_bestand, v_prefix, 'Description', rec1.projectnaam);
aaxx_add_xml_row_p (v_bestand, v_prefix, '</Project>');
ELSE
aaxx_add_xml_element_p (v_bestand, v_prefix, 'Description', rec1.oms25);
END IF;
END IF;
aaxx_add_xml_row_p (v_bestand, v_prefix, '<Costcenter code="' || xml.char_to_html(rec1.kstplcode) || '"/>');
aaxx_add_xml_row_p (v_bestand, v_prefix, '<Costunit code="' || xml.char_to_html(rec1.kstdrcode) || '"/>');
aaxx_add_xml_row_p (v_bestand, v_prefix, '<Creditor number="' || xml.char_to_html(rec1.crdnr) || '"/>');
-- AAIT#23838: kostensoort niet opnemen voor inkoopfacturen IT
IF ( NOT(aaxx_get_user = 'IT' AND COALESCE(rec1.lev_kpn, 'GEEN') <> '2000700') )
THEN
aaxx_add_xml_row_p (v_bestand, v_prefix, '<Item code="' || xml.char_to_html(rec1.itemcode) || '"/>');
END IF;
aaxx_add_xml_row_p (v_bestand, v_prefix, '<Amount>');
aaxx_add_xml_element_p (v_bestand, v_prefix, 'Debit', rec1.bedrag_txt);
aaxx_add_xml_row_p (v_bestand, v_prefix, '<VAT code="' || xml.char_to_html(rec1.btw_code) || '"/>');
aaxx_add_xml_row_p (v_bestand, v_prefix, '</Amount>');
aaxx_add_xml_row_p (v_bestand, v_prefix, '<Payment>');
aaxx_add_xml_element_p (v_bestand, v_prefix, 'Reference', rec1.betaalref);
aaxx_add_xml_element_p (v_bestand, v_prefix, 'InvoiceNumber', rec1.fin_factuur_key); -- of moet dit v_boekstuknummer worden????
aaxx_add_xml_row_p (v_bestand, v_prefix, '</Payment>');
aaxx_add_xml_row_p (v_bestand, v_prefix, '<FinReferences>');
aaxx_add_xml_element_p (v_bestand, v_prefix, 'YourRef', rec1.betaalref);
aaxx_add_xml_element_p (v_bestand, v_prefix, 'DocumentDate', TO_CHAR(SYSDATE, 'YYYY-MM-DD') );
aaxx_add_xml_row_p (v_bestand, v_prefix, '</FinReferences>');
aaxx_add_xml_row_p (v_bestand, v_prefix, '<FreeFields>');
aaxx_add_xml_row_p (v_bestand, v_prefix, '<FreeTexts>');
aaxx_add_xml_row_p (v_bestand, v_prefix, '<FreeText number="3">' || rec1.opdracht_id || '</FreeText>');
aaxx_add_xml_row_p (v_bestand, v_prefix, '</FreeTexts>');
aaxx_add_xml_row_p (v_bestand, v_prefix, '</FreeFields>');
aaxx_add_xml_row_p (v_bestand, v_prefix, '</FinEntryLine>');
v_sub_count := v_sub_count + 1;
v_amount_sum := v_amount_sum + rec1.bedrag;
v_amount_sum_incl := v_amount_sum_incl + rec1.bedrag_incl;
END;
END LOOP;
IF v_sub_count = 1
THEN
fac.writelog (p_applname, 'E', 'Fout tijdens Exact export. Factuurnummer: ' || v_factuur_nr || ' Crdnr: ' || v_crdnr,'');
END IF;
aaxx_add_xml_row_p (v_bestand, v_prefix, '</GLEntry>');
v_order_count := v_order_count + 1;
END;
END LOOP;
aaxx_add_xml_row_p (v_bestand, v_prefix, '</GLEntries>');
aaxx_add_xml_row_p (v_bestand, v_prefix, '</eExact>');
fac.writelog (p_applname, 'S', 'Exact export uitgevoerd (' || rec_adm.administratie || '). Aantal regels: ' || v_order_count || ' Totaal bedrag: ' || v_amount_sum || ' Totaal bedrag (incl): ' || v_amount_sum_incl, '');
END;
END LOOP;
END;
/
/* nieuwe procedure om oude aaxx_select_exact_xml procedure op termijn te vervangen. Door gebruik te maken
van de nieuwe procedure hoeft er per klant geen specifieke export in de cust.sql. De prefix in de
export tabel staat dan op AAXX */
CREATE OR REPLACE PROCEDURE aaxx_select_exact (p_applname IN VARCHAR2,
p_applrun IN VARCHAR2
)
AS
BEGIN
aaxx_select_exact_xml (p_applname, p_applrun);
END;
/
-- Procedure om alle facturen te exporteren naar exact.
CREATE OR REPLACE PROCEDURE aaxx_export_exact (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2,
p_filedir IN VARCHAR2,
p_filename IN VARCHAR2
)
AS
v_errormsg VARCHAR (200);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
BEGIN
-- functionaliteit verplaatst naar aaxx_select_exact_xml procedure om er zeker van te zijn dat
-- de aaxx_exp_factuur tabel eerst gevuld wordt alvorens de XML gegenereerd wordt. AAVL#27120 en AAEN#26362
-- AAFM#40866
-- Verwerk actie direct starten na de EXPORT_EXACT
INSERT INTO imp_schedule (imp_schedule_name) VALUES ('VERWERK_EXACT');
END;
/
-------------------------------------------------------------------------------
-- EXPORTFUNCTIE - Export exact verwerk
-------------------------------------------------------------------------------
CREATE OR REPLACE VIEW aaxx_v_export_verwerk_exact (
result,
result_order
)
AS
SELECT REPLACE(REPLACE(f.fin_factuur_key
|| ';'
|| opdracht_id
|| ';'
|| fin_factuur_datum
|| ';'
|| fin_factuur_nr
|| ';'
|| prs_bedrijf_key
|| ';'
|| fin_factuurregel_totaal
|| ';'
|| fin_factuurregel_btw
|| ';'
|| fin_factuurregel_nr
|| ';'
|| fin_factuur_debiteur_nr
|| ';'
|| project_nummer
|| ';'
|| prs_kostensoort_refcode
|| ';'
|| mld_opdr_key
|| ';'
|| cnt_contract_key
,CHR (13), ''), CHR (10), '<ret>'), f.fin_factuur_key
FROM aaxx_exp_factuur f,
aaxx_v_factuur_gegevens fg
WHERE f.fin_factuur_key = fg.fin_factuur_key
AND fg.fin_factuur_statuses_key = 6;
-- Procedure om alle geexporteerde facturen naar status verwerkt te zetten.
-- Gebruik verkoopfactuur:
-- fin_verkoopfactuur_id datum + referentie
-- fin_verkoopfactuur_xmlnode opdracht / contract / bestelopdr / opdr_uren
-- fin_verkoopfactuur_refkey key naar het record
-- fin_verkoopfactuur_aanmaak sysdate
-- prs_kostenplaats_nr kostenplaatsnr
-- prs_debiteur_naam debiteurnummer
-- prs_kostensoort_oms kostensoort
-- prs_kostensoort_opmerking kostensoort_opmerking wordt niet gebruikt voor verkoopfacturen
-- prs_kostensoort_refcode grootboekrekening
-- prs_kostensoortgrp_oms referentie, omschrijving van de factuur (kolom 4 vd hoofdregel)
-- fin_verkoopfactuur_omschr omschrijving subregel
-- fin_verkoopfactuur_bedrag
-- fin_btwtabelwaarde_code
-- fin_verkoopfactuur_maand jaar in verband met boekingen op balansrekening als op vorige jaren
-- fin_verkoopfactuur_c1 Exact code van het gebouw. Is kenmerk van gebouw
-- fin_verkoopfactuur_c2 Groepering van de kopregel van de factuur.
-- fin_verkoopfactuur_c3 Volgorde van de subregels van de factuur.
-- fin_verkoopfactuur_c4 Alleen bij RABO gevuld voor EXACT_VASTVAR (verkoopinterface voor interne opdrachttype 'Vast/Variabel')
-- module, export_datum, prs_kostenplaats_nr, debiteur, prs_kostensoort_oms, prs_kostensoort_opmerking, prs_kostensoort_refcode, prs_kostensoortgrp_oms, omschrijving, bedrag, btw, fin_btwtabelwaarde_code, opdr_jaar, exact_code_gebouw, groepering, subregelvolgorde
-- fin_verkoopfactuur_id, fin_verkoopfactuur_xmlnode, fin_verkoopfactuur_refkey, fin_verkoopfactuur_aanmaak, prs_kostenplaats_nr, prs_debiteur_naam, prs_kostensoort_oms, prs_kostensoort_opmerking, prs_kostensoortgrp_oms, fin_verkoopfactuur_omschr, fin_verkoopfactuur_bedrag, fin_btwtabelwaarde_code, fin_verkoopfactuur_maand, fin_verkoopfactuur_c1, fin_verkoopfactuur_c2, fin_verkoopfactuur_c3
CREATE OR REPLACE PROCEDURE aaxx_export_verwerk_exact (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2,
p_filedir IN VARCHAR2,
p_filename IN VARCHAR2
)
AS
CURSOR c_fact
IS
SELECT DISTINCT f.fin_factuur_key
FROM aaxx_exp_factuur f
, aaxx_v_factuur_gegevens fg
WHERE f.fin_factuur_key = fg.fin_factuur_key
AND fg.fin_factuur_statuses_key = 6;
CURSOR c_opdr
IS
SELECT distinct fg.mld_opdr_key, mld_statusopdr_key, m.mld_melding_status, m.mld_melding_key
FROM aaxx_exp_factuur f
, aaxx_v_factuur_gegevens fg
, mld_opdr o
, mld_melding m
WHERE f.fin_factuur_key = fg.fin_factuur_key
AND fg.mld_opdr_key = o.mld_opdr_key
AND o.mld_melding_key = m.mld_melding_key
AND laatste_factuur = 1
AND fg.fin_factuur_statuses_key = 6;
CURSOR c_bes
IS
SELECT bo.*
FROM aaxx_exp_factuur f
, aaxx_v_factuur_gegevens fg
, bes_bestelopdr bo
WHERE f.fin_factuur_key = fg.fin_factuur_key
AND fg.bes_bestelopdr_key = bo.bes_bestelopdr_key
AND laatste_factuur = 1
AND fg.fin_factuur_statuses_key = 6;
-- pas de bedragen in het factuurschema aan als de laatste factuur ontvangen is.
CURSOR c_cnt
IS
SELECT DISTINCT fg.cnt_contract_key, fs.cnt_factuurschema_key
FROM aaxx_exp_factuur f,
aaxx_v_factuur_gegevens fg,
cnt_contract c,
cnt_factuurschema fs
WHERE f.fin_factuur_key = fg.fin_factuur_key
AND fg.cnt_contract_key = c.cnt_contract_key
AND c.cnt_contract_key = fs.cnt_contract_key
AND fg.fin_factuur_boekmaand = fs.cnt_factuurschema_boekmaand
AND laatste_factuur = 1
AND fg.fin_factuur_statuses_key = 6;
CURSOR c_sync_kostensoort
IS
SELECT COALESCE (kstd.prs_kostensoort_key, kvg.prs_kostensoort_key)
std_kostensoort_key,
f.prs_kostensoort_key fac_kostensoort_key,
f.fin_factuur_key
FROM fin_factuur f,
aaxx_exp_factuur ef,
mld_opdr o,
mld_melding m,
mld_stdmelding std,
ins_tab_discipline md,
prs_kostensoort kstd,
prs_kostensoort kvg
WHERE f.fin_factuur_key = ef.fin_factuur_key
AND f.mld_opdr_key = o.mld_opdr_key
AND m.mld_melding_key = o.mld_melding_key
AND m.mld_stdmelding_key = std.mld_stdmelding_key
AND std.mld_ins_discipline_key = md.ins_discipline_key
AND std.prs_kostensoort_key = kstd.prs_kostensoort_key(+)
AND md.prs_kostensoort_key = kvg.prs_kostensoort_key(+);
v_errormsg VARCHAR (200);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_aanvrager NUMBER;
v_bestelling_key NUMBER;
v_logdate DATE;
BEGIN
v_errormsg := 'Geen akties';
-- Facilitor user
v_aanvrager := 4;
-- AAIT#34097 aanpassen kostensoort bij factuur. Soms wordt de stdmelding aangepast terwijl
-- er al een factuur geboekt is. Door bij het verwerken van de factuur deze kostensoort nog
-- aan te passen wordt voorkomen dat hier verschillen gaan ontstaan.
-- AAIT#36442 AAIT niet meenemen in dit mechanisme omdat bij AAIT de kostensoort uit de opdracht
-- gehaald wordt.
IF aaxx_get_user <> 'IT'
THEN
v_errormsg := 'Aanpassen kostensoort';
FOR reck IN c_sync_kostensoort
LOOP
BEGIN
IF reck.fac_kostensoort_key <> reck.std_kostensoort_key
THEN
UPDATE fin_factuur
SET prs_kostensoort_key = reck.std_kostensoort_key
WHERE fin_factuur_key = reck.fin_factuur_key;
-- Pas de login aan
INSERT INTO fac_tracking (fac_tracking_refkey, fac_srtnotificatie_key, fac_tracking_oms)
SELECT reck.fin_factuur_key, fac_srtnotificatie_key, 'Kostensoort aangepast in factuur export'
FROM fac_srtnotificatie
WHERE fac_srtnotificatie_code = 'FINUPD';
END IF;
END;
END LOOP;
END IF;
-- Verkoopinterface
v_logdate := SYSDATE;
-- voeg SA en ST opdrachten toe aan de fin_verkoopfacturen (vh. verkoopbuffer)
-- BTW tarief in verkoopbuffer is altijd 19 procent (AADS#18338)
INSERT INTO fin_verkoopfactuur
(
-- module, export_datum, prs_kostenplaats_nr, debiteur, prs_kostensoort_oms, prs_kostensoort_opmerking, prs_kostensoort_refcode, prs_kostensoortgrp_oms, omschrijving, bedrag, btw, fin_btwtabelwaarde_code, opdr_jaar, exact_code_gebouw, groepering, subregelvolgorde
fin_verkoopfactuur_id, fin_verkoopfactuur_xmlnode, fin_verkoopfactuur_refkey, fin_verkoopfactuur_aanmaak, prs_kostenplaats_nr, prs_debiteur_naam, prs_bedrijf_key, prs_kostensoort_oms, prs_kostensoort_opmerking, prs_kostensoortgrp_oms, fin_verkoopfactuur_omschr, fin_verkoopfactuur_bedrag, fin_btwtabelwaarde_code, fin_verkoopfactuur_maand, fin_verkoopfactuur_c1, fin_verkoopfactuur_c2, fin_verkoopfactuur_c3, fin_verkoopfactuur_n1, fin_verkoopfactuur_n2
)
SELECT substr(to_char(v_logdate, 'dd-mm-yyyy') || ' - ' || sd.ins_srtdiscipline_prefix || m.mld_melding_key || '/' || mld_opdr_bedrijfopdr_volgnr, 1,30 ),
'opdracht',
o.mld_opdr_key,
v_logdate,
DECODE (aaxx_get_user, 'AH', k.prs_kostenplaats_nr,
'DOW', k.prs_kostenplaats_nr,
'DSM', DECODE (SUBSTR(ks.prs_kostensoort_upper,1,3) , 'CV ', DECODE (l.alg_locatie_code, 'ZWO', '913848',
'EMM', aaxx_get_top_dep_code(k.prs_kostenplaats_nr),
'DLF', aaxx_get_top_dep_code(k.prs_kostenplaats_nr),
'520'),
'CVE', aaxx_get_top_dep_code(k.prs_kostenplaats_nr),
'L C', DECODE (SUBSTR(ks.prs_kostensoort_upper,1,5), 'L CV ', DECODE (l.alg_locatie_code, 'ZWO', '913848',
'EMM', aaxx_get_top_dep_code(k.prs_kostenplaats_nr),
'DLF', aaxx_get_top_dep_code(k.prs_kostenplaats_nr),
'520'),
'L CVE', aaxx_get_top_dep_code(k.prs_kostenplaats_nr))),
'EXPO', DECODE(aaxx_get_top_dep_code(k.prs_kostenplaats_nr), '913918', '03701000',
'4001', '03700000',
'Onbekend'),
'ESSENT', '912001',
'INLO', k.prs_kostenplaats_nr, -- Wordt niet gebruikt
'NMM', 'MGB',
'SABIC', DECODE (to_char(opdr_datum, 'YYYY'), '2012', k.prs_kostenplaats_nr,
'2013', k.prs_kostenplaats_nr,
aaxx_get_top_dep_code(k.prs_kostenplaats_nr)),
SUBSTR (prs_kostenplaats_nr, 1, 30)) prs_kostenplaats_nr,
DECODE (aaxx_get_user, 'AH', DECODE(aaxx_get_top_bedrijf_key(k.prs_kostenplaats_nr), 13383, k.prs_kostenplaats_nr, aaxx_get_top_dep_code(k.prs_kostenplaats_nr)),
'DOW', substr(aaxx_get_top_dep_code(k.prs_kostenplaats_nr),1,6),
'DSM', DECODE (SUBSTR(ks.prs_kostensoort_upper,1,3) , 'CV ', DECODE (l.alg_locatie_code, 'ZWO', '913848',
'EMM', aaxx_get_top_dep_code(k.prs_kostenplaats_nr),
'DLF', aaxx_get_top_dep_code(k.prs_kostenplaats_nr),
'520'),
'CVE', aaxx_get_top_dep_code(k.prs_kostenplaats_nr),
'L C', DECODE (SUBSTR(ks.prs_kostensoort_upper,1,5), 'L CV ', DECODE (l.alg_locatie_code, 'ZWO', '913848',
'EMM', aaxx_get_top_dep_code(k.prs_kostenplaats_nr),
'DLF', aaxx_get_top_dep_code(k.prs_kostenplaats_nr),
'520'),
'L CVE', aaxx_get_top_dep_code(k.prs_kostenplaats_nr))),
'EXPO', aaxx_get_top_dep_code(k.prs_kostenplaats_nr),
'INLO', (SELECT kp.prs_kostenplaats_nr FROM prs_kostenplaats kp
WHERE kp.prs_kostenplaats_key = aaxx_get_top_kpn_key (k.prs_kostenplaats_key)),
'ESSENT', '912001',
'NMM', DECODE(k.prs_kostenplaats_nr,
'0001', '913799', -- Heijmans
'0002', '913810', -- Vermaat
'0003', '913766', -- Defensie
'0004', '913776', -- Stichting Nationaal Militair Museum
'Onbekend'
),
'RABO', aaxx_get_dep_code(k.prs_kostenplaats_nr),
'SABIC', DECODE (to_char(opdr_datum, 'YYYY'), '2012', aaxx_get_top_dep_code(k.prs_kostenplaats_nr),
'2013', aaxx_get_top_dep_code(k.prs_kostenplaats_nr),
(SELECT distinct prs_leverancier_nr FROM prs_bedrijf b, prs_afdeling a
WHERE b.prs_bedrijf_key = a.prs_bedrijf_key
AND b.prs_bedrijf_verwijder IS NULL
AND a.prs_afdeling_verwijder IS NULL
AND a.prs_afdeling_naam = aaxx_get_top_dep_code(k.prs_kostenplaats_nr))),
'SMKA', COALESCE(aaxx_get_top_afdeling_kpkenm(k.prs_kostenplaats_key), TO_CHAR(k.prs_kostenplaats_nr)),
SUBSTR (prs_kostenplaats_nr, 1, 30)) debiteur,
b.prs_bedrijf_key,
ks.prs_kostensoort_oms || DECODE(TO_CHAR(opdr_datum,'YYYY'), TO_CHAR(TO_NUMBER(TO_CHAR(SYSDATE, 'yyyy'))-1), ' VJ','') ,
ks.prs_kostensoort_opmerking,
SUBSTR(DECODE (aaxx_get_user,
'AH', DECODE(SUBSTR(ks.prs_kostensoort_upper,1,2), 'CV', ksg.prs_kostensoortgrp_oms || DECODE(aaxx_get_top_bedrijf_key(k.prs_kostenplaats_nr), 13383, k.prs_kostenplaats_nr, aaxx_get_top_dep_code(k.prs_kostenplaats_nr)),
sd.ins_srtdiscipline_prefix || m.mld_melding_key),
'DOW', 'Service Charges',
'EXPO', DECODE(ks.prs_kostensoort_upper, 'NC PROJ', 'Projecten',
'Servicekosten Core Variabel'),
'INLO', DECODE(ks.prs_kostensoort_upper, 'NC PROJ', 'Projecten', 'Servicekosten Core Variabel'),
'RABO', DECODE(sd.ins_srtdiscipline_prefix, 'PR', 'Projecten',
'Servicekosten ' || aaxx_get_dep_code(k.prs_kostenplaats_nr)),
'SABIC', DECODE (l.alg_locatie_code, 'BOZ', 'Core Variabel ' || to_char(sysdate, 'Month'),
'RDV', 'Core Variabel ' || to_char(sysdate, 'Month'),
ksg.prs_kostensoortgrp_oms || ' ' || aaxx_get_top_dep_code(k.prs_kostenplaats_nr)),
'SMKA', DECODE(ks.prs_kostensoort_upper, 'NC PROJ', 'Projecten', 'Servicekosten Core Variabel'),
ksg.prs_kostensoortgrp_oms || DECODE (aaxx_get_user, 'DSM', DECODE (SUBSTR(ks.prs_kostensoort_upper,1,3) , 'CV ', ' ' || l.alg_locatie_code,
DECODE (SUBSTR(ks.prs_kostensoort_upper,1,5) , 'L CV ', ' ' || l.alg_locatie_code)),
'NMM', DECODE(k.prs_kostenplaats_nr, '0001', ' Heijmans',
'0002', ' Vermaat',
'0003', ' Defensie',
'0004', ' NMM',
' Onbekend')
)
)
, 1, 60) prs_kostensoortgrp_oms,
DECODE(aaxx_get_user, 'SABIC', ks.prs_kostensoort_altcode || ' ' || fin_btwtabelwaarde_code,
'EXPO', DECODE (prs_kostensoort_oms, 'NC PROJ', 'Project ' || m.mld_melding_onderwerp,
sd.ins_srtdiscipline_prefix || m.mld_melding_key || '/' || mld_opdr_bedrijfopdr_volgnr || ' ' || d.ins_discipline_omschrijving),
'INLO', DECODE (prs_kostensoort_oms, 'NC PROJ', 'Project ' || m.mld_melding_onderwerp,
sd.ins_srtdiscipline_prefix || m.mld_melding_key || '/' || mld_opdr_bedrijfopdr_volgnr || ' ' || d.ins_discipline_omschrijving),
'SMKA', DECODE (prs_kostensoort_oms, 'NC PROJ', 'Project ' || m.mld_melding_onderwerp,
sd.ins_srtdiscipline_prefix || m.mld_melding_key || '/' || mld_opdr_bedrijfopdr_volgnr || ' ' || d.ins_discipline_omschrijving),
sd.ins_srtdiscipline_prefix || m.mld_melding_key || '/' || mld_opdr_bedrijfopdr_volgnr || ' ' || d.ins_discipline_omschrijving
|| ' ('
|| (SELECT MAX(mld_kenmerkmelding_waarde)
FROM mld_kenmerkmelding km, mld_kenmerk k
WHERE km.mld_kenmerk_key = k.mld_kenmerk_key
AND aaxx_get_user = 'RABO'
AND k.mld_srtkenmerk_key = 55 -- projectnaam
AND km.mld_melding_key = m.mld_melding_key)
|| ')')
omschrijving,
ROUND (fg.bedrag
* COALESCE ( (SELECT u.uplift
FROM aaxx_imp_uplift u
WHERE u.prs_leverancier_nr = b.prs_leverancier_nr
AND UPPER(soort_order) = 'WO'
AND UPPER (u.prs_kostensoort_oms) =
ks.prs_kostensoort_upper
AND fg.fin_factuur_boekmaand =
u.jaar
|| '-'
|| LTRIM (TO_CHAR (u.maand, '00'))),
DECODE (aaxx_get_user, 'NMM', 1.1, 1)
),
2
),
DECODE (aaxx_get_user,
'EXPO' , DECODE (ks.prs_kostensoort_upper, 'CV CONS AUT', 2, fin_btwtabelwaarde_code), -- code 2 is 6 procent
fin_btwtabelwaarde_code) fin_btwtabelwaarde_code,
to_char(opdr_datum, 'YYYY'),
DECODE (aaxx_get_user,
'NMM', 'MGB',
'INLO', DECODE(aaxx_get_top_bedrijf_key (k.prs_kostenplaats_nr), 2081, '03603000', -- Henkel
2082, '03602000', -- VEH
2083, '03604000', -- Zwaansvliet
'onbekend'),
'SABIC', DECODE (l.alg_locatie_code, 'BOZ', '00601000',
'RDV', '00601000',
'00600000'),
'SMKA', COALESCE(exact2.exact_code,'onbekend'),
COALESCE(exact.exact_code, alg_gebouw_code)), -- C1
SUBSTR (
DECODE (aaxx_get_user, 'AH', DECODE (ks.prs_kostensoort_upper, 'NC PROJ', TO_CHAR(m.mld_melding_key)),
'EXPO', DECODE (prs_kostensoort_oms, 'NC PROJ', m.mld_melding_key || '-') || alg_locatie_code,
'INLO', DECODE (prs_kostensoort_oms, 'NC PROJ', m.mld_melding_key || '-',
(SELECT kp.prs_kostenplaats_nr FROM prs_kostenplaats kp
WHERE kp.prs_kostenplaats_key = aaxx_get_top_kpn_key (k.prs_kostenplaats_key))),
'DOW', substr(aaxx_get_top_dep_code(k.prs_kostenplaats_nr),1,8) ||
DECODE(substr(aaxx_get_top_dep_code(k.prs_kostenplaats_nr),1,3),
'911', DECODE(SUBSTR(ks.prs_kostensoort_upper, 1,5), 'NC P ', 'PR', 'NC/CV'),
'912', 'CV/NC/PR',
'913', DECODE(SUBSTR(ks.prs_kostensoort_upper, 1,7), 'COR VAR', 'CV', 'NC/PR'),
'Onbekend') ||
substr(aaxx_get_top_dep_code(k.prs_kostenplaats_nr),1,8),
'DSM', DECODE (SUBSTR(ks.prs_kostensoort_upper,1,3) , 'CV ', DECODE (l.alg_locatie_code, 'ZWO', '913848',
'EMM', aaxx_get_top_dep_code(k.prs_kostenplaats_nr),
'DLF', aaxx_get_top_dep_code(k.prs_kostenplaats_nr),
'520') || l.alg_locatie_code,
'CVE', aaxx_get_top_dep_code(k.prs_kostenplaats_nr),
'L C', DECODE (SUBSTR(ks.prs_kostensoort_upper,1,5), 'L CV ', DECODE (l.alg_locatie_code, 'ZWO', '913848',
'EMM', aaxx_get_top_dep_code(k.prs_kostenplaats_nr),
'DLF', aaxx_get_top_dep_code(k.prs_kostenplaats_nr),
'520') || l.alg_locatie_code,
'L CVE', aaxx_get_top_dep_code(k.prs_kostenplaats_nr))),
'RABO', aaxx_get_dep_code(k.prs_kostenplaats_nr) || DECODE (prs_kostensoort_oms, 'NC PROJ', m.mld_melding_key),
'SABIC',DECODE (l.alg_locatie_code, 'BOZ', to_char(sysdate, 'Month'),
'RDV', to_char(sysdate, 'Month'),
aaxx_get_top_dep_code(k.prs_kostenplaats_nr)),
'SMKA', DECODE (prs_kostensoort_oms, 'NC PROJ', 'NC- ' || m.mld_melding_key,
DECODE (ksg.prs_kostensoortgrp_oms, 'Core Variable', 'CV',
'Core Variable Enduser', 'CVE',
'onbekend') || '-' || COALESCE(aaxx_get_top_afdeling_kpkenm(k.prs_kostenplaats_key), TO_CHAR(k.prs_kostenplaats_nr))),
'')
, 1, 12) groepering, -- C2
DECODE (aaxx_get_user, 'DOW', 'A' || prs_kostensoort_oms,
'ESSENT', (SELECT uplift
FROM aaxx_imp_uplift u
WHERE u.prs_kostensoort_oms = ks.prs_kostensoort_oms),
'') subregelvolgorde, -- C3
l.alg_locatie_key, -- N1
aaxx_get_top_bedrijf_key(k.prs_kostenplaats_nr) -- N2 bedrijfskey van de hoogste afdeling
FROM mld_opdr o,
mld_typeopdr ot,
prs_bedrijf b,
prs_kostenplaats k,
prs_kostenplaatsgrp kpg,
mld_melding m,
mld_stdmelding std,
ins_tab_discipline d,
ins_srtdiscipline sd,
prs_kostensoort ks,
prs_kostensoortgrp ksg,
aaxx_exp_factuur f,
alg_gebouw g,
alg_locatie l,
alg_v_onroerendgoed og,
aaxx_v_exact_code_gebouw exact,
aaxx_v_exact_code_district exact2,
(SELECT fin_factuur_key,
mld_opdr_key,
SUM (fin_factuurregel_totaal) bedrag,
aaxx_get_verkoop_btw_code (fin_btwtabelwaarde_key) fin_btwtabelwaarde_code,
prs_kostenplaats_key,
prs_kostensoort_key,
prs_kostensoort_refcode,
fin_factuur_boekmaand,
opdr_datum,
fin_factuur_datum
FROM aaxx_v_factuur_gegevens
WHERE fin_factuur_statuses_key = 6
GROUP BY fin_factuur_key,
fin_btwtabelwaarde_key,
mld_opdr_key,
prs_kostenplaats_key,
prs_kostensoort_key,
fin_factuur_boekmaand,
opdr_datum,
fin_factuur_datum,
fin_factuurregel_btw,
fin_btwtabelwaarde_code,
prs_kostensoort_refcode,
fin_factuurregel_totaal) fg
WHERE fg.prs_kostenplaats_key = k.prs_kostenplaats_key(+)
AND o.mld_typeopdr_key = ot.mld_typeopdr_key
AND fg.mld_opdr_key = o.mld_opdr_key
AND m.mld_alg_onroerendgoed_keys = og.alg_onroerendgoed_keys(+)
AND og.alg_gebouw_key = g.alg_gebouw_key(+)
AND m.mld_alg_locatie_key = l.alg_locatie_key(+)
AND l.alg_district_key =exact2.alg_district_key (+)
AND og.alg_gebouw_key = exact.alg_gebouw_key(+)
AND fg.fin_factuur_key = f.fin_factuur_key
AND o.mld_melding_key = m.mld_melding_key
AND o.mld_uitvoerende_keys = b.prs_bedrijf_key
AND fg.prs_kostensoort_key = ks.prs_kostensoort_key(+)
AND ks.prs_kostensoortgrp_key = ksg.prs_kostensoortgrp_key(+)
AND k.prs_kostenplaatsgrp_key = kpg.prs_kostenplaatsgrp_key(+)
AND m.mld_stdmelding_key = std.mld_stdmelding_key
AND std.mld_ins_discipline_key = d.ins_discipline_key
AND d.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
AND (( sd.ins_srtdiscipline_prefix = 'SA'
AND aaxx_get_user <> 'AH'
AND aaxx_get_user <> 'DSM'
AND aaxx_get_user <> 'SABIC'
AND aaxx_get_user <> 'INLO'
AND aaxx_get_user <> 'DOW'
AND aaxx_get_user <> 'NMM'
AND aaxx_get_user <> 'RABO'
AND aaxx_get_user <> 'ESSENT'
AND aaxx_get_user <> 'EXPO'
AND aaxx_get_user <> 'IT'
AND aaxx_get_user <> 'SMKA')
OR ( aaxx_get_user = 'AH'
AND ( ks.prs_kostensoort_upper LIKE 'CV %'
OR ks.prs_kostensoort_upper LIKE 'NC PROJ%')
)
OR ( aaxx_get_user = 'DOW'
AND ( ot.mld_typeopdr_omschrijving = 'Workorder'
OR ot.mld_typeopdr_omschrijving = 'Projectorder')
AND ( ks.prs_kostensoort_upper LIKE 'NC %'
OR ks.prs_kostensoort_upper LIKE 'NC P %'
OR ks.prs_kostensoort_upper = 'COR VAR MAIL SERVICES'
OR ks.prs_kostensoort_upper = 'COR VAR VENDING'
OR ks.prs_kostensoort_upper = 'COR VAR MAIN HANDYMAN'
OR ks.prs_kostensoort_upper = 'COR VAR GEN TEN SERV'
)
)
OR ( aaxx_get_user = 'DSM'
AND ( ( SUBSTR(ks.prs_kostensoort_upper,1,3) = 'CV '
OR SUBSTR(ks.prs_kostensoort_upper,1,5) = 'L CV ')
AND g.alg_gebouw_code NOT IN ('122-170', '122-200', '122-094', '122-092')
AND l.alg_locatie_key NOT IN ('23', '41')) -- Waalwijk en de Beitel
OR SUBSTR(ks.prs_kostensoort_upper,1,3) = 'CVE'
OR SUBSTR(ks.prs_kostensoort_upper,1,5) = 'L CVE'
)
OR ( aaxx_get_user = 'ESSENT'
AND ks.prs_kostensoort_upper LIKE 'CVE%'
AND ot.mld_typeopdr_omschrijving = 'Workorder'
)
OR ( aaxx_get_user = 'EXPO'
AND ( ks.prs_kostensoort_upper LIKE 'CV %'
OR ks.prs_kostensoort_upper LIKE 'CVE %'
OR ks.prs_kostensoort_upper LIKE 'NC PROJ%')
)
OR ( aaxx_get_user = 'INLO'
AND ( ks.prs_kostensoort_upper LIKE 'CV %'
OR ks.prs_kostensoort_upper LIKE 'CVE %'
OR ks.prs_kostensoort_upper LIKE 'NC PROJ')
AND NOT EXISTS (SELECT ao.alg_onrgoed_key
FROM alg_onrgoedkenmerk ao
WHERE ao.alg_onrgoed_key = g.alg_gebouw_key
AND ao.alg_onrgoed_niveau='G'
AND ao.alg_kenmerk_key = 1100 -- kenmerkveld klant
AND ao.alg_onrgoedkenmerk_waarde= '264') -- waarde Greenport Venlo - Alleen alle andere locaties meenemen (VEH, Henkel,Zwaansvliet)
)
OR ( aaxx_get_user = 'NMM'
AND ks.prs_kostensoort_upper LIKE 'CVE%'
)
OR ( aaxx_get_user = 'RABO'
AND ( ( ks.prs_kostensoort_upper LIKE 'CV %'
AND ks.prs_kostensoort_upper <> 'CV DOC POST'
AND ot.mld_typeopdr_omschrijving = 'Workorder')
OR ot.mld_typeopdr_omschrijving = 'Projectorder'
)
)
OR ( aaxx_get_user = 'SABIC'
AND ( ( o.mld_opdr_datumbegin < to_date ('20180101', 'yyyymmdd') -- Voor sabic geldt in 2018 een ander mechanisme (AASA#28673)
AND ks.prs_kostensoort_upper LIKE 'CV %'
AND ks.prs_kostensoort_upper <> 'CV CHIP'
AND ( o.mld_opdr_datumbegin > to_date ('20150101', 'yyyymmdd') -- Voor sabic geldt voor 2015 een ander mechanisme (AASA#31618)
OR ( ks.prs_kostensoort_upper <> 'CV CONS REST'
AND ks.prs_kostensoort_upper <> 'CV CONS AUT'
AND ks.prs_kostensoort_upper <> 'CV SCH OVR'
AND ks.prs_kostensoort_upper <> 'CV DOC POST'
AND ks.prs_kostensoort_upper <> 'CV AFVAL REST'
)
)
AND ( ks.prs_kostensoort_upper <> 'CV EIG BOUW PL' OR ot.mld_typeopdr_omschrijving = 'Workorder')
)
OR ( o.mld_opdr_datumbegin > to_date ('20180101', 'yyyymmdd') -- Voor sabic geldt voor 2018 een ander mechanisme (AASA#28673)
AND ( ks.prs_kostensoort_upper LIKE 'CV %'
OR ks.prs_kostensoort_upper LIKE 'CVE%')
)
)
)
OR ( aaxx_get_user = 'SMKA'
AND ( ks.prs_kostensoort_upper LIKE 'CV %'
OR ks.prs_kostensoort_upper LIKE 'CVE %'
OR ks.prs_kostensoort_upper LIKE 'NC PROJ')
)
OR ( aaxx_get_user = 'IT'
AND ( SUBSTR(kpg.prs_kostenplaatsgrp_nr,1,6) IN ('400-VK', '500-VK') -- VK is verkoopfacturen (zie AAIT#69225)
)
)
);
-- Voeg contracten toe aan de verkoopinterface
INSERT INTO fin_verkoopfactuur
(
fin_verkoopfactuur_id, fin_verkoopfactuur_xmlnode, fin_verkoopfactuur_refkey, fin_verkoopfactuur_aanmaak, prs_kostenplaats_nr, prs_debiteur_naam, prs_bedrijf_key, prs_kostensoort_oms, prs_kostensoort_opmerking, prs_kostensoortgrp_oms, fin_verkoopfactuur_omschr, fin_verkoopfactuur_bedrag, fin_btwtabelwaarde_code, fin_verkoopfactuur_maand, fin_verkoopfactuur_c1, fin_verkoopfactuur_c2, fin_verkoopfactuur_c3, fin_verkoopfactuur_n1, fin_verkoopfactuur_n2
)
SELECT substr(to_char(v_logdate, 'dd-mm-yyyy') || ' - ' || 'C' || cnt_contract_nummer_intern || DECODE (cnt_contract_versie, NULL, '', '.' || cnt_contract_versie), 1,30 ),
'contract',
c.cnt_contract_key,
v_logdate,
DECODE (aaxx_get_user,
'AH', k.prs_kostenplaats_nr,
'EXPO', DECODE(aaxx_get_top_dep_code(k.prs_kostenplaats_nr), '913918', '03701000',
'4001', '03700000',
'Onbekend'),
'NMM', g.exact_code,
'DOW', k.prs_kostenplaats_nr,
'DSM', DECODE (SUBSTR(ks.prs_kostensoort_upper,1,3) , 'CV ', DECODE (l.alg_locatie_code, 'ZWO', '913848',
'EMM', aaxx_get_top_dep_code(k.prs_kostenplaats_nr),
'DLF', aaxx_get_top_dep_code(k.prs_kostenplaats_nr),
'520'),
'CVE', aaxx_get_top_dep_code(k.prs_kostenplaats_nr),
'L C', DECODE (SUBSTR(ks.prs_kostensoort_upper,1,5), 'L CV ', DECODE (l.alg_locatie_code, 'ZWO', '913848',
'EMM', aaxx_get_top_dep_code(k.prs_kostenplaats_nr),
'DLF', aaxx_get_top_dep_code(k.prs_kostenplaats_nr),
'520'),
'L CVE', aaxx_get_top_dep_code(k.prs_kostenplaats_nr))),
'INLO', k.prs_kostenplaats_nr, -- Wordt niet gebruikt.
'SMKA', k.prs_kostenplaats_nr, -- Wordt niet gebruikt.
'IT', k.prs_kostenplaats_nr,
'RABO', g.exact_code,
'SABIC', aaxx_get_top_dep_code(k.prs_kostenplaats_nr)
) prs_kostenplaats_nr,
DECODE (aaxx_get_user,
'AH', DECODE(aaxx_get_top_bedrijf_key(k.prs_kostenplaats_nr), 13383, k.prs_kostenplaats_nr, aaxx_get_top_dep_code(k.prs_kostenplaats_nr)),
'EXPO', aaxx_get_top_dep_code(k.prs_kostenplaats_nr),
'NMM', DECODE(k.prs_kostenplaats_nr,
'0001', '913799', -- Heijmans
'0002', '913810', -- Vermaat
'0003', '913766', -- Defensie
'0004', '913776', -- Stichting Nationaal Militair Museum
'Onbekend'
),
'DOW', substr(aaxx_get_top_dep_code(k.prs_kostenplaats_nr),1,6),
'DSM', DECODE (SUBSTR(ks.prs_kostensoort_upper,1,3) , 'CV ', DECODE (l.alg_locatie_code, 'ZWO', '913848',
'EMM', aaxx_get_top_dep_code(k.prs_kostenplaats_nr),
'DLF', aaxx_get_top_dep_code(k.prs_kostenplaats_nr),
'520'),
'CVE', aaxx_get_top_dep_code(k.prs_kostenplaats_nr),
'L C', DECODE (SUBSTR(ks.prs_kostensoort_upper,1,5), 'L CV ', DECODE (l.alg_locatie_code, 'ZWO', '913848',
'EMM', aaxx_get_top_dep_code(k.prs_kostenplaats_nr),
'DLF', aaxx_get_top_dep_code(k.prs_kostenplaats_nr),
'520'),
'L CVE', aaxx_get_top_dep_code(k.prs_kostenplaats_nr))),
'INLO', (SELECT kp.prs_kostenplaats_nr FROM prs_kostenplaats kp
WHERE kp.prs_kostenplaats_key = aaxx_get_top_kpn_key (k.prs_kostenplaats_key)),
'RABO', aaxx_get_dep_code(k.prs_kostenplaats_nr),
'SABIC', (SELECT distinct prs_leverancier_nr FROM prs_bedrijf b, prs_afdeling a
WHERE b.prs_bedrijf_key = a.prs_bedrijf_key
AND b.prs_bedrijf_verwijder IS NULL
AND a.prs_afdeling_verwijder IS NULL
AND a.prs_afdeling_naam = aaxx_get_top_dep_code(k.prs_kostenplaats_nr)),
'SMKA', COALESCE(aaxx_get_top_afdeling_kpkenm(k.prs_kostenplaats_key), TO_CHAR(k.prs_kostenplaats_nr)),
'IT', k.prs_kostenplaats_nr
) debiteur,
b.prs_bedrijf_key,
ks.prs_kostensoort_oms || DECODE(TO_CHAR(opdr_datum,'YYYY'), TO_CHAR(TO_NUMBER(TO_CHAR(SYSDATE, 'yyyy'))-1), ' VJ','') ,
ks.prs_kostensoort_opmerking,
DECODE (aaxx_get_user,
'AH', ksg.prs_kostensoortgrp_oms || DECODE(aaxx_get_top_bedrijf_key(k.prs_kostenplaats_nr), 13383, k.prs_kostenplaats_nr, aaxx_get_top_dep_code(k.prs_kostenplaats_nr)),
'DOW', 'Service Charges',
'EXPO', 'Servicekosten Core Variabel',
'INLO', 'Servicekosten Core Variabel',
'RABO', 'Servicekosten ' || aaxx_get_dep_code(k.prs_kostenplaats_nr),
'SABIC', DECODE (l.alg_locatie_code, 'BOZ', 'Core Variabel ' || to_char(sysdate, 'Month'),
'RDV', 'Core Variabel ' || to_char(sysdate, 'Month'),
ksg.prs_kostensoortgrp_oms || ' ' || aaxx_get_top_dep_code(k.prs_kostenplaats_nr)),
'SMKA', 'Servicekosten Core Variabel',
ksg.prs_kostensoortgrp_oms || DECODE (aaxx_get_user, 'DSM', DECODE (SUBSTR(ks.prs_kostensoort_upper,1,3) , 'CV ', ' ' || l.alg_locatie_code,
DECODE (SUBSTR(ks.prs_kostensoort_upper,1,5) , 'L CV ', ' ' || l.alg_locatie_code)),
'NMM', DECODE(k.prs_kostenplaats_nr, '0001', ' Heijmans',
'0002', ' Vermaat',
'0003', ' Defensie',
'0004', ' NMM',
' Onbekend'))
) prs_kostensoortgrp_oms,
DECODE(aaxx_get_user, 'SABIC', ks.prs_kostensoort_altcode || ' ' || fin_btwtabelwaarde_code,
'C' || cnt_contract_nummer_intern
|| DECODE (cnt_contract_versie, NULL, '', '.' || cnt_contract_versie))
omschrijving,
DECODE (aaxx_get_user,
'NMM', ROUND (fg.bedrag * 1.1,2),
fg.bedrag),
DECODE (aaxx_get_user,
'EXPO' , DECODE (ks.prs_kostensoort_upper, 'CV CONS AUT', 2, fin_btwtabelwaarde_code), -- code 2 is 6 procent
fin_btwtabelwaarde_code) fin_btwtabelwaarde_code,
to_char(opdr_datum, 'YYYY'),
DECODE(aaxx_get_user, 'SABIC', DECODE (l.alg_locatie_code, 'BOZ', '00601000',
'RDV', '00601000',
'00600000'),
'INLO', DECODE(aaxx_get_top_bedrijf_key (k.prs_kostenplaats_nr), 2081, '03603000', -- Henkel
2082, '03602000', -- VEH
2083, '03604000', -- Zwaansvliet
'onbekend'),
'SMKA', COALESCE(exact2.exact_code,'onbekend'),
COALESCE(g.exact_code, alg_gebouw_code)) exact_code, -- C1
SUBSTR (
DECODE (aaxx_get_user, 'DOW', substr(aaxx_get_top_dep_code(k.prs_kostenplaats_nr),1,8) ||
DECODE(substr(aaxx_get_top_dep_code(k.prs_kostenplaats_nr),1,3),
'911', DECODE(SUBSTR(ks.prs_kostensoort_upper, 1,5), 'NC P ', 'PR', 'NC/CV'),
'912', 'CV/NC/PR',
'913', DECODE(SUBSTR(ks.prs_kostensoort_upper, 1,7), 'COR VAR', 'CV', 'NC/PR'),
'Onbekend') ||
substr(aaxx_get_top_dep_code(k.prs_kostenplaats_nr),1,8),
'DSM', DECODE (SUBSTR(ks.prs_kostensoort_upper,1,3) , 'CV ', DECODE (l.alg_locatie_code, 'ZWO', '913848',
'EMM', aaxx_get_top_dep_code(k.prs_kostenplaats_nr),
'DLF', aaxx_get_top_dep_code(k.prs_kostenplaats_nr),
'520') || l.alg_locatie_code,
'CVE', aaxx_get_top_dep_code(k.prs_kostenplaats_nr),
'L C', DECODE (SUBSTR(ks.prs_kostensoort_upper,1,5), 'L CV ', DECODE (l.alg_locatie_code, 'ZWO', '913848',
'EMM', aaxx_get_top_dep_code(k.prs_kostenplaats_nr),
'DLF', aaxx_get_top_dep_code(k.prs_kostenplaats_nr),
'520') || l.alg_locatie_code,
'L CVE', aaxx_get_top_dep_code(k.prs_kostenplaats_nr))),
'EXPO', l.alg_locatie_code,
'INLO', (SELECT kp.prs_kostenplaats_nr FROM prs_kostenplaats kp
WHERE kp.prs_kostenplaats_key = aaxx_get_top_kpn_key (k.prs_kostenplaats_key)),
'RABO', aaxx_get_dep_code(k.prs_kostenplaats_nr),
'SABIC',DECODE (l.alg_locatie_code, 'BOZ', to_char(sysdate, 'Month'),
'RDV', to_char(sysdate, 'Month'),
aaxx_get_top_dep_code(k.prs_kostenplaats_nr)),
'SMKA', DECODE (ksg.prs_kostensoortgrp_oms, 'Core Variable', 'CV',
'Core Variable Enduser', 'CVE',
'onbekend') || '-' || COALESCE(aaxx_get_top_afdeling_kpkenm(k.prs_kostenplaats_key), TO_CHAR(k.prs_kostenplaats_nr)),
'')
,1,12) groepering, -- C2
DECODE (aaxx_get_user, 'DOW', 'A' || prs_kostensoort_oms, '') subregelvolgorde,
l.alg_locatie_key, -- N1
aaxx_get_top_bedrijf_key(k.prs_kostenplaats_nr) -- N2 bedrijfskey van de hoogste afdeling
FROM cnt_contract c,
prs_bedrijf b,
prs_kostenplaats k,
prs_kostenplaatsgrp kpg,
ins_tab_discipline d,
prs_kostensoort ks,
prs_kostensoortgrp ksg,
aaxx_exp_factuur f,
alg_locatie l,
(SELECT cnt_contract_key, alg_gebouw_code, exact_code, ag.alg_gebouw_key, ag.alg_locatie_key
FROM
(SELECT cnt_contract_key, MIN (cp.cnt_alg_plaats_key) cnt_alg_plaats_key
FROM cnt_contract_plaats cp
WHERE cp.cnt_contract_plaats_verwijder IS NULL
AND cp.cnt_alg_plaats_code = 'G'
GROUP BY cnt_contract_key) cp,
alg_gebouw ag,
aaxx_v_exact_code_gebouw ae
WHERE cp.cnt_alg_plaats_key = ag.alg_gebouw_key
AND cp.cnt_alg_plaats_key = ae.alg_gebouw_key) g,
aaxx_v_exact_code_district exact2,
(SELECT fin_factuur_key,
cnt_contract_key,
SUM (fin_factuurregel_totaal) bedrag,
fin_factuurregel_btw btw,
aaxx_get_verkoop_btw_code (fin_btwtabelwaarde_key) fin_btwtabelwaarde_code,
prs_kostenplaats_key,
prs_kostensoort_key,
fin_factuur_boekmaand,
opdr_datum,
fin_factuur_datum
FROM aaxx_v_factuur_gegevens
WHERE fin_factuur_statuses_key = 6
GROUP BY fin_factuur_key,
cnt_contract_key,
prs_kostenplaats_key,
prs_kostensoort_key,
fin_factuur_boekmaand,
opdr_datum,
fin_factuur_datum,
fin_factuurregel_btw,
fin_btwtabelwaarde_key,
fin_btwtabelwaarde_code,
fin_factuurregel_totaal) fg
WHERE fg.prs_kostenplaats_key = k.prs_kostenplaats_key
AND fg.cnt_contract_key = c.cnt_contract_key
AND fg.fin_factuur_key = f.fin_factuur_key
AND g.alg_locatie_key = l.alg_locatie_key
AND l.alg_district_key =exact2.alg_district_key(+)
AND c.cnt_prs_bedrijf_key = b.prs_bedrijf_key
AND c.ins_discipline_key = d.ins_discipline_key
AND c.cnt_contract_key = g.cnt_contract_key(+)
AND fg.prs_kostensoort_key = ks.prs_kostensoort_key(+)
AND ks.prs_kostensoortgrp_key = ksg.prs_kostensoortgrp_key(+)
AND k.prs_kostenplaatsgrp_key = kpg.prs_kostenplaatsgrp_key(+)
AND ( ( aaxx_get_user = 'AH'
AND ks.prs_kostensoort_upper LIKE 'CV %'
)
OR
( aaxx_get_user = 'DOW'
AND ( ks.prs_kostensoort_upper = 'COR VAR CATE COFFE'
OR ks.prs_kostensoort_upper = 'COR VAR IND CLO'
OR ks.prs_kostensoort_upper = 'COR VAR MAIL SERVICES'
OR ks.prs_kostensoort_upper = 'COR VAR VENDING'
OR ks.prs_kostensoort_upper = 'COR VAR MAIN HANDYMAN'
OR ks.prs_kostensoort_upper = 'COR VAR GEN TEN SERV'
OR ks.prs_kostensoort_upper = 'COR VAR HVAC'
OR ks.prs_kostensoort_upper = 'COR VAR CLEA BUILDING SAN'
OR ks.prs_kostensoort_upper = 'COR VAR CLEA VSR KMS')
)
OR
( aaxx_get_user = 'DSM'
AND ( ( SUBSTR(ks.prs_kostensoort_upper,1,3) = 'CV '
OR SUBSTR(ks.prs_kostensoort_upper,1,5) = 'L CV ')
AND g.alg_gebouw_code NOT IN ('122-170', '122-200', '122-094', '122-092')
AND l.alg_locatie_key NOT IN ('23', '41')) -- Waalwijk en de Beitel
OR SUBSTR(ks.prs_kostensoort_upper,1,3) = 'CVE'
OR SUBSTR(ks.prs_kostensoort_upper,1,5) = 'L CVE'
)
OR
( aaxx_get_user = 'EXPO'
AND ( ks.prs_kostensoort_upper LIKE 'CV %'
OR ks.prs_kostensoort_upper LIKE 'CVE %'
OR ks.prs_kostensoort_upper = 'NC PROJ')
)
OR
( aaxx_get_user = 'INLO'
AND ( ks.prs_kostensoort_upper LIKE 'CV %'
OR ks.prs_kostensoort_upper LIKE 'CVE %'
)
AND NOT EXISTS (SELECT ao.alg_onrgoed_key
FROM alg_onrgoedkenmerk ao
WHERE ao.alg_onrgoed_key = g.alg_gebouw_key
AND ao.alg_onrgoed_niveau='G'
AND ao.alg_kenmerk_key = 1100 -- kenmerkveld klant
AND ao.alg_onrgoedkenmerk_waarde= '264') -- waarde Greenport Venlo - Alleen alle andere locaties meenemen (VEH, Henkel,Zwaansvliet)
)
OR
( aaxx_get_user = 'NMM'
AND ks.prs_kostensoort_upper LIKE 'CV%'
)
OR
( aaxx_get_user = 'RABO'
AND ks.prs_kostensoort_upper LIKE 'CV %'
AND ks.prs_kostensoort_upper <> 'CV DOC POST'
)
OR
( aaxx_get_user = 'SABIC'
AND ( ( c.cnt_contract_looptijd_van < to_date ('20180101', 'yyyymmdd') -- Voor sabic geldt in 2018 een ander mechanisme (AASA#28673)
AND ks.prs_kostensoort_upper LIKE 'CV %'
AND ks.prs_kostensoort_upper <> 'CV CHIP'
AND ( c.cnt_contract_looptijd_van > to_date ('20150101', 'yyyymmdd') -- Voor sabic geldt voor 2015 een ander mechanisme (AASA#31618)
OR ( ks.prs_kostensoort_upper <> 'CV CONS REST'
AND ks.prs_kostensoort_upper <> 'CV CONS AUT'
AND ks.prs_kostensoort_upper <> 'CV SCH OVR'
AND ks.prs_kostensoort_upper <> 'CV DOC POST'
AND ks.prs_kostensoort_upper <> 'CV AFVAL REST'
)
)
)
OR (
(c.cnt_contract_looptijd_van >= to_date ('20180101', 'yyyymmdd') AND c.cnt_contract_looptijd_van < to_date ('20190101', 'yyyymmdd') ) -- Voor Sabic geldt voor 2018 een ander mechanisme (AASA#28673)
AND ( ks.prs_kostensoort_upper LIKE 'CV %'
OR ks.prs_kostensoort_upper LIKE 'CVE%')
)
OR (c.cnt_contract_looptijd_van >= to_date ('20190101', 'yyyymmdd') -- Voor Sabic IP geldt voor 2019 mechanisme gelijk aan 2018 (AASA#56477)
AND l.alg_locatie_code in ('BOZ','RDV')
AND ( ks.prs_kostensoort_upper LIKE 'CV %'
OR ks.prs_kostensoort_upper LIKE 'CVE%')
)
OR (
c.cnt_contract_looptijd_van >= to_date ('20190101', 'yyyymmdd') -- Voor Sabic Geleen geldt voor 2019 een ander mechanisme (AASA#56477)
AND l.alg_locatie_code not in ('BOZ','RDV')
AND ( ks.prs_kostensoort_upper LIKE 'CV TRA'
OR ks.prs_kostensoort_upper LIKE 'CVE%')
)
)
)
OR
( aaxx_get_user = 'SMKA'
AND ( ks.prs_kostensoort_upper LIKE 'CV %'
OR ks.prs_kostensoort_upper LIKE 'CVE %'
)
)
OR ( aaxx_get_user = 'IT'
AND ( SUBSTR(kpg.prs_kostenplaatsgrp_nr,1,6) IN ('400-VK', '500-VK') -- VK is verkoopfacturen (zie AAIT#69225)
)
)
);
-- voeg bestelorders toe aan de verkoopbuffer
INSERT INTO fin_verkoopfactuur
(
fin_verkoopfactuur_id, fin_verkoopfactuur_xmlnode, fin_verkoopfactuur_refkey, fin_verkoopfactuur_aanmaak, prs_kostenplaats_nr, prs_debiteur_naam, prs_bedrijf_key, prs_kostensoort_oms, prs_kostensoort_opmerking, prs_kostensoortgrp_oms, fin_verkoopfactuur_omschr, fin_verkoopfactuur_bedrag, fin_btwtabelwaarde_code, fin_verkoopfactuur_maand, fin_verkoopfactuur_c1, fin_verkoopfactuur_c2, fin_verkoopfactuur_c3, fin_verkoopfactuur_n1, fin_verkoopfactuur_n2
)
SELECT substr(to_char(v_logdate, 'dd-mm-yyyy') || ' - ' || bestel.bes_bestelopdr_id, 1,30 ),
'bestelopdr',
bestel.bes_bestelopdr_key,
v_logdate,
DECODE (aaxx_get_user,
'AH', k.prs_kostenplaats_nr,
'DOW', '911791',
'DSM', DECODE (SUBSTR(ks.prs_kostensoort_upper,1,3) , 'CV ', DECODE (l.alg_locatie_code, 'ZWO', '913848',
'EMM', aaxx_get_top_dep_code(k.prs_kostenplaats_nr),
'DLF', aaxx_get_top_dep_code(k.prs_kostenplaats_nr),
'520'),
'CVE', aaxx_get_top_dep_code(k.prs_kostenplaats_nr),
'L C', DECODE (SUBSTR(ks.prs_kostensoort_upper,1,5), 'L CV ', DECODE (l.alg_locatie_code, 'ZWO', '913848',
'EMM', aaxx_get_top_dep_code(k.prs_kostenplaats_nr),
'DLF', aaxx_get_top_dep_code(k.prs_kostenplaats_nr),
'520'),
'L CVE', aaxx_get_top_dep_code(k.prs_kostenplaats_nr))),
'EXPO', DECODE(aaxx_get_top_dep_code(k.prs_kostenplaats_nr), '913918', '03701000',
'4001', '03700000',
'Onbekend'),
'SABIC', aaxx_get_top_dep_code (k.prs_kostenplaats_nr),
SUBSTR (prs_kostenplaats_nr, 1, 30)) prs_kostenplaats_nr, -- Wordt niet gebruikt.
DECODE (aaxx_get_user,
'AH', DECODE(aaxx_get_top_bedrijf_key(k.prs_kostenplaats_nr), 13383, k.prs_kostenplaats_nr, aaxx_get_top_dep_code(k.prs_kostenplaats_nr)),
'DOW', '911791',
'DSM', DECODE (SUBSTR(ks.prs_kostensoort_upper,1,3) , 'CV ', DECODE (l.alg_locatie_code, 'ZWO', '913848',
'EMM', aaxx_get_top_dep_code(k.prs_kostenplaats_nr),
'DLF', aaxx_get_top_dep_code(k.prs_kostenplaats_nr),
'520'),
'CVE', aaxx_get_top_dep_code(k.prs_kostenplaats_nr),
'L C', DECODE (SUBSTR(ks.prs_kostensoort_upper,1,5), 'L CV ', DECODE (l.alg_locatie_code, 'ZWO', '913848',
'EMM', aaxx_get_top_dep_code(k.prs_kostenplaats_nr),
'DLF', aaxx_get_top_dep_code(k.prs_kostenplaats_nr),
'520'),
'L CVE', aaxx_get_top_dep_code(k.prs_kostenplaats_nr))),
'EXPO', aaxx_get_top_dep_code(k.prs_kostenplaats_nr),
'INLO', (SELECT kp.prs_kostenplaats_nr FROM prs_kostenplaats kp
WHERE kp.prs_kostenplaats_key = aaxx_get_top_kpn_key (k.prs_kostenplaats_key)),
'SABIC', (SELECT distinct prs_leverancier_nr FROM prs_bedrijf b, prs_afdeling a
WHERE b.prs_bedrijf_key = a.prs_bedrijf_key
AND b.prs_bedrijf_verwijder IS NULL
AND a.prs_afdeling_verwijder IS NULL
AND a.prs_afdeling_naam = aaxx_get_top_dep_code(k.prs_kostenplaats_nr)),
'SMKA', COALESCE(aaxx_get_top_afdeling_kpkenm(k.prs_kostenplaats_key), TO_CHAR(k.prs_kostenplaats_nr)),
SUBSTR (prs_kostenplaats_nr, 1, 30)) debiteur, -- prs_debiteur_naam
bestel.prs_bedrijf_key,
ks.prs_kostensoort_oms
|| DECODE (TO_CHAR (opdr_datum, 'YYYY'),
TO_CHAR (TO_NUMBER (TO_CHAR (SYSDATE, 'yyyy')) - 1), ' VJ',
''),
ks.prs_kostensoort_opmerking,
DECODE (aaxx_get_user, 'AH', prs_kostensoortgrp_oms || DECODE(aaxx_get_top_bedrijf_key(k.prs_kostenplaats_nr), 13383, k.prs_kostenplaats_nr, aaxx_get_top_dep_code(k.prs_kostenplaats_nr)),
'DSM', prs_kostensoortgrp_oms || DECODE (SUBSTR(ks.prs_kostensoort_upper,1,3) , 'CV ', ' ' || l.alg_locatie_code,
DECODE (SUBSTR(ks.prs_kostensoort_upper,1,5) , 'L CV ', ' ' || l.alg_locatie_code)),
'EXPO', 'Servicekosten Core Variabel',
'INLO', 'Servicekosten Core Variabel',
'SABIC', DECODE (l.alg_locatie_code, 'BOZ', 'Core Variabel ' || to_char(sysdate, 'Month'),
'RDV', 'Core Variabel ' || to_char(sysdate, 'Month'),
ksg.prs_kostensoortgrp_oms || ' ' || aaxx_get_top_dep_code(k.prs_kostenplaats_nr)),
'SMKA', 'Servicekosten Core Variabel'
) prs_kostensoortgrp_oms,
DECODE (aaxx_get_user, 'SABIC', ks.prs_kostensoort_altcode || ' ' || fin_btwtabelwaarde_code,
bestel.bes_bestelopdr_id || ' ' || d.ins_discipline_omschrijving) omschrijving,
fin_factuurregel_totaal,
DECODE (aaxx_get_user, 'EXPO' , DECODE (ks.prs_kostensoort_upper, 'CV CONS AUT', 2, fin_btwtabelwaarde_code), -- code 2 is 6 procent
fin_btwtabelwaarde_code) fin_btwtabelwaarde_code,
TO_CHAR (opdr_datum, 'YYYY'),
DECODE(aaxx_get_user,'INLO', DECODE(aaxx_get_top_bedrijf_key (k.prs_kostenplaats_nr),2081,'03603000', -- Henkel
2082,'03602000', -- VEH
2083,'03604000', -- Zwaansvliet
'onbekend'),
'SABIC', DECODE (l.alg_locatie_code, 'BOZ', '00601000',
'RDV', '00601000',
'00600000'),
'SMKA', COALESCE(exact2.exact_code,'onbekend'),
COALESCE(exact.exact_code, alg_gebouw_code)) exact_code, -- C1
DECODE (aaxx_get_user,
'DSM', DECODE (SUBSTR(ks.prs_kostensoort_upper,1,3) , 'CV ', DECODE (l.alg_locatie_code, 'ZWO', '913848',
'EMM', aaxx_get_top_dep_code(k.prs_kostenplaats_nr),
'DLF', aaxx_get_top_dep_code(k.prs_kostenplaats_nr),
'520') || l.alg_locatie_code,
'CVE', aaxx_get_top_dep_code(k.prs_kostenplaats_nr),
'L C', DECODE (SUBSTR(ks.prs_kostensoort_upper,1,5), 'L CV ', DECODE (l.alg_locatie_code, 'ZWO', '913848',
'EMM', aaxx_get_top_dep_code(k.prs_kostenplaats_nr),
'DLF', aaxx_get_top_dep_code(k.prs_kostenplaats_nr),
'520') || l.alg_locatie_code,
'L CVE', aaxx_get_top_dep_code(k.prs_kostenplaats_nr))),
'DOW', DECODE(SUBSTR(ks.prs_kostensoort_upper, 1,5), 'NC P ', 'NCP', 'NC/CV') ||
substr(aaxx_get_top_dep_code(k.prs_kostenplaats_nr),1,6),
'EXPO', alg_locatie_code,
'INLO', (SELECT kp.prs_kostenplaats_nr FROM prs_kostenplaats kp
WHERE kp.prs_kostenplaats_key = aaxx_get_top_kpn_key (k.prs_kostenplaats_key)),
'SABIC',DECODE (l.alg_locatie_code, 'BOZ', to_char(sysdate, 'Month'),
'RDV', to_char(sysdate, 'Month'),
aaxx_get_top_dep_code(k.prs_kostenplaats_nr)),
'SMKA', DECODE (ksg.prs_kostensoortgrp_oms, 'Core Variable', 'CV',
'Core Variable Enduser', 'CVE',
'onbekend') || '-' || COALESCE(aaxx_get_top_afdeling_kpkenm(k.prs_kostenplaats_key), TO_CHAR(k.prs_kostenplaats_nr)),
'') groepering, -- c2
'' subregelvolgorde, -- c3
l.alg_locatie_key, -- N1
aaxx_get_top_bedrijf_key(k.prs_kostenplaats_nr) -- N2 bedrijfskey van de hoogste afdeling
FROM ( SELECT *
FROM aaxx_v_bestelgegevens
GROUP BY bes_bestelopdr_key,
bes_bestelopdr_id,
ins_discipline_key,
mld_adres_key_lev,
bes_bestelling_leverdatum,
prs_bedrijf_key) bestel,
mld_adres ad,
prs_kostenplaats k,
ins_tab_discipline d,
prs_kostensoort ks,
prs_kostensoortgrp ksg,
aaxx_exp_factuur f,
alg_gebouw g,
alg_locatie l,
aaxx_v_exact_code_gebouw exact,
aaxx_v_exact_code_district exact2,
( SELECT fin_factuur_key,
bes_bestelopdr_key,
prs_kostenplaats_key,
prs_kostensoort_key,
fin_factuur_boekmaand,
opdr_datum,
fin_factuur_datum,
aaxx_get_verkoop_btw_code (fin_btwtabelwaarde_key) fin_btwtabelwaarde_code,
sum(fin_factuurregel_totaal) fin_factuurregel_totaal
FROM aaxx_v_factuur_gegevens
WHERE fin_factuur_statuses_key = 6
AND bes_bestelopdr_key IS NOT NULL
GROUP BY fin_factuur_key,
bes_bestelopdr_key,
prs_kostenplaats_key,
prs_kostensoort_key,
fin_factuur_boekmaand,
fin_btwtabelwaarde_key,
opdr_datum,
fin_factuur_datum,
fin_btwtabelwaarde_code) fg
WHERE fg.bes_bestelopdr_key = bestel.bes_bestelopdr_key
AND fg.prs_kostenplaats_key = k.prs_kostenplaats_key(+)
AND bestel.ins_discipline_key = d.ins_discipline_key
AND bestel.mld_adres_key_lev = ad.mld_adres_key(+)
AND ad.mld_adres_gebouw_ruimte = g.alg_gebouw_code(+)
AND g.alg_gebouw_key = exact.alg_gebouw_key(+)
AND l.alg_district_key =exact2.alg_district_key(+)
AND g.alg_locatie_key = l.alg_locatie_key
AND fg.fin_factuur_key = f.fin_factuur_key
AND fg.prs_kostensoort_key = ks.prs_kostensoort_key(+)
AND ks.prs_kostensoortgrp_key = ksg.prs_kostensoortgrp_key(+)
AND ( ( aaxx_get_user = 'AH'
AND ks.prs_kostensoort_upper LIKE 'CV %'
)
OR
( aaxx_get_user = 'DSM'
AND ( ( SUBSTR(ks.prs_kostensoort_upper,1,3) = 'CV '
OR SUBSTR(ks.prs_kostensoort_upper,1,5) = 'L CV ')
AND g.alg_gebouw_code NOT IN ('122-170', '122-200', '122-094', '122-092')
AND l.alg_locatie_key NOT IN ('23', '41')) -- Waalwijk en de Beitel
OR SUBSTR(ks.prs_kostensoort_upper,1,3) = 'CVE'
OR SUBSTR(ks.prs_kostensoort_upper,1,5) = 'L CVE'
)
OR
( aaxx_get_user = 'EXPO'
AND ( ks.prs_kostensoort_upper LIKE 'CV %'
OR ks.prs_kostensoort_upper LIKE 'CVE %'
OR ks.prs_kostensoort_upper = 'NC PROJ')
)
OR
( aaxx_get_user = 'INLO'
AND ( ks.prs_kostensoort_upper LIKE 'CV %'
OR ks.prs_kostensoort_upper LIKE 'CVE %'
)
AND NOT EXISTS (SELECT ao.alg_onrgoed_key
FROM alg_onrgoedkenmerk ao
WHERE ao.alg_onrgoed_key = g.alg_gebouw_key
AND ao.alg_onrgoed_niveau='G'
AND ao.alg_kenmerk_key = 1100 -- kenmerkveld klant
AND ao.alg_onrgoedkenmerk_waarde= '264') -- waarde Greenport Venlo - Alleen alle andere locaties meenemen (VEH, Henkel,Zwaansvliet)
)
OR
( aaxx_get_user = 'SABIC'
AND ( ks.prs_kostensoort_upper LIKE 'CV %'
OR ks.prs_kostensoort_upper LIKE 'CVE %')
)
OR
( aaxx_get_user = 'SMKA'
AND ( ks.prs_kostensoort_upper LIKE 'CV %'
OR ks.prs_kostensoort_upper LIKE 'CVE %'
)
)
);
-- bereken per klant de FEE over de omzet.
IF aaxx_get_user = 'AH' THEN
INSERT INTO fin_verkoopfactuur
(
fin_verkoopfactuur_id, fin_verkoopfactuur_xmlnode, fin_verkoopfactuur_refkey, fin_verkoopfactuur_aanmaak, prs_kostenplaats_nr, prs_debiteur_naam, prs_kostensoort_oms, prs_kostensoort_opmerking, prs_kostensoortgrp_oms, fin_verkoopfactuur_omschr, fin_verkoopfactuur_bedrag, fin_btwtabelwaarde_code, fin_verkoopfactuur_maand
)
SELECT fin_verkoopfactuur_id, fin_verkoopfactuur_xmlnode, fin_verkoopfactuur_refkey, fin_verkoopfactuur_aanmaak, prs_kostenplaats_nr, prs_debiteur_naam, 'CV FM', prs_kostensoort_opmerking, prs_kostensoortgrp_oms, fin_verkoopfactuur_omschr, SUM(ROUND(fin_verkoopfactuur_bedrag * 0.25, 2)), fin_btwtabelwaarde_code, fin_verkoopfactuur_maand
FROM fin_verkoopfactuur v
WHERE fin_verkoopfactuur_aanmaak = v_logdate
AND fin_verkoopfactuur_n2 = '13383'
AND prs_kostensoort_oms LIKE 'CV %'
GROUP BY fin_verkoopfactuur_id, fin_verkoopfactuur_xmlnode, fin_verkoopfactuur_refkey, fin_verkoopfactuur_aanmaak, prs_kostenplaats_nr, prs_debiteur_naam, prs_kostensoort_opmerking, prs_kostensoortgrp_oms, fin_verkoopfactuur_omschr, fin_btwtabelwaarde_code, fin_verkoopfactuur_maand;
INSERT INTO fin_verkoopfactuur
(
fin_verkoopfactuur_id, fin_verkoopfactuur_xmlnode, fin_verkoopfactuur_refkey, fin_verkoopfactuur_aanmaak, prs_kostenplaats_nr, prs_debiteur_naam, prs_kostensoort_oms, prs_kostensoort_opmerking, prs_kostensoortgrp_oms, fin_verkoopfactuur_omschr, fin_verkoopfactuur_bedrag, fin_btwtabelwaarde_code, fin_verkoopfactuur_maand
)
SELECT fin_verkoopfactuur_id, fin_verkoopfactuur_xmlnode, fin_verkoopfactuur_refkey, fin_verkoopfactuur_aanmaak, prs_kostenplaats_nr, prs_debiteur_naam, 'CV FEE', prs_kostensoort_opmerking, prs_kostensoortgrp_oms, fin_verkoopfactuur_omschr , SUM(ROUND(fin_verkoopfactuur_bedrag * 0.065, 2)), fin_btwtabelwaarde_code, fin_verkoopfactuur_maand
FROM fin_verkoopfactuur v, prs_bedrijf b
WHERE fin_verkoopfactuur_aanmaak = v_logdate
AND v.prs_bedrijf_key = b.prs_bedrijf_key
AND fin_verkoopfactuur_n2 = '13383'
AND prs_kostensoort_oms LIKE 'CV %'
GROUP BY fin_verkoopfactuur_id, fin_verkoopfactuur_xmlnode, fin_verkoopfactuur_refkey, fin_verkoopfactuur_aanmaak, prs_kostenplaats_nr, prs_debiteur_naam, prs_kostensoort_opmerking, prs_kostensoortgrp_oms, fin_verkoopfactuur_omschr, fin_btwtabelwaarde_code, fin_verkoopfactuur_maand;
END IF;
IF aaxx_get_user = 'DOW' THEN
INSERT INTO fin_verkoopfactuur
(
fin_verkoopfactuur_id, fin_verkoopfactuur_xmlnode, fin_verkoopfactuur_refkey, fin_verkoopfactuur_aanmaak, prs_kostenplaats_nr, prs_debiteur_naam, prs_kostensoort_oms, prs_kostensoort_opmerking, prs_kostensoortgrp_oms, fin_verkoopfactuur_omschr, fin_verkoopfactuur_bedrag, fin_btwtabelwaarde_code, fin_verkoopfactuur_maand, fin_verkoopfactuur_c1, fin_verkoopfactuur_c2, fin_verkoopfactuur_c3
)
SELECT fin_verkoopfactuur_id, fin_verkoopfactuur_xmlnode, fin_verkoopfactuur_refkey, fin_verkoopfactuur_aanmaak, '', prs_debiteur_naam, 'BASE FEE' || DECODE (INSTR(prs_kostensoort_oms, ' VJ'), 0 , '', ' VJ'), '', prs_kostensoortgrp_oms, 'BASE FEE' , ROUND(SUM(fin_verkoopfactuur_bedrag) * 0.04, 2), fin_btwtabelwaarde_code, fin_verkoopfactuur_maand, 'X', fin_verkoopfactuur_c2, 'X'
FROM fin_verkoopfactuur v
WHERE fin_verkoopfactuur_aanmaak = v_logdate
GROUP BY fin_verkoopfactuur_id, fin_verkoopfactuur_xmlnode, fin_verkoopfactuur_refkey, fin_verkoopfactuur_aanmaak, prs_debiteur_naam, DECODE (INSTR(prs_kostensoort_oms, ' VJ'), 0 , '', ' VJ'), prs_kostensoortgrp_oms, fin_btwtabelwaarde_code, fin_verkoopfactuur_maand, fin_verkoopfactuur_c2;
END IF;
IF aaxx_get_user = 'IT' THEN
-- Fee: 3% bij de facturen die vallen onder kostenplaatsgroep 400-VK en FEE en 500-VK en FEE
INSERT INTO fin_verkoopfactuur
(
fin_verkoopfactuur_id, fin_verkoopfactuur_xmlnode, fin_verkoopfactuur_refkey, fin_verkoopfactuur_aanmaak, prs_kostenplaats_nr, prs_debiteur_naam, prs_kostensoort_oms, prs_kostensoort_opmerking, prs_kostensoortgrp_oms, fin_verkoopfactuur_omschr, fin_verkoopfactuur_bedrag, fin_btwtabelwaarde_code, fin_verkoopfactuur_maand, fin_verkoopfactuur_c1, fin_verkoopfactuur_c2, fin_verkoopfactuur_c3
)
SELECT fin_verkoopfactuur_id, fin_verkoopfactuur_xmlnode, fin_verkoopfactuur_refkey, fin_verkoopfactuur_aanmaak, k.prs_kostenplaats_nr, prs_debiteur_naam, 'BASE FEE', '', prs_kostensoortgrp_oms, 'BASE FEE' , ROUND(SUM(fin_verkoopfactuur_bedrag) * 0.03, 2), fin_btwtabelwaarde_code, fin_verkoopfactuur_maand, 'X', fin_verkoopfactuur_c2, 'X'
FROM fin_verkoopfactuur v, prs_kostenplaats k, prs_kostenplaatsgrp kpg
WHERE fin_verkoopfactuur_aanmaak = v_logdate
AND v.prs_kostenplaats_nr = k.prs_kostenplaats_nr AND k.prs_kostenplaatsgrp_key = kpg.prs_kostenplaatsgrp_key
AND INSTR(UPPER(kpg.prs_kostenplaatsgrp_nr),'FEE')>0
GROUP BY fin_verkoopfactuur_id, fin_verkoopfactuur_xmlnode, fin_verkoopfactuur_refkey, fin_verkoopfactuur_aanmaak, prs_debiteur_naam, DECODE (INSTR(prs_kostensoort_oms, ' VJ'), 0 , '', ' VJ'), prs_kostensoortgrp_oms, fin_btwtabelwaarde_code, fin_verkoopfactuur_maand, fin_verkoopfactuur_c2;
END IF;
IF aaxx_get_user = 'DSM' THEN
-- CVE
-- Fee: De fee over dit CVE gedeelte wordt apart doorbelast aan de klant en moet in een separate factuur worden gezet.
-- Deze factuur moet standaard naar debiteurencode 520.
-- Per factuur dient een fee berekend te worden van 0% of 3%.
-- Hierbij geldt als uitgangspunt dat voor alle MA contracten 0% geldt, en voor alle CP 3%.
-- Deze fee dient als totaalbedrag geboekt te worden op 1 regel per BTW percentage op de kostensoort FEE.
-- Extra verzoek hierover is om wel per locatie <20><>n regel te maken (dus Sittard, Urmond, Campus,etc).
-- Misschien dat we dit kunnen doen door artikelcode FEE te gebruiken, maar omschrijving Fee Sittard, Fee Urmond, etc?
INSERT INTO fin_verkoopfactuur
(
fin_verkoopfactuur_id, fin_verkoopfactuur_xmlnode, fin_verkoopfactuur_refkey, fin_verkoopfactuur_aanmaak, prs_kostenplaats_nr, prs_debiteur_naam, prs_kostensoort_oms, prs_kostensoort_opmerking, prs_kostensoortgrp_oms, fin_verkoopfactuur_omschr, fin_verkoopfactuur_bedrag, fin_btwtabelwaarde_code, fin_verkoopfactuur_maand, fin_verkoopfactuur_c1, fin_verkoopfactuur_c2, fin_verkoopfactuur_c3
)
SELECT fin_verkoopfactuur_id, fin_verkoopfactuur_xmlnode, fin_verkoopfactuur_refkey, fin_verkoopfactuur_aanmaak, '', DECODE (l.alg_locatie_code, 'EMM', prs_debiteur_naam, 'ZWO', prs_debiteur_naam, 'WAA', prs_debiteur_naam, 'DLF', prs_debiteur_naam, '520'), 'CVE FEE' || DECODE (INSTR(prs_kostensoort_oms, ' VJ'), 0 , '', ' VJ'), '', prs_kostensoortgrp_oms, 'FEE ' || l.alg_locatie_code, SUM(ROUND(fin_verkoopfactuur_bedrag * 0.03, 2)), fin_btwtabelwaarde_code, fin_verkoopfactuur_maand, 'X', 'FEE' || fin_verkoopfactuur_c2, 'X'
FROM fin_verkoopfactuur v, prs_relatietype r, alg_locatie l, prs_bedrijf b
WHERE fin_verkoopfactuur_aanmaak = v_logdate
AND v.prs_bedrijf_key = b.prs_bedrijf_key
AND b.prs_relatietype_key = r.prs_relatietype_key
AND r.prs_relatietype_omschrijving = 'Contracting party'
AND v.fin_verkoopfactuur_n1 = l.alg_locatie_key
AND prs_kostensoort_oms LIKE 'CVE%'
GROUP BY fin_verkoopfactuur_id, fin_verkoopfactuur_xmlnode, fin_verkoopfactuur_refkey, fin_verkoopfactuur_aanmaak, l.alg_locatie_code, prs_debiteur_naam, DECODE (INSTR(prs_kostensoort_oms, ' VJ'), 0 , '', ' VJ'), prs_kostensoortgrp_oms, fin_btwtabelwaarde_code, fin_verkoopfactuur_maand, fin_verkoopfactuur_c2;
-- CV
-- Fee: Er wordt een fee van 0% of 3% berekend over deze factuur.
-- Het percentage is afhankelijk van het contracttype van de leverancier.
-- Bij alle Managing Agent (MA) geldt 0%, voor alle Contracting Party (CP) geldt 3%.
-- Deze fee dient als totaalbedrag geboekt te worden op 1 regel per BTW percentage op de kostensoort FEE.
INSERT INTO fin_verkoopfactuur
(
fin_verkoopfactuur_id, fin_verkoopfactuur_xmlnode, fin_verkoopfactuur_refkey, fin_verkoopfactuur_aanmaak, prs_kostenplaats_nr, prs_debiteur_naam, prs_kostensoort_oms, prs_kostensoort_opmerking, prs_kostensoortgrp_oms, fin_verkoopfactuur_omschr, fin_verkoopfactuur_bedrag, fin_btwtabelwaarde_code, fin_verkoopfactuur_maand, fin_verkoopfactuur_c1, fin_verkoopfactuur_c2, fin_verkoopfactuur_c3
)
SELECT fin_verkoopfactuur_id, fin_verkoopfactuur_xmlnode, fin_verkoopfactuur_refkey, fin_verkoopfactuur_aanmaak, '', DECODE (l.alg_locatie_code, 'EMM', prs_debiteur_naam, 'DLF', prs_debiteur_naam, '520'), 'CV FEE' || DECODE (INSTR(prs_kostensoort_oms, ' VJ'), 0 , '', ' VJ'), '', prs_kostensoortgrp_oms, 'FEE' , SUM(ROUND(fin_verkoopfactuur_bedrag * 0.03, 2)), fin_btwtabelwaarde_code, fin_verkoopfactuur_maand, 'X', fin_verkoopfactuur_c2, 'X'
FROM fin_verkoopfactuur v, prs_relatietype r, prs_bedrijf b, alg_locatie l
WHERE fin_verkoopfactuur_aanmaak = v_logdate
AND v.prs_bedrijf_key = b.prs_bedrijf_key
AND b.prs_relatietype_key = r.prs_relatietype_key
AND r.prs_relatietype_omschrijving = 'Contracting party'
AND v.fin_verkoopfactuur_n1 = l.alg_locatie_key
AND prs_kostensoort_oms LIKE 'CV %'
GROUP BY fin_verkoopfactuur_id, fin_verkoopfactuur_xmlnode, fin_verkoopfactuur_refkey, fin_verkoopfactuur_aanmaak, prs_debiteur_naam, l.alg_locatie_code, DECODE (INSTR(prs_kostensoort_oms, ' VJ'), 0 , '', ' VJ'), prs_kostensoortgrp_oms, fin_btwtabelwaarde_code, fin_verkoopfactuur_maand, fin_verkoopfactuur_c2;
END IF;
IF aaxx_get_user = 'ESSENT' THEN
INSERT INTO fin_verkoopfactuur
(
fin_verkoopfactuur_id, fin_verkoopfactuur_xmlnode, fin_verkoopfactuur_refkey, fin_verkoopfactuur_aanmaak, prs_kostenplaats_nr, prs_debiteur_naam, prs_kostensoort_oms, prs_kostensoort_opmerking, prs_kostensoortgrp_oms, fin_verkoopfactuur_omschr, fin_verkoopfactuur_bedrag, fin_btwtabelwaarde_code, fin_verkoopfactuur_maand, fin_verkoopfactuur_c1, fin_verkoopfactuur_c2, fin_verkoopfactuur_c3
)
SELECT fin_verkoopfactuur_id, fin_verkoopfactuur_xmlnode, fin_verkoopfactuur_refkey, fin_verkoopfactuur_aanmaak, prs_kostenplaats_nr, prs_debiteur_naam, 'BASE FEE ' || to_char(u.uplift) || '%' || DECODE (INSTR(v.prs_kostensoort_oms, ' VJ'), 0 , '', ' VJ'), '', prs_kostensoortgrp_oms, 'BASE FEE ' || TO_CHAR(u.uplift) || '%' , ROUND(SUM(fin_verkoopfactuur_bedrag) * (u.uplift/100),2), 5, fin_verkoopfactuur_maand, 'X', 'X', u.uplift || 'X'
FROM fin_verkoopfactuur v, aaxx_imp_uplift u
WHERE REPLACE(v.prs_kostensoort_oms, ' VJ', '') = u.prs_kostensoort_oms
AND fin_verkoopfactuur_aanmaak = v_logdate
GROUP BY fin_verkoopfactuur_id, fin_verkoopfactuur_xmlnode, fin_verkoopfactuur_refkey, fin_verkoopfactuur_aanmaak, prs_kostenplaats_nr, prs_debiteur_naam, instr(v.prs_kostensoort_oms, ' VJ'), prs_kostensoortgrp_oms, uplift, fin_verkoopfactuur_maand;
END IF;
-- EXPO NC PROJ
-- Er wordt een FEE berekend van 5% over NC PROJ
IF aaxx_get_user = 'EXPO' THEN
INSERT INTO fin_verkoopfactuur
(
fin_verkoopfactuur_id, fin_verkoopfactuur_xmlnode, fin_verkoopfactuur_refkey, fin_verkoopfactuur_aanmaak, prs_kostenplaats_nr, prs_debiteur_naam, prs_kostensoort_oms, prs_kostensoort_opmerking, prs_kostensoortgrp_oms, fin_verkoopfactuur_omschr, fin_verkoopfactuur_bedrag, fin_btwtabelwaarde_code, fin_verkoopfactuur_maand, fin_verkoopfactuur_c1, fin_verkoopfactuur_c2, fin_verkoopfactuur_c3
)
SELECT fin_verkoopfactuur_id, fin_verkoopfactuur_xmlnode, fin_verkoopfactuur_refkey, fin_verkoopfactuur_aanmaak, prs_debiteur_naam, prs_debiteur_naam, 'FEE PROJECTEN' || DECODE (INSTR(prs_kostensoort_oms, ' VJ'), 0 , '', ' VJ'), '', prs_kostensoortgrp_oms, 'Fee projecten' , SUM(ROUND(fin_verkoopfactuur_bedrag * 0.05, 2)), fin_btwtabelwaarde_code, fin_verkoopfactuur_maand, 'X', fin_verkoopfactuur_c2, 'X'
FROM fin_verkoopfactuur v
WHERE fin_verkoopfactuur_aanmaak = v_logdate
AND prs_kostensoort_oms = 'NC PROJ'
GROUP BY fin_verkoopfactuur_id, fin_verkoopfactuur_xmlnode, fin_verkoopfactuur_refkey, fin_verkoopfactuur_aanmaak, prs_debiteur_naam, DECODE (INSTR(prs_kostensoort_oms, ' VJ'), 0 , '', ' VJ'), prs_kostensoortgrp_oms, fin_btwtabelwaarde_code, fin_verkoopfactuur_maand, fin_verkoopfactuur_c2;
END IF;
-- INLO
-- Voor Henkel: 5% over alle facturen van CV. Voor alle opdrachttype. Voor NC PROJ wordt GEEN fee berekend.
-- Voor Zwaansvliet: 18,5% over de facturen van CV (=fee organisatiekosten), boeken op 8210520. Daarna nog Fee van 6,5%, boeken op 8210511 . Voor NC PROJ wordt geen fee berekend..
-- Voor VEH wordt geen FEE berekend
-- BTW over FEE: Overal 21% (dus ongeacht inkoopfactuur_btw) - #57775
IF aaxx_get_user = 'INLO' THEN
INSERT INTO fin_verkoopfactuur
(
fin_verkoopfactuur_id, fin_verkoopfactuur_xmlnode, fin_verkoopfactuur_refkey, fin_verkoopfactuur_aanmaak, prs_kostenplaats_nr, prs_debiteur_naam, prs_kostensoort_oms, prs_kostensoort_opmerking, prs_kostensoortgrp_oms, fin_verkoopfactuur_omschr, fin_verkoopfactuur_bedrag, fin_btwtabelwaarde_code, fin_verkoopfactuur_maand, fin_verkoopfactuur_c1, fin_verkoopfactuur_c2, fin_verkoopfactuur_c3
)
SELECT fin_verkoopfactuur_id, fin_verkoopfactuur_xmlnode, fin_verkoopfactuur_refkey, fin_verkoopfactuur_aanmaak, prs_debiteur_naam, prs_debiteur_naam, 'CV FEE' || DECODE (INSTR(prs_kostensoort_oms, ' VJ'), 0 , '', ' VJ'), '', prs_kostensoortgrp_oms, 'Fee Core Variabel' , SUM(ROUND(fin_verkoopfactuur_bedrag * 0.05, 2)), 5, fin_verkoopfactuur_maand, '03603000', fin_verkoopfactuur_c2, 'X'
FROM fin_verkoopfactuur v
WHERE fin_verkoopfactuur_aanmaak = v_logdate
AND prs_kostensoort_oms LIKE 'CV %'
AND v.fin_verkoopfactuur_c1 = '03603000' -- Henkel
GROUP BY fin_verkoopfactuur_id, fin_verkoopfactuur_xmlnode, fin_verkoopfactuur_refkey, fin_verkoopfactuur_aanmaak, prs_debiteur_naam, DECODE (INSTR(prs_kostensoort_oms, ' VJ'), 0 , '', ' VJ'), prs_kostensoortgrp_oms, fin_btwtabelwaarde_code, fin_verkoopfactuur_maand, fin_verkoopfactuur_c2;
INSERT INTO fin_verkoopfactuur -- Zwaansvliet 18,5%
(
fin_verkoopfactuur_id, fin_verkoopfactuur_xmlnode, fin_verkoopfactuur_refkey, fin_verkoopfactuur_aanmaak, prs_kostenplaats_nr, prs_debiteur_naam, prs_kostensoort_oms, prs_kostensoort_opmerking, prs_kostensoortgrp_oms, fin_verkoopfactuur_omschr, fin_verkoopfactuur_bedrag, fin_btwtabelwaarde_code, fin_verkoopfactuur_maand, fin_verkoopfactuur_c1, fin_verkoopfactuur_c2, fin_verkoopfactuur_c3
)
SELECT fin_verkoopfactuur_id, fin_verkoopfactuur_xmlnode, fin_verkoopfactuur_refkey, fin_verkoopfactuur_aanmaak, prs_debiteur_naam, prs_debiteur_naam, 'FEE ORG' || DECODE (INSTR(prs_kostensoort_oms, ' VJ'), 0 , '', ' VJ'), '', prs_kostensoortgrp_oms, 'Fee Organisatie' , SUM(ROUND(fin_verkoopfactuur_bedrag * 0.185, 2)), 5, fin_verkoopfactuur_maand, '03604000', fin_verkoopfactuur_c2, 'X'
FROM fin_verkoopfactuur v
WHERE fin_verkoopfactuur_aanmaak = v_logdate
AND prs_kostensoort_oms LIKE 'CV %'
AND v.fin_verkoopfactuur_c1 = '03604000' -- Zwaansvliet
GROUP BY fin_verkoopfactuur_id, fin_verkoopfactuur_xmlnode, fin_verkoopfactuur_refkey, fin_verkoopfactuur_aanmaak, prs_debiteur_naam, DECODE (INSTR(prs_kostensoort_oms, ' VJ'), 0 , '', ' VJ'), prs_kostensoortgrp_oms, fin_btwtabelwaarde_code, fin_verkoopfactuur_maand, fin_verkoopfactuur_c2;
INSERT INTO fin_verkoopfactuur -- 6,5%
(
fin_verkoopfactuur_id, fin_verkoopfactuur_xmlnode, fin_verkoopfactuur_refkey, fin_verkoopfactuur_aanmaak, prs_kostenplaats_nr, prs_debiteur_naam, prs_kostensoort_oms, prs_kostensoort_opmerking, prs_kostensoortgrp_oms, fin_verkoopfactuur_omschr, fin_verkoopfactuur_bedrag, fin_btwtabelwaarde_code, fin_verkoopfactuur_maand, fin_verkoopfactuur_c1, fin_verkoopfactuur_c2, fin_verkoopfactuur_c3
)
SELECT fin_verkoopfactuur_id, fin_verkoopfactuur_xmlnode, fin_verkoopfactuur_refkey, fin_verkoopfactuur_aanmaak, prs_debiteur_naam, prs_debiteur_naam, 'CV FEE' || DECODE (INSTR(prs_kostensoort_oms, ' VJ'), 0 , '', ' VJ'), '', prs_kostensoortgrp_oms, 'Fee Core Variabel' , SUM(ROUND(fin_verkoopfactuur_bedrag * 0.065, 2)), 5, fin_verkoopfactuur_maand, '03604000', fin_verkoopfactuur_c2, 'X'
FROM fin_verkoopfactuur v
WHERE fin_verkoopfactuur_aanmaak = v_logdate
AND prs_kostensoort_oms LIKE 'CV %'
AND v.fin_verkoopfactuur_c1 = '03604000' -- Zwaansvliet
GROUP BY fin_verkoopfactuur_id, fin_verkoopfactuur_xmlnode, fin_verkoopfactuur_refkey, fin_verkoopfactuur_aanmaak, prs_debiteur_naam, DECODE (INSTR(prs_kostensoort_oms, ' VJ'), 0 , '', ' VJ'), prs_kostensoortgrp_oms, fin_btwtabelwaarde_code, fin_verkoopfactuur_maand, fin_verkoopfactuur_c2;
END IF;
-- NMM
-- Pas het bedrag van de bewaking aan. Opdrachten aan stdmelding 1121 moeten een bedrag krijgen van het aantal uren uit de opdracht maal het uurtarief dat
-- In een eigentabel opgeslagen wordt. De entries in de eigen tabel kunnen verschillende tarieven met een vervaldatum bevatten.
-- stdmelding 1248 bevat meldingen schoonmaak die ook voorzien moeten worden van een uurtarief. Maar dan wel uit een andere eigen tabel.
IF aaxx_get_user = 'NMM' THEN
UPDATE fin_verkoopfactuur vk
SET fin_verkoopfactuur_bedrag = (SELECT o.mld_opdr_uren * ud.fac_usrdata_prijs
FROM mld_opdr o, mld_melding m, fac_usrdata ud
WHERE vk.fin_verkoopfactuur_refkey = o.mld_opdr_key
AND o.mld_melding_key = m.mld_melding_key
AND vk.fin_verkoopfactuur_xmlnode = 'opdracht'
AND ud.fac_usrtab_key = DECODE(m.mld_stdmelding_key, 1121, DECODE (TO_CHAR (COALESCE(mld_opdr_plandatum, mld_opdr_datumbegin), 'D'), 1, 141, 7, 141, 122) -- Uurtarief bewaking (141 tabel weekend, 122 tabel weekdagen)
, 1248, DECODE (TO_CHAR (COALESCE(mld_opdr_plandatum, mld_opdr_datumbegin), 'D'), 1, 162, 7, 162, 161) -- Uurtarief bewaking (162 tabel weekend, 161 tabel weekdagen)
)
AND ud.fac_usrdata_verwijder IS NULL
AND o.mld_opdr_datumbegin < COALESCE(ud.fac_usrdata_vervaldatum, SYSDATE)
AND NOT EXISTS (SELECT ud2.fac_usrdata_key
FROM fac_usrdata ud2
WHERE ud2.fac_usrtab_key = ud.fac_usrtab_key
AND o.mld_opdr_datumbegin < COALESCE(ud2.fac_usrdata_vervaldatum, SYSDATE)
AND ud2.fac_usrdata_verwijder IS NULL
AND COALESCE(ud2.fac_usrdata_vervaldatum, SYSDATE) <
COALESCE(ud.fac_usrdata_vervaldatum, SYSDATE)
)
)
WHERE EXISTS (SELECT mld_opdr_key
FROM mld_opdr o, mld_melding m
WHERE vk.fin_verkoopfactuur_refkey = o.mld_opdr_key
AND vk.fin_verkoopfactuur_xmlnode = 'opdracht'
AND o.mld_melding_key = m.mld_melding_key
AND m.mld_stdmelding_key IN (1121, 1248) -- Aanvraag beveiligingsdienst(en) tbv evenementen / Aanvraag extra schoonmaak tbv evenementen
)
AND fin_verkoopfactuur_aanmaak = v_logdate;
-- Voor de overige meldingen gaan we een uplift van 10% hanteren
UPDATE fin_verkoopfactuur vk
SET fin_verkoopfactuur_bedrag = ROUND(fin_verkoopfactuur_bedrag * 1.1,2)
WHERE EXISTS (SELECT mld_opdr_key
FROM mld_opdr o, mld_melding m
WHERE vk.fin_verkoopfactuur_refkey = o.mld_opdr_key
AND vk.fin_verkoopfactuur_xmlnode = 'opdracht'
AND o.mld_melding_key = m.mld_melding_key
AND m.mld_stdmelding_key NOT IN (1121, 1248) -- Aanvraag beveiligingsdienst(en) tbv evenementen / Aanvraag extra schoonmaak tbv evenementen
)
AND fin_verkoopfactuur_aanmaak = v_logdate;
END IF;
IF aaxx_get_user = 'RABO' THEN -- RABO#37283 RABO#39639 RABO#56840 RABO#57776
INSERT INTO fin_verkoopfactuur -- Voor kostenplaatsen standaard 5,5% fee (m.u.v. Optitrade en Eigen Steen)
(
fin_verkoopfactuur_id, fin_verkoopfactuur_xmlnode, fin_verkoopfactuur_refkey, fin_verkoopfactuur_aanmaak, prs_kostenplaats_nr, prs_debiteur_naam, prs_kostensoort_oms, prs_kostensoort_opmerking, prs_kostensoortgrp_oms, fin_verkoopfactuur_omschr, fin_verkoopfactuur_bedrag, fin_btwtabelwaarde_code, fin_verkoopfactuur_maand, fin_verkoopfactuur_c1, fin_verkoopfactuur_c2, fin_verkoopfactuur_c3
)
SELECT fin_verkoopfactuur_id, fin_verkoopfactuur_xmlnode, fin_verkoopfactuur_refkey, fin_verkoopfactuur_aanmaak, prs_kostenplaats_nr, prs_debiteur_naam, DECODE (prs_kostensoort_oms, 'NC PROJ', 'FEE', 'Fee Core Variabel') || DECODE (INSTR (prs_kostensoort_oms, ' VJ'), 0, '', ' VJ'), '', prs_kostensoortgrp_oms, 'FEE' , ROUND(SUM(fin_verkoopfactuur_bedrag) * 5.5 / 100, 2), fin_btwtabelwaarde_code, fin_verkoopfactuur_maand, 'X', fin_verkoopfactuur_c2, 'X'
FROM fin_verkoopfactuur v,
mld_opdr o,
mld_melding m,
mld_stdmelding std
WHERE v.fin_verkoopfactuur_refkey = o.mld_opdr_key
AND o.mld_melding_key = m.mld_melding_key
AND m.mld_stdmelding_key = std.mld_stdmelding_key
AND fin_verkoopfactuur_aanmaak = v_logdate
AND v.prs_kostenplaats_nr not in ('0000003','0000004')
GROUP BY fin_verkoopfactuur_id, fin_verkoopfactuur_xmlnode, fin_verkoopfactuur_refkey, fin_verkoopfactuur_aanmaak, prs_kostenplaats_nr, prs_debiteur_naam, prs_kostensoort_oms, prs_kostensoortgrp_oms, std.prs_kostensoort_key, fin_btwtabelwaarde_code, fin_verkoopfactuur_maand, fin_verkoopfactuur_c2, 'X';
INSERT INTO fin_verkoopfactuur -- Voor kostenplaatsen Optitrade en Eigen Steen 15% fee.
(
fin_verkoopfactuur_id, fin_verkoopfactuur_xmlnode, fin_verkoopfactuur_refkey, fin_verkoopfactuur_aanmaak, prs_kostenplaats_nr, prs_debiteur_naam, prs_kostensoort_oms, prs_kostensoort_opmerking, prs_kostensoortgrp_oms, fin_verkoopfactuur_omschr, fin_verkoopfactuur_bedrag, fin_btwtabelwaarde_code, fin_verkoopfactuur_maand, fin_verkoopfactuur_c1, fin_verkoopfactuur_c2, fin_verkoopfactuur_c3
)
SELECT fin_verkoopfactuur_id, fin_verkoopfactuur_xmlnode, fin_verkoopfactuur_refkey, fin_verkoopfactuur_aanmaak, prs_kostenplaats_nr, prs_debiteur_naam, DECODE (prs_kostensoort_oms, 'NC PROJ', 'FEE', 'Fee Core Variabel') || DECODE (INSTR (prs_kostensoort_oms, ' VJ'), 0, '', ' VJ'), '', prs_kostensoortgrp_oms, 'FEE' , ROUND(SUM(fin_verkoopfactuur_bedrag) * 15.0 / 100, 2), fin_btwtabelwaarde_code, fin_verkoopfactuur_maand, 'X', fin_verkoopfactuur_c2, 'X'
FROM fin_verkoopfactuur v,
mld_opdr o,
mld_melding m,
mld_stdmelding std
WHERE v.fin_verkoopfactuur_refkey = o.mld_opdr_key
AND o.mld_melding_key = m.mld_melding_key
AND m.mld_stdmelding_key = std.mld_stdmelding_key
AND fin_verkoopfactuur_aanmaak = v_logdate
AND v.prs_kostenplaats_nr in ('0000003','0000004')
GROUP BY fin_verkoopfactuur_id, fin_verkoopfactuur_xmlnode, fin_verkoopfactuur_refkey, fin_verkoopfactuur_aanmaak, prs_kostenplaats_nr, prs_debiteur_naam, prs_kostensoort_oms, prs_kostensoortgrp_oms, std.prs_kostensoort_key, fin_btwtabelwaarde_code, fin_verkoopfactuur_maand, fin_verkoopfactuur_c2, 'X';
END IF;
FOR rec1 IN c_bes
LOOP
BEGIN
-- indien nog niet afgemeld, dan maar even afmelden.
IF rec1.bes_bestelopdr_status = 3 THEN -- in behandeling
UPDATE bes_bestelopdr
SET bes_bestelopdr_status = 4
WHERE bes_bestelopdr_key= rec1.bes_bestelopdr_key
AND bes_bestelopdr_status = 3;
END IF;
IF rec1.bes_bestelopdr_status = 5 -- bevestigd
OR rec1.bes_bestelopdr_status = 4 -- in bestelling
OR rec1.bes_bestelopdr_status = 3 THEN
UPDATE bes_bestelopdr_item B
SET bes_bestelopdr_item_aantalontv = COALESCE(bes_bestelopdr_item_aantal, 0),
bes_bestelopdr_item_ontvangen = SYSDATE
WHERE b.bes_bestelopdr_key = rec1.bes_bestelopdr_key;
UPDATE bes_bestelling_item bi
SET bes_bestelling_item_aantalontv = COALESCE(bes_bestelling_item_aantal, 0)
WHERE EXISTS (SELECT bes_bestelopdr_key
FROM bes_bestelopdr_item boi
WHERE bi.bes_bestelopdr_item_key = boi.bes_bestelopdr_item_key
AND bes_bestelopdr_key = rec1.bes_bestelopdr_key);
SELECT distinct bes_bestelling_key
INTO v_bestelling_key
FROM bes_bestelling_item bi, bes_bestelopdr_item boi
WHERE bi.bes_bestelopdr_item_key = boi.bes_bestelopdr_item_key
AND bes_bestelopdr_key = rec1.bes_bestelopdr_key;
bes.updatebestelopdrstatus(rec1.bes_bestelopdr_key, v_aanvrager);
bes.updatebestellingstatus(v_bestelling_key, v_aanvrager);
END IF;
END;
END LOOP;
-- set de status van de opdracht en neem de kosten over van de factuur.
FOR rec1 IN c_opdr
LOOP
BEGIN
-- indien nog niet afgemeld, dan maar even afmelden.
IF rec1.mld_statusopdr_key <> 6 AND rec1.mld_statusopdr_key <> 7 AND rec1.mld_statusopdr_key <> 9 THEN
mld.setopdrachtstatus (rec1.mld_opdr_key, 6, v_aanvrager);
mld.setopdrachtstatus (rec1.mld_opdr_key, 9, v_aanvrager);
END IF;
UPDATE mld_opdr o
SET mld_opdr_kosten =
(SELECT SUM (fin_factuurregel_totaal)
FROM aaxx_v_aanwezigfactuur f
, fin_factuurregel fr
WHERE f.fin_factuur_key = fr.fin_factuur_key
AND f.mld_opdr_key = o.mld_opdr_key
AND f.fin_factuur_statuses_key >= 6)
WHERE o.mld_opdr_key = rec1.mld_opdr_key
AND rec1.mld_melding_status IN (4, 5, 7); -- anders faalt de trigger sowieso
-- update meldingstatus
mld.updatemeldingstatusAV (rec1.mld_melding_key, 0, v_aanvrager, 0);
-- zet de status naar verwerkt (user is facilitor)
mld.setopdrachtstatus (rec1.mld_opdr_key, 7, v_aanvrager);
END;
END LOOP;
-- Neem de kosten van de factuur over in het termijnbedrag
FOR rec1 IN c_cnt
LOOP
BEGIN
UPDATE cnt_factuurschema fs
SET (cnt_factuurschema_opmerking,
cnt_factuurschema_bedrag) =
(SELECT SUBSTR(DECODE(cnt_factuurschema_opmerking, NULL, '', cnt_factuurschema_opmerking || CHR(10)) || 'Bedrag na verwerken facturen ' || TO_CHAR(SYSDATE, 'DD-MM-YYYY') || ' aangepast van ' || cnt_factuurschema_bedrag || ' naar ' || SUM (fin_factuurregel_totaal),1,320) opmerking,
SUM (fin_factuurregel_totaal) totaal
FROM aaxx_v_aanwezigfactuur f
, fin_factuurregel fr
WHERE f.fin_factuur_key = fr.fin_factuur_key
AND f.cnt_contract_key = fs.cnt_contract_key
AND f.fin_factuur_boekmaand = fs.cnt_factuurschema_boekmaand
AND f.fin_factuur_statuses_key >= 6)
WHERE fs.cnt_factuurschema_key = rec1.cnt_factuurschema_key;
UPDATE cnt_contract c
SET c. cnt_contract_kosten = (SELECT SUM(cnt_factuurschema_bedrag)
FROM cnt_factuurschema fs
WHERE fs.cnt_contract_key = rec1.cnt_contract_key)
WHERE c.cnt_contract_key = rec1.cnt_contract_key;
END;
END LOOP;
FOR rec1 IN c_fact
LOOP
BEGIN
UPDATE fin_factuur f
SET fin_factuur_statuses_key = 7
WHERE f.fin_factuur_key = rec1.fin_factuur_key;
fac.trackaction ('FINVER', rec1.fin_factuur_key, v_aanvrager, NULL, NULL);
END;
END LOOP;
-- verwijder de enties uit de tijdelijke tabel. (AAEY#29465)
DELETE aaxx_exp_factuur;
END;
/
--=============================================================================
-- EXPORTFUNCTIES VERKOOPFACTUREN - verkoopinterface
-- Uitleg van de kolommen zoals ze naar Exact gaan:
-- 01 Regelnummer Vaste waarde 0
-- 02 Factuurcode Vaste waarde 3
-- 03 Debiteurnummer Kostenplaatsnummer
-- 04 Referentie "Hospitality" plus de eerste drie posities van de maand voor catering en kostensoortgroep omschrijving voor opdrachten
-- 05 Referentie 1 Leeg (ordernummer klant voor DBS)
-- 06 Referentie 2 Leeg
-- 07 Referentie 3 Leeg
-- 08 Ordernummer Leeg
-- 09 Orderdatum Datum van de export.
-- 10 Magazijn 1
-- 11 Extra artikel omschrijving Leeg
-- 12 Vertegenwoordigers Leeg
-- 13 Kostenplaats Exact_code van het gebouw
-- 14 Selectiecode Leeg
-- 15 Bedrag in vreemde valuta Leeg
-- 16 Netto prijs Leeg
-- 17 Valutacode EUR
-- 18 Wisselkoers Leeg
-- 19 Betalingsconditie E6
-- 20 Leveringswijze 1
-- 21 Vrachtkosten Leeg
-- 22 Orderkosten Leeg
-- 23 Faktuurkorting Leeg
-- 24 Totaal bedrag Leeg
-- 25 Colli 0
-- 26 Bruto gewicht 0
-- 27 Netto gewicht 0
-- 28 Afleverdatum Leeg
-- 29 - Leeg
-- 30 - Leeg
-- 31 Bruto/Netto Leeg
-- 32 - Leeg
-- 33 - Leeg
-- 34 - Leeg
-- 35 - Leeg
-- 36 - Leeg
-- 37 - Leeg
-- 38 - Leeg
-- 39 - Leeg
-- 40 - Leeg
-- 41 - Leeg
-- 42 Faktuursoort V
-- 43 Orderdebiteur is faktuurdebiteur Leeg
-- 44 Debiteur type Leeg
-- 45 Gefiatteerd N
-- 46 Faktuurdebiteur Kostenplaatsnummer
-- 47 - Leeg
-- 48 Facktuurnummer Leeg
-------------------------------------------------------------------------------
-- btw code is 19 procent als percentage is 19 of 0;
CREATE OR REPLACE VIEW aaxx_v_export_exact_verkoop_t (
result,
opdr_jaar,
result_order
)
AS
SELECT '0' || ',' || DECODE(aaxx_get_user, 'RABO', '2', '3') || ',' || prs_debiteur_naam
|| ','
|| DECODE(aaxx_get_user, 'DSM', replace(prs_kostensoortgrp_oms, ',', '') || ' ' || to_char(SYSDATE, 'MON') , replace(prs_kostensoortgrp_oms, ',', ''))
|| ','
|| ''
|| ','
|| ''
|| ','
|| ''
|| ','
|| ''
|| ','
|| TO_CHAR (SYSDATE, 'ddmmyyyy')
|| ','
|| '1'
|| ','
|| ''
|| ','
|| ''
|| ','
|| DECODE(aaxx_get_user, 'AH', '', 'DOW', '02510001') -- exact code gebouw
|| ','
|| ''
|| ','
|| ''
|| ','
|| ''
|| ','
|| 'EUR'
|| ','
|| ''
|| ','
|| DECODE(aaxx_get_user, 'DOW', '60')
|| ','
|| '1'
|| ','
|| ''
|| ','
|| ''
|| ','
|| ''
|| ','
|| ''
|| ','
|| TO_CHAR (0)
|| ','
|| TO_CHAR (0)
|| ','
|| TO_CHAR (0)
|| ','
|| ''
|| ','
|| ''
|| ','
|| ''
|| ','
|| ''
|| ','
|| ''
|| ','
|| ''
|| ','
|| ''
|| ','
|| ''
|| ','
|| ''
|| ','
|| ''
|| ','
|| ''
|| ','
|| ''
|| ','
|| ''
|| ','
|| ''
|| ','
|| 'V'
|| ','
|| ''
|| ','
|| ''
|| ','
|| 'N'
|| ','
|| prs_debiteur_naam
|| ','
|| ''
|| ','
|| '',
fin_verkoopfactuur_maand,
fin_verkoopfactuur_c2 || replace(prs_kostensoortgrp_oms, ',', '') || DECODE(aaxx_get_user, 'NMM', '', 'DOW', '', 'DSM', '', 'RABO', '', 'EXPO', '', 'INLO', '', 'SMKA', '', prs_kostenplaats_nr) || '0'
FROM fin_verkoopfactuur
WHERE fin_verkoopfactuur_datum IS NULL
GROUP BY replace(prs_kostensoortgrp_oms, ',', ''), prs_debiteur_naam, DECODE(aaxx_get_user, 'NMM', '', 'DOW', '', 'DSM', '', 'RABO', '', 'EXPO', '', 'INLO', '', 'SMKA', '', prs_kostenplaats_nr), fin_verkoopfactuur_c2, DECODE(aaxx_get_user, 'AH', '', 'DOW', '02510001'), fin_verkoopfactuur_maand
UNION ALL
-- Uitleg subregel:
-- 01 Regelnummer Vaste waarde 1
-- 02 - Vaste waarde 5
-- 03 - Leeg
-- 04 - Leeg
-- 05 - Leeg
-- 06 - Leeg
-- 07 - Leeg
-- 08 - Leeg
-- 09 - Leeg
-- 10 Magazijn 1
-- 11 - Leeg
-- 12 - Leeg
-- 13 - Leeg
-- 14 - Leeg
-- 15 - Leeg
-- 16 - Leeg
-- 17 - Leeg
-- 18 - Leeg
-- 19 - Leeg
-- 20 - Leeg
-- 21 - Leeg
-- 22 - Leeg
-- 23 - Leeg
-- 24 - Leeg
-- 25 - Leeg
-- 26 - Leeg
-- 27 - Leeg
-- 28 Afleverdatum Leeg
-- 29 Afleverweek Leeg
-- 30 Artikelcode Kostensoortcode
-- 31 Artikelsoort V
-- 32 Omschrijving "Hospitality services" voor catering en "SA### vakgroep opdrachtnummer(kenmerk)" voor meerwerk
-- 33 Hoeveelheid 1
-- 34 BTW code 4
-- 35 Prijslijst Leeg
-- 36 Korting 0
-- 37 Prijs Bedrag
-- 38 Nettoprijs Leeg
-- 39 Kostenplaats Kostenplaats
-- 40 Tekst voor tekstregels Leeg
-- 41 Omzetrekening Leeg (bij het inlezen in Exact wordt deze code erbij gezocht op basis van de artikelcode (kostensoort)
-- 42 - Leeg
-- 43 - Leeg
-- 44 - Leeg
-- 45 - Leeg
-- 46 - Leeg
-- 47 Kostenplaats Exact_code van het gebouw (bij contractorders wordt het eerste gebouw uit het contract geselecteerd) .
-- 48 - Leeg
SELECT '1'
|| ','
|| DECODE(aaxx_get_user, 'RABO', '2', '3')
|| ','
|| ''
|| ','
|| ''
|| ','
|| ''
|| ','
|| ''
|| ','
|| ''
|| ','
|| ''
|| ','
|| ''
|| ','
|| '1'
|| ','
|| ''
|| ','
|| ''
|| ','
|| ''
|| ','
|| ''
|| ','
|| ''
|| ','
|| ''
|| ','
|| ''
|| ','
|| ''
|| ','
|| ''
|| ','
|| ''
|| ','
|| ''
|| ','
|| ''
|| ','
|| ''
|| ','
|| ''
|| ','
|| ''
|| ','
|| ''
|| ','
|| ''
|| ','
|| ''
|| ','
|| ''
|| ','
|| ''
|| ' '
|| prs_kostensoort_oms
|| ','
|| 'V'
|| ','
|| replace(fin_verkoopfactuur_omschr, ',', '')
|| ','
|| '1'
|| ','
|| fin_btwtabelwaarde_code
|| ','
|| ''
|| ','
|| '0'
|| ','
|| REPLACE (TO_CHAR (sum(fin_verkoopfactuur_bedrag)), ',', '.')
|| ','
|| ''
|| ','
|| DECODE (aaxx_get_user, 'DOW', DECODE (fin_verkoopfactuur_omschr, 'BASE FEE 3%', '999999', prs_kostenplaats_nr),
prs_kostenplaats_nr)
|| ','
|| ''
|| ','
|| ''
|| ','
|| ''
|| ','
|| ''
|| ','
|| ''
|| ','
|| ''
|| ','
|| ''
|| ','
|| fin_verkoopfactuur_c1 -- exact code gebouw
|| ','
|| '',
fin_verkoopfactuur_maand,
fin_verkoopfactuur_c2 || replace(prs_kostensoortgrp_oms, ',', '') || DECODE(aaxx_get_user, 'DOW', '', 'DSM', '', prs_kostenplaats_nr)|| '1' || fin_verkoopfactuur_c3 || replace(fin_verkoopfactuur_omschr, ',', '')
FROM fin_verkoopfactuur
WHERE fin_verkoopfactuur_datum IS NULL
GROUP BY fin_verkoopfactuur_c3, replace(prs_kostensoortgrp_oms, ',', ''), fin_verkoopfactuur_omschr, replace(fin_verkoopfactuur_omschr, ',', ''), prs_kostenplaats_nr, fin_verkoopfactuur_c2, fin_verkoopfactuur_c1, prs_kostensoort_oms, fin_btwtabelwaarde_code, fin_verkoopfactuur_maand;
CREATE OR REPLACE VIEW aaxx_v_export_exact_verkoop (
result,
result_order
)
AS
SELECT result,
result_order
FROM aaxx_exp_exact_verkoop;
-- Voordat de verkoopfacturen naar Exact geexporteerd wordt moet de volgorde van de subregels gecorrigeerd worden
CREATE OR REPLACE PROCEDURE aaxx_select_exact_verkoop (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2,
p_opdr_jaar IN VARCHAR2
)
AS
CURSOR c1 IS
SELECT result, result_order
FROM aaxx_v_export_exact_verkoop_t
WHERE opdr_jaar = p_opdr_jaar
ORDER BY result_order;
v_first NUMBER;
v_count NUMBER;
BEGIN
v_count := 0;
DELETE aaxx_exp_exact_verkoop;
FOR rec IN c1
LOOP
BEGIN
v_first := substr(rec.result, 1,1);
IF v_first = 0 THEN
v_count := 0;
ELSE
v_count := v_count + 1;
END IF;
INSERT INTO aaxx_exp_exact_verkoop (
result,
result_order)
VALUES (
v_count || substr (rec.result, 2),
rec.result_order|| TO_CHAR(v_count, 'FM0000')); -- voorkom dat de sortering door beinvloed wordt door de 1000.
-- TO_CHAR(1000+v_count)); -- forceer sortering bij count > 9
END;
END LOOP;
END;
/
-- Na dat de verkoopfacturen naar Exact geexporteerd zijn wordt de timestamp gezet.
CREATE OR REPLACE PROCEDURE aaxx_export_exact_verkoop (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2,
p_filedir IN VARCHAR2,
p_filename IN VARCHAR2,
p_opdr_jaar IN VARCHAR2
)
AS
v_timestamp DATE;
v_verkoopfactuurkop_key NUMBER(10);
BEGIN
v_timestamp := SYSDATE;
INSERT INTO fin_verkoopfactuurkop (fin_verkoopfactuurkop_id)
VALUES (p_opdr_jaar || ' - ' || TO_CHAR(v_timestamp, 'yyyy-mm-dd hh24:mi:ss'))
RETURNING fin_verkoopfactuurkop_key
INTO v_verkoopfactuurkop_key;
UPDATE fin_verkoopfactuur
SET fin_verkoopfactuur_datum = v_timestamp
, fin_verkoopfactuurkop_key = v_verkoopfactuurkop_key
WHERE fin_verkoopfactuur_datum IS NULL
AND fin_verkoopfactuur_maand = p_opdr_jaar;
INSERT INTO imp_schedule (imp_schedule_name) VALUES ('EXACT_VERKOOP_VJ');
END;
/
--=============================================================================
-- EXPORTFUNCTIES PROJECTUREN
--=============================================================================
-- Basisgegevens van door te belasten opdrachturen
-- (uurtarief van opdracht, anders van persoon)
-- Keys: 7 (Project) uren (opdrachttype)
-- 14 Type project (eigen tabel)
-- 15 Rekening courant (eigen tabel)
-- 55 Projectnaam (kenmerksoort)
-- 186 Type project (flex opdracht)
-- 187 Verrekenen met (flex opdracht)
-- 188 Uurtarief (flex opdracht)
-- 189 ProjectKPN uit AD (flex opdracht)
-- 2 ProjectKPN uit AD (flex perslid)
-- 3 AAFM Personeelsnummber (flex perslid)
-- 6 Uurtarief intern (flex perslid)
CREATE OR REPLACE VIEW aaxx_v_exact_uren_gegevens
AS
SELECT m.mld_melding_key,
o.mld_opdr_key,
o.mld_opdr_bedrijfopdr_volgnr,
vt.ins_srtdiscipline_prefix,
vt.ins_srtdiscipline_prefix || m.mld_melding_key meldingnr,
vt.ins_srtdiscipline_prefix || m.mld_melding_key || '/'
|| o.mld_opdr_bedrijfopdr_volgnr opdrachtnr,
pn.mld_kenmerkmelding_waarde projectnaam,
tp.fac_usrdata_code projecttype_code,
tp.fac_usrdata_omschr projecttype_omschr,
DECODE (aaxx_get_user,
'SABIC', DECODE (
(SELECT l.alg_locatie_key
FROM alg_locatie l
WHERE l.alg_locatie_key = m.mld_alg_locatie_key
AND m.mld_melding_key = o.mld_melding_key),
101, -- Bergen op Zoom BOZ
'00601000',
102, -- Raamsdonksveer RDV
'00601000',
121, -- Genk AASA#66258
'00602000',
'00600000'),
kpn.prs_kostenplaats_nr)
prs_kostenplaats_nr,
kpo.mld_kenmerkopdr_waarde projectkpn_opdr,
kpp.prs_kenmerklink_waarde projectkpn_perslid,
rc.fac_usrdata_code rek_courant,
o.mld_statusopdr_key,
so.mld_statusopdr_omschrijving,
ap.prs_perslid_key,
DECODE (aaxx_get_user,
'IT', prs_perslid_nr,
pnp.prs_kenmerklink_waarde)
aafm_perslid_nr,
akpn.prs_kostenplaats_nr afdkpn,
o.mld_opdr_uren,
ou.mld_opdr_uren_key,
ou.mld_opdr_uren_datum,
ou.mld_opdr_uren_status,
lx.fac_locale_xsl_tekst uren_status_tekst,
ou.mld_opdr_uren_besteed,
ou.mld_opdr_uren_opmerking,
fac.safe_To_Number(ut.mld_kenmerkopdr_waarde) uurtarief_opdr,
DECODE (UPPER(tp.fac_usrdata_omschr), 'INTERN INTERIM MANAGEMENT PROJECT DIRECT - DIRECT', fac.safe_to_number(uti.prs_kenmerklink_waarde),
ap.prs_perslid_uurloon) uurtarief_perslid
FROM mld_melding m,
mld_stdmelding sm,
mld_discipline vg,
ins_srtdiscipline vt,
prs_kostenplaats kpn,
mld_opdr o,
mld_statusopdr so,
prs_perslid ap,
prs_v_aanwezigafdeling aa,
prs_kostenplaats akpn,
mld_opdr_uren ou,
(SELECT * FROM mld_kenmerkmelding WHERE mld_kenmerk_key IN
(SELECT mld_kenmerk_key FROM mld_kenmerk
WHERE mld_srtkenmerk_key = 55
AND mld_kenmerk_verwijder IS NULL) ) pn, -- projectnaam
(SELECT * FROM mld_kenmerkopdr WHERE mld_kenmerk_key = 187) vm, -- verrekenen met
(SELECT * FROM fac_usrdata WHERE fac_usrtab_key = 15) rc, -- rekening courant
(SELECT * FROM mld_kenmerkopdr WHERE mld_kenmerk_key = 186) ep, -- type project
(SELECT * FROM fac_usrdata WHERE fac_usrtab_key = 14) tp, -- type project
(SELECT * FROM mld_kenmerkopdr WHERE mld_kenmerk_key = 189) kpo, -- projectkpn (opdr)
(SELECT * FROM prs_kenmerklink WHERE prs_kenmerk_key = 2) kpp, -- projectkpn (perslid)
(SELECT * FROM prs_kenmerklink WHERE prs_kenmerk_key = 6) uti, -- uurtarief intern (perslid)
(SELECT * FROM mld_kenmerkopdr WHERE mld_kenmerk_key = 188) ut, -- uurtarief (opdracht)
(SELECT * FROM fac_locale_xsl WHERE fac_locale_xsl_lang = 'NL') lx, -- locale-strings
(SELECT * FROM prs_kenmerklink WHERE prs_kenmerk_key = 3) pnp -- personeelsnummer (perslid)
WHERE o.mld_typeopdr_key = 7
AND m.mld_melding_key = o.mld_melding_key
AND sm.mld_stdmelding_key = m.mld_stdmelding_key
AND vg.ins_discipline_key = sm.mld_ins_discipline_key
AND vt.ins_srtdiscipline_key = vg.ins_srtdiscipline_key
AND pn.mld_melding_key(+) = m.mld_melding_key
AND so.mld_statusopdr_key = o.mld_statusopdr_key
AND kpn.prs_kostenplaats_key = o.prs_kostenplaats_key
AND vm.mld_opdr_key(+) = o.mld_opdr_key
AND rc.fac_usrdata_key(+) = fac.safe_To_Number(vm.mld_kenmerkopdr_waarde)
AND ep.mld_opdr_key(+) = o.mld_opdr_key
AND tp.fac_usrdata_key(+) = fac.safe_To_Number(ep.mld_kenmerkopdr_waarde)
AND kpo.mld_opdr_key(+) = o.mld_opdr_key
AND kpp.prs_link_key(+) = o.mld_uitvoerende_keys
AND uti.prs_link_key(+) = o.mld_uitvoerende_keys
AND pnp.prs_link_key(+) = o.mld_uitvoerende_keys
AND ut.mld_opdr_key(+) = o.mld_opdr_key
AND ap.prs_perslid_key = o.mld_uitvoerende_keys
AND aa.prs_afdeling_key = ap.prs_afdeling_key
AND akpn.prs_kostenplaats_key(+) = aa.prs_kostenplaats_key
AND ou.mld_opdr_key = o.mld_opdr_key
AND lx.fac_locale_xsl_label = 'lcl_mld_uren_status_'||ou.mld_opdr_uren_status;
-- Van fac_rapport naar exportbestand (XML)
CREATE OR REPLACE VIEW aaxx_v_export_exact_uren_xml (
result,
result_order
)
AS
SELECT fac_rapport_regel, fac_rapport_volgnr
FROM fac_rapport
WHERE fac_rapport_node = SUBSTR ('EXACT_UREN', 1, 12);
-- Exportregels (XML-structuur) in fac_rapport
CREATE OR REPLACE PROCEDURE aaxx_select_exact_uren_xml (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2,
p_kpnprefix IN VARCHAR2
)
AS
-- Status 3 = Goedgekeurd
CURSOR c
IS
SELECT *
FROM aaxx_v_exact_uren_gegevens
WHERE mld_opdr_uren_status = 3
AND prs_kostenplaats_nr LIKE p_kpnprefix||'%'
AND (aaxx_get_user <> 'IT' OR ins_srtdiscipline_prefix = 'PR')
ORDER BY mld_opdr_uren_datum, opdrachtnr;
v_order_count NUMBER;
v_amount_sum NUMBER(10,2);
v_count NUMBER;
v_bestand VARCHAR2(12);
BEGIN
v_order_count := 0;
v_amount_sum := 0;
v_count := 0;
v_bestand := SUBSTR(p_applname, 1, 12);
-- Eerst opruiming
DELETE FROM imp_log
WHERE imp_log_applicatie = p_applname;
DELETE fac_rapport
WHERE fac_rapport_node = v_bestand;
DELETE aaxx_exp_uren
WHERE COALESCE(administratie, 'GEEN') = COALESCE(p_kpnprefix, 'GEEN');
-- header
aaxx_add_xml_row (v_bestand, '<?xml version="1.0" encoding="windows-1252"?>');
aaxx_add_xml_row (v_bestand, '<eExact>');
aaxx_add_xml_row (v_bestand, '<GLEntries>');
FOR rec IN c
LOOP
BEGIN
aaxx_add_xml_row (v_bestand, '<GLEntry>');
aaxx_add_xml_row (v_bestand, '<Journal code="24" type="M"/>');
aaxx_add_xml_row (v_bestand, '<FinEntryLine>');
aaxx_add_xml_element (v_bestand, 'Date', TO_CHAR(rec.mld_opdr_uren_datum, 'yyyy-mm-dd') );
aaxx_add_xml_row (v_bestand, '<GLAccount code="' || rec.projecttype_code || '"/>');
aaxx_add_xml_element (v_bestand, 'Description', rec.projectnaam);
aaxx_add_xml_row (v_bestand, '<Costcenter code="' || rec.prs_kostenplaats_nr || '"/>');
aaxx_add_xml_row (v_bestand, '<Resource number="'|| rec.aafm_perslid_nr ||'"/>');
aaxx_add_xml_row (v_bestand, '<Project code="' || rec.meldingnr || '" type="I" status="A">');
aaxx_add_xml_element (v_bestand, 'Description', rec.projectnaam);
aaxx_add_xml_row (v_bestand, '</Project>');
aaxx_add_xml_element (v_bestand, 'Quantity', TO_CHAR(rec.mld_opdr_uren_besteed) );
aaxx_add_xml_row (v_bestand, '<Amount>');
aaxx_add_xml_row (v_bestand, '<Currency code="EUR"/>');
aaxx_add_xml_element (v_bestand, 'Debit', TO_CHAR(rec.mld_opdr_uren_besteed*COALESCE(rec.uurtarief_opdr, rec.uurtarief_perslid) ) );
aaxx_add_xml_element (v_bestand, 'Credit', '0');
aaxx_add_xml_row (v_bestand, '</Amount>');
aaxx_add_xml_row (v_bestand, '<FinReferences>');
aaxx_add_xml_element (v_bestand, 'DocumentDate', TO_CHAR(SYSDATE, 'YYYY-MM-DD') );
aaxx_add_xml_row (v_bestand, '</FinReferences>');
aaxx_add_xml_row (v_bestand, '</FinEntryLine>');
IF COALESCE(rec.uurtarief_opdr, rec.uurtarief_perslid) IS NULL
THEN
fac.writelog (p_applname, 'W', 'Geen uurtarief voor persoon nr ' || rec.aafm_perslid_nr, '');
END IF;
v_amount_sum := v_amount_sum + rec.mld_opdr_uren_besteed*COALESCE(rec.uurtarief_opdr, COALESCE(rec.uurtarief_perslid, 0));
aaxx_add_xml_row (v_bestand, '<FinEntryLine>');
aaxx_add_xml_row (v_bestand, '<GLAccount code="'||rec.rek_courant||'"/>');
aaxx_add_xml_element (v_bestand, 'Description', rec.projectnaam);
--aaxx_add_xml_row (v_bestand, '<Costcenter code="' || coalesce(rec.projectkpn_opdr, rec.projectkpn_perslid) || '"/>');
IF (SUBSTR (rec.rek_courant, 1, 1) = '2' OR aaxx_get_user = 'SABIC') -- Begint met '2'!
THEN
aaxx_add_xml_row (v_bestand, '<Costcenter code="' || rec.prs_kostenplaats_nr || '"/>');
ELSE
aaxx_add_xml_row (v_bestand, '<Costcenter code="' || coalesce(rec.projectkpn_opdr, rec.projectkpn_perslid) || '"/>');
END IF;
aaxx_add_xml_row (v_bestand, '<Resource number="'|| rec.aafm_perslid_nr ||'"/>');
aaxx_add_xml_row (v_bestand, '<Project code="' || rec.meldingnr || '" type="I" status="A">');
aaxx_add_xml_element (v_bestand, 'Description', rec.projectnaam);
aaxx_add_xml_row (v_bestand, '</Project>');
aaxx_add_xml_element (v_bestand, 'Quantity', '-'||TO_CHAR(rec.mld_opdr_uren_besteed) );
aaxx_add_xml_row (v_bestand, '<Amount>');
aaxx_add_xml_row (v_bestand, '<Currency code="EUR"/>');
aaxx_add_xml_element (v_bestand, 'Debit', '0');
aaxx_add_xml_element (v_bestand, 'Credit', TO_CHAR(rec.mld_opdr_uren_besteed*COALESCE(rec.uurtarief_opdr, rec.uurtarief_perslid)) );
aaxx_add_xml_row (v_bestand, '</Amount>');
aaxx_add_xml_row (v_bestand, '<FinReferences>');
aaxx_add_xml_element (v_bestand, 'DocumentDate', SYSDATE);
aaxx_add_xml_row (v_bestand, '</FinReferences>');
aaxx_add_xml_row (v_bestand, '</FinEntryLine>');
aaxx_add_xml_row (v_bestand, '</GLEntry>');
END;
INSERT INTO aaxx_exp_uren
(mld_opdr_uren_key, administratie)
VALUES
(rec.mld_opdr_uren_key, p_kpnprefix);
v_order_count := v_order_count + 1;
END LOOP;
aaxx_add_xml_row (v_bestand, '</GLEntries>');
aaxx_add_xml_row (v_bestand, '</eExact>');
fac.writelog (p_applname, 'S', 'Exact export uitgevoerd. Aantal regels: ' || v_order_count || ' Totaal bedrag: ' || v_amount_sum, '');
END;
/
-- AAIT#22483: kenmerken van urenopdrachten vullen vanuit personeelsgegevens,
-- t.b.v. DWH-views
CREATE OR REPLACE PROCEDURE aaxx_select_dwh_set_kenmerken (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2
)
AS
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_errormsg VARCHAR2 (200);
v_aanduiding VARCHAR2 (100);
CURSOR c_flex
IS
SELECT 'PR'||o.mld_melding_key||'/'||o.mld_opdr_bedrijfopdr_volgnr opdrachtnr,
o.mld_opdr_key,
kpo.mld_kenmerkopdr_waarde projectkpn_opdr,
kpp.prs_kenmerklink_waarde projectkpn_perslid,
ut.mld_kenmerkopdr_waarde uurtarief_opdr,
DECODE (UPPER(tp.fac_usrdata_omschr),
'INTERN INTERIM MANAGEMENT PROJECT DIRECT - DIRECT', fac.safe_to_number(uti.prs_kenmerklink_waarde),
ap.prs_perslid_uurloon) uurtarief_perslid
FROM mld_opdr o,
prs_v_aanwezigperslid ap,
(SELECT *
FROM mld_kenmerkopdr
WHERE mld_kenmerk_key = 189) kpo, -- projectkpn (opdr)
(SELECT *
FROM prs_kenmerklink
WHERE prs_kenmerk_key = 2) kpp, -- projectkpn (perslid)
(SELECT *
FROM mld_kenmerkopdr
WHERE mld_kenmerk_key = 188) ut, -- uurtarief (opdracht)
(SELECT mld_opdr_key, fac_usrdata_omschr
FROM fac_usrdata ud, mld_kenmerkopdr ko
WHERE ud.fac_usrtab_key = 14
AND ko.mld_kenmerk_key = 186
AND ud.fac_usrdata_key = fac.safe_To_Number(ko.mld_kenmerkopdr_waarde)
) tp, -- type project
(SELECT prs_link_key prs_perslid_key, prs_kenmerklink_waarde
FROM prs_kenmerklink
WHERE prs_kenmerk_key = 6) uti -- uurtarief intern (perslid)
WHERE o.mld_typeopdr_key = 7 -- (Project) uren
AND kpo.mld_opdr_key(+) = o.mld_opdr_key
AND ut.mld_opdr_key(+) = o.mld_opdr_key
AND tp.mld_opdr_key(+) = o.mld_opdr_key
AND kpp.prs_link_key = o.mld_uitvoerende_keys
AND ap.prs_perslid_key = o.mld_uitvoerende_keys
AND ap.prs_perslid_key = uti.prs_perslid_key(+);
BEGIN
-- Project-KPN en uurtarief vastleggen
FOR rec IN c_flex
LOOP
BEGIN
v_aanduiding := rec.opdrachtnr;
IF (rec.projectkpn_opdr IS NULL)
THEN
IF (rec.projectkpn_perslid IS NULL)
THEN
fac.writelog (p_applname,
'W',
v_aanduiding||': Geen project-KPN bekend!',
'');
ELSE
aaxx_set_kenmerk('MLD', 189, rec.mld_opdr_key, rec.projectkpn_perslid, 0);
END IF;
END IF;
IF (rec.uurtarief_opdr IS NULL)
THEN
IF(rec.uurtarief_perslid IS NULL)
THEN
fac.writelog (p_applname,
'W',
v_aanduiding||': Geen uurtarief bekend!',
'');
ELSE
aaxx_set_kenmerk('MLD', 188, rec.mld_opdr_key, rec.uurtarief_perslid, 0);
END IF;
END IF;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg := 'OTHERS (error '||oracle_err_num||'/'||oracle_err_mes||')';
fac.writelog (p_applname,
'E',
v_aanduiding || ': ' || v_errormsg,
'');
END;
END LOOP;
END aaxx_select_dwh_set_kenmerken;
/
-- Ge<47>xporteerde uren op Verwerkt zetten en uurtarief + kostenplaats vastleggen bij
-- opdracht (kopi<70>ren van perslid).
-- AAIT#26399: Naast het op Verwerkt zetten van de kostenboekingen tevens voor
-- AAIT#35694: ALLEEN de uren op '5130976', '5101200', '4130976', '4370901', '4370904', '0100024' en '4130990') de tegenboeking
-- aanmaken/opslaan!
/* Formatted on 24-9-2013 16:42:55 (QP5 v5.115.810.9015) */
CREATE OR REPLACE PROCEDURE aaxx_export_verwerk_exact_uren (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2,
p_filedir IN VARCHAR2,
p_filename IN VARCHAR2,
p_kpnprefix IN VARCHAR2
)
AS
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_errormsg VARCHAR2 (200);
v_count NUMBER;
v_logdate DATE;
BEGIN
v_logdate := SYSDATE;
-- Goedgekeurde en ge<67>xporteerde urenregistraties op verwerkt zetten.
-- Status 4 = Verwerkt
UPDATE mld_opdr_uren
SET mld_opdr_uren_status = 4
WHERE mld_opdr_uren_key IN
(SELECT mld_opdr_uren_key
FROM aaxx_exp_uren
WHERE COALESCE (administratie, 'GEEN') =
COALESCE (p_kpnprefix, 'GEEN'));
-- Goedgekeurde improductieve uren op verwerkt zetten.
-- Status 3 = Goedgekeurd
-- Status 4 = Verwerkt
UPDATE mld_opdr_uren
SET mld_opdr_uren_status = 4
WHERE mld_impropdr_key IS NOT NULL AND mld_opdr_uren_status = 3;
COMMIT;
-- AAIT#26399: Van de hierboven verwerkte/geexporteerde uren wordt voor de
-- regels op gedefinieerde projecten (hardgecodeerd!) tot slot
-- nog een dekkingsregel aangemaakt.
-- Het leverende account wordt bepaald door het gedeelte achter
-- de slash ('/') in de 'Rek. Courant'-eigen tabel!
INSERT INTO aaxx_exp_uren_dekking (aanmaak,
mld_opdr_uren_key,
mld_opdr_uren_datum,
projecttype,
rek_courant,
kostenplaats,
perslid_nr,
projectcode,
projectnaam,
uren_besteed,
uurtarief,
lev_account)
SELECT SYSDATE,
ug.mld_opdr_uren_key,
ug.mld_opdr_uren_datum,
SUBSTR (ug.projecttype_code, 1, 10),
SUBSTR (ug.rek_courant, 1, 10),
SUBSTR (COALESCE (ug.projectkpn_opdr, ug.projectkpn_perslid), 1 , 30),
SUBSTR (ug.aafm_perslid_nr, 1, 30),
SUBSTR (ug.meldingnr, 1, 20),
SUBSTR (ug.projectnaam, 1, 30),
ug.mld_opdr_uren_besteed,
COALESCE (ug.uurtarief_opdr, ug.uurtarief_perslid),
COALESCE (
SUBSTR (
TRIM(SUBSTR (ud.fac_usrdata_omschr,
INSTR (ud.fac_usrdata_omschr, '/') + 1)),
1,
30
),
'XXX'
)
FROM aaxx_exp_uren u, aaxx_v_exact_uren_gegevens ug, fac_usrdata ud
WHERE COALESCE (u.administratie, 'GEEN') =
COALESCE (p_kpnprefix, 'GEEN')
AND u.mld_opdr_uren_key = ug.mld_opdr_uren_key
AND ug.projecttype_code IN ('5130976', '5101200', '4130976', '4370901', '4370904', '0100024', '4130990')
AND TRIM (ug.rek_courant) = TRIM (ud.fac_usrdata_code)
AND ud.fac_usrtab_key = 15 -- Rek. Courant-tabel
AND SUBSTR (ud.fac_usrdata_code, 1, 1) = '2' -- Begint met '2'!
AND ud.fac_usrdata_verwijder IS NULL
AND NOT EXISTS
(SELECT 1
FROM aaxx_exp_uren_dekking
WHERE mld_opdr_uren_key = ug.mld_opdr_uren_key);
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg :=
'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.writelog ('UREN',
'E',
v_errormsg,
'');
END;
/
--=============================================================================
-- EXPORTFUNCTIES BUNDEL_CATERING
-------------------------------------------------------------------------------
CREATE OR REPLACE VIEW aaxx_v_export_bundel_catering (
result,
result_order
)
AS
SELECT REPLACE(REPLACE('RES'
|| ';'
|| SYSDATE
|| ';'
|| SUBSTR (prs_kostenplaats_nr, 1, 30)
|| ';'
|| SUBSTR (prs_kostenplaats_omschrijving, 1, 60)
|| ';'
|| SUBSTR (prs_kostensoort_oms, 1, 60)
|| ';'
|| rra.res_rsv_artikel_aantal || ' * ' || ra.res_artikel_omschrijving
|| ';'
|| to_char(rra.res_rsv_artikel_prijs)
|| ';'
|| to_char(ra.res_artikel_inkoopprijs)
|| ';'
|| rra.res_rsv_artikel_key
,CHR (13), ''), CHR (10), '<ret>'), res_rsv_artikel_key
FROM res_rsv_ruimte rrr,
res_rsv_artikel rra,
res_artikel ra,
ins_tab_discipline d,
prs_kostensoort ks,
prs_kostenplaats k
WHERE rrr.res_rsv_ruimte_key = rra.res_rsv_ruimte_key
AND rra.res_rsv_artikel_verwijder IS NULL
AND rra.res_status_bo_key = 5
AND rra.res_artikel_key = ra.res_artikel_key
AND ra.res_discipline_key = d.ins_discipline_key
AND d.prs_kostensoort_key = ks.prs_kostensoort_key(+)
AND rrr.prs_kostenplaats_key = k.prs_kostenplaats_key
AND NVL (rra.res_rsv_artikel_levering,
TO_DATE ('20070101', 'yyyymmdd')
) <
TO_DATE ( TO_CHAR (SYSDATE, 'yyyy')
|| TO_CHAR (SYSDATE, 'mm')
|| '01',
'yyyymmdd'
);
-- Procedure om alle geexporteerde facturen naar status verwerkt te zetten.
CREATE OR REPLACE PROCEDURE aaxx_export_bundel_catering (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2,
p_filedir IN VARCHAR2,
p_filename IN VARCHAR2
)
AS
c_catmld_uitvoertijd mld_stdmelding.mld_stdmelding_t_uitvoertijd%TYPE := MLD_T_UITVOERTIJD(2, 'D');
v_errormsg VARCHAR (200);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_laatste_export DATE;
v_mld_melding_key NUMBER;
v_prs_bedrijf_key NUMBER;
v_prs_kostenplaats_key NUMBER;
v_mld_opdr_bedrijfopdr_volgnr NUMBER;
v_aanvrager NUMBER;
v_mld_workorder_key NUMBER;
BEGIN
-- Volgens mij (AEG) wordt deze niet meer gebruikt
COMMIT;
END;
/
--=============================================================================
-- EXPORTFUNCTIES BUDGET TRACKER
-------------------------------------------------------------------------------
CREATE OR REPLACE VIEW aaxx_v_export_budget_tracker (result, result_order)
AS
SELECT '"nummer";' ||
'"datum";' ||
'"status";' ||
'"laatste_actie";' ||
'"vakgroeptype";' ||
'"vakgroep";' ||
'"kostensoort_code";' ||
'"kostensoort_omschrijving";' ||
'"financiele_waarde";' ||
'"kostensoortgroep_omschrijving";' ||
'"melding";' ||
'"omschrijving";' ||
'"organisatie";' ||
'"naam";' ||
'"kostenplaats";' ||
'"kostenplaats_omschrijving";' ||
'"plaats";' ||
'"locatie";' ||
'"gebouw";' ||
'"code_exact";' ||
'"opdracht_status";' ||
'"uitvoerende";' ||
'"contactpersoon";' ||
'"uren";' ||
'"uurloon";' ||
'"materiaal";' ||
'"kosten";' ||
'"gefactureerd"', 0
FROM dual
UNION ALL
SELECT REPLACE(REPLACE( '"'
|| nummer
|| '";"'
|| datum
|| '";"'
|| status
|| '";"'
|| laatste_actie
|| '";"'
|| vakgroeptype
|| '";"'
|| vakgroep
|| '";"'
|| kostensoort_code
|| '";"'
|| kostensoort_omschrijving
|| '";"'
|| financiele_waarde
|| '";"'
|| kostensoortgroep_omschrijving
|| '";"'
|| melding
|| '";"'
|| aaxx_exp_escape (omschrijving)
|| '";"'
|| organisatie
|| '";"'
|| naam
|| '";"'
|| kostenplaats
|| '";"'
|| kostenplaats_omschrijving
|| '";"'
|| plaats
|| '";"'
|| locatie
|| '";"'
|| gebouw
|| '";"'
|| code_exact
|| '";"'
|| opdracht_status
|| '";"'
|| uitvoerende
|| '";"'
|| contactpersoon
|| '";"'
|| uren
|| '";"'
|| uurloon
|| '";"'
|| materiaal
|| '";"'
|| kosten
|| '";"'
|| gefactureerd
|| '"',CHR (13), ''), CHR (10), '<ret>'),
1
FROM (SELECT m.mld_melding_key || '/' || mld_opdr_bedrijfopdr_volgnr nummer,
TO_CHAR (o.mld_opdr_datumbegin, 'DD-MM-YYYY HH24:MI') datum,
(SELECT mld_statusopdr_omschrijving
FROM mld_statusopdr s
WHERE o.mld_statusopdr_key = s.mld_statusopdr_key)
status,
TO_CHAR (mld.getopdrachtstatusdate (o.mld_opdr_key, mld_statusopdr_key)
, 'DD-MM-YYYY HH24:MI'
)
laatste_actie,
sd.ins_srtdiscipline_prefix vakgroeptype,
md.ins_discipline_omschrijving vakgroep,
COALESCE (kstd.prs_kostensoort_oms, kvg.prs_kostensoort_oms)
kostensoort_code,
COALESCE (kstd.prs_kostensoort_opmerking,
kvg.prs_kostensoort_opmerking
)
kostensoort_omschrijving,
COALESCE (kstd.prs_kostensoort_refcode,
kvg.prs_kostensoort_refcode
)
financiele_waarde,
(SELECT prs_kostensoortgrp_oms FROM prs_kostensoortgrp ksg
WHERE ksg.prs_kostensoortgrp_key = COALESCE (kstd.prs_kostensoortgrp_key, kvg.prs_kostensoortgrp_key)) kostensoortgroep_omschrijving,
std.mld_stdmelding_omschrijving melding,
SUBSTR (REPLACE (mld_melding_omschrijving,
CHR (13) || CHR (10),
'<ret>'
),
1,
2000
)
omschrijving,
(SELECT d.prs_afdeling_naam
FROM prs_v_afdeling d
WHERE p.prs_afdeling_key = d.prs_afdeling_key)
organisatie,
p.prs_perslid_naam
|| DECODE (NVL (p.prs_perslid_voorletters, ''),
'', '',
', ' || p.prs_perslid_voorletters)
|| DECODE (NVL (p.prs_perslid_tussenvoegsel, ''),
'', '',
' ' || p.prs_perslid_tussenvoegsel)
|| DECODE (NVL (p.prs_perslid_voornaam, ''),
'', '',
' (' || p.prs_perslid_voornaam || ')')
naam,
(SELECT k.prs_kostenplaats_nr
FROM prs_kostenplaats k
WHERE k.prs_kostenplaats_key = o.prs_kostenplaats_key)
kostenplaats,
(SELECT k.prs_kostenplaats_omschrijving
FROM prs_kostenplaats k
WHERE k.prs_kostenplaats_key = o.prs_kostenplaats_key)
kostenplaats_omschrijving,
(SELECT alg_locatie_code
FROM alg_locatie l
WHERE m.mld_alg_locatie_key = l.alg_locatie_key)
|| (SELECT CASE COALESCE(G.alg_gebouw_code, '')
WHEN '' THEN '' ELSE '-' || G.alg_gebouw_code
END
|| CASE COALESCE(G.alg_verdieping_code, '')
WHEN '' THEN '' ELSE '-' || G.alg_verdieping_code
END
|| CASE COALESCE(G.alg_ruimte_nr, '')
WHEN '' THEN '' ELSE '-' || G.alg_ruimte_nr
END
FROM alg_v_allonrgoed_gegevens g
WHERE m.mld_alg_onroerendgoed_keys = g.alg_onroerendgoed_keys) plaats,
alg_locatie_code locatie,
alg_gebouw_code gebouw,
COALESCE ((SELECT exact_code
FROM aaxx_v_exact_code_gebouw ogk
WHERE ogk.alg_gebouw_key = v.alg_gebouw_key)
, v.alg_gebouw_code)
code_exact,
(SELECT mld_statusopdr_omschrijving
FROM mld_statusopdr so
WHERE o.mld_statusopdr_key = so.mld_statusopdr_key)
opdracht_status,
COALESCE ( (SELECT prs_bedrijf_naam
FROM prs_bedrijf b
WHERE o.mld_uitvoerende_keys = prs_bedrijf_key),
(SELECT prs_perslid_naam_full
FROM prs_v_perslid_fullnames_all
WHERE o.mld_uitvoerende_keys = prs_perslid_key)
)
uitvoerende,
(SELECT prs_perslid_naam_full
FROM prs_v_perslid_fullnames_all pf
WHERE o.prs_perslid_key = pf.prs_perslid_key)
contactpersoon,
replace(to_char (o.mld_opdr_uren, '999999990.99'), '.', ',') uren,
replace(to_char (o.mld_opdr_uurloon, '999999990.99'), '.', ',') uurloon,
replace(to_char (o.mld_opdr_materiaal, '999999990.99'), '.', ',') materiaal,
replace(to_char (o.mld_opdr_kosten, '999999990.99'), '.', ',') kosten,
COALESCE ( (SELECT trim(to_char (SUM (f.fin_factuur_totaal), '999999990.99'))
FROM aaxx_v_aanwezigfactuur f
WHERE f.mld_opdr_key = o.mld_opdr_key), '0'
)
gefactureerd
FROM mld_melding m,
mld_discipline md,
ins_srtdiscipline sd,
alg_v_allonrgoed_gegevens v,
alg_locatie l,
alg_district di,
prs_perslid p,
mld_opdr o,
mld_stdmelding std,
prs_kostensoort kstd,
prs_kostensoort kvg
WHERE m.mld_alg_locatie_key = l.alg_locatie_key(+)
AND l.alg_district_key = di.alg_district_key(+)
AND md.ins_srtdiscipline_key = sd.ins_srtdiscipline_key(+)
AND m.mld_alg_onroerendgoed_keys = v.alg_onroerendgoed_keys(+)
AND m.prs_perslid_key = p.prs_perslid_key
AND m.mld_stdmelding_key = std.mld_stdmelding_key
AND std.mld_ins_discipline_key = md.ins_discipline_key
AND m.mld_melding_key = o.mld_melding_key
AND std.prs_kostensoort_key = kstd.prs_kostensoort_key(+)
AND md.prs_kostensoort_key = kvg.prs_kostensoort_key(+)
UNION ALL
SELECT cnt_contract_nummer_intern,
TO_CHAR (c.cnt_contract_looptijd_van, 'DD-MM-YYYY HH24:MI') datum,
DECODE (SIGN (cnt_contract_looptijd_van - SYSDATE),
1,
'Toekomst',
-1,
DECODE (SIGN (cnt_contract_looptijd_tot - SYSDATE),
1,
'Actueel',
-1,
'Verlopen'
)
)
status,
TO_CHAR (c.cnt_contract_looptijd_tot, 'DD-MM-YYYY HH24:MI')
laatste_actie,
'Contract' vakgroeptype,
d.ins_discipline_omschrijving vakgroep,
k.prs_kostensoort_oms kostensoort_code,
k.prs_kostensoort_opmerking kostensoort_omschrijving,
k.prs_kostensoort_refcode financiele_waarde,
(SELECT prs_kostensoortgrp_oms FROM prs_kostensoortgrp ksg
WHERE ksg.prs_kostensoortgrp_key = k.prs_kostensoortgrp_key) kostensoortgroep_omschrijving,
c.cnt_contract_omschrijving melding,
SUBSTR (REPLACE (cnt_contract_document, CHR (13) || CHR (10), '<ret>'),
1,
2000
)
omschrijving,
prs_afdeling_naam organisatie,
p.prs_perslid_naam
|| DECODE (NVL (p.prs_perslid_voorletters, ''),
'', '',
', ' || p.prs_perslid_voorletters)
|| DECODE (NVL (p.prs_perslid_tussenvoegsel, ''),
'', '',
' ' || p.prs_perslid_tussenvoegsel)
|| DECODE (NVL (p.prs_perslid_voornaam, ''),
'', '',
' (' || p.prs_perslid_voornaam || ')')
naam,
kp.prs_kostenplaats_nr kostenplaats,
kp.prs_kostenplaats_omschrijving kostenplaats_omschrijving,
alg_locatie_code || '-' || alg_gebouw_code plaats,
alg_locatie_code locatie,
alg_gebouw_code gebouw,
COALESCE ((SELECT exact_code
FROM aaxx_v_exact_code_gebouw ogk
WHERE ogk.alg_gebouw_key = g.alg_gebouw_key)
, g.alg_gebouw_code)
code_exact,
'-' opdracht_status,
prs_bedrijf_naam uitvoerende,
'-' contactpersoon,
'0' uren,
'0' uurloon,
'0' materiaal,
COALESCE ( trim(to_char (DECODE (cnt_gew.cnt_contract_plaats_gewicht,
0,
1,
(cp.cnt_contract_plaats_gewicht
/ cnt_gew.cnt_contract_plaats_gewicht)
* c.cnt_contract_kosten), '999999990.99'))
,
'0'
)
kosten,
COALESCE ( trim(to_char (DECODE (cnt_gew.cnt_contract_plaats_gewicht,
0,
1,
(cp.cnt_contract_plaats_gewicht
/ cnt_gew.cnt_contract_plaats_gewicht)
* (SELECT SUM(fin_factuur_totaal)
FROM aaxx_v_aanwezigfactuur f
WHERE f.cnt_contract_key = c.cnt_contract_key
)), '999999990.99'))
,
'0'
)
gefactureerd
FROM cnt_contract c,
cnt_discipline d,
cnt_contract_plaats cp,
prs_bedrijf b,
prs_kostensoort k,
prs_kostenplaats kp,
prs_afdeling a,
prs_perslid p,
alg_locatie l,
alg_gebouw g,
prs_contactpersoon cop,
(SELECT cnt_contract_key,
SUM (cnt_contract_plaats_gewicht) cnt_contract_plaats_gewicht
FROM cnt_contract_plaats
GROUP BY cnt_contract_key) cnt_gew,
(SELECT cp.cnt_contract_plaats_key, alg_locatie_key, alg_gebouw_key
FROM alg_v_allonroerendgoed aog, cnt_contract_plaats cp
WHERE aog.alg_type = cp.cnt_alg_plaats_code
AND aog.alg_onroerendgoed_keys = cp.cnt_alg_plaats_key) cog
WHERE c.cnt_contract_key = cp.cnt_contract_key(+)
AND c.cnt_contract_key = cnt_gew.cnt_contract_key(+)
AND c.cnt_prs_bedrijf_key = b.prs_bedrijf_key
AND c.ins_discipline_key = d.ins_discipline_key
AND d.prs_kostensoort_key = k.prs_kostensoort_key(+)
AND c.prs_kostenplaats_key = kp.prs_kostenplaats_key(+)
AND c.prs_afdeling_key_eig = a.prs_afdeling_key
AND c.prs_perslid_key_beh = p.prs_perslid_key
AND cp.cnt_contract_plaats_key = cog.cnt_contract_plaats_key(+)
AND c.prs_contactpersoon_key = cop.prs_contactpersoon_key(+)
AND cog.alg_locatie_key = l.alg_locatie_key(+)
AND cog.alg_gebouw_key = g.alg_gebouw_key(+)
AND cnt_contract_verwijder IS NULL
);
--=============================================================================
-- EXPORTFUNCTIES MJB
-------------------------------------------------------------------------------
CREATE OR REPLACE VIEW aaxx_v_mjb_assets
AS
SELECT ins_discipline_omschrijving,
ins_srtgroep_omschrijving,
ins_srtdeel_code,
sd.ins_srtdeel_omschrijving,
d.ins_deel_omschrijving,
d.ins_deel_opmerking,
l.alg_locatie_code,
d.alg_gebouw_upper,
d.alg_verdieping_code,
d.alg_ruimte_nr,
d.ins_deel_aantal,
aaxx_get_kenmerk (
'INS',
(SELECT ins_kenmerk_key
FROM ins_kenmerk k, ins_srtkenmerk sk
WHERE k.ins_srtkenmerk_key = sk.ins_srtkenmerk_key
AND sk.INS_SRTKENMERK_OMSCHRIJVING = 'Plaats'
AND k.INS_SRTINSTALLATIE_KEY = d.ins_discipline_key
AND k.ins_kenmerk_verwijder IS NULL
AND sk.ins_srtkenmerk_verwijder IS NULL),
d.ins_deel_key)
plaats,
aaxx_get_kenmerk (
'INS',
(SELECT ins_kenmerk_key
FROM ins_kenmerk k, ins_srtkenmerk sk
WHERE k.ins_srtkenmerk_key = sk.ins_srtkenmerk_key
AND sk.INS_SRTKENMERK_OMSCHRIJVING = 'Bouwjaar'
AND k.INS_SRTINSTALLATIE_KEY = d.ins_discipline_key
AND k.ins_kenmerk_verwijder IS NULL
AND sk.ins_srtkenmerk_verwijder IS NULL),
d.ins_deel_key)
bouwjaar,
aaxx_get_kenmerk (
'INS',
(SELECT ins_kenmerk_key
FROM ins_kenmerk k, ins_srtkenmerk sk
WHERE k.ins_srtkenmerk_key = sk.ins_srtkenmerk_key
AND sk.INS_SRTKENMERK_OMSCHRIJVING = 'Capaciteit'
AND k.INS_SRTINSTALLATIE_KEY = d.ins_discipline_key
AND k.ins_kenmerk_verwijder IS NULL
AND sk.ins_srtkenmerk_verwijder IS NULL),
d.ins_deel_key)
capaciteit,
aaxx_get_kenmerk (
'INS',
(SELECT ins_kenmerk_key
FROM ins_kenmerk k, ins_srtkenmerk sk
WHERE k.ins_srtkenmerk_key = sk.ins_srtkenmerk_key
AND sk.INS_SRTKENMERK_OMSCHRIJVING =
'Datum laatste asset survey'
AND k.INS_SRTINSTALLATIE_KEY = d.ins_discipline_key
AND k.ins_kenmerk_verwijder IS NULL
AND sk.ins_srtkenmerk_verwijder IS NULL),
d.ins_deel_key)
laatste_survey,
aaxx_get_kenmerk (
'INS',
(SELECT ins_kenmerk_key
FROM ins_kenmerk k, ins_srtkenmerk sk
WHERE k.ins_srtkenmerk_key = sk.ins_srtkenmerk_key
AND sk.INS_SRTKENMERK_OMSCHRIJVING = 'Fabricaat'
AND k.INS_SRTINSTALLATIE_KEY = d.ins_discipline_key
AND k.ins_kenmerk_verwijder IS NULL
AND sk.ins_srtkenmerk_verwijder IS NULL),
d.ins_deel_key)
fabricaat,
aaxx_get_kenmerk (
'INS',
(SELECT ins_kenmerk_key
FROM ins_kenmerk k, ins_srtkenmerk sk
WHERE k.ins_srtkenmerk_key = sk.ins_srtkenmerk_key
AND sk.INS_SRTKENMERK_OMSCHRIJVING = 'Gewenste Conditie'
AND k.INS_SRTINSTALLATIE_KEY = d.ins_discipline_key
AND k.ins_kenmerk_verwijder IS NULL
AND sk.ins_srtkenmerk_verwijder IS NULL),
d.ins_deel_key)
gewenste_conditie,
id.ins_deel_mjb_score1
huidige_conditie,
aaxx_get_kenmerk (
'INS',
(SELECT ins_kenmerk_key
FROM ins_kenmerk k, ins_srtkenmerk sk
WHERE k.ins_srtkenmerk_key = sk.ins_srtkenmerk_key
AND sk.INS_SRTKENMERK_OMSCHRIJVING = 'Kritische asset'
AND k.INS_SRTINSTALLATIE_KEY = d.ins_discipline_key
AND k.ins_kenmerk_verwijder IS NULL
AND sk.ins_srtkenmerk_verwijder IS NULL),
d.ins_deel_key)
kritische_asset,
aaxx_get_kenmerk (
'INS',
(SELECT ins_kenmerk_key
FROM ins_kenmerk k, ins_srtkenmerk sk
WHERE k.ins_srtkenmerk_key = sk.ins_srtkenmerk_key
AND sk.INS_SRTKENMERK_OMSCHRIJVING =
'Referentienummer leverancier'
AND k.INS_SRTINSTALLATIE_KEY = d.ins_discipline_key
AND k.ins_kenmerk_verwijder IS NULL
AND sk.ins_srtkenmerk_verwijder IS NULL),
d.ins_deel_key)
referentie_leverancier,
aaxx_get_kenmerk (
'INS',
(SELECT ins_kenmerk_key
FROM ins_kenmerk k, ins_srtkenmerk sk
WHERE k.ins_srtkenmerk_key = sk.ins_srtkenmerk_key
AND sk.INS_SRTKENMERK_OMSCHRIJVING = 'Type'
AND k.INS_SRTINSTALLATIE_KEY = d.ins_discipline_key
AND k.ins_kenmerk_verwijder IS NULL
AND sk.ins_srtkenmerk_verwijder IS NULL),
d.ins_deel_key)
type_asset,
aaxx_get_kenmerk (
'INS',
(SELECT ins_kenmerk_key
FROM ins_kenmerk k, ins_srtkenmerk sk
WHERE k.ins_srtkenmerk_key = sk.ins_srtkenmerk_key
AND sk.INS_SRTKENMERK_OMSCHRIJVING = 'Eenheid'
AND k.INS_SRTINSTALLATIE_KEY = d.ins_discipline_key
AND k.ins_kenmerk_verwijder IS NULL
AND sk.ins_srtkenmerk_verwijder IS NULL),
d.ins_deel_key)
eenheid,
COALESCE(g.alg_gebouw_vervaldatum, d.ins_deel_vervaldatum) vervaldatum,
g.alg_gebouw_vervaldatum vervaldatum_gebouw,
d.ins_deel_vervaldatum vervaldatum_object,
d.ins_deel_key
FROM ins_v_deel_gegevens d,
ins_srtdeel sd,
alg_locatie l,
alg_gebouw g,
ins_deel id
WHERE d.ins_srtdeel_key = sd.ins_srtdeel_key
AND d.alg_locatie_key = l.alg_locatie_key
AND d.alg_gebouw_key = g.alg_gebouw_key
AND d.ins_deel_key = id.ins_deel_key
AND id.ins_deel_verwijder IS NULL
AND UPPER(d.ins_discipline_omschrijving) = 'GEBOUWOBJECTEN';
CREATE OR REPLACE VIEW AAXX_V_MJB_TAKEN
(
INS_SRTCONTROLE_KEY,
INS_DEEL_KEY,
OBJECTIDENTIFICATIE,
OMSCHRIJVING,
CATEGORIE,
TAAKOMSCHRIJVING,
GROEP,
PRIORITEIT,
PERCENTAGE,
TAAKOPMERKING_X,
KOSTEN_MATERIAAL,
DIENST,
BEDRIJF,
PERIODE_EENHEID,
PERIODE_FREQUENCY,
CYCLUS_STARTDATUM,
TAAK_KERENGERUND,
STATUS_LAATST_GERUNDE_TAAK,
PLANDATUM,
MJOB_DOORGESCHOVEN,
GEPLAND_OP,
GEPLAND_DOOR,
INBEHANDELING,
INBEHANDELING_DOOR,
BEHANDELAAR_OPTAAK,
GEREEDDATUM,
ACTIE_VEREIST,
TAAKAFHANDELING,
AFGEMELD,
AFGEMELD_DOOR,
VERWERKT,
VERWERKT_DOOR,
UITVOERDATUM_ORIGINEEL,
TELAAT,
KOSTEN_MATERIAAL_FREEZE,
OPMERKING,
FILTERDATUM_GEREED,
CYLCUS_VOLGENDE_DATUM,
CYCLUS_EINDDATUM,
EINDATUM_GEBOUW,
EINDDATUM_OBJECT,
EINDDATUM_OBJECTTAAK,
EINDDATUM_BASISTAAK,
LOCATIE,
GEBOUW
)
AS
SELECT x.ins_srtcontrole_key,
x.ins_deel_key,
d.ins_deel_omschrijving
objectidentificatie,
d.ins_deel_opmerking
omschrijving,
di.ins_discipline_omschrijving
categorie,
sc.ins_srtcontrole_omschrijving
taakomschrijving,
COALESCE (ins_srtcontroledl_xcp_groep, sc.ins_srtcontrole_groep)
groep,
sc.ins_srtcontrole_level
prioriteit,
COALESCE(ins_srtcontroledl_xcp_perc, sc.ins_srtcontrole_percentage)
percentage,
x.ins_srtcontroledl_xcp_opmerk
taakopmerking_X,
COALESCE (ins_srtcontroledl_xcp_materia, sc.ins_srtcontrole_materiaal)
kosten_materiaal,
prs_dienst_omschrijving
Dienst,
(SELECT LISTAGG (b.prs_bedrijf_naam, ',')
WITHIN GROUP (ORDER BY b.prs_bedrijf_naam)
AS bedrijf
FROM prs_bedrijf b, prs_bedrijfdienstlocatie bdl
WHERE pd.prs_dienst_key = bdl.prs_dienst_key
AND bdl.prs_bedrijf_key = b.prs_bedrijf_key
AND ( bdl.alg_gebouw_key = d.alg_gebouw_key
OR bdl.alg_locatie_key = d.alg_locatie_key))
Bedrijf,
DECODE (COALESCE (ins_srtcontroledl_xcp_eenheid, sc.ins_srtcontrole_eenheid),
4, 'J',
3, 'M',
2, 'W',
1, 'D')
periode_eenheid,
COALESCE(ins_srtcontroledl_xcp_periode, sc.ins_srtcontrole_periode)
periode_frequency,
ins_srtcontroledl_xcp_startdat
AS cyclus_startdatum,
(SELECT COUNT (dc.ins_deelsrtcontrole_key)
FROM ins_deelsrtcontrole dc
WHERE dc.ins_deel_key = d.ins_deel_key
AND dc.ins_srtcontrole_key = x.ins_srtcontrole_key)
taak_kerengerund,
v.status_laatst_gerunde_taak,
v.plandatum,
CASE WHEN v.mjob_doorgeschoven IS NOT NULL THEN TO_CHAR(v.ins_deelsrtcontrole_freezedate,'yyyy') ELSE NULL END mjob_doorgeschoven,
v.gepland_op,
v.gepland_door,
v.inbehandeling,
v.inbehandeling_door,
v.behandelaar_optaak,
v.gereeddatum,
v.actie_vereist,
v.taakafhandeling,
v.afgemeld,
v.afgemeld_door,
v.verwerkt,
v.verwerkt_door,
v.uitvoerdatum_origineel,
v.telaat,
v.kosten_materiaal_freeze,
v.opmerking,
v.filterdatum_gereed,
fac.nextcyclusdatedeel (d.ins_deel_key, sc.ins_srtcontrole_key,1)
cylcus_volgende_datum,
COALESCE(g.alg_gebouw_vervaldatum, d.ins_deel_vervaldatum, x.ins_srtcontroledl_xcp_eind, sc.ins_srtcontrole_eind)
AS cyclus_einddatum,
g.alg_gebouw_vervaldatum,
d.ins_deel_vervaldatum,
x.ins_srtcontroledl_xcp_eind,
sc.ins_srtcontrole_eind,
l.alg_locatie_omschrijving,
g.alg_gebouw_omschrijving
FROM ins_srtcontrole sc,
ins_srtcontroledl_xcp x,
ins_v_deel_gegevens d,
alg_locatie l,
alg_gebouw g,
ins_tab_discipline di,
prs_dienst pd,
( SELECT dc.ins_deelsrtcontrole_key,
dc.ins_deel_key,
dc.ins_srtcontrole_key,
DECODE (dc.ins_deelsrtcontrole_status,
0, 'Ingepland',
2, 'In behandeling',
5, 'Afgemeld',
6, 'Voltooid')
status_laatst_gerunde_taak,
dc.ins_deelsrtcontrole_plandatum
plandatum,
'<geen tracking van..>'
gepland_op,
'<geen tracking van..>'
gepland_door,
(SELECT MAX (fac_tracking_datum)
FROM fac_tracking ft, fac_srtnotificatie sn
WHERE ft.fac_srtnotificatie_key =
sn.fac_srtnotificatie_key
AND sn.fac_srtnotificatie_code = 'INSCBE'
AND fac_tracking_refkey =
dc.ins_deelsrtcontrole_key)
inbehandeling,
(SELECT p.prs_perslid_voornaam
|| ' '
|| p.prs_perslid_naam
FROM fac_srtnotificatie sn,
fac_tracking ft,
prs_perslid p
WHERE ft.prs_perslid_key = p.prs_perslid_key
AND ft.fac_srtnotificatie_key =
sn.fac_srtnotificatie_key
AND sn.fac_srtnotificatie_code = 'INSCBE'
AND ft.fac_tracking_refkey =
dc.ins_deelsrtcontrole_key)
inbehandeling_door,
(SELECT p.prs_perslid_voornaam
|| ' '
|| p.prs_perslid_naam
FROM prs_perslid p
WHERE prs_perslid_key = dc.prs_perslid_key)
behandelaar_optaak,
dc.ins_deelsrtcontrole_datum
gereeddatum,
CASE
WHEN dc.ins_deelsrtcontrole_status = 5 THEN 'Ja'
WHEN dc.ins_deelsrtcontrole_status = 6 THEN 'Nee'
ELSE ''
END
actie_vereist,
(SELECT CASE
WHEN cm.ins_controlemode_success = 1
THEN
ins_controlemode_oms || ' - Succes'
ELSE
ins_controlemode_oms || ' - Geen succes'
END
FROM ins_controlemode cm
WHERE cm.ins_controlemode_key = dc.ins_controlemode_key)
taakafhandeling,
(SELECT MAX (ft.fac_tracking_datum)
FROM fac_tracking ft, fac_srtnotificatie sn
WHERE ft.fac_srtnotificatie_key =
sn.fac_srtnotificatie_key
AND sn.fac_srtnotificatie_code = 'INSCAF'
AND ft.fac_tracking_refkey =
dc.ins_deelsrtcontrole_key)
afgemeld,
(SELECT p.prs_perslid_voornaam
|| ' '
|| p.prs_perslid_naam
FROM fac_srtnotificatie sn,
fac_tracking ft,
prs_perslid p
WHERE ft.prs_perslid_key = p.prs_perslid_key
AND ft.fac_srtnotificatie_key =
sn.fac_srtnotificatie_key
AND sn.fac_srtnotificatie_code = 'INSCAF'
AND fac_tracking_refkey =
dc.ins_deelsrtcontrole_key)
afgemeld_door,
(SELECT MAX (ft.fac_tracking_datum)
FROM fac_tracking ft, fac_srtnotificatie sn
WHERE ft.fac_srtnotificatie_key =
sn.fac_srtnotificatie_key
AND sn.fac_srtnotificatie_code = 'INSCVE'
AND ft.fac_tracking_refkey =
dc.ins_deelsrtcontrole_key)
verwerkt,
(SELECT p.prs_perslid_voornaam
|| ' '
|| p.prs_perslid_naam
FROM fac_srtnotificatie sn,
fac_tracking ft,
prs_perslid p
WHERE ft.prs_perslid_key = p.prs_perslid_key
AND ft.fac_srtnotificatie_key =
sn.fac_srtnotificatie_key
AND sn.fac_srtnotificatie_code = 'INSCVE'
AND fac_tracking_refkey =
dc.ins_deelsrtcontrole_key)
verwerkt_door,
dc.ins_deelsrtcontrole_datum_org
uitvoerdatum_origineel,
CASE
WHEN dc.ins_deelsrtcontrole_status in (5,6)
AND COALESCE(dc.ins_deelsrtcontrole_plandatum, dc.ins_deelsrtcontrole_datum_org) < dc.ins_deelsrtcontrole_datum THEN 'Ja'
WHEN dc.ins_deelsrtcontrole_status in (5,6)
AND COALESCE(dc.ins_deelsrtcontrole_plandatum, dc.ins_deelsrtcontrole_datum_org) >= dc.ins_deelsrtcontrole_datum THEN 'Nee'
ELSE ''
END telaat,
dc.ins_deelsrtcontrole_freezecost
kosten_materiaal_freeze,
dc.ins_deelsrtcontrole_opmerking
opmerking,
CASE
WHEN dc.ins_deelsrtcontrole_status = 5
THEN
(SELECT MAX (ft.fac_tracking_datum)
FROM fac_tracking ft, fac_srtnotificatie sn
WHERE ft.fac_srtnotificatie_key =
sn.fac_srtnotificatie_key
AND sn.fac_srtnotificatie_code = 'INSCAF'
AND ft.fac_tracking_refkey =
dc.ins_deelsrtcontrole_key)
WHEN dc.ins_deelsrtcontrole_status = 6
THEN
(SELECT MAX (ft.fac_tracking_datum)
FROM fac_tracking ft, fac_srtnotificatie sn
WHERE ft.fac_srtnotificatie_key =
sn.fac_srtnotificatie_key
AND sn.fac_srtnotificatie_code = 'INSCVE'
AND ft.fac_tracking_refkey =
dc.ins_deelsrtcontrole_key)
ELSE
NULL
END
filterdatum_gereed,
(SELECT max(ft.fac_tracking_datum)
FROM fac_tracking ft, fac_srtnotificatie sn
WHERE ft.fac_srtnotificatie_key =
sn.fac_srtnotificatie_key
AND sn.fac_srtnotificatie_code = 'INSCUP'
AND instr(lower(ft.fac_tracking_oms),'freeze datum:')>0
AND ft.fac_tracking_refkey =
dc.ins_deelsrtcontrole_key)
mjob_doorgeschoven,
dc.ins_deelsrtcontrole_freezedate
FROM ins_deelsrtcontrole dc
WHERE dc.ins_deelsrtcontrole_key =
(SELECT MAX (dc2.ins_deelsrtcontrole_key)
FROM ins_deelsrtcontrole dc2
WHERE dc2.ins_deel_key = dc.ins_deel_key
AND dc2.ins_srtcontrole_key =
dc.ins_srtcontrole_key)
ORDER BY dc.ins_deel_key, dc.ins_srtcontrole_key) v
WHERE sc.ins_srtcontrole_key = x.ins_srtcontrole_key
AND x.ins_deel_key = d.ins_deel_key
AND sc.ctr_discipline_key = di.ins_discipline_key
AND sc.prs_dienst_key = pd.prs_dienst_key(+)
AND UPPER (d.ins_discipline_omschrijving) = 'GEBOUWOBJECTEN'
AND x.ins_deel_key = v.ins_deel_key(+)
AND x.ins_srtcontrole_key = v.ins_srtcontrole_key(+)
AND d.alg_locatie_key = l.alg_locatie_key
AND d.alg_gebouw_key = g.alg_gebouw_key
AND sc.ins_srtcontrole_key IN (SELECT i.ins_srtcontrole_key FROM ins_v_defined_inspect i WHERE i.ins_deel_key = d.ins_deel_key)
ORDER BY d.ins_deel_omschrijving ;
CREATE OR REPLACE VIEW aaxx_v_mjb_gebreken
AS
SELECT d.ins_deel_omschrijving objectomschrijving,
sd.ins_srtdeel_omschrijving objectsoortomschrijving,
mld_melding_datum datum,
disc.ins_discipline_omschrijving vakgroep,
sm.mld_stdmelding_omschrijving stdmeldingomschrijving,
(SELECT DECODE(substr(ud.fac_usrdata_code,1,1), 'G', 1, 'S', 2, 'E', 3) FROM fac_usrdata ud WHERE fac_usrdata_key = FAC.safe_to_number(aaxx_get_NEN2767_kenmerkwaarde(m.mld_melding_key, 'ERNST'))) ernst,
(SELECT SUBSTR(ud.fac_usrdata_code,1,1) FROM fac_usrdata ud WHERE fac_usrdata_key = FAC.safe_to_number(aaxx_get_NEN2767_kenmerkwaarde(m.mld_melding_key, 'INTENSITEIT'))) intensiteit,
(SELECT SUBSTR(ud.fac_usrdata_volgnr,1,1) FROM fac_usrdata ud WHERE fac_usrdata_key = FAC.safe_to_number(aaxx_get_NEN2767_kenmerkwaarde(m.mld_melding_key, 'OMVANG'))) omvang,
(SELECT DECODE(ud.fac_usrdata_code,'NVT', NULL, 'Gering', 1, 'Matig', 2, 'Sterk', 3) FROM fac_usrdata ud WHERE fac_usrdata_key = FAC.safe_to_number(aaxx_get_NEN2767_kenmerkwaarde(m.mld_melding_key, 'ASPECT1'))) aspectwaardeVG,
(SELECT DECODE(ud.fac_usrdata_code,'NVT', NULL, 'Gering', 1, 'Matig', 2, 'Sterk', 3) FROM fac_usrdata ud WHERE fac_usrdata_key = FAC.safe_to_number(aaxx_get_NEN2767_kenmerkwaarde(m.mld_melding_key, 'ASPECT2'))) aspectwaardeCH,
(SELECT DECODE(ud.fac_usrdata_code,'NVT', NULL, 'Gering', 1, 'Matig', 2, 'Sterk', 3) FROM fac_usrdata ud WHERE fac_usrdata_key = FAC.safe_to_number(aaxx_get_NEN2767_kenmerkwaarde(m.mld_melding_key, 'ASPECT3'))) aspectwaardeGB,
(SELECT DECODE(ud.fac_usrdata_code,'NVT', NULL, 'Gering', 1, 'Matig', 2, 'Sterk', 3) FROM fac_usrdata ud WHERE fac_usrdata_key = FAC.safe_to_number(aaxx_get_NEN2767_kenmerkwaarde(m.mld_melding_key, 'ASPECT4'))) aspectwaardeTV,
(SELECT DECODE(ud.fac_usrdata_code,'NVT', NULL, 'Gering', 1, 'Matig', 2, 'Sterk', 3) FROM fac_usrdata ud WHERE fac_usrdata_key = FAC.safe_to_number(aaxx_get_NEN2767_kenmerkwaarde(m.mld_melding_key, 'ASPECT5'))) aspectwaardeTK,
(SELECT DECODE(ud.fac_usrdata_code,'NVT', NULL, 'Gering', 1, 'Matig', 2, 'Sterk', 3) FROM fac_usrdata ud WHERE fac_usrdata_key = FAC.safe_to_number(aaxx_get_NEN2767_kenmerkwaarde(m.mld_melding_key, 'ASPECT6'))) aspectwaardeBE,
(SELECT DECODE(ud.fac_usrdata_code,'NVT', NULL, 'Gering', 1, 'Matig', 2, 'Sterk', 3) FROM fac_usrdata ud WHERE fac_usrdata_key = FAC.safe_to_number(aaxx_get_NEN2767_kenmerkwaarde(m.mld_melding_key, 'ASPECT7'))) aspectwaardeEN,
mld_melding_omschrijving opmerking,
aaxx_get_NEN2767_kenmerkwaarde(m.mld_melding_key, 'CONDITIESCORE') cond,
aaxx_get_NEN2767_kenmerkwaarde(m.mld_melding_key, 'PRIORITEITSCORE') prio,
p.prs_perslid_email inspecteur,
aaxx_get_NEN2767_kenmerkwaarde(m.mld_melding_key, 'FOTONAAM') fotonaam,
fac.safe_to_number(aaxx_get_NEN2767_kenmerkwaarde(m.mld_melding_key, 'KOSTEN')) kosten,
NULL vervaldatum,
m.mld_melding_einddatum datum_gepland,
(select mld_kenmerk_waarde from aaxx_v_dwh_kenmerk_melding where mld_melding_id = m.mld_melding_key and mld_kenmerk_omschrijving = 'Dienst') dienst,
(select mld_kenmerk_waarde from aaxx_v_dwh_kenmerk_melding where mld_melding_id = m.mld_melding_key and mld_kenmerk_omschrijving = 'Taakgroep') taakgroep,
aaxx_get_NEN2767_kenmerkwaarde(m.mld_melding_key, 'GEADVISEERDSTARTJAAR') geadviseerd_startjaar,
aaxx_get_NEN2767_kenmerkwaarde(m.mld_melding_key, 'DATUMGEREEDINSPECTEUR') datum_gereed_inspecteur,
m.mld_melding_key,
s.mld_statuses_omschrijving status,
p.prs_perslid_naam || ' (' || p.prs_perslid_voornaam || ')' aanvrager,
CASE WHEN m.mld_melding_behandelaar_key IS NOT NULL THEN bh.prs_perslid_naam || ' (' || bh.prs_perslid_voornaam || ')' ELSE ''
END behandelaar
FROM mld_melding m,
mld_stdmelding sm,
mld_discipline disc,
mld_melding_object mo,
ins_deel d,
ins_srtdeel sd,
prs_perslid p,
mld_statuses s,
prs_perslid bh
WHERE disc.ins_srtdiscipline_key = FAC.getSetting('cnd_gebreken_srtdisc_key')
AND sm.mld_stdmelding_code <> 'GEEN'
AND disc.ins_discipline_verwijder IS NULL
AND d.ins_srtdeel_key = sd.ins_srtdeel_key
AND sm.mld_ins_discipline_key = disc.ins_discipline_key
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
AND mo.mld_melding_key = m.mld_melding_key
AND mo.mld_melding_object_verwijder IS NULL
AND d.ins_deel_key = mo.ins_deel_key
AND m.prs_perslid_key = p.prs_perslid_key
AND m.mld_melding_behandelaar_key = bh.prs_perslid_key (+)
AND m.mld_melding_key >=
COALESCE (
(SELECT MAX (gg.mld_melding_key)
FROM (SELECT gg2.ins_deel_key,
gg2.mld_melding_key,
m.mld_melding_status
FROM (SELECT d.ins_deel_key,
MAX (m.mld_melding_key) mld_melding_key
FROM mld_melding m,
mld_melding_object mo,
ins_deel d,
mld_stdmelding std
WHERE m.mld_stdmelding_key =
std.mld_stdmelding_key
AND std.mld_stdmelding_code = 'GEEN'
AND mo.mld_melding_key =
m.mld_melding_key
AND mo.mld_melding_object_verwijder
IS NULL
AND d.ins_deel_key = mo.ins_deel_key
GROUP BY d.ins_deel_key)
gg2,
mld_melding m
WHERE m.mld_melding_key = gg2.mld_melding_key) gg
WHERE gg.ins_deel_key = d.ins_deel_key),
m.mld_melding_key)
AND m.mld_melding_status = s.mld_statuses_key
AND m.mld_melding_status in (0,2,3,4,7,99) -- Alleen lopende zaken
;
CREATE OR REPLACE VIEW AAXX_V_MJB_PRIJSLIJST
(
INS_DEEL_KEY,
OBJECTIDENTIFICATIE,
INS_DEEL_AANTAL,
EENHEID,
OMSCHRIJVING,
FABRICAAT,
TYPE_ASSET,
CAPACITEIT,
BOUWJAAR,
PLAATS,
CATEGORIE,
TAAKOMSCHRIJVING,
GROEP,
PRIORITEIT,
PERCENTAGE,
TAAKOPMERKING_X,
DIENST,
BEDRIJF,
PERIODE_EENHEID,
PERIODE_FREQUENCY,
CYCLUS_STARTDATUM,
CYLCUS_VOLGENDE_DATUM,
LOCATIE,
KOSTEN_PERUITVOER,
KOSTEN_PERJAAR
)
AS
SELECT v1.ins_deel_key,
v1.objectidentificatie,
v2.ins_deel_aantal,
v2.eenheid,
v1.omschrijving,
v2.fabricaat,
v2.type_asset,
v2.capaciteit,
v2.bouwjaar,
v2.plaats,
v1.categorie,
v1.taakomschrijving,
v1.groep,
v1.prioriteit,
v1.percentage,
v1.taakopmerking_x,
v1.dienst,
v1.bedrijf,
v1.periode_eenheid,
v1.periode_frequency,
v1.cyclus_startdatum,
v1.cylcus_volgende_datum,
v1.locatie,
v1.kosten_materiaal
* v2.ins_deel_aantal
* (COALESCE (v1.percentage, 100) / 100)
kosten_peruitvoer,
CASE
WHEN v1.periode_eenheid = 'J'
THEN
(1 / v1.periode_frequency)
* v1.kosten_materiaal
* v2.ins_deel_aantal
* (COALESCE (v1.percentage, 100) / 100)
WHEN v1.periode_eenheid = 'M'
THEN
(12 / v1.periode_frequency)
* v1.kosten_materiaal
* v2.ins_deel_aantal
* (COALESCE (v1.percentage, 100) / 100)
WHEN v1.periode_eenheid = 'W'
THEN
(52 / v1.periode_frequency)
* v1.kosten_materiaal
* v2.ins_deel_aantal
* (COALESCE (v1.percentage, 100) / 100)
WHEN v1.periode_eenheid = 'D'
THEN
(365 / v1.periode_frequency)
* v1.kosten_materiaal
* v2.ins_deel_aantal
* (COALESCE (v1.percentage, 100) / 100)
ELSE
v1.kosten_materiaal
* v2.ins_deel_aantal
* (COALESCE (v1.percentage, 100) / 100)
END
kosten_perjaar
FROM aaxx_v_mjb_taken v1, aaxx_v_mjb_assets v2
WHERE v1.ins_deel_key = v2.ins_deel_key
AND (v2.vervaldatum IS NULL OR TRUNC(SYSDATE) < TRUNC(v2.vervaldatum) ) ;
--=============================================================================
-- EXPORTFUNCTIES DATAWAREHOUSE
-------------------------------------------------------------------------------
-------------------------------------------------------------------------------
-- EXPORTFUNCTIE - DWH_PRS_BEDRIJF
-------------------------------------------------------------------------------
CREATE OR REPLACE VIEW aaxx_v_dwh_prs_bedrijf
(
prs_bedrijf_key,
prs_bedrijf_naam,
prs_bedrijf_naam_upper,
prs_bedrijf_post_adres,
prs_bedrijf_post_postcode,
prs_bedrijf_post_plaats,
prs_bedrijf_post_land,
prs_bedrijf_bezoek_adres,
prs_bedrijf_bezoek_postcode,
prs_bedrijf_bezoek_plaats,
prs_bedrijf_bezoek_land,
prs_bedrijf_telefoon,
prs_bedrijf_fax,
prs_bedrijf_telefoon2,
prs_bedrijf_contact_persoon,
prs_bedrijf_contact_telefoon,
prs_bedrijf_contact_fax,
prs_bedrijf_opmerking,
prs_bedrijf_opmerking2,
prs_bedrijf_uurloon,
prs_leverancier_nr,
prs_overeenkomst_nr,
prs_overeenkomst_datum,
prs_bedrijf_aanmaak,
prs_bedrijf_verwijder,
prs_bedrijf_leverancier,
prs_bedrijf_uitvoerende,
prs_bedrijf_contract,
prs_bedrijf_intern,
prs_bedrijf_huurder,
prs_bedrijf_email,
prs_bedrijf_ingids,
prs_relatietype
)
AS
SELECT prs_bedrijf_key,
prs_bedrijf_naam,
prs_bedrijf_naam_upper,
prs_bedrijf_post_adres,
prs_bedrijf_post_postcode,
prs_bedrijf_post_plaats,
prs_bedrijf_post_land,
prs_bedrijf_bezoek_adres,
prs_bedrijf_bezoek_postcode,
prs_bedrijf_bezoek_plaats,
prs_bedrijf_bezoek_land,
prs_bedrijf_telefoon,
prs_bedrijf_fax,
prs_bedrijf_telefoon2,
prs_bedrijf_contact_persoon,
prs_bedrijf_contact_telefoon,
prs_bedrijf_contact_fax,
prs_bedrijf_opmerking,
prs_bedrijf_opmerking2,
prs_bedrijf_uurloon,
prs_leverancier_nr,
prs_overeenkomst_nr,
prs_overeenkomst_datum,
prs_bedrijf_aanmaak,
prs_bedrijf_verwijder,
prs_bedrijf_leverancier,
prs_bedrijf_uitvoerende,
prs_bedrijf_contract,
prs_bedrijf_intern,
prs_bedrijf_huurder,
prs_bedrijf_email,
prs_bedrijf_ingids,
prs_relatietype_omschrijving
FROM prs_bedrijf b, prs_relatietype rt
WHERE prs_bedrijf_verwijder IS NULL
AND b.prs_relatietype_key = rt.prs_relatietype_key(+);
-------------------------------------------------------------------------------
-- EXPORTFUNCTIE - DWH_PRS_BEDRIJFADRES
-------------------------------------------------------------------------------
CREATE OR REPLACE VIEW aaxx_v_dwh_prs_bedrijfadres
(
prs_bedrijf_key,
prs_bedrijfadres_type,
opdrachttype,
prs_bedrijfadres_url,
prs_bedrijfadres_ordermode,
prs_bedrijfadres_certificate,
prs_bedrijfadres_xsl,
prs_fixed_attach,
prs_send_flex,
alg_district_omschrijving,
alg_locatie_code,
prs_perslid_naam,
prs_perslid_key,
prs_bedrijfadres_expire
)
AS
SELECT prs_bedrijf_key,
DECODE (prs_bedrijfadres_type,
'C', 'Contracten',
'O', 'Opdrachten',
'B', 'Bestellingen',
'Anders?')
TYPE,
DECODE (
prs_bedrijfadres_type,
'O',
COALESCE (t.mld_typeopdr_omschrijving,
'Geen/Overige opdrachten'),
'N.v.t'
)
Opdrachttype,
prs_bedrijfadres_url,
prs_bedrijfadres_ordermode,
prs_bedrijfadres_certificate,
prs_bedrijfadres_xsl,
prs_bedrijfadres_attachfile prs_fixed_attach,
DECODE (
prs_bedrijfadres_flexfiles,
0,
DECODE (
(SELECT COALESCE (fac_setting_pvalue, fac_setting_default)
FROM fac_setting
WHERE LOWER (fac_setting_name) = 'puo_order_flexfiles'),
0,
'Nee',
'Ja'
),
1,
'Ja',
'Nee'
)
prs_send_flex,
d.alg_district_omschrijving,
l.alg_locatie_code,
pf.prs_perslid_naam_full,
pf.prs_perslid_key,
ba.prs_bedrijfadres_lockexpire
FROM prs_bedrijfadres ba, mld_typeopdr t, alg_locatie l, alg_district d, prs_v_perslid_fullnames_all pf
WHERE ba.mld_typeopdr_key = t.mld_typeopdr_key(+)
AND ba.alg_locatie_key = l.alg_locatie_key(+)
AND ba.alg_district_key = d.alg_district_key(+)
AND ba.prs_bedrijfadres_lockuser_key = prs_perslid_key(+);
-------------------------------------------------------------------------------
-- EXPORTFUNCTIE - DWH_PRS_AFDELING
-------------------------------------------------------------------------------
CREATE OR REPLACE VIEW aaxx_v_dwh_prs_afdeling
(
prs_afdeling_parent_naam,
prs_afdeling_naam,
prs_afdeling_omschrijving,
prs_afdeling_code,
prs_kostenplaats_nr,
prs_afdeling_verwijder,
prs_bedrijf_naam,
niveau
)
AS
SELECT ap.prs_afdeling_naam,
a.prs_afdeling_naam,
a.prs_afdeling_omschrijving,
a1.prs_afdeling_naam afdeling_code,
k.prs_kostenplaats_nr,
a.prs_afdeling_verwijder,
prs_bedrijf_naam,
niveau
FROM prs_v_afdeling a,
prs_kostenplaats k,
prs_bedrijf b,
prs_afdeling ap,
prs_afdeling a1
WHERE a.prs_kostenplaats_key = k.prs_kostenplaats_key(+)
AND a.prs_bedrijf_key = b.prs_bedrijf_key(+)
AND a.prs_afdeling_parentkey = ap.prs_afdeling_key(+)
AND a.prs_afdeling_key = a1.prs_afdeling_key
AND ap.prs_afdeling_verwijder IS NULL;
-------------------------------------------------------------------------------
-- EXPORTFUNCTIE - DWH_PRS_PERSOON
-------------------------------------------------------------------------------
CREATE OR REPLACE VIEW aaxx_v_dwh_prs_perslid
(
prs_perslid_key,
prs_afdeling_naam,
prs_perslid_naam,
prs_perslid_tussenvoegsel,
prs_perslid_voornaam,
prs_perslid_full,
prs_perslid_login,
prs_perslid_nr,
prs_perslid_telefoon,
prs_perslid_email,
prs_perslid_lastlogin,
prs_perslid_aanmaak,
prs_perslid_verwijder,
prs_perslid_laatstgezien,
prs_perslid_bezetdatum
)
AS
SELECT p.prs_perslid_key,
a.prs_afdeling_naam,
p.prs_perslid_naam,
p.prs_perslid_tussenvoegsel,
p.prs_perslid_voornaam,
pf.prs_perslid_naam_full,
p.prs_perslid_oslogin,
p.prs_perslid_nr,
p.prs_perslid_telefoonnr,
p.prs_perslid_email,
p.prs_perslid_login,
p.prs_perslid_aanmaak,
p.prs_perslid_verwijder,
CASE
WHEN ( p.alg_onroerendgoed_type = 'G'
OR p.alg_onroerendgoed_type = 'V'
OR p.alg_onroerendgoed_type = 'R')
THEN
(SELECT og.alg_gebouw_naam
FROM alg_v_allonrgoed_gegevens og
WHERE og.alg_onroerendgoed_keys =
p.alg_onroerendgoed_keys)
WHEN (p.alg_onroerendgoed_type = 'L')
THEN
(SELECT alg_locatie_omschrijving
FROM alg_locatie
WHERE alg_locatie_key = alg_onroerendgoed_keys)
END
laatst_gezien,
p.prs_perslid_bezetdatum
FROM prs_perslid p, prs_afdeling a, prs_v_perslid_fullnames_all pf
WHERE a.prs_afdeling_key = p.prs_afdeling_key
AND p.prs_perslid_key = pf.prs_perslid_key;
-------------------------------------------------------------------------------
-- EXPORTFUNCTIE - DWH_FAC_GROEPRECHTEN
-------------------------------------------------------------------------------
CREATE OR REPLACE VIEW aaxx_v_dwh_fac_groeprechten
(
prs_perslid_naam,
prs_perslid_key,
prs_perslid_login,
fac_functie_code,
fac_functie_omschrijving,
fac_functie_module,
ins_discipline_omschrijving,
fac_groep_omschrijving,
orgr,
orgw,
algr,
algw
)
AS
SELECT -- GROEPEN MET DISCIPLINES
p.prs_perslid_naam,
gg.prs_perslid_key,
p.prs_perslid_oslogin,
f.fac_functie_code,
f.fac_functie_omschrijving,
f.fac_functie_module,
(CASE
WHEN ins_srtdiscipline_prefix IS NULL THEN ''
ELSE ins_srtdiscipline_prefix || '-'
END)
|| ins_discipline_omschrijving
omschrijving,
gr.fac_groep_omschrijving,
g.fac_gebruiker_prs_level_read orgr,
g.fac_gebruiker_prs_level_write orgw,
g.fac_gebruiker_alg_level_read algr,
g.fac_gebruiker_alg_level_write algw
FROM fac_groeprechten g,
fac_gebruikersgroep gg,
prs_v_aanwezigperslid p,
fac_functie f,
ins_srtdiscipline isd,
ins_tab_discipline a,
fac_groep gr
WHERE g.ins_discipline_key = a.ins_discipline_key
AND g.fac_groep_key = gr.fac_groep_key
AND p.prs_perslid_key = gg.prs_perslid_key
AND gg.fac_groep_key = gr.fac_groep_key
AND isd.ins_srtdiscipline_key(+) = a.ins_srtdiscipline_key
AND f.fac_functie_key = g.fac_functie_key
AND f.fac_functie_discipline = 1
AND ins_discipline_verwijder IS NULL
UNION ALL -- GROEPEN ZONDER DISCIPLINES
SELECT p.prs_perslid_naam,
p.prs_perslid_key,
p.prs_perslid_oslogin,
f.fac_functie_code,
f.fac_functie_omschrijving,
f.fac_functie_module,
NULL,
gr.fac_groep_omschrijving,
g.fac_gebruiker_prs_level_read orgr,
g.fac_gebruiker_prs_level_write orgw,
g.fac_gebruiker_alg_level_read algr,
g.fac_gebruiker_alg_level_write algw
FROM fac_groeprechten g,
fac_functie f,
fac_gebruikersgroep gg,
prs_v_aanwezigperslid p,
fac_groep gr
WHERE fac_functie_module <> 'LAN'
AND fac_functie_discipline = 0
AND g.fac_functie_key = f.fac_functie_key
AND g.fac_groep_key = gg.fac_groep_key
AND gg.fac_groep_key = gr.fac_groep_key
AND p.prs_perslid_key = gg.prs_perslid_key;
-------------------------------------------------------------------------------
-- EXPORTFUNCTIE - DWH_PRS_KOSTENPLAATS
-------------------------------------------------------------------------------
CREATE OR REPLACE VIEW aaxx_v_dwh_prs_kostenplaats
(
prs_kostenplaats_nr,
prs_kostenplaats_omschrijving,
prs_kostenplaats_budgethouder,
prs_kostenplaats_extern,
prs_kostenplaatsgrp_oms,
prs_kostenplaats_aanmaak,
prs_kostenplaats_verwijder
)
AS
SELECT k.prs_kostenplaats_nr,
k.prs_kostenplaats_omschrijving,
pf.prs_perslid_naam_full,
k.prs_kostenplaats_extern,
kg.prs_kostenplaatsgrp_oms,
k.prs_kostenplaats_aanmaak,
k.prs_kostenplaats_verwijder
FROM prs_kostenplaats k, prs_v_perslid_fullnames_all pf, prs_kostenplaatsgrp kg
WHERE k.prs_perslid_key = pf.prs_perslid_key(+)
AND k.prs_kostenplaatsgrp_key = kg.prs_kostenplaatsgrp_key(+);
-------------------------------------------------------------------------------
-- EXPORTFUNCTIE - DWH_PRS_KOSTENSOORT
-------------------------------------------------------------------------------
CREATE OR REPLACE VIEW aaxx_v_dwh_prs_kostensoort
(
prs_kostensoort_code,
prs_kostensoort_omschrijving,
prs_kostensoort_fin_waarde,
prs_kostensoortgroep,
prs_kostensoort_aanmaak,
prs_kostensoort_altcode
)
AS
SELECT k.prs_kostensoort_oms,
k.prs_kostensoort_opmerking,
k.prs_kostensoort_refcode,
(SELECT prs_kostensoortgrp_oms
FROM prs_kostensoortgrp ksg
WHERE ksg.prs_kostensoortgrp_key = k.prs_kostensoortgrp_key),
k.prs_kostensoort_aanmaak,
k.prs_kostensoort_altcode
FROM prs_kostensoort k;
-------------------------------------------------------------------------------
-- EXPORTFUNCTIE - DWH_PRS_KENMERK_PRS
-------------------------------------------------------------------------------
CREATE OR REPLACE VIEW aaxx_v_dwh_kenmerk_prs
(
prs_link_key,
prs_kenmerk_niveau,
prs_kenmerk_omschrijving,
prs_kenmerk_waarde
)
AS
SELECT prs_link_key,
prs_kenmerk_niveau,
prs_kenmerk_omschrijving,
aaxx_get_kenmerkwaarde (k.prs_kenmerk_kenmerktype,
k.fac_kenmerkdomein_key,
kl.prs_kenmerklink_waarde)
FROM prs_kenmerklink kl, prs_kenmerk k
WHERE kl.prs_kenmerk_key = k.prs_kenmerk_key;
-------------------------------------------------------------------------------
-- EXPORTFUNCTIE - DWH_CNT_ALGEMEEN
-------------------------------------------------------------------------------
CREATE OR REPLACE VIEW aaxx_v_dwh_cnt_contract
(
contract_key,
internnr,
externnr,
mantelcontract_key,
beschrijving,
contractsoort,
typecontract,
versie,
status,
ingangsdatum,
rappeldatum,
opzegdatum,
einddatum,
aanmaakdatum,
verwijderdatum,
eigenaar,
verantwoordelijk_manager,
beheerder,
uitvoerder,
kostenplaats,
termijnbedrag,
contractbedrag,
volgnummer,
locatie_code,
gebouw_code,
gebouw_kosten,
gebouw_gefactureerd,
gebouw_gefactureerd_incl,
gebouw_gefactureerdverwerkt
)
AS
SELECT c.cnt_contract_key,
cnt_contract_nummer_intern
|| '.'
|| COALESCE (cnt_contract_versie, '0'),
cnt_contract_nummer,
cnt_contract_mantel_key,
cnt_contract_omschrijving,
d.ins_discipline_omschrijving,
tc.cnt_typecontract_omschrijving,
COALESCE (c.cnt_contract_versie, '0'),
DECODE (c.cnt_contract_status, '1', 'Gesloten', 'Open'),
cnt_contract_looptijd_van,
cnt.cnt_getrappeldatum (c.cnt_contract_key),
cnt.cnt_getopzegdatum (c.cnt_contract_key),
c.cnt_contract_looptijd_tot,
c.cnt_contract_aanmaak,
c.cnt_contract_verwijder,
a.prs_afdeling_naam,
pf2.prs_perslid_naam_full,
pf.prs_perslid_naam_full,
prs_bedrijf_naam,
kp.prs_kostenplaats_nr,
coalesce (cnt_contract_termijnkosten, 0),
cnt_contract_kosten,
aaxx_get_cnt_cont_plaats_index (cp.cnt_contract_plaats_key),
alg_locatie_code,
g.alg_gebouw_code,
ROUND (
DECODE (
cnt_gew.cnt_contract_plaats_gewicht,
0,
0,
COALESCE (
(cp.cnt_contract_plaats_gewicht
/ cnt_gew.cnt_contract_plaats_gewicht)
* c.cnt_contract_kosten,
0)),
2),
ROUND (
COALESCE (
DECODE (
cnt_gew.cnt_contract_plaats_gewicht,
0,
1,
(cp.cnt_contract_plaats_gewicht
/ cnt_gew.cnt_contract_plaats_gewicht))
* fin.fin_factuur_totaal,
0),
2) gg,
ROUND (
COALESCE (
DECODE (
cnt_gew.cnt_contract_plaats_gewicht,
0,
1,
(cp.cnt_contract_plaats_gewicht
/ cnt_gew.cnt_contract_plaats_gewicht))
* (fin.fin_factuur_totaal + fin.fin_factuur_totaal_incl),
0),
2) ggib,
ROUND (
COALESCE (
DECODE (
cnt_gew.cnt_contract_plaats_gewicht,
0,
1,
(cp.cnt_contract_plaats_gewicht
/ cnt_gew.cnt_contract_plaats_gewicht))
* finv.fin_factuur_totaal,
0),
2)
FROM cnt_contract c,
cnt_discipline d,
cnt_disc_params cd,
cnt_typecontract tc,
(SELECT cnt_contract_plaats_gewicht,
cnt_contract_plaats_key,
cnt_contract_key,
cnt_alg_plaats_key,
cnt_alg_plaats_code
FROM cnt_contract_plaats
WHERE cnt_contract_plaats_verwijder IS NULL) cp,
prs_bedrijf b,
prs_kostensoort k,
prs_kostenplaats kp,
prs_afdeling a,
prs_v_perslid_fullnames_all pf2,
prs_v_perslid_fullnames_all pf,
alg_locatie l,
alg_gebouw g,
( SELECT cnt_contract_key,
SUM (fin_factuurregel_totaal) fin_factuur_totaal, SUM(fin_factuurregel_btw) fin_factuur_totaal_incl
FROM aaxx_v_aanwezigfactuur f, fin_factuurregel fr
WHERE f.fin_factuur_key = fr.fin_factuur_key
GROUP BY cnt_contract_key) fin,
( SELECT cnt_contract_key,
SUM (fin_factuurregel_totaal) fin_factuur_totaal
FROM aaxx_v_aanwezigfactuur f, fin_factuurregel fr
WHERE f.fin_factuur_key = fr.fin_factuur_key
AND f.fin_factuur_statuses_key = 7 -- verwerkt
GROUP BY cnt_contract_key) finv,
( SELECT cnt_contract_key,
SUM (cnt_contract_plaats_gewicht)
cnt_contract_plaats_gewicht
FROM cnt_contract_plaats
WHERE cnt_contract_plaats_verwijder IS NULL
GROUP BY cnt_contract_key) cnt_gew,
(SELECT cp.cnt_contract_plaats_key, alg_locatie_key, alg_gebouw_key
FROM alg_v_allonroerendgoed aog, cnt_contract_plaats cp
WHERE aog.alg_type = cp.cnt_alg_plaats_code
AND aog.alg_onroerendgoed_keys = cp.cnt_alg_plaats_key) cog
WHERE c.cnt_contract_key = cp.cnt_contract_key(+)
AND c.cnt_contract_key = cnt_gew.cnt_contract_key(+)
AND c.cnt_prs_bedrijf_key = b.prs_bedrijf_key
AND c.ins_discipline_key = d.ins_discipline_key
AND d.ins_discipline_key = cd.cnt_ins_discipline_key
AND cd.cnt_srtcontract_type = tc.cnt_typecontract_key
AND cd.cnt_srtcontract_type <> 6 -- Mantelcontracten worden (vooralsnog) uitgesloten AALB#28095
AND d.prs_kostensoort_key = k.prs_kostensoort_key(+)
AND c.prs_kostenplaats_key = kp.prs_kostenplaats_key(+)
AND c.prs_afdeling_key_eig = a.prs_afdeling_key
AND c.prs_perslid_key_beh = pf.prs_perslid_key
AND c.prs_perslid_key_eig = pf2.prs_perslid_key(+)
AND cp.cnt_contract_plaats_key = cog.cnt_contract_plaats_key(+)
AND cog.alg_locatie_key = l.alg_locatie_key(+)
AND cog.alg_gebouw_key = g.alg_gebouw_key(+)
AND c.cnt_contract_key = fin.cnt_contract_key(+)
AND c.cnt_contract_key = finv.cnt_contract_key(+);
CREATE OR REPLACE VIEW AAXX_V_DWH_CNT_CONTRACT_SCOPE
(
CNT_CONTRACT_PLAATS_KEY,
CNT_CONTRACT_KEY,
EXTERNNR,
INTERNNR,
FIN_FACTUUR_KEY,
FACTUUR_BOEKMAAND,
GEBOUW_CODE,
GEBOUW_BEDRAG,
GEBOUW_GEFACTUREERD_INCL,
GEBOUW_GEFACTUREERDVERWERKT,
FACTUURSCHEMA_BOEKMAAND,
GEBOUW_GEFACTUREERD_SCHEMA
)
AS
SELECT cp.cnt_contract_plaats_key,
c.cnt_contract_key,
cnt_contract_nummer externnr,
cnt_contract_nummer_intern
|| '.'
|| COALESCE (cnt_contract_versie, '0')
internnr,
f.fin_factuur_key,
f.fin_factuur_boekmaand factuur_boekmaand,
gc.alg_gebouw_code gebouw_code,
ROUND (
cp.cnt_contract_plaats_gewicht
/ (SELECT DECODE (SUM (cp2.cnt_contract_plaats_gewicht),
0, 1,
SUM (cp2.cnt_contract_plaats_gewicht))
FROM cnt_contract_plaats cp2
WHERE cp2.cnt_contract_key = cp.cnt_contract_key)
* fin_factuurregel_totaal,
4)
gebouw_bedrag,
ROUND (
COALESCE (
DECODE (
cnt_gew.cnt_contract_plaats_gewicht,
0,
1,
(cp.cnt_contract_plaats_gewicht
/ cnt_gew.cnt_contract_plaats_gewicht))
* (fin.fin_factuur_totaal + fin.fin_factuur_totaal_incl),
0),
4)
gebouw_gefactureerd_incl,
ROUND (
COALESCE (
DECODE (
cnt_gew.cnt_contract_plaats_gewicht,
0,
1,
(cp.cnt_contract_plaats_gewicht
/ cnt_gew.cnt_contract_plaats_gewicht))
* finv.fin_factuur_totaal,
0),
4)
gebouw_gefactureerdverwerkt,
cfs.cnt_factuurschema_boekmaand,
ROUND (
COALESCE (
DECODE (
cnt_gew.cnt_contract_plaats_gewicht,
0,
1,
(cp.cnt_contract_plaats_gewicht
/ cnt_gew.cnt_contract_plaats_gewicht))
* (cfs.fin_factuur_totaal),
NULL),
4)
gebouw_gefcatureerd_schema
FROM fin_factuur f,
fin_factuurregel fr,
fin_btwtabelwaarde btw,
cnt_contract c,
(SELECT c.cnt_contract_key,
cnt_factuurschema_boekmaand,
fin_factuur_totaal
FROM ( SELECT SUM (fin_factuur_totaal) fin_factuur_totaal,
SUM (fin_factuurregel_btw) fin_factuur_totaal_incl,
cfs.cnt_factuurschema_boekmaand,
cfs.cnt_contract_key
FROM aaxx_v_aanwezigfactuur f,
fin_factuurregel fr,
cnt_factuurschema cfs
WHERE f.fin_factuur_boekmaand =
cfs.cnt_factuurschema_boekmaand
AND f.fin_factuur_key = fr.fin_factuur_key
AND f.cnt_contract_key = cfs.cnt_contract_key
AND f.fin_factuur_verwijder IS NULL
GROUP BY cfs.cnt_factuurschema_boekmaand,
cfs.cnt_contract_key) cs1,
cnt_contract c
WHERE c.cnt_contract_key = cs1.cnt_contract_key(+)) cfs,
(SELECT *
FROM cnt_contract_plaats
WHERE cnt_alg_plaats_code = 'G') cp,
alg_gebouw gc,
( SELECT cnt_contract_key,
SUM (cnt_contract_plaats_gewicht)
cnt_contract_plaats_gewicht
FROM cnt_contract_plaats
WHERE cnt_contract_plaats_verwijder IS NULL
GROUP BY cnt_contract_key) cnt_gew,
( SELECT cnt_contract_key,
SUM (fin_factuurregel_totaal) fin_factuur_totaal
FROM aaxx_v_aanwezigfactuur f, fin_factuurregel fr
WHERE f.fin_factuur_key = fr.fin_factuur_key
AND f.fin_factuur_statuses_key = 7 -- verwerkt
GROUP BY cnt_contract_key) finv,
( SELECT cnt_contract_key,
SUM (fin_factuurregel_totaal) fin_factuur_totaal,
SUM (fin_factuurregel_btw) fin_factuur_totaal_incl
FROM aaxx_v_aanwezigfactuur f, fin_factuurregel fr
WHERE f.fin_factuur_key = fr.fin_factuur_key
GROUP BY cnt_contract_key) fin
WHERE f.fin_factuur_key = fr.fin_factuur_key
AND f.cnt_contract_key = cp.cnt_contract_key
AND f.cnt_contract_key = c.cnt_contract_key
AND cp.cnt_alg_plaats_key = gc.alg_gebouw_key(+)
AND f.cnt_contract_key = cnt_gew.cnt_contract_key
AND f.cnt_contract_key = finv.cnt_contract_key(+)
AND f.cnt_contract_key = fin.cnt_contract_key(+)
AND fr.fin_btwtabelwaarde_key = btw.fin_btwtabelwaarde_key(+)
AND c.cnt_contract_key = cfs.cnt_contract_key
AND (f.fin_factuur_boekmaand = cfs.cnt_factuurschema_boekmaand
OR cfs.cnt_factuurschema_boekmaand IS NULL);
CREATE OR REPLACE VIEW aaxx_v_dwh_cnt_contract_mantel
(
cnt_contract_key,
internnr,
externnr,
beschrijving,
contractsoort,
typecontract,
versie,
status,
ingangsdatum,
rappeldatum,
opzegdatum,
einddatum,
aanmaakdatum,
verwijderdatum,
eigenaar,
beheerder,
beheerder_key,
uitvoerder,
kostenplaats,
termijnbedrag,
contractbedrag,
soort_overeenkomst,
omvang_contractduur,
commodity,
omschrijving_optie_verlenging,
tijdstip_facturatie,
indexering_tijdens_periode,
datum_van_indexering,
kortingsafspraken,
kortingsafspraak,
opmerking_cm_bijzonderheden,
contract_met_leverancier,
contracteigenaar,
indexeringsformule_afspraak,
besparing,
betalingsafspraak,
betalingstermijn,
link_contract,
omvang_contract_pj,
max_indexering,
link_prijzenblad,
pct_besparing_pj,
rappeltermijn_indexering,
link_overig
)
AS
SELECT cnt_contract_key,
cnt_contract_nummer_intern
|| '.'
|| COALESCE (cnt_contract_versie, '0'),
cnt_contract_nummer,
cnt_contract_omschrijving,
d.ins_discipline_omschrijving,
tc.cnt_typecontract_omschrijving,
COALESCE (c.cnt_contract_versie, '0'),
DECODE (c.cnt_contract_status, '1', 'Gesloten', 'Open'),
cnt_contract_looptijd_van,
cnt.cnt_getrappeldatum (c.cnt_contract_key),
cnt.cnt_getopzegdatum (c.cnt_contract_key),
c.cnt_contract_looptijd_tot,
c.cnt_contract_aanmaak,
c.cnt_contract_verwijder,
a.prs_afdeling_naam,
prs_perslid_naam_full,
pf.prs_perslid_key,
prs_bedrijf_naam,
kp.prs_kostenplaats_nr,
cnt_contract_termijnkosten,
cnt_contract_kosten,
aaxx_get_kenmerk (
'CNT',
(SELECT MAX (cnt_kenmerk_key)
FROM cnt_kenmerk k, cnt_srtkenmerk sk
WHERE k.cnt_srtkenmerk_key = sk.cnt_srtkenmerk_key
AND sk.cnt_srtkenmerk_upper = 'SOORT OVEREENKOMST'),
c.cnt_contract_key),
aaxx_get_kenmerk (
'CNT',
(SELECT MAX (cnt_kenmerk_key)
FROM cnt_kenmerk k, cnt_srtkenmerk sk
WHERE k.cnt_srtkenmerk_key = sk.cnt_srtkenmerk_key
AND sk.cnt_srtkenmerk_upper = 'OMVANG CONTRACTDUUR'),
c.cnt_contract_key),
aaxx_get_kenmerk (
'CNT',
(SELECT MAX (cnt_kenmerk_key)
FROM cnt_kenmerk k, cnt_srtkenmerk sk
WHERE k.cnt_srtkenmerk_key = sk.cnt_srtkenmerk_key
AND sk.cnt_srtkenmerk_upper = 'COMMODITY'),
c.cnt_contract_key),
aaxx_get_kenmerk (
'CNT',
(SELECT MAX (cnt_kenmerk_key)
FROM cnt_kenmerk k, cnt_srtkenmerk sk
WHERE k.cnt_srtkenmerk_key = sk.cnt_srtkenmerk_key
AND sk.cnt_srtkenmerk_upper =
'OMSCHRIJVING OPTIE CONTRACTVERLENGING'),
c.cnt_contract_key),
aaxx_get_kenmerk (
'CNT',
(SELECT MAX (cnt_kenmerk_key)
FROM cnt_kenmerk k, cnt_srtkenmerk sk
WHERE k.cnt_srtkenmerk_key = sk.cnt_srtkenmerk_key
AND sk.cnt_srtkenmerk_upper = 'TIJDSTIP FACTURATIE'),
c.cnt_contract_key),
aaxx_get_kenmerk (
'CNT',
(SELECT MAX (cnt_kenmerk_key)
FROM cnt_kenmerk k, cnt_srtkenmerk sk
WHERE k.cnt_srtkenmerk_key = sk.cnt_srtkenmerk_key
AND sk.cnt_srtkenmerk_upper =
'INDEXERING TIJDENS CONTRACTPERIODE'),
c.cnt_contract_key),
aaxx_get_kenmerk (
'CNT',
(SELECT MAX (cnt_kenmerk_key)
FROM cnt_kenmerk k, cnt_srtkenmerk sk
WHERE k.cnt_srtkenmerk_key = sk.cnt_srtkenmerk_key
AND sk.cnt_srtkenmerk_upper = 'DATUM VAN INDEXERING'),
c.cnt_contract_key),
aaxx_get_kenmerk (
'CNT',
(SELECT MAX (cnt_kenmerk_key)
FROM cnt_kenmerk k, cnt_srtkenmerk sk
WHERE k.cnt_srtkenmerk_key = sk.cnt_srtkenmerk_key
AND sk.cnt_srtkenmerk_upper = 'KORTINGSAFSPRAKEN'),
c.cnt_contract_key),
aaxx_get_kenmerk (
'CNT',
(SELECT MAX (cnt_kenmerk_key)
FROM cnt_kenmerk k, cnt_srtkenmerk sk
WHERE k.cnt_srtkenmerk_key = sk.cnt_srtkenmerk_key
AND sk.cnt_srtkenmerk_upper = 'KORTINGSAFSPRAAK'),
c.cnt_contract_key),
aaxx_get_kenmerk (
'CNT',
(SELECT MAX (cnt_kenmerk_key)
FROM cnt_kenmerk k, cnt_srtkenmerk sk
WHERE k.cnt_srtkenmerk_key = sk.cnt_srtkenmerk_key
AND sk.cnt_srtkenmerk_upper = 'OPMERKING CM/ BIJZONDERHEDEN'),
c.cnt_contract_key),
aaxx_get_kenmerk (
'CNT',
(SELECT MAX (cnt_kenmerk_key)
FROM cnt_kenmerk k, cnt_srtkenmerk sk
WHERE k.cnt_srtkenmerk_key = sk.cnt_srtkenmerk_key
AND sk.cnt_srtkenmerk_upper = 'CONTRACT MET LEVERANCIER'),
c.cnt_contract_key),
aaxx_get_kenmerk (
'CNT',
(SELECT MAX (cnt_kenmerk_key)
FROM cnt_kenmerk k, cnt_srtkenmerk sk
WHERE k.cnt_srtkenmerk_key = sk.cnt_srtkenmerk_key
AND sk.cnt_srtkenmerk_upper = 'CONTRACTEIGENAAR'),
c.cnt_contract_key),
aaxx_get_kenmerk (
'CNT',
(SELECT MAX (cnt_kenmerk_key)
FROM cnt_kenmerk k, cnt_srtkenmerk sk
WHERE k.cnt_srtkenmerk_key = sk.cnt_srtkenmerk_key
AND sk.cnt_srtkenmerk_upper =
'INDEXERINGSFORMULE/ -AFSPRAAK'),
c.cnt_contract_key),
aaxx_get_kenmerk (
'CNT',
(SELECT MAX (cnt_kenmerk_key)
FROM cnt_kenmerk k, cnt_srtkenmerk sk
WHERE k.cnt_srtkenmerk_key = sk.cnt_srtkenmerk_key
AND sk.cnt_srtkenmerk_upper = 'BESPARING'),
c.cnt_contract_key),
aaxx_get_kenmerk (
'CNT',
(SELECT MAX (cnt_kenmerk_key)
FROM cnt_kenmerk k, cnt_srtkenmerk sk
WHERE k.cnt_srtkenmerk_key = sk.cnt_srtkenmerk_key
AND sk.cnt_srtkenmerk_upper = 'BETALINGSAFSPRAAK'),
c.cnt_contract_key),
aaxx_get_kenmerk (
'CNT',
(SELECT MAX (cnt_kenmerk_key)
FROM cnt_kenmerk k, cnt_srtkenmerk sk
WHERE k.cnt_srtkenmerk_key = sk.cnt_srtkenmerk_key
AND sk.cnt_srtkenmerk_upper = 'BETALINGSTERMIJN'),
c.cnt_contract_key),
aaxx_get_kenmerk (
'CNT',
(SELECT MAX (cnt_kenmerk_key)
FROM cnt_kenmerk k, cnt_srtkenmerk sk
WHERE k.cnt_srtkenmerk_key = sk.cnt_srtkenmerk_key
AND sk.cnt_srtkenmerk_upper = 'LINK CONTRACT'),
c.cnt_contract_key),
aaxx_get_kenmerk (
'CNT',
(SELECT MAX (cnt_kenmerk_key)
FROM cnt_kenmerk k, cnt_srtkenmerk sk
WHERE k.cnt_srtkenmerk_key = sk.cnt_srtkenmerk_key
AND sk.cnt_srtkenmerk_upper = 'OMVANG CONTRACT P/J'),
c.cnt_contract_key),
aaxx_get_kenmerk (
'CNT',
(SELECT MAX (cnt_kenmerk_key)
FROM cnt_kenmerk k, cnt_srtkenmerk sk
WHERE k.cnt_srtkenmerk_key = sk.cnt_srtkenmerk_key
AND sk.cnt_srtkenmerk_upper = 'MAX. INDEXERING'),
c.cnt_contract_key),
aaxx_get_kenmerk (
'CNT',
(SELECT MAX (cnt_kenmerk_key)
FROM cnt_kenmerk k, cnt_srtkenmerk sk
WHERE k.cnt_srtkenmerk_key = sk.cnt_srtkenmerk_key
AND sk.cnt_srtkenmerk_upper = 'LINK PRIJZENBLAD'),
c.cnt_contract_key),
aaxx_get_kenmerk (
'CNT',
(SELECT MAX (cnt_kenmerk_key)
FROM cnt_kenmerk k, cnt_srtkenmerk sk
WHERE k.cnt_srtkenmerk_key = sk.cnt_srtkenmerk_key
AND sk.cnt_srtkenmerk_upper = '% BESPARING P/J'),
c.cnt_contract_key),
aaxx_get_kenmerk (
'CNT',
(SELECT MAX (cnt_kenmerk_key)
FROM cnt_kenmerk k, cnt_srtkenmerk sk
WHERE k.cnt_srtkenmerk_key = sk.cnt_srtkenmerk_key
AND sk.cnt_srtkenmerk_upper = 'RAPPELTERMIJN INDEXERING'),
c.cnt_contract_key),
aaxx_get_kenmerk (
'CNT',
(SELECT MAX (cnt_kenmerk_key)
FROM cnt_kenmerk k, cnt_srtkenmerk sk
WHERE k.cnt_srtkenmerk_key = sk.cnt_srtkenmerk_key
AND sk.cnt_srtkenmerk_upper = 'LINK OVERIG'),
c.cnt_contract_key)
FROM cnt_contract c,
cnt_discipline d,
cnt_disc_params cd,
cnt_typecontract tc,
prs_bedrijf b,
prs_kostensoort k,
prs_kostenplaats kp,
prs_afdeling a,
prs_v_perslid_fullnames_all pf
WHERE c.cnt_prs_bedrijf_key = b.prs_bedrijf_key
AND c.ins_discipline_key = d.ins_discipline_key
AND d.ins_discipline_key = cd.cnt_ins_discipline_key
AND cd.cnt_srtcontract_type = tc.cnt_typecontract_key
AND d.prs_kostensoort_key = k.prs_kostensoort_key(+)
AND c.prs_kostenplaats_key = kp.prs_kostenplaats_key(+)
AND c.prs_afdeling_key_eig = a.prs_afdeling_key
AND c.prs_perslid_key_beh = pf.prs_perslid_key
AND tc.cnt_typecontract_key = 6;
CREATE OR REPLACE VIEW aaxx_v_dwh_cnt_factuurschema
(
internnr,
externnr,
contractsoort,
kostenplaats,
volgnummer,
locatie_code,
gebouw_code,
verdeelperiode,
termijnbedrag,
gebouwkosten
)
AS
SELECT cnt_contract_nummer_intern
|| '.'
|| COALESCE (cnt_contract_versie, '0')
internnr,
cnt_contract_nummer externnr,
cd.ins_discipline_omschrijving contractsoort,
kp.prs_kostenplaats_nr kostenplaats,
aaxx_get_cnt_cont_plaats_index (cp.cnt_contract_plaats_key)
volgnummer,
alg_locatie_code locatie_code,
g.alg_gebouw_code gebouw_code,
cf.cnt_factuurschema_boekmaand verdeelperiode,
cf.cnt_factuurschema_bedrag termijnbedrag,
ROUND (
DECODE (
cnt_gew.cnt_contract_plaats_gewicht,
0,
0,
COALESCE (
(cp.cnt_contract_plaats_gewicht
/ cnt_gew.cnt_contract_plaats_gewicht)
* cf.cnt_factuurschema_bedrag,
0)),
2)
gebouwkosten
FROM cnt_contract c,
cnt_discipline cd,
cnt_factuurschema cf,
prs_kostenplaats kp,
alg_locatie l,
alg_gebouw g,
(SELECT cnt_contract_plaats_gewicht,
cnt_contract_plaats_key,
cnt_contract_key,
cnt_alg_plaats_key,
cnt_alg_plaats_code
FROM cnt_contract_plaats
WHERE cnt_contract_plaats_verwijder IS NULL) cp,
( SELECT cnt_contract_key,
SUM (cnt_contract_plaats_gewicht)
cnt_contract_plaats_gewicht
FROM cnt_contract_plaats
WHERE cnt_contract_plaats_verwijder IS NULL
GROUP BY cnt_contract_key) cnt_gew,
(SELECT cp.cnt_contract_plaats_key, alg_locatie_key, alg_gebouw_key
FROM alg_v_allonroerendgoed aog, cnt_contract_plaats cp
WHERE aog.alg_type = cp.cnt_alg_plaats_code
AND aog.alg_onroerendgoed_keys = cp.cnt_alg_plaats_key) cog
WHERE c.ins_discipline_key = cd.ins_discipline_key
AND c.cnt_contract_verwijder IS NULL
AND c.cnt_contract_key = cp.cnt_contract_key(+)
AND c.cnt_contract_key = cnt_gew.cnt_contract_key(+)
AND cp.cnt_contract_plaats_key = cog.cnt_contract_plaats_key(+)
AND cog.alg_locatie_key = l.alg_locatie_key(+)
AND cog.alg_gebouw_key = g.alg_gebouw_key(+)
AND cf.cnt_contract_key = c.cnt_contract_key
AND c.prs_kostenplaats_key = kp.prs_kostenplaats_key(+);
CREATE OR REPLACE VIEW aaxx_v_dwh_kenmerk_contract
(
CNT_CONTRACT_KEY,
CNT_KENMERK_OMSCHRIJVING,
CNT_KENMERK_WAARDE
)
AS
SELECT cnt_contract_key,
sk.cnt_srtkenmerk_omschrijving,
aaxx_get_kenmerkwaarde (sk.cnt_srtkenmerk_kenmerktype,
sk.fac_kenmerkdomein_key,
kc.cnt_kenmerkcontract_waarde)
FROM cnt_kenmerk k, cnt_srtkenmerk sk, cnt_kenmerkcontract kc
WHERE k.cnt_srtkenmerk_key = sk.cnt_srtkenmerk_key
AND kc.cnt_kenmerk_key = k.cnt_kenmerk_key;
-------------------------------------------------------------------------------
-- EXPORTFUNCTIE - DWH_FIN_FACTUUR
-------------------------------------------------------------------------------
CREATE OR REPLACE VIEW aaxx_v_dwh_fin_factuur
(
fin_factuur_key,
fin_factuur_nr,
fin_factuur_totaal_btw,
opdr_id,
contract_id,
bestel_id,
fin_factuur_datum,
fin_factuur_boekmaand,
fin_factuur_debiteur_nr,
kostensoort,
fin_factuur_datumfiat_ok,
fin_factuur_datumfiat_nok,
fin_factuur_fiat_user,
fin_factuur_opmerking,
fin_factuur_datum_export,
fin_factuur_status,
fin_factuur_aanmaak,
fin_factuur_verwerkt,
fin_factuur_verwijder,
fin_factuur_badgeid,
invoerder,
invoerder_key,
fin_factuurregel_nr,
fin_factuurregel_totaal,
fin_factuurregel_btw,
fin_factuurregel_btw_perc,
uplift,
incl_uplift,
fin_factuurregel_omschrijving,
fin_factuurregel_referentie,
fin_btwtabelwaarde_code,
fin_btwtabelwaarde_oms,
fin_factuur_bron,
fin_factuur_bron_mareon,
fin_factuur_boekstuknr,
fin_factuur_controle,
fin_factuur_controle_ok
)
AS
SELECT f.fin_factuur_key,
f.fin_factuur_nr,
f.fin_factuur_totaal_btw,
(SELECT mld_melding_key || '/' || mld_opdr_bedrijfopdr_volgnr
FROM mld_opdr
WHERE mld_opdr_key = f.mld_opdr_key),
(SELECT cc.cnt_contract_nummer_intern
|| '.'
|| COALESCE (cc.cnt_contract_versie, '0')
FROM cnt_contract cc
WHERE cc.cnt_contract_key = f.cnt_contract_key),
(SELECT bes_bestelopdr_id
FROM bes_bestelopdr
WHERE bes_bestelopdr_key = f.bes_bestelopdr_key),
f.fin_factuur_datum,
f.fin_factuur_boekmaand,
f.fin_factuur_debiteur_nr,
(SELECT prs_kostensoort_oms
FROM prs_kostensoort
WHERE prs_kostensoort_key = f.prs_kostensoort_key),
fac.gettrackingdate ('FINFOK', f.fin_factuur_key),
fac.gettrackingdate ('FINFNO', f.fin_factuur_key),
(SELECT prs_perslid_naam_full
FROM prs_v_perslid_fullnames_all pf
WHERE pf.prs_perslid_key =
fac.gettrackinguserkey ('FINFOK', f.fin_factuur_key)),
f.fin_factuur_opmerking,
fac.gettrackingdate ('FINVER', f.fin_factuur_key),
(SELECT fin_factuur_statuses_omschr
FROM fin_factuur_statuses s
WHERE s.fin_factuur_statuses_key = f.fin_factuur_statuses_key),
COALESCE (fac.gettrackingdate ('FINNEW', f.fin_factuur_key),
fin_factuur_datum),
fac.gettrackingdate ('FINVER', f.fin_factuur_key),
fin_factuur_verwijder,
TO_CHAR (fac.gettrackingdate ('FINVER', f.fin_factuur_key),
'yyyymmdd'),
fac.gettrackinguserkey ('FINNEW', f.fin_factuur_key) invoerder,
(SELECT prs_perslid_naam_full
FROM prs_v_perslid_fullnames_all pf
WHERE pf.prs_perslid_key =
fac.gettrackinguserkey ('FINNEW', f.fin_factuur_key))
invoerder_key,
fr.fin_factuurregel_nr,
fr.fin_factuurregel_totaal,
ROUND (fr.fin_factuurregel_btw, 2),
btw.fin_btwtabelwaarde_perc,
uplift,
uplift * fr.fin_factuurregel_totaal,
fr.fin_factuurregel_omschrijving,
fr.fin_factuurregel_referentie,
btw.fin_btwtabelwaarde_code,
btw.fin_btwtabelwaarde_oms,
DECODE (f.fin_factuur_bron,
0, lcl.l ('lcl_fin_source_manual'),
1, lcl.l ('lcl_fin_source_excel'),
2, lcl.l ('lcl_fin_source_mail'),
'Onbekend') factuurbron,
(SELECT 'mareon'
FROM fac_tracking ft, fac_srtnotificatie sn
WHERE ft.fac_tracking_refkey = f.fin_factuur_key
AND ft.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
AND sn.fac_srtnotificatie_xmlnode = 'factuur'
AND sn.fac_srtnotificatie_code = 'FINUPD'
AND INSTR(ft.fac_tracking_oms, 'Factuur geimporteerd vanuit Mareon')>0) fin_factuur_bron_mareon,
(SELECT fin_kenmerkfactuur_waarde
FROM fin_kenmerkfactuur fk, fin_kenmerk k
WHERE fk.fin_kenmerk_key = k.fin_kenmerk_key
AND k.fin_kenmerk_verwijder IS NULL
AND UPPER (fin_kenmerk_omschrijving) = 'BOEKSTUKNUMMER'
AND fk.fin_factuur_key = f.fin_factuur_key) fin_factuur_boekstuknr,
(SELECT fin_kenmerkfactuur_waarde
FROM fin_kenmerkfactuur fk, fin_kenmerk k
WHERE fk.fin_kenmerk_key = k.fin_kenmerk_key
AND k.fin_kenmerk_verwijder IS NULL
AND UPPER (fin_kenmerk_omschrijving) = 'EXTRA CONTROLE?'
AND fk.fin_factuur_key = f.fin_factuur_key) fin_factuur_controle,
(SELECT fin_kenmerkfactuur_waarde
FROM fin_kenmerkfactuur fk, fin_kenmerk k
WHERE fk.fin_kenmerk_key = k.fin_kenmerk_key
AND k.fin_kenmerk_verwijder IS NULL
AND UPPER (fin_kenmerk_omschrijving) = 'GECONTROLEERD'
AND fk.fin_factuur_key = f.fin_factuur_key) fin_factuur_controle_ok
FROM fin_factuur f,
fin_factuurregel fr,
fin_btwtabelwaarde btw,
(SELECT f2.fin_factuur_key, uplift
FROM aaxx_imp_uplift u,
prs_bedrijf b,
prs_kostensoort ks,
fin_factuur f2,
mld_opdr o,
cnt_contract c
WHERE u.prs_leverancier_nr = b.prs_leverancier_nr
AND f2.mld_opdr_key = o.mld_opdr_key(+)
AND f2.cnt_contract_key = c.cnt_contract_key(+)
AND COALESCE (o.mld_uitvoerende_keys,
c.cnt_prs_bedrijf_key) =
b.prs_bedrijf_key
AND UPPER (u.prs_kostensoort_oms) =
ks.prs_kostensoort_upper
AND f2.prs_kostensoort_key = ks.prs_kostensoort_key
AND soort_order =
DECODE (o.mld_opdr_key, NULL, 'CO', 'WO')
AND f2.fin_factuur_boekmaand =
u.jaar || '-' || LTRIM (TO_CHAR (u.maand, '00')))
UP
WHERE f.fin_factuur_key = fr.fin_factuur_key
AND f.fin_factuur_key = UP.fin_factuur_key(+)
AND fr.fin_btwtabelwaarde_key = btw.fin_btwtabelwaarde_key(+);
CREATE OR REPLACE VIEW aaxx_v_dwh_fin_factuur_vk
(
fin_factuurrun_key, -- Interne key van de verkooprun
fin_factuurrun_nr, -- Omschrijving van de verkooprun = BOEKJAAR + Datum run
fin_factuur_nr, -- Referentie verkoopfactuur = Datum + Verplichtingsref (opdr, cnt, bestlopdr)
fin_factuur_totaal, -- Totaal verkoopfactuur (excl btw)
opdr_id,
contract_id,
bestel_id,
fin_factuur_datum,
fin_factuur_boekmaand,
fin_factuur_debiteur_nr,
kostensoort,
prs_kostensoortgrp_oms, -- Referentie, omschrijving van de verkoopfactuur
fin_factuur_datum_export,
fin_factuur_status,
fin_factuur_aanmaak,
fin_factuur_verwerkt,
fin_factuur_verwijder, -- NULL want verwijderactie niet mogelijk voor verkoopfacturen
fin_factuur_badgeid,
invoerder, -- NULL want verkoopfactuur wordt automatisch bij draaien inkoopinterface aangemaakt
invoerder_key, -- Idem
fin_factuurregel_key, -- Interne key van de aangemaakte verkoopregel
fin_factuurregel_totaal, -- Regelbedrag (exl btw)
fin_factuurregel_btw,
fin_factuurregel_btw_perc,
fin_factuurregel_omschrijving,
fin_factuurregel_referentie, -- Exact code van het gebouw. Is kenmerk van gebouw
fin_btwtabelwaarde_code,
fin_btwtabelwaarde_oms,
fin_factuur_bron,
fin_factuur_boekstuknr, -- NULL, nvt voor verkoopfacturen
fin_verkoopfactuur_c4 -- Deze wordt gebruikt in RABO om 'Verkoopfactuur_VASTVAR' te vullen
)
AS
SELECT vf.fin_verkoopfactuurkop_key,
vfk.fin_verkoopfactuurkop_id,
vf.fin_verkoopfactuur_id fin_factuur_nr,
(SELECT sum(fin_verkoopfactuur_bedrag) FROM fin_verkoopfactuur vf2 WHERE vf2.fin_verkoopfactuur_refkey = vf.fin_verkoopfactuur_refkey AND vf2.fin_verkoopfactuurkop_key = vf.fin_verkoopfactuurkop_key)
fin_factuur_totaal,
CASE WHEN vf.fin_verkoopfactuur_xmlnode='opdracht'
THEN
(SELECT mld_melding_key || '/' || mld_opdr_bedrijfopdr_volgnr
FROM mld_opdr
WHERE mld_opdr_key = vf.fin_verkoopfactuur_refkey)
ELSE NULL END opdr_id,
CASE WHEN vf.fin_verkoopfactuur_xmlnode='contract'
THEN
(SELECT cc.cnt_contract_nummer_intern || '.' || COALESCE (cc.cnt_contract_versie, '0')
FROM cnt_contract cc
WHERE cc.cnt_contract_key = vf.fin_verkoopfactuur_refkey)
ELSE NULL END contract_id,
CASE WHEN vf.fin_verkoopfactuur_xmlnode='bestelopdr'
THEN
(SELECT b.bes_bestelopdr_id
FROM bes_bestelopdr b
WHERE b.bes_bestelopdr_key = vf.fin_verkoopfactuur_refkey)
ELSE NULL END bestel_id,
vf.fin_verkoopfactuur_aanmaak fin_factuur_datum,
vf.fin_verkoopfactuur_maand fin_factuur_boekmaand,
vf.prs_debiteur_naam fin_factuur_debiteur_nr,
vf.prs_kostensoort_oms,
vf.prs_kostensoortgrp_oms prs_kostensoortgrp_oms,
vf.fin_verkoopfactuur_datum fin_factuur_datum_export,
CASE WHEN vf.fin_verkoopfactuur_datum IS NULL THEN 'nog verwerken' ELSE 'verwerkt' END
fin_factuur_status,
vf.fin_verkoopfactuur_aanmaak,
vf.fin_verkoopfactuur_datum,
NULL fin_factuur_verwijder,
TO_CHAR (vf.fin_verkoopfactuur_datum,'yyyymmdd') badgeid,
NULL invoerder,
NULL invoerder_key,
vf.fin_verkoopfactuur_key,
fin_verkoopfactuur_bedrag fin_factuurregel_totaal,
ROUND((btw.fin_btwtabelwaarde_perc/100) * fin_verkoopfactuur_bedrag,2) fin_factuurregel_btw,
btw.fin_btwtabelwaarde_perc,
fin_verkoopfactuur_omschr fin_factuuregel_omschrijving,
fin_verkoopfactuur_c1 fin_factuurregel_referentie,
btw.fin_btwtabelwaarde_code,
btw.fin_btwtabelwaarde_oms,
'interface' factuurbron,
NULL fin_factuur_boekstuknr,
CASE WHEN vf.fin_verkoopfactuur_c4 IS NULL THEN 'nee'
WHEN vf.fin_verkoopfactuur_c4 = 'Verkoopfactuur_VASTVAR' THEN 'ja'
ELSE 'anders' END
vast_variabel_opdracht
FROM fin_verkoopfactuur vf,
fin_verkoopfactuurkop vfk,
fin_btwtabelwaarde btw
WHERE vf.fin_verkoopfactuurkop_key = vfk.fin_verkoopfactuurkop_key
AND vf.fin_btwtabelwaarde_code = btw.fin_btwtabelwaarde_code
ORDER BY vf.fin_verkoopfactuur_refkey, vf.fin_verkoopfactuur_key ;
-------------------------------------------------------------------------------
-- EXPORTFUNCTIE - DWH_MLD_STDMELDING
-------------------------------------------------------------------------------
CREATE OR REPLACE VIEW aaxx_v_dwh_mld_stdmelding
AS
SELECT mld_stdmelding_key,
'https://' || (SELECT LOWER(fac_version_cust) FROM fac_version) || '.facilitor.nl/appl/mld/mld_melding.asp?mld_defaultstdmelding=' || mld_stdmelding_key || CHR(38) || 'role=fe' || CHR(38) || 'sso=HEYDAY' link,
(SELECT fac_version_cust FROM fac_version)
account,
ins_srtdiscipline_omschrijving,
vak.ins_discipline_omschrijving,
mld_stdmelding_omschrijving,
std.mld_stdmelding_t_uitvoertijd.tijdsduur
|| DECODE (std.mld_stdmelding_t_uitvoertijd.eenheid,
'U', ' Uren',
'D', ' Dagen',
'')
mld_stdmelding_t_uitvoertijd,
mld_stdmeldinggroep_naam,
pks.prs_kostensoort_oms,
mld_stdmelding_vervaldatum,
DECODE (mld_stdmelding_notfrontend, 1, 'ja', 'nee')
mld_stdmelding_notfrontend,
mld_stdmelding_kanverwijzen,
DECODE (alg_onrgoed_niveau,
'R', 'ruimte',
'V', 'verdieping',
'G', 'gebouw',
'L', 'locatie')
alg_onrgoed_niveau,
DECODE (mld_disc_params_notify,
0, 'Nooit',
1, 'Altijd',
2, 'Afhankelijk van melding',
'Onbekend')
mld_disc_params_notify,
DECODE (mld_stdmelding_planbaar, 1, 'ja', 'nee')
mld_stdmelding_planbaar,
DECODE (mld_stdmelding_freetext,
0, 'onzichtbaar',
2, 'verplicht',
'optioneel')
mld_stdmelding_freetext,
NULL
ins_srtinst_verplicht,
mld_stdmelding_hint,
DECODE (mld_stdmelding_autoorder, 1, 'ja', 'nee')
mld_stdmelding_autoorder,
DECODE (mld_stdmelding_vereisdienst, 1, 'ja', 'nee')
mld_stdmelding_vereisdienst,
ot.mld_typeopdr_omschrijving
standaard_opdrachttype,
mld_stdmelding_opdrtypevast,
std.mld_stdmelding_t_accepttijd.tijdsduur
|| DECODE (std.mld_stdmelding_t_accepttijd.eenheid,
'U', ' Uren',
'D', ' Dagen',
'')
mld_stdmelding_t_accepttijd,
std.mld_stdmelding_t_uitvtijd_pr1.tijdsduur
|| DECODE (std.mld_stdmelding_t_uitvtijd_pr1.eenheid,
'U', ' Uren',
'D', ' Dagen',
'')
mld_stdmelding_t_uitvtijd_pr1,
std.mld_stdmelding_t_uitvtijd_pr2.tijdsduur
|| DECODE (std.mld_stdmelding_t_uitvtijd_pr2.eenheid,
'U', ' Uren',
'D', ' Dagen',
'')
mld_stdmelding_t_uitvtijd_pr2,
std.mld_stdmelding_t_uitvtijd_pr4.tijdsduur
|| DECODE (std.mld_stdmelding_t_uitvtijd_pr4.eenheid,
'U', ' Uren',
'D', ' Dagen',
'')
mld_stdmelding_t_uitvtijd_pr4
FROM mld_stdmelding std,
mld_stdmeldinggroep smg,
mld_discipline vak,
ins_srtdiscipline srt,
prs_kostensoort pks,
prs_dienst d,
mld_disc_params dp,
mld_typeopdr ot,
bes_discipline bd
WHERE std.mld_stdmelding_verwijder IS NULL
AND std.mld_ins_discipline_key = vak.ins_discipline_key
AND vak.ins_discipline_verwijder IS NULL
AND vak.ins_srtdiscipline_key = srt.ins_srtdiscipline_key
AND srt.ins_srtdiscipline_verwijder IS NULL
AND std.prs_kostensoort_key = pks.prs_kostensoort_key(+)
AND std.prs_dienst_key = d.prs_dienst_key(+)
AND std.mld_typeopdr_key = ot.mld_typeopdr_key(+)
AND std.mld_stdmeldinggroep_key = smg.mld_stdmeldinggroep_key(+)
AND bd.ins_discipline_key(+) = std.bes_ins_discipline_key
AND vak.ins_discipline_key = dp.mld_ins_discipline_key;
-------------------------------------------------------------------------------
-- EXPORTFUNCTIE - DWH_MLD_ALGEMEEN
-------------------------------------------------------------------------------
CREATE OR REPLACE VIEW aaxx_v_dwh_mld_melding
(
mld_melding_key,
meldingnummer,
extern_nr,
meldbron,
mld_melding_start_key,
alg_district_omschrijving,
locatie,
locatie_omschrijving,
alg_locatie_key,
onrgoed_key,
gebouw,
gebouw_naam,
gebouw_key,
verdieping,
verdieping_key,
ruimtenr,
ruimte_omschrijving,
ruimte_key,
melding_ordernr,
kostensoortgroep,
kostensoort,
kostenplaats,
kostenplaats_oms,
melder,
prs_perslid_key,
afdeling,
afdeling_omschrijving,
prs_bedrijf_key,
invoerder,
invoerder_key,
behandelaar,
behandelaar_key,
soortmelding,
ins_discipline_key,
ins_srtdiscipline_prefix,
productgroep,
subproductgroep,
subproductgroepgroep,
status,
sla_werkdgn,
plan_uitvoertijd,
datum,
datumfilter,
plan_einddatum,
prioriteit,
ingezien,
geaccepteerd,
afgemeld,
verwerkt, -- nieuw
doorlooptijd_werkdgn,
acceptoptijd,
uitvoeringoptijd_sla,
uitvoeringoptijd_afspraak,
onderwerp,
omschrijving,
opmerking,
mld_melding_parentkey,
tevredenheid,
tevredenheid_opm,
object_omschrijving,
geplande_actie,
opdracht_key,
opdracht_volgnummer,
opdracht_type,
opdracht_status,
opdracht_duur_gepland,
opdracht_datum,
opdracht_einddatum,
opdracht_plandatum,
opdracht_verzonden,
opdracht_geaccepteerd,
opdracht_afgemeld,
opdracht_verwerkt, -- nieuw
opdracht_doorlooptijd,
opdracht_omschrijving,
opdracht_opmerking,
opdracht_uitvoerende,
opdracht_contract,
opdracht_behandelaar,
opdracht_behandelaar_key,
opdracht_uren,
opdracht_uren_besteed,
opdracht_correctie,
opdracht_materiaal,
opdracht_uurtarief,
opdracht_kosten,
opdracht_kostenplaats,
opdracht_kostenplaats_oms,
deelsrtcontrole_key
)
AS
SELECT m.mld_melding_key,
TO_CHAR (m.mld_melding_key) meldingnummer,
m.mld_melding_externnr,
mld_meldbron_omschrijving meldbron,
m.mld_melding_start_key,
alg_district_omschrijving,
alg_locatie_code locatie,
alg_locatie_omschrijving locatie_omschrijving,
l.alg_locatie_key,
m.mld_alg_onroerendgoed_keys,
og.alg_gebouw_code gebouw,
og.alg_gebouw_naam gebouw_naam,
og.alg_gebouw_key,
og.alg_verdieping_code verdieping,
og.alg_verdieping_key,
og.alg_ruimte_nr ruimte,
og.alg_ruimte_omschrijving ruimte_omschrijving,
og.alg_ruimte_key,
m.mld_melding_ordernr melding_ordernr,
(SELECT ksg.prs_kostensoortgrp_oms
FROM prs_kostensoortgrp ksg, prs_kostensoort ks
WHERE ksg.prs_kostensoortgrp_key = ks.prs_kostensoortgrp_key
AND ks.prs_kostensoort_key =
(SELECT COALESCE (sm.prs_kostensoort_key,
disc.prs_kostensoort_key)
FROM mld_stdmelding sm, mld_discipline disc
WHERE sm.mld_ins_discipline_key =
disc.ins_discipline_key
AND sm.mld_stdmelding_key =
s.mld_stdmelding_key))
kostensoortgroep,
(SELECT ks.prs_kostensoort_oms
FROM prs_kostensoort ks
WHERE ks.prs_kostensoort_key =
(SELECT COALESCE (sm.prs_kostensoort_key,
disc.prs_kostensoort_key)
FROM mld_stdmelding sm, mld_discipline disc
WHERE sm.mld_ins_discipline_key =
disc.ins_discipline_key
AND sm.mld_stdmelding_key =
s.mld_stdmelding_key))
kostensoort,
(SELECT k.prs_kostenplaats_nr
FROM prs_kostenplaats k
WHERE k.prs_kostenplaats_key = m.prs_kostenplaats_key)
kostenplaats,
(SELECT k.prs_kostenplaats_omschrijving
FROM prs_kostenplaats k
WHERE k.prs_kostenplaats_key = m.prs_kostenplaats_key)
kostenplaats_oms,
(SELECT prs_perslid_naam_full
FROM prs_v_perslid_fullnames_all pf
WHERE pf.prs_perslid_key = m.prs_perslid_key)
melder,
m.prs_perslid_key,
(SELECT prs_afdeling_naam
FROM prs_afdeling afd, prs_perslid pp
WHERE afd.prs_afdeling_key = pp.prs_afdeling_key
AND pp.prs_perslid_key = m.prs_perslid_key)
afdeling,
(SELECT prs_afdeling_omschrijving
FROM prs_afdeling afd, prs_perslid pp
WHERE afd.prs_afdeling_key = pp.prs_afdeling_key
AND pp.prs_perslid_key = m.prs_perslid_key)
afdeling_omschrijving,
(SELECT prs_bedrijf_key
FROM prs_v_afdeling pva, prs_perslid pp
WHERE pva.prs_afdeling_key = pp.prs_afdeling_key
AND pp.prs_perslid_key = m.prs_perslid_key)
prs_bedrijf_key,
(SELECT prs_perslid_naam_full
FROM prs_v_perslid_fullnames_all pf
WHERE pf.prs_perslid_key =
mld.getmeldinguser (m.mld_melding_key))
invoerder,
fac.gettrackinguserkey ('MLDNEW', m.mld_melding_key),
(SELECT prs_perslid_naam_full
FROM prs_v_perslid_fullnames_all
WHERE prs_perslid_key = m.mld_melding_behandelaar_key),
m.mld_melding_behandelaar_key,
sd.ins_srtdiscipline_omschrijving soortmelding,
md.ins_discipline_key ins_discipline_key,
ins_srtdiscipline_prefix ins_srtdiscipline_prefix,
md.ins_discipline_omschrijving productgroep,
s.mld_stdmelding_omschrijving subproductgroep,
(SELECT smg.mld_stdmeldinggroep_naam
FROM mld_stdmeldinggroep smg
WHERE smg.mld_stdmeldinggroep_key = s.mld_stdmeldinggroep_key)
subproductgroepgroep,
(SELECT DECODE (
COALESCE (par.mld_melding_status,
m.mld_melding_status),
4,
DECODE (o.mld_opdr_key,
NULL, mld_statuses_omschrijving,
'Niet opgelost'),
mld_statuses_omschrijving
)
FROM mld_statuses sta
WHERE sta.mld_statuses_key =
COALESCE (par.mld_melding_status,
m.mld_melding_status))
status,
COALESCE (
par.sla_werkdgn,
aaxx.count_work_days (m.mld_melding_datum,
m.mld_melding_einddatum)
)
sla_werkdgn,
COALESCE (
par.plan_uitvoertijd,
DECODE (m.mld_melding_t_uitvoertijd.eenheid,
'U', TO_NUMBER (NULL),
m.mld_melding_t_uitvoertijd.tijdsduur)
)
plan_uitvoertijd, -- Altijd in dagen; anders NULL!
COALESCE (par.mld_melding_datum, m.mld_melding_datum) datum,
m.mld_melding_datum datumfilter,
COALESCE (par.mld_melding_einddatum, m.mld_melding_einddatum)
plan_einddatum,
DECODE(mld_melding_spoed, 1, 'Kritiek', 2, 'Hoog', 3, 'Normaal', 4, 'Laag', 'Onbekend') prioritieit,
mld.getmeldingstatusdate (m.mld_melding_key, 3) ingezien,
mld.getmeldingstatusdate (m.mld_melding_key, 4) geaccepteerd,
COALESCE (mld.getmeldingstatusdate (m.mld_melding_key, 5),
mld.getmeldingstatusdate (m.mld_melding_key, 1))
afgemeld,
fac.gettrackingdate ('MLDVER', m.mld_melding_key) verwerkt,
aaxx.count_work_days_incltime (
m.mld_melding_datum,
COALESCE (mld.getmeldingstatusdate (m.mld_melding_key, 5),
mld.getmeldingstatusdate (m.mld_melding_key, 1),
SYSDATE)
)
doorlooptijd_werkdgn,
CASE
WHEN mld_melding_acceptdatum_std <
COALESCE (
fac.gettrackingdate ('MLDREJ', m.mld_melding_key),
COALESCE (
fac.gettrackingdate ('MLDACP',
m.mld_melding_key),
SYSDATE
)
)
THEN
0
ELSE
1
END
acceptoptijd,
CASE
WHEN s.mld_stdmelding_slabewaken = 0
OR m.mld_melding_indult = 1
THEN
NULL
WHEN fac.gettrackingdate ('MLDREJ', m.mld_melding_key) IS NOT NULL
THEN
1
ELSE
CASE
-- vooralsnog WHEN mld.getactualuitvoer(m.mld_melding_key).tijdsduur <
-- te traag m.mld_melding_t_uitvoertijd.tijdsduur + m.mld_melding_t_respijt.tijdsduur
WHEN m.mld_melding_einddatum_std >
COALESCE (
fac.gettrackingdate ('MLDAFM',
m.mld_melding_key),
SYSDATE
)
THEN
1
ELSE
0
END
END
uitvoeringoptijd_sla,
CASE
WHEN fac.gettrackingdate ('MLDREJ', m.mld_melding_key) IS NOT NULL
THEN
1
ELSE
CASE
WHEN m.mld_melding_einddatum >
COALESCE (
fac.gettrackingdate ('MLDAFM',
m.mld_melding_key),
SYSDATE
)
THEN
1
ELSE
0
END
END
uitvoeringoptijd_afspraak,
m.mld_melding_onderwerp,
m.mld_melding_omschrijving omschrijving,
m.mld_melding_opmerking opmerking,
m.mld_melding_parentkey,
m.mld_melding_satisfaction,
m.mld_melding_satisfaction_op,
(SELECT MAX (ins_deel_omschrijving)
FROM ins_deel id, mld_melding_object mo
WHERE mo.mld_melding_key = m.mld_melding_key
AND mo.ins_deel_key = id.ins_deel_key)
object_omschrijving,
DECODE (
INSTR (mld_melding_opmerking, 'Automatisch gegenereerd door'),
1,
'yes',
'no')
geplande_actie,
o.mld_opdr_key,
o.mld_opdr_bedrijfopdr_volgnr opdracht_volgnummer,
(SELECT mld_typeopdr_omschrijving
FROM mld_typeopdr t
WHERE o.mld_typeopdr_key = t.mld_typeopdr_key)
opdracht_type,
(SELECT REPLACE (mld_statusopdr_omschrijving,
'Uitgegeven',
'Toegekend')
mld_statusopdr_omschrijving
FROM mld_statusopdr sta
WHERE sta.mld_statusopdr_key = o.mld_statusopdr_key)
opdracht_status,
aaxx.count_work_days (o.mld_opdr_datumbegin,
o.mld_opdr_einddatum)
opdracht_duur_gepland,
o.mld_opdr_datumbegin opdracht_datum,
o.mld_opdr_einddatum opdracht_einddatum,
o.mld_opdr_plandatum opdracht_plandatum,
o.mld_opdr_verzonden opdracht_verzonden,
fac.gettrackingdate ('ORDACP', o.mld_opdr_key)
opdracht_geaccepteerd,
mld.getopdrachtstatusdate (o.mld_opdr_key, 6) opdracht_afgemeld,
fac.gettrackingdate ('ORDVER', mld_opdr_key) opdracht_verwerkt,
aaxx.count_work_days (
o.mld_opdr_datumbegin,
mld.getopdrachtstatusdate (o.mld_opdr_key, 6)
)
opdracht_doorlooptijd,
o.mld_opdr_omschrijving opdracht_omschrijving,
o.mld_opdr_opmerking opdracht_opmerking,
(SELECT naam
FROM mld_v_uitvoerende u
WHERE u.mld_uitvoerende_key = o.mld_uitvoerende_keys)
opdracht_uitvoerende,
NULL opdracht_contract,
(SELECT prs_perslid_naam_full
FROM prs_v_perslid_fullnames_all
WHERE prs_perslid_key = o.prs_perslid_key)
behandelaar,
o.prs_perslid_key opdracht_contactpersoon,
DECODE (mld_statusopdr_key, 1, 0, 2, 0, -- afgewezen, niet akkoord
o.mld_opdr_uren)
opdracht_uren,
(SELECT COUNT (mld_opdr_uren_besteed)
FROM mld_opdr_uren ou
WHERE ou.mld_opdr_key = o.mld_opdr_key
AND mld_opdr_uren_status IN (3, -- goedgekeurd
4) -- verwerkt
)
uren_besteed,
DECODE (
mld_statusopdr_key,
1,
0,
2,
0,
o.mld_opdr_kosten
- o.mld_opdr_materiaal
- (o.mld_opdr_uren * o.mld_opdr_uurloon)
)
opdracht_correctie,
DECODE (mld_statusopdr_key, 1, 0, 2, 0, o.mld_opdr_materiaal)
opdracht_materiaal,
DECODE (mld_statusopdr_key, 1, 0, 2, 0, o.mld_opdr_uurloon)
opdracht_uurtarief,
DECODE (mld_statusopdr_key, 1, 0, 2, 0, o.mld_opdr_kosten)
opdracht_kosten,
(SELECT k.prs_kostenplaats_nr
FROM prs_kostenplaats k
WHERE k.prs_kostenplaats_key = o.prs_kostenplaats_key)
opdracht_kostenplaats,
(SELECT k.prs_kostenplaats_omschrijving
FROM prs_kostenplaats k
WHERE k.prs_kostenplaats_key = o.prs_kostenplaats_key)
opdracht_kostenplaats_oms,
DECODE(m.mld_melding_kto_type, 'T', m.mld_melding_kto_key, NULL)
deelsrtcontrole_key
FROM mld_melding m,
mld_meldbron mb,
mld_stdmelding s,
alg_locatie l,
alg_district d,
alg_v_allonrgoed_gegevens og,
mld_discipline md,
ins_srtdiscipline sd,
mld_opdr o,
(SELECT mld_melding_key,
mld_melding_status,
mld_melding_datum,
mld_melding_einddatum,
aaxx.count_work_days (m.mld_melding_datum,
m.mld_melding_einddatum)
sla_werkdgn,
DECODE (m.mld_melding_t_uitvoertijd.eenheid,
'U', TO_NUMBER (NULL),
m.mld_melding_t_uitvoertijd.tijdsduur)
plan_uitvoertijd
FROM mld_melding m
WHERE mld_melding_key IN
(SELECT mld_melding_parentkey
FROM mld_melding
WHERE mld_melding_parentkey IS NOT NULL)) par
WHERE s.mld_stdmelding_key = m.mld_stdmelding_key
AND m.mld_meldbron_key = mb.mld_meldbron_key
AND m.fac_activiteit_key IS NULL
AND m.mld_alg_locatie_key = l.alg_locatie_key(+)
AND sd.ins_srtdiscipline_key = md.ins_srtdiscipline_key
AND md.ins_discipline_key = s.mld_ins_discipline_key
AND l.alg_district_key = d.alg_district_key(+)
AND m.mld_alg_onroerendgoed_keys = og.alg_onroerendgoed_keys(+)
AND m.mld_melding_key = o.mld_melding_key(+)
AND m.mld_melding_parentkey = par.mld_melding_key(+)
UNION ALL
SELECT cnt_contract_key,
cnt_contract_nummer_intern
|| '.'
|| COALESCE (cnt_contract_versie, '0'),
TO_CHAR(NULL),
TO_CHAR (NULL),
TO_NUMBER (NULL),
TO_CHAR (NULL),
TO_CHAR (NULL),
TO_CHAR (NULL),
TO_NUMBER (NULL),
TO_NUMBER (NULL),
TO_CHAR (NULL),
TO_CHAR (NULL),
TO_NUMBER (NULL),
TO_CHAR (NULL),
TO_NUMBER (NULL),
TO_CHAR (NULL),
TO_CHAR (NULL),
TO_NUMBER (NULL),
TO_CHAR (NULL),
kg.prs_kostensoortgrp_oms,
prs_kostensoort_oms,
kp.prs_kostenplaats_nr,
prs_kostenplaats_omschrijving,
prs_perslid_naam_full,
c.prs_perslid_key_beh,
prs_afdeling_naam,
prs_afdeling_omschrijving,
a.prs_bedrijf_key,
TO_CHAR (NULL),
TO_NUMBER (NULL),
TO_CHAR (NULL),
TO_NUMBER (NULL),
'Contract',
c.ins_discipline_key,
'C',
d.ins_discipline_omschrijving,
TO_CHAR (NULL),
TO_CHAR (NULL),
DECODE (SIGN (cnt_contract_looptijd_van - SYSDATE),
1,
'Toekomst',
-1,
DECODE (SIGN (cnt_contract_looptijd_tot - SYSDATE),
1,
'Actueel',
-1,
'Verlopen')),
TO_NUMBER (NULL),
TO_NUMBER (NULL), -- Altijd in dagen; anders NULL!
TO_DATE (NULL),
TO_DATE (NULL),
TO_DATE (NULL),
TO_CHAR (NULL), -- prioriteit
TO_DATE (NULL),
TO_DATE (NULL),
TO_DATE (NULL),
TO_DATE (NULL), -- datum verwerkt
TO_NUMBER (NULL),
TO_NUMBER (NULL), -- acceptoptijd
TO_NUMBER (NULL), -- uitvoeringoptijd_sla
TO_NUMBER (NULL), -- uitvoeringoptijd_afspraak
TO_CHAR (NULL), -- Onderwerp
c.cnt_contract_document,
TO_CHAR (NULL),
TO_NUMBER (NULL),
TO_NUMBER (NULL), -- tevredenheid
TO_CHAR (NULL), -- Opmering bij tevredenheid
TO_CHAR (NULL), -- object omschrijving
TO_CHAR (NULL), -- geplande actie
TO_NUMBER (NULL),
1,
'Contract Order',
DECODE (SIGN (cnt_contract_looptijd_tot - SYSDATE),
1,
'Uitgegeven',
-1,
'Afgemeld'),
TO_NUMBER (NULL),
TO_DATE (NULL),
TO_DATE (NULL),
TO_DATE (NULL),
TO_DATE (NULL),
TO_DATE (NULL),
TO_DATE (NULL),
TO_DATE (NULL), -- opdracht verwerkt
TO_NUMBER (NULL),
TO_CHAR (NULL),
TO_CHAR (NULL),
b.prs_bedrijf_naam,
TO_NUMBER (NULL),
TO_CHAR (NULL),
TO_NUMBER (NULL),
TO_NUMBER (NULL),
TO_NUMBER (NULL),
TO_NUMBER (NULL),
TO_NUMBER (NULL),
TO_NUMBER (NULL),
c.cnt_contract_kosten,
kp.prs_kostenplaats_nr,
prs_kostenplaats_omschrijving,
NULL deelsrtcontrole_key
FROM cnt_contract c,
cnt_disc_params cd,
ins_tab_discipline d,
prs_kostensoort ks,
prs_kostensoortgrp kg,
prs_kostenplaats kp,
prs_v_perslid_fullnames_all pf,
prs_v_afdeling a,
prs_bedrijf b
WHERE c.ins_discipline_key = d.ins_discipline_key
AND d.ins_discipline_key = cd.cnt_ins_discipline_key
AND cd.cnt_srtcontract_type <> 6 -- Mantelcontracten worden (vooralsnog) uitgesloten AALB#28095
AND d.prs_kostensoort_key = ks.prs_kostensoort_key(+)
AND ks.prs_kostensoortgrp_key = kg.prs_kostensoortgrp_key(+)
AND c.prs_kostenplaats_key = kp.prs_kostenplaats_key(+)
AND c.prs_perslid_key_beh = pf.prs_perslid_key
AND c.prs_afdeling_key_eig = a.prs_afdeling_key(+)
AND c.cnt_prs_bedrijf_key = b.prs_bedrijf_key
AND c.cnt_contract_verwijder IS NULL
UNION ALL
SELECT bes_bestelling_key,
TO_CHAR (bestelaanvraagnr),
TO_CHAR(NULL),
TO_CHAR (NULL),
TO_NUMBER (NULL),
alg_district_omschrijving,
alg_locatie_code,
alg_locatie_omschrijving,
alg_locatie_key,
alg_gebouw_key,
alg_gebouw_code,
alg_gebouw_naam,
alg_gebouw_key,
TO_CHAR (NULL), -- verdieping
TO_NUMBER (NULL),
TO_CHAR (NULL), -- ruimte_nr
TO_CHAR (NULL), -- ruimte_omschrijving
TO_NUMBER (NULL),
bes_bestelling_ordernr,
kostensoortgroep,
kostensoort,
kpn,
kpn_omschrijving,
besteller,
prs_perslid_key_best,
afdeling_code,
afdeling_omschrijving,
prs_bedrijf_key,
invoerder,
invoerder_key,
TO_CHAR (NULL), -- Naam van de behandelaar
TO_NUMBER (NULL), -- Key van de behandelaar
'Bestelling',
ins_discipline_key,
'BE',
ins_discipline_omschrijving,
TO_CHAR (NULL), -- stdmelding
kostensoortgroep,
status,
sla_tijd,
sla_tijd, -- Altijd in dagen; anders NULL!
besteldatum,
besteldatum,
TO_DATE (NULL),
TO_CHAR (NULL), -- prioriteit
TO_DATE (NULL), -- datum ingezien
acceptatie_datum,
ontvangen_datum,
TO_DATE (NULL), -- datum verwerkt
doorlooptijd_werkdgn,
TO_NUMBER (NULL), -- acceptoptijd
TO_NUMBER (NULL), -- uitvoeringoptijd_sla
TO_NUMBER (NULL), -- uitvoeringoptijd_afspraak
TO_CHAR (NULL), -- onderwerp
omschrijving,
TO_CHAR (NULL), -- opmerking
TO_NUMBER (NULL),
bes_bestelling_satisfaction, -- tevredenheid
bes_bestelling_satisfaction_op, -- opmerking bij tevredenheid
TO_CHAR (NULL), -- object omschrijving
TO_CHAR (NULL), -- geplande actie
bes_bestelopdr_key,
opdr_volgnr,
'Purchase Order',
opdr_status,
DECODE (opdr_volgnr, NULL, TO_NUMBER (NULL), sla_tijd),
opdr_datum, -- opdr datum
TO_DATE (NULL), -- opdr_einddatum
TO_DATE (NULL), -- opdr plandatum
verzonden_datum,
TO_DATE (NULL), -- opdr geaccepteerd
opdr_ontv_datum,
TO_DATE (NULL), -- datum opdracht verwerkt
DECODE (opdr_volgnr,
NULL, TO_NUMBER (NULL),
doorlooptijd_werkdgn),
opdr_omschrijving,
bes_bestelopdr_opmerking,
leverancier,
TO_NUMBER (NULL), -- contract
TO_CHAR (NULL), -- behandelaar
TO_NUMBER (NULL), -- behandelaar_key
TO_NUMBER (NULL), -- uren
TO_NUMBER (NULL), -- uren_besteed
TO_NUMBER (NULL), -- correctie
TO_NUMBER (NULL), -- materiaal
TO_NUMBER (NULL), -- uurtarief
-- Indien de laatste factuur ontvangen is en de status van de factuur is goedgekeurd
-- of verwerkt zal het bedrag uit de factuur gebruikt worden.
COALESCE (
(SELECT DECODE (SUM (laatste_factuur),
0, TO_NUMBER (NULL),
SUM (fin_factuurregel_totaal))
FROM aaxx_v_factuur_gegevens g
WHERE g.bes_bestelopdr_key = b.bes_bestelopdr_key
AND g.fin_factuur_statuses_key >= 6),
opdr_kosten
)
opdr_kosten,
DECODE (opdr_volgnr, NULL, TO_CHAR (NULL), kpn),
DECODE (opdr_volgnr, NULL, TO_CHAR (NULL), kpn_omschrijving),
NULL deelsrtcontrole_key
FROM (SELECT b.bes_bestelling_key bes_bestelling_key,
b.bes_bestelling_key bestelaanvraagnr,
di.alg_district_omschrijving,
l.alg_locatie_code,
l.alg_locatie_omschrijving,
l.alg_locatie_key,
g.alg_gebouw_code,
g.alg_gebouw_naam,
g.alg_gebouw_key,
b.bes_bestelling_ordernr,
b.bes_bestelling_datum besteldatum,
b.bes_bestelling_satisfaction,
b.bes_bestelling_satisfaction_op,
(SELECT prs_perslid_naam_full
FROM prs_v_perslid_fullnames_all pf
WHERE pf.prs_perslid_key = p.prs_perslid_key)
besteller,
p.prs_perslid_key prs_perslid_key_best,
(SELECT MAX (prs_perslid_naam_full)
FROM prs_v_perslid_fullnames_all pf
WHERE pf.prs_perslid_key =
COALESCE (
fac.gettrackinguserkey (
'BESNEW',
b.bes_bestelling_key
),
fac.gettrackinguserkey (
'BESAP2',
b.bes_bestelling_key
)
))
invoerder,
COALESCE (
fac.gettrackinguserkey ('BESNEW',
b.bes_bestelling_key),
fac.gettrackinguserkey ('BESAP2',
b.bes_bestelling_key)
)
invoerder_key,
fac.gettrackingdate ('BESACP', b.bes_bestelling_key)
acceptatie_datum,
fac.gettrackingdate ('BESOTV', b.bes_bestelling_key)
ontvangen_datum,
aaxx_bestelling_items (b.bes_bestelling_key)
omschrijving,
(SELECT ksg.prs_kostensoortgrp_oms
FROM prs_kostensoortgrp ksg, prs_kostensoort ks
WHERE ksg.prs_kostensoortgrp_key =
ks.prs_kostensoortgrp_key
AND ks.prs_kostensoort_key =
d.prs_kostensoort_key)
kostensoortgroep,
(SELECT ks.prs_kostensoort_oms
FROM prs_kostensoort ks
WHERE ks.prs_kostensoort_key =
d.prs_kostensoort_key)
kostensoort,
k.prs_kostenplaats_nr kpn,
k.prs_kostenplaats_omschrijving kpn_omschrijving,
a.prs_afdeling_naam afdeling_code,
a.prs_afdeling_omschrijving afdeling_omschrijving,
d.ins_discipline_key,
d.ins_discipline_omschrijving,
b.bes_bestelling_leverdatum afleverdatum,
aaxx.count_work_days (
b.bes_bestelling_datum,
NVL (
fac.gettrackingdate ('BESOTV',
b.bes_bestelling_key),
SYSDATE
)
)
doorlooptijd_werkdgn,
NVL (
(SELECT bdp.bes_disc_params_leverdagen
FROM bes_disc_params bdp
WHERE d.ins_discipline_key =
bdp.bes_ins_discipline_key),
0
)
sla_tijd,
(SELECT bes_bestellingstatuses_omschr
FROM bes_bestellingstatuses bs
WHERE bs.bes_bestellingstatuses_key =
b.bes_bestelling_status)
status,
(SELECT b.prs_bedrijf_naam
FROM prs_bedrijf b
WHERE b.prs_bedrijf_key = bo.prs_bedrijf_key)
leverancier,
(SELECT bes_bestelopdrstatuses_omschr
FROM bes_bestelopdrstatuses bs
WHERE bs.bes_bestelopdrstatuses_key =
bo.bes_bestelopdr_status)
opdr_status,
bo.bes_bestelopdr_key,
fac.safe_to_number(SUBSTR (
bo.bes_bestelopdr_id,
INSTR (bo.bes_bestelopdr_id, '/')
+ 1
))
opdr_volgnr,
bo.bes_bestelopdr_datum opdr_datum,
fac.gettrackingdate ('BES2SN', bo.bes_bestelopdr_key)
verzonden_datum,
fac.gettrackingdate ('BES2AF', bo.bes_bestelopdr_key)
opdr_ontv_datum,
bes.bestelopdr_tooltip (bo.bes_bestelopdr_key)
opdr_omschrijving,
bes_bestelopdr_opmerking,
DECODE (
bes_bestelopdr_status,
8,
0, -- geannuleerd
(SELECT SUM(bes_bestelopdr_item_aantal
* COALESCE (
bes_bestelopdr_item_inkprijs,
bes_bestelopdr_item_prijs
))
FROM bes_bestelopdr_item boi
WHERE boi.bes_bestelopdr_key =
bo.bes_bestelopdr_key)
)
opdr_kosten,
bo.prs_bedrijf_key
FROM bes_bestelling b,
prs_perslid p,
prs_kostenplaats k,
prs_afdeling a,
mld_adres ma,
bes_bestelopdr bo,
ins_tab_discipline d,
alg_gebouw g,
alg_locatie l,
alg_district di,
(SELECT DISTINCT
bes_bestelling_key, bes_bestelopdr_key
FROM bes_bestelling_item bi,
bes_bestelopdr_item boi
WHERE bi.bes_bestelopdr_item_key =
boi.bes_bestelopdr_item_key) bes_opdr,
(SELECT DISTINCT
bes_bestelling_key, ins_discipline_key
FROM bes_bestelling_item bi,
bes_srtdeel sd,
bes_srtgroep sg
WHERE bi.bes_srtdeel_key = sd.bes_srtdeel_key
AND sd.bes_srtgroep_key = sg.bes_srtgroep_key)
cat,
( SELECT mld_adres_key, MAX (alg_gebouw_key) alg_gebouw_key
FROM (SELECT ma.mld_adres_key,
DECODE (
aaxx_get_user,
'AH',
DECODE (ma.mld_adres_key,
101, 280,
alg_gebouw_key),
alg_gebouw_key)
alg_gebouw_key
FROM alg_gebouw g FULL OUTER JOIN mld_adres ma
ON g.mld_adres_key = ma.mld_adres_key)
WHERE alg_gebouw_key IS NOT NULL
GROUP BY mld_adres_key) adr_geb
WHERE b.prs_perslid_key = p.prs_perslid_key
AND b.prs_kostenplaats_key = k.prs_kostenplaats_key
AND p.prs_afdeling_key = a.prs_afdeling_key
AND b.mld_adres_key_lev = ma.mld_adres_key
AND b.bes_bestelling_key =
bes_opdr.bes_bestelling_key(+)
AND bes_opdr.bes_bestelopdr_key =
bo.bes_bestelopdr_key(+)
AND ma.alg_locatie_key = l.alg_locatie_key(+)
AND l.alg_district_key = di.alg_district_key(+)
AND b.bes_bestelling_key = cat.bes_bestelling_key
AND cat.ins_discipline_key = d.ins_discipline_key
AND ma.mld_adres_key = adr_geb.mld_adres_key(+)
AND adr_geb.alg_gebouw_key = g.alg_gebouw_key(+)) b;
-------------------------------------------------------------------------------
-- EXPORTFUNCTIE - DWH_MLD_KENM_MLD
-------------------------------------------------------------------------------
CREATE OR REPLACE VIEW aaxx_v_dwh_kenmerk_melding
(
mld_melding_id,
mld_kenmerk_omschrijving,
mld_kenmerk_waarde
)
AS
SELECT mld_melding_key,
sk.mld_srtkenmerk_omschrijving,
aaxx_get_kenmerkwaarde (sk.mld_srtkenmerk_kenmerktype,
sk.fac_kenmerkdomein_key,
km.mld_kenmerkmelding_waarde)
FROM mld_kenmerk k, mld_srtkenmerk sk, mld_kenmerkmelding km
WHERE k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
AND km.mld_kenmerk_key = k.mld_kenmerk_key;
-------------------------------------------------------------------------------
-- EXPORTFUNCTIE - DWH_MLD_KENM_OPD
-------------------------------------------------------------------------------
CREATE OR REPLACE VIEW aaxx_v_dwh_kenmerk_opdracht
(
mld_opdr_id,
mld_kenmerk_omschrijving,
mld_kenmerk_waarde
)
AS
SELECT mld_melding_key || '/' || mld_opdr_bedrijfopdr_volgnr,
sk.mld_srtkenmerk_omschrijving,
aaxx_get_kenmerkwaarde (sk.mld_srtkenmerk_kenmerktype,
sk.fac_kenmerkdomein_key,
ko.mld_kenmerkopdr_waarde)
FROM mld_kenmerk k,
mld_srtkenmerk sk,
mld_kenmerkopdr ko,
mld_opdr o
WHERE k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
AND ko.mld_kenmerk_key = k.mld_kenmerk_key
AND ko.mld_opdr_key = o.mld_opdr_key;
-------------------------------------------------------------------------------
-- EXPORTFUNCTIE - DWH_RES_ALGEMEEN
-------------------------------------------------------------------------------
CREATE OR REPLACE VIEW aaxx_v_dwh_res_reservering
(
res_reservering_key,
res_rsv_ruimte_key,
nummer,
res_omschrijving,
res_opmerking,
res_ruimte_naam,
invoerdatum,
datum,
gastheer,
gastheer_key,
contact,
contact_key,
invoerder,
invoerder_key,
kostensoortgroep,
kostensoort,
kpn,
kpn_omschrijving,
prs_bedrijf_key,
afdeling_code,
afdeling_omschrijving,
district_omschrijving,
alg_locatie_key,
locatie,
locatie_omschrijving,
gebouw,
gebouw_omschrijving,
verdieping,
ruimte,
ruimte_key,
opstelling,
no_show,
shown_bezoekers,
mandaat,
personeelsnr,
werkplek,
ins_discipline_key,
catalogus_ins_discipline_key,
catalogus,
reserveerbare_ruimte,
bezoekers,
van,
tot,
duur,
status,
status_fo,
activiteit,
kosten_ruimte,
tevredenheid,
tevredenheid_opm,
voorziening_ins_discipline_key,
voorziening_catalogus,
voorziening_product,
voorziening_totaalprijs,
voorziening_van,
voorziening_tot,
voorziening_aantal,
voorziening_prijs,
voorziening_inkoopprijs,
voorziening_btw,
voorziening_afgemeld,
mld_opdr_key,
mld_opdr_id,
reservering_verwijder
)
AS
SELECT res.res_reservering_key,
rrr.res_rsv_ruimte_key,
res.res_reservering_key || '/' || rrr.res_rsv_ruimte_volgnr,
rrr.res_rsv_ruimte_omschrijving,
rrr.res_rsv_ruimte_opmerking,
rr.res_ruimte_nr,
COALESCE (rrr.res_rsv_ruimte_aanmaak, voorz.van),
COALESCE (rrr.res_rsv_ruimte_van, voorz.van),
(SELECT prs_perslid_naam_full
FROM prs_v_perslid_fullnames_all pf
WHERE pf.prs_perslid_key = rrr.res_rsv_ruimte_host_key),
rrr.res_rsv_ruimte_host_key,
(SELECT prs_perslid_naam_full
FROM prs_v_perslid_fullnames_all pf
WHERE pf.prs_perslid_key = rrr.res_rsv_ruimte_contact_key),
rrr.res_rsv_ruimte_contact_key,
(SELECT prs_perslid_naam_full
FROM fac_tracking t,
fac_srtnotificatie sn,
prs_v_perslid_fullnames_all pf
WHERE sn.fac_srtnotificatie_code = 'RESNEW'
AND sn.fac_srtnotificatie_key = t.fac_srtnotificatie_key
AND t.prs_perslid_key = pf.prs_perslid_key
AND fac_tracking_refkey = rrr.res_rsv_ruimte_key),
(SELECT prs_perslid_key
FROM fac_tracking t, fac_srtnotificatie sn
WHERE sn.fac_srtnotificatie_code = 'RESNEW'
AND sn.fac_srtnotificatie_key = t.fac_srtnotificatie_key
AND fac_tracking_refkey = rrr.res_rsv_ruimte_key),
(SELECT ksg.prs_kostensoortgrp_oms
FROM prs_kostensoortgrp ksg, prs_kostensoort ks
WHERE ksg.prs_kostensoortgrp_key = ks.prs_kostensoortgrp_key
AND ks.prs_kostensoort_key =
(SELECT disc.prs_kostensoort_key
FROM res_discipline disc
WHERE disc.ins_discipline_key =
COALESCE (
voorz.ins_discipline_key,
(SELECT ins_discipline_key
FROM ins_tab_discipline d,
res_ruimte_opstelling ro,
res_ruimte rr
WHERE rrr.res_ruimte_opstel_key =
ro.res_ruimte_opstel_key
AND ro.res_ruimte_key =
rr.res_ruimte_key
AND rr.res_discipline_key =
d.ins_discipline_key))))
kostensoortgroep,
(SELECT ks.prs_kostensoort_oms
FROM prs_kostensoort ks
WHERE ks.prs_kostensoort_key =
(SELECT disc.prs_kostensoort_key
FROM res_discipline disc
WHERE disc.ins_discipline_key =
COALESCE (
voorz.ins_discipline_key,
(SELECT ins_discipline_key
FROM ins_tab_discipline d,
res_ruimte_opstelling ro,
res_ruimte rr
WHERE rrr.res_ruimte_opstel_key =
ro.res_ruimte_opstel_key
AND ro.res_ruimte_key =
rr.res_ruimte_key
AND rr.res_discipline_key =
d.ins_discipline_key))))
kostensoort,
k.prs_kostenplaats_nr,
k.prs_kostenplaats_omschrijving,
(SELECT prs_bedrijf_key
FROM prs_v_afdeling pva
WHERE pva.prs_afdeling_key = a.prs_afdeling_key),
a.prs_afdeling_naam,
a.prs_afdeling_omschrijving,
(SELECT d.alg_district_omschrijving
FROM alg_district d,
alg_locatie l,
alg_gebouw g,
alg_verdieping v,
alg_ruimte r
WHERE d.alg_district_key = l.alg_district_key
AND l.alg_locatie_key = g.alg_locatie_key
AND g.alg_gebouw_key = v.alg_gebouw_key
AND v.alg_verdieping_key = r.alg_verdieping_key
AND r.alg_ruimte_key = r2a.alg_ruimte_key),
(SELECT l.alg_locatie_key
FROM alg_locatie l,
alg_gebouw g,
alg_verdieping v,
alg_ruimte r
WHERE l.alg_locatie_key = g.alg_locatie_key
AND g.alg_gebouw_key = v.alg_gebouw_key
AND v.alg_verdieping_key = r.alg_verdieping_key
AND r.alg_ruimte_key = r2a.alg_ruimte_key),
(SELECT alg_locatie_code
FROM alg_locatie l,
alg_gebouw g,
alg_verdieping v,
alg_ruimte r
WHERE l.alg_locatie_key = g.alg_locatie_key
AND g.alg_gebouw_key = v.alg_gebouw_key
AND v.alg_verdieping_key = r.alg_verdieping_key
AND r.alg_ruimte_key = r2a.alg_ruimte_key),
(SELECT alg_locatie_omschrijving
FROM alg_locatie l,
alg_gebouw g,
alg_verdieping v,
alg_ruimte r
WHERE l.alg_locatie_key = g.alg_locatie_key
AND g.alg_gebouw_key = v.alg_gebouw_key
AND v.alg_verdieping_key = r.alg_verdieping_key
AND r.alg_ruimte_key = r2a.alg_ruimte_key),
(SELECT alg_gebouw_code
FROM alg_gebouw g, alg_verdieping v, alg_ruimte r
WHERE g.alg_gebouw_key = v.alg_gebouw_key
AND v.alg_verdieping_key = r.alg_verdieping_key
AND r.alg_ruimte_key = r2a.alg_ruimte_key),
(SELECT alg_gebouw_naam
FROM alg_gebouw g, alg_verdieping v, alg_ruimte r
WHERE g.alg_gebouw_key = v.alg_gebouw_key
AND v.alg_verdieping_key = r.alg_verdieping_key
AND r.alg_ruimte_key = r2a.alg_ruimte_key),
(SELECT alg_verdieping_code
FROM alg_verdieping v, alg_ruimte r
WHERE v.alg_verdieping_key = r.alg_verdieping_key
AND r.alg_ruimte_key = r2a.alg_ruimte_key),
(SELECT alg_ruimte_nr
FROM alg_ruimte r
WHERE r.alg_ruimte_key = r2a.alg_ruimte_key),
r2a.alg_ruimte_key,
r2a.opstelling,
rrr.res_rsv_ruimte_noshow,
rrr.res_rsv_ruimte_bezoekers_shown,
NVL ( (SELECT pr.fac_profiel_limiet
FROM fac_profiel pr
WHERE p.fac_profiel_key = pr.fac_profiel_key), 0),
prs_perslid_nr,
wp2.prs_werkplek_aanduiding,
COALESCE (
voorz.ins_discipline_key,
(SELECT ins_discipline_key
FROM ins_tab_discipline d,
res_ruimte_opstelling ro,
res_ruimte rr
WHERE rrr.res_ruimte_opstel_key = ro.res_ruimte_opstel_key
AND ro.res_ruimte_key = rr.res_ruimte_key
AND rr.res_discipline_key = d.ins_discipline_key)),
(SELECT ins_discipline_key
FROM ins_tab_discipline d,
res_ruimte_opstelling ro,
res_ruimte rr
WHERE rrr.res_ruimte_opstel_key = ro.res_ruimte_opstel_key
AND ro.res_ruimte_key = rr.res_ruimte_key
AND rr.res_discipline_key = d.ins_discipline_key),
(SELECT ins_discipline_omschrijving
FROM ins_tab_discipline d,
res_ruimte_opstelling ro,
res_ruimte rr
WHERE rrr.res_ruimte_opstel_key = ro.res_ruimte_opstel_key
AND ro.res_ruimte_key = rr.res_ruimte_key
AND rr.res_discipline_key = d.ins_discipline_key),
DECODE (rrr.alg_ruimte_key, NULL, 'Ja', 'Nee'),
rrr.res_rsv_ruimte_bezoekers,
rrr.res_rsv_ruimte_van,
rrr.res_rsv_ruimte_tot,
NVL ( (rrr.res_rsv_ruimte_tot - rrr.res_rsv_ruimte_van) * 24, 0),
(SELECT res_status_bo_omschrijving
FROM res_status_bo rs
WHERE rs.res_status_bo_key =
COALESCE (voorz.res_status_bo_key,
rrr.res_status_bo_key)),
(SELECT res_status_fo_omschrijving
FROM res_status_fo rs2
WHERE rs2.res_status_fo_key = rrr.res_status_fo_key
),
(SELECT res_activiteit_omschrijving
FROM res_activiteit ra
WHERE ra.res_activiteit_key = rrr.res_activiteit_key),
(SELECT res.getruimteprijs(rrr.res_rsv_ruimte_key) from dual),
rrr.res_rsv_ruimte_satisfaction,
rrr.res_rsv_ruimte_satisfaction_op,
voorz.ins_discipline_key,
voorz.catalogus,
voorz.product,
voorz.totaalprijs,
voorz.van,
voorz.tot,
voorz.aantal,
voorz.prijs,
voorz.inkoopprijs,
voorz.btw,
voorz.afgemeld,
o.mld_opdr_key,
o.mld_melding_key || '/' || o.mld_opdr_bedrijfopdr_volgnr,
res_rsv_ruimte_verwijder
FROM res_rsv_ruimte rrr,
res_reservering res,
prs_kostenplaats k,
prs_perslid p,
prs_afdeling a,
res_ruimte_opstelling rro,
res_ruimte rr,
mld_opdr o,
( SELECT res_rsv_ruimte_key,
MAX (o.res_opstelling_omschrijving) opstelling,
MAX (ra.alg_ruimte_key) alg_ruimte_key
FROM res_rsv_ruimte r,
res_ruimte_opstelling ro,
res_opstelling o,
res_ruimte rr,
res_alg_ruimte ra
WHERE r.res_ruimte_opstel_key = ro.res_ruimte_opstel_key
AND ro.res_ruimte_key = rr.res_ruimte_key
AND ro.res_opstelling_key = o.res_opstelling_key
AND rr.res_ruimte_key = ra.res_ruimte_key
AND res_alg_ruimte_verwijder IS NULL
GROUP BY res_rsv_ruimte_key
UNION ALL
SELECT res_rsv_ruimte_key, '' opstelling, alg_ruimte_key
FROM res_rsv_ruimte
WHERE alg_ruimte_key IS NOT NULL) r2a,
(SELECT rrd.res_rsv_ruimte_key res_rsv_ruimte_key,
d.ins_deel_omschrijving product,
rrd.res_status_bo_key,
DECODE (
rd.res_deel_prijs_vast,
1,
NVL (rrd.res_rsv_deel_prijs, rd.res_deel_prijs),
(rrd.res_rsv_deel_tot - rrd.res_rsv_deel_van)
* 24
* NVL (rrd.res_rsv_deel_prijs, rd.res_deel_prijs))
totaalprijs,
rrd.res_rsv_deel_van van,
rrd.res_rsv_deel_tot tot,
(rrd.res_rsv_deel_tot - rrd.res_rsv_deel_van) * 24 aantal,
NVL (rrd.res_rsv_deel_prijs, rd.res_deel_prijs) prijs,
NULL inkoopprijs,
NULL btw,
res_rsv_deel_afgemeld afgemeld,
c.ins_discipline_key ins_discipline_key,
c.ins_discipline_omschrijving catalogus,
TO_NUMBER(NULL) mld_opdr_key
FROM res_rsv_deel rrd,
res_deel rd,
ins_deel d,
ins_tab_discipline c
WHERE rrd.res_deel_key = rd.res_deel_key
AND d.ins_deel_key = rd.res_ins_deel_key
AND rrd.res_rsv_ruimte_key IS NOT NULL
AND c.ins_discipline_key = rd.res_discipline_key
UNION ALL
SELECT rra.res_rsv_ruimte_key res_rsv_ruimte_key,
ra.res_artikel_omschrijving product,
rra.res_status_bo_key,
NVL (rra.res_rsv_artikel_prijs,
rra.res_rsv_artikel_aantal * res_artikel_prijs)
totaalprijs,
rra.res_rsv_artikel_levering van,
NULL tot,
rra.res_rsv_artikel_aantal aantal,
NVL (
rra.res_rsv_artikel_prijs / rra.res_rsv_artikel_aantal,
res_artikel_prijs)
prijs,
res_artikel_inkoopprijs inkoopprijs,
res_artikel_btw btw,
res_rsv_artikel_afgemeld afgemeld,
c.ins_discipline_key ins_discipline_key,
c.ins_discipline_omschrijving catalogus,
bc.mld_opdr_key
FROM res_rsv_artikel rra,
res_artikel ra,
ins_tab_discipline c,
aaxx_bundel_catering_ref bc
WHERE rra.res_artikel_key = ra.res_artikel_key
AND ra.res_discipline_key = c.ins_discipline_key
AND rra.res_rsv_artikel_key = bc.res_rsv_artikel_key(+)) voorz,
( SELECT pw.prs_perslid_key,
MIN (prs_werkplek_aanduiding)
|| DECODE (COUNT ( * ), 1, '', '...')
prs_werkplek_aanduiding
FROM prs_v_werkplek_gegevens wp, prs_perslidwerkplek pw
WHERE wp.prs_werkplek_key = pw.prs_werkplek_key
GROUP BY pw.prs_perslid_key) wp2
WHERE rrr.res_reservering_key = res.res_reservering_key
AND rrr.res_ruimte_opstel_key = rro.res_ruimte_opstel_key(+)
AND rro.res_ruimte_key = rr.res_ruimte_key(+)
AND rrr.res_rsv_ruimte_key = r2a.res_rsv_ruimte_key(+)
AND rrr.prs_kostenplaats_key = k.prs_kostenplaats_key(+)
AND rrr.res_rsv_ruimte_key = voorz.res_rsv_ruimte_key(+)
AND voorz.mld_opdr_key = o.mld_opdr_key(+)
AND rrr.res_rsv_ruimte_host_key = p.prs_perslid_key
AND p.prs_afdeling_key = a.prs_afdeling_key
AND wp2.prs_perslid_key(+) = p.prs_perslid_key
AND (rrr.res_ruimte_opstel_key IS NOT NULL
OR voorz.res_rsv_ruimte_key IS NOT NULL)
;
-------------------------------------------------------------------------------
-- EXPORTFUNCTIE - DWH_RES_KENMERK
-------------------------------------------------------------------------------
CREATE OR REPLACE VIEW aaxx_v_dwh_kenmerk_reservering
(
nummer,
kenmerk_omschrijving,
kenmerk_waarde,
reservering_verwijder
)
AS
SELECT
dwhres.nummer,
sk.res_srtkenmerk_omschrijving,
aaxx_get_kenmerkwaarde (sk.res_srtkenmerk_kenmerktype,
sk.fac_kenmerkdomein_key,
kw.res_kenmerkreservering_waarde),
dwhres.reservering_verwijder
FROM res_kenmerk k,
res_srtkenmerk sk,
res_kenmerkwaarde kw,
aaxx_v_dwh_res_reservering dwhres
WHERE dwhres.res_rsv_ruimte_key = kw.res_rsv_ruimte_key
AND kw.res_kenmerk_key = k.res_kenmerk_key
AND k.res_srtkenmerk_key = sk.res_srtkenmerk_key ;
-------------------------------------------------------------------------------
-- EXPORTFUNCTIE - DWH_BES_ALGEMEEN
-------------------------------------------------------------------------------
CREATE OR REPLACE VIEW aaxx_v_dwh_bes_bestelling
(
bes_bestelling_key,
bestelaanvraagnr,
besteldatum,
besteller,
invoerder,
kostensoortgroep,
kostensoort,
kpn,
kpn_omschrijving,
prs_bedrijf_key,
afdeling_code,
afdeling_omschrijving,
alg_locatie_key,
locatie_code,
district_omschijving,
afleveradres,
mandaat,
personeelsnr,
werkplek,
ins_discipline_key,
catalogus,
groep,
afleverdatum,
doorlooptijd_werkdgn,
sla_tijd,
productcode,
prijs,
inkoopprijs,
status,
gefiatteerddoor,
tevredenheid,
tevredenheid_opm,
bestelopdrachtnummer,
leverancier,
aantal,
itemprijs,
iteminkoopprijs,
productomschrijving,
itemposnr
)
AS
SELECT b.bes_bestelling_key bes_bestelling_key,
b.bes_bestelling_key bestelaanvraagnr,
b.bes_bestelling_datum besteldatum,
(SELECT prs_perslid_naam_full
FROM prs_v_perslid_fullnames_all pf
WHERE pf.prs_perslid_key = p.prs_perslid_key)
besteller,
(SELECT MAX (prs_perslid_naam_full)
FROM prs_v_perslid_fullnames_all pf
WHERE pf.prs_perslid_key =
COALESCE(fac.gettrackinguserkey ('BESNEW', b.bes_bestelling_key), fac.gettrackinguserkey ('BESAP2', b.bes_bestelling_key)))
invoerder,
(SELECT ksg.prs_kostensoortgrp_oms
FROM prs_kostensoortgrp ksg, prs_kostensoort ks
WHERE ksg.prs_kostensoortgrp_key = ks.prs_kostensoortgrp_key
AND ks.prs_kostensoort_key =
(SELECT disc.prs_kostensoort_key
FROM bes_discipline disc
WHERE disc.ins_discipline_key = d.ins_discipline_key))
kostensoortgroep,
(SELECT ks.prs_kostensoort_oms
FROM prs_kostensoort ks
WHERE ks.prs_kostensoort_key =
(SELECT disc.prs_kostensoort_key
FROM bes_discipline disc
WHERE disc.ins_discipline_key = d.ins_discipline_key))
kostensoort,
k.prs_kostenplaats_nr kpn,
k.prs_kostenplaats_omschrijving kpn_omschrijving,
(SELECT prs_bedrijf_key
FROM prs_v_afdeling pva
WHERE pva.prs_afdeling_key = a.prs_afdeling_key)
prs_bedrijf_key,
a.prs_afdeling_naam afdeling_code,
a.prs_afdeling_omschrijving afdeling_omschrijving,
ma.alg_locatie_key alg_locatie_key,
(SELECT alg_locatie_code
FROM alg_locatie l
WHERE l.alg_locatie_key = ma.alg_locatie_key)
locatie_code,
(SELECT alg_district_omschrijving
FROM alg_locatie l, alg_district d
WHERE l.alg_district_key = d.alg_district_key
AND l.alg_locatie_key = ma.alg_locatie_key)
district_omschijving,
ma.mld_adres_naam afleveradres,
NVL ( (SELECT pr.fac_profiel_limiet
FROM fac_profiel pr
WHERE p.fac_profiel_key = pr.fac_profiel_key), 0)
mandaat,
prs_perslid_nr personeelsnr,
wp2.prs_werkplek_aanduiding werkplek,
d.ins_discipline_key ins_discipline_key,
d.ins_discipline_omschrijving catalogus,
sg.bes_srtgroep_omschrijving groep,
b.bes_bestelling_leverdatum afleverdatum,
TO_CHAR(aaxx.count_work_days (
b.bes_bestelling_datum,
NVL (
fac.gettrackingdate ('BESOTV', b.bes_bestelling_key),
SYSDATE)))
doorlooptijd_werkdgn,
NVL ( (SELECT bdp.bes_disc_params_leverdagen
FROM bes_disc_params bdp
WHERE d.ins_discipline_key = bdp.bes_ins_discipline_key),
0)
sla_tijd,
sd.bes_srtdeel_nr productcode,
DECODE(bes_bestelling_status,
8,0, -- geannuleerd
bi.bes_bestelling_item_prijs * bi.bes_bestelling_item_aantal) prijs,
DECODE(bes_bestelling_status,
8,0, -- geannuleerd
NVL (bi.bes_bestelling_item_inkprijs, bi.bes_bestelling_item_prijs)
* bi.bes_bestelling_item_aantal)
inkoopprijs,
(SELECT bes_bestellingstatuses_omschr
FROM bes_bestellingstatuses bs
WHERE bs.bes_bestellingstatuses_key = b.bes_bestelling_status)
status,
(SELECT prs_perslid_naam_full
FROM prs_v_perslid_fullnames_all pf
WHERE pf.prs_perslid_key = b.bes_bestelling_fiat_user)
gefiatteerddoor,
b.bes_bestelling_satisfaction,
b.bes_bestelling_satisfaction_op,
bo.bes_bestelopdr_id bestelopdrachtnummer,
(SELECT b.prs_bedrijf_naam
FROM prs_bedrijf b
WHERE b.prs_bedrijf_key = bo.prs_bedrijf_key)
leverancier,
bi.bes_bestelling_item_aantal aantal,
DECODE (bes_bestelling_status,
8, 0, -- geannuleerd
bi.bes_bestelling_item_prijs) itemprijs,
DECODE (bes_bestelling_status,
8,0, -- geannuleerd
NVL (bi.bes_bestelling_item_inkprijs, bi.bes_bestelling_item_prijs))
iteminkoopprijs,
sd.bes_srtdeel_omschrijving productomschrijving,
boi.bes_bestelopdr_item_posnr itemposnr
FROM bes_bestelling b,
prs_perslid p,
prs_kostenplaats k,
prs_afdeling a,
mld_adres ma,
( SELECT pw.prs_perslid_key,
MIN (prs_werkplek_aanduiding)
|| DECODE (COUNT ( * ), 1, '', '...')
prs_werkplek_aanduiding
FROM prs_v_werkplek_gegevens wp, prs_perslidwerkplek pw
WHERE wp.prs_werkplek_key = pw.prs_werkplek_key
GROUP BY pw.prs_perslid_key) wp2,
bes_bestelling_item bi,
bes_bestelopdr_item boi,
bes_bestelopdr bo,
bes_srtdeel sd,
bes_srtgroep sg,
ins_tab_discipline d
WHERE b.prs_perslid_key = p.prs_perslid_key
AND b.prs_kostenplaats_key = k.prs_kostenplaats_key
AND p.prs_afdeling_key = a.prs_afdeling_key
AND b.mld_adres_key_lev = ma.mld_adres_key
AND wp2.prs_perslid_key(+) = p.prs_perslid_key
AND b.bes_bestelling_key = bi.bes_bestelling_key
AND bi.bes_bestelopdr_item_key = boi.bes_bestelopdr_item_key(+)
AND boi.bes_bestelopdr_key = bo.bes_bestelopdr_key(+)
AND bi.bes_srtdeel_key = sd.bes_srtdeel_key
AND sd.bes_srtgroep_key = sg.bes_srtgroep_key
AND sg.ins_discipline_key = d.ins_discipline_key;
-------------------------------------------------------------------------------
-- EXPORTFUNCTIE - DWH_BES_KENMERK
-------------------------------------------------------------------------------
CREATE OR REPLACE VIEW aaxx_v_dwh_kenmerk_bestelling
(
nummer,
kenmerk_omschrijving,
kenmerk_waarde
)
AS
SELECT kb.bes_bestelling_key,
sk.bes_srtkenmerk_omschrijving,
aaxx_get_kenmerkwaarde (sk.bes_srtkenmerk_kenmerktype,
sk.fac_kenmerkdomein_key,
bes_kenmerkbestell_waarde)
FROM bes_kenmerk k,
bes_srtkenmerk sk,
fac_kenmerkdomein fkd,
bes_kenmerkbestell kb
WHERE kb.bes_kenmerk_key = k.bes_kenmerk_key
AND k.bes_srtkenmerk_key = sk.bes_srtkenmerk_key;
-------------------------------------------------------------------------------
-- EXPORTFUNCTIE - DWH_BEZ_BEZOEKERS
-------------------------------------------------------------------------------
CREATE OR REPLACE VIEW aaxx_v_dwh_bez_bezoekers
(
bezoekers_key,
afspraak_begin,
afspraak_ontvangen,
ontvangen_door,
afspraak_eind,
afspraak_afgemeld,
afgemeld_door,
contactpersoon,
gastheer,
locatie,
gebouw,
verdieping,
ruimte,
actie,
opmerking,
parkeerplaats,
ingevoerd_door,
ingevoerd,
res_rsv_ruimte_key,
reservering,
bezoeker,
bedrijf
)
AS
SELECT b.bez_bezoekers_key,
a.bez_afspraak_datum,
bez_bezoekers_done,
bezdon.prs_perslid_key,
bez_afspraak_eind,
bez_bezoekers_out,
bezout.prs_perslid_key,
(SELECT prs_perslid_naam_full
FROM prs_v_perslid_fullnames_all pf
WHERE pf.prs_perslid_key = a.bez_afspraak_contact_key)
contact,
(SELECT prs_perslid_naam_full
FROM prs_v_perslid_fullnames_all pf
WHERE pf.prs_perslid_key = a.bez_afspraak_host_key)
HOST,
alg_locatie_code || '-' || alg_locatie_omschrijving,
(SELECT alg_gebouw_upper || '-' || alg_gebouw_naam
FROM alg_gebouw g
WHERE g.alg_gebouw_key = og.alg_gebouw_key)
gebouw,
(SELECT alg_verdieping_volgnr
FROM alg_verdieping v
WHERE v.alg_verdieping_key = og.alg_verdieping_key)
verdieping,
(SELECT alg_ruimte_nr || '-' || alg_ruimte_omschrijving
FROM alg_ruimte r
WHERE r.alg_ruimte_key = og.alg_ruimte_key)
ruimte,
(SELECT bez_actie_omschrijving
FROM bez_actie ac
WHERE ac.bez_actie_key = a.bez_actie_key)
actie,
a.bez_afspraak_opmerking opmerking,
(SELECT MAX (ins_deel_omschrijving)
FROM res_v_aanwezigrsv_deel rrd, res_deel rd, ins_deel d
WHERE rrd.bez_bezoekers_key = b.bez_bezoekers_key
AND rrd.res_deel_key = rd.res_deel_key
AND rd.res_ins_deel_key = d.ins_deel_key)
parkeer,
bezmut.prs_perslid_key,
bezmut.fac_tracking_datum,
a.res_rsv_ruimte_key res_rsv_ruimte_key,
(SELECT rrr.res_reservering_key || '/' || rrr.res_rsv_ruimte_volgnr
FROM res_rsv_ruimte rrr
WHERE rrr.res_rsv_ruimte_key = a.res_rsv_ruimte_key)
reservering_nummer,
b.bez_afspraak_naam,
b.bez_afspraak_bedrijf
FROM bez_bezoekers b,
bez_afspraak a,
alg_v_onroerendgoed og,
alg_locatie l,
(SELECT fac_tracking_refkey, prs_perslid_key
FROM fac_tracking t, fac_srtnotificatie sn
WHERE t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
AND sn.fac_srtnotificatie_code = 'BEZDON'
AND NOT EXISTS
(SELECT fac_tracking_refkey
FROM fac_tracking t2
WHERE t2.fac_srtnotificatie_key =
t.fac_srtnotificatie_key
AND t2.fac_tracking_refkey = t.fac_tracking_refkey
AND t2.fac_tracking_key > t.fac_tracking_key))
bezdon,
(SELECT fac_tracking_refkey, prs_perslid_key
FROM fac_tracking t, fac_srtnotificatie sn
WHERE t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
AND sn.fac_srtnotificatie_code = 'BEZOUT'
AND NOT EXISTS
(SELECT fac_tracking_refkey
FROM fac_tracking t2
WHERE t2.fac_srtnotificatie_key =
t.fac_srtnotificatie_key
AND t2.fac_tracking_refkey = t.fac_tracking_refkey
AND t2.fac_tracking_key > t.fac_tracking_key))
bezout,
(SELECT fac_tracking_refkey, prs_perslid_key, fac_tracking_datum
FROM fac_tracking t, fac_srtnotificatie sn
WHERE t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
AND sn.fac_srtnotificatie_code = 'BEZMUT'
AND NOT EXISTS
(SELECT fac_tracking_refkey
FROM fac_tracking t2
WHERE t2.fac_srtnotificatie_key =
t.fac_srtnotificatie_key
AND t2.fac_tracking_refkey = t.fac_tracking_refkey
AND t2.fac_tracking_key > t.fac_tracking_key))
bezmut
WHERE b.bez_afspraak_key = a.bez_afspraak_key
AND a.alg_onrgoed_keys = og.alg_onroerendgoed_keys(+)
AND a.alg_locatie_key = l.alg_locatie_key(+)
AND b.bez_bezoekers_key = bezdon.fac_tracking_refkey(+)
AND b.bez_bezoekers_key = bezout.fac_tracking_refkey(+)
AND a.bez_afspraak_key = bezmut.fac_tracking_refkey(+);
-------------------------------------------------------------------------------
-- EXPORTFUNCTIE - DWH_ALG_ONRGOED
-------------------------------------------------------------------------------
CREATE OR REPLACE VIEW aaxx_v_dwh_alg_onrgoed
(
alg_onroerendgoed_keys,
alg_onroerendgoed_code,
alg_onroerendgoed_omschrijving,
alg_onroerendgoed_aanmaak,
alg_onroerendgoed_verwijder,
alg_type,
alg_regio_key,
alg_regio_omschrijving,
alg_district_key,
alg_district_omschrijving,
alg_locatie_key,
alg_locatie_code,
alg_locatie_omschrijving,
alg_locatie_bezoek_adres,
alg_locatie_bezoek_postcode,
alg_locatie_bezoek_plaats,
alg_terreinsector_key,
alg_terreinsector_code,
alg_terreinsector_naam,
alg_gebouw_key,
alg_gebouw_code,
alg_gebouw_naam,
alg_gebouw_verantwoordelijke,
alg_gebouw_verantwoordelijke2,
alg_gebouw_mjb_score1,
alg_gebouw_bvo,
alg_gebouw_bez,
alg_gebouw_werkdagen,
alg_gebouw_beginuur,
alg_gebouw_einduur,
alg_gebouw_functie,
alg_gebouw_x,
alg_gebouw_y,
alg_verdieping_key,
alg_verdieping_code,
alg_verdieping_omschrijving,
alg_ruimte_key,
alg_ruimte_nr,
alg_ruimte_omschrijving,
alg_ruimte_m2,
alg_ruimte_m2_alt1,
alg_ruimte_m2_alt2,
dienstniveau_niveau,
dienstniveau,
alg_srtruimte_omschrijving,
prs_afdeling_upper
)
AS
SELECT alg_onroerendgoed_keys,
DECODE (alg_type,
'T', alg_terreinsector_code,
'G', alg_gebouw_code,
'V', alg_verdieping_code,
'R', alg_ruimte_nr)
code,
DECODE (alg_type,
'T', alg_terreinsector_naam,
'G', alg_gebouw_naam,
'V', alg_verdieping_omschrijving,
'R', alg_ruimte_omschrijving)
omschrijving,
DECODE (alg_type,
'T', alg_terreinsector_aanmaak,
'G', alg_gebouw_aanmaak,
'V', alg_verdieping_aanmaak,
'R', alg_ruimte_aanmaak)
aanmaak,
DECODE (alg_type,
'T', alg_terreinsector_verwijder,
'G', alg_gebouw_verwijder,
'V', COALESCE(alg_verdieping_verwijder, alg_gebouw_verwijder),
'R', COALESCE(alg_ruimte_verwijder, alg_verdieping_verwijder, alg_gebouw_verwijder)
)verwijder,
aog.alg_type,
r.alg_regio_key,
r.alg_regio_omschrijving,
d.alg_district_key,
d.alg_district_omschrijving,
l.alg_locatie_key,
l.alg_locatie_code,
l.alg_locatie_omschrijving,
l.alg_locatie_adres,
l.alg_locatie_postcode,
l.alg_locatie_plaats,
t.alg_terreinsector_key,
t.alg_terreinsector_code,
t.alg_terreinsector_naam,
g.alg_gebouw_key,
g.alg_gebouw_code,
g.alg_gebouw_naam,
g.prs_perslid_key_verantw,
g.prs_perslid_key_verantw2,
g.alg_gebouw_mjb_score1,
(SELECT SUM (alg_ruimte_bruto_vloeropp) alg_gebouw_bvo
FROM alg_ruimte r, alg_verdieping v
WHERE v.alg_verdieping_key = r.alg_verdieping_key
AND r.alg_ruimte_verwijder IS NULL
AND v.alg_gebouw_key = g.alg_gebouw_key)
alg_gebouw_bvo,
alg_gebouw_bez,
alg_gebouw_werkdagen,
DECODE (
alg_gebouw_beginuur,
NULL,
TO_CHAR (NULL),
0,
TO_CHAR (NULL),
TO_CHAR (TRUNC (alg_gebouw_beginuur)) || ':'
|| TO_CHAR (
(alg_gebouw_beginuur - TRUNC (alg_gebouw_beginuur)) * 60,
'FM00'))
alg_gebouw_beginuur,
DECODE (
alg_gebouw_einduur,
NULL,
TO_CHAR (NULL),
0,
TO_CHAR (NULL),
TO_CHAR (TRUNC (alg_gebouw_einduur)) || ':'
|| TO_CHAR (
(alg_gebouw_einduur - TRUNC (alg_gebouw_einduur)) * 60,
'FM00'))
alg_gebouw_einduur,
(SELECT alg_srtgebouw_omschrijving
FROM alg_srtgebouw sg
WHERE sg.alg_srtgebouw_key = g.alg_srtgebouw_key)
alg_gebouw_functie,
alg_gebouw_x,
alg_gebouw_y,
v.alg_verdieping_key,
v.alg_verdieping_code,
v.alg_verdieping_omschrijving,
ru.alg_ruimte_key,
ru.alg_ruimte_nr,
ru.alg_ruimte_omschrijving,
ru.alg_ruimte_bruto_vloeropp,
ru.alg_ruimte_opp_alt1,
ru.alg_ruimte_opp_alt2,
CASE
WHEN mdr.mld_dienstniveau_omschr IS NOT NULL THEN 'R'
WHEN mdv.mld_dienstniveau_omschr IS NOT NULL THEN 'V'
WHEN mdg.mld_dienstniveau_omschr IS NOT NULL THEN 'G'
WHEN mdl.mld_dienstniveau_omschr IS NOT NULL THEN 'L'
END
dienstniveau_gevuld,
COALESCE (mdr.mld_dienstniveau_omschr,
mdv.mld_dienstniveau_omschr,
mdg.mld_dienstniveau_omschr,
mdl.mld_dienstniveau_omschr)
dienstniveau,
sru.alg_srtruimte_omschrijving,
afd.prs_afdeling_upper
FROM alg_v_allonroerendgoed aog,
mld_dienstniveau mdr,
mld_dienstniveau mdv,
mld_dienstniveau mdg,
mld_dienstniveau mdl,
alg_ruimte ru,
alg_verdieping v,
alg_terreinsector t,
alg_gebouw g,
alg_locatie l,
alg_district d,
alg_regio r,
alg_srtruimte sru,
(SELECT ra.alg_ruimte_key, a.prs_afdeling_upper
FROM prs_ruimteafdeling ra, prs_v_afdeling a
WHERE ra.prs_afdeling_key = a.prs_afdeling_key) afd
WHERE aog.alg_gebouw_key = g.alg_gebouw_key(+)
AND aog.alg_terreinsector_key = t.alg_terreinsector_key(+)
AND aog.alg_verdieping_key = v.alg_verdieping_key(+)
AND aog.alg_ruimte_key = ru.alg_ruimte_key(+)
AND g.alg_locatie_key = l.alg_locatie_key
AND l.alg_district_key = d.alg_district_key
AND d.alg_regio_key = r.alg_regio_key
AND ru.mld_dienstniveau_key = mdr.mld_dienstniveau_key(+)
AND v.mld_dienstniveau_key = mdv.mld_dienstniveau_key(+)
AND g.mld_dienstniveau_key = mdg.mld_dienstniveau_key(+)
AND l.mld_dienstniveau_key = mdl.mld_dienstniveau_key(+)
AND ru.alg_srtruimte_key = sru.alg_srtruimte_key (+)
AND ru.alg_ruimte_key = afd.alg_ruimte_key (+)
UNION ALL
SELECT TO_NUMBER (NULL),
alg_locatie_code,
alg_locatie_omschrijving,
l.alg_locatie_aanmaak,
l.alg_locatie_verwijder,
'L',
r.alg_regio_key,
alg_regio_omschrijving,
d.alg_district_key,
alg_district_omschrijving,
l.alg_locatie_key,
alg_locatie_code,
alg_locatie_omschrijving,
alg_locatie_adres,
alg_locatie_postcode,
alg_locatie_plaats,
TO_NUMBER (NULL),
TO_CHAR (NULL),
TO_CHAR (NULL),
TO_NUMBER (NULL),
TO_CHAR (NULL),
TO_CHAR (NULL),
TO_NUMBER (NULL),
TO_NUMBER (NULL),
TO_NUMBER (NULL),
TO_NUMBER (NULL), -- alg_gebouw_bvo,
TO_NUMBER (NULL), -- alg_gebouw_bez,
TO_NUMBER (NULL), -- alg_gebouw_werkdagen,
TO_CHAR (NULL), -- alg_gebouw_beginuur,
TO_CHAR (NULL), -- alg_gebouw_einduur,
TO_CHAR (NULL), -- alg_gebouw_functie,
TO_NUMBER (NULL), -- alg_gebouw_x,
TO_NUMBER (NULL), -- alg_gebouw_y,
TO_NUMBER (NULL),
TO_CHAR (NULL),
TO_CHAR (NULL),
TO_NUMBER (NULL),
TO_CHAR (NULL),
TO_CHAR (NULL),
TO_NUMBER (NULL),
TO_NUMBER (NULL),
TO_NUMBER (NULL),
'L',
md.mld_dienstniveau_omschr,
TO_CHAR (NULL),
TO_CHAR (NULL)
FROM alg_locatie l,
alg_district d,
alg_regio r,
mld_dienstniveau md
WHERE l.alg_district_key = d.alg_district_key
AND d.alg_regio_key = r.alg_regio_key
AND l.mld_dienstniveau_key = md.mld_dienstniveau_key(+)
UNION ALL
SELECT TO_NUMBER (NULL),
TO_CHAR (NULL),
alg_district_omschrijving,
d.alg_district_aanmaak,
d.alg_district_verwijder,
'D',
r.alg_regio_key,
alg_regio_omschrijving,
d.alg_district_key,
alg_district_omschrijving,
TO_NUMBER (NULL),
TO_CHAR (NULL),
TO_CHAR (NULL),
TO_CHAR (NULL),
TO_CHAR (NULL),
TO_CHAR (NULL),
TO_NUMBER (NULL),
TO_CHAR (NULL),
TO_CHAR (NULL),
TO_NUMBER (NULL),
TO_CHAR (NULL),
TO_CHAR (NULL),
TO_NUMBER (NULL),
TO_NUMBER (NULL),
TO_NUMBER (NULL),
TO_NUMBER (NULL), -- alg_gebouw_bvo,
TO_NUMBER (NULL), -- alg_gebouw_bez,
TO_NUMBER (NULL), -- alg_gebouw_werkdagen,
TO_CHAR (NULL), -- alg_gebouw_beginuur,
TO_CHAR (NULL), -- alg_gebouw_einduur,
TO_CHAR (NULL), -- alg_gebouw_functie,
TO_NUMBER (NULL), -- alg_gebouw_x,
TO_NUMBER (NULL), -- alg_gebouw_y,
TO_NUMBER (NULL),
TO_CHAR (NULL),
TO_CHAR (NULL),
TO_NUMBER (NULL),
TO_CHAR (NULL),
TO_CHAR (NULL),
TO_NUMBER (NULL),
TO_NUMBER (NULL),
TO_NUMBER (NULL),
TO_CHAR (NULL),
TO_CHAR (NULL),
TO_CHAR (NULL),
TO_CHAR (NULL)
FROM alg_district d, alg_regio r
WHERE d.alg_regio_key = r.alg_regio_key
UNION ALL
SELECT TO_NUMBER (NULL),
TO_CHAR (NULL),
alg_regio_omschrijving,
r.alg_regio_aanmaak,
r.alg_regio_verwijder,
'R',
r.alg_regio_key,
alg_regio_omschrijving,
TO_NUMBER (NULL),
TO_CHAR (NULL),
TO_NUMBER (NULL),
TO_CHAR (NULL),
TO_CHAR (NULL),
TO_CHAR (NULL),
TO_CHAR (NULL),
TO_CHAR (NULL),
TO_NUMBER (NULL),
TO_CHAR (NULL),
TO_CHAR (NULL),
TO_NUMBER (NULL),
TO_CHAR (NULL),
TO_CHAR (NULL),
TO_NUMBER (NULL),
TO_NUMBER (NULL),
TO_NUMBER (NULL),
TO_NUMBER (NULL), -- alg_gebouw_bvo,
TO_NUMBER (NULL), -- alg_gebouw_bez,
TO_NUMBER (NULL), -- alg_gebouw_werkdagen,
TO_CHAR (NULL), -- alg_gebouw_beginuur,
TO_CHAR (NULL), -- alg_gebouw_einduur,
TO_CHAR (NULL), -- alg_gebouw_functie,
TO_NUMBER (NULL), -- alg_gebouw_x,
TO_NUMBER (NULL), -- alg_gebouw_y,
TO_NUMBER (NULL),
TO_CHAR (NULL),
TO_CHAR (NULL),
TO_NUMBER (NULL),
TO_CHAR (NULL),
TO_CHAR (NULL),
TO_NUMBER (NULL),
TO_NUMBER (NULL),
TO_NUMBER (NULL),
TO_CHAR (NULL),
TO_CHAR (NULL),
TO_CHAR (NULL),
TO_CHAR (NULL)
FROM alg_regio r;
-------------------------------------------------------------------------------
-- EXPORTFUNCTIE - DWH_ALG_KENMERK
-------------------------------------------------------------------------------
CREATE OR REPLACE VIEW aaxx_v_dwh_kenmerk_onrgoed
(
alg_onrgoed_key,
alg_kenmerk_niveau,
alg_kenmerk_omschrijving,
alg_kenmerk_waarde
)
AS
SELECT aog.alg_onrgoed_key,
k.alg_kenmerk_niveau,
k.alg_kenmerk_omschrijving,
aaxx_get_kenmerkwaarde (k.alg_kenmerk_kenmerktype,
k.fac_kenmerkdomein_key,
aog.alg_onrgoedkenmerk_waarde)
FROM alg_kenmerk k, alg_onrgoedkenmerk aog
WHERE k.alg_kenmerk_key = aog.alg_kenmerk_key
AND aog.alg_onrgoedkenmerk_verwijder IS NULL;
-------------------------------------------------------------------------------
-- EXPORTFUNCTIE - DWH_INS_SENSOR_STATUS
-------------------------------------------------------------------------------
CREATE OR REPLACE VIEW aaxx_v_dwh_ins_sensor_status
(
ruimte_key,
sensor_id,
tijdstip_aan,
tijdstip_uit
)
AS
SELECT d.ins_alg_ruimte_key,
d.ins_deel_omschrijving,
h.ins_deel_statedate,
h.uit
FROM (SELECT h.*,
LEAD (ins_deel_statedate)
OVER (PARTITION BY ins_deel_key ORDER BY ins_deel_statedate)
AS uit
FROM ins_deel_state_history h) h,
ins_srtdeel sd,
ins_deel d
WHERE h.ins_deel_key = d.ins_deel_key
AND d.ins_srtdeel_key = sd.ins_srtdeel_key
AND h.ins_deel_state = '1'
ORDER BY d.ins_alg_ruimte_key, h.ins_deel_statedate;
-------------------------------------------------------------------------------
-- EXPORTFUNCTIE - DWH_INSPECTIE
-------------------------------------------------------------------------------
-- Zie ticket 63820. Betreft DWH-view_2.0. Dit is afgeleide van de AAXX_V_DWH_INSPECTIE.
-- Bedoeling:
---- Deze view hanteert men nu eerst voor Gemeente Nijmegen om o.a. de gewenste Dashboards mee te realiseren.
---- Indien dit gereed is dan zou de oude AAXX-view vervangen moeten gaan worden door deze.
CREATE OR REPLACE VIEW aaxx_v_dwh_inspectie_2
(
taakcategorie,
taaksoort,
taakmodus,
ismjob,
taakopties,
uitvoer_aantal,
deelsrtcontrole_key,
deelsrtcontrole_key_vorig,
deel_key,
deel_omschrijving,
srtcontrole_key,
srtcontrole_info,
srtcontrole_niveau,
srtcontrole_omschrijving,
srtcontrole_opmerking,
srtcontrole_periode,
srtcontrole_eenheid, -- Eenheid (jaar, maand, week, dag) op basistaak
srtcontrole_level, -- prioriteit basistaak
srtcontrole_percentage,
srtcontrole_start,
srtcontrole_eind,
srtcontrole_groep,
uitvoer_x, -- De x-ste uitvoer
status, -- Is status van de uitvoerende taak (ingepland, in behandeling, afgemeld, voltooid)
deelsrtcontrole_datum, -- Voor Uitvoertaak de coalesce(Uitvoerdatum, Plandatum of Startdatum)
-- Voor Basistaak indien geen geschiedenis, StartdatumTaak (of indien leeg ins_deel_datum)
----- en indien wel geschiedenis dan NextCyclus op basis van (uitvoerdatum, plandatum, FreezeDate ivm MJOB) laatste/hudige taak.
mjob_doorgeschoven,
uitvoerdatum_gepland,
uitvoerdatum_inbehandeling,
uitvoerdatum_gereed,
succes,
actie_vereist,
afmeld_datum, -- Afgemeld op (= gereed/voltooid met vervolgactie..)
verwerk_datum, -- Verwerkt op (= voltooid zonder vervolgactie / vervolgactie voltooid)
uitvoerdatum_origineel, -- Datum waarop uitvoertaak uitgevoerd zou moeten worden
respijt,
deelsrtcontrole_status, -- Voor uitvoertaak, de beoordeling Te laat of op Tijd (op basis coalesce(plandatum, originele uitvoerdatum)
-- Voor basistaak indicatie of de nog te starten taak al opgestart had moeten worden
cycli_dagen, -- VorigeUitvoerdatum MINUS deze uitvoerdatum
srtcontrole_materiaal,
controlemode_omschrijving,
controlemode_opmerking,
deelsrtcontrole_opmerking,
prs_perslid_key,
gecontroleerd_door,
taak_categorie,
dienst,
prs_bedrijf_key
)
AS
SELECT
cd.ins_discipline_omschrijving,
CASE
WHEN cdp.ctr_disc_params_controle_type = 1
THEN
lcl.l ('lcl_ins_srtcontrole_insp')
WHEN cdp.ctr_disc_params_controle_type = 2
THEN
lcl.l ('lcl_ins_srtcontrole_repl')
WHEN cdp.ctr_disc_params_controle_type = 3
THEN
lcl.l ('lcl_ins_srtcontrole_cert')
END
taaksoort,
CASE
WHEN sc.ins_srtcontrole_mode = 0
THEN
lcl.l ('lcl_ins_srtcontrole_moment')
ELSE
lcl.l ('lcl_ins_srtcontrole_interval')
END
taak_modus,
cdp.ctr_disc_params_ismjob ismjob,
sc.ins_srtcontrole_options taakopties,
(SELECT COUNT (dc2.ins_deelsrtcontrole_key)
FROM ins_deelsrtcontrole dc2
WHERE dc2.ins_deel_key = d.ins_deel_key
AND dc2.ins_srtcontrole_key = x.ins_srtcontrole_key)
uitvoer_aantal,
dc.ins_deelsrtcontrole_key,
dcp.ins_deelsrtcontrole_key_vorige deelsrtcontrole_key_vorig,
d.ins_deel_key,
d.ins_deel_omschrijving,
sc.ins_srtcontrole_key,
sc.ins_srtcontrole_info,
sc.ins_srtcontrole_niveau,
sc.ins_srtcontrole_omschrijving,
COALESCE (x.ins_srtcontroledl_xcp_opmerk, sc.ins_srtcontrole_opmerking) ins_srtcontrole_opmerking,
COALESCE (x.ins_srtcontroledl_xcp_periode, sc.ins_srtcontrole_periode) ins_srtcontrole_periode,
DECODE (
COALESCE (x.ins_srtcontroledl_xcp_eenheid, sc.ins_srtcontrole_eenheid),
0,
'Uurlijks',
1,
'Dagelijks',
2,
'Wekelijks',
3,
'Maandelijks',
4,
'Jaarlijks',
'Onbekend')
ins_srtcontrole_eenheid,
sc.ins_srtcontrole_level, -- prioriteit
COALESCE (x.ins_srtcontroledl_xcp_perc, sc.ins_srtcontrole_percentage) ins_srtcontrole_percentage,
x.ins_srtcontroledl_xcp_startdat,
COALESCE (x.ins_srtcontroledl_xcp_eind, ins_srtcontrole_eind) ins_srtcontrole_eind,
COALESCE (x.ins_srtcontroledl_xcp_groep, ins_srtcontrole_groep) ins_srtcontrole_groep,
(SELECT count(*)+1
FROM ins_deelsrtcontrole dc2
WHERE dc2.ins_deelsrtcontrole_key < dc.ins_deelsrtcontrole_key
AND dc2.ins_deel_key = dc.ins_deel_key
AND dc2.ins_srtcontrole_key = dc.ins_srtcontrole_key
AND dc2.ins_scenario_key = dc.ins_scenario_key) uitvoer_x,
DECODE (dc.ins_deelsrtcontrole_status,
0, 'Ingepland',
2, 'In behandeling',
5, 'Afgemeld',
6, 'Voltooid') status,
COALESCE(dc.ins_deelsrtcontrole_datum, dc.ins_deelsrtcontrole_plandatum, tr.datum_inbehandeling) ins_deelsrtcontrole_datum,
CASE
WHEN tr.mjob_doorgeschoven IS NOT NULL
THEN
TO_CHAR (dc.ins_deelsrtcontrole_freezedate, 'yyyy')
ELSE
NULL
END mjob_doorgeschoven,
dc.ins_deelsrtcontrole_plandatum
uitvoerdatum_gepland,
tr.datum_inbehandeling
uitvoerdatum_inbehandeling,
dc.ins_deelsrtcontrole_datum
uitvoerdatum_gereed,
(SELECT CASE
WHEN cm.ins_controlemode_success = 1 THEN 'ja' ELSE 'nee'
END
FROM ins_controlemode cm
WHERE cm.ins_controlemode_key = dc.ins_controlemode_key)
succes,
CASE
WHEN dc.ins_deelsrtcontrole_status = 5 THEN 'ja'
WHEN dc.ins_deelsrtcontrole_status = 6 THEN 'nee'
ELSE ''
END
actie_vereist,
tr.datum_afgemeld
afmeld_datum, -- Afgemeld op (= gereed/voltooid met vervolgactie..)
tr.datum_verwerkt
verwerk_datum, -- Verwerkt op (= voltooid zonder vervolgactie / vervolgactie voltooid)
dc.ins_deelsrtcontrole_datum_org
uitvoerdatum_origineel,
CASE
WHEN dc.ins_deelsrtcontrole_plandatum IS NOT NULL
AND dc.ins_deelsrtcontrole_plandatum > dc.ins_deelsrtcontrole_datum_org THEN 'respijt'
ELSE ''
END NN_respijt,
CASE
WHEN dc.ins_deelsrtcontrole_status in (5,6)
AND COALESCE(dc.ins_deelsrtcontrole_plandatum, dc.ins_deelsrtcontrole_datum_org) < dc.ins_deelsrtcontrole_datum THEN 'Te laat'
WHEN dc.ins_deelsrtcontrole_status in (5,6)
AND COALESCE(dc.ins_deelsrtcontrole_plandatum, dc.ins_deelsrtcontrole_datum_org) >= dc.ins_deelsrtcontrole_datum THEN 'Op tijd'
ELSE ''
END NN_ins_deelsrtcontrole_status,
CASE
WHEN dc.ins_deelsrtcontrole_status in (5,6) THEN
dc.ins_deelsrtcontrole_datum - COALESCE(dcp.ins_deelsrtcontrole_datum, x.ins_srtcontroledl_xcp_startdat, d.ins_deel_aanmaak)
ELSE NULL
END NN_cycli_dagen,
COALESCE (COALESCE(ins_deelsrtcontrole_freezecost, ins_srtcontroledl_xcp_materia), sc.ins_srtcontrole_materiaal) srtcontrole_materiaal,
cm.ins_controlemode_oms,
cm.ins_controlemode_opmerking,
dc.ins_deelsrtcontrole_opmerking,
dc.prs_perslid_key,
pf.prs_perslid_naam_full,
cd.ins_discipline_omschrijving,
pd.prs_dienst_omschrijving,
(SELECT max(b.prs_bedrijf_key)
FROM prs_bedrijf b, prs_bedrijfdienstlocatie bdl
WHERE pd.prs_dienst_key = bdl.prs_dienst_key
AND bdl.prs_bedrijf_key = b.prs_bedrijf_key
AND ( bdl.alg_gebouw_key = d.alg_gebouw_key
OR bdl.alg_locatie_key = d.alg_locatie_key)) prs_bedrijf_key
FROM ins_deelsrtcontrole dc,
ins_v_deel_gegevens d,
ins_srtcontrole sc,
prs_dienst pd,
alg_locatie l,
alg_gebouw g,
ins_controlemode cm,
ins_srtcontroledl_xcp x,
prs_v_perslid_fullnames_all pf,
ctr_discipline cd,
ctr_disc_params cdp,
(SELECT
v.ins_deelsrtcontrole_key,
v.ins_deelsrtcontrole_key_vorige,
dcv.ins_deelsrtcontrole_datum,
dcv.ins_controlemode_key,
dcv.ins_deelsrtcontrole_status
FROM (SELECT dc.ins_deelsrtcontrole_key,
dc.ins_deel_key,
dc.ins_srtcontrole_key,
(SELECT MAX (dc2.ins_deelsrtcontrole_key)
FROM ins_deelsrtcontrole dc2
WHERE dc2.ins_deelsrtcontrole_key < dc.ins_deelsrtcontrole_key
AND dc2.ins_deel_key = dc.ins_deel_key
AND dc2.ins_srtcontrole_key = dc.ins_srtcontrole_key
AND dc2.ins_scenario_key = dc.ins_scenario_key)
AS ins_deelsrtcontrole_key_vorige
FROM ins_deelsrtcontrole dc,
ins_srtcontroledl_xcp x,
ins_srtcontrole sc
WHERE dc.ins_deel_key = x.ins_deel_key
AND dc.ins_srtcontrole_key = x.ins_srtcontrole_key
AND x.ins_srtcontrole_key = sc.ins_srtcontrole_key) v,
ins_deelsrtcontrole dcv
WHERE v.ins_deelsrtcontrole_key_vorige = dcv.ins_deelsrtcontrole_key) dcp, -- dc_previous
(SELECT dc.ins_deelsrtcontrole_key,
(SELECT MAX (fac_tracking_datum)
FROM fac_tracking ft, fac_srtnotificatie sn
WHERE ft.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
AND sn.fac_srtnotificatie_code = 'INSCBE'
AND fac_tracking_refkey = dc.ins_deelsrtcontrole_key) datum_inbehandeling,
(SELECT MAX (ft.fac_tracking_datum)
FROM fac_tracking ft, fac_srtnotificatie sn
WHERE ft.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
AND sn.fac_srtnotificatie_code = 'INSCAF'
AND ft.fac_tracking_refkey = dc.ins_deelsrtcontrole_key) datum_afgemeld,
(SELECT MAX (ft.fac_tracking_datum)
FROM fac_tracking ft, fac_srtnotificatie sn
WHERE ft.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
AND sn.fac_srtnotificatie_code = 'INSCVE'
AND ft.fac_tracking_refkey =dc.ins_deelsrtcontrole_key) datum_verwerkt,
(SELECT MAX (ft.fac_tracking_datum)
FROM fac_tracking ft, fac_srtnotificatie sn
WHERE ft.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
AND sn.fac_srtnotificatie_code = 'INSCUP'
AND instr(lower(ft.fac_tracking_oms),'freeze datum:')>0
AND ft.fac_tracking_refkey =dc.ins_deelsrtcontrole_key) mjob_doorgeschoven
FROM ins_deelsrtcontrole dc ) tr
WHERE dc.ins_deel_key = d.ins_deel_key
AND dc.ins_srtcontrole_key = sc.ins_srtcontrole_key
AND dc.ins_controlemode_key = cm.ins_controlemode_key(+)
AND dc.prs_perslid_key = pf.prs_perslid_key(+)
AND sc.ctr_discipline_key = cd.ins_discipline_key
AND cd.ins_discipline_key = cdp.ctr_ins_discipline_key
AND x.ins_srtcontrole_key = sc.ins_srtcontrole_key(+)
AND x.ins_deel_key = d.ins_deel_key(+)
AND sc.prs_dienst_key = pd.prs_dienst_key(+)
AND d.alg_locatie_key = l.alg_locatie_key AND d.alg_gebouw_key = g.alg_gebouw_key
AND dc.ins_deelsrtcontrole_key = dcp.ins_deelsrtcontrole_key (+)
AND dc.ins_deelsrtcontrole_key = tr.ins_deelsrtcontrole_key (+)
UNION ALL
-- Controledefinities ook opmenen. Dus zonder dat er een resultaat record is.
-- Controles met een periode van 0 worden uitgesloten omdat dit geen daadwerkelijk ingeplande of in te plannen controles zijn.
SELECT
cd.ins_discipline_omschrijving,
CASE
WHEN cdp.ctr_disc_params_controle_type = 1
THEN
lcl.l ('lcl_ins_srtcontrole_insp')
WHEN cdp.ctr_disc_params_controle_type = 2
THEN
lcl.l ('lcl_ins_srtcontrole_repl')
WHEN cdp.ctr_disc_params_controle_type = 3
THEN
lcl.l ('lcl_ins_srtcontrole_cert')
END
taaksoort,
CASE
WHEN sc.ins_srtcontrole_mode = 0
THEN
lcl.l ('lcl_ins_srtcontrole_moment')
ELSE
lcl.l ('lcl_ins_srtcontrole_interval')
END
taak_modus,
cdp.ctr_disc_params_ismjob ismjob,
sc.ins_srtcontrole_options taakopties,
(SELECT COUNT (dc2.ins_deelsrtcontrole_key)
FROM ins_deelsrtcontrole dc2
WHERE dc2.ins_deel_key = xcp.ins_deel_key
AND dc2.ins_srtcontrole_key = xcp.ins_srtcontrole_key)
uitvoer_aantal,
NULL ins_deelsrtcontrole_key,
(SELECT MAX (dc2.ins_deelsrtcontrole_key)
FROM ins_deelsrtcontrole dc2
WHERE dc2.ins_deel_key = xcp.ins_deel_key
AND dc2.ins_srtcontrole_key = xcp.ins_srtcontrole_key
)
deelsrtcontrole_key_vorig,
xcp.ins_deel_key,
d.ins_deel_omschrijving,
sc.ins_srtcontrole_key,
xcp.ins_srtcontrole_info,
ins_srtcontrole_niveau,
xcp.ins_srtcontrole_omschrijving,
xcp.ins_srtcontrole_opmerking,
xcp.ins_srtcontrole_periode,
DECODE (xcp.ins_srtcontrole_eenheid,
0, 'Uurlijks',
1, 'Dagelijks',
2, 'Wekelijks',
3, 'Maandelijks',
4, 'Jaarlijks',
'Onbekend')
ins_srtcontrole_eenheid,
xcp.ins_srtcontrole_level, -- prioriteit
xcp.ins_srtcontroledl_xcp_perc,
xcp.ins_srtcontroledl_xcp_startdat,
xcp.ins_srtcontroledl_xcp_eind,
xcp.ins_srtcontroledl_xcp_groep,
0 uitvoer_x,
NULL status,
CASE WHEN v.ins_deelsrtcontrole_key IS NULL THEN
COALESCE (
ins_srtcontroledl_xcp_startdat,
fac.nextcyclusdatedeel (xcp.ins_deel_key,
xcp.ins_srtcontrole_key,
1))
WHEN v.ins_deelsrtcontrole_key IS NOT NULL AND v.ins_controlemode_success = 0 AND cdp.ctr_disc_params_ismjob = 1 THEN
-- Als mjob taak afhandeling niet succesvol heeft (= niet uitgevoerd), dan wordt deze in Facilitor voor nieuwe freeze-jaar opgenomen/voorgesteld. Nemen we ook zo op in deze dwh-view
(SELECT TO_DATE ('01-01-' || fac_setting_pvalue, 'dd-MM-yyyy') FROM fac_setting WHERE fac_setting_name = 'mjb_freeze_year')
ELSE
fac.nextcyclusdate (v.datum_uitvoer, xcp.ins_srtcontrole_mode, xcp.ins_srtcontrole_eenheid, xcp.ins_srtcontrole_periode, xcp.ins_srtcontrole_bits,1,cdp.ctr_disc_params_ismjob)
END ins_deelsrtcontrole_datum,
NULL
mjob_doorgeschoven,
NULL
uitvoerdatum_gepland,
NULL
uitvoerdatum_inbehandeling,
NULL
uitvoerdatum_gereed,
NULL
succes,
NULL
actie_vereist,
NULL
afmeld_datum,
NULL
verwerk_datum,
NULL
uitvoerdatum_origineel,
NULL
respijt,
CASE WHEN v.ins_deelsrtcontrole_key IS NULL THEN
DECODE (
SIGN(
COALESCE (ins_srtcontroledl_xcp_startdat, fac.nextcyclusdatedeel (xcp.ins_deel_key, xcp.ins_srtcontrole_key, 1))
- SYSDATE),
-1,
'Te laat',
'')
WHEN v.ins_deelsrtcontrole_key IS NOT NULL AND v.ins_controlemode_success = 0 AND cdp.ctr_disc_params_ismjob = 1 THEN
DECODE (
SIGN(
(SELECT TO_DATE ('01-01-' || fac_setting_pvalue, 'dd-MM-yyyy') FROM fac_setting WHERE fac_setting_name = 'mjb_freeze_year')
- SYSDATE),
-1,
'Te laat',
'')
ELSE
DECODE (
SIGN( (fac.nextcyclusdate (v.datum_uitvoer, xcp.ins_srtcontrole_mode, xcp.ins_srtcontrole_eenheid, xcp.ins_srtcontrole_periode, xcp.ins_srtcontrole_bits,1,cdp.ctr_disc_params_ismjob))
- SYSDATE),
-1,
'Te laat',
'')
END ins_deelsrtcontrole_status,
NULL cycli_dagen,
xcp.ins_srtcontrole_materiaal,
NULL ins_controlemode_oms,
NULL ins_controlemode_opmerking,
NULL ins_deelsrtcontrole_opmerking,
NULL prs_perslid_key,
NULL prs_perslid_naam_full,
cd.ins_discipline_omschrijving,
pd.prs_dienst_omschrijving,
(SELECT max(b.prs_bedrijf_key)
FROM prs_bedrijf b, prs_bedrijfdienstlocatie bdl
WHERE pd.prs_dienst_key = bdl.prs_dienst_key
AND bdl.prs_bedrijf_key = b.prs_bedrijf_key
AND ( bdl.alg_gebouw_key = d.alg_gebouw_key
OR bdl.alg_locatie_key = d.alg_locatie_key)) prs_bedrijf_key
FROM ins_v_defined_inspect_xcp xcp,
ins_v_deel_gegevens d,
ins_srtcontrole sc,
prs_dienst pd,
alg_locatie l,
alg_gebouw g,
ctr_discipline cd,
ctr_disc_params cdp,
(SELECT dc.ins_deelsrtcontrole_key,
dc.ins_deel_key,
dc.ins_srtcontrole_key,
dc.ins_controlemode_key,
cm.ins_controlemode_success,
dc.ins_deelsrtcontrole_freezedate,
COALESCE(dc.ins_deelsrtcontrole_datum,
DECODE(xcp.ctr_ismjob, 1, COALESCE(dc.ins_deelsrtcontrole_freezedate, dc.ins_deelsrtcontrole_plandatum),
COALESCE(dc.ins_deelsrtcontrole_plandatum, tr.datum_inbehandeling)
)) datum_uitvoer
FROM ins_deelsrtcontrole dc, ins_v_defined_inspect_xcp xcp, ins_controlemode cm,
(SELECT dc.ins_deelsrtcontrole_key,
(SELECT MAX (fac_tracking_datum)
FROM fac_tracking ft, fac_srtnotificatie sn
WHERE ft.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
AND sn.fac_srtnotificatie_code = 'INSCBE'
AND fac_tracking_refkey = dc.ins_deelsrtcontrole_key) datum_inbehandeling
FROM ins_deelsrtcontrole dc ) tr
WHERE dc.ins_deelsrtcontrole_key = (SELECT max(ins_deelsrtcontrole_key)
FROM ins_deelsrtcontrole dc2
WHERE dc2.ins_deel_key = dc.ins_deel_key
AND dc2.ins_srtcontrole_key = dc.ins_srtcontrole_key)
AND dc.ins_srtcontrole_key = xcp.ins_srtcontrole_key AND dc.ins_deel_key = xcp.ins_deel_key
AND dc.ins_deelsrtcontrole_key = tr.ins_deelsrtcontrole_key
AND dc.ins_controlemode_key = cm.ins_controlemode_key(+)
) v
WHERE xcp.ins_deel_key = d.ins_deel_key
AND xcp.ins_srtcontrole_key = sc.ins_srtcontrole_key
AND xcp.ins_srtcontrole_periode <> 0
AND sc.ctr_discipline_key = cd.ins_discipline_key
AND cd.ins_discipline_key = cdp.ctr_ins_discipline_key
AND sc.prs_dienst_key = pd.prs_dienst_key(+)
AND d.alg_locatie_key = l.alg_locatie_key AND d.alg_gebouw_key = g.alg_gebouw_key
AND xcp.ins_deel_key = v.ins_deel_key (+) AND xcp.ins_srtcontrole_key = v.ins_srtcontrole_key (+) ;
CREATE OR REPLACE VIEW aaxx_v_dwh_inspectie
(
deelsrtcontrole_key,
deel_key,
deel_omschrijving,
srtcontrole_info,
srtcontrole_niveau,
srtcontrole_omschrijving,
srtcontrole_opmerking,
srtcontrole_periode,
srtcontrole_eenheid,
srtcontrole_level, -- prioriteit
srtcontrole_percentage,
srtcontrole_start,
srtcontrole_eind,
srtcontrole_groep,
deelsrtcontrole_datum,
deelsrtcontrole_gepland,
deelsrtcontrole_status,
deelsrtcontrole_status_next,
srtcontrole_materiaal,
controlemode_omschrijving,
controlemode_opmerking,
deelsrtcontrole_opmerking,
prs_perslid_key,
gecontroleerd_door,
taak_categorie,
dienst,
prs_bedrijf_key,
status,
uitvoerdatum
)
AS
SELECT dc.ins_deelsrtcontrole_key,
d.ins_deel_key,
d.ins_deel_omschrijving,
sc.ins_srtcontrole_info,
sc.ins_srtcontrole_niveau,
sc.ins_srtcontrole_omschrijving,
COALESCE (x.ins_srtcontroledl_xcp_opmerk, sc.ins_srtcontrole_opmerking) ins_srtcontrole_opmerking,
COALESCE (x.ins_srtcontroledl_xcp_periode, sc.ins_srtcontrole_periode) ins_srtcontrole_periode,
DECODE (
COALESCE (x.ins_srtcontroledl_xcp_eenheid, sc.ins_srtcontrole_eenheid),
0,
'Uurlijks',
1,
'Dagelijks',
2,
'Wekelijks',
3,
'Maandelijks',
4,
'Jaarlijks',
'Onbekend')
ins_srtcontrole_eenheid,
sc.ins_srtcontrole_level, -- prioriteit
COALESCE (x.ins_srtcontroledl_xcp_perc, sc.ins_srtcontrole_percentage) ins_srtcontrole_percentage,
x.ins_srtcontroledl_xcp_startdat,
COALESCE (x.ins_srtcontroledl_xcp_eind, ins_srtcontrole_eind) ins_srtcontrole_eind,
COALESCE (x.ins_srtcontroledl_xcp_groep, ins_srtcontrole_groep) ins_srtcontrole_groep,
ins_deelsrtcontrole_datum,
(SELECT MAX (dc2.ins_deelsrtcontrole_datum)
+ sc.ins_srtcontrole_periode
FROM ins_deelsrtcontrole dc2
WHERE dc2.ins_deelsrtcontrole_datum <
dc.ins_deelsrtcontrole_datum
AND dc2.ins_deel_key = dc.ins_deel_key
AND dc2.ins_srtcontrole_key = dc.ins_srtcontrole_key
AND dc2.ins_controlemode_key = dc.ins_controlemode_key)
ins_deelsrtcontrole_gepland,
(SELECT DECODE (
SIGN( MAX (dc2.ins_deelsrtcontrole_datum)
+ sc.ins_srtcontrole_periode
- dc.ins_deelsrtcontrole_datum),
-1,
'Te laat',
'Op tijd')
FROM ins_deelsrtcontrole dc2
WHERE dc2.ins_deelsrtcontrole_datum <
dc.ins_deelsrtcontrole_datum
AND dc2.ins_deel_key = dc.ins_deel_key
AND dc2.ins_srtcontrole_key = dc.ins_srtcontrole_key
AND dc2.ins_controlemode_key = dc.ins_controlemode_key)
ins_deelsrtcontrole_status,
(SELECT DECODE (
COUNT ( * ),
0,
DECODE (
SIGN( (dc.ins_deelsrtcontrole_datum
+ sc.ins_srtcontrole_periode)
- SYSDATE),
-1,
'Te laat',
''))
status_fut
FROM ins_deelsrtcontrole dc2
WHERE dc2.ins_deelsrtcontrole_datum >
dc.ins_deelsrtcontrole_datum
AND dc2.ins_deel_key = dc.ins_deel_key
AND dc2.ins_srtcontrole_key = dc.ins_srtcontrole_key
AND dc2.ins_controlemode_key = dc.ins_controlemode_key)
ins_deelsrtcontrole_next,
COALESCE (COALESCE(ins_deelsrtcontrole_freezecost, ins_srtcontroledl_xcp_materia), sc.ins_srtcontrole_materiaal) srtcontrole_materiaal,
cm.ins_controlemode_oms,
cm.ins_controlemode_opmerking,
dc.ins_deelsrtcontrole_opmerking,
dc.prs_perslid_key,
pf.prs_perslid_naam_full,
cd.ins_discipline_omschrijving,
pd.prs_dienst_omschrijving,
(SELECT max(b.prs_bedrijf_key)
FROM prs_bedrijf b, prs_bedrijfdienstlocatie bdl
WHERE pd.prs_dienst_key = bdl.prs_dienst_key
AND bdl.prs_bedrijf_key = b.prs_bedrijf_key
AND ( bdl.alg_gebouw_key = d.alg_gebouw_key
OR bdl.alg_locatie_key = d.alg_locatie_key)) prs_bedrijf_key,
DECODE (dc.ins_deelsrtcontrole_status,
0, 'Ingepland',
2, 'In behandeling',
5, 'Afgemeld',
6, 'Voltooid') status,
dc.ins_deelsrtcontrole_datum
FROM ins_deelsrtcontrole dc,
ins_v_deel_gegevens d,
ins_srtcontrole sc,
prs_dienst pd,
alg_locatie l,
alg_gebouw g,
ins_controlemode cm,
ins_srtcontroledl_xcp x,
prs_v_perslid_fullnames_all pf,
ctr_discipline cd
WHERE dc.ins_deel_key = d.ins_deel_key
AND dc.ins_srtcontrole_key = sc.ins_srtcontrole_key
AND dc.ins_controlemode_key = cm.ins_controlemode_key(+)
AND dc.prs_perslid_key = pf.prs_perslid_key(+)
AND sc.ctr_discipline_key = cd.ins_discipline_key
AND x.ins_srtcontrole_key = sc.ins_srtcontrole_key(+)
AND x.ins_deel_key = d.ins_deel_key(+)
AND sc.prs_dienst_key = pd.prs_dienst_key(+)
AND d.alg_locatie_key = l.alg_locatie_key AND d.alg_gebouw_key = g.alg_gebouw_key
UNION ALL
-- Controledefinities ook opmenen. Dus zonder dat er een resultaat record is.
-- Controles met een periode van 0 worden uitgesloten omdat dit geen daadwerkelijk ingeplande of in te plannen controles zijn.
SELECT NULL ins_deelsrtcontrole_key,
xcp.ins_deel_key,
d.ins_deel_omschrijving,
xcp.ins_srtcontrole_info,
ins_srtcontrole_niveau,
xcp.ins_srtcontrole_omschrijving,
xcp.ins_srtcontrole_opmerking,
xcp.ins_srtcontrole_periode,
DECODE (xcp.ins_srtcontrole_eenheid,
0, 'Uurlijks',
1, 'Dagelijks',
2, 'Wekelijks',
3, 'Maandelijks',
4, 'Jaarlijks',
'Onbekend')
ins_srtcontrole_eenheid,
xcp.ins_srtcontrole_level, -- prioriteit
xcp.ins_srtcontroledl_xcp_perc,
xcp.ins_srtcontroledl_xcp_startdat,
xcp.ins_srtcontroledl_xcp_eind,
xcp.ins_srtcontroledl_xcp_groep,
DECODE (
(SELECT COUNT ( * )
FROM ins_deelsrtcontrole dsc
WHERE dsc.ins_deel_key = d.ins_deel_key
AND dsc.ins_srtcontrole_key = xcp.ins_srtcontrole_key),
0,
COALESCE (
ins_srtcontroledl_xcp_startdat,
fac.nextcyclusdatedeel (xcp.ins_deel_key,
xcp.ins_srtcontrole_key,
1)),
fac.nextcyclusdatedeel (d.ins_deel_key,
xcp.ins_srtcontrole_key,
1))
ins_deelsrtcontrole_datum,
NULL ins_deelsrtcontrole_gepland,
DECODE (
SIGN(DECODE (
(SELECT COUNT ( * )
FROM ins_deelsrtcontrole dsc
WHERE dsc.ins_deel_key = d.ins_deel_key
AND dsc.ins_srtcontrole_key =
xcp.ins_srtcontrole_key),
0,
COALESCE (
ins_srtcontroledl_xcp_startdat,
fac.nextcyclusdatedeel (xcp.ins_deel_key,
xcp.ins_srtcontrole_key,
1)),
fac.nextcyclusdatedeel (d.ins_deel_key,
xcp.ins_srtcontrole_key,
1))
- SYSDATE),
-1,
'Te laat',
'Op tijd')
ins_deelsrtcontrole_status,
NULL ins_deelsrtcontrole_next,
xcp.ins_srtcontrole_materiaal,
NULL ins_controlemode_oms,
NULL ins_controlemode_opmerking,
NULL ins_deelsrtcontrole_opmerking,
NULL prs_perslid_key,
NULL prs_perslid_naam_full,
cd.ins_discipline_omschrijving,
pd.prs_dienst_omschrijving,
(SELECT max(b.prs_bedrijf_key)
FROM prs_bedrijf b, prs_bedrijfdienstlocatie bdl
WHERE pd.prs_dienst_key = bdl.prs_dienst_key
AND bdl.prs_bedrijf_key = b.prs_bedrijf_key
AND ( bdl.alg_gebouw_key = d.alg_gebouw_key
OR bdl.alg_locatie_key = d.alg_locatie_key)) prs_bedrijf_key,
NULL status,
NULL ins_deelsrtcontrole_datum
FROM ins_v_defined_inspect_xcp xcp,
ins_v_deel_gegevens d,
ins_srtcontrole sc,
prs_dienst pd,
alg_locatie l,
alg_gebouw g,
ctr_discipline cd
WHERE xcp.ins_deel_key = d.ins_deel_key
AND xcp.ins_srtcontrole_key = sc.ins_srtcontrole_key
AND xcp.ins_srtcontrole_periode <> 0
AND sc.ctr_discipline_key = cd.ins_discipline_key
AND sc.prs_dienst_key = pd.prs_dienst_key(+)
AND d.alg_locatie_key = l.alg_locatie_key AND d.alg_gebouw_key = g.alg_gebouw_key ;
-------------------------------------------------------------------------------
-- EXPORTFUNCTIE - DWH_INS_OBJECT
-------------------------------------------------------------------------------
CREATE OR REPLACE VIEW aaxx_v_dwh_ins_object
(
ins_deel_key,
identificatie,
beschrijving,
discipline_omschrijving,
groep_omschrijving,
objectsoort_omschrijving,
objectsoort_code,
registratiedatum,
vervaldatum,
koppel_type,
plaats_eigenaar,
regio_key,
district_key,
locatie_key,
gebouw_key,
terreinsector_key,
verdieping_key,
ruimte_key,
werkplek_key,
afdeling_key,
perslid_key,
beheerder,
actief,
hoeveelheid,
conditie,
prioriteit
)
AS
SELECT ins_deel_key,
ins_deel_omschrijving identificatie,
ins_deel_opmerking beschrijving,
ins_discipline_omschrijving discipline_omschrijving,
ins_srtgroep_omschrijving groep_omschrijving,
ins_srtdeel_omschrijving objectsoort_omschrijving,
ins_srtdeel_code objectsoort_code,
ins_deel_aanmaak registratiedatum,
ins_deel_vervaldatum vervaldatum,
'Afdeling' koppel_type,
(SELECT d.prs_afdeling_omschrijving
FROM prs_v_afdeling d
WHERE prs_afdeling_key =
COALESCE (ins_alg_ruimte_key_org, ins_alg_ruimte_key))
plaats_eigenaar,
NULL alg_regio_key,
NULL alg_district_key,
NULL alg_locatie_key,
NULL alg_gebouw_key,
NULL terreinsector_key,
NULL alg_verdieping_key,
NULL alg_ruimte_key,
NULL prs_werkplek_key,
COALESCE (ins_alg_ruimte_key_org, ins_alg_ruimte_key) prs_afdeling_key,
NULL prs_perslid_key,
pf1.prs_perslid_naam_full beheerder,
ins_deel_actief,
ins_deel_aantal,
ins_deel_mjb_score1,
ins_deel_mjb_score2
FROM ins_v_aanwezigdeel d,
ins_v_aanwezigsrtdeel srt,
ins_v_aanwezigsrtgroep sg,
ins_v_aanwezigdiscipline disc,
prs_v_perslid_fullnames_all pf1,
prs_v_afdeling_boom pb
WHERE srt.ins_srtdeel_key = d.ins_srtdeel_key
AND sg.ins_srtgroep_key = srt.ins_srtgroep_key
AND sg.ins_discipline_key = disc.ins_discipline_key
AND prs_perslid_key_beh = pf1.prs_perslid_key(+)
AND d.ins_alg_ruimte_key = pb.prs_afdeling_key
AND d.ins_deel_module = 'INS'
AND d.ins_deel_parent_key IS NULL
AND COALESCE (ins_alg_ruimte_type_org, ins_alg_ruimte_type) = 'A'
UNION
SELECT ins_deel_key,
ins_deel_omschrijving,
ins_deel_opmerking,
ins_discipline_omschrijving,
ins_srtgroep_omschrijving,
ins_srtdeel_omschrijving,
ins_srtdeel_code,
ins_deel_aanmaak,
ins_deel_vervaldatum,
'Persoon',
COALESCE (pf2.prs_perslid_naam_full, 'onbekend') eigenaar,
NULL alg_regio_key,
NULL alg_district_key,
NULL alg_locatie_key,
NULL alg_gebouw_key,
NULL terreinsector_key,
NULL alg_verdieping_key,
NULL alg_ruimte_key,
NULL prs_werkplek_key,
NULL prs_afdeling_key,
COALESCE (ins_alg_ruimte_key_org, ins_alg_ruimte_key) prs_perslid_key,
pf1.prs_perslid_naam_full,
ins_deel_actief,
ins_deel_aantal,
ins_deel_mjb_score1,
ins_deel_mjb_score2
FROM ins_v_aanwezigdeel d,
ins_v_aanwezigsrtdeel srt,
ins_v_aanwezigsrtgroep sg,
ins_v_aanwezigdiscipline disc,
prs_v_perslid_fullnames_all pf1,
prs_v_perslid_fullnames_all pf2
WHERE srt.ins_srtdeel_key = d.ins_srtdeel_key
AND sg.ins_srtgroep_key = srt.ins_srtgroep_key
AND sg.ins_discipline_key = disc.ins_discipline_key
AND prs_perslid_key_beh = pf1.prs_perslid_key(+)
AND d.ins_deel_module = 'INS'
AND d.ins_deel_parent_key IS NULL
AND COALESCE (ins_alg_ruimte_type_org, ins_alg_ruimte_type) = 'P'
AND pf2.prs_perslid_key(+) =
COALESCE (ins_alg_ruimte_key_org, ins_alg_ruimte_key)
UNION
SELECT ins_deel_key,
ins_deel_omschrijving,
ins_deel_opmerking,
ins_discipline_omschrijving,
ins_srtgroep_omschrijving,
ins_srtdeel_omschrijving,
ins_srtdeel_code,
ins_deel_aanmaak,
ins_deel_vervaldatum,
DECODE (o.alg_onroerendgoed_type,
'R',
'Ruimte',
'T',
'Terrein',
'W',
'Werkplek'),
o.alg_plaatsaanduiding || ' ('
|| DECODE (
o.alg_onroerendgoed_type,
'R',
(SELECT r.alg_ruimte_omschrijving
FROM alg_ruimte r
WHERE r.alg_ruimte_key = d.ins_alg_ruimte_key),
'T',
(SELECT t.alg_terreinsector_naam
FROM alg_terreinsector t
WHERE t.alg_terreinsector_key = d.ins_alg_ruimte_key),
'W',
(SELECT r.alg_ruimte_omschrijving
FROM alg_ruimte r, prs_werkplek w
WHERE r.alg_ruimte_key = w.prs_alg_ruimte_key
AND w.prs_werkplek_key = d.ins_alg_ruimte_key)
)
|| ')'
eigenaar,
di.alg_regio_key alg_regio_key,
l.alg_district_key alg_district_key,
o.alg_locatie_key alg_locatie_key,
o.alg_gebouw_key alg_gebouw_key,
o.alg_terreinsector_key terreinsector_key,
o.alg_verdieping_key alg_verdieping_key,
o.alg_ruimte_key alg_ruimte_key,
o.prs_werkplek_key alg_werkplek_key,
NULL prs_afdeling_key,
NULL prs_perslid_key,
pf1.prs_perslid_naam_full,
ins_deel_actief,
ins_deel_aantal,
ins_deel_mjb_score1,
ins_deel_mjb_score2
FROM ins_v_aanwezigdeel d,
ins_v_aanwezigsrtdeel srt,
ins_v_aanwezigsrtgroep sg,
ins_v_aanwezigdiscipline disc,
prs_v_perslid_fullnames_all pf1,
ins_v_alg_overzicht o,
alg_locatie l,
alg_district di
WHERE srt.ins_srtdeel_key = d.ins_srtdeel_key
AND sg.ins_srtgroep_key = srt.ins_srtgroep_key
AND sg.ins_discipline_key = disc.ins_discipline_key
AND prs_perslid_key_beh = pf1.prs_perslid_key(+)
AND d.ins_deel_module = 'INS'
AND d.ins_deel_parent_key IS NULL
AND COALESCE (ins_alg_ruimte_type_org, ins_alg_ruimte_type) IN
('T', 'R', 'W')
AND o.alg_onroerendgoed_keys =
COALESCE (ins_alg_ruimte_key_org, ins_alg_ruimte_key)
AND o.alg_onroerendgoed_type =
COALESCE (ins_alg_ruimte_type_org, ins_alg_ruimte_type)
AND o.alg_locatie_key = d.ins_alg_locatie_key
AND o.alg_locatie_key = l.alg_locatie_key
AND l.alg_district_key = di.alg_district_key;
-------------------------------------------------------------------------------
-- EXPORTFUNCTIE - DWH_INS_KENMERK_OBJECT
-------------------------------------------------------------------------------
CREATE OR REPLACE VIEW aaxx_v_dwh_kenmerk_object
(
deel_key,
ins_kenmerk_omschrijving,
ins_kenmerk_waarde
)
AS
SELECT ins_deel_key deel_key,
srt.ins_srtkenmerk_omschrijving kenmerk_omschrijving,
aaxx_get_kenmerkwaarde (srt.ins_srtkenmerk_kenmerktype,
srt.fac_kenmerkdomein_key,
kd.ins_kenmerkdeel_waarde)
kenmerk_waarde
FROM ins_kenmerkdeel kd, ins_kenmerk k, ins_srtkenmerk srt
WHERE kd.ins_kenmerk_key = k.ins_kenmerk_key
AND srt.ins_srtkenmerk_key = k.ins_srtkenmerk_key
AND ins_kenmerkdeel_verwijder IS NULL;
-------------------------------------------------------------------------------
-- EXPORTFUNCTIE - DWH_KENMERK_INSPECTIE
-------------------------------------------------------------------------------
CREATE OR REPLACE VIEW aaxx_v_dwh_kenmerk_inspectie
(
deelsrtcontrole_key,
ins_kenmerk_omschrijving,
ins_kenmerk_waarde
)
AS
SELECT ins_deelsrtcontrole_key deelsrtcontrole_key,
srt.ins_srtkenmerk_omschrijving kenmerk_omschrijving,
aaxx_get_kenmerkwaarde (srt.ins_srtkenmerk_kenmerktype,
srt.fac_kenmerkdomein_key,
kds.ins_kmdeelsrtcontr_waarde)
kenmerk_waarde
FROM ins_kmdeelsrtcontr kds, ins_kenmerk k, ins_srtkenmerk srt
WHERE kds.ins_kenmerk_key = k.ins_kenmerk_key
AND srt.ins_srtkenmerk_key = k.ins_srtkenmerk_key
AND ins_kmdeelsrtcontr_verwijder IS NULL;
-------------------------------------------------------------------------------
-- EXPORTFUNCTIE - DWH_UREN
-------------------------------------------------------------------------------
CREATE OR REPLACE VIEW aaxx_v_dwh_uren
(
mld_opdr_id,
prs_perslid_key,
datum,
uren_besteed,
uren_opmerking,
uren_status
)
AS
SELECT ug.mld_melding_key || '/' || ug.mld_opdr_bedrijfopdr_volgnr,
ug.prs_perslid_key,
ug.mld_opdr_uren_datum,
ug.mld_opdr_uren_besteed,
ug.mld_opdr_uren_opmerking,
REPLACE(ug.uren_status_tekst, '&'||'nbsp;', ' ') uren_status_tekst
FROM aaxx_v_exact_uren_gegevens ug;
-------------------------------------------------------------------------------
-- EXPORTFUNCTIE - DWH_UREN_IMPROD
-------------------------------------------------------------------------------
CREATE OR REPLACE VIEW aaxx_v_dwh_uren_improd
(
prs_perslid_key,
code_improductief,
omschr_improductief,
datum,
uren_besteed,
uren_opmerking,
uren_status
)
AS
SELECT ou.prs_perslid_key,
io.mld_impropdr_code,
io.mld_impropdr_omschrijving,
ou.mld_opdr_uren_datum,
ou.mld_opdr_uren_besteed,
ou.mld_opdr_uren_opmerking,
REPLACE(lx.fac_locale_xsl_tekst, '&'||'nbsp;', ' ') fac_locale_xsl_tekst
FROM mld_opdr_uren ou,
mld_impropdr io,
(SELECT *
FROM fac_locale_xsl
WHERE fac_locale_xsl_lang = 'NL') lx
WHERE ou.mld_impropdr_key = io.mld_impropdr_key
AND lx.fac_locale_xsl_label =
'lcl_mld_uren_status_' || ou.mld_opdr_uren_status;
-------------------------------------------------------------------------------
-- DATAWAREHOUSE - DWH_TRACKING
-------------------------------------------------------------------------------
CREATE OR REPLACE VIEW aaxx_v_dwh_tracking
AS
SELECT t.fac_tracking_refkey ref_key,
sn.fac_srtnotificatie_xmlnode soort,
t.fac_tracking_datum datum,
sn.fac_srtnotificatie_code actiecode,
t.fac_tracking_oms omschrijving,
t.prs_perslid_key prs_perslid_key
FROM fac_tracking t,
fac_srtnotificatie sn
WHERE sn.fac_srtnotificatie_key = t.fac_srtnotificatie_key
AND sn.fac_srtnotificatie_xmlnode IS NOT NULL;
-------------------------------------------------------------------------------
-- DATAWAREHOUSE - DWH_FAQ
-------------------------------------------------------------------------------
CREATE OR REPLACE VIEW aaxx_v_dwh_faq
AS
SELECT f.fac_faq_key,
(SELECT fac_version_cust FROM fac_version)
fac_version_cust,
'https://' || LOWER( (SELECT fac_version_cust FROM fac_version)) || '.facilitor.nl/appl/mld/mld_melding.asp?mld_defaultstdmelding=' || std.mld_stdmelding_key ||chr(38) || 'role=fe' ||chr(38) || 'sso=HEYDAY' link,
'https://' || LOWER( (SELECT fac_version_cust FROM fac_version)) || '.facilitor.nl/appl/fac/fac_faq.asp?faq_key=' || f.fac_faq_key ||chr(38) || 'role=bo' ||chr(38) || 'sso=HEYDAY' faq_link,
fac_faq_question,
fac_faq_answer,
f.fac_faq_source,
f.fac_faq_datum,
sd.ins_srtdiscipline_prefix
|| '-'
|| d.ins_discipline_omschrijving
ins_discipline_omschrijving,
std.mld_stdmelding_key,
std.mld_stdmelding_omschrijving,
DECODE (alg_type, NULL, 'Locatie', 'G', 'Gebouw', '')
alg_scope,
aogg.alg_onroerendgoed_omschrijving,
l.alg_locatie_omschrijving,
l.alg_locatie_code,
COALESCE (aogg.alg_gebouw_naam, aogg.alg_terreinsector_naam)
alg_gebouwterrein_naam,
COALESCE (aogg.alg_gebouw_code, aogg.alg_terreinsector_code)
alg_gebouwterrein_code,
aogg.alg_verdieping_code,
aogg.alg_ruimte_nr,
DECODE (f.fac_faq_level,
1, 'Zelfservice',
2, 'Professionals',
3, 'Zelfservice en Professionals')
fac_faq_level,
fac_faq_hint,
fac_faq_url,
pf.prs_perslid_naam_full
prs_perslid_key_mut
FROM fac_faq f,
mld_stdmeldingfaq s,
mld_stdmelding std,
ins_tab_discipline d,
ins_srtdiscipline sd,
alg_algfaq a,
alg_v_onroerendgoed_gegevens aogg,
alg_locatie l,
prs_v_perslid_fullnames_all pf
WHERE f.fac_faq_key = s.fac_faq_key
AND s.mld_stdmelding_key = std.mld_stdmelding_key
AND std.mld_ins_discipline_key = d.ins_discipline_key
AND d.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
AND a.fac_faq_key = f.fac_faq_key
AND a.alg_locatie_key = l.alg_locatie_key(+)
AND a.alg_onroerendgoed_keys = aogg.alg_onroerendgoed_keys(+)
AND f.prs_perslid_key = pf.prs_perslid_key(+);
-------------------------------------------------------------------------------
-- DATAWAREHOUSE - DWH_FAQ2 Kennisbankitems per vakgroepen en locaties
-------------------------------------------------------------------------------
CREATE OR REPLACE VIEW AAXX_V_DWH_FAQ2
(
KENNISBANKSLEUTEL,
VRAAG,
ANTWOORD,
BRON,
DATUM,
URL,
LAATS_GEWIJZIGD,
LOCATIE_SCOPE,
ONTROERENDGOED_OMSCHR,
LOCATIE,
LOCATIE_CODE,
GEBOUW_NAAM,
TERREIN_CODE,
VEDRIEPING_CODE,
RUIMTE_NR,
KENNISBANK_NIVEAU,
KENNISBANK_HINT,
KENNISBANK_URL,
VAKGROEP
)
AS
SELECT f.fac_faq_key,
f.fac_faq_question,
f.fac_faq_answer,
f.fac_faq_source,
f.fac_faq_datum,
'https://'
|| LOWER ((SELECT fac_version_cust FROM fac_version))
|| '.facilitor.nl/appl/fac/fac_faq.asp?faq_key='
|| f.fac_faq_key
|| CHR (38)
|| 'role=bo'
|| CHR (38)
|| 'sso=1',
pf.PRS_PERSLID_NAAM_FULL,
DECODE (alg_type, NULL, 'Locatie', 'G', 'Gebouw', '')
alg_scope,
aogg.alg_onroerendgoed_omschrijving,
l.alg_locatie_omschrijving,
l.alg_locatie_code,
COALESCE (aogg.alg_gebouw_naam, aogg.alg_terreinsector_naam)
alg_gebouwterrein_naam,
COALESCE (aogg.alg_gebouw_code, aogg.alg_terreinsector_code)
alg_gebouwterrein_code,
aogg.alg_verdieping_code,
aogg.alg_ruimte_nr,
DECODE (f.fac_faq_level,
1, 'Zelfservice',
2, 'Professionals',
3, 'Zelfservice en Professionals')
fac_faq_level,
fac_faq_hint,
fac_faq_url,
sd.ins_srtdiscipline_prefix
|| '-'
|| d.ins_discipline_omschrijving
ins_discipline_omschrijving
FROM fac_faq f,
prs_v_perslid_fullnames_all pf,
alg_algfaq a,
alg_v_onroerendgoed_gegevens aogg,
alg_locatie l,
mld_stdmeldingfaq s,
ins_tab_discipline d,
ins_srtdiscipline sd
WHERE f.fac_faq_key = s.fac_faq_key (+)
AND s.ins_discipline_key = d.ins_discipline_key (+)
AND d.ins_srtdiscipline_key = sd.ins_srtdiscipline_key (+)
AND f.fac_faq_key = a.fac_faq_key (+)
AND a.alg_locatie_key = l.alg_locatie_key(+)
AND a.alg_onroerendgoed_keys = aogg.alg_onroerendgoed_keys(+)
AND f.prs_perslid_key = pf.prs_perslid_key(+)
ORDER BY f.fac_faq_key;
-------------------------------------------------------------------------------
-- EXPORTFUNCTIE - DWH_BUDGET_TRACKER
-------------------------------------------------------------------------------
CREATE OR REPLACE VIEW aaxx_v_dwh_budget_tracker
(
nummer,
datum,
status,
laatste_actie,
vakgroeptype,
vakgroep,
kostensoort_code,
kostensoort_omschrijving,
financiele_waarde,
kostensoortgroep_omschrijving,
melding,
omschrijving,
organisatie,
naam,
kostenplaats,
kostenplaats_omschrijving,
plaats,
locatie,
gebouw,
code_exact,
opdracht_status,
uitvoerende,
contactpersoon,
uren,
uurloon,
materiaal,
kosten,
gefactureerd
)
AS
SELECT m.mld_melding_key || '/' || mld_opdr_bedrijfopdr_volgnr nummer,
o.mld_opdr_datumbegin datum,
(SELECT mld_statusopdr_omschrijving
FROM mld_statusopdr s
WHERE o.mld_statusopdr_key = s.mld_statusopdr_key)
status,
mld.getopdrachtstatusdate (o.mld_opdr_key, mld_statusopdr_key)
laatste_actie,
sd.ins_srtdiscipline_prefix vakgroeptype,
md.ins_discipline_omschrijving vakgroep,
COALESCE (kstd.prs_kostensoort_oms, kvg.prs_kostensoort_oms)
kostensoort_code,
COALESCE (kstd.prs_kostensoort_opmerking,
kvg.prs_kostensoort_opmerking)
kostensoort_omschrijving,
COALESCE (kstd.prs_kostensoort_refcode,
kvg.prs_kostensoort_refcode)
financiele_waarde,
(SELECT prs_kostensoortgrp_oms
FROM prs_kostensoortgrp ksg
WHERE ksg.prs_kostensoortgrp_key =
COALESCE (kstd.prs_kostensoortgrp_key,
kvg.prs_kostensoortgrp_key))
kostensoortgroep_omschrijving,
std.mld_stdmelding_omschrijving melding,
mld_melding_omschrijving omschrijving,
(SELECT d.prs_afdeling_naam
FROM prs_v_afdeling d
WHERE p.prs_afdeling_key = d.prs_afdeling_key)
organisatie,
p.prs_perslid_naam
|| DECODE (NVL (p.prs_perslid_voorletters, ''),
'', '',
', ' || p.prs_perslid_voorletters)
|| DECODE (NVL (p.prs_perslid_tussenvoegsel, ''),
'', '',
' ' || p.prs_perslid_tussenvoegsel)
|| DECODE (NVL (p.prs_perslid_voornaam, ''),
'', '',
' (' || p.prs_perslid_voornaam || ')')
naam,
(SELECT k.prs_kostenplaats_nr
FROM prs_kostenplaats k
WHERE k.prs_kostenplaats_key = o.prs_kostenplaats_key)
kostenplaats,
(SELECT k.prs_kostenplaats_omschrijving
FROM prs_kostenplaats k
WHERE k.prs_kostenplaats_key = o.prs_kostenplaats_key)
kostenplaats_omschrijving,
(SELECT alg_locatie_code
FROM alg_locatie l
WHERE m.mld_alg_locatie_key = l.alg_locatie_key)
|| (SELECT CASE COALESCE (g.alg_gebouw_code, '')
WHEN '' THEN ''
ELSE '-' || g.alg_gebouw_code
END
|| CASE COALESCE (g.alg_verdieping_code, '')
WHEN '' THEN ''
ELSE '-' || g.alg_verdieping_code
END
|| CASE COALESCE (g.alg_ruimte_nr, '')
WHEN '' THEN ''
ELSE '-' || g.alg_ruimte_nr
END
FROM alg_v_allonrgoed_gegevens g
WHERE m.mld_alg_onroerendgoed_keys = g.alg_onroerendgoed_keys)
plaats,
alg_locatie_code locatie,
alg_gebouw_code gebouw,
COALESCE ( (SELECT exact_code
FROM aaxx_v_exact_code_gebouw ogk
WHERE ogk.alg_gebouw_key = v.alg_gebouw_key),
v.alg_gebouw_code)
code_exact,
(SELECT mld_statusopdr_omschrijving
FROM mld_statusopdr so
WHERE o.mld_statusopdr_key = so.mld_statusopdr_key)
opdracht_status,
COALESCE ( (SELECT prs_bedrijf_naam
FROM prs_bedrijf b
WHERE o.mld_uitvoerende_keys = prs_bedrijf_key),
(SELECT prs_perslid_naam_full
FROM prs_v_perslid_fullnames_all
WHERE o.mld_uitvoerende_keys = prs_perslid_key))
uitvoerende,
(SELECT prs_perslid_naam_full
FROM prs_v_perslid_fullnames_all pf
WHERE o.prs_perslid_key = pf.prs_perslid_key)
contactpersoon,
o.mld_opdr_uren uren,
o.mld_opdr_uurloon uurloon,
o.mld_opdr_materiaal materiaal,
o.mld_opdr_kosten kosten,
COALESCE ( (SELECT SUM (f.fin_factuur_totaal)
FROM aaxx_v_aanwezigfactuur f
WHERE f.mld_opdr_key = o.mld_opdr_key), 0)
gefactureerd
FROM mld_melding m,
mld_discipline md,
ins_srtdiscipline sd,
alg_v_allonrgoed_gegevens v,
alg_locatie l,
alg_district di,
prs_perslid p,
mld_opdr o,
mld_stdmelding std,
prs_kostensoort kstd,
prs_kostensoort kvg
WHERE m.mld_alg_locatie_key = l.alg_locatie_key(+)
AND l.alg_district_key = di.alg_district_key(+)
AND md.ins_srtdiscipline_key = sd.ins_srtdiscipline_key(+)
AND m.mld_alg_onroerendgoed_keys = v.alg_onroerendgoed_keys(+)
AND m.prs_perslid_key = p.prs_perslid_key
AND m.mld_stdmelding_key = std.mld_stdmelding_key
AND std.mld_ins_discipline_key = md.ins_discipline_key
AND m.mld_melding_key = o.mld_melding_key
AND std.prs_kostensoort_key = kstd.prs_kostensoort_key(+)
AND md.prs_kostensoort_key = kvg.prs_kostensoort_key(+)
UNION ALL
SELECT cnt_contract_nummer_intern,
c.cnt_contract_looptijd_van,
DECODE (
SIGN (cnt_contract_looptijd_van - SYSDATE),
1,
'Toekomst',
-1,
DECODE (SIGN (cnt_contract_looptijd_tot - SYSDATE),
1, 'Actueel',
-1, 'Verlopen'))
status,
c.cnt_contract_looptijd_tot laatste_actie,
'Contract' vakgroeptype,
d.ins_discipline_omschrijving vakgroep,
k.prs_kostensoort_oms kostensoort_code,
k.prs_kostensoort_opmerking kostensoort_omschrijving,
k.prs_kostensoort_refcode financiele_waarde,
(SELECT prs_kostensoortgrp_oms
FROM prs_kostensoortgrp ksg
WHERE ksg.prs_kostensoortgrp_key = k.prs_kostensoortgrp_key)
kostensoortgroep_omschrijving,
c.cnt_contract_omschrijving melding,
SUBSTR (
REPLACE (cnt_contract_document, CHR (13) || CHR (10), '<ret>'),
1,
2000)
omschrijving,
prs_afdeling_naam organisatie,
p.prs_perslid_naam
|| DECODE (NVL (p.prs_perslid_voorletters, ''),
'', '',
', ' || p.prs_perslid_voorletters)
|| DECODE (NVL (p.prs_perslid_tussenvoegsel, ''),
'', '',
' ' || p.prs_perslid_tussenvoegsel)
|| DECODE (NVL (p.prs_perslid_voornaam, ''),
'', '',
' (' || p.prs_perslid_voornaam || ')')
naam,
kp.prs_kostenplaats_nr kostenplaats,
kp.prs_kostenplaats_omschrijving kostenplaats_omschrijving,
alg_locatie_code || '-' || alg_gebouw_code plaats,
alg_locatie_code locatie,
alg_gebouw_code gebouw,
COALESCE ( (SELECT exact_code
FROM aaxx_v_exact_code_gebouw ogk
WHERE ogk.alg_gebouw_key = g.alg_gebouw_key),
g.alg_gebouw_code)
code_exact,
'-' opdracht_status,
prs_bedrijf_naam uitvoerende,
'-' contactpersoon,
0 uren,
0 uurloon,
0 materiaal,
COALESCE (
DECODE (
cnt_gew.cnt_contract_plaats_gewicht,
0,
1,
(cp.cnt_contract_plaats_gewicht
/ cnt_gew.cnt_contract_plaats_gewicht)
* c.cnt_contract_kosten),
0)
kosten,
COALESCE (
DECODE (
cnt_gew.cnt_contract_plaats_gewicht,
0,
1,
(cp.cnt_contract_plaats_gewicht
/ cnt_gew.cnt_contract_plaats_gewicht)
* (SELECT SUM (fin_factuur_totaal)
FROM aaxx_v_aanwezigfactuur f
WHERE f.cnt_contract_key = c.cnt_contract_key)),
0)
gefactureerd
FROM cnt_contract c,
cnt_discipline d,
cnt_contract_plaats cp,
prs_bedrijf b,
prs_kostensoort k,
prs_kostenplaats kp,
prs_afdeling a,
prs_perslid p,
alg_locatie l,
alg_gebouw g,
prs_contactpersoon cop,
( SELECT cnt_contract_key,
SUM (cnt_contract_plaats_gewicht)
cnt_contract_plaats_gewicht
FROM cnt_contract_plaats
GROUP BY cnt_contract_key) cnt_gew,
(SELECT cp.cnt_contract_plaats_key, alg_locatie_key, alg_gebouw_key
FROM alg_v_allonroerendgoed aog, cnt_contract_plaats cp
WHERE aog.alg_type = cp.cnt_alg_plaats_code
AND aog.alg_onroerendgoed_keys = cp.cnt_alg_plaats_key) cog
WHERE c.cnt_contract_key = cp.cnt_contract_key(+)
AND c.cnt_contract_key = cnt_gew.cnt_contract_key(+)
AND c.cnt_prs_bedrijf_key = b.prs_bedrijf_key
AND c.ins_discipline_key = d.ins_discipline_key
AND d.prs_kostensoort_key = k.prs_kostensoort_key(+)
AND c.prs_kostenplaats_key = kp.prs_kostenplaats_key(+)
AND c.prs_afdeling_key_eig = a.prs_afdeling_key
AND c.prs_perslid_key_beh = p.prs_perslid_key
AND cp.cnt_contract_plaats_key = cog.cnt_contract_plaats_key(+)
AND c.prs_contactpersoon_key = cop.prs_contactpersoon_key(+)
AND cog.alg_locatie_key = l.alg_locatie_key(+)
AND cog.alg_gebouw_key = g.alg_gebouw_key(+)
AND cnt_contract_verwijder IS NULL;
-------------------------------------------------------------------------------
-- EXPORTFUNCTIE - DWH_SEARCH_RESULTS
-------------------------------------------------------------------------------
CREATE OR REPLACE VIEW aaxx_v_dwh_gui_counter
(
fac_gui_counter_key,
fac_gui_counter_group,
fac_gui_counter_info,
fac_gui_counter_refkey,
fac_gui_counter_choice,
fac_gui_counter_result,
fac_gui_counter_date,
prs_perslid_key,
prs_perslid_naam_full
)
AS
SELECT fgc.fac_gui_counter_key,
fgc.fac_gui_counter_group,
fgc.fac_gui_counter_info,
fgc.fac_gui_counter_refkey,
choice.fac_gui_counter_info fac_gui_counter_choice,
result.fac_gui_counter_info fac_gui_counter_result,
fac_gui_counter_date,
fgc.prs_perslid_key,
prs_perslid_naam_full
FROM fac_gui_counter fgc,
prs_v_perslid_fullnames pf,
(SELECT fac_gui_counter_refkey, fac_gui_counter_info
FROM fac_gui_counter fgc
WHERE fac_gui_counter_info IS NOT NULL
AND fac_gui_counter_group = 'searchchoice') choice,
(SELECT fac_gui_counter_refkey, fac_gui_counter_info
FROM fac_gui_counter fgc
WHERE fac_gui_counter_info IS NOT NULL
AND fac_gui_counter_group = 'searchresult') result
WHERE fac_gui_counter_group = 'search'
AND fgc.fac_gui_counter_info IS NOT NULL
AND fgc.prs_perslid_key = pf.prs_perslid_key
AND choice.fac_gui_counter_refkey(+) = fgc.fac_gui_counter_key
AND result.fac_gui_counter_refkey(+) = fgc.fac_gui_counter_key
UNION ALL
SELECT fgc.fac_gui_counter_key,
fgc.fac_gui_counter_group,
fac_usrrap_omschrijving,
fgc.fac_gui_counter_refkey,
NULL,
NULL,
fac_gui_counter_date,
fgc.prs_perslid_key,
prs_perslid_naam_full
FROM fac_gui_counter fgc, prs_v_perslid_fullnames pf, fac_usrrap fr
WHERE fgc.fac_gui_counter_group = 'report'
AND fgc.prs_perslid_key = pf.prs_perslid_key(+)
AND fr.fac_usrrap_key(+) = fgc.fac_gui_counter_refkey
UNION ALL
SELECT fgc.fac_gui_counter_key,
fgc.fac_gui_counter_group,
COALESCE (fac_menu_altlabel, lcl.l (fac_menuitems_label)),
fgc.fac_gui_counter_refkey,
NULL,
NULL,
fac_gui_counter_date,
fgc.prs_perslid_key,
prs_perslid_naam_full
FROM fac_gui_counter fgc,
prs_v_perslid_fullnames pf,
fac_menu m,
fac_menuitems mi
WHERE fgc.fac_gui_counter_group = 'menu'
AND fgc.prs_perslid_key = pf.prs_perslid_key(+)
AND m.fac_menu_key = fac_gui_counter_refkey
AND mi.fac_menuitems_key(+) = m.fac_menuitems_key;
-------------------------------------------------------------------------------
-- Rapportage tbv berekening aantal key users
-------------------------------------------------------------------------------
CREATE OR REPLACE VIEW aaxx_v_lcrap_key_stats
(
PRS_PERSLID_KEY,
PRS_PERSLID_OSLOGIN,
PRS_PERSLID_OSLOGIN2,
PRS_PERSLID_NR,
PRS_PERSLID_NAAM_FULL,
PRS_AFDELING_NAAM,
LEV_WRITE_CNT,
MAX_ALG_WRITE,
MAX_PRS_WRITE,
LEV_READ_CNT,
MAX_ALG_READ,
MAX_PRS_READ,
AUT_GROEP_CNT
)
AS
SELECT x.prs_perslid_key,
x.prs_perslid_oslogin,
x.prs_perslid_oslogin2,
x.prs_perslid_nr,
x.prs_perslid_naam_full,
prs_afdeling_naam,
COALESCE (y.lev_write_cnt, 0) lev_write_cnt,
y.max_alg_write,
y.max_prs_write,
COALESCE (z.lev_read_cnt, 0) lev_read_cnt,
z.max_alg_read,
z.max_prs_read,
x.aut_groep_cnt
FROM ( SELECT fn.prs_perslid_key,
p.prs_perslid_oslogin,
p.prs_perslid_oslogin2,
kl.prs_kenmerklink_waarde prs_perslid_nr,
prs_afdeling_naam,
fn.prs_perslid_naam_full,
COUNT (DISTINCT gg.fac_groep_key) aut_groep_cnt
FROM prs_v_aanwezigperslid p,
prs_afdeling a,
prs_v_perslid_fullnames fn,
fac_gebruikersgroep gg,
(SELECT prs_kenmerklink_waarde, prs_link_key
FROM prs_kenmerklink
WHERE prs_kenmerk_key = 3) kl -- personeelsnummer AAFM
WHERE a.prs_afdeling_key = p.prs_afdeling_key
AND p.prs_perslid_oslogin IS NOT NULL
AND p.prs_perslid_key = fn.prs_perslid_key
AND p.prs_perslid_key = gg.prs_perslid_key
AND p.prs_perslid_key = kl.prs_link_key(+)
GROUP BY fn.prs_perslid_key,
fn.prs_perslid_naam_full,
prs_perslid_oslogin,
prs_perslid_oslogin2,
kl.prs_kenmerklink_waarde,
prs_afdeling_naam) x
LEFT JOIN ( SELECT gg.prs_perslid_key,
COUNT (DISTINCT gr.fac_groeprechten_key)
lev_write_cnt,
MIN (gr.fac_gebruiker_alg_level_write)
max_alg_write,
MIN (gr.fac_gebruiker_prs_level_write)
max_prs_write
FROM fac_gebruikersgroep gg,
fac_groeprechten gr,
fac_functie f
WHERE gg.fac_groep_key = gr.fac_groep_key
AND gr.fac_functie_key = f.fac_functie_key
AND fac_functie_groep IN (1, 2)
AND (gr.fac_gebruiker_alg_level_write <> 9
OR gr.fac_gebruiker_prs_level_write <> 9)
GROUP BY gg.prs_perslid_key) y
ON x.prs_perslid_key = y.prs_perslid_key
LEFT JOIN ( SELECT gg.prs_perslid_key,
COUNT (DISTINCT gr.fac_groeprechten_key)
lev_read_cnt,
MIN (gr.fac_gebruiker_alg_level_read)
max_alg_read,
MIN (gr.fac_gebruiker_prs_level_read)
max_prs_read
FROM fac_gebruikersgroep gg,
fac_groeprechten gr,
fac_functie f
WHERE gg.fac_groep_key = gr.fac_groep_key
AND gr.fac_functie_key = f.fac_functie_key
AND fac_functie_groep IN (1, 2)
AND (gr.fac_gebruiker_alg_level_read <> 9
OR gr.fac_gebruiker_prs_level_read <> 9)
GROUP BY gg.prs_perslid_key) z
ON x.prs_perslid_key = z.prs_perslid_key
WHERE COALESCE (y.lev_write_cnt, 0) > 0
OR COALESCE (z.lev_read_cnt, 0) > 0;
--=============================================================================
-- IMPORTFUNCTIES
-------------------------------------------------------------------------------
-------------------------------------------------------------------------------
-- IMPORTFUNCTIE - Import srtruimte
-------------------------------------------------------------------------------
CREATE OR REPLACE VIEW aaxx_v_rap_srtruimte (
key,
omschrijving,
code,
werkplek,
verhuurbaar,
huur,
sk_onderhoud,
sk_utility,
sk_overig,
prijs5
)
AS
SELECT alg_srtruimte_key,
alg_srtruimte_omschrijving,
alg_srtruimte_code,
prs_bevat_werkplek,
prs_verhuurbaar,
alg_srtruimte_prijs,
alg_srtruimte_prijs2,
alg_srtruimte_prijs3,
alg_srtruimte_prijs4,
alg_srtruimte_prijs5
FROM alg_v_aanwezigsrtruimte;
CREATE OR REPLACE PROCEDURE aaxx_import_srtruimte (
p_import_key IN NUMBER
)
AS
CURSOR c_cursor
IS
SELECT *
FROM fac_imp_file
WHERE fac_import_key = p_import_key
ORDER BY fac_imp_file_index;
v_newline VARCHAR2 (1000);
v_aanduiding VARCHAR2 (1000); -- Import line
v_field VARCHAR2 (100); -- Import field
v_fielddelimitor VARCHAR2 (1); -- Field seperator
v_errormsg VARCHAR (200);
v_errorhint VARCHAR (200);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_skipfield VARCHAR2 (100);
-- De importvelden
v_key VARCHAR2 (100);
v_omschrijving VARCHAR2 (100);
v_code VARCHAR2 (100);
v_werkplek VARCHAR2 (100);
v_verhuurbaar VARCHAR2 (100);
v_prijs1 VARCHAR2 (100);
v_prijs2 VARCHAR2 (100);
v_prijs3 VARCHAR2 (100);
v_prijs4 VARCHAR2 (100);
v_prijs5 VARCHAR2 (100);
header_found BOOLEAN;
BEGIN
-- Init
header_found := FALSE;
v_fielddelimitor := ';';
-- Clear my previous imported rows
DELETE FROM aaxx_imp_srtruimte;
FOR rec1 IN c_cursor
LOOP
BEGIN
v_newline := rec1.fac_imp_file_line;
v_aanduiding := v_newline;
IF SUBSTR (v_newline, 1, 3) = '?'
THEN
-- EF BB BF aangetroffen
fac.imp_writelog (p_import_key,
'W',
'Byte Order Mark aangetroffen',
'Bestand heeft onbehandeld UTF-8 formaat.'
);
v_newline := SUBSTR (v_newline, 4);
END IF;
fac.imp_getfield (v_newline, v_fielddelimitor, v_key);
fac.imp_getfield (v_newline, v_fielddelimitor, v_omschrijving);
fac.imp_getfield (v_newline, v_fielddelimitor, v_code);
fac.imp_getfield (v_newline, v_fielddelimitor, v_werkplek);
fac.imp_getfield (v_newline, v_fielddelimitor, v_verhuurbaar);
fac.imp_getfield (v_newline, v_fielddelimitor, v_prijs1);
fac.imp_getfield (v_newline, v_fielddelimitor, v_prijs2);
fac.imp_getfield (v_newline, v_fielddelimitor, v_prijs3);
fac.imp_getfield (v_newline, v_fielddelimitor, v_prijs4);
fac.imp_getfield (v_newline, v_fielddelimitor, v_prijs5);
-- Skip until a valid header is found
IF UPPER(v_key) = 'KEY'
AND UPPER(v_code) = 'CODE'
AND UPPER(v_prijs1) = 'HUUR'
AND UPPER(v_prijs5) = 'PRIJS5'
THEN
-- Sla de kopregel over.
header_found := TRUE;
ELSIF (header_found AND v_omschrijving IS NOT NULL)
THEN
INSERT INTO aaxx_imp_srtruimte
(alg_srtruimte_key,
alg_srtruimte_omschrijving,
alg_srtruimte_code,
prs_bevat_werkplek,
prs_verhuurbaar,
alg_srtruimte_prijs,
alg_srtruimte_prijs2,
alg_srtruimte_prijs3,
alg_srtruimte_prijs4,
alg_srtruimte_prijs5 )
VALUES (fac.safe_to_number (v_key),
SUBSTR (v_omschrijving, 1, 30),
SUBSTR (v_code, 1, 10),
fac.safe_to_number (SUBSTR(v_werkplek, 1)),
fac.safe_to_number (SUBSTR(v_verhuurbaar, 1)),
fac.safe_to_number (REPLACE(v_prijs1,',','.')),
fac.safe_to_number (REPLACE(v_prijs2,',','.')),
fac.safe_to_number (REPLACE(v_prijs3,',','.')),
fac.safe_to_number (REPLACE(v_prijs4,',','.')),
fac.safe_to_number (REPLACE(v_prijs5,',','.'))
);
END IF;
COMMIT;
END;
END LOOP;
IF NOT header_found
THEN
fac.imp_writelog (p_import_key,
'E',
'Geen geldige header aangetroffen',
'Bestand is geen geldig ruimtesoort importbestand.'
);
END IF;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg := 'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key, 'E', SUBSTR (v_errormsg, 1, 1000), v_aanduiding);
-- maak de importtabel leeg om te voorkomen dat er halve bestanden ingelezen worden.
DELETE FROM aaxx_imp_srtruimte;
END;
/
CREATE OR REPLACE PROCEDURE aaxx_update_srtruimte (p_import_key IN NUMBER)
AS
CURSOR c
IS
SELECT *
FROM aaxx_imp_srtruimte
WHERE alg_srtruimte_omschrijving is not NULL;
v_oldcount NUMBER;
v_newcount NUMBER;
v_prs_bedrijf_key NUMBER;
v_prs_dienst_key NUMBER;
v_alg_locatie_key NUMBER;
v_alg_gebouw_key NUMBER;
v_errormsg VARCHAR (1000);
v_error_hint VARCHAR (1000);
oracle_err_mes VARCHAR2 (150);
oracle_err_num VARCHAR2 (150);
currentversion fac_module.fac_module_version%TYPE;
BEGIN
SELECT MAX (fac_module_version)
INTO currentversion
FROM fac_module;
fac.imp_writelog (p_import_key,
'I',
'AAFM ruimtesoort import version ' || currentversion,
'$Revision$'
);
SELECT COUNT (*)
INTO v_newcount
FROM alg_v_aanwezigsrtruimte;
IF v_newcount = 0 THEN
fac.imp_writelog (p_import_key,
'E',
'AAFM ruimtesoort import bevat geen records',
'$Revision$'
);
return;
END IF;
-- How many active records are now present?
SELECT COUNT (*)
INTO v_oldcount
FROM alg_v_aanwezigsrtruimte;
FOR rec IN c
LOOP
BEGIN
IF rec.alg_srtruimte_key IS NULL THEN
v_errormsg := 'Toevoegen ruimtesoort [' || rec.alg_srtruimte_code || '] ';
INSERT INTO alg_srtruimte (
alg_srtruimte_omschrijving,
alg_srtruimte_code,
prs_bevat_werkplek,
prs_verhuurbaar,
alg_srtruimte_prijs,
alg_srtruimte_prijs2,
alg_srtruimte_prijs3,
alg_srtruimte_prijs4,
alg_srtruimte_prijs5)
VALUES (
rec.alg_srtruimte_omschrijving,
rec.alg_srtruimte_code,
rec.prs_bevat_werkplek,
rec.prs_verhuurbaar,
rec.alg_srtruimte_prijs,
rec.alg_srtruimte_prijs2,
rec.alg_srtruimte_prijs3,
rec.alg_srtruimte_prijs4,
rec.alg_srtruimte_prijs5);
ELSE
v_errormsg := 'Aanpassen ruimtesoort [' || rec.alg_srtruimte_code || '] ';
UPDATE alg_srtruimte SET
alg_srtruimte_omschrijving = rec.alg_srtruimte_omschrijving,
alg_srtruimte_code = rec.alg_srtruimte_code,
prs_bevat_werkplek = rec.prs_bevat_werkplek,
prs_verhuurbaar = rec.prs_verhuurbaar,
alg_srtruimte_prijs = rec.alg_srtruimte_prijs,
alg_srtruimte_prijs2 = rec.alg_srtruimte_prijs2,
alg_srtruimte_prijs3 = rec.alg_srtruimte_prijs3,
alg_srtruimte_prijs4 = rec.alg_srtruimte_prijs4,
alg_srtruimte_prijs5 = rec.alg_srtruimte_prijs5
WHERE alg_srtruimte_key = rec.alg_srtruimte_key;
END IF;
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
v_error_hint := v_errormsg;
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg :=
v_errormsg
|| 'ORACLE (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.imp_writelog (p_import_key,
'E',
v_errormsg,
v_error_hint
);
COMMIT; -- tbv logging
END;
END LOOP;
SELECT COUNT (*)
INTO v_newcount
FROM alg_v_aanwezigsrtruimte;
fac.imp_writelog (p_import_key,
'S',
'Aantal ruimte soorten vooraf: ' || TO_CHAR (v_oldcount) || ' nu: ' || TO_CHAR (v_newcount),
''
);
END;
/
--------------------------------
-- import facturen
--------------------------------
-- rapportage factuurvoorstel inkoopfacturen. Het resultaat kan met onderstaande importroutines ingelezen worden.
CREATE OR REPLACE VIEW aaxx_v_rap_inkoopfactuur
(
fclt_x_bedrijfnaam,
fclt_x_afrond_datum,
leveranciernr,
factuurnr,
factuurdatum,
ordernr,
locatie,
afleverdatum,
omschrijving,
aantal,
kostprijs,
btwbedrag,
btw,
docid,
debiteurnummer,
opmerking,
lastinvoice,
btwverlegd,
gebouw,
orderomschrijving,
referentie,
afmelddatum,
uren,
materiaal,
opdracht_type
)
AS
SELECT prs_bedrijf_naam bedrijfsnaam,
tr2.fac_tracking_datum datum,
prs_leverancier_nr leveranciernr,
NULL factuurnr,
NULL factuurdatum,
(SELECT sd.ins_srtdiscipline_prefix
|| m.mld_melding_key
|| '/'
|| o.mld_opdr_bedrijfopdr_volgnr
FROM mld_melding m,
mld_stdmelding std,
ins_tab_discipline d,
ins_srtdiscipline sd
WHERE o.mld_melding_key = m.mld_melding_key
AND m.mld_stdmelding_key = std.mld_stdmelding_key
AND std.mld_ins_discipline_key = d.ins_discipline_key
AND d.ins_srtdiscipline_key = sd.ins_srtdiscipline_key)
ordernr,
(SELECT alg_locatie_code || ' - ' || alg_locatie_omschrijving
FROM alg_locatie l
WHERE l.alg_locatie_key = m.mld_alg_locatie_key)
locatie,
TO_CHAR (mld_opdr_datumbegin, 'ddmmyyyy') afleverdatum,
NULL omschrijving,
1 aantal,
o.mld_opdr_kosten kostprijs,
NULL btwbedrag,
21 btw,
NULL docid,
NULL debiteurnummer,
NULL opmerking,
'Ja' lastinvoice,
'Nee' btwverlegd,
(SELECT og.alg_gebouw_code || ' - ' || og.alg_gebouw_naam
FROM alg_v_allonrgoed_gegevens og
WHERE m.mld_alg_onroerendgoed_keys =
og.alg_onroerendgoed_keys)
gebouw,
REPLACE (REPLACE (o.mld_opdr_omschrijving, CHR (13), ''),
CHR (10),
'<ret>')
orderomschrijving,
(SELECT mld_kenmerkopdr_waarde
FROM mld_srtkenmerk sk, mld_kenmerk k, mld_kenmerkopdr ko
WHERE sk.mld_srtkenmerk_key = k.mld_srtkenmerk_key
AND mld_kenmerk_niveau = 'O'
AND ko.mld_kenmerk_key = k.mld_kenmerk_key
AND ko.mld_kenmerkopdr_verwijder IS NULL
AND ko.mld_opdr_key = o.mld_opdr_key
AND mld_srtkenmerk_omschrijving LIKE
'Ref. Nr. Leverancier%')
referentie,
tr.fac_tracking_datum afmelddatum,
o.mld_opdr_uren,
o.mld_opdr_materiaal,
mt.mld_typeopdr_omschrijving
FROM prs_bedrijf b,
mld_opdr o,
mld_typeopdr mt,
mld_melding m,
mld_typeopdr ot,
fac_tracking tr,
fac_tracking tr2,
fac_srtnotificatie str,
fac_srtnotificatie str2
WHERE o.mld_uitvoerende_keys = b.prs_bedrijf_key
AND o.mld_typeopdr_key = mt.mld_typeopdr_key
AND tr.fac_srtnotificatie_key = str.fac_srtnotificatie_key
AND tr2.fac_srtnotificatie_key = str2.fac_srtnotificatie_key
AND str.fac_srtnotificatie_code = 'ORDAFM'
AND str2.fac_srtnotificatie_code = 'ORDAFR'
AND o.mld_opdr_key = tr.fac_tracking_refkey
AND o.mld_opdr_key = tr2.fac_tracking_refkey
AND o.mld_melding_key = m.mld_melding_key
AND o.mld_statusopdr_key = 9 -- Afgerond
AND o.mld_opdr_kosten <> 0
AND o.mld_typeopdr_key = ot.mld_typeopdr_key
AND (ot.mld_typeopdr_omschrijving = 'Workorder'
OR ot.mld_typeopdr_omschrijving = 'Projectorder'
OR ot.mld_typeopdr_omschrijving = 'Vast variabel'
OR ot.mld_typeopdr_omschrijving = 'Opdracht'
)
AND NOT EXISTS
(SELECT mld_kenmerkopdr_key
FROM mld_kenmerkopdr ko, mld_kenmerk k
WHERE mld_opdr_key = o.mld_opdr_key
AND ko.mld_kenmerk_key = k.mld_kenmerk_key
AND k.mld_srtkenmerk_key =
DECODE (aaxx_get_user,
'IT', 381,
'SABIC', 34,
2))
AND NOT EXISTS
(SELECT mld_kenmerkopdr_key
FROM mld_kenmerkopdr ko,
mld_kenmerk k,
mld_srtkenmerk sk
WHERE mld_opdr_key = o.mld_opdr_key
AND ko.mld_kenmerk_key = k.mld_kenmerk_key
AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
AND UPPER (sk.mld_srtkenmerk_omschrijving) =
'CLAUSULE'
AND UPPER(aaxx_get_kenmerkwaarde (
sk.mld_srtkenmerk_kenmerktype,
sk.fac_kenmerkdomein_key,
ko.mld_kenmerkopdr_waarde
)) = 'BINNEN CLAUSULE');
-- AAVL#33405 rapportage factuurvoorstel inkoopfacturen tbv bestellingen.
-- Het resultaat kan met onderstaande importroutines ingelezen worden.
CREATE OR REPLACE VIEW aaxx_v_rap_bes_inkfactuur
(
FCLT_X_BEDRIJFNAAM,
FCLT_X_LEVER_DATUM,
LEVERANCIERNR,
FACTUURNR,
FACTUURDATUM,
ORDERNR,
LOCATIE,
AFLEVERDATUM,
OMSCHRIJVING,
AANTAL,
KOSTPRIJS,
BTWBEDRAG,
BTW,
DOCID,
DEBITEURNUMMER,
OPMERKING,
LASTINVOICE,
BTWVERLEGD,
GEBOUW,
ORDEROMSCHRIJVING,
REFERENTIE,
AFMELDDATUM,
UREN,
MATERIAAL
)
AS
SELECT prs_bedrijf_naam,
ft.fac_tracking_datum datum,
prs_leverancier_nr leveranciernr,
NULL factuurnr,
NULL factuurdatum,
bes_bestelopdr_id,
(SELECT alg_locatie_code || ' - ' || alg_locatie_omschrijving
FROM alg_locatie l
WHERE l.alg_locatie_key = ma.alg_locatie_key)
locatie,
TO_CHAR (ft.fac_tracking_datum, 'ddmmyyyy') afleverdatum,
NULL omschrijving,
SUM (bes_bestelopdr_item_aantalontv) aantal,
SUM (bes_bestelopdr_item_prijs * bes_bestelopdr_item_aantalontv) kostprijs,
NULL btwbedrag,
bes_srtdeel_btw BTW,
NULL docid,
NULL debiteurnummer,
NULL opmerking,
'Ja' lastinvoice,
'Nee' btwverlegd,
NULL gebouw,
NULL orderomschrijving,
NULL referentie,
ft.fac_tracking_datum afmelddatum,
NULL uren,
NULL materiaal
FROM bes_bestelopdr bo,
prs_bedrijf b,
mld_adres ma,
bes_bestelopdr_item bboi,
bes_bestelling_item bbi,
bes_srtdeel bsd,
fac_tracking ft,
fac_srtnotificatie srt
WHERE bes_bestelopdr_status = 6
AND b.prs_bedrijf_key = bo.prs_bedrijf_key
AND bo.mld_adres_key_lev = ma.mld_adres_key
AND bo.bes_bestelopdr_key = bboi.bes_bestelopdr_key
AND bbi.bes_bestelopdr_item_key = bboi.bes_bestelopdr_item_key
AND bbi.bes_srtdeel_key = bsd.bes_srtdeel_key
AND ft.fac_tracking_refkey = bo.bes_bestelopdr_key
AND srt.fac_srtnotificatie_key = ft.fac_srtnotificatie_key
AND srt.fac_srtnotificatie_code = 'BES2AF'
GROUP BY prs_bedrijf_naam,
TO_CHAR (ft.fac_tracking_datum, 'yyyy-mm'),
prs_leverancier_nr,
bes_bestelopdr_id,
ma.alg_locatie_key,
ft.fac_tracking_datum,
bes_srtdeel_btw,
ft.fac_tracking_datum;
CREATE OR REPLACE PROCEDURE aaxx_import_factuur (p_import_key IN NUMBER)
AS
-- Standaard volgorde van de kolommen in het CSV-formaat, waarbij 3 velden VERPLICHT (minimaal door Facilitor vereist)
-- Variabelelijst
-- v_leveranciernr: 1
-- v_factuurnr: 2 (VERPLICHT, anders zet Facilitor '-' in factuurnr, en is status van factuur "Incompleet")
-- v_factuurdatum: 3
-- v_ordernr: 4 (VERPLICHT, anders is status van factuur "Incompleet")
-- v_locatie: 5
-- v_afleverdatum: 6
-- v_omschrijving: 7
-- v_aantal: 8
-- v_kostprijs: 9 (VERPLICHT, anders is status van factuur "Incompleet")
-- v_btw_bedrag: 10 (VERPLICHT, of anders veld 11, anders is status van factuur "Incompleet")
-- v_btw: 11 (VERPLICHT, of anders veld 10, anders is status van factuur "Incompleet")
-- v_docid: 12
-- v_debiteur_nr: 13
-- v_opmerking: 14
-- v_btw_verlegd: 15 (VERPLICHT, Ja/Nee/<leeg> waarbij leeg gelijk is aan Nee. Andere waarden leidt tot "Incompleet")
-- v_kenmerk1: 16
-- v_kenmerk2: 17
-- v_kenmerk3: 18
-- v_kenmerk4: 19
-- v_kenmerk5: 20
-- v_boekmaand: 21 (GELDIG, Indien gevuld dan moet er een geldige jaar-maand combinatie staan. Andere waarden leidt tot "Incompleet")
-- Eerst geprobeerd via nette array, geeft problemen met type buiten package, en in package lukt niet omdat
-- de import in Facilitor package-loos is (en niet 1-2-3 zo kan worden gemaakt vanwege alle bestaande klanten)
-- v_seq_of_columns ListOfInteger := (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21);
-- Dus dan maar via een string, en ook op slimme wijze, nl alsof het een ingelezen factuur-record is met p_fielddelimitor
v_seq_of_columns VARCHAR(100);
-- Afwijkingen op deze volgorde zijn in eigen cust_import_factuur te regelen.
-- Als leveranciersnr en factuurnr b.v. zijn omgedraaid in het CSV-formaat,
-- dan factuurimport ListOfInteger := (2,1,3,4,5,6,7,8,9,10,11,12);
-- v_seq_of_columns := '2;1;3;4;5;6;7;8;9;10;11;12';
-- Als leveranciersnr NIET in CSV staat, dan factuurimport ListOfInteger := (0,2,3,4,5,6,7,8,9,10,11,12);
-- v_seq_of_columns := '0;2;3;4;5;6;7;8;9;10;11;12';
-- M.a.w. waar een 0 staat, wordt de variabele niet ingelezen en blift LEEG.
BEGIN
v_seq_of_columns := '1;2;3;4;5;6;7;8;9;10;11;12;13;14;16;15;0;0;0;0;17';
fac_import_factuur_body(p_import_key, v_seq_of_columns);
-- voeg een voorloopnul toe aan de boekmaanden op positie 6
-- 2017-9 wordt dan 2017-09
UPDATE fac_imp_factuur
SET boekmaand = SUBSTR (boekmaand, 1, 5) || 0 || SUBSTR (boekmaand, 6, 1)
WHERE SUBSTR (boekmaand, 1, 4) IS NOT NULL
AND SUBSTR (boekmaand, 5, 1) = '-'
AND SUBSTR (boekmaand, 6, 1) IS NOT NULL
AND SUBSTR (boekmaand, 7, 1) IS NULL
AND fac_import_key = p_import_key;
COMMIT;
END;
/
CREATE OR REPLACE PROCEDURE aaxx_update_factuur (p_import_key IN NUMBER)
AS
v_invoerder NUMBER(10);
BEGIN
fac_update_factuur (p_import_key);
-- AAFM specifieke update voor kenmerken
-- ja = 1
-- nee = 2
-- kenmerk_key = 2 voor kenmerk laatste factuur.
INSERT INTO fin_kenmerkfactuur (fin_factuur_key, fin_kenmerk_key, fin_kenmerkfactuur_waarde)
SELECT DISTINCT fin_factuur_key, fin_kenmerk_key, fac_usrdata_key
FROM fac_imp_factuur i,
fin_kenmerk k,
fac_kenmerkdomein kd,
fac_usrdata ud
WHERE UPPER (COALESCE (i.kenmerk1, 'Nee')) = UPPER (ud.fac_usrdata_omschr)
AND ud.fac_usrtab_key = kd.fac_usrtab_key
AND k.fac_kenmerkdomein_key = kd.fac_kenmerkdomein_key
AND k.fin_kenmerk_key = 2
AND i.fin_factuur_key IS NOT NULL
AND NOT EXISTS
(SELECT fin_kenmerkfactuur_key
FROM fin_kenmerkfactuur kf
WHERE kf.fin_kenmerk_key = 2
AND kf.fin_factuur_key = i.fin_factuur_key);
SELECT MAX(prs_perslid_key)
INTO v_invoerder
FROM fac_import
WHERE fac_import_key = p_import_key;
-- zet de FINNEW notificatie op de gebruiker die de import gestart heeft om te kunnen traceren hoe de facturen in het
-- systeem gekomen zijn.
UPDATE fac_tracking t
SET prs_perslid_key = v_invoerder
, fac_tracking_oms = fac_tracking_oms || ' (via Excel)'
WHERE prs_perslid_key IS NULL
AND EXISTS
(SELECT fac_tracking_key
FROM fac_imp_factuur i, fac_srtnotificatie sn
WHERE i.fin_factuur_key = t.fac_tracking_refkey
AND t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
AND sn.fac_srtnotificatie_code = 'FINNEW');
END;
/
CREATE OR REPLACE PROCEDURE aaxx_import_fin_factuur_marx (p_import_key IN NUMBER)
AS
v_seq_of_columns VARCHAR(255);
BEGIN
v_seq_of_columns := '1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16;17;18;19;20;21;22;23;24;25;26;27;28';
fac_import_factuur_body(p_import_key, v_seq_of_columns);
END;
/
CREATE OR REPLACE PROCEDURE aaxx_update_fin_factuur_marx (p_import_key IN NUMBER)
AS
-- Voor Correctie ORDERNR om standaard update-procedure goed te laten lopen.
--- 0. Bug - Als uit Mareo/Scanning geen order-referentie meekomt en er zijn meerdere factuurregels, dan wordt er vanuit fac_update_factuur niet 1 maar meerdere factuurnr's aangemaakt. Oplossing: Ordernr vullen.
--- 1. Ordernr 101132/1 wordt niet als Opdracht herkend. In FUNCTION try_getopdracht_id gaat Facilitor alleen maar opdrachten matchen als er 1,2 of 3 letters voorstaan... Daarom gaan we er in import-tabel een 'O' voorzetten (dus: 'O101132/1')
--- Ps. BCT-regel: Indien geen prefix, en kolom ORDERNR is 6- of 7 cijferig en met een '/' en dan numeriek 1 t/m 3 posities. Voorbeeld: Bijv: 104370/2 vanuit BCT moet worden O104370/2
--- 2. Ordernr beginnende met "CO" wordt niet als Contract herkend. Daarom gaan we er in import-tabel een "C" van maken.
--- 3. Als ordernr is C (= contract) echter zonder versienummer - Dan wordt in standaard update altijd automatisch het hoogste versienummer gepakt.
--- Ivm overlap 'jaarovergangen' is dat niet altijd juist en moet de vanuit Mareon geimporteerde factuur nog status 'te controleren' meekrijgen voordat deze automatisch de financiele-interface in gaat.
--- 4. Orderreferentie-opschoning: Vanuit scanning komt de orderreferentie soms mee inclusief 'extra tekst'. Bijv CO284IN<49>T of CO534.7HEERLEN. Voor goede verwerking gaan we de tekst achteraan de orderreferentie weghalen.
--- 5. Ordernr beginnende met "BE" of "B" wordt niet als Bestelling herkend. Daarom aan we deze prefix in de import-tabel weghalen.
--- 6. Voor Intercompany-relaties hebben we in Facilitor naast de 'gewone 0%' ook een eigen BTW-code 0% intercompany (nodig in Exact). Twee btw-code kan standaard factuurimport niet aan daarom moeten we de tussentabel fac_imp_factuur eerst aanpassen (en later in procedure de btw-bedragen weer corrigeren).
--- Betreft altijd PR-opdrachten
CURSOR ccor_0
IS
SELECT *
FROM fac_imp_factuur
WHERE fac_import_key = p_import_key AND ordernr IS NULL ;
CURSOR ccor_1
IS
SELECT factuurnr, ordernr, fac.safe_to_number(SUBSTR(ordernr,1,(INSTR(ordernr,'/')-1))) as melding_key, fac.safe_to_number(SUBSTR(ordernr,(INSTR(ordernr,'/')+1),LENGTH(ordernr))) opdracht_volgnr, fac.safe_to_number(TO_CHAR(fac.safe_to_date (factuurdatum, 'yyyy-mm-dd'), 'yyyy')) factuurdatum_jaar
FROM fac_imp_factuur
WHERE fac_import_key = p_import_key
AND INSTR(ordernr,'/') >0
AND LENGTH(SUBSTR(ordernr,1,(INSTR(ordernr,'/')-1))) IN (6,7) ;
CURSOR ccor_2
IS
SELECT factuurnr, ordernr
FROM fac_imp_factuur
WHERE fac_import_key = p_import_key
AND LENGTH(ordernr) >= 2
AND SUBSTR(UPPER(ordernr),1,2) = 'CO' ;
CURSOR ccor_3
IS
SELECT factuurnr, ordernr, SUBSTR(ordernr,2) cnt_contract_nummer_intern
FROM fac_imp_factuur
WHERE fac_import_key = p_import_key
AND SUBSTR(UPPER(ordernr),1,1) = 'C'
AND INSTR(ordernr,'.')=0;
CURSOR ccor_4
IS
SELECT factuurnr, ordernr
FROM fac_imp_factuur
WHERE fac_import_key = p_import_key
AND REGEXP_INSTR(REVERSE(ordernr), '\d') > 1 ;
CURSOR ccor_5
IS
SELECT factuurnr, ordernr
FROM fac_imp_factuur
WHERE fac_import_key = p_import_key
AND ( SUBSTR (ordernr, 1, 1) = 'B'
AND fac.safe_to_number (SUBSTR (ordernr, 2, 1)) IS NOT NULL)
OR (SUBSTR (ordernr, 1, 2) = 'BE') ;
CURSOR ccor_6
IS
SELECT factuurnr, ordernr, fac.safe_to_number(SUBSTR(ordernr,3,(INSTR(ordernr,'/')-3))) as melding_key, fac.safe_to_number(SUBSTR(ordernr,(INSTR(ordernr,'/')+1),LENGTH(ordernr))) opdracht_volgnr
FROM fac_imp_factuur i, (SELECT fac_import_key, count(*) aantal FROM fac_imp_factuur WHERE fac_import_key = p_import_key GROUP BY fac_import_key) v
WHERE i.fac_import_key = p_import_key
AND i.fac_import_key = v.fac_import_key AND v.aantal = 1 -- Alleen intercompany-facturen er doorheen krijgen als er maar 1 soort btw meekomt vanaf Mareon (namelijk btw 0) die niet verlegd is
AND btw = 0 AND btw_verlegd IS NULL
AND LENGTH(ordernr) >= 2
AND SUBSTR(UPPER(ordernr),1,2) = 'PR' ;
CURSOR cfactuur
IS
SELECT i.fin_factuur_key, i.kenmerk1, i.kenmerk2, i.factuurnr, i.fac_imp_file_index, f.fin_factuur_totaal, f.fin_factuur_totaal_btw, f.mld_opdr_key, f.cnt_contract_key, f.bes_bestelopdr_key
FROM fac_imp_factuur i, fin_factuur f
WHERE i.fin_factuur_key IS NOT NULL
AND i.fac_import_key = p_import_key
AND f.fin_factuur_key = i.fin_factuur_key
AND kenmerk1 IS NOT NULL -- Incl bijlage
;
v_aanduiding VARCHAR2 (1000);
v_errorhint VARCHAR2 (1000);
v_errormsg VARCHAR2 (1000);
-- oracle_err_num NUMBER;
-- oracle_err_mes VARCHAR2 (200);
c_kenmerk_key_bijlage NUMBER(10);
c_kenmerk_key_soort VARCHAR(1) := 'F'; -- fin_kenmerk_kenmerktype = M(foldermap) of F(enkelvoudig bestand)
c_huidig_jaar NUMBER(4) := fac.safe_to_number((TO_CHAR (SYSDATE, 'yyyy')));
v_disk_directory VARCHAR2 (200);
v_bedrag_totaal NUMBER(10);
v_bedrag_gefactureerd NUMBER(10);
v_count_gefactureerd NUMBER(10);
v_bedrag_termijn NUMBER(10);
v_ordersoort VARCHAR2 (200);
v_contractsoort VARCHAR2 (200);
v_bestelsoort VARCHAR2 (200);
v_klantnummer_key NUMBER(10);
v_klantnummer VARCHAR2 (200);
v_contract_versies NUMBER(10);
c_kenmerk_key_controle NUMBER(10);
v_prs_bedrijf_key NUMBER(10);
v_opdracht_key NUMBER(10);
v_controle NUMBER(1) := 0 ; -- 1 = controlevinkje op inkoopfactuur zetten
v_aanduiding_controle VARCHAR2 (1000); -- Voor logging op bijbehorende controle zodat men weet wat men moet controleren
v_fac_usrdata_key_ja NUMBER(10);
v_fac_usrdata_key_nee NUMBER(10);
v_mld_statusopdr_key NUMBER(10);
v_intercompany NUMBER(1);
v_intercompany_btw_key NUMBER(10);
v_count_gefactureerd_nr NUMBER(10);
v_opdracht_0_reden VARCHAR2 (1000);
-- Verdeelperiode voor de contracten gaan bepalen
v_cnt_jaar_start NUMBER(10);
v_cnt_jaar_eind NUMBER(10);
v_gebroken_boekjaar NUMBER(1) := 0 ;
v_cnt_looptijd_mnd NUMBER(10);
v_cnt_deel_betaald_1 NUMBER(10); -- Deel van contract wat reeds betaald is
v_cnt_deel_betaald_2 NUMBER(10); -- Deel van contract wat betaald is als de mareon-factuur ook verwerkt is
v_cnt_deel_betaald_2_tekst VARCHAR2 (200); -- Tekst voor in tijdelijke kenmerveld om te kijken of bepaling boekmaand correct is
v_cnt_deel_betaald NUMBER(10); -- Deel van contract betaald met deze factuur
v_verdeelperiode_1 VARCHAR(2) := '01'; -- Hoogste boekmaand waarop is geboekt
v_verdeelperiode_factuur VARCHAR(2); -- Boekmaand waarop de mareon-factuur geboekt moet worden
v_count_verdeelperiode_1 NUMBER(10);
v_fin_factuur_boekmaand VARCHAR(7); -- De nieuwe boekmaand op de geimporteerde Mareon-factuur
v_fin_factuur_boekmaand_tekst VARCHAR2 (200); -- Tekst voor in tijdelijke kenmerkveld om te kijken of bepaling boekmaand correct is
c_kenmerk_key_boekmaand NUMBER(10);
v_cnt_termijn_type VARCHAR(1);
v_cnt_termijn_aantal NUMBER(3);
v_cnt_soort VARCHAR2 (200);
BEGIN
-- Voor draaien standaard factuur-update gaan we eerst op fac_imp_factuur een aantal correcties doorvoeren
FOR rec IN ccor_0
LOOP
BEGIN
UPDATE fac_imp_factuur
SET ordernr = '00000' -- Geen ordernr vanuit scanning
WHERE fac_import_key = p_import_key ;
END;
END LOOP;
FOR rec IN ccor_1
LOOP
BEGIN
-- check of je er een ACTUELE opdracht_key voor kunt vinden. zo ja dan gaan we er vanuit dat het idd opdracht is en vullen we ordernr aan met een prefix "O"
--- Actueel = Nog niet verwerkte opdracht + Jaar(opdrachtdatum) gelijk aan Jaar(factuurdatum) of Jaar(factuurdatum)-1
IF rec.melding_key IS NOT NULL and rec.opdracht_volgnr IS NOT NULL and rec.factuurdatum_jaar IS NOT NULL THEN
SELECT min(mld_opdr_key)
INTO v_opdracht_key
FROM mld_opdr
WHERE mld_melding_key = rec.melding_key AND mld_opdr_bedrijfopdr_volgnr = rec.opdracht_volgnr
AND fac.safe_to_number((TO_CHAR (mld_opdr_datumbegin, 'yyyy'))) BETWEEN (rec.factuurdatum_jaar - 1) AND rec.factuurdatum_jaar
AND mld_statusopdr_key NOT IN (1,7) ; -- verwerkt of afgewezen
IF v_opdracht_key IS NOT NULL THEN
UPDATE fac_imp_factuur
SET ordernr = 'O' || ordernr
WHERE fac_import_key = p_import_key ;
END IF;
END IF;
END;
END LOOP;
FOR rec IN ccor_2
LOOP
BEGIN
UPDATE fac_imp_factuur
SET ordernr = 'C' || SUBSTR(ordernr,3,LENGTH(ordernr))
WHERE fac_import_key = p_import_key ;
END;
END LOOP;
FOR rec IN ccor_3
LOOP
BEGIN
IF fac.safe_to_number(rec.cnt_contract_nummer_intern) IS NOT NULL THEN
SELECT count(*)
INTO v_contract_versies
FROM cnt_contract
WHERE cnt_contract_verwijder IS NULL AND cnt_contract_status = 0
AND cnt_contract_nummer_intern = rec.cnt_contract_nummer_intern ;
-- Als er meer dan 1 versie is, dan moet factuur ter controle. We gaan hiervoor een kenmerkveld vullen...
IF v_contract_versies > 1 THEN
UPDATE fac_imp_factuur
SET kenmerk2 = 'ter controle'
WHERE fac_import_key = p_import_key ;
END IF;
END IF;
END;
END LOOP;
FOR rec IN ccor_4
LOOP
BEGIN
UPDATE fac_imp_factuur
SET ordernr = SUBSTR(ordernr,1,LENGTH(ordernr)-(REGEXP_INSTR(REVERSE(ordernr), '\d')-1))
WHERE fac_import_key = p_import_key ;
END;
END LOOP;
FOR rec IN ccor_5
LOOP
BEGIN
UPDATE fac_imp_factuur
SET ordernr = REPLACE(ordernr,'BE','')
WHERE fac_import_key = p_import_key ;
UPDATE fac_imp_factuur
SET ordernr = REPLACE(ordernr,'B','')
WHERE fac_import_key = p_import_key ;
END;
END LOOP;
FOR rec IN ccor_6
LOOP
BEGIN
-- check of je de PR-opdracht aan een Intercompany klant is gekopppeld + of er in de klantomgeving een BTW-NL-intercompany aanwezig is. Zo ja, dan gaan we de BTW in tussentabel aanpassen.
IF rec.melding_key IS NOT NULL and rec.opdracht_volgnr IS NOT NULL
THEN
SELECT MIN(fac.safe_to_number(kmb.prs_kenmerklink_waarde))
INTO v_intercompany
FROM mld_opdr o, prs_bedrijf b, prs_kenmerklink kmb, prs_kenmerk km
WHERE o.mld_melding_key = rec.melding_key
AND o.mld_opdr_bedrijfopdr_volgnr = rec.opdracht_volgnr
AND mld_statusopdr_key NOT IN (1,7) -- verwerkt of afgewezen
AND o.mld_uitvoerende_keys = b.prs_bedrijf_key
AND b.prs_bedrijf_key = kmb.prs_link_key AND prs_kenmerklink_niveau = 'B'
AND kmb.prs_kenmerk_key = km.prs_kenmerk_key AND km.prs_kenmerk_upper = 'INTERCOMPANY-RELATIE' AND km.prs_kenmerk_verwijder IS NULL;
SELECT MIN(tw.fin_btwtabelwaarde_key)
INTO v_intercompany_btw_key
FROM fin_btwtabel t, fin_btwtabelwaarde tw
WHERE t.fin_btwtabel_key = tw.fin_btwtabel_key
AND t.fin_btwtabel_omschrijving = 'NL standaard'
AND tw.fin_btwtabelwaarde_perc = 0
AND INSTR(UPPER(tw.fin_btwtabelwaarde_oms),'INTERCOMPANY')>0 ;
IF v_intercompany IS NOT NULL AND v_intercompany_btw_key IS NOT NULL
THEN
UPDATE fac_imp_factuur
SET btw = 21
WHERE fac_import_key = p_import_key ;
END IF;
END IF;
END;
END LOOP;
-- Nu kunnen we de standaard FCLT verwerk import facturen draaien
fac_update_factuur (p_import_key);
-- CUST: post processing voor verwerking van het PDF document
SELECT MIN (fin_kenmerk_key)
INTO c_kenmerk_key_bijlage
FROM fin_kenmerk
WHERE fin_kenmerk_type = 'F' -- niveau kenmerk op Factuurniveau en niet op R-regel
AND fin_kenmerk_kenmerktype = c_kenmerk_key_soort
AND fin_kenmerk_verwijder IS NULL;
-- CUST: Voor vullen Klantnummer het kenmerk_key ophalen
SELECT MIN (prs_kenmerk_key)
INTO v_klantnummer_key
FROM prs_kenmerk
WHERE prs_kenmerk_niveau = 'B' AND prs_kenmerk_upper = 'KLANTNUMMER' AND prs_kenmerk_verwijder IS NULL;
-- CUST: Voor verwerking Contracten die qua versienr nog gecontroleerd moeten worden het kenmerk_key ophalen
SELECT MIN (fin_kenmerk_key)
INTO c_kenmerk_key_controle
FROM fin_kenmerk
WHERE fin_kenmerk_type = 'F' -- niveau kenmerk op Factuurniveau en niet op R-regel
AND fin_kenmerk_kenmerktype = 'V'
AND fin_kenmerk_upper = 'EXTRA CONTROLE?'
AND fin_kenmerk_verwijder IS NULL;
-- CUST: Voor verwerking Contracten en Verdeelperiode goed doorvoeren (= fin_factuur_boekmaand)
----- We gaan dit in een kenmerveld vullen en indien goed te bepalen dan wordt dit ook in procedure straks in het factuur-boekmaand veld weggeschreven
SELECT MIN (fin_kenmerk_key)
INTO c_kenmerk_key_boekmaand
FROM fin_kenmerk
WHERE fin_kenmerk_type = 'F' -- niveau kenmerk op Factuurniveau en niet op R-regel
AND fin_kenmerk_kenmerktype = 'C'
AND fin_kenmerk_upper = 'MAREON_CNT_BOEKMAAND'
AND fin_kenmerk_verwijder IS NULL;
-- CUST: Ophalen key-waarde Ja en Nee van kenmerkveld Laatste Factuur
SELECT ud.fac_usrdata_key
INTO v_fac_usrdata_key_ja
FROM fin_kenmerk k,
fac_kenmerkdomein kd,
fac_usrtab ut,
fac_usrdata ud
WHERE fin_kenmerk_key = 2
AND k.fac_kenmerkdomein_key = kd.fac_kenmerkdomein_key
AND kd.fac_usrtab_key = ut.fac_usrtab_key
AND ut.fac_usrtab_key = ud.fac_usrtab_key
AND fac.safe_to_number (ud.fac_usrdata_code) = 1; -- Waarde is Ja
SELECT ud.fac_usrdata_key
INTO v_fac_usrdata_key_nee
FROM fin_kenmerk k,
fac_kenmerkdomein kd,
fac_usrtab ut,
fac_usrdata ud
WHERE fin_kenmerk_key = 2
AND k.fac_kenmerkdomein_key = kd.fac_kenmerkdomein_key
AND kd.fac_usrtab_key = ut.fac_usrtab_key
AND ut.fac_usrtab_key = ud.fac_usrtab_key
AND fac.safe_to_number (ud.fac_usrdata_code) = 2; -- Waarde is Nee
-- We gaan nu beginnen met verwerken van de factuur..
FOR rec IN cfactuur
LOOP
BEGIN
-- Als er een bijlage-flexprop en een bijlage is, dan gaan we deze PDF hier inzetten....
IF c_kenmerk_key_bijlage IS NOT NULL AND rec.kenmerk1 IS NOT NULL
THEN
BEGIN
INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde)
VALUES('IMPORT:' || TO_CHAR (p_import_key),
'flexcode',
'FIN:'
|| TO_CHAR (rec.fin_factuur_key) -- We kunnen niet meerdere imports tegelijk aan!
|| ':' || c_kenmerk_key_bijlage || ':' -- De kenmerk key
|| c_kenmerk_key_soort -- 'F of M'
);
-- FSN#33363: Zelf de insert in fin_kenmerkfactuur doen van het bestandskenmerk (FSN#33105 verzorgt dit niet namelijk)
-- Aanvulling JM: Voor F-enkelvoudig bestand wel nodig om kenmerk aan te maken, voor M-folder hoeft/moet dit niet
IF c_kenmerk_key_soort = 'F'
THEN
INSERT INTO fin_kenmerkfactuur (fin_factuur_key, fin_kenmerk_key, fin_kenmerkfactuur_waarde)
VALUES (rec.fin_factuur_key, c_kenmerk_key_bijlage, rec.kenmerk1);
END IF;
EXCEPTION
WHEN OTHERS
THEN
fac.imp_writelog (p_import_key,
'W',
'Van factuur met key ' || rec.fin_factuur_key || ' is de bestandsnaam niet bewaard (regel ' || rec.fac_imp_file_index || ')',
'Factuurnr:' || rec.factuurnr || ' / Bestandsnaam: ' || rec.kenmerk1
);
END;
END IF;
-- Als er een ref-key gekoppeld is, dan gaan we o.a. de waarde van deze verplichting ophalen
IF (rec.mld_opdr_key IS NOT NULL OR rec.cnt_contract_key IS NOT NULL OR rec.bes_bestelopdr_key IS NOT NULL)
THEN
v_bedrag_totaal := 0;
v_count_gefactureerd := 0;
v_bedrag_gefactureerd := 0;
v_ordersoort := '';
-- Voor Opdracht..
IF rec.mld_opdr_key IS NOT NULL
THEN
SELECT COALESCE(o.mld_opdr_kosten, 0), ot.mld_typeopdr_omschrijving, o.mld_uitvoerende_keys, mld_statusopdr_key
INTO v_bedrag_totaal, v_ordersoort, v_prs_bedrijf_key, v_mld_statusopdr_key
FROM mld_opdr o, mld_typeopdr ot
WHERE o.mld_opdr_key = rec.mld_opdr_key
AND o.mld_typeopdr_key = ot.mld_typeopdr_key;
SELECT count(*)
INTO v_count_gefactureerd
FROM fin_factuur
WHERE mld_opdr_key = rec.mld_opdr_key
AND fin_factuur_verwijder IS NULL;
IF v_count_gefactureerd > 1
THEN
SELECT sum(fin_factuur_totaal)
INTO v_bedrag_gefactureerd
FROM fin_factuur f
WHERE f.mld_opdr_key = rec.mld_opdr_key
AND f.fin_factuur_key NOT IN (rec.fin_factuur_key)
AND f.fin_factuur_verwijder IS NULL;
END IF;
-- Als de Opdracht waar deze factuur op is gekomen al verwerkt is, dan moet deze factuur ter controle
IF v_mld_statusopdr_key IN (1,7) -- verwerkt of afgewezen
THEN
v_aanduiding_controle := 'CONTROLE - Deze factuur is ingeboekt terwijl de Opdracht al op VERWERKT staat' ;
v_controle := 1 ;
fac.trackaction ('FINUPD', rec.fin_factuur_key, 4, NULL, v_aanduiding_controle);
END IF;
-- Als de hetzelfde factuurnummer al vaker op deze opdracht is geregistreerd, dan moet deze factuur ter controle
SELECT count(*)
INTO v_count_gefactureerd_nr
FROM fin_factuur
WHERE mld_opdr_key = rec.mld_opdr_key
AND fin_factuur_key NOT IN (rec.fin_factuur_key)
AND fin_factuur_nr = rec.factuurnr
AND fin_factuur_verwijder IS NULL ;
IF v_count_gefactureerd_nr > 0
THEN
v_aanduiding_controle := 'CONTROLE - Hetzelfde factuur-nummer is al eerder geregistreerd op deze Opdracht' ;
v_controle := 1 ;
fac.trackaction ('FINUPD', rec.fin_factuur_key, 4, NULL, v_aanduiding_controle);
END IF;
-- Voor opdrachten met 0-waarde zetten we de Controle, mits er op de Opdracht een REDEN is vermeld
IF v_bedrag_totaal = 0
THEN
-- Eerst dus kijken of er bij opdracht een reden is vermeld
BEGIN
SELECT MIN(ko.mld_kenmerkopdr_waarde)
INTO v_opdracht_0_reden
FROM mld_kenmerkopdr ko, mld_kenmerk k, mld_srtkenmerk sk
WHERE ko.mld_kenmerk_key = k.mld_kenmerk_key
AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
AND sk.mld_srtkenmerk_upper = 'REDEN 0 ORDER'
AND k.mld_kenmerk_verwijder IS NULL AND sk.mld_srtkenmerk_verwijder IS NULL
AND ko.mld_opdr_key = rec.mld_opdr_key
AND ko.mld_kenmerkopdr_waarde IS NOT NULL
AND ko.mld_kenmerkopdr_verwijder IS NULL ;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
v_opdracht_0_reden := NULL;
END;
-- Zo ja, dan zetten we de controle
IF v_opdracht_0_reden IS NOT NULL
THEN
v_aanduiding_controle := 'CONTROLE <20> Bedrag van gekoppelde verplichting is 0,- euro en er is een REDEN ingevuld' ;
v_controle := 1 ;
fac.trackaction ('FINUPD', rec.fin_factuur_key, 4, NULL, v_aanduiding_controle);
END IF;
END IF;
END IF;
-- Voor Bestelopdracht..
IF rec.bes_bestelopdr_key IS NOT NULL
THEN
SELECT COALESCE(SUM (br.bes_bestelopdr_item_aantal * br.bes_bestelopdr_item_prijs), 0) bedrag_totaal, b.prs_bedrijf_key -- LETOP! Bedragen en BTW - check inclusief of Exclusief bij AAIT (via bes_bestelling_item)!!!
INTO v_bedrag_totaal, v_prs_bedrijf_key
FROM bes_bestelopdr b, bes_bestelopdr_item br
WHERE b.bes_bestelopdr_key = br.bes_bestelopdr_key
AND b.bes_bestelopdr_key = rec.bes_bestelopdr_key
GROUP BY b.prs_bedrijf_key;
SELECT count(*)
INTO v_count_gefactureerd
FROM fin_factuur
WHERE bes_bestelopdr_key = rec.bes_bestelopdr_key
AND fin_factuur_verwijder IS NULL;
IF v_count_gefactureerd > 1
THEN
SELECT sum(fin_factuur_totaal)
INTO v_bedrag_gefactureerd
FROM fin_factuur f
WHERE f.bes_bestelopdr_key = rec.bes_bestelopdr_key
AND f.fin_factuur_key NOT IN (rec.fin_factuur_key)
AND f.fin_factuur_verwijder IS NULL ;
END IF;
-- Als de hetzelfde factuurnummer al vaker op deze opdracht is geregistreerd, dan moet deze factuur ter controle
SELECT count(*)
INTO v_count_gefactureerd_nr
FROM fin_factuur
WHERE bes_bestelopdr_key = rec.bes_bestelopdr_key
AND fin_factuur_key NOT IN (rec.fin_factuur_key)
AND fin_factuur_nr = rec.factuurnr
AND fin_factuur_verwijder IS NULL ;
IF v_count_gefactureerd_nr > 0
THEN
v_aanduiding_controle := 'CONTROLE - Hetzelfde factuur-nummer is al eerder geregistreerd op deze Opdracht' ;
v_controle := 1 ;
fac.trackaction ('FINUPD', rec.fin_factuur_key, 4, NULL, v_aanduiding_controle);
END IF;
-- Voor Bestelopdrachten met 0-waarde zetten we Controle
IF v_bedrag_totaal = 0
THEN
v_aanduiding_controle := 'CONTROLE - Bedrag van gekoppelde verplichting is 0,- euro' ;
v_controle := 1 ;
fac.trackaction ('FINUPD', rec.fin_factuur_key, 4, NULL, v_aanduiding_controle);
END IF;
END IF;
-- Voor Contract..
IF rec.cnt_contract_key IS NOT NULL
THEN
SELECT COALESCE(c.cnt_contract_kosten, 0), c.cnt_contract_termijnkosten, cs.ins_discipline_omschrijving, c.cnt_prs_bedrijf_key -- NOG IETS DOEN MET TERMIJNBEDRAG ?
INTO v_bedrag_totaal, v_bedrag_termijn, v_contractsoort, v_prs_bedrijf_key
FROM cnt_contract c, ins_tab_discipline cs
WHERE c.cnt_contract_key = rec.cnt_contract_key
AND c.ins_discipline_key = cs.ins_discipline_key AND cs.ins_discipline_module = 'CNT';
SELECT count(*)
INTO v_count_gefactureerd
FROM fin_factuur
WHERE cnt_contract_key = rec.cnt_contract_key
AND fin_factuur_verwijder IS NULL;
IF v_count_gefactureerd > 1
THEN
SELECT sum(fin_factuur_totaal)
INTO v_bedrag_gefactureerd
FROM fin_factuur f
WHERE f.cnt_contract_key = rec.cnt_contract_key
AND f.fin_factuur_key NOT IN (rec.fin_factuur_key)
AND f.fin_factuur_verwijder IS NULL ;
END IF;
-- Als de hetzelfde factuurnummer al vaker op deze opdracht is geregistreerd, dan moet deze factuur ter controle
SELECT count(*)
INTO v_count_gefactureerd_nr
FROM fin_factuur
WHERE cnt_contract_key = rec.cnt_contract_key
AND fin_factuur_key NOT IN (rec.fin_factuur_key)
AND fin_factuur_nr = rec.factuurnr
AND fin_factuur_verwijder IS NULL ;
IF v_count_gefactureerd_nr > 0
THEN
v_aanduiding_controle := 'CONTROLE - Hetzelfde factuur-nummer is al eerder geregistreerd op deze Opdracht' ;
v_controle := 1 ;
fac.trackaction ('FINUPD', rec.fin_factuur_key, 4, NULL, v_aanduiding_controle);
END IF;
-- Voor Contracten met 0-waarde zetten we Controle
IF v_bedrag_totaal = 0
THEN
v_aanduiding_controle := 'CONTROLE - Bedrag van gekoppelde verplichting is 0,- euro' ;
v_controle := 1 ;
fac.trackaction ('FINUPD', rec.fin_factuur_key, 4, NULL, v_aanduiding_controle);
END IF;
END IF;
-- Bepalen of kenmerk LaatsteFactuur op JA(1) of op NEE(2) moet. Laatste factuur op JA als:
---- Als procentuele afwijking tussen opdrachtwaarde en totaal_gefactureerd kleiner dan 1% is
---- Als opdrachtwaarde is 0 dan mag laatste factuur wel gewoon op JA
IF v_bedrag_totaal <> 0
THEN
IF ((v_bedrag_totaal - (rec.fin_factuur_totaal + v_bedrag_gefactureerd))/ v_bedrag_totaal) * 100 < 1
THEN
-- Zet kenmerk laatste factuur op Ja
INSERT INTO fin_kenmerkfactuur (fin_factuur_key, fin_kenmerk_key, fin_kenmerkfactuur_waarde)
VALUES (rec.fin_factuur_key, 2, v_fac_usrdata_key_ja);
ELSE
-- Zet kenmerk laatste factuur op Nee
INSERT INTO fin_kenmerkfactuur (fin_factuur_key, fin_kenmerk_key, fin_kenmerkfactuur_waarde)
VALUES (rec.fin_factuur_key, 2, v_fac_usrdata_key_nee);
END IF;
ELSE
INSERT INTO fin_kenmerkfactuur (fin_factuur_key, fin_kenmerk_key, fin_kenmerkfactuur_waarde)
VALUES (rec.fin_factuur_key, 2, v_fac_usrdata_key_ja);
END IF;
-- CREDITS - Deze moeten altijd op controle JA
-- Voor Contracten is dat hieronder bij Verdeelperiode-bepaling al ingeregeld. Voor Opdrachten/Bestellingen doen we dat hier
IF rec.fin_factuur_totaal < 0 AND (rec.bes_bestelopdr_key IS NOT NULL OR rec.mld_opdr_key IS NOT NULL)
THEN
v_aanduiding_controle := 'CONTROLE - Credit geboekt op Opdracht/Bestelling' ;
v_controle := 1 ;
fac.trackaction ('FINUPD', rec.fin_factuur_key, 4, NULL, v_aanduiding_controle);
END IF;
-- Verdeelperiode voor de contracten bepalen - Daarvoor eerst nog diverse parameters te vullen
IF rec.cnt_contract_key IS NOT NULL
THEN
SELECT SUBSTR(d.ins_discipline_omschrijving,1,2) cnt_soort, ROUND((c.cnt_contract_looptijd_tot - c.cnt_contract_looptijd_van)/30) cnt_looptijd_mnd,
fac.safe_to_number((TO_CHAR (c.cnt_contract_looptijd_tot, 'yyyy'))) cnt_jaar_start,
fac.safe_to_number((TO_CHAR (c.cnt_contract_looptijd_van, 'yyyy'))) cnt_jaar_eind,
t.cnt_termijn_type, t.cnt_termijn_aantal
INTO v_cnt_soort, v_cnt_looptijd_mnd, v_cnt_jaar_start, v_cnt_jaar_eind, v_cnt_termijn_type, v_cnt_termijn_aantal
FROM cnt_contract c, cnt_termijn t, cnt_discipline d
WHERE c.cnt_contract_key = rec.cnt_contract_key
AND c.cnt_contract_termijntermijn = t.cnt_termijn_key (+)
AND c.ins_discipline_key = d.ins_discipline_key;
-- Bepalen of het een gebroken boekjaar is...
IF v_cnt_jaar_start <> v_cnt_jaar_eind
THEN
v_gebroken_boekjaar := 1 ;
END IF;
-- Indien geen gebroken boekjaar, dan kunnen we als volgt verdeelperiode bepalen
IF v_gebroken_boekjaar = 0
THEN
IF v_bedrag_totaal >0
THEN
v_cnt_deel_betaald_1 := (v_bedrag_gefactureerd / v_bedrag_totaal) * v_cnt_looptijd_mnd ;
v_cnt_deel_betaald_2 := ((v_bedrag_gefactureerd + rec.fin_factuur_totaal) / v_bedrag_totaal) * v_cnt_looptijd_mnd ;
v_cnt_deel_betaald := v_cnt_deel_betaald_2 - v_cnt_deel_betaald_1 ; -- HIER NOG WAT MEE DOEN IN BEPALING?!
END IF;
IF v_cnt_looptijd_mnd = 0 OR v_bedrag_totaal = 0
THEN
v_cnt_deel_betaald_2_tekst := 'onbepaald' ;
ELSE
v_cnt_deel_betaald_2_tekst := TO_CHAR(ROUND((v_cnt_deel_betaald_2/v_cnt_looptijd_mnd)*100,2)) || '%' ;
END IF;
IF v_cnt_deel_betaald_2 <= 1
THEN
v_verdeelperiode_factuur := '01' ;
ELSE IF v_cnt_deel_betaald_2 > 1 AND v_cnt_deel_betaald_2 < 100 THEN -- Kleiner dan 100 want verdeelperiode mag maar 2 characters groot zijn
v_verdeelperiode_factuur := TO_CHAR(FLOOR(v_cnt_deel_betaald_2)) ;
ELSE
v_verdeelperiode_factuur := '??' ;
END IF;
END IF;
-- 9 moet 09 worden
IF LENGTH (v_verdeelperiode_factuur) = 1 THEN v_verdeelperiode_factuur := '0' || v_verdeelperiode_factuur ; END IF;
-- De huidige hoogste boekmaand ophalen
SELECT count(*)
INTO v_count_verdeelperiode_1
FROM fin_factuur
WHERE cnt_contract_key = rec.cnt_contract_key AND fin_factuur_boekmaand IS NOT NULL AND fin_factuur_key NOT IN (rec.fin_factuur_key) AND fin_factuur_verwijder IS NULL ;
IF v_count_verdeelperiode_1 > 0
THEN
SELECT TO_CHAR(MAX(fac.safe_to_number(SUBSTR(f.fin_factuur_boekmaand, 6))))
INTO v_verdeelperiode_1
FROM fin_factuur f
WHERE cnt_contract_key = rec.cnt_contract_key AND fin_factuur_boekmaand IS NOT NULL AND fin_factuur_key NOT IN (rec.fin_factuur_key) AND fin_factuur_verwijder IS NULL ;
-- 9 moet 09 worden
IF LENGTH (v_verdeelperiode_1) = 1 THEN v_verdeelperiode_1 := '0' || v_verdeelperiode_1 ; END IF;
END IF;
-- BOEKMAAND: Verdeelperiode van de nieuwe factuur bepalen
-- CREDITS: Altijd in laatste boekmaand opnemen maar met Controle is JA
IF rec.fin_factuur_totaal < 0 AND v_bedrag_totaal > 0
THEN
v_fin_factuur_boekmaand := v_cnt_jaar_start || '-' || v_verdeelperiode_1;
-- wegschrijven in fin_factuur_boekmaand
UPDATE fin_factuur
SET fin_factuur_boekmaand = v_fin_factuur_boekmaand
WHERE fin_factuur_key = rec.fin_factuur_key ;
v_aanduiding_controle := 'CONTROLE - Credit geboekt op Contract in voorgaande periode' ;
v_controle := 1 ;
fac.trackaction ('FINUPD', rec.fin_factuur_key, 4, NULL, v_aanduiding_controle);
---- DEBETS: Moeten sowieso groter of gelijk zijn aan de huidge hoogste boekmaand EN moet kleiner of gelijk zijn aan v_cnt_looptijd_mnd en Contractbedrag moet groter zijn dan 0
ELSE IF rec.fin_factuur_totaal > 0 AND fac.safe_to_number(v_verdeelperiode_factuur) >= fac.safe_to_number(v_verdeelperiode_1) AND fac.safe_to_number(v_verdeelperiode_factuur) <= v_cnt_looptijd_mnd AND v_bedrag_totaal > 0
THEN
v_fin_factuur_boekmaand := v_cnt_jaar_start || '-' || v_verdeelperiode_factuur;
-- wegschrijven in fin_factuur_boekmaand
UPDATE fin_factuur
SET fin_factuur_boekmaand = v_fin_factuur_boekmaand
WHERE fin_factuur_key = rec.fin_factuur_key ;
-- anders klopt het niet en gaan we de verdeelperiode dus niet wegschrijven op factuur..
ELSE
v_fin_factuur_boekmaand := v_cnt_jaar_start || '-' || '??' ;
v_aanduiding_controle := 'CONTROLE - Verdeelperiode voor Contract kan niet goed bepaald worden en is dus niet weggeschreven' ;
v_controle := 1 ;
fac.trackaction ('FINUPD', rec.fin_factuur_key, 4, NULL, v_aanduiding_controle);
END IF;
END IF;
-- wegschrijven van de bepaling in een kenmerkveld
v_fin_factuur_boekmaand_tekst := 'Type: ' || v_cnt_soort || '. Contractduur: ' || TO_CHAR(v_cnt_looptijd_mnd) || ' mnd. Hoogste boekmnd: ' || v_verdeelperiode_1 || '. Deel nu betaald: ' || v_cnt_deel_betaald_2_tekst || '. Verdeelperiode bepaald: ' || v_fin_factuur_boekmaand ;
INSERT INTO fin_kenmerkfactuur (fin_factuur_key, fin_kenmerk_key, fin_kenmerkfactuur_waarde)
VALUES (rec.fin_factuur_key, c_kenmerk_key_boekmaand, v_fin_factuur_boekmaand_tekst);
-- gebroken boekjaar = 1
ELSE
-- NOG UITWERKEN - Voorbeeld:
--- Contractperiode: 2020 - oktober t/m 2021 - maart = 6 maanden
--- Verdeelperiodes zijn: 2020-1, 2020-2, 2020-3, 2021-1, 2021-2, 2021-3
v_cnt_deel_betaald_1 := (v_bedrag_gefactureerd / v_bedrag_totaal) * v_cnt_looptijd_mnd ;
v_cnt_deel_betaald_2 := ((v_bedrag_gefactureerd + rec.fin_factuur_totaal) / v_bedrag_totaal) * v_cnt_looptijd_mnd ;
-- wegschrijven van de bepaling in een kenmerkveld
v_fin_factuur_boekmaand_tekst := 'Gebroken boekjaar - (nog) geen automatische bepaling verdeelperiode' ;
INSERT INTO fin_kenmerkfactuur (fin_factuur_key, fin_kenmerk_key, fin_kenmerkfactuur_waarde)
VALUES (rec.fin_factuur_key, c_kenmerk_key_boekmaand, v_fin_factuur_boekmaand_tekst);
END IF;
-- Tot slot nog voor facturen op CO's van vorig boekjaar ook nog op CONTROLE zetten
IF v_cnt_jaar_eind < c_huidig_jaar
THEN
v_aanduiding_controle := 'CONTROLE - Betreft factuur op Contract uit vorig boekjaar' ;
v_controle := 1 ;
fac.trackaction ('FINUPD', rec.fin_factuur_key, 4, NULL, v_aanduiding_controle);
END IF;
END IF;
-- Veld debiteurnummer nog vullen indien gevuld bij relatie
IF v_klantnummer_key IS NOT NULL
THEN
-- Waarde ophalen met v_prs_bedrijf_key en vullen in v_klantnummer
SELECT MAX(prs_kenmerklink_waarde)
INTO v_klantnummer
FROM prs_kenmerklink
WHERE prs_kenmerk_key = v_klantnummer_key AND prs_link_key = v_prs_bedrijf_key AND prs_kenmerklink_verwijder IS NULL;
-- Indien waarde dan vullen in inkoopfactuur veld debiteurnummer
IF v_klantnummer IS NOT NULL
THEN
UPDATE fin_factuur
SET fin_factuur_debiteur_nr = v_klantnummer
WHERE fin_factuur_key = rec.fin_factuur_key ;
END IF;
END IF;
-- Voor Contracten geldt dat ze nog ter controle moeten als er automatisch een hoogste contractversie-nummer gekoppeld wordt
IF rec.kenmerk2 = 'ter controle'
THEN
v_aanduiding_controle := 'CONTROLE - Contract is op factuur zonder versie-nummer weergegeven; hoogste versienr is gekoppeld' ;
v_controle := 1 ;
fac.trackaction ('FINUPD', rec.fin_factuur_key, 4, NULL, v_aanduiding_controle);
END IF;
-- Voor Intercompany nog de BTW van 21 terugzetten naar 0 en de juiste v_intercompany_btw_key koppelen
IF v_intercompany IS NOT NULL AND v_intercompany_btw_key IS NOT NULL
THEN
UPDATE fin_factuurregel
SET fin_btwtabelwaarde_key = v_intercompany_btw_key, fin_factuurregel_btw = 0
WHERE fin_factuur_key = rec.fin_factuur_key ;
UPDATE fin_factuur
SET fin_factuur_totaal_btw = 0
WHERE fin_factuur_key = rec.fin_factuur_key ;
END IF;
-- tot slot controle-vinkje zetten indien nodig
IF v_controle = 1
THEN
INSERT INTO fin_kenmerkfactuur (fin_factuur_key, fin_kenmerk_key, fin_kenmerkfactuur_waarde)
VALUES (rec.fin_factuur_key, c_kenmerk_key_controle, 1);
END IF;
END IF;
-- tot slot nog nette logging
v_aanduiding := 'Factuur geimporteerd vanuit Mareon' ;
fac.trackaction ('FINUPD', rec.fin_factuur_key, 4, NULL, v_aanduiding);
END;
END LOOP;
END;
/
-- view om aantal ingevoerde facturen terug te herleiden naar scanning en excel import.
CREATE OR REPLACE VIEW aaxx_v_rap_invoice_scan
(
hide_f_ts,
fclt_d_datum,
totaal,
scanning,
excel
)
AS
SELECT TO_CHAR (fac_tracking_datum, 'yyyymmdd'),
TO_CHAR (fac_tracking_datum, 'dd-mm-yyyy'),
SUM (aantal),
SUM (scanning),
SUM (excel)
FROM (SELECT f.fin_factuur_key,
fac_tracking_datum,
fac_tracking_key,
fac_tracking_oms,
1 aantal,
DECODE (t.prs_perslid_key, 8, 1, 0) excel,
DECODE (t.prs_perslid_key, 9, 1, 0) scanning
FROM fin_factuur f,
(SELECT t.*
FROM fac_tracking t, fac_srtnotificatie sn
WHERE t.fac_srtnotificatie_key =
sn.fac_srtnotificatie_key
AND sn.fac_srtnotificatie_code = 'FINNEW') t
WHERE f.fin_factuur_verwijder IS NULL
AND f.fin_factuur_key = t.fac_tracking_refkey(+))
GROUP BY TO_CHAR (fac_tracking_datum, 'dd-mm-yyyy'),
TO_CHAR (fac_tracking_datum, 'yyyymmdd');
--------------------------------
-- import contractorders
--------------------------------
CREATE OR REPLACE PROCEDURE aaxx_import_contract (
p_import_key IN NUMBER)
IS
c_fielddelimitor VARCHAR2 (1) := ';';
v_newline VARCHAR2 (4000); -- Input line
v_read VARCHAR2 (4000);
v_lastchar VARCHAR2 (1);
v_firstchar VARCHAR2 (1);
v_errormsg VARCHAR (1000);
v_hint VARCHAR (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_count NUMBER;
v_ongeldig NUMBER (1);
v_mode NUMBER (1);
v_aanduiding VARCHAR (200);
v_header_is_valid NUMBER (1);
-- De importvelden:
v_gebouw_code VARCHAR2 (100);
v_leverancier VARCHAR2 (100);
v_beschrijving VARCHAR2 (100);
v_van VARCHAR2 (100);
v_dienst VARCHAR2 (100);
v_tot VARCHAR2 (100);
v_versie VARCHAR2 (100);
v_omschrijving VARCHAR2 (4000);
v_bedrag VARCHAR2 (100);
v_termijnbedrag VARCHAR2 (100);
v_contractsoort VARCHAR2 (100);
v_contractnummer VARCHAR2 (100);
v_volgnummer VARCHAR2 (100);
v_leveranciernummer VARCHAR2 (100);
v_contractafdeling VARCHAR2 (100);
v_gewijzigddoor VARCHAR2 (100);
v_contractmanager VARCHAR2 (100);
v_discipline_key NUMBER;
v_dummy VARCHAR2 (100);
CURSOR c
IS
SELECT *
FROM fac_imp_file
WHERE fac_import_key = p_import_key
ORDER BY fac_imp_file_index;
rec c%ROWTYPE;
BEGIN
-- Eerst opruiming
DELETE FROM aaxx_imp_contract;
COMMIT;
v_header_is_valid := 0;
OPEN c;
IF (c%ISOPEN)
THEN
LOOP
BEGIN
v_errormsg := 'Fout FETCH te importeren rij';
FETCH c INTO rec;
EXIT WHEN c%NOTFOUND;
v_read := rec.fac_imp_file_line;
v_newline := v_read;
v_lastchar := SUBSTR (v_read, LENGTH (v_read), 1);
v_firstchar := SUBSTR (v_read, 1, 1);
-- voeg regels samen die een cr/lf bevatten.
IF v_firstchar = '"'
THEN
WHILE v_lastchar <> '"'
LOOP
BEGIN
FETCH c INTO rec;
EXIT WHEN c%NOTFOUND;
v_read := rec.fac_imp_file_line;
v_lastchar := SUBSTR (v_read, LENGTH (v_read), 1);
v_newline := v_newline || CHR (13) || CHR (10) || v_read;
END;
END LOOP;
END IF;
v_errormsg := 'Fout opvragen te importeren rij:' || substr(v_newline,1,200);
v_aanduiding := '';
v_ongeldig := 0;
IF (UPPER(v_newline) like
'GEBOUW;BEDRIJF;LEVNR;BESCHRIJVING;INGANGSDATUM;EINDDATUM;ORDEROMSCHRIJVING;BEDRAG;TERMIJNBEDRAG;DIENST;CONTRACTSOORT;CONTRACTNR;VERSIE;REGELNR;CONTRACTAFDELING;CONTRACTMANAGER;GEWIJZIGDDOOR%')
THEN
v_header_is_valid := 1;
ELSE
-- Lees alle veldwaarden
fac.imp_getfield (v_newline, C_FIELDDELIMITOR, v_gebouw_code);
--
v_errormsg :=
'Fout opvragen te importeren rij (leverancier)'
|| v_gebouw_code;
fac.imp_getfield (v_newline, C_FIELDDELIMITOR, v_leverancier);
--
v_errormsg :=
'Fout opvragen te importeren rij (leveranciernummer)'
|| v_gebouw_code;
fac.imp_getfield (v_newline,
C_FIELDDELIMITOR,
v_leveranciernummer);
--
v_errormsg :=
'Fout opvragen te importeren rij (beschrijving)'
|| v_gebouw_code;
fac.imp_getfield (v_newline, C_FIELDDELIMITOR, v_beschrijving);
--
v_errormsg :=
'Fout opvragen te importeren rij (van)' || v_gebouw_code;
fac.imp_getfield (v_newline, C_FIELDDELIMITOR, v_van);
--
v_errormsg :=
'Fout opvragen te importeren rij (tot)' || v_gebouw_code;
fac.imp_getfield (v_newline, C_FIELDDELIMITOR, v_tot);
--
v_errormsg :=
'Fout opvragen te importeren rij (omschrijving)'
|| v_gebouw_code;
fac.imp_getfield (v_newline, C_FIELDDELIMITOR, v_omschrijving);
--
v_errormsg :=
'Fout opvragen te importeren rij (bedrag)' || v_gebouw_code;
fac.imp_getfield (v_newline, C_FIELDDELIMITOR, v_bedrag);
--
v_errormsg :=
'Fout opvragen te importeren rij (termijnbedrag)' || v_gebouw_code;
fac.imp_getfield (v_newline, C_FIELDDELIMITOR, v_termijnbedrag);
--
v_errormsg :=
'Fout opvragen te importeren rij (dienst)' || v_gebouw_code;
fac.imp_getfield (v_newline, C_FIELDDELIMITOR, v_dienst);
--
v_errormsg :=
'Fout opvragen te importeren rij (dienst)' || v_gebouw_code;
fac.imp_getfield (v_newline,
C_FIELDDELIMITOR,
v_contractsoort);
-- controleeer of het contractsoort bestaat
v_errormsg :=
'Controleer of de contractsoort al bestaat: ' || v_contractsoort;
BEGIN
SELECT ins_discipline_key
INTO v_discipline_key
FROM cnt_discipline
WHERE ins_discipline_verwijder IS NULL
AND UPPER (TRIM (ins_discipline_omschrijving)) =
UPPER (TRIM (SUBSTR(v_contractsoort,1,30)));
EXCEPTION WHEN NO_DATA_FOUND
THEN
fac.imp_writelog (p_import_key,
'E',
v_aanduiding || 'Onbekende contractsoort: ' || v_contractsoort,
'Toelichting: ... ');
END;
--
v_errormsg :=
'Fout opvragen te importeren rij (contractcode):'
|| v_gebouw_code;
fac.imp_getfield (v_newline,
C_FIELDDELIMITOR,
v_contractnummer);
--
v_errormsg :=
'Fout opvragen te importeren rij (versie)' || v_gebouw_code;
fac.imp_getfield (v_newline, C_FIELDDELIMITOR, v_versie);
--
v_errormsg :=
'Fout opvragen te importeren rij (volgnummer)'
|| v_gebouw_code;
fac.imp_getfield (v_newline, C_FIELDDELIMITOR, v_volgnummer);
--
v_errormsg :=
'Fout opvragen te importeren rij (contractafdeling)'
|| v_gebouw_code;
fac.imp_getfield (v_newline,
C_FIELDDELIMITOR,
v_contractafdeling);
--
v_errormsg :=
'Fout opvragen te importeren rij (contractmanager)'
|| v_gebouw_code;
fac.imp_getfield (v_newline,
C_FIELDDELIMITOR,
v_contractmanager);
--
v_errormsg :=
'Fout opvragen te importeren rij (gewijzigddoor)'
|| v_gebouw_code;
fac.imp_getfield (v_newline,
C_FIELDDELIMITOR,
v_gewijzigddoor);
-- Insert geformatteerde import record
v_errormsg :=
'Fout bij toevoegen te importeren gebouw ['
|| v_gebouw_code
|| ']';
INSERT INTO AAXX_IMP_CONTRACT (gebouw,
leverancier,
leveranciernummer,
beschrijving,
van,
tot,
omschrijving,
bedrag,
termijnbedrag,
dienst,
contractsoort,
contractnummer,
versie,
volgnummer,
contractafdeling,
contractmanager,
gewijzigddoor,
volgorde)
VALUES (v_gebouw_code,
v_leverancier,
v_leveranciernummer,
v_beschrijving,
fac.safe_to_date (v_van, 'dd-mm-yy'),
fac.safe_to_date (v_tot, 'dd-mm-yy'),
v_omschrijving,
aaxx_get_imp_float (v_bedrag),
aaxx_get_imp_float (v_termijnbedrag),
v_dienst,
SUBSTR(v_contractsoort,1,30),
TRIM(v_contractnummer),
v_versie,
fac.safe_to_number (
REPLACE (v_volgnummer, ',', '.')),
v_contractafdeling,
v_contractmanager,
v_gewijzigddoor,
rec.fac_imp_file_index);
END IF;
END;
END LOOP;
END IF;
IF v_header_is_valid = 0
THEN
fac.imp_writelog (p_import_key,
'E',
v_aanduiding || 'Ongeldig importbestand',
'Toelichting: ... ');
END IF;
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
v_hint := v_errormsg;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg :=
'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key,
'E',
v_errormsg,
v_hint);
END aaxx_import_contract;
/
CREATE OR REPLACE PROCEDURE aaxx_update_contract (p_import_key IN NUMBER)
AS
CURSOR cdisc
IS
SELECT contractsoort, MIN(volgorde) volgorde
FROM aaxx_imp_contract
WHERE NOT EXISTS
(SELECT ins_discipline_key
FROM cnt_discipline
WHERE UPPER (TRIM (ins_discipline_omschrijving)) =
UPPER (TRIM (contractsoort)))
GROUP BY contractsoort;
CURSOR c
IS
SELECT *
FROM aaxx_imp_contract
ORDER BY volgorde;
e_bestaand_contractnr EXCEPTION;
v_aanduiding VARCHAR2 (200);
v_oldcountcnt NUMBER;
v_newcountcnt NUMBER;
v_countcnt NUMBER;
v_errormsg VARCHAR (1000);
v_error NUMBER (1);
v_error_hint VARCHAR (1000);
oracle_err_mes VARCHAR2 (150);
oracle_err_num VARCHAR2 (150);
currentversion fac_module.fac_module_version%TYPE;
v_gebouw_key NUMBER;
v_dienst_key NUMBER;
v_afdeling_key NUMBER;
v_perslid_key NUMBER;
v_perslid_man_key NUMBER;
v_discipline_key NUMBER;
v_contract_key NUMBER;
v_bedrijf_key NUMBER;
v_kostenplaats_key NUMBER;
v_count NUMBER;
BEGIN
v_error := 0;
SELECT MAX (fac_module_version) INTO currentversion FROM fac_module;
fac.imp_writelog (
p_import_key,
'I',
'AAFM Contract import version ' || currentversion,
'$Revision$');
SELECT COUNT ( * ) INTO v_countcnt FROM aaxx_imp_contract;
IF v_countcnt = 0
THEN
fac.imp_writelog (p_import_key,
'E',
'AAFM Contract import bevat geen records',
'$Revision$');
RETURN;
END IF;
SELECT COUNT ( * ) INTO v_oldcountcnt FROM cnt_contract;
UPDATE cnt_contract
SET cnt_contract_versie = '0'
WHERE cnt_contract_versie IS NULL;
FOR rec IN cdisc
LOOP
BEGIN
v_aanduiding := ' regel[' || rec.volgorde || '] contractsoort: ' || rec.contractsoort;
v_error_hint := 'Toevoegen contractsoort:' || rec.contractsoort;
INSERT INTO ins_tab_discipline (ins_discipline_module,
ins_discipline_omschrijving)
VALUES ('CNT', rec.contractsoort)
RETURNING ins_discipline_key
INTO v_discipline_key;
INSERT INTO cnt_disc_params (cnt_ins_discipline_key,
cnt_srtcontract_type)
VALUES (v_discipline_key, 5);
END;
END LOOP;
FOR rec IN c
LOOP
BEGIN
v_aanduiding :=
'regel['
|| rec.volgorde
|| '] nummer: '
|| rec.contractnummer
|| ' versie: '
|| rec.versie
|| ' volgnummer: '
|| rec.volgnummer;
v_error_hint := 'Controle op bedrijf (check contract vinkje)';
v_perslid_man_key := NULL;
SELECT prs_bedrijf_key
INTO v_bedrijf_key
FROM prs_v_aanwezigbedrijf
WHERE prs_bedrijf_contract = 1
AND ( UPPER (TRIM (prs_leverancier_nr)) = UPPER (TRIM (rec.leveranciernummer))
OR (rec.leveranciernummer IS NULL AND rec.leverancier = prs_bedrijf_naam));
v_error_hint := 'Controle op dienst';
IF rec.dienst IS NOT NULL
THEN
SELECT prs_dienst_key
INTO v_dienst_key
FROM prs_dienst
WHERE UPPER (TRIM (prs_dienst_omschrijving)) = UPPER (TRIM (rec.dienst));
END IF;
v_error_hint := 'Controle op contractsoort';
SELECT ins_discipline_key
INTO v_discipline_key
FROM cnt_discipline
WHERE ins_discipline_verwijder IS NULL
AND UPPER (TRIM (ins_discipline_omschrijving)) =
UPPER (TRIM (rec.contractsoort));
v_error_hint := 'Controle op contractafdeling';
SELECT prs_afdeling_key
INTO v_afdeling_key
FROM prs_afdeling
WHERE prs_afdeling_verwijder IS NULL
AND UPPER (TRIM (prs_afdeling_naam)) = UPPER (TRIM (rec.contractafdeling));
v_error_hint := 'Controle op contractmanager';
IF rec.contractmanager IS NOT NULL
THEN
SELECT prs_perslid_key
INTO v_perslid_man_key
FROM prs_v_aanwezigperslid
WHERE prs_perslid_oslogin = UPPER (TRIM (rec.contractmanager))
OR prs_perslid_oslogin2 = UPPER (TRIM (rec.contractmanager));
END IF;
v_error_hint := 'Controle op gewijzigddoor';
SELECT prs_perslid_key
INTO v_perslid_key
FROM prs_v_aanwezigperslid
WHERE prs_perslid_oslogin = UPPER (TRIM (rec.gewijzigddoor))
OR prs_perslid_oslogin2 = UPPER (TRIM (rec.gewijzigddoor));
IF rec.volgnummer IS NULL
THEN
-- kopregel
v_contract_key := NULL;
v_error_hint := 'Controle op kostenplaats';
SELECT prs_kostenplaats_key
INTO v_kostenplaats_key
FROM prs_v_aanwezigkostenplaats
WHERE UPPER (TRIM (prs_kostenplaats_nr)) = UPPER (TRIM (rec.gebouw));
v_error_hint := 'Controle op contractnummer';
IF rec.contractnummer IS NOT NULL
THEN
SELECT COUNT ( * )
INTO v_count
FROM cnt_v_aanwezigcontract
WHERE TRIM (cnt_contract_nummer_intern) = TRIM (rec.contractnummer)
AND cnt_contract_versie = rec.versie;
IF v_count > 0
THEN
RAISE e_bestaand_contractnr;
END IF;
END IF;
v_error_hint := 'Toevoegen contract';
INSERT INTO cnt_contract (cnt_contract_nummer,
cnt_contract_nummer_intern,
cnt_contract_omschrijving,
cnt_contract_document,
cnt_contract_looptijd_van,
cnt_contract_looptijd_tot,
cnt_contract_status,
cnt_contract_kosten,
cnt_contract_termijnkosten,
cnt_prs_bedrijf_key,
prs_afdeling_key_eig,
ins_discipline_key,
prs_perslid_key_eig,
prs_perslid_key_beh,
prs_kostenplaats_key,
cnt_contract_versie,
cnt_contract_opzegtermijn,
cnt_contract_rappeltermijn)
VALUES (rec.contractnummer,
rec.contractnummer,
SUBSTR (rec.beschrijving, 1, 50),
REPLACE (REPLACE (rec.omschrijving, '<(>', ''),
'<)>',
''),
rec.van,
rec.tot,
2, -- Nieuw
rec.bedrag,
rec.termijnbedrag,
v_bedrijf_key,
v_afdeling_key,
v_discipline_key,
v_perslid_man_key,
v_perslid_key,
v_kostenplaats_key,
DECODE(rec.versie, '0', NULL, rec.versie),
1,
1)
RETURNING cnt_contract_key
INTO v_contract_key;
-- controle of het om bestaande contractnummers gaat. Indien het een import van nieuwe
-- contracten betreft, zal vaak het contractnummer leeg zijn. We vullen dan het contractnummer
-- met de key van het contract.
IF rec.contractnummer IS NULL
THEN
UPDATE cnt_contract
SET cnt_contract_nummer = cnt_contract_key,
cnt_contract_nummer_intern = cnt_contract_key
WHERE cnt_contract_key = v_contract_key;
END IF;
-- als we versie 1 van een contract gaan toevoegen moeten we het initiele contract met
-- versie NULL gaan omzetten naar versie 0.
IF rec.versie = '1'
THEN
UPDATE cnt_contract
SET cnt_contract_versie = '0'
WHERE cnt_contract_nummer = rec.contractnummer
AND cnt_contract_versie IS NULL;
END IF;
ELSE
v_error_hint := 'Controle op gebouwcode';
SELECT alg_gebouw_key
INTO v_gebouw_key
FROM alg_v_aanweziggebouw
WHERE UPPER (alg_gebouw_code) = UPPER (rec.gebouw);
-- als het bovenliggende contract niet aangemaakt kon worden gaan we ook geen scope invullen.
IF v_contract_key IS NOT NULL
THEN
-- Scope van het contract zetten.
INSERT INTO cnt_contract_plaats (cnt_contract_key,
cnt_alg_plaats_key,
cnt_alg_plaats_code,
cnt_contract_plaats_gewicht)
VALUES (v_contract_key,
v_gebouw_key,
'G',
rec.bedrag);
END IF;
END IF;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
IF oracle_err_num = 1 THEN oracle_err_mes := 'Combinatie contractnummer/versie bestaat al.'; END IF;
IF oracle_err_num = -1422 THEN oracle_err_mes := 'Controle levert meer dan <20><>n resultaat op.'; END IF;
IF oracle_err_num = 100 THEN oracle_err_mes := 'Controle levert geen resultaat op.'; END IF;
v_errormsg :=
'OTHERS (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
aaxx_imp_writelog (p_import_key,
'E',
v_errormsg,
v_error_hint || ' - ' || v_aanduiding);
v_error := 1;
END;
END LOOP;
IF v_error = 0
THEN
COMMIT;
ELSE
ROLLBACK;
END IF;
-- How many active records are now present?
SELECT COUNT ( * ) INTO v_newcountcnt FROM cnt_contract;
fac.imp_writelog (
p_import_key,
'S',
'Aantal contracten vooraf: '
|| TO_CHAR (v_oldcountcnt)
|| ' nu: '
|| TO_CHAR (v_newcountcnt),
'');
EXCEPTION
WHEN OTHERS
THEN
ROLLBACK;
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg :=
'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key,
'E',
v_errormsg,
v_error_hint || ' - ' || v_aanduiding);
COMMIT;
END;
/
-------------------------------------------
-- Import inspecties / MJOB
-------------------------------------------
CREATE OR REPLACE PROCEDURE aaxx_import_insp_mjob (p_import_key IN NUMBER)
IS
c_fielddelimitor VARCHAR2 (1) := ';';
v_newline VARCHAR2 (4000); -- Input line
v_errormsg VARCHAR (1000);
v_hint VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_ongeldig NUMBER (1);
v_aanduiding VARCHAR2 (200);
v_header_is_valid NUMBER (1);
v_dummy VARCHAR2 (1000);
v_count NUMBER;
v_count_rec NUMBER := 0 ; -- totaal aantal record in csv
v_count_verwerk NUMBER ; -- aantal te verwerken regels
v_count_n_taak NUMBER ; -- aantal nieuw aan te maken basistaken
v_count_n_taakobject NUMBER ; -- aantal nieuw aan te maken objecttaken
v_count_w_taak NUMBER ; -- aantal bestaande taken te wijzigen
-- De importvelden:
v_locatiecode VARCHAR2(1000);
v_objectomschrijving VARCHAR2(1000);
v_taakcategorie VARCHAR2(1000);
v_taakomschrijving VARCHAR2(1000);
v_taakomschrijving_nieuw VARCHAR2(1000); -- Vullen we in kolom extra_veld5
v_taakopmerking VARCHAR2(1000);
v_taakgroep VARCHAR2(1000);
v_taakprioriteit VARCHAR2(1000);
v_taakobjectpercentage VARCHAR2(1000);
v_taakobjectopmerking VARCHAR2(1000);
v_taakobjectperiode VARCHAR2(1000);
v_taakobjectstartjaar VARCHAR2(1000); -- Startjaar uit CSV
v_taakobjectstartjaar_d DATE;
v_object_aanmaak DATE; -- Datum aanmaak van Object
v_taakobjecteindjaar VARCHAR2(1000);
v_taakobjecteindjaar_d DATE;
v_taakobjectmateriaal VARCHAR2(1000);
v_taakobjectkosten VARCHAR2(1000);
v_taakobjecteenheid VARCHAR2(1000);
v_taakdienst VARCHAR2(1000);
v_deel_key NUMBER(10);
v_discipline_key NUMBER(10);
v_ismjob NUMBER;
v_taak_geschiedenis NUMBER (10); -- Vullen we in kolom extra_veld4
v_srtcontrole_key NUMBER(10);
v_srtcontrole_teller NUMBER(10);
v_ins_srtdeel_key NUMBER(10);
v_ins_srtdeel_code VARCHAR2(10);
v_ins_srtcontroledl_xcp_key NUMBER(10);
v_taakobject_startjaar_d DATE; -- Startjaar van de reeds in Facilitor gekoppelde objecttaak
CURSOR c
IS
SELECT *
FROM fac_imp_file
WHERE fac_import_key = p_import_key
ORDER BY fac_imp_file_index;
BEGIN
-- Eerst opruiming
DELETE FROM aaxx_imp_insp_mjob;
COMMIT;
v_header_is_valid := 0;
v_ongeldig := 0;
FOR rec IN c
LOOP
BEGIN
v_ongeldig := 0;
v_taak_geschiedenis := NULL ;
v_deel_key := NULL ;
v_ins_srtdeel_key := NULL ;
v_ins_srtdeel_code := NULL ;
v_srtcontrole_key := NULL ;
v_ins_srtcontroledl_xcp_key := NULL;
v_errormsg := 'Fout FETCH te importeren rij';
v_newline := rec.fac_imp_file_line;
v_errormsg := 'Fout opvragen te importeren rij:' || SUBSTR (v_newline, 1, 200);
v_aanduiding := '';
-- OUD: 'OBJECTOMSCHRIJVING;TAAKCATEGORIE;TAAKOMSCHRIJVING;TAAKOPMERKING;TAAKGROEP;TAAKPRIORITEIT;TAAKBTW;TAAKKOSTENPLAATSNR;TAAKKOSTENPLAATSOMSCHRIJVING;TAAKOBJECTPERCENTAGE;TAAKOBJECTOPMERKING;TAAKOBJECTEENHEID;TAAKOBJECTPERIODE;TAAKOBJECTSTARTJAAR;TAAKOBJECTEINDJAAR;TAAKOBJECTKOSTEN%
-- NIEUW (vanaf 2020-6): OBJECTIDENTIFICATIE;TAAKCATEGORIE;TAAKOMSCHRIJVING;TAAKOPMERKING;TAAKGROEP;TAAKPRIORITEIT;TAAKOBJECTPERCENTAGE;TAAKOBJECTOPMERKING;TAAKOBJECTEENHEID;TAAKOBJECTPERIODE;TAAKOBJECTSTARTJAAR;TAAKOBJECTEINDJAAR;TAAKOBJECTKOSTEN;DIENST;TAAKOMSCHRIJVINGNIEUW;
IF (REPLACE(UPPER (v_newline), ' ') LIKE 'OBJECTIDENTIFICATIE;TAAKCATEGORIE;TAAKOMSCHRIJVING;TAAKOPMERKING;TAAKGROEP;TAAKPRIORITEIT;TAAKOBJECTPERCENTAGE;TAAKOBJECTOPMERKING;TAAKOBJECTEENHEID;TAAKOBJECTPERIODE;TAAKOBJECTSTARTJAAR;TAAKOBJECTEINDJAAR;TAAKOBJECTKOSTEN;DIENST;TAAKOMSCHRIJVINGNIEUW%')
THEN
v_header_is_valid := 1;
ELSE
-- Lees alle veldwaarden
v_count_rec := v_count_rec + 1 ;
v_errormsg := 'Fout opvragen te importeren rij (object)';
fac.imp_getfield (v_newline, c_fielddelimitor, v_objectomschrijving);
v_errormsg := 'Fout opvragen te importeren rij (discipline)';
fac.imp_getfield (v_newline, c_fielddelimitor, v_taakcategorie);
v_errormsg := 'Fout opvragen te importeren rij (taakomschrijving)';
fac.imp_getfield (v_newline, c_fielddelimitor, v_taakomschrijving);
v_errormsg := 'Fout opvragen te importeren rij (taakopmerking)';
fac.imp_getfield (v_newline, c_fielddelimitor, v_taakopmerking);
v_errormsg := 'Fout opvragen te importeren rij (taakgroep)';
fac.imp_getfield (v_newline, c_fielddelimitor, v_taakgroep);
v_errormsg := 'Fout opvragen te importeren rij (prioriteit)';
fac.imp_getfield (v_newline, c_fielddelimitor, v_taakprioriteit);
v_errormsg := 'Fout opvragen te importeren rij (percentage)';
fac.imp_getfield (v_newline, c_fielddelimitor, v_taakobjectpercentage);
v_errormsg := 'Fout opvragen te importeren rij (opmerking)';
fac.imp_getfield (v_newline, c_fielddelimitor, v_taakobjectopmerking);
v_errormsg := 'Fout opvragen te importeren rij (eenheid)';
fac.imp_getfield (v_newline, c_fielddelimitor, v_taakobjecteenheid);
v_errormsg := 'Fout opvragen te importeren rij (periode)';
fac.imp_getfield (v_newline, c_fielddelimitor, v_taakobjectperiode);
v_errormsg := 'Fout opvragen te importeren rij (startjaar)';
fac.imp_getfield (v_newline, c_fielddelimitor, v_taakobjectstartjaar);
v_errormsg := 'Fout opvragen te importeren rij (eindjaar)';
fac.imp_getfield (v_newline, c_fielddelimitor, v_taakobjecteindjaar);
v_errormsg := 'Fout opvragen te importeren rij (materiaal)';
fac.imp_getfield (v_newline, c_fielddelimitor, v_taakobjectmateriaal);
v_errormsg := 'Fout opvragen te importeren rij (dienst)';
fac.imp_getfield (v_newline, c_fielddelimitor, v_taakdienst);
v_errormsg := 'Fout opvragen te importeren rij (taakomschrijvingnieuw)';
fac.imp_getfield (v_newline, c_fielddelimitor, v_taakomschrijving_nieuw);
IF v_header_is_valid = 1 THEN -- Als geldige header gepasseerd en csv-recordvelden gevuld dan gaan we eerst checken of data klopt
-- Controleer of het object bestaat
-- Controleer of object er meerdere keren in staat (valt terug naar OTHERS, regel 300)
BEGIN
v_errormsg :=
'Fout bij opzoeken object: ' || v_objectomschrijving ||' komt vaker dan 1 keer voor';
SELECT ins_deel_key
INTO v_deel_key
FROM ins_deel
WHERE ins_deel_omschrijving = v_objectomschrijving
AND ins_deel_verwijder IS NULL;
EXCEPTION WHEN NO_DATA_FOUND
THEN
aaxx_imp_writelog (
p_import_key, 'E', 'Object bestaat niet - Regel wordt niet verwerkt ',
rec.fac_imp_file_index || ' - ' || v_objectomschrijving);
v_ongeldig := 1;
END;
-- Controleer de taakcategorie
v_errormsg :=
'Fout bij controleren taakcategorie ' ;
BEGIN
SELECT ins_discipline_key, ctr_disc_params_ismjob
INTO v_discipline_key, v_ismjob
FROM ins_tab_discipline d, ctr_disc_params dp
WHERE dp.ctr_ins_discipline_key = d.ins_discipline_key
AND UPPER (d.ins_discipline_omschrijving) = TRIM(UPPER(v_taakcategorie));
EXCEPTION WHEN NO_DATA_FOUND
THEN
aaxx_imp_writelog (
p_import_key, 'E', 'Inspectie discipline niet gevonden - Regel wordt niet verwerkt ',
rec.fac_imp_file_index || ' - ' || v_taakcategorie);
v_ongeldig := 1;
END;
-- Controleer de eenheid
IF v_ismjob = 1
THEN
v_taakobjecteenheid := '4'; -- jaar
END IF;
IF v_taakobjecteenheid IS NOT NULL AND v_taakobjecteenheid NOT IN ('1', '2', '3', '4')
THEN
aaxx_imp_writelog (
p_import_key, 'E', 'Eenheid is niet correct gevuld (of leeg of 1,2,3,4) - Regel wordt niet verwerkt ',
rec.fac_imp_file_index || ' - ' || v_objectomschrijving || ' - ' || v_taakobjecteenheid);
v_ongeldig := 1;
END IF;
-- Controleer dienst
v_errormsg :=
'Fout controleren dienst ';
IF v_taakdienst IS NOT NULL
THEN
SELECT count(*)
INTO v_count
FROM prs_dienst
WHERE UPPER(prs_dienst_omschrijving) = UPPER(v_taakdienst);
IF v_count = 0
THEN
aaxx_imp_writelog (
p_import_key, 'W', 'Dienst onbekend - zal bij verwerken aangemaakt worden.. ',
rec.fac_imp_file_index || ' - ' || v_objectomschrijving || ' - ' || v_taakdienst);
END IF;
END IF;
-- Controleer de kosten - leeg of numeriek
v_errormsg :=
'Fout controleren kosten ';
IF v_taakobjectmateriaal IS NOT NULL AND fac.safe_to_number (REPLACE (v_taakobjectmateriaal, ',', '.')) IS NULL
THEN
aaxx_imp_writelog (
p_import_key, 'E', 'Kosten taakobject niet goed ingevuld - Regel wordt niet verwerkt.. ',
rec.fac_imp_file_index || ' - ' || v_objectomschrijving || 'Kosten csv: ' || v_taakobjectmateriaal);
v_ongeldig := 1;
END IF;
-- Controleer de taakperiode - Leeg of numeriek
v_errormsg :=
'Fout controleren taakperiode ';
IF v_taakobjectperiode IS NOT NULL AND fac.safe_to_number (v_taakobjectperiode) IS NULL
THEN
aaxx_imp_writelog (
p_import_key, 'E', 'Ongeldige taakobjectperiode - Regel wordt niet verwerkt ',
rec.fac_imp_file_index || ' - ' || v_objectomschrijving || ' - ' || v_taakobjectperiode);
v_ongeldig := 1;
END IF;
-- Controleer de taakprioriteit - Leeg of numeriek
v_errormsg :=
'Fout controleren taakprioriteit ';
IF v_taakprioriteit IS NOT NULL AND fac.safe_to_number (v_taakprioriteit) IS NULL
THEN
aaxx_imp_writelog (
p_import_key, 'E', 'Prioriteit taak niet goed ingevuld - Regel wordt niet verwerkt.. ',
rec.fac_imp_file_index || ' - ' || v_objectomschrijving || 'Kosten csv: ' || v_taakprioriteit);
v_ongeldig := 1;
END IF;
-- Controleer de startdatum
v_errormsg :=
'Fout bij controle startdatum ';
-- In geval jaar-invoer op datum zetten..
IF LENGTH (v_taakobjectstartjaar) = 4
THEN
v_taakobjectstartjaar := '01-01-' || v_taakobjectstartjaar;
END IF;
IF v_taakobjectstartjaar IS NOT NULL AND fac.safe_to_date (v_taakobjectstartjaar, 'dd-mm-yyyy') IS NULL
THEN
aaxx_imp_writelog (
p_import_key, 'E', 'Startdatum ongeldige invoer - Regel wordt niet verwerkt.. ',
rec.fac_imp_file_index || ' - ' || v_objectomschrijving || ' - Datum csv: ' || v_taakobjectstartjaar);
v_ongeldig := 1;
ELSE
v_taakobjectstartjaar_d := fac.safe_to_date(v_taakobjectstartjaar, 'dd-mm-yyyy') ;
END IF;
-- Hier controleren of de startdatum voor de Objectregisratiedatum ligt
v_errormsg :=
'Fout bij controle start- en objectregistratiedatum ';
IF v_deel_key IS NOT NULL AND v_ongeldig = 0
THEN
SELECT ins_deel_aanmaak
INTO v_object_aanmaak
FROM ins_deel
WHERE ins_deel_key = v_deel_key ;
IF v_taakobjectstartjaar_d < v_object_aanmaak
THEN
v_taakobjectstartjaar_d := v_object_aanmaak;
aaxx_imp_writelog (
p_import_key, 'W', 'Startdatum objecttaak ligt voor Objectregistratiedatum - Startdatum zal bij verwerken gelijkgezet worden aan de Objectregistratiedatum.. ',
rec.fac_imp_file_index || ' - ' || v_objectomschrijving || ' - Datum csv: ' || v_taakobjectstartjaar || ' wordt ' || v_object_aanmaak);
END IF;
END IF;
-- Controleer de einddatum
v_errormsg :=
'Fout bij controle einddatum ';
-- In geval jaar-invoer op datum zetten..
IF LENGTH (v_taakobjecteindjaar) = 4
THEN
v_taakobjecteindjaar := '31-12-' || v_taakobjecteindjaar;
END IF;
IF v_taakobjecteindjaar IS NOT NULL AND fac.safe_to_date (v_taakobjecteindjaar, 'dd-mm-yyyy') IS NULL
THEN
aaxx_imp_writelog (
p_import_key, 'E', 'Einddatum ongeldige invoer - Regel wordt niet verwerkt.. ',
rec.fac_imp_file_index || ' - ' || v_objectomschrijving || ' - Datum csv: ' || v_taakobjecteindjaar);
v_ongeldig := 1;
ELSE
v_taakobjecteindjaar_d := fac.safe_to_date(v_taakobjecteindjaar, 'dd-mm-yyyy') ;
END IF;
-- Hier controleren of de taak al bestaat...
v_errormsg :=
'Fout controleren nieuwe of bestaande taak ' || rec.fac_imp_file_index || ' - ' || v_objectomschrijving || ' - ' || v_taakomschrijving ;
IF v_deel_key IS NOT NULL AND v_ongeldig = 0
THEN
-- Eerst ins_srtdeel_code bepalen
SELECT d.ins_srtdeel_key, sd.ins_srtdeel_code
INTO v_ins_srtdeel_key, v_ins_srtdeel_code
FROM ins_deel d, ins_srtdeel sd
WHERE d.ins_deel_key = v_deel_key
AND d.ins_srtdeel_key = sd.ins_srtdeel_key
AND ins_deel_verwijder IS NULL;
-- Vervolgens kijken of er al een taak op aangemaakt is
SELECT count(*)
INTO v_srtcontrole_teller
FROM ins_srtcontrole
WHERE LOWER(ins_srtcontrole_omschrijving) =
SUBSTR (
TRIM (
v_ins_srtdeel_code
|| ' - '
|| LOWER(v_taakomschrijving)),
1,
60);
-- Zo ja, dan gaan we de srt_controle_key vullen
--- Ps. Komt soms bij heyday voor dat eenzelfde basistaak er meer dan 1 keer in staat (per ongeluk) en daarom pakken we hier dan de max(key).
IF v_srtcontrole_teller >0 THEN
SELECT max(ins_srtcontrole_key)
INTO v_srtcontrole_key
FROM ins_srtcontrole
WHERE LOWER(ins_srtcontrole_omschrijving) =
SUBSTR (
TRIM (
v_ins_srtdeel_code
|| ' - '
|| LOWER(v_taakomschrijving)),
1,
60) ;
ELSE -- Zo niet, dan is het dus geen bestaande standaard taak en gaan we straks in de update NIEUWE taak aanmaken
-- En passen dan ook maar gelijk taakomschrijving goed aan
v_errormsg := 'Fout bij aanpassen taakomschrijving ';
IF (LENGTH (TRIM(v_ins_srtdeel_code)) + 3 + LENGTH(TRIM(v_taakomschrijving))) > 60
THEN
aaxx_imp_writelog (
p_import_key, 'W', 'Nieuwe taak - Aangepast ivm lengte groter dan 60 ',
rec.fac_imp_file_index || ' - ' || v_objectomschrijving || ' - ' || v_taakomschrijving || ' wordt: ' || SUBSTR (TRIM (v_ins_srtdeel_code || ' - ' || v_taakomschrijving), 1, 60) );
END IF;
v_taakomschrijving := SUBSTR (TRIM (v_ins_srtdeel_code || ' - ' || v_taakomschrijving), 1, 60) ;
END IF;
END IF;
-- Hier controleren of voor de bestaande taak ook de objecttaak al bestaat...
v_errormsg :=
'Fout controleren nieuwe of bestaande objecttaak ' || rec.fac_imp_file_index || ' - ' || v_objectomschrijving || ' - ' || v_taakomschrijving ;
IF v_deel_key IS NOT NULL AND v_ongeldig = 0 AND v_srtcontrole_key IS NOT NULL THEN
SELECT max(t.ins_srtcontroledl_xcp_key), max(t.ins_srtcontroledl_xcp_startdat)
INTO v_ins_srtcontroledl_xcp_key, v_taakobject_startjaar_d
FROM ins_srtcontroledl_xcp t
WHERE t.ins_srtcontrole_key = v_srtcontrole_key AND t.ins_deel_key = v_deel_key ;
END IF;
-- Hier controleren of alle verplichte velden voor de nieuwe objecttaak correct zijn gevuld
---- Dit zijn: Startdatum + Eenheid + Periode + Taakgroep(?) + Percentage (?) + Kosten (?)
v_errormsg := 'Fout controleren verplichte velden bij nieuwe objecttaak ';
IF v_deel_key IS NOT NULL AND v_ongeldig = 0 AND v_ins_srtcontroledl_xcp_key IS NULL THEN
IF v_taakobjectstartjaar IS NULL THEN
aaxx_imp_writelog (
p_import_key, 'E', 'Startdatum niet ingevuld - Regel wordt niet verwerkt.. ',
rec.fac_imp_file_index || ' - ' || v_objectomschrijving);
v_ongeldig := 1;
END IF;
IF v_taakobjecteenheid IS NULL or v_taakobjecteenheid NOT IN ('1', '2', '3', '4') THEN
aaxx_imp_writelog (
p_import_key, 'E', 'Geen of ongeldige eenheid gevonden - Regel wordt niet verwerkt ',
rec.fac_imp_file_index || ' - ' || v_objectomschrijving || ' - ' || v_taakobjecteenheid);
v_ongeldig := 1;
END IF;
IF (v_taakobjectperiode IS NULL) OR (v_taakobjectperiode IS NOT NULL AND fac.safe_to_number (v_taakobjectperiode) IS NULL) THEN
aaxx_imp_writelog (
p_import_key, 'E', 'Geen of ongeldige taakobjectperiode - Regel wordt niet verwerkt ',
rec.fac_imp_file_index || ' - ' || v_objectomschrijving || ' - ' || v_taakobjectperiode);
v_ongeldig := 1;
END IF;
END IF;
-- Hier controleren of er al geschiedenis op de objecttaak zit en de startdatum afwijkt van degene meegegeven in csv
v_errormsg :=
'Fout controleren geschiedenis op objecttaak ';
IF v_deel_key IS NOT NULL AND v_ongeldig = 0 AND v_srtcontrole_key IS NOT NULL AND v_ins_srtcontroledl_xcp_key IS NOT NULL THEN
v_taak_geschiedenis := 0;
SELECT count(*)
INTO v_taak_geschiedenis
FROM ins_deelsrtcontrole
WHERE ins_deel_key = v_deel_key and ins_srtcontrole_key = v_srtcontrole_key ;
IF v_taak_geschiedenis > 0 AND v_taakobjectstartjaar IS NOT NULL AND v_taakobjectstartjaar_d <> v_taakobject_startjaar_d
THEN
aaxx_imp_writelog (
p_import_key, 'W', 'Op deze objecttaak zit al geschiedenis - afwijkende startdatum zal niet aangepast worden.. ',
rec.fac_imp_file_index || ' - ' || v_objectomschrijving || ' - ' || v_taakomschrijving || ' - ' || v_taakobjectstartjaar_d || ' vs. ' || v_taakobject_startjaar_d) ;
END IF;
END IF;
-- Nu kunnen we de tussentabel vullen
v_errormsg :=
'Fout bij toevoegen regel aan tabel '
|| v_objectomschrijving;
IF v_ongeldig = 0
THEN
INSERT INTO aaxx_imp_insp_mjob (locatiecode,
objectomschrijving ,
taakcategorie,
taakomschrijving,
taakopmerking,
taakgroep,
taakprioriteit,
taakobjectpercentage,
taakobjectopmerking,
taakobjectperiode,
taakobjectstartjaar,
taakobjecteindjaar,
taakobjectmateriaal,
taakobjecteenheid,
taakdienst,
extra_veld4, -- Gebruiken voor taakgeschiedenis
extra_veld5, -- Gebruiken voor taakomschrijving_nieuw
deel_key,
discipline_key,
ismjob,
ins_srtcontrole_key,
ins_srtcontroledl_xcp_key,
ins_srtdeel_key)
VALUES (v_locatiecode,
v_objectomschrijving,
v_taakcategorie,
v_taakomschrijving,
v_taakopmerking,
v_taakgroep,
v_taakprioriteit,
v_taakobjectpercentage,
v_taakobjectopmerking,
v_taakobjectperiode,
v_taakobjectstartjaar_d,
v_taakobjecteindjaar_d,
v_taakobjectmateriaal,
v_taakobjecteenheid,
v_taakdienst,
v_taak_geschiedenis,
v_taakomschrijving_nieuw,
v_deel_key,
v_discipline_key,
v_ismjob,
v_srtcontrole_key,
v_ins_srtcontroledl_xcp_key,
v_ins_srtdeel_key);
END IF;
END IF;
END IF;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
v_hint := v_errormsg;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg := 'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key, 'E', v_errormsg, v_hint);
END;
END LOOP;
-- Aantallen tellen voor logging
v_errormsg := 'Fout bij tellen aantallen voor logging ' ;
v_count_verwerk := 0 ; -- aantal te verwerken regels
v_count_n_taak := 0 ; -- aantal nieuw aan te maken basistaken
v_count_n_taakobject := 0 ; -- aantal nieuw aan te maken objecttaken
v_count_w_taak := 0 ; -- aantal bestaande (object)taken te wijzigen
SELECT count(*) INTO v_count_verwerk FROM aaxx_imp_insp_mjob ;
SELECT count(*) INTO v_count_n_taak FROM (SELECT DISTINCT(taakomschrijving) FROM aaxx_imp_insp_mjob WHERE ins_srtcontrole_key IS NULL) v ;
SELECT count(*) INTO v_count_n_taakobject FROM aaxx_imp_insp_mjob WHERE ins_srtcontroledl_xcp_key IS NULL ;
SELECT count(*) INTO v_count_w_taak FROM aaxx_imp_insp_mjob WHERE ins_srtcontrole_key IS NOT NULL AND ins_srtcontroledl_xcp_key IS NOT NULL ;
IF v_header_is_valid = 0
THEN
ROLLBACK;
aaxx_imp_writelog (p_import_key, 'E', v_aanduiding || 'Ongeldig importbestand', 'Toelichting: Verkeerde header. Niet conform specs. ');
ELSE
fac.imp_writelog (
p_import_key,
'S',
'IMPORT TAKEN: aantal te verwerken regels: ' || TO_CHAR (v_count_verwerk) || ' (van de ' || TO_CHAR (v_count_rec) || ' records in csv)'
|| CHR(13) || CHR(10)
|| 'Aantal nieuwe taken: ' || TO_CHAR (v_count_n_taak)
|| CHR(13) || CHR(10)
|| 'Aantal nieuwe objecttaken: ' || TO_CHAR (v_count_n_taakobject)
|| CHR(13) || CHR(10)
|| 'Aantal bestaande, te wijzigen (object)taken: ' || TO_CHAR (v_count_w_taak),
'');
END IF;
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
ROLLBACK;
oracle_err_num := SQLCODE;
v_hint := v_errormsg;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg := 'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key, 'E', v_errormsg, v_hint);
END aaxx_import_insp_mjob;
/
CREATE OR REPLACE PROCEDURE aaxx_update_insp_mjob (p_import_key IN NUMBER)
AS
CURSOR c_n -- nieuwe taken en objecttaken aanmaken..
IS
SELECT i.*
FROM aaxx_imp_insp_mjob i
WHERE i.ins_srtcontrole_key IS NULL;
CURSOR c_no -- nieuwe objecttaken aanmaken..
IS
SELECT i.*
FROM aaxx_imp_insp_mjob i
WHERE i.ins_srtcontrole_key IS NOT NULL AND i.ins_srtcontroledl_xcp_key IS NULL;
CURSOR c_m -- bestaande taak en/of objecttaak wijzigen
IS
SELECT i.*
FROM aaxx_imp_insp_mjob i
WHERE i.ins_srtcontrole_key IS NOT NULL AND i.ins_srtcontroledl_xcp_key IS NOT NULL;
v_errormsg VARCHAR2 (4000);
v_error_hint VARCHAR2 (4000);
oracle_err_mes VARCHAR2 (4000);
oracle_err_num VARCHAR2 (4000);
v_aanduiding VARCHAR2 (1000);
v_aanduiding_objecttaak VARCHAR2 (1000);
v_ongeldig NUMBER (1);
v_ins_srtcontrole_key NUMBER (10);
v_dienst_key NUMBER (10);
v_taak_al_aangemaakt NUMBER(10);
v_count_verwerk NUMBER := 0 ; -- aantal verwerkte records
v_count_n_taak NUMBER := 0 ; -- aantal nieuw aangemaakte basistaken
v_count_n_taakobject NUMBER := 0 ; -- aantal nieuw aangemaakte objecttaken
v_count_w_taak NUMBER := 0 ; -- aantal bestaande basistaken gewijzigd
v_count_w_taakobject NUMBER := 0 ; -- aantal bestaande object-taken gewijzigd
v_count_taak NUMBER := 0 ;
v_count_taakobject NUMBER := 0 ;
-- Velden
v_taakomschrijving VARCHAR2(1000);
v_ins_srtdeel_code VARCHAR2(10);
v_taakomschrijving_nieuw VARCHAR2(1000);
v_taakopmerking VARCHAR2(1000);
v_taakgroep VARCHAR2(1000);
v_taakdienst_key NUMBER(10);
v_taakdienst VARCHAR2(1000);
v_taakprioriteit NUMBER(3);
v_percentage NUMBER(3);
v_objecttaakopmerking VARCHAR2(1000);
v_eenheid NUMBER(3);
v_periode NUMBER(3);
v_startjaar DATE;
v_eindjaar DATE;
v_materiaalkosten NUMBER(10);
BEGIN
v_ongeldig := 0;
FOR rec IN c_n
LOOP
BEGIN
v_aanduiding :=
rec.objectomschrijving
|| ' / '
|| rec.taakcategorie
|| ' - '
|| rec.taakomschrijving;
-- Eenzelfde basistaak kan meerdere keren in CSV zitten.
-- Daarom gaan we in deze cursor eerst kijken of de basistaak er in deze LOOP al ingezet is.
-- Zo ja, dan kunnen we door naar de Objecttaak. Zo niet, dan gaan we eerst de basis
v_errormsg := 'Opzoeken basistaak ' || v_aanduiding;
v_taak_al_aangemaakt:=0;
SELECT count(*)
INTO v_taak_al_aangemaakt
FROM ins_srtcontrole
WHERE ins_srtcontrole_omschrijving = rec.taakomschrijving;
-- Als basistaak al in loop was aangemaakt nog even de key erbij zoeken
IF v_taak_al_aangemaakt >0
THEN
SELECT max(ins_srtcontrole_key)
INTO v_ins_srtcontrole_key
FROM ins_srtcontrole
WHERE ins_srtcontrole_omschrijving = rec.taakomschrijving;
END IF;
-- Basistaak aanmaken
IF v_taak_al_aangemaakt = 0
THEN
-- We gaan we eerst op zoek naar de dienst.
v_errormsg := 'Aanmaken/opzoeken dienst ' || v_aanduiding;
v_dienst_key := NULL;
IF rec.taakdienst IS NOT NULL
THEN
BEGIN
SELECT prs_dienst_key
INTO v_dienst_key
FROM prs_dienst
WHERE UPPER(prs_dienst_omschrijving) = UPPER(SUBSTR(rec.taakdienst, 1,60));
EXCEPTION WHEN NO_DATA_FOUND
THEN
INSERT INTO prs_dienst (prs_dienst_omschrijving)
VALUES (SUBSTR(rec.taakdienst,1,60))
RETURNING prs_dienst_key INTO v_dienst_key;
END;
END IF;
v_count_verwerk := v_count_verwerk + 1 ;
v_count_n_taak := v_count_n_taak +1 ;
v_errormsg := 'Aanmaken taak ' || v_aanduiding;
INSERT INTO ins_srtcontrole (
ins_srtinstallatie_key,
ins_srtcontrole_niveau,
ins_srtcontrole_omschrijving,
ctr_discipline_key,
ins_srtcontrole_info,
ins_srtcontrole_periode,
ins_srtcontrole_eenheid,
ins_srtcontrole_mode,
ins_srtcontrole_level,
ins_srtcontrole_opmerking,
prs_dienst_key)
VALUES (
rec.ins_srtdeel_key,
'S',
rec.taakomschrijving,
rec.discipline_key,
NULL,
0,
rec.taakobjecteenheid,
1,
COALESCE (rec.taakprioriteit, '0'),
rec.taakopmerking,
v_dienst_key)
RETURNING ins_srtcontrole_key
INTO v_ins_srtcontrole_key;
fac.trackaction('CTRSUP', v_ins_srtcontrole_key, 4, NULL, 'Periodieke taak toegevoegd - Via taakimport ');
END IF;
-- Nu kunnen we de objectaak aanmaken
v_count_n_taakobject := v_count_n_taakobject +1 ;
v_errormsg := 'Aanmaken taak object ' || v_aanduiding || ' ['
|| rec.deel_key || '|'
|| v_ins_srtcontrole_key || '|'
|| rec.taakobjectperiode || '|'
|| rec.taakobjecteenheid || '|'
|| fac.safe_to_number (REPLACE (rec.taakobjectmateriaal, ',', '.')) || '|'
|| ROUND(fac.safe_to_number (REPLACE (rec.taakobjectpercentage, ',', '.'))) || '|'
|| rec.taakgroep || '|'
|| rec.taakobjectopmerking || '|'
|| rec.taakobjectstartjaar || ']';
INSERT INTO ins_srtcontroledl_xcp (
ins_deel_key,
ins_srtcontrole_key,
ins_srtcontroledl_xcp_periode,
ins_srtcontroledl_xcp_eenheid,
ins_srtcontroledl_xcp_materia,
ins_srtcontroledl_xcp_perc,
ins_srtcontroledl_xcp_groep,
ins_srtcontroledl_xcp_opmerk,
ins_srtcontroledl_xcp_startdat)
VALUES (
rec.deel_key,
v_ins_srtcontrole_key,
rec.taakobjectperiode,
rec.taakobjecteenheid,
fac.safe_to_number (
REPLACE (rec.taakobjectmateriaal, ',', '.')),
ROUND(fac.safe_to_number (
REPLACE (rec.taakobjectpercentage, ',', '.'))),
rec.taakgroep,
rec.taakobjectopmerking,
rec.taakobjectstartjaar
);
EXCEPTION
WHEN OTHERS
THEN
v_error_hint := v_errormsg;
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg :=
v_errormsg
|| 'ORACLE (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
aaxx_imp_writelog (p_import_key,
'E',
v_errormsg,
v_error_hint);
v_ongeldig := 1;
END;
v_aanduiding := 'Einde loop ' || v_aanduiding;
END LOOP;
FOR rec IN c_no
LOOP
BEGIN
v_aanduiding :=
rec.objectomschrijving
|| ' / '
|| rec.taakcategorie
|| ' - '
|| rec.taakomschrijving;
-- We kunnen direct objectaak aanmaken
v_count_verwerk := v_count_verwerk + 1 ;
v_count_n_taakobject := v_count_n_taakobject +1 ;
v_errormsg := 'Aanmaken taak object ' || v_aanduiding || ' ['
|| rec.deel_key || '|'
|| rec.ins_srtcontrole_key || '|'
|| rec.taakobjectperiode || '|'
|| rec.taakobjecteenheid || '|'
|| fac.safe_to_number (REPLACE (rec.taakobjectmateriaal, ',', '.')) || '|'
|| ROUND(fac.safe_to_number (REPLACE (rec.taakobjectpercentage, ',', '.'))) || '|'
|| rec.taakgroep || '|'
|| rec.taakobjectopmerking || '|'
|| rec.taakobjectstartjaar || ']';
INSERT INTO ins_srtcontroledl_xcp (
ins_deel_key,
ins_srtcontrole_key,
ins_srtcontroledl_xcp_periode,
ins_srtcontroledl_xcp_eenheid,
ins_srtcontroledl_xcp_materia,
ins_srtcontroledl_xcp_perc,
ins_srtcontroledl_xcp_groep,
ins_srtcontroledl_xcp_opmerk,
ins_srtcontroledl_xcp_startdat)
VALUES (
rec.deel_key,
rec.ins_srtcontrole_key,
rec.taakobjectperiode,
rec.taakobjecteenheid,
fac.safe_to_number (
REPLACE (rec.taakobjectmateriaal, ',', '.')),
ROUND(fac.safe_to_number (
REPLACE (rec.taakobjectpercentage, ',', '.'))),
rec.taakgroep,
rec.taakobjectopmerking,
rec.taakobjectstartjaar);
EXCEPTION
WHEN OTHERS
THEN
v_error_hint := v_errormsg;
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg :=
v_errormsg
|| 'ORACLE (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
aaxx_imp_writelog (p_import_key,
'E',
v_errormsg,
v_error_hint);
v_ongeldig := 1;
END;
v_aanduiding := 'Einde loop ' || v_aanduiding;
END LOOP;
FOR rec IN c_m
LOOP
BEGIN
v_count_verwerk := v_count_verwerk + 1 ;
v_aanduiding :=
rec.objectomschrijving
|| ' / '
|| rec.taakcategorie
|| ' - '
|| rec.taakomschrijving;
-- Basis-taak - Taakomschrijving
v_errormsg := 'Fout taakomschrijving wijzigen ';
v_taakomschrijving := '' ; -- huidige taakomschrijving
v_taakomschrijving_nieuw := '' ;
IF rec.extra_veld5 IS NOT NULL
THEN
-- Eerst de objectsrt-code ophalen en nieuwe taakomschrijving bepalen
SELECT ins_srtdeel_code_upper
INTO v_ins_srtdeel_code
FROM ins_srtdeel
WHERE ins_srtdeel_key = rec.ins_srtdeel_key ;
v_taakomschrijving_nieuw := SUBSTR (TRIM (v_ins_srtdeel_code || ' - ' || rec.extra_veld5), 1, 60) ;
-- Huidige omschrijving ophalen
SELECT ins_srtcontrole_omschrijving
INTO v_taakomschrijving
FROM ins_srtcontrole
WHERE ins_srtcontrole_key = rec.ins_srtcontrole_key;
IF v_taakomschrijving <> v_taakomschrijving_nieuw
THEN
UPDATE ins_srtcontrole
SET ins_srtcontrole_omschrijving = v_taakomschrijving_nieuw
WHERE ins_srtcontrole_key = rec.ins_srtcontrole_key;
v_count_taak:= 1 ;
fac.trackaction('CTRSUP', rec.ins_srtcontrole_key, 4, NULL, 'Gewijzigd Taakomschrijving: ' || v_taakomschrijving || '-->' || v_taakomschrijving_nieuw);
END IF;
END IF;
-- Basis-taak - Taakopmerking
v_errormsg := 'Fout taakopmerking wijzigen ';
SELECT ins_srtcontrole_opmerking
INTO v_taakopmerking
FROM ins_srtcontrole
WHERE ins_srtcontrole_key = rec.ins_srtcontrole_key;
IF v_taakopmerking IS NULL THEN v_taakopmerking := '<leeg>' ;
END IF;
IF v_taakopmerking <> rec.taakopmerking AND rec.taakopmerking IS NOT NULL
THEN
UPDATE ins_srtcontrole
SET ins_srtcontrole_opmerking = rec.taakopmerking
WHERE ins_srtcontrole_key = rec.ins_srtcontrole_key;
v_count_taak:= 1 ;
fac.trackaction('CTRSUP', rec.ins_srtcontrole_key, 4, NULL, 'Gewijzigd Taakopmerking: ' || v_taakopmerking || '-->' || rec.taakopmerking);
END IF;
-- Basis-taak - Taakprioriteit
v_errormsg := 'Fout prioriteit wijzigen ';
SELECT ins_srtcontrole_level
INTO v_taakprioriteit
FROM ins_srtcontrole
WHERE ins_srtcontrole_key = rec.ins_srtcontrole_key;
IF rec.taakprioriteit IS NOT NULL AND v_taakprioriteit <> fac.safe_to_number(rec.taakprioriteit)
THEN
UPDATE ins_srtcontrole
SET ins_srtcontrole_level = fac.safe_to_number(rec.taakprioriteit)
WHERE ins_srtcontrole_key = rec.ins_srtcontrole_key;
v_count_taak:= 1 ;
fac.trackaction('CTRSUP', rec.ins_srtcontrole_key, 4, NULL, 'Gewijzigd Prioriteit: ' || v_taakprioriteit || '-->' || rec.taakprioriteit);
END IF;
-- Basis-taak - Dienst
v_errormsg := 'Fout dienst wijzigen ' || v_aanduiding;
v_taakdienst_key := NULL ;
v_taakdienst := '<leeg>' ;
-- Eerst huidige dienstkey en omschrijving ophalen
BEGIN
SELECT max(t.prs_dienst_key), max(d.prs_dienst_omschrijving)
INTO v_taakdienst_key, v_taakdienst
FROM ins_srtcontrole t, prs_dienst d
WHERE t.ins_srtcontrole_key = rec.ins_srtcontrole_key AND t.prs_dienst_key = d.prs_dienst_key AND t.prs_dienst_key IS NOT NULL ;
IF v_taakdienst IS NULL THEN v_taakdienst := '<leeg>' ; END IF;
IF v_taakdienst_key IS NULL THEN v_taakdienst_key := -1 ; END IF;
END;
-- Dan gaan we kijken of de dienst meegegeven in csv al bestaat
v_errormsg := 'Aanmaken/opzoeken dienst ' || v_aanduiding;
v_dienst_key := NULL;
IF rec.taakdienst IS NOT NULL
THEN
BEGIN
SELECT prs_dienst_key
INTO v_dienst_key
FROM prs_dienst
WHERE UPPER(prs_dienst_omschrijving) = UPPER(SUBSTR(rec.taakdienst, 1,60));
EXCEPTION WHEN NO_DATA_FOUND
THEN
INSERT INTO prs_dienst (prs_dienst_omschrijving)
VALUES (SUBSTR(rec.taakdienst,1,60))
RETURNING prs_dienst_key INTO v_dienst_key;
END;
END IF;
IF v_taakdienst_key <> v_dienst_key AND rec.taakdienst IS NOT NULL
THEN
UPDATE ins_srtcontrole
SET prs_dienst_key = v_dienst_key
WHERE ins_srtcontrole_key = rec.ins_srtcontrole_key;
v_count_taak:= 1 ;
fac.trackaction('CTRSUP', rec.ins_srtcontrole_key, 4, NULL, 'Gewijzigd taakdienst: ' || v_taakdienst || '-->' || rec.taakdienst);
END IF;
IF v_count_taak = 1 THEN
v_count_w_taak := v_count_w_taak +1 ;
END IF;
-- Gaan nu de object-taken aanpassen
v_aanduiding_objecttaak := rec.taakcategorie || ' - ' || v_ins_srtdeel_code || rec.taakomschrijving || CHR(13) || CHR(10) ;
-- Object-taak - Percentage
v_errormsg := 'Fout percentage wijzigen ';
SELECT COALESCE(ins_srtcontroledl_xcp_perc, 0)
INTO v_percentage
FROM ins_srtcontroledl_xcp
WHERE ins_srtcontroledl_xcp_key = rec.ins_srtcontroledl_xcp_key ;
IF rec.taakobjectpercentage IS NOT NULL AND v_percentage <> rec.taakobjectpercentage
THEN
UPDATE ins_srtcontroledl_xcp
SET ins_srtcontroledl_xcp_perc = ROUND(fac.safe_to_number (REPLACE (rec.taakobjectpercentage, ',', '.')))
WHERE ins_srtcontroledl_xcp_key = rec.ins_srtcontroledl_xcp_key ;
v_count_taakobject:= 1 ;
fac.trackaction ('INSUPD', rec.deel_key, sys_context('USERENV', 'CLIENT_IDENTIFIER'), NULL, v_aanduiding_objecttaak || 'Percentage: (' || v_percentage || ') --> ' || rec.taakobjectpercentage );
END IF;
-- Object-taak - Opmerking
v_errormsg := 'Fout opmerking objecttaak wijzigen ';
SELECT ins_srtcontroledl_xcp_opmerk
INTO v_objecttaakopmerking
FROM ins_srtcontroledl_xcp
WHERE ins_srtcontroledl_xcp_key = rec.ins_srtcontroledl_xcp_key ;
IF v_objecttaakopmerking IS NULL THEN v_objecttaakopmerking := '<leeg>' ;
END IF;
IF rec.taakobjectopmerking IS NOT NULL AND v_objecttaakopmerking <> rec.taakobjectopmerking
THEN
UPDATE ins_srtcontroledl_xcp
SET ins_srtcontroledl_xcp_opmerk = rec.taakobjectopmerking
WHERE ins_srtcontroledl_xcp_key = rec.ins_srtcontroledl_xcp_key ;
v_count_taakobject:= 1 ;
fac.trackaction ('INSUPD', rec.deel_key, sys_context('USERENV', 'CLIENT_IDENTIFIER'), NULL, v_aanduiding_objecttaak || 'Taakopmerking: (' || v_objecttaakopmerking || ') --> ' || rec.taakobjectopmerking );
END IF;
-- Object-taak - Eenheid
v_errormsg := 'Fout eenheid wijzigen ';
SELECT COALESCE(ins_srtcontroledl_xcp_eenheid,0)
INTO v_eenheid
FROM ins_srtcontroledl_xcp
WHERE ins_srtcontroledl_xcp_key = rec.ins_srtcontroledl_xcp_key ;
IF rec.taakobjecteenheid IS NOT NULL AND fac.safe_to_number(rec.taakobjecteenheid) <> v_eenheid AND rec.ismjob = 0
THEN
UPDATE ins_srtcontroledl_xcp
SET ins_srtcontroledl_xcp_eenheid = fac.safe_to_number(rec.taakobjecteenheid)
WHERE ins_srtcontroledl_xcp_key = rec.ins_srtcontroledl_xcp_key ;
v_count_taakobject:= 1 ;
fac.trackaction ('INSUPD', rec.deel_key, sys_context('USERENV', 'CLIENT_IDENTIFIER'), NULL, v_aanduiding_objecttaak || 'Eenheid: (' || v_eenheid || ') --> ' || rec.taakobjecteenheid );
END IF;
-- Object-taak - Periode
v_errormsg := 'Fout periode wijzigen ';
SELECT COALESCE(ins_srtcontroledl_xcp_periode,0)
INTO v_periode
FROM ins_srtcontroledl_xcp
WHERE ins_srtcontroledl_xcp_key = rec.ins_srtcontroledl_xcp_key ;
IF rec.taakobjectperiode IS NOT NULL AND fac.safe_to_number(rec.taakobjectperiode) <> v_periode
THEN
UPDATE ins_srtcontroledl_xcp
SET ins_srtcontroledl_xcp_periode = fac.safe_to_number(rec.taakobjectperiode)
WHERE ins_srtcontroledl_xcp_key = rec.ins_srtcontroledl_xcp_key ;
v_count_taakobject:= 1 ;
fac.trackaction ('INSUPD', rec.deel_key, sys_context('USERENV', 'CLIENT_IDENTIFIER'), NULL, v_aanduiding_objecttaak || 'Periode: (' || v_periode || ') --> ' || rec.taakobjectperiode );
END IF;
-- Object-taak - Taakgroep
v_errormsg := 'Fout taakgroep wijzigen ';
SELECT ins_srtcontroledl_xcp_groep
INTO v_taakgroep
FROM ins_srtcontroledl_xcp
WHERE ins_srtcontroledl_xcp_key = rec.ins_srtcontroledl_xcp_key ;
IF v_taakgroep IS NULL THEN v_taakgroep := '<leeg>' ;
END IF;
IF v_taakgroep <> rec.taakgroep AND rec.taakgroep IS NOT NULL
THEN
UPDATE ins_srtcontroledl_xcp
SET ins_srtcontroledl_xcp_groep = rec.taakgroep
WHERE ins_srtcontroledl_xcp_key = rec.ins_srtcontroledl_xcp_key ;
v_count_taakobject:= 1 ;
fac.trackaction ('INSUPD', rec.deel_key, sys_context('USERENV', 'CLIENT_IDENTIFIER'), NULL, v_aanduiding_objecttaak || 'Taakgroep: (' || v_taakgroep || ') --> ' || rec.taakgroep );
END IF;
-- Object-taak - Startjaar
v_errormsg := 'Fout startjaar wijzigen ';
SELECT ins_srtcontroledl_xcp_startdat
INTO v_startjaar
FROM ins_srtcontroledl_xcp
WHERE ins_srtcontroledl_xcp_key = rec.ins_srtcontroledl_xcp_key ;
IF rec.taakobjectstartjaar IS NOT NULL AND COALESCE(v_startjaar, TO_DATE('01-01-1900','dd-MM-yyyy')) <> rec.taakobjectstartjaar
AND (rec.extra_veld4 = 0 OR (rec.extra_veld4 > 0 AND v_startjaar IS NULL))
-- extra_veld4 is wel/geen geschiedenis op taak. Als er geschiedenis op zit taak startdatum niet aan te passen.
-- Uitzondering als in xcp startdaum op NULL is gekomen (zie bug/ticket 64450)
THEN
UPDATE ins_srtcontroledl_xcp
SET ins_srtcontroledl_xcp_startdat = rec.taakobjectstartjaar
WHERE ins_srtcontroledl_xcp_key = rec.ins_srtcontroledl_xcp_key ;
v_count_taakobject:= 1 ;
fac.trackaction ('INSUPD', rec.deel_key, sys_context('USERENV', 'CLIENT_IDENTIFIER'), NULL, v_aanduiding_objecttaak || 'Startjaar: (' || v_startjaar || ') --> ' || rec.taakobjectstartjaar );
END IF;
-- Object-taak - Eindjaar
v_errormsg := 'Fout eindjaar wijzigen ';
SELECT ins_srtcontroledl_xcp_eind
INTO v_eindjaar
FROM ins_srtcontroledl_xcp
WHERE ins_srtcontroledl_xcp_key = rec.ins_srtcontroledl_xcp_key ;
-- IF v_eindjaar IS NULL THEN v_eindjaar := TO_DATE(01-01-1900, 'DD-MM-YYYY'); END IF;
IF (v_eindjaar IS NULL and rec.taakobjecteindjaar IS NOT NULL) OR (v_eindjaar IS NOT NULL AND rec.taakobjecteindjaar IS NOT NULL AND v_eindjaar <> rec.taakobjecteindjaar)
THEN
UPDATE ins_srtcontroledl_xcp
SET ins_srtcontroledl_xcp_eind = rec.taakobjecteindjaar
WHERE ins_srtcontroledl_xcp_key = rec.ins_srtcontroledl_xcp_key ;
v_count_taakobject:= 1 ;
fac.trackaction ('INSUPD', rec.deel_key, sys_context('USERENV', 'CLIENT_IDENTIFIER'), NULL, v_aanduiding_objecttaak || 'Eindjaar: (' || v_eindjaar || ') --> ' || rec.taakobjecteindjaar );
END IF;
-- Object-taak - Kosten
v_errormsg := 'Fout kosten wijzigen ';
SELECT COALESCE(max(ins_srtcontroledl_xcp_materia),0)
INTO v_materiaalkosten
FROM ins_srtcontroledl_xcp
WHERE ins_srtcontroledl_xcp_key = rec.ins_srtcontroledl_xcp_key ;
IF v_materiaalkosten <> fac.safe_to_number (REPLACE (rec.taakobjectmateriaal, ',', '.')) AND rec.taakobjectmateriaal IS NOT NULL
THEN
UPDATE ins_srtcontroledl_xcp
SET ins_srtcontroledl_xcp_materia = fac.safe_to_number (REPLACE (rec.taakobjectmateriaal, ',', '.'))
WHERE ins_srtcontroledl_xcp_key = rec.ins_srtcontroledl_xcp_key ;
v_count_taakobject:= 1 ;
fac.trackaction ('INSUPD', rec.deel_key, sys_context('USERENV', 'CLIENT_IDENTIFIER'), NULL, v_aanduiding_objecttaak || 'Kosten: (' || v_materiaalkosten || ') --> ' || rec.taakobjectmateriaal );
END IF;
IF v_count_taakobject = 1 THEN
v_count_w_taakobject := v_count_w_taakobject + 1 ;
END IF;
EXCEPTION
WHEN OTHERS
THEN
v_error_hint := v_errormsg;
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg :=
v_errormsg
|| 'ORACLE (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
aaxx_imp_writelog (p_import_key,
'E',
v_errormsg,
v_error_hint);
v_ongeldig := 1;
END;
v_aanduiding := 'Einde loop ' || v_aanduiding;
END LOOP;
IF v_ongeldig = 0
THEN
COMMIT;
fac.imp_writelog (
p_import_key,
'S',
'IMPORT TAKEN: aantal verwerkte regels: ' || TO_CHAR (v_count_verwerk)
|| CHR(13) || CHR(10)
|| 'Aantal nieuwe taken ingelezen: ' || TO_CHAR (v_count_n_taak)
|| CHR(13) || CHR(10)
|| 'Aantal nieuwe objecttaken ingelezen: ' || TO_CHAR (v_count_n_taakobject)
|| CHR(13) || CHR(10)
|| 'Aantal bestaande basistaken gewijzigd: ' || TO_CHAR (v_count_w_taak)
|| CHR(13) || CHR(10)
|| 'Aantal bestaande objecttaken gewijzigd: ' || TO_CHAR (v_count_w_taakobject),
'');
ELSE
ROLLBACK;
END IF;
END;
/
-------------------------------------------
-- Import contracttermijnen / Factuurschema
-------------------------------------------
CREATE OR REPLACE PROCEDURE aaxx_import_factuurschema (p_import_key IN NUMBER)
IS
c_fielddelimitor VARCHAR2 (1) := ';';
v_newline VARCHAR2 (4000); -- Input line
v_errormsg VARCHAR (1000);
v_hint VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_ongeldig NUMBER (1);
v_aanduiding VARCHAR2 (200);
v_header_is_valid NUMBER (1);
v_dummy VARCHAR2 (1000);
-- De importvelden:
v_bedrijf_naam prs_bedrijf.prs_bedrijf_naam%TYPE;
v_contract_nr VARCHAR2 (100);
v_contract_key cnt_contract.cnt_contract_key%TYPE;
v_contract_nummer cnt_contract.cnt_contract_nummer%TYPE;
v_contract_versie cnt_contract.cnt_contract_versie%TYPE;
v_boekmaand cnt_factuurschema.cnt_factuurschema_boekmaand%TYPE;
v_bedrag cnt_factuurschema.cnt_factuurschema_bedrag%TYPE;
v_opmerking cnt_factuurschema.cnt_factuurschema_opmerking%TYPE;
CURSOR c
IS
SELECT *
FROM fac_imp_file
WHERE fac_import_key = p_import_key
ORDER BY fac_imp_file_index;
BEGIN
-- Eerst opruiming
DELETE FROM aaxx_imp_factuurschema;
COMMIT;
v_header_is_valid := 0;
v_ongeldig := 0;
FOR rec IN c
LOOP
BEGIN
v_bedrijf_naam := NULL;
v_contract_nr := NULL;
v_contract_key := NULL;
v_contract_nummer := NULL;
v_contract_versie := NULL;
v_boekmaand := NULL;
v_bedrag := NULL;
v_opmerking := NULL;
v_errormsg := 'Fout FETCH te importeren rij';
v_newline := rec.fac_imp_file_line;
v_errormsg := 'Fout opvragen te importeren rij:' || SUBSTR (v_newline, 1, 200);
v_aanduiding := '';
IF (UPPER (v_newline) LIKE 'BEDRIJF;CONTRACTNR;VERSIE;BOEKMAAND;BEDRAG;OPMERKING%')
THEN
v_header_is_valid := 1;
ELSE
-- Lees alle veldwaarden
v_errormsg := 'Fout opvragen te importeren rij (bedrijf)';
fac.imp_getfield (v_newline, c_fielddelimitor, v_dummy);
v_bedrijf_naam := SUBSTR (v_dummy, 1, 60);
v_errormsg := 'Fout opvragen te importeren rij (contract_nr) ' || v_bedrijf_naam;
fac.imp_getfield (v_newline, c_fielddelimitor, v_dummy);
v_contract_nummer := fac.safe_to_number (v_dummy);
v_errormsg := 'Fout opvragen te importeren rij (contract_versie) ' || v_bedrijf_naam;
fac.imp_getfield (v_newline, c_fielddelimitor, v_dummy);
v_contract_versie := fac.safe_to_number (v_dummy);
--
BEGIN
SELECT cnt_contract_key
INTO v_contract_key
FROM cnt_v_aanwezigcontract
WHERE TRIM (cnt_contract_nummer_intern) = TRIM (v_contract_nummer)
AND COALESCE(cnt_contract_versie,'0') = v_contract_versie;
v_contract_nr := v_contract_nummer || '.' || v_contract_versie;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
aaxx_imp_writelog (
p_import_key, 'E', 'Contract kan niet gevonden worden', v_bedrijf_naam || ' / ' || v_contract_nummer || '.' || v_contract_versie);
v_ongeldig := 1;
END;
v_errormsg := 'Fout opvragen te importeren rij (boekmaand) ' || v_bedrijf_naam || ' / ' || v_contract_nummer || '.' || v_contract_versie;
fac.imp_getfield (v_newline, c_fielddelimitor, v_dummy);
IF fac.safe_to_number (SUBSTR (v_dummy, 1, 4)) IS NOT NULL
AND SUBSTR (v_dummy, 5, 1) = '-'
AND fac.safe_to_number (SUBSTR (v_dummy, 6, 2)) IS NOT NULL
THEN
v_boekmaand := SUBSTR (v_dummy, 1, 7);
ELSE
aaxx_imp_writelog (
p_import_key, 'E', 'Ongeldige boekmaand',
v_bedrijf_naam|| ' / ' || v_contract_nummer || '.' || v_contract_versie || ' - ' || v_dummy);
v_ongeldig := 1;
END IF;
v_errormsg := 'Fout opvragen te importeren rij (bedrag)' || v_bedrijf_naam || ' / ' || v_contract_nummer || '.' || v_contract_versie;
fac.imp_getfield (v_newline, c_fielddelimitor, v_dummy);
v_dummy := REPLACE(v_dummy, ',', '.');
IF fac.safe_to_number (v_dummy) IS NOT NULL
THEN
v_bedrag := fac.safe_to_number (v_dummy);
ELSE
aaxx_imp_writelog (
p_import_key, 'E', 'Ongeldige bedrag',
v_bedrijf_naam || ' / ' || v_contract_nummer || '.' || v_contract_versie || ' - ' || v_boekmaand);
v_ongeldig := 1;
END IF;
--
v_errormsg := 'Fout opvragen te importeren rij (opmerking) ' || v_bedrijf_naam || ' / ' || v_contract_nummer || '.' || v_contract_versie;
fac.imp_getfield (v_newline, c_fielddelimitor, v_dummy);
v_opmerking := SUBSTR (v_dummy, 1, 320);
v_errormsg :=
'Fout bij toevoegen regel aan tabel '
|| v_bedrijf_naam
|| ' / '
|| v_contract_nummer
|| '.'
|| v_contract_versie
|| ' - '
|| v_boekmaand;
INSERT INTO aaxx_imp_factuurschema (cnt_contract_key,
cnt_factuurschema_bedrag,
cnt_factuurschema_boekmaand,
cnt_factuurschema_opmerking,
cnt_contract_nr,
prs_bedrijf_naam)
VALUES (v_contract_key,
v_bedrag,
v_boekmaand,
v_opmerking,
v_contract_nr,
v_bedrijf_naam);
END IF;
END;
END LOOP;
IF v_header_is_valid = 0
THEN
aaxx_imp_writelog (p_import_key, 'E', v_aanduiding || 'Ongeldig importbestand', 'Toelichting: ... ');
v_ongeldig := 1;
END IF;
IF v_ongeldig = 0
THEN
COMMIT;
ELSE
ROLLBACK;
END IF;
EXCEPTION
WHEN OTHERS
THEN
ROLLBACK;
oracle_err_num := SQLCODE;
v_hint := v_errormsg;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg := 'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key, 'E', v_errormsg, v_hint);
END aaxx_import_factuurschema;
/
CREATE OR REPLACE PROCEDURE aaxx_update_factuurschema (
p_import_key IN NUMBER)
AS
CURSOR c
IS
SELECT *
FROM aaxx_imp_factuurschema;
v_errormsg VARCHAR2(1000);
v_error_hint VARCHAR2(1000);
oracle_err_mes VARCHAR2(150);
oracle_err_num VARCHAR2(150);
v_aanduiding VARCHAR2(200);
v_ongeldig NUMBER(1);
v_van DATE;
v_tot DATE;
v_bm_start DATE;
v_bm_eind DATE;
v_som NUMBER(11,2);
v_contract_bedrag NUMBER(11,2);
v_factuurschema_key NUMBER(10);
v_disc_params_factuurschema NUMBER(1);
BEGIN
v_ongeldig := 0;
FOR rec IN c
LOOP
BEGIN
v_aanduiding := rec.prs_bedrijf_naam || ' / ' || rec.cnt_contract_nr || ' - ' || rec.cnt_factuurschema_boekmaand;
v_errormsg := 'Bepaling contract termijn ' || v_aanduiding;
SELECT cnt_disc_params_factuurschema dp, cnt_contract_looptijd_van, cnt_contract_looptijd_tot, cnt_contract_kosten
INTO v_disc_params_factuurschema, v_van, v_tot, v_contract_bedrag
FROM cnt_disc_params dp, cnt_contract c
WHERE c.ins_discipline_key = dp.cnt_ins_discipline_key
AND c.cnt_contract_key = rec.cnt_contract_key;
v_errormsg := 'Controleer of de boekmaand in de contracttermijn valt ' || v_aanduiding;
v_bm_start := TO_DATE(rec.cnt_factuurschema_boekmaand || '-01', 'yyyy-mm-dd');
v_bm_eind := ADD_MONTHS(v_bm_start, 1)-1;
IF NOT(v_van BETWEEN v_bm_start AND v_bm_eind OR
v_tot BETWEEN v_bm_start AND v_bm_eind OR
v_bm_start BETWEEN v_van AND v_tot)
THEN
-- ongeldige boekmaand
aaxx_imp_writelog (p_import_key, 'E', 'Boekmaand ligt niet binnen de contracttermijn ', v_aanduiding);
v_ongeldig := 1;
END IF;
v_errormsg := 'Controleer of het contract wel geconfigueerd is voor factuurschemas ' || v_aanduiding;
IF COALESCE(v_disc_params_factuurschema,0) <> 1
THEN
-- contracttype ondersteund geen factuurschema
aaxx_imp_writelog (p_import_key, 'E', 'Contracttype ondersteund geen factuurschema ', v_aanduiding);
v_ongeldig := 1;
END IF;
v_errormsg := 'Controleer of het totaal van het schema past bij het contract ' || v_aanduiding;
SELECT SUM(cnt_factuurschema_bedrag)
INTO v_som
FROM aaxx_imp_factuurschema
WHERE cnt_contract_key = rec.cnt_contract_key;
IF v_som <> v_contract_bedrag
THEN
-- Totaalbedrag schema wijkt af van contract bedrag
aaxx_imp_writelog (p_import_key, 'E', 'Totaalbedrag schema wijkt af van contract bedrag ', v_aanduiding || ' [' || v_contract_bedrag || ' vs ' || v_som || ']');
v_ongeldig := 1;
END IF;
v_errormsg := 'Controleer of de boekmaand al bestaat bij dit contract ' || v_aanduiding;
BEGIN
SELECT cnt_factuurschema_key
INTO v_factuurschema_key
FROM cnt_factuurschema
WHERE cnt_factuurschema_boekmaand = rec.cnt_factuurschema_boekmaand
AND cnt_contract_key = rec.cnt_contract_key;
UPDATE cnt_factuurschema
SET cnt_factuurschema_bedrag = rec.cnt_factuurschema_bedrag,
cnt_factuurschema_opmerking = cnt_factuurschema_opmerking
WHERE cnt_factuurschema_key = v_factuurschema_key;
EXCEPTION WHEN NO_DATA_FOUND
THEN
-- Boekmaand bestaat nog niet in het schema
v_errormsg := 'Aanmaken van nieuw factuurschemaregel ' || v_aanduiding;
INSERT INTO cnt_factuurschema (cnt_contract_key, cnt_factuurschema_bedrag, cnt_factuurschema_boekmaand, cnt_factuurschema_opmerking)
VALUES (rec.cnt_contract_key, rec.cnt_factuurschema_bedrag, rec.cnt_factuurschema_boekmaand, rec.cnt_factuurschema_opmerking);
END;
EXCEPTION
WHEN OTHERS
THEN
v_error_hint := v_errormsg;
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg :=
v_errormsg
|| 'ORACLE (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.imp_writelog (p_import_key,
'E',
v_errormsg,
v_error_hint);
v_ongeldig := 1;
END;
END LOOP;
IF v_ongeldig = 0
THEN
COMMIT;
ELSE
ROLLBACK;
END IF;
END;
/
--------------------------------
-- import ruimtegegevens
--------------------------------
CREATE OR REPLACE PROCEDURE aaxx_import_ruimte (
p_import_key IN NUMBER)
IS
c_fielddelimitor VARCHAR2 (1) := ';';
v_newline VARCHAR2 (4000); -- Input line
v_read VARCHAR2 (4000);
v_lastchar VARCHAR2 (1);
v_firstchar VARCHAR2 (1);
v_errormsg VARCHAR (1000);
v_hint VARCHAR (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_count NUMBER;
v_ongeldig NUMBER (1);
v_mode NUMBER (1);
v_aanduiding VARCHAR (200);
v_header_is_valid NUMBER (1);
-- De importvelden:
v_locatie_code VARCHAR2(100);
v_gebouw_code VARCHAR2(100);
v_verdieping_code VARCHAR2(100);
v_ruimte_key VARCHAR2(100);
v_ruimte_nr VARCHAR2(100);
v_ruimte_omschrijving VARCHAR2(100);
v_srtruimte_omschrijving VARCHAR2(100);
v_dienstniveau_omschr VARCHAR2(100);
v_ruimte_bruto_vloeropp VARCHAR2(100);
v_dummy VARCHAR2(100);
CURSOR c
IS
SELECT *
FROM fac_imp_file
WHERE fac_import_key = p_import_key
ORDER BY fac_imp_file_index;
rec c%ROWTYPE;
BEGIN
-- Eerst opruiming
DELETE FROM aaxx_imp_ruimte;
COMMIT;
v_header_is_valid := 0;
OPEN c;
IF (c%ISOPEN)
THEN
LOOP
BEGIN
v_errormsg := 'Fout FETCH te importeren rij';
FETCH c INTO rec;
EXIT WHEN c%NOTFOUND;
v_read := rec.fac_imp_file_line;
v_newline := v_read;
v_lastchar := SUBSTR (v_read, LENGTH (v_read), 1);
v_firstchar := SUBSTR (v_read, 1, 1);
-- voeg regels samen die een cr/lf bevatten.
IF v_firstchar = '"'
THEN
WHILE v_lastchar <> '"'
LOOP
BEGIN
FETCH c INTO rec;
EXIT WHEN c%NOTFOUND;
v_read := rec.fac_imp_file_line;
v_lastchar := SUBSTR (v_read, LENGTH (v_read), 1);
v_newline := v_newline || CHR (13) || CHR (10) || v_read;
END;
END LOOP;
END IF;
v_errormsg := 'Fout opvragen te importeren rij';
v_aanduiding := '';
v_ongeldig := 0;
IF (v_newline like
'LOCATIE;GEBOUW;VERDIEPING;ALG_RUIMTE_KEY;ALG_RUIMTE_NR;ALG_RUIMTE_OMSCHRIJVING;ALG_SRTRUIMTE_OMSCHRIJVING;MLD_DIENSTNIVEAU_OMSCHR;ALG_RUIMTE_BRUTO_VLOEROPP%')
THEN
v_header_is_valid := 1;
ELSE
-- Lees alle veldwaarden
v_errormsg :=
'Fout opvragen te importeren rij (alg_locatie_code) Regel [' || rec.fac_imp_file_index || ']';
fac.imp_getfield (v_newline, C_FIELDDELIMITOR, v_locatie_code);
--
v_errormsg :=
'Fout opvragen te importeren rij (alg_gebouw_code) Regel [' || rec.fac_imp_file_index || ']';
fac.imp_getfield (v_newline, C_FIELDDELIMITOR, v_gebouw_code);
--
v_errormsg :=
'Fout opvragen te importeren rij (alg_verdieping_code) Regel [' || rec.fac_imp_file_index || ']';
fac.imp_getfield (v_newline, C_FIELDDELIMITOR, v_verdieping_code);
--
v_errormsg :=
'Fout opvragen te importeren rij (alg_ruimte_key) Regel [' || rec.fac_imp_file_index || ']';
fac.imp_getfield (v_newline, C_FIELDDELIMITOR, v_ruimte_key);
--
v_errormsg :=
'Fout opvragen te importeren rij (alg_ruimte_nr) Regel [' || rec.fac_imp_file_index || ']';
fac.imp_getfield (v_newline, C_FIELDDELIMITOR, v_ruimte_nr);
--
v_errormsg :=
'Fout opvragen te importeren rij (alg_ruimte_omschrijving) Regel [' || rec.fac_imp_file_index || ']';
fac.imp_getfield (v_newline, C_FIELDDELIMITOR, v_ruimte_omschrijving);
--
v_errormsg :=
'Fout opvragen te importeren rij (alg_srtruimte_omschrijving) Regel [' || rec.fac_imp_file_index || ']';
fac.imp_getfield (v_newline, C_FIELDDELIMITOR, v_srtruimte_omschrijving);
--
v_errormsg :=
'Fout opvragen te importeren rij (mld_dienstniveau_omschr) Regel [' || rec.fac_imp_file_index || ']';
fac.imp_getfield (v_newline, C_FIELDDELIMITOR, v_dienstniveau_omschr);
--
v_errormsg :=
'Fout opvragen te importeren rij (alg_ruimte_bruto_vloeropp) Regel [' || rec.fac_imp_file_index || ']';
fac.imp_getfield (v_newline, C_FIELDDELIMITOR, v_ruimte_bruto_vloeropp);
--
-- Insert geformatteerde import record
IF v_ruimte_key IS NOT NULL
THEN
v_errormsg :=
'Fout bij toevoegen te importeren gebouw ['
|| v_gebouw_code
|| ']';
INSERT INTO aaxx_imp_ruimte(volgorde,
alg_locatie_code,
alg_gebouw_code,
alg_verdieping_code,
alg_ruimte_key,
alg_ruimte_nr,
alg_ruimte_omschrijving,
alg_srtruimte_omschrijving,
mld_dienstniveau_omschr,
alg_ruimte_bruto_vloeropp)
VALUES (rec.fac_imp_file_index,
SUBSTR(v_locatie_code, 1, 10),
SUBSTR(v_gebouw_code, 1, 12),
SUBSTR(v_verdieping_code, 1, 10),
v_ruimte_key,
SUBSTR(v_ruimte_nr, 1,10),
SUBSTR(v_ruimte_omschrijving, 1, 30),
SUBSTR(v_srtruimte_omschrijving, 1, 30),
SUBSTR(v_dienstniveau_omschr, 1, 60),
replace(v_ruimte_bruto_vloeropp, ',','.'));
END IF;
END IF;
END;
END LOOP;
END IF;
IF v_header_is_valid = 0
THEN
fac.imp_writelog (p_import_key,
'E',
v_aanduiding || 'Ongeldig importbestand',
'Toelichting: ... ');
END IF;
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
v_hint := v_errormsg;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg :=
'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key,
'E',
v_errormsg,
v_hint);
END aaxx_import_ruimte;
/
CREATE OR REPLACE PROCEDURE aaxx_update_ruimte (p_import_key IN NUMBER)
AS
CURSOR c
IS
SELECT *
FROM aaxx_imp_ruimte
ORDER BY volgorde;
v_aanduiding VARCHAR2 (200);
v_errormsg VARCHAR (1000);
v_error NUMBER (1);
v_error_hint VARCHAR (1000);
oracle_err_mes VARCHAR2 (150);
oracle_err_num VARCHAR2 (150);
currentversion fac_module.fac_module_version%TYPE;
v_srtruimte_key NUMBER;
v_dienstniveau_key NUMBER;
BEGIN
v_error := 0;
SELECT MAX (fac_module_version) INTO currentversion FROM fac_module;
fac.imp_writelog (
p_import_key,
'I',
'AAFM Ruimte update version ' || currentversion,
'$Revision$');
FOR rec IN c
LOOP
BEGIN
v_aanduiding :=
'regel['
|| rec.volgorde
|| '] plaats: '
|| rec.alg_locatie_code || '-'
|| rec.alg_gebouw_code || '-'
|| rec.alg_verdieping_code || '-'
|| rec.alg_ruimte_nr;
v_error_hint := 'Controle op ruimtesoort';
v_srtruimte_key := NULL;
IF rec.alg_srtruimte_omschrijving IS NOT NULL
THEN
SELECT alg_srtruimte_key
INTO v_srtruimte_key
FROM alg_srtruimte
WHERE alg_srtruimte_verwijder IS NULL
AND alg_srtruimte_upper = UPPER (rec.alg_srtruimte_omschrijving);
END IF;
v_error_hint := 'Controle op dienstniveau';
v_dienstniveau_key := NULL;
IF rec.mld_dienstniveau_omschr IS NOT NULL
THEN
SELECT mld_dienstniveau_key
INTO v_dienstniveau_key
FROM mld_dienstniveau
WHERE UPPER (TRIM (mld_dienstniveau_omschr)) = UPPER (TRIM (rec.mld_dienstniveau_omschr));
END IF;
v_error_hint := 'Aanpassen ruimtegegevens.';
UPDATE alg_ruimte SET alg_ruimte_nr = rec.alg_ruimte_nr,
alg_ruimte_omschrijving = rec.alg_ruimte_omschrijving,
alg_srtruimte_key = v_srtruimte_key,
mld_dienstniveau_key = v_dienstniveau_key,
alg_ruimte_bruto_vloeropp = rec.alg_ruimte_bruto_vloeropp
WHERE alg_ruimte_key = rec.alg_ruimte_key;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
IF oracle_err_num = -1422 THEN oracle_err_mes := 'Controle levert meer dan <20><>n resultaat op.'; END IF;
IF oracle_err_num = 100 THEN oracle_err_mes := 'Controle levert geen resultaat op.'; END IF;
v_errormsg :=
'OTHERS (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
aaxx_imp_writelog (p_import_key,
'E',
v_errormsg,
v_error_hint || ' - ' || v_aanduiding);
v_error := 1;
END;
END LOOP;
IF v_error = 0
THEN
COMMIT;
ELSE
ROLLBACK;
END IF;
EXCEPTION
WHEN OTHERS
THEN
ROLLBACK;
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg :=
'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key,
'E',
v_errormsg,
v_error_hint || ' - ' || v_aanduiding);
COMMIT;
END;
/
-------------------------------------------------------------------------------
-- IMPORTFUNCTIE - Import uplift
-------------------------------------------------------------------------------
CREATE OR REPLACE VIEW aaxx_v_rap_uplift (
jaar,
maand,
kostensoort,
soort_order,
leverancier,
nummer,
uplift
)
AS
SELECT jaar,
maand,
prs_kostensoort_oms,
soort_order,
prs_bedrijf_naam,
prs_leverancier_nr,
uplift
FROM aaxx_imp_uplift;
CREATE OR REPLACE PROCEDURE aaxx_import_uplift (
p_import_key IN NUMBER
)
AS
CURSOR c_cursor
IS
SELECT *
FROM fac_imp_file
WHERE fac_import_key = p_import_key
ORDER BY fac_imp_file_index;
v_newline VARCHAR2 (1000);
v_aanduiding VARCHAR2 (1000); -- Import line
v_field VARCHAR2 (100); -- Import field
v_fielddelimitor VARCHAR2 (1); -- Field seperator
v_errormsg VARCHAR (200);
v_errorhint VARCHAR (200);
v_count NUMBER;
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_skipfield VARCHAR2 (100);
-- De importvelden
v_jaar VARCHAR2 (100);
v_maand VARCHAR2 (100);
v_prs_kostensoort_oms VARCHAR2 (100);
v_soort_order VARCHAR2 (100);
v_prs_bedrijf_naam VARCHAR2 (100);
v_prs_leverancier_nr VARCHAR2 (100);
v_uplift VARCHAR2 (100);
header_found BOOLEAN;
BEGIN
-- Eerst opruiming
-- Init
header_found := FALSE;
v_fielddelimitor := ';';
FOR rec1 IN c_cursor
LOOP
BEGIN
v_newline := rec1.fac_imp_file_line;
v_aanduiding := v_newline;
IF SUBSTR (v_newline, 1, 3) = '?'
THEN
-- EF BB BF aangetroffen
fac.imp_writelog (p_import_key,
'W',
'Byte Order Mark aangetroffen',
'Bestand heeft onbehandeld UTF-8 formaat.'
);
v_newline := SUBSTR (v_newline, 4);
END IF;
fac.imp_getfield (v_newline, v_fielddelimitor, v_jaar);
fac.imp_getfield (v_newline, v_fielddelimitor, v_maand);
fac.imp_getfield (v_newline, v_fielddelimitor, v_prs_kostensoort_oms);
fac.imp_getfield (v_newline, v_fielddelimitor, v_soort_order);
fac.imp_getfield (v_newline, v_fielddelimitor, v_prs_bedrijf_naam);
fac.imp_getfield (v_newline, v_fielddelimitor, v_prs_leverancier_nr);
fac.imp_getfield (v_newline, v_fielddelimitor, v_uplift);
-- Skip until a valid header is found
IF UPPER(v_jaar) = 'JAAR'
AND UPPER(v_maand) = 'MAAND'
AND UPPER(v_prs_kostensoort_oms) = 'KOSTENSOORT'
AND UPPER(v_prs_leverancier_nr) = 'NUMMER'
AND UPPER(v_uplift) = 'UPLIFT'
THEN
-- Sla de kopregel over.
header_found := TRUE;
ELSIF (header_found AND v_jaar IS NOT NULL)
THEN
-- voeg nieuwe records toe
-- en wijzig bestaande records
-- ken ik de combinatie van jaar,maand, kostensoort, en leveranciernummer al?
SELECT count(*)
INTO v_count
FROM aaxx_imp_uplift
WHERE jaar = v_jaar
AND maand = v_maand
AND prs_kostensoort_oms = v_prs_kostensoort_oms
AND soort_order = v_soort_order
AND prs_leverancier_nr = v_prs_leverancier_nr;
IF v_count > 0 THEN
-- update de bestaande record(s)
UPDATE aaxx_imp_uplift
SET uplift = fac.safe_to_number (REPLACE(v_uplift,',','.'))
WHERE jaar = v_jaar
AND maand = v_maand
AND soort_order = v_soort_order
AND prs_kostensoort_oms = v_prs_kostensoort_oms
AND prs_leverancier_nr = v_prs_leverancier_nr;
ELSE
-- voeg nieuwe records toe
INSERT INTO aaxx_imp_uplift
(jaar,
maand,
prs_kostensoort_oms,
soort_order,
prs_bedrijf_naam,
prs_leverancier_nr,
uplift)
VALUES (fac.safe_to_number (v_jaar),
fac.safe_to_number (v_maand),
v_prs_kostensoort_oms,
v_soort_order,
v_prs_bedrijf_naam,
v_prs_leverancier_nr,
fac.safe_to_number (REPLACE(v_uplift,',','.')));
END IF;
SELECT count(*)
INTO v_count
FROM prs_bedrijf
WHERE prs_leverancier_nr = v_prs_leverancier_nr;
IF v_count = 0 THEN
fac.imp_writelog (p_import_key,
'W',
'Geen leverancier met nummer ['||v_prs_leverancier_nr||'] gevonden',
''
);
END IF;
SELECT count(*)
INTO v_count
FROM prs_kostensoort
WHERE prs_kostensoort_upper = upper(v_prs_kostensoort_oms);
IF v_count = 0 THEN
fac.imp_writelog (p_import_key,
'W',
'Geen kostensoort met code ['||v_prs_kostensoort_oms ||'] gevonden',
''
);
END IF;
END IF;
COMMIT;
END;
END LOOP;
IF NOT header_found
THEN
fac.imp_writelog (p_import_key,
'E',
'Geen geldige header aangetroffen',
'Bestand is geen geldig ruimtesoort importbestand.'
);
END IF;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg := 'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key, 'E', SUBSTR (v_errormsg, 1, 1000), v_aanduiding);
-- maak de importtabel leeg om te voorkomen dat er halve bestanden ingelezen worden.
END;
/
CREATE OR REPLACE PROCEDURE aaxx_update_uplift (p_import_key IN NUMBER)
AS
BEGIN
NULL;
END;
/
-------------------------------------------------------------------------------
-- Importfunctie om elementen op te voeren voor assetmanagement
--
--
-------------------------------------------------------------------------------
CREATE OR REPLACE PROCEDURE aaxx_import_asset (p_import_key IN NUMBER)
AS
CURSOR c_disc
IS
SELECT DISTINCT i.ins_discipline_omschrijving
FROM fac_imp_ins i
WHERE NOT EXISTS
( SELECT ins_discipline_key
FROM ins_discipline d
WHERE UPPER(d.ins_discipline_omschrijving) = UPPER(i.ins_discipline_omschrijving));
CURSOR c_srtgroep
IS
SELECT DISTINCT i.ins_discipline_omschrijving, i.ins_srtgroep_omschrijving
FROM fac_imp_ins i
WHERE NOT EXISTS
( SELECT d.ins_discipline_key
FROM ins_discipline d, ins_srtgroep sg
WHERE sg.ins_discipline_key = d.ins_discipline_key
AND UPPER(sg.ins_srtgroep_omschrijving) = UPPER(i.ins_srtgroep_omschrijving)
AND UPPER(d.ins_discipline_omschrijving) = UPPER(i.ins_discipline_omschrijving));
CURSOR c_srtdeel
IS
SELECT DISTINCT i.ins_discipline_omschrijving, i.ins_srtgroep_omschrijving, i.ins_srtdeel_omschrijving, i.ins_srtdeel_code
FROM fac_imp_ins i
WHERE NOT EXISTS
( SELECT d.ins_discipline_key
FROM ins_discipline d, ins_srtgroep sg, ins_srtdeel sd
WHERE sg.ins_discipline_key = d.ins_discipline_key
AND sd.ins_srtgroep_key = sg.ins_srtgroep_key
AND UPPER(sd.ins_srtdeel_omschrijving||'-'||sd.ins_srtdeel_code) = UPPER(i.ins_srtdeel_omschrijving || '-' || i.ins_srtdeel_code)
AND UPPER(sg.ins_srtgroep_omschrijving) = UPPER(i.ins_srtgroep_omschrijving)
AND UPPER(d.ins_discipline_omschrijving) = UPPER(i.ins_discipline_omschrijving));
BEGIN
fac_import_ins(p_import_key);
-- controleer of de discipline, groep en objectsoort wel bestaan.
FOR rec IN c_disc
LOOP
fac.imp_writelog (p_import_key, 'E', 'Discipline bestaat nog niet', rec.ins_discipline_omschrijving);
END LOOP;
FOR rec IN c_srtgroep
LOOP
fac.imp_writelog (p_import_key, 'E', 'Groep bestaat nog niet', rec.ins_discipline_omschrijving || ' / ' || rec.ins_srtgroep_omschrijving);
END LOOP;
FOR rec IN c_srtdeel
LOOP
fac.imp_writelog (p_import_key, 'E', 'Objectsoort bestaat nog niet', rec.ins_discipline_omschrijving || ' / ' || rec.ins_srtgroep_omschrijving || ' / ' || rec.ins_srtdeel_code || ' ' || rec.ins_srtdeel_omschrijving);
END LOOP;
END;
/
CREATE OR REPLACE PROCEDURE aaxx_update_asset (p_import_key IN NUMBER)
AS
v_count NUMBER;
BEGIN
SELECT count(*)
INTO v_count
FROM imp_log
WHERE fac_import_key = p_import_key
AND imp_log_status = 'E';
IF v_count = 0
THEN
fac_update_ins(p_import_key);
ELSE
fac.imp_writelog (p_import_key, 'E', 'Verwerk actie niet uitgevoerd ivm fouten in bestand', '');
END IF;
END;
/
-- Overzicht met geplande en uitgevoerde inspecties.
CREATE OR REPLACE VIEW aaxx_v_rap_asset_insp
(
ins_deel_key,
ins_discipline_omschrijving,
ins_srtgroep_omschrijving,
ins_srtdeel_code,
ins_deel_omschrijving,
alg_locatie_plaats,
alg_locatie_omschrijving,
alg_gebouw_omschrijving,
alg_plaatsaanduiding,
ins_srtcontrole_omschrijving,
volgende_controle,
laatste_controle,
gepland_controle
)
AS
SELECT idg.ins_deel_key,
idg.ins_discipline_omschrijving,
idg.ins_srtgroep_omschrijving,
idg.ins_srtdeel_upper,
idg.ins_deel_omschrijving,
l.alg_locatie_plaats,
l.alg_locatie_omschrijving,
idg.alg_gebouw_omschrijving,
idg.alg_plaatsaanduiding,
idg.ins_srtcontrole_omschrijving,
idg.nextdate,
DECODE (TRUNC (idg.ins_deel_aanmaak),
TRUNC (dc.ins_deelsrtcontrole_datum), TO_DATE (NULL),
dc.ins_deelsrtcontrole_datum)
uitgevoerd_op,
dc.ins_deelsrtcontrole_plandatum
gepland_op
FROM (SELECT i.*,
sc.*,
fac.nextcyclusdatedeel (i.ins_deel_key,
sc.ins_srtcontrole_key,
1)
nextdate,
(SELECT dsc.ins_deelsrtcontrole_key
FROM ins_deelsrtcontrole dsc
WHERE dsc.ins_deel_key = i.ins_deel_key
AND dsc.ins_srtcontrole_key = sc.ins_srtcontrole_key
AND NOT EXISTS
(SELECT dsc1.ins_deelsrtcontrole_key
FROM ins_deelsrtcontrole dsc1
WHERE dsc.ins_deel_key = dsc1.ins_deel_key
AND dsc.ins_srtcontrole_key =
dsc1.ins_srtcontrole_key
AND dsc1.ins_deelsrtcontrole_key >
dsc.ins_deelsrtcontrole_key))
ins_deelsrtcontrole_key1
FROM ins_v_deel_gegevens i,
ins_srtcontrole sc,
ins_srtcontroledl_xcp xcp
WHERE i.ins_discipline_key = sc.ins_srtinstallatie_key
AND i.ins_deel_key = xcp.ins_deel_key
AND sc.ins_srtcontrole_key = xcp.ins_srtcontrole_key) idg,
ins_deelsrtcontrole dc,
alg_locatie l
WHERE idg.ins_deelsrtcontrole_key1 = dc.ins_deelsrtcontrole_key(+)
AND idg.alg_locatie_key = l.alg_locatie_key
ORDER BY fac.safe_to_number (ins_deel_omschrijving);
-------------------------------------------------------------------------------
-- Importfunctie om contactpersonen bij bedrijven toe te voegen aan FACILITOR
--
--
-------------------------------------------------------------------------------
CREATE OR REPLACE PROCEDURE aaxx_import_contactpersoon (p_import_key IN NUMBER)
AS
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_errormsg VARCHAR2 (400);
v_errorhint VARCHAR2 (400);
v_count NUMBER;
BEGIN
v_errorhint := 'Generieke update';
-- de sequence array staat beschreven in FAC_PACF.SRC bij de fac_import_perslid_upd_body proc
prs.import_perslid (p_import_key,
'0;0;0;0;0;0;1;2;3;5;' ||
'4;0;0;0;0;7;8;9;0;11;' ||
'10;12;13;6;0;0;14;15;0;0;'||
'0;0;0;0;0;0;0;0;0;0;'||
'0;0;0;0;0;0',
'Afdelingscode;PersoonAchternaam;Tussenvoegsel;Voorletters;Voornaam;Titel/Aanhef;Telefoonnummer;Mobiel;Email;Functie;Personeelsnummer;Loginnaam;Password;Bedrijf;Autorisatieprofiel%'
);
-- Klantspecifieke aanpassingen
v_errorhint := 'Controle op Bedrijf';
FOR rec IN (SELECT distinct prs_kenmerk1 FROM fac_imp_perslid)
LOOP
IF rec.prs_kenmerk1 IS NOT NULL
THEN
SELECT count(*)
INTO v_count
FROM prs_bedrijf
WHERE prs_bedrijf_verwijder IS NULL
AND UPPER(prs_bedrijf_naam) = upper(rec.prs_kenmerk1);
IF v_count <> 1
THEN
fac.imp_writelog (p_import_key, 'E', 'Bedrijf: ' || rec.prs_kenmerk1 || ' komt ' || v_count || ' keer voor in de lijst met bedrijven.', v_errorhint);
END IF;
END IF;
END LOOP;
v_errorhint := 'Controle op Autorisatieprofiel';
FOR rec IN (SELECT prs_kenmerk2 FROM fac_imp_perslid)
LOOP
IF rec.prs_kenmerk2 IS NOT NULL
THEN
SELECT count(*)
INTO v_count
FROM fac_groep
WHERE upper(fac_groep_omschrijving) = upper(rec.prs_kenmerk2);
IF v_count <> 1
THEN
fac.imp_writelog (p_import_key, 'E', 'Autorisatieprofiel: ' || rec.prs_kenmerk2 || ' komt ' || v_count || ' keer voor in de lijst met autorisatieprofielen.', v_errorhint);
END IF;
END IF;
END LOOP;
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg := 'Error ' || oracle_err_num || '/' || oracle_err_mes;
fac.imp_writelog (p_import_key, 'E', v_errormsg, v_errorhint);
END aaxx_import_contactpersoon;
/
CREATE OR REPLACE PROCEDURE aaxx_update_contactpersoon (
p_import_key IN NUMBER)
IS
CURSOR c
IS
SELECT * FROM fac_imp_perslid;
v_count NUMBER;
v_perslid_key NUMBER;
v_bedrijf_key NUMBER;
v_groep_key NUMBER;
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_errormsg VARCHAR2 (400);
v_errorhint VARCHAR2 (400);
BEGIN
-- generic update
prs.update_perslid (p_import_key, 'NR', 'A');
FOR rec IN c
LOOP
BEGIN
v_errorhint := 'Zoek aangemaakt persoon.';
SELECT MAX (prs_perslid_key)
INTO v_perslid_key
FROM prs_perslid p
WHERE rec.prs_perslid_naam = p.prs_perslid_naam
AND COALESCE (rec.prs_perslid_voornaam, 'Voornaam') =
COALESCE (p.prs_perslid_voornaam, 'Voornaam')
AND COALESCE (rec.prs_perslid_tussenvoegsel, 'Tussenvoegsel') =
COALESCE (p.prs_perslid_tussenvoegsel, 'Tussenvoegsel')
AND COALESCE (rec.prs_perslid_voorletters, 'Voorletters') =
COALESCE (p.prs_perslid_voorletters, 'Voorletters')
AND p.prs_perslid_aanmaak > SYSDATE - 1
AND p.prs_perslid_verwijder IS NULL;
IF v_perslid_key IS NULL
THEN
fac.imp_writelog (
p_import_key,
'E',
'Persoon: '
|| rec.prs_perslid_naam
|| '-'
|| rec.prs_perslid_voornaam
|| '-'
|| rec.prs_perslid_voorletters
|| ' kan niet gevonden worden.',
v_errorhint);
ELSE
v_errorhint := 'Zoek bedrijf.';
SELECT MAX (prs_bedrijf_key)
INTO v_bedrijf_key
FROM prs_bedrijf
WHERE prs_bedrijf_verwijder IS NULL
AND UPPER (prs_bedrijf_naam) = UPPER (rec.prs_kenmerk1);
IF v_bedrijf_key IS NULL
THEN
fac.imp_writelog (
p_import_key,
'E',
'Bedrijf: ' || rec.prs_kenmerk1 || ' kan niet gevonden worden.',
v_errorhint);
ELSE
INSERT INTO prs_contactpersoon (prs_contactpersoon_naam,
prs_contactpersoon_tussenv,
prs_contactpersoon_voorletters,
prs_contactpersoon_voornaam,
prs_contactpersoon_titel,
prs_contactpersoon_telefoon_1,
prs_contactpersoon_telefoon_2,
prs_contactpersoon_email,
prs_perslid_key,
prs_bedrijf_key)
VALUES (rec.prs_perslid_naam,
rec.prs_perslid_tussenvoegsel,
rec.prs_perslid_voorletters,
rec.prs_perslid_voornaam,
rec.prs_perslid_titel,
rec.prs_perslid_telefoonnr,
rec.prs_perslid_mobiel,
rec.prs_perslid_email,
v_perslid_key,
v_bedrijf_key);
v_errorhint := 'Zoek autorisatiegroep.';
SELECT MAX (fac_groep_key)
INTO v_groep_key
FROM fac_groep
WHERE UPPER (rec.prs_kenmerk2) = UPPER (fac_groep_omschrijving);
IF v_groep_key IS NULL
THEN
fac.imp_writelog (
p_import_key,
'E',
'Autorisatiegroep: '
|| rec.prs_kenmerk2
|| ' kan niet gevonden worden.',
v_errorhint);
ELSE
INSERT INTO fac_gebruikersgroep (prs_perslid_key,
fac_groep_key)
VALUES (v_perslid_key, v_groep_key);
END IF;
END IF;
END IF;
END;
END LOOP;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg := 'Error ' || oracle_err_num || '/' || oracle_err_mes;
fac.imp_writelog (p_import_key,
'E',
v_errormsg,
v_errorhint);
END aaxx_update_contactpersoon;
/
-------------------------------------------------------------------------------
-- Importfunctie om personen die gedefinieerd zijn in de AAIT database ook in
-- de klantdatabase toe te voegen.
-- kenmerk_key 4 = prs_perslid_key in AAIT database
-- kenmerk_key 3 = personeelsnummer in AAIT
-- kenmerk_key 2 = kostenplaats in AD
-------------------------------------------------------------------------------
CREATE OR REPLACE PROCEDURE aaxx_import_aafm_medewerkers (
p_import_key IN NUMBER)
AS
BEGIN
NULL;
END;
/
CREATE OR REPLACE PROCEDURE aaxx_update_aafm_medewerkers (
p_import_key IN NUMBER)
AS
CURSOR c
IS
SELECT afdelingscode,
persoonachternaam,
tussenvoegsel,
voorletters,
voornaam,
titel,
telefoonnummer,
mobiel,
email,
functie,
loginnaam,
personeelsnummer,
dienstverband,
uurloon,
uurloon_intern,
kostenplaats,
prs_perslid_apikey,
i.prs_perslid_key prs_perslid_key_aait,
p.prs_perslid_key,
p.prs_perslid_nr
FROM aait.aait_imp_perslid i,
(SELECT prs_perslid_key,
prs_perslid_nr,
prs_kenmerklink_waarde aait_prs_perslid_key
FROM prs_perslid p, prs_kenmerklink kl
WHERE p.prs_perslid_key = kl.prs_link_key
AND kl.prs_kenmerk_key = 4
AND p.prs_perslid_verwijder IS NULL
AND kl.prs_kenmerklink_verwijder IS NULL) p
WHERE i.prs_perslid_key = p.aait_prs_perslid_key(+)
AND i.prs_perslid_key IS NOT NULL
AND ( INSTR(UPPER(i.distributie), SUBSTR (USER, 1, 4)) > 0 -- persoon moet gedistribueerd worden over deze Heyday omgeving
OR INSTR(i.distributie, '*') > 0) -- persoon moet gedistribueerd worden over alle Heyday omgevingen
AND i.personeelsnummer <> 'N/A';
CURSOR c_del
IS
SELECT prs_perslid_key,
prs_perslid_naam,
prs_perslid_voornaam,
prs_perslid_login,
prs_afdeling_omschrijving,
klo.prs_kenmerklink_waarde nr
FROM prs_perslid p, prs_kenmerklink klo, prs_afdeling a
WHERE p.prs_perslid_key = klo.prs_link_key
AND p.prs_afdeling_key = a.prs_afdeling_key
AND prs_kenmerk_key = 3 -- personeelsnummer AAFM
AND prs_perslid_verwijder IS NULL
AND NOT EXISTS
(SELECT prs_kenmerklink_key
FROM prs_kenmerklink kl, aait.aait_imp_perslid i
WHERE kl.prs_link_key = p.prs_perslid_key AND prs_kenmerk_key = 4 -- prs_perslid_key in AAIT
AND ( INSTR(UPPER(i.distributie), SUBSTR (USER, 1, 4)) > 0 -- persoon moet gedistribueerd worden over deze Heyday omgeving
OR INSTR(i.distributie, '*') > 0) -- persoon moet gedistribueerd worden over alle Heyday omgevingen
AND fac.safe_to_number(kl.prs_kenmerklink_waarde) = i.prs_perslid_key);
v_count NUMBER;
v_prs_bedrijf_key NUMBER;
v_prs_bedrijf_naam VARCHAR2 (100);
v_prs_afdeling_key NUMBER;
v_prs_srtperslid_key NUMBER;
v_prs_perslid_key NUMBER;
v_fac_groep_key NUMBER;
v_fac_default_key NUMBER;
v_errormsg VARCHAR2 (1000);
v_error_hint VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (2000);
BEGIN
v_errormsg := 'Controle of importbestand goed gevuld is.';
SELECT COUNT(*)
INTO v_count
FROM aait.aait_imp_perslid
WHERE prs_perslid_key IS NOT NULL;
IF v_count < 200 THEN
fac.imp_writelog (p_import_key, 'E', 'Import bestand bevat te weinig (' || v_count || ') records.', '');
RETURN;
END IF;
v_prs_bedrijf_naam := 'HEYDAY Facility Management';
v_errormsg := 'Check of autorisatiegroep al bestaat';
BEGIN
SELECT fac_groep_key
INTO v_fac_groep_key
FROM fac_groep
WHERE UPPER (fac_groep_omschrijving) = 'HEYDAY MEDEWERKER';
EXCEPTION
WHEN NO_DATA_FOUND
THEN
INSERT INTO fac_groep (fac_groep_omschrijving)
VALUES ('HEYDAY Medewerker')
RETURNING fac_groep_key
INTO v_fac_groep_key;
END;
v_errormsg := 'Zoek de default groep';
BEGIN
SELECT fac_groep_key
INTO v_fac_default_key
FROM fac_groep
WHERE UPPER (fac_groep_omschrijving) = '_DEFAULT';
EXCEPTION
WHEN NO_DATA_FOUND
THEN
fac.imp_writelog (p_import_key,
'E',
'Defaultgroep kan niet gevonden worden.' ,
'');
END;
-- Check of bedrijf HEYDAY Facility Management al bestaat
v_errormsg := 'Check of bedrijf bestaat';
BEGIN
SELECT prs_bedrijf_key
INTO v_prs_bedrijf_key
FROM prs_bedrijf
WHERE prs_bedrijf_naam_upper = UPPER(v_prs_bedrijf_naam)
AND prs_bedrijf_intern = 1
AND prs_bedrijf_verwijder IS NULL;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
INSERT INTO prs_bedrijf (prs_bedrijf_naam, prs_bedrijf_intern)
VALUES (v_prs_bedrijf_naam, 1)
RETURNING prs_bedrijf_key
INTO v_prs_bedrijf_key;
END;
-- Check of afdeling HEYDAY al bestaat
v_errormsg := 'Check of afdeling bestaat';
BEGIN
SELECT prs_afdeling_key
INTO v_prs_afdeling_key
FROM prs_afdeling
WHERE prs_afdeling_upper = 'HEYDAY'
AND prs_bedrijf_key = v_prs_bedrijf_key
AND prs_afdeling_verwijder IS NULL;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
INSERT INTO prs_afdeling (prs_afdeling_naam,
prs_afdeling_omschrijving,
prs_bedrijf_key)
VALUES ('HEYDAY', 'HEYDAY Facility Management', v_prs_bedrijf_key)
RETURNING prs_afdeling_key
INTO v_prs_afdeling_key;
END;
v_errormsg := 'Bepaal srtperslid';
SELECT prs_srtperslid_key
INTO v_prs_srtperslid_key
FROM prs_srtperslid
WHERE prs_srtperslid_omschrijving = 'Onbekend';
FOR rec IN c
LOOP
BEGIN
-- set alvast de variable om straks de kenmerken goed te kunnen opslaan.
v_prs_perslid_key := rec.prs_perslid_key;
-- als de persoon een personeelsnummer van de klant heeft gaan we niets aan zijn
-- gegevens aanpassen maar wordt de persoon alleen aan de autorisatiegroep toegevoegd.
IF rec.prs_perslid_nr IS NULL
THEN
IF rec.prs_perslid_key IS NULL
THEN
-- misschien kunnen we de persoon nog vinden op basis van personeelsnummer
v_errormsg := 'Zoek persoon met zelfde personeelsnummer ' || rec.personeelsnummer;
SELECT MAX(prs_perslid_key)
INTO v_prs_perslid_key
FROM prs_kenmerklink, prs_perslid
WHERE prs_kenmerk_key = 3
AND prs_kenmerklink_verwijder IS NULL
AND prs_link_key = prs_perslid_key
AND prs_perslid_verwijder IS NULL
AND rec.personeelsnummer = prs_kenmerklink_waarde;
-- persoon bestaat nog niet
v_errormsg := 'Controle login ' || rec.personeelsnummer;
SELECT count(prs_perslid_key)
INTO v_count
FROM prs_perslid
WHERE prs_perslid_oslogin = UPPER(rec.loginnaam);
IF v_count = 0 AND v_prs_perslid_key IS NULL THEN
v_errormsg := 'Toevoegen persoon ' || rec.personeelsnummer;
INSERT INTO prs_perslid (prs_afdeling_key,
prs_perslid_naam,
prs_perslid_tussenvoegsel,
prs_perslid_voorletters,
prs_perslid_voornaam,
prs_perslid_titel,
prs_perslid_telefoonnr,
prs_perslid_mobiel,
prs_perslid_email,
prs_srtperslid_key,
prs_perslid_oslogin,
prs_perslid_apikey,
prs_perslid_ingids,
prs_perslid_dienstverband,
prs_perslid_uurloon)
VALUES (v_prs_afdeling_key,
rec.persoonachternaam,
rec.tussenvoegsel,
rec.voorletters,
rec.voornaam,
rec.titel,
SUBSTR(rec.telefoonnummer,1,15),
rec.mobiel,
rec.email,
v_prs_srtperslid_key,
rec.loginnaam,
rec.prs_perslid_apikey,
NULL,
fac.safe_to_number (
REPLACE (rec.dienstverband, ',', '.')),
fac.safe_to_number (REPLACE (rec.uurloon, ',', '.')))
RETURNING prs_perslid_key
INTO v_prs_perslid_key;
ELSE
fac.imp_writelog (p_import_key,
'E',
'Login bestaat al bij andere persoon. (' || rec.persoonachternaam || ' - ' || rec.loginnaam || ' - ' || rec.personeelsnummer || ')' ,
'');
END IF;
ELSE
-- persoon bestaat al
v_errormsg := 'Aanpassen persoon ' || rec.personeelsnummer;
UPDATE prs_perslid
SET prs_afdeling_key = v_prs_afdeling_key,
prs_perslid_naam = rec.persoonachternaam,
prs_perslid_tussenvoegsel = rec.tussenvoegsel,
prs_perslid_voorletters = rec.voorletters,
prs_perslid_voornaam = rec.voornaam,
prs_perslid_titel = rec.titel,
prs_perslid_telefoonnr = COALESCE(prs_perslid_telefoonnr, SUBSTR(rec.telefoonnummer,1,15)),
prs_perslid_mobiel = COALESCE(prs_perslid_mobiel, rec.mobiel),
prs_perslid_email = COALESCE(prs_perslid_email, rec.email),
prs_srtperslid_key = v_prs_srtperslid_key,
prs_perslid_oslogin = rec.loginnaam,
prs_perslid_apikey = rec.prs_perslid_apikey,
prs_perslid_ingids = NULL,
prs_perslid_dienstverband =
fac.safe_to_number (
REPLACE (rec.dienstverband, ',', '.')),
prs_perslid_uurloon =
fac.safe_to_number (REPLACE (rec.uurloon, ',', '.'))
WHERE prs_perslid_key = rec.prs_perslid_key;
END IF;
-- verwijder de zojuist toegevoegde persoon uit de default groep.
DELETE fac_gebruikersgroep
WHERE fac_groep_key = v_fac_default_key
AND prs_perslid_key = v_prs_perslid_key;
END IF;
IF v_prs_perslid_key IS NOT NULL
THEN
v_errormsg := 'Toevoegen key naar AAIT prs_perslid_key kenmerk ' || v_prs_perslid_key;
aaxx.set_prs_kenmerk (p_import_key,
'P',
4,
v_prs_perslid_key,
rec.prs_perslid_key_aait);
v_errormsg := 'Toevoegen personeelsnummer kenmerk ' || v_prs_perslid_key;
aaxx.set_prs_kenmerk (p_import_key,
'P',
3,
v_prs_perslid_key,
rec.personeelsnummer);
v_errormsg := 'Toevoegen kostenplaats kenmerk ' || v_prs_perslid_key;
aaxx.set_prs_kenmerk (p_import_key,
'P',
2,
v_prs_perslid_key,
rec.kostenplaats);
v_errormsg := 'Toevoegen uurloon intern kenmerk ' || v_prs_perslid_key;
aaxx.set_prs_kenmerk (p_import_key,
'P',
6,
v_prs_perslid_key,
rec.uurloon_intern);
IF rec.afdelingscode = 'SD'
THEN
-- Servicedesk autorisatie toevoegen.
v_errormsg := 'Toevoegen SD autorisatie ' || rec.personeelsnummer;
INSERT INTO fac_gebruikersgroep (prs_perslid_key, fac_groep_key)
(SELECT v_prs_perslid_key, fac_groep_key
FROM fac_groep g
WHERE TRIM (fac_groep_upper) = 'HEYDAY SERVICEDESK'
AND NOT EXISTS
(SELECT fac_gebruikersgroep_key
FROM fac_gebruikersgroep gg
WHERE gg.prs_perslid_key = v_prs_perslid_key
AND gg.fac_groep_key = g.fac_groep_key));
-- Servicedesk medewerkers mandateren voor alle kostenplaatsen.
v_errormsg := 'Toevoegen SD mandaat ' || rec.personeelsnummer;
DELETE prs_perslidkostenplaats
WHERE prs_perslid_key = v_prs_perslid_key
AND prs_kostenplaats_key IS NOT NULL;
INSERT INTO prs_perslidkostenplaats (prs_perslid_key)
(SELECT v_prs_perslid_key FROM DUAL
WHERE NOT EXISTS
(SELECT prs_perslid_key
FROM prs_perslidkostenplaats pkp
WHERE pkp.prs_perslid_key = v_prs_perslid_key));
END IF;
-- voeg iedereen toe aan de gebruikersgroep HEYDAY Medewerker
INSERT INTO fac_gebruikersgroep (fac_groep_key, prs_perslid_key)
SELECT fac_groep_key, prs_perslid_key
FROM fac_groep g, prs_perslid p
WHERE g.fac_groep_key = v_fac_groep_key
AND p.prs_perslid_key = v_prs_perslid_key
AND NOT EXISTS
(SELECT fac_gebruikersgroep_key
FROM fac_gebruikersgroep gg
WHERE gg.prs_perslid_key = p.prs_perslid_key
AND gg.fac_groep_key = g.fac_groep_key);
END IF;
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
v_error_hint := v_errormsg;
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg :=
v_errormsg
|| 'ORACLE (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.imp_writelog (p_import_key,
'E',
v_errormsg,
v_error_hint);
COMMIT; -- tbv logging
END;
END LOOP;
DELETE fac_gebruikersgroep
WHERE fac_groep_key = v_fac_groep_key
AND prs_perslid_key NOT IN
(SELECT p.prs_perslid_key
FROM aait.aait_imp_perslid i,
prs_perslid p,
prs_kenmerklink kl
WHERE p.prs_perslid_key = kl.prs_link_key
AND kl.prs_kenmerk_key = 3
AND i.personeelsnummer = kl.prs_kenmerklink_waarde);
-- probeer personen te verwijderen die niet meer voorkomen in het importbestand
FOR rec_del IN c_del
LOOP
BEGIN
IF COALESCE(rec_del.prs_perslid_login, SYSDATE -11) > SYSDATE -10
THEN
fac.imp_writelog (p_import_key,
'I',
'Persoon ' || rec_del.prs_perslid_naam || ' (' || rec_del.prs_perslid_voornaam || ') zou verwijderd moeten worden',
'');
UPDATE prs_perslid
SET prs_perslid_oslogin = NULL,
prs_perslid_oslogin2 = NULL
WHERE prs_perslid_key = rec_del.prs_perslid_key;
ELSE
fac.imp_writelog (p_import_key,
'I',
'Persoon ' || rec_del.prs_perslid_naam || ' (' || rec_del.prs_perslid_voornaam || ') zou verwijderd moeten worden',
'');
aaxx.prs_del_perslid (p_import_key, rec_del.prs_perslid_key, 0, 0);
END IF;
END;
END LOOP;
END;
/
-- view om ongeldige records te vinden.
CREATE OR REPLACE VIEW aaxx_rap_perslid_mismatch (hide_f_index, naam, voornaam, lastlogin, afdeling, AAFMpersoneelsnummer)
AS
SELECT sysdate - prs_perslid_login,
prs_perslid_naam,
prs_perslid_voornaam,
prs_perslid_login,
prs_afdeling_omschrijving,
klo.prs_kenmerklink_waarde nr
FROM prs_perslid p, prs_kenmerklink klo, prs_afdeling a
WHERE p.prs_perslid_key = klo.prs_link_key
AND p.prs_afdeling_key = a.prs_afdeling_key
AND prs_kenmerk_key = 3
AND prs_perslid_verwijder IS NULL
AND prs_perslid_login IS NOT NULL
AND NOT EXISTS
(SELECT prs_kenmerklink_key
FROM prs_kenmerklink
WHERE prs_link_key = p.prs_perslid_key AND prs_kenmerk_key = 4);
-------------------------------------------------------------------------------
-- KOPPELINGEN MET LEVERANCIERS
-------------------------------------------------------------------------------
CREATE OR REPLACE PROCEDURE aaxx_import_opdrstat_strukton (
p_import_key IN NUMBER)
AS
c_delim VARCHAR2 (1) := ';';
v_newline VARCHAR2 (1000); -- Input line
v_errormsg VARCHAR2 (4000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_aanduiding VARCHAR2 (1200);
v_dummy VARCHAR2 (200);
header_is_valid NUMBER := 0;
v_count NUMBER;
v_count_tot NUMBER (10) := 0;
v_count_import NUMBER (10) := 0;
v_ongeldig NUMBER (1) := 0;
-- De importvelden
v_mld_opdr_opmerking VARCHAR2 (4000);
v_mld_opdr_key NUMBER (10);
v_mld_opdr_key_tekst VARCHAR2 (100);
v_extern_nummer VARCHAR2 (100);
v_status NUMBER (10);
v_status_tekst VARCHAR2 (100);
v_status_code VARCHAR2 (100);
v_datumtijd DATE;
v_datumtijd_tekst VARCHAR2 (100);
v_opmerking VARCHAR2 (3000);
-- Overige velden:
CURSOR c1
IS
SELECT *
FROM fac_imp_file
WHERE fac_import_key = p_import_key
ORDER BY fac_imp_file_index;
BEGIN
-- Eerst opruiming
DELETE FROM aaxx_imp_opdrstat_strukton;
COMMIT;
FOR rec1 IN c1
LOOP
BEGIN
v_newline := rec1.fac_imp_file_line;
v_errormsg := 'Fout opvragen te importeren rij';
v_aanduiding := '';
v_ongeldig := 0;
fac.imp_getfield (v_newline, c_delim, v_mld_opdr_key_tekst);
fac.imp_getfield (v_newline, c_delim, v_extern_nummer);
fac.imp_getfield (v_newline, c_delim, v_status_code); -- typeID
fac.imp_getfield (v_newline, c_delim, v_datumtijd_tekst);
fac.imp_getfield (v_newline, c_delim, v_status_tekst);
fac.imp_getfield (v_newline, c_delim, v_opmerking);
v_opmerking := substr(v_opmerking, 1, 1000);
-- verwijder de markering voor cr/lf die we zelf in de stylesheet toegevoegd hebben.
v_opmerking := replace(v_opmerking, '@@',CHR (13));
v_aanduiding :=
'['
|| v_extern_nummer
|| '|'
|| v_mld_opdr_key_tekst
|| '|'
|| v_status_tekst
|| '|'
|| v_opmerking
|| '] ';
-- Ik controleer of ik een geldige header heb, dat is: in de juiste kolommen
-- de juiste kolomkop. Ik controleer daarbij ALLE kolommen!
-- Ik negeer alles totdat ik een geldige header ben gepasseerd.
IF (header_is_valid = 0)
THEN
IF UPPER (TRIM (v_mld_opdr_key_tekst)) = 'REFERENCEID'
AND UPPER (TRIM (v_extern_nummer)) = 'SERVICEREQUESTID'
AND UPPER (TRIM (v_status_code)) = 'TYPEID'
AND UPPER (TRIM (v_datumtijd_tekst)) = 'DATETIME'
AND UPPER (TRIM (v_opmerking)) = 'REMARKS'
THEN
header_is_valid := 1;
END IF;
ELSE
v_count_tot := v_count_tot + 1;
-- Controleer alle veldwaarden
v_errormsg := 'Fout inlezen mld_opdr_key [' || v_aanduiding || ']';
v_mld_opdr_key := TRIM (v_mld_opdr_key);
BEGIN
SELECT o.mld_opdr_key, o.mld_opdr_opmerking
INTO v_mld_opdr_key, v_mld_opdr_opmerking
FROM mld_opdr o, mld_melding m, ins_tab_discipline d, ins_srtdiscipline sd, mld_stdmelding std
WHERE o.mld_melding_key = m.mld_melding_key
AND m.mld_stdmelding_key = std.mld_stdmelding_key
AND std.mld_ins_discipline_key = d.ins_discipline_key
AND d.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
AND sd.ins_srtdiscipline_prefix || m.mld_melding_key || '/' || o.mld_opdr_bedrijfopdr_volgnr = v_mld_opdr_key_tekst;
EXCEPTION WHEN NO_DATA_FOUND THEN
BEGIN
fac.imp_writelog (p_import_key, 'W', 'Opdracht kan niet gevonden worden. [' || v_aanduiding || ']', '');
-- kijk nu of de opdracht gevonden kan worden a.d.h.v het Struktonnummer
SELECT o.mld_opdr_key, o.mld_opdr_opmerking
INTO v_mld_opdr_key, v_mld_opdr_opmerking
FROM mld_opdr o, mld_kenmerkopdr ko, mld_kenmerk k
WHERE o.mld_opdr_key = ko.mld_opdr_key
AND ko.mld_kenmerk_key = k.mld_kenmerk_key
AND k.mld_srtkenmerk_key = 35
AND ko.mld_kenmerkopdr_waarde = v_extern_nummer;
EXCEPTION WHEN OTHERS THEN
v_ongeldig := 1;
v_errormsg := 'Opdracht kan niet gevonden worden (intern/externnr). [' || v_aanduiding || ']';
v_mld_opdr_key := NULL;
END;
END;
IF v_ongeldig = 0
THEN
v_errormsg :=
'Fout bij bepalen status [' || v_aanduiding || ']';
CASE
WHEN v_status_code = '5'
THEN
v_status := 5; -- uitgegeven
WHEN v_status_code = '10'
THEN
v_status := 8; -- geaccepteerd
WHEN v_status_code = '20' -- monteur gereed
THEN
v_status := 6; -- afgemeld
WHEN v_status_code = '25' -- specialist gereed
THEN
v_status := 6; -- afgemeld
WHEN v_status_code = '30' -- technisch gereed
THEN
v_status := 6; -- afgemeld
-- For future use
-- WHEN v_status_code = '40' -- uitgeprijst
-- THEN
-- v_status := 6; -- afgemeld
WHEN v_status_code = '70'
THEN
v_status := 1; -- geannuleerd
WHEN v_status_code = '80'
THEN
v_status := 1; -- afgewezen
ELSE
v_status := NULL;
v_ongeldig := 1; -- nog te bezien.
END CASE;
END IF;
-- Lees alle veldwaarden
IF v_ongeldig = 0
THEN
v_errormsg :=
'Fout bij converteren datumtijd [' || v_aanduiding || ']';
IF INSTR (v_datumtijd_tekst, '.') > 0
THEN
v_datumtijd :=
fac.safe_to_date (
REPLACE (
SUBSTR (v_datumtijd_tekst,
1,
INSTR (v_datumtijd_tekst, '.') - 1),
'T',
' '),
'yyyy-mm-dd hh24:mi:ss');
ELSE
v_datumtijd := fac.safe_to_date(v_datumtijd_tekst, 'yyyy-mm-dd hh24:mi:ss');
END IF;
IF v_datumtijd = NULL
THEN
v_ongeldig := 0;
END IF;
END IF;
IF v_ongeldig = 0
THEN
v_errormsg :=
'Fout bij aanvullen opmerking [' || v_aanduiding || ']';
-- controleer of de opmerking niet leeg is en of dezelfde opmerking al bij een eerdere statusovergang
-- gemeld is.
IF v_opmerking IS NOT NULL AND INSTR(COALESCE(v_mld_opdr_opmerking, 'QueQuLeQue'), v_opmerking) = 0
THEN
v_opmerking :=
'['
|| v_datumtijd_tekst
|| '] - '
|| v_status_tekst
|| CHR (13)
|| CHR (10)
|| v_opmerking;
ELSE
v_opmerking :=
'[' || v_datumtijd_tekst || '] - ' || v_status_tekst;
END IF;
END IF;
-- Insert geformatteerde import record
IF (v_ongeldig = 0)
THEN
BEGIN
v_errormsg :=
'Fout toevoegen opdracht status ['
|| v_aanduiding
|| ']';
INSERT INTO aaxx_imp_opdrstat_strukton (mld_opdr_key,
extern_nummer,
status,
datumtijd,
opmerking)
VALUES (v_mld_opdr_key,
v_extern_nummer,
v_status,
v_datumtijd,
v_opmerking);
v_count_import := v_count_import + 1;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg :=
v_errormsg
|| ' ORACLE (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.imp_writelog (
p_import_key,
'E',
v_aanduiding || v_errormsg,
'Fout bij toevoegen regel aan importtabel aaxx_imp_opdr_status_strukton.');
END;
ELSE
IF v_status_code <> '40' AND v_status_code <> '45'
THEN
fac.imp_writelog (p_import_key,
'E',
v_errormsg,
'');
END IF;
END IF;
END IF;
END;
END LOOP;
IF (header_is_valid = 0)
THEN
fac.imp_writelog (p_import_key,
'E',
'Ongeldig importbestand',
'Geen header of header niet volgens specificatie!');
END IF;
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := SUBSTR(
v_errormsg
|| 'ORACLE (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')', 1, 490);
fac.imp_writelog (p_import_key,
'E',
SUBSTR(v_aanduiding, 1, 500) || ' - ' || v_errormsg,
'Inleesproces opdrachtstatusberichten afgebroken!');
END;
/
CREATE OR REPLACE PROCEDURE aaxx_update_opdrstat_strukton (p_import_key IN NUMBER)
AS
-- Cursor loopt - in volgorde! - over alle ingelezen opdrachtstatusberichten.
CURSOR c1
IS
SELECT mld_opdr_key,
extern_nummer,
datumtijd,
status,
opmerking
FROM aaxx_imp_opdrstat_strukton
ORDER BY 1, 3;
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_aanduiding VARCHAR2 (200);
v_count_tot NUMBER (10);
v_count NUMBER (10);
v_mld_key NUMBER (10) := 0;
v_opdr_key NUMBER (10) := 0;
v_opdr_status NUMBER (10) := 0;
v_user_key NUMBER (10) := 0;
v_mld_typeopdr_key NUMBER (10);
v_mld_kenmerk_key NUMBER (10);
v_mld_kenmerkopdr_key NUMBER (10);
v_mld_srtkenmerk_key NUMBER (10);
BEGIN
-- Loop door alle geimporteerde opdrachtstatusberichten en verwerk deze.
v_count_tot := 0;
-- Stel de key in van het srtkenmerk 'Ref. Nr. Leverancier'. Hier wordt
-- het nummer dat Strukton aan de call gegeven heeft geregistreerd.
IF aaxx_get_user = 'SABIC' THEN v_mld_srtkenmerk_key := 35; END IF;
IF aaxx_get_user = 'ESSENT' THEN v_mld_srtkenmerk_key := 741; END IF;
IF aaxx_get_user = 'DOW' THEN v_mld_srtkenmerk_key := 81; END IF;
v_user_key := 10; -- Strukton user
FOR rec IN c1
LOOP
BEGIN
v_aanduiding :=
'['
|| rec.mld_opdr_key
|| '|'
|| SUBSTR (rec.opmerking, 1, 100)
|| '] ';
v_count_tot := v_count_tot + 1;
v_count := 0;
-- Key van melding/opdracht bepalen en externnr bij opdracht opslaan.
IF (rec.mld_opdr_key IS NOT NULL)
THEN
v_errormsg := 'Fout bij bepalen opdracht.';
SELECT mld_melding_key, mld_opdr_key, mld_statusopdr_key, mld_typeopdr_key
INTO v_mld_key, v_opdr_key, v_opdr_status, v_mld_typeopdr_key
FROM mld_opdr
WHERE mld_opdr_key = rec.mld_opdr_key;
v_errormsg := 'Fout bij bepalen kenmerk extern nummer.';
SELECT k.mld_kenmerk_key
INTO v_mld_kenmerk_key
FROM mld_kenmerk k
WHERE k.mld_srtkenmerk_key = v_mld_srtkenmerk_key
AND k.mld_typeopdr_key = v_mld_typeopdr_key;
v_errormsg := 'Fout bij bepalen kenmerkopdracht extern nummer.';
SELECT max(ko.mld_kenmerkopdr_key)
INTO v_mld_kenmerkopdr_key
FROM mld_kenmerkopdr ko
WHERE ko.mld_opdr_key = v_opdr_key
AND v_mld_kenmerk_key = ko.mld_kenmerk_key;
v_errormsg := 'Fout bij aanpassen extern nummer.';
IF v_mld_kenmerkopdr_key IS NULL THEN
-- kenmerk toevoegen
INSERT INTO mld_kenmerkopdr (mld_kenmerk_key, mld_opdr_key, mld_kenmerkopdr_waarde)
VALUES (v_mld_kenmerk_key, v_opdr_key, rec.extern_nummer);
ELSE
-- kenmerk aanpassen
UPDATE mld_kenmerkopdr SET mld_kenmerkopdr_waarde = rec.extern_nummer WHERE mld_kenmerkopdr_key = v_mld_kenmerkopdr_key;
END IF;
v_errormsg := 'Fout bij bijwerken opdracht-opmerking.';
v_count := LENGTH (rec.opmerking) + 5; -- Beetje speling qua lengte!
UPDATE mld_opdr
SET mld_opdr_opmerking =
DECODE (
mld_opdr_opmerking,
NULL,
rec.opmerking,
rec.opmerking
|| CHR (13)
|| CHR (10)
|| SUBSTR (mld_opdr_opmerking, 1, (4000 - v_count)))
WHERE mld_opdr_key = v_opdr_key;
IF v_opdr_status <> rec.status
THEN
IF rec.status = 8 AND v_opdr_status = 5
THEN
-- Accepteer opdracht als de opdracht uitgegeven was
MLD.setopdrachtstatus (v_opdr_key, 8, v_user_key); -- Facilitor
ELSIF rec.status = 6 AND v_opdr_status = 5
THEN
-- Meld de opdracht af als deze uitgegeven was
MLD.setopdrachtstatus (v_opdr_key, 8, v_user_key); -- Facilitor, eerst accepteren
MLD.setopdrachtstatus (v_opdr_key, 6, v_user_key); -- Facilitor
ELSIF rec.status = 6 AND v_opdr_status = 8
THEN
-- Meld de opdracht af als deze geaccepteerd was
MLD.setopdrachtstatus (v_opdr_key, 6, v_user_key); -- Facilitor
ELSIF rec.status = 1 AND v_opdr_status = 5
THEN
-- Opdracht is afgewezen op het moment dat de opdracht nog niet geaccepteerd is.
MLD.setopdrachtstatus (v_opdr_key, 1, v_user_key); -- Facilitor
MLD.updatemeldingstatusAV (v_mld_key, 0, v_user_key, 0);
ELSIF rec.status = 1 AND v_opdr_status = 8
THEN
-- Opdracht is afgewezen op het moment dat de opdracht al geaccepteerd is.
MLD.setopdrachtstatus (v_opdr_key, 1, v_user_key); -- Facilitor
MLD.updatemeldingstatusAV (v_mld_key, 0, v_user_key, 0);
END IF;
IF rec.status = 6 AND v_opdr_status <> 6
THEN
v_errormsg := 'Fout bij statusaanpassing melding.';
-- Sinds AADO#30922 wordt de melding niet meer automatisch afgemeld.
MLD.updatemeldingstatusAV (v_mld_key, 0, v_user_key, 0);
END IF;
END IF;
END IF;
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg :=
v_errormsg
|| ' ORACLE (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.imp_writelog (p_import_key,
'E',
v_aanduiding || v_errormsg,
'Fout bij verwerken opdrachtstatusbericht.');
END;
END LOOP;
COMMIT;
END;
/
-------------------------------------------------------------------------------
-- IMPORTFUNCTIE - DIENST_LOC_BLD
-------------------------------------------------------------------------------
CREATE OR REPLACE PROCEDURE aaxx_import_dienst_loc_bld (
p_import_key IN NUMBER)
AS
CURSOR c_cursor
IS
SELECT *
FROM fac_imp_file
WHERE fac_import_key = p_import_key
ORDER BY fac_imp_file_index;
v_newline VARCHAR2 (1000); -- Import line
v_field VARCHAR2 (100); -- Import field
v_fielddelimitor VARCHAR2 (1); -- Field seperator
v_errormsg VARCHAR (200);
v_errorhint VARCHAR (200);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_skipfield VARCHAR2 (100);
-- De importvelden
v_bedrijf_naam VARCHAR2 (100);
v_bedrijf_nr VARCHAR2 (100);
v_dienst_oms VARCHAR2 (100);
v_locatie_code VARCHAR2 (100);
v_gebouw_code VARCHAR2 (100);
header_found BOOLEAN;
BEGIN
-- Init
header_found := FALSE;
v_fielddelimitor := ';';
-- Clear my previous imported rows
DELETE FROM aaxx_imp_dienst_loc_bld;
FOR rec1 IN c_cursor
LOOP
BEGIN
v_newline := rec1.fac_imp_file_line;
IF SUBSTR (v_newline, 1, 3) = '?'
THEN
-- EF BB BF aangetroffen
fac.imp_writelog (p_import_key,
'W',
'Byte Order Mark aangetroffen',
'Bestand heeft onbehandeld UTF-8 formaat.');
v_newline := SUBSTR (v_newline, 4);
END IF;
fac.imp_getfield (v_newline, v_fielddelimitor, v_bedrijf_naam);
fac.imp_getfield (v_newline, v_fielddelimitor, v_bedrijf_nr);
fac.imp_getfield (v_newline, v_fielddelimitor, v_dienst_oms);
fac.imp_getfield (v_newline, v_fielddelimitor, v_locatie_code);
fac.imp_getfield (v_newline, v_fielddelimitor, v_gebouw_code);
-- Skip until a valid header is found
IF UPPER (v_bedrijf_naam) = 'BEDRIJFNAAM'
AND UPPER (v_bedrijf_nr) = 'BEDRIJF_NR'
AND UPPER (v_dienst_oms) = 'DIENST'
AND UPPER (v_locatie_code) = 'LOCATIE_CODE'
AND UPPER (v_gebouw_code) = 'GEBOUW_CODE'
THEN
-- Sla de kopregel over.
header_found := TRUE;
ELSIF (header_found)
THEN
INSERT INTO aaxx_imp_dienst_loc_bld (prs_bedrijf_naam,
prs_bedrijf_nr,
prs_dienst_omschrijving,
alg_locatie_code,
alg_gebouw_code)
VALUES (SUBSTR (v_bedrijf_naam, 1, 60),
SUBSTR (v_bedrijf_nr, 1, 50),
SUBSTR (v_dienst_oms, 1, 60),
SUBSTR (v_locatie_code, 1, 10),
SUBSTR (v_gebouw_code, 1, 12));
END IF;
COMMIT;
END;
END LOOP;
IF NOT header_found
THEN
fac.imp_writelog (
p_import_key,
'E',
'Geen geldige header aangetroffen',
'Bestand is geen geldig BedrijfDienstLocatieGebouw importbestand.');
END IF;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg :=
'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key,
'E',
SUBSTR (v_errormsg, 1, 1000),
'');
-- maak de importtabel leeg om te voorkomen dat er halve bestanden ingelezen worden.
DELETE FROM aaxx_imp_dienst_loc_bld;
END;
/
CREATE OR REPLACE PROCEDURE aaxx_update_dienst_loc_bld (
p_import_key IN NUMBER)
AS
CURSOR cbdlg
IS
SELECT prs_bedrijf_naam,
prs_bedrijf_nr,
prs_dienst_omschrijving,
alg_locatie_code,
alg_gebouw_code
FROM aaxx_imp_dienst_loc_bld
WHERE prs_dienst_omschrijving IS NOT NULL;
v_oldcountbdlg NUMBER;
v_newcountbdlg NUMBER;
v_prs_bedrijf_key NUMBER;
v_prs_dienst_key NUMBER;
v_alg_locatie_key NUMBER;
v_alg_gebouw_key NUMBER;
v_errormsg VARCHAR (1000);
v_error_hint VARCHAR (1000);
oracle_err_mes VARCHAR2 (150);
oracle_err_num VARCHAR2 (150);
currentversion fac_module.fac_module_version%TYPE;
BEGIN
SELECT MAX (fac_module_version) INTO currentversion FROM fac_module;
fac.imp_writelog (
p_import_key,
'I',
'Arcadis Aqumen BedrijfDienstLocatieGebouw import version '
|| currentversion,
'$Revision$');
SELECT COUNT ( * ) INTO v_oldcountbdlg FROM aaxx_imp_dienst_loc_bld;
IF v_oldcountbdlg = 0
THEN
fac.imp_writelog (
p_import_key,
'E',
'Arcadis Aqumen BedrijfDienstLocatieGebouw import bevat geen records',
'$Revision$');
RETURN;
END IF;
-- How many active records are now present?
SELECT COUNT ( * ) INTO v_oldcountbdlg FROM prs_bedrijfdienstlocatie;
-- remove the existing records
DELETE prs_bedrijfdienstlocatie;
FOR rec IN cbdlg
LOOP
BEGIN
v_errormsg :=
'Kan dienst niet bepalen ['
|| rec.prs_dienst_omschrijving
|| '] ';
SELECT prs_dienst_key
INTO v_prs_dienst_key
FROM prs_dienst
WHERE UPPER (prs_dienst_omschrijving) =
UPPER (rec.prs_dienst_omschrijving);
v_errormsg :=
'Kan locatie niet bepalen [' || rec.alg_locatie_code || '] ';
IF rec.alg_locatie_code IS NOT NULL
THEN
SELECT alg_locatie_key
INTO v_alg_locatie_key
FROM alg_v_aanweziglocatie
WHERE UPPER (alg_locatie_code) = UPPER (rec.alg_locatie_code);
ELSE
v_alg_locatie_key := NULL;
END IF;
v_errormsg :=
'Kan gebouw niet bepalen [' || rec.alg_gebouw_code || '] ';
IF rec.alg_gebouw_code IS NOT NULL
THEN
SELECT alg_gebouw_key
INTO v_alg_gebouw_key
FROM alg_v_aanweziggebouw
WHERE alg_gebouw_upper = UPPER (rec.alg_gebouw_code);
v_alg_locatie_key := NULL;
ELSE
v_alg_gebouw_key := NULL;
END IF;
v_errormsg :=
'Kan bedrijf niet bepalen ['
|| rec.prs_bedrijf_naam
|| '('
|| rec.prs_bedrijf_nr
|| ')'
|| '] ';
SELECT prs_bedrijf_key
INTO v_prs_bedrijf_key
FROM prs_v_aanwezigbedrijf
WHERE UPPER (prs_bedrijf_naam) = UPPER (rec.prs_bedrijf_naam);
v_errormsg :=
'Kan bedrijf/dienst/loc/bld niet wegschrijven ['
|| rec.prs_bedrijf_naam
|| '('
|| rec.prs_bedrijf_nr
|| ')'
|| '/'
|| rec.prs_dienst_omschrijving
|| '/'
|| rec.alg_locatie_code
|| '/'
|| rec.alg_gebouw_code
|| '] ';
INSERT INTO prs_bedrijfdienstlocatie (prs_dienst_key,
prs_bedrijf_key,
alg_locatie_key,
alg_gebouw_key)
VALUES (v_prs_dienst_key,
v_prs_bedrijf_key,
v_alg_locatie_key,
v_alg_gebouw_key);
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
v_error_hint := v_errormsg;
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg :=
v_errormsg
|| 'ORACLE (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.imp_writelog (p_import_key,
'E',
v_errormsg,
v_error_hint);
COMMIT;
END;
END LOOP;
SELECT COUNT ( * ) INTO v_newcountbdlg FROM aaxx_imp_dienst_loc_bld;
fac.imp_writelog (
p_import_key,
'S',
'Aantal BedrijfDienstLocBld vooraf: '
|| TO_CHAR (v_oldcountbdlg)
|| ' => nu: '
|| TO_CHAR (v_newcountbdlg),
'');
END;
/
-------------------------------------------------------------------------------
-- RAPPORTAGES aaxx_v_rap_gebruikers_auth
-------------------------------------------------------------------------------
CREATE OR REPLACE VIEW aaxx_v_rap_gebruikers_auth (
naam,
afdeling,
functie,
email,
login,
alt_login,
auth_groep,
last_login
)
AS
SELECT prs_perslid_naam_full,
prs_afdeling_omschrijving,
prs_srtperslid_omschrijving,
prs_perslid_email,
prs_perslid_oslogin,
prs_perslid_oslogin2,
fac_groep_omschrijving,
prs_perslid_login
FROM prs_v_aanwezigperslid p,
prs_v_perslid_fullnames pf,
fac_gebruikersgroep gg,
prs_afdeling a,
fac_groep g,
prs_srtperslid sp
WHERE p.prs_perslid_key = pf.prs_perslid_key
AND p.prs_perslid_key = gg.prs_perslid_key(+)
AND p.prs_afdeling_key = a.prs_afdeling_key
AND p.prs_srtperslid_key = sp.prs_srtperslid_key
AND gg.fac_groep_key = g.fac_groep_key(+)
AND (p.prs_perslid_oslogin IS NOT NULL
OR p.prs_perslid_oslogin2 IS NOT NULL)
AND SUBSTR(COALESCE (p.prs_perslid_oslogin, 'QueQueLeQue'),1,1) <> '_';
-- Geatoriseerd voor ORDBO2 maar niet gekoppeld aan een bedrijf of AAFMer
CREATE OR REPLACE VIEW aaxx_v_rap_ordbo2_no_bdr
(
prs_perslid_key,
naam,
login_naam,
email,
autorisatiegroep
)
AS
SELECT DISTINCT pf.prs_perslid_key,
prs_perslid_naam_full,
prs_perslid_oslogin,
prs_perslid_email,
fac_groep_omschrijving
FROM fac_groeprechten fgr,
fac_functie ff,
fac_gebruikersgroep fgg,
fac_groep fg,
prs_v_perslid_fullnames pf,
prs_perslid p
WHERE ff.fac_functie_key = fgr.fac_functie_key
AND UPPER (fac_functie_code) = 'WEB_ORDBO2'
AND (fac_gebruiker_prs_level_read < 9
OR fac_gebruiker_alg_level_read < 9)
AND fgr.fac_groep_key = fgg.fac_groep_key
AND p.prs_perslid_key = fgg.prs_perslid_key
AND fg.fac_groep_key = fgg.fac_groep_key
AND p.prs_perslid_key = pf.prs_perslid_key
AND UPPER (prs_perslid_oslogin) != '_FACILITOR'
AND fgg.prs_perslid_key NOT IN
(SELECT prs_perslid_key
FROM prs_contactpersoon pc, prs_bedrijf b
WHERE prs_contactpersoon_verwijder IS NULL
AND pc.prs_bedrijf_key = b.prs_bedrijf_key
AND b.prs_bedrijf_verwijder IS NULL
AND pc.prs_perslid_key IS NOT NULL)
AND NOT EXISTS
(SELECT prs_afdeling_key
FROM prs_afdeling a
WHERE a.prs_afdeling_key = p.prs_afdeling_key
AND (a.prs_afdeling_omschrijving = 'AAFM' OR a.prs_afdeling_upper = 'HEYDAY'));
CREATE OR REPLACE VIEW aaxx_v_rap_dienst_loc_bld (fclt_f_bedrijfnaam
, fclt_f_bedrijf_nr
, fclt_f_dienst
, fclt_f_locatie_code
, fclt_f_gebouw_code
)
AS
SELECT prs_bedrijf_naam bedrijfnaam,
prs_leverancier_nr bedrijfnummer,
prs_dienst_omschrijving dienst,
alg_locatie_code locatie_code,
alg_gebouw_upper gebouw_code
FROM prs_v_aanwezigbedrijf b,
prs_dienst d,
alg_locatie l,
alg_gebouw g,
prs_bedrijfdienstlocatie bdl
WHERE b.prs_bedrijf_key = bdl.prs_bedrijf_key(+)
AND bdl.prs_dienst_key = d.prs_dienst_key(+)
AND bdl.alg_locatie_key = l.alg_locatie_key(+)
AND bdl.alg_gebouw_key = g.alg_gebouw_key(+)
AND COALESCE (b.prs_bedrijf_intern, 0) = 0;
CREATE OR REPLACE VIEW aaxx_v_rap_bdl_contract
(
fclt_f_profiel,
fclt_f_bedrijfnaam,
fclt_f_bedrijf_nr,
fclt_f_dienst,
fclt_f_locatie_code,
fclt_f_gebouw_code,
fclt_f_contract
)
AS
SELECT 'Contract',
prs_bedrijf_naam,
prs_leverancier_nr,
prs_dienst_omschrijving,
(SELECT alg_locatie_code
FROM alg_locatie l
WHERE l.alg_locatie_key =
COALESCE (cpl.alg_locatie_key, cpg.alg_locatie_key)),
(SELECT alg_gebouw_upper
FROM alg_gebouw g1
WHERE g1.alg_gebouw_key = cpg.alg_gebouw_key),
c.cnt_contract_nummer_intern
FROM cnt_contract c,
(SELECT cnt_contract_key, cnt_alg_plaats_key alg_locatie_key
FROM cnt_contract_plaats cp
WHERE cp.cnt_contract_plaats_verwijder IS NULL
AND cp.cnt_alg_plaats_code = 'L') cpl,
(SELECT cnt_contract_key, g.alg_locatie_key, g.alg_gebouw_key
FROM cnt_contract_plaats cp, alg_gebouw g
WHERE cp.cnt_alg_plaats_code = 'G'
AND cnt_alg_plaats_key = g.alg_gebouw_key) cpg,
prs_bedrijf b,
prs_dienst d
WHERE c.cnt_contract_key = cpl.cnt_contract_key(+)
AND c.cnt_contract_key = cpg.cnt_contract_key(+)
AND c.prs_dienst_key = d.prs_dienst_key(+)
AND c.cnt_prs_bedrijf_key = b.prs_bedrijf_key(+)
AND c.cnt_contract_looptijd_tot > SYSDATE
UNION ALL
SELECT 'Uitvoerder',
prs_bedrijf_naam bedrijfnaam,
prs_leverancier_nr bedrijfnummer,
prs_dienst_omschrijving dienst,
alg_locatie_code locatie_code,
alg_gebouw_upper gebouw_code,
NULL
FROM prs_v_aanwezigbedrijf b,
prs_dienst d,
alg_locatie l,
alg_gebouw g,
prs_bedrijfdienstlocatie bdl
WHERE b.prs_bedrijf_key = bdl.prs_bedrijf_key(+)
AND bdl.prs_dienst_key = d.prs_dienst_key(+)
AND bdl.alg_locatie_key = l.alg_locatie_key(+)
AND bdl.alg_gebouw_key = g.alg_gebouw_key(+)
AND COALESCE (b.prs_bedrijf_intern, 0) = 0;
CREATE OR REPLACE VIEW aaxx_v_rap_contractorders (
contractorder,
versie,
fclt_f_gebouwcode,
fclt_f_leverancier,
fclt_f_beschrijving,
fclt_f_pakket,
ingangsdatum,
einddatum,
fclt_f_status,
kosten,
totaalkosten,
gefactureerd,
dienst,
leveranciernr
)
AS
SELECT cnt_contract_nummer_intern contractorder,
cnt_contract_versie,
alg_gebouw_code gebouwcode,
prs_bedrijf_naam leverancier,
k.prs_kostensoort_opmerking beschrijving,
(SELECT prs_kostensoortgrp_oms
FROM prs_kostensoortgrp ksg
WHERE ksg.prs_kostensoortgrp_key = k.prs_kostensoortgrp_key)
pakket,
TO_CHAR (c.cnt_contract_looptijd_van, 'DD-MM-YYYY') ingangsdatum,
TO_CHAR (c.cnt_contract_looptijd_tot, 'DD-MM-YYYY') einddatum,
DECODE (SIGN (cnt_contract_looptijd_van - SYSDATE),
1,
'Toekomst',
-1,
DECODE (SIGN (cnt_contract_looptijd_tot - SYSDATE),
1,
'Actueel',
-1,
'Verlopen'
)
)
status,
COALESCE (ROUND ( DECODE (cnt_gew.cnt_contract_plaats_gewicht,
0,
1,
(cp.cnt_contract_plaats_gewicht
/ cnt_gew.cnt_contract_plaats_gewicht)
* c.cnt_contract_kosten),
2
),
0
)
kosten,
c.cnt_contract_kosten orderbedrag,
(SELECT SUM (fr.fin_factuurregel_totaal)
FROM aaxx_v_aanwezigfactuur f, fin_factuurregel fr
WHERE f.fin_factuur_key = fr.fin_factuur_key
AND f.cnt_contract_key = c.cnt_contract_key)
gefactureerd,
k.prs_kostensoort_refcode dienst,
b.prs_leverancier_nr leveranciernr
FROM cnt_contract c,
cnt_discipline d,
cnt_contract_plaats cp,
prs_bedrijf b,
prs_kostensoort k,
prs_kostenplaats kp,
prs_afdeling a,
prs_perslid p,
alg_locatie l,
alg_gebouw g,
prs_contactpersoon cop,
(SELECT cnt_contract_key,
SUM (cnt_contract_plaats_gewicht) cnt_contract_plaats_gewicht
FROM cnt_contract_plaats
GROUP BY cnt_contract_key) cnt_gew,
(SELECT cp.cnt_contract_plaats_key, alg_locatie_key, alg_gebouw_key
FROM alg_v_allonroerendgoed aog, cnt_contract_plaats cp
WHERE aog.alg_type = cp.cnt_alg_plaats_code
AND aog.alg_onroerendgoed_keys = cp.cnt_alg_plaats_key) cog
WHERE c.cnt_contract_key = cp.cnt_contract_key(+)
AND c.cnt_contract_key = cnt_gew.cnt_contract_key(+)
AND c.cnt_prs_bedrijf_key = b.prs_bedrijf_key
AND c.ins_discipline_key = d.ins_discipline_key
AND d.prs_kostensoort_key = k.prs_kostensoort_key(+)
AND c.prs_kostenplaats_key = kp.prs_kostenplaats_key(+)
AND c.prs_afdeling_key_eig = a.prs_afdeling_key
AND c.prs_perslid_key_beh = p.prs_perslid_key
AND cp.cnt_contract_plaats_key = cog.cnt_contract_plaats_key(+)
AND c.prs_contactpersoon_key = cop.prs_contactpersoon_key(+)
AND cog.alg_locatie_key = l.alg_locatie_key(+)
AND cog.alg_gebouw_key = g.alg_gebouw_key(+)
AND cnt_contract_verwijder IS NULL;
-- eerst volgen de kopregels en de tweede union bevat de detailregels.
CREATE OR REPLACE VIEW aaxx_v_rap_imp_jaarcontract
(
HIDE_F_VOLGORDE,
GEBOUW,
BEDRIJF,
LEVNR,
BESCHRIJVING,
INGANGSDATUM,
EINDDATUM,
ORDEROMSCHRIJVING,
BEDRAG,
TERMIJNBEDRAG,
DIENST,
CONTRACTSOORT,
CONTRACTNR,
VERSIE,
REGELNR,
CONTRACTAFDELING,
CONTRACTMANAGER,
GEWIJZIGDDOOR,
STATUS
)
AS
SELECT COALESCE (fac.safe_to_number (cnt_contract_nummer_intern),
cs.ins_discipline_key * 1000 + b.prs_bedrijf_key)
* 100,
k.prs_kostenplaats_nr,
prs_bedrijf_naam,
prs_leverancier_nr,
cnt_contract_omschrijving,
TO_CHAR (ADD_MONTHS (cnt_contract_looptijd_van, 12), 'dd-mm-yyyy'),
TO_CHAR (ADD_MONTHS (cnt_contract_looptijd_tot, 12), 'dd-mm-yyyy'),
REPLACE (cnt_contract_document, '"', ' - '),
cnt_contract_kosten,
cnt_contract_termijnkosten,
prs_dienst_omschrijving,
cs.ins_discipline_omschrijving,
cnt_contract_nummer_intern,
COALESCE (fac.safe_to_number (cnt_contract_versie), 0) + 1,
NULL,
a.prs_afdeling_naam,
p2.prs_perslid_oslogin,
p.prs_perslid_oslogin,
DECODE (SIGN(SYSDATE - c.cnt_contract_looptijd_tot), -1, 'Actief', 'Niet Actief') status
FROM cnt_v_aanwezigcontract c,
prs_kostenplaats k,
prs_perslid p,
prs_perslid p2,
prs_afdeling a,
prs_dienst d,
prs_bedrijf b,
ins_tab_discipline cs
WHERE (SYSDATE BETWEEN c.cnt_contract_looptijd_van -- TRUNC(SYSDATE, 'YEAR')
AND c.cnt_contract_looptijd_tot
OR c.cnt_contract_looptijd_van >= TRUNC(SYSDATE, 'YEAR')
OR c.cnt_contract_looptijd_tot >= SYSDATE - 150 )
AND c.prs_kostenplaats_key = k.prs_kostenplaats_key(+)
AND c.prs_perslid_key_beh = p.prs_perslid_key
AND c.prs_perslid_key_eig = p2.prs_perslid_key(+)
AND c.prs_afdeling_key_eig = a.prs_afdeling_key
AND c.cnt_prs_bedrijf_key = b.prs_bedrijf_key
AND c.prs_dienst_key = d.prs_dienst_key(+)
AND c.ins_discipline_key = cs.ins_discipline_key
UNION ALL
SELECT (COALESCE (fac.safe_to_number (cnt_contract_nummer_intern),
cs.ins_discipline_key * 1000 + b.prs_bedrijf_key)
* 100)
+ aaxx_get_cnt_cont_plaats_index (cp.cnt_contract_plaats_key),
alg_gebouw_code,
prs_bedrijf_naam,
prs_leverancier_nr,
cnt_contract_omschrijving,
TO_CHAR (ADD_MONTHS (cnt_contract_looptijd_van, 12), 'dd-mm-yyyy'),
TO_CHAR (ADD_MONTHS (cnt_contract_looptijd_tot, 12), 'dd-mm-yyyy'),
NULL,
DECODE (
cnt_gew.cnt_contract_plaats_gewicht,
0,
c.cnt_contract_kosten,
ROUND (
(cp.cnt_contract_plaats_gewicht
/ cnt_gew.cnt_contract_plaats_gewicht)
* c.cnt_contract_kosten,
2)),
NULL,
prs_dienst_omschrijving,
cs.ins_discipline_omschrijving,
cnt_contract_nummer_intern,
COALESCE (fac.safe_to_number (cnt_contract_versie), 0) + 1,
aaxx_get_cnt_cont_plaats_index (cp.cnt_contract_plaats_key),
a.prs_afdeling_naam,
p2.prs_perslid_oslogin,
p.prs_perslid_oslogin,
DECODE (SIGN(SYSDATE - c.cnt_contract_looptijd_tot), -1, 'Actief', 'Niet Actief') status
FROM cnt_v_aanwezigcontract c,
prs_kostenplaats k,
prs_perslid p,
prs_perslid p2,
prs_afdeling a,
prs_dienst d,
prs_bedrijf b,
ins_tab_discipline cs,
cnt_contract_plaats cp,
alg_gebouw g,
( SELECT cnt_contract_key,
SUM (cnt_contract_plaats_gewicht)
cnt_contract_plaats_gewicht
FROM cnt_contract_plaats
WHERE cnt_contract_plaats_verwijder IS NULL
GROUP BY cnt_contract_key) cnt_gew
WHERE (SYSDATE BETWEEN c.cnt_contract_looptijd_van -- TRUNC(SYSDATE, 'YEAR')
AND c.cnt_contract_looptijd_tot
OR c.cnt_contract_looptijd_van >= TRUNC(SYSDATE, 'YEAR')
OR c.cnt_contract_looptijd_tot >= SYSDATE - 150 )
AND c.prs_kostenplaats_key = k.prs_kostenplaats_key(+)
AND c.prs_perslid_key_beh = p.prs_perslid_key
AND c.prs_perslid_key_eig = p2.prs_perslid_key(+)
AND c.prs_afdeling_key_eig = a.prs_afdeling_key
AND c.cnt_prs_bedrijf_key = b.prs_bedrijf_key
AND c.prs_dienst_key = d.prs_dienst_key(+)
AND c.ins_discipline_key = cs.ins_discipline_key
AND c.cnt_contract_key = cp.cnt_contract_key
AND cp.cnt_alg_plaats_key = g.alg_gebouw_key
AND cp.cnt_alg_plaats_code = 'G'
AND c.cnt_contract_key = cnt_gew.cnt_contract_key;
-- rapportage om ruimteinformatie te exporteren / bewerken en importeren in Facilitor
CREATE OR REPLACE VIEW aaxx_v_rap_imp_ruimte
(
fclt_f_locatie,
fclt_f_gebouw,
fclt_f_verdieping,
alg_ruimte_key,
alg_ruimte_nr,
alg_ruimte_omschrijving,
alg_srtruimte_omschrijving,
mld_dienstniveau_omschr,
alg_ruimte_bruto_vloeropp
)
AS
SELECT alg_locatie_code,
alg_gebouw_code,
alg_verdieping_code,
alg_ruimte_key,
alg_ruimte_nr,
alg_ruimte_omschrijving,
sr.alg_srtruimte_omschrijving,
d.mld_dienstniveau_omschr,
r.alg_ruimte_bruto_vloeropp
FROM alg_ruimte r,
mld_dienstniveau d,
alg_srtruimte sr,
alg_verdieping v,
alg_gebouw g,
alg_locatie l
WHERE r.mld_dienstniveau_key = d.mld_dienstniveau_key(+)
AND r.alg_srtruimte_key = sr.alg_srtruimte_key(+)
AND r.alg_verdieping_key = v.alg_verdieping_key
AND v.alg_gebouw_key = g.alg_gebouw_key
AND g.alg_locatie_key = l.alg_locatie_key
AND r.alg_ruimte_verwijder IS NULL;
CREATE OR REPLACE VIEW aaxx_v_rap_stdmelding_gegbasis
(
fclt_f_vakgroeptype,
fclt_f_vakgroep,
fclt_f_melding,
groep,
niet_zichtbaar_fe,
acceptatietijd,
uitvoertijd,
kostensoort,
kostensoort_code,
fin_waarde,
aanwijzing_nederlands,
aanwijzing_english,
aanwijzing_deutsch,
aanwijzing_francais,
dienst,
vereist_dienst,
opdrachttype,
autoorder,
alg_niveau,
vervallen
)
AS
SELECT sd.ins_srtdiscipline_omschrijving,
d.ins_discipline_omschrijving,
m.mld_stdmelding_omschrijving,
g.mld_stdmeldinggroep_naam mld_stdmelding_groep,
DECODE (m.mld_stdmelding_notfrontend, 1, 'Ja', 'Nee'),
TO_CHAR (m.mld_stdmelding_t_accepttijd.tijdsduur)
|| m.mld_stdmelding_t_accepttijd.eenheid,
TO_CHAR (m.mld_stdmelding_t_uitvoertijd.tijdsduur)
|| m.mld_stdmelding_t_uitvoertijd.eenheid,
COALESCE (k2.prs_kostensoort_opmerking,
k.prs_kostensoort_opmerking),
COALESCE (k2.prs_kostensoort_oms, k.prs_kostensoort_oms),
COALESCE (k2.prs_kostensoort_refcode, k.prs_kostensoort_refcode),
mld_stdmelding_hint,
len.fac_locale_tekst,
lde.fac_locale_tekst,
lfr.fac_locale_tekst,
d.prs_dienst_omschrijving,
m.mld_stdmelding_vereisdienst,
ot.mld_typeopdr_omschrijving,
m.mld_stdmelding_autoorder,
alg_onrgoed_niveau,
mld_stdmelding_vervaldatum
FROM mld_stdmelding m,
mld_stdmeldinggroep g,
mld_discipline d,
ins_srtdiscipline sd,
prs_kostensoort k,
prs_kostensoort k2,
prs_dienst d,
mld_typeopdr ot,
(SELECT fac_locale_kolomkeyval, fac_locale_tekst
FROM fac_locale
WHERE fac_locale_kolomnaam = 'MLD_STDMELDING_HINT'
AND fac_locale_lang = 'EN') len,
(SELECT fac_locale_kolomkeyval, fac_locale_tekst
FROM fac_locale
WHERE fac_locale_kolomnaam = 'MLD_STDMELDING_HINT'
AND fac_locale_lang = 'DE') lde,
(SELECT fac_locale_kolomkeyval, fac_locale_tekst
FROM fac_locale
WHERE fac_locale_kolomnaam = 'MLD_STDMELDING_HINT'
AND fac_locale_lang = 'FR') lfr
WHERE m.mld_stdmelding_verwijder IS NULL
AND m.mld_ins_discipline_key = d.ins_discipline_key
AND d.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
AND d.prs_kostensoort_key = k.prs_kostensoort_key(+)
AND m.prs_kostensoort_key = k2.prs_kostensoort_key(+)
AND m.prs_dienst_key = d.prs_dienst_key(+)
AND m.mld_typeopdr_key = ot.mld_typeopdr_key(+)
AND m.mld_stdmeldinggroep_key = g.mld_stdmeldinggroep_key(+)
AND len.fac_locale_kolomkeyval(+) = m.mld_stdmelding_key
AND lde.fac_locale_kolomkeyval(+) = m.mld_stdmelding_key
AND lfr.fac_locale_kolomkeyval(+) = m.mld_stdmelding_key;
CREATE OR REPLACE VIEW aaxx_v_rap_stdmelding_gegevens
(
fclt_f_vakgroeptype,
fclt_f_vakgroep,
fclt_f_melding,
groep,
niet_zichtbaar_fe,
acceptatietijd,
uitvoertijd,
kostensoort,
kostensoort_code,
fin_waarde,
aanwijzing_nederlands,
aanwijzing_english,
aanwijzing_deutsch,
aanwijzing_francais,
alg_niveau,
vervallen,
vereist_dienst,
opdrachttype,
autoorder,
fclt_f_dienst,
fclt_f_bedrijf,
fclt_f_locatie_code,
fclt_f_gebouw_code
)
AS
SELECT sd.ins_srtdiscipline_omschrijving,
d.ins_discipline_omschrijving,
m.mld_stdmelding_omschrijving,
g.mld_stdmeldinggroep_naam mld_stdmelding_groep,
DECODE (m.mld_stdmelding_notfrontend, 1, 'Ja', 'Nee'),
TO_CHAR (m.mld_stdmelding_t_accepttijd.tijdsduur)
|| m.mld_stdmelding_t_accepttijd.eenheid,
TO_CHAR (m.mld_stdmelding_t_uitvoertijd.tijdsduur)
|| m.mld_stdmelding_t_uitvoertijd.eenheid,
COALESCE (k2.prs_kostensoort_opmerking,
k.prs_kostensoort_opmerking),
COALESCE (k2.prs_kostensoort_oms, k.prs_kostensoort_oms),
COALESCE (k2.prs_kostensoort_refcode, k.prs_kostensoort_refcode),
mld_stdmelding_hint,
len.fac_locale_tekst,
lde.fac_locale_tekst,
lfr.fac_locale_tekst,
alg_onrgoed_niveau,
mld_stdmelding_vervaldatum,
m.mld_stdmelding_vereisdienst,
ot.mld_typeopdr_omschrijving,
m.mld_stdmelding_autoorder,
dl.dienst,
dl.bedrijfnaam,
dl.locatie_code,
dl.gebouw_code
FROM mld_stdmelding m,
mld_stdmeldinggroep g,
mld_discipline d,
ins_srtdiscipline sd,
prs_kostensoort k,
prs_kostensoort k2,
(SELECT d.prs_dienst_key,
prs_bedrijf_naam bedrijfnaam,
prs_dienst_omschrijving dienst,
alg_locatie_code locatie_code,
alg_gebouw_upper gebouw_code
FROM prs_v_aanwezigbedrijf b,
prs_dienst d,
alg_locatie l,
alg_gebouw g,
prs_bedrijfdienstlocatie bdl
WHERE b.prs_bedrijf_key = bdl.prs_bedrijf_key(+)
AND bdl.prs_dienst_key = d.prs_dienst_key(+)
AND bdl.alg_locatie_key = l.alg_locatie_key(+)
AND bdl.alg_gebouw_key = g.alg_gebouw_key(+)
AND COALESCE (b.prs_bedrijf_intern, 0) = 0) dl,
mld_typeopdr ot,
(SELECT fac_locale_kolomkeyval, fac_locale_tekst
FROM fac_locale
WHERE fac_locale_kolomnaam = 'MLD_STDMELDING_HINT'
AND fac_locale_lang = 'EN') len,
(SELECT fac_locale_kolomkeyval, fac_locale_tekst
FROM fac_locale
WHERE fac_locale_kolomnaam = 'MLD_STDMELDING_HINT'
AND fac_locale_lang = 'DE') lde,
(SELECT fac_locale_kolomkeyval, fac_locale_tekst
FROM fac_locale
WHERE fac_locale_kolomnaam = 'MLD_STDMELDING_HINT'
AND fac_locale_lang = 'FR') lfr
WHERE m.mld_stdmelding_verwijder IS NULL
AND m.mld_ins_discipline_key = d.ins_discipline_key
AND d.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
AND d.prs_kostensoort_key = k.prs_kostensoort_key(+)
AND m.prs_kostensoort_key = k2.prs_kostensoort_key(+)
AND m.prs_dienst_key = dl.prs_dienst_key(+)
AND m.mld_typeopdr_key = ot.mld_typeopdr_key(+)
AND m.mld_stdmeldinggroep_key = g.mld_stdmeldinggroep_key(+)
AND len.fac_locale_kolomkeyval(+) = m.mld_stdmelding_key
AND lde.fac_locale_kolomkeyval(+) = m.mld_stdmelding_key
AND lfr.fac_locale_kolomkeyval(+) = m.mld_stdmelding_key;
-- Ticket RABO#66623 - Bewaking afmelding bij vervolgmeldingen (toepassing o.a. bij N-meldingen binnen Assetmanagement)
CREATE OR REPLACE VIEW aaxx_v_rap_bewaking_vervolgmld
(
VAKGROEPTYPE,
VAKGROEP,
HOOFD_MELDING_NR,
AANVRAGER,
GEKOPPELD,
HOOFD_MELDING_DATUM,
HOOFD_MELDING_STATUS,
VERVOLGMELDINGEN_AANTAL,
VERVOLGMELDINGEN,
VERVOLGMELDING_AFGEHANDELD,
OP_CONTROLELIJST
)
AS
SELECT sd.ins_srtdiscipline_omschrijving,
md.ins_discipline_omschrijving,
m.mld_melding_key,
p.prs_perslid_naam,
CASE WHEN m.mld_melding_parentkey IS NULL THEN 'nee' ELSE 'ja, via ' || TO_CHAR(m.mld_melding_key) END
gekoppeld,
m.mld_melding_datum,
s.mld_statuses_omschrijving,
v1.aantal,
v1.vervolgmeldingen,
COALESCE(v2.aantal_afgehandeld,0)
vervolgmeldingen_afgehandeld,
CASE WHEN mld_melding_status NOT IN (1,5,6)
AND COALESCE(v2.aantal_afgehandeld,0) = v1.aantal
THEN 'ja'
ELSE 'nee'
END op_controlelijst
FROM mld_melding m, mld_statuses s, prs_perslid p, mld_stdmelding sm, mld_discipline md, ins_srtdiscipline sd,
(SELECT m.mld_melding_start_key, count(*) aantal,
LISTAGG ( TO_CHAR (m.mld_melding_key)
|| ' (' || s.mld_statuses_omschrijving || ')',
chr(13) || chr(10))
WITHIN GROUP (ORDER BY m.mld_melding_key)
AS vervolgmeldingen
FROM mld_melding m, mld_statuses s
WHERE m.mld_melding_start_key IS NOT NULL
AND mld_workflowstep_key IS NULL
AND m.mld_melding_status = s.mld_statuses_key
GROUP BY m.mld_melding_start_key ) v1,
(SELECT m.mld_melding_start_key, count(*) aantal_afgehandeld
FROM mld_melding m
WHERE m.mld_melding_start_key IS NOT NULL
AND mld_workflowstep_key IS NULL
AND mld_melding_status IN (1,5,6)
GROUP BY m.mld_melding_start_key ) v2
WHERE m.mld_melding_status = s.mld_statuses_key
AND m.prs_perslid_key = p.prs_perslid_key
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
AND sm.mld_ins_discipline_key = md.ins_discipline_key
AND sd.ins_srtdiscipline_key = md.ins_srtdiscipline_key
AND m.mld_melding_key = v1.mld_melding_start_key
AND m.mld_melding_key = v2.mld_melding_start_key (+)
;
-- Grafische thema's en labels voor de plattegrond met reserveringsinfo
CREATE OR REPLACE VIEW aaxx_v_cad_label_res_info
(
alg_ruimte_key,
waarde
)
AS
SELECT rar.alg_ruimte_key,
max( TO_CHAR (res_rsv_ruimte_van, 'HH24:MI')
|| '-'
|| TO_CHAR (res_rsv_ruimte_tot, 'HH24:MI')
|| '~[s60]host: '
|| prs_perslid_naam
|| '~[s40][b]'
|| DECODE (COALESCE (INSTR (res_rsv_ruimte_omschrijving, ' ', 15),0),
0, res_rsv_ruimte_omschrijving,
SUBSTR (res_rsv_ruimte_omschrijving, 1, INSTR (res_rsv_ruimte_omschrijving, ' ', 15)-1)
|| chr(10)
|| '~[s40][b]' || SUBSTR(res_rsv_ruimte_omschrijving, INSTR(res_rsv_ruimte_omschrijving, ' ', 15)+1, 50))
) waarde
FROM res_v_aanwezigrsv_ruimte rrr,
res_ruimte_opstelling rro,
res_ruimte rr,
res_alg_ruimte rar,
res_opstelling ro,
prs_perslid pp
WHERE rrr.res_ruimte_opstel_key = rro.res_ruimte_opstel_key
AND rro.res_ruimte_key = rr.res_ruimte_key
AND rro.res_opstelling_key = ro.res_opstelling_key
AND rar.res_ruimte_key = rr.res_ruimte_key
AND SYSDATE BETWEEN res_rsv_ruimte_van - (1 / 96) -- kwartier
AND res_rsv_ruimte_tot
AND pp.prs_perslid_key = res_rsv_ruimte_host_key
AND (res_rsv_ruimte_bezoekers_shown IS NULL
OR res_rsv_ruimte_bezoekers_shown > 0)
GROUP BY rar.alg_ruimte_key;
CREATE OR REPLACE VIEW aaxx_v_cad_thema_resinfo
(
alg_ruimte_key,
waarde
)
AS
SELECT rar.alg_ruimte_key alg_ruimte_key,
ROUND ( (res_rsv_ruimte_tot - SYSDATE) * 24, 2) waarde
FROM res_v_aanwezigrsv_ruimte rrr,
res_ruimte_opstelling rro,
res_ruimte rr,
res_alg_ruimte rar,
res_opstelling ro
WHERE rrr.res_ruimte_opstel_key = rro.res_ruimte_opstel_key
AND rro.res_ruimte_key = rr.res_ruimte_key
AND rro.res_opstelling_key = ro.res_opstelling_key
AND rar.res_ruimte_key = rr.res_ruimte_key
AND SYSDATE BETWEEN res_rsv_ruimte_van AND res_rsv_ruimte_tot
AND (res_rsv_ruimte_bezoekers_shown IS NULL
OR res_rsv_ruimte_bezoekers_shown > 0)
UNION
-- binnenkort aanvangende reserveringen
SELECT rar.alg_ruimte_key alg_ruimte_key,
ROUND ( (SYSDATE - res_rsv_ruimte_van) * 24, 2) waarde
FROM res_v_aanwezigrsv_ruimte rrr,
res_ruimte_opstelling rro,
res_ruimte rr,
res_alg_ruimte rar,
res_opstelling ro
WHERE rrr.res_ruimte_opstel_key = rro.res_ruimte_opstel_key
AND rro.res_ruimte_key = rr.res_ruimte_key
AND rro.res_opstelling_key = ro.res_opstelling_key
AND rar.res_ruimte_key = rr.res_ruimte_key
AND SYSDATE BETWEEN res_rsv_ruimte_van - (1 / 24)
AND res_rsv_ruimte_tot
AND SYSDATE < res_rsv_ruimte_van
AND (res_rsv_ruimte_bezoekers_shown IS NULL
OR res_rsv_ruimte_bezoekers_shown > 0)
UNION
-- voorlopig vrije ruimte
SELECT rar.alg_ruimte_key alg_ruimte_key, 0 waarde
FROM res_ruimte_opstelling rro,
res_ruimte rr,
res_alg_ruimte rar,
res_opstelling ro
WHERE rro.res_ruimte_key = rr.res_ruimte_key
AND rro.res_opstelling_key = ro.res_opstelling_key
AND rar.res_ruimte_key = rr.res_ruimte_key
AND NOT EXISTS
(SELECT ''
FROM res_v_aanwezigrsv_ruimte rrr
WHERE rrr.res_ruimte_opstel_key = rro.res_ruimte_opstel_key
AND SYSDATE BETWEEN res_rsv_ruimte_van - (1 / 24)
AND res_rsv_ruimte_tot
AND (res_rsv_ruimte_bezoekers_shown IS NULL
OR res_rsv_ruimte_bezoekers_shown > 0));
-- view voor het exporteren van een catalogus. Deze kan later via de import ingelezen worden.
CREATE OR REPLACE VIEW aaxx_v_imp_bes_artikel_sync
(
FCLT_F_CatalogusNaam,
Leverancier,
CatDatum,
Artikelnr,
Groep,
Omschrijving,
Prijs,
Eenheid,
Picture,
Orderaantal,
Tax,
DueDate,
Inkoopprijs,
Minimum,
Staffeltabel,
Wijzigdagen,
Annuleerdagen
)
AS
SELECT td.ins_discipline_omschrijving,
b.prs_bedrijf_naam,
TO_CHAR (td.ins_discipline_aanmaak, 'yyyymmdd'),
sd.bes_srtdeel_nr,
sg.bes_srtgroep_omschrijving,
sd.bes_srtdeel_omschrijving,
TO_CHAR (bes.getsrtdeelprijs (sd.bes_srtdeel_key, NULL)),
sd.bes_srtdeel_eenheid,
sd.bes_srtdeel_image,
TO_CHAR (sd.bes_srtdeel_veelvoud),
TO_CHAR (sd.bes_srtdeel_btw),
TO_CHAR (sd.bes_srtdeel_vervaldatum, 'yyyymmdd'),
TO_CHAR (bes.getsrtdeelinkprijs (sd.bes_srtdeel_key, NULL)),
NULL,
bs.bes_staffeltabel_naam,
sd.bes_srtdeel_wijzigdagen,
sd.bes_srtdeel_annuleerdagen
FROM ins_tab_discipline td,
bes_srtgroep sg,
bes_srtdeel sd,
prs_bedrijf b,
bes_staffeltabel bs
WHERE td.ins_discipline_module = 'BES'
AND td.ins_discipline_verwijder IS NULL
AND td.ins_discipline_key = sg.ins_discipline_key
AND sg.bes_srtgroep_verwijder IS NULL
AND sg.bes_srtgroep_key = sd.bes_srtgroep_key
AND sd.bes_srtdeel_verwijder IS NULL
AND sd.prs_bedrijf_key = b.prs_bedrijf_key
AND bs.bes_staffeltabel_key(+) = sd.bes_staffeltabel_key;
CREATE OR REPLACE VIEW aaxx_v_rap_kostenmutatie
(
opdracht,
vakgroeptype,
vakgroep,
mutatie,
fclt_d_datum,
fclt_f_leverancier,
persoon
)
AS
SELECT o.mld_melding_key || '/' || o.mld_opdr_bedrijfopdr_volgnr opdracht,
(SELECT ins_srtdiscipline_omschrijving
FROM ins_srtdiscipline sd
WHERE sd.ins_srtdiscipline_key = d.ins_srtdiscipline_key)
Vakgroeptype,
ins_discipline_omschrijving vakgroep,
SUBSTR (
fac_tracking_oms,
INSTR (fac_tracking_oms, 'Totaal ex. BTW:'),
DECODE (
INSTR (fac_tracking_oms,
CHR (10),
INSTR (fac_tracking_oms, 'Totaal ex. BTW:')),
0,
10000,
INSTR (fac_tracking_oms,
CHR (10),
INSTR (fac_tracking_oms, 'Totaal ex. BTW:')))
- INSTR (fac_tracking_oms, 'Totaal ex. BTW:'))
oud_nieuw,
TO_CHAR (fac_tracking_datum, 'dd-mm-yyyy') datum,
prs_bedrijf_naam leverancier,
prs_perslid_naam_full persoon
FROM fac_tracking t,
mld_opdr o,
mld_melding m,
mld_stdmelding std,
ins_tab_discipline d,
prs_v_perslid_fullnames_all pf,
prs_bedrijf b
WHERE fac_tracking_oms LIKE '%Totaal ex. BTW:%'
AND t.fac_tracking_refkey = o.mld_opdr_key
AND o.mld_melding_key = m.mld_melding_key
AND m.mld_stdmelding_key = std.mld_stdmelding_key
AND std.mld_ins_discipline_key = d.ins_discipline_key
AND t.prs_perslid_key = pf.prs_perslid_key(+)
AND o.mld_uitvoerende_keys = b.prs_bedrijf_key(+)
AND t.fac_tracking_datum BETWEEN mld.getopdrachtstatusdate (
o.mld_opdr_key,
6) -- afgemeld
AND COALESCE (
mld.getopdrachtstatusdate (
o.mld_opdr_key,
9), -- afgerond
SYSDATE);
CREATE OR REPLACE VIEW aaxx_v_rap_bedrijf_orderadres
(
fclt_f_bedrijf,
fclt_f_plaats,
fclt_f_nummer,
fclt_f_email,
fclt_f_type,
fclt_f_orderadres,
stylesheet
)
AS
SELECT b.prs_bedrijf_naam,
b.prs_bedrijf_bezoek_plaats,
b.prs_leverancier_nr,
b.prs_bedrijf_email,
DECODE (a.prs_bedrijfadres_type,
'C', 'Contract',
'B', 'Bestelling',
'Opdracht')
|| ' '
|| ot.mld_typeopdr_omschrijving
TYPE,
a.prs_bedrijfadres_url,
a.prs_bedrijfadres_xsl
FROM prs_bedrijf b, prs_bedrijfadres a, mld_typeopdr ot
WHERE b.prs_bedrijf_key = a.prs_bedrijf_key
AND b.prs_bedrijf_verwijder IS NULL
AND NVL (b.prs_bedrijf_intern, 0) <> 1
AND a.mld_typeopdr_key = ot.mld_typeopdr_key(+);
-- view om offertestatus in dashbord te tonen
-- functionaliteit overgenomen uit mld.inc
CREATE OR REPLACE VIEW aaxx_v_rap_offerte_status
AS
SELECT m.melder_key,
m.melder,
u.*,
g.prs_perslid_key_verantw opdracht_gebouw_verantw_key,
m.kostensoort kostensoort,
subproductgroepgroep,
DECODE (
COALESCE (na.aantal, 0),
1,
'Offerte geaccepteerd',
DECODE (COALESCE (nta.aantal, 0),
0, 'Niet opgelost',
'Offerte acceptatie'))
offerte_status,
(CASE
WHEN mo.mld_opdr_flag>0 THEN Lcl.L('lcl_opdr_flag' || mo.mld_opdr_flag)
ELSE ''
END) vlag,
(SELECT ok.waarde_n
FROM mld_v_udr_opdrachtkenmerk_cnd ok
WHERE ok.opdracht_key = u.opdracht_key AND ok.kenmerk = 'Offerte bedrag'
) Offertebedrag,-- Op naam 'Offerte bedrag' ipv Key ivm gebruik afwijkende keys in de diverse HeyDayomgevingen
(SELECT fac.safe_to_number(kw.mld_kenmerkmelding_waarde)
FROM mld_kenmerkmelding kw, mld_kenmerk km, mld_srtkenmerk sk
WHERE kw.mld_melding_key = m.melding_key AND kw.mld_kenmerk_key = km.mld_kenmerk_key
AND km.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
AND sk.mld_srtkenmerk_upper = 'PROJECT LEIDER'
AND sk.mld_srtkenmerk_kenmerktype = 'S') projectleider_key,
(SELECT p.prs_perslid_naam
FROM mld_kenmerkmelding kw, mld_kenmerk km, mld_srtkenmerk sk, prs_perslid p
WHERE kw.mld_melding_key = m.melding_key AND kw.mld_kenmerk_key = km.mld_kenmerk_key
AND km.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
AND sk.mld_srtkenmerk_upper = 'PROJECT LEIDER'
AND sk.mld_srtkenmerk_kenmerktype = 'S'
AND fac.safe_to_number (kw.mld_kenmerkmelding_waarde) = p.prs_perslid_key) projectleider
FROM mld_v_udr_opdracht u,
mld_opdr mo,
alg_gebouw g,
mld_v_udr_melding m,
ins_tab_discipline d,
( SELECT o.mld_melding_key, COUNT (o.mld_statusopdr_key) aantal
FROM mld_opdr o
WHERE o.mld_statusopdr_key = 6
AND o.mld_opdr_key >
COALESCE (
(SELECT MAX (o1.mld_opdr_key)
FROM mld_opdr o1, mld_typeopdr mo1
WHERE o1.mld_typeopdr_key =
mo1.mld_typeopdr_key
AND mo1.mld_typeopdr_isofferte = 0
AND o1.mld_melding_key = o.mld_melding_key),
0)
GROUP BY o.mld_melding_key) nta,
( SELECT o.mld_melding_key, COUNT (o.mld_statusopdr_key) aantal
FROM mld_opdr o
WHERE o.mld_statusopdr_key = 9
AND o.mld_opdr_key >
COALESCE (
(SELECT MAX (o1.mld_opdr_key)
FROM mld_opdr o1, mld_typeopdr mo1
WHERE o1.mld_typeopdr_key =
mo1.mld_typeopdr_key
AND mo1.mld_typeopdr_isofferte = 0
AND o1.mld_melding_key = o.mld_melding_key),
0)
GROUP BY o.mld_melding_key) na
WHERE u.opdracht_gebouwcode = g.alg_gebouw_code
AND u.melding_key = m.melding_key
AND u.opdracht_key = mo.mld_opdr_key
AND m.fclt_3d_discipline_key = d.ins_discipline_key
AND d.ins_discipline_verwijder IS NULL
AND u.melding_key = na.mld_melding_key(+)
AND u.melding_key = nta.mld_melding_key(+)
AND (u.opdracht_type = 'RFQ' OR u.opdracht_type = 'Project RFQ') ;
CREATE OR REPLACE VIEW aaxx_v_rap_trace_uitvoerder
(
fclt_x_fm,
fclt_x_tfm,
html_opdracht,
fclt_f_district,
fclt_f_locatie,
fclt_f_gebouw,
fclt_f_bedrijf,
opdracht_omschrijving,
einddatum,
t,
m,
e,
notitie_datum,
notitie_omschrijving
)
AS
SELECT COALESCE (p.prs_perslid_naam_full, 'Onbekend') fmer, -- verantwoordelijke FMer
COALESCE (
(SELECT fac.getdomeinwaarde (fac_kenmerkdomein_key,
alg_onrgoedkenmerk_waarde)
FROM alg_kenmerk k, alg_onrgoedkenmerk ogk
WHERE k.alg_kenmerk_key = ogk.alg_kenmerk_key
AND ogk.alg_onrgoed_key = g.alg_gebouw_key
AND k.alg_kenmerk_key =
DECODE (aaxx_get_user,
'SABIC', 1180,
-1)),
'Onbekend'
)
tfmer, -- verantwoordelijke Technisch FMer
'<a onclick=''FcltMgr.openDetail("Appl/MLD/mld_opdr.asp?urole=bo&'
|| 'opdr_key='
|| o.mld_opdr_key
|| ' ", "Opdracht '
|| o.mld_melding_key
|| '/'
|| o.mld_opdr_bedrijfopdr_volgnr
|| '")''>'
|| o.mld_melding_key
|| '/'
|| o.mld_opdr_bedrijfopdr_volgnr
|| '</a>'
opdracht,
d.alg_district_omschrijving,
l.alg_locatie_omschrijving,
g.alg_gebouw_omschrijving,
prs_bedrijf_naam,
mld_opdr_omschrijving,
mld_opdr_einddatum,
(SELECT COUNT ( * )
FROM mld_opdr_note n3
WHERE n3.mld_opdr_key = o.mld_opdr_key
AND UPPER (n3.mld_opdr_note_omschrijving) LIKE '%#T%')
nt,
(SELECT COUNT ( * )
FROM mld_opdr_note n3
WHERE n3.mld_opdr_key = o.mld_opdr_key
AND UPPER (n3.mld_opdr_note_omschrijving) LIKE '%#M%')
nm,
(SELECT COUNT ( * )
FROM mld_opdr_note n3
WHERE n3.mld_opdr_key = o.mld_opdr_key
AND UPPER (n3.mld_opdr_note_omschrijving) LIKE '%#E%')
ne,
lastnote.mld_opdr_note_aanmaak,
lastnote.mld_opdr_note_omschrijving omschrijving
FROM mld_opdr o,
mld_melding m,
mld_stdmelding std,
prs_bedrijf b,
alg_v_onroerendgoed alg,
alg_gebouw g,
alg_locatie l,
alg_district d,
prs_v_perslid_fullnames_all p,
(SELECT n.mld_opdr_key,
mld_opdr_note_aanmaak,
mld_opdr_note_omschrijving
FROM mld_opdr_note n
WHERE ( UPPER (n.mld_opdr_note_omschrijving) LIKE '%#T%'
OR UPPER (n.mld_opdr_note_omschrijving) LIKE '%#M%'
OR UPPER (n.mld_opdr_note_omschrijving) LIKE '%#E%')
AND NOT EXISTS
(SELECT mld_opdr_note_key
FROM mld_opdr_note n2
WHERE n2.mld_opdr_note_aanmaak >
n.mld_opdr_note_aanmaak
AND n2.mld_opdr_key = n.mld_opdr_key))
note,
(SELECT n.mld_opdr_key,
mld_opdr_note_aanmaak,
mld_opdr_note_omschrijving
FROM mld_opdr_note n
WHERE NOT EXISTS
(SELECT mld_opdr_note_key
FROM mld_opdr_note n2
WHERE n2.mld_opdr_note_aanmaak >
n.mld_opdr_note_aanmaak
AND n2.mld_opdr_key = n.mld_opdr_key))
lastnote
WHERE o.mld_opdr_einddatum < SYSDATE
AND o.mld_opdr_key = note.mld_opdr_key(+)
AND o.fac_activiteit_key IS NULL
AND o.mld_opdr_key = lastnote.mld_opdr_key(+)
AND m.mld_stdmelding_key = std.mld_stdmelding_key
AND std.mld_stdmelding_slabewaken = 1
AND o.mld_statusopdr_key IN (5, 8) -- Toegekend + Geaccepteerd
AND b.prs_bedrijf_key = o.mld_uitvoerende_keys
AND m.mld_melding_key = o.mld_melding_key
AND g.prs_perslid_key_verantw = p.prs_perslid_key(+)
AND m.mld_alg_onroerendgoed_keys = alg.alg_onroerendgoed_keys
AND alg.alg_gebouw_key = g.alg_gebouw_key
AND g.alg_locatie_key = l.alg_locatie_key
AND l.alg_district_key = d.alg_district_key
AND (note.mld_opdr_note_aanmaak IS NULL
OR note.mld_opdr_note_aanmaak < SYSDATE - 7);
CREATE OR REPLACE VIEW aaxx_v_rap_trace_uitv_z_tfm
(
fclt_x_fm,
html_opdracht,
fclt_f_district,
fclt_f_locatie,
fclt_f_gebouw,
fclt_f_bedrijf,
opdracht_omschrijving,
einddatum,
t,
m,
e,
notitie_datum,
notitie_omschrijving
)
AS
SELECT fclt_x_fm,
html_opdracht,
fclt_f_district,
fclt_f_locatie,
fclt_f_gebouw,
fclt_f_bedrijf,
opdracht_omschrijving,
einddatum,
t,
m,
e,
notitie_datum,
notitie_omschrijving
FROM aaxx_v_rap_trace_uitvoerder;
/* Formatted on 19-7-2016 18:06:24 (QP5 v5.136.908.31019) */
CREATE OR REPLACE VIEW aaxx_v_rap_catering_export
(
reservering,
fclt_f_afdelingscode,
afdelings_omschrijving,
boekingsdatum,
afmelddatum,
fclt_f_periode,
aanvrager,
gebouw,
aantal,
artikel,
btw,
totaal
)
AS
SELECT rrr.res_reservering_key || '/' || rrr.res_rsv_ruimte_volgnr
reservering,
k.prs_kostenplaats_nr,
k.prs_kostenplaats_omschrijving,
rra.res_rsv_artikel_levering,
rra.res_rsv_artikel_afgemeld,
TO_CHAR (ADD_MONTHS (rra.res_rsv_artikel_verwerkt, -1), 'yyyy-mm')
periode,
pf.prs_perslid_naam_full,
g.alg_gebouw_code,
rra.res_rsv_artikel_aantal,
ra.res_artikel_omschrijving,
ra.res_artikel_btw,
rra.res_rsv_artikel_prijs
FROM res_rsv_artikel rra,
res_rsv_ruimte rrr,
prs_kostenplaats k,
prs_perslid p,
alg_gebouw g,
prs_afdeling a,
prs_v_perslid_fullnames_all pf,
res_artikel ra,
( SELECT res_rsv_ruimte_key, MAX (alg_gebouw_key) alg_gebouw_key
FROM (SELECT rrr.res_rsv_ruimte_key,
(SELECT alg_gebouw_key
FROM alg_verdieping v, alg_ruimte r
WHERE v.alg_verdieping_key = r.alg_verdieping_key
AND r.alg_ruimte_key = COALESCE (r2ar.alg_ruimte_key, rrr.alg_ruimte_key))
alg_gebouw_key
FROM res_v_rsv_ruimte_2_alg_ruimte r2ar,
res_v_aanwezigrsv_ruimte rrr
WHERE rrr.res_rsv_ruimte_key = r2ar.res_rsv_ruimte_key(+))
GROUP BY res_rsv_ruimte_key) rg
WHERE rra.res_status_bo_key = 6
AND rra.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key
AND rrr.prs_kostenplaats_key = k.prs_kostenplaats_key(+)
AND rrr.res_rsv_ruimte_host_key = p.prs_perslid_key
AND p.prs_afdeling_key = a.prs_afdeling_key
AND p.prs_perslid_key = pf.prs_perslid_key
AND rra.res_artikel_key = ra.res_artikel_key
AND rrr.res_rsv_ruimte_key = rg.res_rsv_ruimte_key
AND rg.alg_gebouw_key = g.alg_gebouw_key(+);
CREATE OR REPLACE VIEW aaxx_v_rap_login_user (hide_f_datum, fclt_d_datum, aantal)
AS
SELECT trunc(sysdate)-trunc(pl.login_datum),
TO_CHAR (pl.login_datum, 'dd-mm-yyyy'),
COUNT (prs_perslid_key)
FROM aaxx_perslid_login pl
GROUP BY trunc(sysdate)-trunc(pl.login_datum),
TO_CHAR (pl.login_datum, 'dd-mm-yyyy');
CREATE OR REPLACE VIEW aaxx_v_rap_errorlog
(
HIDE_F_IMP_LOG_DATUM,
FCLT_F_APPLICATIE,
FCLT_F_DATUM,
TIJDSTIP,
FCLT_F_NIVEAU,
FCLT_F_OMSCHRIJVING
)
AS
SELECT imp_log_datum hide_f_imp_log_datum,
imp_log_applicatie,
TO_CHAR (imp_log_datum, 'YYYYMMDD') fclt_f_datum,
TO_CHAR (imp_log_datum, 'HH24:MI:SS') tijdstip,
DECODE (imp_log_status,
'F', 'Fataal',
'E', 'Error',
'W', 'Waarschuwing',
'I', 'Informatief',
'-')
fclt_f_niveau,
imp_log_omschrijving fclt_f_omschrijving
FROM imp_log;
CREATE OR REPLACE VIEW aaxx_v_rap_lang_stdmelding_oms
(
key,
vakgroeptype,
vakgroep,
melding_omschrijving,
en,
de
)
AS
SELECT mld_stdmelding_key,
ins_srtdiscipline_prefix,
ins_discipline_omschrijving,
mld_stdmelding_omschrijving,
(SELECT fac_locale_tekst
FROM fac_locale
WHERE fac_locale_kolomnaam = 'MLD_STDMELDING_OMSCHRIJVING'
AND fac_locale_lang = 'EN'
AND fac_locale_kolomkeyval = std.mld_stdmelding_key)
EN,
(SELECT fac_locale_tekst
FROM fac_locale
WHERE fac_locale_kolomnaam = 'MLD_STDMELDING_OMSCHRIJVING'
AND fac_locale_lang = 'DE'
AND fac_locale_kolomkeyval = std.mld_stdmelding_key)
DE
FROM ins_tab_discipline d, mld_stdmelding std, ins_srtdiscipline sd
WHERE d.ins_discipline_key = std.mld_ins_discipline_key
AND d.ins_srtdiscipline_key = sd.ins_srtdiscipline_key(+)
AND ins_discipline_verwijder IS NULL
AND mld_stdmelding_verwijder IS NULL;
CREATE OR REPLACE VIEW aaxx_v_rap_lang_discipline_oms
(
key,
fclt_f_module,
vakgroeptype,
vakgroep,
en,
de
)
AS
SELECT ins_discipline_key,
ins_discipline_module,
ins_srtdiscipline_prefix,
ins_discipline_omschrijving,
(SELECT fac_locale_tekst
FROM fac_locale
WHERE fac_locale_kolomnaam = 'INS_DISCIPLINE_OMSCHRIJVING'
AND fac_locale_lang = 'EN'
AND fac_locale_kolomkeyval = d.ins_discipline_key)
EN,
(SELECT fac_locale_tekst
FROM fac_locale
WHERE fac_locale_kolomnaam = 'INS_DISCIPLINE_OMSCHRIJVING'
AND fac_locale_lang = 'DE'
AND fac_locale_kolomkeyval = d.ins_discipline_key)
DE
FROM ins_tab_discipline d, ins_srtdiscipline sd
WHERE d.ins_srtdiscipline_key = sd.ins_srtdiscipline_key(+)
AND ins_discipline_verwijder IS NULL;
-------------------------------------------------------------------------------
-- IMPORTFUNCTIE - MLD_LANG
-------------------------------------------------------------------------------
CREATE OR REPLACE PROCEDURE aaxx_import_mld_lang (
p_import_key IN NUMBER)
AS
CURSOR c_cursor
IS
SELECT *
FROM fac_imp_file
WHERE fac_import_key = p_import_key
ORDER BY fac_imp_file_index;
v_newline VARCHAR2 (1000); -- Import line
v_field VARCHAR2 (100); -- Import field
v_fielddelimitor VARCHAR2 (1); -- Field seperator
v_errormsg VARCHAR (200);
v_errorhint VARCHAR (200);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_skipfield VARCHAR2 (100);
v_dummy VARCHAR2 (1000);
-- De importvelden
v_vakgroeptype_nl VARCHAR2 (200);
v_vakgroeptype_prefix VARCHAR2 (200);
v_vakgroep_nl VARCHAR2 (200);
v_stdmelding_nl VARCHAR2 (200);
v_stdmelding_hint_nl VARCHAR2 (4000);
v_vakgroeptype_en VARCHAR2 (200);
v_vakgroep_en VARCHAR2 (200);
v_stdmelding_en VARCHAR2 (200);
v_stdmelding_hint_en VARCHAR2 (4000);
header_found BOOLEAN;
BEGIN
-- Init
header_found := FALSE;
v_fielddelimitor := ';';
-- Clear my previous imported rows
DELETE FROM aaxx_imp_mld_lang;
FOR rec1 IN c_cursor
LOOP
BEGIN
v_newline := rec1.fac_imp_file_line;
IF SUBSTR (v_newline, 1, 3) = '?'
THEN
-- EF BB BF aangetroffen
fac.imp_writelog (p_import_key,
'W',
'Byte Order Mark aangetroffen',
'Bestand heeft onbehandeld UTF-8 formaat.');
v_newline := SUBSTR (v_newline, 4);
END IF;
--vakgroeptype NL;prefix;plaatsgegevens;objectgegevens;bestelgegevens;vakgroep NL;melding NL;aanwijzingen (NL)
fac.imp_getfield (v_newline, v_fielddelimitor, v_vakgroeptype_nl);
fac.imp_getfield (v_newline, v_fielddelimitor, v_vakgroeptype_prefix);
fac.imp_getfield (v_newline, v_fielddelimitor, v_dummy);
fac.imp_getfield (v_newline, v_fielddelimitor, v_dummy);
fac.imp_getfield (v_newline, v_fielddelimitor, v_dummy);
fac.imp_getfield (v_newline, v_fielddelimitor, v_vakgroep_nl);
fac.imp_getfield (v_newline, v_fielddelimitor, v_stdmelding_nl);
fac.imp_getfield (v_newline, v_fielddelimitor, v_stdmelding_hint_nl);
-- ;groep;kostensoort;acceptatietijd;uitvoertijd;uitvoertijd kritiek;uitvoertijd hoog;uitvoertijd laag;streeftijd;directklaar;dienst;Vakgroeptype EN;vakgroep EN;melding EN;aanwijzingen EN;
fac.imp_getfield (v_newline, v_fielddelimitor, v_dummy);
fac.imp_getfield (v_newline, v_fielddelimitor, v_dummy);
fac.imp_getfield (v_newline, v_fielddelimitor, v_dummy);
fac.imp_getfield (v_newline, v_fielddelimitor, v_dummy);
fac.imp_getfield (v_newline, v_fielddelimitor, v_dummy);
fac.imp_getfield (v_newline, v_fielddelimitor, v_dummy);
fac.imp_getfield (v_newline, v_fielddelimitor, v_dummy);
fac.imp_getfield (v_newline, v_fielddelimitor, v_dummy);
fac.imp_getfield (v_newline, v_fielddelimitor, v_dummy);
fac.imp_getfield (v_newline, v_fielddelimitor, v_dummy);
fac.imp_getfield (v_newline, v_fielddelimitor, v_vakgroeptype_en);
fac.imp_getfield (v_newline, v_fielddelimitor, v_vakgroep_en);
fac.imp_getfield (v_newline, v_fielddelimitor, v_stdmelding_en);
fac.imp_getfield (v_newline, v_fielddelimitor, v_stdmelding_hint_en);
-- Skip until a valid header is found
IF UPPER (v_vakgroeptype_nl) = 'VAKGROEPTYPE NL'
AND UPPER (v_vakgroeptype_prefix) = 'PREFIX'
AND UPPER (v_vakgroep_nl) = 'VAKGROEP NL'
AND UPPER (v_stdmelding_nl) = 'MELDING NL'
AND UPPER (v_stdmelding_hint_nl) = 'AANWIJZINGEN (NL)'
AND UPPER (v_vakgroeptype_en) = 'VAKGROEPTYPE EN'
AND UPPER (v_vakgroep_en) = 'VAKGROEP EN'
AND UPPER (v_stdmelding_en) = 'MELDING EN'
AND UPPER (v_stdmelding_hint_en) = 'AANWIJZINGEN EN'
THEN
-- Sla de kopregel over.
header_found := TRUE;
ELSIF (header_found)
THEN
INSERT INTO aaxx_imp_mld_lang ( ins_srtdiscipline_omschrijving,
ins_srtdiscipline_prefix,
ins_discipline_omschrijving,
mld_stdmelding_omschrijving,
mld_stdmelding_hint,
ins_srtdiscipline_omschr_en,
ins_discipline_omschrijving_en,
mld_stdmelding_omschrijving_en,
mld_stdmelding_hint_en)
VALUES (SUBSTR (v_vakgroeptype_nl, 1, 30),
SUBSTR (v_vakgroeptype_prefix, 1, 3),
SUBSTR (v_vakgroep_nl, 1, 30),
SUBSTR (v_stdmelding_nl, 1, 60),
SUBSTR (v_stdmelding_hint_nl, 1, 1000),
SUBSTR (v_vakgroeptype_en, 1, 30),
SUBSTR (v_vakgroep_en, 1, 30),
SUBSTR (v_stdmelding_en, 1, 60),
SUBSTR (v_stdmelding_hint_en, 1, 1000));
ELSE -- geen geldige header aangetroffen
IF rec1.fac_imp_file_index = 1
THEN
fac.imp_writelog (p_import_key,
'I',
'Aangetroffen header',
SUBSTR( v_vakgroeptype_nl || '-1-' ||
v_vakgroeptype_prefix || '-2-' ||
v_vakgroep_nl || '-3-' ||
v_stdmelding_nl || '-4-' ||
v_stdmelding_hint_nl || '-5-' ||
v_vakgroeptype_en || '-6-' ||
v_vakgroep_en || '-7-' ||
v_stdmelding_en || '-8-' ||
v_stdmelding_hint_en,1,1000));
END IF;
END IF;
COMMIT;
END;
END LOOP;
IF NOT header_found
THEN
fac.imp_writelog (
p_import_key,
'E',
'Geen geldige header aangetroffen',
'Bestand is geen geldig MLD vertaling importbestand.');
END IF;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg :=
'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key,
'E',
SUBSTR (v_errormsg, 1, 1000),
'');
-- maak de importtabel leeg om te voorkomen dat er halve bestanden ingelezen worden.
DELETE FROM aaxx_imp_mld_lang;
END;
/
CREATE OR REPLACE PROCEDURE aaxx_update_mld_lang (
p_import_key IN NUMBER)
AS
CURSOR c
IS
SELECT *
FROM aaxx_imp_mld_lang
WHERE ins_srtdiscipline_omschrijving IS NOT NULL;
v_srtdiscipline_key NUMBER;
v_discipline_key NUMBER;
v_stdmelding_key NUMBER;
v_errormsg VARCHAR (1000);
v_error_hint VARCHAR (1000);
v_tekst VARCHAR (300);
oracle_err_mes VARCHAR2 (150);
oracle_err_num VARCHAR2 (150);
currentversion fac_module.fac_module_version%TYPE;
PROCEDURE update_locale(p_kolom IN VARCHAR2, p_key IN NUMBER, p_lang IN VARCHAR, p_value IN VARCHAR)
AS
BEGIN
BEGIN
SELECT fac_locale_tekst
INTO v_tekst
FROM fac_locale
WHERE UPPER(fac_locale_kolomnaam) = UPPER(p_kolom)
AND fac_locale_kolomkeyval = p_key
AND UPPER(fac_locale_lang) = UPPER(p_lang);
EXCEPTION WHEN NO_DATA_FOUND
THEN
INSERT INTO fac_locale (fac_locale_kolomkeyval, fac_locale_kolomnaam, fac_locale_lang, fac_locale_tekst)
VALUES (p_key, UPPER(p_kolom), UPPER(p_lang), SUBSTR(p_value,1,300));
RETURN;
END;
UPDATE fac_locale SET fac_locale_tekst = SUBSTR(p_value,1,300)
WHERE UPPER(fac_locale_kolomnaam) = UPPER(p_kolom)
AND fac_locale_kolomkeyval = p_key
AND UPPER(fac_locale_lang) = UPPER(p_lang);
RETURN;
END;
BEGIN
SELECT MAX (fac_module_version) INTO currentversion FROM fac_module;
fac.imp_writelog (
p_import_key,
'I',
'AA-FM Melding vertaling import version '
|| currentversion,
'$Revision$');
FOR rec IN c
LOOP
BEGIN
v_errormsg := 'Kan srtdiscipline [' || rec.ins_srtdiscipline_omschrijving || '] niet vinden.';
SELECT ins_srtdiscipline_key
INTO v_srtdiscipline_key
FROM ins_srtdiscipline
WHERE ins_srtdiscipline_verwijder IS NULL
AND TRIM(UPPER (ins_srtdiscipline_omschrijving)) =
TRIM(UPPER (rec.ins_srtdiscipline_omschrijving));
v_errormsg := 'Kan discipline [' || rec.ins_srtdiscipline_omschrijving || '-' || rec.ins_discipline_omschrijving || '] niet vinden.';
SELECT ins_discipline_key
INTO v_discipline_key
FROM ins_tab_discipline
WHERE ins_discipline_verwijder IS NULL
AND ins_srtdiscipline_key = v_srtdiscipline_key
AND TRIM(UPPER (ins_discipline_omschrijving)) = TRIM(UPPER (rec.ins_discipline_omschrijving));
v_errormsg := 'Kan stdmelding [' || rec.ins_srtdiscipline_omschrijving || '-' || rec.ins_discipline_omschrijving || '-' || rec.mld_stdmelding_omschrijving || '] niet vinden.';
SELECT mld_stdmelding_key
INTO v_stdmelding_key
FROM mld_stdmelding
WHERE mld_stdmelding_verwijder IS NULL
AND mld_ins_discipline_key = v_discipline_key
AND TRIM(UPPER (mld_stdmelding_omschrijving)) = TRIM(UPPER (rec.mld_stdmelding_omschrijving));
UPDATE mld_stdmelding SET mld_stdmelding_hint = rec.mld_stdmelding_hint WHERE mld_stdmelding_key = v_stdmelding_key;
update_locale('INS_SRTDISCIPLINE_OMSCHRIJVING', v_srtdiscipline_key, 'EN', rec.ins_srtdiscipline_omschr_en);
update_locale('INS_DISCIPLINE_OMSCHRIJVING', v_discipline_key, 'EN', rec.ins_discipline_omschrijving_en);
update_locale('MLD_STDMELDING_OMSCHRIJVING', v_stdmelding_key, 'EN', rec.mld_stdmelding_omschrijving_en);
update_locale('MLD_STDMELDING_HINT', v_stdmelding_key, 'EN', rec.mld_stdmelding_hint_en);
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
v_error_hint := v_errormsg;
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg :=
'ORACLE (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.imp_writelog (p_import_key,
'E',
v_errormsg,
v_error_hint);
COMMIT;
END;
END LOOP;
END;
/
-------------------------------------------------------------------------------
-- RAPPORTAGES Projecturen
-- AAIT#22843 en AADS#22701
-------------------------------------------------------------------------------
-- Alle project-meldingen (srtdisc_key = 1)
CREATE OR REPLACE VIEW aaxx_v_project_boom_nodes
AS
SELECT vt.ins_srtdiscipline_prefix,
m.mld_melding_key,
m.mld_melding_start_key,
vg.ins_discipline_omschrijving,
sm.mld_stdmelding_omschrijving,
m.mld_melding_status
FROM mld_melding m,
mld_stdmelding sm,
mld_discipline vg,
ins_srtdiscipline vt
WHERE sm.mld_stdmelding_key = m.mld_stdmelding_key
AND vg.ins_discipline_key = sm.mld_ins_discipline_key
AND vt.ins_srtdiscipline_key = vg.ins_srtdiscipline_key
AND vt.ins_srtdiscipline_omschrijving = 'Project';
-- Boomstructuur van projectmeldingen (vgl prs_v_afdelingsboom)
CREATE OR REPLACE VIEW aaxx_v_project_boom
(
niveau,
mld_melding_key,
mld_melding_key1,
mld_melding_key2,
mld_melding_key3,
mld_melding_key4
)
AS
SELECT '1' Niveau,
m1.mld_melding_key,
m1.mld_melding_key,
TO_NUMBER (NULL),
TO_NUMBER (NULL),
TO_NUMBER (NULL)
FROM aaxx_v_project_boom_nodes m1
WHERE m1.mld_melding_start_key IS NULL
AND m1.mld_melding_status IN (2, 3, 4, 7)
UNION
SELECT '2' Niveau,
m2.mld_melding_key,
m1.mld_melding_key,
m2.mld_melding_key,
TO_NUMBER (NULL),
TO_NUMBER (NULL)
FROM aaxx_v_project_boom_nodes m1,
aaxx_v_project_boom_nodes m2
WHERE m2.mld_melding_start_key = m1.mld_melding_key
AND m1.mld_melding_start_key IS NULL
AND m2.mld_melding_status IN (2, 3, 4, 7)
UNION
SELECT '3' Niveau,
m3.mld_melding_key,
m1.mld_melding_key,
m2.mld_melding_key,
m3.mld_melding_key,
TO_NUMBER (NULL)
FROM aaxx_v_project_boom_nodes m1,
aaxx_v_project_boom_nodes m2,
aaxx_v_project_boom_nodes m3
WHERE m3.mld_melding_start_key = m2.mld_melding_key
AND m2.mld_melding_start_key = m1.mld_melding_key
AND m1.mld_melding_start_key IS NULL
AND m3.mld_melding_status IN (2, 3, 4, 7)
UNION
SELECT '4' Niveau,
m4.mld_melding_key,
m1.mld_melding_key,
m2.mld_melding_key,
m3.mld_melding_key,
m4.mld_melding_key
FROM aaxx_v_project_boom_nodes m1,
aaxx_v_project_boom_nodes m2,
aaxx_v_project_boom_nodes m3,
aaxx_v_project_boom_nodes m4
WHERE m4.mld_melding_start_key = m3.mld_melding_key
AND m3.mld_melding_start_key = m2.mld_melding_key
AND m2.mld_melding_start_key = m1.mld_melding_key
AND m1.mld_melding_start_key IS NULL
AND m4.mld_melding_status IN (2, 3, 4, 7);
-- Rapportageview
CREATE OR REPLACE VIEW aaxx_v_rap_projectboom
AS
SELECT pb.mld_melding_key1||pb.mld_melding_key2||pb.mld_melding_key3||pb.mld_melding_key4||'/'||o.mld_opdr_bedrijfopdr_volgnr hide_f_srt,
pbn.ins_srtdiscipline_prefix || pb.mld_melding_key1
fclt_f_hoofdproject,
CASE
WHEN pb.mld_melding_key2 IS NULL THEN NULL
ELSE pbn.ins_srtdiscipline_prefix || pb.mld_melding_key2
END
deelproject1,
CASE
WHEN pb.mld_melding_key3 IS NULL THEN NULL
ELSE pbn.ins_srtdiscipline_prefix || pb.mld_melding_key3
END
deelproject2,
CASE
WHEN pb.mld_melding_key4 IS NULL THEN NULL
ELSE pbn.ins_srtdiscipline_prefix || pb.mld_melding_key4
END
deelproject3,
m.mld_melding_key hide_f_melding_key,
km.mld_kenmerkmelding_waarde fclt_f_projectnaam,
'<a class="details" onclick=''FcltMgr.openDetail("appl/mld/mld_melding.asp?urole=bo&'
|| 'mld_key='
|| m.mld_melding_key
|| '")''>'
|| pbn.ins_srtdiscipline_prefix || m.mld_melding_key
|| '</a>'
html_meldingnr,
pf.prs_perslid_naam_full fclt_x_projectmedewerker,
CASE
WHEN o.mld_opdr_bedrijfopdr_volgnr IS NULL
THEN
NULL
ELSE
'<a class="details" onclick=''FcltMgr.openDetail("appl/mld/mld_opdr.asp?urole=bo&'
|| 'opdr_key='
|| o.mld_opdr_key
|| '")''>'
|| htf.escape_sc(pf.prs_perslid_naam_full)
|| '</a>'
END
html_projectmedewerker,
so.mld_statusopdr_omschrijving statusopdr,
o.mld_opdr_uren weekplanning,
(SELECT SUM (mld_opdr_uren_besteed)
FROM mld_opdr_uren
WHERE mld_opdr_key = o.mld_opdr_key)
uren_besteed
FROM aaxx_v_project_boom pb,
aaxx_v_project_boom_nodes pbn,
mld_melding m,
(SELECT *
FROM mld_kenmerkmelding km, mld_kenmerk k
WHERE km.mld_kenmerk_key = k.mld_kenmerk_key
AND k.mld_srtkenmerk_key = 55) km,
(SELECT *
FROM mld_opdr
WHERE mld_typeopdr_key = 7) o,
mld_statusopdr so,
prs_v_perslid_fullnames_all pf
WHERE m.mld_melding_key = pb.mld_melding_key
AND pbn.mld_melding_key = pb.mld_melding_key
AND km.mld_melding_key(+) = m.mld_melding_key
AND o.mld_melding_key(+) = m.mld_melding_key
AND pf.prs_perslid_key(+) = o.mld_uitvoerende_keys
AND so.mld_statusopdr_key(+) = o.mld_statusopdr_key
AND o.mld_statusopdr_key(+) != 1;
-- rapportage tbv SAS70. Verificatie van kosten in FACILITOR tov de BudgetTracker.
CREATE OR REPLACE PACKAGE AAXX_RAP
AS
TYPE t_cursor IS REF CURSOR;
PROCEDURE kostenoverzicht (user_key IN NUMBER,
p_datum_van IN VARCHAR2,
p_datum_tot IN VARCHAR2,
p_cursor OUT t_cursor);
END;
/
CREATE OR REPLACE PACKAGE BODY AAXX_RAP
AS
--
--Rapportages
--
PROCEDURE kostenoverzicht (user_key IN NUMBER,
p_datum_van IN VARCHAR2, -- Let wel: formaat '13-05-2005'
p_datum_tot IN VARCHAR2,
p_cursor OUT t_cursor)
AS
v_datum_van DATE;
v_datum_tot DATE;
v_alg_level_read NUMBER;
BEGIN
v_datum_van := fac.safe_to_date (p_datum_van, 'dd-mm-yyyy');
v_datum_tot := fac.safe_to_date (p_datum_tot, 'dd-mm-yyyy');
OPEN p_cursor FOR
SELECT soort,
(SELECT prs_kostensoort_oms
FROM prs_kostensoort ks
WHERE v.prs_kostensoort_key = ks.prs_kostensoort_key)
kostensoort,
(SELECT prs_kostenplaats_omschrijving
FROM prs_kostenplaats kp
WHERE v.prs_kostenplaats_key = kp.prs_kostenplaats_key)
kostenplaats,
(SELECT alg_gebouw_omschrijving
FROM alg_gebouw g
WHERE v.alg_gebouw_key = g.alg_gebouw_key)
gebouw,
SUM (opdr_kosten) opdr_kosten,
SUM (fin_factuur_totaal) fin_kosten
FROM (SELECT 'Opdracht' soort,
prs_kostensoort_key,
prs_kostenplaats_key,
alg_gebouw_key,
opdr_kosten,
fin_factuur_totaal
FROM ( SELECT COALESCE (
f.prs_kostensoort_key,
COALESCE (std.prs_kostensoort_key,
d.prs_kostensoort_key))
prs_kostensoort_key,
o.prs_kostenplaats_key,
alg_gebouw_key,
o.mld_opdr_kosten opdr_kosten,
SUM (f.fin_factuur_totaal) fin_factuur_totaal
FROM mld_opdr o,
mld_typeopdr t,
mld_melding m,
mld_stdmelding std,
ins_tab_discipline d,
aaxx_v_aanwezigfactuur f,
alg_v_onroerendgoed_gegevens og
WHERE o.mld_typeopdr_key = t.mld_typeopdr_key
AND t.mld_typeopdr_omschrijving = 'Workorder'
AND o.mld_melding_key = m.mld_melding_key
AND m.mld_stdmelding_key = std.mld_stdmelding_key
AND std.mld_ins_discipline_key = d.ins_discipline_key
AND o.mld_opdr_key = f.mld_opdr_key(+)
AND m.mld_alg_onroerendgoed_keys =
og.alg_onroerendgoed_keys(+)
AND o.mld_opdr_datumbegin BETWEEN v_datum_van
AND v_datum_tot
GROUP BY f.prs_kostensoort_key,
std.prs_kostensoort_key,
d.prs_kostensoort_key,
o.prs_kostenplaats_key,
alg_gebouw_key,
o.mld_opdr_kosten
UNION ALL
SELECT COALESCE (f.prs_kostensoort_key,
d.prs_kostensoort_key)
prs_kostensoort_key,
k.prs_kostenplaats_key,
g.alg_gebouw_key,
(SELECT SUM(bes_bestelopdr_item_aantal
* bes_bestelopdr_item_prijs)
FROM bes_bestelopdr_item boi
WHERE boi.bes_bestelopdr_key = bo.bes_bestelopdr_key)
opdr_prijs,
SUM (f.fin_factuur_totaal)
FROM bes_bestelling b,
prs_kostenplaats k,
aaxx_v_aanwezigfactuur f,
mld_adres ma,
bes_bestelopdr bo,
ins_tab_discipline d,
alg_gebouw g,
alg_locatie l,
(SELECT DISTINCT
bes_bestelling_key, bes_bestelopdr_key
FROM bes_bestelling_item bi,
bes_bestelopdr_item boi
WHERE bi.bes_bestelopdr_item_key =
boi.bes_bestelopdr_item_key) bes_opdr,
(SELECT DISTINCT
bes_bestelling_key, ins_discipline_key
FROM bes_bestelling_item bi,
bes_srtdeel sd,
bes_srtgroep sg
WHERE bi.bes_srtdeel_key = sd.bes_srtdeel_key
AND sd.bes_srtgroep_key = sg.bes_srtgroep_key)
cat,
( SELECT mld_adres_key, MAX (alg_gebouw_key) alg_gebouw_key
FROM (SELECT ma.mld_adres_key,
DECODE (
aaxx_get_user,
'AH',
DECODE (ma.mld_adres_key,
101, 280,
alg_gebouw_key),
alg_gebouw_key)
alg_gebouw_key
FROM alg_gebouw g FULL OUTER JOIN mld_adres ma
ON g.mld_adres_key = ma.mld_adres_key)
WHERE alg_gebouw_key IS NOT NULL
GROUP BY mld_adres_key) adr_geb
WHERE b.prs_kostenplaats_key = k.prs_kostenplaats_key
AND b.mld_adres_key_lev = ma.mld_adres_key
AND b.bes_bestelling_key =
bes_opdr.bes_bestelling_key(+)
AND bes_opdr.bes_bestelopdr_key =
bo.bes_bestelopdr_key(+)
AND ma.alg_locatie_key = l.alg_locatie_key(+)
AND b.bes_bestelling_key = cat.bes_bestelling_key
AND cat.ins_discipline_key = d.ins_discipline_key
AND ma.mld_adres_key = adr_geb.mld_adres_key(+)
AND adr_geb.alg_gebouw_key = g.alg_gebouw_key(+)
AND bo.bes_bestelopdr_key = f.bes_bestelopdr_key(+)
AND bo.bes_bestelopdr_datum BETWEEN v_datum_van
AND v_datum_tot
GROUP BY f.prs_kostensoort_key,
d.prs_kostensoort_key,
k.prs_kostenplaats_key,
g.alg_gebouw_key,
bo.bes_bestelopdr_key)
UNION ALL
SELECT 'Contract',
d.prs_kostensoort_key,
c.prs_kostenplaats_key,
g.alg_gebouw_key,
DECODE (
cnt_gew.cnt_contract_plaats_gewicht,
0,
TO_NUMBER (NULL),
COALESCE (
(cp.cnt_contract_plaats_gewicht
/ cnt_gew.cnt_contract_plaats_gewicht)
* c.cnt_contract_kosten,
TO_NUMBER (NULL)))
opdr_kosten,
COALESCE (
DECODE (
cnt_gew.cnt_contract_plaats_gewicht,
0,
1,
(cp.cnt_contract_plaats_gewicht
/ cnt_gew.cnt_contract_plaats_gewicht))
* fin.fin_factuur_totaal,
NULL)
fin_factuur_totaal
FROM cnt_contract c,
cnt_contract_plaats cp,
ins_tab_discipline d,
alg_locatie l,
alg_gebouw g,
( SELECT cnt_contract_key,
SUM (fin_factuur_totaal) fin_factuur_totaal
FROM aaxx_v_aanwezigfactuur f
WHERE f.fin_factuur_datum BETWEEN v_datum_van AND v_datum_tot
GROUP BY cnt_contract_key) fin,
( SELECT cnt_contract_key,
SUM (cnt_contract_plaats_gewicht)
cnt_contract_plaats_gewicht
FROM cnt_contract_plaats
WHERE cnt_contract_plaats_verwijder IS NULL
GROUP BY cnt_contract_key) cnt_gew,
(SELECT cp.cnt_contract_plaats_key,
alg_locatie_key,
alg_gebouw_key
FROM alg_v_allonroerendgoed aog, cnt_contract_plaats cp
WHERE aog.alg_type = cp.cnt_alg_plaats_code
AND aog.alg_onroerendgoed_keys = cp.cnt_alg_plaats_key)
cog
WHERE c.ins_discipline_key = d.ins_discipline_key
AND c.cnt_contract_key = cp.cnt_contract_key(+)
AND c.cnt_contract_key = cnt_gew.cnt_contract_key(+)
AND cp.cnt_contract_plaats_key =
cog.cnt_contract_plaats_key(+)
AND c.cnt_contract_verwijder IS NULL
AND cp.cnt_contract_plaats_verwijder IS NULL
AND cog.alg_locatie_key = l.alg_locatie_key(+)
AND cog.alg_gebouw_key = g.alg_gebouw_key(+)
AND c.cnt_contract_key = fin.cnt_contract_key(+)
AND (v_datum_van BETWEEN c.cnt_contract_looptijd_van
AND c.cnt_contract_looptijd_tot
OR v_datum_tot BETWEEN c.cnt_contract_looptijd_van
AND c.cnt_contract_looptijd_tot)) v
GROUP BY soort,
prs_kostensoort_key,
prs_kostenplaats_key,
alg_gebouw_key;
END;
END;
/
-- VIEWS tbv RealTimeMonitor
CREATE OR REPLACE VIEW aaxx_v_graph_meldingpm
(
FCLT_XAS_,
FCLT_YAS_,
VOLGORDE
)
AS
SELECT DECODE (SUBSTR (TO_CHAR (mld_melding_datum, 'yyyymm'), 5),
'01', 'Januari',
'02', 'Februari',
'03', 'Maart',
'04', 'April',
'05', 'Mei',
'06', 'Juni',
'07', 'Juli',
'08', 'Augustus',
'09', 'September',
'10', 'Oktober',
'11', 'November',
'December'),
COUNT (d.ins_discipline_omschrijving),
TO_CHAR (mld_melding_datum, 'yyyymm')
FROM mld_melding m, mld_stdmelding std, ins_tab_discipline d
WHERE mld_melding_datum BETWEEN ADD_MONTHS (
TO_DATE (
TO_CHAR (SYSDATE, 'yyyymm') || '01',
'yyyymmdd'),
-11)
AND SYSDATE
AND m.mld_stdmelding_key = std.mld_stdmelding_key
AND std.mld_ins_discipline_key = d.ins_discipline_key
AND (aaxx_get_user <> 'IT' OR d.ins_srtdiscipline_key = 22) -- IT helpdesk
GROUP BY TO_CHAR (mld_melding_datum, 'yyyymm');
CREATE OR REPLACE VIEW aaxx_v_graph_openst_behand
(
FCLT_XAS_,
FCLT_YAS_,
FCLT_YAS2_OP_TIJD
)
AS
SELECT COALESCE (behandelaar, 'Onbekend') behandelaar,
COUNT (mld_key) - SUM (uitvoeringoptijd) totaal,
SUM (uitvoeringoptijd) op_tijd
FROM (SELECT DISTINCT
m.mld_melding_key mld_key,
CASE
WHEN fac.gettrackingdate ('MLDREJ', m.mld_melding_key) IS NULL
THEN
CASE SIGN(fac.datumtijdplusuitvoertijd (
m.mld_melding_datum,
m.mld_melding_t_uitvoertijd.tijdsduur,
m.mld_melding_t_uitvoertijd.eenheid)
- COALESCE (
fac.gettrackingdate ('MLDREJ', m.mld_melding_key),
fac.gettrackingdate ('MLDAFM', m.mld_melding_key),
SYSDATE))
WHEN -1
THEN
0
ELSE
1
END
ELSE
1
END
uitvoeringoptijd,
DECODE (
mld_melding_status,
7,
(SELECT MAX (prs_bedrijf_naam)
FROM mld_opdr o, prs_bedrijf b
WHERE o.mld_melding_key = m.mld_melding_key
AND O.MLD_UITVOERENDE_KEYS = b.prs_bedrijf_key
AND O.MLD_STATUSOPDR_KEY IN (3, 4, 5, 8)), -- 3- Ter fiattering, 4-Gefiatteerd, 5-Uitgegeven, 8-Geaccepteerd
4,
COALESCE (
(SELECT MAX (prs_bedrijf_naam)
FROM mld_opdr o, prs_bedrijf b
WHERE o.mld_melding_key = m.mld_melding_key
AND O.MLD_UITVOERENDE_KEYS =
b.prs_bedrijf_key
AND O.MLD_STATUSOPDR_KEY IN (3, 4, 5, 8)), -- 3- Ter fiattering, 4-Gefiatteerd, 5-Uitgegeven, 8-Geaccepteerd
(SELECT prs_perslid_naam_full
FROM prs_v_perslid_fullnames pf
WHERE pf.prs_perslid_key =
M.MLD_MELDING_BEHANDELAAR_KEY)),
(SELECT prs_perslid_naam_full
FROM prs_v_perslid_fullnames pf
WHERE pf.prs_perslid_key =
M.MLD_MELDING_BEHANDELAAR_KEY))
behandelaar
FROM mld_melding m,
mld_discipline md,
prs_perslid p,
mld_stdmelding std
WHERE m.prs_perslid_key = p.prs_perslid_key
AND md.ins_discipline_key = std.mld_ins_discipline_key
AND std.mld_stdmelding_key = m.mld_stdmelding_key
AND mld_melding_status IN (2, 3, 4, 7, 0) -- 2-ingevoerd, 3-ingezien, 4-geaccepteerd, 7-uitgegeven, 0-pending
AND (aaxx_get_user <> 'IT' OR md.ins_srtdiscipline_key = 22)) -- IT
GROUP BY behandelaar;
CREATE OR REPLACE VIEW aaxx_v_graph_ppi_acc (FCLT_XAS_, FCLT_YAS_)
AS
SELECT SUM (acceptoptijd) aantal, COUNT (mld_key) totaal
FROM (SELECT DISTINCT
m.mld_melding_key mld_key,
CASE SIGN(fac.datumtijdplusuitvoertijd (
fac.gettrackingdate ('MLDNEW',
m.mld_melding_key),
std.mld_stdmelding_t_accepttijd.tijdsduur,
std.mld_stdmelding_t_accepttijd.eenheid)
- COALESCE (
fac.gettrackingdate ('MLDREJ',
m.mld_melding_key),
fac.gettrackingdate ('MLDAFM',
m.mld_melding_key),
SYSDATE))
WHEN -1
THEN
0
ELSE
1
END
acceptoptijd
FROM mld_melding m, mld_discipline md, mld_stdmelding std
WHERE md.ins_discipline_key = std.mld_ins_discipline_key
AND std.mld_stdmelding_key = m.mld_stdmelding_key
AND (aaxx_get_user <> 'IT' OR md.ins_srtdiscipline_key = 22) -- IT helpdesk
AND mld_melding_status IN (2, 3) -- 2-ingevoerd, 3-ingezien
);
CREATE OR REPLACE VIEW aaxx_v_graph_ppi_uitv
(
FCLT_XAS_,
FCLT_YAS_
)
AS
SELECT SUM (uitvoeringoptijd) aantal, COUNT (mld_key) totaal
FROM (SELECT DISTINCT
m.mld_melding_key mld_key,
CASE
WHEN fac.gettrackingdate ('MLDREJ', m.mld_melding_key) IS NULL
THEN
CASE SIGN(fac.datumtijdplusuitvoertijd (
m.mld_melding_datum,
m.mld_melding_t_uitvoertijd.tijdsduur,
m.mld_melding_t_uitvoertijd.eenheid)
- COALESCE (
fac.gettrackingdate ('MLDREJ', m.mld_melding_key),
fac.gettrackingdate ('MLDAFM', m.mld_melding_key),
SYSDATE))
WHEN -1
THEN
0
ELSE
1
END
ELSE
1
END
uitvoeringoptijd
FROM mld_melding m, mld_discipline md, mld_stdmelding std
WHERE md.ins_discipline_key = std.mld_ins_discipline_key
AND std.mld_stdmelding_key = m.mld_stdmelding_key
AND (aaxx_get_user <> 'IT' OR md.ins_srtdiscipline_key = 22) -- IT helpdesk
AND mld_melding_status IN (2, 3, 4, 7, 0) -- 2-ingevoerd, 3-ingezien, 4-geaccepteerd, 7-uitgegeven, 0-pending
);
CREATE OR REPLACE VIEW aaxx_v_graph_vakgroep_afg
(
fclt_xas_,
fclt_yas_,
fclt_url,
fclt_3d_discipline_key
)
AS
SELECT d.ins_discipline_omschrijving,
COUNT (d.ins_discipline_omschrijving),
'appl/mld/mld_search.asp?urole=fo&autosearch=1&disc_key_str=',
d.ins_discipline_key
FROM mld_melding m,
mld_stdmelding std,
ins_tab_discipline d,
fac_srtnotificatie sn,
fac_tracking t
WHERE m.mld_stdmelding_key = std.mld_stdmelding_key
AND std.mld_ins_discipline_key = d.ins_discipline_key
AND (aaxx_get_user <> 'IT' OR d.ins_srtdiscipline_key = 22) -- IT helpdesk
AND t.fac_tracking_refkey = mld_melding_key
AND t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
AND sn.fac_srtnotificatie_code = 'MLDAFM'
AND t.fac_tracking_datum > SYSDATE - 30
GROUP BY d.ins_discipline_key, d.ins_discipline_omschrijving;
CREATE OR REPLACE VIEW aaxx_v_graph_vakgroep_open
(
FCLT_XAS_,
FCLT_YAS_,
FCLT_URL,
FCLT_3D_DISCIPLINE_KEY
)
AS
SELECT d.ins_discipline_omschrijving,
COUNT (d.ins_discipline_omschrijving),
'appl/mld/mld_search.asp?urole=fo&autosearch=1&disc_key_str='
|| d.ins_discipline_key,
d.ins_discipline_key
FROM mld_melding m, mld_stdmelding std, ins_tab_discipline d
WHERE m.mld_stdmelding_key = std.mld_stdmelding_key
AND std.mld_ins_discipline_key = d.ins_discipline_key
AND mld_melding_status IN (2, 3, 4, 7, 0) -- 2-ingevoerd, 3-ingezien, 4-geaccepteerd, 7-uitgegeven, 0-pending
AND (
(aaxx_get_user = 'GN' AND d.ins_srtdiscipline_key = 5) -- Storingen
OR
(aaxx_get_user = 'IT' AND d.ins_srtdiscipline_key = 22) -- IT helpdesk
OR
(aaxx_get_user <> 'GN' AND aaxx_get_user <> 'IT')
)
GROUP BY d.ins_discipline_key, d.ins_discipline_omschrijving
ORDER BY COUNT (d.ins_discipline_omschrijving) DESC;
--
-- Notificatie jobs
--
-- AAES#25128: BEZMUT-notificatie ook naar bezoeker sturen.
-- Wat te doen om dit aan te zetten:
-- Notificatiejob AAXX_V_NOTI_BEZOEKERS
-- Stylesheet aanpassen
-- Key van het kenmerk email hieronder invullen
CREATE OR REPLACE VIEW aaxx_v_noti_bezoekers
(
sender,
receiver,
text,
code,
fac_srtnotificatie_key,
KEY,
xkey,
xemail,
xmobile
)
AS
SELECT NULL sender,
NULL receiver,
DECODE (aaxx_get_user, 'ESSENT', 'Essent',
'ARCADIS', 'Arcadis',
'SABIC', 'Sabic',
'VGZ', 'VGZ',
'AAFM')
|| ' bevestigingmail afspraak '
|| TO_CHAR (a.bez_afspraak_datum, 'dd-mm-yyyy') text,
'CUST03' code,
(SELECT fac_srtnotificatie_key
FROM fac_srtnotificatie
WHERE fac_srtnotificatie_code = 'CUST03') fac_srtnotificatie_key,
b.bez_afspraak_key key,
b.bez_bezoekers_key xkey,
COALESCE(v.email,v.email_kenmerk)
xemail,
NULL xmobile
FROM fac_tracking t,
bez_afspraak a,
bez_bezoekers b,
(SELECT b1.bez_afspraak_key,
b1.bez_bezoekers_key,
b1.bez_bezoekers_email
AS email,
(SELECT kw.bez_kenmerkwaarde_waarde
FROM bez_kenmerkwaarde kw
WHERE kw.bez_bezoekers_key = b1.bez_bezoekers_key
AND kw.bez_kenmerk_key =
DECODE (aaxx_get_user,
'ESSENT', 1001,
'IT', 1022,
'ARCADIS', 1003,
'SABIC', 1000)) -- Zie ticket 60226 - 'SABIC' kan in principe weg..
AS email_kenmerk
FROM bez_bezoekers b1, bez_afspraak a1
WHERE b1.bez_afspraak_key = a1.bez_afspraak_key
AND a1.bez_afspraak_datum > SYSDATE) v
WHERE t.fac_srtnotificatie_key =
(SELECT fac_srtnotificatie_key
FROM fac_srtnotificatie
WHERE fac_srtnotificatie_code = 'BEZMUT')
AND t.fac_tracking_datum > (SELECT fac_notificatie_job_nextrun - fac_notificatie_job_interval/24
FROM fac_notificatie_job
WHERE fac_notificatie_job_view = 'AAXX_V_NOTI_BEZOEKERS')
AND t.fac_tracking_datum < (SELECT fac_notificatie_job_nextrun
FROM fac_notificatie_job
WHERE fac_notificatie_job_view = 'AAXX_V_NOTI_BEZOEKERS')
AND a.bez_afspraak_key = t.fac_tracking_refkey
AND a.bez_afspraak_datum > SYSDATE
AND b.bez_afspraak_key = t.fac_tracking_refkey
AND b.bez_bezoekers_key = v.bez_bezoekers_key ;
-- Rapportage t.b.v. Share & Meet
-- Share and Meet reserveringen zijn te herkennen aan een host die een login heeft met de volgende struktuur _<account>_<remote_prs_perslid_key>
-- bijvoorbeeld _AANS_4533
CREATE OR REPLACE VIEW aaxx_v_rap_share_meet_kosten
(
reservering,
afdelingscode,
fclt_f_afdelings_omschrijving,
verbruiksartikelen,
boekingsdatum,
afmelddatum,
fclt_f_periode,
aanvrager,
locatie,
gebouw,
ruimtenaam,
btw,
stuksprijs,
aantal,
totaal
)
AS
SELECT rrr.res_reservering_key || '/' || rrr.res_rsv_ruimte_volgnr resnr,
a.prs_afdeling_naam,
a.prs_afdeling_omschrijving,
rrp.omschrijving,
TO_CHAR (rrr.res_rsv_ruimte_van, 'dd-mm-yyyy'),
TO_CHAR (rrp.afgemeld, 'dd-mm-yyyy'),
TO_CHAR (rrp.afgemeld, 'yyyy-mm'),
pf_h.prs_perslid_naam_full pfh,
rg.alg_locatie_omschrijving,
rg.alg_gebouw_omschrijving,
rr.res_ruimte_nr,
btw,
rrp.artikel_prijs,
rrp.aantal,
rrp.prijs
FROM res_rsv_ruimte rrr,
(SELECT rrr.res_rsv_ruimte_key,
ra.res_artikel_omschrijving omschrijving,
rra.res_rsv_artikel_aantal aantal,
ROUND (
res.getartikelprijs (rra.res_rsv_artikel_key)
/ rra.res_rsv_artikel_aantal,
2)
artikel_prijs,
rra.res_rsv_artikel_prijs prijs,
rra.res_rsv_artikel_afgemeld afgemeld,
ra.res_artikel_btw btw
FROM res_rsv_ruimte rrr, res_rsv_artikel rra, res_artikel ra
WHERE rrr.res_rsv_ruimte_key = rra.res_rsv_ruimte_key
AND rra.res_artikel_key = ra.res_artikel_key
AND rra.res_rsv_artikel_verwijder IS NULL
UNION
SELECT fac_tracking_refkey res_rsv_ruimte_key,
'Zaalhuur',
1 aantal,
res_rsv_ruimte_prijs artikel_prijs,
res_rsv_ruimte_prijs prijs,
t.fac_tracking_datum afgemeld,
21 btw
FROM res_rsv_ruimte rrr, fac_tracking t, fac_srtnotificatie sn
WHERE res_rsv_ruimte_prijs <> 0
AND rrr.res_rsv_ruimte_key = t.fac_tracking_refkey
AND t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
AND sn.fac_srtnotificatie_code = 'RESAFM'
AND t.fac_tracking_oms IS NULL
AND res_rsv_ruimte_verwijder IS NULL) rrp,
prs_v_perslid_fullnames_all pf_h,
res_ruimte rr,
prs_afdeling a,
prs_perslid p,
( SELECT MAX (alg_ruimte_key) alg_ruimte_key,
res_rsv_ruimte_key,
res_ruimte_key
FROM res_v_rsv_ruimte_2_alg_ruimte
GROUP BY res_rsv_ruimte_key, res_ruimte_key) r,
alg_v_ruimte_gegevens rg
WHERE rrp.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key
AND rrr.res_rsv_ruimte_host_key = pf_h.prs_perslid_key
AND rrr.res_rsv_ruimte_host_key = p.prs_perslid_key
AND p.prs_afdeling_key = a.prs_afdeling_key
AND r.res_ruimte_key = rr.res_ruimte_key
AND rrr.res_rsv_ruimte_key = r.res_rsv_ruimte_key
AND r.alg_ruimte_key = rg.alg_ruimte_key
AND rrp.afgemeld IS NOT NULL
AND p.prs_perslid_oslogin like '/_AA__/_%' escape '/';
-- AAAR#52939 notificatiejobs voor AAAR werken niet meer
-- MOET DEZE VIEW NIET VERWIJDERD WORDEN ??
-- AAIT#28929 notificaties t.b.v Share & Meet voor beoordeling dag later
CREATE OR REPLACE VIEW aaxx_v_noti_sm_resafm_reminder
(
CODE,
SENDER,
RECEIVER,
TEXT,
KEY,
XKEY
)
AS
SELECT 'RESAFM',
NULL,
res_rsv_ruimte_contact_key,
'Herinnering beoordeling reservering: '
|| res_reservering_key
|| '/'
|| res_rsv_ruimte_volgnr,
rsv.res_reservering_key,
rsv.res_rsv_ruimte_key
FROM res_rsv_ruimte rsv,
res_activiteit ra,
res_srtactiviteit rsr,
fac_tracking tr,
fac_srtnotificatie str
WHERE res_rsv_ruimte_verwijder IS NULL
AND rsv.res_activiteit_key = ra.res_activiteit_key
AND ra.res_srtactiviteit_key = rsr.res_srtactiviteit_key
AND UPPER(rsr.res_srtactiviteit_omschrijving) = 'SHARE & MEET'
AND tr.fac_srtnotificatie_key = str.fac_srtnotificatie_key
AND tr.fac_tracking_refkey = res_rsv_ruimte_key
AND str.fac_srtnotificatie_xmlnode IN
('reservering', 'xreservering')
AND fac_srtnotificatie_code = 'RESAFM'
AND fac_tracking_oms IS NULL
AND TO_DATE (fac_tracking_datum, 'DD-MM-YYYY') =
TO_DATE (SYSDATE-1, 'DD-MM-YYYY');
-- kenmerk key 1000: afspraak is prive (dus niet op infobord)
-- geld voor IT en Arcadis
CREATE OR REPLACE VIEW aaxx_v_rap_infobord
(
item_type,
item_key,
aktief,
bezoek_status,
offset,
dag,
tijd_van,
tijd_tot,
ruimte,
catalogus,
aanvrager,
gastheer,
omschrijving,
status,
bezoeker,
bedrijf,
locatie_code,
gebouw_code,
verdieping_code,
locatie_omschrijving,
gebouw_omschrijving,
verdieping_omschrijving,
alg_locatie_key,
alg_gebouw_key,
alg_verdieping_key
)
AS
SELECT 'RES',
rrr.res_rsv_ruimte_key,
(CASE
WHEN res_rsv_ruimte_van > SYSDATE THEN 'expected'
WHEN res_rsv_ruimte_tot < SYSDATE THEN 'passed'
ELSE 'active'
END)
aktief,
(CASE
WHEN b.bez_bezoekers_out IS NOT NULL THEN 'out'
WHEN b.bez_bezoekers_done IS NOT NULL THEN 'in'
ELSE 'expected'
END)
bezoek_status,
TRUNC ( (SYSDATE - res_rsv_ruimte_van) * 24 * 60) offset,
TO_CHAR (res_rsv_ruimte_van, 'dd-mm-yyyy') dag,
TO_CHAR (res_rsv_ruimte_van, 'hh24:mi') tijd_van,
TO_CHAR (res_rsv_ruimte_tot, 'hh24:mi') tijd_tot,
res_ruimte_nr ruimte,
ins_discipline_omschrijving catalogus,
aanvrager.prs_perslid_naam_full aanvrager,
COALESCE (gastheer.prs_perslid_naam_full,
a.bez_afspraak_gastheer)
gastheer,
res_rsv_ruimte_omschrijving omschrijving,
sf.res_status_fo_omschrijving status,
b.bez_afspraak_naam,
b.bez_afspraak_bedrijf,
alg_locatie_code locatie_code,
alg_gebouw_code gebouw_code,
alg_verdieping_code verdieping_code,
alg_locatie_omschrijving locatie_omschrijving,
alg_gebouw_omschrijving gebouw_omschrijving,
alg_verdieping_omschrijving verdieping_omschrijving,
l.alg_locatie_key,
g.alg_gebouw_key,
v.alg_verdieping_key
FROM res_v_aanwezigrsv_ruimte rrr,
res_ruimte_opstelling rro,
prs_v_perslid_fullnames aanvrager,
prs_v_perslid_fullnames gastheer,
res_v_res_ruimte_gegevens rrg,
alg_locatie l,
alg_gebouw g,
alg_verdieping v,
res_status_fo sf,
res_discipline rd,
bez_afspraak a,
bez_bezoekers b,
(SELECT * FROM bez_kenmerkwaarde
WHERE bez_kenmerk_key = 1000
AND bez_kenmerkwaarde_verwijder IS NULL) prive
WHERE rrr.res_ruimte_opstel_key = rro.res_ruimte_opstel_key
AND rro.res_ruimte_key = rrg.res_ruimte_key
AND rrr.res_rsv_ruimte_host_key = gastheer.prs_perslid_key(+)
AND rrr.res_rsv_ruimte_contact_key = aanvrager.prs_perslid_key
AND TRUNC (res_rsv_ruimte_van) = TRUNC (SYSDATE)
AND rrg.alg_locatie_key = l.alg_locatie_key
AND rrg.alg_gebouw_key = g.alg_gebouw_key
AND rrg.alg_verdieping_key = v.alg_verdieping_key
AND rrr.res_status_fo_key = sf.res_status_fo_key
AND rrg.res_discipline_key = rd.ins_discipline_key
AND rrr.res_rsv_ruimte_key = a.res_rsv_ruimte_key(+)
AND a.bez_afspraak_key = b.bez_afspraak_key(+)
AND prive.bez_bezoekers_key(+) = b.bez_bezoekers_key
AND COALESCE(prive.bez_kenmerkwaarde_waarde, '0') = '0'
UNION ALL
SELECT 'BEZ',
b.bez_afspraak_key,
(CASE
WHEN a.bez_afspraak_datum > SYSDATE THEN 'expected'
WHEN a.bez_afspraak_eind < SYSDATE THEN 'passed'
ELSE 'active'
END)
aktief,
(CASE
WHEN b.bez_bezoekers_out IS NOT NULL THEN 'out'
WHEN b.bez_bezoekers_done IS NOT NULL THEN 'in'
ELSE 'expected'
END)
bezoek_status,
TRUNC ( (SYSDATE - bez_afspraak_datum) * 24 * 60) offset,
TO_CHAR (bez_afspraak_datum, 'dd-mm-yyyy') dag,
TO_CHAR (bez_afspraak_datum, 'hh24:mi') tijd_van,
TO_CHAR (bez_afspraak_eind, 'hh24:mi') tijd_tot,
NULL ruimte,
NULL catalogus,
aanvrager.prs_perslid_naam_full aanvrager,
COALESCE (gastheer.prs_perslid_naam_full,
a.bez_afspraak_gastheer)
gastheer,
NULL omschrijving,
NULL status,
b.bez_afspraak_naam,
b.bez_afspraak_bedrijf,
alg_locatie_code locatie_code,
alg_gebouw_code gebouw_code,
NULL verdieping_code,
alg_locatie_omschrijving locatie_omschrijving,
alg_gebouw_naam gebouw_omschrijving,
alg_verdieping_omschrijving verdieping_omschrijving,
l.alg_locatie_key,
ogg.alg_gebouw_key,
ogg.alg_verdieping_key
FROM bez_afspraak a,
bez_bezoekers b,
prs_v_perslid_fullnames aanvrager,
alg_locatie l,
alg_v_allonrgoed_gegevens ogg,
prs_v_perslid_fullnames gastheer,
(SELECT * FROM bez_kenmerkwaarde
WHERE bez_kenmerk_key = 1000
AND bez_kenmerkwaarde_verwijder IS NULL) prive
WHERE a.bez_afspraak_key = b.bez_afspraak_key
AND TRUNC(a.bez_afspraak_datum) = TRUNC(SYSDATE)
AND a.bez_afspraak_host_key = gastheer.prs_perslid_key(+)
AND a.bez_afspraak_contact_key = aanvrager.prs_perslid_key
AND a.alg_locatie_key = l.alg_locatie_key
AND a.alg_onrgoed_keys = ogg.alg_onroerendgoed_keys(+)
AND a.res_rsv_ruimte_key IS NULL
AND prive.bez_bezoekers_key(+) = b.bez_bezoekers_key
AND COALESCE(prive.bez_kenmerkwaarde_waarde, '0') = '0';
-- AAES#24665/AANS#27628: In eerste instantie vormgegeven tbv. meldingen op
-- objecten. Later uitgebreid tbv. reserveringen.
/* Formatted on 10-10-2013 14:32:24 (QP5 v5.115.810.9015) */
CREATE OR REPLACE VIEW aaxx_v_rap_mld_qrc
(
fclt_3d_locatie_key,
fclt_3d_discipline_key,
fclt_f_discipline,
fclt_f_soortmelding,
fclt_f_locatie,
fclt_f_gebouw,
fclt_f_verdieping,
plaats,
ruimte_key,
ruimtefunctie,
fclt_f_objectdiscipline,
fclt_f_objectgroep,
objectsoort_key,
fclt_f_objectsoort,
objectsoort_code,
ins_deel_key,
ins_deel_omschrijving,
ins_deel_upper,
hide_f_bookmark_id,
variabele
)
AS
SELECT l.alg_locatie_key,
disc.ins_discipline_key,
disc.ins_discipline_omschrijving,
msd.mld_stdmelding_omschrijving,
l.alg_locatie_omschrijving,
o.alg_gebouw_omschrijving,
o.alg_verdieping_omschrijving,
o.alg_plaatsaanduiding plaats,
d.ins_alg_ruimte_key ruimte_key,
sr.alg_srtruimte_omschrijving,
disc.ins_discipline_omschrijving,
sg.ins_srtgroep_omschrijving,
sd.ins_srtdeel_key,
sd.ins_srtdeel_omschrijving,
sd.ins_srtdeel_code,
d.ins_deel_key,
d.ins_deel_omschrijving,
d.ins_deel_upper,
b.fac_bookmark_id,
'INS_KEY'
FROM (SELECT DECODE (
INSTR (
SUBSTR (
UPPER (fac_bookmark_query),
INSTR (UPPER (fac_bookmark_query),
'STDM_KEY=')
),
'&'
),
0,
SUBSTR (
SUBSTR (
UPPER (fac_bookmark_query),
INSTR (UPPER (fac_bookmark_query),
'STDM_KEY=')
),
10
),
SUBSTR (
SUBSTR (
UPPER (fac_bookmark_query),
INSTR (UPPER (fac_bookmark_query),
'STDM_KEY=')
),
10,
INSTR (
SUBSTR (
UPPER (fac_bookmark_query),
INSTR (UPPER (fac_bookmark_query),
'STDM_KEY=')
),
'&'
)
- 10
)
)
stdm_key,
fac_bookmark_id
FROM fac_bookmark
WHERE UPPER (fac_bookmark_path) = 'APPL/PDA/MELDING.ASP'
AND INSTR (UPPER (fac_bookmark_query), 'STDM_KEY') > 0)
b, -- stdm_key-bookmarks
(SELECT sm.mld_stdmelding_key,
sm.mld_stdmelding_omschrijving,
si.ins_srtinstallatie_key ins_srtdeel_key
FROM mld_stdmelding sm,
mld_stdmelding_srtinst si
WHERE sm.mld_stdmelding_key = si.mld_stdmelding_key
AND sm.mld_stdmelding_verwijder IS NULL
AND si.ins_srtinstallatie_niveau = 'S'
UNION ALL
SELECT sm.mld_stdmelding_key,
sm.mld_stdmelding_omschrijving,
sd.ins_srtdeel_key
FROM mld_stdmelding sm,
mld_stdmelding_srtinst si,
ins_srtdeel sd
WHERE sm.mld_stdmelding_key = si.mld_stdmelding_key
AND sm.mld_stdmelding_verwijder IS NULL
AND si.ins_srtinstallatie_niveau = 'G'
AND si.ins_srtinstallatie_key = sd.ins_srtgroep_key
UNION ALL
SELECT sm.mld_stdmelding_key,
sm.mld_stdmelding_omschrijving,
sd.ins_srtdeel_key
FROM mld_stdmelding sm,
mld_stdmelding_srtinst si,
ins_srtgroep sg,
ins_srtdeel sd
WHERE sm.mld_stdmelding_key = si.mld_stdmelding_key
AND sm.mld_stdmelding_verwijder IS NULL
AND si.ins_srtinstallatie_niveau = 'D'
AND si.ins_srtinstallatie_key = sg.ins_discipline_key
AND sg.ins_srtgroep_key = sd.ins_srtgroep_key) msd, -- object-meldingen
ins_v_aanwezigdeel d,
ins_srtdeel sd,
ins_srtgroep sg,
ins_discipline disc,
ins_v_alg_overzicht o,
alg_locatie l,
alg_ruimte r,
alg_srtruimte sr
WHERE fac.safe_to_number (b.stdm_key) = msd.mld_stdmelding_key
AND msd.ins_srtdeel_key = d.ins_srtdeel_key
AND d.ins_alg_ruimte_type IN ('T', 'R', 'W')
AND d.ins_deel_parent_key IS NULL
AND d.ins_srtdeel_key = sd.ins_srtdeel_key
AND sd.ins_srtgroep_key = sg.ins_srtgroep_key
AND sg.ins_discipline_key = disc.ins_discipline_key
AND d.ins_alg_ruimte_key = o.alg_onroerendgoed_keys
AND d.ins_alg_ruimte_type = o.alg_onroerendgoed_type
AND d.ins_alg_locatie_key = o.alg_locatie_key -- redundant?
AND o.alg_locatie_key = l.alg_locatie_key
AND d.ins_alg_ruimte_key = r.alg_ruimte_key
AND r.alg_srtruimte_key = sr.alg_srtruimte_key(+)
UNION ALL
SELECT l.alg_locatie_key,
disc.ins_discipline_key,
disc.ins_discipline_omschrijving,
'Reserveer ruimte',
l.alg_locatie_omschrijving,
o.alg_gebouw_omschrijving,
o.alg_verdieping_omschrijving,
rr.res_ruimte_nr plaats,
rar.res_ruimte_key ruimte_key,
sr.alg_srtruimte_omschrijving,
NULL ins_discipline_omschrijving,
NULL ins_srtgroep_omschrijving,
NULL ins_srtdeel_key,
NULL ins_srtdeel_omschrijving,
NULL ins_srtdeel_code,
NULL ins_deel_key,
NULL ins_deel_omschrijving,
NULL ins_deel_upper,
b.fac_bookmark_id,
'RES_RUIMTE_KEY'
FROM fac_bookmark b,
res_ruimte rr,
res_discipline disc,
( SELECT res_ruimte_key, MAX (alg_ruimte_key) alg_ruimte_key
FROM res_alg_ruimte
WHERE res_alg_ruimte_verwijder IS NULL
GROUP BY res_ruimte_key) rar,
alg_ruimte r,
alg_srtruimte sr,
ins_v_alg_overzicht o,
alg_locatie l
WHERE TRUNC (b.fac_bookmark_aanmaak) = TO_DATE ('10102013', 'ddmmyyyy')
AND UPPER (b.fac_bookmark_path) = 'APPL/PDA/RESERVERINGEN.ASP'
AND rr.res_discipline_key = disc.ins_discipline_key
AND rr.res_ruimte_key = rar.res_ruimte_key
AND rar.alg_ruimte_key = r.alg_ruimte_key
AND r.alg_srtruimte_key = sr.alg_srtruimte_key(+)
AND r.alg_ruimte_key = o.alg_onroerendgoed_keys
AND o.alg_onroerendgoed_type = 'R'
AND o.alg_locatie_key = l.alg_locatie_key;
-- AASA#37919
-- Rapport met opdrachtgegevens van hergoedkeuringsverzoeken incl gebouwverantwoordelijke
-- Status 10 = ter goedkeuring
CREATE OR REPLACE VIEW aaxx_v_udr_hergoedkeuren
AS
SELECT mld_opdr_key,
srt.ins_srtdiscipline_prefix
|| o.mld_melding_key
|| '/'
|| mld_opdr_bedrijfopdr_volgnr
opdrachtnr,
mu.naam uitvoerende,
ot.mld_typeopdr_omschrijving opdrachttype,
mld_opdr_omschrijving omschrijving,
k.prs_kostenplaats_nr || ' ' || prs_kostenplaats_omschrijving
kostenplaats,
mld_opdr_kosten kosten,
pf1.prs_perslid_naam_full behandelaar,
mld_opdr_opmerking afhandeling,
mld_opdr_datumbegin opdrachtdatum,
mld_opdr_einddatum einddatum,
mld_opdr_plandatum plandatum,
l.alg_locatie_code || aog.alg_plaatsaanduiding plaats,
aog.alg_gebouw_key,
aog.alg_gebouw_code gebouw_code,
g.prs_perslid_key_verantw gebouw_verwantwoordelijke_key,
pf2.prs_perslid_naam_full gebouw_verwantwoordelijke,
aog.alg_verdieping_omschrijving verdieping_omschrijving,
aog.alg_verdieping_code verdieping,
aog.alg_ruimte_nr ruimte_nr,
aog.alg_ruimte_omschrijving ruimte_omschrijving,
std.mld_stdmelding_omschrijving melding,
d.ins_discipline_omschrijving vakgroep,
srt.ins_srtdiscipline_omschrijving vakgroeptype
FROM mld_opdr o,
mld_melding m,
alg_v_allonrgoed_gegevens aog,
alg_locatie l,
alg_gebouw g,
mld_stdmelding std,
mld_discipline d,
ins_srtdiscipline srt,
mld_typeopdr ot,
prs_v_perslid_fullnames_all pf1,
prs_v_perslid_fullnames_all pf2,
mld_v_uitvoerende mu,
prs_kostenplaats k
WHERE mld_statusopdr_key = 10
AND mld_opdr_approved_refiat IS NOT NULL
AND o.mld_melding_key = m.mld_melding_key
AND o.fac_activiteit_key IS NULL
AND aog.alg_onroerendgoed_keys = m.mld_alg_onroerendgoed_keys
AND aog.alg_locatie_key = l.alg_locatie_key
AND g.alg_gebouw_key = aog.alg_gebouw_key
AND m.mld_stdmelding_key = std.mld_stdmelding_key
AND std.mld_ins_discipline_key = d.ins_discipline_key
AND srt.ins_srtdiscipline_key = d.ins_srtdiscipline_key
AND ot.mld_typeopdr_key = o.mld_typeopdr_key
AND pf1.prs_perslid_key(+) = o.prs_perslid_key
AND pf2.prs_perslid_key(+) = g.prs_perslid_key_verantw
AND mu.mld_uitvoerende_key = o.mld_uitvoerende_keys
AND o.prs_kostenplaats_key = k.prs_kostenplaats_key(+);
-- specifieke versie van mld_v_udr_meldingopdracht vanwege performance problemen met de core versie.
CREATE OR REPLACE VIEW aaxx_v_udr_meldingopdracht
AS
SELECT m.mld_melding_key meldingnummer,
l.alg_locatie_omschrijving melding_locatie,
aog.alg_gebouw_naam melding_gebouw,
d.ins_discipline_omschrijving productgroep,
mld_statuses_omschrijving melding_status,
mld_melding_datum melding_datum,
mld_melding_einddatum melding_einddatum,
mld_melding_omschrijving vomschrijving,
mld_statusopdr_omschrijving opdracht_status,
o.mld_opdr_key opdracht_key,
d.ins_discipline_key fclt_3d_discipline_key
FROM mld_melding m,
mld_statuses ms,
mld_opdr o,
mld_statusopdr so,
alg_v_onroerendgoed_gegevens aog,
alg_locatie l,
mld_stdmelding std,
ins_tab_discipline d
WHERE m.mld_melding_key = o.mld_melding_key
AND m.mld_melding_status = ms.mld_statuses_key
AND o.mld_statusopdr_key = so.mld_statusopdr_key
AND m.mld_alg_locatie_key = l.alg_locatie_key
AND m.mld_alg_onroerendgoed_keys = aog.alg_onroerendgoed_keys
AND m.mld_stdmelding_key = std.mld_stdmelding_key
AND std.mld_ins_discipline_key = d.ins_discipline_key;
-- AAFM#26513 Notificatie goedgekeurde offerte naar autorisatiegroep "HEYDAY Servicedesk"'
-- Opdracht in status 9 (na ORDOOK)
-- 'opdracht bij melding wanneer automatische offerteafhandeling uitgeschakeld is' --> mld_disc_params_offerteauto = 0
-- Opdracht (RFQ) sinds de vorige check goedgekeurd (eenmalig sturen) - 2 views voor beschikbaar. Notificatie naar Gebouwbeheerder + naar ORDOAP-rechthebbenden
-- Bestemming zijn de personen(0..n) in autorisatiegroep HEYDAY Servicedesk.
CREATE OR REPLACE VIEW aaxx_v_noti_offerte_accepted
(
sender,
receiver,
text,
code,
key,
xkey
)
AS
SELECT DISTINCT NULL sender,
gg.prs_perslid_key receiver,
(SELECT fac_version_cust FROM fac_version)
|| ': Offerte '
|| m.mld_melding_key||'/'||o.mld_opdr_bedrijfopdr_volgnr
|| ' is geaccepteerd' text,
'CUST04' code,
o.mld_opdr_key key,
NULL xkey
FROM mld_opdr o,
mld_melding m,
mld_stdmelding s,
mld_discipline d,
mld_disc_params dp,
fac_srtnotificatie sn,
fac_tracking t,
fac_groep g,
fac_gebruikersgroep gg
WHERE o.mld_statusopdr_key = 9
AND m.mld_melding_key = o.mld_melding_key
AND s.mld_stdmelding_key = m.mld_stdmelding_key
AND d.ins_discipline_key = s.mld_ins_discipline_key
AND dp.mld_ins_discipline_key = d.ins_discipline_key
AND dp.mld_disc_params_offerteauto = 0
AND sn.fac_srtnotificatie_code = 'ORDOOK'
AND t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
AND t.fac_tracking_refkey = o.mld_opdr_key
AND t.fac_tracking_datum BETWEEN (SELECT fac_notificatie_job_nextrun - fac_notificatie_job_interval/24
FROM fac_notificatie_job
WHERE fac_notificatie_job_view = 'AAXX_V_NOTI_OFFERTE_ACCEPTED')
AND (SELECT fac_notificatie_job_nextrun
FROM fac_notificatie_job
WHERE fac_notificatie_job_view = 'AAXX_V_NOTI_OFFERTE_ACCEPTED')
AND g.fac_groep_upper = 'HEYDAY SERVICEDESK'
AND gg.fac_groep_key = g.fac_groep_key;
CREATE OR REPLACE VIEW aaxx_v_noti_offerte_goedkeuren
(
sender,
receiver,
text,
code,
key,
xkey
)
AS
SELECT NULL,
gv.prs_perslid_key,
'Offerte '
|| m.mld_melding_key
|| '/'
|| mld_opdr_bedrijfopdr_volgnr
|| ' is afgemeld en dient beoordeeld te worden',
'ORDMAI',
o.mld_opdr_key,
NULL
FROM mld_opdr o,
mld_typeopdr ot,
mld_melding m,
alg_v_allonroerendgoed aor,
(SELECT alg_gebouw_key, g.prs_perslid_key_verantw prs_perslid_key
FROM alg_gebouw g
WHERE prs_perslid_key_verantw IS NOT NULL
UNION ALL
SELECT alg_gebouw_key, g.prs_perslid_key_verantw2 prs_perslid_key
FROM alg_gebouw g
WHERE g.prs_perslid_key_verantw2 IS NOT NULL) gv,
prs_perslid p,
( SELECT fac_tracking_refkey,
MAX (fac_tracking_datum) fac_tracking_datum
FROM fac_tracking ft, fac_srtnotificatie fsn
WHERE fsn.fac_srtnotificatie_key = ft.fac_srtnotificatie_key
AND fac_srtnotificatie_code = 'ORDAFM'
GROUP BY fac_tracking_refkey) ft
WHERE mld_statusopdr_key = 6
AND ot.mld_typeopdr_key = o.mld_typeopdr_key
AND mld_typeopdr_isofferte = 1
AND m.mld_melding_key = o.mld_melding_key
AND m.mld_alg_onroerendgoed_keys = aor.alg_onroerendgoed_keys
AND gv.alg_gebouw_key = aor.alg_gebouw_key
AND gv.prs_perslid_key = p.prs_perslid_key
AND ft.fac_tracking_refkey = o.mld_opdr_key
AND ft.fac_tracking_datum >=
SYSDATE -
(SELECT COALESCE (fac_notificatie_job_interval, 1) / 24
FROM fac_notificatie_job
WHERE fac_notificatie_job_view = 'AAXX_V_NOTI_OFFERTE_GOEDKEUREN' );
CREATE OR REPLACE VIEW aaxx_v_noti_offerte_goedk_2
(
sender,
receiver,
text,
code,
key,
xkey
)
AS
SELECT NULL,
oap.prs_perslid_key,
'Offerte '
|| m.mld_melding_key
|| '/'
|| mld_opdr_bedrijfopdr_volgnr
|| ' is afgemeld en dient beoordeeld te worden',
'CUST12',
o.mld_opdr_key,
NULL
FROM mld_opdr o,
mld_typeopdr ot,
mld_melding m,
(SELECT gg.prs_perslid_key
FROM fac_functie f,
fac_groeprechten gr,
fac_groep g,
fac_gebruikersgroep gg
WHERE f.fac_functie_code = 'WEB_ORDOAP'
AND f.fac_functie_key = gr.fac_functie_key
AND gr.fac_groep_key = g.fac_groep_key
AND g.fac_groep_key = gg.fac_groep_key) oap,
( SELECT fac_tracking_refkey,
MAX (fac_tracking_datum) fac_tracking_datum
FROM fac_tracking ft, fac_srtnotificatie fsn
WHERE fsn.fac_srtnotificatie_key = ft.fac_srtnotificatie_key
AND fac_srtnotificatie_code = 'ORDAFM'
GROUP BY fac_tracking_refkey) ft
WHERE mld_statusopdr_key = 6
AND ot.mld_typeopdr_key = o.mld_typeopdr_key
AND mld_typeopdr_isofferte = 1
AND m.mld_melding_key = o.mld_melding_key
AND ft.fac_tracking_refkey = o.mld_opdr_key
AND ft.fac_tracking_datum >=
SYSDATE -
(SELECT COALESCE (fac_notificatie_job_interval, 1) / 24
FROM fac_notificatie_job
WHERE fac_notificatie_job_view = 'AAXX_V_NOTI_OFFERTE_GOEDK_2' );
-- AAHU#29410 Notificatie geregistreerde klacht naar groep "HEYDAY-FMer"
-- prefix KL is klacht
CREATE OR REPLACE VIEW aaxx_v_noti_klacht_reminder
(
sender,
receiver,
text,
code,
key,
xkey
)
AS
SELECT NULL,
fm.prs_perslid_key,
'Er is een klacht geregistreerd met referentienummer: '
|| m.mld_melding_key,
'MLDNEW',
m.mld_melding_key,
NULL
FROM mld_melding m,
mld_stdmelding std,
mld_discipline d,
ins_srtdiscipline srt,
fac_tracking tr,
fac_srtnotificatie str,
(SELECT p.prs_perslid_key
FROM fac_gebruikersgroep fg, fac_groep g, prs_perslid p
WHERE g.fac_groep_key = fg.fac_groep_key
AND p.prs_perslid_key = fg.prs_perslid_key
AND UPPER (g.fac_groep_omschrijving) = 'HEYDAY FM-ER'
AND prs_perslid_verwijder IS NULL
AND prs_perslid_email IS NOT NULL) fm
WHERE m.mld_stdmelding_key = std.mld_stdmelding_key
AND std.mld_ins_discipline_key = d.ins_discipline_key
AND d.ins_srtdiscipline_key = srt.ins_srtdiscipline_key
AND srt.ins_srtdiscipline_module = 'MLD'
AND srt.ins_srtdiscipline_prefix = 'KL'
AND m.fac_activiteit_key IS NULL
AND tr.fac_srtnotificatie_key = str.fac_srtnotificatie_key
AND tr.fac_tracking_refkey = m.mld_melding_key
AND str.fac_srtnotificatie_code = 'MLDNEW'
AND tr.fac_tracking_datum > SYSDATE - 1 / 24;
-- AAFM#33840 notificatie tbv gepland bezoek
CREATE OR REPLACE VIEW aaxx_v_noti_plan_opdr
(
sender,
receiver,
text,
code,
key,
xkey,
xemail,
xmobile
)
AS
SELECT NULL sender,
NULL receiver,
'Aankondiging werkzaamheden door '
|| b.prs_bedrijf_naam
|| ' op '
|| mld_opdr_plandatum
|| ' op uw locatie'
text,
'CUST08' code,
mld_opdr_key key,
NULL xkey,
g.alg_gebouw_email xemail,
NULL xmobile
FROM mld_opdr o,
mld_melding m,
alg_v_allonrgoed_gegevens aog,
alg_gebouw g,
prs_bedrijf b
WHERE ( (TRUNC (mld_opdr_plandatum) = TRUNC (SYSDATE + 1)
AND fac.getweekdaynum (SYSDATE) != 6)
OR (TRUNC (mld_opdr_plandatum) BETWEEN TRUNC (SYSDATE + 1)
AND TRUNC (SYSDATE + 3)
AND fac.getweekdaynum (SYSDATE) = 6))
AND mld_statusopdr_key NOT IN (1, 6, 7, 9)
AND o.mld_melding_key = m.mld_melding_key
AND aog.alg_onroerendgoed_keys = m.mld_alg_onroerendgoed_keys
AND o.mld_uitvoerende_keys = b.prs_bedrijf_key
AND g.alg_gebouw_key = aog.alg_gebouw_key;
-- AAIT#31201 automatische notificatie naar melder van PR meldingen sturen
-- 2 weken voorafgaand aan de einddatum van een project (PR melding).
CREATE OR REPLACE VIEW aaxx_v_noti_mld_projecten
(
sender,
receiver,
text,
code,
key,
xkey
)
AS
SELECT NULL sender,
prs_perslid_key_voor,
'Herinnering: Over 2 weken sluit projectnummer '
|| ins_srtdiscipline_prefix
|| mld_melding_key
text,
'MLDNEW' code,
mld_melding_key key,
NULL xkey
FROM mld_melding m,
mld_stdmelding std,
mld_discipline d,
ins_srtdiscipline srt
WHERE m.mld_stdmelding_key = std.mld_stdmelding_key
AND std.mld_ins_discipline_key = d.ins_discipline_key
AND d.ins_srtdiscipline_key = srt.ins_srtdiscipline_key
AND UPPER (ins_srtdiscipline_prefix) = 'PR'
AND m.mld_melding_status NOT IN (1, 5, 6)
AND m.mld_melding_einddatum BETWEEN SYSDATE + 13 AND SYSDATE + 14;
CREATE OR REPLACE VIEW aaxx_v_kostensoort
(
prs_kostensoort_key,
prs_kostensoort_omschrijving
)
AS
SELECT prs_kostensoort_key,
prs_kostensoort_oms || '-' || prs_kostensoort_opmerking
FROM prs_kostensoort;
-- AAIT#32784 inzage in zoekgedrag. View te gebruiken icm 20151 rapport mogelijkheden.
CREATE OR REPLACE VIEW aaxx_v_gui_searchresults
(
Zoekterm,
Datum,
Persoon,
Keuze,
Resultaat
)
AS
SELECT fgc.fac_gui_counter_info zoekterm,
fac_gui_counter_date datum,
prs_perslid_naam_full persoon,
choice.fac_gui_counter_info keuze,
result.fac_gui_counter_info resultaat
FROM fac_gui_counter fgc,
prs_v_perslid_fullnames pf,
(SELECT fac_gui_counter_refkey, fac_gui_counter_info
FROM fac_gui_counter fgc
WHERE fac_gui_counter_info IS NOT NULL
AND fac_gui_counter_group = 'searchchoice') choice,
(SELECT fac_gui_counter_refkey, fac_gui_counter_info
FROM fac_gui_counter fgc
WHERE fac_gui_counter_info IS NOT NULL
AND fac_gui_counter_group = 'searchresult') result
WHERE fac_gui_counter_group = 'search'
AND fgc.fac_gui_counter_info IS NOT NULL
AND fgc.prs_perslid_key = pf.prs_perslid_key
AND choice.fac_gui_counter_refkey(+) = fgc.fac_gui_counter_key
AND result.fac_gui_counter_refkey(+) = fgc.fac_gui_counter_key;
-- procedure om ontvangen emails te processen. De klant specifieke eigenschappen, keys e.d. moeten
-- in de aanroep meegegeven worden.
CREATE OR REPLACE PROCEDURE aaxx_processemail (
pfrom IN VARCHAR2,
pto IN VARCHAR2,
psubject IN VARCHAR2,
pbody IN VARCHAR2,
psessionid IN VARCHAR2,
pemailkey IN NUMBER)
AS
sender_key prs_perslid.prs_perslid_key%TYPE;
melder_key prs_perslid.prs_perslid_key%TYPE;
kostenplaats_key prs_afdeling.prs_kostenplaats_key%TYPE;
mldkey mld_melding.mld_melding_key%TYPE;
opdrkey mld_opdr.mld_opdr_key%TYPE;
stdmelding mld_stdmelding.mld_stdmelding_key%TYPE;
subject_regexp fac_setting.fac_setting_default%TYPE;
kkey mld_kenmerk.mld_kenmerk_key%TYPE;
errormsg fac_result.fac_result_waarde%TYPE;
behandelaar_key mld_melding.mld_melding_behandelaar_key%TYPE;
typeopdrkey mld_typeopdr.mld_typeopdr_key%TYPE;
mldnum VARCHAR2 (4000);
opdrnum VARCHAR2 (4000);
opdrvolgnr NUMBER (10);
srtdisc VARCHAR2 (4000);
cnt NUMBER (10);
v_flag_on_fenote NUMBER (10);
v_flag_on_bonote NUMBER (10);
v_from VARCHAR2 (4000);
v_body VARCHAR2 (4000);
v_subject VARCHAR2 (1000);
v_pos NUMBER;
v_result NUMBER;
v_factuur_key fin_factuur.fin_factuur_key%TYPE;
v_kenmerk_key fin_kenmerk.fin_kenmerk_key%TYPE;
v_fac_usrdata_key_ja NUMBER(10);
v_fac_usrdata_key_nee NUMBER(10);
BEGIN
errormsg := '(0x143)';
-- de mailberichten worden doorgestuurd vanuit de AAFM exchange omgeving. Hierbij
-- is het niet mogelijk de afzender te laten staan. Daarom wordt de afzender in het subject
-- van de mail geplaatst. Scheidingsteken in de ';'.
v_from := SUBSTR (psubject, 1, INSTR (psubject, ';') - 1);
v_subject := SUBSTR (psubject, INSTR (psubject, ';') + 1);
-- Verwijder de Bounce Address Tag Validation
IF v_from LIKE 'prvs=%'
THEN
v_from := SUBSTR (v_from, INSTR (v_from, '=', -1) + 1);
END IF;
v_body :=
v_from || ': ' || CHR (13) || CHR (10)
|| SUBSTR (
v_subject || CHR (13) || CHR (10)
|| REPLACE (SUBSTR (pbody, 1, 3900 - (LENGTH (v_subject) + 2)),
CHR (13) || CHR (10) || CHR (13) || CHR (10),
CHR (13) || CHR (10)),
1,
3900); -- verwijder onnodige witregels
-- DBMS_OUTPUT.PUT_LINE('v_from: '||v_from);
errormsg := '(0x143a)';
-- Valideer de sender in pfrom: kennen we deze?
SELECT MIN (prs_perslid_key), MIN (d.prs_kostenplaats_key)
INTO sender_key, kostenplaats_key
FROM prs_perslid p, prs_afdeling d
WHERE p.prs_afdeling_key = d.prs_afdeling_key
AND prs_perslid_verwijder IS NULL
AND UPPER (prs_perslid_email) = UPPER (v_from);
errormsg := '(0x143b)';
IF sender_key IS NULL
THEN
sender_key := 11; -- prs_perslid_key onbekend mail adres.
SELECT d.prs_kostenplaats_key
INTO kostenplaats_key
FROM prs_perslid p, prs_afdeling d
WHERE p.prs_afdeling_key = d.prs_afdeling_key
AND prs_perslid_verwijder IS NULL
AND p.prs_perslid_key = sender_key;
END IF;
CASE
WHEN UPPER (pto) LIKE 'INVOICES@%'
THEN
errormsg := '(0x143c)';
INSERT INTO fin_factuur (fin_factuur_statuses_key,
fin_factuur_datum,
fin_factuur_totaal_btw,
fin_factuur_nr,
fin_factuur_bron)
VALUES (3,
SYSDATE,
0,
'#',
2)
RETURNING fin_factuur_key
INTO v_factuur_key;
-- Zet kenmerk laatste factuur op Ja
-- Ophalen key-waarde Ja van kenmerkveld Laatste Factuur
SELECT ud.fac_usrdata_key
INTO v_fac_usrdata_key_ja
FROM fin_kenmerk k,
fac_kenmerkdomein kd,
fac_usrtab ut,
fac_usrdata ud
WHERE fin_kenmerk_key = 2
AND k.fac_kenmerkdomein_key = kd.fac_kenmerkdomein_key
AND kd.fac_usrtab_key = ut.fac_usrtab_key
AND ut.fac_usrtab_key = ud.fac_usrtab_key
AND fac.safe_to_number (ud.fac_usrdata_code) = 1; -- Waarde is Ja
errormsg := '(0x143d)';
INSERT INTO fin_kenmerkfactuur (fin_factuur_key, fin_kenmerk_key, fin_kenmerkfactuur_waarde)
VALUES (v_factuur_key, 2, v_fac_usrdata_key_ja);
-- Bepaal de key van de bijlages
errormsg := '(0x143e)';
SELECT fin_kenmerk_key
INTO v_kenmerk_key
FROM fin_kenmerk
WHERE fin_kenmerk_verwijder IS NULL
AND UPPER(fin_kenmerk_omschrijving) = 'BIJLAGES';
errormsg := '(0x143f)';
INSERT INTO fac_result (fac_result_sessionid,
fac_result_naam,
fac_result_waarde)
VALUES (psessionid,
'kenmerkpath',
'FIN\F'
|| TO_CHAR (TRUNC (v_factuur_key / 1000), 'FM0000')
|| '___\F'
|| v_factuur_key
|| '\'
|| v_kenmerk_key
|| '\');
WHEN UPPER (pto) LIKE 'SERVICEDESK@%'
THEN
errormsg := '(0x145)';
-- append (as a note?) to an existing melding if #key is found in the subject
-- Alternatief was: scannen van fac_srtnotificatie_oms maar dat voelt ook niet echt lekker
-- subject_regexp := fac.getsetting ('mld_reply_subject_regexp'); -- [[:alpha:]]*[[:digit:]]{3,}
-- hebben we een referentie naar een opdracht of naar een melding?
subject_regexp := '[[:digit:]]{3,}/[[:digit:]]*';
opdrnum :=
REGEXP_SUBSTR (v_subject,
subject_regexp,
1,
1,
'i'); -- MA12345
DBMS_OUTPUT.put_line ('opdrnum: ' || opdrnum);
-- Ja, nu komt het voor dat de opdracht/melding verward wordt met een
-- bestelling/opdracht. Daarom gaan we kijken of er een bestelling of
-- bestelopdracht is. Als deze er is dan kijken we naar de aanmaakdatum
-- is deze nieuwe dan de aanmaakdatum van de melding/opdracht, dan doen
-- we niets met de mail en hoort deze waarschijnlijk bij een bestelling.
-- Voor opdrachten (eerste gedeelte) en meldingen (tweede gedeelte) wordt
-- deze controle uitgevoerd zodra het melding/opdracht nummer bekend is.
IF opdrnum IS NOT NULL
THEN
opdrvolgnr :=
fac.safe_to_number (
SUBSTR (opdrnum, INSTR (opdrnum, '/') + 1));
DBMS_OUTPUT.put_line ('opdrvolgnr: ' || opdrvolgnr);
mldkey :=
fac.safe_to_number (
SUBSTR (opdrnum, 1, INSTR (opdrnum, '/') - 1));
DBMS_OUTPUT.put_line ('mldkey: ' || mldkey);
SELECT MAX (SIGN (b_o.datum - m_o.datum)) -- 1 als b_o datum > m_o datum
INTO v_result
FROM (SELECT bes_bestelopdr_datum datum
FROM bes_bestelopdr
WHERE bes_bestelopdr_id = mldkey || '/' || opdrvolgnr) b_o,
(SELECT mld_opdr_datumbegin datum
FROM mld_opdr
WHERE mld_melding_key = mldkey AND mld_opdr_bedrijfopdr_volgnr = opdrvolgnr) m_o;
ELSE
subject_regexp := '[[:alpha:]]*[[:digit:]]{3,}';
mldnum :=
REGEXP_SUBSTR (v_subject,
subject_regexp,
1,
1,
'i'); -- MA12345
srtdisc :=
REGEXP_SUBSTR (mldnum,
'[[:alpha:]]*',
1,
1,
'i'); -- MA
mldkey :=
fac.safe_to_number (SUBSTR (mldnum, LENGTH (srtdisc) + 1));
SELECT MAX (SIGN (b.datum - m.datum)) -- 1 als bes datum > mld datum
INTO v_result
FROM (SELECT bes_bestelling_datum datum
FROM bes_bestelling
WHERE bes_bestelling_key = mldkey) b,
(SELECT mld_melding_datum datum
FROM mld_melding
WHERE mld_melding_key = mldkey) m;
END IF;
IF v_result = 1 AND v_result IS NOT NULL
THEN
-- resultaat is 1 als de datum van de bestelling/opdracht groter is dan de datum van
-- de melding/opdracht.
DBMS_OUTPUT.put_line ('v_result: ' || v_result);
RETURN;
END IF;
DBMS_OUTPUT.put_line ('mldnum: ' || mldnum);
DBMS_OUTPUT.put_line ('srtdisc: ' || srtdisc);
DBMS_OUTPUT.put_line ('mldkey: ' || mldkey);
-- We eisen
-- - Goed meldingnummer
-- - Goede srtdiscipline
-- - Afzender is degene voor wie de melding was
-- suggested extensions: ook collega's toestaan?
SELECT MIN (mm.mld_stdmelding_key), MIN (prs_perslid_key_voor)
INTO stdmelding, melder_key
FROM mld_melding mm,
mld_stdmelding msm,
ins_tab_discipline insd,
ins_srtdiscipline isd
WHERE mm.mld_melding_key = mldkey
AND mm.mld_stdmelding_key = msm.mld_stdmelding_key
AND msm.mld_ins_discipline_key = insd.ins_discipline_key
AND insd.ins_srtdiscipline_key = isd.ins_srtdiscipline_key;
-- Controle op srtdisc werkt niet goed. Mails worden na binnenkomst namelijk doorgezet
-- naar de definitieve stdmelding(/discipline/srtdiscpline) en daarmee verandert de
-- prefix letter
--AND isd.ins_srtdiscipline_prefix = srtdisc
--AND mm.prs_perslid_key_voor = sender; -- Mogen anderen ook reageren?
DBMS_OUTPUT.put_line (
'mld_stdmelding_key: ' || TO_CHAR (stdmelding));
-- kijk of de referentie naar de opdracht wel correct is:
IF opdrvolgnr IS NOT NULL
THEN
BEGIN
SELECT mld_opdr_key, mld_typeopdr_key
INTO opdrkey, typeopdrkey
FROM mld_opdr
WHERE mld_melding_key = mldkey
AND mld_opdr_bedrijfopdr_volgnr = opdrvolgnr;
EXCEPTION
WHEN OTHERS
THEN
opdrkey := NULL;
END;
END IF;
BEGIN
IF opdrkey IS NOT NULL
THEN
SELECT o.prs_perslid_key
INTO behandelaar_key
FROM mld_opdr o, prs_perslid p
WHERE o.mld_opdr_key = opdrkey
AND o.prs_perslid_key = p.prs_perslid_key
AND p.prs_perslid_email IS NOT NULL
AND p.prs_perslid_verwijder IS NULL;
ELSE
SELECT mld_melding_behandelaar_key
INTO behandelaar_key
FROM mld_melding m, prs_perslid p
WHERE mld_melding_key = mldkey
AND mld_melding_behandelaar_key = p.prs_perslid_key
AND p.prs_perslid_email IS NOT NULL
AND p.prs_perslid_verwijder IS NULL;
END IF;
EXCEPTION
WHEN OTHERS
THEN
behandelaar_key := NULL;
END;
IF (stdmelding IS NOT NULL)
THEN -- Bestaande opdracht.
IF opdrkey IS NOT NULL
THEN
INSERT INTO mld_opdr_note (mld_opdr_key,
mld_opdr_note_omschrijving,
prs_perslid_key)
VALUES (opdrkey, v_body, sender_key);
fac.trackaction ('ORDUPD',
opdrkey,
sender_key,
NULL,
'#Notitie toegevoegd vanuit e-mail'); -- # voorkomt notificatie
DBMS_OUTPUT.put_line ('Notitie toegevoegd.');
ELSE
INSERT INTO mld_melding_note (mld_melding_key,
mld_melding_note_omschrijving,
prs_perslid_key,
mld_melding_note_flag)
VALUES (mldkey,
v_body,
sender_key,
DECODE (sender_key, melder_key, 1, 0)); -- 1 is zichtbaar FE want zelf ingevoerd.
fac.trackaction ('MLDNOT',
mldkey,
sender_key,
NULL,
'#Notitie toegevoegd vanuit e-mail'); -- # voorkomt notificatie
DBMS_OUTPUT.put_line ('Notitie toegevoegd.');
INSERT INTO fac_result (fac_result_sessionid,
fac_result_naam,
fac_result_waarde)
VALUES (psessionid,
'maillog',
'Als notitie toegevoegd aan melding ' || mldkey);
IF behandelaar_key IS NOT NULL
THEN
-- Notificatie naar behandelaar
fac.putnotificationsrtprio (
NULL,
behandelaar_key,
'MLDNOB',
mldkey,
'Melding ' || mldkey || ' is door de klant aangepast.',
2,
NULL,
NULL,
NULL,
2,
NULL);
END IF;
END IF;
-- Vlaggetjes zetten zoals mld_edit_note.asp dat doet
BEGIN
IF fac.getsetting('mld_melding_actiecode') = 1
THEN
UPDATE mld_melding
SET mld_melding_actiecode = 1+128 -- Backoffice + Attentie
WHERE mld_melding_key = mldkey;
END IF;
EXCEPTION
WHEN OTHERS
THEN
DBMS_OUTPUT.put_line( 'Niet gelukt om flag '
|| v_flag_on_fenote
|| ' te zetten.');
END;
ELSE
-- suggested extensions:
-- check for MLDUSE-write autorisations
-- parse the subject to find an appropriate stdmelding, if uniquely possible
errormsg := '(0x148)';
BEGIN
stdmelding :=
fac.safe_to_number (fac.getsetting ('defaultstdmelding'));
INSERT INTO mld_melding (mld_melding_module,
mld_meldbron_key,
mld_melding_datum,
mld_melding_omschrijving,
mld_melding_status,
mld_melding_t_uitvoertijd,
mld_stdmelding_key,
prs_perslid_key,
prs_perslid_key_voor,
prs_kostenplaats_key,
mld_melding_spoed)
VALUES ('MLD',
4, -- email
SYSDATE,
v_body,
NULL,
mld_t_uitvoertijd (2, 'D'),
stdmelding,
sender_key,
sender_key,
kostenplaats_key,
3)
RETURNING mld_melding_key
INTO mldkey;
-- DBMS_OUTPUT.PUT_LINE('Melding toegevoegd: ' || mldkey);
errormsg := '(0x165)';
mld.setmeldingstatus (mldkey, 2, sender_key);
INSERT INTO fac_result (fac_result_sessionid,
fac_result_naam,
fac_result_waarde)
VALUES (psessionid,
'maillog',
'Geregistreerd onder melding ' || mldkey);
END;
END IF;
IF opdrkey IS NULL
THEN
-- Zoek het laagste bijlagen kenmerk key (AAEN#34590) om de bijlagen onder te stoppen
errormsg := '(0x151)';
SELECT MIN (mld_kenmerk_key)
INTO kkey
FROM mld_kenmerk k,
mld_srtkenmerk sk,
mld_stdmelding std,
ins_tab_discipline d
WHERE mld_srtkenmerk_kenmerktype = 'M'
AND sk.mld_srtkenmerk_key = k.mld_srtkenmerk_key
AND std.mld_stdmelding_key = stdmelding
AND std.mld_ins_discipline_key = d.ins_discipline_key
AND ( (k.mld_stdmelding_key = std.mld_stdmelding_key
AND k.mld_kenmerk_niveau = 'S')
OR (k.mld_stdmelding_key = d.ins_discipline_key
AND k.mld_kenmerk_niveau = 'D')
OR (k.mld_stdmelding_key = d.ins_srtdiscipline_key
AND k.mld_kenmerk_niveau = 'T'))
AND k.mld_kenmerk_verwijder IS NULL
AND NOT EXISTS
(SELECT mld_kenmerk_volgnummer
FROM mld_kenmerk k1,
mld_srtkenmerk sk1,
mld_stdmelding std1,
ins_tab_discipline d1
WHERE sk1.mld_srtkenmerk_kenmerktype = 'M'
AND sk1.mld_srtkenmerk_key = k1.mld_srtkenmerk_key
AND std1.mld_stdmelding_key = stdmelding
AND std1.mld_ins_discipline_key =
d1.ins_discipline_key
AND ( (k1.mld_stdmelding_key =
std1.mld_stdmelding_key
AND k1.mld_kenmerk_niveau = 'S')
OR (k1.mld_stdmelding_key = d1.ins_discipline_key
AND k1.mld_kenmerk_niveau = 'D')
OR (k1.mld_stdmelding_key =
d1.ins_srtdiscipline_key
AND k1.mld_kenmerk_niveau = 'T'))
AND k1.mld_kenmerk_verwijder IS NULL
AND k1.mld_kenmerk_key < k.mld_kenmerk_key);
errormsg := '(0x153)';
IF kkey IS NOT NULL
THEN
-- DBMS_OUTPUT.PUT_LINE('Bijlagen kenmerk: ' || kkey);
errormsg := '(0x157)';
INSERT INTO fac_result (fac_result_sessionid,
fac_result_naam,
fac_result_waarde)
VALUES (psessionid,
'kenmerkpath',
'MLD\M'
|| TO_CHAR (TRUNC (mldkey / 1000), 'FM0000')
|| '___\M'
|| mldkey
|| '\'
|| kkey
|| '\');
END IF;
ELSE
-- Zoek het laagste bijlagen kenmerk om de bijlagen onder te stoppen
errormsg := '(0x152)';
SELECT MIN (mld_kenmerk_key)
INTO kkey
FROM mld_kenmerk k, mld_srtkenmerk sk
WHERE sk.mld_srtkenmerk_kenmerktype = 'M'
AND sk.mld_srtkenmerk_key = k.mld_srtkenmerk_key
AND k.mld_typeopdr_key = typeopdrkey
AND k.mld_kenmerk_niveau = 'O'
AND k.mld_kenmerk_verwijder IS NULL
AND NOT EXISTS
(SELECT mld_kenmerk_volgnummer
FROM mld_kenmerk k1, mld_srtkenmerk sk1
WHERE sk1.mld_srtkenmerk_kenmerktype = 'M'
AND sk1.mld_srtkenmerk_key = k1.mld_srtkenmerk_key
AND k1.mld_typeopdr_key = typeopdrkey
AND k1.mld_kenmerk_niveau = 'O'
AND k1.mld_kenmerk_verwijder IS NULL
AND k1.mld_kenmerk_volgnummer <
k.mld_kenmerk_volgnummer);
errormsg := '(0x154)';
IF kkey IS NOT NULL
THEN
-- DBMS_OUTPUT.PUT_LINE('Bijlagen kenmerk: ' || kkey);
errormsg := '(0x157)';
INSERT INTO fac_result (fac_result_sessionid,
fac_result_naam,
fac_result_waarde)
VALUES (psessionid,
'kenmerkpath',
'MLD\O'
|| TO_CHAR (TRUNC (opdrkey / 1000), 'FM0000')
|| '___\O'
|| opdrkey
|| '\'
|| kkey
|| '\');
END IF;
END IF;
ELSE
errormsg := '(0x188)';
INSERT INTO fac_result (fac_result_sessionid,
fac_result_naam,
fac_result_waarde)
VALUES (psessionid,
'errormsg',
'Database fout - Neem contact op met uw systeembeheerder '
|| errormsg);
END CASE;
EXCEPTION
WHEN OTHERS
THEN
-- DBMS_OUTPUT.PUT_LINE('Mail niet geaccepteerd: ' || 'OTHERS (error ' || SQLCODE || '/' || SUBSTR (SQLERRM, 1, 100) || ')');
INSERT INTO fac_result (fac_result_sessionid,
fac_result_naam,
fac_result_waarde)
VALUES (psessionid,
'errormsg',
'Database fout - Neem contact op met uw systeembeheerder '
|| errormsg);
fac.writelog (
'PROCESSEMAIL',
'E',
'Mail kon niet ingelezen worden afzender:'
|| v_from
|| '['
|| errormsg
|| ']'
|| psubject,
'OTHERS (error '
|| SQLCODE
|| '/'
|| SUBSTR (SQLERRM, 1, 100)
|| ')');
END;
/
-- View tbv notificatiejob - Notities meldingen naar backoffice ipv behandelaar (ipv MLDNOB)
-- Notificatie gaat naar emailadres Servicedesk Heyday (= vakgroep email-adres) (ticket 60002 en 60269)
CREATE OR REPLACE VIEW AAXX_V_NOTIFY_BACKOFFICE_NOB
(
SENDER,
RECEIVER,
TEXT,
CODE,
FAC_SRTNOTIFICATIE_KEY,
KEY,
XKEY,
XEMAIL,
XMOBILE
)
AS
SELECT (SELECT prs_perslid_key
FROM prs_perslid
WHERE prs_perslid_upper = 'FACILITOR')
sender,
NULL
receiver,
'Er is/zijn '
|| TO_CHAR (v.aantalopmerkingen)
|| ' nieuwe opmerking(en) geplaatst bij melding '
|| v.mld_melding_key
|| ' ('
|| v.mld_stdmelding_omschrijving
|| ' / '
|| v.ins_discipline_omschrijving
|| ')'
text,
'CUST10'
code,
(SELECT fac_srtnotificatie_key
FROM fac_srtnotificatie
WHERE fac_srtnotificatie_code = 'CUST10')
fac_srtnotificatie_key,
v.mld_melding_key
key,
NULL
xkey,
v.vakgroep_email
xemail,
NULL
xmobile
FROM (SELECT m.mld_melding_key,
sm.mld_stdmelding_omschrijving,
d.ins_discipline_omschrijving,
dp.mld_disc_params_emailnw3
AS vakgroep_email,
COALESCE (
( SELECT MAX (fac_tracking_datum)
FROM fac_tracking
WHERE INSTR (fac_tracking_oms, 'CUST10') > 0),
SYSDATE -
(SELECT COALESCE (fac_notificatie_job_interval, 1) / 24
FROM fac_notificatie_job
WHERE fac_notificatie_job_view = 'AAXX_V_NOTIFY_BACKOFFICE_NOB' )
)
datum_vanaf,
(SELECT COUNT (*)
FROM mld_melding_note mn2
WHERE mn2.mld_melding_key = m.mld_melding_key
AND mn.prs_perslid_key NOT IN -- Alleen notities van mensen die niet bij Servicedesk zitten
(SELECT gg.prs_perslid_key
FROM fac_gebruikersgroep gg, fac_groep g
WHERE gg.fac_groep_key = g.fac_groep_key
AND g.fac_groep_upper = 'HEYDAY SERVICEDESK')
AND mn2.mld_melding_note_aanmaak >=
COALESCE (
( SELECT MAX (fac_tracking_datum)
FROM fac_tracking
WHERE INSTR (fac_tracking_oms,
'CUST10') >
0),
SYSDATE -
(SELECT COALESCE (fac_notificatie_job_interval, 1) / 24
FROM fac_notificatie_job
WHERE fac_notificatie_job_view = 'AAXX_V_NOTIFY_BACKOFFICE_NOB' )
)
)
AS aantalopmerkingen
FROM mld_melding m,
mld_stdmelding sm,
ins_tab_discipline d,
mld_disc_params dp,
mld_melding_note mn,
prs_perslid p
WHERE m.mld_melding_key = mn.mld_melding_key
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
AND sm.mld_ins_discipline_key = d.ins_discipline_key
AND d.ins_discipline_module = 'MLD'
AND d.ins_discipline_key = dp.mld_ins_discipline_key
AND (m.mld_melding_behandelaar_key <> mn.prs_perslid_key or m.mld_melding_behandelaar_key is null)
AND mn.prs_perslid_key = p.prs_perslid_key AND p.prs_perslid_verwijder is null
AND mn.mld_melding_note_aanmaak >=
COALESCE (
( SELECT MAX (fac_tracking_datum)
FROM fac_tracking
WHERE INSTR (fac_tracking_oms, 'CUST10') > 0),
SYSDATE -
(SELECT COALESCE (fac_notificatie_job_interval, 1) / 24
FROM fac_notificatie_job
WHERE fac_notificatie_job_view = 'AAXX_V_NOTIFY_BACKOFFICE_NOB' )
)
AND mn.mld_melding_note_aanmaak >= sysdate - 3 -- Max langer dan 3 dagen terugkijken is voldoende
AND dp.mld_disc_params_emailnw3 IS NOT NULL
AND mn.prs_perslid_key NOT IN -- Alleen notities van mensen die niet bij Servicedesk zitten
(SELECT gg.prs_perslid_key
FROM fac_gebruikersgroep gg, fac_groep g
WHERE gg.fac_groep_key = g.fac_groep_key
AND g.fac_groep_upper = 'HEYDAY SERVICEDESK')
) v
;
-- View tbv notificatiejob - Notities op opdrachten naar backoffice (zie ticket 62800)
---- indien de notities door iemand anders dan de servicedesk gedaan zijn, dan een groepsnotificatie naar emailadres Servicedesk Heyday (= vakgroep email-adres)
CREATE OR REPLACE VIEW AAXX_V_NOTIFY_BACKOFFICE_ORD
(
SENDER,
RECEIVER,
TEXT,
CODE,
FAC_SRTNOTIFICATIE_KEY,
KEY,
XKEY,
XEMAIL,
XMOBILE
)
AS
SELECT (SELECT prs_perslid_key
FROM prs_perslid
WHERE prs_perslid_upper = 'FACILITOR')
sender,
NULL
receiver,
'Er is/zijn '
|| TO_CHAR (v.aantalopmerkingen)
|| ' notities geplaatst bij opdrachtnr '
|| v.mld_melding_key || '/' || v.mld_opdr_bedrijfopdr_volgnr
|| ' ('
|| v.mld_stdmelding_omschrijving
|| ' / '
|| v.ins_discipline_omschrijving
|| ')'
text,
'CUST11'
code,
(SELECT fac_srtnotificatie_key
FROM fac_srtnotificatie
WHERE fac_srtnotificatie_code = 'CUST11')
fac_srtnotificatie_key,
v.mld_opdr_key
key,
NULL
xkey,
v.vakgroep_email
xemail,
NULL
xmobile
FROM (SELECT o.mld_opdr_key,
o.mld_melding_key,
o.mld_opdr_bedrijfopdr_volgnr,
o.prs_perslid_key,
sm.mld_stdmelding_omschrijving,
d.ins_discipline_omschrijving,
dp.mld_disc_params_emailnw3
AS vakgroep_email,
COALESCE (
( SELECT MAX (fac_tracking_datum)
FROM fac_tracking
WHERE INSTR (fac_tracking_oms, 'CUST11') > 0),
SYSDATE -
(SELECT COALESCE (fac_notificatie_job_interval, 1) / 24
FROM fac_notificatie_job
WHERE fac_notificatie_job_view = 'AAXX_V_NOTIFY_BACKOFFICE_ORD' )
)
datum_vanaf, -- Laatste keer job gerund of Ne...
on1.mld_opdr_note_aanmaak,
(SELECT COUNT (*)
FROM mld_opdr_note on2
WHERE on2.mld_opdr_key = o.mld_opdr_key
AND on2.prs_perslid_key NOT IN
(SELECT gg.prs_perslid_key
FROM fac_gebruikersgroep gg, fac_groep g
WHERE gg.fac_groep_key = g.fac_groep_key
AND g.fac_groep_upper = 'HEYDAY SERVICEDESK')
AND on2.mld_opdr_note_aanmaak >=
COALESCE (
( SELECT MAX (fac_tracking_datum)
FROM fac_tracking
WHERE INSTR (fac_tracking_oms,
'CUST11') > 0),
SYSDATE -
(SELECT COALESCE (fac_notificatie_job_interval, 1) / 24
FROM fac_notificatie_job
WHERE fac_notificatie_job_view = 'AAXX_V_NOTIFY_BACKOFFICE_ORD' )
))
AS aantalopmerkingen
FROM mld_melding m,
mld_opdr o,
mld_opdr_note on1,
mld_stdmelding sm,
ins_tab_discipline d,
mld_disc_params dp,
prs_perslid p
WHERE o.mld_opdr_key = on1.mld_opdr_key
AND m.mld_melding_key = o.mld_melding_key
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
AND sm.mld_ins_discipline_key = d.ins_discipline_key
AND d.ins_discipline_module = 'MLD'
AND d.ins_discipline_key = dp.mld_ins_discipline_key
AND on1.prs_perslid_key NOT IN
(SELECT gg.prs_perslid_key
FROM fac_gebruikersgroep gg, fac_groep g
WHERE gg.fac_groep_key = g.fac_groep_key
AND g.fac_groep_upper = 'HEYDAY SERVICEDESK')
AND on1.prs_perslid_key = p.prs_perslid_key AND p.prs_perslid_verwijder is null
AND on1.mld_opdr_note_aanmaak >=
COALESCE (
( SELECT MAX (fac_tracking_datum)
FROM fac_tracking
WHERE INSTR (fac_tracking_oms, 'CUST11') > 0
AND fac_tracking_datum >= SYSDATE - 30),
SYSDATE -
(SELECT COALESCE (fac_notificatie_job_interval, 1) / 24
FROM fac_notificatie_job
WHERE fac_notificatie_job_view = 'AAXX_V_NOTIFY_BACKOFFICE_ORD' )
)
AND on1.mld_opdr_note_aanmaak >= sysdate - 3 -- Max langer dan 3 dagen terugkijken is voldoende
AND dp.mld_disc_params_emailnw3 IS NOT NULL
) v
;
-- Job voor de ordertrackinglijst te versturen. Betreft rapport met alle statusupdates en notities
CREATE OR REPLACE VIEW AAXX_V_NOTIFY_BACKOFFICE_OT -- OT = Ordertrackinglijst
(
SENDER,
RECEIVER,
TEXT,
CODE,
FAC_SRTNOTIFICATIE_KEY,
KEY,
XKEY,
XEMAIL,
XMOBILE
)
AS
SELECT (SELECT prs_perslid_key
FROM prs_perslid
WHERE prs_perslid_upper = 'FACILITOR')
sender,
NULL
receiver,
'Ordertrackinglijst klant ' || acc.fac_version_cust
text,
'CUST16'
code,
(SELECT fac_srtnotificatie_key
FROM fac_srtnotificatie
WHERE fac_srtnotificatie_code = 'CUST16')
fac_srtnotificatie_key,
DECODE (acc.fac_version_cust, 'RABO', 1321,
'INLO', 1041,
'CVGZ', 681,
'NMMS', 1001,
'AAAH', 1261,
'AAAR', 1101,
'AADO', 1001,
'AADS', 2001,
'AAES', 901,
'AAGN', 1441,
'AAIT', 1863,
'AASA', 1422,
'AAVG', 661,
'AQQA', 861,
'EXPO', 521,
'SMKA', 941,
9999)
key,
NULL
xkey,
v.vakgroep_email
xemail,
NULL
xmobile
FROM (select UPPER(fac_version_cust) fac_version_cust from fac_version) acc,
(SELECT dp.mld_disc_params_emailnw3
AS vakgroep_email
FROM mld_melding m,
mld_opdr o,
mld_opdr_note on1,
mld_stdmelding sm,
ins_tab_discipline d,
mld_disc_params dp,
prs_perslid p
WHERE o.mld_opdr_key = on1.mld_opdr_key
AND m.mld_melding_key = o.mld_melding_key
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
AND sm.mld_ins_discipline_key = d.ins_discipline_key
AND d.ins_discipline_module = 'MLD'
AND d.ins_discipline_key = dp.mld_ins_discipline_key
AND on1.prs_perslid_key NOT IN
(SELECT gg.prs_perslid_key
FROM fac_gebruikersgroep gg, fac_groep g
WHERE gg.fac_groep_key = g.fac_groep_key
AND g.fac_groep_upper = 'HEYDAY SERVICEDESK')
AND on1.prs_perslid_key = p.prs_perslid_key AND p.prs_perslid_verwijder is null
AND on1.mld_opdr_note_aanmaak >=
COALESCE (
( SELECT MAX (ft.fac_tracking_datum)
FROM fac_tracking ft, fac_srtnotificatie sn
WHERE ft.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
AND sn.fac_srtnotificatie_xmlnode = 'rapport'
AND sn.fac_srtnotificatie_code = 'CUST16'),
SYSDATE -
(SELECT COALESCE (fac_notificatie_job_interval, 1) / 24
FROM fac_notificatie_job
WHERE fac_notificatie_job_view = 'AAXX_V_NOTIFY_BACKOFFICE_OT' )
)
AND on1.mld_opdr_note_aanmaak <= SYSDATE
AND on1.mld_opdr_note_aanmaak >= SYSDATE - 3 -- Max langer dan 3 dagen terugkijken is voldoende
AND dp.mld_disc_params_emailnw3 IS NOT NULL
GROUP BY dp.mld_disc_params_emailnw3
UNION
SELECT dp.mld_disc_params_emailnw3
AS vakgroep_email
FROM mld_melding m,
mld_opdr o,
aaxx_v_dwh_tracking t,
mld_stdmelding sm,
ins_tab_discipline d,
mld_disc_params dp,
prs_perslid p
WHERE o.mld_opdr_key = t.ref_key
AND t.soort = 'opdracht'
AND m.mld_melding_key = o.mld_melding_key
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
AND sm.mld_ins_discipline_key = d.ins_discipline_key
AND d.ins_discipline_module = 'MLD'
AND d.ins_discipline_key = dp.mld_ins_discipline_key
AND t.prs_perslid_key NOT IN
(SELECT gg.prs_perslid_key
FROM fac_gebruikersgroep gg, fac_groep g
WHERE gg.fac_groep_key = g.fac_groep_key
AND g.fac_groep_upper = 'HEYDAY SERVICEDESK')
AND t.prs_perslid_key = p.prs_perslid_key AND p.prs_perslid_verwijder is null
AND t.datum >=
COALESCE (
( SELECT MAX (ft.fac_tracking_datum)
FROM fac_tracking ft, fac_srtnotificatie sn
WHERE ft.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
AND sn.fac_srtnotificatie_xmlnode = 'rapport'
AND sn.fac_srtnotificatie_code = 'CUST16'),
SYSDATE -
(SELECT COALESCE (fac_notificatie_job_interval, 1) / 24
FROM fac_notificatie_job
WHERE fac_notificatie_job_view = 'AAXX_V_NOTIFY_BACKOFFICE_OT' )
)
AND t.datum <= SYSDATE
AND t.datum >= SYSDATE - 3 -- Max langer dan 3 dagen terugkijken is voldoende
AND dp.mld_disc_params_emailnw3 IS NOT NULL
GROUP BY dp.mld_disc_params_emailnw3) v
;
-- Rapportview behorende bij job AAXX_V_NOTIFY_BACKOFFICE_OT
CREATE OR REPLACE VIEW aaxx_v_rap_ordertrackinglijst
(
account,
subaccount, -- in geval INLO - Op gebouwniveau een kenmerk...!
regio, -- in geval dsm en rabo
vakgroep_email,
extra_key, -- vanuit job extra filter_key
opdrachtnr,
mld_opdr_key,
uitvoerder,
behandelaar,
opdracht_type,
soort, -- soort wijziging: Status of notitie of opdrachtgegevens-wijziging
datum,
actie_door,
actie_omschrijving,
actie_details,
run_deze,
run_vorige
)
AS
SELECT -- Voor notities
fac_version_cust account,
CASE WHEN acc.fac_version_cust in ('INLO') THEN v.klant
ELSE NULL
END subaccount, -- in geval INLO
CASE WHEN acc.fac_version_cust in ('RABO') THEN og.alg_regio_omschrijving
WHEN acc.fac_version_cust in ('AADS') THEN og.alg_district_omschrijving
ELSE NULL
END regio, -- in geval dsm en rabo
dp.mld_disc_params_emailnw3 vakgroep_email,
NULL extra_key, -- vanuit job extra filter_key - niet nodig in deze..
m.mld_melding_key || '/' || o.mld_opdr_bedrijfopdr_volgnr opdrachtnr,
o.mld_opdr_key,
u.naam uitvoerder,
po.prs_perslid_naam || ' (' || po.prs_perslid_voornaam || ')' behandelaar,
ot.mld_typeopdr_omschrijving opdracht_type,
'Notitie' soort, -- soort wijziging: Status of notitie of opdrachtgegevens-wijzigign
TO_CHAR(mld_opdr_note_aanmaak,'dd-mm-yyyy hh24:mm:ss') datum,
pn.prs_perslid_naam || ' (' || pn.prs_perslid_voornaam || ')' actie_door,
'Notitie' actie_omschrijving, -- Subsoort voor status
mld_opdr_note_omschrijving actie_details,
TO_CHAR(d1.fac_tracking_datum, 'dd-mm-yyyy hh24:mm:ss'), -- Deze_run
TO_CHAR(d2.fac_tracking_datum, 'dd-mm-yyyy hh24:mm:ss') -- Vorige_run
FROM mld_melding m,
mld_opdr o,
mld_typeopdr ot,
mld_v_uitvoerende u,
mld_opdr_note note,
prs_perslid pn,
prs_perslid po,
mld_stdmelding sm,
ins_tab_discipline d,
mld_disc_params dp,
aaxx_v_dwh_alg_onrgoed og,
(
SELECT m.mld_melding_key, og.alg_gebouw_key, fud.fac_usrdata_omschr klant
FROM mld_melding m,
aaxx_v_dwh_alg_onrgoed og,
alg_onrgoedkenmerk k,
fac_usrdata fud
WHERE m.mld_alg_onroerendgoed_keys = og.alg_onroerendgoed_keys
AND og.alg_gebouw_key = k.alg_onrgoed_key
AND alg_kenmerk_key = DECODE (aaxx_get_user, 'INLO', 1100, 1100)
AND fac.safe_to_number(k.alg_onrgoedkenmerk_waarde) = fud.fac_usrdata_key ) v,
(SELECT fac_version_cust FROM fac_version) acc,
(SELECT COALESCE(max(TO_DATE(v.fac_tracking_datum,'YYYY-MM-DD HH24:MI:SS')), SYSDATE - 1/24) fac_tracking_datum
FROM
(SELECT rownum volgnr, vv.fac_tracking_datum
FROM
(SELECT TO_CHAR (ft.fac_tracking_datum, 'YYYY-MM-DD HH24:MI') fac_tracking_datum
FROM (SELECT fac_tracking_key, fac_srtnotificatie_key, fac_tracking_datum FROM fac_tracking ORDER BY fac_tracking_datum DESC) ft, fac_srtnotificatie sn
WHERE ft.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
AND sn.fac_srtnotificatie_xmlnode = 'rapport'
AND sn.fac_srtnotificatie_code = 'CUST16'
GROUP BY ft.fac_tracking_datum) vv
WHERE rownum <=2 ) v
WHERE v.volgnr = 1) d1,
(SELECT COALESCE(max(TO_DATE(v.fac_tracking_datum,'YYYY-MM-DD HH24:MI:SS')), SYSDATE - 1/24) fac_tracking_datum
FROM
(SELECT rownum volgnr, vv.fac_tracking_datum
FROM
(SELECT TO_CHAR (ft.fac_tracking_datum, 'YYYY-MM-DD HH24:MI') fac_tracking_datum
FROM (SELECT fac_tracking_key, fac_srtnotificatie_key, fac_tracking_datum FROM fac_tracking ORDER BY fac_tracking_datum DESC) ft, fac_srtnotificatie sn
WHERE ft.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
AND sn.fac_srtnotificatie_xmlnode = 'rapport'
AND sn.fac_srtnotificatie_code = 'CUST16'
GROUP BY ft.fac_tracking_datum) vv
WHERE rownum <=2 ) v
WHERE v.volgnr = 2) d2
WHERE o.mld_opdr_key = note.mld_opdr_key
AND m.mld_melding_key = o.mld_melding_key
AND o.mld_typeopdr_key = ot.mld_typeopdr_key
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
AND sm.mld_ins_discipline_key = d.ins_discipline_key
AND d.ins_discipline_module = 'MLD'
AND d.ins_discipline_key = dp.mld_ins_discipline_key
AND note.prs_perslid_key = pn.prs_perslid_key
AND pn.prs_perslid_verwijder IS NULL
AND o.mld_uitvoerende_keys = u.mld_uitvoerende_key
AND o.prs_perslid_key = po.prs_perslid_key (+)
AND m.mld_alg_locatie_key = og.alg_locatie_key AND og.alg_type = 'L'
AND o.mld_melding_key = v.mld_melding_key (+)
AND note.prs_perslid_key NOT IN
(SELECT gg.prs_perslid_key
FROM fac_gebruikersgroep gg, fac_groep g
WHERE gg.fac_groep_key = g.fac_groep_key
AND g.fac_groep_upper = 'HEYDAY SERVICEDESK')
AND note.mld_opdr_note_aanmaak >= d2.fac_tracking_datum
AND note.mld_opdr_note_aanmaak < d1.fac_tracking_datum
UNION
SELECT -- Voor status
acc.fac_version_cust account,
CASE WHEN acc.fac_version_cust in ('INLO') THEN v.klant
ELSE NULL
END subaccount, -- in geval INLO
CASE WHEN acc.fac_version_cust in ('RABO') THEN og.alg_regio_omschrijving
WHEN acc.fac_version_cust in ('AADS') THEN og.alg_district_omschrijving
ELSE NULL
END regio, -- in geval dsm en rabo
dp.mld_disc_params_emailnw3 vakgroep_email,
NULL extra_key, -- vanuit job extra filter_key - niet nodig in deze
m.mld_melding_key || '/' || o.mld_opdr_bedrijfopdr_volgnr opdrachtnr,
o.mld_opdr_key,
u.naam uitvoerder,
po.prs_perslid_naam || ' (' || po.prs_perslid_voornaam || ')' behandelaar,
ot.mld_typeopdr_omschrijving opdracht_type,
'Status' soort, -- soort wijziging: Status of notitie of opdrachtgegevens-wijzigign
TO_CHAR(t.datum,'dd-mm-yyyy hh24:mm:ss') datum,
pt.prs_perslid_naam || ' (' || pt.prs_perslid_voornaam || ')' actie_door,
COALESCE(vert.actiecode_tekst,t.actiecode) actie_omschrijving,
t.omschrijving actie_details,
TO_CHAR(d1.fac_tracking_datum, 'dd-mm-yyyy hh24:mm:ss'), -- Deze_run
TO_CHAR(d2.fac_tracking_datum, 'dd-mm-yyyy hh24:mm:ss') -- Vorige_run
FROM mld_melding m,
mld_opdr o,
mld_typeopdr ot,
aaxx_v_dwh_tracking t,
( SELECT UPPER (SUBSTR (fac_locale_xsl_label, 12)) as actiecode, fac_locale_xsl_tekst as actiecode_tekst
FROM fac_locale_xsl
WHERE INSTR (fac_locale_xsl_label, 'lcl_ord_is_') > 0
AND fac_locale_xsl_lang = 'NL') vert,
mld_v_uitvoerende u,
prs_perslid pt,
prs_perslid po,
mld_stdmelding sm,
ins_tab_discipline d,
mld_disc_params dp,
aaxx_v_dwh_alg_onrgoed og,
(
SELECT m.mld_melding_key, og.alg_gebouw_key, fud.fac_usrdata_omschr klant
FROM mld_melding m,
aaxx_v_dwh_alg_onrgoed og,
alg_onrgoedkenmerk k,
fac_usrdata fud
WHERE m.mld_alg_onroerendgoed_keys = og.alg_onroerendgoed_keys
AND og.alg_gebouw_key = k.alg_onrgoed_key
AND alg_kenmerk_key = DECODE (aaxx_get_user, 'INLO', 1100, 1100)
AND fac.safe_to_number(k.alg_onrgoedkenmerk_waarde) = fud.fac_usrdata_key ) v,
(SELECT fac_version_cust FROM fac_version) acc,
(SELECT COALESCE(max(TO_DATE(v.fac_tracking_datum,'YYYY-MM-DD HH24:MI:SS')), SYSDATE - 1/24) fac_tracking_datum
FROM
(SELECT rownum volgnr, vv.fac_tracking_datum
FROM
(SELECT TO_CHAR (ft.fac_tracking_datum, 'YYYY-MM-DD HH24:MI') fac_tracking_datum
FROM (SELECT fac_tracking_key, fac_srtnotificatie_key, fac_tracking_datum FROM fac_tracking ORDER BY fac_tracking_datum DESC) ft, fac_srtnotificatie sn
WHERE ft.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
AND sn.fac_srtnotificatie_xmlnode = 'rapport'
AND sn.fac_srtnotificatie_code = 'CUST16'
GROUP BY ft.fac_tracking_datum) vv
WHERE rownum <=2 ) v
WHERE v.volgnr = 1) d1,
(SELECT COALESCE(max(TO_DATE(v.fac_tracking_datum,'YYYY-MM-DD HH24:MI:SS')), SYSDATE - 1/24) fac_tracking_datum
FROM
(SELECT rownum volgnr, vv.fac_tracking_datum
FROM
(SELECT TO_CHAR (ft.fac_tracking_datum, 'YYYY-MM-DD HH24:MI') fac_tracking_datum
FROM (SELECT fac_tracking_key, fac_srtnotificatie_key, fac_tracking_datum FROM fac_tracking ORDER BY fac_tracking_datum DESC) ft, fac_srtnotificatie sn
WHERE ft.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
AND sn.fac_srtnotificatie_xmlnode = 'rapport'
AND sn.fac_srtnotificatie_code = 'CUST16'
GROUP BY ft.fac_tracking_datum) vv
WHERE rownum <=2 ) v
WHERE v.volgnr = 2) d2
WHERE o.mld_opdr_key = t.ref_key
AND t.soort = 'opdracht'
AND t.actiecode = vert.actiecode (+)
AND o.mld_typeopdr_key = ot.mld_typeopdr_key
AND m.mld_melding_key = o.mld_melding_key
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
AND sm.mld_ins_discipline_key = d.ins_discipline_key
AND d.ins_discipline_module = 'MLD'
AND d.ins_discipline_key = dp.mld_ins_discipline_key
AND t.prs_perslid_key = pt.prs_perslid_key
AND pt.prs_perslid_verwijder IS NULL
AND o.mld_uitvoerende_keys = u.mld_uitvoerende_key
AND o.prs_perslid_key = po.prs_perslid_key (+)
AND m.mld_alg_locatie_key = og.alg_locatie_key AND og.alg_type = 'L'
AND o.mld_melding_key = v.mld_melding_key (+)
AND t.prs_perslid_key NOT IN
(SELECT gg.prs_perslid_key
FROM fac_gebruikersgroep gg, fac_groep g
WHERE gg.fac_groep_key = g.fac_groep_key
AND g.fac_groep_upper = 'HEYDAY SERVICEDESK')
AND t.datum >= d2.fac_tracking_datum
AND t.datum < d1.fac_tracking_datum
;
-- Notificatiejob voor notificeren uitvoerder bij goedkeuring en/of afkeuring van de kosten (ticket 62830)
---- CUST13 voor goedkeuring
---- CUST14 voor afkeuring
CREATE OR REPLACE VIEW AAXX_V_NOTI_UITVOERDER_KOSTEN
(
SENDER,
RECEIVER,
TEXT,
CODE,
FAC_SRTNOTIFICATIE_KEY,
KEY,
XKEY,
XEMAIL,
XMOBILE
)
AS
SELECT (SELECT prs_perslid_key
FROM prs_perslid
WHERE prs_perslid_upper = 'FACILITOR')
sender,
NULL
receiver,
CASE
WHEN w.akkoord = 'ja'
THEN
'Notificatie ivm goedkeuring opdracht ' || w.opdrachtnr
ELSE
'Notificatie ivm afkeuring opdracht ' || w.opdrachtnr
END
text,
CASE
WHEN w.akkoord = 'ja'
THEN
'CUST13'
ELSE
'CUST14'
END
code,
CASE
WHEN w.akkoord = 'ja'
THEN
(SELECT fac_srtnotificatie_key
FROM fac_srtnotificatie
WHERE fac_srtnotificatie_code = 'CUST13')
ELSE
(SELECT fac_srtnotificatie_key
FROM fac_srtnotificatie
WHERE fac_srtnotificatie_code = 'CUST14')
END
fac_srtnotificatie_key,
w.mld_opdr_key
key,
NULL
xkey,
w.email
AS x_email,
NULL
xmobile
FROM
mld_opdr o,
(SELECT v.mld_typeopdr_omschrijving,
v.mld_melding_key,
v.opdrachtnr,
v.mld_opdr_key,
v.mld_statusopdr_key,
v.status_nu,
v.status,
CASE
WHEN COALESCE (v.datum_goedgekeurd,
TO_DATE ('01-01-1900', 'dd-mm-yyyy')) >
COALESCE (v.datum_afgekeurd,
TO_DATE ('01-01-1900', 'dd-mm-yyyy'))
THEN
'ja'
WHEN COALESCE (v.datum_goedgekeurd,
TO_DATE ('01-01-1900', 'dd-mm-yyyy')) <
COALESCE (v.datum_afgekeurd,
TO_DATE ('01-01-1900', 'dd-mm-yyyy'))
THEN
'nee'
ELSE
'nvt'
END
AS akkoord,
CASE
WHEN COALESCE (v.datum_goedgekeurd,
TO_DATE ('01-01-1900', 'dd-mm-yyyy')) >
COALESCE (v.datum_cust13,
TO_DATE ('01-01-1900', 'dd-mm-yyyy'))
AND COALESCE(v.datum_ORDSNT, sysdate) < v.datum_goedgekeurd
AND TRUNC(v.datum_goedgekeurd) >= TRUNC(sysdate-3) -- Peildatum, 3 dagen na goedkeuring zodat bij aanzetten job de mailing niet te gedateerd is en alleen actuele goedkeuringen gemaild worden
THEN
'ja' -- ja, opnieuw te notificeren
ELSE
'nee'
END
AS te_notificeren_cust13,
CASE
WHEN COALESCE (v.datum_afgekeurd,
TO_DATE ('01-01-1900', 'dd-mm-yyyy')) >
COALESCE (v.datum_cust14,
TO_DATE ('01-01-1900', 'dd-mm-yyyy'))
AND TRUNC(v.datum_afgekeurd) = TRUNC(sysdate) -- Binnen zelfde dag vanuit SD actie om na te bellen
THEN
'ja' -- ja, opnieuw te notificeren
ELSE
'nee'
END
AS te_notificeren_cust14,
v.mld_statusopdr_key_refiat,
v.mld_opdr_kosten,
v.mld_opdr_kosten_refiat,
v.mld_opdr_approved,
v.mld_opdr_teverzenden,
v.mld_opdr_verzonden,
v.datum_ORDSNT,
v.mld_opdr_teverzenden_datum,
v.datum_goedgekeurd,
v.datum_cust13,
v.datum_afgekeurd,
v.datum_cust14,
COALESCE (v.email_contactpers, v.email_relatie, v.email_servicedesk)
AS email
FROM (SELECT ot.mld_typeopdr_omschrijving,
o.mld_melding_key,
o.mld_melding_key
|| '/'
|| TO_CHAR (o.mld_opdr_bedrijfopdr_volgnr)
AS opdrachtnr,
o.mld_opdr_key,
o.mld_statusopdr_key,
os.mld_statusopdr_omschrijving
AS status_nu,
(CASE
WHEN o.mld_statusopdr_key IN (5, 8) THEN 'lopend' -- alle lopende statussen die voor deze job relevant zijn (toegekend, geaccepteerd)
WHEN o.mld_statusopdr_key IN (6) THEN 'uitgevoerd' -- alle uitgevoerde statussen die voor deze job relenvant zijn (afgemeld)
ELSE 'intern' -- opdracht ligt INTERN ter controle, ter fiattering, afgekeurd, afgewezen, financieel voltooid, verwerkt
END)
status,
o.mld_statusopdr_key_refiat,
o.mld_opdr_kosten,
o.mld_opdr_kosten_refiat,
o.mld_opdr_approved,
o.mld_opdr_teverzenden,
o.mld_opdr_verzonden,
(SELECT MAX (ft.fac_tracking_datum)
FROM fac_tracking ft, fac_srtnotificatie sn
WHERE ft.fac_tracking_refkey = o.mld_opdr_key
AND ft.fac_srtnotificatie_key =
sn.fac_srtnotificatie_key
AND sn.fac_srtnotificatie_xmlnode = 'opdracht'
AND sn.fac_srtnotificatie_code = 'ORDSNT')
AS datum_ORDSNT,
o.mld_opdr_teverzenden_datum,
(SELECT MAX (ft.fac_tracking_datum)
FROM fac_tracking ft, fac_srtnotificatie sn
WHERE ft.fac_tracking_refkey = o.mld_opdr_key
AND ft.fac_srtnotificatie_key =
sn.fac_srtnotificatie_key
AND sn.fac_srtnotificatie_xmlnode = 'opdracht'
AND (
(sn.fac_srtnotificatie_code = 'ORDUPD' AND INSTR (LOWER (ft.fac_tracking_oms), 'opdracht is goedgekeurd') > 0)
OR
(sn.fac_srtnotificatie_code='ORDFOK')
)
)
AS datum_goedgekeurd,
(SELECT MAX (ft.fac_tracking_datum)
FROM fac_tracking ft, fac_srtnotificatie sn
WHERE ft.fac_tracking_refkey = o.mld_opdr_key
AND ft.fac_srtnotificatie_key =
sn.fac_srtnotificatie_key
AND sn.fac_srtnotificatie_xmlnode = 'opdracht'
AND sn.fac_srtnotificatie_code = 'CUST13')
AS datum_cust13, -- Datum genotificeerd door noti-job
(SELECT MAX (ft.fac_tracking_datum)
FROM fac_tracking ft, fac_srtnotificatie sn
WHERE ft.fac_tracking_refkey = o.mld_opdr_key
AND ft.fac_srtnotificatie_key =
sn.fac_srtnotificatie_key
AND sn.fac_srtnotificatie_xmlnode = 'opdracht'
AND ( sn.fac_srtnotificatie_code = 'ORDGNO'
OR sn.fac_srtnotificatie_code = 'ORDFNO'))
AS datum_afgekeurd,
(SELECT MAX (ft.fac_tracking_datum)
FROM fac_tracking ft, fac_srtnotificatie sn
WHERE ft.fac_tracking_refkey = o.mld_opdr_key
AND ft.fac_srtnotificatie_key =
sn.fac_srtnotificatie_key
AND sn.fac_srtnotificatie_xmlnode = 'opdracht'
AND sn.fac_srtnotificatie_code = 'CUST14')
AS datum_cust14, -- Datum genotificeerd door noti-job
(SELECT prs_contactpersoon_email
FROM prs_contactpersoon
WHERE prs_contactpersoon_key = o.prs_contactpersoon_key)
AS email_contactpers,
(SELECT prs_bedrijf_email
FROM prs_bedrijf
WHERE prs_bedrijf_key = o.mld_uitvoerende_keys)
AS email_relatie,
(SELECT dp.mld_disc_params_emailnw3
FROM mld_melding m,
mld_stdmelding sm,
ins_tab_discipline d,
mld_disc_params dp
WHERE m.mld_stdmelding_key = sm.mld_stdmelding_key
AND sm.mld_ins_discipline_key = d.ins_discipline_key
AND d.ins_discipline_module = 'MLD'
AND d.ins_discipline_key = dp.mld_ins_discipline_key
AND m.mld_melding_key = o.mld_melding_key)
AS email_servicedesk -- uit vakgroep
FROM mld_opdr o, mld_statusopdr os, mld_typeopdr ot
WHERE o.mld_statusopdr_key = os.mld_statusopdr_key
AND o.mld_statusopdr_key NOT IN (7) -- Sowieso uitgesloten: Verwerkte opdrachten
AND o.mld_typeopdr_key = ot.mld_typeopdr_key
AND ot.mld_typeopdr_isofferte = 0
) v
) w
WHERE
o.mld_opdr_key = w.mld_opdr_key
AND (w.status = 'lopend' OR w.status = 'uitgevoerd')
AND (
(w.akkoord = 'ja' and w.te_notificeren_cust13 = 'ja')
OR
(w.akkoord = 'nee' and w.te_notificeren_cust14 = 'ja')
) ;
CREATE OR REPLACE PROCEDURE aaxx_import_ins_assetman (p_import_key IN NUMBER)
IS
c_delim VARCHAR2 (1) := ';';
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_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_alg_locatie_code VARCHAR2 (255); -- C10
v_alg_gebouw_code VARCHAR2 (255); -- C12
v_alg_verdieping_volgnr VARCHAR2 (255); -- N3
v_alg_verdieping_volgnr_n NUMBER (3); -- N3
v_alg_ruimte_nr VARCHAR2 (255); -- C10
v_ins_kenmerkwaarde1 VARCHAR2 (4000);
v_ins_kenmerkwaarde2 VARCHAR2 (4000);
v_ins_kenmerkwaarde3 VARCHAR2 (4000);
v_ins_kenmerkwaarde4 VARCHAR2 (4000);
v_ins_kenmerkwaarde5 VARCHAR2 (4000);
v_ins_kenmerkwaarde6 VARCHAR2 (4000);
v_ins_kenmerkwaarde7 VARCHAR2 (4000);
v_ins_kenmerkwaarde8 VARCHAR2 (4000);
v_ins_kenmerkwaarde9 VARCHAR2 (4000);
v_ins_kenmerkwaarde10 VARCHAR2 (4000);
v_ins_kenmerkwaarde11 VARCHAR2 (4000);
v_ins_kenmerkwaarde12 VARCHAR2 (4000);
v_ins_kenmerkwaarde13 VARCHAR2 (4000);
v_ins_kenmerkwaarde14 VARCHAR2 (4000);
v_ins_kenmerkwaarde15 VARCHAR2 (4000);
v_ins_kenmerkwaarde16 VARCHAR2 (4000);
v_ins_kenmerkwaarde17 VARCHAR2 (4000);
v_ins_kenmerkwaarde18 VARCHAR2 (4000);
v_ins_kenmerkwaarde19 VARCHAR2 (4000);
v_ins_kenmerkwaarde20 VARCHAR2 (4000);
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_bestaande_objectketen NUMBER (10);
v_bestaande_objectcode NUMBER (10);
-- Overige velden:
CURSOR c1
IS
SELECT *
FROM fac_imp_file
WHERE fac_import_key = p_import_key
ORDER BY fac_imp_file_index;
-- LET OP!!! Dit is/was in DB39 op srtkenmerk_key. Is voor DB40 omgezet naar kenmerk_key. Zie ook in FAC_PACF.SRC (fac_import_ins)
---- DE AAXX met de hieronder aangepast procedure kan/moet dus pas vanaf 2021.1 meegeleverd worden!!!
--
-- 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_ins_discipline_omschrijving);
fac.imp_getfield (v_newline, c_delim, v_ins_srtgroep_omschrijving);
fac.imp_getfield (v_newline, c_delim, v_ins_srtdeel_code);
fac.imp_getfield (v_newline, c_delim, v_ins_srtdeel_omschrijving);
fac.imp_getfield (v_newline, c_delim, v_ins_deel_omschrijving);
fac.imp_getfield (v_newline, c_delim, v_ins_deel_opmerking);
fac.imp_getfield (v_newline, c_delim, v_alg_locatie_code);
fac.imp_getfield (v_newline, c_delim, v_alg_gebouw_code);
fac.imp_getfield (v_newline, c_delim, v_alg_verdieping_volgnr);
fac.imp_getfield (v_newline, c_delim, v_alg_ruimte_nr);
fac.imp_getfield (v_newline, c_delim, v_ins_deel_aanmaak);
fac.imp_getfield (v_newline, c_delim, v_ins_deel_vervaldatum);
fac.imp_getfield (v_newline, c_delim, v_ins_deel_aantal);
fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde1);
fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde2);
fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde3);
fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde4);
fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde5);
fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde6);
fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde7);
fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde8);
fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde9);
fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde10);
fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde11);
fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde12);
fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde13);
fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde14);
fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde15);
fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde16);
fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde17);
fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde18);
fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde19);
fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde20);
v_aanduiding :=
'['
|| v_ins_discipline_omschrijving
|| '|'
|| v_ins_srtgroep_omschrijving
|| '|'
|| v_ins_srtdeel_code
|| '|'
|| v_ins_srtdeel_omschrijving
|| '|'
|| v_ins_deel_omschrijving
|| '] ';
-- HEADER NIEUW HEYDAY
---- disciplineomschrijving;groepsoortomschrijving;objectsoortcode;objectsoortomschrijving;objectidentificatie;objectopmerking;locatiecode;gebouwcode;bouwlaagvolgnummer;ruimtenummer;
----- ingangsdatum;Vervaldatum;Aantal;Plaats;Aantal v2;Bouwjaar;Capaciteit;Datum laatste asset survey;Fabricaat;Gewenste Conditie;Conditie nulmeting;Kritische asset;Referentienummer leverancier;Type;Eenheid;Garantie tot datum;Garantiepartij;kenmerk15;kenmerk16;kenmerk17;kenmerk18;kenmerk19;kenmerk20
-- 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_ins_discipline_omschrijving) = 'DISCIPLINEOMSCHRIJVING'
AND UPPER (v_ins_srtgroep_omschrijving) = 'GROEPSOORTOMSCHRIJVING'
AND UPPER (v_ins_srtdeel_code) = 'OBJECTSOORTCODE'
AND UPPER (v_ins_srtdeel_omschrijving) = 'OBJECTSOORTOMSCHRIJVING'
AND UPPER (v_ins_deel_omschrijving) = 'OBJECTIDENTIFICATIE'
AND UPPER (v_ins_deel_opmerking) = 'OBJECTOPMERKING'
AND UPPER (v_alg_locatie_code) = 'LOCATIECODE'
AND UPPER (v_alg_gebouw_code) = 'GEBOUWCODE'
AND UPPER (v_alg_verdieping_volgnr) = 'BOUWLAAGVOLGNUMMER'
AND UPPER (v_alg_ruimte_nr) = 'RUIMTENUMMER'
AND UPPER (v_ins_deel_aanmaak) = 'INGANGSDATUM'
AND UPPER (v_ins_deel_vervaldatum) = 'VERVALDATUM'
AND UPPER (v_ins_deel_aantal) = 'AANTAL'
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;
END IF;
ELSE
v_count_tot := v_count_tot + 1;
-- Controleer alle veldwaarden
v_errormsg := 'Disciplineomschrijving ongeldig';
v_ins_discipline_omschrijving :=
TRIM (v_ins_discipline_omschrijving);
IF v_ins_discipline_omschrijving IS NULL
OR LENGTH (v_ins_discipline_omschrijving) > 60
THEN
fac.imp_writelog (p_import_key,
'W',
v_aanduiding || v_errormsg,
'Regel wordt overgeslagen');
v_ongeldig := 1;
END IF;
--
v_errormsg := 'Groepsoortomschrijving ongeldig';
v_ins_srtgroep_omschrijving := TRIM (v_ins_srtgroep_omschrijving);
IF v_ins_srtgroep_omschrijving IS NULL
OR LENGTH (v_ins_srtgroep_omschrijving) > 60
THEN
fac.imp_writelog (p_import_key,
'W',
v_aanduiding || v_errormsg,
'Regel wordt overgeslagen');
v_ongeldig := 1;
END IF;
--
v_errormsg := 'Objectsoortcode ongeldig';
v_ins_srtdeel_code := TRIM (v_ins_srtdeel_code);
IF v_ins_srtdeel_code IS NULL OR LENGTH (v_ins_srtdeel_code) > 10
THEN
fac.imp_writelog (p_import_key,
'W',
v_aanduiding || v_errormsg,
'Regel wordt overgeslagen');
v_ongeldig := 1;
END IF;
--
v_errormsg := 'Objectsoortomschrijving ongeldig';
v_ins_srtdeel_omschrijving := TRIM (v_ins_srtdeel_omschrijving);
IF v_ins_srtdeel_omschrijving IS NULL
OR LENGTH (v_ins_srtdeel_omschrijving) > 100
THEN
fac.imp_writelog (p_import_key,
'W',
v_aanduiding || v_errormsg,
'Regel wordt overgeslagen');
v_ongeldig := 1;
END IF;
--
v_errormsg := 'Objectomschrijving ongeldig';
v_ins_deel_omschrijving := TRIM (v_ins_deel_omschrijving);
IF v_ins_deel_omschrijving IS NULL
OR LENGTH (v_ins_deel_omschrijving) > 60
THEN
fac.imp_writelog (p_import_key,
'W',
v_aanduiding || v_errormsg,
'Regel wordt overgeslagen');
v_ongeldig := 1;
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 := 'Locatiecode ongeldig';
v_alg_locatie_code := TRIM (v_alg_locatie_code);
IF LENGTH (v_alg_locatie_code) > 10
THEN
v_alg_locatie_code := SUBSTR (v_alg_locatie_code, 1, 10);
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding || v_errormsg,
'Locatiecode wordt afgebroken tot ['
|| v_alg_locatie_code
|| ']'
);
END IF;
--
v_errormsg := 'Gebouwcode ongeldig';
v_alg_gebouw_code := TRIM (v_alg_gebouw_code);
IF LENGTH (v_alg_gebouw_code) > 12
THEN
v_alg_gebouw_code := SUBSTR (v_alg_gebouw_code, 1, 12);
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding || v_errormsg,
'Gebouwcode wordt afgebroken tot ['
|| v_alg_gebouw_code
|| ']'
);
END IF;
--
v_errormsg := 'Bouwlaagvolgnummer ongeldig';
v_alg_verdieping_volgnr := TRIM (v_alg_verdieping_volgnr);
v_alg_verdieping_volgnr_n := NULL;
IF (v_alg_verdieping_volgnr IS NOT NULL)
THEN
v_alg_verdieping_volgnr_n :=
ROUND (fac.safe_to_number (v_alg_verdieping_volgnr));
IF v_alg_verdieping_volgnr_n NOT BETWEEN -999 AND 999
THEN
v_ongeldig := 1;
fac.imp_writelog (p_import_key,
'W',
v_aanduiding || v_errormsg,
'Regel wordt overgeslagen!');
ELSE
v_alg_verdieping_volgnr_n :=
fac.safe_to_number (v_alg_verdieping_volgnr);
END IF;
END IF;
--
v_errormsg := 'Ruimtenummer ongeldig';
v_alg_ruimte_nr := TRIM (v_alg_ruimte_nr);
IF LENGTH (v_alg_ruimte_nr) > 10
THEN
v_alg_ruimte_nr := SUBSTR (v_alg_ruimte_nr, 1, 10);
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding || v_errormsg,
'Ruimtenummer wordt afgebroken tot ['
|| v_alg_ruimte_nr
|| ']'
);
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 := 0 ; -- Als de aantal-waarde in kolom leeg wordt gelaten dan vullen we deze met 0. Bij update gaan we dit conform afspraak vullen met juiste aantal-waarde.
END IF;
--
v_errormsg := 'Aanmaakdatum ongeldig';
IF v_ins_deel_aanmaak IS NOT NULL
THEN
v_ins_deel_aanmaak_d :=
TO_DATE (v_ins_deel_aanmaak, 'dd-mm-yyyy');
IF fac.safe_to_number(to_char(v_ins_deel_aanmaak_d, 'yyyy'))<1900 THEN
v_ongeldig := 1;
fac.imp_writelog (p_import_key,
'W',
v_aanduiding || v_errormsg,
'Let op, verkeerde datumnotatie!');
END IF;
ELSE
v_ins_deel_aanmaak_d := NULL;
END IF;
--
v_errormsg := 'Vervaldatum ongeldig';
IF v_ins_deel_vervaldatum IS NOT NULL
THEN
v_ins_deel_vervaldatum_d :=
TO_DATE (v_ins_deel_vervaldatum, 'dd-mm-yyyy');
IF fac.safe_to_number(to_char(v_ins_deel_vervaldatum_d, 'yyyy'))<1900 THEN
v_ongeldig := 1;
fac.imp_writelog (p_import_key,
'W',
v_aanduiding || v_errormsg,
'Let op, verkeerde datumnotatie!');
END IF;
ELSE
v_ins_deel_vervaldatum_d := NULL;
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);
-- Controle nieuwe objectcode en keten
v_errormsg := 'Controle Objectidentificatie en keten';
IF v_ongeldig = 0
THEN
v_bestaande_objectketen := 0;
v_bestaande_objectcode := 0 ;
SELECT count(*)
INTO v_bestaande_objectketen
FROM aaxx_v_dwh_ins_object v, ins_deel d
WHERE UPPER (v_ins_discipline_omschrijving) =
UPPER (v.discipline_omschrijving)
AND UPPER (v_ins_srtgroep_omschrijving) =
UPPER (v.groep_omschrijving)
AND UPPER (v_ins_srtdeel_omschrijving) =
UPPER (v.objectsoort_omschrijving)
AND UPPER (v_ins_srtdeel_code) =
UPPER (v.objectsoort_code)
AND UPPER (v_ins_deel_omschrijving) =
UPPER (v.identificatie)
AND v.koppel_type = 'Ruimte'
AND v.ins_deel_key = d.ins_deel_key
AND v.ruimte_key = d.ins_alg_ruimte_key
AND d.ins_deel_verwijder IS NULL ;
SELECT count(*)
INTO v_bestaande_objectcode
FROM aaxx_v_dwh_ins_object v
WHERE UPPER (v_ins_deel_omschrijving) =
UPPER (v.identificatie) ;
IF v_bestaande_objectketen=0 AND v_bestaande_objectcode > 0 THEN -- Nieuwe objectketen ECHTER de objectcode bestaat al. Klopt niet, dus we gaan waarschuwen en NIET inlezen..
v_ongeldig := 1;
fac.imp_writelog (p_import_key,
'W',
v_aanduiding || v_errormsg,
'Nieuwe objectketen in CSV aangeboden, ECHTER de objectidentificatie bestaat al in Facilitor onder andere keten!. Record wordt niet ingelezen');
END IF;
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_ins (
ins_discipline_omschrijving,
-- ins_discipline_kostensoort,
ins_srtgroep_omschrijving,
ins_srtdeel_code,
ins_srtdeel_omschrijving,
ins_deel_omschrijving,
ins_deel_opmerking,
reserveerbaar,
alg_locatie_code,
alg_gebouw_code,
alg_verdieping_volgnr,
alg_ruimte_nr,
res_deel_alg_level,
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_vervaldatum,
ins_deel_aantal
)
VALUES (
v_ins_discipline_omschrijving,
v_ins_srtgroep_omschrijving,
v_ins_srtdeel_code,
v_ins_srtdeel_omschrijving,
v_ins_deel_omschrijving,
v_ins_deel_opmerking,
0, -- v_reserveerbaar_n, --
v_alg_locatie_code,
v_alg_gebouw_code,
v_alg_verdieping_volgnr_n,
v_alg_ruimte_nr,
-1, -- v_res_deel_alg_level_n,
DECODE (v_ins_kenmerk_key1, NULL, v_ins_kenmerkwaarde1, TO_CHAR (v_ins_kenmerk_key1) || '=' || SUBSTR (v_ins_kenmerkwaarde1, 1, 3900)),
DECODE (v_ins_kenmerk_key2, NULL, v_ins_kenmerkwaarde2, TO_CHAR (v_ins_kenmerk_key2) || '=' || SUBSTR (v_ins_kenmerkwaarde2, 1, 3900)),
DECODE (v_ins_kenmerk_key3, NULL, v_ins_kenmerkwaarde3, TO_CHAR (v_ins_kenmerk_key3) || '=' || SUBSTR (v_ins_kenmerkwaarde3, 1, 3900)),
DECODE (v_ins_kenmerk_key4, NULL, v_ins_kenmerkwaarde4, TO_CHAR (v_ins_kenmerk_key4) || '=' || SUBSTR (v_ins_kenmerkwaarde4, 1, 3900)),
DECODE (v_ins_kenmerk_key5, NULL, v_ins_kenmerkwaarde5, TO_CHAR (v_ins_kenmerk_key5) || '=' || SUBSTR (v_ins_kenmerkwaarde5, 1, 3900)),
DECODE (v_ins_kenmerk_key6, NULL, v_ins_kenmerkwaarde6, TO_CHAR (v_ins_kenmerk_key6) || '=' || SUBSTR (v_ins_kenmerkwaarde6, 1, 3900)),
DECODE (v_ins_kenmerk_key7, NULL, v_ins_kenmerkwaarde7, TO_CHAR (v_ins_kenmerk_key7) || '=' || SUBSTR (v_ins_kenmerkwaarde7, 1, 3900)),
DECODE (v_ins_kenmerk_key8, NULL, v_ins_kenmerkwaarde8, TO_CHAR (v_ins_kenmerk_key8) || '=' || SUBSTR (v_ins_kenmerkwaarde8, 1, 3900)),
DECODE (v_ins_kenmerk_key9, NULL, v_ins_kenmerkwaarde9, TO_CHAR (v_ins_kenmerk_key9) || '=' || SUBSTR (v_ins_kenmerkwaarde9, 1, 3900)),
DECODE (v_ins_kenmerk_key10, NULL, v_ins_kenmerkwaarde10, TO_CHAR (v_ins_kenmerk_key10) || '=' || SUBSTR (v_ins_kenmerkwaarde10, 1, 3900)),
DECODE (v_ins_kenmerk_key11, NULL, v_ins_kenmerkwaarde11, TO_CHAR (v_ins_kenmerk_key11) || '=' || SUBSTR (v_ins_kenmerkwaarde11, 1, 3900)),
DECODE (v_ins_kenmerk_key12, NULL, v_ins_kenmerkwaarde12, TO_CHAR (v_ins_kenmerk_key12) || '=' || SUBSTR (v_ins_kenmerkwaarde12, 1, 3900)),
DECODE (v_ins_kenmerk_key13, NULL, v_ins_kenmerkwaarde13, TO_CHAR (v_ins_kenmerk_key13) || '=' || SUBSTR (v_ins_kenmerkwaarde13, 1, 3900)),
DECODE (v_ins_kenmerk_key14, NULL, v_ins_kenmerkwaarde14, TO_CHAR (v_ins_kenmerk_key14) || '=' || SUBSTR (v_ins_kenmerkwaarde14, 1, 3900)),
DECODE (v_ins_kenmerk_key15, NULL, v_ins_kenmerkwaarde15, TO_CHAR (v_ins_kenmerk_key15) || '=' || SUBSTR (v_ins_kenmerkwaarde15, 1, 3900)),
DECODE (v_ins_kenmerk_key16, NULL, v_ins_kenmerkwaarde16, TO_CHAR (v_ins_kenmerk_key16) || '=' || SUBSTR (v_ins_kenmerkwaarde16, 1, 3900)),
DECODE (v_ins_kenmerk_key17, NULL, v_ins_kenmerkwaarde17, TO_CHAR (v_ins_kenmerk_key17) || '=' || SUBSTR (v_ins_kenmerkwaarde17, 1, 3900)),
DECODE (v_ins_kenmerk_key18, NULL, v_ins_kenmerkwaarde18, TO_CHAR (v_ins_kenmerk_key18) || '=' || SUBSTR (v_ins_kenmerkwaarde18, 1, 3900)),
DECODE (v_ins_kenmerk_key19, NULL, v_ins_kenmerkwaarde19, TO_CHAR (v_ins_kenmerk_key19) || '=' || SUBSTR (v_ins_kenmerkwaarde19, 1, 3900)),
DECODE (v_ins_kenmerk_key20, NULL, v_ins_kenmerkwaarde20, TO_CHAR (v_ins_kenmerk_key20) || '=' || SUBSTR (v_ins_kenmerkwaarde20, 1, 3900)),
v_ins_deel_aanmaak_d,
v_ins_deel_vervaldatum_d,
v_ins_deel_aantal_n
);
COMMIT;
v_count_import := v_count_import + 1;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg :=
v_errormsg
|| ' ORACLE (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.imp_writelog (p_import_key,
'W',
v_aanduiding || v_errormsg,
'');
COMMIT;
END;
END IF;
END IF;
EXCEPTION
WHEN OTHERS
THEN
v_ongeldig := 1;
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg :=
v_errorhint
|| ' ORACLE (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.imp_writelog (p_import_key,
'E',
v_aanduiding || v_errormsg,
'Regel wordt overgeslagen!'
);
COMMIT;
END;
END LOOP;
IF (header_is_valid = 0)
THEN
fac.imp_writelog (p_import_key,
'E',
'Ongeldig importbestand',
'Geen header of header niet volgens specificatie!');
ELSE
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 aaxx_import_ins_assetman;
/
CREATE OR REPLACE PROCEDURE aaxx_update_ins_assetman (p_import_key IN NUMBER)
AS
CURSOR c_bestaand -- Aantal op huidige aantal ins_deel_key zetten
IS
SELECT DISTINCT d.ins_deel_key,
d.ins_deel_omschrijving,
i.ins_deel_aantal aantal_imp,
d.ins_deel_aantal aantal_ins
FROM fac_imp_ins i, aaxx_v_dwh_ins_object v, ins_deel d
WHERE UPPER (i.ins_discipline_omschrijving) =
UPPER (v.discipline_omschrijving)
AND UPPER (i.ins_srtgroep_omschrijving) = UPPER (v.groep_omschrijving)
AND UPPER (i.ins_srtdeel_omschrijving) =
UPPER (v.objectsoort_omschrijving)
AND UPPER (i.ins_srtdeel_code) = UPPER (v.objectsoort_code)
AND UPPER (i.ins_deel_omschrijving) = UPPER (v.identificatie)
AND v.koppel_type = 'Ruimte'
AND v.ins_deel_key = d.ins_deel_key
AND v.ruimte_key = d.ins_alg_ruimte_key
AND d.ins_deel_verwijder IS NULL
AND i.ins_deel_aantal = 0;
CURSOR c_nieuw -- aantal op 1
IS
SELECT i.ins_deel_omschrijving, i.ins_deel_aantal aantal_imp
FROM fac_imp_ins i
WHERE i.ins_deel_aantal = 0
AND i.ins_deel_omschrijving NOT IN
(SELECT DISTINCT d.ins_deel_omschrijving
FROM fac_imp_ins i, aaxx_v_dwh_ins_object v, ins_deel d
WHERE UPPER (i.ins_discipline_omschrijving) =
UPPER (v.discipline_omschrijving)
AND UPPER (i.ins_srtgroep_omschrijving) =
UPPER (v.groep_omschrijving)
AND UPPER (i.ins_srtdeel_omschrijving) =
UPPER (v.objectsoort_omschrijving)
AND UPPER (i.ins_srtdeel_code) =
UPPER (v.objectsoort_code)
AND UPPER (i.ins_deel_omschrijving) =
UPPER (v.identificatie)
AND v.koppel_type = 'Ruimte'
AND v.ins_deel_key = d.ins_deel_key
AND v.ruimte_key = d.ins_alg_ruimte_key
AND d.ins_deel_verwijder IS NULL
AND i.ins_deel_aantal = 0);
-- Alle niet gevulde kenmerken echt leegmaken, want anders worden ze met standaard update namelijk verwijderd.
-- p_srtkenmerkgroepwaarde = '234|1=37-ZB-DR' is gevuld..... -- p_srtkenmerkgroepwaarde = '234|1=' is LEEG maar moet ook echt op NULL
-- Voor HeyDay-upload geldt namelijk dat als het niet gevuld is, dan wordt er ook niets gewijzigd.
CURSOR c_del
IS
SELECT ins_deel_omschrijving, 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
FROM fac_imp_ins i ;
BEGIN
-- Starten met correctie op het aantal-veld.
--- Alle 0-waarden terugzetten naar ins_deel_aantal indien het bestaande objecten zijn..
FOR rec IN c_bestaand
LOOP
BEGIN
UPDATE fac_imp_ins i
SET i.ins_deel_aantal = rec.aantal_ins
WHERE i.ins_deel_omschrijving = rec.ins_deel_omschrijving ;
END;
END LOOP;
FOR rec IN c_nieuw
LOOP
BEGIN
UPDATE fac_imp_ins i
SET i.ins_deel_aantal = 1
WHERE i.ins_deel_omschrijving = rec.ins_deel_omschrijving ;
END;
END LOOP;
FOR rec IN c_del
LOOP
BEGIN
IF SUBSTR (rec.ins_kenmerkwaarde1, INSTR (rec.ins_kenmerkwaarde1, '=') + 1) IS NULL THEN
UPDATE fac_imp_ins i
SET i.ins_kenmerkwaarde1 = ''
WHERE i.ins_deel_omschrijving = rec.ins_deel_omschrijving ;
END IF;
IF SUBSTR (rec.ins_kenmerkwaarde2, INSTR (rec.ins_kenmerkwaarde2, '=') + 1) IS NULL THEN
UPDATE fac_imp_ins i
SET i.ins_kenmerkwaarde2 = ''
WHERE i.ins_deel_omschrijving = rec.ins_deel_omschrijving ;
END IF;
IF SUBSTR (rec.ins_kenmerkwaarde3, INSTR (rec.ins_kenmerkwaarde3, '=') + 1) IS NULL THEN
UPDATE fac_imp_ins i
SET i.ins_kenmerkwaarde3 = ''
WHERE i.ins_deel_omschrijving = rec.ins_deel_omschrijving ;
END IF;
IF SUBSTR (rec.ins_kenmerkwaarde4, INSTR (rec.ins_kenmerkwaarde4, '=') + 1) IS NULL THEN
UPDATE fac_imp_ins i
SET i.ins_kenmerkwaarde4 = ''
WHERE i.ins_deel_omschrijving = rec.ins_deel_omschrijving ;
END IF;
IF SUBSTR (rec.ins_kenmerkwaarde5, INSTR (rec.ins_kenmerkwaarde5, '=') + 1) IS NULL THEN
UPDATE fac_imp_ins i
SET i.ins_kenmerkwaarde5 = ''
WHERE i.ins_deel_omschrijving = rec.ins_deel_omschrijving ;
END IF;
IF SUBSTR (rec.ins_kenmerkwaarde6, INSTR (rec.ins_kenmerkwaarde6, '=') + 1) IS NULL THEN
UPDATE fac_imp_ins i
SET i.ins_kenmerkwaarde6 = ''
WHERE i.ins_deel_omschrijving = rec.ins_deel_omschrijving ;
END IF;
IF SUBSTR (rec.ins_kenmerkwaarde7, INSTR (rec.ins_kenmerkwaarde7, '=') + 1) IS NULL THEN
UPDATE fac_imp_ins i
SET i.ins_kenmerkwaarde7 = ''
WHERE i.ins_deel_omschrijving = rec.ins_deel_omschrijving ;
END IF;
IF SUBSTR (rec.ins_kenmerkwaarde8, INSTR (rec.ins_kenmerkwaarde8, '=') + 1) IS NULL THEN
UPDATE fac_imp_ins i
SET i.ins_kenmerkwaarde8 = ''
WHERE i.ins_deel_omschrijving = rec.ins_deel_omschrijving ;
END IF;
IF SUBSTR (rec.ins_kenmerkwaarde9, INSTR (rec.ins_kenmerkwaarde9, '=') + 1) IS NULL THEN
UPDATE fac_imp_ins i
SET i.ins_kenmerkwaarde9 = ''
WHERE i.ins_deel_omschrijving = rec.ins_deel_omschrijving ;
END IF;
IF SUBSTR (rec.ins_kenmerkwaarde10, INSTR (rec.ins_kenmerkwaarde10, '=') + 1) IS NULL THEN
UPDATE fac_imp_ins i
SET i.ins_kenmerkwaarde10 = ''
WHERE i.ins_deel_omschrijving = rec.ins_deel_omschrijving ;
END IF;
IF SUBSTR (rec.ins_kenmerkwaarde11, INSTR (rec.ins_kenmerkwaarde11, '=') + 1) IS NULL THEN
UPDATE fac_imp_ins i
SET i.ins_kenmerkwaarde11 = ''
WHERE i.ins_deel_omschrijving = rec.ins_deel_omschrijving ;
END IF;
IF SUBSTR (rec.ins_kenmerkwaarde12, INSTR (rec.ins_kenmerkwaarde12, '=') + 1) IS NULL THEN
UPDATE fac_imp_ins i
SET i.ins_kenmerkwaarde12 = ''
WHERE i.ins_deel_omschrijving = rec.ins_deel_omschrijving ;
END IF;
IF SUBSTR (rec.ins_kenmerkwaarde13, INSTR (rec.ins_kenmerkwaarde13, '=') + 1) IS NULL THEN
UPDATE fac_imp_ins i
SET i.ins_kenmerkwaarde13 = ''
WHERE i.ins_deel_omschrijving = rec.ins_deel_omschrijving ;
END IF;
IF SUBSTR (rec.ins_kenmerkwaarde14, INSTR (rec.ins_kenmerkwaarde14, '=') + 1) IS NULL THEN
UPDATE fac_imp_ins i
SET i.ins_kenmerkwaarde14 = ''
WHERE i.ins_deel_omschrijving = rec.ins_deel_omschrijving ;
END IF;
IF SUBSTR (rec.ins_kenmerkwaarde15, INSTR (rec.ins_kenmerkwaarde15, '=') + 1) IS NULL THEN
UPDATE fac_imp_ins i
SET i.ins_kenmerkwaarde15 = ''
WHERE i.ins_deel_omschrijving = rec.ins_deel_omschrijving ;
END IF;
IF SUBSTR (rec.ins_kenmerkwaarde16, INSTR (rec.ins_kenmerkwaarde16, '=') + 1) IS NULL THEN
UPDATE fac_imp_ins i
SET i.ins_kenmerkwaarde16 = ''
WHERE i.ins_deel_omschrijving = rec.ins_deel_omschrijving ;
END IF;
IF SUBSTR (rec.ins_kenmerkwaarde17, INSTR (rec.ins_kenmerkwaarde17, '=') + 1) IS NULL THEN
UPDATE fac_imp_ins i
SET i.ins_kenmerkwaarde17 = ''
WHERE i.ins_deel_omschrijving = rec.ins_deel_omschrijving ;
END IF;
IF SUBSTR (rec.ins_kenmerkwaarde18, INSTR (rec.ins_kenmerkwaarde18, '=') + 1) IS NULL THEN
UPDATE fac_imp_ins i
SET i.ins_kenmerkwaarde18 = ''
WHERE i.ins_deel_omschrijving = rec.ins_deel_omschrijving ;
END IF;
IF SUBSTR (rec.ins_kenmerkwaarde19, INSTR (rec.ins_kenmerkwaarde19, '=') + 1) IS NULL THEN
UPDATE fac_imp_ins i
SET i.ins_kenmerkwaarde19 = ''
WHERE i.ins_deel_omschrijving = rec.ins_deel_omschrijving ;
END IF;
IF SUBSTR (rec.ins_kenmerkwaarde20, INSTR (rec.ins_kenmerkwaarde20, '=') + 1) IS NULL THEN
UPDATE fac_imp_ins i
SET i.ins_kenmerkwaarde20 = ''
WHERE i.ins_deel_omschrijving = rec.ins_deel_omschrijving ;
END IF;
END;
END LOOP;
-- Nu staat alles in fac_imp_ins goed en kunnen we gaan updaten via de standaard procedure
fac_update_ins (p_import_key);
-- De gewijzigde standaard objectvelden die niet in standaard update worden meegenomen, gaan we via post_update regelen.
aaxx_post_update_ins_assetman (p_import_key);
END aaxx_update_ins_assetman;
/
CREATE OR REPLACE PROCEDURE aaxx_post_update_ins_assetman (p_import_key IN NUMBER)
AS
v_aanduiding VARCHAR (400);
-- Bestaande Objecten aanpassen: Datum aanmaak, Datum vervallen, Opmerking en Aantal
---- Werkwijze: Als gevuld en afwijkend huidige ins_waarde dan aanpassen. Als niet gevuld in importsheet, dan asset intact laten.
CURSOR c_update
IS
SELECT DISTINCT d.ins_deel_key,
i.ins_deel_omschrijving,
i.ins_deel_aanmaak aanmaak_imp,
d.ins_deel_aanmaak aanmaak_ins,
i.ins_deel_vervaldatum vervaldatum_imp,
d.ins_deel_vervaldatum vervaldatum_ins,
i.ins_deel_opmerking opmerking_imp,
d.ins_deel_opmerking opmerking_ins,
i.ins_deel_aantal aantal_imp,
d.ins_deel_aantal aantal_ins
FROM fac_imp_ins i, aaxx_v_dwh_ins_object v, ins_deel d
WHERE UPPER (i.ins_discipline_omschrijving) =
UPPER (v.discipline_omschrijving)
AND UPPER (i.ins_srtgroep_omschrijving) = UPPER (v.groep_omschrijving)
AND UPPER (i.ins_srtdeel_omschrijving) =
UPPER (v.objectsoort_omschrijving)
AND UPPER (i.ins_srtdeel_code) = UPPER (v.objectsoort_code)
AND UPPER (i.ins_deel_omschrijving) = UPPER (v.identificatie)
AND v.koppel_type = 'Ruimte'
AND v.ins_deel_key = d.ins_deel_key
AND v.ruimte_key = d.ins_alg_ruimte_key
AND d.ins_deel_verwijder IS NULL ;
BEGIN
FOR rec IN c_update
LOOP
BEGIN
v_aanduiding := 'Gewijzigd aanmaakdatum van ' || TO_CHAR(rec.aanmaak_ins, 'dd-mm-yyyy') || ' naar ' || TO_CHAR(rec.aanmaak_imp, 'dd-mm-yyyy') ;
IF rec.aanmaak_imp is not null and rec.aanmaak_imp <> rec.aanmaak_ins THEN
UPDATE ins_deel d
SET d.ins_deel_aanmaak = rec.aanmaak_imp
WHERE d.ins_deel_key = rec.ins_deel_key ;
fac.trackaction ('INSUPD', rec.ins_deel_key, sys_context('USERENV', 'CLIENT_IDENTIFIER'), NULL, v_aanduiding);
END IF;
v_aanduiding := 'Gewijzigd vervaldatum ' || TO_CHAR(rec.vervaldatum_ins, 'dd-mm-yyyy') || ' naar ' || TO_CHAR(rec.vervaldatum_imp, 'dd-mm-yyyy') ;
IF rec.vervaldatum_imp is not null and (rec.vervaldatum_imp <> rec.vervaldatum_ins or rec.vervaldatum_ins is null) THEN
UPDATE ins_deel d
SET d.ins_deel_vervaldatum = rec.vervaldatum_imp
WHERE d.ins_deel_key = rec.ins_deel_key ;
fac.trackaction ('INSUPD', rec.ins_deel_key, sys_context('USERENV', 'CLIENT_IDENTIFIER'), NULL, v_aanduiding);
END IF;
v_aanduiding := 'Gewijzigd omschrijving ' || rec.opmerking_ins || ' naar ' || rec.opmerking_imp ;
IF rec.opmerking_imp is not null and (rec.opmerking_imp <> rec.opmerking_ins or rec.opmerking_ins is null) THEN
UPDATE ins_deel d
SET d.ins_deel_opmerking = rec.opmerking_imp
WHERE d.ins_deel_key = rec.ins_deel_key ;
fac.trackaction ('INSUPD', rec.ins_deel_key, sys_context('USERENV', 'CLIENT_IDENTIFIER'), NULL, v_aanduiding);
END IF;
v_aanduiding := 'Gewijzigd aantal ' || rec.aantal_ins || ' naar ' || rec.aantal_imp ;
IF rec.aantal_imp is not null and rec.aantal_imp <> rec.aantal_ins THEN
UPDATE ins_deel d
SET d.ins_deel_aantal = rec.aantal_imp
WHERE d.ins_deel_key = rec.ins_deel_key ;
fac.trackaction ('INSUPD', rec.ins_deel_key, sys_context('USERENV', 'CLIENT_IDENTIFIER'), NULL, v_aanduiding);
END IF;
END;
END LOOP;
END;
/
-- Nieuwe upload GEBREKEN
CREATE OR REPLACE PROCEDURE aaxx_import_nen2767_assetman (
p_import_key IN NUMBER)
AS
c_fielddelimitor VARCHAR2 (1) := ';';
v_newline VARCHAR2 (1000); -- Input line
v_aanduiding VARCHAR2 (200);
v_errorhint VARCHAR2 (1000);
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
header_is_valid NUMBER := 0;
v_ongeldig NUMBER (1);
v_count_tot NUMBER (10);
v_count_import NUMBER (10);
v_count_import_n NUMBER (10);
v_count NUMBER;
v_mld_stdmelding_key NUMBER (10);
v_regel NUMBER;
v_mld_srtkenmerk_key1 VARCHAR2 (255);
v_mld_srtkenmerk_key2 VARCHAR2 (255);
v_mld_srtkenmerk_key3 VARCHAR2 (255);
v_mld_srtkenmerk_key4 VARCHAR2 (255);
v_mld_srtkenmerk_key5 VARCHAR2 (255);
v_mld_srtkenmerk_key6 VARCHAR2 (255);
v_mld_srtkenmerk_key7 VARCHAR2 (255);
v_mld_srtkenmerk_key8 VARCHAR2 (255);
v_mld_srtkenmerk_key9 VARCHAR2 (255);
v_mld_srtkenmerk_key10 VARCHAR2 (255);
v_alg_gebouw_code VARCHAR2 (1000) :=NULL; -- Zie 02 - !!
v_ins_deel_omschrijving VARCHAR2 (1000);
v_ins_deel NUMBER (10);
v_mld_melding_datum VARCHAR2 (1000);
v_mld_melding_omschrijving VARCHAR2 (1000);
v_prs_perslid_email VARCHAR2 (1000); -- inspecteur
v_behandelaar_email VARCHAR2 (1000); -- behandelaar
v_gebrekcode VARCHAR2 (1000);
-- v_ernst VARCHAR2 (1000);
v_omvang VARCHAR2 (1000);
v_intensiteit VARCHAR2 (1000);
v_aspect1 VARCHAR2 (1000);
v_aspect2 VARCHAR2 (1000);
v_aspect3 VARCHAR2 (1000);
v_aspect4 VARCHAR2 (1000);
v_aspect5 VARCHAR2 (1000);
v_aspect6 VARCHAR2 (1000);
v_aspect7 VARCHAR2 (1000);
v_foto VARCHAR2 (1000);
v_kosten VARCHAR2 (1000);
v_plandatum VARCHAR2 (1000);
v_meldingnr VARCHAR2 (1000);
v_ongeldig_object NUMBER (1) :=0;
v_ongeldig_gebrek NUMBER (1) :=0;
v_melding_GV_aantal NUMBER (10);
v_melding_GV VARCHAR2 (1000);
v_mld_kenmerkwaarde1 VARCHAR2 (4000);
v_mld_kenmerkwaarde2 VARCHAR2 (4000);
v_mld_kenmerkwaarde3 VARCHAR2 (4000);
v_mld_kenmerkwaarde4 VARCHAR2 (4000);
v_mld_kenmerkwaarde5 VARCHAR2 (4000);
v_mld_kenmerkwaarde6 VARCHAR2 (4000);
v_mld_kenmerkwaarde7 VARCHAR2 (4000);
v_mld_kenmerkwaarde8 VARCHAR2 (4000);
v_mld_kenmerkwaarde9 VARCHAR2 (4000); -- Voor vullen van de behandelaar
v_mld_kenmerkwaarde10 VARCHAR2 (4000); -- Voor vullen van de lopende gebreksmelding
CURSOR c1
IS
SELECT *
FROM fac_imp_file
WHERE fac_import_key = p_import_key
ORDER BY fac_imp_file_index;
-- Controleer tijdens import-fase alleen op bestaan van kenmerksoort (of
-- deze - via een kenmerk - wel is gedefinieerd voor de betreffende melding -
-- discipline/vakgroep/st-melding, volgt pas tijdens de update-fase)!
--
-- kw is bijvoorbeeld 'Parkeercode' of 'Parkeercode|3' waarbij de laatste in groep 3 zit
-- het resultaat is NULL (als niet gevonden) of 234|3 voor strkenmer_key 234 in groep 3
-- Als geen groep is meegegeven wordt 234|0 opgeleverd (de default groep)
FUNCTION bepaal_srtkenmerk_key (p_kw IN VARCHAR)
RETURN VARCHAR
IS
v_srtkenmerk_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 mld_srtkenmerk_key
INTO v_srtkenmerk_key
FROM mld_srtkenmerk -- ins_v_aanwezigsrtkenmerk
WHERE mld_srtkenmerk_upper = UPPER (v_kw)
AND mld_srtkenmerk_kenmerktype IN ('C', 'D', 'N', 'R', 'S', 'X', 'B', 'V');
ELSE -- kenmerkwaarde is numeriek (dus key)!
SELECT mld_srtkenmerk_key
INTO v_srtkenmerk_key
FROM mld_srtkenmerk -- ins_v_aanwezigsrtkenmerk
WHERE mld_srtkenmerk_key = fac.safe_to_number (v_kw)
AND mld_srtkenmerk_kenmerktype IN ('C', 'D', 'N', 'R', 'S', 'X', 'B', 'V');
END IF;
RETURN TO_CHAR(v_srtkenmerk_key) || '|' || TO_CHAR(v_kenmerk_groep);
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 kenmerksoort [' || p_kw || ']',
'Bestaat niet of type ongeldig');
COMMIT;
RETURN NULL;
END IF;
END;
FUNCTION get_aspect_value (p_aspect IN VARCHAR2)
RETURN VARCHAR2
IS
v_result VARCHAR2 (100);
BEGIN
v_result := p_aspect;
IF p_aspect IS NULL
THEN
v_result := 'NVT';
END IF;
IF p_aspect = '0' -- Nodig om bij aanvullen lopende gebreksmeldingen de aspectwaarde weer op NVT te krijgen
THEN
v_result := '0 - NVT';
END IF;
IF p_aspect = '1'
THEN
v_result := 'Gering';
END IF;
IF p_aspect = '2'
THEN
v_result := 'Matig';
END IF;
IF p_aspect = '3'
THEN
v_result := 'Sterk';
END IF;
RETURN v_result;
END;
BEGIN
v_errorhint := 'cnd_import_nen2767_results';
v_count_tot := 0;
v_count_import := 0;
FOR rec1 IN c1
LOOP
BEGIN
v_newline := rec1.fac_imp_file_line;
v_regel := rec1.fac_imp_file_index;
v_aanduiding := '';
v_errorhint := 'Fout bij opvragen te importeren rij';
v_ongeldig := 0;
-- Lees alle veldwaarden
-- 01
v_aanduiding := 'Probleem bij v_ins_deel_omschrijving: ';
fac.imp_getfield_nr (v_newline,
c_fielddelimitor,
1,
v_ins_deel_omschrijving);
v_ins_deel_omschrijving := TRIM (v_ins_deel_omschrijving);
-- 02
v_aanduiding := 'Probleem bij v_mld_melding_datum: ';
fac.imp_getfield_nr (v_newline,
c_fielddelimitor,
2,
v_mld_melding_datum);
v_mld_melding_datum := TRIM (v_mld_melding_datum);
-- 03
v_aanduiding := 'Probleem bij v_gebrekcode: ';
fac.imp_getfield_nr (v_newline,
c_fielddelimitor,
3,
v_gebrekcode);
v_gebrekcode := TRIM (v_gebrekcode);
-- 05
v_aanduiding := 'Probleem bij v_omvang: ';
fac.imp_getfield_nr (v_newline,
c_fielddelimitor,
5,
v_omvang);
v_omvang := TRIM (v_omvang);
-- 06
v_aanduiding := 'Probleem bij v_intensiteit: ';
fac.imp_getfield_nr (v_newline,
c_fielddelimitor,
6,
v_intensiteit);
v_intensiteit := TRIM (v_intensiteit);
-- 07
v_aanduiding := 'Probleem bij v_aspect1: ';
fac.imp_getfield_nr (v_newline,
c_fielddelimitor,
7,
v_aspect1);
v_aspect1 := TRIM (v_aspect1);
-- 08
v_aanduiding := 'Probleem bij v_aspect2: ';
fac.imp_getfield_nr (v_newline,
c_fielddelimitor,
8,
v_aspect2);
v_aspect2 := TRIM (v_aspect2);
-- 09
v_aanduiding := 'Probleem bij v_aspect3: ';
fac.imp_getfield_nr (v_newline,
c_fielddelimitor,
9,
v_aspect3);
v_aspect3 := TRIM (v_aspect3);
-- 10
v_aanduiding := 'Probleem bij v_aspect4: ';
fac.imp_getfield_nr (v_newline,
c_fielddelimitor,
10,
v_aspect4);
v_aspect4 := TRIM (v_aspect4);
-- 11
v_aanduiding := 'Probleem bij v_aspect5: ';
fac.imp_getfield_nr (v_newline,
c_fielddelimitor,
11,
v_aspect5);
v_aspect5 := TRIM (v_aspect5);
-- 12
v_aanduiding := 'Probleem bij v_aspect6: ';
fac.imp_getfield_nr (v_newline,
c_fielddelimitor,
12,
v_aspect6);
v_aspect6 := TRIM (v_aspect6);
-- 13
v_aanduiding := 'Probleem bij v_aspect7: ';
fac.imp_getfield_nr (v_newline,
c_fielddelimitor,
13,
v_aspect7);
v_aspect7 := TRIM (v_aspect7);
-- 14
v_aanduiding := 'Probleem bij v_mld_melding_omschrijving: ';
fac.imp_getfield_nr (v_newline,
c_fielddelimitor,
14,
v_mld_melding_omschrijving);
v_mld_melding_omschrijving := TRIM (v_mld_melding_omschrijving);
-- 15
v_aanduiding := 'Probleem bij v_prs_perslid_email: ';
fac.imp_getfield_nr (v_newline,
c_fielddelimitor,
15,
v_prs_perslid_email);
v_prs_perslid_email := TRIM (v_prs_perslid_email);
-- 16
v_aanduiding := 'Probleem bij v_behandelaar_email: ';
fac.imp_getfield_nr (v_newline,
c_fielddelimitor,
16,
v_behandelaar_email);
v_behandelaar_email := TRIM (v_behandelaar_email);
-- 17
v_aanduiding := 'Probleem bij v_foto: ';
fac.imp_getfield_nr (v_newline,
c_fielddelimitor,
17,
v_foto);
v_foto := TRIM (v_foto);
-- 18
v_aanduiding := 'Probleem bij v_kosten: ';
fac.imp_getfield_nr (v_newline,
c_fielddelimitor,
18,
v_kosten);
v_kosten := TRIM (v_kosten);
-- 19
v_aanduiding := 'Probleem bij v_plandatum: ';
fac.imp_getfield_nr (v_newline,
c_fielddelimitor,
19,
v_plandatum);
v_plandatum := TRIM (v_plandatum);
-- 19 t/m 28
v_aanduiding := 'Probleem bij vullen v_mld_kenmerkwaarde 1 t/m 10: ';
fac.imp_getfield_nr (v_newline,c_fielddelimitor,20, v_mld_kenmerkwaarde1);
v_mld_kenmerkwaarde1 := TRIM (v_mld_kenmerkwaarde1);
fac.imp_getfield_nr (v_newline,c_fielddelimitor,21, v_mld_kenmerkwaarde2);
v_mld_kenmerkwaarde2 := TRIM (v_mld_kenmerkwaarde2);
fac.imp_getfield_nr (v_newline,c_fielddelimitor,22, v_mld_kenmerkwaarde3);
v_mld_kenmerkwaarde3 := TRIM (v_mld_kenmerkwaarde3);
fac.imp_getfield_nr (v_newline,c_fielddelimitor,23, v_mld_kenmerkwaarde4);
v_mld_kenmerkwaarde4 := TRIM (v_mld_kenmerkwaarde4);
fac.imp_getfield_nr (v_newline,c_fielddelimitor,24, v_mld_kenmerkwaarde5);
v_mld_kenmerkwaarde5 := TRIM (v_mld_kenmerkwaarde5);
fac.imp_getfield_nr (v_newline,c_fielddelimitor,25, v_mld_kenmerkwaarde6);
v_mld_kenmerkwaarde6 := TRIM (v_mld_kenmerkwaarde6);
fac.imp_getfield_nr (v_newline,c_fielddelimitor,26, v_mld_kenmerkwaarde7);
v_mld_kenmerkwaarde7 := TRIM (v_mld_kenmerkwaarde7);
fac.imp_getfield_nr (v_newline,c_fielddelimitor,27, v_mld_kenmerkwaarde8);
v_mld_kenmerkwaarde8 := TRIM (v_mld_kenmerkwaarde8);
/* fac.imp_getfield_nr (v_newline,c_fielddelimitor,28, v_mld_kenmerkwaarde9);
v_mld_kenmerkwaarde9 := TRIM (v_mld_kenmerkwaarde9);
fac.imp_getfield_nr (v_newline,c_fielddelimitor,28, v_mld_kenmerkwaarde10);
v_mld_kenmerkwaarde10 := TRIM (v_mld_kenmerkwaarde10);
*/
v_aanduiding :=
'['
|| v_alg_gebouw_code
|| '-'
|| v_ins_deel_omschrijving
|| '-'
|| v_gebrekcode
|| '] ';
-- Ik controleer of ik een geldige header heb, dat is: in de juiste kolommen
-- de juiste kolomkop. Ik controleer daarbij de volgende kolommen:
-- 1. Objectidentificatie
-- 2. Datum
-- 3. stdmelding
-- 5. omvang
-- 9. intensiteit
-- 10. Aspectwaarde1
-- 11. Aspectwaarde2
-- 12. Aspectwaarde3
-- 13. Aspectwaarde4
-- 14. Aspectwaarde5
-- 15. Aspectwaarde6
-- 16. Aspectwaarde7
-- 17. Opmerking
-- 18. Inspecteur
-- 19. Behandelaar
-- 20. Foto
-- 21. Kosten
-- 22. Datum gepland
-- 23. Dienst
-- 24. Taakgroep
-- 25. Datum Gereed (inspecteur)
-- 26. geadviseerd startjaar
-- Ik negeer alles totdat ik een geldige header ben gepasseerd.
-- De tweede waarde is de waarde uit de plato import. Als er geen tweede waarde is dan zijn ze gelijk.
IF (header_is_valid = 0)
THEN
IF
UPPER (v_ins_deel_omschrijving) = 'OBJECTIDENTIFICATIE'
AND UPPER (v_mld_melding_datum) = 'DATUM'
AND (UPPER (v_gebrekcode) = 'STDMELDING' OR UPPER (v_gebrekcode) = 'GEBREKCODE')
AND UPPER (v_omvang) = 'OMVANG'
AND UPPER (v_intensiteit) = 'INTENSITEIT'
AND UPPER (v_aspect1) = 'ASPECTWAARDE1'
AND UPPER (v_aspect2) = 'ASPECTWAARDE2'
AND UPPER (v_aspect3) = 'ASPECTWAARDE3'
AND UPPER (v_aspect4) = 'ASPECTWAARDE4'
AND UPPER (v_aspect5) = 'ASPECTWAARDE5'
AND UPPER (v_aspect6) = 'ASPECTWAARDE6'
AND UPPER (v_aspect7) = 'ASPECTWAARDE7'
AND UPPER (v_mld_melding_omschrijving) = 'OPMERKING'
AND UPPER (v_prs_perslid_email) = 'INSPECTEUR'
AND UPPER (v_behandelaar_email) = 'BEHANDELAAR'
AND UPPER (v_foto) = 'FOTO'
AND UPPER (v_kosten) = 'KOSTEN'
AND UPPER (v_plandatum) = 'DATUM GEPLAND'
AND UPPER (v_mld_kenmerkwaarde1) = 'DIENST'
AND UPPER (v_mld_kenmerkwaarde2) = 'TAAKGROEP'
AND UPPER (v_mld_kenmerkwaarde3) = 'DATUM GEREED (INSPECTEUR)'
AND UPPER (v_mld_kenmerkwaarde4) = 'GEADVISEERD STARTJAAR'
THEN
v_mld_srtkenmerk_key1 := bepaal_srtkenmerk_key (v_mld_kenmerkwaarde1);
v_mld_srtkenmerk_key2 := bepaal_srtkenmerk_key (v_mld_kenmerkwaarde2);
v_mld_srtkenmerk_key3 := bepaal_srtkenmerk_key (v_mld_kenmerkwaarde3);
v_mld_srtkenmerk_key4 := bepaal_srtkenmerk_key (v_mld_kenmerkwaarde4);
v_mld_srtkenmerk_key5 := bepaal_srtkenmerk_key (v_mld_kenmerkwaarde5);
v_mld_srtkenmerk_key6 := bepaal_srtkenmerk_key (v_mld_kenmerkwaarde6);
v_mld_srtkenmerk_key7 := bepaal_srtkenmerk_key (v_mld_kenmerkwaarde7);
v_mld_srtkenmerk_key8 := bepaal_srtkenmerk_key (v_mld_kenmerkwaarde8);
-- v_mld_srtkenmerk_key9 := bepaal_srtkenmerk_key (v_mld_kenmerkwaarde9);
-- v_mld_srtkenmerk_key10 := bepaal_srtkenmerk_key (v_mld_kenmerkwaarde10);
header_is_valid := 1;
ELSE
IF rec1.fac_imp_file_index = 1
THEN
fac.imp_writelog (
p_import_key,
'I',
'Header ongeldig: '
|| UPPER (v_ins_deel_omschrijving) || '-' || UPPER (v_mld_melding_datum) || '-'
|| UPPER (v_gebrekcode) || '-' || UPPER (v_omvang) || '-' || UPPER (v_intensiteit) || '-' || UPPER (v_aspect1) || '-'
|| UPPER (v_aspect2) || '-' || UPPER (v_aspect3) || '-' || UPPER (v_aspect4) || '-' || UPPER (v_aspect5) || '-' || UPPER (v_aspect6) || '-' || UPPER (v_aspect7) || '-'
|| UPPER (v_mld_melding_omschrijving) || '-' || UPPER (v_prs_perslid_email) || '-' || UPPER (v_behandelaar_email) || '-' || UPPER (v_foto) || '-' || UPPER (v_kosten) || '-' || UPPER (v_plandatum) || '-'
|| UPPER (v_mld_kenmerkwaarde1) || '-' || UPPER (v_mld_kenmerkwaarde2) || '-' || UPPER (v_mld_kenmerkwaarde3) || '-' || UPPER (v_mld_kenmerkwaarde4),
'');
END IF;
END IF;
ELSE
v_count_tot := v_count_tot + 1;
--
v_errorhint :=
'Ongeldige kolom OBJECTIDENTIFICATIE (moet gevuld en maximaal 60 tekens zijn) [' || v_ins_deel_omschrijving || ']';
v_ongeldig_object := 0;
IF (v_ins_deel_omschrijving IS NULL)
OR (LENGTH (v_ins_deel_omschrijving) > 60)
THEN
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding,
v_errorhint || ' - Regel wordt overgeslagen');
v_ongeldig := 1;
v_ongeldig_object := 1;
END IF;
--
v_errorhint :=
'Ongeldige kolom OBJECTIDENTIFICATIE (object is onbekend) [' || v_ins_deel_omschrijving || ']';
IF v_ongeldig_object=0
THEN
SELECT count(*)
INTO v_ins_deel
FROM ins_v_aanwezigdeel
WHERE ins_deel_upper = UPPER (v_ins_deel_omschrijving) ;
IF v_ins_deel = 0
THEN
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding,
v_errorhint || ' - Regel wordt overgeslagen');
v_ongeldig := 1;
v_ongeldig_object := 1;
END IF;
END IF;
--
v_errorhint :=
'Ongeldige kolom DATUM (indien gevuld dan met geldige datum in formaat dd-mm-jjjj zijn) [' || v_mld_melding_datum || ']';
IF v_mld_melding_datum IS NOT NULL AND fac.safe_to_date (v_mld_melding_datum, 'dd-mm-yyyy') IS NULL
THEN
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding,
v_errorhint || ' - Regel wordt overgeslagen');
v_ongeldig := 1;
END IF;
--
v_errorhint :=
'Ongeldig kolom STDMELDING (moet gevuld en maximaal 20 tekens zijn) [' || v_gebrekcode || ']';
v_ongeldig_gebrek := 0;
IF (v_gebrekcode IS NULL) OR (LENGTH (v_gebrekcode) > 20)
THEN
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding,
v_errorhint || ' - Regel wordt overgeslagen');
v_ongeldig := 1;
v_ongeldig_gebrek := 1;
END IF;
-- Bepaal of gebrek uberhaupt wel in gebrekenlijst voorkomt
v_errorhint :=
'Gebrek (melding) niet gevonden (bestaat niet), regel wordt overgeslagen';
SELECT max(sm.mld_stdmelding_key)
INTO v_mld_stdmelding_key
FROM mld_stdmelding sm
WHERE UPPER(mld_stdmelding_code) = UPPER (v_gebrekcode);
IF v_mld_stdmelding_key IS NULL
THEN
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding,
v_errorhint || ' - Regel wordt overgeslagen');
v_ongeldig := 1;
v_ongeldig_gebrek := 1;
END IF;
--
v_errorhint :=
'Ongeldig kolom OMVANG - indien gevuld moet 1,2,3,4 of 5 zijn [' || v_omvang || ']';
-- Als de codering ingevuld is dan gaan we zelf op zoek naar de omschrijving.
IF v_omvang IS NOT NULL
THEN
IF fac.safe_to_number(v_omvang) IN (1,
2,
3,
4,
5)
THEN
CASE v_omvang
WHEN 1
THEN
v_omvang := '< 2% Incidenteel';
WHEN 2
THEN
v_omvang := '2% tot 10% Plaatselijk';
WHEN 3
THEN
v_omvang := '10% tot 30% Regelmatig';
WHEN 4
THEN
v_omvang := '30% tot 70% Aanzienlijk';
WHEN 5
THEN
v_omvang := '> 70% Algemeen';
END CASE;
ELSE
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding,
v_errorhint || ' - Regel wordt overgeslagen');
v_ongeldig := 1;
END IF;
END IF;
--
v_errorhint :=
'Ongeldig kolom INTENSITEIT - indien gevuld moet 1,2 of 3 zijn: [' || v_intensiteit || ']'
|| v_intensiteit;
-- Als de codering ingevuld is dan gaan we zelf op zoek naar de omschrijving.
IF v_intensiteit IS NOT NULL
THEN
IF fac.safe_to_number(v_intensiteit) IN (1, 2, 3)
THEN
CASE v_intensiteit
WHEN 1
THEN
v_intensiteit := '1 - Beginstadium';
WHEN 2
THEN
v_intensiteit := '2 - Gevorderd stadium';
WHEN 3
THEN
v_intensiteit := '3 - Eindstadium';
END CASE;
ELSE
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding,
v_errorhint || ' - Regel wordt overgeslagen');
v_ongeldig := 1;
END IF;
END IF;
--
v_errorhint :=
'Ongeldig kolom ASPECT1 (moet gevuld en maximaal 20 tekens zijn)';
v_aspect1 := get_aspect_value (v_aspect1);
IF (v_aspect1 IS NULL) OR (LENGTH (v_aspect1) > 20)
THEN
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding,
v_errorhint || ' - Regel wordt overgeslagen');
v_ongeldig := 1;
END IF;
--
v_errorhint :=
'Ongeldig kolom ASPECT2 (moet gevuld en maximaal 20 tekens zijn)';
v_aspect2 := get_aspect_value (v_aspect2);
IF (v_aspect2 IS NULL) OR (LENGTH (v_aspect2) > 20)
THEN
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding,
v_errorhint || ' - Regel wordt overgeslagen');
v_ongeldig := 1;
END IF;
--
v_errorhint :=
'Ongeldig kolom ASPECT3 (moet gevuld en maximaal 20 tekens zijn)';
v_aspect3 := get_aspect_value (v_aspect3);
IF (v_aspect3 IS NULL) OR (LENGTH (v_aspect3) > 20)
THEN
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding,
v_errorhint || ' - Regel wordt overgeslagen');
v_ongeldig := 1;
END IF;
--
v_errorhint :=
'Ongeldig kolom ASPECT4 (moet gevuld en maximaal 20 tekens zijn)';
v_aspect4 := get_aspect_value (v_aspect4);
IF (v_aspect4 IS NULL) OR (LENGTH (v_aspect4) > 20)
THEN
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding,
v_errorhint || ' - Regel wordt overgeslagen');
v_ongeldig := 1;
END IF;
--
v_errorhint :=
'Ongeldig kolom ASPECT5 (moet gevuld en maximaal 20 tekens zijn)';
v_aspect5 := get_aspect_value (v_aspect5);
IF (v_aspect5 IS NULL) OR (LENGTH (v_aspect5) > 20)
THEN
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding,
v_errorhint || ' - Regel wordt overgeslagen');
v_ongeldig := 1;
END IF;
--
v_errorhint :=
'Ongeldig kolom ASPECT6 (moet gevuld en maximaal 20 tekens zijn)';
v_aspect6 := get_aspect_value (v_aspect6);
IF (v_aspect6 IS NULL) OR (LENGTH (v_aspect6) > 20)
THEN
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding,
v_errorhint || ' - Regel wordt overgeslagen');
v_ongeldig := 1;
END IF;
--
v_errorhint :=
'Ongeldig kolom ASPECT7 (moet gevuld en maximaal 20 tekens zijn)';
v_aspect7 := get_aspect_value (v_aspect7);
IF (v_aspect7 IS NULL) OR (LENGTH (v_aspect7) > 20)
THEN
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding,
v_errorhint || ' - Regel wordt overgeslagen');
v_ongeldig := 1;
END IF;
--
v_errorhint :=
'Ongeldig kolom OPMERKING (mag maximaal 2000 tekens zijn)';
IF (LENGTH (v_mld_melding_omschrijving) > 2000)
THEN
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding,
v_errorhint
|| ' - Opmerking wordt afgekapt op 2000 tekens');
v_mld_melding_omschrijving :=
SUBSTR (v_mld_melding_omschrijving, 1, 2000);
END IF;
--
v_errorhint :=
'Ongeldig kolom INSPECTEUR (moet ingevuld en mag maximaal 200 tekens zijn) [' || v_prs_perslid_email || ']';
IF (v_prs_perslid_email IS NULL)
OR (LENGTH (v_prs_perslid_email) > 200)
THEN
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding,
v_errorhint || ' - Regel wordt overgeslagen');
v_ongeldig := 1;
END IF;
--
v_errorhint :=
'Ongeldig kolom BEHANDELAAR (indien ingevuld mag het maximaal 200 tekens zijn) [' || v_behandelaar_email || ']';
IF LENGTH (v_behandelaar_email) > 200
THEN
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding,
v_errorhint || ' - Regel wordt overgeslagen');
v_ongeldig := 1;
END IF;
--
v_errorhint :=
'Ongeldig kolom FOTO (mag maximaal 50 tekens zijn) [' || v_foto || ']';
IF (LENGTH (v_foto) > 50)
THEN
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding,
v_errorhint || ' - Foto wordt overgeslagen');
v_foto := NULL;
END IF;
--
v_kosten := REPLACE (v_kosten, ',', '.');
v_errorhint :=
'Ongeldig kolom KOSTEN (indien gevuld dan een cijfer met max 2 decimalen)';
IF (v_kosten IS NOT NULL)
AND (fac.safe_to_number (v_kosten) IS NULL)
THEN
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding,
v_errorhint || ' - Regel wordt overgeslagen');
v_ongeldig := 1;
END IF;
v_errorhint := 'Ongeldig kolom DATUM GEPLAND (indien gevuld dan met geldige datum in formaat dd-mm-jjjj zijn) [' || v_plandatum || ']';
IF v_plandatum IS NOT NULL AND fac.safe_to_date (v_plandatum, 'dd-mm-yyyy') IS NULL
THEN
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding,
v_errorhint || ' - Regel wordt overgeslagen');
v_ongeldig := 1;
END IF;
-- Onderstaande doen we in UPDATE...
v_errorhint := 'Bepaal of er al een lopende gebreks-melding is';
v_meldingnr := NULL ;
IF v_ongeldig_object = 0 AND v_ongeldig_gebrek = 0 AND v_ongeldig = 0
THEN
SELECT MAX (m.mld_melding_key)
INTO v_meldingnr
FROM mld_melding m,
mld_stdmelding sm,
mld_melding_object mo,
ins_deel d
WHERE m.mld_melding_key = mo.mld_melding_key
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
AND UPPER (sm.mld_stdmelding_code) = UPPER (v_gebrekcode)
AND mo.ins_deel_key = d.ins_deel_key
AND UPPER (d.ins_deel_omschrijving) = UPPER (v_ins_deel_omschrijving)
AND m.mld_melding_status IN (0,2,3,4,7,99) ; -- Lopend
END IF;
-- Als het GEEN bestaande melding is, dan zijn intensiteit en omvang verplicht en plandatum en meldingsdatum
IF v_meldingnr IS NULL AND v_ongeldig = 0
THEN
v_errorhint :=
'Betreft nieuwe melding - Kolom OMVANG is leeg en moet gevuld zijn (met 1,2,3,4 of 5 zijn)';
IF v_omvang IS NULL AND UPPER(v_gebrekcode) <> 'GEEN'
THEN
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding,
v_errorhint || ' - Regel wordt overgeslagen');
v_ongeldig := 1;
END IF;
v_errorhint :=
'Betreft nieuwe melding - Kolom INTENSITEIT is leeg en moet gevuld zijn (met 1,2,3 zijn)';
IF v_intensiteit IS NULL AND UPPER(v_gebrekcode) <> 'GEEN'
THEN
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding,
v_errorhint || ' - Regel wordt overgeslagen');
v_ongeldig := 1;
END IF;
v_errorhint :=
'Betreft nieuwe melding - Kolom DATUM is leeg en moet gevuld zijn met datum';
IF v_mld_melding_datum IS NULL
THEN
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding,
v_errorhint || ' - Regel wordt overgeslagen');
v_ongeldig := 1;
END IF;
v_errorhint :=
'Betreft nieuwe melding - Kolom DATUM GEPLAND is leeg en moet gevuld zijn met datum';
IF v_plandatum IS NULL AND UPPER(v_gebrekcode) <> 'GEEN'
THEN
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding,
v_errorhint || ' - Regel wordt overgeslagen');
v_ongeldig := 1;
END IF;
END IF;
-- Geen fouten, we gaan tussentabel vullen
IF (v_ongeldig = 0)
THEN
BEGIN
v_errorhint :=
'Fout bij toevoegen regel aan importtabel cnd_imp_nen2767_results';
INSERT INTO cnd_imp_nen2767_results (
fac_import_key,
-- alg_gebouw_code,
ins_deel_omschrijving,
mld_melding_datum,
mld_melding_omschrijving,
prs_perslid_email,
gebrekcode,
-- ernst,
omvang,
intensiteit,
aspect1,
aspect2,
aspect3,
aspect4,
aspect5,
aspect6,
aspect7,
kosten,
plandatum,
foto,
-- condscore,
-- prioscore,
flex1,
flex2,
flex3,
flex4,
flex5,
flex6,
flex7,
flex8,
flex9,
flex10)
VALUES (p_import_key,
v_ins_deel_omschrijving,
v_mld_melding_datum,
v_mld_melding_omschrijving,
v_prs_perslid_email,
v_gebrekcode,
v_omvang,
v_intensiteit,
DECODE(v_meldingnr, NULL, DECODE(v_aspect1,'0 - NVT','NVT',v_aspect1),v_aspect1), -- Correctie aspectwaarde: Voor de nieuwe meldingen die gevuld zijn met waarde 0 moeten ook netjes op NVT komen
DECODE(v_meldingnr, NULL, DECODE(v_aspect2,'0 - NVT','NVT',v_aspect2),v_aspect2),
DECODE(v_meldingnr, NULL, DECODE(v_aspect3,'0 - NVT','NVT',v_aspect3),v_aspect3),
DECODE(v_meldingnr, NULL, DECODE(v_aspect4,'0 - NVT','NVT',v_aspect4),v_aspect4),
DECODE(v_meldingnr, NULL, DECODE(v_aspect5,'0 - NVT','NVT',v_aspect5),v_aspect5),
DECODE(v_meldingnr, NULL, DECODE(v_aspect6,'0 - NVT','NVT',v_aspect6),v_aspect6),
DECODE(v_meldingnr, NULL, DECODE(v_aspect7,'0 - NVT','NVT',v_aspect7),v_aspect7),
v_kosten,
fac.safe_to_date (v_plandatum, 'dd-mm-yyyy'),
v_foto,
DECODE (v_mld_srtkenmerk_key1,
NULL, v_mld_kenmerkwaarde1,
TO_CHAR (v_mld_srtkenmerk_key1)
|| '='
|| SUBSTR (v_mld_kenmerkwaarde1, 1, 3900)
),
DECODE (v_mld_srtkenmerk_key2,
NULL, v_mld_kenmerkwaarde2,
TO_CHAR (v_mld_srtkenmerk_key2)
|| '='
|| SUBSTR (v_mld_kenmerkwaarde2, 1, 3900)
),
DECODE (v_mld_srtkenmerk_key3,
NULL, v_mld_kenmerkwaarde3,
TO_CHAR (v_mld_srtkenmerk_key3)
|| '='
|| SUBSTR (v_mld_kenmerkwaarde3, 1, 3900)
),
DECODE (v_mld_srtkenmerk_key4,
NULL, v_mld_kenmerkwaarde4,
TO_CHAR (v_mld_srtkenmerk_key4)
|| '='
|| SUBSTR (v_mld_kenmerkwaarde4, 1, 3900)
),
DECODE (v_mld_srtkenmerk_key5,
NULL, v_mld_kenmerkwaarde5,
TO_CHAR (v_mld_srtkenmerk_key5)
|| '='
|| SUBSTR (v_mld_kenmerkwaarde5, 1, 3900)
),
DECODE (v_mld_srtkenmerk_key6,
NULL, v_mld_kenmerkwaarde6,
TO_CHAR (v_mld_srtkenmerk_key6)
|| '='
|| SUBSTR (v_mld_kenmerkwaarde6, 1, 3900)
),
DECODE (v_mld_srtkenmerk_key7,
NULL, v_mld_kenmerkwaarde7,
TO_CHAR (v_mld_srtkenmerk_key7)
|| '='
|| SUBSTR (v_mld_kenmerkwaarde7, 1, 3900)
),
DECODE (v_mld_srtkenmerk_key8,
NULL, v_mld_kenmerkwaarde8,
TO_CHAR (v_mld_srtkenmerk_key8)
|| '='
|| SUBSTR (v_mld_kenmerkwaarde8, 1, 3900)
),
v_behandelaar_email,
v_meldingnr
);
v_count_import := v_count_import + 1;
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg :=
v_errorhint
|| ' ORACLE (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.imp_writelog (
p_import_key,
'E',
v_aanduiding || v_errormsg,
'Ingelezen regel kan niet worden weggeschreven!');
COMMIT;
END;
END IF;
END IF;
END;
END LOOP;
-- Aantal nieuwe meldingen
SELECT count(*)
INTO v_count_import_n
FROM cnd_imp_nen2767_results
WHERE fac_import_key = p_import_key AND flex10 IS NULL ;
IF (header_is_valid = 0)
THEN
fac.imp_writelog (
p_import_key,
'E',
'Ongeldig importbestand',
'Geen header of header niet volgens specificatie: <zie specs-documentatie>');
ELSE
fac.imp_writelog (
p_import_key,
'S',
'IMPORT NEN2767 RESULTS: aantal ingelezen regels: '
|| TO_CHAR (v_count_tot)
|| ' / aantal geldige regels: '
|| TO_CHAR (v_count_import)
|| ' / waarvan nieuwe melding(en): '
|| TO_CHAR (v_count_import_n),
'');
END IF;
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg := 'Error ' || oracle_err_num || '/' || oracle_err_mes;
fac.imp_writelog (p_import_key,
'E',
v_errormsg,
v_errorhint || ' regel[' || v_regel || ']');
END aaxx_import_nen2767_assetman;
/
CREATE OR REPLACE PROCEDURE aaxx_update_nen2767_assetman (
p_import_key IN NUMBER)
IS
CURSOR c_nieuw
IS
SELECT *
FROM cnd_imp_nen2767_results
WHERE fac_import_key = p_import_key AND flex10 IS NULL ;
CURSOR c_bestaand
IS
SELECT *
FROM cnd_imp_nen2767_results
WHERE fac_import_key = p_import_key AND flex10 IS NOT NULL ;
v_aanduiding VARCHAR2 (1000);
v_errorhint VARCHAR2 (1000);
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_count_tot NUMBER (10);
v_count_tot_n NUMBER (10);
v_count_import NUMBER (10);
v_mld_melding_key NUMBER (10);
v_alg_gebouw_key NUMBER (10);
v_ins_deel_key NUMBER (10);
v_alg_ruimte_key NUMBER (10);
v_prs_perslid_key NUMBER (10);
v_prs_behandelaar_key NUMBER (10);
v_mld_stdmelding_key NUMBER (10);
v_ernst_kenmerk_key NUMBER (10);
v_ernst_key NUMBER (10);
v_omvang_kenmerk_key NUMBER (10);
v_omvang_key NUMBER (10);
v_intensiteit_kenmerk_key NUMBER (10);
v_intensiteit_key NUMBER (10);
v_foto_kenmerk_key NUMBER (10);
v_kosten_kenmerk_key NUMBER (10) := NULL;
v_kosten_srtkenmerk_key NUMBER (10);
v_ernst_srtkenmerk_key NUMBER (10);
v_omvang_srtkenmerk_key NUMBER (10);
v_intensiteit_srtkenmerk_key NUMBER (10);
v_mld_melding_omschrijving VARCHAR2 (4000);
v_omvang VARCHAR2 (1000);
v_intensiteit VARCHAR2 (1000);
v_aspect1 VARCHAR2 (1000);
v_aspect2 VARCHAR2 (1000);
v_aspect3 VARCHAR2 (1000);
v_aspect4 VARCHAR2 (1000);
v_aspect5 VARCHAR2 (1000);
v_aspect6 VARCHAR2 (1000);
v_aspect7 VARCHAR2 (1000);
v_inspecteur VARCHAR2 (1000);
v_behandelaar VARCHAR2 (1000);
v_foto VARCHAR2 (1000);
v_kosten VARCHAR2 (1000);
v_plandatum_date DATE;
v_dienst VARCHAR2 (1000);
v_taakgroep VARCHAR2 (1000);
v_datumgereedinspecteur VARCHAR2 (1000);
v_geadviseerdstartjaar VARCHAR2 (1000);
v_flex1_kenmerk_key NUMBER (10);
v_flex2_kenmerk_key NUMBER (10);
v_flex3_kenmerk_key NUMBER (10);
v_flex4_kenmerk_key NUMBER (10);
v_flex5_kenmerk_key NUMBER (10);
v_flex6_kenmerk_key NUMBER (10);
v_flex7_kenmerk_key NUMBER (10);
v_flex8_kenmerk_key NUMBER (10);
v_flex1_waarde VARCHAR2 (1000);
v_flex1_waarde_key NUMBER (10);
v_flex2_waarde VARCHAR2 (1000);
v_flex2_waarde_key NUMBER (10);
v_flex3_waarde VARCHAR2 (1000);
v_flex4_waarde VARCHAR2 (1000);
v_conditiescore NUMBER (10) ;
v_prioscore NUMBER (10) ;
v_herberekenen NUMBER (1) :=0;
v_melding_GV_aantal NUMBER(10);
v_melding_GV VARCHAR2 (1000);
v_mld_melding_status NUMBER(10);
PROCEDURE set_aspect (p_aspect IN VARCHAR2,
p_aspect_waarde IN VARCHAR2,
p_mld_melding_key IN NUMBER)
IS
v_key NUMBER (10);
v_kenmerk_key NUMBER (10);
v_srtkenmerk_key NUMBER (10);
BEGIN
SELECT MAX (mld_srtkenmerk_key)
INTO v_srtkenmerk_key
FROM mld_srtkenmerk
WHERE mld_srtkenmerk_code = p_aspect;
IF v_srtkenmerk_key IS NOT NULL
THEN
v_errorhint :=
p_aspect
|| ' (eigen tabel) niet gevonden (bestaat niet), regel wordt overgeslagen';
SELECT ud.fac_usrdata_key, k.mld_kenmerk_key
INTO v_key, v_kenmerk_key
FROM mld_srtkenmerk sk,
fac_kenmerkdomein kd,
fac_usrtab ut,
fac_usrdata ud,
mld_kenmerk k
WHERE sk.mld_srtkenmerk_key = v_srtkenmerk_key
AND kd.fac_kenmerkdomein_key = sk.fac_kenmerkdomein_key
AND ut.fac_usrtab_key = kd.fac_usrtab_key
AND ud.fac_usrtab_key = kd.fac_usrtab_key
AND ud.fac_usrdata_upper = UPPER (p_aspect_waarde)
AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key;
mld.upsertmeldingkenmerk (v_kenmerk_key,
p_mld_melding_key,
v_key);
END IF;
END;
-- SUBPROC
-- Voor vullen van de optionele kenmerkvelden 1 t/m 10
-- p_srtkenmerkgroepwaarde = '234|1=37-ZB-DR'. Ofwel: srtkenmerk_key|groep=waarde
PROCEDURE insert_mldkenmerk (p_mld_melding_key IN NUMBER,
p_srtkenmerkgroepwaarde IN VARCHAR2)
AS
v_kenmerk_key NUMBER;
v_srtkenmerk_key NUMBER;
v_groep NUMBER;
v_waarde VARCHAR(4000);
v_srtkenmerk_type VARCHAR2 (1);
ccount NUMBER;
v_objectnaam VARCHAR2 (30);
v_kolomnaam VARCHAR2 (30);
v_kolomtxt VARCHAR2 (30);
sql_stmt VARCHAR2 (1000);
v_kenmerkdeel_key NUMBER;
l_cursor_1 INTEGER;
l_rowsprocessed NUMBER DEFAULT 0;
BEGIN
IF p_srtkenmerkgroepwaarde IS NOT NULL
THEN
v_errormsg := 'Fout bij bepalen kenmerk van soort [' || p_srtkenmerkgroepwaarde || ']';
v_srtkenmerk_key := fac.safe_to_number (
SUBSTR (p_srtkenmerkgroepwaarde, 1, INSTR (p_srtkenmerkgroepwaarde, '|') - 1));
v_groep := fac.safe_to_number (
SUBSTR (p_srtkenmerkgroepwaarde,
INSTR (p_srtkenmerkgroepwaarde, '|') + 1,
INSTR (p_srtkenmerkgroepwaarde, '=') - 1 - INSTR (p_srtkenmerkgroepwaarde, '|')));
v_waarde := SUBSTR (p_srtkenmerkgroepwaarde, INSTR (p_srtkenmerkgroepwaarde, '=') + 1);
-- Niveau en mld_kenmerk_key bepalen vanuit de ingelezen gebreksmelding
SELECT mk.mld_kenmerk_key, msk.mld_srtkenmerk_kenmerktype
INTO v_kenmerk_key, v_srtkenmerk_type
FROM mld_kenmerk mk, mld_srtkenmerk msk, mld_melding m, mld_stdmelding sm, mld_discipline d, ins_srtdiscipline t
WHERE mk.mld_srtkenmerk_key = v_srtkenmerk_key
AND mk.mld_kenmerk_groep = v_groep
AND mk.mld_srtkenmerk_key = msk.mld_srtkenmerk_key
AND m.mld_melding_key = p_mld_melding_key
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
AND sm.mld_ins_discipline_key = d.ins_discipline_key
AND d.ins_srtdiscipline_key = t.ins_srtdiscipline_key AND t.ins_srtdiscipline_module = 'MLD'
AND (
(mk.mld_stdmelding_key = sm.mld_stdmelding_key and mk.mld_kenmerk_niveau = 'S')
OR
(mk.mld_stdmelding_key = d.ins_discipline_key and mk.mld_kenmerk_niveau = 'D')
OR
(mk.mld_stdmelding_key = t.ins_srtdiscipline_key and mk.mld_kenmerk_niveau = 'T')
) ;
IF v_waarde IS NOT NULL
THEN
IF v_srtkenmerk_type IN ('R', 'S')
THEN
v_errormsg := 'Fout bij bepalen eigen tabel';
SELECT COUNT ( * )
INTO ccount
FROM mld_srtkenmerk sk, fac_kenmerkdomein d
WHERE sk.mld_srtkenmerk_key = v_srtkenmerk_key
AND sk.fac_kenmerkdomein_key = d.fac_kenmerkdomein_key
AND d.fac_usrtab_key IS NOT NULL;
v_errormsg := 'Fout bij bepalen nieuwe waarde [' || v_waarde || ']';
IF ccount = 1
THEN -- Eigen tabel
SELECT TO_CHAR (ud.fac_usrdata_key)
INTO v_waarde
FROM mld_srtkenmerk sk, fac_kenmerkdomein d, fac_v_aanwezigusrdata ud
WHERE sk.mld_srtkenmerk_key = v_srtkenmerk_key
AND sk.fac_kenmerkdomein_key = d.fac_kenmerkdomein_key
AND d.fac_usrtab_key = ud.fac_usrtab_key
AND UPPER (TRIM (ud.fac_usrdata_omschr)) = UPPER (v_waarde);
ELSE -- FACILITOR view/tabel
SELECT d.fac_kenmerkdomein_objectnaam,
d.fac_kenmerkdomein_kolomnaam,
d.fac_kenmerkdomein_kolomtxt
INTO v_objectnaam, v_kolomnaam, v_kolomtxt
FROM mld_srtkenmerk sk, fac_kenmerkdomein d
WHERE sk.mld_srtkenmerk_key = v_srtkenmerk_key
AND sk.fac_kenmerkdomein_key = d.fac_kenmerkdomein_key
AND d.fac_usrtab_key IS NULL;
sql_stmt :=
'SELECT MAX ('
|| v_kolomnaam
|| ') FROM '
|| v_objectnaam
|| ' WHERE UPPER (TRIM ('
|| v_kolomtxt
|| ')) = UPPER (:pwaarde)';
l_cursor_1 := DBMS_SQL.open_cursor;
DBMS_SQL.parse (l_cursor_1, sql_stmt, DBMS_SQL.native);
DBMS_SQL.BIND_VARIABLE(l_cursor_1,':pwaarde', v_waarde);
DBMS_SQL.define_column(l_cursor_1, 1, v_waarde, 255);
l_rowsprocessed := DBMS_SQL.execute_and_fetch (l_cursor_1);
DBMS_SQL.column_value (l_cursor_1, 1, v_waarde);
DBMS_SQL.close_cursor(l_cursor_1);
END IF;
ELSE -- C(Karakter)/D(Datum)/N(Numeriek)/X(Bestandsnaam)
NULL; -- v_waarde := p_waarde;
END IF;
IF v_srtkenmerk_type = 'N' -- Alleen voor numerieke waarden de decimale komma vervangen door punt.
THEN
v_waarde := REPLACE (v_waarde, ',', '.');
END IF;
v_errormsg := 'Fout bij toevoegen waarde [' || v_waarde || ']';
INSERT INTO mld_kenmerkmelding (mld_melding_key, mld_kenmerk_key, mld_kenmerkmelding_waarde)
VALUES (p_mld_melding_key, v_kenmerk_key, v_waarde);
ELSE
NULL;
END IF;
END IF;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg :=
v_errormsg || ' (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key,
'W',
v_aanduiding || v_errormsg,
'insert_mldkenmerk');
END;
BEGIN
v_count_tot := 0;
v_count_tot_n := 0;
v_count_import := 0;
v_errorhint :=
'Ernst kenmerk bij gebreken niet gevonden (bestaat niet), import wordt niet uitgevoerd';
SELECT mld_srtkenmerk_key
INTO v_ernst_srtkenmerk_key
FROM mld_srtkenmerk
WHERE mld_srtkenmerk_code = 'ERNST';
v_errorhint :=
'Omvang kenmerk bij gebreken niet gevonden (bestaat niet), import wordt niet uitgevoerd';
SELECT mld_srtkenmerk_key
INTO v_omvang_srtkenmerk_key
FROM mld_srtkenmerk
WHERE mld_srtkenmerk_code = 'OMVANG';
v_errorhint :=
'Intensiteit kenmerk bij gebreken niet gevonden (bestaat niet), import wordt niet uitgevoerd';
SELECT mld_srtkenmerk_key
INTO v_intensiteit_srtkenmerk_key
FROM mld_srtkenmerk
WHERE mld_srtkenmerk_code = 'INTENSITEIT';
v_errorhint :=
'Fout bij bepalen kenmerk foto-bestand';
SELECT max(k.mld_kenmerk_key)
INTO v_foto_kenmerk_key
FROM mld_kenmerk k, mld_srtkenmerk sk
WHERE k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
AND k.mld_kenmerk_niveau = 'T'
AND k.mld_stdmelding_key = fac.getsetting ('cnd_gebreken_srtdisc_key')
AND sk.mld_srtkenmerk_upper = 'FOTONAAM' ;
v_errorhint :=
'Kosten kenmerk bij gebreken niet gevonden (bestaat niet), import wordt niet uitgevoerd';
SELECT MAX (mld_srtkenmerk_key)
INTO v_kosten_srtkenmerk_key
FROM mld_srtkenmerk
WHERE mld_srtkenmerk_code = 'KOSTEN';
IF v_kosten_srtkenmerk_key IS NOT NULL
THEN
SELECT mld_kenmerk_key
INTO v_kosten_kenmerk_key
FROM mld_kenmerk
WHERE mld_srtkenmerk_key = v_kosten_srtkenmerk_key;
END IF;
FOR rec IN c_nieuw
LOOP
BEGIN
v_count_tot := v_count_tot + 1;
v_aanduiding :=
'['
|| rec.alg_gebouw_code
|| '-'
|| rec.ins_deel_omschrijving
|| '-'
|| rec.gebrekcode
|| '] ';
v_errorhint :=
'Gebouwcode niet gevonden (bestaat niet), regel wordt overgeslagen';
v_alg_gebouw_key := -1;
IF rec.alg_gebouw_code IS NOT NULL
THEN
SELECT alg_gebouw_key
INTO v_alg_gebouw_key
FROM alg_v_aanweziggebouw
WHERE alg_gebouw_upper = UPPER (rec.alg_gebouw_code);
END IF;
v_errorhint :=
'Element (object) niet gevonden (bestaat niet bij gebouw), regel wordt overgeslagen';
-- Uitgangspunt hierbij is dat objectnaam uniek is per gebouw, op zich mag in Facilitor de objectnaam per objectsoort per locatie uniek zijn.
SELECT ins_deel_key, r.alg_ruimte_key
INTO v_ins_deel_key, v_alg_ruimte_key
FROM ins_v_aanwezigdeel, alg_ruimte r, alg_verdieping v
WHERE ins_deel_upper = UPPER (rec.ins_deel_omschrijving)
AND ins_alg_ruimte_key = r.alg_ruimte_key
AND r.alg_verdieping_key = v.alg_verdieping_key
AND ( v_alg_gebouw_key = -1
OR v.alg_gebouw_key = v_alg_gebouw_key)
AND ins_alg_ruimte_type = 'R';
v_errorhint :=
'Mailadres van inspecteur (persoon) niet gevonden (bestaat niet), regel wordt overgeslagen';
SELECT prs_perslid_key
INTO v_prs_perslid_key
FROM prs_v_aanwezigperslid
WHERE UPPER (prs_perslid_email) = UPPER (rec.prs_perslid_email);
v_errorhint :=
'Mailadres van behandelaar (persoon) niet gevonden (bestaat niet), regel wordt overgeslagen';
IF rec.flex9 IS NOT NULL
THEN
SELECT prs_perslid_key
INTO v_prs_behandelaar_key
FROM prs_v_aanwezigperslid
WHERE UPPER (prs_perslid_email) = UPPER (rec.flex9);
ELSE
v_prs_behandelaar_key := NULL ;
END IF;
v_errorhint :=
'Gebrek (melding) niet gevonden (bestaat niet), regel wordt overgeslagen';
SELECT sm.mld_stdmelding_key
INTO v_mld_stdmelding_key
FROM mld_stdmelding sm
WHERE UPPER(mld_stdmelding_code) = UPPER (rec.gebrekcode);
IF UPPER(rec.gebrekcode) = 'GEEN'
THEN
v_errorhint :=
'Geen Gebrek melding. Ernst, Omvang en Intensiteit worden overgeslagen';
ELSE
v_errorhint :=
'Ernst (eigen tabel) niet gevonden (bestaat niet), regel wordt overgeslagen';
-- We vullen de ERNST altijd met de default-waarde bij kenmerk_key
SELECT ud.fac_usrdata_key, k.mld_kenmerk_key
INTO v_ernst_key, v_ernst_kenmerk_key
FROM mld_srtkenmerk sk,
fac_kenmerkdomein kd,
fac_usrtab ut,
fac_usrdata ud,
mld_kenmerk k
WHERE sk.mld_srtkenmerk_key = v_ernst_srtkenmerk_key
AND kd.fac_kenmerkdomein_key = sk.fac_kenmerkdomein_key
AND ut.fac_usrtab_key = kd.fac_usrtab_key
AND ud.fac_usrtab_key = kd.fac_usrtab_key
AND ud.fac_usrdata_key = k.mld_kenmerk_default
AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
AND k.mld_stdmelding_key = v_mld_stdmelding_key
AND k.mld_kenmerk_niveau = 'S';
v_errorhint :=
'Omvang (eigen tabel) niet gevonden (bestaat niet), regel wordt overgeslagen';
SELECT ud.fac_usrdata_key, k.mld_kenmerk_key
INTO v_omvang_key, v_omvang_kenmerk_key
FROM mld_srtkenmerk sk,
fac_kenmerkdomein kd,
fac_usrtab ut,
fac_usrdata ud,
mld_kenmerk k
WHERE sk.mld_srtkenmerk_key = v_omvang_srtkenmerk_key
AND kd.fac_kenmerkdomein_key = sk.fac_kenmerkdomein_key
AND ut.fac_usrtab_key = kd.fac_usrtab_key
AND ud.fac_usrtab_key = kd.fac_usrtab_key
AND ud.fac_usrdata_upper = UPPER (rec.omvang)
AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
AND k.mld_stdmelding_key = v_mld_stdmelding_key
AND k.mld_kenmerk_niveau = 'S';
v_errorhint :=
'Intensiteit (eigen tabel) niet gevonden (bestaat niet), regel wordt overgeslagen';
SELECT ud.fac_usrdata_key, k.mld_kenmerk_key
INTO v_intensiteit_key, v_intensiteit_kenmerk_key
FROM mld_srtkenmerk sk,
fac_kenmerkdomein kd,
fac_usrtab ut,
fac_usrdata ud,
mld_kenmerk k
WHERE sk.mld_srtkenmerk_key = v_intensiteit_srtkenmerk_key
AND kd.fac_kenmerkdomein_key = sk.fac_kenmerkdomein_key
AND ut.fac_usrtab_key = kd.fac_usrtab_key
AND ud.fac_usrtab_key = kd.fac_usrtab_key
AND ud.fac_usrdata_upper = UPPER (rec.intensiteit)
AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
AND k.mld_stdmelding_key = v_mld_stdmelding_key
AND k.mld_kenmerk_niveau = 'S';
END IF;
v_errorhint :=
'Check of er voor GV-gebrek al een soortgelijk gebrek loopt';
v_melding_GV_aantal:=0;
IF INSTR (rec.gebrekcode, 'GV') > 0
THEN
SELECT COUNT (*)
INTO v_melding_GV_aantal
FROM mld_melding m,
mld_stdmelding sm,
mld_melding_object mo,
ins_deel d
WHERE m.mld_melding_key = mo.mld_melding_key
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
AND mo.ins_deel_key = d.ins_deel_key
-- AND UPPER (d.ins_deel_omschrijving) = UPPER (v_ins_deel_omschrijving) -- '0247.43-0016'
AND d.ins_deel_key = v_ins_deel_key
AND m.mld_melding_status IN (0,2,3,4,7,99)
AND INSTR (rec.gebrekcode, 'GV') > 0
AND UPPER (SUBSTR (sm.mld_stdmelding_code,1,INSTR (sm.mld_stdmelding_code, 'GV') + 1)) = UPPER (SUBSTR (rec.gebrekcode, 1, INSTR (rec.gebrekcode, 'GV') + 1))
AND sm.mld_stdmelding_code <> rec.gebrekcode;
IF v_melding_GV_aantal > 0
THEN
v_melding_GV := 'Bij invoer is/zijn er nog ' || TO_CHAR(v_melding_GV_aantal) || ' melding(en) op code ' || SUBSTR (rec.gebrekcode, 1, INSTR (rec.gebrekcode, 'GV') + 1) ;
END IF;
END IF;
v_errorhint :=
'Toevoegen melding';
INSERT INTO mld_melding (mld_melding_module,
mld_meldbron_key,
mld_melding_datum,
mld_melding_omschrijving,
mld_stdmelding_key,
mld_alg_onroerendgoed_keys,
mld_melding_einddatum,
prs_perslid_key,
prs_perslid_key_voor,
-- mld_melding_behandelaar_key,
mld_melding_status,
mld_melding_spoed)
VALUES (
'MLD',
6,
fac.safe_to_date (rec.mld_melding_datum, 'dd-mm-yyyy'),
CASE
WHEN v_melding_GV_aantal >0 THEN rec.mld_melding_omschrijving || CHR (13) || CHR (10) || 'LET OP!: ' || v_melding_GV
ELSE rec.mld_melding_omschrijving END,
v_mld_stdmelding_key,
v_alg_ruimte_key,
rec.plandatum,
v_prs_perslid_key,
v_prs_perslid_key,
-- v_prs_behandelaar_key,
NULL,
3)
RETURNING mld_melding_key
INTO v_mld_melding_key;
mld.setmeldingstatus(v_mld_melding_key, 2, v_prs_perslid_key, 0);
v_errorhint := 'Koppelen object';
INSERT INTO mld_melding_object (mld_melding_key, ins_deel_key)
VALUES (v_mld_melding_key, v_ins_deel_key);
IF UPPER(rec.gebrekcode) <> 'GEEN' THEN
v_errorhint := 'Toevoegen Ernst kenmerk';
mld.upsertmeldingkenmerk (v_ernst_kenmerk_key,
v_mld_melding_key,
v_ernst_key);
v_errorhint := 'Toevoegen Omvang kenmerk';
mld.upsertmeldingkenmerk (v_omvang_kenmerk_key,
v_mld_melding_key,
v_omvang_key);
v_errorhint := 'Toevoegen Intensiteit kenmerk';
mld.upsertmeldingkenmerk (v_intensiteit_kenmerk_key,
v_mld_melding_key,
v_intensiteit_key);
END IF;
set_aspect ('ASPECT1', rec.aspect1, v_mld_melding_key);
set_aspect ('ASPECT2', rec.aspect2, v_mld_melding_key);
set_aspect ('ASPECT3', rec.aspect3, v_mld_melding_key);
set_aspect ('ASPECT4', rec.aspect4, v_mld_melding_key);
set_aspect ('ASPECT5', rec.aspect5, v_mld_melding_key);
set_aspect ('ASPECT6', rec.aspect6, v_mld_melding_key);
set_aspect ('ASPECT7', rec.aspect7, v_mld_melding_key);
v_errorhint := 'Toevoegen Foto kenmerk';
IF rec.foto IS NOT NULL
THEN
mld.upsertmeldingkenmerk (v_foto_kenmerk_key,
v_mld_melding_key,
rec.foto);
END IF;
v_errorhint := 'Toevoegen Kosten kenmerk';
IF rec.kosten IS NOT NULL AND v_kosten_kenmerk_key IS NOT NULL
THEN
mld.upsertmeldingkenmerk (v_kosten_kenmerk_key,
v_mld_melding_key,
TO_CHAR(rec.kosten));
END IF;
-- Hier toevoegen insert_meldingskenmerken 1 t/m 10..
v_errorhint := 'Toevoegen kenmerk-velden ';
insert_mldkenmerk (v_mld_melding_key, rec.flex1);
insert_mldkenmerk (v_mld_melding_key, rec.flex2);
insert_mldkenmerk (v_mld_melding_key, rec.flex3);
insert_mldkenmerk (v_mld_melding_key, rec.flex4);
insert_mldkenmerk (v_mld_melding_key, rec.flex5);
insert_mldkenmerk (v_mld_melding_key, rec.flex6);
insert_mldkenmerk (v_mld_melding_key, rec.flex7);
insert_mldkenmerk (v_mld_melding_key, rec.flex8);
-- insert_mldkenmerk (v_mld_melding_key, rec.flex9);
-- insert_mldkenmerk (v_mld_melding_key, rec.flex10);
-- Bij direct accepteren moet ook de CND-berekening uitgevoerd worden
---- En indien meegegeven wordt ook de behandelaar op melding gezet.
v_errorhint := 'Meldingen direct accepteren ';
IF fac.getsetting('cnd_autoaccept') = 1
THEN
mld.setmeldingstatus(v_mld_melding_key, 4, v_prs_perslid_key, 0);
BEGIN
cnd.process_mjb_score_effects (v_mld_melding_key);
END;
COMMIT;
IF v_prs_behandelaar_key IS NOT NULL
THEN
UPDATE mld_melding
SET mld_melding_behandelaar_key = v_prs_behandelaar_key
WHERE mld_melding_key = v_mld_melding_key ;
/* -- Notificatie naar behandelaar
fac.putnotificationsrtprio (
NULL,
v_behandelaar_key,
'MLDBE2',
v_mld_melding_key,
'Melding '
|| N
|| v_mld_melding_key
|| ' is door de klant aangepast.',
2,
NULL,
NULL,
NULL,
2,
NULL); */
END IF;
END IF;
v_count_import := v_count_import + 1;
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg :=
'OTHERS (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.imp_writelog (p_import_key,
'E',
v_aanduiding || v_errormsg,
v_errorhint);
COMMIT;
END;
END LOOP;
FOR rec IN c_bestaand
LOOP
BEGIN
v_count_tot := v_count_tot + 1;
v_count_tot_n := v_count_tot_n + 1;
v_aanduiding :=
'['
|| rec.alg_gebouw_code
|| '-'
|| rec.ins_deel_omschrijving
|| '-'
|| rec.gebrekcode
|| '- lopende melding '
|| rec.flex10
|| '] ';
v_mld_melding_key := fac.safe_to_number(rec.flex10) ;
-- Gaan eerst alle waarden vullen uit de lopende melding
--
v_errorhint := 'Vullen huidige waarde OPMERKING van lopende melding';
v_mld_melding_omschrijving := '';
SELECT max(mld_melding_omschrijving)
INTO v_mld_melding_omschrijving
FROM mld_melding
WHERE mld_melding_key = v_mld_melding_key ;
--
v_errorhint := 'Vullen huidige waarde OMVANG van lopende melding';
v_omvang := '';
SELECT ud.fac_usrdata_omschr, k.mld_kenmerk_key
INTO v_omvang, v_omvang_kenmerk_key
FROM mld_srtkenmerk sk,
fac_kenmerkdomein kd,
fac_usrtab ut,
fac_usrdata ud,
mld_kenmerk k,
mld_kenmerkmelding km
WHERE sk.mld_srtkenmerk_key = v_omvang_srtkenmerk_key
AND kd.fac_kenmerkdomein_key = sk.fac_kenmerkdomein_key
AND ut.fac_usrtab_key = kd.fac_usrtab_key
AND ud.fac_usrtab_key = kd.fac_usrtab_key
AND ud.fac_usrdata_key = fac.safe_to_number(km.mld_kenmerkmelding_waarde)
AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
AND km.mld_kenmerk_key = k.mld_kenmerk_key
AND km.mld_melding_key = v_mld_melding_key
AND k.mld_kenmerk_niveau = 'S';
v_errorhint :=
'Omvang (eigen tabel) niet gevonden (bestaat niet), regel wordt overgeslagen';
SELECT ud.fac_usrdata_key
INTO v_omvang_key
FROM mld_srtkenmerk sk,
fac_kenmerkdomein kd,
fac_usrtab ut,
fac_usrdata ud,
mld_kenmerk k,
mld_kenmerkmelding km
WHERE sk.mld_srtkenmerk_key = v_omvang_srtkenmerk_key
AND kd.fac_kenmerkdomein_key = sk.fac_kenmerkdomein_key
AND ut.fac_usrtab_key = kd.fac_usrtab_key
AND ud.fac_usrtab_key = kd.fac_usrtab_key
AND ud.fac_usrdata_upper = UPPER (v_omvang)
AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
AND km.mld_kenmerk_key = k.mld_kenmerk_key
AND km.mld_melding_key = v_mld_melding_key
AND k.mld_kenmerk_niveau = 'S';
--
v_errorhint := 'Vullen huidige waarde INTENSITEIT van lopende melding';
v_intensiteit := '';
SELECT ud.fac_usrdata_omschr, k.mld_kenmerk_key
INTO v_intensiteit, v_intensiteit_kenmerk_key
FROM mld_srtkenmerk sk,
fac_kenmerkdomein kd,
fac_usrtab ut,
fac_usrdata ud,
mld_kenmerk k,
mld_kenmerkmelding km
WHERE sk.mld_srtkenmerk_key = v_intensiteit_srtkenmerk_key
AND kd.fac_kenmerkdomein_key = sk.fac_kenmerkdomein_key
AND ut.fac_usrtab_key = kd.fac_usrtab_key
AND ud.fac_usrtab_key = kd.fac_usrtab_key
AND ud.fac_usrdata_key = fac.safe_to_number(km.mld_kenmerkmelding_waarde)
AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
AND km.mld_kenmerk_key = k.mld_kenmerk_key
AND km.mld_melding_key = v_mld_melding_key
AND k.mld_kenmerk_niveau = 'S';
v_errorhint := 'Intensiteit (eigen tabel) niet gevonden (bestaat niet), regel wordt overgeslagen';
SELECT ud.fac_usrdata_key
INTO v_intensiteit_key
FROM mld_srtkenmerk sk,
fac_kenmerkdomein kd,
fac_usrtab ut,
fac_usrdata ud,
mld_kenmerk k,
mld_kenmerkmelding km
WHERE sk.mld_srtkenmerk_key = v_intensiteit_srtkenmerk_key
AND kd.fac_kenmerkdomein_key = sk.fac_kenmerkdomein_key
AND ut.fac_usrtab_key = kd.fac_usrtab_key
AND ud.fac_usrtab_key = kd.fac_usrtab_key
AND ud.fac_usrdata_upper = UPPER (v_intensiteit)
AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
AND km.mld_kenmerk_key = k.mld_kenmerk_key
AND km.mld_melding_key = v_mld_melding_key
AND k.mld_kenmerk_niveau = 'S';
--
v_errorhint := 'Vullen huidige waarde ASPECT1 van lopende melding';
v_aspect1 := '';
SELECT ud.fac_usrdata_omschr
INTO v_aspect1
FROM mld_srtkenmerk sk,
fac_kenmerkdomein kd,
fac_usrtab ut,
fac_usrdata ud,
mld_kenmerk k,
mld_kenmerkmelding km
WHERE sk.mld_srtkenmerk_code = 'ASPECT1'
AND kd.fac_kenmerkdomein_key = sk.fac_kenmerkdomein_key
AND ut.fac_usrtab_key = kd.fac_usrtab_key
AND ud.fac_usrtab_key = kd.fac_usrtab_key
AND ud.fac_usrdata_key = fac.safe_to_number(km.mld_kenmerkmelding_waarde)
AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
AND km.mld_kenmerk_key = k.mld_kenmerk_key
AND km.mld_melding_key = v_mld_melding_key
AND k.mld_kenmerk_niveau = 'T';
--
v_errorhint := 'Vullen huidige waarde ASPECT2 van lopende melding';
v_aspect2 := '';
SELECT ud.fac_usrdata_omschr
INTO v_aspect2
FROM mld_srtkenmerk sk,
fac_kenmerkdomein kd,
fac_usrtab ut,
fac_usrdata ud,
mld_kenmerk k,
mld_kenmerkmelding km
WHERE sk.mld_srtkenmerk_code = 'ASPECT2'
AND kd.fac_kenmerkdomein_key = sk.fac_kenmerkdomein_key
AND ut.fac_usrtab_key = kd.fac_usrtab_key
AND ud.fac_usrtab_key = kd.fac_usrtab_key
AND ud.fac_usrdata_key = fac.safe_to_number(km.mld_kenmerkmelding_waarde)
AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
AND km.mld_kenmerk_key = k.mld_kenmerk_key
AND km.mld_melding_key = v_mld_melding_key
AND k.mld_kenmerk_niveau = 'T';
--
v_errorhint := 'Vullen huidige waarde ASPECT3 van lopende melding';
v_aspect3 := '';
SELECT ud.fac_usrdata_omschr
INTO v_aspect3
FROM mld_srtkenmerk sk,
fac_kenmerkdomein kd,
fac_usrtab ut,
fac_usrdata ud,
mld_kenmerk k,
mld_kenmerkmelding km
WHERE sk.mld_srtkenmerk_code = 'ASPECT3'
AND kd.fac_kenmerkdomein_key = sk.fac_kenmerkdomein_key
AND ut.fac_usrtab_key = kd.fac_usrtab_key
AND ud.fac_usrtab_key = kd.fac_usrtab_key
AND ud.fac_usrdata_key = fac.safe_to_number(km.mld_kenmerkmelding_waarde)
AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
AND km.mld_kenmerk_key = k.mld_kenmerk_key
AND km.mld_melding_key = v_mld_melding_key
AND k.mld_kenmerk_niveau = 'T';
--
v_errorhint := 'Vullen huidige waarde ASPECT4 van lopende melding';
v_aspect4 := '';
SELECT ud.fac_usrdata_omschr
INTO v_aspect4
FROM mld_srtkenmerk sk,
fac_kenmerkdomein kd,
fac_usrtab ut,
fac_usrdata ud,
mld_kenmerk k,
mld_kenmerkmelding km
WHERE sk.mld_srtkenmerk_code = 'ASPECT4'
AND kd.fac_kenmerkdomein_key = sk.fac_kenmerkdomein_key
AND ut.fac_usrtab_key = kd.fac_usrtab_key
AND ud.fac_usrtab_key = kd.fac_usrtab_key
AND ud.fac_usrdata_key = fac.safe_to_number(km.mld_kenmerkmelding_waarde)
AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
AND km.mld_kenmerk_key = k.mld_kenmerk_key
AND km.mld_melding_key = v_mld_melding_key
AND k.mld_kenmerk_niveau = 'T';
--
v_errorhint := 'Vullen huidige waarde ASPECT5 van lopende melding';
v_aspect5 := '';
SELECT ud.fac_usrdata_omschr
INTO v_aspect5
FROM mld_srtkenmerk sk,
fac_kenmerkdomein kd,
fac_usrtab ut,
fac_usrdata ud,
mld_kenmerk k,
mld_kenmerkmelding km
WHERE sk.mld_srtkenmerk_code = 'ASPECT5'
AND kd.fac_kenmerkdomein_key = sk.fac_kenmerkdomein_key
AND ut.fac_usrtab_key = kd.fac_usrtab_key
AND ud.fac_usrtab_key = kd.fac_usrtab_key
AND ud.fac_usrdata_key = fac.safe_to_number(km.mld_kenmerkmelding_waarde)
AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
AND km.mld_kenmerk_key = k.mld_kenmerk_key
AND km.mld_melding_key = v_mld_melding_key
AND k.mld_kenmerk_niveau = 'T';
--
v_errorhint := 'Vullen huidige waarde ASPECT6 van lopende melding';
v_aspect6 := '';
SELECT ud.fac_usrdata_omschr
INTO v_aspect6
FROM mld_srtkenmerk sk,
fac_kenmerkdomein kd,
fac_usrtab ut,
fac_usrdata ud,
mld_kenmerk k,
mld_kenmerkmelding km
WHERE sk.mld_srtkenmerk_code = 'ASPECT6'
AND kd.fac_kenmerkdomein_key = sk.fac_kenmerkdomein_key
AND ut.fac_usrtab_key = kd.fac_usrtab_key
AND ud.fac_usrtab_key = kd.fac_usrtab_key
AND ud.fac_usrdata_key = fac.safe_to_number(km.mld_kenmerkmelding_waarde)
AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
AND km.mld_kenmerk_key = k.mld_kenmerk_key
AND km.mld_melding_key = v_mld_melding_key
AND k.mld_kenmerk_niveau = 'T';
--
v_errorhint := 'Vullen huidige waarde ASPECT7 van lopende melding';
v_aspect7 := '';
SELECT ud.fac_usrdata_omschr
INTO v_aspect7
FROM mld_srtkenmerk sk,
fac_kenmerkdomein kd,
fac_usrtab ut,
fac_usrdata ud,
mld_kenmerk k,
mld_kenmerkmelding km
WHERE sk.mld_srtkenmerk_code = 'ASPECT7'
AND kd.fac_kenmerkdomein_key = sk.fac_kenmerkdomein_key
AND ut.fac_usrtab_key = kd.fac_usrtab_key
AND ud.fac_usrtab_key = kd.fac_usrtab_key
AND ud.fac_usrdata_key = fac.safe_to_number(km.mld_kenmerkmelding_waarde)
AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
AND km.mld_kenmerk_key = k.mld_kenmerk_key
AND km.mld_melding_key = v_mld_melding_key
AND k.mld_kenmerk_niveau = 'T';
--
v_errorhint := 'Vullen huidige waarde FOTO van lopende melding';
v_foto := '';
-- v_foto_kenmerk_key;
SELECT max(km.mld_kenmerkmelding_waarde)
INTO v_foto
FROM mld_kenmerkmelding km, mld_kenmerk k
WHERE km.mld_melding_key = v_mld_melding_key
AND km.mld_kenmerk_key = k.mld_kenmerk_key
AND k.mld_srtkenmerk_key = (SELECT MAX (mld_srtkenmerk_key) FROM mld_srtkenmerk WHERE mld_srtkenmerk_code = 'FOTONAAM');
--
v_errorhint := 'Vullen huidige waarde KOSTEN van lopende melding';
v_kosten := '';
SELECT max(km.mld_kenmerkmelding_waarde)
INTO v_kosten
FROM mld_kenmerkmelding km, mld_kenmerk k
WHERE km.mld_melding_key = v_mld_melding_key
AND km.mld_kenmerk_key = k.mld_kenmerk_key
AND k.mld_srtkenmerk_key = (SELECT MAX (mld_srtkenmerk_key) FROM mld_srtkenmerk WHERE mld_srtkenmerk_code = 'KOSTEN');
--
v_errorhint := 'Vullen huidige waarde PLANDATUM van lopende melding';
SELECT max(mld_melding_einddatum)
INTO v_plandatum_date
FROM mld_melding
WHERE mld_melding_key = v_mld_melding_key ;
-- flex1
v_errorhint := 'Vullen huidige waarde DIENST van lopende melding';
v_dienst := '';
SELECT max(d.prs_dienst_omschrijving)
INTO v_dienst
FROM mld_kenmerkmelding km, mld_kenmerk k, mld_srtkenmerk sk, fac_kenmerkdomein kd, prs_dienst d
WHERE km.mld_melding_key = v_mld_melding_key
AND km.mld_kenmerk_key = k.mld_kenmerk_key
AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
AND sk.mld_srtkenmerk_code = 'DIENST'
AND sk.fac_kenmerkdomein_key = kd.fac_kenmerkdomein_key
AND kd.fac_kenmerkdomein_objectnaam = 'PRS_DIENST'
AND d.prs_dienst_key = fac.safe_to_number(km.mld_kenmerkmelding_waarde)
AND k.mld_kenmerk_niveau = 'T' ;
SELECT max(k.mld_kenmerk_key)
INTO v_flex1_kenmerk_key
FROM mld_kenmerk k, mld_srtkenmerk sk
WHERE k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
AND k.mld_kenmerk_niveau = 'T'
AND k.mld_stdmelding_key = fac.getsetting ('cnd_gebreken_srtdisc_key')
AND sk.mld_srtkenmerk_code = 'DIENST' ;
-- flex2
v_errorhint := 'Vullen huidige waarde TAAKGROEP van lopende melding';
v_taakgroep := '';
SELECT max(ud.fac_usrdata_omschr)
INTO v_taakgroep
FROM mld_srtkenmerk sk,
fac_kenmerkdomein kd,
fac_usrtab ut,
fac_usrdata ud,
mld_kenmerk k,
mld_kenmerkmelding km
WHERE sk.mld_srtkenmerk_code = 'TAAKGROEP'
-- sk.mld_srtkenmerk_key = (DISTINCT(select fac.safe_to_number(substr(flex2, 1, INSTR(flex2,'|')-1))) -- DIT EVT NOG INPASSEN voor de FLEX5 t/m 9
-- from cnd_imp_nen2767_results where fac_import_key = p_import_key)
AND kd.fac_kenmerkdomein_key = sk.fac_kenmerkdomein_key
AND ut.fac_usrtab_key = kd.fac_usrtab_key
AND ud.fac_usrtab_key = kd.fac_usrtab_key
AND ud.fac_usrdata_key = fac.safe_to_number(km.mld_kenmerkmelding_waarde)
AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
AND km.mld_kenmerk_key = k.mld_kenmerk_key
AND km.mld_melding_key = v_mld_melding_key
AND k.mld_kenmerk_niveau = 'T';
SELECT max(k.mld_kenmerk_key)
INTO v_flex2_kenmerk_key
FROM mld_kenmerk k, mld_srtkenmerk sk
WHERE k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
AND k.mld_kenmerk_niveau = 'T'
AND k.mld_stdmelding_key = fac.getsetting ('cnd_gebreken_srtdisc_key')
AND sk.mld_srtkenmerk_code = 'TAAKGROEP' ;
-- flex3
v_errorhint := 'Vullen huidige waarde DATUMGEREEDINSPECTEUR van lopende melding';
v_datumgereedinspecteur := '';
SELECT max(km.mld_kenmerkmelding_waarde)
INTO v_datumgereedinspecteur
FROM mld_kenmerkmelding km, mld_kenmerk k
WHERE km.mld_melding_key = v_mld_melding_key
AND km.mld_kenmerk_key = k.mld_kenmerk_key
AND k.mld_srtkenmerk_key = (SELECT MAX (mld_srtkenmerk_key) FROM mld_srtkenmerk WHERE mld_srtkenmerk_code = 'DATUMGEREEDINSPECTEUR');
SELECT max(k.mld_kenmerk_key)
INTO v_flex3_kenmerk_key
FROM mld_kenmerk k, mld_srtkenmerk sk
WHERE k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
AND k.mld_kenmerk_niveau = 'T'
AND k.mld_stdmelding_key = fac.getsetting ('cnd_gebreken_srtdisc_key')
AND sk.mld_srtkenmerk_code = 'DATUMGEREEDINSPECTEUR' ;
-- flex4
v_errorhint := 'Vullen huidige waarde GEADVISEERDSTARTJAAR van lopende melding';
v_geadviseerdstartjaar := '';
SELECT max(km.mld_kenmerkmelding_waarde)
INTO v_geadviseerdstartjaar
FROM mld_kenmerkmelding km, mld_kenmerk k
WHERE km.mld_melding_key = v_mld_melding_key
AND km.mld_kenmerk_key = k.mld_kenmerk_key
AND k.mld_srtkenmerk_key = (SELECT MAX (mld_srtkenmerk_key) FROM mld_srtkenmerk WHERE mld_srtkenmerk_code = 'GEADVISEERDSTARTJAAR');
SELECT max(k.mld_kenmerk_key)
INTO v_flex4_kenmerk_key
FROM mld_kenmerk k, mld_srtkenmerk sk
WHERE k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
AND k.mld_kenmerk_niveau = 'T'
AND k.mld_stdmelding_key = fac.getsetting ('cnd_gebreken_srtdisc_key')
AND sk.mld_srtkenmerk_code = 'GEADVISEERDSTARTJAAR' ;
-- Conditiescore
v_errorhint := 'Vullen huidige waarde CONDITIESCORE van lopende melding';
v_conditiescore := '';
SELECT max(km.mld_kenmerkmelding_waarde)
INTO v_conditiescore
FROM mld_kenmerkmelding km, mld_kenmerk k
WHERE km.mld_melding_key = v_mld_melding_key
AND km.mld_kenmerk_key = k.mld_kenmerk_key
AND k.mld_srtkenmerk_key = (SELECT MAX (mld_srtkenmerk_key) FROM mld_srtkenmerk WHERE mld_srtkenmerk_code = 'CONDITIESCORE');
-- Prioriteitsscore
v_errorhint := 'Vullen huidige waarde PRIORITEITS-SCORE van lopende melding';
v_prioscore := '';
SELECT max(km.mld_kenmerkmelding_waarde)
INTO v_prioscore
FROM mld_kenmerkmelding km, mld_kenmerk k
WHERE km.mld_melding_key = v_mld_melding_key
AND km.mld_kenmerk_key = k.mld_kenmerk_key
AND k.mld_srtkenmerk_key = (SELECT MAX (mld_srtkenmerk_key) FROM mld_srtkenmerk WHERE mld_srtkenmerk_code = 'PRIORITEITSCORE');
--
v_errorhint := 'Bepalen STATUS van lopende melding';
v_mld_melding_status := '';
SELECT max(mld_melding_status)
INTO v_mld_melding_status
FROM mld_melding
WHERE mld_melding_key = v_mld_melding_key ;
--
v_errorhint := 'Bepalen INSPECTEUR / AANVRAGER van lopende melding';
v_inspecteur := '';
SELECT p.prs_perslid_email
INTO v_inspecteur
FROM mld_melding m, prs_perslid p
WHERE m.prs_perslid_key = p.prs_perslid_key
AND mld_melding_key = v_mld_melding_key ;
--
v_errorhint := 'Bepalen BEHANDELAAR van lopende melding';
v_behandelaar := '';
SELECT max(p.prs_perslid_email)
INTO v_behandelaar
FROM mld_melding m, prs_perslid p
WHERE m.mld_melding_behandelaar_key = p.prs_perslid_key
AND mld_melding_key = v_mld_melding_key ;
-- Alles gevuld. Nu alle meldingsvelden updaten als REC-waarde gevuld is en als deze afwijkt van de huidige waarde
v_herberekenen:=0;
-- Omschrijving melding - Opmerking melding
v_errorhint := 'Aanpassen opmerking bij melding';
v_aanduiding := 'Melding N' || TO_CHAR(v_mld_melding_key) || ' is gewijzigd via upload gebreken:' || CHR(13) || CHR(10) || 'Omschrijving aangevuld met: ' || rec.mld_melding_omschrijving ;
IF v_mld_melding_omschrijving <> rec.mld_melding_omschrijving AND rec.mld_melding_omschrijving IS NOT NULL
THEN
UPDATE mld_melding
SET mld_melding_omschrijving = v_mld_melding_omschrijving || CHR (13) || CHR(13) || CHR (10) || to_char(sysdate,'DD-MM-YYYY') || ':' || CHR(13) || CHR (10) || rec.mld_melding_omschrijving
WHERE mld_melding_key = v_mld_melding_key;
END IF;
-- Omvang
v_errorhint := 'Aanpassen Omvang kenmerk';
v_aanduiding := 'Melding N' || TO_CHAR(v_mld_melding_key) || ' is gewijzigd via upload gebreken:' || CHR(13) || CHR(10) || 'Omvang: (' || v_omvang || ') --> ' || rec.omvang ;
IF rec.omvang IS NOT NULL AND v_omvang <> rec.omvang
THEN
mld.upsertmeldingkenmerk (v_omvang_kenmerk_key,
v_mld_melding_key,
v_omvang_key);
v_herberekenen:=1;
fac.trackaction ('MLDUPD', v_mld_melding_key, sys_context('USERENV', 'CLIENT_IDENTIFIER'), NULL, v_aanduiding);
END IF;
v_errorhint := 'Aanpassen Intensiteit kenmerk';
v_aanduiding := 'Melding N' || TO_CHAR(v_mld_melding_key) || ' is gewijzigd via upload gebreken:' || CHR(13) || CHR(10) || 'Intensiteit: (' || v_intensiteit || ') --> ' || rec.intensiteit ;
IF rec.intensiteit IS NOT NULL AND v_intensiteit <> rec.intensiteit
THEN
mld.upsertmeldingkenmerk (v_intensiteit_kenmerk_key,
v_mld_melding_key,
v_intensiteit_key);
v_herberekenen:=1;
fac.trackaction ('MLDUPD', v_mld_melding_key, sys_context('USERENV', 'CLIENT_IDENTIFIER'), NULL, v_aanduiding);
END IF;
-- Aspect 1
v_errorhint := 'Aanpassen aspectwaarde 1';
v_aanduiding := 'Melding N' || TO_CHAR(v_mld_melding_key) || ' is gewijzigd via upload gebreken:' || CHR(13) || CHR(10) || 'Aspect1: (' || v_aspect1 || ') --> ' || rec.aspect1 ;
IF NOT(rec.aspect1 = 'NVT') AND v_aspect1 <> rec.aspect1 AND NOT(INSTR(v_aspect1,'NVT')>0 AND INSTR(rec.aspect1,'NVT')>0)
THEN
IF rec.aspect1 = '0 - NVT' THEN
set_aspect ('ASPECT1', 'NVT', v_mld_melding_key);
ELSE
set_aspect ('ASPECT1', rec.aspect1, v_mld_melding_key);
END IF;
v_herberekenen:=1;
fac.trackaction ('MLDUPD', v_mld_melding_key, sys_context('USERENV', 'CLIENT_IDENTIFIER'), NULL, v_aanduiding);
END IF;
-- Aspect 2
v_errorhint := 'Aanpassen aspectwaarde 2';
v_aanduiding := 'Melding N' || TO_CHAR(v_mld_melding_key) || ' is gewijzigd via upload gebreken:' || CHR(13) || CHR(10) || 'Aspect2: (' || v_aspect2 || ') --> ' || rec.aspect2 ;
IF NOT(rec.aspect2 = 'NVT') AND v_aspect2 <> rec.aspect2 AND NOT(INSTR(v_aspect2,'NVT')>0 AND INSTR(rec.aspect2,'NVT')>0)
THEN
IF rec.aspect2 = '0 - NVT' THEN
set_aspect ('ASPECT2', 'NVT', v_mld_melding_key);
ELSE
set_aspect ('ASPECT2', rec.aspect2, v_mld_melding_key);
END IF;
v_herberekenen:=1;
fac.trackaction ('MLDUPD', v_mld_melding_key, sys_context('USERENV', 'CLIENT_IDENTIFIER'), NULL, v_aanduiding);
END IF;
-- Aspect 3
v_errorhint := 'Aanpassen aspectwaarde 3';
v_aanduiding := 'Melding N' || TO_CHAR(v_mld_melding_key) || ' is gewijzigd via upload gebreken:' || CHR(13) || CHR(10) || 'Aspect3: (' || v_aspect3 || ') --> ' || rec.aspect3 ;
IF NOT(rec.aspect3 = 'NVT') AND v_aspect3 <> rec.aspect3 AND NOT(INSTR(v_aspect3,'NVT')>0 AND INSTR(rec.aspect3,'NVT')>0)
THEN
IF rec.aspect3 = '0 - NVT' THEN
set_aspect ('ASPECT3', 'NVT', v_mld_melding_key);
ELSE
set_aspect ('ASPECT3', rec.aspect3, v_mld_melding_key);
END IF;
v_herberekenen:=1;
fac.trackaction ('MLDUPD', v_mld_melding_key, sys_context('USERENV', 'CLIENT_IDENTIFIER'), NULL, v_aanduiding);
END IF;
-- Aspect 4
v_errorhint := 'Aanpassen aspectwaarde 4';
v_aanduiding := 'Melding N' || TO_CHAR(v_mld_melding_key) || ' is gewijzigd via upload gebreken:' || CHR(13) || CHR(10) || 'Aspect4: (' || v_aspect4 || ') --> ' || rec.aspect4 ;
IF NOT(rec.aspect4 = 'NVT') AND v_aspect4 <> rec.aspect4 AND NOT(INSTR(v_aspect4,'NVT')>0 AND INSTR(rec.aspect4,'NVT')>0)
THEN
IF rec.aspect4 = '0 - NVT' THEN
set_aspect ('ASPECT4', 'NVT', v_mld_melding_key);
ELSE
set_aspect ('ASPECT4', rec.aspect4, v_mld_melding_key);
END IF;
v_herberekenen:=1;
fac.trackaction ('MLDUPD', v_mld_melding_key, sys_context('USERENV', 'CLIENT_IDENTIFIER'), NULL, v_aanduiding);
END IF;
-- Aspect 5
v_errorhint := 'Aanpassen aspectwaarde 5';
v_aanduiding := 'Melding N' || TO_CHAR(v_mld_melding_key) || ' is gewijzigd via upload gebreken:' || CHR(13) || CHR(10) || 'Aspect5: (' || v_aspect5 || ') --> ' || rec.aspect5 ;
IF NOT(rec.aspect5 = 'NVT') AND v_aspect5 <> rec.aspect5 AND NOT(INSTR(v_aspect5,'NVT')>0 AND INSTR(rec.aspect5,'NVT')>0)
THEN
IF rec.aspect5 = '0 - NVT' THEN
set_aspect ('ASPECT5', 'NVT', v_mld_melding_key);
ELSE
set_aspect ('ASPECT5', rec.aspect5, v_mld_melding_key);
END IF;
v_herberekenen:=1;
fac.trackaction ('MLDUPD', v_mld_melding_key, sys_context('USERENV', 'CLIENT_IDENTIFIER'), NULL, v_aanduiding);
END IF;
-- Aspect 6
v_errorhint := 'Aanpassen aspectwaarde 6';
v_aanduiding := 'Melding N' || TO_CHAR(v_mld_melding_key) || ' is gewijzigd via upload gebreken:' || CHR(13) || CHR(10) || 'Aspect6: (' || v_aspect6 || ') --> ' || rec.aspect6 ;
IF NOT(rec.aspect6 = 'NVT') AND v_aspect6 <> rec.aspect6 AND NOT(INSTR(v_aspect6,'NVT')>0 AND INSTR(rec.aspect6,'NVT')>0)
THEN
IF rec.aspect6 = '0 - NVT' THEN
set_aspect ('ASPECT6', 'NVT', v_mld_melding_key);
ELSE
set_aspect ('ASPECT6', rec.aspect6, v_mld_melding_key);
END IF;
v_herberekenen:=1;
fac.trackaction ('MLDUPD', v_mld_melding_key, sys_context('USERENV', 'CLIENT_IDENTIFIER'), NULL, v_aanduiding);
END IF;
-- Aspect 7
v_errorhint := 'Aanpassen aspectwaarde 7';
v_aanduiding := 'Melding N' || TO_CHAR(v_mld_melding_key) || ' is gewijzigd via upload gebreken:' || CHR(13) || CHR(10) || 'Aspect7: (' || v_aspect7 || ') --> ' || rec.aspect7 ;
IF NOT(rec.aspect7 = 'NVT') AND v_aspect7 <> rec.aspect7 AND NOT(INSTR(v_aspect7,'NVT')>0 AND INSTR(rec.aspect7,'NVT')>0)
THEN
IF rec.aspect7 = '0 - NVT' THEN
set_aspect ('ASPECT7', 'NVT', v_mld_melding_key);
ELSE
set_aspect ('ASPECT7', rec.aspect7, v_mld_melding_key);
END IF;
v_herberekenen:=1;
fac.trackaction ('MLDUPD', v_mld_melding_key, sys_context('USERENV', 'CLIENT_IDENTIFIER'), NULL, v_aanduiding);
END IF;
--
v_errorhint := 'Aanpassen Foto kenmerk';
v_aanduiding := 'Melding N' || TO_CHAR(v_mld_melding_key) || ' is gewijzigd via upload gebreken:' || CHR(13) || CHR(10) || 'Fotonaam: (' || v_foto || ') --> ' || rec.foto ;
IF rec.foto IS NOT NULL AND COALESCE(v_foto, '<leeg>') <> rec.foto AND v_foto_kenmerk_key IS NOT NULL
THEN
mld.upsertmeldingkenmerk (v_foto_kenmerk_key,
v_mld_melding_key,
rec.foto);
fac.trackaction ('MLDUPD', v_mld_melding_key, sys_context('USERENV', 'CLIENT_IDENTIFIER'), NULL, v_aanduiding);
END IF;
--
v_errorhint := 'Aanpassen Kosten kenmerk';
v_aanduiding := 'Melding N' || TO_CHAR(v_mld_melding_key) || ' is gewijzigd via upload gebreken:' || CHR(13) || CHR(10) || 'Kosten: (' || v_kosten || ') --> ' || rec.kosten ;
IF rec.kosten IS NOT NULL AND COALESCE(fac.safe_to_number(v_kosten), -1) <> rec.kosten AND v_kosten_kenmerk_key IS NOT NULL
THEN
mld.upsertmeldingkenmerk (v_kosten_kenmerk_key,
v_mld_melding_key,
TO_CHAR(rec.kosten));
fac.trackaction ('MLDUPD', v_mld_melding_key, sys_context('USERENV', 'CLIENT_IDENTIFIER'), NULL, v_aanduiding);
END IF;
-- Plandatum
v_errorhint := 'Aanpassen Plandatum';
v_aanduiding := 'Melding N' || TO_CHAR(v_mld_melding_key) || ' is gewijzigd via upload gebreken:' || CHR(13) || CHR(10) || 'Plandatum: (' || TO_CHAR(v_plandatum_date) || ') --> ' || TO_CHAR(rec.plandatum) ;
IF rec.plandatum IS NOT NULL AND v_plandatum_date <> rec.plandatum
THEN
UPDATE mld_melding
SET mld_melding_einddatum = rec.plandatum
WHERE mld_melding_key = v_mld_melding_key ;
fac.trackaction ('MLDUPD', v_mld_melding_key, sys_context('USERENV', 'CLIENT_IDENTIFIER'), NULL, v_aanduiding);
END IF;
-- flex1
v_errorhint := 'Aanpassen Dienst (Flex1)';
v_flex1_waarde := substr(rec.flex1,instr(rec.flex1,'=')+1,length(rec.flex1)-instr(rec.flex1,'='));
v_flex1_waarde_key := NULL;
v_aanduiding := 'Melding N' || TO_CHAR(v_mld_melding_key) || ' is gewijzigd via upload gebreken:' || CHR(13) || CHR(10) || 'Dienst: (' || v_dienst || ') --> ' || v_flex1_waarde ;
IF v_flex1_waarde IS NOT NULL AND COALESCE(v_dienst,'<leeg>') <> v_flex1_waarde AND v_flex1_kenmerk_key IS NOT NULL
THEN
SELECT max(prs_dienst_key)
INTO v_flex1_waarde_key
FROM prs_dienst
WHERE UPPER(prs_dienst_omschrijving) = UPPER(v_flex1_waarde);
IF v_flex1_waarde_key IS NOT NULL
THEN
mld.upsertmeldingkenmerk (v_flex1_kenmerk_key,
v_mld_melding_key,
v_flex1_waarde_key);
fac.trackaction ('MLDUPD', v_mld_melding_key, sys_context('USERENV', 'CLIENT_IDENTIFIER'), NULL, v_aanduiding);
END IF;
END IF;
-- flex2
v_errorhint := 'Aanpassen Taakgroep (Flex2)';
v_flex2_waarde := substr(rec.flex2,instr(rec.flex2,'=')+1,length(rec.flex2)-instr(rec.flex2,'='));
v_flex2_waarde_key := NULL;
v_aanduiding := 'Melding N' || TO_CHAR(v_mld_melding_key) || ' is gewijzigd via upload gebreken:' || CHR(13) || CHR(10) || 'Taakgroep: (' || v_taakgroep || ') --> ' || v_flex2_waarde ;
IF v_flex2_waarde IS NOT NULL AND COALESCE(v_taakgroep,'<leeg>') <> v_flex2_waarde AND v_flex2_kenmerk_key IS NOT NULL
THEN
SELECT ud.fac_usrdata_key
INTO v_flex2_waarde_key
FROM mld_srtkenmerk sk,
fac_kenmerkdomein kd,
fac_usrtab ut,
fac_usrdata ud,
mld_kenmerk k
WHERE sk.mld_srtkenmerk_code = 'TAAKGROEP'
AND kd.fac_kenmerkdomein_key = sk.fac_kenmerkdomein_key
AND ut.fac_usrtab_key = kd.fac_usrtab_key
AND ud.fac_usrtab_key = kd.fac_usrtab_key
AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
AND k.mld_kenmerk_niveau = 'T'
AND ud.fac_usrdata_upper = UPPER(v_flex2_waarde);
IF v_flex2_waarde_key IS NOT NULL
THEN
mld.upsertmeldingkenmerk (v_flex2_kenmerk_key,
v_mld_melding_key,
v_flex2_waarde_key);
fac.trackaction ('MLDUPD', v_mld_melding_key, sys_context('USERENV', 'CLIENT_IDENTIFIER'), NULL, v_aanduiding);
END IF;
END IF;
-- flex3
v_errorhint := 'Aanpassen DatumGereedInspecteur (Flex3)';
v_flex3_waarde := substr(rec.flex3,instr(rec.flex3,'=')+1,length(rec.flex3)-instr(rec.flex3,'='));
v_aanduiding := 'Melding N' || TO_CHAR(v_mld_melding_key) || ' is gewijzigd via upload gebreken:' || CHR(13) || CHR(10) || 'Datum gereed (inspecteur): (' || v_datumgereedinspecteur || ') --> ' || v_flex3_waarde ;
IF v_flex3_waarde IS NOT NULL AND (fac.safe_to_date (v_flex3_waarde, 'dd-mm-yyyy') IS NOT NULL) AND (COALESCE(v_datumgereedinspecteur,'<leeg>') <> v_flex3_waarde) AND v_flex3_kenmerk_key IS NOT NULL
THEN
mld.upsertmeldingkenmerk (v_flex3_kenmerk_key,
v_mld_melding_key,
v_flex3_waarde);
fac.trackaction ('MLDUPD', v_mld_melding_key, sys_context('USERENV', 'CLIENT_IDENTIFIER'), NULL, v_aanduiding);
END IF;
-- flex4
v_errorhint := 'Aanpassen Geadviseerd Startjaar (Flex4)';
v_flex4_waarde := substr(rec.flex4,instr(rec.flex4,'=')+1,length(rec.flex4)-instr(rec.flex4,'='));
v_aanduiding := 'Melding N' || TO_CHAR(v_mld_melding_key) || ' is gewijzigd via upload gebreken:' || CHR(13) || CHR(10) || 'Startjaar: (' || v_geadviseerdstartjaar || ') --> ' || v_flex4_waarde ;
IF v_flex4_waarde IS NOT NULL AND COALESCE(v_geadviseerdstartjaar,'<leeg>') <> v_flex4_waarde AND v_flex4_kenmerk_key IS NOT NULL
THEN
mld.upsertmeldingkenmerk (v_flex4_kenmerk_key,
v_mld_melding_key,
v_flex4_waarde);
fac.trackaction ('MLDUPD', v_mld_melding_key, sys_context('USERENV', 'CLIENT_IDENTIFIER'), NULL, v_aanduiding);
END IF;
-- Inspecteur
v_errorhint := 'Aanpassen Inspecteur / Aanvrager';
v_aanduiding := 'Melding N' || TO_CHAR(v_mld_melding_key) || ' is gewijzigd via upload gebreken:' || CHR(13) || CHR(10) || 'Inspecteur: (' || v_inspecteur || ') --> ' || rec.prs_perslid_email ;
IF (rec.prs_perslid_email IS NOT NULL OR LENGTH (rec.prs_perslid_email) > 200) AND COALESCE(v_inspecteur, '<leeg>') <> rec.prs_perslid_email
THEN
SELECT prs_perslid_key
INTO v_prs_perslid_key
FROM prs_v_aanwezigperslid
WHERE UPPER (prs_perslid_email) = UPPER (rec.prs_perslid_email);
IF v_prs_perslid_key IS NOT NULL
THEN
UPDATE mld_melding
SET prs_perslid_key = v_prs_perslid_key, prs_perslid_key_voor = v_prs_perslid_key
WHERE mld_melding_key = v_mld_melding_key ;
fac.trackaction ('MLDUPD', v_mld_melding_key, sys_context('USERENV', 'CLIENT_IDENTIFIER'), NULL, v_aanduiding);
END IF;
END IF;
-- Behandelaar
v_errorhint := 'Aanpassen Behandelaar';
v_aanduiding := 'Melding N' || TO_CHAR(v_mld_melding_key) || ' is gewijzigd via upload gebreken:' || CHR(13) || CHR(10) || 'Behandelaar: (' || v_behandelaar || ') --> ' || rec.flex9 ;
IF rec.flex9 IS NOT NULL AND COALESCE(v_behandelaar, '<leeg>') <> rec.flex9
THEN
SELECT max(prs_perslid_key)
INTO v_prs_behandelaar_key
FROM prs_v_aanwezigperslid
WHERE UPPER (prs_perslid_email) = UPPER (rec.flex9);
IF v_prs_behandelaar_key IS NOT NULL
THEN
UPDATE mld_melding
SET mld_melding_behandelaar_key = v_prs_behandelaar_key
WHERE mld_melding_key = v_mld_melding_key ;
fac.trackaction ('MLDUPD', v_mld_melding_key, sys_context('USERENV', 'CLIENT_IDENTIFIER'), NULL, v_aanduiding);
END IF;
END IF;
-- Her-berekenen van de Conditie- en Prioriteitscore
---- Alleen als de melding status lopend heeft..
---- Alleen als de omvang, intensiteit of 1 vd aspectwaarden is veranderd..
v_errorhint := 'Herberekenen conditie- en prio-score';
v_aanduiding := 'Melding N' || TO_CHAR(v_mld_melding_key) || ' is herberekend via upload gebreken:' || CHR(13) || CHR(10) || 'Oorspronkelijke conditiescore: ' || TO_CHAR(v_conditiescore) || CHR(13) || CHR(10) || 'Oorspronkelijke prioriteitscore: ' || TO_CHAR(v_prioscore) ;
IF v_mld_melding_status IN (0,4,7,99) AND v_herberekenen=1
THEN
BEGIN
cnd.process_mjb_score_effects (v_mld_melding_key);
END;
COMMIT;
fac.trackaction ('MLDUPD', v_mld_melding_key, sys_context('USERENV', 'CLIENT_IDENTIFIER'), NULL, v_aanduiding);
END IF;
v_count_import := v_count_import + 1;
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg :=
'OTHERS (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.imp_writelog (p_import_key,
'E',
v_aanduiding || v_errormsg,
v_errorhint);
COMMIT;
END;
END LOOP;
fac.imp_writelog (
p_import_key,
'S',
'UPDATE NEN2767_RESULTS: aantal regels te verwerken: '
|| TO_CHAR (v_count_tot)
|| ' / aantal geldige regels: '
|| TO_CHAR (v_count_import)
|| ' / aantal BIJGEWERKTE, BESTAANDE gebreken: '
|| TO_CHAR (v_count_tot_n)
,
'');
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg :=
'OTHERS (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.imp_writelog (p_import_key,
'E',
v_aanduiding || v_errormsg,
v_errorhint);
COMMIT;
END aaxx_update_nen2767_assetman;
/
-------------------------------------------------------------------------------
-- GRANTS naar AAFM database.
-------------------------------------------------------------------------------
GRANT SELECT ON aaxx_v_dwh_prs_bedrijf TO aafm;
GRANT SELECT ON aaxx_v_dwh_prs_bedrijfadres TO aafm;
GRANT SELECT ON aaxx_v_dwh_cnt_contract TO aafm;
GRANT SELECT ON aaxx_v_dwh_cnt_contract_scope TO aafm;
GRANT SELECT ON aaxx_v_dwh_cnt_contract_mantel TO aafm;
GRANT SELECT ON aaxx_v_dwh_cnt_factuurschema TO aafm;
GRANT SELECT ON aaxx_v_dwh_kenmerk_contract TO aafm;
GRANT SELECT ON aaxx_v_dwh_mld_stdmelding TO aafm;
GRANT SELECT ON aaxx_v_dwh_mld_melding TO aafm;
GRANT SELECT ON aaxx_v_dwh_res_reservering TO aafm;
GRANT SELECT ON aaxx_v_dwh_bes_bestelling TO aafm;
GRANT SELECT ON aaxx_v_dwh_bez_bezoekers TO aafm;
GRANT SELECT ON aaxx_v_dwh_kenmerk_melding TO aafm;
GRANT SELECT ON aaxx_v_dwh_kenmerk_opdracht TO aafm;
GRANT SELECT ON aaxx_v_dwh_kenmerk_reservering TO aafm;
GRANT SELECT ON aaxx_v_dwh_kenmerk_bestelling TO aafm;
GRANT SELECT ON aaxx_v_dwh_fin_factuur TO aafm;
GRANT SELECT ON aaxx_v_dwh_fin_factuur_vk TO aafm;
GRANT SELECT ON aaxx_v_dwh_prs_kostenplaats TO aafm;
GRANT SELECT ON aaxx_v_dwh_prs_kostensoort TO aafm;
GRANT SELECT ON aaxx_v_dwh_prs_perslid TO aafm;
GRANT SELECT ON aaxx_v_dwh_fac_groeprechten TO aafm;
GRANT SELECT ON aaxx_v_dwh_prs_afdeling TO aafm;
GRANT SELECT ON aaxx_v_dwh_kenmerk_prs TO aafm;
GRANT SELECT ON aaxx_v_dwh_alg_onrgoed TO aafm;
GRANT SELECT ON aaxx_v_dwh_kenmerk_onrgoed TO aafm;
GRANT SELECT ON aaxx_v_dwh_ins_sensor_status TO aafm;
GRANT SELECT ON aaxx_v_dwh_inspectie TO aafm;
GRANT SELECT ON aaxx_v_dwh_inspectie_2 TO aafm;
GRANT SELECT ON aaxx_v_dwh_ins_object TO aafm;
GRANT SELECT ON aaxx_v_dwh_kenmerk_object TO AAFM;
GRANT SELECT ON aaxx_v_dwh_kenmerk_inspectie TO aafm;
GRANT SELECT ON aaxx_v_dwh_uren TO aafm;
GRANT SELECT ON aaxx_v_dwh_uren_improd TO aafm;
GRANT SELECT ON aaxx_v_dwh_tracking TO aafm;
GRANT SELECT ON aaxx_v_dwh_faq TO aafm;
GRANT SELECT ON aaxx_v_dwh_budget_tracker TO aafm;
GRANT SELECT ON AAXX_V_DWH_GUI_COUNTER TO aafm;
GRANT SELECT ON AAXX_V_DWH_FAQ2 TO aafm;
-- views tbv user telling
GRANT SELECT ON aaxx_v_lcrap_key_stats TO aafm;
GRANT SELECT ON fac_v_lcrap_fe_vs_key TO aafm;
GRANT SELECT ON aaxx_exp_uren_dekking TO aait;
------ 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