LPNL#67364 -- Notificatie bij goedkeuren opdracht.

svn path=/Customer/trunk/; revision=54169
This commit is contained in:
Arthur Egberink
2021-12-15 16:52:49 +00:00
parent 4c4bbe5175
commit 58c70ac32f

View File

@@ -25,101 +25,146 @@ SET DEFINE OFF
CREATE OR REPLACE PACKAGE LPNL
AS
FUNCTION change_delimitor (p_string VARCHAR2,
p_delimitor VARCHAR2)
RETURN VARCHAR2;
FUNCTION change_delimitor (p_string VARCHAR2, p_delimitor VARCHAR2)
RETURN VARCHAR2;
PROCEDURE mld_ord_after_insert(p_opdr_key NUMBER);
PROCEDURE anonimize;
PROCEDURE mld_ord_after_insert;
PROCEDURE anonimize;
END;
/
CREATE OR REPLACE PACKAGE BODY LPNL
AS
FUNCTION change_delimitor (p_string VARCHAR2, p_delimitor VARCHAR2)
RETURN VARCHAR2
AS
v_field VARCHAR2 (1000) := 'QueQuLeQue';
v_result VARCHAR2 (2000);
v_line VARCHAR2 (2000);
BEGIN
v_line := p_string;
FUNCTION change_delimitor (p_string VARCHAR2,
p_delimitor VARCHAR2)
RETURN VARCHAR2
AS
v_field VARCHAR2 (1000) := 'QueQuLeQue';
v_result VARCHAR2 (2000);
v_line VARCHAR2 (2000);
BEGIN
v_line := p_string;
WHILE v_line IS NOT NULL
LOOP
fac.imp_getfield (v_line, p_delimitor, v_field);
v_result := v_result || '"' || v_field || '";';
END LOOP;
WHILE v_line IS NOT NULL
LOOP
fac.imp_getfield (v_line, p_delimitor, v_field);
v_result := v_result || '"' || v_field || '";';
END LOOP;
RETURN v_result;
END;
RETURN v_result;
END;
PROCEDURE mld_ord_after_insert
AS
v_count NUMBER;
PROCEDURE mld_ord_after_insert(p_opdr_key NUMBER)
AS
v_count NUMBER;
v_perslid_key NUMBER;
v_perslid_naam VARCHAR2(100);
BEGIN
-- ORDGOE srtnotificatie_key = 95
-- Tracking srtnotificatie_key = 177
-- Marcel de Boon 22
-- Danny Flemming 26
SELECT count(*)
INTO v_count
FROM fac_notificatie
WHERE fac_srtnotificatie_key = 95
AND fac_notificatie_refkey = p_opdr_key
AND prs_perslid_key_receiver IN (26,22);
CURSOR c1 IS -- Tweede niveau van Marcel de Boon en Danny Flemming
SELECT fac_notificatie_refkey, COUNT (*) aantal
FROM fac_notificatie
WHERE fac_srtnotificatie_key = 95
AND prs_perslid_key_receiver IN (26, 22)
GROUP BY fac_notificatie_refkey, fac_notificatie_datum
HAVING COUNT (fac_notificatie_refkey) = 2;
IF v_count = 2
THEN
SELECT fac_usrdata_code
INTO v_perslid_key
FROM fac_usrdata
WHERE fac_usrdata_key = FAC.safe_to_number(FLX.getflex ('OPD', 21, p_opdr_key));
CURSOR c2 IS -- Eerste niveau van Marion Post en Dagomar Jansen
SELECT fac_notificatie_refkey, COUNT (*) aantal
FROM fac_notificatie
WHERE fac_srtnotificatie_key = 95
AND prs_perslid_key_receiver IN (27, 23)
GROUP BY fac_notificatie_refkey, fac_notificatie_datum
HAVING COUNT (fac_notificatie_refkey) = 2;
dbms_output.put_line(' perslid:' || v_perslid_key);
DELETE fac_notificatie
WHERE fac_srtnotificatie_key = 95
AND prs_perslid_key_receiver <> v_perslid_key
AND fac_notificatie_refkey = p_opdr_key;
dbms_output.put_line(' Na delete:' || v_perslid_key);
SELECT prs_perslid_naam_full
INTO v_perslid_naam
FROM prs_v_perslid_fullnames
WHERE prs_perslid_key = v_perslid_key;
dbms_output.put_line(' Na select naam full:' || v_perslid_naam);
UPDATE fac_tracking
SET fac_tracking_oms = SUBSTR(fac_tracking_oms, 1, INSTR(fac_tracking_oms, 'verstuurd aan')) || 'verstuurd aan ' || v_perslid_naam
WHERE fac_tracking_refkey = p_opdr_key
AND fac_srtnotificatie_key = 177
AND fac_tracking_datum > SYSDATE - 1/(24*60);
END IF;
PROCEDURE change_tracking (p_opdr_key NUMBER, p_kenmerk_key NUMBER)
AS
v_perslid_key NUMBER;
v_perslid_naam VARCHAR2 (100);
BEGIN
SELECT fac_usrdata_code
INTO v_perslid_key
FROM fac_usrdata
WHERE fac_usrdata_key =
FAC.safe_to_number (
FLX.getflex ('OPD', p_kenmerk_key, p_opdr_key));
END;
DBMS_OUTPUT.put_line (' perslid:' || v_perslid_key);
PROCEDURE anonimize
AS
CURSOR c IS
SELECT *
FROM res_rsv_ruimte
WHERE res_activiteit_key = 30 -- Werkplek
AND res_rsv_ruimte_van < SYSDATE - 21;
BEGIN
FOR rec IN c
LOOP
UPDATE res_rsv_ruimte
SET res_rsv_ruimte_host_key = 1201,
res_rsv_ruimte_contact_key = 1201
WHERE res_rsv_ruimte_key = rec.res_rsv_ruimte_key;
END LOOP;
fac.writelog ('LPNL.anonimize', 'I', 'LPNL.anonimize is uitgevoerd', '');
END;
DELETE fac_notificatie
WHERE fac_srtnotificatie_key = 95
AND prs_perslid_key_receiver <> v_perslid_key
AND fac_notificatie_refkey = p_opdr_key;
DELETE web_user_messages
WHERE fac_srtnotificatie_key = 95
AND prs_perslid_key_receiver <> v_perslid_key
AND web_user_mess_action_params = p_opdr_key;
DBMS_OUTPUT.put_line (' Na delete:' || v_perslid_key);
SELECT prs_perslid_naam_friendly
INTO v_perslid_naam
FROM prs_v_perslid_fullnames
WHERE prs_perslid_key = v_perslid_key;
DBMS_OUTPUT.put_line (' Na select naam full:' || v_perslid_naam);
UPDATE fac_tracking
SET fac_tracking_oms =
SUBSTR (fac_tracking_oms,
1,
INSTR (fac_tracking_oms, ' verstuurd aan'))
|| 'verstuurd aan '
|| v_perslid_naam
WHERE fac_tracking_refkey = p_opdr_key
AND fac_tracking_oms LIKE '%' || v_perslid_naam || '%'
AND fac_srtnotificatie_key = 177
AND fac_tracking_datum > SYSDATE - (1 / 24);
EXCEPTION
WHEN NO_DATA_FOUND
THEN
NULL; -- Geen fiatteur opgegeven. Dan gaat de mail maar naar beiden toe
END;
BEGIN
-- ORDGOE srtnotificatie_key = 95
-- Tracking srtnotificatie_key = 177
-- Kenmerk_key van geselecteerde goedkeurder = 21
-- Marcel de Boon 22
-- Danny Flemming 26
-- Marion Post 27
-- Dagomar Jansen 23
FOR rec1 IN c1
LOOP
change_tracking (rec1.fac_notificatie_refkey, 21);
END LOOP;
FOR rec2 IN c2
LOOP
change_tracking (rec2.fac_notificatie_refkey, 21);
END LOOP;
END;
PROCEDURE anonimize
AS
CURSOR c IS
SELECT *
FROM res_rsv_ruimte
WHERE res_activiteit_key = 30 -- Werkplek
AND res_rsv_ruimte_van < SYSDATE - 21;
BEGIN
FOR rec IN c
LOOP
UPDATE res_rsv_ruimte
SET res_rsv_ruimte_host_key = 1201,
res_rsv_ruimte_contact_key = 1201
WHERE res_rsv_ruimte_key = rec.res_rsv_ruimte_key;
END LOOP;
fac.writelog ('LPNL.anonimize',
'I',
'LPNL.anonimize is uitgevoerd',
'');
END;
END;
/
@@ -193,7 +238,7 @@ BEGIN
-- Verwijder overgebleven records die geen persoon zijn
-- De strings waar we op zoeken staan in de eigen tabel met key 1
DELETE fac_imp_file
DELETE fac_imp_perslid
WHERE fac_import_key = p_import_key
AND fac_imp_file_index IN
(SELECT fac_imp_file_index
@@ -532,6 +577,97 @@ AS
FROM lpnl_v_wp_bezetting
WHERE bhv = 1 AND TRUNC (res_rsv_ruimte_van) = TRUNC (SYSDATE);
-- Financieel
CREATE OR REPLACE VIEW lpnl_v_rap_fin_verplichting
AS
SELECT sd.ins_srtdiscipline_prefix
|| m.mld_melding_key
|| '/'
|| o.mld_opdr_bedrijfopdr_volgnr nummer,
alg_locatie_omschrijving,
prs_kostenplaats_omschrijving,
k.prs_kostenplaats_nr,
prs_kostensoort_oms,
prs_kostensoort_opmerking,
prs_bedrijf_naam,
mld_stdmelding_omschrijving,
mld_statusopdr_omschrijving,
mld_opdr_kosten,
sf.fin_factuur_statuses_omschr,
f.fin_factuur_totaal
FROM fin_factuur f,
mld_opdr o,
mld_melding m,
mld_stdmelding std,
prs_kostensoort ks,
ins_srtdiscipline sd,
ins_tab_discipline d,
prs_bedrijf b,
prs_kostenplaats k,
alg_locatie l,
alg_gebouw g,
mld_statusopdr so,
fin_factuur_statuses sf
WHERE o.mld_opdr_key = f.mld_opdr_key(+)
AND o.mld_melding_key = m.mld_melding_key
AND m.mld_stdmelding_key = std.mld_stdmelding_key
AND std.prs_kostensoort_key = ks.prs_kostensoort_key(+)
AND std.mld_ins_discipline_key = d.ins_discipline_key
AND d.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
AND o.mld_uitvoerende_keys = b.prs_bedrijf_key(+)
AND m.mld_alg_locatie_key = g.alg_locatie_key(+)
AND m.mld_alg_locatie_key = l.alg_locatie_key(+)
AND g.prs_kostenplaats_key = k.prs_kostenplaats_key(+)
AND o.mld_statusopdr_key = so.mld_statusopdr_key
AND f.fin_factuur_statuses_key = sf.fin_factuur_statuses_key(+)
UNION ALL
SELECT 'C' || c.cnt_contract_key,
alg_locatie_omschrijving,
prs_kostenplaats_omschrijving,
k.prs_kostenplaats_nr,
prs_kostensoort_oms,
prs_kostensoort_opmerking,
prs_bedrijf_naam,
cnt_contract_omschrijving
|| ' ('
|| cnt_factuurschema_boekmaand
|| ')',
NULL,
ROUND(cfs.cnt_factuurschema_bedrag * (COALESCE(cnt_contract_plaats_gewicht, c.cnt_contract_kosten)/c.cnt_contract_kosten),2),
sf.fin_factuur_statuses_omschr,
f.fin_factuur_totaal
FROM fin_factuur f,
cnt_contract c,
cnt_contract_plaats cp,
prs_kostensoort ks,
prs_bedrijf b,
prs_kostenplaats k,
alg_locatie l,
alg_gebouw g,
fin_factuur_statuses sf,
cnt_factuurschema cfs
WHERE c.cnt_contract_key = f.cnt_contract_key(+)
AND c.cnt_contract_key = cp.cnt_contract_key
AND cp.cnt_alg_plaats_key = l.alg_locatie_key
AND l.alg_locatie_key = g.alg_locatie_key
AND g.prs_kostenplaats_key = k.prs_kostenplaats_key
AND c.prs_kostensoort_key = ks.prs_kostensoort_key(+)
AND c.cnt_prs_bedrijf_key = b.prs_bedrijf_key
AND f.fin_factuur_statuses_key = sf.fin_factuur_statuses_key(+)
AND c.cnt_contract_key = cfs.cnt_contract_key
AND TO_DATE (cnt_factuurschema_boekmaand, 'yyyy-mm') BETWEEN TRUNC (
SYSDATE,
'y')
AND TRUNC (
SYSDATE,
'y')
+ 364
AND cfs.cnt_factuurschema_boekmaand = f.fin_factuur_boekmaand(+);
-- Dagelijkse taak
CREATE OR REPLACE PROCEDURE lpnl_daily
AS