PNBR#72493 IMPORT_VM faalt elke nacht
svn path=/Customer/trunk/; revision=61902
This commit is contained in:
261
PNBR/pnbr.sql
261
PNBR/pnbr.sql
@@ -3115,267 +3115,6 @@ AS
|
||||
AND a10.prs_afdeling_parentkey = a9.prs_afdeling_key
|
||||
AND a1.prs_afdeling_parentkey IS NULL;
|
||||
|
||||
|
||||
-- import om objectinformatie via de api in te lezen
|
||||
|
||||
CREATE OR REPLACE PROCEDURE pnbr_import_ins_mut (p_import_key IN NUMBER)
|
||||
AS
|
||||
BEGIN
|
||||
fac_import_ins (p_import_key);
|
||||
END;
|
||||
/
|
||||
|
||||
CREATE OR REPLACE PROCEDURE pnbr_update_ins_mut (p_import_key IN NUMBER)
|
||||
AS
|
||||
CURSOR c IS
|
||||
SELECT (SELECT MAX (ins_deel_key)
|
||||
FROM ins_v_aanwezigdeel ad
|
||||
WHERE UPPER (ad.ins_deel_omschrijving) =
|
||||
UPPER (i.ins_deel_omschrijving)) ins_deel_key,
|
||||
i.*
|
||||
FROM fac_imp_ins i;
|
||||
|
||||
CURSOR c_del IS
|
||||
SELECT d.ins_deel_key
|
||||
FROM ins_v_deel_gegevens ad, ins_deel d
|
||||
WHERE ad.ins_deel_key = d.ins_deel_key
|
||||
AND COALESCE (d.ins_deel_vervaldatum, SYSDATE + 1) > SYSDATE
|
||||
-- Het betreffende object komt niet meer voor in het importbestand
|
||||
AND NOT EXISTS
|
||||
(SELECT ins_deel_omschrijving
|
||||
FROM fac_imp_ins i
|
||||
WHERE UPPER (i.ins_deel_omschrijving) =
|
||||
UPPER (ad.ins_deel_omschrijving))
|
||||
-- En het importbestand bevat objecten van dit objectsoort.
|
||||
AND (SELECT COUNT (*)
|
||||
FROM fac_imp_ins
|
||||
WHERE UPPER (ins_srtdeel_omschrijving) =
|
||||
ad.ins_srtdeel_upper) >
|
||||
0;
|
||||
|
||||
PROCEDURE log_inskenmerk (p_import_key IN NUMBER,
|
||||
p_str IN VARCHAR2,
|
||||
p_deel_key IN NUMBER)
|
||||
AS
|
||||
v_srtkenmerk_key ins_srtkenmerk.ins_srtkenmerk_key%TYPE;
|
||||
v_kenmerk_key ins_kenmerk.ins_kenmerk_key%TYPE;
|
||||
v_waarde_new ins_kenmerkdeel.ins_kenmerkdeel_waarde%TYPE;
|
||||
v_kenmerk_type ins_srtkenmerk.ins_srtkenmerk_kenmerktype%TYPE;
|
||||
v_srtkenmerk_omschrijving ins_srtkenmerk.ins_srtkenmerk_omschrijving%TYPE;
|
||||
v_waarde_old ins_kenmerkdeel.ins_kenmerkdeel_waarde%TYPE;
|
||||
v_kenmerkdomein_key fac_kenmerkdomein.fac_kenmerkdomein_key%TYPE;
|
||||
v_kenmerk_niveau ins_kenmerk.ins_kenmerk_niveau%TYPE;
|
||||
v_kenmerkdeel_key ins_kenmerkdeel.ins_kenmerkdeel_key%TYPE;
|
||||
v_srtnotificatie_key fac_srtnotificatie.fac_srtnotificatie_key%TYPE;
|
||||
v_log imp_log.imp_log_omschrijving%TYPE;
|
||||
v_errormsg VARCHAR2 (200);
|
||||
oracle_err_num NUMBER;
|
||||
oracle_err_mes VARCHAR2 (200);
|
||||
BEGIN
|
||||
IF p_str IS NOT NULL AND INSTR (p_str, '=') > 1
|
||||
THEN
|
||||
v_srtkenmerk_omschrijving := SUBSTR (p_str, 1, INSTR (p_str, '|') - 1);
|
||||
|
||||
SELECT ins_srtkenmerk_key
|
||||
INTO v_srtkenmerk_key
|
||||
FROM ins_srtkenmerk
|
||||
WHERE ins_srtkenmerk_verwijder IS NULL
|
||||
AND ins_srtkenmerk_upper = UPPER(v_srtkenmerk_omschrijving);
|
||||
|
||||
v_waarde_new := SUBSTR (p_str, INSTR (p_str, '=') + 1, 100);
|
||||
|
||||
-- vind de bijbehorende kenmerk key
|
||||
SELECT k.ins_kenmerk_key, k.ins_kenmerk_niveau
|
||||
INTO v_kenmerk_key, v_kenmerk_niveau
|
||||
FROM ins_kenmerk k, ins_v_deel_gegevens dg
|
||||
WHERE ins_srtkenmerk_key = v_srtkenmerk_key
|
||||
AND dg.ins_deel_key = p_deel_key
|
||||
AND ( ( k.ins_kenmerk_niveau = 'S'
|
||||
AND k.ins_srtinstallatie_key = dg.ins_srtdeel_key)
|
||||
OR ( k.ins_kenmerk_niveau = 'G'
|
||||
AND k.ins_srtinstallatie_key =
|
||||
dg.ins_srtgroep_key)
|
||||
OR ( k.ins_kenmerk_niveau = 'D'
|
||||
AND k.ins_srtinstallatie_key =
|
||||
dg.ins_discipline_key));
|
||||
|
||||
-- vind de srtkenmerkgegevens die nodig zijn om de waarde te bepalen en de naam van het kenmerk in de log op te nemen.
|
||||
SELECT sk.ins_srtkenmerk_kenmerktype,
|
||||
sk.fac_kenmerkdomein_key,
|
||||
sk.ins_srtkenmerk_omschrijving
|
||||
INTO v_kenmerk_type,
|
||||
v_kenmerkdomein_key,
|
||||
v_srtkenmerk_omschrijving
|
||||
FROM ins_srtkenmerk sk
|
||||
WHERE sk.ins_srtkenmerk_key = v_srtkenmerk_key;
|
||||
|
||||
BEGIN
|
||||
SELECT ikd.ins_kenmerkdeel_waarde, ikd.ins_kenmerkdeel_key
|
||||
INTO v_waarde_old, v_kenmerkdeel_key
|
||||
FROM ins_kenmerkdeel ikd
|
||||
WHERE ikd.ins_deel_key = p_deel_key
|
||||
AND ikd.ins_kenmerkdeel_verwijder IS NULL
|
||||
AND ikd.ins_kenmerk_key = v_kenmerk_key;
|
||||
|
||||
IF v_kenmerk_type = 'R' OR v_kenmerk_type = 'S'
|
||||
THEN
|
||||
v_waarde_old :=
|
||||
fac.getdomeinwaarde (v_kenmerkdomein_key,
|
||||
v_waarde_old);
|
||||
ELSIF v_kenmerk_type = 'D'
|
||||
THEN
|
||||
v_waarde_old :=
|
||||
TO_CHAR (
|
||||
fac.safe_to_date (v_waarde_old, 'dd-mm-yyyy'),
|
||||
'yyyy-mm-dd');
|
||||
ELSIF v_kenmerk_type = 'N'
|
||||
THEN
|
||||
v_waarde_old :=
|
||||
TO_CHAR (fac.safe_to_number (v_waarde_old));
|
||||
END IF;
|
||||
EXCEPTION
|
||||
WHEN NO_DATA_FOUND
|
||||
THEN
|
||||
v_waarde_old := NULL;
|
||||
v_kenmerkdeel_key := NULL;
|
||||
END;
|
||||
|
||||
v_waarde_old := COALESCE (v_waarde_old, '(leeg)');
|
||||
v_waarde_new := COALESCE (v_waarde_new, '(leeg)');
|
||||
|
||||
IF v_waarde_old <> v_waarde_new
|
||||
THEN
|
||||
v_log :=
|
||||
v_srtkenmerk_omschrijving
|
||||
|| ': '
|
||||
|| v_waarde_old
|
||||
|| ' --> '
|
||||
|| v_waarde_new;
|
||||
|
||||
SELECT fac_srtnotificatie_key
|
||||
INTO v_srtnotificatie_key
|
||||
FROM fac_srtnotificatie
|
||||
WHERE fac_srtnotificatie_code = 'INSUPD';
|
||||
|
||||
INSERT INTO fac_tracking (fac_srtnotificatie_key,
|
||||
fac_tracking_refkey,
|
||||
fac_tracking_oms)
|
||||
VALUES (v_srtnotificatie_key, p_deel_key, v_log);
|
||||
|
||||
IF v_waarde_new = '(leeg)'
|
||||
THEN
|
||||
-- kenmerken worden (nog) niet verwijderd in de fac_update_ins routine
|
||||
DELETE ins_kenmerkdeel
|
||||
WHERE ins_kenmerkdeel_key = v_kenmerkdeel_key;
|
||||
END IF;
|
||||
END IF;
|
||||
END IF;
|
||||
EXCEPTION
|
||||
WHEN OTHERS
|
||||
THEN
|
||||
oracle_err_num := SQLCODE;
|
||||
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
||||
v_errormsg :=
|
||||
' ORACLE (error '
|
||||
|| oracle_err_num
|
||||
|| '/'
|
||||
|| oracle_err_mes
|
||||
|| ')';
|
||||
fac.imp_writelog (
|
||||
p_import_key,
|
||||
'W',
|
||||
'Kenmerkwijziging kon niet gelogd worden. ' || v_errormsg,
|
||||
'Deel_key:' || p_deel_key || ' String:' || p_str);
|
||||
END;
|
||||
BEGIN
|
||||
FOR rec IN c
|
||||
LOOP
|
||||
log_inskenmerk (p_import_key,
|
||||
rec.ins_kenmerkwaarde1,
|
||||
rec.ins_deel_key);
|
||||
log_inskenmerk (p_import_key,
|
||||
rec.ins_kenmerkwaarde2,
|
||||
rec.ins_deel_key);
|
||||
log_inskenmerk (p_import_key,
|
||||
rec.ins_kenmerkwaarde3,
|
||||
rec.ins_deel_key);
|
||||
log_inskenmerk (p_import_key,
|
||||
rec.ins_kenmerkwaarde4,
|
||||
rec.ins_deel_key);
|
||||
log_inskenmerk (p_import_key,
|
||||
rec.ins_kenmerkwaarde5,
|
||||
rec.ins_deel_key);
|
||||
log_inskenmerk (p_import_key,
|
||||
rec.ins_kenmerkwaarde6,
|
||||
rec.ins_deel_key);
|
||||
log_inskenmerk (p_import_key,
|
||||
rec.ins_kenmerkwaarde7,
|
||||
rec.ins_deel_key);
|
||||
log_inskenmerk (p_import_key,
|
||||
rec.ins_kenmerkwaarde8,
|
||||
rec.ins_deel_key);
|
||||
log_inskenmerk (p_import_key,
|
||||
rec.ins_kenmerkwaarde9,
|
||||
rec.ins_deel_key);
|
||||
log_inskenmerk (p_import_key,
|
||||
rec.ins_kenmerkwaarde10,
|
||||
rec.ins_deel_key);
|
||||
log_inskenmerk (p_import_key,
|
||||
rec.ins_kenmerkwaarde11,
|
||||
rec.ins_deel_key);
|
||||
log_inskenmerk (p_import_key,
|
||||
rec.ins_kenmerkwaarde12,
|
||||
rec.ins_deel_key);
|
||||
log_inskenmerk (p_import_key,
|
||||
rec.ins_kenmerkwaarde13,
|
||||
rec.ins_deel_key);
|
||||
log_inskenmerk (p_import_key,
|
||||
rec.ins_kenmerkwaarde14,
|
||||
rec.ins_deel_key);
|
||||
log_inskenmerk (p_import_key,
|
||||
rec.ins_kenmerkwaarde15,
|
||||
rec.ins_deel_key);
|
||||
log_inskenmerk (p_import_key,
|
||||
rec.ins_kenmerkwaarde16,
|
||||
rec.ins_deel_key);
|
||||
log_inskenmerk (p_import_key,
|
||||
rec.ins_kenmerkwaarde17,
|
||||
rec.ins_deel_key);
|
||||
log_inskenmerk (p_import_key,
|
||||
rec.ins_kenmerkwaarde18,
|
||||
rec.ins_deel_key);
|
||||
log_inskenmerk (p_import_key,
|
||||
rec.ins_kenmerkwaarde19,
|
||||
rec.ins_deel_key);
|
||||
log_inskenmerk (p_import_key,
|
||||
rec.ins_kenmerkwaarde20,
|
||||
rec.ins_deel_key);
|
||||
END LOOP;
|
||||
|
||||
fac_update_ins (p_import_key);
|
||||
|
||||
-- fac_update_ins maakt tracking aan voor alle elementen die al in de lijst voorkomen.
|
||||
-- deze tracking is verwarrend en gaan we verwijderen. De tracking is te herkennen aan het feit
|
||||
-- dat er geen omschrijving bij staat.
|
||||
DELETE fac_tracking t
|
||||
WHERE fac_srtnotificatie_key IN
|
||||
(SELECT fac_srtnotificatie_key
|
||||
FROM fac_srtnotificatie
|
||||
WHERE fac_srtnotificatie_code = 'INSUPD')
|
||||
AND fac_tracking_oms IS NULL
|
||||
AND TRUNC (fac_tracking_datum) = TRUNC (SYSDATE);
|
||||
|
||||
-- Verwijder elementen die niet meer voorkomen in de import
|
||||
FOR rec IN c_del
|
||||
LOOP
|
||||
UPDATE ins_deel
|
||||
SET ins_deel_vervaldatum = SYSDATE
|
||||
WHERE ins_deel_key = rec.ins_deel_key;
|
||||
END LOOP;
|
||||
END;
|
||||
/
|
||||
|
||||
|
||||
/*
|
||||
CREATE OR REPLACE PROCEDURE pnbr_import_mjob (p_import_key IN NUMBER)
|
||||
AS
|
||||
|
||||
Reference in New Issue
Block a user