Files
Customer/WZUV/WZUV.SQL
Suzan Wiegerinck e3361bb194 WZUV#79858 Dashboard ICT tickets
svn path=/Customer/trunk/; revision=62765
2023-11-29 15:07:56 +00:00

4333 lines
177 KiB
SQL
Raw Blame History

/* Formatted on 30/3/2023 11:42:10 (QP5 v5.336) */
-- $Id$
--
-- Script containing customer specific sql statements for the FACILITOR database
DEFINE thisfile = 'WZUV.SQL'
DEFINE dbuser = '^WZUV'
SET ECHO ON
SET DEFINE ON
COLUMN fcltlogfile NEW_VALUE fcltlogfile NOPRINT;
COLUMN fcltcusttxt NEW_VALUE fcltcusttxt NOPRINT;
WHENEVER SQLERROR CONTINUE;
SELECT adm.getscriptspoolfile ('&thisfile') AS fcltlogfile FROM DUAL;
SPOOL &fcltlogfile
WHENEVER SQLERROR EXIT;
SELECT adm.checkscriptcust ('&dbuser') AS fcltcusttxt FROM DUAL;
WHENEVER SQLERROR CONTINUE;
---------------------------------------
PROMPT &fcltcusttxt
---------------------------------------
SET DEFINE OFF
------ payload begin -----
CREATE OR REPLACE VIEW WZUV_V_RAP_BEZITTINGEN
(
EXTRA_KEY,
FCLT_F_BEZITTER,
VOORNAAM,
DATUM_UITDIENST,
OBJECTSOORT,
OBJECT
)
AS
SELECT p.prs_perslid_key,
p.prs_perslid_naam_friendly,
pl.prs_perslid_voornaam,
TO_CHAR (uit_dienst.datum_uitdienst, 'dd-mm-yyyy'),
obj.objectsoort,
obj.object
FROM prs_v_perslid_fullnames p,
prs_perslid pl,
(SELECT kl.prs_link_key prs_perslid_key,
fac.safe_to_date (kl.prs_kenmerklink_waarde, 'dd-mm-yyyy') datum_uitdienst
FROM prs_kenmerklink kl, prs_kenmerk k
WHERE k.prs_kenmerk_key = kl.prs_kenmerk_key
AND k.prs_kenmerk_upper = 'DATUM UIT DIENST'
AND kl.prs_kenmerklink_verwijder IS NULL) uit_dienst,
(SELECT d.ins_alg_ruimte_key prs_perslid_key,
sd.ins_srtdeel_omschrijving objectsoort,
d.ins_deel_omschrijving || ' - ' || d.ins_deel_opmerking object
FROM ins_deel d,
ins_srtdeel sd,
ins_srtgroep sg,
ins_tab_discipline dp
WHERE d.ins_srtdeel_key = sd.ins_srtdeel_key
AND sd.ins_srtgroep_key = sg.ins_srtgroep_key
AND sg.ins_discipline_key = dp.ins_discipline_key
AND UPPER (dp.INS_DISCIPLINE_OMSCHRIJVING) =
'ICT MIDDELEN'
AND d.ins_alg_ruimte_type = 'P'
AND d.INS_DEEL_VERWIJDER IS NULL
AND ( d.ins_deel_vervaldatum IS NULL
OR d.ins_deel_vervaldatum > TRUNC (SYSDATE))) obj,
(SELECT kl.prs_link_key prs_perslid_key,
kl.prs_kenmerklink_waarde email_manager
FROM prs_kenmerklink kl, prs_kenmerk k
WHERE k.prs_kenmerk_key = kl.prs_kenmerk_key
AND k.prs_kenmerk_upper = 'MAIL MANAGER'
AND kl.prs_kenmerklink_verwijder IS NULL) manager
WHERE p.prs_perslid_key = manager.prs_perslid_key
AND p.prs_perslid_key = obj.prs_perslid_key
AND p.prs_perslid_key = pl.prs_perslid_key
AND p.prs_perslid_key = uit_dienst.prs_perslid_key;
CREATE OR REPLACE PACKAGE WZUV
AS
PROCEDURE noti_vertrek_mdw;
PROCEDURE bes_artikelgroep_hb (p_bestelling_key IN NUMBER);
PROCEDURE bes_uuid_topgeschenken (p_bestelling_key IN NUMBER);
END;
/
CREATE OR REPLACE PACKAGE BODY WZUV
AS
PROCEDURE noti_vertrek_mdw
AS
p_applname VARCHAR2 (50) := 'NOTIFICATIE_UIT_DIENST';
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_errorhint VARCHAR2 (100);
v_errormsg VARCHAR2 (200);
v_srtnotificatie_key NUMBER (10);
v_notificatie_refkey NUMBER (10);
v_onderwerp VARCHAR2 (100);
--- Personen die uit dienst gaan met objecten in bezit
--- En nog niet eerder genotificeerd
CURSOR C IS
SELECT p.prs_perslid_email,
p.prs_perslid_key,
p.prs_perslid_voornaam,
manager.email_manager,
TO_DATE (TRUNC (uit_dienst.datum_uitdienst), 'dd-mm-yy') datum_uitdienst
FROM prs_perslid p,
( SELECT d.ins_alg_ruimte_key prs_perslid_key,
LISTAGG (
d.ins_deel_omschrijving
|| ' - '
|| d.ins_deel_opmerking,
CHR (10))
WITHIN GROUP (ORDER BY d.ins_deel_omschrijving) objecten
FROM ins_deel d,
ins_srtdeel sd,
ins_srtgroep sg,
ins_tab_discipline dp
WHERE d.ins_srtdeel_key = sd.ins_srtdeel_key
AND sd.ins_srtgroep_key = sg.ins_srtgroep_key
AND sg.ins_discipline_key = dp.ins_discipline_key
AND UPPER (dp.ins_discipline_omschrijving) =
'ICT MIDDELEN'
AND d.ins_alg_ruimte_type = 'P'
AND d.ins_deel_verwijder IS NULL
AND ( d.ins_deel_vervaldatum IS NULL
OR d.ins_deel_vervaldatum > TRUNC (SYSDATE))
GROUP BY d.ins_alg_ruimte_key) objecten,
(SELECT kl.prs_link_key prs_perslid_key,
kl.prs_kenmerklink_waarde email_manager
FROM prs_kenmerklink kl, prs_kenmerk k
WHERE k.prs_kenmerk_key = kl.prs_kenmerk_key
AND k.prs_kenmerk_key = 1041
AND kl.prs_kenmerklink_verwijder IS NULL) manager,
(SELECT kl.prs_link_key prs_perslid_key,
fac.safe_to_date (kl.prs_kenmerklink_waarde,
'dd-mm-yyyy') datum_uitdienst
FROM prs_kenmerklink kl, prs_kenmerk k
WHERE k.prs_kenmerk_key = kl.prs_kenmerk_key
AND k.prs_kenmerk_key = 1040
AND kl.prs_kenmerklink_verwijder IS NULL)
uit_dienst,
(SELECT kl.prs_link_key prs_perslid_key,
kl.prs_kenmerklink_waarde notificatie_verstuurd
FROM prs_kenmerklink kl, prs_kenmerk k
WHERE k.prs_kenmerk_key = kl.prs_kenmerk_key
AND k.prs_kenmerk_key = 1120
AND kl.prs_kenmerklink_verwijder IS NULL)
notificatie
WHERE p.prs_perslid_key = manager.prs_perslid_key
AND p.prs_perslid_key = objecten.prs_perslid_key
AND p.prs_perslid_key = uit_dienst.prs_perslid_key
AND p.prs_perslid_key = notificatie.prs_perslid_key(+)
AND notificatie.notificatie_verstuurd IS NULL
AND uit_dienst.datum_uitdienst <= SYSDATE + 21;
BEGIN
FOR rec IN c
LOOP
v_onderwerp := 'Uw uitdiensttreding op ' || rec.datum_uitdienst;
v_errorhint := 'Notificatie uitdiensttreden niet aangemaakt';
SELECT fac_srtnotificatie_key
INTO v_srtnotificatie_key
FROM fac_srtnotificatie
WHERE fac_srtnotificatie_code = 'CUST04';
SELECT fac_usrrap_key
INTO v_notificatie_refkey
FROM fac_usrrap
WHERE UPPER (fac_usrrap_view_name) = 'WZUV_V_RAP_BEZITTINGEN';
INSERT INTO fac_notificatie (fac_srtnotificatie_key,
fac_notificatie_status,
prs_perslid_key_receiver,
fac_notificatie_receiver_email,
fac_notificatie_oms,
fac_notificatie_refkey,
fac_notificatie_extrakey,
fac_notificatie_prioriteit,
fac_notificatie_lang)
VALUES (v_srtnotificatie_key,
2,
8616, --- rec.prs_perslid_key,
'r.dejonge@wzuveluwe.nl', ---'hip@wzuveluwe.nl;' || rec.email_manager ||';'|| p.prs_perslid_email,
v_onderwerp,
v_notificatie_refkey,
rec.prs_perslid_key,
2,
'NL');
-- bij perslid markering zetten dat de mail verstuurd is
flx.setflex ('PRS',
1120,
rec.prs_perslid_key,
'P',
TO_CHAR (TRUNC (SYSDATE)));
COMMIT;
fac.writelog (p_applname,
'I',
'Mail naar ' || rec.prs_perslid_email,
'Uit dienst ' || rec.datum_uitdienst);
END LOOP;
EXCEPTION
WHEN OTHERS
THEN
v_errorhint := 'Notificatie uit dienst';
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
fac.writelog (
p_applname,
'E',
'Error ' || oracle_err_num || '/' || oracle_err_mes,
v_errorhint);
END;
--- deze procedure was eigenlijk voor artikelgroepen Hartingbank
--- maar we kunnen deze ook gebruiken voor Topgeschenken
PROCEDURE bes_artikelgroep_hb (p_bestelling_key IN NUMBER)
AS
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_errormsg VARCHAR2 (200);
v_kenmerk_key NUMBER (10);
v_kenmerk_key_uuid NUMBER (10);
CURSOR bestelitem IS
SELECT sd.bes_srtdeel_opmerking artikelgroep,
bi.bes_bestelling_item_key
FROM bes_srtdeel sd, bes_bestelling_item bi, bes_bestelling b
WHERE b.bes_bestelling_key = p_bestelling_key
AND sd.bes_srtdeel_opmerking IS NOT NULL
AND bi.bes_srtdeel_key = sd.bes_srtdeel_key
AND b.bes_bestelling_key = bi.bes_bestelling_key
AND sd.prs_bedrijf_key = 9839 --- alleen voor Hartinbank
AND TRUNC (sd.bes_srtdeel_aanmaak) =
TRUNC (b.bes_bestelling_datum);
CURSOR bestelitem_tg IS
SELECT sd.bes_srtdeel_opmerking uuid,
bi.bes_bestelling_item_key
FROM bes_srtdeel sd, bes_bestelling_item bi, bes_bestelling b
WHERE b.bes_bestelling_key = p_bestelling_key
AND sd.bes_srtdeel_opmerking IS NOT NULL
AND bi.bes_srtdeel_key = sd.bes_srtdeel_key
AND b.bes_bestelling_key = bi.bes_bestelling_key
AND sd.prs_bedrijf_key = 41681 --- alleen voor Topgeschenken
AND TRUNC (sd.bes_srtdeel_aanmaak) =
TRUNC (b.bes_bestelling_datum);
BEGIN
SELECT k.bes_kenmerk_key
INTO v_kenmerk_key
FROM bes_srtkenmerk sk, bes_kenmerk k
WHERE sk.bes_srtkenmerk_upper = 'ARTIKELGROEP'
AND sk.bes_srtkenmerk_key = k.bes_srtkenmerk_key;
SELECT k.bes_kenmerk_key
INTO v_kenmerk_key_uuid
FROM bes_kenmerk k
WHERE k.BES_KENMERK_OMSCHRIJVING = 'UUID';
FOR rec IN bestelitem
LOOP
-- we kunnen rustig een insert doen, het is nooit een update
INSERT INTO bes_kenmerkbesteli (bes_bestelling_item_key,
bes_kenmerk_key,
bes_kenmerkbesteli_waarde)
VALUES (rec.bes_bestelling_item_key,
v_kenmerk_key,
rec.artikelgroep);
COMMIT;
END LOOP;
FOR rec IN bestelitem_tg
LOOP
-- we kunnen rustig een insert doen, het is nooit een update
INSERT INTO bes_kenmerkbesteli (bes_bestelling_item_key,
bes_kenmerk_key,
bes_kenmerkbesteli_waarde)
VALUES (rec.bes_bestelling_item_key,
v_kenmerk_key_uuid,
rec.uuid);
COMMIT;
END LOOP;
END;
PROCEDURE bes_uuid_topgeschenken (p_bestelling_key IN NUMBER)
AS
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_errormsg VARCHAR2 (200);
v_kenmerk_key NUMBER (10);
CURSOR bestelitem IS
SELECT sd.bes_srtdeel_opmerking uuid,
bi.bes_bestelling_item_key
FROM bes_srtdeel sd, bes_bestelling_item bi, bes_bestelling b
WHERE b.bes_bestelling_key = p_bestelling_key
AND sd.bes_srtdeel_opmerking IS NOT NULL
AND bi.bes_srtdeel_key = sd.bes_srtdeel_key
AND b.bes_bestelling_key = bi.bes_bestelling_key
AND sd.prs_bedrijf_key = 41681 --- alleen voor Topgeschenken
AND TRUNC (sd.bes_srtdeel_aanmaak) =
TRUNC (b.bes_bestelling_datum);
BEGIN
SELECT k.bes_kenmerk_key
INTO v_kenmerk_key
FROM bes_kenmerk k
WHERE k.BES_KENMERK_OMSCHRIJVING = 'UUID';
FOR rec IN bestelitem
LOOP
-- we kunnen rustig een insert doen, het is nooit een update
INSERT INTO bes_kenmerkbesteli (bes_bestelling_item_key,
bes_kenmerk_key,
bes_kenmerkbesteli_waarde)
VALUES (rec.bes_bestelling_item_key,
v_kenmerk_key,
rec.uuid);
COMMIT;
END LOOP;
END;
END;
/
CREATE OR REPLACE PROCEDURE wzuv_daily
AS
BEGIN
-- notificatiejob voor medewerkers uit dienst
wzuv.noti_vertrek_mdw ();
END;
/
CREATE OR REPLACE PROCEDURE wzuv_import_perslid (p_import_key IN NUMBER)
AS
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_errormsg VARCHAR2 (400);
v_errorhint VARCHAR2 (400);
v_aantal_in_FCLT NUMBER;
BEGIN
v_errorhint := 'Generieke update';
-- de sequence array staat beschreven in PRS_PAC.SRC bij de prs.import_perslid proc
prs.import_perslid (
p_import_key,
'0;0;0;0;0;0;5;14;13;10;'
|| '0;12;11;15;18;19;20;3;0;1;'
|| '9;0;0;0;0;0;17;23;22;0;'
|| '4;5;0;0;0;0;0;0;0;0;'
|| '0;0;0;0;0;0',
'"Mdw.";"Volledige_naam";"E-mail_werk";"Werklocatie";"OE";"Organisatorische_eenheid";"Kostenplaats";"Code_Functie";"Omschrijving_functie";"Roepnaam";"Voorvoegsel_partner";"Geb.naam_partner";"Voorv._geb.naam";"Geboortenaam";"Naamgebruik_code";"Datum_in_dienst";"Datum_uit_dienst";"Geslacht";"Telefoonnr._werk";"Mobiel_werk";"Naam";"E-mail_werk_2";"Naam_2"%');
COMMIT;
-- De os_login kan worden afgeleid vanuit het email adres
UPDATE FAC_IMP_PERSLID
SET prs_perslid_oslogin =
(TRIM (
SUBSTR (prs_perslid_email,
1,
INSTR (prs_perslid_email, '@', 1) - 1)));
--- overbodige tekens uit het perslidnummer vewijderen
UPDATE FAC_IMP_PERSLID
SET prs_perslid_nr = TRIM (prs_perslid_nr);
--- de tab uit het perslidnummer verwijderen
UPDATE FAC_IMP_PERSLID
SET prs_perslid_nr = REPLACE (prs_perslid_nr, CHR (9));
--- INACTIEF
--- De afdelingnaam kan worden herleid worden obv de afdelingomschrijving
--UPDATE fac_imp_perslid i
-- SET prs_afdeling_naam =
-- (SELECT a.prs_afdeling_naam
-- FROM prs_afdeling a
-- WHERE a.prs_afdeling_naam = i.prs_kenmerk6
-- AND a.prs_afdeling_verwijder IS NULL
-- AND a.prs_kostenplaats_key IS NOT NULL);
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 wzuv_import_perslid;
/
CREATE OR REPLACE PROCEDURE wzuv_update_perslid (p_import_key IN NUMBER)
IS
v_count_prs_import NUMBER (10);
v_errormsg VARCHAR2 (1000);
v_errorhint VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_aanduiding VARCHAR2 (200);
v_count_error NUMBER (10);
-- Alle medewerkers (bedrijf is WZU, key 41) verwijderen die niet meer in import bestand voorkomen.
-- Match bij WZUV is personeelnummer, hieronder de query om alle personen te verwijderen die:
-- a) niet meer in het importbestand staan, wel in Facilitor, en
-- b) waarvan de persoon in Facilitor een gevulde personeelsnummer heeft (leeg personeelsnummer van af blijven, dit handmatig ingevoerde persleden)
-- c) waarvan de persoon in Facilitor niet begint met een _ in de loginnaam (ook van af blijven)
CURSOR c_del IS
SELECT p.prs_perslid_key, p.prs_perslid_nr, pf.prs_perslid_naam_full
FROM fac_imp_perslid i,
prs_perslid p,
prs_v_perslid_fullnames_all pf,
prs_v_afdeling a
WHERE UPPER (p.prs_perslid_nr) = UPPER (i.prs_perslid_nr(+))
AND p.prs_perslid_verwijder IS NULL
AND SUBSTR (p.prs_perslid_oslogin, 1, 1) <> '_'
AND p.prs_perslid_nr IS NOT NULL
AND pf.prs_perslid_key = p.prs_perslid_key
AND i.prs_perslid_nr IS NULL
AND p.prs_afdeling_key = a.prs_afdeling_key
AND a.prs_bedrijf_key = 41
ORDER BY 2;
CURSOR c_uit IS
SELECT p.prs_perslid_key,
p.prs_perslid_nr,
TO_CHAR (
fac.safe_to_date (TO_CHAR (ip.prs_kenmerk1), 'yyyy-mm-dd'),
'dd-mm-yyyy') datum_uit
FROM fac_imp_perslid ip, prs_perslid p
WHERE ip.prs_perslid_nr = p.prs_perslid_nr
AND ip.prs_kenmerk1 IS NOT NULL;
CURSOR c_mgr IS
SELECT p.prs_perslid_key, p.prs_perslid_nr, ip.prs_kenmerk3 mail_mgr
FROM fac_imp_perslid ip, prs_perslid p
WHERE ip.prs_perslid_nr = p.prs_perslid_nr
AND ip.prs_kenmerk3 IS NOT NULL;
v_count NUMBER;
BEGIN
-- generic update
-- 'LOGIN' betekent dat op basis van Login wordt gematched.
-- 'NR' betekent dat op basis van Personeelsnummer wordt gematched.
-- 'A' betekent altijd alle (andere/overige) werkplekken verwijderen
SELECT COUNT (*)
INTO v_count_prs_import
FROM prs_v_aanwezigperslid p, fac_imp_perslid ip
WHERE p.prs_perslid_nr IS NOT NULL
AND UPPER (p.prs_perslid_nr) = UPPER (ip.prs_perslid_nr);
IF (v_count_prs_import >= 500)
THEN
prs.update_perslid (p_import_key, 'NR', NULL);
-- Verwijder personen die niet meer in de import voorkomen.
FOR rec IN c_del
LOOP
BEGIN
prs.delete_perslid (p_import_key, rec.prs_perslid_key);
END;
END LOOP;
FOR rec IN c_uit
LOOP
BEGIN
v_aanduiding := rec.prs_perslid_nr;
--- Datum uit dienst opnemen bij perslid
flx.setflex ('PRS',
1040,
rec.prs_perslid_key,
'P',
rec.datum_uit);
END;
END LOOP;
FOR rec IN c_mgr
LOOP
BEGIN
v_aanduiding := rec.prs_perslid_nr;
--- Mailadres manager opnemen bij perslid
flx.setflex ('PRS',
1041,
rec.prs_perslid_key,
'P',
rec.mail_mgr);
EXCEPTION
WHEN OTHERS
THEN
v_count_error := v_count_error + 1;
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg :=
' (ORACLE error number = <'
|| oracle_err_num
|| '> ORACLE error message = <'
|| oracle_err_mes
|| '>)';
fac.imp_writelog (p_import_key,
'E',
v_aanduiding || v_errormsg,
v_errorhint);
END;
END LOOP;
ELSE
IF (v_count_prs_import = 0)
THEN
fac.imp_writelog (
p_import_key,
'S',
'Geen juist bestand met te importeren personen aangetroffen!',
'');
ELSE
fac.imp_writelog (
p_import_key,
'E',
'Verschil tussen het actuele aantal en het te importeren aantal personen te groot',
'#personen importbestand = ' || TO_CHAR (v_count_prs_import));
END IF;
END IF;
END wzuv_update_perslid;
/
CREATE OR REPLACE PROCEDURE wzuv_import_client (p_import_key IN NUMBER)
AS
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_errormsg VARCHAR2 (400);
v_errorhint VARCHAR2 (400);
v_aantal_in_FCLT NUMBER;
BEGIN
v_errorhint := 'Generieke update';
UPDATE FAC_IMP_FILE
SET fac_imp_file_line = REPLACE (fac_imp_file_line, ',', ';')
WHERE fac_import_key = p_import_key;
UPDATE FAC_IMP_FILE
SET fac_imp_file_line = REPLACE (fac_imp_file_line, '"', '')
WHERE fac_import_key = p_import_key;
-- de sequence array staat beschreven in PRS_PAC.SRC bij de prs.import_perslid proc
prs.import_perslid (
p_import_key,
'0;0;0;0;0;0;1;4;3;0;'
|| '2;6;5;8;7;0;0;0;0;1;'
|| '1;0;0;0;0;0;9;10;0;0;'
|| '0;0;0;0;0;0;0;0;0;0;'
|| '0;0;0;0;0;0',
-- 'identificatie;voornaam;initialen;tussenvoegsel;achternaam eigen;tussenvoegsel partner;achternaam partner;geslacht;naamsamenstelling;geboortedatum;straat;huisnummer;huisnummertoevoeging;postcode;plaats;BSN;locatie naam;locatie id%');
'identificatie;initialen;tussenvoegsel;achternaam eigen;tussenvoegsel partner;achternaam partner;geslacht;naamsamenstelling;locatie naam;locatie id%');
--- De afdeling is altijd 'CLIENT'
UPDATE FAC_IMP_PERSLID I
SET PRS_AFDELING_NAAM = 'CLIENT';
--- De functie is altijd 'Cli<6C>nt'
UPDATE FAC_IMP_PERSLID I
SET PRS_SRTPERSLID_OMSCHRIJVING = 'Cli<EFBFBD>nt';
--- Om te voorkomen dat cli<6C>ntnummers identiek zijn aan personeelsnummers vullen we deze aan
UPDATE FAC_IMP_PERSLID I
SET PRS_PERSLID_NR = 'Nedap-' || prs_perslid_nr;
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 wzuv_import_client;
/
CREATE OR REPLACE PROCEDURE wzuv_update_client (p_import_key IN NUMBER)
IS
-- Alle cli<6C>nten (bedrijf is Cli<6C>nt, key 8393) verwijderen die niet meer in import bestand voorkomen.
-- Match bij WZUV is personeelnummer, hieronder de query om alle personen te verwijderen die:
-- a) niet meer in het importbestand staan, wel in Facilitor, en
-- b) waarvan de persoon in Facilitor niet begint met een _ in de loginnaam (ook van af blijven)
CURSOR c_del IS
SELECT p.prs_perslid_key, p.prs_perslid_nr, pf.prs_perslid_naam_full
FROM fac_imp_perslid i,
prs_perslid p,
prs_v_perslid_fullnames_all pf,
prs_v_afdeling a
WHERE UPPER (p.prs_perslid_nr) = UPPER (i.prs_perslid_nr(+))
AND p.prs_perslid_verwijder IS NULL
AND SUBSTR (p.prs_perslid_oslogin, 1, 1) <> '_'
AND pf.prs_perslid_key = p.prs_perslid_key
AND i.prs_perslid_nr IS NULL
AND p.prs_afdeling_key = a.prs_afdeling_key
AND a.prs_bedrijf_key = 8393
ORDER BY 2;
v_count NUMBER;
BEGIN
-- generic update
-- 'LOGIN' betekent dat op basis van Login wordt gematched.
-- 'NR' betekent dat op basis van Personeelsnummer wordt gematched.
-- 'A' betekent altijd alle (andere/overige) werkplekken verwijderen
prs.update_perslid (p_import_key, 'NR', NULL);
-- Verwijder personen die niet meer in de import voorkomen.
FOR rec IN c_del
LOOP
BEGIN
prs.delete_perslid (p_import_key, rec.prs_perslid_key);
END;
END LOOP;
END wzuv_update_client;
/
CREATE OR REPLACE FORCE VIEW WZUV_V_INS_QRC_RUIMTE
(
FCLT_3D_LOCATIE_KEY,
FCLT_F_LOCATIE,
FCLT_F_GEBOUW,
PLAATS,
SOORTRUIMTE,
INS_ALG_RUIMTE_TYPE,
ALG_RUIMTE_OMSCHRIJVING,
ALG_DISTRICT_KEY,
ALG_RUIMTE_NR,
ALG_RUIMTE_KEY,
HIDE_F_BOOKMARK_ID
)
AS
SELECT l.alg_locatie_key,
l.alg_locatie_omschrijving,
x.alg_gebouw_naam,
SUBSTR (x.alg_plaatsaanduiding, 7) plaats,
x.alg_ruimte_omschrijving soortruimte,
sr.alg_srtruimte_omschrijving,
r.alg_ruimte_omschrijving,
l.alg_district_key,
x.alg_plaatsaanduiding,
r.alg_ruimte_key,
b.fac_bookmark_id
FROM ALG_V_ALLONRGOED_GEGEVENS x,
alg_locatie l,
alg_district di,
fac_bookmark b,
alg_ruimte r,
alg_srtruimte sr
WHERE b.fac_bookmark_naam = 'QRC naar ruimte'
AND X.ALG_RUIMTE_KEY = R.ALG_RUIMTE_KEY
AND R.ALG_SRTRUIMTE_KEY = SR.ALG_SRTRUIMTE_KEY
AND x.alg_locatie_key = L.ALG_LOCATIE_KEY
AND l.alg_district_key = di.alg_district_key;
--8441 Huismeester
--1842 Huismeester/Technische dienst
--1786 Medewerker Facilitaire dienst
--1845 Assistent Technische dienst
CREATE OR REPLACE VIEW WZUV_V_HUISMEESTERS
(
prs_perslid_key,
naam,
verwijder
)
AS
SELECT prs_perslid_key,
prs_perslid_naam
|| ', '
|| prs_perslid_tussenvoegsel
|| ' ('
|| prs_perslid_voornaam
|| ')' AS naam,
prs_perslid_verwijder
FROM prs_perslid
WHERE prs_srtperslid_key IN (8441,
1842,
1786,
1845,
33241);
CREATE OR REPLACE VIEW WZUV_V_GEBOUW_KPL
(
kpl_key,
omschrijving
)
AS
SELECT prs_kostenplaats_key,
prs_kostenplaats_nr || ' ' || prs_kostenplaats_omschrijving
FROM PRS_V_AANWEZIGKOSTENPLAATS
WHERE prs_kostenplaats_module = 'ALG';
COMMIT;
-- alle ruimtereserveringen en catering met status 5 kan gefactureerd worden
-- en cateraar heeft aangegeven dat het geleverd is
CREATE OR REPLACE VIEW WZUV_V_RAP_RES
(
PERSNR,
RESERVERING,
ARTIKELCODE,
AANTAL,
BEDRAG,
FACTUURPERIODE,
SOORT,
OMSCHRIJVING,
INT_EXT,
KOSTENPLAATS,
RES_RSV_RUIMTE_KEY,
MAAND
)
AS
SELECT CASE
WHEN UPPER (p.prs_perslid_nr) LIKE 'NEDAP%'
THEN
SUBSTR (p.prs_perslid_nr, 7)
ELSE
p.prs_perslid_nr
END AS persnr,
rrr.res_reservering_key || '/' || rrr.res_rsv_ruimte_volgnr,
TO_CHAR (ar.alg_ruimte_key),
COALESCE ((rrr.res_rsv_ruimte_tot - rrr.res_rsv_ruimte_van) * 24,
0) duur_ruimte,
rrr.res_rsv_ruimte_prijs,
TO_CHAR (rrr.res_rsv_ruimte_van, 'mm-yyyy') factuurperiode,
'Ruimte',
TO_CHAR (rrr.res_rsv_ruimte_van, 'month yyyy')
|| ' - Reserveringsnummer: '
|| rrr.res_reservering_key
|| '/'
|| rrr.res_rsv_ruimte_volgnr
|| ' - '
|| rr.res_ruimte_nr aanduiding,
DECODE (prs_afdeling_key, 422, 'Cli<EFBFBD>nt', 'Intern') soort,
kpl_ruimte.prs_kostenplaats_nr,
rrr.res_rsv_ruimte_key,
TO_CHAR (rrr.res_rsv_ruimte_van, 'mm')
FROM res_rsv_ruimte rrr,
prs_perslid p,
prs_kostenplaats kp,
res_v_rsv_ruimte_2_alg_ruimte ar,
alg_v_allonroerendgoed aog,
res_ruimte rr,
(SELECT kpr.*, kpl.prs_kostenplaats_nr
FROM alg_onrgoedkenmerk kpr, prs_kostenplaats kpl
WHERE kpr.alg_kenmerk_key = 1061
AND kpr.alg_onrgoedkenmerk_waarde =
kpl.prs_kostenplaats_key) kpl_ruimte
WHERE rrr.res_status_bo_key = 5
AND rrr.res_rsv_ruimte_dirtlevel = 0
AND rrr.res_rsv_ruimte_verwijder IS NULL
AND res_rsv_ruimte_host_key = p.prs_perslid_key
AND rrr.prs_kostenplaats_key = kp.prs_kostenplaats_key(+)
AND ar.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key
AND ar.res_ruimte_key = rr.res_ruimte_key
AND ar.alg_ruimte_key = aog.alg_ruimte_key
AND kpl_ruimte.alg_onrgoed_key(+) = aog.alg_gebouw_key
UNION ALL
SELECT CASE
WHEN UPPER (p.prs_perslid_nr) LIKE 'NEDAP%'
THEN
SUBSTR (p.prs_perslid_nr, 7)
ELSE
p.prs_perslid_nr
END AS persnr,
rrr.res_reservering_key || '/' || rrr.res_rsv_ruimte_volgnr,
a.res_artikel_nr,
ra.res_rsv_artikel_aantal,
ra.res_rsv_artikel_prijs,
TO_CHAR (rrr.res_rsv_ruimte_van, 'mm-yyyy') factuurperiode,
'Catering',
TO_CHAR (rrr.res_rsv_ruimte_van, 'month yyyy')
|| ' - '
|| TO_CHAR (rrr.res_reservering_key)
|| '/'
|| TO_CHAR (rrr.res_rsv_ruimte_volgnr)
|| ' - '
|| TO_CHAR (a.res_artikel_omschrijving) aanduiding,
DECODE (p.prs_afdeling_key, 422, 'Cli<EFBFBD>nt', 'Intern') soort,
kpl_cat.prs_kostenplaats_nr,
rrr.res_rsv_ruimte_key,
TO_CHAR (rrr.res_rsv_ruimte_van, 'mm')
FROM res_rsv_artikel ra,
res_rsv_ruimte rrr,
res_artikel a,
prs_perslid p,
prs_kostenplaats kp,
res_v_rsv_ruimte_2_alg_ruimte ar,
alg_v_allonroerendgoed aog,
(SELECT kpr.*, kpl.prs_kostenplaats_nr
FROM alg_onrgoedkenmerk kpr, prs_kostenplaats kpl
WHERE kpr.alg_kenmerk_key = 1060
AND kpr.alg_onrgoedkenmerk_waarde =
kpl.prs_kostenplaats_key) kpl_cat
WHERE ra.res_status_bo_key = 5
AND rrr.res_rsv_ruimte_flag = 2
AND ra.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key
AND ra.res_artikel_key = a.res_artikel_key
AND ra.res_rsv_artikel_dirtlevel = 0
AND ra.res_rsv_artikel_verwijder IS NULL
AND rrr.res_rsv_ruimte_host_key = p.prs_perslid_key
AND ar.res_rsv_ruimte_key(+) = rrr.res_rsv_ruimte_key
AND rrr.prs_kostenplaats_key = kp.prs_kostenplaats_key(+)
AND ( aog.alg_ruimte_key = rrr.alg_ruimte_key
OR aog.alg_ruimte_key = ar.alg_ruimte_key)
AND kpl_cat.alg_onrgoed_key(+) = aog.alg_gebouw_key;
CREATE OR REPLACE VIEW WZUV_V_RUIMTES
AS
SELECT alg_onroerendgoed_keys,
alg_gebouw_code
|| ' - '
|| alg_verdieping_omschrijving
|| ' - '
|| alg_ruimte_nr
|| ' - '
|| alg_ruimte_omschrijving AS RUIMTE
FROM alg_v_allonrgoed_gegevens
WHERE alg_ruimte_key IS NOT NULL;
CREATE OR REPLACE VIEW WZUV_V_APPARTEMENTEN
AS
SELECT r.alg_ruimte_key,
og.alg_gebouw_code
|| '-'
|| og.alg_verdieping_code
|| '-'
|| og.alg_ruimte_omschrijving AS APPARTEMENT
FROM alg_v_allonrgoed_gegevens og, alg_ruimte r
WHERE og.alg_type = 'R'
AND r.alg_ruimte_key = og.alg_ruimte_key
AND r.alg_srtruimte_key = 17;
CREATE OR REPLACE PROCEDURE wzuv_select_reservering (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2)
AS
-- status is geregistreerd (2)
-- de reservering ligt in het verleden
-- dan kan de ruimte prijs berekend worden
CURSOR cres IS
SELECT res_rsv_ruimte_key,
res_reservering_key || '/' || res_rsv_ruimte_volgnr aanduiding
FROM res_rsv_ruimte rrr
WHERE rrr.res_status_bo_key = 2
AND rrr.res_rsv_ruimte_dirtlevel = 0
AND rrr.res_rsv_ruimte_verwijder IS NULL
AND fac.count_work_days (res_rsv_ruimte_tot, SYSDATE) > 0;
-- catering is geleverd (flag = 2)
-- dan mag de catering berekend worden
-- voor de zekerheid controleren we ook of de reservering in het verleden ligt
CURSOR cart IS
SELECT TO_CHAR (rrr.res_reservering_key)
|| '/'
|| TO_CHAR (rrr.res_rsv_ruimte_volgnr)
|| ' - '
|| TO_CHAR (a.res_artikel_omschrijving) aanduiding,
ra.res_rsv_ruimte_key,
ra.res_rsv_artikel_key,
ra.res_artikel_key,
a.res_artikel_omschrijving
FROM res_rsv_artikel ra, res_rsv_ruimte rrr, res_artikel a
WHERE ra.res_status_bo_key = 2
AND ra.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key
AND ra.res_artikel_key = a.res_artikel_key
AND ra.res_rsv_artikel_dirtlevel = 0
AND ra.res_rsv_artikel_verwijder IS NULL
AND fac.count_work_days (res_rsv_artikel_levering, SYSDATE) >
0
AND rrr.res_rsv_ruimte_flag = 2;
v_prijs NUMBER (9, 2);
v_errorhint VARCHAR2 (1000);
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
BEGIN
FOR rc IN cres
LOOP
BEGIN
v_errorhint := 'Fout bij bepalen res_rsv_ruimte_prijs.';
SELECT res.getruimteprijs (rc.res_rsv_ruimte_key)
INTO v_prijs
FROM DUAL;
v_errorhint := 'Fout bij bijwerken res_rsv_ruimte_prijs.';
UPDATE res_rsv_ruimte
SET res_status_bo_key = 5, res_rsv_ruimte_prijs = v_prijs
WHERE res_rsv_ruimte_key = rc.res_rsv_ruimte_key;
fac.trackaction ('RESAFM',
rc.res_rsv_ruimte_key,
NULL,
NULL,
NULL);
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg :=
' ORACLE (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.writelog (p_applname,
'W',
rc.aanduiding || v_errormsg,
v_errorhint);
COMMIT;
END;
END LOOP;
FOR rc IN cart
LOOP
BEGIN
v_errorhint := 'Fout bij bepalen res_rsv_artikel_prijs.';
SELECT res.getartikelprijs (rc.res_rsv_artikel_key)
INTO v_prijs
FROM DUAL;
v_errorhint := 'Fout bij bijwerken res_rsv_artikel_prijs.';
UPDATE res_rsv_artikel
SET res_status_bo_key = 5,
res_rsv_artikel_prijs = v_prijs,
res_rsv_artikel_inkoopprijs =
(SELECT res_artikel_inkoopprijs
FROM res_artikel
WHERE res_artikel_key = rc.res_artikel_key),
res_rsv_artikel_btw =
(SELECT res_artikel_btw
FROM res_artikel
WHERE res_artikel_key = rc.res_artikel_key)
WHERE res_rsv_artikel_key = rc.res_rsv_artikel_key;
fac.trackaction (
'RESAFM',
rc.res_rsv_ruimte_key,
NULL,
NULL,
'Catering ' || rc.res_artikel_omschrijving || ' afgemeld');
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg :=
' ORACLE (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.writelog (p_applname,
'W',
rc.aanduiding || v_errormsg,
v_errorhint);
COMMIT;
END;
END LOOP;
COMMIT;
END;
/
CREATE OR REPLACE PROCEDURE wzuv_export_reservering (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2,
p_filedir IN VARCHAR2,
p_filename IN VARCHAR2)
AS
-- status is afgemeld
-- de reservering ligt in het verleden
-- dan kan de ruimte prijs berekend worden
CURSOR cres IS
SELECT res_rsv_ruimte_key,
res_reservering_key || '/' || res_rsv_ruimte_volgnr aanduiding
FROM res_rsv_ruimte rrr
WHERE rrr.res_status_bo_key = 5
AND rrr.res_rsv_ruimte_dirtlevel = 0
AND rrr.res_rsv_ruimte_verwijder IS NULL
AND fac.count_work_days (res_rsv_ruimte_tot, SYSDATE) > 0;
-- catering is geleverd (flag = 2)
-- dan mag de catering berekend worden
-- voor de zekerheid controleren we ook of de reservering in het verleden ligt
-- status is afgemeld
CURSOR cart IS
SELECT TO_CHAR (rrr.res_reservering_key)
|| '/'
|| TO_CHAR (rrr.res_rsv_ruimte_volgnr)
|| ' - '
|| TO_CHAR (a.res_artikel_omschrijving) aanduiding,
ra.res_rsv_ruimte_key,
ra.res_rsv_artikel_key,
ra.res_artikel_key,
a.res_artikel_omschrijving
FROM res_rsv_artikel ra, res_rsv_ruimte rrr, res_artikel a
WHERE ra.res_status_bo_key = 5
AND ra.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key
AND ra.res_artikel_key = a.res_artikel_key
AND ra.res_rsv_artikel_dirtlevel = 0
AND ra.res_rsv_artikel_verwijder IS NULL
AND fac.count_work_days (res_rsv_artikel_levering, SYSDATE) >
0
AND rrr.res_rsv_ruimte_flag = 2;
--- wzuv_rap_res bevat alle reserveringen met status 5 - afgemeld
--- al deze regels moeten uiteindelijk ook bij de reservering zichtbaar zijn vanuit de verkoopfactuurtabellen en krijgen dan status 6 - verwerkt
--- tbv van de export worden deze ook in de fac_rapport tabel gezet
CURSOR c IS
SELECT *
FROM WZUV_V_RAP_RES
ORDER BY res_rsv_ruimte_key;
v_ruimte_key_prev NUMBER;
v_verkoopfactuurkop_key NUMBER;
v_aanduiding VARCHAR2 (200);
v_errorhint VARCHAR2 (1000);
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
BEGIN
v_ruimte_key_prev := 1;
FOR rec IN c
LOOP
IF rec.res_rsv_ruimte_key <> v_ruimte_key_prev
THEN
v_ruimte_key_prev := rec.res_rsv_ruimte_key;
INSERT INTO fin_verkoopfactuurkop (fin_verkoopfactuurkop_id)
VALUES (rec.reservering)
RETURNING fin_verkoopfactuurkop_key
INTO v_verkoopfactuurkop_key;
END IF;
INSERT INTO fin_verkoopfactuur (fin_verkoopfactuurkop_key,
fin_verkoopfactuur_id,
fin_verkoopfactuur_datum,
fin_verkoopfactuur_omschr,
fin_verkoopfactuur_xmlnode,
fin_verkoopfactuur_refkey,
prs_kostenplaats_nr,
prs_debiteur_naam,
fin_verkoopfactuur_bedrag,
fin_verkoopfactuur_maand,
fin_verkoopfactuur_c1)
VALUES (v_verkoopfactuurkop_key, --key
TO_CHAR (rec.factuurperiode), ---id
SYSDATE, -- datum
rec.omschrijving, --omsch
'reservering', ---xml
rec.res_rsv_ruimte_key, --refkey
rec.kostenplaats, ---kostenplnr
rec.persnr, -- debnaam
rec.bedrag, --- bedrag
rec.maand, ---- maand
rec.soort --- c1
);
COMMIT;
END LOOP;
FOR rc IN cres
LOOP
BEGIN
UPDATE res_rsv_ruimte
SET res_status_bo_key = 6
WHERE res_rsv_ruimte_key = rc.res_rsv_ruimte_key;
fac.trackaction ('RESVER',
rc.res_rsv_ruimte_key,
NULL,
NULL,
NULL);
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg :=
' ORACLE (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.writelog (p_applname,
'W',
rc.aanduiding || v_errormsg,
v_errorhint);
COMMIT;
END;
END LOOP;
FOR rc IN cart
LOOP
BEGIN
UPDATE res_rsv_artikel
SET res_status_bo_key = 6
WHERE res_rsv_artikel_key = rc.res_rsv_artikel_key;
fac.trackaction (
'RESVER',
rc.res_rsv_ruimte_key,
NULL,
NULL,
'Catering ' || rc.res_artikel_omschrijving || ' verwerkt');
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg :=
' ORACLE (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.writelog (p_applname,
'W',
rc.aanduiding || v_errormsg,
v_errorhint);
COMMIT;
END;
END LOOP;
END;
/
CREATE OR REPLACE VIEW WZUV_V_EXPORT_RESERVERING
(
RESULT,
RESULT_ORDER
)
AS
SELECT persnr
|| ';'
|| artikelcode
|| ';'
|| aantal
|| ';'
|| bedrag
|| ';'
|| omschrijving
|| ';'
|| kostenplaats,
reservering
FROM WZUV_V_RAP_RES r;
CREATE OR REPLACE VIEW WZUV_V_RAP_RES_DEF
(
PERSNR,
RESERVERING,
ARTIKELCODE,
AANTAL,
BEDRAG,
FACTUURPERIODE,
SOORT,
OMSCHRIJVING,
INT_EXT,
KOSTENPLAATS,
RES_RSV_RUIMTE_KEY,
MAAND
)
AS
SELECT CASE
WHEN UPPER (p.prs_perslid_nr) LIKE 'NEDAP%'
THEN
SUBSTR (p.prs_perslid_nr, 7)
ELSE
p.prs_perslid_nr
END AS persnr,
rrr.res_reservering_key || '/' || rrr.res_rsv_ruimte_volgnr,
TO_CHAR (ar.alg_ruimte_key),
COALESCE ((rrr.res_rsv_ruimte_tot - rrr.res_rsv_ruimte_van) * 24,
0) duur_ruimte,
rrr.res_rsv_ruimte_prijs,
TO_CHAR (rrr.res_rsv_ruimte_van, 'mm-yyyy') factuurperiode,
'Ruimte',
TO_CHAR (rrr.res_rsv_ruimte_van, 'month yyyy')
|| ' - Reserveringsnummer: '
|| rrr.res_reservering_key
|| '/'
|| rrr.res_rsv_ruimte_volgnr
|| ' - '
|| rr.res_ruimte_nr aanduiding,
DECODE (prs_afdeling_key, 422, 'Cli<EFBFBD>nt', 'Intern') soort,
kpl_ruimte.prs_kostenplaats_nr,
rrr.res_rsv_ruimte_key,
TO_CHAR (rrr.res_rsv_ruimte_van, 'mm')
FROM res_rsv_ruimte rrr,
prs_perslid p,
prs_kostenplaats kp,
res_v_rsv_ruimte_2_alg_ruimte ar,
alg_v_allonroerendgoed aog,
res_ruimte rr,
(SELECT kpr.*, kpl.prs_kostenplaats_nr
FROM alg_onrgoedkenmerk kpr, prs_kostenplaats kpl
WHERE kpr.alg_kenmerk_key = 1061
AND kpr.alg_onrgoedkenmerk_waarde =
kpl.prs_kostenplaats_key) kpl_ruimte
WHERE rrr.res_status_bo_key = 6
AND rrr.res_rsv_ruimte_dirtlevel = 0
AND rrr.res_rsv_ruimte_verwijder IS NULL
AND res_rsv_ruimte_host_key = p.prs_perslid_key
AND rrr.prs_kostenplaats_key = kp.prs_kostenplaats_key(+)
AND ar.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key
AND ar.res_ruimte_key = rr.res_ruimte_key
AND ar.alg_ruimte_key = aog.alg_ruimte_key
AND kpl_ruimte.alg_onrgoed_key(+) = aog.alg_gebouw_key
UNION ALL
SELECT CASE
WHEN UPPER (p.prs_perslid_nr) LIKE 'NEDAP%'
THEN
SUBSTR (p.prs_perslid_nr, 7)
ELSE
p.prs_perslid_nr
END AS persnr,
rrr.res_reservering_key || '/' || rrr.res_rsv_ruimte_volgnr,
a.res_artikel_nr,
ra.res_rsv_artikel_aantal,
ra.res_rsv_artikel_prijs,
TO_CHAR (rrr.res_rsv_ruimte_van, 'mm-yyyy') factuurperiode,
'Catering',
TO_CHAR (rrr.res_rsv_ruimte_van, 'month yyyy')
|| ' - '
|| TO_CHAR (rrr.res_reservering_key)
|| '/'
|| TO_CHAR (rrr.res_rsv_ruimte_volgnr)
|| ' - '
|| TO_CHAR (a.res_artikel_omschrijving) aanduiding,
DECODE (p.prs_afdeling_key, 422, 'Cli<EFBFBD>nt', 'Intern') soort,
kpl_cat.prs_kostenplaats_nr,
rrr.res_rsv_ruimte_key,
TO_CHAR (rrr.res_rsv_ruimte_van, 'mm')
FROM res_rsv_artikel ra,
res_rsv_ruimte rrr,
res_artikel a,
prs_perslid p,
prs_kostenplaats kp,
res_v_rsv_ruimte_2_alg_ruimte ar,
alg_v_allonroerendgoed aog,
(SELECT kpr.*, kpl.prs_kostenplaats_nr
FROM alg_onrgoedkenmerk kpr, prs_kostenplaats kpl
WHERE kpr.alg_kenmerk_key = 1060
AND kpr.alg_onrgoedkenmerk_waarde =
kpl.prs_kostenplaats_key) kpl_cat
WHERE ra.res_status_bo_key = 6
AND rrr.res_rsv_ruimte_flag = 2
AND ra.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key
AND ra.res_artikel_key = a.res_artikel_key
AND ra.res_rsv_artikel_dirtlevel = 0
AND ra.res_rsv_artikel_verwijder IS NULL
AND rrr.res_rsv_ruimte_host_key = p.prs_perslid_key
AND ar.res_rsv_ruimte_key(+) = rrr.res_rsv_ruimte_key
AND rrr.prs_kostenplaats_key = kp.prs_kostenplaats_key(+)
AND ( aog.alg_ruimte_key = rrr.alg_ruimte_key
OR aog.alg_ruimte_key = ar.alg_ruimte_key)
AND kpl_cat.alg_onrgoed_key(+) = aog.alg_gebouw_key;
-- ==========================================
-- VANAF HIER ALLE VIEWS EN PROCS VOOR DE EXACT KOPPELING
-- ==========================================
-- Kenmerk 21 is bijlage
CREATE OR REPLACE VIEW WZUV_V_FACTUUR_BESTAND
(
FIN_FACTUUR_KEY,
FIN_FACTUUR_BESTAND
)
AS
SELECT kf.fin_factuur_key, kf.fin_kenmerkfactuur_waarde
FROM fin_kenmerkfactuur kf
WHERE kf.fin_kenmerkfactuur_verwijder IS NULL AND fin_kenmerk_key = 21;
-- Kenmerk 2 is betaalreferentie
CREATE OR REPLACE VIEW WZUV_V_FACTUUR_BETAALREF
(
FIN_FACTUUR_KEY,
FIN_FACTUUR_BETAALREF
)
AS
SELECT kf.fin_factuur_key, kf.fin_kenmerkfactuur_waarde
FROM fin_kenmerkfactuur kf
WHERE kf.fin_kenmerkfactuur_verwijder IS NULL AND fin_kenmerk_key = 2;
-- Kenmerk 3 is omschrijving kopregel
CREATE OR REPLACE VIEW WZUV_V_FACTUUR_OMSCHR_KOPREGEL
(
FIN_FACTUUR_KEY,
FIN_FACTUUR_OMSCHR_KOPREGEL
)
AS
SELECT kf.fin_factuur_key, kf.fin_kenmerkfactuur_waarde
FROM fin_kenmerkfactuur kf
WHERE kf.fin_kenmerkfactuur_verwijder IS NULL AND fin_kenmerk_key = 3;
-- Kenmerk 4 is omschrijving datum factuurregel
CREATE OR REPLACE VIEW WZUV_V_FACTUURREGEL_DATUM
(
FIN_FACTUURREGEL_KEY,
FIN_FACTUURREGEL_DATUM
)
AS
SELECT kfr.fin_factuurregel_key, kfr.fin_kenmerkfactregel_waarde
FROM fin_kenmerkfactregel kfr
WHERE kfr.fin_kenmerkfactregel_verwijder IS NULL AND fin_kenmerk_key = 4;
-- Kenmerk 22 is de afwijkende kostenplaats
CREATE OR REPLACE FORCE VIEW WZUV_V_FACTUUR_AFW_KPL
(
FIN_FACTUUR_KEY,
FIN_FACTUUR_AFW_KPL
)
AS
SELECT fin_factuur_key, prs_kostenplaats_nr
FROM fin_kenmerkfactuur kf, prs_kostenplaats kp
WHERE kf.fin_kenmerkfactuur_verwijder IS NULL
AND kf.fin_kenmerkfactuur_waarde = kp.prs_kostenplaats_key
AND fin_kenmerk_key = 22;
CREATE OR REPLACE VIEW WZUV_V_FACTUUR_BES_GEGEVENS
(
FIN_FACTUUR_KEY,
OPDRACHT_ID,
FIN_FACTUUR_DATUM,
FIN_FACTUUR_BOEKMAAND,
FIN_FACTUUR_NR,
FIN_FACTUUR_BESTAND,
PRS_BEDRIJF_KEY,
FIN_FACTUURREGEL_TOTAAL,
FIN_FACTUURREGEL_BTW,
FIN_FACTUURREGEL_BTW_PERC,
FIN_BTWTABELWAARDE_BTWCODE,
FIN_FACTUURREGEL_NR,
FIN_FACTUURREGEL_OMSCHRIJVING,
FIN_FACTUURREGEL_DATUM,
FIN_FACTUUR_DEBITEUR_NR,
FIN_FACTUUR_BETAALREF,
FIN_FACTUUR_OMSCHR_KOPREGEL,
PROJECT_NUMMER,
PRS_KOSTENSOORT_OMS,
PRS_KOSTENSOORT_DOORBELASTEN,
PRS_KOSTENPLAATS_NR,
BES_OPDR_KEY,
MLD_OPDR_KEY,
CNT_CONTRACT_KEY,
FIN_FACTUUR_STATUSES_KEY
)
AS
SELECT DISTINCT
f.fin_factuur_key,
TO_CHAR (bo.bes_bestelopdr_id)
opdracht_id,
f.fin_factuur_datum,
f.fin_factuur_boekmaand,
f.fin_factuur_nr,
fb.fin_factuur_bestand,
b.prs_bedrijf_key,
fr.fin_factuurregel_totaal,
fr.fin_factuurregel_btw,
btw.fin_btwtabelwaarde_perc,
btw.fin_btwtabelwaarde_code,
fr.fin_factuurregel_nr,
fr.fin_factuurregel_omschrijving,
frd.fin_factuurregel_datum,
f.fin_factuur_debiteur_nr,
fbr.fin_factuur_betaalref,
fok.fin_factuur_omschr_kopregel,
NULL
projectnummer,
COALESCE (ks_regel.prs_kostensoort_oms, ks.prs_kostensoort_oms),
DECODE (ks_regel.prs_kostensoort_oms,
NULL, ks.prs_kostensoort_doorbelasten,
ks_regel.prs_kostensoort_doorbelasten),
kp.prs_kostenplaats_nr,
bo.bes_bestelopdr_key
bes_opdr_key,
NULL
mld_opdr_key,
NULL
cnt_contract_key,
f.fin_factuur_statuses_key
FROM bes_bestelopdr bo,
prs_bedrijf b,
bes_bestelling bes,
bes_bestelopdr_item boi,
bes_bestelling_item bi,
fin_factuur f,
wzuv_v_factuur_bestand fb,
wzuv_v_factuur_betaalref fbr,
wzuv_v_factuur_omschr_kopregel fok,
fin_factuurregel fr,
wzuv_v_factuurregel_datum frd,
fin_btwtabelwaarde btw,
prs_kostensoort ks,
prs_kostensoort ks_regel,
prs_kostenplaats kp
WHERE b.prs_bedrijf_key = bo.prs_bedrijf_key
AND bo.bes_bestelopdr_key = boi.bes_bestelopdr_key
AND bi.bes_bestelopdr_item_key = boi.bes_bestelopdr_item_key
AND bes.bes_bestelling_key = bi.bes_bestelling_key
AND kp.prs_kostenplaats_key = bes.prs_kostenplaats_key
AND f.prs_kostensoort_key = ks.prs_kostensoort_key(+)
AND fr.prs_kostensoort_key = ks_regel.prs_kostensoort_key(+)
AND f.bes_bestelopdr_key = bo.bes_bestelopdr_key
AND f.fin_factuur_key = fr.fin_factuur_key
AND fr.fin_factuurregel_key = frd.fin_factuurregel_key(+)
AND fr.fin_btwtabelwaarde_key = btw.fin_btwtabelwaarde_key
AND f.fin_factuur_key = fb.fin_factuur_key(+)
AND f.fin_factuur_key = fbr.fin_factuur_key(+)
AND f.fin_factuur_key = fok.fin_factuur_key(+);
CREATE OR REPLACE VIEW WZUV_V_FACTUUR_MLDCNT_GEGEVENS
(
FIN_FACTUUR_KEY,
OPDRACHT_ID,
FIN_FACTUUR_DATUM,
FIN_FACTUUR_BOEKMAAND,
FIN_FACTUUR_NR,
FIN_FACTUUR_BESTAND,
PRS_BEDRIJF_KEY,
FIN_FACTUURREGEL_TOTAAL,
FIN_FACTUURREGEL_BTW,
FIN_FACTUURREGEL_BTW_PERC,
FIN_BTWTABELWAARDE_BTWCODE,
FIN_FACTUURREGEL_NR,
FIN_FACTUURREGEL_OMSCHRIJVING,
FIN_FACTUURREGEL_DATUM,
FIN_FACTUUR_DEBITEUR_NR,
FIN_FACTUUR_BETAALREF,
FIN_FACTUUR_OMSCHR_KOPREGEL,
PROJECT_NUMMER,
PRS_KOSTENSOORT_OMS,
PRS_KOSTENSOORT_DOORBELASTEN,
PRS_KOSTENPLAATS_NR,
BES_OPDR_KEY,
MLD_OPDR_KEY,
CNT_CONTRACT_KEY,
FIN_FACTUUR_STATUSES_KEY
)
AS
SELECT DISTINCT
f.fin_factuur_key,
COALESCE (
TO_CHAR (cnt_contract_nummer),
(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))
opdracht_id,
f.fin_factuur_datum,
f.fin_factuur_boekmaand,
f.fin_factuur_nr,
fb.fin_factuur_bestand,
COALESCE (b_c.prs_bedrijf_key, b_o.prs_bedrijf_key)
prs_bedrijf_key,
fr.fin_factuurregel_totaal,
fr.fin_factuurregel_btw,
btw.fin_btwtabelwaarde_perc,
btw.fin_btwtabelwaarde_code,
fr.fin_factuurregel_nr,
fr.fin_factuurregel_omschrijving,
frd.fin_factuurregel_datum,
COALESCE (f.fin_factuur_debiteur_nr,
b_c.prs_leverancier_nr,
b_o.prs_leverancier_nr),
fbr.fin_factuur_betaalref,
fok.fin_factuur_omschr_kopregel,
NULL
projectnummer,
COALESCE (ks_regel.prs_kostensoort_oms,
ks_contract.prs_kostensoort_oms,
ks.prs_kostensoort_oms),
DECODE (ks_regel.prs_kostensoort_oms,
NULL, ks.prs_kostensoort_doorbelasten,
ks_regel.prs_kostensoort_doorbelasten),
COALESCE (faklp.fin_factuur_afw_kpl,
kp_c.prs_kostenplaats_nr,
kp_o.prs_kostenplaats_nr)
prs_kostenplaats_nr,
NULL
bes_opdr_key,
o.mld_opdr_key,
c.cnt_contract_key,
f.fin_factuur_statuses_key
FROM fin_factuur f,
wzuv_v_factuur_bestand fb,
wzuv_v_factuur_betaalref fbr,
wzuv_v_factuur_omschr_kopregel fok,
wzuv_v_factuur_afw_kpl faklp,
fin_factuurregel fr,
wzuv_v_factuurregel_datum frd,
fin_btwtabelwaarde btw,
mld_opdr o,
mld_typeopdr ot,
cnt_contract c,
prs_bedrijf b_o,
prs_bedrijf b_c,
prs_kostensoort ks,
prs_kostensoort ks_regel,
prs_kostensoort ks_contract,
prs_kostenplaats kp_c,
prs_kostenplaats kp_o
WHERE f.fin_factuur_key = fr.fin_factuur_key
AND fr.fin_factuurregel_key = frd.fin_factuurregel_key(+)
AND fr.fin_btwtabelwaarde_key = btw.fin_btwtabelwaarde_key
AND f.fin_factuur_key = fb.fin_factuur_key(+)
AND f.fin_factuur_key = fbr.fin_factuur_key(+)
AND f.fin_factuur_key = fok.fin_factuur_key(+)
AND f.fin_factuur_key = faklp.fin_factuur_key(+)
AND f.bes_bestelopdr_key IS NULL
AND f.mld_opdr_key = o.mld_opdr_key(+)
AND o.prs_kostenplaats_key = kp_o.prs_kostenplaats_key(+)
AND o.mld_typeopdr_key = ot.mld_typeopdr_key(+)
AND f.cnt_contract_key = c.cnt_contract_key(+)
AND o.mld_uitvoerende_keys = b_o.prs_bedrijf_key(+)
AND c.cnt_prs_bedrijf_key = b_c.prs_bedrijf_key(+)
AND c.prs_kostenplaats_key = kp_c.prs_kostenplaats_key(+)
AND f.prs_kostensoort_key = ks.prs_kostensoort_key(+)
AND fr.prs_kostensoort_key = ks_regel.prs_kostensoort_key(+)
AND c.prs_kostensoort_key = ks_contract.prs_kostensoort_key(+);
CREATE OR REPLACE VIEW WZUV_V_FACTUUR_GEG_AKKOORD
(
FIN_FACTUUR_KEY,
OPDRACHT_ID,
FIN_FACTUUR_DATUM,
FIN_FACTUUR_BOEKMAAND,
FIN_FACTUUR_NR,
FIN_FACTUUR_BESTAND,
PRS_BEDRIJF_KEY,
FIN_FACTUURREGEL_TOTAAL,
FIN_FACTUURREGEL_BTW,
FIN_FACTUURREGEL_BTW_PERC,
FIN_BTWTABELWAARDE_BTWCODE,
FIN_FACTUURREGEL_NR,
FIN_FACTUURREGEL_OMSCHRIJVING,
FIN_FACTUURREGEL_DATUM,
FIN_FACTUUR_DEBITEUR_NR,
FIN_FACTUUR_BETAALREF,
FIN_FACTUUR_OMSCHR_KOPREGEL,
PROJECT_NUMMER,
PRS_KOSTENSOORT_OMS,
PRS_KOSTENSOORT_DOORBELASTEN,
PRS_KOSTENPLAATS_NR,
BES_OPDR_KEY,
MLD_OPDR_KEY,
CNT_CONTRACT_KEY,
FIN_FACTUUR_STATUSES_KEY
)
AS
SELECT "FIN_FACTUUR_KEY",
"OPDRACHT_ID",
"FIN_FACTUUR_DATUM",
"FIN_FACTUUR_BOEKMAAND",
"FIN_FACTUUR_NR",
"FIN_FACTUUR_BESTAND",
"PRS_BEDRIJF_KEY",
"FIN_FACTUURREGEL_TOTAAL",
"FIN_FACTUURREGEL_BTW",
"FIN_FACTUURREGEL_BTW_PERC",
"FIN_BTWTABELWAARDE_BTWCODE",
"FIN_FACTUURREGEL_NR",
"FIN_FACTUURREGEL_OMSCHRIJVING",
"FIN_FACTUURREGEL_DATUM",
"FIN_FACTUUR_DEBITEUR_NR",
"FIN_FACTUUR_BETAALREF",
"FIN_FACTUUR_OMSCHR_KOPREGEL",
"PROJECT_NUMMER",
"PRS_KOSTENSOORT_OMS",
"PRS_KOSTENSOORT_DOORBELASTEN",
"PRS_KOSTENPLAATS_NR",
"BES_OPDR_KEY",
"MLD_OPDR_KEY",
"CNT_CONTRACT_KEY",
"FIN_FACTUUR_STATUSES_KEY"
FROM wzuv_v_factuur_mldcnt_gegevens
WHERE fin_factuur_statuses_key = 6
UNION
SELECT "FIN_FACTUUR_KEY",
"OPDRACHT_ID",
"FIN_FACTUUR_DATUM",
"FIN_FACTUUR_BOEKMAAND",
"FIN_FACTUUR_NR",
"FIN_FACTUUR_BESTAND",
"PRS_BEDRIJF_KEY",
"FIN_FACTUURREGEL_TOTAAL",
"FIN_FACTUURREGEL_BTW",
"FIN_FACTUURREGEL_BTW_PERC",
"FIN_BTWTABELWAARDE_BTWCODE",
"FIN_FACTUURREGEL_NR",
"FIN_FACTUURREGEL_OMSCHRIJVING",
"FIN_FACTUURREGEL_DATUM",
"FIN_FACTUUR_DEBITEUR_NR",
"FIN_FACTUUR_BETAALREF",
"FIN_FACTUUR_OMSCHR_KOPREGEL",
"PROJECT_NUMMER",
"PRS_KOSTENSOORT_OMS",
"PRS_KOSTENSOORT_DOORBELASTEN",
"PRS_KOSTENPLAATS_NR",
"BES_OPDR_KEY",
"MLD_OPDR_KEY",
"CNT_CONTRACT_KEY",
"FIN_FACTUUR_STATUSES_KEY"
FROM wzuv_v_factuur_bes_gegevens
WHERE fin_factuur_statuses_key = 6;
CREATE OR REPLACE VIEW WZUV_V_FACTUUR_GEG
(
FIN_FACTUUR_KEY,
OPDRACHT_ID,
FIN_FACTUUR_DATUM,
FIN_FACTUUR_BOEKMAAND,
FIN_FACTUUR_NR,
FIN_FACTUUR_BESTAND,
PRS_BEDRIJF_KEY,
FIN_FACTUURREGEL_TOTAAL,
FIN_FACTUURREGEL_BTW,
FIN_FACTUURREGEL_BTW_PERC,
FIN_BTWTABELWAARDE_BTWCODE,
FIN_FACTUURREGEL_NR,
FIN_FACTUURREGEL_OMSCHRIJVING,
FIN_FACTUURREGEL_DATUM,
FIN_FACTUUR_DEBITEUR_NR,
FIN_FACTUUR_BETAALREF,
FIN_FACTUUR_OMSCHR_KOPREGEL,
PROJECT_NUMMER,
PRS_KOSTENSOORT_OMS,
PRS_KOSTENSOORT_DOORBELASTEN,
PRS_KOSTENPLAATS_NR,
BES_OPDR_KEY,
MLD_OPDR_KEY,
CNT_CONTRACT_KEY,
FIN_FACTUUR_STATUSES_KEY
)
AS
SELECT "FIN_FACTUUR_KEY",
"OPDRACHT_ID",
"FIN_FACTUUR_DATUM",
"FIN_FACTUUR_BOEKMAAND",
"FIN_FACTUUR_NR",
"FIN_FACTUUR_BESTAND",
"PRS_BEDRIJF_KEY",
"FIN_FACTUURREGEL_TOTAAL",
"FIN_FACTUURREGEL_BTW",
"FIN_FACTUURREGEL_BTW_PERC",
"FIN_BTWTABELWAARDE_BTWCODE",
"FIN_FACTUURREGEL_NR",
"FIN_FACTUURREGEL_OMSCHRIJVING",
"FIN_FACTUURREGEL_DATUM",
"FIN_FACTUUR_DEBITEUR_NR",
"FIN_FACTUUR_BETAALREF",
"FIN_FACTUUR_OMSCHR_KOPREGEL",
"PROJECT_NUMMER",
"PRS_KOSTENSOORT_OMS",
"PRS_KOSTENSOORT_DOORBELASTEN",
"PRS_KOSTENPLAATS_NR",
"BES_OPDR_KEY",
"MLD_OPDR_KEY",
"CNT_CONTRACT_KEY",
"FIN_FACTUUR_STATUSES_KEY"
FROM wzuv_v_factuur_mldcnt_gegevens
UNION
SELECT "FIN_FACTUUR_KEY",
"OPDRACHT_ID",
"FIN_FACTUUR_DATUM",
"FIN_FACTUUR_BOEKMAAND",
"FIN_FACTUUR_NR",
"FIN_FACTUUR_BESTAND",
"PRS_BEDRIJF_KEY",
"FIN_FACTUURREGEL_TOTAAL",
"FIN_FACTUURREGEL_BTW",
"FIN_FACTUURREGEL_BTW_PERC",
"FIN_BTWTABELWAARDE_BTWCODE",
"FIN_FACTUURREGEL_NR",
"FIN_FACTUURREGEL_OMSCHRIJVING",
"FIN_FACTUURREGEL_DATUM",
"FIN_FACTUUR_DEBITEUR_NR",
"FIN_FACTUUR_BETAALREF",
"FIN_FACTUUR_OMSCHR_KOPREGEL",
"PROJECT_NUMMER",
"PRS_KOSTENSOORT_OMS",
"PRS_KOSTENSOORT_DOORBELASTEN",
"PRS_KOSTENPLAATS_NR",
"BES_OPDR_KEY",
"MLD_OPDR_KEY",
"CNT_CONTRACT_KEY",
"FIN_FACTUUR_STATUSES_KEY"
FROM wzuv_v_factuur_bes_gegevens;
-- Alle waarden (zijn evt meer records) uit eigen tabel 'Exact' waarvan de waarde_code met een
-- zekere prefix begint (volgens de systeem-setting PREFIX_FCLT_FACTUUR_XML_HEADER), komen in de header vd xml terecht
-- 121 is de eigen tabel met dagboeknrs. (op dit moment alleen '40' moet nog gevuld worden)
CREATE OR REPLACE VIEW wzuv_v_fclt_factuur_header
(
result,
result_order
)
AS
SELECT '<'
|| fac_usrdata_code
|| '>'
|| fac_usrdata_omschr
|| '</'
|| fac_usrdata_code
|| '>',
1
FROM fac_usrdata
WHERE fac_usrtab_key = 121 AND fac_usrdata_verwijder IS NULL;
CREATE OR REPLACE VIEW wzuv_v_fclt_factuur_body
(
result,
result_order
)
AS
SELECT DECODE (regelnummer, 0, '<fin_factuur>', '<fin_factuurregel>')
|| '<fin_factuur_key>'
|| fin_factuur_key
|| '</fin_factuur_key>'
|| '<fin_factuur_nr>'
|| xml.char_to_html (fin_factuur_nr)
|| '</fin_factuur_nr>'
|| '<fin_factuur_bestand>'
|| xml.char_to_html (fin_factuur_bestand)
|| '</fin_factuur_bestand>'
|| '<fin_factuur_debiteur_nr>'
|| xml.char_to_html (fin_factuur_debiteur_nr)
|| '</fin_factuur_debiteur_nr>'
|| '<fin_factuur_omschr_kopregel>'
|| xml.char_to_html (fin_factuur_omschr_kopregel)
|| '</fin_factuur_omschr_kopregel>'
|| '<bes_mld_cnt_opdracht_id>'
|| xml.char_to_html (bes_mld_cnt_opdracht_id)
|| '</bes_mld_cnt_opdracht_id>'
|| '<fin_factuur_datum>'
|| datum
|| '</fin_factuur_datum>'
|| '<fin_factuur_boekmaand>'
|| fin_factuur_boekmaand
|| '</fin_factuur_boekmaand>'
|| '<prs_kostensoort_oms>'
|| xml.char_to_html (grootboekrekening)
|| '</prs_kostensoort_oms>'
|| '<prs_kostensoort_doorbelasten>'
|| xml.char_to_html (kostensoort_doorbelasten)
|| '</prs_kostensoort_doorbelasten>'
|| '<prs_betaal_referentie>'
|| xml.char_to_html (betaalreferentie)
|| '</prs_betaal_referentie>'
|| '<prs_leverancier_nr>'
|| xml.char_to_html (crediteur_nr)
|| '</prs_leverancier_nr>'
|| '<prs_bedrijf_naam>'
|| xml.char_to_html (crediteur_naam)
|| '</prs_bedrijf_naam>'
|| '<fin_factuur_totaal_exbtw>'
|| fin_factuur_totaal_exbtw
|| '</fin_factuur_totaal_exbtw>'
|| '<fin_factuur_totaal_incbtw>'
|| fin_factuur_totaal_incbtw
|| '</fin_factuur_totaal_incbtw>'
|| '<fin_factuurregel_omschrijving>'
|| xml.char_to_html (fin_factuurregel_omschrijving)
|| '</fin_factuurregel_omschrijving>'
|| '<fin_factuurregel_datum>'
|| xml.char_to_html (fin_factuurregel_datum)
|| '</fin_factuurregel_datum>'
|| '<fin_factuurregel_totaal>'
|| fin_factuurregel_totaal
|| '</fin_factuurregel_totaal>'
|| '<fin_factuurregel_btw_perc>'
|| btw_percentage
|| '</fin_factuurregel_btw_perc>'
|| '<fin_factuurregel_btw_perc_code>'
|| xml.char_to_html (btw_code)
|| '</fin_factuurregel_btw_perc_code>'
|| '<fin_factuurregel_btw_bedrag>'
|| btw_bedrag
|| '</fin_factuurregel_btw_bedrag>'
|| '<prs_kostenplaats_nr>'
|| xml.char_to_html (prs_kostenplaats_nr)
|| '</prs_kostenplaats_nr>'
|| DECODE (
regelnummer,
0, '',
DECODE (max_factuur_regelnr - regelnummer,
0, '</fin_factuurregel></fin_factuur>',
'</fin_factuurregel>')),
(1000000 + fin_factuur_key) * 10000 + regelnummer
FROM (SELECT 0
regelnummer,
aant_factuur_regels,
max_factuur_regelnr,
fin_factuur_key,
fin_factuur_nr,
fin_factuur_bestand,
fin_factuur_debiteur_nr,
fin_factuur_omschr_kopregel,
opdracht_id
bes_mld_cnt_opdracht_id,
TO_CHAR (fin_factuur_datum, 'ddmmyyyy')
datum,
fin_factuur_boekmaand,
''
grootboekrekening,
''
kostensoort_doorbelasten,
betaalreferentie,
(SELECT prs_leverancier_nr
FROM prs_bedrijf b
WHERE b.prs_bedrijf_key = fg.prs_bedrijf_key)
crediteur_nr,
(SELECT prs_bedrijf_naam
FROM prs_bedrijf b
WHERE b.prs_bedrijf_key = fg.prs_bedrijf_key)
crediteur_naam,
REPLACE (TO_CHAR (ROUND (bedrag_exbtw, 2)), ',', '.')
fin_factuur_totaal_exbtw,
REPLACE (TO_CHAR (ROUND (bedrag_incbtw, 2)), ',', '.')
fin_factuur_totaal_incbtw,
''
fin_factuurregel_omschrijving,
''
fin_factuurregel_datum,
''
fin_factuurregel_totaal,
''
btw_percentage,
''
btw_code,
''
btw_bedrag,
''
prs_kostenplaats_nr
FROM ( SELECT fin_factuur_key,
opdracht_id,
fin_factuur_datum,
fin_factuur_boekmaand,
fin_factuur_nr,
fin_factuur_bestand,
prs_bedrijf_key,
fin_factuur_debiteur_nr,
COALESCE (
fin_factuur_betaalref,
fin_factuur_nr
|| '/'
|| fin_factuur_debiteur_nr)
betaalreferentie,
fin_factuur_omschr_kopregel,
COUNT (fin_factuur_key)
AS aant_factuur_regels,
MAX (fin_factuurregel_nr)
AS max_factuur_regelnr,
SUM (fin_factuurregel_totaal)
bedrag_exbtw,
SUM (
fin_factuurregel_totaal + fin_factuurregel_btw)
bedrag_incbtw
FROM wzuv_v_factuur_geg_akkoord ---DEZE DUS
GROUP BY fin_factuur_key,
opdracht_id,
fin_factuur_datum,
fin_factuur_boekmaand,
fin_factuur_nr,
fin_factuur_bestand,
prs_bedrijf_key,
fin_factuur_debiteur_nr,
fin_factuur_betaalref,
fin_factuur_omschr_kopregel) fg
UNION ALL
SELECT fin_factuurregel_nr
regelnummer,
( SELECT COUNT (fin_factuur_key)
FROM wzuv_v_factuur_geg_akkoord fc
WHERE fc.fin_factuur_key = fg.fin_factuur_key
GROUP BY fin_factuur_key,
opdracht_id,
fin_factuur_datum,
fin_factuur_nr,
prs_bedrijf_key,
fin_factuur_debiteur_nr)
AS aant_factuur_regels,
( SELECT MAX (fin_factuurregel_nr)
FROM wzuv_v_factuur_geg_akkoord fc
WHERE fc.fin_factuur_key = fg.fin_factuur_key
GROUP BY fin_factuur_key,
opdracht_id,
fin_factuur_datum,
fin_factuur_nr,
prs_bedrijf_key,
fin_factuur_debiteur_nr)
AS max_factuur_regelnr,
fin_factuur_key,
fin_factuur_nr,
''
fin_factuur_bestand,
fin_factuur_debiteur_nr,
''
fin_factuur_omschr_kopregel,
''
bes_mld_cnt_opdracht_id,
TO_CHAR (fin_factuur_datum, 'ddmmyyyy')
datum,
fin_factuur_boekmaand,
prs_kostensoort_oms
grootboekrekening,
TO_CHAR (prs_kostensoort_doorbelasten)
kostensoort_doorbelasten,
COALESCE (
fin_factuur_betaalref,
fin_factuur_nr || '/' || fin_factuur_debiteur_nr)
betaalreferentie,
(SELECT prs_leverancier_nr
FROM prs_bedrijf b
WHERE b.prs_bedrijf_key = fg.prs_bedrijf_key)
crediteur_nr,
(SELECT prs_bedrijf_naam
FROM prs_bedrijf b
WHERE b.prs_bedrijf_key = fg.prs_bedrijf_key)
crediteur_naam,
''
fin_factuur_totaal_exbtw,
''
fin_factuur_totaal_incbtw,
fin_factuurregel_omschrijving,
fin_factuurregel_datum,
REPLACE (TO_CHAR (ROUND (fin_factuurregel_totaal, 2)),
',',
'.')
fin_factuurregel_totaal,
TO_CHAR (fin_factuurregel_btw_perc)
btw_percentage,
fin_btwtabelwaarde_btwcode
btw_code,
REPLACE (TO_CHAR (ROUND (fin_factuurregel_btw, 2)),
',',
'.')
btw_bedrag,
prs_kostenplaats_nr
FROM wzuv_v_factuur_geg_akkoord fg
ORDER BY fin_factuur_key, regelnummer);
CREATE OR REPLACE VIEW wzuv_v_export_fclt_factuur
(
result,
result_order
)
AS
SELECT '<xml>', 0 FROM DUAL
UNION
SELECT result, result_order FROM wzuv_v_fclt_factuur_header
UNION
SELECT result, result_order FROM wzuv_v_fclt_factuur_body
UNION
SELECT '</xml>', 99999999999999999999 FROM DUAL;
CREATE OR REPLACE PROCEDURE wzuv_export_fclt_factuur (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2,
p_filedir IN VARCHAR2,
p_filename IN VARCHAR2)
AS
-- In cursor cfactuur alle facturen die worden geexporteerd...
CURSOR cfactuur IS
SELECT fin_factuur_key
FROM wzuv_v_factuur_geg_akkoord
GROUP BY fin_factuur_key;
BEGIN
-- DE EXPORT IS OP BASIS VAN EEN VIEW GEREALISEERD, WAARNA NU ALS LAATSTE STAP NOG WAT ADMINISTRATIE VOLGT...
FOR cfact IN cfactuur
LOOP
-- Zowel de factuur in tracking zetten als de status op verwerkt (=7) zetten
fin.setfactuurstatus (cfact.fin_factuur_key, 7, NULL);
END LOOP;
END;
/
CREATE OR REPLACE VIEW wzuv_v_export_undo_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_oms
|| ';'
|| bes_opdr_key
|| ';'
|| mld_opdr_key
|| ';'
|| cnt_contract_key,
CHR (13),
''),
CHR (10),
'<ret>'),
f.fin_factuur_key
FROM wzuv_v_factuur_geg f, fac_tracking t, fac_srtnotificatie sn
WHERE sn.fac_srtnotificatie_code = 'FINVER'
AND sn.fac_srtnotificatie_key = t.fac_srtnotificatie_key
AND t.fac_tracking_datum >=
(SELECT MAX (t1.fac_tracking_datum) - (1 / (24 * 60))
FROM fac_tracking t1
WHERE t1.fac_srtnotificatie_key = t.fac_srtnotificatie_key)
AND f.fin_factuur_key = t.fac_tracking_refkey
AND f.fin_factuur_statuses_key = 7;
CREATE OR REPLACE PROCEDURE wzuv_select_undo_exact (p_applname IN VARCHAR2,
p_applrun IN VARCHAR2)
AS
v_errormsg VARCHAR (200);
BEGIN
v_errormsg := 'Geen akties';
END;
/
-- Procedure om alle geexporteerde facturen naar status verwerkt te zetten.
CREATE OR REPLACE PROCEDURE wzuv_export_undo_exact (p_applname IN VARCHAR2,
p_applrun IN VARCHAR2,
p_filedir IN VARCHAR2,
p_filename IN VARCHAR2)
AS
CURSOR cfactuur IS
SELECT DISTINCT f.fin_factuur_key
FROM fac_tracking t, fac_srtnotificatie sn, fin_factuur f
WHERE sn.fac_srtnotificatie_code = 'FINVER'
AND sn.fac_srtnotificatie_key = t.fac_srtnotificatie_key
AND t.fac_tracking_datum >=
(SELECT MAX (t1.fac_tracking_datum) - (1 / (24 * 60))
FROM fac_tracking t1
WHERE t1.fac_srtnotificatie_key =
t.fac_srtnotificatie_key)
AND f.fin_factuur_key = t.fac_tracking_refkey
AND fin_factuur_statuses_key = 7;
v_errormsg VARCHAR (200);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
BEGIN
v_errormsg := 'Geen akties';
FOR cfact IN cfactuur
LOOP
-- Eerst de factuur in tracking zetten...
-- Omdat van 7 naar 6 niet mag/geoorloofd is, lukt het niet via
-- de reguliere functie fin.setfactuurstatus (cfact.fin_factuur_key, 6, NULL);
-- Dan maar zelf en custom-made:
fac.trackaction ('FINFOK',
cfact.fin_factuur_key,
NULL,
NULL,
'Factuur uit archief teruggezet');
UPDATE fin_factuur
SET fin_factuur_statuses_key = 6
WHERE fin_factuur_key = cfact.fin_factuur_key;
END LOOP;
END;
/
-- ===================================
-- EINDE VIEWS EN PROCS VOOR DE EXACT KOPPELING
-- ===================================
CREATE OR REPLACE PROCEDURE wzuv_processemail (pfrom IN VARCHAR2,
pto IN VARCHAR2,
psubject IN VARCHAR2,
pbody IN VARCHAR2,
psessionid IN VARCHAR2,
pemailkey IN NUMBER)
AS
v_count NUMBER;
sender prs_perslid.prs_perslid_key%TYPE;
kostenplaats prs_afdeling.prs_kostenplaats_key%TYPE;
locatie prs_perslid.alg_onroerendgoed_keys%TYPE;
newkey mld_melding.mld_melding_key%TYPE;
defaultstdmelding fac_setting.fac_setting_default%TYPE;
subject_regexp fac_setting.fac_setting_default%TYPE;
v_mldnum VARCHAR2 (4000);
v_mldkey mld_melding.mld_melding_key%TYPE;
v_email fac_notificatie.fac_notificatie_receiver_email%TYPE;
v_check NUMBER;
v_pbody VARCHAR2 (4000);
v_folder_kkey mld_kenmerk.mld_kenmerk_key%TYPE;
-- kkey mld_kenmerk.mld_kenmerk_key%TYPE;
errormsg fac_result.fac_result_waarde%TYPE;
BEGIN
-- Valideer de sender in pfrom: kennen we deze?
SELECT COUNT (*)
INTO v_count
FROM prs_perslid p, prs_afdeling d
WHERE p.prs_afdeling_key = d.prs_afdeling_key
AND UPPER (prs_perslid_email) = UPPER (pfrom);
-- Bekende afzender --> dat is de melder
IF (v_count = 1)
THEN
SELECT p.prs_perslid_key, d.prs_kostenplaats_key
INTO sender, kostenplaats
FROM prs_perslid p, prs_afdeling d
WHERE p.prs_afdeling_key = d.prs_afdeling_key
AND p.prs_perslid_verwijder IS NULL
AND UPPER (prs_perslid_email) = UPPER (pfrom);
v_pbody := pbody;
-- Geen bekende afzender --> _FACILITOR wordt de afzender
ELSE
SELECT prs_perslid_key, d.prs_kostenplaats_key
INTO sender, kostenplaats
FROM prs_perslid p, prs_afdeling d
WHERE p.prs_afdeling_key = d.prs_afdeling_key
AND prs_perslid_key = 3;
--- we nemen het mailadres van de afzender wel op in de tekst
v_pbody := 'Verstuurd door: ' || pfrom || CHR (10) || pbody;
END IF;
-- Check of de afzender pfrom een reply op een bestaande melding doet, in dat geval wordt dat in notities genoteerd.
-- 1) Eerst uit het onderwerp het meldingnummer proberen te onderscheppen, uitgangspunt dat in het onderwerp het meldingnummer '1234' kan worden opgevist, met ervoor en erna een spatie
-- 2) Het 1e nummer dat in het onderwerp staat wordt gezien als meldingnummer, eventuele andere nummers later in het onderwerp worden genegeerd.
subject_regexp := '[[:digit:]]{1,}';
v_mldnum :=
REGEXP_SUBSTR (psubject,
subject_regexp,
1,
1,
'i');
v_mldkey := fac.safe_to_number (v_mldnum);
--- kijken of er inderdaad een melding bestaat met het gevonden nummer
SELECT COUNT (m.mld_melding_key)
INTO v_check
FROM mld_melding m
WHERE m.mld_melding_key = v_mldkey;
IF v_check = 1
THEN
-- Bestaande melding gevonden dus we zetten de mail als notitie bij deze melding
BEGIN
INSERT INTO mld_melding_note (mld_melding_key,
mld_melding_note_omschrijving,
prs_perslid_key)
VALUES (
v_mldkey,
SUBSTR (
psubject
|| CHR (13)
|| CHR (10)
|| REPLACE (
SUBSTR (v_pbody,
1,
4000 - (LENGTH (psubject) + 2)),
CHR (13)
|| CHR (10)
|| CHR (13)
|| CHR (10),
CHR (13) || CHR (10)),
1,
4000), -- verwijder onnodige witregels
sender);
---belletje bij de melding zetten
UPDATE mld_melding
SET mld_melding_actiecode = 129
WHERE mld_melding_key = v_mldkey;
--- notificatie naar behandelaar
SELECT COALESCE (b2.prs_perslid_email,
b.prs_perslid_email,
'hip@wzuveluwe.nl') email
INTO v_email
FROM mld_melding m, prs_perslid b, prs_perslid b2
WHERE m.mld_melding_behandelaar_key = b.prs_perslid_key(+)
AND m.mld_melding_behandelaar2_key = b2.prs_perslid_key(+)
AND m.mld_melding_key = v_mldkey;
INSERT INTO fac_notificatie (fac_srtnotificatie_key,
fac_notificatie_status,
prs_perslid_key_receiver,
fac_notificatie_receiver_email,
fac_notificatie_oms,
fac_notificatie_refkey,
fac_notificatie_prioriteit)
VALUES (
57, --- mldnob
2,
NULL,
v_email,
'Er is een opmerking geplaatst bij melding '
|| TO_CHAR (v_mldkey),
v_mldkey,
2);
-- Find the lowest volgnummer of the Folder-flexfield.
SELECT MIN (k1.mld_kenmerk_key)
INTO v_folder_kkey
FROM mld_stdmelding sm1,
ins_tab_discipline td1,
mld_kenmerk k1,
mld_srtkenmerk sk1,
mld_melding m
WHERE m.mld_stdmelding_key = sm1.mld_stdmelding_key
AND m.mld_melding_key = v_mldkey
AND sm1.mld_ins_discipline_key = td1.ins_discipline_key
AND k1.mld_kenmerk_verwijder IS NULL
AND k1.mld_srtkenmerk_key = sk1.mld_srtkenmerk_key
AND sk1.mld_srtkenmerk_kenmerktype = 'M'
AND ( ( k1.mld_stdmelding_key =
sm1.mld_stdmelding_key
AND k1.mld_kenmerk_niveau = 'S')
OR ( k1.mld_stdmelding_key =
td1.ins_discipline_key
AND k1.mld_kenmerk_niveau = 'D')
OR ( k1.mld_stdmelding_key =
td1.ins_srtdiscipline_key
AND k1.mld_kenmerk_niveau = 'T')
OR (k1.mld_kenmerk_niveau = 'A'));
IF v_folder_kkey IS NOT NULL
THEN
INSERT INTO fac_result (fac_result_sessionid,
fac_result_naam,
fac_result_waarde)
VALUES (
psessionid,
'kenmerkpath',
'MLD\M'
|| TO_CHAR (TRUNC (v_mldkey / 1000), 'FM0000')
|| '___\M'
|| v_mldkey
|| '\'
|| v_folder_kkey
|| '\');
END IF;
fac.trackaction ('MLDTRK',
v_mldkey,
NULL,
NULL,
'Nieuwe notitie via Mail2melding');
END;
ELSE
IF UPPER (pto) LIKE 'HIP@%'
THEN
defaultstdmelding := '922';
BEGIN
INSERT INTO mld_melding (mld_melding_module,
mld_meldbron_key,
mld_melding_datum,
mld_melding_onderwerp,
mld_melding_omschrijving,
mld_melding_status,
mld_stdmelding_key,
prs_perslid_key,
prs_perslid_key_voor,
prs_kostenplaats_key,
mld_melding_spoed)
VALUES (
'MLD',
4, -- email
SYSDATE,
SUBSTR (psubject, 1, 60),
SUBSTR (
REPLACE (
SUBSTR (v_pbody, 1, 4000),
CHR (13) || CHR (10) || CHR (13) || CHR (10),
CHR (13) || CHR (10)),
1,
4000), -- verwijder onnodige witregels
2,
defaultstdmelding,
sender,
sender,
kostenplaats,
3)
RETURNING mld_melding_key
INTO newkey;
-- Find the lowest volgnummer of the Folder-flexfield.
SELECT MIN (k1.mld_kenmerk_key)
INTO v_folder_kkey
FROM mld_stdmelding sm1,
ins_tab_discipline td1,
mld_kenmerk k1,
mld_srtkenmerk sk1
WHERE sm1.mld_stdmelding_key = defaultstdmelding
AND sm1.mld_ins_discipline_key =
td1.ins_discipline_key
AND k1.mld_kenmerk_verwijder IS NULL
AND k1.mld_srtkenmerk_key = sk1.mld_srtkenmerk_key
AND sk1.mld_srtkenmerk_kenmerktype = 'M'
AND ( ( k1.mld_stdmelding_key =
sm1.mld_stdmelding_key
AND k1.mld_kenmerk_niveau = 'S')
OR ( k1.mld_stdmelding_key =
td1.ins_discipline_key
AND k1.mld_kenmerk_niveau = 'D')
OR ( k1.mld_stdmelding_key =
td1.ins_srtdiscipline_key
AND k1.mld_kenmerk_niveau = 'T')
OR (k1.mld_kenmerk_niveau = 'A'))
AND NOT EXISTS
(SELECT 1
FROM mld_stdmelding sm2,
ins_tab_discipline td2,
mld_kenmerk k2,
mld_srtkenmerk sk2
WHERE sm2.mld_stdmelding_key =
defaultstdmelding
AND sm2.mld_ins_discipline_key =
td2.ins_discipline_key
AND k2.mld_kenmerk_verwijder IS NULL
AND k2.mld_srtkenmerk_key =
sk2.mld_srtkenmerk_key
AND sk2.mld_srtkenmerk_kenmerktype =
'M'
AND ( ( k2.mld_stdmelding_key =
sm2.mld_stdmelding_key
AND k2.mld_kenmerk_niveau =
'S')
OR ( k2.mld_stdmelding_key =
td2.ins_discipline_key
AND k2.mld_kenmerk_niveau =
'D')
OR ( k2.mld_stdmelding_key =
td2.ins_srtdiscipline_key
AND k2.mld_kenmerk_niveau =
'T')
OR (k1.mld_kenmerk_niveau = 'A'))
AND k2.mld_kenmerk_volgnummer <
k1.mld_kenmerk_volgnummer);
IF v_folder_kkey IS NOT NULL
THEN
INSERT INTO fac_result (fac_result_sessionid,
fac_result_naam,
fac_result_waarde)
VALUES (
psessionid,
'kenmerkpath',
'MLD\M'
|| TO_CHAR (TRUNC (newkey / 1000), 'FM0000')
|| '___\M'
|| newkey
|| '\'
|| v_folder_kkey
|| '\');
END IF;
fac.trackaction ('MLDTRK',
newkey,
NULL,
NULL,
'Melding geregistreerd via Mail2Melding');
END;
ELSE
IF UPPER (pto) LIKE 'AFAS@%'
THEN
defaultstdmelding := '1822';
BEGIN
INSERT INTO mld_melding (mld_melding_module,
mld_meldbron_key,
mld_melding_datum,
mld_melding_onderwerp,
mld_melding_omschrijving,
mld_melding_status,
mld_stdmelding_key,
prs_perslid_key,
prs_perslid_key_voor,
prs_kostenplaats_key,
mld_melding_spoed)
VALUES (
'MLD',
4, -- email
SYSDATE,
SUBSTR (psubject, 1, 60),
SUBSTR (
REPLACE (
SUBSTR (v_pbody, 1, 4000),
CHR (13)
|| CHR (10)
|| CHR (13)
|| CHR (10),
CHR (13) || CHR (10)),
1,
4000), -- verwijder onnodige witregels
2,
defaultstdmelding,
sender,
sender,
kostenplaats,
3)
RETURNING mld_melding_key
INTO newkey;
-- Find the lowest volgnummer of the Folder-flexfield.
SELECT MIN (k1.mld_kenmerk_key)
INTO v_folder_kkey
FROM mld_stdmelding sm1,
ins_tab_discipline td1,
mld_kenmerk k1,
mld_srtkenmerk sk1
WHERE sm1.mld_stdmelding_key = defaultstdmelding
AND sm1.mld_ins_discipline_key =
td1.ins_discipline_key
AND k1.mld_kenmerk_verwijder IS NULL
AND k1.mld_srtkenmerk_key = sk1.mld_srtkenmerk_key
AND sk1.mld_srtkenmerk_kenmerktype = 'M'
AND ( ( k1.mld_stdmelding_key =
sm1.mld_stdmelding_key
AND k1.mld_kenmerk_niveau = 'S')
OR ( k1.mld_stdmelding_key =
td1.ins_discipline_key
AND k1.mld_kenmerk_niveau = 'D')
OR ( k1.mld_stdmelding_key =
td1.ins_srtdiscipline_key
AND k1.mld_kenmerk_niveau = 'T')
OR (k1.mld_kenmerk_niveau = 'A'))
AND NOT EXISTS
(SELECT 1
FROM mld_stdmelding sm2,
ins_tab_discipline td2,
mld_kenmerk k2,
mld_srtkenmerk sk2
WHERE sm2.mld_stdmelding_key =
defaultstdmelding
AND sm2.mld_ins_discipline_key =
td2.ins_discipline_key
AND k2.mld_kenmerk_verwijder
IS NULL
AND k2.mld_srtkenmerk_key =
sk2.mld_srtkenmerk_key
AND sk2.mld_srtkenmerk_kenmerktype =
'M'
AND ( ( k2.mld_stdmelding_key =
sm2.mld_stdmelding_key
AND k2.mld_kenmerk_niveau =
'S')
OR ( k2.mld_stdmelding_key =
td2.ins_discipline_key
AND k2.mld_kenmerk_niveau =
'D')
OR ( k2.mld_stdmelding_key =
td2.ins_srtdiscipline_key
AND k2.mld_kenmerk_niveau =
'T')
OR (k1.mld_kenmerk_niveau =
'A'))
AND k2.mld_kenmerk_volgnummer <
k1.mld_kenmerk_volgnummer);
IF v_folder_kkey IS NOT NULL
THEN
INSERT INTO fac_result (fac_result_sessionid,
fac_result_naam,
fac_result_waarde)
VALUES (
psessionid,
'kenmerkpath',
'MLD\M'
|| TO_CHAR (TRUNC (newkey / 1000),
'FM0000')
|| '___\M'
|| newkey
|| '\'
|| v_folder_kkey
|| '\');
END IF;
fac.trackaction (
'MLDTRK',
newkey,
NULL,
NULL,
'Melding geregistreerd via Mail2Melding');
END;
ELSE
IF UPPER (pto) LIKE 'NEDAP@%'
THEN
defaultstdmelding := '3002';
BEGIN
INSERT INTO mld_melding (mld_melding_module,
mld_meldbron_key,
mld_melding_datum,
mld_melding_onderwerp,
mld_melding_omschrijving,
mld_melding_status,
mld_stdmelding_key,
prs_perslid_key,
prs_perslid_key_voor,
prs_kostenplaats_key,
mld_melding_spoed)
VALUES (
'MLD',
4, -- email
SYSDATE,
SUBSTR (psubject, 1, 60),
SUBSTR (
REPLACE (
SUBSTR (v_pbody, 1, 4000),
CHR (13)
|| CHR (10)
|| CHR (13)
|| CHR (10),
CHR (13) || CHR (10)),
1,
4000), -- verwijder onnodige witregels
2,
defaultstdmelding,
sender,
sender,
kostenplaats,
3)
RETURNING mld_melding_key
INTO newkey;
-- Find the lowest volgnummer of the Folder-flexfield.
SELECT MIN (k1.mld_kenmerk_key)
INTO v_folder_kkey
FROM mld_stdmelding sm1,
ins_tab_discipline td1,
mld_kenmerk k1,
mld_srtkenmerk sk1
WHERE sm1.mld_stdmelding_key = defaultstdmelding
AND sm1.mld_ins_discipline_key =
td1.ins_discipline_key
AND k1.mld_kenmerk_verwijder IS NULL
AND k1.mld_srtkenmerk_key =
sk1.mld_srtkenmerk_key
AND sk1.mld_srtkenmerk_kenmerktype = 'M'
AND ( ( k1.mld_stdmelding_key =
sm1.mld_stdmelding_key
AND k1.mld_kenmerk_niveau = 'S')
OR ( k1.mld_stdmelding_key =
td1.ins_discipline_key
AND k1.mld_kenmerk_niveau = 'D')
OR ( k1.mld_stdmelding_key =
td1.ins_srtdiscipline_key
AND k1.mld_kenmerk_niveau = 'T')
OR (k1.mld_kenmerk_niveau = 'A'))
AND NOT EXISTS
(SELECT 1
FROM mld_stdmelding sm2,
ins_tab_discipline td2,
mld_kenmerk k2,
mld_srtkenmerk sk2
WHERE sm2.mld_stdmelding_key =
defaultstdmelding
AND sm2.mld_ins_discipline_key =
td2.ins_discipline_key
AND k2.mld_kenmerk_verwijder
IS NULL
AND k2.mld_srtkenmerk_key =
sk2.mld_srtkenmerk_key
AND sk2.mld_srtkenmerk_kenmerktype =
'M'
AND ( ( k2.mld_stdmelding_key =
sm2.mld_stdmelding_key
AND k2.mld_kenmerk_niveau =
'S')
OR ( k2.mld_stdmelding_key =
td2.ins_discipline_key
AND k2.mld_kenmerk_niveau =
'D')
OR ( k2.mld_stdmelding_key =
td2.ins_srtdiscipline_key
AND k2.mld_kenmerk_niveau =
'T')
OR (k1.mld_kenmerk_niveau =
'A'))
AND k2.mld_kenmerk_volgnummer <
k1.mld_kenmerk_volgnummer);
IF v_folder_kkey IS NOT NULL
THEN
INSERT INTO fac_result (fac_result_sessionid,
fac_result_naam,
fac_result_waarde)
VALUES (
psessionid,
'kenmerkpath',
'MLD\M'
|| TO_CHAR (TRUNC (newkey / 1000),
'FM0000')
|| '___\M'
|| newkey
|| '\'
|| v_folder_kkey
|| '\');
END IF;
fac.trackaction (
'MLDTRK',
newkey,
NULL,
NULL,
'Melding geregistreerd via Mail2Melding');
END;
ELSE
IF UPPER (pto) LIKE 'OVERLIJDEN@%'
THEN
defaultstdmelding := '461';
BEGIN
INSERT INTO mld_melding (
mld_melding_module,
mld_meldbron_key,
mld_melding_datum,
mld_melding_onderwerp,
mld_melding_omschrijving,
mld_melding_status,
mld_stdmelding_key,
mld_alg_locatie_key,
prs_perslid_key,
prs_perslid_key_voor,
prs_kostenplaats_key,
mld_melding_spoed)
VALUES (
'MLD',
4, -- email
SYSDATE,
SUBSTR (psubject, 1, 60),
SUBSTR (
REPLACE (
SUBSTR (v_pbody, 1, 4000),
CHR (13)
|| CHR (10)
|| CHR (13)
|| CHR (10),
CHR (13) || CHR (10)),
1,
4000), -- verwijder onnodige witregels
2,
defaultstdmelding,
1, -- Hoe bepalen we de locatie? Nu maar even op 1 = Epe gezet
sender,
sender,
kostenplaats,
3)
RETURNING mld_melding_key
INTO newkey;
-- In geval van overlijden moet een workflow gestart worden
-- de startmelding krijgt status 5 en de volgende stap kan opgestart worden
mld.setmeldingstatus (newkey, 5, sender);
mld.mld_nextworkflowstep (newkey, 1); -- 1=Completed
INSERT INTO fac_result (fac_result_sessionid,
fac_result_naam,
fac_result_waarde)
VALUES (
psessionid,
'maillog',
'Geregistreerd onder melding '
|| newkey);
END;
ELSE
NULL;
END IF;
END IF;
END IF;
END IF;
END IF;
EXCEPTION
WHEN OTHERS
THEN
fac.writelog (
'PROCESSEMAIL',
'W',
'Mail kon niet verwerkt worden afzender: '
|| pfrom
|| '['
|| errormsg
|| ']',
'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');
END wzuv_processemail;
/
CREATE OR REPLACE VIEW WZUV_V_GEGEVENS_GEBOUW
(
ALG_GEBOUW_KEY,
GEBOUW,
PLANNING_SCHOONMAAK,
KLUSTEAM,
CSP,
HUISMEESTER1,
HUISMEESTER2,
RECEPTIE,
LINNENDIENST,
EVV
)
AS
SELECT g.alg_gebouw_key,
g.alg_gebouw_omschrijving,
schoonm.alg_onrgoedkenmerk_waarde planning_schoonmaak,
'klusteam@wzuveluwe.nl' klusteam,
'clientservicepunt@wzuveluwe.nl' CSP,
hm1.huismeester1,
hm2.huismeester2,
receptie.alg_onrgoedkenmerk_waarde receptie,
linnend.alg_onrgoedkenmerk_waarde linnendienst,
evv.alg_onrgoedkenmerk_waarde evv
FROM alg_gebouw g,
(SELECT ogk.alg_onrgoed_key gebouw_key,
ogk.alg_onrgoedkenmerk_waarde
FROM alg_onrgoedkenmerk ogk, alg_kenmerk k
WHERE ogk.alg_kenmerk_key = k.alg_kenmerk_key
AND k.alg_kenmerk_key = 1140
AND ogk.alg_onrgoed_niveau = 'G') linnend,
(SELECT ogk.alg_onrgoed_key gebouw_key,
ogk.alg_onrgoedkenmerk_waarde
FROM alg_onrgoedkenmerk ogk, alg_kenmerk k
WHERE ogk.alg_kenmerk_key = k.alg_kenmerk_key
AND k.alg_kenmerk_key = 1100
AND ogk.alg_onrgoed_niveau = 'G') schoonm,
(SELECT ogk.alg_onrgoed_key gebouw_key,
p.prs_perslid_email huismeester1
FROM alg_onrgoedkenmerk ogk, alg_kenmerk k, prs_perslid p
WHERE ogk.alg_kenmerk_key = k.alg_kenmerk_key
AND k.alg_kenmerk_key = 1080
AND fac.safe_to_number (ogk.alg_onrgoedkenmerk_waarde) =
p.prs_perslid_key
AND ogk.alg_onrgoed_niveau = 'G') hm1,
(SELECT ogk.alg_onrgoed_key gebouw_key,
p.prs_perslid_email huismeester2
FROM alg_onrgoedkenmerk ogk, alg_kenmerk k, prs_perslid p
WHERE ogk.alg_kenmerk_key = k.alg_kenmerk_key
AND k.alg_kenmerk_key = 1081
AND fac.safe_to_number (ogk.alg_onrgoedkenmerk_waarde) =
p.prs_perslid_key
AND ogk.alg_onrgoed_niveau = 'G') hm2,
(SELECT ogk.alg_onrgoed_key gebouw_key,
ogk.alg_onrgoedkenmerk_waarde
FROM alg_onrgoedkenmerk ogk, alg_kenmerk k
WHERE ogk.alg_kenmerk_key = k.alg_kenmerk_key
AND k.alg_kenmerk_key = 1120
AND ogk.alg_onrgoed_niveau = 'G') receptie,
(SELECT ogk.alg_onrgoed_key gebouw_key,
ogk.alg_onrgoedkenmerk_waarde
FROM alg_onrgoedkenmerk ogk, alg_kenmerk k
WHERE ogk.alg_kenmerk_key = k.alg_kenmerk_key
AND k.alg_kenmerk_key = 1160
AND ogk.alg_onrgoed_niveau = 'G') evv
WHERE g.alg_gebouw_key = linnend.gebouw_key(+)
AND g.alg_gebouw_key = schoonm.gebouw_key(+)
AND g.alg_gebouw_key = hm1.gebouw_key(+)
AND g.alg_gebouw_key = hm2.gebouw_key(+)
AND g.alg_gebouw_key = receptie.gebouw_key(+)
AND g.alg_gebouw_key = evv.gebouw_key(+);
CREATE OR REPLACE VIEW WZUV_V_NOTI_REMINDER_FIAT
(
SENDER,
RECEIVER,
TEXT,
CODE,
FAC_SRTNOTIFICATIE_KEY,
KEY,
XKEY,
XEMAIL,
XMOBILE
)
AS
SELECT DISTINCT
NULL
sender,
NULL
receiver,
'Reminder fiattering bestelling ' || b.bes_bestelling_key
tekst,
'BESTRK', --- srtnotificatie_code
344, --- fac_srtnotificatie_key,
b.bes_bestelling_key,
NULL
xkey,
fv.fiatteur_mail
xemail,
NULL
xmobile
FROM bes_bestelling b, --- Wie heeft een mail ontvangen voor het fiatteren>
(SELECT fac_usrdata_code reminder_na
FROM fac_usrtab ut, fac_usrdata ud
WHERE ut.fac_usrtab_key = ud.fac_usrtab_key
AND UPPER (ut.fac_usrtab_naam) = 'SYSTEEM'
AND ud.fac_usrdata_verwijder IS NULL
AND (ud.fac_usrdata_vervaldatum IS NULL OR ud.fac_usrdata_vervaldatum > SYSDATE)
AND UPPER (ud.fac_usrdata_omschr) LIKE '%BESAP1%') s,
(SELECT TRIM (
SUBSTR (t.fac_tracking_oms,
INSTR (t.fac_tracking_oms, ' ', -1)))
fiatteur_mail,
p.prs_perslid_key
fiatteur_key,
t.fac_tracking_refkey
bes_bestelling_key,
t.fac_tracking_datum
FROM fac_tracking t, prs_perslid p
WHERE t.fac_tracking_oms LIKE '%BESAP1%'
AND p.prs_perslid_verwijder IS NULL
AND p.prs_perslid_email =
TRIM (
SUBSTR (t.fac_tracking_oms,
INSTR (t.fac_tracking_oms, ' ', -1)))) fv
WHERE b.bes_bestelling_status = 2 -- nieuw, nog niet besteld
AND fv.bes_bestelling_key = b.bes_bestelling_key
AND b.bes_bestelling_datum > TO_DATE ('31-12-2022', 'dd-mm-yyyy')
AND TRUNC (fv.fac_tracking_datum + s.reminder_na) =
TRUNC (SYSDATE)
AND NOT EXISTS -- de fiatteur heeft een verzoek gehad en nog niet gefiatteerd
(SELECT bf.bes_bestelling_key,
tf.fac_tracking_datum datum_fiattering,
tf.prs_perslid_key fiatteur,
pf.prs_perslid_email
FROM bes_bestelling bf,
fac_tracking tf,
fac_srtnotificatie snf,
prs_perslid pf
WHERE tf.fac_tracking_refkey = bf.bes_bestelling_key
AND snf.fac_srtnotificatie_key =
tf.fac_srtnotificatie_key
AND pf.prs_perslid_key = tf.prs_perslid_key
AND snf.fac_srtnotificatie_xmlnode = 'bestelling'
AND bf.bes_bestelling_status = 2
AND snf.fac_srtnotificatie_code = 'BESFIT'
AND fv.fiatteur_key = tf.prs_perslid_key);
--- notificaties bij vrijkomen appartement WZUV#66313 op diverse momenten moeten verschilllende medewerkers bericht ontvangen
--- Stap 1:
--- als de melding wordt aangemaakt moet het klusteam, het CSP, de afdelingsassistente, de receptie en de husmeester een mail ontvangen
CREATE OR REPLACE VIEW WZUV_V_NOTI_VRIJKOMEN_APP1
(
SENDER,
RECEIVER,
TEXT,
CODE,
FAC_SRTNOTIFICATIE_KEY,
KEY,
XKEY,
XEMAIL,
XMOBILE
)
AS
SELECT DISTINCT
NULL
sender,
NULL
receiver,
'Melding vrijkomen '
|| (LOWER (r.alg_ruimte_omschrijving))
|| ' '
|| g.alg_gebouw_naam,
n.fac_srtnotificatie_code,
n.fac_srtnotificatie_key,
m.mld_melding_key,
NULL
xkey,
gg.csp
|| ';'
|| gg.huismeester1
|| ';'
|| gg.huismeester2
|| ';'
|| gg.klusteam
|| ';'
|| gg.planning_schoonmaak
|| ';'
|| gg.receptie
|| ';'
|| gg.linnendienst
|| ';'
|| gg.evv
xemail,
NULL
xmobile
FROM fac_tracking t,
mld_melding m,
alg_ruimte r,
alg_verdieping v,
alg_gebouw g,
fac_srtnotificatie n,
wzuv_v_gegevens_gebouw gg
WHERE m.mld_alg_onroerendgoed_keys = r.alg_ruimte_key
AND r.alg_verdieping_key = v.alg_verdieping_key
AND v.alg_gebouw_key = g.alg_gebouw_key
AND g.alg_gebouw_key = gg.alg_gebouw_key
AND t.fac_tracking_refkey = m.mld_melding_key
AND n.fac_srtnotificatie_code = 'CUST01'
AND t.fac_srtnotificatie_key = 44 -- mldnew
AND m.mld_stdmelding_key = 2822 -- melding oplevering appartement 2822 op prod
AND t.fac_tracking_datum >
(SELECT fac_notificatie_job_lastrun
FROM fac_notificatie_job
WHERE UPPER (fac_notificatie_job_view) =
'WZUV_V_NOTI_VRIJKOMEN_APP1')
AND t.fac_tracking_datum <
(SELECT fac_notificatie_job_nextrun
FROM fac_notificatie_job
WHERE UPPER (fac_notificatie_job_view) =
'WZUV_V_NOTI_VRIJKOMEN_APP1');
--- Stap 2:
--- melding gaat na het aanmaken naar de huismeester deze vult de datum oplevering met de familie in
--- hiervan krijgt het CSP bericht
CREATE OR REPLACE VIEW WZUV_V_NOTI_VRIJKOMEN_APP2
(
SENDER,
RECEIVER,
TEXT,
CODE,
FAC_SRTNOTIFICATIE_KEY,
KEY,
XKEY,
XEMAIL,
XMOBILE
)
AS
SELECT DISTINCT
NULL
sender,
NULL
receiver,
'Datum oplevering met familie '
|| (LOWER (r.alg_ruimte_omschrijving))
|| ' '
|| g.alg_gebouw_naam,
fac_srtnotificatie_code,
n.fac_srtnotificatie_key,
m.mld_melding_key,
NULL
xkey,
gg.csp
xemail,
NULL
xmobile
FROM fac_tracking t,
mld_melding m,
fac_srtnotificatie n,
wzuv_v_gegevens_gebouw gg,
alg_ruimte r,
alg_verdieping v,
alg_gebouw g,
(SELECT km.mld_melding_key, km.mld_kenmerkmelding_aanmaak
FROM mld_kenmerkmelding km
WHERE km.mld_kenmerk_key = 3388) datum --- Datum van oplevering met familie
WHERE t.fac_tracking_refkey = m.mld_melding_key
AND n.fac_srtnotificatie_code = 'CUST02'
AND m.mld_stdmelding_key = 2822 -- melding opleveren appartement
AND m.mld_alg_onroerendgoed_keys = r.alg_ruimte_key
AND r.alg_verdieping_key = v.alg_verdieping_key
AND v.alg_gebouw_key = g.alg_gebouw_key
AND g.alg_gebouw_key = gg.alg_gebouw_key
AND m.mld_melding_key = datum.mld_melding_key
AND datum.mld_kenmerkmelding_aanmaak >
(SELECT fac_notificatie_job_lastrun
FROM fac_notificatie_job
WHERE UPPER (fac_notificatie_job_view) =
'WZUV_V_NOTI_VRIJKOMEN_APP2')
AND datum.mld_kenmerkmelding_aanmaak <
(SELECT fac_notificatie_job_nextrun
FROM fac_notificatie_job
WHERE UPPER (fac_notificatie_job_view) =
'WZUV_V_NOTI_VRIJKOMEN_APP2');
--- Stap 3:
--- het klusteam vult de planning van de werkzaamheden in
--- hiervan krijgt het CSP bericht
CREATE OR REPLACE VIEW WZUV_V_NOTI_VRIJKOMEN_APP3
(
SENDER,
RECEIVER,
TEXT,
CODE,
FAC_SRTNOTIFICATIE_KEY,
KEY,
XKEY,
XEMAIL,
XMOBILE
)
AS
SELECT DISTINCT
NULL
sender,
NULL
receiver,
'Kluswerkzaamheden '
|| (LOWER (r.alg_ruimte_omschrijving))
|| ' '
|| g.alg_gebouw_naam
|| ' ingepland',
fac_srtnotificatie_code,
n.fac_srtnotificatie_key,
m.mld_melding_key,
NULL
xkey,
gg.csp
xemail,
NULL
xmobile
FROM fac_tracking t,
mld_melding m,
fac_srtnotificatie n,
wzuv_v_gegevens_gebouw gg,
alg_ruimte r,
alg_verdieping v,
alg_gebouw g,
(SELECT km.mld_melding_key, km.mld_kenmerkmelding_aanmaak
FROM mld_kenmerkmelding km
WHERE km.mld_kenmerk_key = 3390) klussen_afg --- kluswerkzaamheden gepland
WHERE t.fac_tracking_refkey = m.mld_melding_key
AND n.fac_srtnotificatie_code = 'CUST03'
AND m.mld_stdmelding_key = 2822 -- melding opleveren appartement
AND m.mld_alg_onroerendgoed_keys = r.alg_ruimte_key
AND r.alg_verdieping_key = v.alg_verdieping_key
AND v.alg_gebouw_key = g.alg_gebouw_key
AND g.alg_gebouw_key = gg.alg_gebouw_key
AND m.mld_melding_key = klussen_afg.mld_melding_key
AND klussen_afg.mld_kenmerkmelding_aanmaak >
(SELECT fac_notificatie_job_lastrun
FROM fac_notificatie_job
WHERE UPPER (fac_notificatie_job_view) =
'WZUV_V_NOTI_VRIJKOMEN_APP3')
AND klussen_afg.mld_kenmerkmelding_aanmaak <
(SELECT fac_notificatie_job_nextrun
FROM fac_notificatie_job
WHERE UPPER (fac_notificatie_job_view) =
'WZUV_V_NOTI_VRIJKOMEN_APP3');
--- Stap 4:
--- de afdelingsassistent plant de schoonmaak in
--- hiervan krijgen huismeester en CSP bericht
CREATE OR REPLACE VIEW WZUV_V_NOTI_VRIJKOMEN_APP4
(
SENDER,
RECEIVER,
TEXT,
CODE,
FAC_SRTNOTIFICATIE_KEY,
KEY,
XKEY,
XEMAIL,
XMOBILE
)
AS
SELECT DISTINCT
NULL
sender,
NULL
receiver,
'Schoonmaakwerkzaamheden '
|| (LOWER (r.alg_ruimte_omschrijving))
|| ' '
|| g.alg_gebouw_naam
|| ' ingepland',
fac_srtnotificatie_code,
n.fac_srtnotificatie_key,
m.mld_melding_key,
NULL
xkey,
gg.csp || ';' || gg.huismeester1 || ';' || gg.huismeester2
xemail,
NULL
xmobile
FROM fac_tracking t,
mld_melding m,
fac_srtnotificatie n,
wzuv_v_gegevens_gebouw gg,
alg_ruimte r,
alg_verdieping v,
alg_gebouw g,
(SELECT km.mld_melding_key, km.mld_kenmerkmelding_aanmaak
FROM mld_kenmerkmelding km
WHERE km.mld_kenmerk_key = 3394) schoonm_afg --- datum opleveringsschoonmaak gepland
WHERE t.fac_tracking_refkey = m.mld_melding_key
AND n.fac_srtnotificatie_code = 'CUST06'
AND m.mld_stdmelding_key = 2822 -- melding opleveren appartement
AND m.mld_alg_onroerendgoed_keys = r.alg_ruimte_key
AND r.alg_verdieping_key = v.alg_verdieping_key
AND v.alg_gebouw_key = g.alg_gebouw_key
AND g.alg_gebouw_key = gg.alg_gebouw_key
AND m.mld_melding_key = schoonm_afg.mld_melding_key
AND schoonm_afg.mld_kenmerkmelding_aanmaak >
(SELECT fac_notificatie_job_lastrun
FROM fac_notificatie_job
WHERE UPPER (fac_notificatie_job_view) =
'WZUV_V_NOTI_VRIJKOMEN_APP4')
AND schoonm_afg.mld_kenmerkmelding_aanmaak <
(SELECT fac_notificatie_job_nextrun
FROM fac_notificatie_job
WHERE UPPER (fac_notificatie_job_view) =
'WZUV_V_NOTI_VRIJKOMEN_APP4');
--- Stap 5:
--- huismeester voegt opleverlijst en sleutellijst toe aan de melding
CREATE OR REPLACE VIEW WZUV_V_NOTI_VRIJKOMEN_APP5
(
SENDER,
RECEIVER,
TEXT,
CODE,
FAC_SRTNOTIFICATIE_KEY,
KEY,
XKEY,
XEMAIL,
XMOBILE
)
AS
SELECT DISTINCT
NULL
sender,
NULL
receiver,
'Sleutellijst en opleverlijst aangeleverd t.b.v. '
|| (LOWER (r.alg_ruimte_omschrijving))
|| ' '
|| g.alg_gebouw_naam,
fac_srtnotificatie_code,
n.fac_srtnotificatie_key,
m.mld_melding_key,
NULL
xkey,
gg.csp
xemail,
NULL
xmobile
FROM fac_tracking t,
mld_melding m,
fac_srtnotificatie n,
wzuv_v_gegevens_gebouw gg,
alg_ruimte r,
alg_verdieping v,
alg_gebouw g,
(SELECT sl.mld_melding_key, GREATEST (datum_sl, datum_ol) datum
FROM (SELECT km.mld_melding_key,
km.mld_kenmerkmelding_aanmaak datum_sl
FROM mld_kenmerkmelding km
WHERE km.mld_kenmerk_key = 3501) sl,
(SELECT km.mld_melding_key,
km.mld_kenmerkmelding_aanmaak datum_ol
FROM mld_kenmerkmelding km
WHERE km.mld_kenmerk_key = 3502) ol
WHERE sl.mld_melding_key = ol.mld_melding_key) lijst
WHERE t.fac_tracking_refkey = m.mld_melding_key
AND n.fac_srtnotificatie_code = 'CUST07'
AND m.mld_stdmelding_key = 2822 -- melding opleveren appartement
AND m.mld_alg_onroerendgoed_keys = r.alg_ruimte_key
AND r.alg_verdieping_key = v.alg_verdieping_key
AND v.alg_gebouw_key = g.alg_gebouw_key
AND g.alg_gebouw_key = gg.alg_gebouw_key
AND m.mld_melding_key = lijst.mld_melding_key
AND lijst.datum >
(SELECT fac_notificatie_job_lastrun
FROM fac_notificatie_job
WHERE UPPER (fac_notificatie_job_view) =
'WZUV_V_NOTI_VRIJKOMEN_APP5')
AND lijst.datum <
(SELECT fac_notificatie_job_nextrun
FROM fac_notificatie_job
WHERE UPPER (fac_notificatie_job_view) =
'WZUV_V_NOTI_VRIJKOMEN_APP5');
--- Stap 6:
--- het klusteam meld de werkaamheden gereed, het CSP ontvangt hier een mailtje van
CREATE OR REPLACE VIEW WZUV_V_NOTI_VRIJKOMEN_APP6
(
SENDER,
RECEIVER,
TEXT,
CODE,
FAC_SRTNOTIFICATIE_KEY,
KEY,
XKEY,
XEMAIL,
XMOBILE
)
AS
SELECT DISTINCT
NULL
sender,
NULL
receiver,
'Kluswerkzaamheden '
|| (LOWER (r.alg_ruimte_omschrijving))
|| ' '
|| g.alg_gebouw_naam
|| ' afgerond',
fac_srtnotificatie_code,
n.fac_srtnotificatie_key,
m.mld_melding_key,
NULL
xkey,
gg.csp
xemail,
NULL
xmobile
FROM fac_tracking t,
mld_melding m,
fac_srtnotificatie n,
wzuv_v_gegevens_gebouw gg,
alg_ruimte r,
alg_verdieping v,
alg_gebouw g,
(SELECT km.mld_melding_key, km.mld_kenmerkmelding_aanmaak
FROM mld_kenmerkmelding km
WHERE km.mld_kenmerk_key = 3489) klussen_afg
WHERE t.fac_tracking_refkey = m.mld_melding_key
AND n.fac_srtnotificatie_code = 'CUST08'
AND m.mld_stdmelding_key = 2822 -- melding opleveren appartement
AND m.mld_alg_onroerendgoed_keys = r.alg_ruimte_key
AND r.alg_verdieping_key = v.alg_verdieping_key
AND v.alg_gebouw_key = g.alg_gebouw_key
AND g.alg_gebouw_key = gg.alg_gebouw_key
AND m.mld_melding_key = klussen_afg.mld_melding_key
AND klussen_afg.mld_kenmerkmelding_aanmaak >
(SELECT fac_notificatie_job_lastrun
FROM fac_notificatie_job
WHERE UPPER (fac_notificatie_job_view) =
'WZUV_V_NOTI_VRIJKOMEN_APP6')
AND klussen_afg.mld_kenmerkmelding_aanmaak <
(SELECT fac_notificatie_job_nextrun
FROM fac_notificatie_job
WHERE UPPER (fac_notificatie_job_view) =
'WZUV_V_NOTI_VRIJKOMEN_APP6');
--- Stap 7:
--- de melding wordt gereed gemeld, het CSP moet hier ook bericht van krijgen
CREATE OR REPLACE VIEW WZUV_V_NOTI_VRIJKOMEN_APP7
(
SENDER,
RECEIVER,
TEXT,
CODE,
FAC_SRTNOTIFICATIE_KEY,
KEY,
XKEY,
XEMAIL,
XMOBILE
)
AS
SELECT DISTINCT
NULL
sender,
NULL
receiver,
'Melding vrijkomen '
|| (LOWER (r.alg_ruimte_omschrijving))
|| ' '
|| g.alg_gebouw_naam
|| ' is afgemeld',
n.fac_srtnotificatie_code,
n.fac_srtnotificatie_key,
m.mld_melding_key,
NULL
xkey,
gg.csp
xemail,
NULL
xmobile
FROM fac_tracking t,
mld_melding m,
alg_ruimte r,
alg_verdieping v,
alg_gebouw g,
fac_srtnotificatie n,
wzuv_v_gegevens_gebouw gg
WHERE m.mld_alg_onroerendgoed_keys = r.alg_ruimte_key
AND r.alg_verdieping_key = v.alg_verdieping_key
AND v.alg_gebouw_key = g.alg_gebouw_key
AND g.alg_gebouw_key = gg.alg_gebouw_key
AND t.fac_tracking_refkey = m.mld_melding_key
AND n.fac_srtnotificatie_code = 'CUST09'
AND t.fac_srtnotificatie_key = 39 -- mldafm
AND m.mld_stdmelding_key = 2822 -- melding oplevering appartement 2822 op prod
AND t.fac_tracking_datum >
(SELECT fac_notificatie_job_lastrun
FROM fac_notificatie_job
WHERE UPPER (fac_notificatie_job_view) =
'WZUV_V_NOTI_VRIJKOMEN_APP7')
AND t.fac_tracking_datum <
(SELECT fac_notificatie_job_nextrun
FROM fac_notificatie_job
WHERE UPPER (fac_notificatie_job_view) =
'WZUV_V_NOTI_VRIJKOMEN_APP7');
--View voor Notificatie bij Rapeldatum contract bereikt
CREATE OR REPLACE VIEW WZUV_V_NOTI_CNTREMINDER
(
CODE,
SENDER,
RECEIVER,
TEXT,
KEY,
PAR1,
PAR2,
XKEY
)
AS
SELECT 'CNTINF',
'',
c.prs_perslid_key_beh,
'Rappel: Contract '
|| c.cnt_contract_nummer_intern
|| DECODE (cnt_contract_versie,
NULL, '',
'.' || cnt_contract_versie)
|| ' ('
|| c.cnt_contract_omschrijving
|| ' '
|| b.prs_bedrijf_naam
|| ')'
|| ' moet uiterlijk per '
|| TO_CHAR (cnt.cnt_getopzegdatum (c.cnt_contract_key),
'DD-MM-YYYY')
|| ' worden verlengd of opgezegd.',
c.cnt_contract_key,
c.cnt_contract_nummer_intern,
cnt.cnt_getopzegdatum (c.cnt_contract_key),
NULL
FROM cnt_v_aanwezigcontract c, prs_bedrijf b
WHERE b.prs_bedrijf_key = c.cnt_prs_bedrijf_key
AND cnt_contract_verwijder IS NULL
AND cnt_contract_status = 0
AND (SYSDATE BETWEEN cnt.cnt_getrappeldatum (c.cnt_contract_key)
AND cnt.cnt_getopzegdatum (c.cnt_contract_key))
UNION ALL
SELECT 'CNTINF',
'',
c.prs_perslid_key_eig,
'Rappel: Contract '
|| c.cnt_contract_nummer_intern
|| DECODE (cnt_contract_versie,
NULL, '',
'.' || cnt_contract_versie)
|| ' ('
|| c.cnt_contract_omschrijving
|| ' '
|| b.prs_bedrijf_naam
|| ')'
|| ' moet uiterlijk per '
|| TO_CHAR (cnt.cnt_getopzegdatum (c.cnt_contract_key),
'DD-MM-YYYY')
|| ' worden verlengd of opgezegd.',
c.cnt_contract_key,
c.cnt_contract_nummer_intern,
cnt.cnt_getopzegdatum (c.cnt_contract_key),
NULL
FROM cnt_v_aanwezigcontract c, prs_bedrijf b
WHERE b.prs_bedrijf_key = c.cnt_prs_bedrijf_key
AND cnt_contract_verwijder IS NULL
AND cnt_contract_status = 0
AND (SYSDATE BETWEEN cnt.cnt_getrappeldatum (c.cnt_contract_key)
AND cnt.cnt_getopzegdatum (c.cnt_contract_key));
CREATE OR REPLACE VIEW WZUV_V_RAP_CONTROLE_RES
(
SOORT,
DATUM,
NEDAPNR,
KOSTENPLAATS,
KOSTENSOORT,
RES_NR,
NO_SHOW,
STATUS,
OMSCHRIJVING,
RUIMTE,
RUIMTE_PRIJS,
CATERING_PRIJS,
NAAM_GEFACTUREERDE,
FACTUURADRES,
PC_PLAATS
)
AS
SELECT DECODE (res.fclt_3d_afdeling_key,
422, 'Extern - Cli<6C>nt',
441, 'Extern - Overig',
'Intern')
activiteitensoort,
van,
CASE
WHEN UPPER (personeelsnr) LIKE 'NEDAP%'
THEN
SUBSTR (personeelsnr, 7)
ELSE
''
END
AS NEDAPnr,
kpl.prs_kostenplaats_nr
|| '- '
|| kpl.prs_kostenplaats_omschrijving,
res.kostensoort,
nummer,
no_show,
bostatus,
res_omschrijving,
ruimte,
res.getruimteprijs (rrr.res_rsv_ruimte_key)
ruimte_prijs,
SUM (voorziening_totaalprijs)
catering_prijs,
naam_gefactureerde,
factuuradres,
pc_plaats
FROM res_v_udr_reserveringincl res,
prs_afdeling afd,
res_rsv_ruimte rrr,
prs_kostenplaats kpl,
(SELECT res_rsv_ruimte_key,
res_kenmerkreservering_waarde naam_gefactureerde
FROM res_kenmerkwaarde kw, res_kenmerk km, res_srtkenmerk skm
WHERE kw.res_kenmerk_key = km.res_kenmerk_key
AND km.res_srtkenmerk_key = skm.res_srtkenmerk_key
AND res_srtkenmerk_upper LIKE '%NAAM GEFACTUREERDE%')
gefactureerde,
(SELECT res_rsv_ruimte_key,
res_kenmerkreservering_waarde factuuradres
FROM res_kenmerkwaarde kw, res_kenmerk km, res_srtkenmerk skm
WHERE kw.res_kenmerk_key = km.res_kenmerk_key
AND km.res_srtkenmerk_key = skm.res_srtkenmerk_key
AND res_srtkenmerk_upper LIKE 'ADRES%') adres,
(SELECT res_rsv_ruimte_key,
res_kenmerkreservering_waarde pc_plaats
FROM res_kenmerkwaarde kw, res_kenmerk km, res_srtkenmerk skm
WHERE kw.res_kenmerk_key = km.res_kenmerk_key
AND km.res_srtkenmerk_key = skm.res_srtkenmerk_key
AND res_srtkenmerk_upper LIKE 'POSTCODE%') postcode
WHERE res.fclt_3d_afdeling_key = afd.prs_afdeling_key
AND rrr.res_rsv_ruimte_key = res.key
AND afd.prs_kostenplaats_key = kpl.prs_kostenplaats_key
AND res.key = gefactureerde.res_rsv_ruimte_key(+)
AND res.key = adres.res_rsv_ruimte_key(+)
AND res.key = postcode.res_rsv_ruimte_key(+)
GROUP BY res.fclt_3d_afdeling_key,
van,
personeelsnr,
kpl.prs_kostenplaats_nr,
kpl.prs_kostenplaats_omschrijving,
kostensoort,
nummer,
no_show,
bostatus,
res_omschrijving,
ruimte,
rrr.res_rsv_ruimte_key,
naam_gefactureerde,
factuuradres,
pc_plaats
ORDER BY van, nummer;
CREATE OR REPLACE PROCEDURE wzuv_fin_upsertkenmerk (
f_kenmerk_key IN NUMBER,
f_fact_key IN NUMBER,
f_kenmerk_waarde IN VARCHAR2)
AS
v_count NUMBER;
v_niveau VARCHAR2 (1);
BEGIN
-- Is er al een actuele waarde?
SELECT COUNT (*)
INTO v_count
FROM fin_kenmerkfactuur
WHERE fin_factuur_key = f_fact_key
AND fin_kenmerk_key = f_kenmerk_key
AND fin_kenmerkfactuur_verwijder IS NULL;
IF v_count = 1
THEN
IF f_kenmerk_waarde IS NULL
THEN
-- Er was al een waarde maar nu is de waarde leeg: Wissen bestaande waarde
DELETE fin_kenmerkfactuur
WHERE fin_factuur_key = f_fact_key
AND fin_kenmerk_key = f_kenmerk_key
AND fin_kenmerkfactuur_verwijder IS NULL;
ELSE
-- Er was al een waarde maar er wordt ook een waarde meegegeven: Bijwerken bestaande waarde
UPDATE fin_kenmerkfactuur
SET fin_kenmerkfactuur_waarde = f_kenmerk_waarde
WHERE fin_factuur_key = f_fact_key
AND fin_kenmerk_key = f_kenmerk_key
AND fin_kenmerkfactuur_verwijder IS NULL;
END IF;
ELSE
IF f_kenmerk_key IS NOT NULL AND f_kenmerk_waarde IS NOT NULL
THEN
-- Er was nog geen waarde en er wordt een waarde meegegeven: Registreren waarde
INSERT INTO FIN_KENMERKFACTUUR (fin_factuur_key,
fin_kenmerk_key,
fin_kenmerkfactuur_waarde)
VALUES (f_fact_key, f_kenmerk_key, f_kenmerk_waarde);
END IF;
END IF;
END;
/
CREATE OR REPLACE PROCEDURE wzuv_export_ks_topbloemen (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2,
p_filedir IN VARCHAR2,
p_filename IN VARCHAR2)
AS
-- In cursor c_factuur alle facturen die gerelateerd zijn aan een bestelling bij Topbloemen en die nog geen kostensoort hebben
CURSOR c_factuur IS
SELECT fac.fin_factuur_key
FROM fin_factuur fac, prs_bedrijf b, bes_bestelopdr bo
WHERE b.prs_bedrijf_naam_upper LIKE '%TOPBLOEMEN%'
AND b.prs_bedrijf_key = bo.prs_bedrijf_key
AND fac.bes_bestelopdr_key = bo.bes_bestelopdr_key
AND fac.prs_kostensoort_key IS NULL;
BEGIN
FOR rec IN c_factuur
LOOP
-- voor alle facturen van Topbloemen waarbij nog geen kostensoort bekend is, moet de kostensoort herleid worden uit het kenmerk
UPDATE fin_factuur fac
SET fac.prs_kostensoort_key =
(SELECT ks.prs_kostensoort_key
FROM prs_bedrijf b,
bes_bestelopdr bo,
bes_bestelling bes,
bes_kenmerkbestell kb,
bes_kenmerk km,
bes_srtkenmerk sk,
fac_usrdata kw,
prs_kostensoort ks
WHERE b.prs_bedrijf_naam_upper LIKE '%TOPBLOEMEN%'
AND b.prs_bedrijf_key = bo.prs_bedrijf_key
AND SUBSTR (bes_bestelopdr_id,
1,
INSTR (bes_bestelopdr_id, '/') - 1) =
bes.bes_bestelling_key(+)
AND kb.bes_bestelling_key = bes.bes_bestelling_key
AND kb.bes_kenmerkbestell_waarde =
TO_CHAR (kw.fac_usrdata_key)
AND TO_CHAR (kw.fac_usrdata_prijs) =
ks.prs_kostensoort_upper
AND kb.bes_kenmerk_key = km.bes_kenmerk_key
AND sk.bes_srtkenmerk_key = km.bes_srtkenmerk_key
AND fac.bes_bestelopdr_key = bo.bes_bestelopdr_key
AND sk.bes_srtkenmerk_upper = 'ATTENTIEPROTOCOL')
WHERE fac.fin_factuur_key = rec.fin_factuur_key;
END LOOP;
END;
/
CREATE OR REPLACE VIEW WZUV_V_INS_QRC_OBJECT
(
HIDE_F_SORT,
FCLT_F_DISCIPLINE,
FCLT_F_OBJECTGROEP,
FCLT_F_OBJECTSOORT,
FCLT_F_IDENTIFICATIE,
FCLT_F_BOOKMARK,
INS_DEEL_KEY,
INS_SRTDEEL_KEY,
FCLT_3D_DISCIPLINE_KEY,
BOOKMARK_ID
)
AS
SELECT i.ins_deel_omschrijving hide_f_sort,
d.ins_discipline_omschrijving fclt_f_discipline,
g.ins_srtgroep_omschrijving fclt_f_objectgroep,
s.ins_srtdeel_omschrijving fclt_f_objectsoort,
i.ins_deel_omschrijving fclt_f_identificatie,
b.fac_bookmark_naam fclt_f_bookmark,
i.ins_deel_key,
s.ins_srtdeel_key,
i.ins_discipline_key fclt_3d_discipline_key,
b.fac_bookmark_id hide_f_bookmark_id
FROM ins_deel i,
ins_srtdeel s,
ins_srtgroep g,
ins_discipline d,
fac_bookmark b
WHERE UPPER (b.fac_bookmark_naam) = 'QRC NAAR OBJECT'
AND COALESCE (b.fac_bookmark_expire, SYSDATE + 1) > SYSDATE
AND ins_deel_verwijder IS NULL
AND COALESCE (i.ins_deel_vervaldatum, SYSDATE + 1) > SYSDATE
AND i.ins_deel_module = 'INS'
AND i.ins_deel_parent_key IS NULL
AND s.ins_srtdeel_key = i.ins_srtdeel_key
AND g.ins_srtgroep_key = s.ins_srtgroep_key
AND d.ins_discipline_key = g.ins_discipline_key;
CREATE OR REPLACE VIEW WZUV_V_NOTI_BESGOE
(
SENDER,
RECEIVER,
TEXT,
CODE,
FAC_SRTNOTIFICATIE_KEY,
KEY,
XKEY,
XEMAIL,
XMOBILE
)
AS
SELECT DISTINCT
NULL
sender,
NULL
receiver,
'Bestelaanvraag '
|| b.bes_bestelling_key
|| ' moet goedgekeurd worden',
n.fac_srtnotificatie_code,
n.fac_srtnotificatie_key,
b.bes_bestelling_key,
NULL
xkey,
'kwaliteitenveiligheid@wzuveluwe.nl'
xemail,
NULL
xmobile
FROM bes_bestelling b,
bes_srtgroep sg,
ins_tab_discipline d,
bes_disc_params dp,
fac_tracking f,
fac_srtnotificatie n,
( SELECT bi.bes_bestelling_key,
sd.bes_srtgroep_key,
SUM (
bi.bes_bestelling_item_aantal
* bi.bes_bestelling_item_prijs) AS totaal
FROM bes_bestelling_item bi, bes_srtdeel sd
WHERE bi.bes_srtdeel_key = sd.bes_srtdeel_key
GROUP BY bi.bes_bestelling_key, sd.bes_srtgroep_key) bedrag
WHERE b.bes_bestelling_key = bedrag.bes_bestelling_key
AND bedrag.bes_srtgroep_key = sg.bes_srtgroep_key
AND sg.ins_discipline_key = d.ins_discipline_key
AND dp.bes_ins_discipline_key = d.ins_discipline_key
AND bedrag.totaal > dp.bes_disc_params_bestellimiet --- alleen goedkeuring nodig als order bedrag boven bestellimiet
AND n.fac_srtnotificatie_key = f.fac_srtnotificatie_key
AND b.bes_bestelling_key = f.fac_tracking_refkey
AND b.bes_bestelling_status NOT IN (1, 5, 8)
AND n.fac_srtnotificatie_xmlnode = 'bestelling'
AND dp.bes_ins_discipline_key_inkoop IS NOT NULL
AND ( ( dp.bes_disc_params_fiatflow = 1
AND n.fac_srtnotificatie_key = 7)
OR ( dp.bes_disc_params_fiatflow = 0
AND n.fac_srtnotificatie_key = 5))
AND f.fac_tracking_datum >
(SELECT fac_notificatie_job_nextrun
- fac_notificatie_job_interval / 24
FROM fac_notificatie_job
WHERE UPPER (fac_notificatie_job_view) =
'WZUV_V_NOTI_BESGOE')
AND f.fac_tracking_datum <
(SELECT fac_notificatie_job_nextrun
FROM fac_notificatie_job
WHERE UPPER (fac_notificatie_job_view) =
'WZUV_V_NOTI_BESGOE');
CREATE OR REPLACE VIEW WZUV_V_NOTI_HUURAANVRAAG
(
SENDER,
RECEIVER,
TEXT,
CODE,
FAC_SRTNOTIFICATIE_KEY,
KEY,
XKEY,
XEMAIL,
XMOBILE
)
AS
SELECT DISTINCT
NULL sender,
NULL receiver,
REPLACE (n.fac_srtnotificatie_oms,
'##nr##',
t.fac_tracking_refkey) omschr,
n.fac_srtnotificatie_code,
n.fac_srtnotificatie_key,
t.fac_tracking_refkey,
NULL xkey,
(SELECT LISTAGG (p.prs_perslid_email, ';')
WITHIN GROUP (ORDER BY p.prs_perslid_naam)
FROM fac_groeprechten gr,
fac_functie f,
fac_groep g,
fac_gebruikersgroep gg,
prs_perslid p
WHERE f.fac_functie_key = gr.fac_functie_key
AND f.fac_functie_code = 'WEB_USER12'
AND g.fac_groep_key = gr.fac_groep_key
AND gg.fac_groep_key = g.fac_groep_key
AND p.prs_perslid_key = gg.prs_perslid_key) xemail,
NULL xmobile
FROM fac_tracking t,
fac_srtnotificatie sn,
bes_bestelling b,
bes_bestelling_item bi,
bes_srtdeel sd,
bes_srtgroep sg,
ins_tab_discipline d,
fac_srtnotificatie n
WHERE t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
AND sn.fac_srtnotificatie_code = 'BESFIT'
AND t.fac_tracking_refkey = b.bes_bestelling_key
AND b.bes_bestelling_key = bi.bes_bestelling_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
AND d.ins_discipline_key = 2241 -- huur hulpmiddelen prod
AND b.bes_bestelling_status = 3 -- aanvraag is gefiatteerd
AND n.fac_srtnotificatie_code = 'CUST05'
AND t.fac_tracking_datum >
(SELECT fac_notificatie_job_nextrun
- fac_notificatie_job_interval / 24
FROM fac_notificatie_job
WHERE UPPER (fac_notificatie_job_view) =
'WZUV_V_NOTI_HUURAANVRAAG')
AND t.fac_tracking_datum <
(SELECT fac_notificatie_job_nextrun
FROM fac_notificatie_job
WHERE UPPER (fac_notificatie_job_view) =
'WZUV_V_NOTI_HUURAANVRAAG');
-------------------------------------------------------------------------------
---------- WZUV#79858 Rapportages RTM -----------------------------------------
-------------------------------------------------------------------------------
-- 2.1 Aantal openstaande tickets naar type per status (statussen WZU)
CREATE OR REPLACE VIEW WZUV_V_RTM_STATUS_TYPE
(
TYPE_MLD,
STATUS_HIP,
AANTAL
)
AS
SELECT vg.ins_discipline_omschrijving,
COALESCE (sh.status_hip, 'Onbekend') status_hip,
COUNT (m.mld_melding_key) aantal
FROM mld_melding m,
mld_stdmelding sm,
ins_tab_discipline vg,
ins_srtdiscipline vgt,
mld_statuses s,
(SELECT m.mld_melding_key, ud.fac_usrdata_omschr status_hip
FROM mld_srtkenmerk sk,
mld_kenmerk k,
mld_kenmerkmelding km,
fac_usrdata ud,
mld_melding m
WHERE sk.mld_srtkenmerk_key = k.mld_srtkenmerk_key
AND km.mld_kenmerk_key = k.mld_kenmerk_key
AND sk.mld_srtkenmerk_key = 1902
AND fac.safe_to_number (km.mld_kenmerkmelding_waarde) =
ud.fac_usrdata_key
AND m.mld_melding_key = km.mld_melding_key) sh
WHERE m.mld_melding_status = s.mld_statuses_key
AND m.mld_melding_key = sh.mld_melding_key(+)
AND sm.mld_stdmelding_key = m.mld_stdmelding_key
AND vg.ins_discipline_key = sm.mld_ins_discipline_key
AND vgt.ins_srtdiscipline_key = vg.ins_srtdiscipline_key
AND vgt.ins_srtdiscipline_key = 81
AND s.mld_statuses_key IN (2, 4, 7)
GROUP BY vg.ins_discipline_omschrijving,
COALESCE (sh.status_hip, 'Onbekend');
-- 2.2 Percentage openstaande meldingen per type
CREATE OR REPLACE VIEW WZUV_V_RTM_PERC_TYPE
(
TYPE_MLD,
PERCENTAGE
)
AS
SELECT vg.ins_discipline_omschrijving,
ROUND ((COUNT (m.mld_melding_key) / tot.tot_aantal) * 100, 1) perc_mld
FROM mld_melding m,
mld_stdmelding sm,
ins_tab_discipline vg,
ins_srtdiscipline vgt,
mld_statuses s,
(SELECT COUNT (m.mld_melding_key) tot_aantal
FROM mld_melding m,
mld_stdmelding sm,
ins_tab_discipline vg,
ins_srtdiscipline vgt,
mld_statuses s
WHERE m.mld_melding_status = s.mld_statuses_key
AND sm.mld_stdmelding_key = m.mld_stdmelding_key
AND vg.ins_discipline_key = sm.mld_ins_discipline_key
AND vgt.ins_srtdiscipline_key = vg.ins_srtdiscipline_key
AND vgt.ins_srtdiscipline_key = 81
AND s.mld_statuses_key IN (2, 4, 7)) tot
WHERE m.mld_melding_status = s.mld_statuses_key
AND sm.mld_stdmelding_key = m.mld_stdmelding_key
AND vg.ins_discipline_key = sm.mld_ins_discipline_key
AND vgt.ins_srtdiscipline_key = vg.ins_srtdiscipline_key
AND vgt.ins_srtdiscipline_key = 81
AND s.mld_statuses_key IN (2, 4, 7)
GROUP BY vg.ins_discipline_omschrijving, tot.tot_aantal;
-- 2.3.1 Absolute aantallen openstaande meldingen per applicatie
CREATE OR REPLACE VIEW WZUV_V_RTM_AANT_APPL
(
APPLICATIE,
AANTAL
)
AS
SELECT app.applicatie applicatie,
COUNT (m.mld_melding_key) aantal
FROM mld_melding m,
mld_stdmelding sm,
ins_tab_discipline vg,
ins_srtdiscipline vgt,
mld_statuses s,
(SELECT m.mld_melding_key, ud.fac_usrdata_omschr applicatie
FROM mld_srtkenmerk sk,
mld_kenmerk k,
mld_kenmerkmelding km,
fac_usrdata ud,
mld_melding m
WHERE sk.mld_srtkenmerk_key = k.mld_srtkenmerk_key
AND km.mld_kenmerk_key = k.mld_kenmerk_key
AND sk.mld_srtkenmerk_key = 942
AND fac.safe_to_number (km.mld_kenmerkmelding_waarde) =
ud.fac_usrdata_key
AND m.mld_melding_key = km.mld_melding_key) app
WHERE m.mld_melding_status = s.mld_statuses_key
AND m.mld_melding_key = app.mld_melding_key
AND sm.mld_stdmelding_key = m.mld_stdmelding_key
AND vg.ins_discipline_key = sm.mld_ins_discipline_key
AND vgt.ins_srtdiscipline_key = vg.ins_srtdiscipline_key
AND vgt.ins_srtdiscipline_key = 81
AND s.mld_statuses_key IN (2, 4, 7)
GROUP BY app.applicatie;
-- 2.3.2 Percentage openstaande meldingen per applicatie
CREATE OR REPLACE VIEW WZUV_V_RTM_PERC_APPL
(
APPLICATIE,
PERCENTAGE
)
AS
SELECT app.applicatie applicatie,
ROUND ((COUNT (m.mld_melding_key) / tot_aant.aantal) * 100, 1) perc
FROM mld_melding m,
mld_stdmelding sm,
ins_tab_discipline vg,
ins_srtdiscipline vgt,
mld_statuses s,
(SELECT COUNT (m.mld_melding_key) aantal
FROM mld_melding m,
mld_stdmelding sm,
ins_tab_discipline vg,
ins_srtdiscipline vgt,
mld_statuses s,
(SELECT m.mld_melding_key,
ud.fac_usrdata_omschr applicatie
FROM mld_srtkenmerk sk,
mld_kenmerk k,
mld_kenmerkmelding km,
fac_usrdata ud,
mld_melding m
WHERE sk.mld_srtkenmerk_key = k.mld_srtkenmerk_key
AND km.mld_kenmerk_key = k.mld_kenmerk_key
AND sk.mld_srtkenmerk_key = 942
AND fac.safe_to_number (
km.mld_kenmerkmelding_waarde) =
ud.fac_usrdata_key
AND m.mld_melding_key = km.mld_melding_key) app
WHERE m.mld_melding_status = s.mld_statuses_key
AND m.mld_melding_key = app.mld_melding_key
AND sm.mld_stdmelding_key = m.mld_stdmelding_key
AND vg.ins_discipline_key = sm.mld_ins_discipline_key
AND vgt.ins_srtdiscipline_key = vg.ins_srtdiscipline_key
AND vgt.ins_srtdiscipline_key = 81
AND s.mld_statuses_key IN (2, 4, 7)) tot_aant,
(SELECT m.mld_melding_key, ud.fac_usrdata_omschr applicatie
FROM mld_srtkenmerk sk,
mld_kenmerk k,
mld_kenmerkmelding km,
fac_usrdata ud,
mld_melding m
WHERE sk.mld_srtkenmerk_key = k.mld_srtkenmerk_key
AND km.mld_kenmerk_key = k.mld_kenmerk_key
AND sk.mld_srtkenmerk_key = 942
AND fac.safe_to_number (km.mld_kenmerkmelding_waarde) =
ud.fac_usrdata_key
AND m.mld_melding_key = km.mld_melding_key) app
WHERE m.mld_melding_status = s.mld_statuses_key
AND m.mld_melding_key = app.mld_melding_key
AND sm.mld_stdmelding_key = m.mld_stdmelding_key
AND vg.ins_discipline_key = sm.mld_ins_discipline_key
AND vgt.ins_srtdiscipline_key = vg.ins_srtdiscipline_key
AND vgt.ins_srtdiscipline_key = 81
AND s.mld_statuses_key IN (2, 4, 7)
GROUP BY app.applicatie, tot_aant.aantal;
-- 2.3.3 Open meldingen naar ouderdom
CREATE OR REPLACE VIEW WZUV_V_RTM_OUDERDOM
(
STAFFEL,
AANTAL
)
AS
WITH
dgn
AS
(SELECT m.mld_melding_key,
TRUNC (m.mld_melding_datum) melding_datum,
ROUND (
DECODE (uitv.doorlooptijd.eenheid,
'D', uitv.doorlooptijd.tijdsduur,
NULL)) doorlooptijd_werkdgn
FROM mld_melding m,
mld_stdmelding sm,
ins_tab_discipline vg,
ins_srtdiscipline vgt,
mld_statuses s,
(SELECT m.mld_melding_key,
mld.getactualuitvoer (m.mld_melding_key) doorlooptijd
FROM mld_melding m) uitv
WHERE m.mld_melding_status = s.mld_statuses_key
AND sm.mld_stdmelding_key = m.mld_stdmelding_key
AND vg.ins_discipline_key = sm.mld_ins_discipline_key
AND vgt.ins_srtdiscipline_key = vg.ins_srtdiscipline_key
AND uitv.mld_melding_key = m.mld_melding_key
AND vgt.ins_srtdiscipline_key = 81
AND s.mld_statuses_key IN (2, 4, 7))
SELECT CASE
WHEN doorlooptijd_werkdgn < 6
THEN
'A: max. 5 werkdagen open'
WHEN doorlooptijd_werkdgn > 5 AND doorlooptijd_werkdgn < 11
THEN
'B: 5 - 10 werkdagen open'
WHEN doorlooptijd_werkdgn > 10 AND doorlooptijd_werkdgn < 16
THEN
'C: 10 - 15 werkdagen open'
WHEN doorlooptijd_werkdgn > 15 AND doorlooptijd_werkdgn < 21
THEN
'D: 15 - 20 werkdagen open'
WHEN doorlooptijd_werkdgn > 15 AND doorlooptijd_werkdgn < 21
THEN
'E: 15 - 20 werkdagen open'
WHEN doorlooptijd_werkdgn > 20 AND doorlooptijd_werkdgn < 79
THEN
'F: 20 - 78 werkdagen open'
WHEN doorlooptijd_werkdgn > 78
THEN
'G: langer dan 78 werkdagen open'
END AS staffel,
COUNT (mld_melding_key) aantal_mld
FROM dgn
GROUP BY CASE
WHEN doorlooptijd_werkdgn < 6
THEN
'A: max. 5 werkdagen open'
WHEN doorlooptijd_werkdgn > 5 AND doorlooptijd_werkdgn < 11
THEN
'B: 5 - 10 werkdagen open'
WHEN doorlooptijd_werkdgn > 10 AND doorlooptijd_werkdgn < 16
THEN
'C: 10 - 15 werkdagen open'
WHEN doorlooptijd_werkdgn > 15 AND doorlooptijd_werkdgn < 21
THEN
'D: 15 - 20 werkdagen open'
WHEN doorlooptijd_werkdgn > 15 AND doorlooptijd_werkdgn < 21
THEN
'E: 15 - 20 werkdagen open'
WHEN doorlooptijd_werkdgn > 20 AND doorlooptijd_werkdgn < 79
THEN
'F: 20 - 78 werkdagen open'
WHEN doorlooptijd_werkdgn > 78
THEN
'G: langer dan 78 werkdagen open'
END;
-- 2.3.4 Aantal lopende incidenten per objectgroep
CREATE OR REPLACE VIEW WZUV_V_RTM_OBJECTGROEP
(
OBJECTGROEP,
AANTAL
)
AS
SELECT sg.ins_srtgroep_omschrijving, COUNT (m.mld_melding_key) aantal
FROM mld_melding m,
mld_stdmelding sm,
ins_tab_discipline vg,
ins_srtdiscipline vgt,
mld_statuses s,
mld_melding_object o,
ins_deel d,
ins_srtdeel sd,
ins_srtgroep sg
WHERE m.mld_melding_status = s.mld_statuses_key
AND sm.mld_stdmelding_key = m.mld_stdmelding_key
AND vg.ins_discipline_key = sm.mld_ins_discipline_key
AND vgt.ins_srtdiscipline_key = vg.ins_srtdiscipline_key
AND o.mld_melding_key = m.mld_melding_key
AND o.mld_melding_object_verwijder IS NULL
AND d.ins_deel_key = o.ins_deel_key
AND sd.ins_srtdeel_key = d.ins_srtdeel_key
AND sg.ins_srtgroep_key = sd.ins_srtgroep_key
AND vgt.ins_srtdiscipline_key = 81
AND vg.ins_discipline_key = 1241
AND s.mld_statuses_key IN (2, 4, 7)
GROUP BY sg.ins_srtgroep_omschrijving;
-- 2.3.5 Slapende meldingen
CREATE OR REPLACE VIEW WZUV_V_RTM_SLAPEND
(
MLD_MELDING_KEY,
MELDINGNUMMER,
STDMELDING_OMSCHRIJVING,
DATUM_LAATSTE_ACTIE,
AANTAL_DAGEN
)
AS
WITH
actie
AS
(SELECT m.mld_melding_key,
vgt.ins_srtdiscipline_prefix || m.mld_melding_key
meldingnummer,
sm.mld_stdmelding_omschrijving,
TRUNC (uitv.laatste_actie)
datum_laatste_actie,
ROUND (
DECODE (uitv.doorlooptijd.eenheid,
'D', uitv.doorlooptijd.tijdsduur,
NULL))
aant_dgn
FROM mld_melding m,
mld_stdmelding sm,
ins_tab_discipline vg,
ins_srtdiscipline vgt,
mld_statuses s,
(SELECT m.mld_melding_key,
a.laatste_actie,
mld.getactualuitvoer (
a.laatste_actie,
SYSDATE,
m.mld_stdmelding_key,
m.mld_melding_spoed,
m.mld_alg_onroerendgoed_keys,
NULL,
m.mld_melding_t_uitvoertijd.eenheid) doorlooptijd
FROM mld_melding m,
( SELECT t.fac_tracking_refkey mld_melding_key,
MAX (t.fac_tracking_datum) laatste_actie
FROM fac_tracking t, fac_srtnotificatie sn
WHERE t.fac_srtnotificatie_key =
sn.fac_srtnotificatie_key
AND sn.fac_srtnotificatie_xmlnode =
'melding'
GROUP BY t.fac_tracking_refkey) a
WHERE a.mld_melding_key = m.mld_melding_key) uitv
WHERE m.mld_melding_status = s.mld_statuses_key
AND sm.mld_stdmelding_key = m.mld_stdmelding_key
AND vg.ins_discipline_key = sm.mld_ins_discipline_key
AND vgt.ins_srtdiscipline_key = vg.ins_srtdiscipline_key
AND uitv.mld_melding_key = m.mld_melding_key
AND vgt.ins_srtdiscipline_key IN (81, 101)
AND s.mld_statuses_key IN (2, 4, 7))
SELECT a.mld_melding_key,
a.meldingnummer,
a.mld_stdmelding_omschrijving,
a.datum_laatste_actie,
a.aant_dgn
FROM actie a
WHERE a.aant_dgn > 10
ORDER BY aant_dgn DESC;
-- 2.3.6 Diverse tellertjes
CREATE OR REPLACE VIEW WZUV_V_RTM_TELLERS
(
OMSCHRIJVING,
AANTAL
)
AS
SELECT 'Aantal openstaande system-down meldingen' omschr,
COUNT (m.mld_melding_key) aantal
FROM mld_melding m, mld_stdmelding sm, mld_statuses s
WHERE sm.mld_stdmelding_key = m.mld_stdmelding_key
AND sm.mld_stdmelding_key = 2982 -- system down
AND m.mld_melding_status = s.mld_statuses_key
AND s.mld_statuses_key IN (2, 4, 7)
GROUP BY sm.mld_stdmelding_omschrijving
UNION ALL
SELECT 'Aantal incidenten met een verlopen SLA' omsch,
COUNT (uitvoering_sla_optijd) aantal
FROM (SELECT vg.ins_discipline_omschrijving,
CASE
WHEN DECODE (
sla.t_doorlooptijd.eenheid,
'D', mld.geteinddatum (m.mld_melding_key)
- SYSDATE
+ COALESCE (sla_respijtdgn, 0),
0)
+ DECODE (
sla.t_doorlooptijd.eenheid,
'U', ( ( mld.geteinddatum (
m.mld_melding_key)
- SYSDATE)
* 24)
+ COALESCE (sla_respijturen, 0),
0) >=
0
THEN
'Ja'
ELSE
'Nee'
END uitvoering_sla_optijd
FROM mld_melding m,
mld_stdmelding sm,
ins_tab_discipline vg,
ins_srtdiscipline vgt,
mld_statuses s,
(SELECT m.mld_melding_key,
mld.getactualuitvoer (m.mld_melding_key)
t_doorlooptijd,
DECODE (
m.mld_melding_t_uitvoertijd.eenheid,
'D', m.mld_melding_t_uitvoertijd.tijdsduur,
NULL)
sla_werkdgn,
DECODE (
m.mld_melding_t_uitvoertijd.eenheid,
'U', m.mld_melding_t_uitvoertijd.tijdsduur,
NULL)
sla_werkuren,
DECODE (m.mld_melding_t_respijt.eenheid,
'D', m.mld_melding_t_respijt.tijdsduur,
NULL)
sla_respijtdgn,
DECODE (m.mld_melding_t_respijt.eenheid,
'U', m.mld_melding_t_respijt.tijdsduur,
NULL)
sla_respijturen
FROM mld_melding m) sla
WHERE sm.mld_stdmelding_key = m.mld_stdmelding_key
AND sm.mld_ins_discipline_key = vg.ins_discipline_key
AND vg.ins_srtdiscipline_key = vgt.ins_srtdiscipline_key
AND m.mld_melding_status = s.mld_statuses_key
AND sla.mld_melding_key = m.mld_melding_key
AND vg.ins_discipline_key = 1241 -- incidenten
AND s.mld_statuses_key IN (2, 4, 7)) tl
WHERE uitvoering_sla_optijd = 'Nee'
GROUP BY ins_discipline_omschrijving
UNION ALL
SELECT 'Aantal uitvoeringsverzoeken met een verlopen SLA' omsch,
COUNT (uitvoering_sla_optijd) aantal
FROM (SELECT vg.ins_discipline_omschrijving,
CASE
WHEN DECODE (
sla.t_doorlooptijd.eenheid,
'D', mld.geteinddatum (m.mld_melding_key)
- SYSDATE
+ COALESCE (sla_respijtdgn, 0),
0)
+ DECODE (
sla.t_doorlooptijd.eenheid,
'U', ( ( mld.geteinddatum (
m.mld_melding_key)
- SYSDATE)
* 24)
+ COALESCE (sla_respijturen, 0),
0) >=
0
THEN
'Ja'
ELSE
'Nee'
END uitvoering_sla_optijd
FROM mld_melding m,
mld_stdmelding sm,
ins_tab_discipline vg,
ins_srtdiscipline vgt,
mld_statuses s,
(SELECT m.mld_melding_key,
mld.getactualuitvoer (m.mld_melding_key)
t_doorlooptijd,
DECODE (
m.mld_melding_t_uitvoertijd.eenheid,
'D', m.mld_melding_t_uitvoertijd.tijdsduur,
NULL)
sla_werkdgn,
DECODE (
m.mld_melding_t_uitvoertijd.eenheid,
'U', m.mld_melding_t_uitvoertijd.tijdsduur,
NULL)
sla_werkuren,
DECODE (m.mld_melding_t_respijt.eenheid,
'D', m.mld_melding_t_respijt.tijdsduur,
NULL)
sla_respijtdgn,
DECODE (m.mld_melding_t_respijt.eenheid,
'U', m.mld_melding_t_respijt.tijdsduur,
NULL)
sla_respijturen
FROM mld_melding m) sla
WHERE sm.mld_stdmelding_key = m.mld_stdmelding_key
AND sm.mld_ins_discipline_key = vg.ins_discipline_key
AND vg.ins_srtdiscipline_key = vgt.ins_srtdiscipline_key
AND m.mld_melding_status = s.mld_statuses_key
AND sla.mld_melding_key = m.mld_melding_key
AND vg.ins_discipline_key = 2801 -- uitvoeringsverzoek
AND s.mld_statuses_key IN (2, 4, 7)) tl
WHERE uitvoering_sla_optijd = 'Nee'
GROUP BY ins_discipline_omschrijving;
-------------------------------------------------------------------------------
---------- Einde WZUV#79858 Rapportages RTM -----------------------------------
-------------------------------------------------------------------------------
BEGIN
DBMS_UTILITY.COMPILE_SCHEMA (USER, FALSE);
END;
/
------ 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