DJIN#60189 NACHTWERK-export/bijwerken kenmerken (van opdracht naar melding)

svn path=/Customer/trunk/; revision=45089
This commit is contained in:
Maarten van der Heide
2019-12-02 13:10:48 +00:00
parent 1d967d22f9
commit b7284e7ef9

View File

@@ -763,57 +763,26 @@ END djin_anonimiseer;
CREATE OR REPLACE PROCEDURE djin_select_nachtwerk (p_applname IN VARCHAR2,
p_applrun IN VARCHAR2)
AS
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_old_melding_key NUMBER (10);
CURSOR c_pd -- Recent gewijzigde Plusdienst-opdrachten met Kosten != 0 onder een (soort)melding met Kosten-veld!
-- DJIN#60189: Kopieren opdrachtkenmerken naar meldingkenmerken
-- 282=Kosten (euro) (optioneel)+285=Leonardonummer+461=Werkzaamheden uitgevoerd door het locatieteam+
-- 621=Betreft schade door molest/vermissing+622=Veroorzaker schade/vermissing/2=Serviceaanvraagnummer+
-- 43=Naam leverancier+44=Opdrachtnummer leverancier
CURSOR c_o2m
IS
SELECT x.mld_melding_key,
x.mkosten_kkey, x.okosten_kow, mkosten.mld_kenmerkmelding_key mkosten_kmkey,
x.mln_kkey, oln.mld_kenmerkopdr_waarde oln_kow, mln.mld_kenmerkmelding_key mln_kmkey,
x.mlt_kkey, olt.mld_kenmerkopdr_waarde olt_kow, mlt.mld_kenmerkmelding_key mlt_kmkey
FROM (SELECT DISTINCT o.mld_opdr_key, o.mld_melding_key,
mkosten.mld_kenmerk_key mkosten_kkey, ko.mld_kenmerkopdr_waarde okosten_kow,
mln.mld_kenmerk_key mln_kkey, mlt.mld_kenmerk_key mlt_kkey
FROM fac_v_aanwezigusrdata ud1,
mld_kenmerk k1,
mld_v_aanwezigkenmerkmelding km,
fac_v_aanwezigusrdata ud2,
mld_melding m,
mld_stdmelding sm,
ins_tab_discipline td,
mld_kenmerk mkosten,
mld_kenmerk mln,
mld_kenmerk mlt,
mld_opdr o,
mld_v_aanwezigkenmerkopdr ko,
mld_kenmerk okosten
WHERE ud1.fac_usrtab_key = 241 -- Kenmerksoorten ter identificatie van Plusdienst (als Prijs > 0)
AND ud1.fac_usrdata_code = TO_CHAR (k1.mld_srtkenmerk_key)
AND k1.mld_kenmerk_key = km.mld_kenmerk_key
AND km.mld_kenmerkmelding_waarde = TO_CHAR (ud2.fac_usrdata_key)
AND ud2.fac_usrdata_prijs > 0
AND km.mld_melding_key = m.mld_melding_key
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
AND sm.mld_ins_discipline_key = td.ins_discipline_key
AND ((sm.mld_stdmelding_key = mkosten.mld_stdmelding_key AND mkosten.mld_kenmerk_niveau = 'S')
OR (td.ins_discipline_key = mkosten.mld_stdmelding_key AND mkosten.mld_kenmerk_niveau = 'D')
OR (td.ins_srtdiscipline_key = mkosten.mld_stdmelding_key AND mkosten.mld_kenmerk_niveau = 'T'))
AND mkosten.mld_srtkenmerk_key = 282 -- Kosten
AND ((sm.mld_stdmelding_key = mln.mld_stdmelding_key AND mln.mld_kenmerk_niveau = 'S')
OR (td.ins_discipline_key = mln.mld_stdmelding_key AND mln.mld_kenmerk_niveau = 'D')
OR (td.ins_srtdiscipline_key = mln.mld_stdmelding_key AND mln.mld_kenmerk_niveau = 'T'))
AND mln.mld_srtkenmerk_key = 285 -- Leonardonummer
AND ((sm.mld_stdmelding_key = mlt.mld_stdmelding_key AND mlt.mld_kenmerk_niveau = 'S')
OR (td.ins_discipline_key = mlt.mld_stdmelding_key AND mlt.mld_kenmerk_niveau = 'D')
OR (td.ins_srtdiscipline_key = mlt.mld_stdmelding_key AND mlt.mld_kenmerk_niveau = 'T'))
AND mlt.mld_srtkenmerk_key = 461 -- Locatieteam-vinkveld
AND m.mld_melding_key = o.mld_melding_key
AND o.mld_opdr_key = ko.mld_opdr_key
AND ko.mld_kenmerk_key = okosten.mld_kenmerk_key
AND okosten.mld_srtkenmerk_key = 282 -- Kosten
AND COALESCE (fac.safe_to_number (ko.mld_kenmerkopdr_waarde), 0) != 0
SELECT '[' || TO_CHAR (o.mld_melding_key) || '/' || TO_CHAR (o.mld_opdr_bedrijfopdr_volgnr) || '] ' aanduiding,
o.mld_melding_key, o.mld_srtkenmerk_key, o.mld_kenmerkopdr_waarde kow,
m.mld_kenmerk_key mkk, w.mld_kenmerkmelding_key kmk, w.mld_kenmerkmelding_waarde kmw
FROM (SELECT o.mld_melding_key, o.mld_opdr_bedrijfopdr_volgnr, k.mld_srtkenmerk_key, ko.mld_kenmerkopdr_waarde
FROM mld_kenmerk k, mld_v_aanwezigkenmerkopdr ko, mld_opdr o
WHERE k.mld_kenmerk_verwijder IS NULL
AND k.mld_srtkenmerk_key IN (282, 285, 461, 621, 622, 2, 43, 44)
AND k.mld_kenmerk_key = ko.mld_kenmerk_key
AND ko.mld_opdr_key = o.mld_opdr_key
AND NOT EXISTS -- Skip opdrachten met lager volgnummer
(SELECT 1
FROM mld_opdr
@@ -822,52 +791,30 @@ AS
AND EXISTS -- Beschouw zolang recent nog gewijzigd
(SELECT 1
FROM fac_tracking t, fac_srtnotificatie sn
WHERE t.fac_tracking_datum > ADD_MONTHS (SYSDATE, -3)
WHERE t.fac_tracking_datum > SYSDATE - 7
AND t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
AND sn.fac_srtnotificatie_code LIKE 'ORD%'
AND t.fac_tracking_refkey = o.mld_opdr_key)) x
LEFT JOIN
mld_v_aanwezigkenmerkmelding mkosten
ON x.mld_melding_key = mkosten.mld_melding_key
AND EXISTS
(SELECT 1
FROM mld_kenmerk
WHERE mld_srtkenmerk_key = 282 -- Kosten op melding
AND mld_kenmerk_key = mkosten.mld_kenmerk_key)
LEFT JOIN
mld_v_aanwezigkenmerkmelding mln
ON x.mld_melding_key = mln.mld_melding_key
AND EXISTS
(SELECT 1
FROM mld_kenmerk
WHERE mld_srtkenmerk_key = 285 -- Leonardonummer op melding
AND mld_kenmerk_key = mln.mld_kenmerk_key)
LEFT JOIN
mld_v_aanwezigkenmerkopdr oln
ON x.mld_opdr_key = oln.mld_opdr_key
AND EXISTS
(SELECT 1
FROM mld_kenmerk
WHERE mld_srtkenmerk_key = 285 -- Leonardonummer op opdracht
AND mld_kenmerk_key = oln.mld_kenmerk_key)
LEFT JOIN
mld_v_aanwezigkenmerkmelding mlt
ON x.mld_melding_key = mlt.mld_melding_key
AND EXISTS
(SELECT 1
FROM mld_kenmerk
WHERE mld_srtkenmerk_key = 461 -- Locatieteam-vinkveld op melding
AND mld_kenmerk_key = mlt.mld_kenmerk_key)
LEFT JOIN
mld_v_aanwezigkenmerkopdr olt
ON x.mld_opdr_key = olt.mld_opdr_key
AND EXISTS
(SELECT 1
FROM mld_kenmerk
WHERE mld_srtkenmerk_key = 461 -- Locatieteam-vinkveld op opdracht
AND mld_kenmerk_key = olt.mld_kenmerk_key)
WHERE okosten_kow != COALESCE (mkosten.mld_kenmerkmelding_waarde, '0') -- Kosten nieuw/gewijzigd
ORDER BY 1;
AND t.fac_tracking_refkey = o.mld_opdr_key)) o, -- Van opdracht
( SELECT m.mld_melding_key, k.mld_srtkenmerk_key, MIN (k.mld_kenmerk_key) mld_kenmerk_key
FROM mld_melding m, mld_stdmelding sm, ins_tab_discipline td, mld_kenmerk k
WHERE m.mld_stdmelding_key = sm.mld_stdmelding_key
AND sm.mld_ins_discipline_key = td.ins_discipline_key
AND ((sm.mld_stdmelding_key = k.mld_stdmelding_key AND k.mld_kenmerk_niveau = 'S')
OR (td.ins_discipline_key = k.mld_stdmelding_key AND k.mld_kenmerk_niveau = 'D')
OR (td.ins_srtdiscipline_key = k.mld_stdmelding_key AND k.mld_kenmerk_niveau = 'T'))
AND k.mld_kenmerk_verwijder IS NULL
AND k.mld_srtkenmerk_key IN (282, 285, 461, 621, 622, 2, 43, 44)
GROUP BY m.mld_melding_key, k.mld_srtkenmerk_key) m, -- Naar MIN(kenmerk) op melding
(SELECT km.mld_melding_key, k.mld_kenmerk_key, km.mld_kenmerkmelding_key, km.mld_kenmerkmelding_waarde
FROM mld_kenmerk k, mld_v_aanwezigkenmerkmelding km
WHERE k.mld_kenmerk_verwijder IS NULL
AND k.mld_srtkenmerk_key IN (282, 285, 461, 621, 622, 2, 43, 44)
AND km.mld_kenmerk_key = k.mld_kenmerk_key) w -- Eventuele huidige waarde van MIN(kenmerk)!
WHERE o.mld_melding_key = m.mld_melding_key
AND o.mld_srtkenmerk_key = m.mld_srtkenmerk_key
AND m.mld_melding_key = w.mld_melding_key(+)
AND m.mld_kenmerk_key = w.mld_kenmerk_key(+)
ORDER BY 2;
BEGIN
-- Anonimiseer medewerkers, trackregels en specifieke andere zaken zoals
-- het in Productie de bedoeling is (dus pas na afgesproken termijnen en
@@ -875,66 +822,57 @@ BEGIN
-- Vanuit djin.sql dus altijd alle parameters op FALSE (= geen extra's)!
djin_anonimiseer (FALSE, FALSE, FALSE);
-- DJIN#55344: Doorvoeren dat het Kosten-kenmerkveld uit de evt. opdracht
-- met het hoogste volgnummer wordt gekopieerd/bijgewerkt in
-- het Kosten-kenmerkveld bij de melding (zolang er mutaties
-- DJIN#55344: Doorvoeren dat het kenmerkveld uit de (evt.) opdracht met
-- het hoogste volgnummer wordt gekopieerd/bijgewerkt in het
-- kenmerkveld bij de melding (zolang er mutaties plaatsvinden
-- plaatsvinden op de opdracht).
-- Naast Kosten-kenmerkveld (van soort=282), tevens Leonardo-
-- nummer (soort=285) en Locatieteam (soort=461) bijwerken!
FOR rec IN c_pd
v_old_melding_key := -1;
FOR rec IN c_o2m
LOOP
v_errormsg := 'Fout bijwerken Kosten-veld';
v_errormsg := 'Fout bijwerken kenmerkveld';
BEGIN
IF rec.mkosten_kmkey IS NULL
IF rec.kmk IS NULL OR rec.kmw != rec.kow
THEN
INSERT INTO mld_kenmerkmelding (mld_melding_key,
mld_kenmerk_key,
mld_kenmerkmelding_waarde)
VALUES (rec.mld_melding_key,
rec.mkosten_kkey,
rec.okosten_kow);
ELSE
UPDATE mld_kenmerkmelding
SET mld_kenmerkmelding_waarde = COALESCE (rec.okosten_kow, mld_kenmerkmelding_waarde)
WHERE mld_kenmerkmelding_key = rec.mkosten_kmkey;
IF v_old_melding_key = -1
THEN
v_old_melding_key := rec.mld_melding_key;
ELSIF rec.mld_melding_key != v_old_melding_key
THEN
fac.trackaction ('#MLDUPD', v_old_melding_key, NULL, NULL, 'Opdracht2Melding-sync uitgevoerd');
v_old_melding_key := rec.mld_melding_key;
END IF;
IF rec.kmk IS NULL
THEN
INSERT INTO mld_kenmerkmelding (mld_melding_key,
mld_kenmerk_key,
mld_kenmerkmelding_waarde)
VALUES (rec.mld_melding_key,
rec.mkk,
rec.kow);
ELSE
UPDATE mld_kenmerkmelding
SET mld_kenmerkmelding_waarde = rec.kow
WHERE mld_kenmerkmelding_key = rec.kmk;
END IF;
COMMIT;
END IF;
IF rec.mln_kmkey IS NULL AND rec.oln_kow IS NOT NULL
THEN
INSERT INTO mld_kenmerkmelding (mld_melding_key,
mld_kenmerk_key,
mld_kenmerkmelding_waarde)
VALUES (rec.mld_melding_key,
rec.mln_kkey,
rec.oln_kow);
ELSE
UPDATE mld_kenmerkmelding
SET mld_kenmerkmelding_waarde = COALESCE (rec.oln_kow, mld_kenmerkmelding_waarde)
WHERE mld_kenmerkmelding_key = rec.mln_kmkey;
END IF;
IF rec.mlt_kmkey IS NULL AND rec.olt_kow IS NOT NULL
THEN
INSERT INTO mld_kenmerkmelding (mld_melding_key,
mld_kenmerk_key,
mld_kenmerkmelding_waarde)
VALUES (rec.mld_melding_key,
rec.mlt_kkey,
rec.olt_kow);
ELSE
UPDATE mld_kenmerkmelding
SET mld_kenmerkmelding_waarde = COALESCE (rec.olt_kow, mld_kenmerkmelding_waarde)
WHERE mld_kenmerkmelding_key = rec.mlt_kmkey;
END IF;
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.writelog (p_applname, 'E', v_errormsg, 'Plusdiensten-loop');
fac.writelog (p_applname, 'E', rec.aanduiding || v_errormsg, 'Opdracht2Melding-loop');
COMMIT;
END;
END LOOP;
IF v_old_melding_key != -1
THEN
fac.trackaction ('#MLDUPD', v_old_melding_key, NULL, NULL, 'Opdracht2Melding-sync uitgevoerd');
END IF;
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
@@ -6080,7 +6018,7 @@ CREATE OR REPLACE VIEW djin_v_rap_mt_bron
week,
vestiging,
vakgroeptype,
vakgroep, -- Of Meldingsoort(=Klacht?) igv. Vakgroeptype=Klantreactie (key=2)
vakgroep,
aantal,
acp_optijd,
afm_optijd
@@ -6097,8 +6035,7 @@ AS
afm_optijd
FROM (SELECT d.alg_district_omschrijving vt,
sd.ins_srtdiscipline_omschrijving vakgroeptype,
DECODE (sd.ins_srtdiscipline_key, 2, COALESCE (smg.mld_stdmeldinggroep_oms, '???'), md.ins_discipline_omschrijving)
vakgroep,
md.ins_discipline_omschrijving vakgroep,
m.mld_melding_key,
m.mld_melding_acceptdatum_std,
fac.gettrackingdate ('MLDACP', m.mld_melding_key) mldacp,
@@ -6109,7 +6046,6 @@ AS
mld_stdmelding sm, -- Ook verwijderde meldingen,
mld_discipline md, -- en verwijderde vakgroepen,
ins_srtdiscipline sd, -- en verwijderde vakgroeptypen,
mld_stdmeldinggroep smg,
alg_locatie l, -- Ook verwijderde locaties,
alg_district d -- en verwijderde districten!
WHERE t.fac_srtnotificatie_key = 38 -- MLDAFM
@@ -6126,7 +6062,6 @@ AS
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 sm.mld_stdmeldinggroep_key = smg.mld_stdmeldinggroep_key(+)
AND m.mld_alg_locatie_key = l.alg_locatie_key
AND l.alg_district_key = d.alg_district_key)
GROUP BY TO_CHAR (mldafm, 'iyyy-iw') || vt || vakgroeptype || vakgroep,