PGHE#68684 -- PCH Stadskantoor Heerlen (PPS)
svn path=/Customer/trunk/; revision=53364
This commit is contained in:
958
PGHE/pghe.sql
Normal file
958
PGHE/pghe.sql
Normal file
@@ -0,0 +1,958 @@
|
||||
--
|
||||
-- $Id$
|
||||
--
|
||||
-- Script containing customer specific sql statements for the FACILITOR database
|
||||
|
||||
|
||||
DEFINE thisfile = 'pghe.sql'
|
||||
DEFINE dbuser = 'PGHE'
|
||||
|
||||
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 PROCEDURE pghe_import_mld (p_import_key IN NUMBER)
|
||||
AS
|
||||
BEGIN
|
||||
-- Verwijder nbsp karakters.
|
||||
UPDATE fac_imp_file
|
||||
SET fac_imp_file_line = REPLACE (fac_imp_file_line, CHR (160), ' ')
|
||||
WHERE fac_import_key = p_import_key;
|
||||
|
||||
fac_import_mld (p_import_key);
|
||||
|
||||
UPDATE fac_imp_mld SET mld_stdmelding_groep = TRIM(mld_stdmelding_groep);
|
||||
END;
|
||||
/
|
||||
|
||||
CREATE OR REPLACE PROCEDURE pghe_update_mld (p_import_key IN NUMBER)
|
||||
AS
|
||||
CURSOR c
|
||||
IS
|
||||
SELECT i.*,
|
||||
sd.ins_srtdiscipline_key,
|
||||
d.ins_discipline_key,
|
||||
std.mld_stdmelding_key
|
||||
FROM fac_imp_file i,
|
||||
ins_tab_discipline d,
|
||||
ins_srtdiscipline sd,
|
||||
mld_stdmelding std
|
||||
WHERE sd.ins_srtdiscipline_key = d.ins_srtdiscipline_key
|
||||
AND d.ins_discipline_key = std.mld_ins_discipline_key
|
||||
AND i.fac_imp_file_line LIKE
|
||||
ins_srtdiscipline_omschrijving
|
||||
|| ';%;'
|
||||
|| ins_discipline_omschrijving
|
||||
|| ';'
|
||||
|| mld_stdmelding_omschrijving
|
||||
|| ';%'
|
||||
AND mld_stdmelding_verwijder IS NULL
|
||||
AND ins_discipline_verwijder IS NULL
|
||||
AND sd.ins_srtdiscipline_verwijder IS NULL
|
||||
AND fac_import_key = p_import_key;
|
||||
|
||||
v_aanduiding VARCHAR2 (400);
|
||||
v_errormsg VARCHAR (200);
|
||||
v_errorhint VARCHAR (200);
|
||||
oracle_err_num NUMBER;
|
||||
oracle_err_mes VARCHAR2 (200);
|
||||
v_regime VARCHAR2 (40);
|
||||
BEGIN
|
||||
fac_update_mld (p_import_key);
|
||||
|
||||
FOR rec IN c
|
||||
LOOP
|
||||
BEGIN
|
||||
fac.imp_getfield_nr (rec.fac_imp_file_line, ';', 25, v_regime);
|
||||
DBMS_OUTPUT.put_line (v_regime);
|
||||
IF v_regime LIKE '%24%'
|
||||
THEN
|
||||
-- 24/7
|
||||
UPDATE mld_stdmelding SET mld_stdmelding_regime = 3 WHERE mld_stdmelding_key = rec.mld_stdmelding_key;
|
||||
ELSE
|
||||
-- Openingstijden
|
||||
UPDATE mld_stdmelding SET mld_stdmelding_regime = 2 WHERE mld_stdmelding_key = rec.mld_stdmelding_key;
|
||||
END IF;
|
||||
EXCEPTION
|
||||
WHEN OTHERS
|
||||
THEN
|
||||
DBMS_OUTPUT.put_line ('Fout bij bepalen regime uit melding: ' || rec.fac_imp_file_line);
|
||||
END;
|
||||
END LOOP;
|
||||
EXCEPTION
|
||||
WHEN OTHERS
|
||||
THEN
|
||||
v_aanduiding := v_errormsg || ' - ' || v_aanduiding;
|
||||
oracle_err_num := SQLCODE;
|
||||
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
||||
v_errormsg := 'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
||||
fac.imp_writelog (p_import_key,
|
||||
'E',
|
||||
SUBSTR (v_errormsg, 1, 1000),
|
||||
v_aanduiding);
|
||||
END;
|
||||
/
|
||||
|
||||
|
||||
-- Importfunctie voor THT waardes bij meldingen
|
||||
CREATE OR REPLACE PROCEDURE pghe_import_storing_regime (
|
||||
p_import_key IN NUMBER)
|
||||
AS
|
||||
CURSOR c_cursor
|
||||
IS
|
||||
SELECT *
|
||||
FROM fac_imp_file
|
||||
WHERE fac_import_key = p_import_key
|
||||
ORDER BY fac_imp_file_index;
|
||||
|
||||
v_newline VARCHAR2 (1000);
|
||||
v_aanduiding VARCHAR2 (1000); -- Import line
|
||||
v_fielddelimitor VARCHAR2 (1); -- Field seperator
|
||||
v_errormsg VARCHAR (200);
|
||||
v_errorhint VARCHAR (200);
|
||||
oracle_err_num NUMBER;
|
||||
oracle_err_mes VARCHAR2 (200);
|
||||
header_found BOOLEAN;
|
||||
v_error NUMBER(1);
|
||||
-- De importvelden
|
||||
v_r_codering VARCHAR2(100);
|
||||
v_omschrijving VARCHAR2(100);
|
||||
v_ruimten VARCHAR2(100);
|
||||
v_storing_os VARCHAR2(100);
|
||||
v_stdmelding VARCHAR2(100);
|
||||
v_vakgroep VARCHAR2(100);
|
||||
v_vakgroeptype VARCHAR2(100);
|
||||
v_tht_os VARCHAR2(100);
|
||||
v_tht VARCHAR2(100);
|
||||
v_tht_eenheid VARCHAR2(100);
|
||||
v_bk VARCHAR2(100);
|
||||
v_vk VARCHAR2(100);
|
||||
v_srtruimte_key NUMBER;
|
||||
v_stdmelding_key NUMBER;
|
||||
v_discipline_key NUMBER;
|
||||
v_srtdiscipline_key NUMBER;
|
||||
|
||||
|
||||
BEGIN
|
||||
-- Verwijder nbsp karakters.
|
||||
UPDATE fac_imp_file
|
||||
SET fac_imp_file_line = REPLACE (fac_imp_file_line, CHR (160), ' ')
|
||||
WHERE fac_import_key = p_import_key;
|
||||
|
||||
-- Init
|
||||
header_found := FALSE;
|
||||
v_fielddelimitor := ';';
|
||||
|
||||
-- Clear my previous imported rows
|
||||
DELETE FROM pghe_imp_storing_regime;
|
||||
|
||||
FOR rec1 IN c_cursor
|
||||
LOOP
|
||||
BEGIN
|
||||
v_newline := REPLACE(rec1.fac_imp_file_line, CHR(160), ' ');
|
||||
v_aanduiding := SUBSTR (v_newline, 1, 200);
|
||||
v_error := 0;
|
||||
|
||||
IF SUBSTR (v_newline, 1, 3) = '?'
|
||||
THEN
|
||||
-- EF BB BF aangetroffen
|
||||
fac.imp_writelog (p_import_key,
|
||||
'W',
|
||||
'Byte Order Mark aangetroffen',
|
||||
'Bestand heeft onbehandeld UTF-8 formaat.');
|
||||
v_newline := SUBSTR (v_newline, 4);
|
||||
END IF;
|
||||
|
||||
v_errormsg := 'Inlezen velden';
|
||||
fac.imp_getfield (v_newline, v_fielddelimitor, v_r_codering);
|
||||
fac.imp_getfield (v_newline, v_fielddelimitor, v_omschrijving);
|
||||
fac.imp_getfield (v_newline, v_fielddelimitor, v_ruimten);
|
||||
fac.imp_getfield (v_newline, v_fielddelimitor, v_storing_os);
|
||||
fac.imp_getfield (v_newline, v_fielddelimitor, v_stdmelding);
|
||||
fac.imp_getfield (v_newline, v_fielddelimitor, v_vakgroep);
|
||||
fac.imp_getfield (v_newline, v_fielddelimitor, v_vakgroeptype);
|
||||
fac.imp_getfield (v_newline, v_fielddelimitor, v_tht_os);
|
||||
fac.imp_getfield (v_newline, v_fielddelimitor, v_tht);
|
||||
fac.imp_getfield (v_newline, v_fielddelimitor, v_tht_eenheid);
|
||||
fac.imp_getfield (v_newline, v_fielddelimitor, v_bk);
|
||||
fac.imp_getfield (v_newline, v_fielddelimitor, v_vk);
|
||||
|
||||
-- Skip until a valid header is found
|
||||
v_errormsg := 'Controleer de header';
|
||||
|
||||
IF UPPER (rec1.fac_imp_file_line) LIKE
|
||||
'R CODERING;OMSCHRIJVING;RUIMTEN;STORING OS;STANDAARD MELDING;VAKGROEP;VAKGROEPTYPE;THT OS;THT;THT EENHEID;BK;VK%'
|
||||
THEN
|
||||
-- Sla de kopregel over.
|
||||
header_found := TRUE;
|
||||
ELSIF (header_found AND v_vakgroep IS NOT NULL)
|
||||
THEN
|
||||
-- Kennen we de ruimtecodering
|
||||
v_errormsg := 'Controleer ruimtesoort';
|
||||
v_r_codering := REPLACE(v_r_codering, CHR(160));
|
||||
|
||||
IF v_r_codering IS NOT NULL
|
||||
THEN
|
||||
v_r_codering := TRIM(v_r_codering);
|
||||
BEGIN
|
||||
SELECT alg_srtruimte_key
|
||||
INTO v_srtruimte_key
|
||||
FROM alg_srtruimte sr
|
||||
WHERE alg_srtruimte_verwijder IS NULL
|
||||
AND UPPER (sr.alg_srtruimte_omschrijving) = UPPER (v_r_codering);
|
||||
EXCEPTION
|
||||
WHEN NO_DATA_FOUND
|
||||
THEN
|
||||
fac.imp_writelog (
|
||||
p_import_key,
|
||||
'E',
|
||||
'Ruimtecodering niet gevonden: ' || v_r_codering,
|
||||
v_aanduiding);
|
||||
v_srtruimte_key := NULL;
|
||||
v_error := 1;
|
||||
END;
|
||||
ELSE
|
||||
v_srtruimte_key := NULL;
|
||||
END IF;
|
||||
|
||||
v_errormsg := 'Controleer vakgroeptype';
|
||||
|
||||
BEGIN
|
||||
v_vakgroeptype := TRIM(v_vakgroeptype);
|
||||
SELECT ins_srtdiscipline_key
|
||||
INTO v_srtdiscipline_key
|
||||
FROM ins_srtdiscipline sd
|
||||
WHERE sd.ins_srtdiscipline_module = 'MLD'
|
||||
AND sd.ins_srtdiscipline_verwijder IS NULL
|
||||
AND UPPER (sd.ins_srtdiscipline_omschrijving) =
|
||||
UPPER (v_vakgroeptype);
|
||||
EXCEPTION
|
||||
WHEN NO_DATA_FOUND
|
||||
THEN
|
||||
fac.imp_writelog (
|
||||
p_import_key,
|
||||
'E',
|
||||
'Vakgroeptype niet gevonden: ' || v_vakgroeptype,
|
||||
v_aanduiding);
|
||||
v_srtdiscipline_key := NULL;
|
||||
v_error := 1;
|
||||
END;
|
||||
|
||||
v_errormsg := 'Controleer vakgroep';
|
||||
|
||||
BEGIN
|
||||
v_vakgroep := TRIM(v_vakgroep);
|
||||
SELECT ins_discipline_key
|
||||
INTO v_discipline_key
|
||||
FROM ins_tab_discipline d
|
||||
WHERE d.ins_discipline_module = 'MLD'
|
||||
AND d.ins_discipline_verwijder IS NULL
|
||||
AND d.ins_srtdiscipline_key = v_srtdiscipline_key
|
||||
AND UPPER (d.ins_discipline_omschrijving) =
|
||||
UPPER (v_vakgroep);
|
||||
EXCEPTION
|
||||
WHEN NO_DATA_FOUND
|
||||
THEN
|
||||
fac.imp_writelog (
|
||||
p_import_key,
|
||||
'E',
|
||||
'Vakgroep niet gevonden: ' || v_vakgroep,
|
||||
v_aanduiding);
|
||||
v_discipline_key := NULL;
|
||||
v_error := 1;
|
||||
END;
|
||||
|
||||
v_errormsg := 'Controleer stdmelding';
|
||||
|
||||
IF v_stdmelding IS NOT NULL
|
||||
THEN
|
||||
v_stdmelding := SUBSTR(TRIM(v_stdmelding),1,60);
|
||||
BEGIN
|
||||
SELECT mld_stdmelding_key
|
||||
INTO v_stdmelding_key
|
||||
FROM mld_stdmelding std
|
||||
WHERE std.mld_stdmelding_verwijder IS NULL
|
||||
AND std.mld_ins_discipline_key = v_discipline_key
|
||||
AND UPPER (std.mld_stdmelding_omschrijving) =
|
||||
UPPER (v_stdmelding);
|
||||
EXCEPTION
|
||||
WHEN NO_DATA_FOUND
|
||||
THEN
|
||||
fac.imp_writelog (
|
||||
p_import_key,
|
||||
'E',
|
||||
'Standaard melding niet gevonden: ' || v_stdmelding,
|
||||
v_aanduiding);
|
||||
v_stdmelding_key := NULL;
|
||||
v_error := 1;
|
||||
END;
|
||||
ELSE
|
||||
v_stdmelding_key := NULL;
|
||||
END IF;
|
||||
|
||||
v_errormsg := 'Controleer THT';
|
||||
|
||||
IF fac.safe_to_number (v_tht) IS NULL AND v_tht IS NOT NULL
|
||||
THEN
|
||||
fac.imp_writelog (p_import_key,
|
||||
'E',
|
||||
'THT niet geldig: ' || v_tht,
|
||||
v_aanduiding);
|
||||
v_error := 1;
|
||||
END IF;
|
||||
|
||||
v_errormsg := 'Controleer THT eenheid';
|
||||
|
||||
v_tht_eenheid := TRIM(UPPER(v_tht_eenheid));
|
||||
IF v_tht_eenheid NOT IN ('UUR', 'MIN', 'DAG') AND v_tht_eenheid IS NOT NULL
|
||||
THEN
|
||||
fac.imp_writelog (
|
||||
p_import_key,
|
||||
'E',
|
||||
'THT eehheid niet geldig: ' || v_tht_eenheid,
|
||||
v_aanduiding);
|
||||
v_error := 1;
|
||||
END IF;
|
||||
|
||||
v_errormsg := 'Controleer basiskorting';
|
||||
|
||||
IF fac.safe_to_number (v_bk) IS NULL AND v_bk IS NOT NULL
|
||||
THEN
|
||||
fac.imp_writelog (p_import_key,
|
||||
'E',
|
||||
'Basiskorting niet geldig: ' || v_bk,
|
||||
v_aanduiding);
|
||||
v_error := 1;
|
||||
END IF;
|
||||
|
||||
v_errormsg := 'Controleer variabele korting';
|
||||
|
||||
IF fac.safe_to_number (v_vk) IS NULL AND v_vk IS NOT NULL
|
||||
THEN
|
||||
fac.imp_writelog (p_import_key,
|
||||
'E',
|
||||
'variabele korting niet geldig: ' || v_vk,
|
||||
v_aanduiding);
|
||||
v_error := 1;
|
||||
END IF;
|
||||
|
||||
IF v_error = 0
|
||||
THEN
|
||||
INSERT INTO pghe_imp_storing_regime (r_codering,
|
||||
omschrijving,
|
||||
ruimten,
|
||||
storing_os,
|
||||
stdmelding,
|
||||
vakgroep,
|
||||
vakgroeptype,
|
||||
tht_os,
|
||||
tht,
|
||||
tht_eenheid,
|
||||
bk,
|
||||
vk,
|
||||
alg_srtruimte_key,
|
||||
mld_stdmelding_key,
|
||||
mld_discipline_key,
|
||||
ins_srtdiscipline_key)
|
||||
VALUES (v_r_codering,
|
||||
v_omschrijving,
|
||||
v_ruimten,
|
||||
v_storing_os,
|
||||
v_stdmelding,
|
||||
v_vakgroep,
|
||||
v_vakgroeptype,
|
||||
v_tht_os,
|
||||
v_tht,
|
||||
v_tht_eenheid,
|
||||
v_bk,
|
||||
v_vk,
|
||||
v_srtruimte_key,
|
||||
v_stdmelding_key,
|
||||
v_discipline_key,
|
||||
v_srtdiscipline_key);
|
||||
END IF;
|
||||
|
||||
COMMIT;
|
||||
END IF;
|
||||
END;
|
||||
END loop;
|
||||
|
||||
IF NOT header_found
|
||||
THEN
|
||||
fac.imp_writelog (
|
||||
p_import_key,
|
||||
'E',
|
||||
'Geen geldige header aangetroffen',
|
||||
'Bestand is geen geldig melding regime importbestand.');
|
||||
END IF;
|
||||
EXCEPTION
|
||||
WHEN OTHERS
|
||||
THEN
|
||||
v_aanduiding := v_errormsg || ' - ' || v_aanduiding;
|
||||
oracle_err_num := SQLCODE;
|
||||
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
||||
v_errormsg := 'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
||||
fac.imp_writelog (p_import_key, 'E', SUBSTR (v_errormsg, 1, 1000), v_aanduiding);
|
||||
-- maak de importtabel leeg om te voorkomen dat er halve bestanden ingelezen worden.
|
||||
DELETE FROM pghe_imp_storing_regime;
|
||||
END;
|
||||
/
|
||||
|
||||
CREATE OR REPLACE PROCEDURE pghe_update_storing_regime (
|
||||
p_import_key IN NUMBER)
|
||||
AS
|
||||
CURSOR c
|
||||
IS
|
||||
SELECT sr.r_codering,
|
||||
stdmelding,
|
||||
vakgroep,
|
||||
vakgroeptype,
|
||||
fac.safe_to_number (bk) bk,
|
||||
fac.safe_to_number (vk) vk,
|
||||
alg_srtruimte_key,
|
||||
mld_stdmelding_key,
|
||||
mld_discipline_key,
|
||||
ins_srtdiscipline_key,
|
||||
DECODE (tht_eenheid, 'UUR', 'U', 'MIN', 'U', 'DAG', 'D') eenheid,
|
||||
DECODE (tht_eenheid,
|
||||
'UUR', tht,
|
||||
'MIN', ROUND (tht / 60, 5),
|
||||
'DAG', tht)
|
||||
tijdsduur
|
||||
FROM pghe_imp_storing_regime sr;
|
||||
|
||||
CURSOR c_del
|
||||
IS
|
||||
SELECT ssr.mld_stdmsrtruimte_key,
|
||||
d.ins_discipline_omschrijving,
|
||||
std.mld_stdmelding_omschrijving,
|
||||
sr.alg_srtruimte_code
|
||||
FROM mld_stdmsrtruimte ssr,
|
||||
mld_stdmelding std,
|
||||
ins_tab_discipline d,
|
||||
ins_srtdiscipline sd,
|
||||
alg_srtruimte sr
|
||||
WHERE NOT EXISTS
|
||||
(SELECT mld_stdmelding_key
|
||||
FROM pghe_imp_storing_regime sm
|
||||
WHERE sm.mld_stdmelding_key = ssr.mld_stdmelding_key
|
||||
AND sm.alg_srtruimte_key = ssr.alg_srtruimte_key)
|
||||
AND NOT EXISTS
|
||||
(SELECT std.mld_stdmelding_key
|
||||
FROM pghe_imp_storing_regime sm, mld_stdmelding std
|
||||
WHERE sm.mld_discipline_key = std.mld_ins_discipline_key
|
||||
AND std.mld_stdmelding_key = ssr.mld_stdmelding_key
|
||||
AND sm.alg_srtruimte_key = ssr.alg_srtruimte_key
|
||||
AND sm.mld_stdmelding_key IS NULL)
|
||||
AND ssr.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 sd.ins_srtdiscipline_omschrijving IN (SELECT DISTINCT vakgroeptype FROM pghe_imp_storing_regime)
|
||||
AND ssr.alg_srtruimte_key = sr.alg_srtruimte_key;
|
||||
|
||||
CURSOR c_upd_std
|
||||
IS
|
||||
SELECT DISTINCT
|
||||
mld_stdmelding_key,
|
||||
sr1.mld_stdmsrtruimte_t_uitvtijd.eenheid eenheid,
|
||||
sr1.mld_stdmsrtruimte_t_uitvtijd.tijdsduur tijdsduur
|
||||
FROM (SELECT mld_stdmelding_key,
|
||||
DECODE (sr.mld_stdmsrtruimte_t_uitvtijd.eenheid, 'U', 0, 'D', 100)
|
||||
+ sr.mld_stdmsrtruimte_t_uitvtijd.tijdsduur
|
||||
duur,
|
||||
sr.mld_stdmsrtruimte_t_uitvtijd
|
||||
FROM mld_stdmsrtruimte sr) sr1
|
||||
WHERE NOT EXISTS (SELECT *
|
||||
FROM (SELECT mld_stdmelding_key,
|
||||
DECODE (sr.mld_stdmsrtruimte_t_uitvtijd.eenheid,
|
||||
'U', 0,
|
||||
'D', 100)
|
||||
+ sr.mld_stdmsrtruimte_t_uitvtijd.tijdsduur
|
||||
duur
|
||||
FROM mld_stdmsrtruimte sr) sr2
|
||||
WHERE sr1.mld_stdmelding_key = sr2.mld_stdmelding_key AND sr1.duur < sr2.duur);
|
||||
|
||||
v_newline VARCHAR2 (1000);
|
||||
v_aanduiding VARCHAR2 (1000); -- Import line
|
||||
v_fielddelimitor VARCHAR2 (1); -- Field seperator
|
||||
v_errormsg VARCHAR (200);
|
||||
v_errorhint VARCHAR (200);
|
||||
oracle_err_num NUMBER;
|
||||
oracle_err_mes VARCHAR2 (200);
|
||||
v_count NUMBER;
|
||||
v_tijdsduur NUMBER (10, 5);
|
||||
v_eenheid VARCHAR2 (1);
|
||||
v_basiskorting NUMBER;
|
||||
v_varkorting NUMBER;
|
||||
v_stdmsrtruimte_key NUMBER;
|
||||
v_stdmelding_omschrijving VARCHAR2 (60);
|
||||
BEGIN
|
||||
SELECT COUNT ( * ) INTO v_count FROM pghe_imp_storing_regime;
|
||||
|
||||
IF v_count < 1000 AND 1=0 -- Toch maar even niet testen. De lijst met Kq meldingen bevat maar 17 records
|
||||
THEN
|
||||
fac.imp_writelog (
|
||||
p_import_key,
|
||||
'E',
|
||||
'Aantal ingelezen regels: ' || v_count || ' is te weing.',
|
||||
NULL);
|
||||
RETURN;
|
||||
END IF;
|
||||
|
||||
FOR rec IN c
|
||||
LOOP
|
||||
v_aanduiding :=
|
||||
rec.r_codering
|
||||
|| '-'
|
||||
|| rec.vakgroep
|
||||
|| '/'
|
||||
|| rec.stdmelding
|
||||
|| ') '
|
||||
|| v_tijdsduur
|
||||
|| ' '
|
||||
|| v_eenheid
|
||||
|| ' '
|
||||
|| v_basiskorting
|
||||
|| '-'
|
||||
|| v_varkorting;
|
||||
|
||||
IF rec.mld_stdmelding_key IS NOT NULL
|
||||
THEN
|
||||
-- de hersteltijden gelden niet voor alle meldingen in de vakgroep.
|
||||
IF rec.alg_srtruimte_key IS NULL
|
||||
THEN
|
||||
-- deze melding is gelijk voor alle ruimtesoorten. We gaan dit dus bij de stdmelding aanpassen.
|
||||
v_errormsg := 'Zoeken stdmelding';
|
||||
|
||||
SELECT std.mld_stdmelding_t_uitvoertijd.tijdsduur tijdsduur,
|
||||
std.mld_stdmelding_t_uitvoertijd.eenheid eenheid,
|
||||
COALESCE (mld_stdmelding_malusbasis, 0)
|
||||
mld_stdmelding_malusbasis,
|
||||
COALESCE (mld_stdmelding_malus, 0) mld_stdmelding_malus
|
||||
INTO v_tijdsduur,
|
||||
v_eenheid,
|
||||
v_basiskorting,
|
||||
v_varkorting
|
||||
FROM mld_stdmelding std
|
||||
WHERE std.mld_stdmelding_key = rec.mld_stdmelding_key
|
||||
AND std.mld_stdmelding_verwijder IS NULL;
|
||||
|
||||
IF v_tijdsduur <> rec.tijdsduur
|
||||
OR v_eenheid <> rec.eenheid
|
||||
OR v_basiskorting <> rec.bk
|
||||
OR v_varkorting <> rec.vk
|
||||
THEN
|
||||
fac.imp_writelog (
|
||||
p_import_key,
|
||||
'I',
|
||||
'Gewijzigd stdm1 ('
|
||||
|| rec.r_codering
|
||||
|| '-'
|
||||
|| rec.vakgroep
|
||||
|| '/'
|
||||
|| rec.stdmelding
|
||||
|| ')',
|
||||
v_tijdsduur
|
||||
|| ' '
|
||||
|| v_eenheid
|
||||
|| ' '
|
||||
|| v_basiskorting
|
||||
|| '-'
|
||||
|| v_varkorting
|
||||
|| ' -> '
|
||||
|| rec.tijdsduur
|
||||
|| ' '
|
||||
|| rec.eenheid
|
||||
|| ' '
|
||||
|| rec.bk
|
||||
|| '-'
|
||||
|| rec.vk);
|
||||
|
||||
v_errormsg := 'Aanpassen stdmelding';
|
||||
|
||||
UPDATE mld_stdmelding
|
||||
SET mld_stdmelding_t_uitvoertijd =
|
||||
mld_t_uitvoertijd (rec.tijdsduur, rec.eenheid),
|
||||
mld_stdmelding_malus = rec.vk,
|
||||
mld_stdmelding_malusbasis = rec.bk
|
||||
WHERE mld_stdmelding_key = rec.mld_stdmelding_key;
|
||||
|
||||
FOR rec_sr
|
||||
IN (SELECT *
|
||||
FROM mld_stdmsrtruimte
|
||||
WHERE mld_stdmelding_key = rec.mld_stdmelding_key)
|
||||
LOOP
|
||||
fac.imp_writelog (
|
||||
p_import_key,
|
||||
'I',
|
||||
'Verwijderd ('
|
||||
|| rec.r_codering
|
||||
|| '-'
|
||||
|| rec.vakgroep
|
||||
|| '/'
|
||||
|| rec.stdmelding
|
||||
|| ')',
|
||||
NULL);
|
||||
|
||||
v_errormsg := 'Verwijderen stdmsrtruimte';
|
||||
|
||||
DELETE mld_stdmsrtruimte
|
||||
WHERE mld_stdmsrtruimte_key = rec_sr.mld_stdmsrtruimte_key;
|
||||
END LOOP;
|
||||
END IF;
|
||||
ELSE
|
||||
-- Stdmelding en srtruimte zijn ingevuld. Dus een upsert op het mld_stdmsrtruimte record uitvoeren
|
||||
BEGIN
|
||||
v_errormsg := 'Zoeken stdmsrtruimte';
|
||||
|
||||
SELECT stdsr.mld_stdmsrtruimte_t_uitvtijd.tijdsduur tijdsduur,
|
||||
stdsr.mld_stdmsrtruimte_t_uitvtijd.eenheid eenheid,
|
||||
COALESCE (mld_stdmsrtruimte_malusbasis, 0)
|
||||
mld_stdmsrtruimte_malusbasis,
|
||||
COALESCE (mld_stdmsrtruimte_malus, 0)
|
||||
mld_stdmsrtruimte_malus,
|
||||
mld_stdmsrtruimte_key
|
||||
INTO v_tijdsduur,
|
||||
v_eenheid,
|
||||
v_basiskorting,
|
||||
v_varkorting,
|
||||
v_stdmsrtruimte_key
|
||||
FROM mld_stdmsrtruimte stdsr
|
||||
WHERE stdsr.mld_stdmelding_key = rec.mld_stdmelding_key
|
||||
AND stdsr.alg_srtruimte_key = rec.alg_srtruimte_key;
|
||||
|
||||
IF v_tijdsduur <> rec.tijdsduur
|
||||
OR v_eenheid <> rec.eenheid
|
||||
OR v_basiskorting <> rec.bk
|
||||
OR v_varkorting <> rec.vk
|
||||
THEN
|
||||
fac.imp_writelog (
|
||||
p_import_key,
|
||||
'I',
|
||||
'Gewijzigd stdmsr1 ('
|
||||
|| rec.r_codering
|
||||
|| '-'
|
||||
|| rec.vakgroep
|
||||
|| '/'
|
||||
|| rec.stdmelding
|
||||
|| ')',
|
||||
v_tijdsduur
|
||||
|| ' '
|
||||
|| v_eenheid
|
||||
|| ' '
|
||||
|| v_basiskorting
|
||||
|| '-'
|
||||
|| v_varkorting
|
||||
|| ' -> '
|
||||
|| rec.tijdsduur
|
||||
|| ' '
|
||||
|| rec.eenheid
|
||||
|| ' '
|
||||
|| rec.bk
|
||||
|| '-'
|
||||
|| rec.vk);
|
||||
|
||||
v_errormsg := 'Aanpassen stdmsrtruimte';
|
||||
|
||||
UPDATE mld_stdmsrtruimte
|
||||
SET mld_stdmsrtruimte_t_uitvtijd =
|
||||
mld_t_uitvoertijd (rec.tijdsduur, rec.eenheid),
|
||||
mld_stdmsrtruimte_malus = rec.vk,
|
||||
mld_stdmsrtruimte_malusbasis = rec.bk
|
||||
WHERE mld_stdmsrtruimte_key = v_stdmsrtruimte_key;
|
||||
END IF;
|
||||
EXCEPTION
|
||||
WHEN NO_DATA_FOUND
|
||||
THEN
|
||||
fac.imp_writelog (
|
||||
p_import_key,
|
||||
'I',
|
||||
'Toegevoegd ('
|
||||
|| rec.r_codering
|
||||
|| '-'
|
||||
|| rec.vakgroep
|
||||
|| '/'
|
||||
|| rec.stdmelding
|
||||
|| ')',
|
||||
rec.tijdsduur
|
||||
|| ' '
|
||||
|| rec.eenheid
|
||||
|| ' '
|
||||
|| rec.bk
|
||||
|| '-'
|
||||
|| rec.vk);
|
||||
|
||||
v_errormsg := 'Toevoegen stdmsrtruimte';
|
||||
|
||||
INSERT INTO mld_stdmsrtruimte (mld_stdmsrtruimte_t_uitvtijd,
|
||||
mld_stdmsrtruimte_malus,
|
||||
mld_stdmsrtruimte_malusbasis,
|
||||
alg_srtruimte_key,
|
||||
mld_stdmelding_key)
|
||||
VALUES (mld_t_uitvoertijd (rec.tijdsduur, rec.eenheid),
|
||||
rec.vk,
|
||||
rec.bk,
|
||||
rec.alg_srtruimte_key,
|
||||
rec.mld_stdmelding_key);
|
||||
END;
|
||||
END IF;
|
||||
ELSE
|
||||
-- de standaardmelding is null. De aanpassingen gelden dus voor alle meldingen die niet in de lijst voorkomen.
|
||||
IF rec.alg_srtruimte_key IS NULL
|
||||
THEN
|
||||
-- deze melding is gelijk voor alle ruimtesoorten. We gaan dit dus bij de stdmelding aanpassen.
|
||||
FOR rec_std
|
||||
IN (SELECT *
|
||||
FROM mld_stdmelding std
|
||||
WHERE std.mld_ins_discipline_key = rec.mld_discipline_key
|
||||
AND std.mld_stdmelding_verwijder IS NULL
|
||||
AND std.mld_stdmelding_key NOT IN
|
||||
(SELECT i.mld_stdmelding_key
|
||||
FROM pghe_imp_storing_regime i
|
||||
WHERE COALESCE (i.mld_stdmelding_key, -1) =
|
||||
std.mld_stdmelding_key))
|
||||
LOOP
|
||||
v_errormsg := 'Zoeken stdmelding';
|
||||
|
||||
SELECT std.mld_stdmelding_t_uitvoertijd.tijdsduur tijdsduur,
|
||||
std.mld_stdmelding_t_uitvoertijd.eenheid eenheid,
|
||||
COALESCE (mld_stdmelding_malusbasis, 0)
|
||||
mld_stdmelding_malusbasis,
|
||||
COALESCE (mld_stdmelding_malus, 0) mld_stdmelding_malus,
|
||||
mld_stdmelding_omschrijving
|
||||
INTO v_tijdsduur,
|
||||
v_eenheid,
|
||||
v_basiskorting,
|
||||
v_varkorting,
|
||||
v_stdmelding_omschrijving
|
||||
FROM mld_stdmelding std
|
||||
WHERE std.mld_stdmelding_key = rec_std.mld_stdmelding_key;
|
||||
|
||||
IF v_tijdsduur <> rec.tijdsduur
|
||||
OR v_eenheid <> rec.eenheid
|
||||
OR v_basiskorting <> rec.bk
|
||||
OR v_varkorting <> rec.vk
|
||||
THEN
|
||||
fac.imp_writelog (
|
||||
p_import_key,
|
||||
'I',
|
||||
'Gewijzigd stdm2 ('
|
||||
|| rec.r_codering
|
||||
|| '-'
|
||||
|| rec.vakgroep
|
||||
|| '/'
|
||||
|| v_stdmelding_omschrijving
|
||||
|| ')',
|
||||
v_tijdsduur
|
||||
|| ' '
|
||||
|| v_eenheid
|
||||
|| ' '
|
||||
|| v_basiskorting
|
||||
|| '-'
|
||||
|| v_varkorting
|
||||
|| ' -> '
|
||||
|| rec.tijdsduur
|
||||
|| ' '
|
||||
|| rec.eenheid
|
||||
|| ' '
|
||||
|| rec.bk
|
||||
|| '-'
|
||||
|| rec.vk);
|
||||
|
||||
v_errormsg := 'Aanpassen stdmelding';
|
||||
|
||||
UPDATE mld_stdmelding
|
||||
SET mld_stdmelding_t_uitvoertijd =
|
||||
mld_t_uitvoertijd (rec.tijdsduur, rec.eenheid),
|
||||
mld_stdmelding_malus = rec.vk,
|
||||
mld_stdmelding_malusbasis = rec.bk
|
||||
WHERE mld_stdmelding_key = rec_std.mld_stdmelding_key;
|
||||
END IF;
|
||||
END LOOP;
|
||||
ELSE
|
||||
-- Ruimte is gevuld maar standaardmelding niet. We gaan nu voor alle bestaande standaardmeldingen en ruimtesoorten mld_stdmsrtruimte records aanmaken of bijwerken.
|
||||
FOR rec_stdsr
|
||||
IN (SELECT std.mld_stdmelding_key,
|
||||
std.mld_stdmelding_omschrijving,
|
||||
stdmsr.mld_stdmsrtruimte_t_uitvtijd.tijdsduur
|
||||
tijdsduur,
|
||||
stdmsr.mld_stdmsrtruimte_t_uitvtijd.eenheid eenheid,
|
||||
COALESCE (mld_stdmsrtruimte_malusbasis, 0)
|
||||
mld_stdmsrtruimte_malusbasis,
|
||||
COALESCE (mld_stdmsrtruimte_malus, 0)
|
||||
mld_stdmsrtruimte_malus,
|
||||
mld_stdmsrtruimte_key
|
||||
FROM mld_stdmelding std,
|
||||
(SELECT *
|
||||
FROM mld_stdmsrtruimte
|
||||
WHERE alg_srtruimte_key = rec.alg_srtruimte_key)
|
||||
stdmsr
|
||||
WHERE std.mld_ins_discipline_key = rec.mld_discipline_key
|
||||
AND std.mld_stdmelding_verwijder IS NULL
|
||||
AND std.mld_stdmelding_key =
|
||||
stdmsr.mld_stdmelding_key(+))
|
||||
LOOP
|
||||
v_tijdsduur := rec_stdsr.tijdsduur;
|
||||
v_eenheid := rec_stdsr.eenheid;
|
||||
v_basiskorting := rec_stdsr.mld_stdmsrtruimte_malusbasis;
|
||||
v_varkorting := rec_stdsr.mld_stdmsrtruimte_malus;
|
||||
v_stdmelding_omschrijving :=
|
||||
rec_stdsr.mld_stdmelding_omschrijving;
|
||||
v_stdmsrtruimte_key := rec_stdsr.mld_stdmsrtruimte_key;
|
||||
|
||||
IF rec_stdsr.mld_stdmsrtruimte_key IS NOT NULL
|
||||
THEN
|
||||
-- Update
|
||||
IF v_tijdsduur <> rec.tijdsduur
|
||||
OR v_eenheid <> rec.eenheid
|
||||
OR v_basiskorting <> rec.bk
|
||||
OR v_varkorting <> rec.vk
|
||||
THEN
|
||||
fac.imp_writelog (
|
||||
p_import_key,
|
||||
'I',
|
||||
'Gewijzigd stdmsr2(' || v_stdmsrtruimte_key || '*'
|
||||
|| rec.r_codering
|
||||
|| '-'
|
||||
|| rec.vakgroep
|
||||
|| '/'
|
||||
|| v_stdmelding_omschrijving
|
||||
|| ')',
|
||||
v_tijdsduur
|
||||
|| ' '
|
||||
|| v_eenheid
|
||||
|| ' '
|
||||
|| v_basiskorting
|
||||
|| '-'
|
||||
|| v_varkorting
|
||||
|| ' -> '
|
||||
|| rec.tijdsduur
|
||||
|| ' '
|
||||
|| rec.eenheid
|
||||
|| ' '
|
||||
|| rec.bk
|
||||
|| '-'
|
||||
|| rec.vk);
|
||||
|
||||
v_errormsg := 'Aanpassen stdmsrtruimte';
|
||||
|
||||
UPDATE mld_stdmsrtruimte
|
||||
SET mld_stdmsrtruimte_t_uitvtijd =
|
||||
mld_t_uitvoertijd (rec.tijdsduur, rec.eenheid),
|
||||
mld_stdmsrtruimte_malus = rec.vk,
|
||||
mld_stdmsrtruimte_malusbasis = rec.bk
|
||||
WHERE mld_stdmsrtruimte_key = v_stdmsrtruimte_key;
|
||||
END IF;
|
||||
ELSE
|
||||
-- Insert
|
||||
fac.imp_writelog (
|
||||
p_import_key,
|
||||
'I',
|
||||
'Toegevoegd ('
|
||||
|| rec.r_codering
|
||||
|| '-'
|
||||
|| rec.vakgroep
|
||||
|| '/'
|
||||
|| v_stdmelding_omschrijving
|
||||
|| ')',
|
||||
rec.tijdsduur
|
||||
|| ' '
|
||||
|| rec.eenheid
|
||||
|| ' '
|
||||
|| rec.bk
|
||||
|| '-'
|
||||
|| rec.vk);
|
||||
|
||||
v_errormsg := 'Toevoegen stdmsrtruimte';
|
||||
|
||||
INSERT INTO mld_stdmsrtruimte (mld_stdmsrtruimte_t_uitvtijd,
|
||||
mld_stdmsrtruimte_malus,
|
||||
mld_stdmsrtruimte_malusbasis,
|
||||
alg_srtruimte_key,
|
||||
mld_stdmelding_key)
|
||||
VALUES (mld_t_uitvoertijd (rec.tijdsduur, rec.eenheid),
|
||||
rec.vk,
|
||||
rec.bk,
|
||||
rec.alg_srtruimte_key,
|
||||
rec_stdsr.mld_stdmelding_key);
|
||||
END IF;
|
||||
END LOOP;
|
||||
END IF;
|
||||
END IF;
|
||||
END LOOP;
|
||||
|
||||
FOR rec IN c_del
|
||||
LOOP
|
||||
fac.imp_writelog (
|
||||
p_import_key,
|
||||
'I',
|
||||
'Verwijderd ('
|
||||
|| rec.alg_srtruimte_code
|
||||
|| '-'
|
||||
|| rec.ins_discipline_omschrijving
|
||||
|| '/'
|
||||
|| rec.mld_stdmelding_omschrijving
|
||||
|| ')',
|
||||
NULL);
|
||||
|
||||
DELETE mld_stdmsrtruimte WHERE mld_stdmsrtruimte_key = rec. mld_stdmsrtruimte_key;
|
||||
|
||||
END LOOP;
|
||||
|
||||
-- Als de hersteltijd per ruimtesoort geldt dan moeten we de vlag afhankelijk ook zetten bij de stdmelding.
|
||||
UPDATE mld_stdmelding std
|
||||
SET mld_stdmelding_afhankelijk =
|
||||
(SELECT DECODE (COUNT ( * ), 0, 0, 1)
|
||||
FROM mld_stdmsrtruimte sr
|
||||
WHERE sr.mld_stdmelding_key = std.mld_stdmelding_key);
|
||||
|
||||
-- Als er een uitsplitsing is naar ruimtesoort dan moeten we toch de default uitvoertijd bij de stdmelding
|
||||
-- invullen. Anders wordt de verkeerde eenheid bij respijt getoond.
|
||||
FOR rec IN c_upd_std
|
||||
LOOP
|
||||
UPDATE mld_stdmelding
|
||||
SET mld_stdmelding_t_uitvoertijd = mld_t_uitvoertijd (rec.tijdsduur, rec.eenheid)
|
||||
WHERE mld_stdmelding_key = rec.mld_stdmelding_key;
|
||||
END LOOP;
|
||||
|
||||
COMMIT;
|
||||
EXCEPTION
|
||||
WHEN OTHERS
|
||||
THEN
|
||||
v_aanduiding := v_errormsg || ' - ' || v_aanduiding;
|
||||
oracle_err_num := SQLCODE;
|
||||
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
||||
v_errormsg :=
|
||||
'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
||||
fac.imp_writelog (p_import_key,
|
||||
'E',
|
||||
SUBSTR (v_errormsg, 1, 1000),
|
||||
v_aanduiding);
|
||||
END;
|
||||
/
|
||||
|
||||
|
||||
------ 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
|
||||
Reference in New Issue
Block a user