Files
Customer/AA/aaxx.sql
Jos Migo d7a2a692e5 INLO#57775 -- Inlo verkoopinterface Henkel en VEH
SMKA#57789  -- SMKA en inkoopinterface
AAHB#57819  -- verkoopinterface HBC
INLO#58130  -- Velden toevoegen aan DWH reserveringsview

svn path=/Customer/trunk/; revision=42968
2019-06-17 12:49:19 +00:00

17616 lines
759 KiB
MySQL
Raw Blame History

--
-- $Id$
--
-- Script containing customer generic configuration sql statements for HEYDAY
DEFINE thisfile = 'AAXX.SQL'
DEFINE dbuser = '^AA|^AQQA|^EXPO|^INLO|^ASMS|^GULU|^NMMS|^RABO|^SMKA'
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 = 'AADB' THEN RETURN 'DBS'; 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 = 'AAHB' THEN RETURN 'HB'; END IF;
IF v_user = 'AAIT' THEN RETURN 'IT'; END IF;
IF v_user = 'AAPM' THEN RETURN 'PM'; END IF;
IF v_user = 'AARW' THEN RETURN 'RWS'; END IF;
IF v_user = 'AASA' THEN RETURN 'SABIC'; END IF;
IF v_user = 'AAVG' THEN RETURN 'VG'; 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 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;
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
-- OR
aaxx_get_user = 'DOW'
OR aaxx_get_user = 'DSM'
OR aaxx_get_user = 'SABIC'
OR aaxx_get_user = 'GUL'
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 = 'DBS'
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_bestand 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_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_row(p_bestand,
'<' || p_tag || '>'
|| xml.char_to_html(p_value)
|| '</' || p_tag || '>');
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_kmdeelsrtcontr_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 '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_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 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_ORDBO2'
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_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
)
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, 'HB', TO_DATE(fin_factuur_boekmaand, 'yyyy-mm'),
'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,
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'))),
'2019', 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 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')
),
'HB', DECODE (fac.safe_to_number(substr(fin_factuur_boekmaand, 1,4)) - fac.safe_to_number(to_char(sysdate, 'yyyy')),
1, '1350400', -- boekmaand ligt in het volgend jaar in verband met gebroken boekjaar
0, k.prs_kostensoort_refcode, -- boekmaand ligt in huidig jaar
-- boekmaand ligt in het verleden, dus bedragen mogen naar balansrekening.
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')
),
-- 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'))),
'2019', 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'))),
'2019', k.prs_kostensoort_refcode, '2018', 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)
),
'PM', 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,
DECODE (substr(k.prs_kostensoort_upper,1,5), 'NC PR', '1350817', -- Geen NC PROJ
'Onbekend')
),
--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'))),
'2019', 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 ', '1350807',
'CFE', '1350807',
'CV ', '1350808',
'CVE', '1350809',
'NC ', DECODE (substr(k.prs_kostensoort_upper,1,7), 'NC PROJ', '1350817', '1350809'),
'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'))),
'2019', 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)
)
),
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
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;
CREATE OR REPLACE VIEW aaxx_v_export_exact_xml (
result,
result_order
)
AS
SELECT fac_rapport_regel, fac_rapport_volgnr
FROM fac_rapport
WHERE fac_rapport_node = 'EXACT';
/* 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
)
AS
SELECT result, result_order
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,
projectnaam,
bedrag_txt,
bedrag,
bedrag_incl,
betaalref,
itemcode,
reknr,
kstplcode,
kstdrcode,
btw_code,
lev_kpn
)
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_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', DECODE (lev_kpn,
'2000700', '00100001',
(SELECT DECODE (SUBSTR (PRS_KOSTENPLAATS_NR, 1, 1),
'2', '999999',
PRS_KOSTENPLAATS_NR)
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',
'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,
( SELECT prs_kostenplaats_nr
FROM prs_kostenplaats kp
WHERE kp.prs_kostenplaats_key = fg.prs_kostenplaats_key ) kstdrcode,
fin_btwtabelwaarde_code btw_code,
lev_kpn
FROM ( SELECT g.fin_factuur_key,
opdracht_id,
project_nummer,
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
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_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) fg;
-- 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
IS
SELECT crdnr, factuur_nr, MAX(datum) datum
FROM aaxx_v_bron_export_exact_xml
GROUP BY crdnr, factuur_nr;
CURSOR c_sub (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;
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;
BEGIN
v_order_count := 0;
v_amount_sum := 0;
v_amount_sum_incl := 0;
v_count := 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)
( SELECT DISTINCT fin_factuur_key
FROM aaxx_v_factuur_gegevens
WHERE fin_factuur_statuses_key = 6
AND fin_factuur_datum > SYSDATE - (5 * 365) -- Check op geldige factuurdatum:
AND 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;
-- 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
-- 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 (v_bestand, '<GLEntry status="E" entry="' || xml.char_to_html(v_boekstuknummer) || '">');
aaxx_add_xml_element (v_bestand, 'Description', rec.factuur_nr);
aaxx_add_xml_element (v_bestand, 'Date', rec.datum);
aaxx_add_xml_element (v_bestand, 'DocumentDate', TO_CHAR(SYSDATE, 'YYYY-MM-DD') );
aaxx_add_xml_row (v_bestand, '<Journal type="I" code="42"/>');
v_sub_count := 1;
FOR rec1 IN c_sub (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 (v_bestand, '<FinEntryLine number="' || v_sub_count || '" subtype="T" type="N">');
aaxx_add_xml_element (v_bestand, 'Date', rec1.datum);
aaxx_add_xml_row (v_bestand, '<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 (v_bestand, 'Description', rec1.oms25);
aaxx_add_xml_row (v_bestand, '<Project code="' || rec1.projectnr || '" type="I" status="A">');
aaxx_add_xml_element (v_bestand, 'Description', rec1.projectnaam);
aaxx_add_xml_row (v_bestand, '</Project>');
ELSE
aaxx_add_xml_element (v_bestand, 'Description', rec1.oms25);
END IF;
aaxx_add_xml_row (v_bestand, '<Costcenter code="' || xml.char_to_html(rec1.kstplcode) || '"/>');
IF aaxx_get_user = 'IT' AND rec1.lev_kpn = '2000700'
THEN
aaxx_add_xml_row (v_bestand, '<Costunit code="C0000014"/>'); -- afwijkend voor AAIT facilitaire kosten AAIT#25528.
ELSIF aaxx_get_user = 'GUL'
THEN
aaxx_add_xml_row (v_bestand, '<Costunit code="' || xml.char_to_html(rec1.kstdrcode) || '"/>');
ELSE
aaxx_add_xml_row (v_bestand, '<Costunit code="KD999999"/>');
END IF;
aaxx_add_xml_row (v_bestand, '<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 (v_bestand, '<Item code="' || xml.char_to_html(rec1.itemcode) || '"/>');
END IF;
aaxx_add_xml_row (v_bestand, '<Amount>');
aaxx_add_xml_element (v_bestand, 'Debit', rec1.bedrag_txt);
aaxx_add_xml_row (v_bestand, '<VAT code="' || xml.char_to_html(rec1.btw_code) || '"/>');
aaxx_add_xml_row (v_bestand, '</Amount>');
aaxx_add_xml_row (v_bestand, '<Payment>');
aaxx_add_xml_element (v_bestand, 'Reference', rec1.betaalref);
aaxx_add_xml_element (v_bestand, 'InvoiceNumber', rec1.fin_factuur_key); -- of moet dit v_boekstuknummer worden????
aaxx_add_xml_row (v_bestand, '</Payment>');
aaxx_add_xml_row (v_bestand, '<FinReferences>');
aaxx_add_xml_element (v_bestand, 'YourRef', rec1.betaalref);
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, '<FreeFields>');
aaxx_add_xml_row (v_bestand, '<FreeTexts>');
aaxx_add_xml_row (v_bestand, '<FreeText number="3">' || rec1.opdracht_id || '</FreeText>');
aaxx_add_xml_row (v_bestand, '</FreeTexts>');
aaxx_add_xml_row (v_bestand, '</FreeFields>');
aaxx_add_xml_row (v_bestand, '</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 (v_bestand, '</GLEntry>');
v_order_count := v_order_count + 1;
END;
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 || ' Totaal bedrag (incl): ' || v_amount_sum_incl, '');
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 Kenmerk ordernummer klant (DBS special).
-- 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,
'DBS', DECODE (ks.prs_kostensoort_upper, 'CV EIG BOUW PL', '913757',
'CV EIG INST PL', '913757',
substr(aaxx_get_lev2_dep_code(k.prs_kostenplaats_nr),1,6)),
'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'),
'HB', k.prs_kostenplaats_nr,
'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)),
'DBS', DECODE (ks.prs_kostensoort_upper, 'CV EIG BOUW PL', '913757',
'CV EIG INST PL', '913757',
substr(aaxx_get_lev2_dep_code(k.prs_kostenplaats_nr),1,6)),
'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),
'HB', 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))),
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),
'DBS', DECODE(ks.prs_kostensoortgrp_key, 3, 'Projecten', 'Core Variable'),
'DOW', 'Service Charges',
'EXPO', DECODE(ks.prs_kostensoort_upper, 'NC PROJ', 'Projecten',
'Servicekosten Core Variabel'),
'HB', 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)),
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,
'HB', DECODE (prs_kostensoort_oms, 'NC PROJ', 'Project ' || m.mld_melding_omschrijving,
sd.ins_srtdiscipline_prefix || m.mld_melding_key || '/' || mld_opdr_bedrijfopdr_volgnr || ' ' || d.ins_discipline_omschrijving),
'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),
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 <> 'DBS' AND k.mld_srtkenmerk_key = 143) -- opdrachtnummer
OR ( aaxx_get_user = 'DBS' AND k.mld_srtkenmerk_key = 55) -- projectnaam
OR ( 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'),
COALESCE(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)),
'DBS', DECODE (ks.prs_kostensoort_upper, 'NC PROJ', '913757' || m.mld_melding_key,
'CV EIG BOUW PL', '913757',
'CV EIG INST PL', '913757',
'CVE GEB NIET PLAN', aaxx_get_lev2_dep_code(k.prs_kostenplaats_nr) || m.mld_melding_key,
'CVE INSTAL NIET PLAN', aaxx_get_lev2_dep_code(k.prs_kostenplaats_nr) || m.mld_melding_key,
aaxx_get_lev2_dep_code(k.prs_kostenplaats_nr)),
'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))),
'HB', 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)),
'')
, 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,
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,
(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 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 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 <> 'HB'
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 <> 'DBS'
AND aaxx_get_user <> 'ESSENT'
AND aaxx_get_user <> 'EXPO')
OR ( aaxx_get_user = 'AH'
AND ( ks.prs_kostensoort_upper LIKE 'CV %'
OR ks.prs_kostensoort_upper LIKE 'NC PROJ%')
)
OR ( aaxx_get_user = 'DBS'
AND ks.prs_kostensoort_upper IN (
'CV AFVAL REST',
'CV OND',
'CV GEB NIET PLAN',
'CV INSTAL NIET PLAN',
'CV TERR VERHARD',
'CV TERR NIET PL',
'CV OND TERR',
'CV TERR OVR',
'CV CONS REST',
'CV CONS SERV',
'CV CONS OVR',
'CV CONS AUT',
'CV BEWAK',
'CV PREV CAL',
'CV BEWAK OVR',
'CV SCH',
'CV SCH GLAS',
'CV SCH OVR',
'CV VGM',
'CV GROEN',
'CV EIG BOUW PL',
'CV EIG INST PL',
'NC PROJ',
'CVE INSTAL NIET PLAN',
'CVE GEB NIET PLAN')
)
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 = 'HB'
AND (ks.prs_kostensoort_upper LIKE 'CV %'
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 %'
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%')
)
)
)
);
-- 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,
'DBS', DECODE (ks.prs_kostensoort_upper, 'CV EIG BOUW PL', '913757',
'CV EIG INST PL', '913757',
substr(aaxx_get_lev2_dep_code(k.prs_kostenplaats_nr),1,6)),
'HB', k.prs_kostenplaats_nr,
'EXPO', DECODE(aaxx_get_top_dep_code(k.prs_kostenplaats_nr), '913918', '03701000',
'4001', '03700000',
'Onbekend'),
'NMM', 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.
'RABO', 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)),
'DBS', DECODE (ks.prs_kostensoort_upper, 'CV EIG BOUW PL', '913757',
'CV EIG INST PL', '913757',
substr(aaxx_get_lev2_dep_code(k.prs_kostenplaats_nr),1,6)),
'HB', 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))
) 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)),
'DBS', DECODE(ks.prs_kostensoortgrp_key, 3, 'Projecten', 'Core Variable'),
'DOW', 'Service Charges',
'HB', 'Servicekosten Core Variabel',
'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)),
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'),
COALESCE(exact_code, alg_gebouw_code)) exact_code, -- C1
SUBSTR (
DECODE (aaxx_get_user, 'DBS', DECODE (ks.prs_kostensoort_upper, 'CV EIG BOUW PL', '913757',
'CV EIG INST PL', '913757',
aaxx_get_lev2_dep_code(k.prs_kostenplaats_nr)),
'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))),
'HB', (SELECT kp.prs_kostenplaats_nr FROM prs_kostenplaats kp
WHERE kp.prs_kostenplaats_key = aaxx_get_top_kpn_key (k.prs_kostenplaats_key)),
'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)),
'')
,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,
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,
(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 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 ( ( aaxx_get_user = 'AH'
AND ks.prs_kostensoort_upper LIKE 'CV %'
)
OR
( aaxx_get_user = 'DBS'
AND ks.prs_kostensoort_upper IN (
'CV AFVAL REST',
'CV OND',
'CV GEB NIET PLAN',
'CV INSTAL NIET PLAN',
'CV TERR VERHARD',
'CV TERR NIET PL',
'CV OND TERR',
'CV TERR OVR',
'CV CONS REST',
'CV CONS SERV',
'CV CONS OVR',
'CV CONS AUT',
'CV BEWAK',
'CV PREV CAL',
'CV BEWAK OVR',
'CV SCH',
'CV SCH GLAS',
'CV SCH OVR',
'CV VGM',
'CV GROEN',
'CV EIG BOUW PL',
'CV EIG INST PL',
'NC PROJ',
'CVE INSTAL NIET PLAN',
'CVE GEB NIET PLAN')
)
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 = 'HB'
AND ( ks.prs_kostensoort_upper LIKE 'CV %'
OR ks.prs_kostensoort_upper = 'NC PROJ')
)
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%')
)
)
)
);
-- 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'),
'HB', k.prs_kostenplaats_nr,
'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),
'HB', 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)),
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',
'HB', '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))
) 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'),
COALESCE(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)),
'HB', (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)),
'') 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,
( 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 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 = 'HB'
AND (ks.prs_kostensoort_upper LIKE 'CV %'
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 %')
)
);
-- 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 = 'DBS' 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, fin_verkoopfactuur_c4
)
SELECT fin_verkoopfactuur_id, fin_verkoopfactuur_xmlnode, fin_verkoopfactuur_refkey, fin_verkoopfactuur_aanmaak, '', prs_debiteur_naam, 'FEE' || DECODE (INSTR(prs_kostensoort_oms, ' VJ'), 0 , '', ' VJ'), '', prs_kostensoortgrp_oms, 'FEE' , ROUND(fin_verkoopfactuur_bedrag * ma.marge, 2), fin_btwtabelwaarde_code, fin_verkoopfactuur_maand, 'X', fin_verkoopfactuur_c2, 'X', ok.ordernummer
FROM fin_verkoopfactuur v, mld_opdr o,
(SELECT km.mld_melding_key, fac.safe_to_number (fac_usrdata_code) marge
FROM fac_usrdata ud,
mld_kenmerkmelding km,
mld_kenmerk k,
mld_srtkenmerk sk
WHERE sk.mld_srtkenmerk_omschrijving = 'Marge'
AND sk.mld_srtkenmerk_key = k.mld_srtkenmerk_key
AND k.mld_kenmerk_key = km.mld_kenmerk_key
AND fac.safe_to_number (mld_kenmerkmelding_waarde) = fac_usrdata_key) ma,
(SELECT km.mld_melding_key, mld_kenmerkmelding_waarde ordernummer
FROM mld_kenmerkmelding km,
mld_kenmerk k,
mld_srtkenmerk sk
WHERE sk.mld_srtkenmerk_omschrijving = 'Ordernummer klant'
AND sk.mld_srtkenmerk_key = k.mld_srtkenmerk_key
AND k.mld_kenmerk_key = km.mld_kenmerk_key) ok
WHERE fin_verkoopfactuur_aanmaak = v_logdate
AND fin_verkoopfactuur_xmlnode = 'opdracht'
AND fin_verkoopfactuur_refkey = o.mld_opdr_key
AND o.mld_melding_key = ma.mld_melding_key
AND o.mld_melding_key = ok.mld_melding_key
AND (v.prs_kostensoort_oms = 'NC PROJ' OR v.prs_kostensoort_oms LIKE 'CVE%');
-- 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, prs_debiteur_naam || 'FEE', fin_verkoopfactuur_c2, ma.marge;
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 = '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;
-- HB CV
-- Er wordt een fee van 3% berekend over de factuur indien het contracttype Contracting Party is.
-- In het geval van Managing Agent wordt geen fee berekend.
IF aaxx_get_user = 'HB' 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.03, 2)), fin_btwtabelwaarde_code, fin_verkoopfactuur_maand, 'X', fin_verkoopfactuur_c2, 'X'
FROM fin_verkoopfactuur v, prs_relatietype r, 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 prs_kostensoort_oms LIKE 'CV %'
AND r.prs_relatietype_omschrijving = 'Contracting party'
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
(
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.03, 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
-- Uitleg van de kolommen zoals ze naar Exact gaan:
-- 01 Regelnummer Vaste waarde 0
-- 02 Factuurcode Vaste waarde 3
-- 03 Debiteurnummer Kostenplaatsnummer
-- 04 Referentie <20>Hospitality<74> 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, ',', ''))
|| ','
|| ''
|| ','
|| MAX(fin_verkoopfactuur_c4) -- AADB#34431
|| ','
|| ''
|| ','
|| ''
|| ','
|| TO_CHAR (SYSDATE, 'ddmmyyyy')
|| ','
|| '1'
|| ','
|| ''
|| ','
|| ''
|| ','
|| DECODE(aaxx_get_user, 'DBS', '', '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, 'DBS', '', 'HB', '', 'NMM', '', 'DOW', '', 'DSM', '', 'RABO', '', 'EXPO', '', 'INLO', '', 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, 'DBS', '', 'HB', '', 'NMM', '', 'DOW', '', 'DSM', '', 'RABO', '', 'EXPO', '', 'INLO', '', prs_kostenplaats_nr), fin_verkoopfactuur_c2, DECODE(aaxx_get_user, 'DBS', '', '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 <20>Hospitality services<65> voor catering en <20>SA### vakgroep opdrachtnummer(kenmerk)<29> 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, 'DBS', '', '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',
'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),
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),
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),
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),
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),
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),
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),
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),
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),
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),
d.ins_deel_key)
eenheid
FROM ins_v_deel_gegevens d,
ins_srtdeel sd,
alg_locatie l,
ins_deel id
WHERE d.ins_srtdeel_key = sd.ins_srtdeel_key
AND d.alg_locatie_key = l.alg_locatie_key
AND d.ins_deel_key = id.ins_deel_key
AND id.ins_deel_verwijder IS NULL;
CREATE OR REPLACE VIEW aaxx_v_mjb_taken
AS
SELECT ins_deel_omschrijving,
di.ins_discipline_omschrijving,
sc.ins_srtcontrole_omschrijving,
ins_srtcontroledl_xcp_groep,
ins_srtcontrole_level,
ins_srtcontroledl_xcp_perc,
x.ins_srtcontroledl_xcp_opmerk,
DECODE (ins_srtcontroledl_xcp_eenheid,
4, 'J',
3, 'M',
2, 'W',
1, 'D') eenheid,
ins_srtcontroledl_xcp_periode,
ins_srtcontroledl_xcp_startdat,
ins_srtcontroledl_xcp_eind,
ins_srtcontroledl_xcp_materia,
prs_dienst_omschrijving,
(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,
fac.nextcyclusdatedeel (d.ins_deel_key, sc.ins_srtcontrole_key)
volgende
FROM ins_srtcontrole sc,
ins_srtcontroledl_xcp x,
ins_v_deel_gegevens d,
ins_tab_discipline di,
prs_dienst pd
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(+);
--=============================================================================
-- 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_aanmaak,
prs_kostenplaats_verwijder
)
AS
SELECT k.prs_kostenplaats_nr,
k.prs_kostenplaats_omschrijving,
pf.prs_perslid_naam_full,
k.prs_kostenplaats_aanmaak,
k.prs_kostenplaats_verwijder
FROM prs_kostenplaats k, prs_v_perslid_fullnames_all pf
WHERE k.prs_perslid_key = pf.prs_perslid_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_boekstuknr
)
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 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
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(+);
-------------------------------------------------------------------------------
-- 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
)
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
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
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)
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
)
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
FROM res_v_aanwezigrsv_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_rsv_ruimte_verwijder IS NULL
AND r.res_ruimte_opstel_key = ro.res_ruimte_opstel_key
AND ro.res_ruimte_key = rr.res_ruimte_key
AND ro.res_opstelling_key = o.res_opstelling_key
AND rr.res_ruimte_key = ra.res_ruimte_key
GROUP BY res_rsv_ruimte_key
UNION ALL
SELECT res_rsv_ruimte_key, '' opstelling, 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_v_aanwezigrsv_deel rrd,
res_deel rd,
ins_deel d,
ins_tab_discipline c
WHERE rrd.res_deel_key = rd.res_deel_key
AND d.ins_deel_key = rd.res_ins_deel_key
AND rrd.res_rsv_ruimte_key IS NOT NULL
AND c.ins_discipline_key = rd.res_discipline_key
UNION ALL
SELECT rra.res_rsv_ruimte_key res_rsv_ruimte_key,
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_v_aanwezigrsv_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
)
AS
SELECT rrr.res_reservering_key || '/' || rrr.res_rsv_ruimte_volgnr,
sk.res_srtkenmerk_omschrijving,
aaxx_get_kenmerkwaarde (sk.res_srtkenmerk_kenmerktype,
sk.fac_kenmerkdomein_key,
kw.res_kenmerkreservering_waarde)
FROM res_kenmerk k,
res_srtkenmerk sk,
res_kenmerkwaarde kw,
res_v_aanwezigrsv_ruimte rrr
WHERE rrr.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_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
)
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,
(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
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
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(+)
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), -- 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
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), -- 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)
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), -- 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)
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
-------------------------------------------------------------------------------
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
)
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
FROM ins_deelsrtcontrole dc,
ins_deel d,
ins_srtcontrole sc,
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(+)
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
FROM ins_v_defined_inspect_xcp xcp,
ins_deel d,
ins_srtcontrole sc,
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;
-------------------------------------------------------------------------------
-- 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
)
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
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
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
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;
/
-- 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;
-- De importvelden:
v_locatiecode VARCHAR2(1000);
v_objectomschrijving VARCHAR2(1000);
v_taakcategorie VARCHAR2(1000);
v_taakomschrijving VARCHAR2(1000);
v_taakopmerking VARCHAR2(1000);
v_taakgroep VARCHAR2(1000);
v_taakprioriteit VARCHAR2(1000);
v_taakbtw VARCHAR2(1000);
v_taakkostenplaatsnr VARCHAR2(1000);
v_taakkostenplaatsomschrijving VARCHAR2(1000);
v_taakobjectpercentage VARCHAR2(1000);
v_taakobjectopmerking VARCHAR2(1000);
v_taakobjectperiode VARCHAR2(1000);
v_taakobjectstartjaar VARCHAR2(1000);
v_taakobjecteindjaar VARCHAR2(1000);
v_taakobjectmateriaal VARCHAR2(1000);
v_taakobjectkosten VARCHAR2(1000);
v_taakobjecteenheid VARCHAR2(1000);
v_taakdienst VARCHAR2(1000);
v_extra_veld1 VARCHAR2(1000);
v_extra_veld2 VARCHAR2(1000);
v_extra_veld3 VARCHAR2(1000);
v_extra_veld4 VARCHAR2(1000);
v_extra_veld5 VARCHAR2(1000);
v_deel_key NUMBER(10);
v_discipline_key NUMBER(10);
v_ismjob NUMBER;
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_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 (REPLACE(UPPER (v_newline), ' ') LIKE 'OBJECTOMSCHRIJVING;TAAKCATEGORIE;TAAKOMSCHRIJVING;TAAKOPMERKING;TAAKGROEP;TAAKPRIORITEIT;TAAKBTW;TAAKKOSTENPLAATSNR;TAAKKOSTENPLAATSOMSCHRIJVING;TAAKOBJECTPERCENTAGE;TAAKOBJECTOPMERKING;TAAKOBJECTEENHEID;TAAKOBJECTPERIODE;TAAKOBJECTSTARTJAAR;TAAKOBJECTEINDJAAR;TAAKOBJECTKOSTEN%')
THEN
v_header_is_valid := 1;
ELSE
-- Lees alle veldwaarden
-- v_errormsg := 'Fout opvragen te importeren rij (locatie)';
-- fac.imp_getfield (v_newline, c_fielddelimitor, v_locatiecode);
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 (BTW)';
fac.imp_getfield (v_newline, c_fielddelimitor, v_taakbtw);
v_errormsg := 'Fout opvragen te importeren rij (kostenplaatsnr)';
fac.imp_getfield (v_newline, c_fielddelimitor, v_taakkostenplaatsnr);
v_errormsg := 'Fout opvragen te importeren rij (kostenplaatsomschrijving)';
fac.imp_getfield (v_newline, c_fielddelimitor, v_taakkostenplaatsomschrijving);
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 (extra_veld1)';
fac.imp_getfield (v_newline, c_fielddelimitor, v_extra_veld1);
v_errormsg := 'Fout opvragen te importeren rij (extra_veld2)';
fac.imp_getfield (v_newline, c_fielddelimitor, v_extra_veld2);
v_errormsg := 'Fout opvragen te importeren rij (extra_veld3)';
fac.imp_getfield (v_newline, c_fielddelimitor, v_extra_veld3);
v_errormsg := 'Fout opvragen te importeren rij (extra_veld4)';
fac.imp_getfield (v_newline, c_fielddelimitor, v_extra_veld4);
v_errormsg := 'Fout opvragen te importeren rij (extra_veld5)';
fac.imp_getfield (v_newline, c_fielddelimitor, v_extra_veld5);
-- Controleer of het object bestaat
BEGIN
SELECT ins_deel_key
INTO v_deel_key
FROM ins_deel
WHERE ins_deel_omschrijving = v_objectomschrijving;
EXCEPTION WHEN NO_DATA_FOUND
THEN
aaxx_imp_writelog (
p_import_key, 'E', 'Object bestaat niet',
rec.fac_imp_file_index || ' - ' || v_objectomschrijving);
v_ongeldig := 1;
END;
-- Controleer de 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',
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 NOT IN ('1', '2', '3', '4')
THEN
aaxx_imp_writelog (
p_import_key, 'E', 'Geen of ongeldige eenheid gevonden',
rec.fac_imp_file_index || ' - ' || v_objectomschrijving || ' - ' || v_taakobjecteenheid);
v_ongeldig := 1;
END IF;
-- Controleer 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',
rec.fac_imp_file_index || ' - ' || v_objectomschrijving || ' - ' || v_taakdienst);
END IF;
END IF;
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,
taakbtw,
taakkostenplaatsnr,
taakkostenplaatsomschrijving,
taakobjectpercentage,
taakobjectopmerking,
taakobjectperiode,
taakobjectstartjaar,
taakobjecteindjaar,
taakobjectmateriaal,
taakobjecteenheid,
taakdienst,
extra_veld1,
extra_veld2,
extra_veld3,
extra_veld4,
extra_veld5,
deel_key,
discipline_key,
ismjob)
VALUES (v_locatiecode,
v_objectomschrijving,
v_taakcategorie,
v_taakomschrijving,
v_taakopmerking,
v_taakgroep,
v_taakprioriteit,
v_taakbtw,
v_taakkostenplaatsnr,
v_taakkostenplaatsomschrijving,
v_taakobjectpercentage,
v_taakobjectopmerking,
v_taakobjectperiode,
v_taakobjectstartjaar,
v_taakobjecteindjaar,
v_taakobjectmateriaal,
v_taakobjecteenheid,
v_taakdienst,
v_extra_veld1,
v_extra_veld2,
v_extra_veld3,
v_extra_veld4,
v_extra_veld5,
v_deel_key,
v_discipline_key,
v_ismjob);
END IF;
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_insp_mjob;
/
CREATE OR REPLACE PROCEDURE aaxx_update_insp_mjob (p_import_key IN NUMBER)
AS
CURSOR c
IS
SELECT i.*, d.ins_srtdeel_key, sd.ins_srtdeel_code
FROM aaxx_imp_insp_mjob i, ins_deel d, ins_srtdeel sd
WHERE i.deel_key = d.ins_deel_key
AND d.ins_srtdeel_key = sd.ins_srtdeel_key;
v_errormsg VARCHAR2 (4000);
v_error_hint VARCHAR2 (4000);
oracle_err_mes VARCHAR2 (4000);
oracle_err_num VARCHAR2 (4000);
v_aanduiding VARCHAR2 (1000);
v_ongeldig NUMBER (1);
v_srtcontrole_key NUMBER (10);
v_taakobjectstart VARCHAR2 (15);
v_dienst_key NUMBER (10);
BEGIN
v_ongeldig := 0;
FOR rec IN c
LOOP
BEGIN
BEGIN
v_aanduiding :=
rec.objectomschrijving
|| ' / '
|| rec.taakcategorie
|| ' - '
|| rec.taakomschrijving;
v_errormsg := 'Aanmaken taak ' || v_aanduiding;
SELECT ins_srtcontrole_key
INTO v_srtcontrole_key
FROM ins_srtcontrole
WHERE ins_srtcontrole_omschrijving =
SUBSTR (
TRIM (
rec.ins_srtdeel_code
|| ' - '
|| rec.taakomschrijving),
1,
60);
EXCEPTION
WHEN NO_DATA_FOUND
THEN
-- 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_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,
prs_dienst_key) -- wordt in de toekomst prs_dienst_key
VALUES (
rec.ins_srtdeel_key,
'S',
SUBSTR (
TRIM (
rec.ins_srtdeel_code
|| ' - '
|| rec.taakomschrijving),
1,
60),
rec.discipline_key,
NULL,
0,
rec.taakobjecteenheid,
1,
COALESCE (rec.taakprioriteit, '0'),
v_dienst_key)
RETURNING ins_srtcontrole_key
INTO v_srtcontrole_key;
END;
IF LENGTH (rec.taakobjectstartjaar) = 4
THEN
v_taakobjectstart := '01-01-' || rec.TaakObjectStartjaar;
ELSE
v_taakobjectstart := rec.TaakObjectStartjaar;
END IF;
v_errormsg := 'Aanmaken taak object ' || v_aanduiding || ' ['
|| rec.deel_key || '|'
|| v_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 || '|'
|| TO_DATE (v_taakobjectstart, 'dd-mm-yyyy') || ']';
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_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,
TO_DATE (v_taakobjectstart, 'dd-mm-yyyy'));
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;
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 = SUBSTR(rec.telefoonnummer,1,15),
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;
-- 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 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
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',
'AAFM')
|| ' bevestigingmail afspraak '
|| TO_CHAR (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,
kw.bez_kenmerkwaarde_waarde xemail,
NULL xmobile
FROM fac_tracking t,
bez_afspraak a,
bez_bezoekers b,
bez_kenmerkwaarde kw
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 = kw.bez_bezoekers_key
AND kw.bez_kenmerk_key = DECODE (aaxx_get_user, 'ESSENT', 1001,
'IT', 1022,
'ARCADIS', 1003,
'SABIC', 1000);
-- 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)
-- 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 - 1 / 24;
-- 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;
-- 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,
puserkey IN NUMBER DEFAULT NULL)
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;
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
errormsg := '(0x143d)';
INSERT INTO fin_kenmerkfactuur (fin_factuur_key, fin_kenmerk_key, fin_kenmerkfactuur_waarde)
VALUES (v_factuur_key, 2, DECODE(aaxx_get_user, 'SABIC', 24, 1));
-- 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.getdbversion() >= 'DB36' -- DB36 forward compatible
THEN
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;
ELSE
v_flag_on_fenote := fac.getsetting ('mld_flag_on_fenote');
v_flag_on_bonote := fac.getsetting ('mld_flag_on_bonote');
IF v_flag_on_fenote <> 0 AND v_flag_on_fenote IS NOT NULL
THEN
UPDATE mld_melding
SET mld_melding_flag =
DECODE (opdrkey,
NULL, v_flag_on_fenote,
v_flag_on_bonote)
WHERE mld_melding_key = mldkey
AND ( (mld_melding_flag = v_flag_on_bonote)
OR (mld_melding_flag = 0 OR mld_melding_flag IS NULL));
DBMS_OUTPUT.put_line ('Flag gezet.');
END IF;
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;
/
-------------------------------------------------------------------------------
-- 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_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_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;
GRANT SELECT ON aaxx_exp_uren_dekking TO aait_test;
------ 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