FCLT#74284 DSMA0
svn path=/Customer/trunk/; revision=58725
This commit is contained in:
118
DSMA/dsma.sql
118
DSMA/dsma.sql
@@ -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 ------
|
||||
|
||||
|
||||
Reference in New Issue
Block a user