SCHG#87578 -- Tijdelijke cust ctr.melding_voor_geplande_taken_maken omdat er op huidige nog geen taak-meldingen worden aangemaakt voor Persoons en Terrein gebonden objecten
svn path=/Customer/trunk/; revision=67928
This commit is contained in:
234
SCHG/schg.sql
234
SCHG/schg.sql
@@ -2271,6 +2271,237 @@ SELECT mld_uitvoerende_key,
|
||||
FROM schg_v_rap_opdrachten
|
||||
ORDER BY geplande_aanvang_b ;
|
||||
|
||||
-- TIJDELIJK - ZIE SCHG#87578
|
||||
--- ter vervanging van ctr.melding_voor_geplande_taken_maken
|
||||
--- om ook objecten gekoppeld aan persoon en terrein mee te krijgen
|
||||
--- ps. op basis plandatum en nog niet berekend xcp-record first time..
|
||||
|
||||
-- Uit ctr_pac.src
|
||||
-- Automatische starten en ter uitvoering zetten van taken die voor vandaag of eerder zijn gepland (via plandatum of berekend).
|
||||
-- Er wordt bij de taak ook direct een melding aangemaakt.
|
||||
-- voorwaarden: 1) Er is een stdmelding gedefinieerd bij de periodieke taak.
|
||||
-- 2) Alleen periodieke taken, GEEN mjob taken.
|
||||
CREATE OR REPLACE PROCEDURE schg_ctr_start
|
||||
AS
|
||||
c_applname VARCHAR2 (50) := 'SCHG_MELDING_VOOR_GEPLANDE_TAKEN_MAKEN';
|
||||
v_errormsg VARCHAR2 (1000);
|
||||
oracle_err_num NUMBER;
|
||||
oracle_err_mes VARCHAR2 (200);
|
||||
v_aanduiding VARCHAR2 (200);
|
||||
v_count_tot NUMBER (10);
|
||||
|
||||
l_prs_perslid_key prs_perslid.prs_perslid_key%TYPE;
|
||||
l_new_deelsrtcontrole_key ins_deelsrtcontrole.ins_deelsrtcontrole_key%TYPE;
|
||||
l_deelsrtcontrole_key ins_deelsrtcontrole.ins_deelsrtcontrole_key%TYPE;
|
||||
mjb_approvedmld_desc fac_setting.fac_setting_default%TYPE;
|
||||
mld_subject VARCHAR2 (200);
|
||||
|
||||
CURSOR c_taak_naar_ter_uitvoering
|
||||
IS
|
||||
SELECT idsc.ins_deelsrtcontrole_key,
|
||||
idsc.ins_deel_key,
|
||||
idsc.ins_srtcontrole_key,
|
||||
idsc.ins_scenario_key,
|
||||
xcp.mld_stdmelding_key,
|
||||
sm.mld_stdmelding_default_disc,
|
||||
sm.alg_onrgoed_niveau, -- H = Hide NULL = geen L,G,V,R = verplicht tot dat niveau
|
||||
d.ins_alg_ruimte_type, -- R = Ruimte T = Terrein P = Persoon A = Afdeling
|
||||
d.ins_alg_ruimte_key, -- key behorende bij type
|
||||
COALESCE(xcp.prs_kostenplaats_key,
|
||||
(SELECT prs_kostenplaats_key
|
||||
FROM alg_gebouw
|
||||
WHERE alg_gebouw_key = alg.alg_gebouw_key)) prs_kostenplaats_key,
|
||||
xcp.ins_srtcontrole_omschrijving,
|
||||
xcp.ins_srtcontrole_info,
|
||||
isd.ins_srtdeel_omschrijving,
|
||||
alg.alg_locatie_key,
|
||||
alg.alg_onroerendgoed_keys,
|
||||
CASE
|
||||
WHEN (SELECT COUNT(ins_deelsrtcontrole_key)
|
||||
FROM ins_deelsrtcontrole idsc2
|
||||
WHERE idsc2.ins_deel_key = idsc.ins_deel_key
|
||||
AND idsc2.ins_srtcontrole_key = idsc.ins_srtcontrole_key
|
||||
AND idsc2.ins_scenario_key = idsc.ins_scenario_key
|
||||
AND idsc2.ins_deelsrtcontrole_status = 6) >= 1
|
||||
THEN
|
||||
ins.nextcyclusdate(idsc.ins_deel_key, idsc.ins_srtcontrole_key, 1, 1)
|
||||
ELSE NULL
|
||||
END nextdate
|
||||
FROM ins_deelsrtcontrole idsc,
|
||||
ins_v_defined_inspect_xcp xcp,
|
||||
ins_deel d,
|
||||
ins_srtdeel isd,
|
||||
alg_v_allonroerendgoed alg,
|
||||
mld_stdmelding sm
|
||||
WHERE xcp.ins_srtcontrole_key = idsc.ins_srtcontrole_key
|
||||
AND xcp.ins_deel_key = idsc.ins_deel_key
|
||||
AND xcp.ins_scenario_key = idsc.ins_scenario_key
|
||||
AND xcp.mld_stdmelding_key = sm.mld_stdmelding_key
|
||||
AND d.ins_deel_key = idsc.ins_deel_key
|
||||
AND d.ins_srtdeel_key = isd.ins_srtdeel_key
|
||||
AND d.ins_alg_ruimte_key =
|
||||
CASE WHEN d.ins_alg_ruimte_type IN ('T', 'R')
|
||||
THEN alg.alg_onroerendgoed_keys(+)
|
||||
END
|
||||
AND TRUNC(idsc.ins_deelsrtcontrole_plandatum, 'dd')-1 <= TRUNC(SYSDATE, 'dd') -- Ik ga voor SCHG 1 dag eerder de taak-melding aanmaken zodat deze niet dubbel met de core aangemaakt wordt..
|
||||
AND idsc.ins_scenario_key = 1
|
||||
AND idsc.ins_deelsrtcontrole_status = 0
|
||||
AND xcp.ctr_ismjob = 0
|
||||
AND xcp.mld_stdmelding_key IS NOT NULL
|
||||
UNION
|
||||
-- BEREKEND - MET HISTORIE
|
||||
SELECT NULL ins_deelsrtcontrole_key,
|
||||
idsc.ins_deel_key,
|
||||
idsc.ins_srtcontrole_key,
|
||||
idsc.ins_scenario_key,
|
||||
xcp.mld_stdmelding_key,
|
||||
sm.mld_stdmelding_default_disc,
|
||||
sm.alg_onrgoed_niveau, -- H = Hide NULL = geen verbergen L,G,V,R = verplicht tot dat niveau
|
||||
d.ins_alg_ruimte_type, -- R = Ruimte T = Terrein P = Persoon A = Afdeling
|
||||
d.ins_alg_ruimte_key, -- key behorende bij type
|
||||
COALESCE(xcp.prs_kostenplaats_key,
|
||||
(SELECT prs_kostenplaats_key
|
||||
FROM alg_gebouw
|
||||
WHERE alg_gebouw_key = alg.alg_gebouw_key)) prs_kostenplaats_key,
|
||||
xcp.ins_srtcontrole_omschrijving,
|
||||
xcp.ins_srtcontrole_info,
|
||||
isd.ins_srtdeel_omschrijving,
|
||||
alg.alg_locatie_key,
|
||||
alg.alg_onroerendgoed_keys,
|
||||
CASE
|
||||
WHEN (SELECT COUNT(ins_deelsrtcontrole_key)
|
||||
FROM ins_deelsrtcontrole idsc2
|
||||
WHERE idsc2.ins_deel_key = idsc.ins_deel_key
|
||||
AND idsc2.ins_srtcontrole_key = idsc.ins_srtcontrole_key
|
||||
AND idsc2.ins_scenario_key = idsc.ins_scenario_key
|
||||
AND idsc2.ins_deelsrtcontrole_status = 6) >= 1
|
||||
THEN
|
||||
ins.nextcyclusdate(idsc.ins_deel_key, idsc.ins_srtcontrole_key, 1, 1)
|
||||
ELSE NULL
|
||||
END nextdate
|
||||
FROM ins_deelsrtcontrole idsc,
|
||||
ins_v_defined_inspect_xcp xcp,
|
||||
ins_deel d,
|
||||
ins_srtdeel isd,
|
||||
alg_v_allonroerendgoed alg,
|
||||
mld_stdmelding sm
|
||||
WHERE xcp.ins_srtcontrole_key = idsc.ins_srtcontrole_key
|
||||
AND xcp.ins_deel_key = idsc.ins_deel_key
|
||||
AND xcp.ins_scenario_key = idsc.ins_scenario_key
|
||||
AND xcp.mld_stdmelding_key = sm.mld_stdmelding_key
|
||||
AND d.ins_deel_key = idsc.ins_deel_key
|
||||
AND d.ins_srtdeel_key = isd.ins_srtdeel_key
|
||||
AND d.ins_alg_ruimte_key =
|
||||
CASE WHEN d.ins_alg_ruimte_type IN ('T', 'R')
|
||||
THEN alg.alg_onroerendgoed_keys(+)
|
||||
END
|
||||
AND TRUNC(ins.nextcyclusdate(idsc.ins_deel_key, idsc.ins_srtcontrole_key, 1, 1), 'dd')-1 <= TRUNC(SYSDATE, 'dd') -- Ik ga voor SCHG 1 dag eerder de taak-melding aanmaken zodat deze niet dubbel met de core aangemaakt wordt..
|
||||
AND idsc.ins_scenario_key = 1
|
||||
AND idsc.ins_deelsrtcontrole_key = (SELECT MAX(ins_deelsrtcontrole_key)
|
||||
FROM ins_deelsrtcontrole idsc2
|
||||
WHERE idsc2.ins_deel_key = idsc.ins_deel_key
|
||||
AND idsc2.ins_srtcontrole_key = idsc.ins_srtcontrole_key
|
||||
AND idsc2.ins_scenario_key = idsc.ins_scenario_key
|
||||
AND idsc2.ins_deelsrtcontrole_status = 6)
|
||||
AND (SELECT MAX(ins_deelsrtcontrole_key)
|
||||
FROM ins_deelsrtcontrole idsc2
|
||||
WHERE idsc2.ins_deel_key = idsc.ins_deel_key
|
||||
AND idsc2.ins_srtcontrole_key = idsc.ins_srtcontrole_key
|
||||
AND idsc2.ins_scenario_key = idsc.ins_scenario_key
|
||||
AND idsc2.ins_deelsrtcontrole_status != 6) IS NULL -- Er mag geen lopende taak aanwezig zijn.
|
||||
AND xcp.ctr_ismjob = 0
|
||||
AND xcp.mld_stdmelding_key IS NOT NULL
|
||||
-- BREKEND - ZONDER HISTORIE
|
||||
-- UNION
|
||||
;
|
||||
|
||||
BEGIN
|
||||
v_count_tot := 0;
|
||||
FOR rec IN c_taak_naar_ter_uitvoering
|
||||
LOOP
|
||||
BEGIN
|
||||
v_errormsg := 'Fout starten taak';
|
||||
v_aanduiding := '[' || TO_CHAR (rec.ins_deel_key) || '/' || TO_CHAR (rec.ins_srtcontrole_key) || '] ';
|
||||
|
||||
BEGIN
|
||||
SELECT prs_perslid_key
|
||||
INTO l_prs_perslid_key
|
||||
FROM prs_perslid
|
||||
WHERE prs_perslid_oslogin = '_SYSTEEM' AND prs_perslid_verwijder IS NULL;
|
||||
EXCEPTION
|
||||
WHEN NO_DATA_FOUND
|
||||
THEN
|
||||
fac.putsystemnotification ('Invalid configuration: missing _SYSTEEM user', 1);
|
||||
END;
|
||||
|
||||
-- Stap 1 is de taak starten.
|
||||
IF rec.ins_deelsrtcontrole_key IS NULL
|
||||
THEN
|
||||
SELECT ins_s_ins_deelsrtcontrole_key.NEXTVAL INTO l_new_deelsrtcontrole_key FROM DUAL;
|
||||
|
||||
INSERT INTO ins_deelsrtcontrole (ins_deelsrtcontrole_key,
|
||||
ins_deel_key,
|
||||
ins_srtcontrole_key,
|
||||
ins_deelsrtcontrole_status,
|
||||
prs_perslid_key,
|
||||
ins_deelsrtcontrole_datum_org)
|
||||
VALUES (l_new_deelsrtcontrole_key,
|
||||
rec.ins_deel_key,
|
||||
rec.ins_srtcontrole_key,
|
||||
2,
|
||||
l_prs_perslid_key,
|
||||
rec.nextdate);
|
||||
l_deelsrtcontrole_key := l_new_deelsrtcontrole_key;
|
||||
ELSE
|
||||
l_deelsrtcontrole_key := rec.ins_deelsrtcontrole_key;
|
||||
-- Het ins_deelsrtcontrole record bestaat al omdat de taak al is ingepland.
|
||||
END IF;
|
||||
|
||||
ins.setinspectstatus(l_deelsrtcontrole_key, 2, NULL);
|
||||
|
||||
-- Stap 2 is de taak ter uitvoering brengen door een melding aan te maken en deze te koppelen aan de gestarte taak.
|
||||
mjb_approvedmld_desc := fac.getsetting('mjb_approvedmelding_description');
|
||||
|
||||
IF mjb_approvedmld_desc = 2
|
||||
THEN
|
||||
mld_subject := rec.ins_srtcontrole_omschrijving;
|
||||
ELSIF mjb_approvedmld_desc = 3
|
||||
THEN
|
||||
mld_subject := rec.ins_srtcontrole_omschrijving || ' (' || rec.ins_srtdeel_omschrijving || ')';
|
||||
ELSE -- mjb_approvedmelding_description = 1
|
||||
mld_subject := rec.ins_srtdeel_omschrijving;
|
||||
END IF;
|
||||
|
||||
-- Melding aangmaken en koppelen.
|
||||
ctr.taak_naar_ter_uitvoering(rec.mld_stdmelding_key,
|
||||
mld_subject,
|
||||
rec.ins_srtcontrole_info,
|
||||
rec.prs_kostenplaats_key,
|
||||
l_prs_perslid_key,
|
||||
rec.mld_stdmelding_default_disc,
|
||||
rec.alg_locatie_key,
|
||||
rec.alg_onroerendgoed_keys,
|
||||
rec.ins_deel_key,
|
||||
l_deelsrtcontrole_key);
|
||||
|
||||
ins.setinspectstatus(l_deelsrtcontrole_key, 3, NULL);
|
||||
|
||||
v_count_tot := v_count_tot + 1;
|
||||
IF MOD (v_count_tot, 500) = 0 THEN COMMIT; END IF;
|
||||
END;
|
||||
END LOOP;
|
||||
|
||||
fac.writelog (c_applname, 'S', '#Taken gestart: ' || TO_CHAR (v_count_tot), '');
|
||||
COMMIT;
|
||||
EXCEPTION
|
||||
WHEN OTHERS
|
||||
THEN
|
||||
oracle_err_num := SQLCODE;
|
||||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||||
v_errormsg := 'ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
||||
fac.writelog (c_applname, 'E', v_aanduiding || v_errormsg, 'Taak afgebroken!');
|
||||
END;
|
||||
/
|
||||
|
||||
|
||||
-- Dagelijkse taak
|
||||
@@ -2278,7 +2509,8 @@ CREATE OR REPLACE PROCEDURE schg_daily
|
||||
AS
|
||||
BEGIN
|
||||
|
||||
NULL;
|
||||
-- NULL;
|
||||
schg_ctr_start;
|
||||
|
||||
END;
|
||||
/
|
||||
|
||||
Reference in New Issue
Block a user