FCLT#81526 Standaard import voor MJOB

svn path=/Database/branches/DB49/; revision=66675
This commit is contained in:
Erik Groener
2024-10-17 10:56:16 +00:00
parent 22dd769d73
commit 75f3029c5d

View File

@@ -22909,6 +22909,9 @@ BEGIN
WHERE fac_imp_csv_index = 1
AND fac_import_key = p_import_key;
-- Eerst opruimen
DELETE FROM fac_imp_taak_mjob;
IF (v_header LIKE v_header_csv || '%')
THEN
v_header_is_valid := 1;
@@ -22982,11 +22985,11 @@ BEGIN
fac.imp_writelog( p_import_key, 'W', 'Nieuwe taak - Aangepast ivm lengte groter dan 60 '
, rec.fac_imp_csv_index || ' - ' || rec.objectidentificatie || ' - ' || rec.taakomschrijving || ' wordt: ' || v_taakomschrijving);
END IF;
SELECT COALESCE(MAX(ins_srtcontrole_key), -1)
SELECT MAX(ins_srtcontrole_key)
INTO v_srtcontrole_key
FROM ins_srtcontrole
WHERE LOWER(ins_srtcontrole_omschrijving) = LOWER(v_taakomschrijving);
-- v_srtcontrole_key = -1 als de taak nog niet bestaat.
WHERE ins_srtcontrole_omschrijving = v_taakomschrijving;
-- v_srtcontrole_key = null als de taak nog niet bestaat.
-- CSV-kolom F: Controleer taak opmerking
v_errormsg := 'Fout controleren taak opmerking ';
@@ -23277,7 +23280,8 @@ BEGIN
ROLLBACK;
fac.imp_writelog(p_import_key, 'E', 'Ongeldig importbestand', 'Toelichting: Verkeerde header. Niet conform specs. ');
ELSE
fac.imp_writelog(p_import_key, 'S', 'IMPORT TAKEN: aantal te verwerken regels: ' || TO_CHAR (v_count_verwerk) || ' (van de ' || TO_CHAR (v_count_rec) || ' records in csv)' || CHR(13) || CHR(10)
fac.imp_writelog(p_import_key, 'S', 'IMPORT TAKEN: import' || CHR(13) || CHR(10)
|| 'Aantal te verwerken regels: ' || TO_CHAR (v_count_verwerk) || ' (van de ' || TO_CHAR (v_count_rec) || ' records in csv)' || CHR(13) || CHR(10)
|| 'Aantal nieuwe taken: ' || TO_CHAR (v_count_n_taak) || CHR(13) || CHR(10)
|| 'Aantal nieuwe objecttaken: ' || TO_CHAR (v_count_n_taakobject) || CHR(13) || CHR(10)
|| 'Aantal bestaande, te wijzigen (object)taken: ' || TO_CHAR (v_count_w_taak)
@@ -23299,20 +23303,20 @@ AS
IS
SELECT i.*
FROM fac_imp_taak_mjob i
WHERE i.ins_srtcontrole_key IS NULL;
WHERE (i.ins_srtcontrole_key IS NULL OR i.ins_srtcontrole_key = -1);
CURSOR c_no -- nieuwe objecttaken aanmaken..
IS
SELECT i.*
FROM fac_imp_taak_mjob i
WHERE i.ins_srtcontrole_key IS NOT NULL
WHERE (i.ins_srtcontrole_key IS NOT NULL OR i.ins_srtcontrole_key > -1)
AND i.ins_srtcontroledl_xcp_key IS NULL;
CURSOR c_m -- bestaande taak en/of objecttaak wijzigen
IS
SELECT i.*
FROM fac_imp_taak_mjob i
WHERE i.ins_srtcontrole_key IS NOT NULL
WHERE (i.ins_srtcontrole_key IS NOT NULL OR i.ins_srtcontrole_key > -1)
AND i.ins_srtcontroledl_xcp_key IS NOT NULL;
v_errormsg VARCHAR2(1000);
@@ -23349,7 +23353,7 @@ AS
v_materiaalkosten ins_srtcontroledl_xcp.ins_srtcontroledl_xcp_materia%TYPE;
v_aantal ins_srtcontroledl_xcp.ins_srtcontroledl_xcp_aantal%TYPE;
v_aantaleh ins_srtcontroledl_xcp.ins_srtcontroledl_xcp_aanteh%TYPE;
FUNCTION maakAanduiding_taak(p_deel_key IN NUMBER, p_disc_key IN NUMBER, p_oms IN VARCHAR2, o_srtdeel_key OUT NUMBER) RETURN VARCHAR2
@@ -23423,422 +23427,406 @@ AS
END;
BEGIN
FOR rec IN c_n
LOOP
BEGIN
v_aanduiding := maakAanduiding_taak(rec.ins_deel_key, rec.ctr_discipline_key, rec.ins_srtcontrole_omschrijving, v_srtdeel_key);
-- Eenzelfde basistaak kan meerdere keren in CSV zitten.
-- Daarom gaan we in deze cursor eerst kijken of de basistaak er in deze LOOP al ingezet is.
-- Zo ja, dan kunnen we door naar de Objecttaak. Zo niet, dan gaan we eerst de basis
v_errormsg := 'Opzoeken basistaak ' || v_aanduiding;
SELECT MAX(ins_srtcontrole_key)
INTO v_ins_srtcontrole_key
FROM ins_srtcontrole
WHERE ins_srtcontrole_omschrijving = rec.ins_srtcontrole_omschrijving;
BEGIN
FOR rec IN c_n
LOOP
BEGIN
v_aanduiding := maakAanduiding_taak(rec.ins_deel_key, rec.ctr_discipline_key, rec.ins_srtcontrole_omschrijving, v_srtdeel_key);
-- Eenzelfde basistaak kan meerdere keren in CSV zitten.
-- Daarom gaan we in deze cursor eerst kijken of de basistaak er in deze LOOP al ingezet is.
-- Zo ja, dan kunnen we door naar de Objecttaak. Zo niet, dan gaan we eerst de basis
v_errormsg := 'Opzoeken basistaak ' || v_aanduiding;
SELECT MAX(ins_srtcontrole_key)
INTO v_ins_srtcontrole_key
FROM ins_srtcontrole
WHERE ins_srtcontrole_omschrijving = rec.ins_srtcontrole_omschrijving;
-- Basistaak aanmaken: geen ins_srtcontrole_key gevonden.
IF v_ins_srtcontrole_key IS NULL
THEN
-- We gaan we eerst op zoek naar de dienst.
v_errormsg := 'Aanmaken/opzoeken dienst ' || v_aanduiding;
v_dienst_key := NULL;
IF rec.prs_dienst_omschrijving IS NOT NULL
-- Basistaak aanmaken: geen ins_srtcontrole_key gevonden.
IF v_ins_srtcontrole_key IS NULL
THEN
BEGIN
SELECT prs_dienst_key
INTO v_dienst_key
FROM prs_dienst
WHERE UPPER(prs_dienst_omschrijving) = UPPER(rec.prs_dienst_omschrijving);
EXCEPTION
WHEN NO_DATA_FOUND THEN
INSERT INTO prs_dienst
(prs_dienst_omschrijving)
VALUES (rec.prs_dienst_omschrijving)
RETURNING prs_dienst_key
INTO v_dienst_key;
END;
-- We gaan we eerst op zoek naar de dienst.
v_errormsg := 'Aanmaken/opzoeken dienst ' || v_aanduiding;
v_dienst_key := NULL;
IF rec.prs_dienst_omschrijving IS NOT NULL
THEN
BEGIN
SELECT prs_dienst_key
INTO v_dienst_key
FROM prs_dienst
WHERE UPPER(prs_dienst_omschrijving) = UPPER(rec.prs_dienst_omschrijving);
EXCEPTION
WHEN NO_DATA_FOUND THEN
INSERT INTO prs_dienst
(prs_dienst_omschrijving)
VALUES (rec.prs_dienst_omschrijving)
RETURNING prs_dienst_key
INTO v_dienst_key;
END;
END IF;
v_count_verwerk := v_count_verwerk + 1 ;
v_count_n_taak := v_count_n_taak + 1 ;
v_errormsg := 'Aanmaken taak: ' || v_aanduiding;
INSERT INTO ins_srtcontrole
( ins_srtinstallatie_key
, ins_srtcontrole_niveau
, ins_srtcontrole_omschrijving
, ctr_discipline_key
, ins_srtcontrole_info
, ins_srtcontrole_periode
, ins_srtcontrole_eenheid
, ins_srtcontrole_mode
, ins_srtcontrole_level
, ins_srtcontrole_opmerking
, prs_dienst_key
)
VALUES
( v_srtdeel_key
, 'S'
, rec.ins_srtcontrole_omschrijving
, rec.ctr_discipline_key
, NULL
, 0
, rec.ins_srtcontroledl_xcp_eenheid
, 1
, COALESCE(rec.ins_srtcontrole_prioriteit, 0)
, rec.ins_srtcontrole_opmerking
, v_dienst_key
)
RETURNING ins_srtcontrole_key
INTO v_ins_srtcontrole_key;
fac.trackaction('CTRSUP', v_ins_srtcontrole_key, 4, NULL, 'Periodieke taak toegevoegd - Via taakimport ');
END IF;
v_count_verwerk := v_count_verwerk + 1 ;
v_count_n_taak := v_count_n_taak + 1 ;
-- Nu kunnen we de objectaak aanmaken
v_count_n_taakobject := v_count_n_taakobject + 1 ;
v_errormsg := 'Aanmaken taak object: ' || v_aanduiding || ' ['
|| rec.ins_deel_key || '|'
|| v_ins_srtcontrole_key || '|'
|| rec.ins_srtcontroledl_xcp_periode || '|'
|| rec.ins_srtcontroledl_xcp_eenheid || '|'
|| rec.ins_srtcontroledl_xcp_materia || '|'
|| rec.ins_srtcontroledl_xcp_perc || '|'
|| rec.ins_srtcontrole_groep || '|'
|| rec.ins_srtcontroledl_xcp_opmerk || '|'
|| rec.ins_srtcontroledl_xcp_aantal || '|'
|| rec.ins_srtcontroledl_xcp_aanteh || ']';
v_errormsg := 'Aanmaken taak ' || v_aanduiding;
INSERT INTO ins_srtcontrole
( ins_srtinstallatie_key
, ins_srtcontrole_niveau
, ins_srtcontrole_omschrijving
, ctr_discipline_key
, ins_srtcontrole_info
, ins_srtcontrole_periode
, ins_srtcontrole_eenheid
, ins_srtcontrole_mode
, ins_srtcontrole_level
, ins_srtcontrole_opmerking
, prs_dienst_key
INSERT INTO ins_srtcontroledl_xcp
( ins_deel_key
, ins_srtcontrole_key
, ins_srtcontroledl_xcp_periode
, ins_srtcontroledl_xcp_eenheid
, ins_srtcontroledl_xcp_materia
, ins_srtcontroledl_xcp_perc
, ins_srtcontroledl_xcp_groep
, ins_srtcontroledl_xcp_opmerk
, ins_srtcontroledl_xcp_aantal
, ins_srtcontroledl_xcp_aanteh
)
VALUES
( v_srtdeel_key
, 'S'
, rec.ins_srtcontrole_omschrijving
, rec.ctr_discipline_key
, NULL
, 0
( rec.ins_deel_key
, v_ins_srtcontrole_key
, rec.ins_srtcontroledl_xcp_periode
, rec.ins_srtcontroledl_xcp_eenheid
, 1
, COALESCE(rec.ins_srtcontrole_prioriteit, 0)
, rec.ins_srtcontrole_opmerking
, v_dienst_key
)
RETURNING ins_srtcontrole_key
INTO v_ins_srtcontrole_key;
, rec.ins_srtcontroledl_xcp_materia
, rec.ins_srtcontroledl_xcp_perc
, rec.ins_srtcontrole_groep
, rec.ins_srtcontroledl_xcp_opmerk
, rec.ins_srtcontroledl_xcp_aantal
, rec.ins_srtcontroledl_xcp_aanteh
);
fac.trackaction('CTRSUP', v_ins_srtcontrole_key, 4, NULL, 'Periodieke taak toegevoegd - Via taakimport ');
END IF;
-- Nu kunnen we de objectaak aanmaken
v_count_n_taakobject := v_count_n_taakobject + 1 ;
v_errormsg := 'Aanmaken taak object ' || v_aanduiding || ' ['
|| rec.ins_deel_key || '|'
|| v_ins_srtcontrole_key || '|'
|| rec.ins_srtcontroledl_xcp_periode || '|'
|| rec.ins_srtcontroledl_xcp_eenheid || '|'
|| rec.ins_srtcontroledl_xcp_materia || '|'
|| rec.ins_srtcontroledl_xcp_perc || '|'
|| rec.ins_srtcontrole_groep || '|'
|| rec.ins_srtcontroledl_xcp_opmerk || '|'
|| rec.ins_srtcontroledl_xcp_aantal || '|'
|| rec.ins_srtcontroledl_xcp_aanteh || ']';
INSERT INTO ins_srtcontroledl_xcp
( ins_deel_key
, ins_srtcontrole_key
, ins_srtcontroledl_xcp_periode
, ins_srtcontroledl_xcp_eenheid
, ins_srtcontroledl_xcp_materia
, ins_srtcontroledl_xcp_perc
, ins_srtcontroledl_xcp_groep
, ins_srtcontroledl_xcp_opmerk
, ins_srtcontroledl_xcp_aantal
, ins_srtcontroledl_xcp_aanteh
)
VALUES
( rec.ins_deel_key
, v_ins_srtcontrole_key
, rec.ins_srtcontroledl_xcp_periode
, rec.ins_srtcontroledl_xcp_eenheid
, rec.ins_srtcontroledl_xcp_materia
, rec.ins_srtcontroledl_xcp_perc
, rec.ins_srtcontrole_groep
, rec.ins_srtcontroledl_xcp_opmerk
, rec.ins_srtcontroledl_xcp_aantal
, rec.ins_srtcontroledl_xcp_aanteh
);
zetDeelStartdatum(rec.ins_deel_key, rec.ins_srtcontroledl_xcp_start);
EXCEPTION
WHEN OTHERS THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
fac.imp_writelog(p_import_key, 'E', v_errormsg || 'ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')', v_errormsg);
v_ongeldig := 1;
END;
v_aanduiding := 'Einde loop ' || v_aanduiding;
END LOOP;
zetDeelStartdatum(rec.ins_deel_key, rec.ins_srtcontroledl_xcp_start);
-- Geen exception handler. Stop verwerking en laat fout in de logging zien.
END;
v_aanduiding := 'Einde loop ' || v_aanduiding;
END LOOP;
FOR rec IN c_no
LOOP
BEGIN
v_aanduiding := maakAanduiding_taak(rec.ins_deel_key, rec.ctr_discipline_key, rec.ins_srtcontrole_omschrijving, v_srtdeel_key);
-- We kunnen direct objectaak aanmaken
v_count_verwerk := v_count_verwerk + 1 ;
v_count_n_taakobject := v_count_n_taakobject + 1 ;
v_errormsg := 'Aanmaken taak object ' || v_aanduiding || ' ['
|| rec.ins_deel_key || '|'
|| rec.ins_srtcontrole_key || '|'
|| rec.ins_srtcontroledl_xcp_periode || '|'
|| rec.ins_srtcontroledl_xcp_eenheid || '|'
|| rec.ins_srtcontroledl_xcp_materia || '|'
|| rec.ins_srtcontroledl_xcp_perc || '|'
|| rec.ins_srtcontrole_groep || '|'
|| rec.ins_srtcontroledl_xcp_opmerk || '|'
|| rec.ins_srtcontroledl_xcp_aantal || '|'
|| rec.ins_srtcontroledl_xcp_aanteh || ']';
INSERT INTO ins_srtcontroledl_xcp
( ins_deel_key
, ins_srtcontrole_key
, ins_srtcontroledl_xcp_periode
, ins_srtcontroledl_xcp_eenheid
, ins_srtcontroledl_xcp_materia
, ins_srtcontroledl_xcp_perc
, ins_srtcontroledl_xcp_groep
, ins_srtcontroledl_xcp_opmerk
, ins_srtcontroledl_xcp_aantal
, ins_srtcontroledl_xcp_aanteh
)
VALUES
( rec.ins_deel_key
, rec.ins_srtcontrole_key
, rec.ins_srtcontroledl_xcp_periode
, rec.ins_srtcontroledl_xcp_eenheid
, rec.ins_srtcontroledl_xcp_materia
, rec.ins_srtcontroledl_xcp_perc
, rec.ins_srtcontrole_groep
, rec.ins_srtcontroledl_xcp_opmerk
, rec.ins_srtcontroledl_xcp_aantal
, rec.ins_srtcontroledl_xcp_aanteh
);
zetDeelStartdatum(rec.ins_deel_key, rec.ins_srtcontroledl_xcp_start);
EXCEPTION
WHEN OTHERS THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
fac.imp_writelog(p_import_key, 'E', v_errormsg || 'ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')', v_errormsg);
v_ongeldig := 1;
END;
v_aanduiding := 'Einde loop ' || v_aanduiding;
END LOOP;
FOR rec IN c_m
LOOP
BEGIN
v_count_verwerk := v_count_verwerk + 1 ;
v_aanduiding := maakAanduiding_taak(rec.ins_deel_key, rec.ctr_discipline_key, rec.ins_srtcontrole_omschrijving, v_srtdeel_key);
SELECT COALESCE(t.ins_srtcontrole_opmerking, '<leeg>')
, t.ins_srtcontrole_level
, COALESCE(MAX(t.prs_dienst_key), -1)
, COALESCE(MAX(d.prs_dienst_omschrijving), '<leeg>')
INTO v_taakopmerking
, v_taakprioriteit
, v_taakdienst_key
, v_taakdienst_oms
FROM ins_srtcontrole t
, prs_dienst d
WHERE t.prs_dienst_key = d.prs_dienst_key(+)
AND t.ins_srtcontrole_key = rec.ins_srtcontrole_key;
-- Basis-taak - Taakopmerking
v_errormsg := 'Fout taakopmerking wijzigen ';
IF rec.ins_srtcontrole_opmerking IS NOT NULL AND v_taakopmerking <> rec.ins_srtcontrole_opmerking
THEN
UPDATE ins_srtcontrole
SET ins_srtcontrole_opmerking = rec.ins_srtcontrole_opmerking
WHERE ins_srtcontrole_key = rec.ins_srtcontrole_key;
v_count_taak := trackTaak(rec.ins_srtcontrole_key, 'Gewijzigd Taakopmerking', v_taakopmerking, rec.ins_srtcontrole_opmerking);
END IF;
-- Basis-taak - Taakprioriteit
v_errormsg := 'Fout prioriteit wijzigen ';
IF rec.ins_srtcontrole_prioriteit IS NOT NULL AND v_taakprioriteit <> rec.ins_srtcontrole_prioriteit
THEN
UPDATE ins_srtcontrole
SET ins_srtcontrole_level = rec.ins_srtcontrole_prioriteit
WHERE ins_srtcontrole_key = rec.ins_srtcontrole_key;
v_count_taak := trackTaak(rec.ins_srtcontrole_key, 'Gewijzigd Prioriteit', v_taakprioriteit, rec.ins_srtcontrole_prioriteit);
END IF;
-- Basis-taak - Dienst
v_errormsg := 'Fout dienst wijzigen ' || v_aanduiding;
FOR rec IN c_no
LOOP
BEGIN
-- Dan gaan we kijken of de dienst meegegeven in csv al bestaat
IF rec.prs_dienst_omschrijving IS NOT NULL
THEN
BEGIN
SELECT prs_dienst_key
INTO v_dienst_key
FROM prs_dienst
WHERE UPPER(prs_dienst_omschrijving) = UPPER(rec.prs_dienst_omschrijving);
EXCEPTION
WHEN NO_DATA_FOUND THEN
INSERT INTO prs_dienst
(prs_dienst_omschrijving)
VALUES (rec.prs_dienst_omschrijving)
RETURNING prs_dienst_key
INTO v_dienst_key;
END;
END IF;
v_aanduiding := maakAanduiding_taak(rec.ins_deel_key, rec.ctr_discipline_key, rec.ins_srtcontrole_omschrijving, v_srtdeel_key);
-- We kunnen direct objectaak aanmaken
v_count_verwerk := v_count_verwerk + 1 ;
v_count_n_taakobject := v_count_n_taakobject + 1 ;
v_errormsg := 'Aanmaken taak object bij taak: ' || v_aanduiding || ' ['
|| rec.ins_deel_key || '|'
|| rec.ins_srtcontrole_key || '|'
|| rec.ins_srtcontroledl_xcp_periode || '|'
|| rec.ins_srtcontroledl_xcp_eenheid || '|'
|| rec.ins_srtcontroledl_xcp_materia || '|'
|| rec.ins_srtcontroledl_xcp_perc || '|'
|| rec.ins_srtcontrole_groep || '|'
|| rec.ins_srtcontroledl_xcp_opmerk || '|'
|| rec.ins_srtcontroledl_xcp_aantal || '|'
|| rec.ins_srtcontroledl_xcp_aanteh || ']';
INSERT INTO ins_srtcontroledl_xcp
( ins_deel_key
, ins_srtcontrole_key
, ins_srtcontroledl_xcp_periode
, ins_srtcontroledl_xcp_eenheid
, ins_srtcontroledl_xcp_materia
, ins_srtcontroledl_xcp_perc
, ins_srtcontroledl_xcp_groep
, ins_srtcontroledl_xcp_opmerk
, ins_srtcontroledl_xcp_aantal
, ins_srtcontroledl_xcp_aanteh
)
VALUES
( rec.ins_deel_key
, rec.ins_srtcontrole_key
, rec.ins_srtcontroledl_xcp_periode
, rec.ins_srtcontroledl_xcp_eenheid
, rec.ins_srtcontroledl_xcp_materia
, rec.ins_srtcontroledl_xcp_perc
, rec.ins_srtcontrole_groep
, rec.ins_srtcontroledl_xcp_opmerk
, rec.ins_srtcontroledl_xcp_aantal
, rec.ins_srtcontroledl_xcp_aanteh
);
IF rec.prs_dienst_omschrijving IS NOT NULL AND v_taakdienst_key <> v_dienst_key
zetDeelStartdatum(rec.ins_deel_key, rec.ins_srtcontroledl_xcp_start);
-- Geen exception handler. Stop verwerking en laat fout in de logging zien.
END;
v_aanduiding := 'Einde loop ' || v_aanduiding;
END LOOP;
FOR rec IN c_m
LOOP
BEGIN
v_count_verwerk := v_count_verwerk + 1 ;
v_aanduiding := maakAanduiding_taak(rec.ins_deel_key, rec.ctr_discipline_key, rec.ins_srtcontrole_omschrijving, v_srtdeel_key);
SELECT COALESCE(t.ins_srtcontrole_opmerking, '<leeg>')
, t.ins_srtcontrole_level
, COALESCE(MAX(t.prs_dienst_key), -1)
, COALESCE(MAX(d.prs_dienst_omschrijving), '<leeg>')
INTO v_taakopmerking
, v_taakprioriteit
, v_taakdienst_key
, v_taakdienst_oms
FROM ins_srtcontrole t
, prs_dienst d
WHERE t.prs_dienst_key = d.prs_dienst_key(+)
AND t.ins_srtcontrole_key = rec.ins_srtcontrole_key;
-- Basis-taak - Taakopmerking
v_errormsg := 'Fout taakopmerking wijzigen ';
IF rec.ins_srtcontrole_opmerking IS NOT NULL AND v_taakopmerking <> rec.ins_srtcontrole_opmerking
THEN
UPDATE ins_srtcontrole
SET prs_dienst_key = v_dienst_key
SET ins_srtcontrole_opmerking = rec.ins_srtcontrole_opmerking
WHERE ins_srtcontrole_key = rec.ins_srtcontrole_key;
v_count_taak := trackTaak(rec.ins_srtcontrole_key, 'Gewijzigd taakdienst', v_taakdienst_oms, rec.prs_dienst_omschrijving);
v_count_taak := trackTaak(rec.ins_srtcontrole_key, 'Gewijzigd Taakopmerking', v_taakopmerking, rec.ins_srtcontrole_opmerking);
END IF;
-- Basis-taak - Taakprioriteit
v_errormsg := 'Fout prioriteit wijzigen ';
IF rec.ins_srtcontrole_prioriteit IS NOT NULL AND v_taakprioriteit <> rec.ins_srtcontrole_prioriteit
THEN
UPDATE ins_srtcontrole
SET ins_srtcontrole_level = rec.ins_srtcontrole_prioriteit
WHERE ins_srtcontrole_key = rec.ins_srtcontrole_key;
v_count_taak := trackTaak(rec.ins_srtcontrole_key, 'Gewijzigd Prioriteit', v_taakprioriteit, rec.ins_srtcontrole_prioriteit);
END IF;
-- Basis-taak - Dienst
v_errormsg := 'Fout dienst wijzigen ' || v_aanduiding;
BEGIN
-- Dan gaan we kijken of de dienst meegegeven in csv al bestaat
IF rec.prs_dienst_omschrijving IS NOT NULL
THEN
BEGIN
SELECT prs_dienst_key
INTO v_dienst_key
FROM prs_dienst
WHERE UPPER(prs_dienst_omschrijving) = UPPER(rec.prs_dienst_omschrijving);
EXCEPTION
WHEN NO_DATA_FOUND THEN
INSERT INTO prs_dienst
(prs_dienst_omschrijving)
VALUES (rec.prs_dienst_omschrijving)
RETURNING prs_dienst_key
INTO v_dienst_key;
END;
END IF;
IF rec.prs_dienst_omschrijving IS NOT NULL AND v_taakdienst_key <> v_dienst_key
THEN
UPDATE ins_srtcontrole
SET prs_dienst_key = v_dienst_key
WHERE ins_srtcontrole_key = rec.ins_srtcontrole_key;
v_count_taak := trackTaak(rec.ins_srtcontrole_key, 'Gewijzigd taakdienst', v_taakdienst_oms, rec.prs_dienst_omschrijving);
END IF;
END;
IF v_count_taak = 1
THEN
v_count_w_taak := v_count_w_taak + 1;
END IF;
-- Gaan nu de object-taken aanpassen
v_aanduiding_objecttaak := maakAanduiding_taakobject(rec.ins_deel_key, rec.ctr_discipline_key, rec.ins_srtcontrole_omschrijving);
SELECT COALESCE(ins_srtcontroledl_xcp_perc, 0)
, COALESCE(ins_srtcontroledl_xcp_opmerk, '<leeg>')
, COALESCE(ins_srtcontroledl_xcp_eenheid, 0)
, COALESCE(ins_srtcontroledl_xcp_periode, 0)
, COALESCE(ins_srtcontroledl_xcp_groep, '<leeg>')
, ins_srtcontroledl_xcp_eind
, COALESCE(max(ins_srtcontroledl_xcp_materia), 0)
INTO v_percentage
, v_objecttaakopmerking
, v_eenheid
, v_periode
, v_taakgroep
, v_eindjaar
, v_materiaalkosten
FROM ins_srtcontroledl_xcp
WHERE ins_srtcontroledl_xcp_key = rec.ins_srtcontroledl_xcp_key;
-- Object-taak - Percentage
v_errormsg := 'Fout percentage wijzigen ';
IF rec.ins_srtcontroledl_xcp_perc IS NOT NULL AND rec.ins_srtcontroledl_xcp_perc <> v_percentage
THEN
UPDATE ins_srtcontroledl_xcp
SET ins_srtcontroledl_xcp_perc = rec.ins_srtcontroledl_xcp_perc
WHERE ins_srtcontroledl_xcp_key = rec.ins_srtcontroledl_xcp_key;
v_count_taakobject := trackTaakobject(rec.ins_deel_key, v_aanduiding_objecttaak, 'Percentage', v_percentage, rec.ins_srtcontroledl_xcp_perc);
END IF;
-- Object-taak - Opmerking
v_errormsg := 'Fout opmerking objecttaak wijzigen ';
IF rec.ins_srtcontroledl_xcp_opmerk IS NOT NULL AND rec.ins_srtcontroledl_xcp_opmerk <> v_objecttaakopmerking
THEN
UPDATE ins_srtcontroledl_xcp
SET ins_srtcontroledl_xcp_opmerk = rec.ins_srtcontroledl_xcp_opmerk
WHERE ins_srtcontroledl_xcp_key = rec.ins_srtcontroledl_xcp_key;
v_count_taakobject := trackTaakobject(rec.ins_deel_key, v_aanduiding_objecttaak, 'Taakopmerking', v_objecttaakopmerking, rec.ins_srtcontroledl_xcp_opmerk);
END IF;
-- Object-taak - Eenheid
v_errormsg := 'Fout eenheid wijzigen ';
IF rec.ins_srtcontroledl_xcp_eenheid IS NOT NULL AND rec.ins_srtcontroledl_xcp_eenheid <> v_eenheid AND rec.ismjob = 0
THEN
UPDATE ins_srtcontroledl_xcp
SET ins_srtcontroledl_xcp_eenheid = rec.ins_srtcontroledl_xcp_eenheid
WHERE ins_srtcontroledl_xcp_key = rec.ins_srtcontroledl_xcp_key;
v_count_taakobject := trackTaakobject(rec.ins_deel_key, v_aanduiding_objecttaak, 'Eenheid', v_eenheid, rec.ins_srtcontroledl_xcp_eenheid);
END IF;
-- Object-taak - Periode
v_errormsg := 'Fout periode wijzigen ';
IF rec.ins_srtcontroledl_xcp_periode IS NOT NULL AND rec.ins_srtcontroledl_xcp_periode <> v_periode
THEN
UPDATE ins_srtcontroledl_xcp
SET ins_srtcontroledl_xcp_periode = rec.ins_srtcontroledl_xcp_periode
WHERE ins_srtcontroledl_xcp_key = rec.ins_srtcontroledl_xcp_key;
v_count_taakobject := trackTaakobject(rec.ins_deel_key, v_aanduiding_objecttaak, 'Periode', v_periode, rec.ins_srtcontroledl_xcp_periode);
END IF;
-- Object-taak - Taakgroep
v_errormsg := 'Fout taakgroep wijzigen ';
IF rec.ins_srtcontrole_groep IS NOT NULL AND rec.ins_srtcontrole_groep <> v_taakgroep
THEN
UPDATE ins_srtcontroledl_xcp
SET ins_srtcontroledl_xcp_groep = rec.ins_srtcontrole_groep
WHERE ins_srtcontroledl_xcp_key = rec.ins_srtcontroledl_xcp_key;
v_count_taakobject := trackTaakobject(rec.ins_deel_key, v_aanduiding_objecttaak, 'Taakgroep', v_taakgroep, rec.ins_srtcontrole_groep);
END IF;
-- Object-taak - Eindjaar
v_errormsg := 'Fout eindjaar wijzigen ';
IF ( (rec.ins_srtcontroledl_xcp_eind IS NOT NULL AND v_eindjaar <> rec.ins_srtcontroledl_xcp_eind AND v_eindjaar IS NOT NULL)
OR (rec.ins_srtcontroledl_xcp_eind IS NOT NULL AND v_eindjaar IS NULL)
)
THEN
UPDATE ins_srtcontroledl_xcp
SET ins_srtcontroledl_xcp_eind = rec.ins_srtcontroledl_xcp_eind
WHERE ins_srtcontroledl_xcp_key = rec.ins_srtcontroledl_xcp_key;
v_count_taakobject := trackTaakobject(rec.ins_deel_key, v_aanduiding_objecttaak, 'Eindjaar', v_eindjaar, rec.ins_srtcontroledl_xcp_eind);
END IF;
-- Object-taak - Kosten
v_errormsg := 'Fout kosten wijzigen ';
IF rec.ins_srtcontroledl_xcp_materia IS NOT NULL AND rec.ins_srtcontroledl_xcp_materia <> v_materiaalkosten
THEN
UPDATE ins_srtcontroledl_xcp
SET ins_srtcontroledl_xcp_materia = rec.ins_srtcontroledl_xcp_materia
WHERE ins_srtcontroledl_xcp_key = rec.ins_srtcontroledl_xcp_key;
v_count_taakobject := trackTaakobject(rec.ins_deel_key, v_aanduiding_objecttaak, 'Kosten', v_materiaalkosten, rec.ins_srtcontroledl_xcp_materia);
END IF;
-- Object-taak - aantal
v_errormsg := 'Fout aantal wijzigen ';
IF ( (rec.ins_srtcontroledl_xcp_aantal IS NOT NULL AND v_aantal IS NOT NULL AND rec.ins_srtcontroledl_xcp_aantal <> v_aantal)
OR (rec.ins_srtcontroledl_xcp_aantal IS NOT NULL AND v_aantal IS NULL)
)
THEN
UPDATE ins_srtcontroledl_xcp
SET ins_srtcontroledl_xcp_aantal = rec.ins_srtcontroledl_xcp_aantal
WHERE ins_srtcontroledl_xcp_key = rec.ins_srtcontroledl_xcp_key;
v_count_taakobject := trackTaakobject(rec.ins_deel_key, v_aanduiding_objecttaak, 'Aantal', v_aantal, rec.ins_srtcontroledl_xcp_aantal);
END IF;
-- Object-taal - aantaleh
v_errormsg := 'fout aanteh wijzigen ';
IF ( (rec.ins_srtcontroledl_xcp_aanteh IS NOT NULL AND v_aantaleh IS NOT NULL AND rec.ins_srtcontroledl_xcp_aanteh <> v_aantaleh)
OR (rec.ins_srtcontroledl_xcp_aanteh IS NOT NULL AND v_aantaleh IS NULL)
)
THEN
UPDATE ins_srtcontroledl_xcp
SET ins_srtcontroledl_xcp_aanteh = rec.ins_srtcontroledl_xcp_aanteh
WHERE ins_srtcontroledl_xcp_key = rec.ins_srtcontroledl_xcp_key;
v_count_taakobject := trackTaakobject(rec.ins_deel_key, v_aanduiding_objecttaak, 'Aanteh', v_aantaleh, rec.ins_srtcontroledl_xcp_aanteh);
END IF;
IF v_count_taakobject = 1
THEN
v_count_w_taakobject := v_count_w_taakobject + 1 ;
END IF;
zetDeelStartdatum(rec.ins_deel_key, rec.ins_srtcontroledl_xcp_start);
-- Geen exception handler. Stop verwerking en laat fout in de logging zien.
END;
v_aanduiding := 'Einde loop ' || v_aanduiding;
END LOOP;
IF v_count_taak = 1
THEN
v_count_w_taak := v_count_w_taak + 1;
END IF;
-- Gaan nu de object-taken aanpassen
v_aanduiding_objecttaak := maakAanduiding_taakobject(rec.ins_deel_key, rec.ctr_discipline_key, rec.ins_srtcontrole_omschrijving);
SELECT COALESCE(ins_srtcontroledl_xcp_perc, 0)
, COALESCE(ins_srtcontroledl_xcp_opmerk, '<leeg>')
, COALESCE(ins_srtcontroledl_xcp_eenheid, 0)
, COALESCE(ins_srtcontroledl_xcp_periode, 0)
, COALESCE(ins_srtcontroledl_xcp_groep, '<leeg>')
, ins_srtcontroledl_xcp_eind
, COALESCE(max(ins_srtcontroledl_xcp_materia), 0)
INTO v_percentage
, v_objecttaakopmerking
, v_eenheid
, v_periode
, v_taakgroep
, v_eindjaar
, v_materiaalkosten
FROM ins_srtcontroledl_xcp
WHERE ins_srtcontroledl_xcp_key = rec.ins_srtcontroledl_xcp_key;
-- Object-taak - Percentage
v_errormsg := 'Fout percentage wijzigen ';
IF rec.ins_srtcontroledl_xcp_perc IS NOT NULL AND rec.ins_srtcontroledl_xcp_perc <> v_percentage
THEN
UPDATE ins_srtcontroledl_xcp
SET ins_srtcontroledl_xcp_perc = rec.ins_srtcontroledl_xcp_perc
WHERE ins_srtcontroledl_xcp_key = rec.ins_srtcontroledl_xcp_key;
v_count_taakobject := trackTaakobject(rec.ins_deel_key, v_aanduiding_objecttaak, 'Percentage', v_percentage, rec.ins_srtcontroledl_xcp_perc);
END IF;
-- Object-taak - Opmerking
v_errormsg := 'Fout opmerking objecttaak wijzigen ';
IF rec.ins_srtcontroledl_xcp_opmerk IS NOT NULL AND rec.ins_srtcontroledl_xcp_opmerk <> v_objecttaakopmerking
THEN
UPDATE ins_srtcontroledl_xcp
SET ins_srtcontroledl_xcp_opmerk = rec.ins_srtcontroledl_xcp_opmerk
WHERE ins_srtcontroledl_xcp_key = rec.ins_srtcontroledl_xcp_key;
v_count_taakobject := trackTaakobject(rec.ins_deel_key, v_aanduiding_objecttaak, 'Taakopmerking', v_objecttaakopmerking, rec.ins_srtcontroledl_xcp_opmerk);
END IF;
-- Object-taak - Eenheid
v_errormsg := 'Fout eenheid wijzigen ';
IF rec.ins_srtcontroledl_xcp_eenheid IS NOT NULL AND rec.ins_srtcontroledl_xcp_eenheid <> v_eenheid AND rec.ismjob = 0
THEN
UPDATE ins_srtcontroledl_xcp
SET ins_srtcontroledl_xcp_eenheid = rec.ins_srtcontroledl_xcp_eenheid
WHERE ins_srtcontroledl_xcp_key = rec.ins_srtcontroledl_xcp_key;
v_count_taakobject := trackTaakobject(rec.ins_deel_key, v_aanduiding_objecttaak, 'Eenheid', v_eenheid, rec.ins_srtcontroledl_xcp_eenheid);
END IF;
-- Object-taak - Periode
v_errormsg := 'Fout periode wijzigen ';
IF rec.ins_srtcontroledl_xcp_periode IS NOT NULL AND rec.ins_srtcontroledl_xcp_periode <> v_periode
THEN
UPDATE ins_srtcontroledl_xcp
SET ins_srtcontroledl_xcp_periode = rec.ins_srtcontroledl_xcp_periode
WHERE ins_srtcontroledl_xcp_key = rec.ins_srtcontroledl_xcp_key;
v_count_taakobject := trackTaakobject(rec.ins_deel_key, v_aanduiding_objecttaak, 'Periode', v_periode, rec.ins_srtcontroledl_xcp_periode);
END IF;
-- Object-taak - Taakgroep
v_errormsg := 'Fout taakgroep wijzigen ';
IF rec.ins_srtcontrole_groep IS NOT NULL AND rec.ins_srtcontrole_groep <> v_taakgroep
THEN
UPDATE ins_srtcontroledl_xcp
SET ins_srtcontroledl_xcp_groep = rec.ins_srtcontrole_groep
WHERE ins_srtcontroledl_xcp_key = rec.ins_srtcontroledl_xcp_key;
v_count_taakobject := trackTaakobject(rec.ins_deel_key, v_aanduiding_objecttaak, 'Taakgroep', v_taakgroep, rec.ins_srtcontrole_groep);
END IF;
-- Object-taak - Eindjaar
v_errormsg := 'Fout eindjaar wijzigen ';
IF ( (rec.ins_srtcontroledl_xcp_eind IS NOT NULL AND v_eindjaar <> rec.ins_srtcontroledl_xcp_eind AND v_eindjaar IS NOT NULL)
OR (rec.ins_srtcontroledl_xcp_eind IS NOT NULL AND v_eindjaar IS NULL)
)
THEN
UPDATE ins_srtcontroledl_xcp
SET ins_srtcontroledl_xcp_eind = rec.ins_srtcontroledl_xcp_eind
WHERE ins_srtcontroledl_xcp_key = rec.ins_srtcontroledl_xcp_key;
v_count_taakobject := trackTaakobject(rec.ins_deel_key, v_aanduiding_objecttaak, 'Eindjaar', v_eindjaar, rec.ins_srtcontroledl_xcp_eind);
END IF;
-- Object-taak - Kosten
v_errormsg := 'Fout kosten wijzigen ';
IF rec.ins_srtcontroledl_xcp_materia IS NOT NULL AND rec.ins_srtcontroledl_xcp_materia <> v_materiaalkosten
THEN
UPDATE ins_srtcontroledl_xcp
SET ins_srtcontroledl_xcp_materia = rec.ins_srtcontroledl_xcp_materia
WHERE ins_srtcontroledl_xcp_key = rec.ins_srtcontroledl_xcp_key;
v_count_taakobject := trackTaakobject(rec.ins_deel_key, v_aanduiding_objecttaak, 'Kosten', v_materiaalkosten, rec.ins_srtcontroledl_xcp_materia);
END IF;
-- Object-taak - aantal
v_errormsg := 'Fout aantal wijzigen ';
IF ( (rec.ins_srtcontroledl_xcp_aantal IS NOT NULL AND v_aantal IS NOT NULL AND rec.ins_srtcontroledl_xcp_aantal <> v_aantal)
OR (rec.ins_srtcontroledl_xcp_aantal IS NOT NULL AND v_aantal IS NULL)
)
THEN
UPDATE ins_srtcontroledl_xcp
SET ins_srtcontroledl_xcp_aantal = rec.ins_srtcontroledl_xcp_aantal
WHERE ins_srtcontroledl_xcp_key = rec.ins_srtcontroledl_xcp_key;
v_count_taakobject := trackTaakobject(rec.ins_deel_key, v_aanduiding_objecttaak, 'Aantal', v_aantal, rec.ins_srtcontroledl_xcp_aantal);
END IF;
-- Object-taal - aantaleh
v_errormsg := 'fout aanteh wijzigen ';
IF ( (rec.ins_srtcontroledl_xcp_aanteh IS NOT NULL AND v_aantaleh IS NOT NULL AND rec.ins_srtcontroledl_xcp_aanteh <> v_aantaleh)
OR (rec.ins_srtcontroledl_xcp_aanteh IS NOT NULL AND v_aantaleh IS NULL)
)
THEN
UPDATE ins_srtcontroledl_xcp
SET ins_srtcontroledl_xcp_aanteh = rec.ins_srtcontroledl_xcp_aanteh
WHERE ins_srtcontroledl_xcp_key = rec.ins_srtcontroledl_xcp_key;
v_count_taakobject := trackTaakobject(rec.ins_deel_key, v_aanduiding_objecttaak, 'Aanteh', v_aantaleh, rec.ins_srtcontroledl_xcp_aanteh);
END IF;
IF v_count_taakobject = 1
THEN
v_count_w_taakobject := v_count_w_taakobject + 1 ;
END IF;
zetDeelStartdatum(rec.ins_deel_key, rec.ins_srtcontroledl_xcp_start);
EXCEPTION
WHEN OTHERS THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
fac.imp_writelog (p_import_key, 'E', v_errormsg || 'ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')', v_errormsg);
v_ongeldig := 1;
END;
v_aanduiding := 'Einde loop ' || v_aanduiding;
END LOOP;
IF v_ongeldig = 0
THEN
COMMIT;
fac.imp_writelog(p_import_key, 'S', 'IMPORT TAKEN: aantal verwerkte regels: ' || TO_CHAR (v_count_verwerk) || CHR(13) || CHR(10)
-- Update zonder fouten. Log verwerkingsoverzicht.
fac.imp_writelog(p_import_key, 'S', 'IMPORT TAKEN: update' || CHR(13) || CHR(10)
|| 'Aantal verwerkte regels: ' || TO_CHAR (v_count_verwerk) || CHR(13) || CHR(10)
|| 'Aantal nieuwe taken ingelezen: ' || TO_CHAR (v_count_n_taak) || CHR(13) || CHR(10)
|| 'Aantal nieuwe objecttaken ingelezen: ' || TO_CHAR (v_count_n_taakobject) || CHR(13) || CHR(10)
|| 'Aantal bestaande basistaken gewijzigd: ' || TO_CHAR (v_count_w_taak) || CHR(13) || CHR(10)
|| 'Aantal bestaande objecttaken gewijzigd: ' || TO_CHAR (v_count_w_taakobject)
, '');
ELSE
ROLLBACK;
END IF;
EXCEPTION
WHEN OTHERS THEN
ROLLBACK;
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
fac.imp_writelog (p_import_key, 'E', v_errormsg || 'ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')', v_aanduiding_objecttaak);
END;
END fac_update_taak_mjob;
/
CREATE OR REPLACE PROCEDURE fac_import_exchange (p_import_key IN NUMBER, p_days_from IN NUMBER DEFAULT 0, p_days_to IN NUMBER DEFAULT 90)
IS
BEGIN