WDKA#68779 -- Inrichten Wedeka

svn path=/Customer/trunk/; revision=53626
This commit is contained in:
Norbert Wassink
2021-11-08 14:49:36 +00:00
parent 704162dcbf
commit 268c6f522a

406
WDKA/WDKA.sql Normal file
View File

@@ -0,0 +1,406 @@
--
-- $Id$
--
-- Script containing customer specific sql statements for the FACILITOR database
-- Voor dbuser invullen: - indien script voor 1 klant is: 'AADS' (de klantcode, zoals vermeld in fac_version_cust)
-- - script is voor meerdere klanten: 'AAXX' (de groepcode, zoals vermeld in fac_version_group)
-- - script is voor meerdere klanten met naam volgens een bepaald patroon: '^AA|^ASMS|^GULU|^NMMS|^RABO|^ZKHM'
-- Ook als het script gedraaid wordt voor de verkeerde cust wordt er een logfile gemaakt.
-- (dit in tegenstelling tot sample_xxxx.sql)
DEFINE thisfile = 'WDKA.SQL'
DEFINE dbuser = 'WDKA'
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 WDKA_IMPORT_SMARTWARE(p_import_key IN NUMBER)
AS
c_delim VARCHAR2 (1) := ';';
header_is_valid NUMBER;
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_newline VARCHAR2 (4000);
v_ongeldig NUMBER (1) := 0; -- 0= Goed, 1= Error, 2=Waarschuwing
v_aanduiding VARCHAR2 (1000) := '';
v_smartwareID VARCHAR2(50);
v_omschrijving VARCHAR2(50);
v_laatste_datum_str VARCHAR2(50);
v_laatste_datum DATE;
v_laatste_resultaat VARCHAR2(50);
v_visueel VARCHAR2(50);
v_aarde VARCHAR2(50);
v_aarde_eenheid VARCHAR2(50);
v_aarde_resultaat VARCHAR2(50);
v_lekstroom VARCHAR2(50);
v_lekstroom_eenheid VARCHAR2(50);
v_lekstroom_resultaat VARCHAR2(50);
v_aanrk_lekstroom VARCHAR2(50);
v_aanrk_lekstroom_eenheid VARCHAR2(50);
v_aanrk_lekstroom_resultaat VARCHAR2(50);
v_verv_lekstroom VARCHAR2(50);
v_verv_lekstroom_eenheid VARCHAR2(50);
v_verv_lekstroom_resultaat VARCHAR2(50);
v_isolatie VARCHAR2(50);
v_isolatie_eenheid VARCHAR2(50);
v_isolatie_resultaat VARCHAR2(50);
v_bedrading VARCHAR2(50);
v_bedrading_eenheid VARCHAR2(50);
v_bedrading_resultaat VARCHAR2(50);
v_gebruikertest VARCHAR2(50);
v_gebruiker_waarde VARCHAR2(50);
v_gebruiker_eenheid VARCHAR2(50);
v_gebruiker_resultaat VARCHAR2(50);
v_volgende_testdatum_str VARCHAR2(50);
v_volgende_testdatum DATE;
v_laatste_vis_test_str VARCHAR2(50);
v_laatste_vis_test DATE;
v_laatste_vis_resultaat VARCHAR2(50);
v_next_vis_test_str VARCHAR2(50);
v_next_vis_test DATE;
CURSOR c1 IS
SELECT *
FROM fac_imp_file
WHERE fac_import_key = p_import_key
ORDER BY fac_imp_file_index;
BEGIN
v_aanduiding := 'Start inlees process';
header_is_valid := 0;
DELETE FROM WDKA_IMP_SMARTWARE;
COMMIT;
FOR rec IN c1
LOOP
BEGIN
v_aanduiding := 'Lees regel';
v_newline := REPLACE(rec.fac_imp_file_line,chr(9),'');
v_aanduiding := 'Lees velden in';
fac.imp_getfield_nr (v_newline, c_delim, 1, v_smartwareID);
fac.imp_getfield_nr (v_newline, c_delim,2, v_omschrijving);
fac.imp_getfield_nr (v_newline, c_delim,3, v_laatste_datum_str);
fac.imp_getfield_nr (v_newline, c_delim,4, v_laatste_resultaat);
-- fac.imp_getfield (v_newline, c_delim, v_visueel);
v_aanduiding := 'Lees velden in 1';
fac.imp_getfield_nr (v_newline, c_delim, 6, v_aarde);
fac.imp_getfield_nr (v_newline, c_delim, 7, v_aarde_eenheid);
fac.imp_getfield_nr (v_newline, c_delim, 8, v_aarde_resultaat);
fac.imp_getfield_nr (v_newline, c_delim, 9, v_lekstroom);
fac.imp_getfield_nr (v_newline, c_delim, 10, v_lekstroom_eenheid);
fac.imp_getfield_nr (v_newline, c_delim, 11, v_lekstroom_resultaat);
v_aanduiding := 'Lees velden in2';
fac.imp_getfield_nr (v_newline, c_delim, 12, v_aanrk_lekstroom);
fac.imp_getfield_nr (v_newline, c_delim, 13, v_aanrk_lekstroom_eenheid);
fac.imp_getfield_nr (v_newline, c_delim, 14, v_aanrk_lekstroom_resultaat);
fac.imp_getfield_nr (v_newline, c_delim, 15, v_verv_lekstroom);
fac.imp_getfield_nr (v_newline, c_delim, 16, v_verv_lekstroom_eenheid);
fac.imp_getfield_nr (v_newline, c_delim, 17, v_verv_lekstroom_resultaat);
v_aanduiding := 'Lees velden in 3';
fac.imp_getfield_nr (v_newline, c_delim, 18, v_isolatie);
fac.imp_getfield_nr (v_newline, c_delim, 19, v_isolatie_eenheid);
fac.imp_getfield_nr (v_newline, c_delim, 20, v_isolatie_resultaat);
fac.imp_getfield_nr (v_newline, c_delim, 28, v_volgende_testdatum_str);
-- fac.imp_getfield (v_newline, c_delim, v_bedrading);
-- fac.imp_getfield (v_newline, c_delim, v_bedrading_eenheid);
-- fac.imp_getfield (v_newline, c_delim, v_bedrading_resultaat);
-- fac.imp_getfield (v_newline, c_delim, v_gebruikertest);
-- fac.imp_getfield (v_newline, c_delim, v_gebruiker_waarde);
-- fac.imp_getfield (v_newline, c_delim, v_gebruiker_eenheid);
-- fac.imp_getfield (v_newline, c_delim, v_gebruiker_resultaat);
-- fac.imp_getfield (v_newline, c_delim, v_laatste_vis_test_str);
-- fac.imp_getfield (v_newline, c_delim, v_laatste_vis_resultaat);
-- fac.imp_getfield (v_newline, c_delim, v_next_vis_test_str);
v_aanduiding := 'Valideer Headers';
IF (header_is_valid = 0)
THEN
IF UPPER (TRIM (v_smartwareID)) = 'TESTOBJECT NUMMER'
AND UPPER (TRIM (v_omschrijving)) = 'OMSCHRIJVING'
AND UPPER (TRIM (v_laatste_datum_str)) = 'LAATSTE TESTDATUM'
AND UPPER (TRIM (v_laatste_resultaat)) = 'LAATSTE TESTRESULTAAT'
AND UPPER (TRIM (v_aarde)) = 'AARDE'
AND UPPER (TRIM (v_aarde_eenheid)) = 'AARDE EENHEID'
AND UPPER (TRIM (v_aarde_resultaat)) = 'AARDE RESULTAAT'
AND UPPER (TRIM (v_lekstroom)) = 'LEKSTROOM'
AND UPPER (TRIM (v_lekstroom_eenheid)) = 'LEKSTROOM EENHEID'
AND UPPER (TRIM (v_lekstroom_resultaat)) = 'LEKSTROOM RESULTAAT'
AND UPPER (TRIM (v_aanrk_lekstroom)) = 'AANRAAK LEKSTROOM'
AND UPPER (TRIM (v_aanrk_lekstroom_eenheid)) = 'AANRAAK LEKSTROOM EENHEID'
AND UPPER (TRIM (v_aanrk_lekstroom_resultaat)) = 'AANRAAK LEKSTROOM RESULTAAT'
AND UPPER (TRIM (v_verv_lekstroom)) = 'VERVANGENDE LEKSTROOM'
AND UPPER (TRIM (v_verv_lekstroom_eenheid)) = 'VERVANGENDE LEKSTROOM EENHEID'
AND UPPER (TRIM (v_verv_lekstroom_resultaat)) = 'VERVANGENDE LEKSTROOM RESULTAAT'
AND UPPER (TRIM (v_isolatie)) = 'ISOLATIE'
AND UPPER (TRIM (v_isolatie_eenheid)) = 'ISOLATIE EENHEID'
AND UPPER (TRIM (v_isolatie_resultaat)) = 'ISOLATIE RESULTAAT'
AND UPPER (TRIM (v_volgende_testdatum_str)) = 'VOLGENDE TESTDATUM'
THEN
header_is_valid := 1;
END IF;
ELSE
v_aanduiding :='Lees regel';
v_laatste_datum := fac.safe_to_date (v_laatste_datum_str,'DD-MM-YYYY');
v_volgende_testdatum := fac.safe_to_date (v_volgende_testdatum_str,'DD-MM-YYYY');
-- hebben een regel nu wat gaan we dan gebruiken in de wdka_imp_smartware tabel
-- v_smartwareID,v_laatste_datum, v_laatste_resultaat, v_aarde, v_aarde_resultaat,v_aanrk_lekstroom, v_aanrk_lekstroom_resultaat, v_isolatie, v_isolatie_resultaat,v_bedrading_resultaat`, v_laatste_vis_tes,v_laatste_vis_resultaat
INSERT INTO WDKA_IMP_SMARTWARE(smartwareid,
test_datum,
test_resultaat,
aarde_waarde,
aarde_resultaat,
lekstroom_waarde,
lekstroom_resultaat,
aanrk_lekstrm_waarde,
aanrk_lekstrm_resultaat,
verv_lekstrm_waarde,
verv_lekstrm_resultaat,
isolatie_waarde,
isolatie_resultaat,
volgende_test)
VALUES(v_smartwareID,
v_laatste_datum,
v_laatste_resultaat,
v_aarde,
v_aarde_resultaat,
v_lekstroom,
v_lekstroom_resultaat,
v_aanrk_lekstroom,
v_aanrk_lekstroom_resultaat,
v_verv_lekstroom,
v_verv_lekstroom_resultaat,
v_isolatie,
v_isolatie_resultaat,
v_volgende_testdatum);
END IF;
END;
END LOOP;
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',
SUBSTR (v_aanduiding || v_errormsg, 1, 1000),
'Inleesproces smartware gaat fout!');
END;
/
CREATE OR REPLACE PROCEDURE WDKA_UPDATE_SMARTWARE(p_import_key IN NUMBER)
AS
CURSOR cs IS
SELECT * FROM wdka_imp_smartware;
v_errormsg VARCHAR (200);
v_errorhint VARCHAR (200);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_ins_key NUMBER;
v_aanduiding VARCHAR2 (1000) := '';
v_srtcontrole NUMBER;
v_deelsrtcontrole_key NUMBER;
v_count NUMBER :=0;
v_ins_count NUMBER :=0;
v_lastdate DATE;
v_newdate DATE;
v_time DATE;
BEGIN
-- open cursor haal alle regels op unique per smsartwareID en max(datum) (laatste alleen zichtbaar)
-- haal object op babsi van smartware code
-- maak een ins_deelsrtcontrole regele aan met ins_deel_key, strt_controle (bv smartware) en de controle_mode (bv uitgevoerd)
-- maar per waarde een ins_kmdeelsrtcontrl aan met ins_deelsrtcontrole_key, ins_kenmerk_key, waarde.
-- al;s er een fout uis set de notificatie dat er een foute waarde inzat, en waqtbde fout was,
-- update de kenmerk wanneer de laatste import van dit object is (SYSDATE)
-- DBMS_OUTPUT.put_line ('Starting update');
v_aanduiding := 'Geen acties voor SMARTWARE IMPORT';
v_srtcontrole:=10;
v_ins_key:=0;
v_lastdate := NULL;
v_newdate := NULL;
FOR rec in cs
LOOP
-- DBMS_OUTPUT.put_line ('Isolatie :'||v_ins_key);
v_ins_key:=0;
v_count:=0;
v_ins_count :=0;
v_newdate := NULL;
SELECT COUNT(*) into v_ins_count
from ins_deel i, ins_kenmerkdeel ik
where ik.ins_deel_key=i.ins_deel_key
and ik.ins_kenmerk_key=1 -- smwartware Key
and ik.ins_kenmerkdeel_waarde=rec.smartwareid;
--DBMS_OUTPUT.put_line ('Object :'||v_ins_key);
IF v_ins_count>0
THEN
--DBMS_OUTPUT.put_line ('v_newDate :'||v_newdate);
SELECT i.ins_deel_key into v_ins_key
from ins_deel i, ins_kenmerkdeel ik
where ik.ins_deel_key=i.ins_deel_key
and ik.ins_kenmerk_key=1 -- smwartware Key
and ik.ins_kenmerkdeel_waarde=rec.smartwareid;
--SELECT COUNT(*) into v_count FROM ins_deelsrtcontrole idc WHERE idc.ins_deel_key=v_ins_key AND rec.test_datum < v_newdate;
v_count:=0;
--v_time := TO_CHAR(SYSDATE,'HH24:MI:SS');
IF v_count=0
THEN
--DBMS_OUTPUT.put_line ('v_count :'||v_count);
INSERT INTO ins_deelsrtcontrole(ins_deel_key, ins_srtcontrole_key, ins_scenario_key, ins_deelsrtcontrole_datum, ins_controlemode_key, ins_deelsrtcontrole_status, ins_deelsrtcontrole_datum_org,INS_DEELSRTCONTROLE_FREEZECOST,prs_perslid_key)
VALUES(v_ins_key, v_srtcontrole, 1, SYSDATE ,10,6, SYSDATE,0,3)
RETURNING ins_deelsrtcontrole_key
INTO v_deelsrtcontrole_key;
fac.imp_writelog (p_import_key,
'W',
'Object met Smartware ID : '||rec.smartwareid ||' is bekend in Facilitor onder: '||v_ins_key||'.',
'Object gevonden!');
IF LENGTH(rec.aarde_waarde) > 1
THEN
INSERT into ins_kmdeelsrtcontr(ins_deelsrtcontrole_key, ins_kenmerk_key, ins_kmdeelsrtcontr_waarde, ins_kmdeelsrtcontr_aanmaak)
VALUES(v_deelsrtcontrole_key, 61, rec.aarde_waarde, SYSDATE); -- D=44
END IF;
IF LENGTH(rec.aarde_resultaat) > 1
THEN
INSERT into ins_kmdeelsrtcontr(ins_deelsrtcontrole_key, ins_kenmerk_key, ins_kmdeelsrtcontr_waarde, ins_kmdeelsrtcontr_aanmaak)
VALUES(v_deelsrtcontrole_key, 62, rec.aarde_resultaat, SYSDATE); -- D=45
END IF;
IF LENGTH(rec.lekstroom_waarde) > 1
THEN
INSERT into ins_kmdeelsrtcontr(ins_deelsrtcontrole_key, ins_kenmerk_key, ins_kmdeelsrtcontr_waarde, ins_kmdeelsrtcontr_aanmaak)
VALUES(v_deelsrtcontrole_key, 63, rec.lekstroom_waarde, SYSDATE); -- D=46
END IF;
IF LENGTH(rec.lekstroom_resultaat) > 1
THEN
INSERT into ins_kmdeelsrtcontr(ins_deelsrtcontrole_key, ins_kenmerk_key, ins_kmdeelsrtcontr_waarde, ins_kmdeelsrtcontr_aanmaak)
VALUES(v_deelsrtcontrole_key, 64, rec.lekstroom_resultaat, SYSDATE); -- D=47
END IF;
IF LENGTH(rec.aanrk_lekstrm_waarde) > 1
THEN
INSERT into ins_kmdeelsrtcontr(ins_deelsrtcontrole_key, ins_kenmerk_key, ins_kmdeelsrtcontr_waarde, ins_kmdeelsrtcontr_aanmaak)
VALUES(v_deelsrtcontrole_key, 65, rec.aanrk_lekstrm_waarde, SYSDATE); -- D=48
END IF;
IF LENGTH(rec.aanrk_lekstrm_resultaat) > 1
THEN
INSERT into ins_kmdeelsrtcontr(ins_deelsrtcontrole_key, ins_kenmerk_key, ins_kmdeelsrtcontr_waarde, ins_kmdeelsrtcontr_aanmaak)
VALUES(v_deelsrtcontrole_key, 66, rec.aanrk_lekstrm_resultaat, SYSDATE); -- D=49
END IF;
-- DBMS_OUTPUT.put_line ('Verv Lekstroom :'||rec.verv_lekstrm_waarde);
IF LENGTH(rec.verv_lekstrm_waarde) > 1
THEN
INSERT into ins_kmdeelsrtcontr(ins_deelsrtcontrole_key, ins_kenmerk_key, ins_kmdeelsrtcontr_waarde, ins_kmdeelsrtcontr_aanmaak)
VALUES(v_deelsrtcontrole_key, 67, rec.verv_lekstrm_waarde, SYSDATE); -- D=55
END IF;
IF LENGTH(rec.verv_lekstrm_resultaat) > 1
THEN
INSERT into ins_kmdeelsrtcontr(ins_deelsrtcontrole_key, ins_kenmerk_key, ins_kmdeelsrtcontr_waarde, ins_kmdeelsrtcontr_aanmaak)
VALUES(v_deelsrtcontrole_key, 68, rec.verv_lekstrm_resultaat, SYSDATE); -- D=56
END IF;
-- DBMS_OUTPUT.put_line ('Isolatie :'||rec.isolatie_waarde);
IF LENGTH(rec.isolatie_waarde) > 1
THEN
INSERT into ins_kmdeelsrtcontr(ins_deelsrtcontrole_key, ins_kenmerk_key, ins_kmdeelsrtcontr_waarde, ins_kmdeelsrtcontr_aanmaak)
VALUES(v_deelsrtcontrole_key, 69, rec.isolatie_waarde, SYSDATE); --D=50
END IF;
IF LENGTH(rec.isolatie_resultaat) > 1
THEN
INSERT into ins_kmdeelsrtcontr(ins_deelsrtcontrole_key, ins_kenmerk_key, ins_kmdeelsrtcontr_waarde, ins_kmdeelsrtcontr_aanmaak)
VALUES(v_deelsrtcontrole_key, 70, rec.isolatie_resultaat, SYSDATE); -- D=51
END IF;
flx.setflex('INS', 28, v_ins_key, rec.test_datum);
flx.setflex('INS', 30, v_ins_key, rec.test_resultaat);
commit;
END IF;
ELSE
fac.imp_writelog (p_import_key,
'W',
'Object met Smartware ID : '||rec.smartwareid ||' is niet bekend in Facilitor.',
'Object niet gevonden!');
END IF;
END LOOP;
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',
SUBSTR (v_aanduiding || v_errormsg, 1, 1000),
'Inleesproces opdrachtstatusberichten afgebroken!');
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