HGCU#90592 Opzetten koppeling met GBS (mail2melding)
svn path=/Customer/trunk/; revision=70258
This commit is contained in:
343
HGCU/hgcu.sql
343
HGCU/hgcu.sql
@@ -298,14 +298,19 @@ AS
|
||||
v_ruimte_key alg_ruimte.alg_ruimte_key%TYPE;
|
||||
v_locatie_key alg_locatie.alg_locatie_key%TYPE;
|
||||
v_tijdstip VARCHAR2 (100);
|
||||
v_datum VARCHAR2 (100);
|
||||
v_date DATE;
|
||||
v_gbs_melding VARCHAR2 (1000);
|
||||
v_meldingstekst VARCHAR2 (1000);
|
||||
v_cabinet VARCHAR2 (1000);
|
||||
v_count NUMBER;
|
||||
v_error NUMBER;
|
||||
v_newline VARCHAR2 (4000);
|
||||
v_tag VARCHAR2 (4000);
|
||||
v_value VARCHAR2 (4000);
|
||||
v_from VARCHAR2 (4000);
|
||||
v_body VARCHAR2 (4000);
|
||||
v_state VARCHAR2 (4000);
|
||||
|
||||
v_errorhint VARCHAR2 (1000);
|
||||
oracle_err_num NUMBER;
|
||||
@@ -321,16 +326,20 @@ AS
|
||||
v_from := pfrom;
|
||||
END IF;
|
||||
|
||||
SELECT prs_perslid_key
|
||||
INTO v_sender
|
||||
FROM prs_perslid
|
||||
WHERE prs_perslid_oslogin = '_GBS_KOPPELING';
|
||||
|
||||
IF psubject = 'Watchdog Alarm'
|
||||
THEN
|
||||
UPDATE fac_usrdata
|
||||
SET fac_usrdata_vervaldatum = SYSDATE
|
||||
WHERE fac_usrdata_key = 181; -- Watchdog
|
||||
WHERE fac_usrdata_key = 62; -- Watchdog
|
||||
ELSE
|
||||
UPDATE fac_usrdata
|
||||
SET fac_usrdata_vervaldatum = SYSDATE
|
||||
WHERE fac_usrdata_key = 60; -- Laatst ontvangen bericht
|
||||
WHERE fac_usrdata_key = 61; -- Laatst ontvangen bericht
|
||||
|
||||
-- filter nu de essentiele velden uit de mailbody
|
||||
-- vervang cr door lf
|
||||
@@ -357,10 +366,249 @@ AS
|
||||
VALUES ('GBS_MELDING',
|
||||
v_volgnr + 1,
|
||||
SUBSTR (pfrom || CHR (10) || psubject || CHR (10) || v_omschrijving, 1, 2000));
|
||||
END IF;
|
||||
|
||||
INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde)
|
||||
VALUES (psessionid, 'maillog', 'Geregistreerd onder melding xxx');
|
||||
WHILE LENGTH (v_body) <> 0
|
||||
LOOP
|
||||
fac.imp_getfield (v_body, CHR (10), v_newline);
|
||||
fac.imp_getfield (v_newline, ':', v_tag);
|
||||
v_value := v_newline;
|
||||
v_tag := UPPER (TRIM (v_tag));
|
||||
v_errormsg := '(0x1452)';
|
||||
|
||||
CASE v_tag
|
||||
WHEN 'ERRORNAME'
|
||||
THEN
|
||||
v_onderwerp := SUBSTR (v_value, 1, 60);
|
||||
v_meldingstekst := TRIM (v_value);
|
||||
v_errormsg := '(0x1453)';
|
||||
WHEN 'STATE'
|
||||
THEN
|
||||
v_state := TRIM (v_value);
|
||||
WHEN 'ALARMDATE'
|
||||
THEN
|
||||
v_datum := TRIM (v_value);
|
||||
WHEN 'ALARMTIME'
|
||||
THEN
|
||||
v_tijdstip := TRIM (v_value);
|
||||
WHEN 'CABINETNAME'
|
||||
THEN
|
||||
v_cabinet := TRIM (v_value);
|
||||
ELSE
|
||||
NULL;
|
||||
END CASE;
|
||||
END LOOP;
|
||||
|
||||
|
||||
|
||||
BEGIN
|
||||
SELECT fac_usrdata_prijs, fac_usrdata_omschr
|
||||
INTO v_stdmelding_key, v_ruimte_nr
|
||||
FROM fac_usrdata
|
||||
WHERE fac_usrdata_verwijder IS NULL
|
||||
AND fac_usrdata_upper = TRIM (UPPER (v_meldingstekst))
|
||||
AND fac_usrtab_key = 81; -- Hier staat de verwijzing naar de Stdmeldingen
|
||||
|
||||
EXCEPTION
|
||||
WHEN NO_DATA_FOUND
|
||||
THEN
|
||||
v_error := 1;
|
||||
v_errormsg :=
|
||||
'Standaard melding kan niet gevonden worden: '
|
||||
|| v_meldingstekst;
|
||||
END;
|
||||
|
||||
BEGIN
|
||||
SELECT alg_ruimte_key,
|
||||
alg_locatie_key,
|
||||
alg_srtruimte_key
|
||||
INTO v_ruimte_key, v_locatie_key, v_srtruimte_key
|
||||
FROM alg_v_ruimte_gegevens
|
||||
WHERE UPPER (alg_ruimte_nr) = v_ruimte_nr;
|
||||
EXCEPTION
|
||||
WHEN OTHERS
|
||||
THEN
|
||||
v_error := 1;
|
||||
v_errormsg :=
|
||||
'Ruimte kan niet gevonden worden: ' || v_ruimte_nr;
|
||||
END;
|
||||
|
||||
v_date :=
|
||||
fac.safe_to_date (v_datum || ' ' || v_tijdstip, 'yyyy-mm-dd hh24:mi.ss');
|
||||
|
||||
IF v_date IS NULL
|
||||
THEN
|
||||
v_date := SYSDATE;
|
||||
END IF;
|
||||
|
||||
-- nu gaan we de hersteltijd bepalen
|
||||
v_errormsg := '(0x147) hersteltijd bepalen uit MELDINGSTEKST ' || v_meldingstekst;
|
||||
|
||||
BEGIN
|
||||
-- vind de uitvoertijd bij de ruimte specifieke sla
|
||||
SELECT mld_stdmsrtruimte_t_uitvtijd
|
||||
INTO v_uitvoertijd
|
||||
FROM mld_stdmsrtruimte
|
||||
WHERE alg_srtruimte_key = v_srtruimte_key
|
||||
AND mld_stdmelding_key = v_stdmelding_key;
|
||||
EXCEPTION
|
||||
WHEN NO_DATA_FOUND
|
||||
THEN
|
||||
-- vind de uitvoertijd bij de stdmelding
|
||||
SELECT mld_stdmelding_t_uitvoertijd
|
||||
INTO v_uitvoertijd
|
||||
FROM mld_stdmelding
|
||||
WHERE mld_stdmelding_key = v_stdmelding_key;
|
||||
END;
|
||||
|
||||
-- suggested extensions:
|
||||
-- check for MLDUSE-write autorisations
|
||||
-- parse the subject to find an appropriate stdmelding, if uniquely possible
|
||||
v_errormsg := '(0x148)';
|
||||
|
||||
SELECT MIN (m.mld_melding_key), COUNT (m.mld_melding_key)
|
||||
INTO v_melding_key, v_count
|
||||
FROM mld_melding m, mld_kenmerkmelding km
|
||||
WHERE mld_stdmelding_key = v_stdmelding_key
|
||||
AND mld_alg_onroerendgoed_keys = v_ruimte_key
|
||||
AND mld_melding_status IN (0, 2, 3, 4, 7, 99) -- alles behalve 1=Afgewezen, 5= afgemeld, 6= historie
|
||||
AND km.mld_melding_key = m.mld_melding_key
|
||||
AND km.mld_kenmerk_key = 201
|
||||
AND km.mld_kenmerkmelding_waarde =
|
||||
v_cabinet
|
||||
|| ';'
|
||||
|| v_meldingstekst;
|
||||
|
||||
IF UPPER (v_state) = 'ALARM ON'
|
||||
THEN
|
||||
IF v_count = 0
|
||||
THEN
|
||||
v_errormsg := 'Melding kan niet aangemaakt worden (0x1481)';
|
||||
|
||||
INSERT INTO mld_melding (mld_melding_module,
|
||||
mld_meldbron_key,
|
||||
mld_melding_datum,
|
||||
mld_melding_onderwerp,
|
||||
mld_melding_omschrijving,
|
||||
mld_melding_status,
|
||||
mld_melding_t_uitvoertijd,
|
||||
mld_stdmelding_key,
|
||||
prs_perslid_key,
|
||||
prs_perslid_key_voor,
|
||||
prs_kostenplaats_key,
|
||||
mld_melding_spoed,
|
||||
mld_alg_locatie_key,
|
||||
mld_alg_onroerendgoed_keys)
|
||||
VALUES ('MLD',
|
||||
4, -- email
|
||||
v_date,
|
||||
v_onderwerp,
|
||||
v_omschrijving,
|
||||
NULL,
|
||||
v_uitvoertijd,
|
||||
v_stdmelding_key,
|
||||
v_sender,
|
||||
v_sender,
|
||||
NULL,
|
||||
3,
|
||||
v_locatie_key,
|
||||
v_ruimte_key)
|
||||
RETURNING mld_melding_key
|
||||
INTO v_melding_key;
|
||||
|
||||
v_errormsg := '(0x165)';
|
||||
mld.setmeldingstatus (v_melding_key, 2, v_sender);
|
||||
|
||||
INSERT INTO mld_kenmerkmelding (mld_melding_key,
|
||||
mld_kenmerk_key,
|
||||
mld_kenmerkmelding_waarde)
|
||||
VALUES (v_melding_key,
|
||||
201,
|
||||
v_cabinet
|
||||
|| ';'
|
||||
|| v_meldingstekst);
|
||||
|
||||
INSERT INTO fac_result (fac_result_sessionid,
|
||||
fac_result_naam,
|
||||
fac_result_waarde)
|
||||
VALUES (psessionid,
|
||||
'maillog',
|
||||
'Geregistreerd onder melding ' || v_melding_key);
|
||||
ELSE
|
||||
INSERT INTO fac_result (fac_result_sessionid,
|
||||
fac_result_naam,
|
||||
fac_result_waarde)
|
||||
VALUES (psessionid,
|
||||
'maillog',
|
||||
'Melding bestaat al ' || v_melding_key);
|
||||
|
||||
v_error := 1;
|
||||
v_errormsg := 'Melding bestaat al ' || v_melding_key;
|
||||
END IF;
|
||||
ELSE
|
||||
IF v_count = 1
|
||||
THEN
|
||||
v_errormsg := '(0x1482)';
|
||||
|
||||
SELECT mld_melding_status
|
||||
INTO v_melding_status
|
||||
FROM mld_melding
|
||||
WHERE mld_melding_key = v_melding_key;
|
||||
|
||||
-- Als status is nieuw of te accepteren dan eerst op geaccepteerd zetten.
|
||||
IF v_melding_status = 2 OR v_melding_status = 3
|
||||
THEN
|
||||
-- melding op geaccepteerd zetten.
|
||||
mld.setmeldingstatus (v_melding_key, 4, v_sender);
|
||||
END IF;
|
||||
|
||||
-- nu de status op afgemeld zetten.
|
||||
mld.setmeldingstatus (v_melding_key, 5, v_sender);
|
||||
|
||||
fac.backtrackaction ('MLDAFM',
|
||||
v_melding_key,
|
||||
v_sender,
|
||||
SYSDATE); -- Aangepast in #86889. Dit was eerst v_date, maar daarmee werd in de tracking eerst afgemeld en pas dan MLDNEW/MLDACP
|
||||
|
||||
-- Vul het kenmerk Bedrijf (malus) met de waarde van Homij uit de eigen tabel
|
||||
mld.upsertmeldingkenmerk (61, v_melding_key, 182);
|
||||
|
||||
INSERT INTO fac_result (fac_result_sessionid,
|
||||
fac_result_naam,
|
||||
fac_result_waarde)
|
||||
VALUES (psessionid,
|
||||
'maillog',
|
||||
'Melding '
|
||||
|| v_melding_key
|
||||
|| ' is afgemeld, aantal gevonden '
|
||||
|| v_count
|
||||
|| ' Details: '
|
||||
|| v_cabinet
|
||||
|| ';'
|
||||
|| v_meldingstekst);
|
||||
ELSE
|
||||
INSERT INTO fac_result (fac_result_sessionid,
|
||||
fac_result_naam,
|
||||
fac_result_waarde)
|
||||
VALUES (psessionid,
|
||||
'maillog',
|
||||
'Melding niet uniek gevonden, aantal gevonden '
|
||||
|| v_count
|
||||
|| ' Details: '
|
||||
|| v_cabinet
|
||||
|| ';'
|
||||
|| v_meldingstekst);
|
||||
|
||||
v_error := 1;
|
||||
v_errormsg :=
|
||||
'Melding niet uniek gevonden, aantal gevonden '
|
||||
|| v_count
|
||||
|| ' Details: '
|
||||
|| v_cabinet
|
||||
|| ';'
|
||||
|| v_meldingstekst;
|
||||
END IF;
|
||||
END IF;
|
||||
END IF;
|
||||
EXCEPTION
|
||||
WHEN OTHERS
|
||||
THEN
|
||||
@@ -778,7 +1026,7 @@ AS
|
||||
-- in periode 2024Q4 vallen
|
||||
CREATE OR REPLACE VIEW hgcu_v_monitoring_history
|
||||
AS
|
||||
SELECT REPLACE(TO_CHAR(TRUNC(DECODE(TRUNC(export_datum), TO_DATE('20250611','yyyymmdd'), TO_DATE('20250101','yyyymmdd'), export_datum), 'Q')-1, 'yyyy-q'), '-', 'Q') periode,
|
||||
SELECT periode,
|
||||
export_datum,
|
||||
melding_key,
|
||||
afw,
|
||||
@@ -968,7 +1216,9 @@ BEGIN
|
||||
prs_bedrijf_naam,
|
||||
bedrijf_malus,
|
||||
klant_melding,
|
||||
export_datum)
|
||||
export_datum,
|
||||
prefix,
|
||||
periode)
|
||||
VALUES (rec.mld_melding_key,
|
||||
rec.afw,
|
||||
rec.indult,
|
||||
@@ -1006,20 +1256,47 @@ BEGIN
|
||||
rec.bedrijf_naam,
|
||||
rec.bedrijf_malus,
|
||||
rec.klant_melding,
|
||||
v_exportdate);
|
||||
v_exportdate,
|
||||
rec.prefix,
|
||||
REPLACE(TO_CHAR(TRUNC (SYSDATE, 'Q') -1, 'YYYY-Q'), '-', 'Q'));
|
||||
END;
|
||||
END;
|
||||
END LOOP;
|
||||
|
||||
INSERT INTO hgcu_monitoring (melding_key, indult, export_datum)
|
||||
SELECT mld_melding_key, DECODE(mld_melding_indult, 1, 'Ja', 'Nee'), v_exportdate
|
||||
FROM mld_melding m
|
||||
WHERE m.mld_melding_status = 6 -- Historie
|
||||
AND fac.gettrackingdate ('MLDAFM', m.mld_melding_key) < TRUNC (SYSDATE, 'Q')
|
||||
-- AND fac.gettrackingdate ('MLDAFM', m.mld_melding_key) < TO_DATE('20250401', 'YYYYMMDD') *******
|
||||
AND m.mld_melding_key NOT IN (SELECT nm.melding_key
|
||||
FROM hgcu_monitoring nm
|
||||
WHERE nm.melding_key IS NOT NULL);
|
||||
INSERT INTO hgcu_monitoring (melding_key, indult, export_datum, prefix, periode, klant_melding, tht, wht, bedrijf_malus )
|
||||
SELECT mld_melding_key,
|
||||
DECODE(mld_melding_indult, 1, 'Ja', 'Nee'),
|
||||
v_exportdate,
|
||||
sd.ins_srtdiscipline_prefix prefix,
|
||||
REPLACE(TO_CHAR(TRUNC (SYSDATE, 'Q') -1, 'YYYY-Q'), '-', 'Q') periode,
|
||||
hgcu.klant_melding (m.mld_melding_key),
|
||||
m.mld_melding_t_uitvoertijd.tijdsduur tht,
|
||||
(mld.getactualuitvoer ( -- verschil tussen t_van en gereed/SYSDATE is de maximale - actuele - doorlooptijd!
|
||||
m.mld_melding_datum,
|
||||
fac.gettrackingdate ('MLDAFM', m.mld_melding_key),
|
||||
m.mld_stdmelding_key,
|
||||
m.mld_melding_spoed,
|
||||
m.mld_alg_onroerendgoed_keys,
|
||||
NULL)).tijdsduur wht,
|
||||
(SELECT ud.fac_usrdata_omschr bedrijf_malus
|
||||
FROM fac_usrdata ud, mld_kenmerkmelding km, mld_kenmerk k
|
||||
WHERE km.mld_kenmerk_key = k.mld_kenmerk_key
|
||||
AND k.mld_srtkenmerk_key = 1 -- bedrijf_malus
|
||||
AND FAC.safe_to_number (km.mld_kenmerkmelding_waarde) = ud.fac_usrdata_key
|
||||
AND km.mld_melding_key = m.mld_melding_key) bedrijf_malus
|
||||
FROM mld_melding m,
|
||||
mld_stdmelding std,
|
||||
ins_tab_discipline d,
|
||||
ins_srtdiscipline sd
|
||||
WHERE m.mld_stdmelding_key = std.mld_stdmelding_key
|
||||
AND std.mld_ins_discipline_key = d.ins_discipline_key
|
||||
AND d.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
|
||||
AND m.mld_melding_status = 6 -- Historie
|
||||
AND fac.gettrackingdate ('MLDAFM', m.mld_melding_key) < TRUNC (SYSDATE, 'Q')
|
||||
-- AND fac.gettrackingdate ('MLDAFM', m.mld_melding_key) < TO_DATE('20250401', 'YYYYMMDD') *******
|
||||
AND m.mld_melding_key NOT IN (SELECT nm.melding_key
|
||||
FROM hgcu_monitoring nm
|
||||
WHERE nm.melding_key IS NOT NULL);
|
||||
|
||||
COMMIT;
|
||||
|
||||
@@ -1319,6 +1596,38 @@ AS
|
||||
NULL opdrachtgever
|
||||
FROM hgcu_monitoring;
|
||||
|
||||
CREATE OR REPLACE VIEW hgcu_v_rap_gbs_storing_def
|
||||
AS
|
||||
SELECT fac_usrdata_code gbs_melding,
|
||||
sd.ins_srtdiscipline_omschrijving vakgroeptype,
|
||||
d.ins_discipline_omschrijving vakgroep,
|
||||
mld_stdmelding_omschrijving melding,
|
||||
alg_ruimte_nr ruimte
|
||||
FROM fac_usrdata ud,
|
||||
mld_stdmelding std,
|
||||
mld_discipline d,
|
||||
ins_srtdiscipline sd,
|
||||
alg_v_aanwezigruimte r
|
||||
WHERE ud.fac_usrdata_verwijder IS NULL
|
||||
AND ud.fac_usrtab_key = 81
|
||||
AND TRUNC (ud.fac_usrdata_prijs) = std.mld_stdmelding_key
|
||||
AND std.mld_ins_discipline_key = d.ins_discipline_key
|
||||
AND d.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
|
||||
AND ud.fac_usrdata_omschr = r.alg_ruimte_nr(+);
|
||||
|
||||
-- Rapport om de sychronisatie status van de koppeling op de portal te tonen.
|
||||
CREATE OR REPLACE VIEW hgcu_v_rap_gbs_status_info
|
||||
(
|
||||
item_key,
|
||||
item,
|
||||
datum
|
||||
)
|
||||
AS
|
||||
SELECT fac_usrdata_key, fac_usrdata_code, fac_usrdata_vervaldatum
|
||||
FROM fac_usrdata
|
||||
WHERE fac_usrtab_key = 61;
|
||||
|
||||
|
||||
CREATE OR REPLACE PROCEDURE hgcu_daily
|
||||
AUTHID CURRENT_USER -- ivm create table rechten voor tabelizer
|
||||
AS
|
||||
|
||||
Reference in New Issue
Block a user