CSUN#51570 -- Vakgroep/melding automatisch invullen via koppeling

svn path=/Customer/trunk/; revision=36602
This commit is contained in:
Arthur Egberink
2018-01-16 15:17:28 +00:00
parent d3c3f5b17d
commit 75edb82ce0

View File

@@ -678,18 +678,33 @@ AS
RETURN (v_str);
END;
-- Hook functie die na het invoeren van een melding aangeroepen wordt.
PROCEDURE mld_after_insert (p_key IN NUMBER)
AS
v_melding_status NUMBER;
v_locatie_key NUMBER;
v_client NUMBER; -- klantcode
v_perslid_key NUMBER; -- melder
v_locatie_code VARCHAR2(100);
v_gebouw_code VARCHAR2(100);
v_melding_status NUMBER;
v_locatie_key NUMBER;
v_client NUMBER; -- klantcode
v_perslid_key NUMBER; -- melder
v_stdmelding_key_old NUMBER;
v_stdmelding_key_new NUMBER;
v_melding_oms_old VARCHAR2(100);
v_melding_oms_new VARCHAR2(100);
v_mld_uitvoertijd_old mld_stdmelding.mld_stdmelding_t_uitvoertijd%TYPE;
v_mld_accepttijd_old mld_stdmelding.mld_stdmelding_t_accepttijd%TYPE;
v_mld_uitvoertijd_new mld_stdmelding.mld_stdmelding_t_uitvoertijd%TYPE;
v_mld_accepttijd_new mld_stdmelding.mld_stdmelding_t_accepttijd%TYPE;
v_melding_einddatum_std DATE;
v_melding_acceptdatum_std DATE;
v_melding_einddatum_old DATE;
v_melding_cat VARCHAR2(400);
v_locatie_code VARCHAR2(100);
v_gebouw_code VARCHAR2(100);
v_errormsg VARCHAR2(100);
BEGIN
v_errormsg := 'Ophalen meldinggegevens';
BEGIN
SELECT mld_melding_status, mld_alg_locatie_key, prs_perslid_key
INTO v_melding_status, v_locatie_key, v_perslid_key
SELECT mld_melding_status, mld_alg_locatie_key, prs_perslid_key, mld_stdmelding_key, mld_melding_einddatum
INTO v_melding_status, v_locatie_key, v_perslid_key, v_stdmelding_key_old, v_melding_einddatum_old
FROM mld_melding
WHERE mld_melding_key = p_key;
@@ -703,6 +718,10 @@ AS
v_client := NULL;
END;
-- Nu gaan we kijken of we de melding aan een locatie kunnen koppelen
-- Hiervoor hebben we een locatiecode en gebouwcode bij de mail melding
-- Bij sommige klanten is de gebouwcode gevuld en bij sommige de locatiecode
v_errormsg := 'Bepalen locatie';
SELECT mld_kenmerkmelding_waarde
INTO v_locatie_code
FROM ( SELECT mld_kenmerkmelding_waarde, mld_melding_key
@@ -795,7 +814,80 @@ AS
INSERT INTO mld_melding_note (mld_melding_key,
prs_perslid_key,
mld_melding_note_omschrijving)
VALUES (p_key, 4, 'Locatie kan niet gekoppeld worden: ' || v_locatie_code || '-' || v_gebouw_code);
VALUES (p_key, 4, v_errormsg || ': ' || v_locatie_code || '-' || v_gebouw_code);
END;
END IF;
-- Nu gaan we kijken of we ook de stdmelding kunnen invullen. Normaal staat deze op mail.
-- Via de koppeling wordt het kenmerk meldingcategorie (key 361) gevuld. Dit is de tekst
-- zoals de klant de melding gekwalificeerd heeft. In de eigen tabel 'Map klantmelding' wordt deze
-- vertaald naar een stdmelding_key.
v_errormsg := 'Bepalen stdmelding';
SELECT MAX(mld_kenmerkmelding_waarde)
INTO v_melding_cat
FROM mld_kenmerkmelding km
WHERE km.mld_melding_key = p_key
AND km.mld_kenmerk_key = 361;
IF v_melding_cat IS NOT NULL
THEN
BEGIN
v_errormsg := 'Bepalen stdmelding (zoek in eigen tabel)';
SELECT fac_usrdata_volgnr
INTO v_stdmelding_key_new
FROM fac_usrdata ud
WHERE ud.fac_usrdata_parentkey = v_client
AND ud.fac_usrtab_key = 101
AND UPPER(ud.fac_usrdata_omschr) = UPPER(SUBSTR(v_melding_cat,1,60));
IF v_stdmelding_key_new <> v_stdmelding_key_old
THEN
v_errormsg := 'Bepalen stdmelding (ophalen omschrijving nieuwe melding)';
SELECT ins_discipline_omschrijving || '/' || mld_stdmelding_omschrijving, mld_stdmelding_t_uitvoertijd, mld_stdmelding_t_accepttijd
INTO v_melding_oms_new, v_mld_uitvoertijd_new, v_mld_accepttijd_new
FROM mld_stdmelding std,
ins_tab_discipline d
WHERE std.mld_stdmelding_key = v_stdmelding_key_new
AND std.mld_ins_discipline_key = d.ins_discipline_key;
v_errormsg := 'Bepalen stdmelding (ophalen omschrijving oude melding)';
SELECT ins_discipline_omschrijving || '/' || mld_stdmelding_omschrijving, mld_stdmelding_t_uitvoertijd, mld_stdmelding_t_accepttijd
INTO v_melding_oms_old, v_mld_uitvoertijd_old, v_mld_accepttijd_old
FROM mld_stdmelding std,
ins_tab_discipline d
WHERE std.mld_stdmelding_key = v_stdmelding_key_old
AND std.mld_ins_discipline_key = d.ins_discipline_key;
v_errormsg := 'Bepalen stdmelding (pas stdmeldingkey aan)';
UPDATE mld_melding SET mld_stdmelding_key = v_stdmelding_key_new,
mld_melding_t_uitvoertijd = v_mld_uitvoertijd_new,
mld_melding_t_accepttijd = v_mld_accepttijd_new
WHERE mld_melding_key = p_key;
v_errormsg := 'Bepalen stdmelding (bepaal einddatum en accept)';
SELECT mld.geteinddatum(mld_melding_key), mld.getacceptdatum (mld_melding_datum, mld_stdmelding_key, NULL)
INTO v_melding_einddatum_std, v_melding_acceptdatum_std
FROM mld_melding
WHERE mld_melding_key = p_key;
v_errormsg := 'Bepalen stdmelding (pas std tijden aan)';
UPDATE mld_melding SET mld_melding_einddatum_std = v_melding_einddatum_std,
mld_melding_acceptdatum_std = v_melding_acceptdatum_std
WHERE mld_melding_key = p_key;
v_errormsg := 'Bepalen stdmelding (update tracking)';
fac.trackaction('MLDUPD', p_key, 4, NULL, 'Melding M' || p_key || ' (' || v_melding_oms_new ||') is gewijzigd' || CHR(10) ||
'Melding: ' || v_melding_oms_old || ' --> ' || v_melding_oms_new || CHR(10) ||
'Gereed: ' || TO_CHAR(v_melding_einddatum_old, 'dd-mm-yyyy hh24:mi') || ' --> ' || TO_CHAR(v_melding_einddatum_std, 'dd-mm-yyyy hh24:mi'));
END IF;
EXCEPTION
WHEN OTHERS
THEN
-- Waarschijnlijk iets fout gegaan in de configuratie. Locatie wordt niet aangepast.
INSERT INTO mld_melding_note (mld_melding_key,
prs_perslid_key,
mld_melding_note_omschrijving)
VALUES (p_key, 4, v_errormsg || ': ' || v_locatie_code || '-' || v_gebouw_code || '-' || v_melding_cat);
END;
END IF;
EXCEPTION
@@ -805,7 +897,7 @@ AS
INSERT INTO mld_melding_note (mld_melding_key,
prs_perslid_key,
mld_melding_note_omschrijving)
VALUES (p_key, 4, 'Locatie kan niet gekoppeld worden: ' || v_locatie_code || '-' || v_gebouw_code);
VALUES (p_key, 4, v_errormsg || ': ' || v_locatie_code || '-' || v_gebouw_code || '-' || v_melding_cat);
END;
END;
END;