WDKA#82091 -- TD-keuringchecklisten digitaal in Facilitor

svn path=/Customer/trunk/; revision=63583
This commit is contained in:
Norbert Wassink
2024-02-13 09:08:35 +00:00
parent 9d8c630208
commit 2f1aa546d7

View File

@@ -664,6 +664,336 @@ BEGIN
END;
/
CREATE OR REPLACE PROCEDURE WDKA_IMPORT_TAAKFORMULIER(p_import_key IN NUMBER)
AS
CURSOR c1
IS
SELECT *
FROM fac_imp_file
WHERE fac_import_key = p_import_key
ORDER BY fac_imp_file_index;
v_newline VARCHAR2 (10000); -- Import line
v_field VARCHAR2 (100); -- Import field
v_fielddelimitor VARCHAR2 (2) := fac.import_delimiter(p_import_key); -- Field seperator
v_count_tot NUMBER (10);
v_count NUMBER;
v_errormsg VARCHAR2 (200);
v_errorhint VARCHAR2 (200);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
-- Import velden
v_discipline VARCHAR2 (300);
v_objectgroep VARCHAR2 (300);
v_objectsoort VARCHAR2 (300);
v_objectsoortcode VARCHAR2 (300);
v_taakcategorie VARCHAR2 (300);
v_taak VARCHAR2 (300);
v_srtkenmerk_oms VARCHAR2 (300);
v_kenmerk_omschr VARCHAR2 (300);
v_kenmerk_hint VARCHAR2 (300);
v_kenmerk_volgnr VARCHAR2 (300);
v_kenmerk_verplicht VARCHAR2 (300);
v_kenmerk_extra VARCHAR2 (300);
v_kenmerk_default VARCHAR2 (300);
v_kenmerk_toonbaar VARCHAR2(10);
v_srtkenmerk_key NUMBER;
header_is_valid NUMBER;
BEGIN
v_count:=0;
v_count_tot := 0;
header_is_valid:=0;
v_kenmerk_toonbaar:=0;
v_kenmerk_default:='';
DELETE FROM fac_imp_flex;
FOR rec1 IN c1
LOOP
BEGIN
v_newline := rec1.fac_imp_file_line;
fac.imp_getfield (v_newline, v_fielddelimitor, v_discipline);
fac.imp_getfield (v_newline, v_fielddelimitor, v_objectgroep);
fac.imp_getfield (v_newline, v_fielddelimitor, v_objectsoortcode);
fac.imp_getfield (v_newline, v_fielddelimitor, v_objectsoort);
fac.imp_getfield (v_newline, v_fielddelimitor, v_taakcategorie);
fac.imp_getfield (v_newline, v_fielddelimitor, v_taak);
fac.imp_getfield (v_newline, v_fielddelimitor, v_srtkenmerk_oms);
fac.imp_getfield (v_newline, v_fielddelimitor, v_kenmerk_omschr);
fac.imp_getfield (v_newline, v_fielddelimitor, v_kenmerk_volgnr);
fac.imp_getfield (v_newline, v_fielddelimitor, v_kenmerk_verplicht);
fac.imp_getfield (v_newline, v_fielddelimitor, v_kenmerk_hint);
fac.imp_getfield (v_newline, v_fielddelimitor, v_kenmerk_extra);
IF (header_is_valid = 0)
THEN
IF UPPER (v_discipline)='DISCIPLINEOMSCHRIJVING'
AND UPPER (v_objectgroep)='GROEPSOORTOMSCHRIJVING'
AND UPPER (v_objectsoortcode)='OBJECTSOORTCODE'
AND UPPER (v_objectsoort)='OBJECTSOORTOMSCHRIJVING'
AND UPPER (v_taakcategorie)='TAAK CATEGORIE'
AND UPPER (v_taak)='TAAK'
AND UPPER (v_srtkenmerk_oms)='KENMERKSOORT_OMSCHRIJVING'
AND UPPER (v_kenmerk_omschr)='KENMERK OMSCHRIJVING'
AND UPPER (v_kenmerk_volgnr)='VOLGNR'
AND UPPER (v_kenmerk_verplicht)='VERPLICHT'
AND UPPER (v_kenmerk_hint)='HINT'
AND UPPER (v_kenmerk_extra)='EXTRA_1'
THEN
header_is_valid := 1;
END IF;
ELSE
v_count_tot := v_count_tot + 1;
-- Eerst kijken of de gekozen srtkenmerk wel aanwezig zijn
SELECT COUNT(*), MAX(isk.ins_srtkenmerk_key)
INTO v_count , v_srtkenmerk_key
FROM ins_srtkenmerk isk
WHERE UPPER(isk.INS_SRTKENMERK_OMSCHRIJVING)=UPPER(v_srtkenmerk_oms)
AND isk.ins_srtkenmerk_verwijder IS NULL;
IF v_count=1 THEN
INSERT INTO fac_imp_flex (
SRTKENMERK_OMSCHRIJVING,
kenmerk_niveau,
kenmerk_verplicht,
kenmerk_volgnummer,
kenmerk_hint,
kenmerk_omschr,
ins_discipline,
ins_srtgroep,
ins_srtdeel,
kenmerk_extra_1,
kenmerk_extra_2,
kenmerk_extra_3 -- 45
)
VALUES (
SUBSTR (v_srtkenmerk_oms, 1, 255), -- 1
'C',
SUBSTR (v_kenmerk_verplicht, 1, 255),
SUBSTR (v_kenmerk_volgnr, 1, 255),
SUBSTR (v_kenmerk_hint, 1, 255),
SUBSTR (v_kenmerk_omschr, 1, 255),
SUBSTR (v_discipline, 1, 255),
SUBSTR (v_objectgroep, 1, 255),
SUBSTR (v_objectsoortcode, 1, 255),
SUBSTR (v_taakcategorie, 1, 255), -- 10
SUBSTR (v_taak, 1, 255),
v_srtkenmerk_key
);
ELSE
fac.imp_writelog (p_import_key,
'W',
'srtkenmerk '|| v_srtkenmerk_oms||' niet gevonden',
'srtkenmerk niet gevonden maak deze eerst aan');
END IF;
END IF;
END;
END LOOP;
IF (header_is_valid = 0)
THEN
fac.imp_writelog (p_import_key,
'W',
'Ongeldig importbestand',
'Geen header of header niet volgens specificatie!'
);
ELSE
fac.imp_writelog (p_import_key, 'S', 'Aantal ingelezen regels (CTR): ' || TO_CHAR (v_count_tot), '');
END IF;
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg := '(ORACLE error ' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key, 'W', v_errormsg, '');
END;
/
CREATE OR REPLACE PROCEDURE WDKA_UPDATE_TAAKFORMULIER(p_import_key IN NUMBER)
AS
CURSOR c_flex
IS
SELECT * FROM fac_imp_flex
ORDER BY srtkenmerk_omschrijving, kenmerk_volgnummer;
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (250);
v_errormsg VARCHAR2 (1024);
v_errorhint VARCHAR2 (1024);
v_count NUMBER;
v_insdiscipline_key NUMBER;
v_srtgroep_key NUMBER;
v_srtdeel_key NUMBER;
v_ins_srtcontrole_key NUMBER;
v_ctr_categorie_key NUMBER;
v_kenmerk_key NUMBER;
v_desc VARCHAR2 (255);
v_error NUMBER;
BEGIN
v_error:=0;
FOR rec in c_flex
LOOP
SELECT COUNT(*), MAX(id.ins_discipline_key)
INTO v_count, v_insdiscipline_key
FROM ins_discipline id
WHERE id.INS_DISCIPLINE_OMSCHRIJVING=rec.ins_discipline
AND id.ins_discipline_verwijder IS NULL;
IF v_count>0 THEN
SELECT COUNT(*), MAX(ins_srtgroep_key)
INTO v_count, v_srtgroep_key
FROM ins_srtgroep isg
WHERE isg.ins_srtgroep_upper=UPPER(rec.ins_srtgroep)
AND isg.ins_discipline_key = v_insdiscipline_key
AND isg.ins_srtgroep_verwijder IS NULL;
ELSE
v_error:=1;
v_errormsg:='ins_disicpline '|| rec.ins_discipline||' niet gevonden';
END IF;
IF v_count>0 THEN
SELECT COUNT(*), MAX(ins_srtdeel_key)
INTO v_count, v_srtdeel_key
FROM ins_srtdeel isd
WHERE isd.ins_srtdeel_code=rec.ins_srtdeel
AND isd.ins_srtgroep_key= v_srtgroep_key
AND isd.ins_srtdeel_verwijder IS NULL;
ELSE
v_errormsg:='soortgroep '|| rec.ins_srtgroep||' niet gevonden';
v_error:=1;
END IF;
IF v_count> 0 THEN
SELECT COUNT(*), MAX(ins_discipline_key)
INTO v_count, v_ctr_categorie_key
FROM ins_tab_discipline
where UPPER(ins_discipline_omschrijving)=UPPER(rec.kenmerk_extra_1)
AND ins_discipline_module='CTR'
AND ins_discipline_verwijder IS NULL;
ELSE
v_errormsg:='soortdeel '|| rec.ins_srtdeel||' niet gevonden';
v_error:=1;
END IF;
IF v_count>0 THEN
SELECT COUNT(*) , MAX(isc.ins_srtcontrole_key)
INTO v_count, v_ins_srtcontrole_key
FROM ins_srtcontrole isc
WHERE isc.ins_srtcontrole_omschrijving= rec.kenmerk_extra_2
AND isc.ctr_discipline_key = v_ctr_categorie_key
AND isc.ins_srtinstallatie_key=v_srtdeel_key
AND ins_srtcontrole_niveau='S';
ELSE
v_errormsg:='Taak categoriel '|| rec.ins_srtdeel||' niet gevonden';
v_error:=1;
END IF;
v_desc := rec.srtkenmerk_omschrijving || ' (' || rec.ins_discipline || '/' || rec.ins_srtgroep || '/' || rec.ins_srtdeel || ')';
IF v_error=0 AND v_ins_srtcontrole_key>0 THEN
-- Eerst gaan we nu bepalen of het kenmerk er al is
SELECT COUNT ( * ), MIN(ins_kenmerk_key)
INTO v_count, v_kenmerk_key
FROM ins_kenmerk
WHERE ins_srtkenmerk_key = fac.safe_to_number(rec.kenmerk_extra_3)
AND ins_kenmerk_niveau = rec.kenmerk_niveau
AND ins_kenmerk_bewerkniveau = 'D'
AND ins_srtinstallatie_key = v_ins_srtcontrole_key
AND (ins_kenmerk_omschrijving = rec.kenmerk_omschr
OR (rec.kenmerk_omschr IS NULL AND ins_kenmerk_omschrijving IS NULL))
AND ins_kenmerk_verwijder IS NULL;
IF v_count=0
THEN
-- Hij bestaat nog niet
INSERT INTO ins_kenmerk (
ins_srtkenmerk_key,
ins_srtinstallatie_key,
ins_kenmerk_niveau,
ins_kenmerk_bewerkniveau,
ins_kenmerk_verplicht,
ins_kenmerk_groep,
ins_kenmerk_volgnummer,
ins_kenmerk_hint,
ins_kenmerk_omschrijving
)
VALUES (
fac.safe_to_number(rec.kenmerk_extra_3),
v_ins_srtcontrole_key,
rec.kenmerk_niveau,
'D',
fac.safe_to_number (rec.kenmerk_verplicht),
0,
fac.safe_to_number (rec.kenmerk_volgnummer),
rec.kenmerk_hint,
rec.kenmerk_omschr
)
RETURNING ins_kenmerk_key
INTO v_kenmerk_key;
fac.imp_writelog (p_import_key, 'I', 'Kenmerk toegevoegd', v_desc || ' (' || v_kenmerk_key || ')');
ELSE
UPDATE ins_kenmerk
SET ins_srtkenmerk_key = fac.safe_to_number(rec.kenmerk_extra_3),
ins_srtinstallatie_key = v_ins_srtcontrole_key,
ins_kenmerk_volgnummer = fac.safe_to_number (rec.kenmerk_volgnummer),
ins_kenmerk_hint = rec.kenmerk_hint,
ins_kenmerk_verplicht = fac.safe_to_number (rec.kenmerk_verplicht),
ins_kenmerk_omschrijving = rec.kenmerk_omschr
WHERE ins_kenmerk_key = v_kenmerk_key
AND ins_kenmerk_verwijder IS NULL;
fac.imp_writelog (p_import_key, 'I', 'Kenmerk gewijzigd', v_desc || ' (' || v_kenmerk_key || ')');
END IF;
ELSE
IF v_count=0 THEN
v_errormsg:='Taak '|| rec.kenmerk_extra_2||'/'||v_insdiscipline_key||'-'||'-'||v_srtgroep_key||'-'||v_srtdeel_key||' niet gevonden';
END IF;
fac.imp_writelog (p_import_key,
'W',
v_errormsg,
'' );
END IF;
END LOOP;
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
ROLLBACK;
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg := '(ORACLE error ' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key, 'W', v_errormsg, '');
COMMIT;
END;
/
CREATE OR REPLACE PROCEDURE WDKA_IMPORT_INSPECTIES(p_import_key IN NUMBER)
AS
@@ -2987,6 +3317,29 @@ AS
AND ins.ins_deel_key = mo.ins_deel_key;
CREATE OR REPLACE VIEW WDKA_V_TAAKFORMULIEREN
(
ins_srtcontrole_key,
taak_omschrijving,
objectsoort_code,
objectsoort,
formuliernaam
)
AS
SELECT isc.ins_srtcontrole_key,
isc.ins_srtcontrole_omschrijving,
isd.ins_srtdeel_code,
isd.ins_srtdeel_omschrijving,
ik.ins_kenmerk_omschrijving
FROM ins_srtcontrole isc,
ins_srtdeel isd,
ins_kenmerk ik,
ins_srtkenmerk isk
WHERE isc.ctr_discipline_key = 84
AND isd.ins_srtdeel_key = isc.ins_srtinstallatie_key
AND ik.ins_srtinstallatie_key = isc.ins_srtcontrole_key
AND UPPER(isk.ins_srtkenmerk_omschrijving) = 'BLOKTITEL'
AND ik.ins_srtkenmerk_key = isk.ins_srtkenmerk_key;
-- notificatie jobs