MNNL#69794 Beheer certificaten (CERT-import+DAILY)
svn path=/Customer/trunk/; revision=63065
This commit is contained in:
644
MNNL/mnnl.sql
644
MNNL/mnnl.sql
@@ -3396,7 +3396,7 @@ AS
|
||||
WHERE ins_kenmerkdeel_key = v_kenmerkdeel_key;
|
||||
END IF;
|
||||
ELSE
|
||||
-- Verwijder kenmerken die als bestaan maar met de nieuwe import leeg zijn.
|
||||
-- Verwijder kenmerken die al bestaan maar met de nieuwe import leeg zijn.
|
||||
DELETE ins_kenmerkdeel
|
||||
WHERE ins_deel_key = p_deel_key
|
||||
AND ins_kenmerk_key = v_kenmerk_key;
|
||||
@@ -3766,6 +3766,648 @@ EXCEPTION
|
||||
END mnnl_update_eua;
|
||||
/
|
||||
|
||||
-- MNNL#69794: CERT-import (CERTificaten)!
|
||||
-- CommonName Beheerteam (Facilitor) Aanvrager Installateur EindDatum Product Omgeving Uitgever Definition Omschrijving certificaat
|
||||
CREATE OR REPLACE PROCEDURE mnnl_import_cert (p_import_key IN NUMBER)
|
||||
IS
|
||||
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 (500);
|
||||
header_is_valid NUMBER := 0;
|
||||
v_count_tot NUMBER (10) := 0;
|
||||
v_count_import NUMBER (10) := 0;
|
||||
v_ongeldig NUMBER (1);
|
||||
-- De importvelden:
|
||||
v_commonname VARCHAR2 (255);
|
||||
v_beheerteam VARCHAR2 (255);
|
||||
v_aanvrager VARCHAR2 (255);
|
||||
v_installateur VARCHAR2 (255);
|
||||
v_einddatum VARCHAR2 (255);
|
||||
v_product VARCHAR2 (255);
|
||||
v_omgeving VARCHAR2 (255);
|
||||
v_uitgever VARCHAR2 (255);
|
||||
v_definition VARCHAR2 (255);
|
||||
v_omschrijving_cert VARCHAR2 (255);
|
||||
|
||||
CURSOR c1
|
||||
IS
|
||||
SELECT * FROM fac_imp_file WHERE fac_import_key = p_import_key ORDER BY fac_imp_file_index;
|
||||
BEGIN
|
||||
DELETE FROM mnnl_imp_cert;
|
||||
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_commonname);
|
||||
fac.imp_getfield (v_newline, c_delim, v_beheerteam);
|
||||
fac.imp_getfield (v_newline, c_delim, v_aanvrager);
|
||||
fac.imp_getfield (v_newline, c_delim, v_installateur);
|
||||
fac.imp_getfield (v_newline, c_delim, v_einddatum);
|
||||
fac.imp_getfield (v_newline, c_delim, v_product);
|
||||
fac.imp_getfield (v_newline, c_delim, v_omgeving);
|
||||
fac.imp_getfield (v_newline, c_delim, v_uitgever);
|
||||
fac.imp_getfield (v_newline, c_delim, v_definition);
|
||||
fac.imp_getfield (v_newline, c_delim, v_omschrijving_cert);
|
||||
|
||||
v_aanduiding :=
|
||||
'['
|
||||
|| v_commonname
|
||||
|| '|'
|
||||
|| v_beheerteam
|
||||
|| '] ';
|
||||
|
||||
-- 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 (v_commonname) = 'COMMONNAME'
|
||||
AND UPPER (v_beheerteam) = 'BEHEERTEAM (FACILITOR)'
|
||||
AND UPPER (v_aanvrager) = 'AANVRAGER'
|
||||
AND UPPER (v_installateur) = 'INSTALLATEUR'
|
||||
AND UPPER (v_einddatum) = 'EINDDATUM'
|
||||
AND UPPER (v_product) = 'PRODUCT'
|
||||
AND UPPER (v_omgeving) = 'OMGEVING'
|
||||
AND UPPER (v_uitgever) = 'UITGEVER'
|
||||
AND UPPER (v_definition) = 'DEFINITION'
|
||||
AND UPPER (v_omschrijving_cert) = 'OMSCHRIJVING CERTIFICAAT'
|
||||
THEN
|
||||
header_is_valid := 1;
|
||||
END IF;
|
||||
ELSE
|
||||
v_count_tot := v_count_tot + 1;
|
||||
|
||||
-- Controleer alle veldwaarden
|
||||
v_errormsg := 'CommonName ongeldig; ongedefinieerd of te lang';
|
||||
v_commonname := TRIM (v_commonname);
|
||||
|
||||
IF v_commonname IS NULL OR LENGTH (v_commonname) > 60
|
||||
THEN
|
||||
v_ongeldig := 1;
|
||||
fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg, 'Regel wordt overgeslagen!');
|
||||
END IF;
|
||||
|
||||
--
|
||||
v_errormsg := 'Beheerteam (Facilitor) ongeldig; ongedefinieerd of te lang';
|
||||
v_beheerteam := TRIM (v_beheerteam);
|
||||
|
||||
IF v_beheerteam IS NULL OR LENGTH (v_beheerteam) > 60
|
||||
THEN
|
||||
v_ongeldig := 1;
|
||||
fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg, 'Regel wordt overgeslagen!');
|
||||
END IF;
|
||||
|
||||
--
|
||||
v_errormsg := 'EindDatum ongeldig; geen datum';
|
||||
v_einddatum := TRIM (v_einddatum);
|
||||
|
||||
IF v_einddatum IS NOT NULL AND fac.safe_to_date (v_einddatum, 'mm/dd/yy') IS NULL
|
||||
THEN
|
||||
v_ongeldig := 1;
|
||||
fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg, 'Regel wordt overgeslagen!');
|
||||
END IF;
|
||||
|
||||
--
|
||||
v_errormsg := 'Fout bufferen overige velden';
|
||||
v_aanvrager := TRIM (v_aanvrager);
|
||||
v_installateur := TRIM (v_installateur);
|
||||
v_product := TRIM (v_product);
|
||||
v_omgeving := TRIM (v_omgeving);
|
||||
v_uitgever := TRIM (v_uitgever);
|
||||
v_definition := TRIM (v_definition);
|
||||
v_omschrijving_cert := TRIM (v_omschrijving_cert);
|
||||
|
||||
-- Insert geformatteerde import record
|
||||
IF v_ongeldig = 0
|
||||
THEN
|
||||
BEGIN
|
||||
v_errormsg := 'Fout wegschrijven importregel';
|
||||
|
||||
INSERT INTO mnnl_imp_cert (commonname,
|
||||
beheerteam,
|
||||
aanvrager,
|
||||
installateur,
|
||||
einddatum,
|
||||
product,
|
||||
omgeving,
|
||||
uitgever,
|
||||
definition,
|
||||
omschrijving_cert)
|
||||
VALUES (v_commonname,
|
||||
v_beheerteam,
|
||||
v_aanvrager,
|
||||
v_installateur,
|
||||
fac.safe_to_date (v_einddatum, 'mm/dd/yy'),
|
||||
v_product,
|
||||
v_omgeving,
|
||||
v_uitgever,
|
||||
v_definition,
|
||||
v_omschrijving_cert);
|
||||
COMMIT;
|
||||
|
||||
v_count_import := v_count_import + 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, 'W', v_aanduiding || v_errormsg, '');
|
||||
COMMIT;
|
||||
END;
|
||||
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', 'CERT-objecten/#ingelezen importregels: ' || TO_CHAR (v_count_tot), '');
|
||||
fac.imp_writelog (p_import_key, 'S', 'CERT-objecten/#ongeldige niet ingelezen importregels: ' || TO_CHAR (v_count_tot - v_count_import), '');
|
||||
END IF;
|
||||
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 CERT-objecten afgebroken!');
|
||||
END mnnl_import_cert;
|
||||
/
|
||||
|
||||
CREATE OR REPLACE PROCEDURE mnnl_update_cert (p_import_key IN NUMBER)
|
||||
AS
|
||||
v_errormsg VARCHAR2 (1000);
|
||||
oracle_err_num NUMBER;
|
||||
oracle_err_mes VARCHAR2 (200);
|
||||
v_aanduiding VARCHAR2 (500);
|
||||
v_count NUMBER;
|
||||
|
||||
-- SUBPROC
|
||||
PROCEDURE upsert_inskenmerk (p_deel_key IN NUMBER,
|
||||
p_kenmerk_key IN NUMBER,
|
||||
p_waarde IN VARCHAR2)
|
||||
AS
|
||||
v_kenmerk_key NUMBER;
|
||||
v_srtkenmerk_key NUMBER;
|
||||
v_srtkenmerk_type VARCHAR2 (1);
|
||||
ccount NUMBER;
|
||||
v_waarde VARCHAR2 (255);
|
||||
v_objectnaam VARCHAR2 (30);
|
||||
v_kolomnaam VARCHAR2 (30);
|
||||
v_kolomtxt VARCHAR2 (30);
|
||||
sql_stmt VARCHAR2 (1000);
|
||||
v_kenmerkdeel_key NUMBER;
|
||||
l_cursor_1 INTEGER;
|
||||
l_rowsprocessed NUMBER DEFAULT 0;
|
||||
BEGIN
|
||||
IF p_kenmerk_key IS NOT NULL
|
||||
THEN
|
||||
v_errormsg := 'Fout bepalen kenmerk met key=' || p_kenmerk_key || '';
|
||||
|
||||
SELECT k.ins_kenmerk_key, sk.ins_srtkenmerk_key, sk.ins_srtkenmerk_kenmerktype
|
||||
INTO v_kenmerk_key, v_srtkenmerk_key, v_srtkenmerk_type
|
||||
FROM ins_deel d, ins_srtdeel sd, ins_srtgroep sg, ins_v_aanwezigkenmerk k, ins_v_aanwezigsrtkenmerk sk
|
||||
WHERE d.ins_deel_key = p_deel_key
|
||||
AND d.ins_srtdeel_key = sd.ins_srtdeel_key
|
||||
AND sd.ins_srtgroep_key = sg.ins_srtgroep_key
|
||||
AND k.ins_kenmerk_key = p_kenmerk_key
|
||||
AND ((k.ins_srtinstallatie_key = sd.ins_srtdeel_key AND k.ins_kenmerk_niveau = 'S')
|
||||
OR (k.ins_srtinstallatie_key = sg.ins_srtgroep_key AND k.ins_kenmerk_niveau = 'G')
|
||||
OR (k.ins_srtinstallatie_key = sg.ins_discipline_key AND k.ins_kenmerk_niveau = 'D'))
|
||||
AND k.ins_srtkenmerk_key = sk.ins_srtkenmerk_key;
|
||||
|
||||
IF p_waarde IS NOT NULL
|
||||
THEN
|
||||
IF v_srtkenmerk_type IN ('R', 'S')
|
||||
THEN
|
||||
v_errormsg := 'Fout bepalen eigen tabel';
|
||||
|
||||
SELECT COUNT ( * )
|
||||
INTO ccount
|
||||
FROM ins_srtkenmerk sk, fac_kenmerkdomein d
|
||||
WHERE sk.ins_srtkenmerk_key = v_srtkenmerk_key
|
||||
AND sk.fac_kenmerkdomein_key = d.fac_kenmerkdomein_key
|
||||
AND d.fac_usrtab_key IS NOT NULL;
|
||||
|
||||
v_errormsg := 'Fout bepalen nieuwe waarde [' || p_waarde || ']';
|
||||
|
||||
IF ccount = 1
|
||||
THEN -- Eigen tabel
|
||||
SELECT TO_CHAR (ud.fac_usrdata_key)
|
||||
INTO v_waarde
|
||||
FROM ins_srtkenmerk sk, fac_kenmerkdomein d, fac_v_aanwezigusrdata ud
|
||||
WHERE sk.ins_srtkenmerk_key = v_srtkenmerk_key
|
||||
AND sk.fac_kenmerkdomein_key = d.fac_kenmerkdomein_key
|
||||
AND d.fac_usrtab_key = ud.fac_usrtab_key
|
||||
AND UPPER (TRIM (ud.fac_usrdata_code)) = UPPER (p_waarde); -- Match op code in Eigen Tabel!
|
||||
ELSE -- FACILITOR view/tabel
|
||||
SELECT d.fac_kenmerkdomein_objectnaam, d.fac_kenmerkdomein_kolomnaam, d.fac_kenmerkdomein_kolomtxt
|
||||
INTO v_objectnaam, v_kolomnaam, v_kolomtxt
|
||||
FROM ins_srtkenmerk sk, fac_kenmerkdomein d
|
||||
WHERE sk.ins_srtkenmerk_key = v_srtkenmerk_key
|
||||
AND sk.fac_kenmerkdomein_key = d.fac_kenmerkdomein_key
|
||||
AND d.fac_usrtab_key IS NULL;
|
||||
|
||||
sql_stmt :=
|
||||
'SELECT MAX ('
|
||||
|| v_kolomnaam
|
||||
|| ') FROM '
|
||||
|| v_objectnaam
|
||||
|| ' WHERE UPPER (TRIM ('
|
||||
|| v_kolomtxt
|
||||
|| ')) = UPPER (:pwaarde)';
|
||||
l_cursor_1 := DBMS_SQL.open_cursor;
|
||||
DBMS_SQL.parse (l_cursor_1, sql_stmt, DBMS_SQL.native);
|
||||
DBMS_SQL.BIND_VARIABLE (l_cursor_1, ':pwaarde', p_waarde);
|
||||
DBMS_SQL.define_column (l_cursor_1, 1, v_waarde, 255);
|
||||
l_rowsprocessed := DBMS_SQL.execute_and_fetch (l_cursor_1);
|
||||
DBMS_SQL.COLUMN_VALUE (l_cursor_1, 1, v_waarde);
|
||||
DBMS_SQL.close_cursor (l_cursor_1);
|
||||
END IF;
|
||||
ELSE -- C(Karakter)/D(Datum)/N(Numeriek)/X(Bestandsnaam)
|
||||
v_waarde := p_waarde;
|
||||
END IF;
|
||||
|
||||
v_errormsg := 'Fout bepalen huidige waarde';
|
||||
|
||||
SELECT COUNT ( * ), MAX (ins_kenmerkdeel_key)
|
||||
INTO ccount, v_kenmerkdeel_key
|
||||
FROM ins_v_aanwezigkenmerkdeel
|
||||
WHERE ins_deel_key = p_deel_key
|
||||
AND ins_kenmerk_key = v_kenmerk_key;
|
||||
|
||||
IF ccount = 0
|
||||
THEN
|
||||
v_errormsg := 'Fout toevoegen waarde [' || v_waarde || ']';
|
||||
|
||||
INSERT INTO ins_kenmerkdeel (ins_deel_key, ins_kenmerk_key, ins_kenmerkdeel_waarde)
|
||||
VALUES (p_deel_key, v_kenmerk_key, v_waarde);
|
||||
ELSE
|
||||
v_errormsg := 'Fout bijwerken waarde [' || v_waarde || ']';
|
||||
|
||||
UPDATE ins_kenmerkdeel
|
||||
SET ins_kenmerkdeel_waarde = v_waarde
|
||||
WHERE ins_kenmerkdeel_key = v_kenmerkdeel_key;
|
||||
END IF;
|
||||
ELSE
|
||||
-- Verwijder kenmerken die al bestaan maar met de nieuwe import leeg zijn.
|
||||
DELETE ins_kenmerkdeel
|
||||
WHERE ins_deel_key = p_deel_key
|
||||
AND ins_kenmerk_key = v_kenmerk_key;
|
||||
END IF;
|
||||
END IF;
|
||||
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, 'W', v_aanduiding || v_errormsg, 'upsert_inskenmerk');
|
||||
COMMIT;
|
||||
END;
|
||||
|
||||
-- SUBPROC
|
||||
PROCEDURE add_deel (p_import_key IN NUMBER)
|
||||
AS
|
||||
CURSOR c1
|
||||
IS
|
||||
SELECT 'Certificaten' ins_discipline_omschrijving,
|
||||
'Certificaten' ins_srtgroep_omschrijving,
|
||||
'CERT' ins_srtdeel_code,
|
||||
'Certificaten' ins_srtdeel_omschrijving,
|
||||
commonname ins_deel_omschrijving,
|
||||
omschrijving_cert ins_deel_opmerking,
|
||||
NULL alg_locatie_code, NULL alg_gebouw_code, NULL alg_verdieping_volgnr, NULL alg_ruimte_nr,
|
||||
'A' prs_perslid_matchcode, 'IV' prs_perslid_matchwaarde, -- 10=IV=Informatievoorziening
|
||||
einddatum ins_deel_vervaldatum,
|
||||
beheerteam ins_kenmerkwaarde1,
|
||||
aanvrager ins_kenmerkwaarde2,
|
||||
installateur ins_kenmerkwaarde3,
|
||||
product ins_kenmerkwaarde4,
|
||||
omgeving ins_kenmerkwaarde5,
|
||||
uitgever ins_kenmerkwaarde6
|
||||
FROM mnnl_imp_cert
|
||||
ORDER BY 1, 2, 4, 5;
|
||||
|
||||
v_errormsg VARCHAR2 (1000);
|
||||
oracle_err_num NUMBER;
|
||||
oracle_err_mes VARCHAR2 (200);
|
||||
v_aanduiding VARCHAR2 (500) := '';
|
||||
v_count_tot NUMBER (10) := 0;
|
||||
v_count_create NUMBER (10) := 0;
|
||||
v_count_update NUMBER (10) := 0;
|
||||
v_discipline_key NUMBER (10);
|
||||
v_srtgroep_key NUMBER (10);
|
||||
v_srtdeel_key NUMBER (10);
|
||||
v_srtdeel_binding NUMBER (3);
|
||||
v_locatie_key NUMBER (10);
|
||||
v_gebouw_key NUMBER (10);
|
||||
v_verdieping_key NUMBER (10);
|
||||
v_ruimte_key NUMBER (10);
|
||||
v_ruimte_type VARCHAR2 (10);
|
||||
v_deel_key NUMBER (10);
|
||||
ccount NUMBER (10);
|
||||
BEGIN
|
||||
FOR rec IN c1
|
||||
LOOP
|
||||
BEGIN
|
||||
v_count_tot := v_count_tot + 1;
|
||||
v_aanduiding :=
|
||||
'['
|
||||
|| rec.ins_discipline_omschrijving
|
||||
|| '|'
|
||||
|| rec.ins_srtgroep_omschrijving
|
||||
|| '|'
|
||||
|| rec.ins_srtdeel_code
|
||||
|| '|'
|
||||
|| rec.ins_srtdeel_omschrijving
|
||||
|| '|'
|
||||
|| rec.ins_deel_omschrijving
|
||||
|| '|'
|
||||
|| COALESCE (rec.prs_perslid_matchwaarde, rec.alg_locatie_code || '-' || rec.alg_gebouw_code || '-' || TO_CHAR (rec.alg_verdieping_volgnr) || '-' || rec.alg_ruimte_nr)
|
||||
|| '] ';
|
||||
|
||||
v_errormsg := 'Fout bepalen INS-discipline';
|
||||
SELECT ins_discipline_key
|
||||
INTO v_discipline_key
|
||||
FROM ins_discipline
|
||||
WHERE ins_discipline_verwijder IS NULL
|
||||
AND ins_discipline_module = 'INS'
|
||||
AND UPPER (TRIM (ins_discipline_omschrijving)) = UPPER (rec.ins_discipline_omschrijving);
|
||||
|
||||
v_errormsg := 'Fout bepalen INS-groepsoort';
|
||||
SELECT ins_srtgroep_key
|
||||
INTO v_srtgroep_key
|
||||
FROM ins_srtgroep
|
||||
WHERE ins_srtgroep_verwijder IS NULL
|
||||
AND ins_srtgroep_module = 'INS'
|
||||
AND ins_discipline_key = v_discipline_key
|
||||
AND UPPER (TRIM (ins_srtgroep_omschrijving)) = UPPER (rec.ins_srtgroep_omschrijving);
|
||||
|
||||
v_errormsg := 'Fout bepalen INS-objectsoort';
|
||||
SELECT ins_srtdeel_key, ins_srtdeel_binding
|
||||
INTO v_srtdeel_key, v_srtdeel_binding
|
||||
FROM ins_srtdeel
|
||||
WHERE ins_srtdeel_verwijder IS NULL
|
||||
AND ins_srtdeel_module = 'INS'
|
||||
AND ins_srtgroep_key = v_srtgroep_key
|
||||
AND UPPER (TRIM (ins_srtdeel_omschrijving)) = UPPER (rec.ins_srtdeel_omschrijving);
|
||||
|
||||
v_locatie_key := NULL;
|
||||
v_gebouw_key := NULL;
|
||||
v_verdieping_key := NULL;
|
||||
v_ruimte_key := NULL;
|
||||
v_ruimte_type := NULL;
|
||||
|
||||
IF BITAND (v_srtdeel_binding, 1) = 1 AND rec.alg_locatie_code IS NOT NULL
|
||||
THEN -- Ruimtegebonden object
|
||||
v_errormsg := 'Fout bepalen locatie [' || rec.alg_locatie_code || ']';
|
||||
SELECT alg_locatie_key
|
||||
INTO v_locatie_key
|
||||
FROM alg_v_aanweziglocatie
|
||||
WHERE UPPER (TRIM (alg_locatie_code)) = UPPER (rec.alg_locatie_code);
|
||||
|
||||
v_errormsg := 'Fout bepalen gebouw [' || rec.alg_gebouw_code || ']';
|
||||
SELECT alg_gebouw_key
|
||||
INTO v_gebouw_key
|
||||
FROM alg_v_aanweziggebouw
|
||||
WHERE alg_locatie_key = v_locatie_key
|
||||
AND UPPER (TRIM (alg_gebouw_code)) = UPPER (rec.alg_gebouw_code);
|
||||
|
||||
v_errormsg := 'Fout bepalen verdieping [' || rec.alg_verdieping_volgnr || ']';
|
||||
SELECT alg_verdieping_key
|
||||
INTO v_verdieping_key
|
||||
FROM alg_v_aanwezigverdieping
|
||||
WHERE alg_gebouw_key = v_gebouw_key
|
||||
AND alg_verdieping_volgnr = rec.alg_verdieping_volgnr;
|
||||
|
||||
v_errormsg := 'Fout bepalen ruimte [' || rec.alg_ruimte_nr || ']';
|
||||
SELECT alg_ruimte_key
|
||||
INTO v_ruimte_key
|
||||
FROM alg_v_aanwezigruimte
|
||||
WHERE alg_verdieping_key = v_verdieping_key
|
||||
AND TRIM (alg_ruimte_upper_nr) = UPPER (rec.alg_ruimte_nr);
|
||||
|
||||
-- Ruimtegebonden objecten hebben een unieke ID (bij MN; in FACILITOR moet dat binnen locatie)!
|
||||
v_ruimte_type := 'R';
|
||||
v_errormsg := 'Fout (uniek) bepalen R-object';
|
||||
ELSIF BITAND (v_srtdeel_binding, 8) = 8 AND rec.prs_perslid_matchcode = 'A' -- Afdelinsgebonden object
|
||||
THEN
|
||||
v_errormsg := 'Fout bepalen afdeling [' || rec.prs_perslid_matchwaarde || ']';
|
||||
SELECT prs_afdeling_key
|
||||
INTO v_ruimte_key
|
||||
FROM prs_afdeling
|
||||
WHERE prs_afdeling_verwijder IS NULL
|
||||
AND prs_afdeling_upper = UPPER (rec.prs_perslid_matchwaarde);
|
||||
|
||||
-- Afdelingsgebonden objecten hebben een unieke ID!
|
||||
v_ruimte_type := 'A';
|
||||
v_errormsg := 'Fout (uniek) bepalen A-object';
|
||||
ELSIF BITAND (v_srtdeel_binding, 16) = 16 AND rec.prs_perslid_matchcode = 'P' -- Persoonsgebonden object
|
||||
THEN
|
||||
v_errormsg := 'Fout bepalen persoon [' || rec.prs_perslid_matchwaarde || ']';
|
||||
SELECT prs_perslid_key
|
||||
INTO v_ruimte_key
|
||||
FROM prs_perslid
|
||||
WHERE prs_perslid_verwijder IS NULL
|
||||
AND prs_perslid_oslogin = UPPER (rec.prs_perslid_matchwaarde);
|
||||
|
||||
-- Persoonsgebonden objecten hebben een unieke ID!
|
||||
v_ruimte_type := 'P';
|
||||
v_errormsg := 'Fout (uniek) bepalen P-object';
|
||||
END IF;
|
||||
|
||||
IF v_ruimte_key IS NULL
|
||||
THEN
|
||||
fac.imp_writelog (p_import_key, 'W', v_aanduiding || 'Fout bepalen R-, A- of P-binding', COALESCE (rec.prs_perslid_matchcode, 'R'));
|
||||
ELSE
|
||||
SELECT COUNT ( * )
|
||||
INTO ccount
|
||||
FROM ins_v_aanwezigdeel
|
||||
WHERE ins_deel_module = 'INS'
|
||||
AND ins_srtdeel_key = v_srtdeel_key
|
||||
AND TRIM (ins_deel_upper) = UPPER (rec.ins_deel_omschrijving);
|
||||
|
||||
IF ccount = 0 -- Object bestaat nog niet, dus toevoegen!
|
||||
THEN
|
||||
v_errormsg := 'Fout toevoegen INS-object';
|
||||
INSERT INTO ins_deel (ins_deel_module,
|
||||
ins_srtdeel_key,
|
||||
ins_alg_ruimte_key,
|
||||
ins_alg_ruimte_type,
|
||||
ins_deel_omschrijving,
|
||||
ins_deel_opmerking,
|
||||
ins_deel_vervaldatum,
|
||||
ins_discipline_key,
|
||||
ins_alg_locatie_key)
|
||||
VALUES ('INS',
|
||||
v_srtdeel_key,
|
||||
v_ruimte_key,
|
||||
v_ruimte_type,
|
||||
rec.ins_deel_omschrijving,
|
||||
rec.ins_deel_opmerking,
|
||||
rec.ins_deel_vervaldatum,
|
||||
v_discipline_key,
|
||||
v_locatie_key)
|
||||
RETURNING ins_deel_key
|
||||
INTO v_deel_key;
|
||||
COMMIT;
|
||||
|
||||
--v_srtnoti_code := 'INSNEW';
|
||||
v_count_create := v_count_create + 1;
|
||||
ELSE -- Object bestaat reeds!
|
||||
v_errormsg := 'Fout bijwerken INS-object';
|
||||
SELECT d.ins_deel_key
|
||||
INTO v_deel_key
|
||||
FROM ins_deel d
|
||||
WHERE ins_deel_verwijder IS NULL
|
||||
AND ins_deel_module = 'INS'
|
||||
AND ins_srtdeel_key = v_srtdeel_key
|
||||
AND TRIM (ins_deel_upper) = UPPER (rec.ins_deel_omschrijving);
|
||||
|
||||
UPDATE ins_deel
|
||||
SET ins_alg_ruimte_key = v_ruimte_key,
|
||||
ins_alg_ruimte_type = v_ruimte_type,
|
||||
ins_deel_opmerking = rec.ins_deel_opmerking,
|
||||
ins_deel_vervaldatum = rec.ins_deel_vervaldatum,
|
||||
ins_alg_locatie_key = v_locatie_key,
|
||||
ins_alg_ruimte_key_org = NULL,
|
||||
ins_alg_ruimte_type_org = NULL
|
||||
WHERE ins_deel_key = v_deel_key;
|
||||
COMMIT;
|
||||
|
||||
--v_srtnoti_code := 'INSUPD';
|
||||
v_count_update := v_count_update + 1;
|
||||
END IF;
|
||||
|
||||
-- NULL-waarden resulteren NIET in het wissen van kenmerkvelden
|
||||
-- (bijwerken kan wel, maar wissen dus niet)!
|
||||
upsert_inskenmerk (v_deel_key, 401, rec.ins_kenmerkwaarde1); -- Beheerteam
|
||||
upsert_inskenmerk (v_deel_key, 402, rec.ins_kenmerkwaarde2); -- Aanvrager
|
||||
upsert_inskenmerk (v_deel_key, 403, rec.ins_kenmerkwaarde3); -- Installateur
|
||||
upsert_inskenmerk (v_deel_key, 404, rec.ins_kenmerkwaarde4); -- Product
|
||||
upsert_inskenmerk (v_deel_key, 405, rec.ins_kenmerkwaarde5); -- Omgeving
|
||||
upsert_inskenmerk (v_deel_key, 406, rec.ins_kenmerkwaarde6); -- Uitgever
|
||||
END IF;
|
||||
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, 'W', v_aanduiding || v_errormsg, '');
|
||||
COMMIT;
|
||||
END;
|
||||
END LOOP;
|
||||
|
||||
fac.imp_writelog (p_import_key, 'S', 'INS-Objecten/#ingelezen: ' || TO_CHAR (v_count_tot), '');
|
||||
fac.imp_writelog (p_import_key, 'S', 'INS-Objecten/#toegevoegd: ' || TO_CHAR (v_count_create), '');
|
||||
fac.imp_writelog (p_import_key, 'S', 'INS-Objecten/#bijgewerkt: ' || TO_CHAR (v_count_update), '');
|
||||
COMMIT;
|
||||
END;
|
||||
|
||||
-- SUBPROC
|
||||
PROCEDURE del_deel (p_import_key IN NUMBER)
|
||||
AS
|
||||
CURSOR c1
|
||||
IS
|
||||
SELECT id.ins_discipline_omschrijving,
|
||||
sg.ins_srtgroep_omschrijving,
|
||||
sd.ins_srtdeel_code,
|
||||
sd.ins_srtdeel_omschrijving,
|
||||
d.ins_deel_omschrijving,
|
||||
d.ins_deel_key
|
||||
FROM ins_v_aanwezigdeel d,
|
||||
ins_v_aanwezigsrtdeel sd,
|
||||
ins_v_aanwezigsrtgroep sg,
|
||||
ins_discipline id,
|
||||
mnnl_imp_cert ic
|
||||
WHERE d.ins_srtdeel_key = sd.ins_srtdeel_key
|
||||
AND sd.ins_srtgroep_key = sg.ins_srtgroep_key
|
||||
AND sg.ins_discipline_key = id.ins_discipline_key
|
||||
AND id.ins_discipline_key = 3421 -- TODO:Certificaten
|
||||
AND NOT EXISTS (SELECT 1 FROM mnnl_imp_cert WHERE UPPER (commonname) = d.ins_deel_upper)
|
||||
ORDER BY 1, 2, 4, 5;
|
||||
|
||||
v_errormsg VARCHAR2 (1000);
|
||||
oracle_err_num NUMBER;
|
||||
oracle_err_mes VARCHAR2 (200);
|
||||
v_aanduiding VARCHAR2 (500):= '';
|
||||
v_count_delete NUMBER (10) := 0;
|
||||
BEGIN
|
||||
FOR rec IN c1
|
||||
LOOP
|
||||
BEGIN
|
||||
v_aanduiding :=
|
||||
'['
|
||||
|| rec.ins_discipline_omschrijving
|
||||
|| '|'
|
||||
|| rec.ins_srtgroep_omschrijving
|
||||
|| '|'
|
||||
|| rec.ins_srtdeel_code
|
||||
|| '|'
|
||||
|| rec.ins_srtdeel_omschrijving
|
||||
|| '|'
|
||||
|| rec.ins_deel_omschrijving
|
||||
|| '] ';
|
||||
|
||||
v_errormsg := 'Fout verwijderen INS-object';
|
||||
--DELETE FROM ins_deel
|
||||
-- WHERE ins_deel_key = rec.ins_deel_key;
|
||||
UPDATE ins_deel
|
||||
SET ins_deel_verwijder = SYSDATE
|
||||
WHERE ins_deel_key = rec.ins_deel_key;
|
||||
COMMIT;
|
||||
|
||||
v_count_delete := v_count_delete + 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, 'W', v_aanduiding || v_errormsg, '');
|
||||
COMMIT;
|
||||
END;
|
||||
END LOOP;
|
||||
|
||||
fac.imp_writelog (p_import_key, 'S', 'INS-Objecten/#vervallen: ' || TO_CHAR (v_count_delete), '');
|
||||
COMMIT;
|
||||
END;
|
||||
-- MAIN
|
||||
BEGIN
|
||||
SELECT COUNT ( * ) INTO v_count FROM mnnl_imp_cert;
|
||||
|
||||
IF v_count = 0
|
||||
THEN
|
||||
fac.imp_writelog (p_import_key, 'E', 'Niets te importeren!', '');
|
||||
RETURN;
|
||||
END IF;
|
||||
|
||||
add_deel (p_import_key);
|
||||
--del_deel (p_import_key);
|
||||
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_errormsg, 'Importproces CERT-objecten afgebroken!');
|
||||
END mnnl_update_cert;
|
||||
/
|
||||
|
||||
|
||||
-- MNNL#41653: Mail2Melding voor 2 stromen (nimbus@ + hr@).
|
||||
-- MNNL#53176: Mail2Existing ticket/notitie (melding@).
|
||||
|
||||
Reference in New Issue
Block a user