CSUN#51570 -- Vakgroep/melding automatisch invullen via koppeling
svn path=/Customer/trunk/; revision=36602
This commit is contained in:
112
CSUN/CSUN.sql
112
CSUN/CSUN.sql
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user