CONN#22935
svn path=/Customer/trunk/; revision=15850
This commit is contained in:
970
CONN/conn.sql
970
CONN/conn.sql
@@ -11698,6 +11698,976 @@ EXCEPTION
|
||||
END conn_update_keurobjecten;
|
||||
/
|
||||
|
||||
/* Formatted on 6-11-2012 12:12:12 (QP5 v5.115.810.9015) */
|
||||
CREATE OR REPLACE VIEW conn_v_rap_srtdeel_swap_expimp
|
||||
(
|
||||
fclt_f_discipline,
|
||||
fclt_f_groep,
|
||||
fclt_f_objectsoort,
|
||||
fclt_f_objectsoort_code,
|
||||
objectsoort_aanmaak,
|
||||
object_id,
|
||||
cur_objectsoort_key,
|
||||
new_objectsoort_key,
|
||||
object_aanmaak,
|
||||
fclt_f_locatie_code,
|
||||
locatie_oms,
|
||||
fclt_f_controle,
|
||||
controle_periode,
|
||||
controle_key,
|
||||
fclt_f_contract,
|
||||
fclt_f_contract_lev
|
||||
)
|
||||
AS
|
||||
SELECT x.discipline,
|
||||
x.groep,
|
||||
x.objectsoort,
|
||||
x.objectsoort_code,
|
||||
TO_CHAR (x.objectsoort_aanmaak, 'dd-mm-yyyy hh24:mi:ss')
|
||||
objectsoort_aanmaak,
|
||||
x.object,
|
||||
TO_CHAR (x.objectsoort_key),
|
||||
NULL,
|
||||
TO_CHAR (x.object_aanmaak, 'dd-mm-yyyy hh24:mi:ss')
|
||||
object_aanmaak,
|
||||
x.alg_locatie_code,
|
||||
x.alg_locatie_omschrijving,
|
||||
csd.ins_srtcontrole_omschrijving controle,
|
||||
TO_CHAR (csd.ins_srtcontrole_periode) controle_periode,
|
||||
TO_CHAR (csd.ins_srtcontrole_key) controle_key,
|
||||
c.contract,
|
||||
c.contract_lev
|
||||
FROM (SELECT td.ins_discipline_omschrijving discipline,
|
||||
sg.ins_srtgroep_omschrijving groep,
|
||||
sd.ins_srtdeel_omschrijving objectsoort,
|
||||
sd.ins_srtdeel_code objectsoort_code,
|
||||
sd.ins_srtdeel_key objectsoort_key,
|
||||
sd.ins_srtdeel_aanmaak objectsoort_aanmaak,
|
||||
'*** Alle ***' object,
|
||||
NULL object_key,
|
||||
NULL object_aanmaak,
|
||||
'*** Alle ***' alg_locatie_code,
|
||||
NULL alg_locatie_omschrijving,
|
||||
NULL alg_locatie_key
|
||||
FROM ins_srtdeel sd,
|
||||
ins_srtgroep sg,
|
||||
ins_tab_discipline td
|
||||
WHERE sd.ins_srtgroep_key = sg.ins_srtgroep_key
|
||||
AND sg.ins_discipline_key = td.ins_discipline_key
|
||||
AND EXISTS
|
||||
(SELECT 1
|
||||
FROM ins_v_aanwezigdeel
|
||||
WHERE ins_srtdeel_key =
|
||||
sd.ins_srtdeel_key)
|
||||
UNION ALL
|
||||
SELECT td.ins_discipline_omschrijving discipline,
|
||||
sg.ins_srtgroep_omschrijving groep,
|
||||
sd.ins_srtdeel_omschrijving objectsoort,
|
||||
sd.ins_srtdeel_code objectsoort_code,
|
||||
sd.ins_srtdeel_key objectsoort_key,
|
||||
sd.ins_srtdeel_aanmaak objectsoort_aanmaak,
|
||||
d.ins_deel_omschrijving object,
|
||||
d.ins_deel_key object_key,
|
||||
d.ins_deel_aanmaak object_aanmaak,
|
||||
--d.ins_alg_ruimte_key,
|
||||
--d.ins_alg_ruimte_type,
|
||||
l.alg_locatie_code,
|
||||
l.alg_locatie_omschrijving,
|
||||
l.alg_locatie_key
|
||||
FROM ins_v_aanwezigdeel d,
|
||||
ins_srtdeel sd,
|
||||
ins_srtgroep sg,
|
||||
ins_tab_discipline td,
|
||||
alg_locatie l
|
||||
WHERE d.ins_srtdeel_key = sd.ins_srtdeel_key
|
||||
AND sd.ins_srtgroep_key = sg.ins_srtgroep_key
|
||||
AND sg.ins_discipline_key = td.ins_discipline_key
|
||||
AND d.ins_alg_locatie_key = l.alg_locatie_key(+))
|
||||
x
|
||||
LEFT JOIN
|
||||
(SELECT scs.ins_srtinstallatie_key ins_srtdeel_key,
|
||||
scs.ins_srtcontrole_key,
|
||||
scs.ins_srtcontrole_omschrijving,
|
||||
scs.ins_srtcontrole_periode
|
||||
FROM ins_srtcontrole scs
|
||||
WHERE scs.ins_srtcontrole_niveau = 'S'
|
||||
UNION ALL
|
||||
SELECT sd.ins_srtdeel_key,
|
||||
scg.ins_srtcontrole_key,
|
||||
scg.ins_srtcontrole_omschrijving,
|
||||
scg.ins_srtcontrole_periode
|
||||
FROM ins_srtcontrole scg, ins_srtdeel sd
|
||||
WHERE scg.ins_srtcontrole_niveau = 'G'
|
||||
AND scg.ins_srtinstallatie_key =
|
||||
sd.ins_srtgroep_key
|
||||
UNION ALL
|
||||
SELECT sd.ins_srtdeel_key,
|
||||
scd.ins_srtcontrole_key,
|
||||
scd.ins_srtcontrole_omschrijving,
|
||||
scd.ins_srtcontrole_periode
|
||||
FROM ins_srtcontrole scd,
|
||||
ins_srtgroep sg,
|
||||
ins_srtdeel sd
|
||||
WHERE scd.ins_srtcontrole_niveau = 'D'
|
||||
AND scd.ins_srtinstallatie_key =
|
||||
sg.ins_discipline_key
|
||||
AND sg.ins_srtgroep_key = sd.ins_srtgroep_key)
|
||||
csd
|
||||
ON x.objectsoort_key = csd.ins_srtdeel_key
|
||||
AND x.object != '*** Alle ***'
|
||||
-- LEFT JOIN
|
||||
-- (SELECT DISTINCT
|
||||
-- co.cnt_ins_deel_key,
|
||||
-- c.cnt_contract_nummer_intern,
|
||||
-- b.prs_bedrijf_naam
|
||||
-- FROM cnt_contract_object co,
|
||||
-- cnt_contract c,
|
||||
-- ins_tab_discipline cd,
|
||||
-- prs_bedrijf b
|
||||
-- WHERE co.cnt_contract_object_verwijder IS NULL
|
||||
-- AND co.cnt_ins_deel_key IS NOT NULL
|
||||
-- AND co.cnt_contract_key = c.cnt_contract_key
|
||||
-- AND c.cnt_contract_looptijd_tot >=
|
||||
-- TRUNC (ADD_MONTHS (SYSDATE, -12), 'YYYY')
|
||||
-- AND c.ins_discipline_key = cd.ins_discipline_key
|
||||
-- AND cd.ins_discipline_verwijder IS NULL
|
||||
-- AND c.cnt_prs_bedrijf_key = b.prs_bedrijf_key)
|
||||
-- lev_onderhd
|
||||
-- ON x.object_key = lev_onderhd.cnt_ins_deel_key
|
||||
LEFT JOIN
|
||||
(SELECT DISTINCT co.cnt_ins_srtdeel_key,
|
||||
g.alg_locatie_key,
|
||||
c.cnt_contract_nummer_intern contract,
|
||||
b.prs_bedrijf_naam contract_lev
|
||||
FROM cnt_contract_object co,
|
||||
cnt_contract c,
|
||||
ins_tab_discipline cd,
|
||||
cnt_contract_plaats cp,
|
||||
alg_gebouw g,
|
||||
prs_bedrijf b
|
||||
WHERE co.cnt_contract_object_verwijder IS NULL
|
||||
AND co.cnt_ins_srtdeel_key IS NOT NULL
|
||||
AND co.cnt_contract_key = c.cnt_contract_key
|
||||
AND c.cnt_contract_looptijd_tot >=
|
||||
TRUNC (ADD_MONTHS (SYSDATE, -12), 'YYYY')
|
||||
AND c.ins_discipline_key = cd.ins_discipline_key
|
||||
AND cd.ins_discipline_verwijder IS NULL
|
||||
AND c.cnt_contract_key = cp.cnt_contract_key
|
||||
AND ( (cp.cnt_alg_plaats_code = 'G'
|
||||
AND cp.cnt_alg_plaats_key = g.alg_gebouw_key)
|
||||
OR (cp.cnt_alg_plaats_code = 'L'
|
||||
AND cp.cnt_alg_plaats_key =
|
||||
g.alg_locatie_key))
|
||||
AND c.cnt_prs_bedrijf_key = b.prs_bedrijf_key) c
|
||||
ON x.objectsoort_key = c.cnt_ins_srtdeel_key
|
||||
AND x.alg_locatie_key = c.alg_locatie_key
|
||||
WHERE x.objectsoort_key != 43401;
|
||||
|
||||
/* Formatted on 6-11-2012 12:28:00 (QP5 v5.115.810.9015) */
|
||||
CREATE OR REPLACE PROCEDURE conn_import_srtdeel_swap (p_import_key IN NUMBER)
|
||||
IS
|
||||
c_delim VARCHAR2 (1) := ';';
|
||||
c_impline_mark VARCHAR2 (100) := '*** Alle ***';
|
||||
v_newline VARCHAR2 (1000); -- Input line
|
||||
v_errormsg VARCHAR2 (1000);
|
||||
oracle_err_num NUMBER;
|
||||
oracle_err_mes VARCHAR2 (200);
|
||||
header_is_valid NUMBER;
|
||||
v_count_tot NUMBER (10);
|
||||
v_count_import NUMBER (10);
|
||||
v_ongeldig NUMBER (1);
|
||||
v_aanduiding VARCHAR (200);
|
||||
-- De importvelden:
|
||||
x_ins_discipline_omschrijving VARCHAR2 (255); -- C30
|
||||
x_ins_srtgroep_omschrijving VARCHAR2 (255); -- C60
|
||||
x_ins_srtdeel_omschrijving VARCHAR2 (255); -- C100
|
||||
x_ins_srtdeel_code VARCHAR2 (255); -- C10
|
||||
x_ins_srtdeel_aanmaak VARCHAR2 (255); -- DATE
|
||||
x_ins_deel_omschrijving VARCHAR2 (255); -- C60
|
||||
v_cur_srtdeel_key VARCHAR2 (255); -- N10
|
||||
v_new_srtdeel_key VARCHAR2 (255); -- N10
|
||||
|
||||
CURSOR c1
|
||||
IS
|
||||
SELECT *
|
||||
FROM fac_imp_file
|
||||
WHERE fac_import_key = p_import_key
|
||||
ORDER BY fac_imp_file_index;
|
||||
BEGIN
|
||||
DELETE FROM conn_imp_srtdeel_swap;
|
||||
|
||||
COMMIT;
|
||||
|
||||
v_count_tot := 0;
|
||||
v_count_import := 0;
|
||||
header_is_valid := 0;
|
||||
|
||||
FOR rec1 IN c1
|
||||
LOOP
|
||||
BEGIN
|
||||
v_newline := rec1.fac_imp_file_line;
|
||||
v_errormsg := 'Fout bij opvragen importregel';
|
||||
v_aanduiding := '';
|
||||
v_ongeldig := 0;
|
||||
-- Lees alle veldwaarden
|
||||
fac.imp_getfield (v_newline, c_delim, x_ins_discipline_omschrijving);
|
||||
fac.imp_getfield (v_newline, c_delim, x_ins_srtgroep_omschrijving);
|
||||
fac.imp_getfield (v_newline, c_delim, x_ins_srtdeel_omschrijving);
|
||||
fac.imp_getfield (v_newline, c_delim, x_ins_srtdeel_code);
|
||||
fac.imp_getfield (v_newline, c_delim, x_ins_srtdeel_aanmaak);
|
||||
fac.imp_getfield (v_newline, c_delim, x_ins_deel_omschrijving);
|
||||
fac.imp_getfield (v_newline, c_delim, v_cur_srtdeel_key);
|
||||
fac.imp_getfield (v_newline, c_delim, v_new_srtdeel_key);
|
||||
--Don't care the columns that might follow the above columns!
|
||||
|
||||
v_aanduiding :=
|
||||
'['
|
||||
|| x_ins_discipline_omschrijving
|
||||
|| '|'
|
||||
|| x_ins_srtgroep_omschrijving
|
||||
|| '|'
|
||||
|| x_ins_srtdeel_omschrijving
|
||||
|| '|'
|
||||
|| x_ins_deel_omschrijving
|
||||
|| '] ';
|
||||
|
||||
-- Ik controleer of ik een geldige header heb, dat is: in de juiste kolommen
|
||||
-- de juiste kolomkop. Ik controleer daarbij ALLE kolommen!
|
||||
-- Ik negeer alles totdat ik een geldige header ben gepasseerd.
|
||||
IF (header_is_valid = 0)
|
||||
THEN
|
||||
IF UPPER (x_ins_discipline_omschrijving) = 'DISCIPLINE'
|
||||
AND UPPER (x_ins_srtgroep_omschrijving) = 'GROEP'
|
||||
AND UPPER (x_ins_srtdeel_omschrijving) = 'OBJECTSOORT'
|
||||
AND UPPER (x_ins_srtdeel_code) = 'OBJECTSOORT_CODE'
|
||||
AND UPPER (x_ins_srtdeel_aanmaak) = 'OBJECTSOORT_AANMAAK'
|
||||
AND UPPER (x_ins_deel_omschrijving) = 'OBJECT_ID'
|
||||
AND UPPER (v_cur_srtdeel_key) = 'CUR_OBJECTSOORT_KEY'
|
||||
AND UPPER (v_new_srtdeel_key) = 'NEW_OBJECTSOORT_KEY'
|
||||
THEN
|
||||
header_is_valid := 1;
|
||||
END IF;
|
||||
ELSE
|
||||
-- Alleen '*** Alle ***-regels; skip de rest (alleen ter informatie)!
|
||||
IF (x_ins_deel_omschrijving = c_impline_mark)
|
||||
THEN
|
||||
v_count_tot := v_count_tot + 1;
|
||||
-- Controleer alle veldwaarden
|
||||
-- Skip 'DISCIPLINE'
|
||||
-- Skip 'GROEP'
|
||||
-- Skip 'OBJECTSOORT'
|
||||
-- Skip 'OBJECTSOORT_CODE'
|
||||
-- Skip 'OBJECTSOORT_AANMAAK'
|
||||
-- Skip 'OBJECT_ID'
|
||||
|
||||
--
|
||||
v_errormsg := 'CUR_OBJECTSOORT_KEY ongeldig';
|
||||
v_cur_srtdeel_key := TRIM (v_cur_srtdeel_key);
|
||||
|
||||
IF (v_cur_srtdeel_key IS NULL
|
||||
OR fac.safe_to_number (v_cur_srtdeel_key) IS NULL)
|
||||
THEN
|
||||
fac.imp_writelog (p_import_key,
|
||||
'W',
|
||||
v_aanduiding || v_errormsg,
|
||||
'Regel wordt overgeslagen');
|
||||
v_ongeldig := 1;
|
||||
END IF;
|
||||
|
||||
--
|
||||
v_errormsg := 'NEW_OBJECTSOORT_KEY ongeldig';
|
||||
v_new_srtdeel_key := TRIM (v_new_srtdeel_key);
|
||||
|
||||
IF (v_new_srtdeel_key IS NULL
|
||||
OR fac.safe_to_number (v_new_srtdeel_key) IS NULL)
|
||||
THEN
|
||||
fac.imp_writelog (p_import_key,
|
||||
'W',
|
||||
v_aanduiding || v_errormsg,
|
||||
'Regel wordt overgeslagen');
|
||||
v_ongeldig := 1;
|
||||
END IF;
|
||||
|
||||
-- Insert geformatteerde import record
|
||||
IF v_ongeldig = 0
|
||||
THEN
|
||||
BEGIN
|
||||
v_errormsg := 'Fout bij wegschrijven importregel';
|
||||
|
||||
INSERT INTO conn_imp_srtdeel_swap (
|
||||
cur_srtdeel_key,
|
||||
new_srtdeel_key
|
||||
)
|
||||
VALUES (
|
||||
fac.safe_to_number (v_cur_srtdeel_key),
|
||||
fac.safe_to_number (v_new_srtdeel_key)
|
||||
);
|
||||
|
||||
COMMIT;
|
||||
v_count_import := v_count_import + 1;
|
||||
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,
|
||||
'W',
|
||||
v_aanduiding || v_errormsg,
|
||||
'');
|
||||
|
||||
COMMIT;
|
||||
END;
|
||||
END IF;
|
||||
END IF;
|
||||
END IF;
|
||||
END;
|
||||
END LOOP;
|
||||
|
||||
IF (header_is_valid = 0)
|
||||
THEN
|
||||
fac.imp_writelog (p_import_key,
|
||||
'E',
|
||||
'Ongeldig importbestand',
|
||||
'Geen header of header niet volgens specificatie!');
|
||||
ELSE
|
||||
fac.imp_writelog (
|
||||
p_import_key,
|
||||
'S',
|
||||
'Aantal ingelezen importregels: ' || TO_CHAR (v_count_tot),
|
||||
''
|
||||
);
|
||||
fac.imp_writelog (
|
||||
p_import_key,
|
||||
'S',
|
||||
'Aantal ongeldige niet ingelezen importregels: '
|
||||
|| TO_CHAR (v_count_tot - v_count_import),
|
||||
''
|
||||
);
|
||||
END IF;
|
||||
|
||||
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',
|
||||
v_aanduiding || v_errormsg,
|
||||
'Inleesproces SRTDEEL_SWAP afgebroken!');
|
||||
END conn_import_srtdeel_swap;
|
||||
/
|
||||
|
||||
/* Formatted on 7-11-2012 9:12:15 (QP5 v5.115.810.9015) */
|
||||
CREATE OR REPLACE PROCEDURE conn_update_srtdeel_swap (p_import_key IN NUMBER)
|
||||
AS
|
||||
CURSOR rc
|
||||
IS
|
||||
SELECT DISTINCT
|
||||
cur_srtdeel_key,
|
||||
d1.ins_srtgroep_key cur_srtgroep_key,
|
||||
d1.ins_srtdeel_omschrijving cur_srtdeel_oms,
|
||||
TRIM(DECODE (
|
||||
INSTR (d1.ins_srtdeel_omschrijving, ' '),
|
||||
0,
|
||||
'-',
|
||||
SUBSTR (d1.ins_srtdeel_omschrijving,
|
||||
INSTR (d1.ins_srtdeel_omschrijving, ' ') + 1)
|
||||
))
|
||||
cur_objectsoort_postfix,
|
||||
new_srtdeel_key,
|
||||
d2.ins_srtgroep_key new_srtgroep_key,
|
||||
d2.ins_srtdeel_omschrijving new_srtdeel_oms
|
||||
FROM conn_imp_srtdeel_swap sd, ins_srtdeel d1, ins_srtdeel d2
|
||||
WHERE sd.cur_srtdeel_key IS NOT NULL
|
||||
AND sd.new_srtdeel_key IS NOT NULL
|
||||
AND sd.cur_srtdeel_key = d1.ins_srtdeel_key(+)
|
||||
AND sd.new_srtdeel_key = d2.ins_srtdeel_key(+);
|
||||
|
||||
c_charnum_z NUMBER (10) := 90; -- Letter 'Z'!
|
||||
c_type_srtkey NUMBER (10) := 41;
|
||||
v_errormsg VARCHAR2 (1000);
|
||||
oracle_err_num NUMBER;
|
||||
oracle_err_mes VARCHAR2 (200);
|
||||
v_aanduiding VARCHAR (200);
|
||||
v_skip BOOLEAN;
|
||||
v_count NUMBER;
|
||||
v_count_upd NUMBER;
|
||||
v_kenmerkdeel_key NUMBER (10);
|
||||
v_kenmerk_key NUMBER (10);
|
||||
v_kenmerkdeel_waarde VARCHAR2 (1000);
|
||||
v_charnum NUMBER (10);
|
||||
v_uniek NUMBER (10);
|
||||
v_newid VARCHAR2 (200);
|
||||
BEGIN
|
||||
FOR rec IN rc
|
||||
LOOP
|
||||
BEGIN
|
||||
v_aanduiding :=
|
||||
'['
|
||||
|| TO_CHAR (rec.cur_srtdeel_key)
|
||||
|| '|'
|
||||
|| rec.cur_srtdeel_oms
|
||||
|| '->'
|
||||
|| TO_CHAR (rec.new_srtdeel_key)
|
||||
|| '|'
|
||||
|| rec.new_srtdeel_oms
|
||||
|| '] ';
|
||||
v_skip := FALSE;
|
||||
|
||||
IF (rec.cur_srtdeel_oms IS NULL OR rec.new_srtdeel_oms IS NULL)
|
||||
THEN
|
||||
fac.imp_writelog (p_import_key,
|
||||
'W',
|
||||
v_aanduiding,
|
||||
'Soort-key(s) ongedefinieerd!');
|
||||
COMMIT;
|
||||
ELSIF (rec.cur_srtgroep_key != rec.new_srtgroep_key)
|
||||
THEN
|
||||
fac.imp_writelog (p_import_key,
|
||||
'W',
|
||||
v_aanduiding,
|
||||
'Soort-key(s) niet onder dezelfde groep-key!');
|
||||
COMMIT;
|
||||
ELSE -- Geldige soort-keys onder dezelfde groep-key!
|
||||
-- 1: Hang controles om (ongeacht de periode).
|
||||
-- BELANGRIJK: Dit moet als eerste stap, want als geen best-fit
|
||||
-- kan worden bepaald, dan worden de volgende stappen
|
||||
-- ook overgeslagen en wordt deze objectsoort (en wat
|
||||
-- daarmee samenhangt) dus niet omgekat!
|
||||
FOR cc -- Actuele en verwijderde!
|
||||
IN ( SELECT a.cur_srtcontrole_key,
|
||||
a.cur_srtcontrole_oms,
|
||||
b.bnew_srtcontrole_key,
|
||||
b.bnew_srtcontrole_oms
|
||||
FROM (SELECT ins_srtcontrole_key
|
||||
cur_srtcontrole_key,
|
||||
ins_srtcontrole_omschrijving
|
||||
cur_srtcontrole_oms,
|
||||
ins_srtcontrole_periode
|
||||
cur_srtcontrole_periode
|
||||
FROM ins_srtcontrole
|
||||
WHERE ins_srtinstallatie_key =
|
||||
rec.cur_srtdeel_key
|
||||
AND ins_srtcontrole_niveau = 'S') a
|
||||
LEFT JOIN
|
||||
(SELECT sc.ins_srtcontrole_key
|
||||
bnew_srtcontrole_key,
|
||||
sc.ins_srtcontrole_omschrijving
|
||||
bnew_srtcontrole_oms,
|
||||
sc.ins_srtcontrole_periode
|
||||
bnew_srtcontrole_periode
|
||||
FROM ins_srtcontrole sc
|
||||
WHERE sc.ins_srtinstallatie_key =
|
||||
rec.new_srtdeel_key
|
||||
AND sc.ins_srtcontrole_niveau = 'S'
|
||||
AND NOT EXISTS
|
||||
(SELECT 1
|
||||
FROM ins_srtcontrole
|
||||
WHERE ins_srtinstallatie_key =
|
||||
sc.ins_srtinstallatie_key
|
||||
AND ins_srtcontrole_niveau =
|
||||
'S'
|
||||
AND ins_srtcontrole_periode =
|
||||
sc.ins_srtcontrole_periode
|
||||
AND ins_srtcontrole_key <
|
||||
sc.ins_srtcontrole_key))
|
||||
b -- best-fit
|
||||
ON a.cur_srtcontrole_periode =
|
||||
b.bnew_srtcontrole_periode
|
||||
LEFT JOIN
|
||||
(SELECT sc.ins_srtcontrole_key
|
||||
rnew_srtcontrole_key,
|
||||
sc.ins_srtcontrole_omschrijving
|
||||
rnew_srtcontrole_oms,
|
||||
sc.ins_srtcontrole_periode
|
||||
rnew_srtcontrole_periode
|
||||
FROM ins_srtcontrole sc
|
||||
WHERE sc.ins_srtinstallatie_key =
|
||||
rec.new_srtdeel_key
|
||||
AND sc.ins_srtcontrole_niveau = 'S'
|
||||
AND NOT EXISTS
|
||||
(SELECT 1
|
||||
FROM ins_srtcontrole
|
||||
WHERE ins_srtinstallatie_key =
|
||||
sc.ins_srtinstallatie_key
|
||||
AND ins_srtcontrole_niveau =
|
||||
'S'
|
||||
AND ins_srtcontrole_key <
|
||||
sc.ins_srtcontrole_key))
|
||||
c -- random-fit (doen we niet!)
|
||||
ON 1 = 1
|
||||
ORDER BY b.bnew_srtcontrole_key DESC) -- NULLS first, want dan EXIT!
|
||||
LOOP
|
||||
IF (cc.bnew_srtcontrole_key IS NULL)
|
||||
THEN
|
||||
fac.imp_writelog (
|
||||
p_import_key,
|
||||
'W',
|
||||
v_aanduiding,
|
||||
'Controles niet omgehangen ['
|
||||
|| TO_CHAR (cc.cur_srtcontrole_key)
|
||||
|| '|'
|
||||
|| cc.cur_srtcontrole_oms
|
||||
|| ']'
|
||||
);
|
||||
COMMIT;
|
||||
v_skip := TRUE;
|
||||
EXIT; -- Skip het omhangen van evt. nog andere controles en de rest!
|
||||
ELSE
|
||||
v_errormsg := 'Fout omhangen controles';
|
||||
|
||||
-- Hang controle om!
|
||||
UPDATE ins_deelsrtcontrole
|
||||
SET ins_srtcontrole_key = cc.bnew_srtcontrole_key
|
||||
WHERE ins_srtcontrole_key = cc.cur_srtcontrole_key;
|
||||
|
||||
fac.imp_writelog (
|
||||
p_import_key,
|
||||
'I',
|
||||
v_aanduiding,
|
||||
'Controles omgehangen ['
|
||||
|| TO_CHAR (cc.cur_srtcontrole_key)
|
||||
|| '|'
|
||||
|| cc.cur_srtcontrole_oms
|
||||
|| '->'
|
||||
|| TO_CHAR (cc.bnew_srtcontrole_key)
|
||||
|| '|'
|
||||
|| cc.bnew_srtcontrole_oms
|
||||
|| ']'
|
||||
);
|
||||
COMMIT;
|
||||
END IF;
|
||||
END LOOP;
|
||||
|
||||
IF (v_skip = FALSE) -- Nu kan het niet meer mis gaan...
|
||||
THEN
|
||||
-- 2: Zorg dat de doel-soort dezelde kenmerken heeft als de bron-
|
||||
-- soort!
|
||||
FOR ck -- Actuele en verwijderde!
|
||||
IN ( SELECT DISTINCT
|
||||
k.ins_kenmerk_key cur_kenmerk_key,
|
||||
k.ins_kenmerk_volgnummer cur_kenmerk_volgnr,
|
||||
k.ins_srtkenmerk_key cur_srtkenmerk_key,
|
||||
sk.ins_srtkenmerk_omschrijving cur_srtkenmerk_oms
|
||||
FROM ins_kenmerk k,
|
||||
(SELECT sk.*
|
||||
FROM ins_kenmerk k, ins_srtkenmerk sk
|
||||
WHERE k.ins_srtinstallatie_key =
|
||||
rec.cur_srtdeel_key
|
||||
AND k.ins_kenmerk_niveau = 'S'
|
||||
AND k.ins_srtkenmerk_key =
|
||||
sk.ins_srtkenmerk_key
|
||||
MINUS
|
||||
SELECT sk.*
|
||||
FROM ins_kenmerk k, ins_srtkenmerk sk
|
||||
WHERE k.ins_srtinstallatie_key =
|
||||
rec.new_srtdeel_key
|
||||
AND k.ins_kenmerk_niveau = 'S'
|
||||
AND k.ins_srtkenmerk_key =
|
||||
sk.ins_srtkenmerk_key) sk
|
||||
WHERE k.ins_srtinstallatie_key = rec.cur_srtdeel_key
|
||||
AND k.ins_kenmerk_niveau = 'S'
|
||||
AND k.ins_srtkenmerk_key = sk.ins_srtkenmerk_key
|
||||
ORDER BY k.ins_kenmerk_volgnummer)
|
||||
LOOP
|
||||
v_errormsg :=
|
||||
'Fout toevoegen kenmerk ['
|
||||
|| ck.cur_srtkenmerk_oms
|
||||
|| ']';
|
||||
|
||||
INSERT INTO ins_kenmerk (ins_srtkenmerk_key,
|
||||
ins_srtinstallatie_key,
|
||||
ins_kenmerk_niveau,
|
||||
ins_kenmerk_volgnummer)
|
||||
VALUES (ck.cur_srtkenmerk_key,
|
||||
rec.new_srtdeel_key,
|
||||
'S',
|
||||
ck.cur_kenmerk_volgnr);
|
||||
|
||||
fac.imp_writelog (
|
||||
p_import_key,
|
||||
'I',
|
||||
v_aanduiding,
|
||||
'Kenmerk aangemaakt ['
|
||||
|| TO_CHAR (rec.new_srtdeel_key)
|
||||
|| '|'
|
||||
|| ck.cur_srtkenmerk_oms
|
||||
|| ']'
|
||||
);
|
||||
COMMIT;
|
||||
END LOOP;
|
||||
|
||||
-- 3: Hang de bron-kenmerken om (naar de doel-kenmerken)!
|
||||
FOR ck -- Actuele en verwijderde!
|
||||
IN ( SELECT a.cur_kenmerk_key,
|
||||
a.cur_kenmerk_volgnr,
|
||||
a.ins_srtkenmerk_oms,
|
||||
b.new_kenmerk_key
|
||||
FROM (SELECT DISTINCT
|
||||
k.ins_kenmerk_key cur_kenmerk_key,
|
||||
k.ins_kenmerk_volgnummer
|
||||
cur_kenmerk_volgnr,
|
||||
k.ins_srtkenmerk_key
|
||||
cur_srtkenmerk_key,
|
||||
sk.ins_srtkenmerk_omschrijving
|
||||
ins_srtkenmerk_oms
|
||||
FROM ins_kenmerk k, ins_srtkenmerk sk
|
||||
WHERE k.ins_srtinstallatie_key =
|
||||
rec.cur_srtdeel_key
|
||||
AND k.ins_kenmerk_niveau = 'S'
|
||||
AND k.ins_srtkenmerk_key =
|
||||
sk.ins_srtkenmerk_key) a
|
||||
LEFT JOIN
|
||||
(SELECT DISTINCT
|
||||
k.ins_kenmerk_key new_kenmerk_key,
|
||||
k.ins_srtkenmerk_key
|
||||
new_srtkenmerk_key
|
||||
FROM ins_kenmerk k
|
||||
WHERE k.ins_srtinstallatie_key =
|
||||
rec.new_srtdeel_key
|
||||
AND k.ins_kenmerk_niveau = 'S') b
|
||||
ON a.cur_srtkenmerk_key = b.new_srtkenmerk_key
|
||||
ORDER BY a.cur_kenmerk_volgnr)
|
||||
LOOP
|
||||
v_errormsg :=
|
||||
'Fout omhangen kenmerkwaarden ['
|
||||
|| ck.ins_srtkenmerk_oms
|
||||
|| ']';
|
||||
|
||||
-- Hang de bron-kenmerken om!
|
||||
UPDATE ins_kenmerkdeel
|
||||
SET ins_kenmerk_key = ck.new_kenmerk_key -- Doel-kenmerk
|
||||
WHERE ins_kenmerk_key = ck.cur_kenmerk_key; -- Bron-kenmerk
|
||||
|
||||
COMMIT;
|
||||
END LOOP;
|
||||
|
||||
v_count_upd := 0;
|
||||
|
||||
-- 4: Voeg de soort-oms na de 1e spatie toe in TYPE-kenmerk (en
|
||||
-- maak deze aan als deze nog niet bestaat), zorg dat de object-id
|
||||
-- ook uniek is onder de doel-soort en hang object om.
|
||||
FOR cd
|
||||
IN ( SELECT ins_deel_key,
|
||||
ins_deel_omschrijving,
|
||||
ins_deel_verwijder
|
||||
FROM ins_deel
|
||||
WHERE ins_srtdeel_key = rec.cur_srtdeel_key
|
||||
ORDER BY ins_deel_key)
|
||||
LOOP
|
||||
-- 4a. Voeg de soort-oms na de 1e spatie toe in TYPE-kenmerk
|
||||
-- (en maak deze aan als deze nog niet bestaat).
|
||||
v_errormsg := 'Fout bepalen TYPE-kenmerkwaarde';
|
||||
|
||||
SELECT COUNT ( * ),
|
||||
MAX (kd.ins_kenmerkdeel_key),
|
||||
MAX (TRIM (kd.ins_kenmerkdeel_waarde))
|
||||
INTO v_count, v_kenmerkdeel_key, v_kenmerkdeel_waarde
|
||||
FROM ins_kenmerkdeel kd, ins_kenmerk k
|
||||
WHERE kd.ins_deel_key = cd.ins_deel_key
|
||||
AND kd.ins_kenmerk_key = k.ins_kenmerk_key
|
||||
AND k.ins_srtkenmerk_key = c_type_srtkey;
|
||||
|
||||
IF (v_count = 0)
|
||||
THEN
|
||||
v_errormsg := 'Fout bepalen TYPE-kenmerk';
|
||||
|
||||
SELECT ins_kenmerk_key
|
||||
INTO v_kenmerk_key -- Doel-kenmerk (zie ook stap 2)
|
||||
FROM ins_kenmerk
|
||||
WHERE ins_srtinstallatie_key = rec.new_srtdeel_key
|
||||
AND ins_srtkenmerk_key = c_type_srtkey
|
||||
AND ins_kenmerk_niveau = 'S';
|
||||
|
||||
v_errormsg := 'Fout toevoegen TYPE-kenmerkwaarde';
|
||||
|
||||
INSERT INTO ins_kenmerkdeel (
|
||||
ins_deel_key,
|
||||
ins_kenmerk_key,
|
||||
ins_kenmerkdeel_waarde
|
||||
)
|
||||
VALUES (
|
||||
cd.ins_deel_key,
|
||||
v_kenmerk_key,
|
||||
SUBSTR (
|
||||
'['
|
||||
|| rec.cur_objectsoort_postfix
|
||||
|| ']',
|
||||
1,
|
||||
50
|
||||
)
|
||||
);
|
||||
ELSE
|
||||
-- In stap 3 zijn alle kenmerkwaarden reeds omgehangen (de
|
||||
-- kenmerk_key hoeft dus niet meer te worden gewijzigd)!
|
||||
v_errormsg := 'Fout bijwerken TYPE-kenmerkwaarde';
|
||||
|
||||
UPDATE ins_kenmerkdeel
|
||||
SET ins_kenmerkdeel_waarde =
|
||||
SUBSTR (
|
||||
v_kenmerkdeel_waarde
|
||||
|| ' ['
|
||||
|| rec.cur_objectsoort_postfix
|
||||
|| ']',
|
||||
1,
|
||||
50
|
||||
)
|
||||
WHERE ins_kenmerkdeel_key = v_kenmerkdeel_key;
|
||||
END IF;
|
||||
|
||||
COMMIT;
|
||||
|
||||
-- 4b. Zorg dat de object-id ook uniek is onder de doel-soort
|
||||
-- (zoniet, dan toevoeging A, B, C, etc.) en hang object om.
|
||||
v_charnum := 64; -- Letter '@' (de letter VOOR de letter 'A')!
|
||||
v_uniek := 0;
|
||||
v_newid := cd.ins_deel_omschrijving;
|
||||
|
||||
IF (cd.ins_deel_verwijder IS NULL)
|
||||
THEN
|
||||
LOOP
|
||||
SELECT COUNT ( * )
|
||||
INTO v_count
|
||||
FROM ins_v_aanwezigdeel
|
||||
WHERE ins_srtdeel_key = rec.new_srtdeel_key
|
||||
AND ins_deel_omschrijving = v_newid;
|
||||
|
||||
IF (v_count = 0)
|
||||
THEN
|
||||
v_uniek := 1;
|
||||
ELSE
|
||||
v_charnum := v_charnum + 1;
|
||||
v_newid :=
|
||||
SUBSTR (cd.ins_deel_omschrijving, 1, 59)
|
||||
|| CHR (v_charnum);
|
||||
END IF;
|
||||
|
||||
EXIT WHEN (v_charnum > c_charnum_z OR v_uniek = 1);
|
||||
END LOOP;
|
||||
ELSE
|
||||
-- Onderstaande loop over verwijderde objecten lijkt
|
||||
-- overdreven, maar toch bleken er tijdens test ineens 2
|
||||
-- in dezelfde seconde verwijderde objecten met dezelfde
|
||||
-- ID/omschrijving te bestaan (op dezelfde locatie)!!!
|
||||
LOOP
|
||||
SELECT COUNT ( * )
|
||||
INTO v_count
|
||||
FROM ins_deel
|
||||
WHERE ins_deel_verwijder = cd.ins_deel_verwijder
|
||||
AND ins_srtdeel_key = rec.new_srtdeel_key
|
||||
AND ins_deel_omschrijving = v_newid;
|
||||
|
||||
IF (v_count = 0)
|
||||
THEN
|
||||
v_uniek := 1;
|
||||
ELSE
|
||||
v_charnum := v_charnum + 1;
|
||||
v_newid :=
|
||||
SUBSTR (cd.ins_deel_omschrijving, 1, 59)
|
||||
|| CHR (v_charnum);
|
||||
END IF;
|
||||
|
||||
EXIT WHEN (v_charnum > c_charnum_z OR v_uniek = 1);
|
||||
END LOOP;
|
||||
END IF;
|
||||
|
||||
IF (v_uniek = 1)
|
||||
THEN
|
||||
v_errormsg := 'Fout omhangen object';
|
||||
|
||||
-- Hang object om!
|
||||
UPDATE ins_deel
|
||||
SET ins_srtdeel_key = rec.new_srtdeel_key,
|
||||
ins_deel_omschrijving = v_newid
|
||||
WHERE ins_deel_key = cd.ins_deel_key;
|
||||
|
||||
v_count_upd := v_count_upd + 1;
|
||||
ELSE
|
||||
fac.imp_writelog (
|
||||
p_import_key,
|
||||
'W',
|
||||
v_aanduiding,
|
||||
'Object niet omgehangen ['
|
||||
|| cd.ins_deel_omschrijving
|
||||
|| ']'
|
||||
);
|
||||
END IF;
|
||||
|
||||
COMMIT;
|
||||
END LOOP;
|
||||
|
||||
fac.imp_writelog (
|
||||
p_import_key,
|
||||
'S',
|
||||
v_aanduiding
|
||||
|| '#objecten omgehangen: '
|
||||
|| TO_CHAR (v_count_upd),
|
||||
''
|
||||
);
|
||||
COMMIT;
|
||||
END IF;
|
||||
END IF;
|
||||
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,
|
||||
'W',
|
||||
v_aanduiding || v_errormsg,
|
||||
'');
|
||||
END;
|
||||
END LOOP;
|
||||
|
||||
-- Verwijder "lege" objectsoort-controles!
|
||||
v_errormsg := 'Fout bij schonen controles';
|
||||
|
||||
SELECT COUNT ( * )
|
||||
INTO v_count
|
||||
FROM ins_srtcontrole sc
|
||||
WHERE sc.ins_srtcontrole_niveau = 'S'
|
||||
AND NOT EXISTS
|
||||
(SELECT 1
|
||||
FROM ins_deelsrtcontrole
|
||||
WHERE ins_srtcontrole_key = sc.ins_srtcontrole_key)
|
||||
AND NOT EXISTS
|
||||
(SELECT 1
|
||||
FROM ins_deel
|
||||
WHERE ins_srtdeel_key = sc.ins_srtinstallatie_key);
|
||||
|
||||
DELETE FROM ins_srtcontrole sc
|
||||
WHERE sc.ins_srtcontrole_niveau = 'S'
|
||||
AND NOT EXISTS
|
||||
(SELECT 1
|
||||
FROM ins_deelsrtcontrole
|
||||
WHERE ins_srtcontrole_key = sc.ins_srtcontrole_key)
|
||||
AND NOT EXISTS
|
||||
(SELECT 1
|
||||
FROM ins_deel
|
||||
WHERE ins_srtdeel_key = sc.ins_srtinstallatie_key);
|
||||
|
||||
fac.imp_writelog (p_import_key,
|
||||
'S',
|
||||
'#controles geschoond: ' || TO_CHAR (v_count),
|
||||
'');
|
||||
COMMIT;
|
||||
|
||||
-- Verwijder "lege" objectsoorten uit scope bij contracten!
|
||||
v_errormsg := 'Fout bij schonen contracten';
|
||||
|
||||
SELECT COUNT (DISTINCT co.cnt_contract_key)
|
||||
INTO v_count
|
||||
FROM cnt_contract_object co
|
||||
WHERE co.cnt_contract_object_verwijder IS NULL
|
||||
AND NOT EXISTS
|
||||
(SELECT 1
|
||||
FROM ins_deel
|
||||
WHERE ins_srtdeel_key = co.cnt_ins_srtdeel_key);
|
||||
|
||||
UPDATE cnt_contract_object co
|
||||
SET co.cnt_contract_object_verwijder = SYSDATE
|
||||
WHERE co.cnt_contract_object_verwijder IS NULL
|
||||
AND NOT EXISTS
|
||||
(SELECT 1
|
||||
FROM ins_deel
|
||||
WHERE ins_srtdeel_key = co.cnt_ins_srtdeel_key);
|
||||
|
||||
fac.imp_writelog (p_import_key,
|
||||
'S',
|
||||
'#contracten geschoond: ' || TO_CHAR (v_count),
|
||||
'');
|
||||
COMMIT;
|
||||
|
||||
-- Verwijder "lege" objectsoort-kenmerken!
|
||||
v_errormsg := 'Fout bij schonen kenmerken';
|
||||
|
||||
SELECT COUNT ( * )
|
||||
INTO v_count
|
||||
FROM ins_kenmerk k
|
||||
WHERE k.ins_kenmerk_verwijder IS NULL AND k.ins_kenmerk_niveau = 'S'
|
||||
AND NOT EXISTS
|
||||
(SELECT 1
|
||||
FROM ins_deel
|
||||
WHERE ins_srtdeel_key = k.ins_srtinstallatie_key);
|
||||
|
||||
UPDATE ins_kenmerk k
|
||||
SET k.ins_kenmerk_verwijder = SYSDATE
|
||||
WHERE k.ins_kenmerk_verwijder IS NULL AND k.ins_kenmerk_niveau = 'S'
|
||||
AND NOT EXISTS
|
||||
(SELECT 1
|
||||
FROM ins_deel
|
||||
WHERE ins_srtdeel_key = k.ins_srtinstallatie_key);
|
||||
|
||||
fac.imp_writelog (p_import_key,
|
||||
'S',
|
||||
'#kenmerken geschoond: ' || TO_CHAR (v_count),
|
||||
'');
|
||||
COMMIT;
|
||||
|
||||
-- Verwijder "lege" objectsoorten!
|
||||
v_errormsg := 'Fout bij schonen objectsoorten';
|
||||
|
||||
SELECT COUNT ( * )
|
||||
INTO v_count
|
||||
FROM ins_srtdeel sd
|
||||
WHERE sd.ins_srtdeel_verwijder IS NULL
|
||||
AND NOT EXISTS (SELECT 1
|
||||
FROM ins_deel
|
||||
WHERE ins_srtdeel_key = sd.ins_srtdeel_key);
|
||||
|
||||
UPDATE ins_srtdeel sd
|
||||
SET ins_srtdeel_verwijder = SYSDATE
|
||||
WHERE sd.ins_srtdeel_verwijder IS NULL
|
||||
AND NOT EXISTS (SELECT 1
|
||||
FROM ins_deel
|
||||
WHERE ins_srtdeel_key = sd.ins_srtdeel_key);
|
||||
|
||||
fac.imp_writelog (p_import_key,
|
||||
'S',
|
||||
'#objectsoorten geschoond: ' || TO_CHAR (v_count),
|
||||
'');
|
||||
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',
|
||||
v_aanduiding || v_errormsg,
|
||||
'Importproces SRTDEEL_SWAP afgebroken!');
|
||||
END conn_update_srtdeel_swap;
|
||||
/
|
||||
|
||||
-- BASW-export; eporteer de afgemelde opdrachten (sinds de laatste keer) en
|
||||
-- markeer deze vervolgens als 'ORDAFM-doorgezet' (= hidden kenmerk)!
|
||||
/* Formatted on 26-4-2012 11:32:24 (QP5 v5.115.810.9015) */
|
||||
|
||||
Reference in New Issue
Block a user