CVGZ#62678 -- Opdracht niet automatisch aangemaakt vanuit workflow - procedure autoorder voor inrichten
svn path=/Customer/trunk/; revision=47106
This commit is contained in:
135
AA/CVGZ/cvgz.sql
135
AA/CVGZ/cvgz.sql
@@ -485,6 +485,141 @@ SELECT NULL,
|
||||
FROM fac_notificatie_job
|
||||
WHERE fac_notificatie_job_view = 'CVGZ_V_NOTI_LEIDER_MLDNEW') ;
|
||||
|
||||
-- Procedure uit AAIT gehaald.
|
||||
-- Export om opdrachten aan te maken bij meldingen met auto-order die onderdeel
|
||||
-- uitmaken van een workflow. Bijkomend voordeel is dat deze functie ook de
|
||||
-- opdrachten aanmaakt bij meldingen met auto-order waarbij abusievelijk geen
|
||||
-- opdracht aangemaakt is.
|
||||
CREATE OR REPLACE PROCEDURE cvgz_export_autoorder (
|
||||
p_applname IN VARCHAR2,
|
||||
p_applrun IN VARCHAR2,
|
||||
p_filedir IN VARCHAR2,
|
||||
p_filename IN VARCHAR2
|
||||
)
|
||||
AS
|
||||
CURSOR c
|
||||
IS
|
||||
SELECT m.mld_melding_key,
|
||||
m.prs_kostenplaats_key,
|
||||
m.mld_melding_omschrijving,
|
||||
MAX (bdl.prs_bedrijf_key) prs_bedrijf_key,
|
||||
std.mld_typeopdr_key,
|
||||
m.mld_melding_einddatum,
|
||||
m.mld_melding_status
|
||||
FROM mld_melding m,
|
||||
mld_stdmelding std,
|
||||
prs_dienst d,
|
||||
prs_bedrijfdienstlocatie bdl
|
||||
WHERE m.mld_melding_status IN (2, 3, 4) -- Ingevoerd, Ingezien, Geaccepteerd
|
||||
AND m.mld_stdmelding_key = std.mld_stdmelding_key
|
||||
AND std.mld_stdmelding_autoorder = 1
|
||||
AND std.prs_dienst_key = bdl.prs_dienst_key
|
||||
AND mld_melding_datum > SYSDATE - 1 -- voorkom dat oude meldingen ineens verstuurd gaan worden
|
||||
AND mld_melding_datum < SYSDATE - (1/96) -- voorkom dat meldingen die nog bezig zijn met aanmaken al aangepast worden.
|
||||
AND std.mld_typeopdr_key IS NOT NULL
|
||||
AND NOT EXISTS (SELECT mld_melding_key
|
||||
FROM mld_opdr o
|
||||
WHERE mld_melding_key = m.mld_melding_key)
|
||||
GROUP BY mld_melding_key,
|
||||
prs_kostenplaats_key,
|
||||
mld_melding_omschrijving,
|
||||
mld_typeopdr_key,
|
||||
mld_melding_einddatum,
|
||||
mld_melding_status;
|
||||
|
||||
CURSOR c_flex (c_melding_key NUMBER)
|
||||
IS
|
||||
SELECT sk.mld_srtkenmerk_kenmerktype,
|
||||
sk.mld_srtkenmerk_omschrijving,
|
||||
DECODE (
|
||||
sk.mld_srtkenmerk_kenmerktype,
|
||||
'S',
|
||||
fac.getdomeinwaarde (sk.fac_kenmerkdomein_key,
|
||||
mld_kenmerkmelding_waarde),
|
||||
'R',
|
||||
fac.getdomeinwaarde (sk.fac_kenmerkdomein_key,
|
||||
mld_kenmerkmelding_waarde),
|
||||
mld_kenmerkmelding_waarde) waarde
|
||||
FROM mld_kenmerkmelding km, mld_kenmerk k, mld_srtkenmerk sk
|
||||
WHERE mld_melding_key = c_melding_key
|
||||
AND km.mld_kenmerk_key = k.mld_kenmerk_key
|
||||
AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
|
||||
ORDER BY k.mld_kenmerk_volgnummer;
|
||||
|
||||
v_opdr_key NUMBER;
|
||||
v_notificatie_code VARCHAR2(20);
|
||||
v_mld_opdr_bedrijfopdr_volgnr NUMBER;
|
||||
v_melding_omschrijving VARCHAR2(4000);
|
||||
BEGIN
|
||||
|
||||
|
||||
FOR rec IN c
|
||||
LOOP
|
||||
BEGIN
|
||||
-- eerst even de status naar geaccepteerd zetten.
|
||||
IF rec.mld_melding_status <> 4 THEN
|
||||
MLD.setmeldingstatus (rec.mld_melding_key, 4, 4); -- Geaccepteerd, Facilitor
|
||||
END IF;
|
||||
|
||||
v_melding_omschrijving := NULL;
|
||||
FOR rec_flex IN c_flex(rec.mld_melding_key)
|
||||
LOOP
|
||||
BEGIN
|
||||
v_melding_omschrijving := v_melding_omschrijving || rec_flex.mld_srtkenmerk_omschrijving || ': ' || rec_flex.waarde || chr(10);
|
||||
END;
|
||||
END LOOP;
|
||||
|
||||
v_mld_opdr_bedrijfopdr_volgnr := mld.BepaalOpdrMeldingVolgnr (rec.mld_melding_key);
|
||||
|
||||
INSERT INTO mld_opdr (mld_melding_key
|
||||
, prs_kostenplaats_key
|
||||
, mld_typeopdr_key
|
||||
, prs_perslid_key
|
||||
, mld_uitvoerende_keys
|
||||
, mld_opdr_datumbegin
|
||||
, mld_opdr_einddatum
|
||||
, mld_opdr_module
|
||||
, mld_opdr_omschrijving
|
||||
, mld_opdr_bedrijfopdr_volgnr
|
||||
, mld_opdr_teverzenden)
|
||||
VALUES ( rec.mld_melding_key
|
||||
, rec.prs_kostenplaats_key
|
||||
, rec.mld_typeopdr_key
|
||||
, 4 -- facilitor
|
||||
, rec.prs_bedrijf_key
|
||||
, SYSDATE
|
||||
, rec.mld_melding_einddatum
|
||||
, 'MLD'
|
||||
, v_melding_omschrijving || rec.mld_melding_omschrijving
|
||||
, v_mld_opdr_bedrijfopdr_volgnr
|
||||
, 1)
|
||||
RETURNING mld_opdr_key INTO v_opdr_key;
|
||||
|
||||
MLD.setopdrachtstatus(v_opdr_key , 5, 4); -- uitgegeven, Facilitor
|
||||
|
||||
SELECT DECODE (u.type, 'P', 'ORDMLI', 'ORDMLE')
|
||||
INTO v_notificatie_code
|
||||
FROM mld_v_uitvoerende u
|
||||
WHERE u.mld_uitvoerende_key = rec.prs_bedrijf_key;
|
||||
|
||||
FAC.trackaction(v_notificatie_code, v_opdr_key, 4, NULL, NULL);
|
||||
|
||||
-- update melding status
|
||||
MLD.updatemeldingstatus (rec.mld_melding_key, 0, 4); -- facilitor
|
||||
|
||||
EXCEPTION
|
||||
WHEN OTHERS
|
||||
THEN
|
||||
fac.writelog (p_applname
|
||||
, 'E'
|
||||
, 'OTHERS (error ' || SQLCODE || '/' || SUBSTR (SQLERRM, 1, 100) || ')'
|
||||
, 'Fout bij aanmaken opdracht: ' || rec.mld_melding_key);
|
||||
|
||||
END;
|
||||
END LOOP;
|
||||
END cvgz_export_autoorder;
|
||||
/
|
||||
|
||||
|
||||
------ payload end ------
|
||||
|
||||
|
||||
Reference in New Issue
Block a user