FCLT#74284 DSMA0

svn path=/Customer/trunk/; revision=58725
This commit is contained in:
Maarten van der Heide
2023-01-18 16:48:56 +00:00
parent 22a4b6ceeb
commit 3cb5a038a0

View File

@@ -296,12 +296,13 @@ END dsma_import_prs;
CREATE OR REPLACE PROCEDURE dsma_update_prs (p_import_key IN NUMBER)
IS
-- Toevoegen Indienst-datum (= kenmerk2), Uitdienst-datum (= kenmerk3) en
-- Leidinggevende-kenmerkveld (= kenmerk4).
-- Toevoegen Stamplaats (=kenmerk1), Indienst-datum (=kenmerk2), Uitdienst-
-- datum (=kenmerk3) en Leidinggevende-veld (=kenmerk4).
CURSOR c_prs
IS
SELECT x.prs_perslid_key,
x.prs_perslid_email,
x.prs_kenmerk1,
x.prs_kenmerk2,
x.prs_kenmerk3,
x.prs_kenmerk4
@@ -312,7 +313,7 @@ IS
FROM prs_v_aanwezigperslid
WHERE prs_perslid_key > 10 -- Voor de zekerheid!
AND prs_perslid_apikey IS NULL
AND prs_perslid_oslogin2 IS NULL -- TODO:Of check op bepaalde afdeling?
AND prs_perslid_oslogin2 IS NULL -- Persoon in import-scope!
--AND LOWER (prs_perslid_email) = LOWER (x.prs_perslid_email)
AND prs_perslid_key = x.prs_perslid_key)
ORDER BY 1;
@@ -324,7 +325,7 @@ IS
FROM prs_v_aanwezigperslid p
WHERE p.prs_perslid_key > 10 -- Voor de zekerheid!
AND p.prs_perslid_apikey IS NULL
AND p.prs_perslid_oslogin2 IS NULL -- TODO:Of check op bepaalde afdeling?
AND p.prs_perslid_oslogin2 IS NULL -- Persoon in import-scope!
AND NOT EXISTS
(SELECT 1
FROM fac_imp_perslid
@@ -357,7 +358,8 @@ BEGIN
BEGIN
v_errormsg := '[' || TO_CHAR (rec.prs_perslid_key) || '|' || rec.prs_perslid_email || '] Fout bijwerken In/Uitdienst-datumveld';
UPDATE prs_perslid
SET prs_perslid_ingangsdatum = fac.safe_to_date (rec.prs_kenmerk2, 'dd-mm-yyyy'),
SET prs_perslid_opmerking = rec.prs_kenmerk1,
prs_perslid_ingangsdatum = fac.safe_to_date (rec.prs_kenmerk2, 'dd-mm-yyyy'),
prs_perslid_einddatum = fac.safe_to_date (rec.prs_kenmerk3, 'dd-mm-yyyy')
WHERE prs_perslid_key = rec.prs_perslid_key;
@@ -399,30 +401,40 @@ END dsma_update_prs;
-- DSMA#74832: Export naar Base27 die telkens voorafgaand aan putOrders het
-- volgende doet:
-- 1. Relevante wijzigingen in opdracht (anders dan door Base27
-- via API) opnieuw uitgeven via orderqueue.
-- 1. Nieuwe notitie(s) in opdracht of bovenliggende melding
-- (anders dan door Base27 via API) uitgeven via orderqueue.
-- 2. Laatste sync-datum registreren, zodat eerdere wijzigingen
-- niet nogmaals worden doorgezet.
CREATE OR REPLACE PROCEDURE DSMA_SELECT_BASE27 (p_applname IN VARCHAR2,
p_applrun IN VARCHAR2)
AS
-- Nieuwe notitie(s) sinds laatste sync!
-- TODO:Aanname is nooit tegelijk Notitie(s) op zowel melding als opdracht!
CURSOR c_sync
IS
SELECT '[' || TO_CHAR (o.mld_melding_key) || '/' || TO_CHAR (o.mld_opdr_bedrijfopdr_volgnr) || '] '
aanduiding,
o.mld_opdr_key,
n.reftype,
n.refkey,
COALESCE (o.mld_opdr_externsyncdate, TRUNC (SYSDATE)) syncdate_old,
MAX (GREATEST (mon.mld_opdr_note_aanmaak, mon.mld_opdr_note_wijzigdatum)) syncdate_new
FROM mld_opdr o, mld_opdr_note mon
WHERE o.mld_uitvoerende_keys = 101 -- Base27
MAX (n.note_datum) syncdate_new
FROM mld_opdr o,
(SELECT 'ORD' reftype, mld_opdr_key refkey, GREATEST (mld_opdr_note_aanmaak, mld_opdr_note_wijzigdatum) note_datum
FROM mld_opdr_note
WHERE prs_perslid_key != 682 -- API-user tbv. Base27
UNION ALL
SELECT 'MLD' reftype, mld_melding_key refkey, GREATEST (mld_melding_note_aanmaak, mld_melding_note_wijzigdatum) note_datum
FROM mld_melding_note
WHERE prs_perslid_key != 682) n -- API-user tbv. Base27
WHERE o.mld_uitvoerende_keys = 681 -- Base27
AND o.mld_typeopdr_key = 61 -- Base27
AND o.mld_statusopdr_key IN (5, 8) -- Toegekend/Geaccepteerd
AND o.mld_opdr_key = mon.mld_opdr_key
AND mon.prs_perslid_key != 682 -- API-user tbv. Base27
AND GREATEST (mon.mld_opdr_note_aanmaak, mon.mld_opdr_note_wijzigdatum) > COALESCE (o.mld_opdr_externsyncdate, TRUNC (SYSDATE))
AND ((n.reftype = 'ORD' AND o.mld_opdr_key = n.refkey)
OR (n.reftype = 'MLD' AND o.mld_melding_key = n.refkey))
AND n.note_datum > COALESCE (o.mld_opdr_externsyncdate, TRUNC (SYSDATE))
GROUP BY '[' || TO_CHAR (o.mld_melding_key) || '/' || TO_CHAR (o.mld_opdr_bedrijfopdr_volgnr) || '] ',
o.mld_opdr_key,
n.reftype,
n.refkey,
COALESCE (o.mld_opdr_externsyncdate, TRUNC (SYSDATE));
v_errormsg VARCHAR2 (1000);
@@ -441,18 +453,38 @@ BEGIN
-- TRUC: Zet wijzigdatum van te notificeren notities op syncdate_new!
-- Bij 1 notitie zal gelden syncdate_new = wijzigdatum (en wijzigt er
-- niets), maar truc gaat pas echt werken als er >1 notities zijn!
UPDATE mld_opdr_note
SET mld_opdr_note_wijzigdatum = rec.syncdate_new
WHERE mld_opdr_key = rec.mld_opdr_key
AND GREATEST (mld_opdr_note_aanmaak, mld_opdr_note_wijzigdatum) > rec.syncdate_old;
IF (rec.reftype = 'ORD')
THEN
UPDATE mld_opdr_note
SET mld_opdr_note_wijzigdatum = rec.syncdate_new
WHERE prs_perslid_key != 682 -- API-user tbv. Base27
AND mld_opdr_key = rec.refkey
AND GREATEST (mld_opdr_note_aanmaak, mld_opdr_note_wijzigdatum) > rec.syncdate_old;
UPDATE mld_opdr
SET mld_opdr_teverzenden = 2,
mld_opdr_verzonden = NULL,
mld_opdr_externsyncdate = rec.syncdate_new
WHERE mld_opdr_key = rec.mld_opdr_key;
UPDATE mld_opdr
SET mld_opdr_teverzenden = 2,
mld_opdr_verzonden = NULL,
mld_opdr_externsyncdate = rec.syncdate_new
WHERE mld_opdr_key = rec.refkey;
fac.trackaction ('ORDUPD', rec.refkey, NULL, NULL, 'Notities doorgezet naar Base27');
ELSE
UPDATE mld_melding_note
SET mld_melding_note_wijzigdatum = rec.syncdate_new
WHERE prs_perslid_key != 682 -- API-user tbv. Base27
AND mld_melding_key = rec.refkey
AND GREATEST (mld_melding_note_aanmaak, mld_melding_note_wijzigdatum) > rec.syncdate_old;
-- TODO:Aanname is <20><>n Base27-opdracht per incident(melding)!
UPDATE mld_opdr
SET mld_opdr_teverzenden = 2,
mld_opdr_verzonden = NULL,
mld_opdr_externsyncdate = rec.syncdate_new
WHERE mld_melding_key = rec.refkey;
fac.trackaction ('MLDUPD', rec.refkey, NULL, NULL, 'Notities doorgezet naar Base27');
END IF;
fac.trackaction ('ORDUPD', rec.mld_opdr_key, NULL, NULL, 'Wijzigingen doorgezet naar Base27');
v_count := v_count + 1;
EXCEPTION
WHEN OTHERS
@@ -491,7 +523,7 @@ AS
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_aanduiding VARCHAR2 (200);
v_count_tot NUMBER (10) := 0;
v_count_tot NUMBER (10);
CURSOR c_mld_base27
IS
@@ -539,14 +571,14 @@ AS
FROM mld_melding m, mld_stdmelding sm
WHERE m.mld_stdmelding_key = sm.mld_stdmelding_key
AND sm.mld_stdmelding_key IN (23, 24, 25, 26, 40, 41, 42, 43, 44, 45, 48) -- Afgesproken ICT-meldingen
AND m.mld_melding_status IN (4, 7, 99) -- In behandeling/Uigegeven/Niet opgelost
AND m.mld_melding_status IN (4, 7, 99) -- In behandeling/Uitgegeven/Niet opgelost
AND EXISTS
(SELECT 1
FROM mld_opdr
WHERE mld_uitvoerende_keys = 841 -- Korton
AND mld_typeopdr_key = 5 -- Uitvoeringsopdracht
AND mld_melding_key = m.mld_melding_key)
AND NOT EXISTS
AND NOT EXISTS -- Geen lopende opdrachten (zou zo moeten zijn)
(SELECT 1
FROM mld_opdr
WHERE mld_uitvoerende_keys = 841 -- Korton
@@ -555,7 +587,9 @@ AS
AND mld_melding_key = m.mld_melding_key)
ORDER BY 1;
BEGIN
v_count_tot := 0;
-- Alle lopende Base27-meldingen sluiten als onderliggende Base27-opdrachten zijn gesloten.
v_count_tot := 0;
FOR rec IN c_mld_base27
LOOP
v_aanduiding := '[' || TO_CHAR (rec.mld_melding_key) || '|' || rec.mld_melding_onderwerp || '] ';
@@ -567,6 +601,7 @@ AS
COMMIT;
--Alle lopende Korton-opdrachten automatisch sluiten.
v_count_tot := 0;
FOR rec IN c_ord_korton
LOOP
v_aanduiding := '[' || TO_CHAR (rec.mld_opdr_key) || '|' || TO_CHAR (rec.mld_melding_key) || '/' || TO_CHAR (rec.mld_opdr_bedrijfopdr_volgnr) || '] ';
@@ -578,6 +613,7 @@ AS
COMMIT;
-- Alle lopende Korton-meldingen sluiten als onderliggende Korton-opdrachten zijn gesloten.
v_count_tot := 0;
FOR rec IN c_mld_korton
LOOP
v_aanduiding := '[' || TO_CHAR (rec.mld_melding_key) || '|' || rec.mld_melding_onderwerp || '] ';
@@ -593,7 +629,7 @@ AS
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := 'ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.writelog (c_applname, 'E', v_aanduiding || v_errormsg, 'Daily achtergrond taak afgebroken!');
fac.writelog (c_applname, 'E', v_aanduiding || v_errormsg, 'Taak afgebroken!');
END;
END;
/
@@ -624,9 +660,9 @@ CREATE OR REPLACE VIEW DSMA_V_RAP_BEZITTINGEN
objectsoort,
beschrijving,
registratiedatum,
verwijderdatum,
tonen,
inleverdatum
verwijderdatum, -- Geen toegevoegde waarde voor DSMA (gekopieerd van SVRZ)
tonen, -- Geen toegevoegde waarde voor DSMA (gekopieerd van SVRZ)
uitgiftedatum
)
AS
SELECT d.ins_deel_key,
@@ -639,13 +675,11 @@ AS
d.ins_deel_verwijder,
DECODE (d.ins_deel_verwijder, NULL, DECODE (SIGN (ADD_MONTHS (d.ins_deel_vervaldatum, 1) - SYSDATE), -1, 0, 1), 0)
tonen,
DECODE (SIGN (d.ins_deel_vervaldatum - SYSDATE), -1, d.ins_deel_vervaldatum, NULL)
inleverdatum
ud.uitgiftedatum
FROM ins_deel d, -- Inclusief recent verwijderde objecten!
prs_v_perslid_fullnames_all pf,
ins_srtdeel sd,
( SELECT ins_deel_key,
LISTAGG (kenmerk, ', ') WITHIN GROUP (ORDER BY ins_kenmerk_volgnummer) AS kenmerken
( SELECT ins_deel_key, LISTAGG (kenmerk, ', ') WITHIN GROUP (ORDER BY ins_kenmerk_volgnummer) AS kenmerken
FROM (SELECT kd.ins_deel_key,
k.ins_kenmerk_volgnummer,
DECODE (kd.ins_kenmerkdeel_waarde, '1', sk.ins_srtkenmerk_omschrijving, kd.ins_kenmerkdeel_waarde)
@@ -654,12 +688,20 @@ AS
WHERE kd.ins_kenmerk_key = k.ins_kenmerk_key
AND k.ins_srtkenmerk_key = sk.ins_srtkenmerk_key
AND sk.ins_srtkenmerk_key IN (5, 6, 7, 8, 9))
GROUP BY ins_deel_key) x
GROUP BY ins_deel_key) x,
(SELECT ins_deel_key, ins_kenmerkdeel_waarde uitgiftedatum
FROM ins_v_aanwezigkenmerkdeel kd
WHERE EXISTS
(SELECT 1
FROM ins_v_aanwezigkenmerk
WHERE ins_srtkenmerk_key = 1
AND ins_kenmerk_key = kd.ins_kenmerk_key)) ud
WHERE d.ins_alg_ruimte_type = 'P'
AND d.ins_alg_ruimte_key = pf.prs_perslid_key
AND COALESCE (d.ins_deel_verwijder, SYSDATE) >= TRUNC (SYSDATE - 1)
AND d.ins_srtdeel_key = sd.ins_srtdeel_key
AND d.ins_deel_key = x.ins_deel_key(+);
AND d.ins_deel_key = x.ins_deel_key(+)
AND d.ins_deel_key = ud.ins_deel_key(+);
------ payload end ------