KMMO#87048 Objecten import voor MJOB kan nu ook wijzigingen in objecten en taken aan.

svn path=/Customer/trunk/; revision=69040
This commit is contained in:
Arthur Egberink
2025-05-16 07:46:46 +00:00
parent 7a2d8889a2
commit 47c8e88549

View File

@@ -197,14 +197,14 @@ CREATE OR REPLACE PACKAGE BODY KMMO AS
fac_result_waarde)
VALUES (psessionid,
'kenmerkpath',
'MLD\M' || to_char( TRUNC(newkey/1000), 'FM0000') || '___\M' || newkey || '\' || kkey_att || '\');
'MLD\M' || to_char( TRUNC(newkey/1000), 'FM0000') || '___\M' || newkey || CHR(92) || kkey_att || CHR(92));
INSERT INTO fac_result (fac_result_sessionid,
fac_result_naam,
fac_result_waarde)
VALUES (psessionid,
'kenmerkorgmailpath',
'MLD\M' || TO_CHAR (TRUNC (newkey / 1000), 'FM0000') || '___\M' || newkey || '\' || kkey_mail || '\');
'MLD\M' || TO_CHAR (TRUNC (newkey / 1000), 'FM0000') || '___\M' || newkey || CHR(92) || kkey_mail || CHR(92));
mld.setmeldingstatus (newkey, status_key, sender);
@@ -460,11 +460,11 @@ AS
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
header_is_valid NUMBER;
v_count NUMBER;
v_ongeldig NUMBER (1);
v_mode NUMBER (1);
v_aanduiding VARCHAR2 (200);
v_all_null BOOLEAN;
v_count NUMBER (10);
v_count_error NUMBER (10);
v_count_tot NUMBER (10);
v_count_import NUMBER (10);
@@ -824,19 +824,19 @@ BEGIN
v_count_tot := v_count_tot + 1;
v_errormsg := 'Fout bij toevoegen te impoteren v_ins_discipline_omschrijving: ' || v_ins_srtdeel_code_txt;
v_errormsg := 'Fout bij toevoegen te importeren v_ins_discipline_omschrijving: ' || v_ins_srtdeel_code_txt;
SELECT d.ins_discipline_omschrijving
INTO v_ins_discipline_omschrijving
FROM ins_discipline d
WHERE SUBSTR (d.ins_discipline_omschrijving, 1, 1) = SUBSTR (v_ins_srtdeel_code_txt, 1, 1);
v_errormsg := 'Fout bij toevoegen te impoteren v_ins_srtgroep_omschrijving: ' || v_ins_srtdeel_code_txt;
v_errormsg := 'Fout bij toevoegen te importeren v_ins_srtgroep_omschrijving: ' || v_ins_srtdeel_code_txt;
SELECT sg.ins_srtgroep_omschrijving
INTO v_ins_srtgroep_omschrijving
FROM ins_srtgroep sg
WHERE SUBSTR (sg.ins_srtgroep_omschrijving, 1, 2) = SUBSTR (v_ins_srtdeel_code_txt, 1, 2);
v_errormsg := 'Fout bij toevoegen te impoteren ins_srtdeel_code: ' || v_ins_srtdeel_code_txt;
v_errormsg := 'Fout bij toevoegen te importeren ins_srtdeel_code: ' || v_ins_srtdeel_code_txt;
IF LENGTH(v_ins_srtdeel_code_txt) > 10
THEN
v_ins_srtdeel_code := REPLACE(v_ins_srtdeel_code_txt, '.');
@@ -844,22 +844,22 @@ BEGIN
v_ins_srtdeel_code := v_ins_srtdeel_code_txt;
END IF;
v_errormsg := 'Fout bij toevoegen te impoteren v_alg_ruimte_nr: ' || v_alg_ruimte_nr;
v_errormsg := 'Fout bij toevoegen te importeren v_alg_ruimte_nr: ' || v_alg_ruimte_nr;
SELECT alg_locatie_code, alg_gebouw_upper, alg_verdieping_volgnr
INTO v_alg_locatie_code, v_alg_gebouw_code, v_alg_verdieping_volgnr
FROM alg_v_ruimte_gegevens rg
WHERE UPPER(rg.alg_ruimte_nr) = UPPER(v_alg_ruimte_nr);
v_errormsg := 'Fout bij toevoegen te impoteren v_ins_deel_aanmaak_txt: ' || v_ins_deel_aanmaak_txt;
v_errormsg := 'Fout bij toevoegen te importeren v_ins_deel_aanmaak_txt: ' || v_ins_deel_aanmaak_txt;
v_ins_deel_aanmaak := NULL;
IF v_ins_deel_aanmaak_txt IS NOT NULL
IF FAC.safe_to_number(v_ins_deel_aanmaak_txt) IS NOT NULL
THEN
v_ins_deel_aanmaak := to_date('0101' || v_ins_deel_aanmaak_txt, 'ddmmyyyy');
ELSE
v_ins_deel_aanmaak := SYSDATE;
END IF;
v_errormsg := 'Fout bij toevoegen te impoteren v_kenmerk9: ' || v_kenmerk9;
v_errormsg := 'Fout bij toevoegen te importeren v_kenmerk9: ' || v_kenmerk9;
IF v_kenmerk9 IS NOT NULL
THEN
v_ins_deel_startjaar := to_date('0101' || v_kenmerk9, 'ddmmyyyy');
@@ -867,7 +867,7 @@ BEGIN
v_ins_deel_startjaar := NULL;
END IF;
v_errormsg := 'Fout bij toevoegen te impoteren v_ins_deel_aantal_txt: ' || v_ins_deel_aantal_txt;
v_errormsg := 'Fout bij toevoegen te importeren v_ins_deel_aantal_txt: ' || v_ins_deel_aantal_txt;
IF v_ins_deel_aantal_txt IS NOT NULL
THEN
v_ins_deel_aantal := to_number(v_ins_deel_aantal_txt);
@@ -875,7 +875,7 @@ BEGIN
v_ins_deel_aantal := 1;
END IF;
v_errormsg := 'Fout bij toevoegen te impoteren v_ins_srtcontrole_periode_txt: ' || v_ins_srtcontrole_periode_txt;
v_errormsg := 'Fout bij toevoegen te importeren v_ins_srtcontrole_periode_txt: ' || v_ins_srtcontrole_periode_txt;
IF v_ins_srtcontrole_periode_txt IS NOT NULL
THEN
v_ins_srtcontrole_periode := to_number(v_ins_srtcontrole_periode_txt);
@@ -883,7 +883,7 @@ BEGIN
v_ins_srtcontrole_periode := NULL;
END IF;
v_errormsg := 'Fout bij toevoegen te impoteren v_ins_srtcontrole_prijs_txt: ' || v_ins_srtcontrole_prijs_txt;
v_errormsg := 'Fout bij toevoegen te importeren v_ins_srtcontrole_prijs_txt: ' || v_ins_srtcontrole_prijs_txt;
IF v_ins_srtcontrole_prijs_txt IS NOT NULL
THEN
v_ins_srtcontrole_prijs := to_number(REPLACE(REPLACE(v_ins_srtcontrole_prijs_txt, '.'), ',', '.'));
@@ -891,7 +891,7 @@ BEGIN
v_ins_srtcontrole_prijs := NULL;
END IF;
v_errormsg := 'Fout bij toevoegen te impoteren v_kenmerk7: ' || v_kenmerk7;
v_errormsg := 'Fout bij toevoegen te importeren v_kenmerk7: ' || v_kenmerk7;
IF v_kenmerk7 IS NOT NULL
THEN
IF INSTR(v_kenmerk7, '%') = 0
@@ -904,6 +904,18 @@ BEGIN
v_ins_deel_percentage := 100;
END IF;
SELECT count(*)
INTO v_count
FROM ins_deel
WHERE ins_deel_verwijder IS NULL
AND ins_deel_omschrijving = v_ins_deel_omschrijving;
IF v_count > 0 THEN
fac.imp_writelog (p_import_key,
'W',
'Object bestaat al: ',
v_ins_deel_omschrijving);
END IF;
INSERT INTO fac_imp_ins (ins_discipline_omschrijving,
ins_srtgroep_omschrijving,
ins_srtdeel_code,
@@ -986,23 +998,44 @@ CREATE OR REPLACE PROCEDURE kmmo_update_assets (p_import_key IN NUMBER)
AS
CURSOR c IS SELECT * FROM fac_imp_ins;
CURSOR c_upd_deel IS
SELECT DISTINCT ins_deel_omschrijving, alg_ruimte_key, alg_locatie_key, ins_deel_aanmaak, ins_deel_aantal
FROM alg_v_ruimte_gegevens rg, fac_imp_ins i
WHERE rg.alg_locatie_code = i.alg_locatie_code
AND rg.alg_gebouw_upper = i.alg_gebouw_code
AND rg.alg_verdieping_volgnr = i.alg_verdieping_volgnr
AND rg.alg_ruimte_nr = i.alg_ruimte_nr;
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_errormsg VARCHAR2 (200);
v_errorhint VARCHAR2 (200);
v_aanduiding VARCHAR2 (100);
v_deel_key NUMBER;
v_srtdeel_key NUMBER;
v_srtcontrole_key NUMBER;
v_srtcontroledl_xcp_key NUMBER;
v_taakcat_key NUMBER;
v_srtcontrole_periode INS_SRTCONTROLE.INS_SRTCONTROLE_PERIODE%TYPE;
v_srtcontrole_materiaal INS_SRTCONTROLE.INS_SRTCONTROLE_MATERIAAL%TYPE;
v_srtcontrole_percentage INS_SRTCONTROLE.INS_SRTCONTROLE_PERCENTAGE%TYPE;
v_srtcontrole_level INS_SRTCONTROLE.INS_SRTCONTROLE_LEVEL%TYPE;
v_percentage NUMBER;
v_materiaal INS_SRTCONTROLEDL_XCP.INS_SRTCONTROLEDL_XCP_MATERIA%TYPE;
v_deel_key NUMBER;
v_srtdeel_key NUMBER;
v_srtcontrole_key NUMBER;
v_srtcontroledl_xcp_key NUMBER;
v_taakcat_key NUMBER;
v_srtcontrole_periode INS_SRTCONTROLE.INS_SRTCONTROLE_PERIODE%TYPE;
v_srtcontrole_materiaal INS_SRTCONTROLE.INS_SRTCONTROLE_MATERIAAL%TYPE;
v_srtcontrole_percentage INS_SRTCONTROLE.INS_SRTCONTROLE_PERCENTAGE%TYPE;
v_srtcontrole_level INS_SRTCONTROLE.INS_SRTCONTROLE_LEVEL%TYPE;
v_percentage NUMBER;
v_materiaal INS_SRTCONTROLEDL_XCP.INS_SRTCONTROLEDL_XCP_MATERIA%TYPE;
v_srtcontroledl_xcp_materia INS_SRTCONTROLEDL_XCP.INS_SRTCONTROLEDL_XCP_MATERIA%TYPE;
v_srtcontroledl_xcp_perc INS_SRTCONTROLEDL_XCP.INS_SRTCONTROLEDL_XCP_PERC%TYPE;
v_srtcontroledl_xcp_startdat INS_SRTCONTROLEDL_XCP.INS_SRTCONTROLEDL_XCP_STARTDAT%TYPE;
v_startdat_nieuw INS_SRTCONTROLEDL_XCP.INS_SRTCONTROLEDL_XCP_STARTDAT%TYPE;
v_ruimte_aanduiding_nieuw VARCHAR2 (100);
v_ruimte_aanduiding_oud VARCHAR2 (100);
v_alg_ruimte_key NUMBER (10);
v_alg_locatie_key NUMBER (10);
v_deel_aanmaak DATE;
v_deel_aantal NUMBER;
BEGIN
fac_update_ins(p_import_key);
@@ -1058,6 +1091,7 @@ BEGIN
FROM ins_srtcontrole
WHERE ins_srtinstallatie_key = v_srtdeel_key
AND ins_srtcontrole_niveau = 'S'
AND ins_srtcontrole_omschrijving = rec.ins_kenmerkwaarde3 || ' - ' || rec.ins_srtdeel_code
AND ctr_discipline_key = v_taakcat_key;
IF v_srtcontrole_periode <>
@@ -1068,14 +1102,24 @@ BEGIN
AND rec.ins_kenmerkwaarde9 <>
COALESCE (rec.ins_kenmerkwaarde10, '01010000'))
THEN
-- dan moeten we een dl_xcp record aanmaken
v_errorhint := 'Aanmaken xcp';
-- bestaat er al een xcp record?
BEGIN
SELECT ins_srtcontroledl_xcp_key, ins_srtcontroledl_xcp_materia, ins_srtcontroledl_xcp_perc, ins_srtcontroledl_xcp_startdat
INTO v_srtcontroledl_xcp_key, v_srtcontroledl_xcp_materia, v_srtcontroledl_xcp_perc, v_srtcontroledl_xcp_startdat
FROM ins_srtcontroledl_xcp
WHERE ins_srtcontrole_key = v_srtcontrole_key
AND ins_deel_key = v_deel_key;
EXCEPTION WHEN NO_DATA_FOUND
THEN
-- dan moeten we een dl_xcp record aanmaken
v_errorhint := 'Aanmaken xcp';
INSERT INTO ins_srtcontroledl_xcp (ins_srtcontrole_key,
ins_deel_key)
VALUES (v_srtcontrole_key, v_deel_key)
RETURNING ins_srtcontroledl_xcp_key
INTO v_srtcontroledl_xcp_key;
INSERT INTO ins_srtcontroledl_xcp (ins_srtcontrole_key,
ins_deel_key)
VALUES (v_srtcontrole_key, v_deel_key)
RETURNING ins_srtcontroledl_xcp_key
INTO v_srtcontroledl_xcp_key;
END;
v_errorhint := 'Aanpassen periode';
@@ -1089,6 +1133,12 @@ BEGIN
0)
WHERE ins_srtcontroledl_xcp_key =
v_srtcontroledl_xcp_key;
fac.trackaction('#INSUPD',
v_deel_key,
NULL,
NULL,
rec.ins_kenmerkwaarde3 || ' ' || rec.ins_kenmerkwaarde3 || ' - ' || rec.ins_srtdeel_code || ' is gewijzigd' || CHR(10)
|| 'Periode: ' || COALESCE(v_srtcontrole_periode, '(leeg)') || ' --> ' || COALESCE(rec.ins_kenmerkwaarde8, '(leeg)'));
END IF;
v_errorhint :=
@@ -1103,6 +1153,13 @@ BEGIN
SET ins_srtcontroledl_xcp_materia = v_materiaal
WHERE ins_srtcontroledl_xcp_key =
v_srtcontroledl_xcp_key;
fac.trackaction('#INSUPD',
v_deel_key,
NULL,
NULL,
rec.ins_kenmerkwaarde3 || ' ' || rec.ins_kenmerkwaarde3 || ' - ' || rec.ins_srtdeel_code || ' is gewijzigd' || CHR(10)
|| 'Materiaal (EUR): ' || COALESCE(v_srtcontroledl_xcp_materia, v_srtcontrole_materiaal, '(leeg)') || ' --> ' || COALESCE(v_materiaal, '(leeg)'));
END IF;
v_errorhint := 'Aanpassen percentage';
@@ -1113,22 +1170,35 @@ BEGIN
SET ins_srtcontroledl_xcp_perc = v_percentage
WHERE ins_srtcontroledl_xcp_key =
v_srtcontroledl_xcp_key;
fac.trackaction('#INSUPD',
v_deel_key,
NULL,
NULL,
rec.ins_kenmerkwaarde3 || ' ' || rec.ins_kenmerkwaarde3 || ' - ' || rec.ins_srtdeel_code || ' is gewijzigd' || CHR(10)
|| 'Percentage: ' || COALESCE(v_srtcontroledl_xcp_perc, v_srtcontrole_percentage, '(leeg)') || ' --> ' || COALESCE(v_percentage, '(leeg)'));
END IF;
v_errorhint := 'Aanpassen startdatum: ' || rec.ins_kenmerkwaarde9;
IF rec.ins_kenmerkwaarde9 IS NOT NULL
AND rec.ins_kenmerkwaarde9 <>
COALESCE (rec.ins_kenmerkwaarde10, '01010000')
THEN
UPDATE ins_srtcontroledl_xcp
SET ins_srtcontroledl_xcp_startdat =
TRUNC (
TO_DATE (rec.ins_kenmerkwaarde9,
'DDMMYYYY'),
'YYYY')
WHERE ins_srtcontroledl_xcp_key =
v_srtcontroledl_xcp_key;
v_startdat_nieuw := TRUNC (FAC.SAFE_TO_DATE (rec.ins_kenmerkwaarde9, 'DDMMYYYY'), 'YYYY');
IF v_startdat_nieuw IS NOT NULL
AND v_startdat_nieuw <> v_srtcontroledl_xcp_startdat
AND rec.ins_kenmerkwaarde9 <> COALESCE (rec.ins_kenmerkwaarde10, '01010000')
THEN
UPDATE ins_srtcontroledl_xcp
SET ins_srtcontroledl_xcp_startdat = v_startdat_nieuw
WHERE ins_srtcontroledl_xcp_key =
v_srtcontroledl_xcp_key;
fac.trackaction('#INSUPD',
v_deel_key,
NULL,
NULL,
rec.ins_kenmerkwaarde3 || ' ' || rec.ins_kenmerkwaarde3 || ' - ' || rec.ins_srtdeel_code || ' is gewijzigd' || CHR(10)
|| 'Startdatum: '|| COALESCE(TO_CHAR(v_srtcontroledl_xcp_startdat, 'dd-mm-yyyy'), '(leeg)') || ' --> ' || COALESCE(TO_CHAR(v_startdat_nieuw, 'dd-mm-yyyy'), '(leeg)'));
END IF;
END IF;
END IF;
EXCEPTION
@@ -1194,6 +1264,120 @@ BEGIN
END;
END LOOP;
-- Nu gaan we de wijzigingen in de delen doorvoeren
FOR rec IN c_upd_deel
LOOP
BEGIN
SELECT ins_deel_key
INTO v_deel_key
FROM ins_deel
WHERE ins_deel_verwijder IS NULL AND ins_deel_omschrijving = rec.ins_deel_omschrijving;
SELECT ins_alg_ruimte_key, ins_alg_locatie_key
INTO v_alg_ruimte_key, v_alg_locatie_key
FROM ins_deel
WHERE ins_deel_key = v_deel_key;
IF v_alg_ruimte_key <> rec.alg_ruimte_key
THEN
UPDATE ins_deel d
SET ins_alg_ruimte_key = rec.alg_ruimte_key, ins_alg_locatie_key = rec.alg_locatie_key
WHERE d.ins_deel_key = v_deel_key;
SELECT alg_ruimte_aanduiding || ' (' || alg_ruimte_omschrijving || ')'
INTO v_ruimte_aanduiding_oud
FROM alg_v_ruimte_gegevens
WHERE alg_ruimte_key = v_alg_ruimte_key;
SELECT alg_ruimte_aanduiding || ' (' || alg_ruimte_omschrijving || ')'
INTO v_ruimte_aanduiding_nieuw
FROM alg_v_ruimte_gegevens
WHERE alg_ruimte_key = rec.alg_ruimte_key;
fac.trackaction (
'INSUPD',
v_deel_key,
NULL,
NULL,
'Object gewijzigd'
|| CHR (10)
|| 'Plaats of eigenaar: '
|| v_ruimte_aanduiding_oud
|| ' --> '
|| v_ruimte_aanduiding_nieuw);
END IF;
EXCEPTION
WHEN OTHERS
THEN
DBMS_OUTPUT.put_line (rec.ins_deel_omschrijving);
END;
BEGIN
SELECT ins_deel_aanmaak
INTO v_deel_aanmaak
FROM ins_deel
WHERE ins_deel_key = v_deel_key;
IF v_deel_aanmaak <> rec.ins_deel_aanmaak
THEN
UPDATE ins_deel d
SET ins_deel_aanmaak = rec.ins_deel_aanmaak
WHERE d.ins_deel_key = v_deel_key;
fac.trackaction (
'INSUPD',
v_deel_key,
NULL,
NULL,
'Object gewijzigd'
|| CHR (10)
|| 'Registratiedatum: '
|| TO_CHAR(v_deel_aanmaak, 'dd-mm-yyyy')
|| ' --> '
|| TO_CHAR(rec.ins_deel_aanmaak, 'dd-mm-yyyy'));
END IF;
EXCEPTION
WHEN OTHERS
THEN
DBMS_OUTPUT.put_line (rec.ins_deel_omschrijving);
END;
BEGIN
SELECT ins_deel_aantal
INTO v_deel_aantal
FROM ins_deel
WHERE ins_deel_key = v_deel_key;
IF v_deel_aantal <> rec.ins_deel_aantal
THEN
UPDATE ins_deel d
SET ins_deel_aantal = rec.ins_deel_aantal
WHERE d.ins_deel_key = v_deel_key;
fac.trackaction (
'INSUPD',
v_deel_key,
NULL,
NULL,
'Object gewijzigd'
|| CHR (10)
|| 'Hoeveelheid: '
|| v_deel_aantal
|| ' --> '
|| rec.ins_deel_aantal);
END IF;
EXCEPTION
WHEN OTHERS
THEN
DBMS_OUTPUT.put_line (rec.ins_deel_omschrijving);
END;
END LOOP;
EXCEPTION
WHEN OTHERS
THEN