RWSN#55808 M2M+RWSN#56949 Rap/Productie KCC+ RWSN#57914 Notijob/<x> dagen voor gereed

svn path=/Customer/trunk/; revision=44406
This commit is contained in:
Maarten van der Heide
2019-09-30 17:51:03 +00:00
parent ac17db071b
commit 7982c19394

View File

@@ -16276,7 +16276,7 @@ AS
AND (m.mld_melding_status IN (4, 7) -- Geaccepteerd/Uitgegeven
OR mdp.mld_disc_params_factuurappr = 1) -- OBSCUUR!!!
AND mdp.mld_disc_params_noti_dagen IS NOT NULL
AND TRUNC (m.mld_melding_einddatum + 1) + mdp.mld_disc_params_noti_dagen <= TRUNC (SYSDATE)
AND TRUNC (m.mld_melding_einddatum + 1) + mdp.mld_disc_params_noti_dagen <= TRUNC (SYSDATE)
AND NOT EXISTS
(SELECT 1
FROM mld_opdr o
@@ -17377,8 +17377,8 @@ AS
AND sk.res_srtkenmerk_verwijder IS NULL;
/* Formatted on 19-8-2011 16:04:10 (QP5 v5.115.810.9015) */
-- TODO1: Welke precieze contractgegevens/kolommen?
-- TODO2: Alleen actieve of ook verlopen?
-- TODO1:Welke precieze contractgegevens/kolommen?
-- TODO2:Alleen actieve of ook verlopen?
CREATE OR REPLACE VIEW rwsn_v_rap_cntnotities
(
nummer,
@@ -27443,7 +27443,9 @@ CREATE OR REPLACE PROCEDURE RWSN_processemail (
psessionid IN VARCHAR2,
pemailkey IN NUMBER)
AS
-- Soortmelding=8357 onder Vakgroep=274 onder Vakgroeptype=1!
c_ebf_melder_key NUMBER (10) := 13760; -- EXTERN Overig
c_ebf_stdmld_key NUMBER (10) := 11961; -- Soortmelding=11961=E-mail Algemeen onder Vakgroep=681=MP-FI KCC onder Vakgroeptype=3=KCC [TODO:11761 in T-omgeving]!
-- Printer-Soortmelding=8357 onder Vakgroep=274 onder Vakgroeptype=1!
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
@@ -27451,6 +27453,7 @@ AS
v_perslid_key NUMBER (10);
v_kostenplaats_key NUMBER (10);
v_onderwerp VARCHAR2 (255);
v_discipline_key NUMBER (10) := NULL;
v_stdmelding_key NUMBER (10);
--v_stdmelding_uvt mld_stdmelding.mld_stdmelding_t_uitvoertijd%TYPE := MLD_T_UITVOERTIJD (NULL, NULL); -- constructor initialisatie
v_deel_key NUMBER (10) := NULL;
@@ -27458,6 +27461,7 @@ AS
v_locatie_key NUMBER (10) := NULL;
v_melding_key NUMBER (10) := NULL;
v_email_kkey NUMBER (10) := NULL;
v_email VARCHAR2 (255) := '';
v_folder_kkey NUMBER (10) := NULL;
v_count NUMBER (10) := NULL;
BEGIN
@@ -27480,15 +27484,15 @@ BEGIN
v_errormsg := 'Fout bepalen Printer-onderwerp';
v_onderwerp := psubject;
-- Bepaal Soortmelding met afgesproken key=8357.
-- Bepaal de afgesproken Soortmelding met key=8357.
v_errormsg := 'Fout bepalen Printer-soortmelding';
SELECT sm.mld_stdmelding_key
INTO v_stdmelding_key
SELECT mld_ins_discipline_key, mld_stdmelding_key
INTO v_discipline_key, v_stdmelding_key
FROM mld_discipline md, mld_stdmelding sm
WHERE md.ins_discipline_verwijder IS NULL
WHERE sm.mld_stdmelding_key = 8357
AND sm.mld_ins_discipline_key = md.ins_discipline_key
--AND md.ins_srtdiscipline_key = 1 -- Facilitair
AND md.ins_discipline_key = sm.mld_ins_discipline_key
AND sm.mld_stdmelding_key = 8357;
AND md.ins_discipline_verwijder IS NULL;
-- Bepaal evt. object met omschrijving zoals in pbody achter EX!
-- Alleen objecten onder disciplines met keys -1 t/m -1 worden beschouwd!
@@ -27542,7 +27546,7 @@ BEGIN
mld_melding_onderwerp)
VALUES ('MLD',
4, -- email
DECODE (v_count, 1, v_locatie_key, 82), -- TODO/Westraven als printer niet kan worden bepaald?
DECODE (v_count, 1, v_locatie_key, 82), -- TODO:Westraven als printer niet kan worden bepaald?
DECODE (v_count, 1, v_onrgoed_keys, NULL),
SYSDATE,
SUBSTR (pfrom || CHR (13) || CHR (10) || pbody, 1, 4000),
@@ -27568,106 +27572,51 @@ BEGIN
INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde)
VALUES (psessionid, 'maillog', 'Geregistreerd onder melding ' || v_melding_key);
--mails.fd.ebfd@rws.nl Alle e-mails afkomstig vanuit dit e-mailadres daar dient de volgende melding voor te worden gemaakt:
--Vakgroep: K-MP-FI KCC
--Melding: E-mail Algemeen
--mails.esize.ebfd@rws.nl Alle e-mails afkomstig vanuit dit e-mailadres daar dient de volgende melding voor te worden gemaakt:
--Vakgroep: K-MP-EBF Workforce
--Melding: E-mail Algemeen
--mails.digiinkoop.ebfd@rws.nl Alle e-mails afkomstig vanuit dit e-mailadres daar dient de volgende melding voor te worden gemaakt:
--Vakgroep: K-MP-EBF DigiInkoop
--Melding: E-mail Algemeen
--Daarnaast willen we graag uit de body van de tekst het e-mailadres in kenmerksoort E-Mail (key 20) / kenmerk laten landen.
--Het gaat dan specifiek om het e-mailadres na de volgende tekst in de body: [mailto:
WHEN UPPER (pto) LIKE 'XXX@%' -- RWSN#55808
WHEN UPPER (pto) LIKE 'EBF.FACILITOR@%' -- RWSN#55808
THEN
-- Bepaal de melder/noteur op basis van e-mail adres zoals in pfrom?
v_errormsg := 'Fout bepalen melder ' || COALESCE (pfrom, '???');
SELECT COUNT (*)
INTO v_count
FROM prs_v_aanwezigperslid
WHERE UPPER (prs_perslid_email) LIKE UPPER (pfrom) || '%';
IF v_count = 1
-- Negeer mails anders dan vanaf 'MAILS.FD.EBFD@RWS.NL'!
IF INSTR (UPPER (pfrom), 'MAILS.FD.EBFD@RWS.NL') > 0
THEN
SELECT p.prs_perslid_key, a.prs_kostenplaats_key, MIN (wpg.alg_locatie_key)
INTO v_perslid_key, v_kostenplaats_key, v_locatie_key
FROM prs_v_aanwezigperslid p, prs_afdeling a,
(SELECT pw.prs_perslid_key, pw.prs_werkplek_key
FROM prs_perslidwerkplek pw
WHERE NOT EXISTS
(SELECT 1
FROM prs_perslidwerkplek
WHERE prs_perslid_key = pw.prs_perslid_key
AND prs_perslidwerkplek_key > pw.prs_perslidwerkplek_key)) pw,
prs_v_werkplekperslid_gegevens wpg
WHERE p.prs_afdeling_key = a.prs_afdeling_key
AND UPPER (p.prs_perslid_email) LIKE UPPER (pfrom) || '%'
AND p.prs_perslid_key = pw.prs_perslid_key(+)
AND pw.prs_werkplek_key = wpg.prs_werkplek_key(+)
GROUP BY p.prs_perslid_key, a.prs_kostenplaats_key;
ELSE -- Melder kan niet 1-duidig worden bepaald, dus Onbekend en 61=Servicecentrum!
SELECT p.prs_perslid_key, a.prs_kostenplaats_key, 61
INTO v_perslid_key, v_kostenplaats_key, v_locatie_key
FROM prs_v_aanwezigperslid p, prs_afdeling a
WHERE p.prs_afdeling_key = a.prs_afdeling_key
AND p.prs_perslid_key = c_onbekend_key;
END IF;
v_errormsg := 'Fout bepalen bestaande melding';
v_exist_ticket := psubject;
IF REGEXP_INSTR (v_exist_ticket, '\d') > 0
THEN
v_exist_ticket := SUBSTR (v_exist_ticket, REGEXP_INSTR (v_exist_ticket, '\d')) || 'x'; -- Gedeelte vanaf eerste cijfer in v_exist_ticket plus 'x'!
v_exist_ticket := SUBSTR (v_exist_ticket, 1, REGEXP_INSTR (v_exist_ticket, '\D') - 1); -- Gedeelte tot eerste niet-cijfer in v_exist_ticket!
ELSE
v_exist_ticket := 'x';
END IF;
SELECT COUNT (*)
INTO v_count
FROM mld_melding
WHERE mld_melding_key = fac.safe_to_number (v_exist_ticket);
-- Om te voorkomen dat huisnummers in het Onderwerp resulteren in het
-- toevoegen van Notities, dit alleen doen voor nummers > 16000!
IF v_count = 1 AND fac.safe_to_number (v_exist_ticket) > 16000
THEN -- Notitie bij bestaande melding!
SELECT mld_stdmelding_key, mld_melding_key
INTO v_stdmelding_key, v_melding_key
FROM mld_melding
WHERE mld_melding_key = fac.safe_to_number (v_exist_ticket);
v_errormsg := 'Fout toevoegen notitie';
INSERT INTO mld_melding_note (mld_melding_key,
prs_perslid_key,
mld_melding_note_omschrijving,
mld_melding_note_flag)
VALUES (v_melding_key,
v_perslid_key,
pfrom || CHR (13) || CHR (10) || psubject || CHR (13) || CHR (10) || SUBSTR (pbody, 1, 2000),
0);
INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde)
VALUES (psessionid, 'maillog', 'Notitie onder exist-melding ' || v_melding_key);
-- Vlaggetjes zetten zoals mld_edit_note.asp dat doet!
IF fac.getsetting ('mld_melding_actiecode') = 1
v_errormsg := 'Fout bepalen E-mail';
IF INSTR (pbody, 'mailto:') > 0
THEN
UPDATE mld_melding
SET mld_melding_actiecode = 1 + 128 -- BO + Attentie
WHERE mld_melding_key = v_melding_key;
v_email := TRIM (SUBSTR (pbody,
INSTR (pbody, 'mailto:') + 7,
INSTR (SUBSTR (REPLACE (REPLACE (pbody, CHR (13), '#'), CHR (10), '#') || '#', INSTR (pbody, 'mailto:') + 7), '#') - 1));
ELSE
v_email := '';
END IF;
ELSE -- Nieuwe melding!
-- Bepaal de afgesproken soortmelding met key=1691=Harware/Computer!
-- Bepaal de afgesproken melder.
v_errormsg := 'Fout bepalen externe melder';
SELECT p.prs_perslid_key, a.prs_kostenplaats_key, MIN (g1.alg_locatie_key)
INTO v_perslid_key, v_kostenplaats_key, v_locatie_key
FROM prs_v_aanwezigperslid p, prs_afdeling a, prs_perslidwerkplek pw1, prs_werkplek wp1, alg_ruimte r1, alg_verdieping v1, alg_gebouw g1
WHERE p.prs_afdeling_key = a.prs_afdeling_key
AND p.prs_perslid_key = c_ebf_melder_key
AND p.prs_perslid_key = pw1.prs_perslid_key(+)
AND pw1.prs_werkplek_key = wp1.prs_werkplek_key(+)
AND wp1.prs_alg_ruimte_key = r1.alg_ruimte_key(+)
AND r1.alg_verdieping_key = v1.alg_verdieping_key(+)
AND v1.alg_gebouw_key = g1.alg_gebouw_key(+)
AND NOT EXISTS
(SELECT 1
FROM prs_perslidwerkplek pw2, prs_werkplek wp2, alg_ruimte r2, alg_verdieping v2, alg_gebouw g2
WHERE pw2.prs_perslid_key = c_ebf_melder_key
AND pw2.prs_werkplek_key = wp2.prs_werkplek_key
AND wp2.prs_alg_ruimte_key = r2.alg_ruimte_key
AND r2.alg_verdieping_key = v2.alg_verdieping_key
AND v2.alg_gebouw_key = g2.alg_gebouw_key
AND pw2.prs_werkplek_key != pw1.prs_werkplek_key
AND pw2.prs_perslidwerkplek_bezetting > pw1.prs_perslidwerkplek_bezetting)
GROUP BY p.prs_perslid_key, a.prs_kostenplaats_key;
-- Bepaal de afgesproken Soortmelding met key=c_ebf_stdmld_key.
v_errormsg := 'Fout bepalen soortmelding';
SELECT mld_ins_discipline_key, mld_stdmelding_key
INTO v_discipline_key, v_stdmelding_key
FROM mld_stdmelding
WHERE mld_stdmelding_key = 1691;
WHERE mld_stdmelding_key = c_ebf_stdmld_key;
-- Suggested extensions:
-- - Check for MLDUSE-write autorisations
@@ -27688,11 +27637,10 @@ BEGIN
mld_melding_status,
mld_melding_spoed,
mld_melding_onderwerp,
mld_melding_behandelaar2_key,
mld_ins_discipline_key)
mld_melding_behandelaar2_key)
VALUES ('MLD',
4, -- email
v_locatie_key,
COALESCE (v_locatie_key, 82), -- Westraven als locatie niet kan worden bepaald?
NULL, --v_onrgoed_keys,
SYSDATE,
pfrom || CHR (13) || CHR (10) || SUBSTR (pbody, 1, 2000),
@@ -27704,78 +27652,81 @@ BEGIN
NULL,
3, -- prio normaal
SUBSTR (psubject, 1, 80),
NULL,
3141) -- BT Helpdesk I+A
NULL)
RETURNING mld_melding_key
INTO v_melding_key;
v_errormsg := 'Fout bepalen E-mail kenmerk';
SELECT MIN (k1.mld_kenmerk_key)
SELECT MIN (k.mld_kenmerk_key)
INTO v_email_kkey
FROM mld_stdmelding sm1, ins_tab_discipline td1, mld_kenmerk k1--, mld_srtkenmerk sk1
WHERE sm1.mld_stdmelding_key = v_stdmelding_key
AND sm1.mld_ins_discipline_key = td1.ins_discipline_key
AND k1.mld_kenmerk_verwijder IS NULL
AND k1.mld_srtkenmerk_key = 20 -- E-mail
--AND k1.mld_srtkenmerk_key = sk1.mld_srtkenmerk_key
--AND sk1.mld_srtkenmerk_kenmerktype = 'C'
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'));
FROM mld_stdmelding sm, ins_tab_discipline td, mld_kenmerk k--, mld_srtkenmerk sk
WHERE sm.mld_stdmelding_key = v_stdmelding_key
AND sm.mld_ins_discipline_key = td.ins_discipline_key
AND k.mld_kenmerk_verwijder IS NULL
AND k.mld_srtkenmerk_key = 20 -- E-mail
--AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
--AND sk.mld_srtkenmerk_kenmerktype = 'C'
AND ((k.mld_stdmelding_key = sm.mld_stdmelding_key AND k.mld_kenmerk_niveau = 'S')
OR (k.mld_stdmelding_key = td.ins_discipline_key AND k.mld_kenmerk_niveau = 'D')
OR (k.mld_stdmelding_key = td.ins_srtdiscipline_key AND k.mld_kenmerk_niveau = 'T'));
IF v_folder_kkey IS NOT NULL
THEN
IF v_email_kkey IS NOT NULL
THEN
v_errormsg := 'Fout toevoegen E-mail kenmerk';
INSERT INTO mld_kenmerkmelding (mld_melding_key,
mld_kenmerk_key,
mld_kenmerkmelding_waarde)
VALUES (v_melding_key,
v_email_kkey, -- E-mail
SUBSTR (pfrom, 1, 50)); -- TODO:Uit body halen?
SUBSTR (v_email, 1, 49));
END IF;
mld.setmeldingstatus (v_melding_key, 2, v_perslid_key);
INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde)
VALUES (psessionid, 'maillog', 'Geregistreerd onder melding ' || v_melding_key);
END IF;
-- Find the lowest volgnummer of the Folder-flexfield.
v_errormsg := 'Fout bepalen Folder kenmerk';
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 = v_stdmelding_key
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'))
AND NOT EXISTS
(SELECT 1
FROM mld_stdmelding sm2, ins_tab_discipline td2, mld_kenmerk k2, mld_srtkenmerk sk2
WHERE sm2.mld_stdmelding_key = v_stdmelding_key
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'))
AND k2.mld_kenmerk_volgnummer < k1.mld_kenmerk_volgnummer);
-- Find the lowest volgnummer of the Folder-flexfield.
v_errormsg := 'Fout bepalen Folder kenmerk';
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 = v_stdmelding_key
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'))
AND NOT EXISTS
(SELECT 1
FROM mld_stdmelding sm2, ins_tab_discipline td2, mld_kenmerk k2, mld_srtkenmerk sk2
WHERE sm2.mld_stdmelding_key = v_stdmelding_key
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'))
AND k2.mld_kenmerk_volgnummer < k1.mld_kenmerk_volgnummer);
IF v_folder_kkey IS NOT NULL
THEN
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_melding_key / 1000), 'FM0000') || '___\M' || v_melding_key || '\' || v_folder_kkey || '\');
END IF;
-- Handle workflow actions for completion (in case of new melding).
IF v_count = 0
THEN
MLD.mld_nextworkflowstep (v_melding_key, -1); -- -1=Initial
END IF;
ELSE
-- Ignore afzender.
INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde)
VALUES (psessionid, 'kenmerkpath', 'MLD\M' || TO_CHAR (TRUNC (v_melding_key / 1000), 'FM0000') || '___\M' || v_melding_key || '\' || v_folder_kkey || '\');
END IF;
-- Handle workflow actions for completion (in case of new melding).
IF v_count = 0
THEN
MLD.mld_nextworkflowstep (v_melding_key, -1); -- -1=Initial
VALUES (psessionid, 'errormsg', 'Afzender ongeldig - Neem contact op met uw systeembeheerder ');
END IF;
ELSE
INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde)
@@ -28100,6 +28051,216 @@ AS
LEFT JOIN kd k39 ON x.ins_deel_key = k39.ins_deel_key AND k39.vnr = 39
LEFT JOIN kd k40 ON x.ins_deel_key = k40.ins_deel_key AND k40.vnr = 40;
-- RWSN#57914: Reminder naar behandelaar als melding x dagen voor gereeddatum.
-- TODO:Set bepalen op basis van Eigen tabel?
CREATE OR REPLACE VIEW rwsn_v_noti_mld_eind_reminder
(
code,
sender,
receiver,
text,
key,
xkey
)
AS
SELECT sn.fac_srtnotificatie_code,
NULL,
m.mld_melding_behandelaar_key,
REPLACE (sn.fac_srtnotificatie_oms, '##KEY##', m.mld_melding_key),
m.mld_melding_key,
NULL
FROM mld_melding m, mld_stdmelding sm, mld_disc_params dp, fac_srtnotificatie sn
WHERE m.mld_melding_status IN (4, 7, 99) -- 4-Geaccepteerd, 7-Uitgegeven
--AND m.mld_melding_einddatum_std > SYSDATE
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
AND sm.mld_ins_discipline_key = dp.mld_ins_discipline_key
AND dp.mld_disc_params_noti_dagen IS NOT NULL
--AND TRUNC (SYSDATE + dp.mld_disc_params_noti_dagen) > TRUNC (m.mld_melding_einddatum_std)
--AND TRUNC (SYSDATE + dp.mld_disc_params_noti_dagen) = TRUNC (m.mld_melding_einddatum)
AND fac.count_work_days (SYSDATE, m.mld_melding_einddatum) = dp.mld_disc_params_noti_dagen
AND sn.fac_srtnotificatie_code = 'CUST21'
UNION ALL
SELECT sn.fac_srtnotificatie_code,
NULL,
m.mld_melding_behandelaar_key,
REPLACE (sn.fac_srtnotificatie_oms, '##KEY##', m.mld_melding_key),
m.mld_melding_key,
NULL
FROM mld_melding m, mld_stdmelding sm, mld_disc_params dp, fac_srtnotificatie sn
WHERE m.mld_melding_status IN (4, 7, 99) -- 4-Geaccepteerd, 7-Uitgegeven
--AND m.mld_melding_einddatum_std > SYSDATE
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
AND sm.mld_ins_discipline_key = dp.mld_ins_discipline_key
AND dp.mld_disc_params_noti_dagen IS NOT NULL
--AND TRUNC (SYSDATE + 1) > TRUNC (m.mld_melding_einddatum_std)
--AND TRUNC (SYSDATE + 1) = TRUNC (m.mld_melding_einddatum)
AND dp.mld_disc_params_noti_dagen != 1
AND fac.count_work_days (SYSDATE, m.mld_melding_einddatum) = 1
AND sn.fac_srtnotificatie_code = 'CUST22'
;
/*
AND SIGN(mld.geteinddatum (
m.mld_melding_datum,
m.mld_stdmelding_key,
m.mld_melding_spoed,
NULL, -- Plaats binnen/kleiner locatie!
NULL, -- Object met laagste uitvoertijd
MLD_T_UITVOERTIJD (
0.7 * m.mld_melding_t_uitvoertijd.tijdsduur,
m.mld_melding_t_uitvoertijd.eenheid))
- TRUNC (SYSDATE, 'mi')) = -1;
*/
-- RWSN#56949: Productie KCC medewerkers (MLD+RES)!
-- Medewerker (= persoon onder afdeling 'Afd. Meldingenproces' met key=<nader te bepalen>)
-- Module (MLD of RES)
-- Stroom (Vakgroeptype of Activiteit)
-- ID (van Melding of Reservering)
-- Aanmaakdatum (van Melding of Reservering)
-- Status (van Melding of Reservering)
CREATE OR REPLACE VIEW rwsn_v_rap_kcc_productie
(
medewerker,
module,
stroom,
id,
aanmaakdatum,
status,
trackdatum,
trackcode
)
AS
SELECT pf.prs_perslid_naam_full medewerker,
'MLD' module,
sd.ins_srtdiscipline_omschrijving stroom,
sd.ins_srtdiscipline_prefix || TO_CHAR (m.mld_melding_key) id,
fac.gettrackingdate ('MLDNEW', m.mld_melding_key) aanmaakdatum,
ms.mld_statuses_omschrijving status,
t.fac_tracking_datum trackdatum,
sn.fac_srtnotificatie_code
FROM fac_tracking t,
fac_srtnotificatie sn,
mld_melding m,
mld_stdmelding sm,
mld_discipline md,
ins_srtdiscipline sd,
mld_statuses ms,
prs_v_aanwezigperslid p,
prs_v_afdeling_boom ab,
prs_v_perslid_fullnames pf
WHERE t.fac_tracking_datum > TRUNC (ADD_MONTHS (SYSDATE, -24), 'yyyy')
AND t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
AND sn.fac_srtnotificatie_key IN (26, 21, 27, 22, 28) -- MLDNEW/MLDACP/MLDREJ/MLDAFM/MLDUPD
AND t.fac_tracking_refkey = m.mld_melding_key
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
AND sm.mld_ins_discipline_key = md.ins_discipline_key
AND md.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
AND sd.ins_srtdiscipline_key IN (1, 3, 242, 81, 221) -- Facilitair/KCC/Tijdelijke Capaciteit (oud/N?)
AND m.mld_melding_status = ms.mld_statuses_key(+)
AND t.prs_perslid_key = p.prs_perslid_key
AND p.prs_afdeling_key = ab.prs_afdeling_key
AND ab.prs_afdeling_key3 = 2867 -- Afd. Meldingenproces
AND p.prs_perslid_key = pf.prs_perslid_key
UNION ALL
SELECT x.prs_perslid_naam_full medewerker,
'RES' module,
x.res_activiteit_omschrijving stroom,
TO_CHAR (x.res_reservering_key) || '/' || TO_CHAR (x.res_rsv_ruimte_volgnr) id,
x.res_rsv_ruimte_aanmaak aanmaakdatum,
(SELECT res_status_bo_omschrijving
FROM res_status_bo
WHERE res_status_bo_key = COALESCE (x.res_status_bo_key, ads.status_bo_key))
status,
x.fac_tracking_datum trackdatum,
x.fac_srtnotificatie_code
FROM (SELECT rrr.res_rsv_ruimte_key,
rrr.res_reservering_key,
rrr.res_rsv_ruimte_volgnr,
rrr.res_rsv_ruimte_aanmaak,
rrr.res_status_bo_key,
ra.res_activiteit_omschrijving,
t.fac_tracking_datum,
sn.fac_srtnotificatie_code,
pf.prs_perslid_naam_full
FROM fac_tracking t,
fac_srtnotificatie sn,
res_rsv_ruimte rrr,
res_activiteit ra,
prs_v_aanwezigperslid p,
prs_v_afdeling_boom ab,
prs_v_perslid_fullnames pf
WHERE t.fac_tracking_datum > TRUNC (ADD_MONTHS (SYSDATE, -24), 'yyyy')
AND t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
AND sn.fac_srtnotificatie_key IN (34, 35) -- RESNEW/RESUPD
AND t.fac_tracking_refkey = rrr.res_rsv_ruimte_key
AND rrr.res_rsv_ruimte_dirtlevel = 0
AND rrr.res_rsv_ruimte_volgnr = 1
AND rrr.res_activiteit_key = ra.res_activiteit_key
AND t.prs_perslid_key = p.prs_perslid_key
AND p.prs_afdeling_key = ab.prs_afdeling_key
AND ab.prs_afdeling_key3 = 2867 -- Afd. Meldingenproces
AND p.prs_perslid_key = pf.prs_perslid_key) x
LEFT JOIN -- Niet meetellen losse Artikel/Deel-reserveringen waar nooit iets bijgeboekt is!
( SELECT res_rsv_ruimte_key, MIN (res_status_bo_key) status_bo_key
FROM (SELECT res_rsv_ruimte_key, res_status_bo_key FROM res_rsv_artikel
UNION
SELECT res_rsv_ruimte_key, res_status_bo_key FROM res_rsv_deel)
GROUP BY res_rsv_ruimte_key) ads -- Artikel/Deel-status
ON x.res_rsv_ruimte_key = ads.res_rsv_ruimte_key
WHERE x.res_status_bo_key IS NOT NULL OR ads.res_rsv_ruimte_key IS NOT NULL
UNION ALL
SELECT x.prs_perslid_naam_full medewerker,
'RES' module,
x.res_activiteit_omschrijving stroom,
TO_CHAR (x.res_reservering_key) || '/' || TO_CHAR (x.res_rsv_ruimte_volgnr) id,
x.res_rsv_ruimte_aanmaak aanmaakdatum,
(SELECT res_status_bo_omschrijving
FROM res_status_bo
WHERE res_status_bo_key = COALESCE (x.res_status_bo_key, ads.status_bo_key))
status,
x.fac_tracking_datum trackdatum,
x.fac_srtnotificatie_code
FROM (SELECT rrr.res_rsv_ruimte_key,
rrr.res_reservering_key,
rrr.res_rsv_ruimte_volgnr,
rrr.res_rsv_ruimte_aanmaak,
rrr.res_status_bo_key,
ra.res_activiteit_omschrijving,
t.fac_tracking_datum,
sn.fac_srtnotificatie_code,
pf.prs_perslid_naam_full
FROM fac_tracking t,
fac_srtnotificatie sn,
res_rsv_ruimte rrr,
res_activiteit ra,
prs_v_aanwezigperslid p,
prs_v_afdeling_boom ab,
prs_v_perslid_fullnames pf
WHERE t.fac_tracking_datum > TRUNC (ADD_MONTHS (SYSDATE, -24), 'yyyy')
AND t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
AND sn.fac_srtnotificatie_key = 38 -- RESDEL
AND t.fac_tracking_refkey = rrr.res_rsv_ruimte_key
AND rrr.res_rsv_ruimte_dirtlevel = 0
AND rrr.res_activiteit_key = ra.res_activiteit_key
AND t.prs_perslid_key = p.prs_perslid_key
AND p.prs_afdeling_key = ab.prs_afdeling_key
AND ab.prs_afdeling_key3 = 2867 -- Afd. Meldingenproces
AND p.prs_perslid_key = pf.prs_perslid_key
AND NOT EXISTS
(SELECT 1
FROM res_rsv_ruimte
WHERE res_rsv_ruimte_verwijder IS NOT NULL
AND res_reservering_key = rrr.res_reservering_key
AND res_rsv_ruimte_volgnr < rrr.res_rsv_ruimte_volgnr)) x
LEFT JOIN -- Niet meetellen losse Artikel/Deel-reserveringen waar nooit iets bijgeboekt is!
( SELECT res_rsv_ruimte_key, MIN (res_status_bo_key) status_bo_key
FROM (SELECT res_rsv_ruimte_key, res_status_bo_key FROM res_rsv_artikel
UNION
SELECT res_rsv_ruimte_key, res_status_bo_key FROM res_rsv_deel)
GROUP BY res_rsv_ruimte_key) ads -- Artikel/Deel-status
ON x.res_rsv_ruimte_key = ads.res_rsv_ruimte_key
WHERE x.res_status_bo_key IS NOT NULL OR ads.res_rsv_ruimte_key IS NOT NULL
------ payload end ------
SET DEFINE OFF