MNNL#69794 Beheer certificaten (CERT-import+DAILY)

svn path=/Customer/trunk/; revision=63065
This commit is contained in:
Maarten van der Heide
2023-12-28 16:05:31 +00:00
parent 8b2328be79
commit dee0cce8c6

View File

@@ -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@).