1299 lines
52 KiB
SQL
1299 lines
52 KiB
SQL
--
|
|
-- $Id$
|
|
--
|
|
-- Script containing customer specific db-configuration for HTCE.
|
|
DEFINE thisfile = 'HTCE.SQL'
|
|
DEFINE dbuser = '^HTCE'
|
|
|
|
SET ECHO ON
|
|
SET DEFINE ON
|
|
COLUMN fcltlogfile NEW_VALUE fcltlogfile NOPRINT;
|
|
COLUMN fcltcusttxt NEW_VALUE fcltcusttxt NOPRINT;
|
|
WHENEVER SQLERROR CONTINUE;
|
|
SELECT adm.getscriptspoolfile('&thisfile') AS fcltlogfile FROM DUAL;
|
|
SPOOL &fcltlogfile
|
|
WHENEVER SQLERROR EXIT;
|
|
SELECT adm.checkscriptcust('&dbuser') AS fcltcusttxt FROM DUAL;
|
|
WHENEVER SQLERROR CONTINUE;
|
|
---------------------------------------
|
|
PROMPT &fcltcusttxt
|
|
---------------------------------------
|
|
SET DEFINE OFF
|
|
|
|
------ payload begin ------
|
|
|
|
CREATE OR REPLACE PACKAGE HTCE
|
|
AS
|
|
|
|
PROCEDURE email_asml (pfrom IN VARCHAR2,
|
|
pto IN VARCHAR2,
|
|
psubject IN VARCHAR2,
|
|
pbody IN VARCHAR2,
|
|
psessionid IN VARCHAR2,
|
|
pemailkey IN NUMBER);
|
|
END;
|
|
/
|
|
|
|
CREATE OR REPLACE PACKAGE BODY HTCE
|
|
AS
|
|
--
|
|
--Rapportages
|
|
--
|
|
PROCEDURE email_asml (pfrom IN VARCHAR2,
|
|
pto IN VARCHAR2,
|
|
psubject IN VARCHAR2,
|
|
pbody IN VARCHAR2,
|
|
psessionid IN VARCHAR2,
|
|
pemailkey IN NUMBER)
|
|
AS
|
|
sender prs_perslid.prs_perslid_key%TYPE;
|
|
kostenplaats prs_afdeling.prs_kostenplaats_key%TYPE;
|
|
newkey mld_melding.mld_melding_key%TYPE;
|
|
defaultstdmelding fac_setting.fac_setting_default%TYPE;
|
|
kkey_att mld_kenmerk.mld_kenmerk_key%TYPE;
|
|
kkey_mail mld_kenmerk.mld_kenmerk_key%TYPE;
|
|
errormsg fac_result.fac_result_waarde%TYPE;
|
|
BEGIN
|
|
|
|
CASE
|
|
WHEN UPPER (pto) LIKE 'ASML@%'
|
|
THEN
|
|
|
|
sender := 45581; -- Koppeling Planon
|
|
|
|
SELECT fac_setting_pvalue
|
|
INTO defaultstdmelding
|
|
FROM fac_setting
|
|
WHERE fac_setting_name = 'defaultstdmelding';
|
|
|
|
--kkey_att := 1;
|
|
kkey_mail := 2521; -- Kenmerk voor ontvangen mail
|
|
|
|
-- suggested extensions:
|
|
-- check for MLDUSE-write autorisations
|
|
-- parse the subject to find an appropriate stdmelding, if uniquely possible
|
|
-- append (as a note?) to an existing melding if #key is found in the subject
|
|
BEGIN
|
|
INSERT INTO mld_melding (mld_melding_module,
|
|
mld_meldbron_key,
|
|
mld_melding_datum,
|
|
mld_melding_onderwerp,
|
|
mld_melding_omschrijving,
|
|
mld_melding_status,
|
|
mld_alg_locatie_key,
|
|
mld_stdmelding_key,
|
|
prs_perslid_key,
|
|
prs_perslid_key_voor,
|
|
prs_kostenplaats_key,
|
|
mld_melding_spoed)
|
|
VALUES ('MLD',
|
|
4, -- email
|
|
SYSDATE,
|
|
SUBSTR (psubject, 1, 80),
|
|
SUBSTR (REPLACE (REPLACE( SUBSTR (pbody, 1, 4000),
|
|
CHR(13)),
|
|
CHR (10) || CHR (10),
|
|
CHR (10)),
|
|
1,
|
|
4000), -- verwijder onnodige witregels
|
|
NULL,
|
|
1,
|
|
defaultstdmelding,
|
|
sender,
|
|
sender,
|
|
NULL,
|
|
3)
|
|
RETURNING mld_melding_key
|
|
INTO newkey;
|
|
|
|
INSERT INTO fac_result (fac_result_sessionid,
|
|
fac_result_naam,
|
|
fac_result_waarde)
|
|
VALUES (psessionid,
|
|
'kenmerkorgmailpath',
|
|
'MLD\M' || TO_CHAR (TRUNC (newkey / 1000), 'FM0000') || '___\M' || newkey || CHR(92) || kkey_mail || CHR(92));
|
|
|
|
mld.setmeldingstatus (newkey, 2, sender);
|
|
END;
|
|
ELSE
|
|
NULL;
|
|
END CASE;
|
|
|
|
IF errormsg IS NOT NULL
|
|
THEN
|
|
INSERT INTO fac_result (fac_result_sessionid,
|
|
fac_result_naam,
|
|
fac_result_waarde)
|
|
VALUES (psessionid, 'errormsg', errormsg);
|
|
END IF;
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
fac.writelog (
|
|
'PROCESSEMAIL',
|
|
'W',
|
|
'Mail kon niet verwerkt worden afzender: '
|
|
|| pfrom
|
|
|| '['
|
|
|| errormsg
|
|
|| ']',
|
|
'OTHERS (error '
|
|
|| SQLCODE
|
|
|| '/'
|
|
|| SUBSTR (SQLERRM, 1, 100)
|
|
|| ')');
|
|
INSERT INTO fac_result (fac_result_sessionid,
|
|
fac_result_naam,
|
|
fac_result_waarde)
|
|
VALUES (psessionid,
|
|
'errormsg',
|
|
'Database fout - Neem contact op met uw systeembeheerder');
|
|
END;
|
|
END;
|
|
/
|
|
|
|
|
|
-- Import vanuit Strukton
|
|
CREATE OR REPLACE PROCEDURE htce_import_opdrstat_strukton (p_import_key IN NUMBER)
|
|
AS
|
|
c_delim VARCHAR2 (1) := ';';
|
|
v_newline VARCHAR2 (4000); -- Input line
|
|
v_errormsg VARCHAR2 (1000);
|
|
oracle_err_num NUMBER;
|
|
oracle_err_mes VARCHAR2 (200);
|
|
v_aanduiding VARCHAR2 (1000) := '';
|
|
header_is_valid NUMBER := 0;
|
|
v_count_tot NUMBER (10) := 0;
|
|
v_count_imp NUMBER (10) := 0;
|
|
v_ongeldig NUMBER (1) := 0;
|
|
-- De importvelden
|
|
v_mld_opdr_key_tekst VARCHAR2 (100);
|
|
v_extern_nummer VARCHAR2 (100);
|
|
v_status_code VARCHAR2 (100);
|
|
v_status NUMBER (10);
|
|
v_datumtijd_tekst VARCHAR2 (100);
|
|
v_datumtijd DATE;
|
|
v_status_tekst VARCHAR2 (100);
|
|
v_opmerking VARCHAR2 (4000);
|
|
--v_totaal_tekst VARCHAR2 (100);
|
|
--v_totaal NUMBER (8,2);
|
|
--v_correctie_tekst VARCHAR2 (100);
|
|
--v_correctie NUMBER (8,2);
|
|
-- Overige velden
|
|
v_mld_opdr_key NUMBER (10);
|
|
v_mld_opdr_opmerking VARCHAR2 (4000);
|
|
|
|
CURSOR c1
|
|
IS
|
|
SELECT *
|
|
FROM fac_imp_file
|
|
WHERE fac_import_key = p_import_key
|
|
ORDER BY fac_imp_file_index;
|
|
BEGIN
|
|
DELETE FROM htce_imp_opdrstat_strukton;
|
|
COMMIT;
|
|
|
|
FOR rec1 IN c1
|
|
LOOP
|
|
BEGIN
|
|
v_newline := rec1.fac_imp_file_line;
|
|
v_errormsg := 'Fout opvragen importregel';
|
|
v_aanduiding := '';
|
|
v_ongeldig := 0;
|
|
-- Lees alle veldwaarden.
|
|
fac.imp_getfield (v_newline, c_delim, v_mld_opdr_key_tekst);
|
|
v_mld_opdr_key_tekst := TRIM (v_mld_opdr_key_tekst);
|
|
fac.imp_getfield (v_newline, c_delim, v_extern_nummer);
|
|
v_extern_nummer := TRIM (v_extern_nummer);
|
|
fac.imp_getfield (v_newline, c_delim, v_status_code); -- typeID
|
|
v_status_code := TRIM (v_status_code);
|
|
fac.imp_getfield (v_newline, c_delim, v_datumtijd_tekst);
|
|
v_datumtijd_tekst := TRIM (v_datumtijd_tekst);
|
|
fac.imp_getfield (v_newline, c_delim, v_status_tekst);
|
|
v_status_tekst := TRIM (v_status_tekst);
|
|
fac.imp_getfield (v_newline, c_delim, v_opmerking);
|
|
v_opmerking := SUBSTR (TRIM (v_opmerking), 1, 1000);
|
|
--fac.imp_getfield (v_newline, c_delim, v_totaal_tekst);
|
|
--v_totaal := fac.safe_to_number (v_totaal_tekst);
|
|
--fac.imp_getfield (v_newline, c_delim, v_correctie_tekst);
|
|
--v_correctie := fac.safe_to_number (v_correctie_tekst);
|
|
-- Verwijder de markering voor cr/lf die in stylesheet is toegevoegd.
|
|
v_opmerking := REPLACE (v_opmerking, '@@', CHR (13));
|
|
v_aanduiding := '[' || v_mld_opdr_key_tekst || '|' || v_extern_nummer || '|' || v_status_code || '|' || v_datumtijd_tekst || '|' || v_status_tekst || '] ';
|
|
|
|
-- Ik controleer of ik een geldige header heb, dat is: in de juiste kolommen
|
|
-- de juiste kolomkop. Ik controleer daarbij ALLE kolommen!
|
|
-- Ik negeer alles totdat ik een geldige header ben gepasseerd.
|
|
IF (header_is_valid = 0)
|
|
THEN
|
|
IF UPPER (TRIM (v_mld_opdr_key_tekst)) = 'REFERENCEID'
|
|
AND UPPER (TRIM (v_extern_nummer)) = 'SERVICEREQUESTID'
|
|
AND UPPER (TRIM (v_status_code)) = 'TYPEID'
|
|
AND UPPER (TRIM (v_datumtijd_tekst)) = 'DATETIME'
|
|
AND UPPER (TRIM (v_opmerking)) = 'REMARKS'
|
|
--AND UPPER (TRIM (v_totaal_tekst)) = 'TOTAL'
|
|
--AND UPPER (TRIM (v_correctie_tekst)) = 'CORRECTION'
|
|
THEN
|
|
header_is_valid := 1;
|
|
END IF;
|
|
ELSE
|
|
v_count_tot := v_count_tot + 1;
|
|
|
|
-- Controleer alle veldwaarden.
|
|
v_errormsg := 'Fout bepalen opdracht';
|
|
|
|
BEGIN
|
|
SELECT o.mld_opdr_key, o.mld_opdr_opmerking
|
|
INTO v_mld_opdr_key, v_mld_opdr_opmerking
|
|
FROM mld_opdr o, mld_melding m, mld_stdmelding sm, ins_tab_discipline td, ins_srtdiscipline sd
|
|
WHERE o.mld_melding_key = m.mld_melding_key
|
|
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
|
|
AND sm.mld_ins_discipline_key = td.ins_discipline_key
|
|
AND td.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
|
|
AND sd.ins_srtdiscipline_prefix || m.mld_melding_key || '/' || o.mld_opdr_bedrijfopdr_volgnr = v_mld_opdr_key_tekst;
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
v_ongeldig := 1;
|
|
oracle_err_num := SQLCODE;
|
|
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
|
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
|
fac.writelog (p_import_key, 'W', v_aanduiding || v_errormsg, 'Regel wordt overgeslagen!');
|
|
END;
|
|
|
|
IF v_ongeldig = 0
|
|
THEN
|
|
v_errormsg := 'Status ongedefinieerd';
|
|
|
|
CASE
|
|
WHEN v_status_code = '5'
|
|
THEN
|
|
v_status := 5; -- uitgegeven
|
|
WHEN v_status_code = '10'
|
|
THEN
|
|
v_status := 8; -- geaccepteerd
|
|
WHEN v_status_code = '20' -- monteur gereed
|
|
THEN
|
|
v_status := 6; -- afgemeld
|
|
WHEN v_status_code = '25' -- specialist gereed
|
|
THEN
|
|
v_status := 6; -- afgemeld
|
|
WHEN v_status_code = '30' -- technisch gereed
|
|
THEN
|
|
v_status := 6; -- afgemeld
|
|
-- KFNS#52066: Uitprijs/fiatteer-functionaliteit!
|
|
--WHEN v_status_code = '40' -- uitgeprijst (fiattering aan FACILITOR-kant)
|
|
--THEN
|
|
-- v_status := 9; -- afgerond
|
|
--WHEN v_status_code = '45' -- gefiatteerd (fiattering aan Strukton-kant)
|
|
--THEN
|
|
-- v_status := 9; -- afgerond
|
|
WHEN v_status_code = '70'
|
|
THEN
|
|
v_status := 1; -- geannuleerd
|
|
WHEN v_status_code = '80'
|
|
THEN
|
|
v_status := 1; -- afgewezen
|
|
WHEN v_status_code = '200' -- onderbroken
|
|
THEN
|
|
--TODO: Notitie toevoegen (incl. reden?)
|
|
v_status := NULL; -- ongewijzigd
|
|
WHEN v_status_code = '210' -- herpland
|
|
THEN
|
|
--TODO: Notitie toevoegen
|
|
v_status := NULL; -- ongewijzigd
|
|
ELSE
|
|
v_status := NULL;
|
|
v_ongeldig := 1; -- nog te bezien
|
|
END CASE;
|
|
END IF;
|
|
|
|
IF v_ongeldig = 0
|
|
THEN
|
|
v_errormsg := 'Datumtijd ongeldig';
|
|
|
|
IF INSTR (v_datumtijd_tekst, '.') > 0
|
|
THEN
|
|
v_datumtijd := fac.safe_to_date (REPLACE (SUBSTR (v_datumtijd_tekst, 1, INSTR (v_datumtijd_tekst, '.') - 1), 'T', ' '), 'yyyy-mm-dd hh24:mi:ss');
|
|
ELSE
|
|
v_datumtijd := fac.safe_to_date (REPLACE (v_datumtijd_tekst, 'T', ' '), 'yyyy-mm-dd hh24:mi:ss');
|
|
END IF;
|
|
END IF;
|
|
|
|
IF v_ongeldig = 0
|
|
THEN
|
|
v_errormsg := 'Opmerking ongeldig';
|
|
|
|
-- Controleer of de opmerking niet leeg is en of dezelfde opmerking al bij een eerdere statusovergang is gemeld.
|
|
IF v_opmerking IS NOT NULL AND INSTR (v_mld_opdr_opmerking, v_opmerking) = 0
|
|
THEN
|
|
v_opmerking := '[' || v_datumtijd_tekst || '] - ' || v_status_tekst || CHR (13) || CHR (10) || v_opmerking;
|
|
ELSE
|
|
v_opmerking := '[' || v_datumtijd_tekst || '] - ' || v_status_tekst;
|
|
END IF;
|
|
END IF;
|
|
|
|
-- Insert geformatteerde import record.
|
|
IF v_ongeldig = 0
|
|
THEN
|
|
BEGIN
|
|
v_errormsg := 'Fout wegschrijven statusbericht';
|
|
|
|
INSERT INTO htce_imp_opdrstat_strukton (mld_opdr_key,
|
|
extern_nummer,
|
|
status,
|
|
datumtijd,
|
|
opmerking) -- Geen totaal/correctie!
|
|
VALUES (v_mld_opdr_key,
|
|
v_extern_nummer,
|
|
v_status,
|
|
v_datumtijd,
|
|
v_opmerking);
|
|
|
|
v_count_imp := v_count_imp + 1;
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
oracle_err_num := SQLCODE;
|
|
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
|
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
|
fac.imp_writelog (p_import_key, 'E', v_aanduiding || v_errormsg, '');
|
|
END;
|
|
ELSE
|
|
-- Foutmeldingen onderdrukken als uitprijzen/fiatteren niet is aangeschakeld.
|
|
IF v_status_code <> '40' AND v_status_code <> '45'
|
|
THEN
|
|
fac.imp_writelog (p_import_key, 'E', v_aanduiding || v_errormsg, '');
|
|
END IF;
|
|
END IF;
|
|
END IF;
|
|
END;
|
|
END LOOP;
|
|
|
|
IF header_is_valid = 0
|
|
THEN
|
|
fac.imp_writelog (p_import_key, 'E', 'Ongeldig importbestand', 'Geen header of header niet volgens specificatie!');
|
|
ELSE
|
|
fac.imp_writelog (p_import_key, 'S', 'Inleesproces/#ingelezen statusberichten: ' || TO_CHAR (v_count_tot), '');
|
|
fac.imp_writelog (p_import_key, 'S', 'Inleesproces/#ongeldige niet ingelezen statusberichten: ' || TO_CHAR (v_count_tot - v_count_imp), '');
|
|
END IF;
|
|
COMMIT;
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
oracle_err_num := SQLCODE;
|
|
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
|
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
|
fac.imp_writelog (p_import_key, 'E', v_aanduiding || v_errormsg, 'Inleesproces statusberichten afgebroken!');
|
|
END;
|
|
/
|
|
|
|
CREATE OR REPLACE PROCEDURE htce_update_opdrstat_strukton (p_import_key IN NUMBER)
|
|
AS
|
|
-- Cursor loopt - per opdracht in volgorde! - over alle ingelezen statusberichten.
|
|
CURSOR c1
|
|
IS
|
|
SELECT mld_opdr_key, extern_nummer, status, datumtijd, opmerking -- Geen totaal/correctie!
|
|
FROM htce_imp_opdrstat_strukton
|
|
ORDER BY 1, 4;
|
|
|
|
c_user_key NUMBER (10) := 264; -- _STRUKTON-user
|
|
c_refnr_srtkkey NUMBER (10) := 6; -- Refnr. leverancier
|
|
v_errormsg VARCHAR2 (1000);
|
|
oracle_err_num NUMBER;
|
|
oracle_err_mes VARCHAR2 (200);
|
|
v_aanduiding VARCHAR2 (200);
|
|
v_count_tot NUMBER (10) := 0;
|
|
v_count NUMBER (10) := 0;
|
|
v_mld_key NUMBER (10);
|
|
v_opdr_key NUMBER (10);
|
|
v_opdr_status NUMBER (10);
|
|
v_mld_typeopdr_key NUMBER (10);
|
|
v_mld_kenmerk_key NUMBER (10);
|
|
v_mld_kenmerkopdr_key NUMBER (10);
|
|
BEGIN
|
|
-- Loop over alle ingelezen Strukton-statusberichten.
|
|
FOR rec IN c1
|
|
LOOP
|
|
BEGIN
|
|
v_aanduiding := '[' || rec.mld_opdr_key || '|' || SUBSTR (rec.opmerking, 1, 100) || '] ';
|
|
v_count_tot := v_count_tot + 1;
|
|
|
|
-- Key van melding/opdracht bepalen en Refnr. bij opdracht opslaan.
|
|
IF rec.mld_opdr_key IS NOT NULL
|
|
THEN
|
|
v_errormsg := 'Fout bepalen opdracht.';
|
|
|
|
SELECT mld_melding_key, mld_opdr_key, mld_statusopdr_key, mld_typeopdr_key
|
|
INTO v_mld_key, v_opdr_key, v_opdr_status, v_mld_typeopdr_key
|
|
FROM mld_opdr
|
|
WHERE mld_opdr_key = rec.mld_opdr_key;
|
|
|
|
v_errormsg := 'Fout bepalen Refnr-kenmerk.';
|
|
|
|
SELECT k.mld_kenmerk_key
|
|
INTO v_mld_kenmerk_key
|
|
FROM mld_kenmerk k
|
|
WHERE k.mld_srtkenmerk_key = c_refnr_srtkkey AND k.mld_typeopdr_key = v_mld_typeopdr_key;
|
|
|
|
v_errormsg := 'Fout bepalen Refnr-kenmerkopdracht.';
|
|
|
|
SELECT MAX (ko.mld_kenmerkopdr_key)
|
|
INTO v_mld_kenmerkopdr_key
|
|
FROM mld_kenmerkopdr ko
|
|
WHERE ko.mld_opdr_key = v_opdr_key AND v_mld_kenmerk_key = ko.mld_kenmerk_key;
|
|
|
|
IF v_mld_kenmerkopdr_key IS NULL
|
|
THEN
|
|
-- Kenmerk toevoegen
|
|
v_errormsg := 'Fout toevoegen Refnr-kenmerkopdracht.';
|
|
|
|
INSERT INTO mld_kenmerkopdr (mld_kenmerk_key, mld_opdr_key, mld_kenmerkopdr_waarde)
|
|
VALUES (v_mld_kenmerk_key, v_opdr_key, rec.extern_nummer);
|
|
ELSE
|
|
-- Kenmerk bijwerken
|
|
v_errormsg := 'Fout bijwerken Refnr-kenmerkopdracht.';
|
|
|
|
UPDATE mld_kenmerkopdr
|
|
SET mld_kenmerkopdr_waarde = rec.extern_nummer
|
|
WHERE mld_kenmerkopdr_key = v_mld_kenmerkopdr_key;
|
|
END IF;
|
|
|
|
IF rec.status IS NOT NULL
|
|
THEN
|
|
v_errormsg := 'Fout bijwerken Opmerking (opdracht).';
|
|
|
|
v_count := LENGTH (rec.opmerking) + 5; -- Beetje speling qua lengte!
|
|
|
|
UPDATE mld_opdr
|
|
SET mld_opdr_opmerking =
|
|
DECODE (mld_opdr_opmerking,
|
|
NULL, rec.opmerking,
|
|
rec.opmerking || CHR (13) || CHR (10) || SUBSTR (mld_opdr_opmerking, 1, (4000 - v_count)))
|
|
WHERE mld_opdr_key = v_opdr_key;
|
|
|
|
v_errormsg := 'Fout bijwerken Status.';
|
|
|
|
IF rec.status = 8 AND v_opdr_status = 5
|
|
THEN
|
|
-- Accepteer de opdracht als deze uitgegeven was
|
|
MLD.setopdrachtstatus (v_opdr_key, 8, c_user_key); -- Strukton
|
|
ELSIF rec.status = 6 AND v_opdr_status = 5
|
|
THEN
|
|
-- Meld de opdracht af als deze uitgegeven was (na eerst accepteren)
|
|
MLD.setopdrachtstatus (v_opdr_key, 8, c_user_key); -- Strukton
|
|
MLD.setopdrachtstatus (v_opdr_key, 6, c_user_key); -- Strukton
|
|
ELSIF rec.status = 6 AND v_opdr_status = 8
|
|
THEN
|
|
-- Meld de opdracht af als deze geaccepteerd was
|
|
MLD.setopdrachtstatus (v_opdr_key, 6, c_user_key); -- Strukton
|
|
ELSIF rec.status = 1 AND v_opdr_status IN (5, 8)
|
|
THEN
|
|
-- Wijs de opdracht af als deze niet/wel geaccepteerd was
|
|
MLD.setopdrachtstatus (v_opdr_key, 1, c_user_key); -- Strukton
|
|
MLD.updatemeldingstatusAV (v_mld_key, 0, c_user_key, 0);
|
|
--ELSIF rec.status = 9 AND v_opdr_status = 6 -- Per KFNS#52066
|
|
--THEN
|
|
-- Neem ontvangen kosten over zoals afgestemd met KFNS#59399!
|
|
--UPDATE mld_opdr
|
|
-- SET mld_opdr_materiaal = rec.totaal,
|
|
-- mld_opdr_kosten = rec.totaal + rec.correctie
|
|
-- WHERE mld_opdr_key = v_opdr_key;
|
|
|
|
-- Rond de opdracht af als deze afgemeld was
|
|
--MLD.setopdrachtstatus (v_opdr_key, 9, c_user_key); -- Strukton
|
|
END IF;
|
|
|
|
IF rec.status = 6 AND v_opdr_status <> 6
|
|
THEN
|
|
-- AADO#30922: Melding niet meer automatisch afmelden.
|
|
-- KFNS#37965: Opmerking-veld bij melding niet meer bijwerken.
|
|
MLD.updatemeldingstatusAV (v_mld_key, 0, c_user_key, 0);
|
|
END IF;
|
|
ELSE -- rec.status IS NULL (= Onderbroken/Herpland), dan toevoegen Notitie!
|
|
-- YAXX#59749: Toevoegen Notitie!
|
|
v_errormsg := 'Fout toevoegen Notitie (opdracht).';
|
|
|
|
INSERT INTO mld_opdr_note (mld_opdr_key, mld_opdr_note_omschrijving, prs_perslid_key)
|
|
VALUES (v_opdr_key, rec.opmerking, c_user_key);
|
|
END IF;
|
|
END IF;
|
|
COMMIT;
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
oracle_err_num := SQLCODE;
|
|
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
|
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
|
fac.imp_writelog (p_import_key, 'E', v_aanduiding || v_errormsg, 'Statusbericht-loop');
|
|
END;
|
|
END LOOP;
|
|
END;
|
|
/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
CREATE OR REPLACE VIEW HTCE_V_NOTI_MLD_WVGREMINDER
|
|
(
|
|
CODE,
|
|
SENDER,
|
|
RECEIVER,
|
|
TEXT,
|
|
KEY,
|
|
PAR1,
|
|
PAR2,
|
|
XKEY
|
|
)
|
|
AS
|
|
SELECT 'CUST01',
|
|
NULL,
|
|
COALESCE (m.prs_perslid_key_voor, prs_perslid_key),
|
|
'Uw melding '
|
|
|| sd.ins_srtdiscipline_prefix
|
|
|| m.mld_melding_key
|
|
|| ' staat nog open ter goedkeuring',
|
|
m.mld_melding_key,
|
|
NULL,
|
|
NULL,
|
|
NULL
|
|
FROM mld_kenmerkmelding km,
|
|
mld_kenmerk k,
|
|
mld_melding m,
|
|
mld_stdmelding sm,
|
|
mld_discipline md,
|
|
ins_srtdiscipline sd
|
|
WHERE km.mld_kenmerk_key = k.mld_kenmerk_key
|
|
AND k.mld_kenmerk_verwijder IS NULL
|
|
AND k.mld_srtkenmerk_key = 122 -- Begindatum
|
|
AND fac.safe_to_date (km.mld_kenmerkmelding_waarde, 'DD-MM-YYYY') = TRUNC (SYSDATE) + 2
|
|
AND km.mld_melding_key = m.mld_melding_key
|
|
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
|
|
AND sm.mld_ins_discipline_key = md.ins_discipline_key
|
|
AND md.ins_discipline_key = 208 -- Aanvraag werkvergunning
|
|
AND md.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
|
|
AND m.mld_melding_status NOT IN (1, 5, 6)
|
|
AND m.mld_melding_key = m.mld_melding_start_key;
|
|
|
|
-- Notijob om ASML gebouwen te notificeren bij afronden WF rondom WVG.
|
|
-- HTCE#66052: Toevoegen soortgelijke notificaties voor NXP gebouwen.
|
|
CREATE OR REPLACE VIEW HTCE_V_NOTI_MLD_ASMLREMINDER
|
|
(
|
|
CODE,
|
|
SENDER,
|
|
RECEIVER,
|
|
TEXT,
|
|
KEY,
|
|
PAR1,
|
|
PAR2,
|
|
XKEY,
|
|
XEMAIL,
|
|
XMOBILE
|
|
)
|
|
AS
|
|
SELECT 'MLDMAI',
|
|
NULL,
|
|
NULL,
|
|
'Er zullen werkzaamheden plaatsvinden betreft '
|
|
|| sd.ins_srtdiscipline_prefix
|
|
|| m.mld_melding_key
|
|
|| ' op locatie '
|
|
|| aog.alg_gebouw_naam,
|
|
m.mld_melding_key,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
'operation_maintenance@asml.com',
|
|
NULL
|
|
FROM mld_melding m,
|
|
mld_stdmelding sm,
|
|
mld_discipline md,
|
|
ins_srtdiscipline sd,
|
|
alg_v_onroerendgoed_gegevens aog
|
|
WHERE m.mld_stdmelding_key = sm.mld_stdmelding_key
|
|
AND sm.mld_ins_discipline_key = md.ins_discipline_key
|
|
AND md.ins_discipline_key = 208 -- Aanvraag werkvergunning
|
|
AND md.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
|
|
AND m.mld_melding_key = m.mld_melding_start_key
|
|
AND m.mld_alg_onroerendgoed_keys = aog.alg_onroerendgoed_keys
|
|
AND aog.alg_gebouw_key IN (37, 39)
|
|
AND EXISTS
|
|
(SELECT 1
|
|
FROM fac_tracking
|
|
WHERE fac_srtnotificatie_key = 38 -- MLDAFM
|
|
AND fac_tracking_datum > TRUNC (SYSDATE - 1)
|
|
AND fac_tracking_refkey = m.mld_melding_key)
|
|
UNION ALL
|
|
SELECT sn.fac_srtnotificatie_code,
|
|
NULL,
|
|
NULL,
|
|
REPLACE (
|
|
REPLACE (
|
|
REPLACE (
|
|
sn.fac_srtnotificatie_oms,
|
|
'##KEY##', sd.ins_srtdiscipline_prefix || TO_CHAR (m.mld_melding_key)),
|
|
'##STDMLD##', sm.mld_stdmelding_omschrijving),
|
|
'##GEBOUW##', aog.alg_gebouw_code || ' - ' || aog.alg_gebouw_naam),
|
|
m.mld_melding_key,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
'servicedesknxp@facilicom.nl',
|
|
NULL
|
|
FROM mld_melding m,
|
|
mld_stdmelding sm,
|
|
mld_discipline md,
|
|
ins_srtdiscipline sd,
|
|
alg_v_onroerendgoed_gegevens aog,
|
|
fac_srtnotificatie sn
|
|
WHERE m.mld_stdmelding_key = sm.mld_stdmelding_key
|
|
AND sm.mld_ins_discipline_key = md.ins_discipline_key
|
|
AND md.ins_discipline_key = 206 -- Beoordeling gebouwbeheerder
|
|
AND md.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
|
|
--AND m.mld_melding_start_key IS NOT NULL
|
|
AND m.mld_alg_onroerendgoed_keys = aog.alg_onroerendgoed_keys
|
|
AND aog.alg_gebouw_key IN (41, 46) -- HTC46/HTC60
|
|
AND sn.fac_srtnotificatie_code = 'CUST02'
|
|
AND EXISTS -- Gisteren aangemaakt altijd notificeren ongeacht status
|
|
(SELECT 1
|
|
FROM fac_tracking
|
|
WHERE fac_srtnotificatie_key = 43 -- MLDNEW
|
|
AND TRUNC (fac_tracking_datum) = TRUNC (SYSDATE - 1)
|
|
AND fac_tracking_refkey = m.mld_melding_key);
|
|
|
|
-- HTCE#86988: Bij sluiten van WF igv. HTC09+HTC10 CUST05-notificatie naar
|
|
-- meldpunt.security@hightechcampus.com & office.htce@twice.nl.
|
|
CREATE OR REPLACE VIEW HTCE_V_NOTI_WVGAFM
|
|
(
|
|
CODE,
|
|
SENDER,
|
|
RECEIVER,
|
|
TEXT,
|
|
KEY,
|
|
PAR1,
|
|
PAR2,
|
|
XKEY,
|
|
XEMAIL,
|
|
XMOBILE
|
|
)
|
|
AS
|
|
SELECT sn.fac_srtnotificatie_code,
|
|
NULL,
|
|
NULL,
|
|
REPLACE (
|
|
REPLACE (
|
|
REPLACE (
|
|
sn.fac_srtnotificatie_oms,
|
|
'##KEY##', sd.ins_srtdiscipline_prefix || TO_CHAR (m.mld_melding_key)),
|
|
'##STDMLD##', sm.mld_stdmelding_omschrijving),
|
|
'##GEBOUW##', aog.alg_gebouw_code), --|| ' - ' || aog.alg_gebouw_naam),
|
|
m.mld_melding_key,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
'meldpunt.security@hightechcampus.com;office.htce@twice.nl',
|
|
NULL
|
|
FROM fac_tracking t,
|
|
mld_melding m,
|
|
mld_stdmelding sm,
|
|
mld_discipline md,
|
|
ins_srtdiscipline sd,
|
|
alg_v_onroerendgoed_gegevens aog,
|
|
fac_srtnotificatie sn,
|
|
fac_notificatie_job nj
|
|
WHERE t.fac_srtnotificatie_key = 38 -- MLDAFM
|
|
AND t.fac_tracking_refkey = m.mld_melding_key
|
|
AND m.mld_melding_key = m.mld_melding_start_key -- WF-startmelding
|
|
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
|
|
AND sm.mld_ins_discipline_key = md.ins_discipline_key
|
|
AND md.ins_discipline_key = 208 -- Aanvraag werkvergunning
|
|
AND md.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
|
|
AND m.mld_alg_onroerendgoed_keys = aog.alg_onroerendgoed_keys
|
|
AND aog.alg_gebouw_key IN (13, 14) -- HTC09/HTC10
|
|
AND sn.fac_srtnotificatie_code = 'CUST05'
|
|
AND nj.fac_notificatie_job_view = 'HTCE_V_NOTI_WVGAFM'
|
|
AND t.fac_tracking_datum > nj.fac_notificatie_job_lastrun;
|
|
|
|
-- HTCE#61132: Opdrachtkosten per object.
|
|
-- HTCE#65899: Toevoegen Gebouw/Terrein-kolom(men).
|
|
CREATE OR REPLACE VIEW htce_v_rap_ins_opdr_kosten
|
|
(
|
|
objectdiscipline,
|
|
objectgroep,
|
|
objectsoortcode,
|
|
objectsoort,
|
|
objectid,
|
|
objectopm,
|
|
vakgroeptype,
|
|
vakgroep,
|
|
meldingsoort,
|
|
meldingnr,
|
|
meldingstatus,
|
|
mld_aanmaak,
|
|
mld_gepland,
|
|
mld_afgemeld,
|
|
opdrachttype,
|
|
opdrachtnr,
|
|
opdrachtstatus,
|
|
ord_aanmaak,
|
|
ord_gepland,
|
|
ord_afgemeld,
|
|
--ord_afgerond,
|
|
opdrachtkosten,
|
|
ins_gebouw_terrein,
|
|
mld_gebouw_terrein
|
|
)
|
|
AS
|
|
SELECT td.ins_discipline_omschrijving,
|
|
sg.ins_srtgroep_omschrijving,
|
|
sd.ins_srtdeel_code,
|
|
sd.ins_srtdeel_omschrijving,
|
|
d.ins_deel_omschrijving,
|
|
d.ins_deel_opmerking,
|
|
sd.ins_srtdiscipline_omschrijving,
|
|
md.ins_discipline_omschrijving,
|
|
sm.mld_stdmelding_omschrijving,
|
|
COALESCE (sd.ins_srtdiscipline_prefix, '') || TO_CHAR (m.mld_melding_key) meldingnr,
|
|
ms.mld_statuses_omschrijving,
|
|
m.mld_melding_datum mld_aanmaak,
|
|
m.mld_melding_einddatum mld_gepland,
|
|
fac.gettrackingdate ('MLDAFM', m.mld_melding_key) afgemeld,
|
|
ot.mld_typeopdr_omschrijving,
|
|
TO_CHAR (o.mld_melding_key) || '/' || TO_CHAR (o.mld_opdr_bedrijfopdr_volgnr) opdrachtnr,
|
|
os.mld_statusopdr_omschrijving,
|
|
o.mld_opdr_datumbegin ord_aanmaak,
|
|
o.mld_opdr_einddatum ord_gepland,
|
|
fac.gettrackingdate ('ORDAFM', o.mld_opdr_key) ord_afgemeld,
|
|
--fac.gettrackingdate ('ORDAFR', o.mld_opdr_key) ord_afgerond,
|
|
o.mld_opdr_kosten,
|
|
DECODE (d.ins_alg_ruimte_type, 'R', aog2.alg_gebouw_code || ' - ' || aog1.alg_gebouw_naam, 'T', aog1.alg_terreinsector_code || ' - ' || aog1.alg_terreinsector_code, NULL)
|
|
gebouw_terrein1,
|
|
DECODE (m.mld_alg_onroerendgoed_keys, NULL, NULL, DECODE (aog2.alg_terreinsector_key, NULL, aog2.alg_gebouw_code || ' - ' || aog2.alg_gebouw_naam, aog2.alg_terreinsector_code || ' - ' || aog2.alg_terreinsector_code))
|
|
gebouw_terrein2
|
|
FROM ins_deel d,
|
|
ins_srtdeel sd,
|
|
ins_srtgroep sg,
|
|
ins_discipline td,
|
|
mld_melding_object mo,
|
|
mld_melding m,
|
|
mld_statuses ms,
|
|
mld_stdmelding sm,
|
|
mld_discipline md,
|
|
ins_srtdiscipline sd,
|
|
mld_opdr o,
|
|
mld_statusopdr os,
|
|
mld_typeopdr ot,
|
|
alg_v_onroerendgoed_gegevens aog1, -- Tbv. ins_gebouw_terrein
|
|
alg_v_onroerendgoed_gegevens aog2 -- Tbv. ins_gebouw_terrein
|
|
WHERE d.ins_deel_verwijder IS NULL
|
|
AND d.ins_srtdeel_key = sd.ins_srtdeel_key
|
|
AND sd.ins_srtgroep_key = sg.ins_srtgroep_key
|
|
AND sg.ins_discipline_key = td.ins_discipline_key
|
|
AND d.ins_deel_key = mo.ins_deel_key
|
|
AND mo.mld_melding_key = m.mld_melding_key
|
|
AND m.mld_melding_status = ms.mld_statuses_key(+)
|
|
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
|
|
AND sm.mld_ins_discipline_key = md.ins_discipline_key
|
|
AND md.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
|
|
AND m.mld_melding_key = o.mld_melding_key
|
|
AND o.mld_statusopdr_key = os.mld_statusopdr_key(+)
|
|
AND o.mld_typeopdr_key = ot.mld_typeopdr_key
|
|
AND d.ins_alg_ruimte_key = aog1.alg_onroerendgoed_keys(+)
|
|
AND m.mld_alg_onroerendgoed_keys = aog2.alg_onroerendgoed_keys(+);
|
|
|
|
-- HTCE#77979: CUST03-noti ipv. ORD2GO bij overschrijden 1e limiet naar:
|
|
-- 1. campus.hardservices@hightechcampus.com voor de vakgroepen
|
|
-- geautoriseerd via 'Vebego Opdrachtgoedk. 500 Hard'
|
|
-- 2. alle personen zoals nu voor alle andere vakgroepen
|
|
-- BELANGRIJK: Deze notijob vervangt ORD2GO-noti en moet dus de notificatie
|
|
-- bij overschrijden van alle limieten verzorgen (uitdaging)!
|
|
CREATE OR REPLACE VIEW HTCE_V_NOTI_ORDGOE
|
|
(
|
|
code,
|
|
sender,
|
|
receiver,
|
|
text,
|
|
key,
|
|
xkey,
|
|
xemail,
|
|
xmobile
|
|
)
|
|
AS -- Voor 'Vebego Opdrachtgoedk. 500 Hard'-vakgroepen!
|
|
SELECT sn.fac_srtnotificatie_code,
|
|
NULL,
|
|
NULL,
|
|
REPLACE (sn.fac_srtnotificatie_oms, '##OPDRKEY##', TO_CHAR (o.mld_melding_key) || '/' || TO_CHAR (o.mld_opdr_bedrijfopdr_volgnr)),
|
|
o.mld_opdr_key,
|
|
NULL,
|
|
'campus.hardservices@hightechcampus.com ',
|
|
NULL
|
|
FROM fac_tracking t,
|
|
mld_opdr o,
|
|
mld_melding m,
|
|
mld_stdmelding sm,
|
|
fac_srtnotificatie sn,
|
|
fac_notificatie_job nj
|
|
WHERE t.fac_srtnotificatie_key = 72 -- ORDGOE-trackig alleen bij overschrijven 1e limiet!
|
|
AND t.fac_tracking_refkey = o.mld_opdr_key
|
|
AND o.mld_statusopdr_key = 10 -- Ter goedkeuring!
|
|
--AND o.mld_opdr_approved IS NULL -- 1e goedkeuring
|
|
AND o.mld_melding_key = m.mld_melding_key
|
|
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
|
|
AND EXISTS -- ORDGOE-geautoriseerden Vebego Opdrachtgoedk. 500 Hard!
|
|
(SELECT 1
|
|
FROM fac_groeprechten
|
|
WHERE fac_groep_key = 102 -- Vebego Opdrachtgoedk. 500 Hard
|
|
AND fac_functie_key = 42 -- WEB_ORDGOE
|
|
AND ins_discipline_key = sm.mld_ins_discipline_key)
|
|
AND sn.fac_srtnotificatie_code = 'CUST03'
|
|
AND nj.fac_notificatie_job_view = 'HTCE_V_NOTI_ORDGOE'
|
|
AND t.fac_tracking_datum > nj.fac_notificatie_job_lastrun
|
|
UNION ALL -- Voor andere dan 'Vebego Opdrachtgoedk. 500 Hard'-vakgroepen!
|
|
SELECT DISTINCT
|
|
sn.fac_srtnotificatie_code,
|
|
NULL,
|
|
NULL,
|
|
REPLACE (sn.fac_srtnotificatie_oms, '##OPDRKEY##', TO_CHAR (o.mld_melding_key) || '/' || TO_CHAR (o.mld_opdr_bedrijfopdr_volgnr)),
|
|
o.mld_opdr_key,
|
|
NULL,
|
|
p.prs_perslid_email, -- Alle ORDGOE-geautoriseerden op vakgroep van meldingen!
|
|
NULL
|
|
FROM fac_tracking t,
|
|
mld_opdr o,
|
|
mld_melding m,
|
|
mld_stdmelding sm,
|
|
fac_groeprechten gr,
|
|
fac_gebruikersgroep gg,
|
|
prs_v_aanwezigperslid p,
|
|
fac_srtnotificatie sn,
|
|
fac_notificatie_job nj
|
|
WHERE t.fac_srtnotificatie_key = 72 -- ORDGOE-trackig alleen bij overschrijven 1e limiet!
|
|
AND t.fac_tracking_refkey = o.mld_opdr_key
|
|
AND o.mld_statusopdr_key = 10 -- Ter goedkeuring!
|
|
--AND o.mld_opdr_approved IS NULL -- 1e goedkeuring
|
|
AND o.mld_melding_key = m.mld_melding_key
|
|
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
|
|
AND NOT EXISTS -- ORDGOE-geautoriseerden op alle andere vakgroepen
|
|
(SELECT 1
|
|
FROM fac_groeprechten
|
|
WHERE fac_groep_key = 102 -- Vebego Opdrachtgoedk. 500 Hard
|
|
AND fac_functie_key = 42 -- WEB_ORDGOE
|
|
AND ins_discipline_key = sm.mld_ins_discipline_key)
|
|
AND sm.mld_ins_discipline_key = gr.ins_discipline_key
|
|
AND gr.fac_groep_key != 102 -- Vebego Opdrachtgoedk. 500 Hard
|
|
AND gr.fac_functie_key = 42 -- WEB_ORDGOE
|
|
AND gr.fac_gebruiker_alg_level_write < 9
|
|
AND gr.fac_groep_key = gg.fac_groep_key
|
|
AND gg.prs_perslid_key = p.prs_perslid_key
|
|
AND p.prs_perslid_email IS NOT NULL
|
|
AND sn.fac_srtnotificatie_code = 'CUST03'
|
|
AND nj.fac_notificatie_job_view = 'HTCE_V_NOTI_ORDGOE'
|
|
AND t.fac_tracking_datum > nj.fac_notificatie_job_lastrun
|
|
UNION ALL -- Bij overschrijden 2e en - bij HTCE - laatste limiet!
|
|
SELECT DISTINCT
|
|
sn.fac_srtnotificatie_code,
|
|
NULL,
|
|
NULL,
|
|
REPLACE (sn.fac_srtnotificatie_oms, '##OPDRKEY##', TO_CHAR (o.mld_melding_key) || '/' || TO_CHAR (o.mld_opdr_bedrijfopdr_volgnr)),
|
|
o.mld_opdr_key,
|
|
NULL,
|
|
p.prs_perslid_email, -- Alle ORDGOE-geautoriseerden op vakgroep van meldingen!
|
|
NULL
|
|
FROM fac_tracking t,
|
|
mld_opdr o,
|
|
mld_melding m,
|
|
mld_stdmelding sm,
|
|
mld_disc_params dp,
|
|
fac_groeprechten gr,
|
|
fac_gebruikersgroep gg,
|
|
prs_v_aanwezigperslid p,
|
|
fac_srtnotificatie sn,
|
|
fac_notificatie_job nj
|
|
WHERE t.fac_srtnotificatie_key = 137 -- ORDMAI-tracking bij overschrijven van elke limiet!
|
|
AND INSTR (UPPER (t.fac_tracking_oms), 'NOTIFICATIE') > 0 -- Bah!
|
|
AND INSTR (UPPER (t.fac_tracking_oms), 'GOEDKEURING') > 0 -- Bah!
|
|
AND INSTR (UPPER (t.fac_tracking_oms), 'VERSTUURD') > 0 -- Bah!
|
|
AND t.fac_tracking_refkey = o.mld_opdr_key
|
|
AND o.mld_statusopdr_key = 10 -- Ter goedkeuring!
|
|
AND o.mld_melding_key = m.mld_melding_key
|
|
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
|
|
AND sm.mld_ins_discipline_key = dp.mld_ins_discipline_key
|
|
AND o.mld_opdr_approved BETWEEN dp.mld_disc_params_bestellimiet2 AND dp.mld_disc_params_bestellimiet3 -- 2e goedkeuring
|
|
AND sm.mld_ins_discipline_key = gr.ins_discipline_key
|
|
AND gr.fac_functie_key = 43 -- WEB_ORDGO2
|
|
AND gr.fac_gebruiker_alg_level_write < 9
|
|
AND gr.fac_groep_key = gg.fac_groep_key
|
|
AND gg.prs_perslid_key = p.prs_perslid_key
|
|
AND p.prs_perslid_email IS NOT NULL
|
|
AND sn.fac_srtnotificatie_code = 'CUST03'
|
|
AND nj.fac_notificatie_job_view = 'HTCE_V_NOTI_ORDGOE'
|
|
AND t.fac_tracking_datum > nj.fac_notificatie_job_lastrun;
|
|
|
|
CREATE OR REPLACE PACKAGE HTCE
|
|
AS
|
|
PROCEDURE sluiten_wvg_wf_csm;
|
|
END;
|
|
/
|
|
|
|
CREATE OR REPLACE PACKAGE BODY HTCE
|
|
AS
|
|
-- HTCE#82282: Sluiten van - de laatste - Veiligheidskundige-stap igv. CSM-
|
|
-- gebouwen (in beheer van Vebego) en daarmee sluiten van WF.
|
|
PROCEDURE sluiten_wvg_wf_csm
|
|
AS
|
|
c_applname VARCHAR2 (50) := 'SLUITEN_WF_CSM';
|
|
v_errormsg VARCHAR2 (1000);
|
|
oracle_err_num NUMBER;
|
|
oracle_err_mes VARCHAR2 (200);
|
|
v_aanduiding VARCHAR2 (200);
|
|
v_count_tot NUMBER (10) := 0;
|
|
|
|
--12101 HTC01 The Strip
|
|
--1 t/m 5 HTC01a-b-c-d-e
|
|
--10 HTC05
|
|
--12581 HTC05v
|
|
--11981 HTC06
|
|
--12301 HTC06A
|
|
--12 HTC08
|
|
--17 HTC12
|
|
--19 HTC18
|
|
--20 HTC21
|
|
--4361 HTC25 HUB
|
|
--12381 HTC25 h1
|
|
--12401 HTC25 h2
|
|
--12421 HTC25 h3
|
|
--12441 HTC25 h4
|
|
--12442 HTC25 h5
|
|
--12443 HTC25 h6
|
|
--? HTC25 h6 3de
|
|
--22 HTC27
|
|
--23 HTC27a
|
|
--24 HTC29
|
|
--25 HTC31
|
|
--27 HTC32
|
|
--8 HTC32b
|
|
--33 HTC37
|
|
--? HTC37v
|
|
--? HTC37w
|
|
--35 HTC41
|
|
--37 HTC43
|
|
--39 HTC45
|
|
--42 HTC47a
|
|
--48 HTC68
|
|
--49 HTC69
|
|
--50 HTC83
|
|
--51 HTC84
|
|
--12541 HTC85
|
|
--13221 HTC91
|
|
--4381 HTC96
|
|
--53 HTC97
|
|
--54 P0
|
|
--55 P1
|
|
--56 P2
|
|
--57 P3E
|
|
--58 P3W
|
|
--59 P4E
|
|
--60 P4S
|
|
--61 P4W
|
|
--62 P5
|
|
--63 P6
|
|
--64 P7-KWO
|
|
--66 P9
|
|
--67 P9-KWO
|
|
--4281 Foodlab Strip
|
|
--36 HTC42 (HTCE#83603)
|
|
--68 Terrein (HTCE#83753)
|
|
--13 HTC09 (HTCE#86446)
|
|
--14 HTC10 (HTCE#86446)
|
|
CURSOR c_wf_csm
|
|
IS
|
|
SELECT m.mld_melding_start_key, m.mld_melding_key, m.mld_melding_onderwerp, m.mld_melding_status
|
|
FROM mld_melding m, mld_stdmelding sm, mld_discipline md
|
|
WHERE m.mld_stdmelding_key = sm.mld_stdmelding_key
|
|
AND sm.mld_ins_discipline_key = md.ins_discipline_key
|
|
AND md.ins_srtdiscipline_key = 21 -- Werkvergunning
|
|
AND md.ins_discipline_key = 202 -- Beoordeling veiligheidskundige
|
|
AND m.mld_melding_status IN (2, 3, 4) -- Nieuw/Te accepteren/In behandeling (zou Nieuw moeten zijn)
|
|
AND m.mld_melding_key != m.mld_melding_start_key -- Vervolgmelding en niet de startmelding zelf (zou zo moeten zijn)!
|
|
AND EXISTS -- Betreft CSM-gebouw
|
|
(SELECT 1
|
|
FROM alg_v_onroerendgoed_gegevens
|
|
WHERE alg_gebouw_key IN (12101,1,2,3,4,5,10,12581,11981,12301,12,17,19,20,4361,12381,12401,12421,12441,12442,12443,22,23,24,25,27,8,33,35,37,39,42,48,49,50,51,12541,13221,4381,53,54,55,56,57,58,59,60,61,62,63,64,66,67,4281,36,68,13,14)
|
|
AND alg_onroerendgoed_keys = m.mld_alg_onroerendgoed_keys);
|
|
BEGIN
|
|
FOR rec IN c_wf_csm
|
|
LOOP
|
|
v_aanduiding := '[' || TO_CHAR (rec.mld_melding_key) || '|' || rec.mld_melding_onderwerp || '] ';
|
|
v_count_tot := v_count_tot + 1;
|
|
MLD.setmeldingstatus (rec.mld_melding_key, 5, NULL); -- Afgemeld (incl. tracking)
|
|
MLD.mld_nextworkflowstep (rec.mld_melding_key, 1); -- 1=Completed
|
|
IF MOD (v_count_tot, 500) = 0 THEN COMMIT; END IF;
|
|
END LOOP;
|
|
fac.writelog (c_applname, 'S', '#WFs gesloten: ' || 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, 'Daily achtergrond taak afgebroken!');
|
|
END;
|
|
END;
|
|
/
|
|
|
|
-- View om notificaties naar bedrijven te sturen die opdrachten hebben die al 5 dagen geleden afgemeld hadden moeten zijn.
|
|
-- Ze krijgen dan een mail met een link naar het knoppenscherm. CUST04 wordt hier nu gebruikt voor KFHT. Als het bij een andere
|
|
-- omgeving aangepast moet worden zal er een DECODE op de user gedaan moeten worden.
|
|
-- Notificaties mogen niet bij alle flags verzonden worden.
|
|
-- lcl_mld_flag1 - Wacht op reactie melder
|
|
-- lcl_mld_flag2 - Wacht op offerte
|
|
-- lcl_mld_flag3 - Wacht op onderdelen
|
|
-- lcl_mld_flag4 - Wacht op reactie FM/CM
|
|
-- lcl_mld_flag5 - Wacht op reactie CSM
|
|
-- lcl_mld_flag6 - Wacht op klant akkoord
|
|
-- De notificatie wordt alleen verzonden als er geen flag staat of flag 2 of 3
|
|
CREATE OR REPLACE VIEW htce_v_noti_mld_opdr_reminder
|
|
(
|
|
CODE,
|
|
SENDER,
|
|
RECEIVER,
|
|
TEXT,
|
|
KEY,
|
|
XKEY,
|
|
XEMAIL,
|
|
XMOBILE
|
|
)
|
|
AS
|
|
SELECT 'CUST04',
|
|
NULL,
|
|
NULL,
|
|
'Facilitor opdrachtnr. '
|
|
|| sd.ins_srtdiscipline_prefix
|
|
|| m.mld_melding_key
|
|
|| '/'
|
|
|| o.mld_opdr_bedrijfopdr_volgnr
|
|
|| ' - HERINNERING',
|
|
o.mld_opdr_key,
|
|
NULL,
|
|
prs_bedrijf_email,
|
|
NULL
|
|
FROM ins_srtdiscipline sd,
|
|
mld_discipline d,
|
|
mld_stdmelding std,
|
|
mld_melding m,
|
|
mld_opdr o,
|
|
prs_bedrijf b,
|
|
prs_kenmerklink kl,
|
|
prs_kenmerk k
|
|
WHERE prs_kenmerk_code = 'AFMELDSCHERM'
|
|
AND m.mld_melding_key = o.mld_melding_key
|
|
AND 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 k.prs_kenmerk_key = kl.prs_kenmerk_key
|
|
AND k.prs_kenmerk_verwijder IS NULL
|
|
AND kl.prs_link_key = b.prs_bedrijf_key
|
|
AND b.prs_bedrijf_key = o.mld_uitvoerende_keys
|
|
AND b.prs_bedrijf_email IS NOT NULL
|
|
AND o.mld_statusopdr_key IN (5, 8) -- Toegekend, Geaccepteerd.
|
|
AND COALESCE(m.mld_melding_flag, 0) IN (0,2,3)
|
|
AND TRUNC (o.mld_opdr_einddatum) <= TRUNC (SYSDATE) - 5;
|
|
|
|
-- HTCE#83373: Opdrachten (gekoppeld aan contract).
|
|
CREATE OR REPLACE VIEW HTCE_V_RAP_CNT_OPDR
|
|
(
|
|
vakgroeptype,
|
|
vakgroep,
|
|
meldingsoort,
|
|
melding_key,
|
|
meldingnr,
|
|
meldingstatus,
|
|
--mld_aanmaak,
|
|
--mld_gepland,
|
|
--mld_afgemeld,
|
|
opdrachttype,
|
|
opdr_key,
|
|
opdrachtnr,
|
|
opdrachtstatus,
|
|
locatie,
|
|
gebouw_terrein,
|
|
uitvoerende,
|
|
refnr_lev,
|
|
inkooporder,
|
|
contract_key,
|
|
contractnr,
|
|
extern_nr,
|
|
ord_aanmaak,
|
|
--ord_gepland,
|
|
ord_afgemeld
|
|
)
|
|
AS
|
|
SELECT sd.ins_srtdiscipline_omschrijving vakgroeptype,
|
|
md.ins_discipline_omschrijving vakgroep,
|
|
sm.mld_stdmelding_omschrijving meldingsoort,
|
|
m.mld_melding_key melding_key,
|
|
COALESCE (sd.ins_srtdiscipline_prefix, '') || TO_CHAR (m.mld_melding_key)
|
|
meldingnr,
|
|
ms.mld_statuses_omschrijving meldingstatus,
|
|
--m.mld_melding_datum mld_aanmaak,
|
|
--m.mld_melding_einddatum mld_gepland,
|
|
--fac.gettrackingdate ('MLDAFM', m.mld_melding_key) afgemeld,
|
|
ot.mld_typeopdr_omschrijving opdrachttype,
|
|
o.mld_opdr_key opdracht_key,
|
|
TO_CHAR (o.mld_melding_key) || '/' || TO_CHAR (o.mld_opdr_bedrijfopdr_volgnr)
|
|
opdrachtnr,
|
|
os.mld_statusopdr_omschrijving opdrachtstatus,
|
|
l.alg_locatie_code || '-' || l.alg_locatie_omschrijving locatie,
|
|
DECODE (
|
|
m.mld_alg_onroerendgoed_keys,
|
|
NULL, NULL,
|
|
DECODE (
|
|
aog.alg_terreinsector_key,
|
|
NULL, aog.alg_gebouw_code || ' - ' || aog.alg_gebouw_naam,
|
|
aog.alg_terreinsector_code || ' - ' || aog.alg_terreinsector_code))
|
|
gebouw_terrein,
|
|
uv.naam uitvoerende,
|
|
rl.mld_kenmerkopdr_waarde refnr_lev,
|
|
io.mld_kenmerkopdr_waarde inkooporder,
|
|
c.cnt_contract_key contract_key,
|
|
DECODE (
|
|
c.cnt_contract_key,
|
|
NULL, NULL,
|
|
c.cnt_contract_nummer_intern || '.' || COALESCE (c.cnt_contract_versie, '0'))
|
|
contractnr,
|
|
c.cnt_contract_nummer externnr,
|
|
o.mld_opdr_datumbegin ord_aanmaak,
|
|
--o.mld_opdr_einddatum ord_gepland,
|
|
fac.gettrackingdate ('ORDAFM', o.mld_opdr_key) ord_afgemeld
|
|
FROM mld_melding m,
|
|
mld_statuses ms,
|
|
mld_stdmelding sm,
|
|
mld_discipline md,
|
|
ins_srtdiscipline sd,
|
|
mld_opdr o,
|
|
mld_statusopdr os,
|
|
mld_typeopdr ot,
|
|
alg_locatie l,
|
|
alg_v_onroerendgoed_gegevens aog,
|
|
mld_v_uitvoerende uv,
|
|
(SELECT *
|
|
FROM mld_kenmerkopdr ko
|
|
WHERE EXISTS
|
|
(SELECT 1
|
|
FROM mld_kenmerk
|
|
WHERE mld_srtkenmerk_key = 6 -- Refnr. leverancier
|
|
AND mld_kenmerk_key = ko.mld_kenmerk_key)) rl,
|
|
(SELECT *
|
|
FROM mld_kenmerkopdr ko
|
|
WHERE EXISTS
|
|
(SELECT 1
|
|
FROM mld_kenmerk
|
|
WHERE mld_srtkenmerk_key = 7 -- Inkooporder
|
|
AND mld_kenmerk_key = ko.mld_kenmerk_key)) io,
|
|
cnt_v_aanwezigcontract c
|
|
WHERE m.mld_melding_status = ms.mld_statuses_key(+)
|
|
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
|
|
AND sm.mld_ins_discipline_key = md.ins_discipline_key
|
|
AND md.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
|
|
AND m.mld_melding_key = o.mld_melding_key
|
|
AND o.mld_opdr_datumbegin > TRUNC (ADD_MONTHS (SYSDATE, -12), 'yyyy')
|
|
AND o.mld_statusopdr_key = os.mld_statusopdr_key(+)
|
|
AND o.mld_typeopdr_key = ot.mld_typeopdr_key
|
|
AND m.mld_alg_locatie_key = l.alg_locatie_key(+)
|
|
AND m.mld_alg_onroerendgoed_keys = aog.alg_onroerendgoed_keys(+)
|
|
AND o.mld_uitvoerende_keys = uv.mld_uitvoerende_key(+)
|
|
AND o.mld_opdr_key = rl.mld_opdr_key(+)
|
|
AND o.mld_opdr_key = io.mld_opdr_key(+)
|
|
AND o.cnt_contract_key = c.cnt_contract_key(+);
|
|
|
|
|
|
-- Dummy export NACHTWERK!
|
|
-- HTCE#56229: Verwijderen inactieve accounts (6 maanden niet ingelogd).
|
|
CREATE OR REPLACE PROCEDURE htce_daily
|
|
AS
|
|
v_errormsg VARCHAR2 (1000);
|
|
oracle_err_num NUMBER;
|
|
oracle_err_mes VARCHAR2 (200);
|
|
v_count NUMBER;
|
|
BEGIN
|
|
-- Nachtwerk
|
|
BEGIN
|
|
v_count := 0;
|
|
|
|
FOR rec
|
|
IN ( SELECT p.prs_perslid_key, p.prs_perslid_oslogin, COUNT (vp.prs_perslid_key) aant
|
|
FROM prs_v_aanwezigperslid p, prs_v_verplichting_keys vp
|
|
WHERE TO_CHAR (SYSDATE, 'dd') = '01' -- Op 1e van de maand >180d niet ingelogd
|
|
AND p.prs_perslid_login < TRUNC (ADD_MONTHS (SYSDATE, -6), 'mm')
|
|
AND p.prs_perslid_key = vp.prs_perslid_key(+) -- Actuele verplichtingen?
|
|
GROUP BY p.prs_perslid_key, p.prs_perslid_oslogin
|
|
ORDER BY 1)
|
|
LOOP
|
|
BEGIN
|
|
IF rec.aant = 0
|
|
THEN
|
|
UPDATE prs_perslid
|
|
SET prs_perslid_verwijder = SYSDATE
|
|
WHERE prs_perslid_key = rec.prs_perslid_key;
|
|
|
|
v_count := v_count + 1;
|
|
ELSE
|
|
fac.writelog ('NACHTWERK', 'I',
|
|
'[' || rec.prs_perslid_oslogin || ']/#Verplichtingen: ' || TO_CHAR (rec.aant),
|
|
'Persoon niet geïnactiveerd');
|
|
END IF;
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN -- Kennelijk heeft persoon toch nog ernstige verplichtingen!
|
|
oracle_err_num := SQLCODE;
|
|
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
|
v_errormsg := 'ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
|
fac.writelog ('NACHTWERK', 'E',
|
|
'[' || rec.prs_perslid_oslogin || ']/' || v_errormsg,
|
|
'Fout inactiveren persoon');
|
|
END;
|
|
END LOOP;
|
|
|
|
fac.writelog ('NACHTWERK', 'S', '#Personen geïnactiveerd:' || TO_CHAR (v_count), '');
|
|
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 ('NACHTWERK', 'E', v_errormsg, 'Proces Nachtwerk afgebroken!');
|
|
END;
|
|
|
|
|
|
BEGIN
|
|
htce.sluiten_wvg_wf_csm;
|
|
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 ('DAILY', 'E', 'Proces afgebroken!', v_errormsg);
|
|
END;
|
|
|
|
END htce_daily;
|
|
/
|
|
|
|
|
|
------ payload end ------
|
|
|
|
SET DEFINE OFF
|
|
BEGIN adm.systrackscriptId ('$Id$', 0); END;
|
|
/
|
|
|
|
COMMIT;
|
|
SET ECHO OFF
|
|
SPOOL OFF
|
|
SET DEFINE ON
|
|
PROMPT Logfile of this upgrade is: &fcltlogfile
|