Files
Customer/CONN/Once/CONN44.sql
2011-06-07 13:06:20 +00:00

673 lines
38 KiB
SQL

-- Customer specific once-script CONN44.
--
-- (c) 2011 SG|facilitor bv
-- $Revision: 2 $
-- $Modtime: 7-06-11 14:40 $
--
-- Support: +31 53 4800700
SET ECHO ON
SPOOL xconn44.lst
SET DEFINE OFF
-- Definitie tabel voor importfunctie inspectieobjecten
CREATE TABLE conn_imp_inspectieobj
(
alg_locatie_code VARCHAR2 (10), -- C10
alg_ruimte_nr VARCHAR2 (10), -- C10
ins_discipline_omschrijving VARCHAR2 (30), -- C30
ins_srtgroep_omschrijving VARCHAR2 (60), -- C60
ins_srtdeel_code VARCHAR2 (10), -- C10
ins_srtdeel_omschrijving VARCHAR2 (100), -- C100
ins_deel_omschrijving VARCHAR2 (60), -- C60
merk VARCHAR2 (60), -- C60
type VARCHAR2 (60), -- C60
hoogte VARCHAR2 (60), -- C60
belasting VARCHAR2 (60), -- C60
bereik VARCHAR2 (60), -- C60
voltage VARCHAR2 (60), -- C60
apkplicht VARCHAR2 (60), -- C60
prs_bedrijf_naam VARCHAR2 (60), -- C60
ins_srtcontrole_omschrijving VARCHAR2 (60), -- C60
--periode NUMBER(4), -- N4
--controle_gepland DATE, -- DATE
--controle_laatste DATE, -- DATE
ins_deelsrtcontrole_datum DATE, -- DATE
ins_deelsrtcontrole_opmerking VARCHAR2 (500), -- C500
afgekeurd VARCHAR2 (60) -- C60
);
INSERT INTO fac_import_app (fac_import_app_code, fac_import_app_oms, fac_functie_key)
SELECT 'INSPECTIEOBJ', 'Inlezen/bijwerken inspectieobjecten', fac_functie_key
FROM fac_functie
WHERE fac_functie_code = 'WEB_PRSSYS';
INSERT INTO fac_usrrap (fac_usrrap_omschrijving,
fac_usrrap_view_name,
fac_usrrap_functie,
fac_usrrap_info,
fac_functie_key,
fac_usrrap_vraagbegindatum,
fac_usrrap_vraageinddatum)
VALUES ('BEHEER: Export/import inspectieobjecten',
'conn_v_rap_inspectieobj_expimp',
0,
'Export/import: inspectieobjecten',
64,
0,
0);
INSERT INTO fac_import_app (fac_import_app_code, fac_import_app_oms, fac_functie_key)
SELECT 'BUDGET', 'Inlezen budgetinformatie', fac_functie_key
FROM fac_functie
WHERE fac_functie_code = 'WEB_PRSSYS';
INSERT INTO fac_import_app (fac_import_app_code, fac_import_app_oms, fac_functie_key)
SELECT 'KOSTEN', 'Inlezen kosteninformatie', fac_functie_key
FROM fac_functie
WHERE fac_functie_code = 'WEB_PRSSYS';
INSERT INTO fac_import_app (fac_import_app_code, fac_import_app_oms, fac_functie_key)
SELECT 'XELION_CONTRACT', 'Inlezen Xelion contractinformatie', fac_functie_key
FROM fac_functie
WHERE fac_functie_code = 'WEB_PRSSYS';
INSERT INTO fac_usrrap (fac_usrrap_omschrijving,
fac_usrrap_view_name,
fac_usrrap_functie,
fac_usrrap_info,
fac_functie_key,
fac_usrrap_vraagbegindatum,
fac_usrrap_vraageinddatum)
VALUES ('FIN: kosten vs begroting',
'conn_v_rap_locatie_kosten',
1,
'Verschil tussen begroting en gemaakte kosten',
64,
0,
0);
-- reanimeer oude huur/verhuurcontracten omdat de einddatum nooit aangepast is.
-- WHERE ins_discipline_key IN (1564, 1565) betreft: inhuur en verhuurcontracten
UPDATE cnt_contract
SET cnt_contract_looptijd_tot = TO_DATE ('20200101', 'yyyymmdd')
WHERE ins_discipline_key IN (1564, 1565)
AND cnt_contract_looptijd_tot < SYSDATE;
COMMIT;
-- verwijder ooit eens achtergebleven contract-object-koppeling!
-- WHERE cnt_ins_srtdeel_key = 27846 betreft: objectsoort '.'
UPDATE cnt_contract_object
SET cnt_contract_object_verwijder = SYSDATE
WHERE cnt_ins_srtdeel_key = 27846
AND cnt_contract_object_verwijder IS NULL;
-- verwijder deel-onderdeel-koppeling!
-- WHERE ins_deel_key = 93556 betreft: object 'OVERIG001'
UPDATE ins_deel
SET ins_deel_verwijder = SYSDATE
WHERE ins_deel_key = 93556
AND ins_deel_verwijder IS NULL;
COMMIT;
-- Converteer Datum gekeurd, Datum volgende keuring en - voor objectsoort
-- 27844='Slipvangers en OBAS' - Bouwjaar
/* Formatted on 7-6-2011 10:32:16 (QP5 v5.115.810.9015) */
DECLARE
v_errormsg VARCHAR2 (1024);
c_controle_soort VARCHAR2 (60) := '_DEFAULT';
c_controle_periode_1 NUMBER (10) := 365;
--XXc_controle_periode_5 NUMBER (10) := 1826;
c_controle_periode_15 NUMBER (10) := 5478;
v_srtcontrole_id VARCHAR2 (20);
v_controlemode_key NUMBER (10);
laatste DATE;
ccount NUMBER (10);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_count_tot NUMBER (10) := 0;
v_count_1 NUMBER (10) := 0;
v_count_2 NUMBER (10) := 0;
v_aanduiding VARCHAR (200);
BEGIN
FOR rc
IN ( SELECT z1.discipline_key,
z1.groep_key,
z1.objectsoort_key,
z1.objectsoortcode,
z1.objectsoort,
z1.ins_deel_key,
z1.ins_deel_omschrijving,
z1.keur_datum,
fac.safe_to_date (z2.waarde, 'dd-mm-yyyy') a,
z1.next_keur,
fac.safe_to_date (z3.waarde, 'dd-mm-yyyy') b,
z1.keuringsinstantie,
z6.waarde e,
z1.bouwjaar,
fac.safe_to_number (z7.waarde) f
FROM (SELECT td.ins_discipline_omschrijving
discipline,
td.ins_discipline_key discipline_key,
sg.ins_srtgroep_omschrijving groep,
sg.ins_srtgroep_key groep_key,
sd.ins_srtdeel_code objectsoortcode,
sd.ins_srtdeel_omschrijving
objectsoort,
sd.ins_srtdeel_key objectsoort_key,
d.ins_deel_key,
d.ins_deel_omschrijving,
d.ins_deel_verwijder,
l.alg_locatie_key,
y.keur_datum,
y.next_keur,
y.keuringsinstantie,
y.bouwjaar
FROM ( SELECT DISTINCT
x.ins_srtdeel_key,
MAX (x.k2) keur_datum,
MAX (x.k3) next_keur,
MAX (x.k6)
keuringsinstantie,
MAX (x.k7) bouwjaar
FROM (SELECT sd.ins_srtdeel_key,
k.ins_kenmerk_key
k2,
NULL k3,
NULL k6,
NULL k7
FROM ins_v_aanwezigsrtkenmerk sk,
ins_v_aanwezigkenmerk k,
ins_srtgroep sg,
ins_srtdeel sd
WHERE sk.ins_srtkenmerk_key =
52 -- Datum gekeurd/discipline
AND sk.ins_srtkenmerk_key =
k.ins_srtkenmerk_key
AND k.ins_kenmerk_niveau =
'D'
AND k.ins_srtinstallatie_key =
sg.ins_discipline_key
AND sg.ins_srtgroep_key =
sd.ins_srtgroep_key
UNION ALL
SELECT sd.ins_srtdeel_key,
k.ins_kenmerk_key
k2,
NULL k3,
NULL k6,
NULL k7
FROM ins_v_aanwezigsrtkenmerk sk,
ins_v_aanwezigkenmerk k,
ins_srtgroep sg,
ins_srtdeel sd
WHERE sk.ins_srtkenmerk_key =
52 -- Datum gekeurd/groep
AND sk.ins_srtkenmerk_key =
k.ins_srtkenmerk_key
AND k.ins_kenmerk_niveau =
'G'
AND k.ins_srtinstallatie_key =
sg.ins_srtgroep_key
AND sg.ins_srtgroep_key =
sd.ins_srtgroep_key
UNION ALL
SELECT sd.ins_srtdeel_key,
k.ins_kenmerk_key
k2,
NULL k3,
NULL k6,
NULL k7
FROM ins_v_aanwezigsrtkenmerk sk,
ins_v_aanwezigkenmerk k,
ins_srtdeel sd
WHERE sk.ins_srtkenmerk_key =
52 -- Datum gekeurd/objectsoort
AND sk.ins_srtkenmerk_key =
k.ins_srtkenmerk_key
AND k.ins_kenmerk_niveau =
'S'
AND k.ins_srtinstallatie_key =
sd.ins_srtdeel_key
UNION ALL -- Datum volgende keuring
SELECT sd.ins_srtdeel_key,
NULL k2,
k.ins_kenmerk_key
k3,
NULL k6,
NULL k7
FROM ins_v_aanwezigsrtkenmerk sk,
ins_v_aanwezigkenmerk k,
ins_srtgroep sg,
ins_srtdeel sd
WHERE sk.ins_srtkenmerk_key =
75 -- Datum volgende keuring/discipline
AND sk.ins_srtkenmerk_key =
k.ins_srtkenmerk_key
AND k.ins_kenmerk_niveau =
'D'
AND k.ins_srtinstallatie_key =
sg.ins_discipline_key
AND sg.ins_srtgroep_key =
sd.ins_srtgroep_key
UNION ALL
SELECT sd.ins_srtdeel_key,
NULL k2,
k.ins_kenmerk_key
k3,
NULL k6,
NULL k7
FROM ins_v_aanwezigsrtkenmerk sk,
ins_v_aanwezigkenmerk k,
ins_srtgroep sg,
ins_srtdeel sd
WHERE sk.ins_srtkenmerk_key =
75 -- Datum volgende keuring/groep
AND sk.ins_srtkenmerk_key =
k.ins_srtkenmerk_key
AND k.ins_kenmerk_niveau =
'G'
AND k.ins_srtinstallatie_key =
sg.ins_srtgroep_key
AND sg.ins_srtgroep_key =
sd.ins_srtgroep_key
UNION ALL
SELECT sd.ins_srtdeel_key,
NULL k2,
k.ins_kenmerk_key
k3,
NULL k6,
NULL k7
FROM ins_v_aanwezigsrtkenmerk sk,
ins_v_aanwezigkenmerk k,
ins_srtdeel sd
WHERE sk.ins_srtkenmerk_key =
75 -- Datum volgende keuring/soort
AND sk.ins_srtkenmerk_key =
k.ins_srtkenmerk_key
AND k.ins_kenmerk_niveau =
'S'
AND k.ins_srtinstallatie_key =
sd.ins_srtdeel_key
UNION ALL -- Keuringsinstantie
SELECT sd.ins_srtdeel_key,
NULL k2,
NULL k3,
k.ins_kenmerk_key
k6,
NULL k7
FROM ins_v_aanwezigsrtkenmerk sk,
ins_v_aanwezigkenmerk k,
ins_srtgroep sg,
ins_srtdeel sd
WHERE sk.ins_srtkenmerk_key IN
(1153,
1325) -- Keuringsinstantie/discipline
AND sk.ins_srtkenmerk_key =
k.ins_srtkenmerk_key
AND k.ins_kenmerk_niveau =
'D'
AND k.ins_srtinstallatie_key =
sg.ins_discipline_key
AND sg.ins_srtgroep_key =
sd.ins_srtgroep_key
UNION ALL
SELECT sd.ins_srtdeel_key,
NULL k2,
NULL k3,
k.ins_kenmerk_key
k6,
NULL k7
FROM ins_v_aanwezigsrtkenmerk sk,
ins_v_aanwezigkenmerk k,
ins_srtgroep sg,
ins_srtdeel sd
WHERE sk.ins_srtkenmerk_key IN
(1153,
1325) -- Keuringsinstantie/groep
AND sk.ins_srtkenmerk_key =
k.ins_srtkenmerk_key
AND k.ins_kenmerk_niveau =
'G'
AND k.ins_srtinstallatie_key =
sg.ins_srtgroep_key
AND sg.ins_srtgroep_key =
sd.ins_srtgroep_key
UNION ALL
SELECT sd.ins_srtdeel_key,
NULL k2,
NULL k3,
k.ins_kenmerk_key
k6,
NULL k7
FROM ins_v_aanwezigsrtkenmerk sk,
ins_v_aanwezigkenmerk k,
ins_srtdeel sd
WHERE sk.ins_srtkenmerk_key IN
(1153,
1325) -- Keuringsinstantie/soort
AND sk.ins_srtkenmerk_key =
k.ins_srtkenmerk_key
AND k.ins_kenmerk_niveau =
'S'
AND k.ins_srtinstallatie_key =
sd.ins_srtdeel_key
UNION ALL -- Bouwjaar
SELECT sd.ins_srtdeel_key,
NULL k2,
NULL k3,
NULL k6,
k.ins_kenmerk_key
k7
FROM ins_v_aanwezigsrtkenmerk sk,
ins_v_aanwezigkenmerk k,
ins_srtdeel sd
WHERE sk.ins_srtkenmerk_key =
44 -- Bouwjaar/soort
AND sk.ins_srtkenmerk_key =
k.ins_srtkenmerk_key
AND k.ins_kenmerk_niveau =
'S'
AND k.ins_srtinstallatie_key =
sd.ins_srtdeel_key
AND sd.ins_srtdeel_key =
27844) x
GROUP BY x.ins_srtdeel_key) y,
ins_deel d,
ins_srtdeel sd,
ins_srtgroep sg,
ins_tab_discipline td,
alg_v_aanweziglocatie l
WHERE y.ins_srtdeel_key NOT IN
(27846, 37101) -- . en Afvalverwerking
AND y.ins_srtdeel_key =
d.ins_srtdeel_key
AND 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(+)
UNION ALL
SELECT td.ins_discipline_omschrijving
discipline,
td.ins_discipline_key discipline_key,
sg.ins_srtgroep_omschrijving groep,
sg.ins_srtgroep_key groep_key,
sd.ins_srtdeel_code objectsoortcode,
sd.ins_srtdeel_omschrijving
objectsoort,
sd.ins_srtdeel_key objectsoort_key,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL
FROM ins_srtdeel sd,
ins_srtgroep sg,
ins_tab_discipline td
WHERE sd.ins_srtdeel_key IN
(27829, 27841, 37082)
AND sd.ins_srtgroep_key =
sg.ins_srtgroep_key
AND sg.ins_discipline_key =
td.ins_discipline_key) z1
LEFT JOIN
(SELECT ok.alg_onrgoed_key,
fac.safe_to_date (
ok.alg_onrgoedkenmerk_waarde,
'dd-mm-yyyy'
)
datum
FROM alg_v_aanwezigonrgoedkenmerk ok
WHERE ok.alg_kenmerk_key = 22 -- Uit beheer
AND ok.alg_onrgoed_niveau = 'L')
uitbeheer
ON z1.alg_locatie_key = uitbeheer.alg_onrgoed_key
LEFT JOIN
(SELECT kd.ins_deel_key,
kd.ins_kenmerk_key,
kd.ins_kenmerkdeel_waarde waarde
FROM ins_v_aanwezigkenmerkdeel kd) z2
ON z1.ins_deel_key = z2.ins_deel_key
AND z1.keur_datum = z2.ins_kenmerk_key
LEFT JOIN
(SELECT kd.ins_deel_key,
kd.ins_kenmerk_key,
kd.ins_kenmerkdeel_waarde waarde
FROM ins_v_aanwezigkenmerkdeel kd) z3
ON z1.ins_deel_key = z3.ins_deel_key
AND z1.next_keur = z3.ins_kenmerk_key
LEFT JOIN
(SELECT kd.ins_deel_key,
kd.ins_kenmerk_key,
kd.ins_kenmerkdeel_waarde waarde
FROM ins_v_aanwezigkenmerkdeel kd) z6
ON z1.ins_deel_key = z6.ins_deel_key
AND z1.keuringsinstantie = z6.ins_kenmerk_key
LEFT JOIN
(SELECT kd.ins_deel_key,
kd.ins_kenmerk_key,
kd.ins_kenmerkdeel_waarde waarde
FROM ins_v_aanwezigkenmerkdeel kd) z7
ON z1.ins_deel_key = z7.ins_deel_key
AND z1.bouwjaar = z7.ins_kenmerk_key
WHERE z1.ins_deel_verwijder IS NULL AND uitbeheer.datum IS NULL
ORDER BY 1,
2,
3,
7)
LOOP
BEGIN
v_count_tot := v_count_tot + 1;
v_aanduiding :=
'['
|| rc.objectsoort_key
|| '|'
|| rc.objectsoortcode
|| '|'
|| rc.ins_deel_key
|| '|'
|| rc.ins_deel_omschrijving
|| '] ';
-- Toevoegen controle; gebruik [a] de meest specifieke soort en
-- [b] de minst recente mode!
v_errormsg := 'Fout bij bepalen soort controle';
SELECT COUNT ( * )
INTO ccount
FROM ins_srtcontrole sc
WHERE UPPER (TRIM (sc.ins_srtcontrole_omschrijving)) =
SUBSTR (
UPPER (rc.objectsoortcode) || '-' || c_controle_soort,
1,
60
)
AND ( (sc.ins_srtinstallatie_key = rc.objectsoort_key
AND sc.ins_srtcontrole_niveau = 'S')
OR (sc.ins_srtinstallatie_key = rc.groep_key
AND sc.ins_srtcontrole_niveau = 'G')
OR (sc.ins_srtinstallatie_key = rc.discipline_key
AND sc.ins_srtcontrole_niveau = 'D'));
IF ccount = 0
THEN
v_errormsg := 'Fout bij toevoegen soort controle';
INSERT INTO ins_srtcontrole (
ins_srtinstallatie_key,
ins_srtcontrole_niveau,
ins_srtcontrole_omschrijving,
ins_srtcontrole_periode
)
VALUES (
rc.objectsoort_key,
'S',
SUBSTR (
UPPER (rc.objectsoortcode)
|| '-'
|| c_controle_soort,
1,
60
),
DECODE (rc.objectsoort_key,
27844, -- Objectsoort 'Slipvangers en OBAS'
c_controle_periode_15, -- 15 jaar!
--XX97781, -- Objectsoort 'Tank'
--XX c_controle_periode_5, -- 5 jaar!
c_controle_periode_1) -- Default 1 jaar
)
RETURNING ins_srtcontrole_key INTO v_srtcontrole_id;
v_srtcontrole_id := 'S' || v_srtcontrole_id;
fac.imp_writelog (
'CONN44',
44,
'I',
'INS-Objecten/soort controle toegevoegd: '
|| SUBSTR (
UPPER (rc.objectsoortcode) || '-' || c_controle_soort,
1,
60
)
|| ' voor '
|| rc.objectsoort,
''
);
COMMIT;
v_count_1 := v_count_1 + 1;
ELSE
SELECT MAX(sc.ins_srtcontrole_niveau
|| TO_CHAR (sc.ins_srtcontrole_key))
INTO v_srtcontrole_id
FROM ins_srtcontrole sc
WHERE UPPER (TRIM (sc.ins_srtcontrole_omschrijving)) =
SUBSTR (
UPPER (rc.objectsoortcode)
|| '-'
|| c_controle_soort,
1,
60
)
AND ( (sc.ins_srtinstallatie_key = rc.objectsoort_key
AND sc.ins_srtcontrole_niveau = 'S')
OR (sc.ins_srtinstallatie_key = rc.groep_key
AND sc.ins_srtcontrole_niveau = 'G')
OR (sc.ins_srtinstallatie_key = rc.discipline_key
AND sc.ins_srtcontrole_niveau = 'D'));
END IF;
--XX Als volgende in toekomst, dan laatste=volgende - 1 jaar (behalve voor
--XX objectsoort 'Tank', waarvoor geldt laatste=volgende - 5 jaar); anders
--XX is laatste=laatste (behalve voor objectsoort 'Slipvangers en OBAS' met
--XX een bouwjaar >15 jaar oud, waarvoor geldt laatste=bouwjaar + 15 jaar)!
-- Als volgende in toekomst, dan laatste=volgende - 1 jaar; anders is
-- laatste=laatste (behalve voor objectsoort 'Slipvangers en OBAS' met
-- een bouwjaar >15 jaar oud, waarvoor geldt laatste=bouwjaar + 15)!
IF rc.b > SYSDATE
THEN
laatste :=
TO_DATE (TO_CHAR (rc.b, 'dd-mm') || '-2010', 'dd-mm-yyyy');
--XXIF rc.objectsoort_key = 97781 -- Objectsoort 'Tank'
--XXTHEN
--XX laatste :=
--XX TO_DATE (TO_CHAR (rc.b, 'dd-mm') || '-2010', 'dd-mm-yyyy');
--XXELSE
--XX laatste :=
--XX TO_DATE (TO_CHAR (rc.b, 'dd-mm') || '-2010', 'dd-mm-yyyy');
--XXEND IF;
ELSE -- b <= SYSDATE
IF rc.f + 15 < 2011 -- Alleen objectsoort 27844='Slipvangers en OBAS'
THEN
laatste :=
TO_DATE ('01-01-' || TO_CHAR (rc.f + 15), 'dd-mm-yyyy');
ELSE
laatste := rc.a;
END IF;
END IF;
IF (laatste IS NOT NULL)
THEN
v_errormsg := 'Fout bij bepalen controle mode';
SELECT MIN (ins_controlemode_key)
INTO v_controlemode_key
FROM ins_controlemode;
v_errormsg := 'Fout bij toevoegen controle';
INSERT INTO ins_deelsrtcontrole (ins_deel_key,
ins_srtcontrole_key,
ins_deelsrtcontrole_datum,
ins_controlemode_key,
ins_deelsrtcontrole_opmerking)
VALUES (rc.ins_deel_key,
fac.safe_to_number (SUBSTR (v_srtcontrole_id, 2)),
laatste,
v_controlemode_key,
'');
COMMIT;
v_count_2 := v_count_2 + 1;
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 ('CONN44',
44,
'W',
v_aanduiding || v_errormsg,
'');
COMMIT;
END;
END LOOP;
fac.imp_writelog (
'CONN44',
44,
'S',
'INS-Objecten/aantal beschouwd: ' || TO_CHAR (v_count_tot),
''
);
fac.imp_writelog (
'CONN44',
44,
'S',
'INS-Controlesoorten/aantal toegevoegd: ' || TO_CHAR (v_count_1),
''
);
fac.imp_writelog (
'CONN44',
44,
'S',
'INS-Controles/aantal toegevoegd: ' || TO_CHAR (v_count_2),
''
);
COMMIT;
END;
/
BEGIN adm.systrackscript('$Workfile: CONN44.sql $', '$Revision: 2 $', 1); END;
/
SPOOL OFF
@conn.sql