diff --git a/DSMA/dsma.sql b/DSMA/dsma.sql index 49ad599c3..b9ae0659f 100644 --- a/DSMA/dsma.sql +++ b/DSMA/dsma.sql @@ -429,7 +429,7 @@ CREATE OR REPLACE PROCEDURE DSMA_SELECT_BASE27 (p_applname IN VARCHAR2, AS -- Nieuwe notitie(s) sinds laatste sync! -- TODO:Aanname is nooit tegelijk Notitie(s) op zowel melding als opdracht! - CURSOR c_sync + CURSOR c_dsm2base IS SELECT '[' || TO_CHAR (o.mld_melding_key) || '/' || TO_CHAR (o.mld_opdr_bedrijfopdr_volgnr) || '] ' aanduiding, @@ -455,7 +455,26 @@ AS n.reftype, n.refkey, COALESCE (o.mld_opdr_externsyncdate, TRUNC (SYSDATE)); - +/* + -- Nieuwe notitie(s) sinds laatste sync! + -- Deze sync blijkt Facilitor automatisch te doen (of doet Base27 het), mij + -- niet geheel duidelijk??? + CURSOR c_base2mld + IS + SELECT '[' || TO_CHAR (o.mld_melding_key) || '/' || TO_CHAR (o.mld_opdr_bedrijfopdr_volgnr) || '] ' + aanduiding, + o.mld_melding_key, + n.mld_opdr_note_omschrijving, + n.mld_opdr_note_key + FROM mld_opdr o, + mld_opdr_note n + 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 = n.mld_opdr_key + AND n.mld_opdr_note_aanmaak > fac.safe_to_date ('01-02-2023', 'dd-mm-yyyy') -- Sync-en vanaf 01-02-2023! + AND n.mld_opdr_note_aanmaak = mld_opdr_note_wijzigdatum; +*/ v_errormsg VARCHAR2 (1000); oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); @@ -463,11 +482,11 @@ AS BEGIN v_count := 0; - -- Sync-en wijziging(en)! - FOR rec IN c_sync + -- Sync-en notities door DSM in opdracht of melding naar Base27! + FOR rec IN c_dsm2base LOOP BEGIN - v_errormsg := 'Fout sync-en wijziging(en)'; + v_errormsg := 'Fout dsm2base-sync'; -- TRUC: Zet wijzigdatum van te notificeren notities op syncdate_new! -- Bij 1 notitie zal gelden syncdate_new = wijzigdatum (en wijzigt er @@ -516,7 +535,45 @@ BEGIN END; END LOOP; - fac.writelog (p_applname, 'S', 'Opdrachten/#sync: ' || TO_CHAR (v_count), ''); + fac.writelog (p_applname, 'S', 'DSM-notities to Base27/#sync: ' || TO_CHAR (v_count), ''); +/* + v_count := 0; + + -- Sync-en notities door Base27 in opdracht naar parent-melding! + FOR rec IN c_base2mld + LOOP + BEGIN + v_errormsg := 'Fout base2mld-sync'; + + INSERT INTO mld_melding_note (mld_melding_key, + prs_perslid_key, + mld_melding_note_omschrijving, + mld_melding_note_flag) + VALUES (rec.mld_melding_key, + 682, -- API-user tbv. Base27 + rec.mld_opdr_note_omschrijving, + 0); + + UPDATE mld_opdr_note + SET mld_opdr_note_wijzigdatum = SYSDATE -- Obscure truc! + WHERE mld_opdr_note_key = rec.mld_opdr_note_key; + + fac.trackaction ('MLDUPD', rec.refkey, NULL, NULL, 'Notities geplaatst door Base27'); + + v_count := v_count + 1; + 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, 'W', rec.aanduiding || v_errormsg, ''); + COMMIT; + END; + END LOOP; + + fac.writelog (p_applname, 'S', 'Base27-notities to MLD/#sync: ' || TO_CHAR (v_count), ''); +*/ EXCEPTION WHEN OTHERS THEN @@ -682,6 +739,7 @@ CREATE OR REPLACE VIEW DSMA_V_RAP_BEZITTINGEN verwijderdatum, -- Geen toegevoegde waarde voor DSMA (gekopieerd van SVRZ) tonen, -- Geen toegevoegde waarde voor DSMA (gekopieerd van SVRZ) uitgiftedatum, + innamedatum, redeninactief ) AS @@ -690,12 +748,19 @@ AS pf.prs_perslid_naam_friendly, d.ins_deel_omschrijving, sd.ins_srtdeel_omschrijving, - x.kenmerken, + --x.kenmerken, + DECODE (d.ins_srtdeel_key, + 4, d.ins_deel_opmerking, -- SLEUTEL=Sleutel, dan nooit kenmerken! + 8, d.ins_deel_opmerking, -- BTAG=Blauwe tag, dan nooit kenmerken! + 261, d.ins_deel_opmerking, -- ALARM=Persoonlijke alarmcode, dan nooit kenmerken! + x.kenmerken) + beschrijving, d.ins_deel_aanmaak, 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, - ud.uitgiftedatum, + du.uitgiftedatum, + di.innamedatum, ri.redeninactief FROM ins_deel d, -- Inclusief recent verwijderde objecten! prs_v_perslid_fullnames_all pf, @@ -708,7 +773,7 @@ AS FROM ins_kenmerkdeel kd, ins_kenmerk k, ins_srtkenmerk sk WHERE kd.ins_kenmerk_key = k.ins_kenmerk_key AND k.ins_srtkenmerk_key = sk.ins_srtkenmerk_key - AND (sk.ins_srtkenmerk_key IN (3, 5, 6, 7, 8, 9) + AND (sk.ins_srtkenmerk_key IN (3, 5, 6, 7, 8, 9, 741, 742) -- Type/Laptop tas/Laptop standaard/Toetsenbord/Muis/Overig/Screenprotector mobiel/Beschermhoesje mobiel OR kd.ins_kenmerk_key IN (65, 67))) -- Model igv. Dock/Monitor GROUP BY ins_deel_key) x, (SELECT kd.ins_deel_key, kd.ins_kenmerkdeel_waarde uitgiftedatum @@ -716,8 +781,15 @@ AS WHERE EXISTS (SELECT 1 FROM ins_v_aanwezigkenmerk - WHERE ins_srtkenmerk_key = 1 -- Uitgiftedatum - AND ins_kenmerk_key = kd.ins_kenmerk_key)) ud, + WHERE ins_srtkenmerk_key = 1 -- Uitgifte datum + AND ins_kenmerk_key = kd.ins_kenmerk_key)) du, + (SELECT kd.ins_deel_key, kd.ins_kenmerkdeel_waarde innamedatum + FROM ins_v_aanwezigkenmerkdeel kd + WHERE EXISTS + (SELECT 1 + FROM ins_v_aanwezigkenmerk + WHERE ins_srtkenmerk_key = 2 -- Inname datum + AND ins_kenmerk_key = kd.ins_kenmerk_key)) di, (SELECT kd.ins_deel_key, ud.fac_usrdata_omschr redeninactief FROM ins_v_aanwezigkenmerkdeel kd, fac_v_aanwezigusrdata ud WHERE EXISTS @@ -731,7 +803,8 @@ AS 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 = ud.ins_deel_key(+) + AND d.ins_deel_key = du.ins_deel_key(+) + AND d.ins_deel_key = di.ins_deel_key(+) AND d.ins_deel_key = ri.ins_deel_key(+); ------ payload end ------